Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/identifier / dist / decorateWithIdentity.js
Size: Mime:
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
/**
 * @fileoverview @note unused
 */
/* eslint-disable max-statements */
/* eslint-disable brace-style */
/* @lint ^ 1 is for tests, 1 is for readable long conditionals */
const chain_able_boost_1 = require("chain-able-boost");
const exotic_1 = require("exotic");
// import decorateComponentStatics from './decorateComponentStatics'
// @todo remove
// // import decorateComponentStatics from '@skava/modules/___dist/observable-utils/deps/decorateComponentStatics'
// local
const toIdentifier_1 = __importDefault(require("./toIdentifier"));
// @alias stamp
const CLASS_IDENTIFIER = Symbol.for('@@classidentifier');
const INSTANCE_IDENTIFIER = Symbol.for('@@instanceidentifier');
/**
 * @description defines 2 symbols on a class for unique identifiers
 *              based on class & instance
 *              allowing id gen & weakmap scope for multi-instance context
 * @param {ComponentType} Target
 */
function decorateWithIdentifier(Target) {
    const classIdentifier = toIdentifier_1.default(Target);
    class Identity extends Target {
        constructor(...args) {
            super(...args);
            const instanceIdentifier = toIdentifier_1.default(Target);
            if (exotic_1.hasOwnProp(this, Symbol.toPrimitive) === false) {
                chain_able_boost_1.defineFinal(Identity, Symbol.toPrimitive, chain_able_boost_1.always(instanceIdentifier));
            }
            chain_able_boost_1.defineFinal(Identity, INSTANCE_IDENTIFIER, instanceIdentifier);
            return this;
        }
    }
    // decorateComponentStatics(Identity, Target)
    chain_able_boost_1.defineFinal(Identity, CLASS_IDENTIFIER, classIdentifier);
    return Identity;
}
exports.decorateWithIdentifier = decorateWithIdentifier;
//# sourceMappingURL=decorateWithIdentity.js.map