Repository URL to install this package:
|
Version:
3.0.0 ▾
|
"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