mnemonica 1.0.1 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/AGENTS.md +1 -1
- package/.ai/ONBOARDING.md +3 -2
- package/.ai/PROTOTYPE-CHAIN.md +122 -0
- package/.ai/TACTICA-DEEP-DIVE.md +52 -49
- package/.ai/TACTICA-RULES.md +8 -8
- package/.ai/ask/AGENTS.md +15 -9
- package/.ai/rules-skill/contributing.md +1 -1
- package/.ai/rules-skill/define-patterns.md +8 -2
- package/.ai/rules-skill/ecosystem.md +4 -4
- package/.ai/rules-skill/instance-methods.md +48 -15
- package/.ai/rules-skill/lookup-typed.md +17 -19
- package/.ai/rules-skill/type-system.md +12 -2
- package/AGENTS.md +25 -15
- package/CONTRIBUTING.md +8 -2
- package/FOR_HUMANS.md +193 -218
- package/README.md +84 -47
- package/SKILL.md +4 -4
- package/build/api/errors/exceptionConstructor.js +20 -12
- package/build/api/errors/index.js +9 -5
- package/build/api/errors/throwModificationError.js +15 -9
- package/build/api/index.js +35 -2
- package/build/api/types/InstanceCreator.js +5 -2
- package/build/api/types/Mnemosyne.d.ts +6 -6
- package/build/api/types/Mnemosyne.js +43 -120
- package/build/api/types/Props.js +5 -3
- package/build/api/types/TypeProxy.js +13 -9
- package/build/api/types/compileNewModificatorFunctionBody.js +14 -8
- package/build/api/types/createInstanceModificator.js +1 -1
- package/build/api/types/index.js +56 -13
- package/build/api/utils/index.js +21 -12
- package/build/constants/index.js +11 -8
- package/build/descriptors/types/index.js +79 -26
- package/build/index.d.ts +9 -10
- package/build/index.js +65 -25
- package/build/types/index.d.ts +76 -32
- package/build/types/index.js +1 -1
- package/build/utils/clone.d.ts +1 -0
- package/build/utils/clone.js +11 -0
- package/build/utils/collectConstructors.js +5 -3
- package/build/utils/exception.d.ts +1 -0
- package/build/utils/exception.js +14 -0
- package/build/utils/extract.d.ts +2 -3
- package/build/utils/extract.js +3 -2
- package/build/utils/fork.d.ts +1 -0
- package/build/utils/fork.js +33 -0
- package/build/utils/index.d.ts +2 -3
- package/build/utils/index.js +21 -7
- package/build/utils/merge.d.ts +2 -1
- package/build/utils/merge.js +10 -6
- package/build/utils/parent.d.ts +4 -1
- package/build/utils/parent.js +7 -7
- package/build/utils/parse.d.ts +2 -12
- package/build/utils/parse.js +1 -1
- package/build/utils/pick.d.ts +4 -3
- package/build/utils/pick.js +4 -5
- package/build/utils/sibling.d.ts +1 -0
- package/build/utils/sibling.js +25 -0
- package/build/utils/toJSON.d.ts +1 -1
- package/build/utils/toJSON.js +3 -2
- package/docs/UTILS.md +184 -0
- package/docs/ai-learning-trajectory.md +9 -9
- package/docs/async-constructors.md +21 -1
- package/docs/empathy-in-ai.md +170 -0
- package/docs/hott-primer.md +47 -0
- package/docs/performance-vs-security.md +2 -2
- package/docs/prototype-chain.md +127 -0
- package/docs/purpose.md +42 -11
- package/docs/tactica-pattern.md +20 -20
- package/docs/theory-of-operations.md +224 -0
- package/docs/typed-lookup.md +30 -26
- package/module/index.js +0 -1
- package/package.json +13 -7
- package/src/api/errors/exceptionConstructor.ts +14 -9
- package/src/api/errors/index.ts +8 -4
- package/src/api/errors/throwModificationError.ts +10 -9
- package/src/api/types/InstanceCreator.ts +5 -8
- package/src/api/types/Mnemosyne.ts +72 -231
- package/src/api/types/Props.ts +4 -2
- package/src/api/types/TypeProxy.ts +7 -11
- package/src/api/types/compileNewModificatorFunctionBody.ts +13 -7
- package/src/api/types/createInstanceModificator.ts +13 -0
- package/src/api/types/index.ts +15 -8
- package/src/api/utils/index.ts +16 -14
- package/src/constants/index.ts +6 -9
- package/src/descriptors/types/index.ts +45 -25
- package/src/index.ts +60 -71
- package/src/types/index.ts +188 -70
- package/src/utils/clone.ts +11 -0
- package/src/utils/collectConstructors.ts +4 -2
- package/src/utils/exception.ts +16 -0
- package/src/utils/extract.ts +5 -2
- package/src/utils/fork.ts +57 -0
- package/src/utils/index.ts +32 -13
- package/src/utils/merge.ts +18 -6
- package/src/utils/parent.ts +16 -7
- package/src/utils/parse.ts +5 -4
- package/src/utils/pick.ts +10 -2
- package/src/utils/sibling.ts +33 -0
- package/src/utils/toJSON.ts +3 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.exception = void 0;
|
|
7
|
+
const exceptionConstructor_1 = __importDefault(require("../api/errors/exceptionConstructor"));
|
|
8
|
+
const exception = function (instance, error, ...args) {
|
|
9
|
+
const target = new.target;
|
|
10
|
+
const exceptionResult = exceptionConstructor_1.default.call(instance, target, error, ...args);
|
|
11
|
+
return exceptionResult;
|
|
12
|
+
};
|
|
13
|
+
exports.exception = exception;
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2V4Y2VwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7Ozs7OztBQUViLDhGQUFzRTtBQUUvRCxNQUFNLFNBQVMsR0FBRyxVQUFVLFFBQWdCLEVBQUUsS0FBWSxFQUFFLEdBQUcsSUFBZTtJQUVwRixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQzFCLE1BQU0sZUFBZSxHQUFHLDhCQUFvQixDQUFDLElBQUksQ0FDaEQsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBQ0wsR0FBRyxJQUFJLENBQ1AsQ0FBQztJQUNGLE9BQU8sZUFBZSxDQUFDO0FBRXhCLENBQUMsQ0FBQztBQVhXLFFBQUEsU0FBUyxhQVdwQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IGV4Y2VwdGlvbkNvbnN0cnVjdG9yIGZyb20gJy4uL2FwaS9lcnJvcnMvZXhjZXB0aW9uQ29uc3RydWN0b3InO1xuXG5leHBvcnQgY29uc3QgZXhjZXB0aW9uID0gZnVuY3Rpb24gKGluc3RhbmNlOiBvYmplY3QsIGVycm9yOiBFcnJvciwgLi4uYXJnczogdW5rbm93bltdKSB7XG5cblx0Y29uc3QgdGFyZ2V0ID0gbmV3LnRhcmdldDtcblx0Y29uc3QgZXhjZXB0aW9uUmVzdWx0ID0gZXhjZXB0aW9uQ29uc3RydWN0b3IuY2FsbChcblx0XHRpbnN0YW5jZSxcblx0XHR0YXJnZXQsXG5cdFx0ZXJyb3IsXG5cdFx0Li4uYXJnc1xuXHQpO1xuXHRyZXR1cm4gZXhjZXB0aW9uUmVzdWx0O1xuXG59O1xuIl19
|
package/build/utils/extract.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
};
|
|
1
|
+
import type { Extracted } from '../types';
|
|
2
|
+
export declare const extract: <T extends object>(instance: T) => Extracted<T>;
|
package/build/utils/extract.js
CHANGED
|
@@ -11,7 +11,8 @@ const extract = (instance) => {
|
|
|
11
11
|
for (const name in instance) {
|
|
12
12
|
extracted[name] = instance[name];
|
|
13
13
|
}
|
|
14
|
-
|
|
14
|
+
const result = extracted;
|
|
15
|
+
return result;
|
|
15
16
|
};
|
|
16
17
|
exports.extract = extract;
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsa0RBQW9EO0FBQ3BELE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxHQUFHLG9CQUFXLENBQUM7QUFNM0MsTUFBTSxPQUFPLEdBQUcsQ0FBb0IsUUFBVyxFQUFpQixFQUFFO0lBR3hFLElBQUssUUFBUSxLQUFLLE1BQU0sQ0FBRSxRQUFRLENBQUUsRUFBRyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQW1DLEVBQUUsQ0FBQztJQUVyRCxLQUFNLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRyxDQUFDO1FBUS9CLFNBQVMsQ0FBRSxJQUFJLENBQUUsR0FBSyxRQUFxQyxDQUFFLElBQUksQ0FBRSxDQUFDO0lBQ3JFLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxTQUF5QixDQUFDO0lBQ3pDLE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyxDQUFDO0FBdkJXLFFBQUEsT0FBTyxXQXVCbEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTiB9ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCB0eXBlIHsgRXh0cmFjdGVkIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBpbXBvcnQgeyBob3AgfSBmcm9tICcuL2hvcCc7XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0ID0gPFQgZXh0ZW5kcyBvYmplY3Q+KCBpbnN0YW5jZTogVCApOiBFeHRyYWN0ZWQ8VD4gPT4ge1xuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggaW5zdGFuY2UgIT09IE9iamVjdCggaW5zdGFuY2UgKSApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTjtcblx0fVxuXG5cdGNvbnN0IGV4dHJhY3RlZDogeyBbIGluZGV4OiBzdHJpbmcgXTogdW5rbm93biB9ID0ge307XG5cblx0Zm9yICggY29uc3QgbmFtZSBpbiBpbnN0YW5jZSApIHtcblx0XHQvLyBpZiAoIG5hbWUgPT09ICdjb25zdHJ1Y3RvcicgJiYgIWhvcCggaW5zdGFuY2UsIG5hbWUgKSApIHtcblx0XHQvLyBcdGNvbnRpbnVlO1xuXHRcdC8vIH1cblx0XHQvLyBpZiAobmFtZSA9PT0gJ3RpbWVzdGFtcCcpIHtcblx0XHQvLyBcdGNvbnRpbnVlO1xuXHRcdC8vIH1cblxuXHRcdGV4dHJhY3RlZFsgbmFtZSBdID0gKCBpbnN0YW5jZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiApWyBuYW1lIF07XG5cdH1cblxuXHRjb25zdCByZXN1bHQgPSBleHRyYWN0ZWQgYXMgRXh0cmFjdGVkPFQ+O1xuXHRyZXR1cm4gcmVzdWx0O1xuXG59O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fork: <T extends object>(instance: T) => (this: object, ...forkArgs: unknown[]) => T;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.fork = void 0;
|
|
7
|
+
const Props_1 = require("../api/types/Props");
|
|
8
|
+
const InstanceCreator_1 = require("../api/types/InstanceCreator");
|
|
9
|
+
const index_1 = __importDefault(require("../api/utils/index"));
|
|
10
|
+
const { reflectPrimitiveWrappers } = index_1.default;
|
|
11
|
+
const fork = (instance) => {
|
|
12
|
+
const props = (0, Props_1.getProps)(instance);
|
|
13
|
+
const { __type__: type, __collection__: collection, __parent__: existentInstance, __args__, __self__, } = props;
|
|
14
|
+
const { isSubType, TypeName } = type;
|
|
15
|
+
const result = function (...forkArgs) {
|
|
16
|
+
let forked;
|
|
17
|
+
const Constructor = isSubType ?
|
|
18
|
+
existentInstance :
|
|
19
|
+
collection;
|
|
20
|
+
const args = forkArgs.length ? forkArgs : __args__;
|
|
21
|
+
if (this === __self__) {
|
|
22
|
+
forked = new (Constructor[TypeName])(...args);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
forked = new InstanceCreator_1.InstanceCreator(type, reflectPrimitiveWrappers(this), args);
|
|
26
|
+
}
|
|
27
|
+
const forkResult = forked;
|
|
28
|
+
return forkResult;
|
|
29
|
+
};
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
exports.fork = fork;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9mb3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7Ozs7O0FBRWIsOENBRTRCO0FBQzVCLGtFQUErRDtBQUMvRCwrREFBNEM7QUFFNUMsTUFBTSxFQUFFLHdCQUF3QixFQUFFLEdBQUcsZUFBVSxDQUFDO0FBRXpDLE1BQU0sSUFBSSxHQUFHLENBQW1CLFFBQVcsRUFBK0MsRUFBRTtJQUVsRyxNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFRLEVBQUMsUUFBUSxDQUFVLENBQUM7SUFFMUMsTUFBTSxFQUNMLFFBQVEsRUFBRSxJQUFJLEVBQ2QsY0FBYyxFQUFFLFVBQVUsRUFDMUIsVUFBVSxFQUFFLGdCQUFnQixFQUM1QixRQUFRLEVBQ1IsUUFBUSxHQUNSLEdBQUcsS0FBSyxDQUFDO0lBRVYsTUFBTSxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLE1BQU0sR0FBRyxVQUF3QixHQUFHLFFBQW1CO1FBRTVELElBQUksTUFBTSxDQUFDO1FBQ1gsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLENBQUM7WUFDOUIsZ0JBQWdCLENBQUMsQ0FBQztZQUNsQixVQUFVLENBQUM7UUFFWixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUduRCxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUd2QixNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBRSxRQUFRLENBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDakQsQ0FBQzthQUFNLENBQUM7WUFFUCxNQUFNLEdBQUcsSUFBSSxpQ0FBZSxDQUMzQixJQUFJLEVBQ0osd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQzlCLElBQUksQ0FDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQVcsQ0FBQztRQUMvQixPQUFPLFVBQVUsQ0FBQztJQUVuQixDQUFDLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUVmLENBQUMsQ0FBQztBQTlDVyxRQUFBLElBQUksUUE4Q2YiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7XG5cdGdldFByb3BzLCBQcm9wcyBcbn0gZnJvbSAnLi4vYXBpL3R5cGVzL1Byb3BzJztcbmltcG9ydCB7IEluc3RhbmNlQ3JlYXRvciB9IGZyb20gJy4uL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3InO1xuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi4vYXBpL3V0aWxzL2luZGV4JztcblxuY29uc3QgeyByZWZsZWN0UHJpbWl0aXZlV3JhcHBlcnMgfSA9IFR5cGVzVXRpbHM7XG5cbmV4cG9ydCBjb25zdCBmb3JrID0gPFQgZXh0ZW5kcyBvYmplY3Q+KGluc3RhbmNlOiBUKTogKHRoaXM6IG9iamVjdCwgLi4uZm9ya0FyZ3M6IHVua25vd25bXSkgPT4gVCA9PiB7XG5cblx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyhpbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0Y29uc3Qge1xuXHRcdF9fdHlwZV9fOiB0eXBlLFxuXHRcdF9fY29sbGVjdGlvbl9fOiBjb2xsZWN0aW9uLFxuXHRcdF9fcGFyZW50X186IGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0X19hcmdzX18sXG5cdFx0X19zZWxmX18sXG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCB7XG5cdFx0aXNTdWJUeXBlLFxuXHRcdFR5cGVOYW1lXG5cdH0gPSB0eXBlO1xuXG5cdGNvbnN0IHJlc3VsdCA9IGZ1bmN0aW9uICh0aGlzOiBvYmplY3QsIC4uLmZvcmtBcmdzOiB1bmtub3duW10pIHtcblxuXHRcdGxldCBmb3JrZWQ7XG5cdFx0Y29uc3QgQ29uc3RydWN0b3IgPSBpc1N1YlR5cGUgP1xuXHRcdFx0ZXhpc3RlbnRJbnN0YW5jZSA6XG5cdFx0XHRjb2xsZWN0aW9uO1xuXG5cdFx0Y29uc3QgYXJncyA9IGZvcmtBcmdzLmxlbmd0aCA/IGZvcmtBcmdzIDogX19hcmdzX187XG5cblxuXHRcdGlmICh0aGlzID09PSBfX3NlbGZfXykge1xuXG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yICB0aGlzIGlzIGRlZmluaXRlbHkgYSBjb25zdHJ1Y3RvclxuXHRcdFx0Zm9ya2VkID0gbmV3IChDb25zdHJ1Y3RvclsgVHlwZU5hbWUgXSkoLi4uYXJncyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGZvcmsuY2FsbCA/IGxldCdzIGRvIGl0ICFcblx0XHRcdGZvcmtlZCA9IG5ldyBJbnN0YW5jZUNyZWF0b3IoXG5cdFx0XHRcdHR5cGUsXG5cdFx0XHRcdHJlZmxlY3RQcmltaXRpdmVXcmFwcGVycyh0aGlzKSxcblx0XHRcdFx0YXJnc1xuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBmb3JrUmVzdWx0ID0gZm9ya2VkIGFzIFQ7XG5cdFx0cmV0dXJuIGZvcmtSZXN1bHQ7XG5cblx0fTtcblx0cmV0dXJuIHJlc3VsdDtcblxufTtcbiJdfQ==
|
package/build/utils/index.d.ts
CHANGED
package/build/utils/index.js
CHANGED
|
@@ -5,6 +5,10 @@ const collectConstructors_1 = require("./collectConstructors");
|
|
|
5
5
|
const extract_1 = require("./extract");
|
|
6
6
|
const parent_1 = require("./parent");
|
|
7
7
|
const pick_1 = require("./pick");
|
|
8
|
+
const sibling_1 = require("./sibling");
|
|
9
|
+
const exception_1 = require("./exception");
|
|
10
|
+
const fork_1 = require("./fork");
|
|
11
|
+
const clone_1 = require("./clone");
|
|
8
12
|
const toJSON_1 = require("./toJSON");
|
|
9
13
|
const parse_1 = require("./parse");
|
|
10
14
|
const merge_1 = require("./merge");
|
|
@@ -12,18 +16,28 @@ const utilsUnWrapped = {
|
|
|
12
16
|
extract: extract_1.extract,
|
|
13
17
|
pick: pick_1.pick,
|
|
14
18
|
parent: parent_1.parent,
|
|
19
|
+
sibling: sibling_1.sibling,
|
|
20
|
+
exception: exception_1.exception,
|
|
21
|
+
fork: fork_1.fork,
|
|
22
|
+
clone: clone_1.clone,
|
|
15
23
|
toJSON: toJSON_1.toJSON,
|
|
16
24
|
parse: parse_1.parse,
|
|
17
25
|
merge: merge_1.merge,
|
|
18
|
-
|
|
19
|
-
return collectConstructors_1.collectConstructors;
|
|
20
|
-
},
|
|
26
|
+
collectConstructors: collectConstructors_1.collectConstructors,
|
|
21
27
|
};
|
|
22
28
|
const wrapThis = (method) => {
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
29
|
+
const result = function (instance, ...args) {
|
|
30
|
+
const instanceContext = instance !== undefined ? instance : this;
|
|
31
|
+
let wrapResult;
|
|
32
|
+
if (new.target) {
|
|
33
|
+
wrapResult = new method(instanceContext, ...args);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
wrapResult = method(instanceContext, ...args);
|
|
37
|
+
}
|
|
38
|
+
return wrapResult;
|
|
26
39
|
};
|
|
40
|
+
return result;
|
|
27
41
|
};
|
|
28
42
|
exports.utils = Object.assign({}, Object.entries(utilsUnWrapped)
|
|
29
43
|
.reduce((methods, util) => {
|
|
@@ -33,4 +47,4 @@ exports.utils = Object.assign({}, Object.entries(utilsUnWrapped)
|
|
|
33
47
|
}, {}));
|
|
34
48
|
var defineStackCleaner_1 = require("./defineStackCleaner");
|
|
35
49
|
Object.defineProperty(exports, "defineStackCleaner", { enumerable: true, get: function () { return defineStackCleaner_1.defineStackCleaner; } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFPYiwrREFBNEQ7QUFDNUQsdUNBQW9DO0FBQ3BDLHFDQUFrQztBQUNsQyxpQ0FBOEI7QUFDOUIsdUNBQW9DO0FBQ3BDLDJDQUF3QztBQUN4QyxpQ0FBOEI7QUFDOUIsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUNsQyxtQ0FBZ0M7QUFDaEMsbUNBQWdDO0FBRWhDLE1BQU0sY0FBYyxHQUFHO0lBRXRCLE9BQU8sRUFBUCxpQkFBTztJQUNQLElBQUksRUFBSixXQUFJO0lBRUosTUFBTSxFQUFOLGVBQU07SUFDTixPQUFPLEVBQVAsaUJBQU87SUFDUCxTQUFTLEVBQVQscUJBQVM7SUFDVCxJQUFJLEVBQUosV0FBSTtJQUNKLEtBQUssRUFBTCxhQUFLO0lBRUwsTUFBTSxFQUFOLGVBQU07SUFFTixLQUFLLEVBQUwsYUFBSztJQUNMLEtBQUssRUFBTCxhQUFLO0lBRUwsbUJBQW1CLEVBQW5CLHlDQUFtQjtDQUVuQixDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBRSxNQUF1QixFQUFHLEVBQUU7SUFDOUMsTUFBTSxNQUFNLEdBQUcsVUFBeUIsUUFBNEIsRUFBRSxHQUFHLElBQWU7UUFDdkYsTUFBTSxlQUFlLEdBQUcsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDakUsSUFBSSxVQUFtQixDQUFDO1FBQ3hCLElBQUssR0FBRyxDQUFDLE1BQU0sRUFBRyxDQUFDO1lBQ2xCLFVBQVUsR0FBRyxJQUFLLE1BQXNELENBQ3ZFLGVBQWUsRUFDZixHQUFHLElBQUksQ0FDUCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDUCxVQUFVLEdBQUcsTUFBTSxDQUNsQixlQUFlLEVBQ2YsR0FBRyxJQUFJLENBQ1AsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHLGtCQUVqQixNQUFNLENBQUMsT0FBTyxDQUFFLGNBQWMsQ0FBRTtLQUNqQyxNQUFNLENBQ04sQ0FBRSxPQUFnRCxFQUFFLElBQUksRUFBRyxFQUFFO0lBQzVELE1BQU0sQ0FBRSxJQUFJLEVBQUUsRUFBRSxDQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzFCLE9BQU8sQ0FBRSxJQUFJLENBQUUsR0FBRyxRQUFRLENBQUUsRUFBRSxDQUFFLENBQUM7SUFDakMsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQyxFQUNELEVBQUUsQ0FDRixDQUVpQixDQUFDO0FBRXJCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRXcmFwcGFibGVNZXRob2QsXG5cdFV0aWxzQ29sbGVjdGlvblxufSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IGNvbGxlY3RDb25zdHJ1Y3RvcnMgfSBmcm9tICcuL2NvbGxlY3RDb25zdHJ1Y3RvcnMnO1xuaW1wb3J0IHsgZXh0cmFjdCB9IGZyb20gJy4vZXh0cmFjdCc7XG5pbXBvcnQgeyBwYXJlbnQgfSBmcm9tICcuL3BhcmVudCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnLi9waWNrJztcbmltcG9ydCB7IHNpYmxpbmcgfSBmcm9tICcuL3NpYmxpbmcnO1xuaW1wb3J0IHsgZXhjZXB0aW9uIH0gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHsgZm9yayB9IGZyb20gJy4vZm9yayc7XG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJy4vY2xvbmUnO1xuaW1wb3J0IHsgdG9KU09OIH0gZnJvbSAnLi90b0pTT04nO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXJnZSc7XG5cbmNvbnN0IHV0aWxzVW5XcmFwcGVkID0ge1xuXG5cdGV4dHJhY3QsXG5cdHBpY2ssXG5cblx0cGFyZW50LFxuXHRzaWJsaW5nLFxuXHRleGNlcHRpb24sXG5cdGZvcmssXG5cdGNsb25lLFxuXG5cdHRvSlNPTixcblxuXHRwYXJzZSxcblx0bWVyZ2UsXG5cblx0Y29sbGVjdENvbnN0cnVjdG9ycyxcblxufTtcblxuY29uc3Qgd3JhcFRoaXMgPSAoIG1ldGhvZDogV3JhcHBhYmxlTWV0aG9kICkgPT4ge1xuXHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoIHRoaXM6IG9iamVjdCwgaW5zdGFuY2U6IG9iamVjdCB8IHVuZGVmaW5lZCwgLi4uYXJnczogdW5rbm93bltdICkge1xuXHRcdGNvbnN0IGluc3RhbmNlQ29udGV4dCA9IGluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBpbnN0YW5jZSA6IHRoaXM7XG5cdFx0bGV0IHdyYXBSZXN1bHQ6IHVua25vd247XG5cdFx0aWYgKCBuZXcudGFyZ2V0ICkge1xuXHRcdFx0d3JhcFJlc3VsdCA9IG5ldyAobWV0aG9kIGFzIHVua25vd24gYXMgbmV3ICguLi5hOiB1bmtub3duW10pID0+IHVua25vd24pKFxuXHRcdFx0XHRpbnN0YW5jZUNvbnRleHQsXG5cdFx0XHRcdC4uLmFyZ3Ncblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXBSZXN1bHQgPSBtZXRob2QoXG5cdFx0XHRcdGluc3RhbmNlQ29udGV4dCxcblx0XHRcdFx0Li4uYXJncyBcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB3cmFwUmVzdWx0O1xuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHV0aWxzID0ge1xuXG5cdC4uLk9iamVjdC5lbnRyaWVzKCB1dGlsc1VuV3JhcHBlZCApXG5cdFx0LnJlZHVjZShcblx0XHRcdCggbWV0aG9kczogeyBbIGluZGV4OiBzdHJpbmcgXTogQ2FsbGFibGVGdW5jdGlvbiB9LCB1dGlsICkgPT4ge1xuXHRcdFx0XHRjb25zdCBbIG5hbWUsIGZuIF0gPSB1dGlsO1xuXHRcdFx0XHRtZXRob2RzWyBuYW1lIF0gPSB3cmFwVGhpcyggZm4gKTtcblx0XHRcdFx0cmV0dXJuIG1ldGhvZHM7XG5cdFx0XHR9LFxuXHRcdFx0e31cblx0XHQpLFxuXG59IGFzIFV0aWxzQ29sbGVjdGlvbjtcblxuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi9kZWZpbmVTdGFja0NsZWFuZXInO1xuIl19
|
package/build/utils/merge.d.ts
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Merge, InstanceResult } from '../types';
|
|
2
|
+
export declare const merge: <A extends object, B extends object>(a: A, b: B, ...args: unknown[]) => InstanceResult<Merge<B, A>>;
|
package/build/utils/merge.js
CHANGED
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.merge = void 0;
|
|
4
4
|
const errors_1 = require("../descriptors/errors");
|
|
5
5
|
const { WRONG_ARGUMENTS_USED } = errors_1.ErrorsTypes;
|
|
6
|
+
const fork_1 = require("./fork");
|
|
7
|
+
const Props_1 = require("../api/types/Props");
|
|
6
8
|
const merge = (a, b, ...args) => {
|
|
7
9
|
if (a !== Object(a)) {
|
|
8
10
|
throw new WRONG_ARGUMENTS_USED('A should be an object');
|
|
@@ -10,12 +12,14 @@ const merge = (a, b, ...args) => {
|
|
|
10
12
|
if (b !== Object(b)) {
|
|
11
13
|
throw new WRONG_ARGUMENTS_USED('B should be an object');
|
|
12
14
|
}
|
|
13
|
-
const
|
|
14
|
-
if (
|
|
15
|
-
throw new WRONG_ARGUMENTS_USED('A should
|
|
15
|
+
const props = (0, Props_1.getProps)(a);
|
|
16
|
+
if (props === undefined) {
|
|
17
|
+
throw new WRONG_ARGUMENTS_USED('A should be a mnemonica instance');
|
|
16
18
|
}
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
+
const forked = (0, fork_1.fork)(a);
|
|
20
|
+
const aa = forked.call(b, ...args);
|
|
21
|
+
const result = aa;
|
|
22
|
+
return result;
|
|
19
23
|
};
|
|
20
24
|
exports.merge = merge;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixrREFBb0Q7QUFDcEQsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsb0JBQVcsQ0FBQztBQUM3QyxpQ0FBOEI7QUFDOUIsOENBQThDO0FBTXZDLE1BQU0sS0FBSyxHQUFHLENBQ3BCLENBQUksRUFDSixDQUFJLEVBQ0osR0FBRyxJQUFlLEVBQ1ksRUFBRTtJQUdoQyxJQUFLLENBQUMsS0FBSyxNQUFNLENBQUUsQ0FBQyxDQUFFLEVBQUcsQ0FBQztRQUN6QixNQUFNLElBQUksb0JBQW9CLENBQUUsdUJBQXVCLENBQUUsQ0FBQztJQUMzRCxDQUFDO0lBR0QsSUFBSyxDQUFDLEtBQUssTUFBTSxDQUFFLENBQUMsQ0FBRSxFQUFHLENBQUM7UUFDekIsTUFBTSxJQUFJLG9CQUFvQixDQUFFLHVCQUF1QixDQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksb0JBQW9CLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBQSxXQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDckIsQ0FBQyxFQUNELEdBQUcsSUFBSSxDQUNQLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxFQUFpQyxDQUFDO0lBQ2pELE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyxDQUFDO0FBN0JXLFFBQUEsS0FBSyxTQTZCaEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfQVJHVU1FTlRTX1VTRUQgfSA9IEVycm9yc1R5cGVzO1xuaW1wb3J0IHsgZm9yayB9IGZyb20gJy4vZm9yayc7XG5pbXBvcnQgeyBnZXRQcm9wcyB9IGZyb20gJy4uL2FwaS90eXBlcy9Qcm9wcyc7XG5pbXBvcnQgdHlwZSB7XG5cdE1lcmdlLFxuXHRJbnN0YW5jZVJlc3VsdCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgbWVyZ2UgPSA8QSBleHRlbmRzIG9iamVjdCwgQiBleHRlbmRzIG9iamVjdD4oXG5cdGE6IEEsXG5cdGI6IEIsXG5cdC4uLmFyZ3M6IHVua25vd25bXVxuKTogSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8QiwgQT4+ID0+IHtcblxuXHQvLyBhdCB0aGlzIHNpdHVhdGlvbiB0aGlzIGNoZWNrIGlzIGVub3VnaFxuXHRpZiAoIGEgIT09IE9iamVjdCggYSApICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19BUkdVTUVOVFNfVVNFRCggJ0Egc2hvdWxkIGJlIGFuIG9iamVjdCcgKTtcblx0fVxuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggYiAhPT0gT2JqZWN0KCBiICkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCAnQiBzaG91bGQgYmUgYW4gb2JqZWN0JyApO1xuXHR9XG5cblx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyhhKTtcblx0aWYgKHByb3BzID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoJ0Egc2hvdWxkIGJlIGEgbW5lbW9uaWNhIGluc3RhbmNlJyk7XG5cdH1cblxuXHRjb25zdCBmb3JrZWQgPSBmb3JrKGEpO1xuXHRjb25zdCBhYSA9IGZvcmtlZC5jYWxsKFxuXHRcdGIsXG5cdFx0Li4uYXJncyBcblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gYWEgYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8QiwgQT4+O1xuXHRyZXR1cm4gcmVzdWx0O1xuXG59O1xuIl19
|
package/build/utils/parent.d.ts
CHANGED
|
@@ -1 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
import type { InstanceOfTypeRegistry, ParentPathOfInstance } from '../types';
|
|
2
|
+
export declare function parent<T extends object>(instance: T): object | undefined;
|
|
3
|
+
export declare function parent<T extends object, K extends ParentPathOfInstance<T> & string>(instance: T, path: K): InstanceOfTypeRegistry<K> | undefined;
|
|
4
|
+
export declare function parent(instance: object, path: string): object | undefined;
|
package/build/utils/parent.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parent =
|
|
3
|
+
exports.parent = parent;
|
|
4
4
|
const errors_1 = require("../descriptors/errors");
|
|
5
5
|
const { WRONG_INSTANCE_INVOCATION } = errors_1.ErrorsTypes;
|
|
6
6
|
const Props_1 = require("../api/types/Props");
|
|
7
|
-
|
|
7
|
+
function parent(instance, path) {
|
|
8
8
|
if (instance !== Object(instance)) {
|
|
9
9
|
throw new WRONG_INSTANCE_INVOCATION;
|
|
10
10
|
}
|
|
@@ -17,8 +17,8 @@ const parent = (instance, path) => {
|
|
|
17
17
|
return p;
|
|
18
18
|
}
|
|
19
19
|
const { constructor: { name } } = p;
|
|
20
|
-
|
|
21
|
-
p :
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
const result = name === path ?
|
|
21
|
+
p : parent(p, path);
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBdUJiLHdCQTJCQztBQTNDRCxrREFBb0Q7QUFDcEQsTUFBTSxFQUFFLHlCQUF5QixFQUFFLEdBQUcsb0JBQVcsQ0FBQztBQUVsRCw4Q0FFNEI7QUFXNUIsU0FBZ0IsTUFBTSxDQUFxQixRQUFXLEVBQUUsSUFBYTtJQUdwRSxJQUFLLFFBQVEsS0FBSyxNQUFNLENBQUUsUUFBUSxDQUFFLEVBQUcsQ0FBQztRQUN2QyxNQUFNLElBQUkseUJBQXlCLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQVMsRUFBQyxRQUFRLENBQVUsQ0FBQztJQUUzQyxJQUFLLENBQUMsS0FBSyxFQUFHLENBQUM7UUFDZCxPQUFPO0lBQ1IsQ0FBQztJQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWhDLElBQUssQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUlwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUUsQ0FBVyxFQUFFLElBQUksQ0FBRSxDQUFDO0lBQ2pDLE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRJbnN0YW5jZU9mVHlwZVJlZ2lzdHJ5LFxuXHRQYXJlbnRQYXRoT2ZJbnN0YW5jZVxufSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTiB9ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCB7XG5cdF9nZXRQcm9wcywgUHJvcHMgXG59IGZyb20gJy4uL2FwaS90eXBlcy9Qcm9wcyc7XG5cbi8vIHNlZWsgZm9yIGZpcnRzIHBhcmVudCBpbnN0YW5jZVxuLy8gb2YgaW5zdGFuY2UgcHJvdG90eXBlIGNoYWluXG4vLyB3aXRoIGNvbnN0cnVjdG9ycyBvZiBwYXRoXG5leHBvcnQgZnVuY3Rpb24gcGFyZW50IDxUIGV4dGVuZHMgb2JqZWN0PiAoaW5zdGFuY2U6IFQpOiBvYmplY3QgfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcGFyZW50IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMgUGFyZW50UGF0aE9mSW5zdGFuY2U8VD4gJiBzdHJpbmc+IChcblx0aW5zdGFuY2U6IFQsXG5cdHBhdGg6IEtcbik6IEluc3RhbmNlT2ZUeXBlUmVnaXN0cnk8Sz4gfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcGFyZW50IChpbnN0YW5jZTogb2JqZWN0LCBwYXRoOiBzdHJpbmcpOiBvYmplY3QgfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcGFyZW50IDxUIGV4dGVuZHMgb2JqZWN0PiAoaW5zdGFuY2U6IFQsIHBhdGg/OiBzdHJpbmcpOiBvYmplY3QgfCB1bmRlZmluZWQge1xuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggaW5zdGFuY2UgIT09IE9iamVjdCggaW5zdGFuY2UgKSApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTjtcblx0fVxuXG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRpZiAoICFwcm9wcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB7IF9fcGFyZW50X186IHAgfSA9IHByb3BzO1xuXG5cdGlmICggIXBhdGggKSB7XG5cdFx0cmV0dXJuIHA7XG5cdH1cblxuXHRjb25zdCB7IGNvbnN0cnVjdG9yOiB7IG5hbWUgfSB9ID0gcDtcblxuXHQvLyBzZWVrIHRocm91aCBwYXJlbnQgaW5zdGFuY2VzXG5cdC8vIGFib3V0IHRoZSBmaXN0IGNvbnN0cnVjdG9yIHdpdGggdGhpcyBuYW1lXG5cdGNvbnN0IHJlc3VsdCA9IG5hbWUgPT09IHBhdGggP1xuXHRcdHAgOiBwYXJlbnQoIHAgYXMgb2JqZWN0LCBwYXRoICk7XG5cdHJldHVybiByZXN1bHQ7XG5cbn1cbiJdfQ==
|
package/build/utils/parse.d.ts
CHANGED
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
props: {
|
|
4
|
-
[index: string]: unknown;
|
|
5
|
-
};
|
|
6
|
-
self: object;
|
|
7
|
-
proto: object;
|
|
8
|
-
joint: {
|
|
9
|
-
[index: string]: unknown;
|
|
10
|
-
};
|
|
11
|
-
parent: unknown;
|
|
12
|
-
};
|
|
1
|
+
import type { Parsed } from '../types';
|
|
2
|
+
export declare const parse: <T extends object>(self: T) => Parsed<T>;
|
package/build/utils/parse.js
CHANGED
|
@@ -42,4 +42,4 @@ const parse = (self) => {
|
|
|
42
42
|
return result;
|
|
43
43
|
};
|
|
44
44
|
exports.parse = parse;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFHYixrREFBb0Q7QUFDcEQsTUFBTSxFQUNMLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBUWhCLHVDQUFvQztBQUc3QixNQUFNLEtBQUssR0FBRyxDQUFvQixJQUFPLEVBQWMsRUFBRTtJQUUvRCxJQUFLLENBQUMsSUFBSSxJQUFJLENBQUcsSUFBNEMsQ0FBQyxXQUFXLEVBQUcsQ0FBQztRQUM1RSxNQUFNLElBQUksMEJBQTBCLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUUsSUFBSSxDQUFZLENBQUM7SUFFdkQsTUFBTSxlQUFlLEdBQUssSUFBMkMsQ0FBQyxXQUFXLENBQUM7SUFDbEYsTUFBTSxnQkFBZ0IsR0FBSyxLQUE0QyxDQUFDLFdBQVcsQ0FBQztJQUVwRixJQUFLLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFHLENBQUM7UUFDNUUsTUFBTSxHQUFHLEdBQUcsaUNBQWlDO1lBQzVDLElBQUksZUFBZSxDQUFDLElBQUksU0FBUyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUMzRCxNQUFNLElBQUksb0JBQW9CLENBQUUsR0FBRyxDQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFZLE9BQU8sQ0FBQyxjQUFjLENBQUUsS0FBSyxDQUFFLENBQUM7SUFDNUQsSUFBSyxVQUFVLEVBQUcsQ0FBQztRQUNsQixNQUFNLHFCQUFxQixHQUFLLFVBQWtELENBQUMsV0FBVyxDQUFDO1FBQy9GLElBQUsscUJBQXFCLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRyxDQUFDO1lBQzNHLE1BQU0sSUFBSSxHQUFHLGlDQUFpQztnQkFDN0MsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLFNBQVMscUJBQXFCLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDakUsTUFBTSxJQUFJLG9CQUFvQixDQUFFLElBQUksQ0FBRSxDQUFDO1FBQ3hDLENBQUM7SUFDRixDQUFDO0lBS0QsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLGdCQUFnQixDQUFDO0lBRWxDLE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQU8sRUFBRSxrQkFBSyxJQUFJLENBQU8sQ0FBRSxDQUFDO0lBRTFDLE9BQVMsS0FBb0MsQ0FBQyxXQUFXLENBQUM7SUFFMUQsTUFBTSxLQUFLLEdBQUcsSUFBQSxpQkFBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQ25DLEVBQUUsRUFDRixLQUFLLENBQ3NCLENBQUUsQ0FBQztJQUMvQixPQUFTLEtBQW9DLENBQUMsV0FBVyxDQUFDO0lBRTFELE1BQU0sTUFBTSxHQUFHLFVBQWdDLENBQUM7SUFTaEQsTUFBTSxNQUFNLEdBQWM7UUFFekIsSUFBSTtRQUVKLEtBQUs7UUFHTCxJQUFJO1FBQ0osS0FBSztRQUVMLEtBQUs7UUFFTCxNQUFNO0tBRU4sQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBbkVXLFFBQUEsS0FBSyxTQW1FaEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTixcblx0V1JPTkdfQVJHVU1FTlRTX1VTRURcbn0gPSBFcnJvcnNUeXBlcztcblxuLy8gaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbi8vIGNvbnN0IHtcbi8vIFx0TU5FTU9OSUNBLFxuLy8gXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcbi8vIH0gPSBjb25zdGFudHM7XG5cbmltcG9ydCB7IGV4dHJhY3QgfSBmcm9tICcuL2V4dHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBQYXJzZWQgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZSA9IDxUIGV4dGVuZHMgb2JqZWN0Piggc2VsZjogVCApOiBQYXJzZWQ8VD4gPT4ge1xuXG5cdGlmICggIXNlbGYgfHwgISggc2VsZiBhcyB7IGNvbnN0cnVjdG9yPzogQ2FsbGFibGVGdW5jdGlvbiB9ICkuY29uc3RydWN0b3IgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOO1xuXHR9XG5cblx0Y29uc3QgcHJvdG8gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKCBzZWxmICkgYXMgb2JqZWN0O1xuXG5cdGNvbnN0IHNlbGZDb25zdHJ1Y3RvciA9ICggc2VsZiBhcyB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH0gKS5jb25zdHJ1Y3Rvcjtcblx0Y29uc3QgcHJvdG9Db25zdHJ1Y3RvciA9ICggcHJvdG8gYXMgeyBjb25zdHJ1Y3RvcjogeyBuYW1lOiBzdHJpbmcgfSB9ICkuY29uc3RydWN0b3I7XG5cblx0aWYgKCBzZWxmQ29uc3RydWN0b3IubmFtZS50b1N0cmluZygpICE9PSBwcm90b0NvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSApIHtcblx0XHRjb25zdCBtc2cgPSAnaGF2ZSB0byB1c2UgXCJpbnN0YW5jZVwiIGl0c2VsZjogJyArXG5cdFx0XHRgJyR7c2VsZkNvbnN0cnVjdG9yLm5hbWV9JyB2cyAnJHtwcm90b0NvbnN0cnVjdG9yLm5hbWV9J2A7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCBtc2cgKTtcblx0fVxuXG5cdGNvbnN0IHByb3RvUHJvdG86IHVua25vd24gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKCBwcm90byApO1xuXHRpZiAoIHByb3RvUHJvdG8gKSB7XG5cdFx0Y29uc3QgcHJvdG9Qcm90b0NvbnN0cnVjdG9yID0gKCBwcm90b1Byb3RvIGFzIHsgY29uc3RydWN0b3I/OiB7IG5hbWU6IHN0cmluZyB9IH0gKS5jb25zdHJ1Y3Rvcjtcblx0XHRpZiAoIHByb3RvUHJvdG9Db25zdHJ1Y3RvciAmJiBwcm90b0NvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSAhPT0gcHJvdG9Qcm90b0NvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSApIHtcblx0XHRcdGNvbnN0IG1zZzIgPSAnaGF2ZSB0byB1c2UgXCJpbnN0YW5jZVwiIGl0c2VsZjogJyArXG5cdFx0XHRcdGAnJHtwcm90b0NvbnN0cnVjdG9yLm5hbWV9JyB2cyAnJHtwcm90b1Byb3RvQ29uc3RydWN0b3IubmFtZX0nYDtcblx0XHRcdHRocm93IG5ldyBXUk9OR19BUkdVTUVOVFNfVVNFRCggbXNnMiApO1xuXHRcdH1cblx0fVxuXG5cdC8vIGNvbnN0IGFyZ3MgPSBzZWxmW1N5bWJvbENvbnN0cnVjdG9yTmFtZV0gP1xuXHQvLyBzZWxmW1N5bWJvbENvbnN0cnVjdG9yTmFtZV0uYXJncyA6IFtdO1xuXG5cdGNvbnN0IHsgbmFtZSB9ID0gcHJvdG9Db25zdHJ1Y3RvcjtcblxuXHRjb25zdCBwcm9wcyA9IGV4dHJhY3QoIHsgLi4uc2VsZiB9IGFzIFQgKTtcblx0Ly8gcHJvcHMuY29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG5cdGRlbGV0ZSAoIHByb3BzIGFzIHsgY29uc3RydWN0b3I/OiB1bmtub3duIH0gKS5jb25zdHJ1Y3RvcjtcblxuXHRjb25zdCBqb2ludCA9IGV4dHJhY3QoIE9iamVjdC5hc3NpZ24oXG5cdFx0e30sXG5cdFx0cHJvdG8gXG5cdCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKTtcblx0ZGVsZXRlICggam9pbnQgYXMgeyBjb25zdHJ1Y3Rvcj86IHVua25vd24gfSApLmNvbnN0cnVjdG9yO1xuXG5cdGNvbnN0IHBhcmVudCA9IHByb3RvUHJvdG8gYXMgb2JqZWN0IHwgdW5kZWZpbmVkO1xuXHQvLyBUT0RPOiBkZWVwIHBhcnNlXG5cdC8vIGxldCBwYXJlbnQ7XG5cdC8vIGlmICggcHJvdG9Qcm90b1sgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gPT09IE1ORU1PTklDQSApIHtcblx0Ly8gXHRwYXJlbnQgPSBwYXJzZSggcHJvdG9Qcm90byApO1xuXHQvLyB9IGVsc2Uge1xuXHQvLyBcdHBhcmVudCA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoIHByb3RvUHJvdG8gKTtcblx0Ly8gfVxuXG5cdGNvbnN0IHJlc3VsdDogUGFyc2VkPFQ+ID0ge1xuXG5cdFx0bmFtZSxcblxuXHRcdHByb3BzLFxuXHRcdC8vIHRoZSBsaW5lIGJlbG93IGNvcHkgc3ltYm9scyBhbHNvXG5cblx0XHRzZWxmLFxuXHRcdHByb3RvLFxuXG5cdFx0am9pbnQsXG5cdFx0Ly8gYXJncyxcblx0XHRwYXJlbnQsXG5cblx0fTtcblx0cmV0dXJuIHJlc3VsdDtcbn07XG4iXX0=
|
package/build/utils/pick.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
[
|
|
3
|
-
};
|
|
1
|
+
export declare function pick<T extends object, K extends keyof T>(instance: T, ...args: (K | K[])[]): {
|
|
2
|
+
[P in K]: T[P];
|
|
3
|
+
} & {};
|
|
4
|
+
export declare function pick<T extends object>(instance: T, ...args: (string | string[])[]): Record<string, unknown>;
|
package/build/utils/pick.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.pick =
|
|
3
|
+
exports.pick = pick;
|
|
4
4
|
const errors_1 = require("../descriptors/errors");
|
|
5
5
|
const { WRONG_INSTANCE_INVOCATION } = errors_1.ErrorsTypes;
|
|
6
|
-
|
|
6
|
+
function pick(instance, ...args) {
|
|
7
7
|
if (instance !== Object(instance)) {
|
|
8
8
|
throw new WRONG_INSTANCE_INVOCATION;
|
|
9
9
|
}
|
|
@@ -22,6 +22,5 @@ const pick = (instance, ...args) => {
|
|
|
22
22
|
return obj;
|
|
23
23
|
}, {});
|
|
24
24
|
return picked;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9waWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsa0RBQW9EO0FBQ3BELE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxHQUFHLG9CQUFXLENBQUM7QUFFM0MsTUFBTSxJQUFJLEdBQUcsQ0FBRSxRQUFnQixFQUFFLEdBQUcsSUFBMkIsRUFBRyxFQUFFO0lBRzFFLElBQUssUUFBUSxLQUFLLE1BQU0sQ0FBRSxRQUFRLENBQUUsRUFBRyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSx5QkFBeUIsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FDeEIsQ0FBRSxHQUFhLEVBQUUsRUFBcUIsRUFBRyxFQUFFO1FBQzFDLElBQUssS0FBSyxDQUFDLE9BQU8sQ0FBRSxFQUFFLENBQUUsRUFBRyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUUsR0FBRyxFQUFFLENBQUUsQ0FBQztRQUNuQixDQUFDO2FBQU0sQ0FBQztZQUNQLEdBQUcsQ0FBQyxJQUFJLENBQUUsRUFBRSxDQUFFLENBQUM7UUFDaEIsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQyxFQUNELEVBQUUsQ0FDRixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsUUFBbUMsQ0FBQztJQUNuRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUMxQixDQUFFLEdBQW1DLEVBQUUsSUFBWSxFQUFHLEVBQUU7UUFDdkQsR0FBRyxDQUFFLElBQUksQ0FBRSxHQUFHLE1BQU0sQ0FBRSxJQUFJLENBQUUsQ0FBQztRQUM3QixPQUFPLEdBQUcsQ0FBQztJQUNaLENBQUMsRUFDRCxFQUFFLENBQ0YsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyxDQUFDO0FBOUJXLFFBQUEsSUFBSSxRQThCZiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3QgeyBXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OIH0gPSBFcnJvcnNUeXBlcztcblxuZXhwb3J0IGNvbnN0IHBpY2sgPSAoIGluc3RhbmNlOiBvYmplY3QsIC4uLmFyZ3M6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSApID0+IHtcblxuXHQvLyBhdCB0aGlzIHNpdHVhdGlvbiB0aGlzIGNoZWNrIGlzIGVub3VnaFxuXHRpZiAoIGluc3RhbmNlICE9PSBPYmplY3QoIGluc3RhbmNlICkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0lOU1RBTkNFX0lOVk9DQVRJT047XG5cdH1cblxuXHRjb25zdCBwcm9wcyA9IGFyZ3MucmVkdWNlKFxuXHRcdCggYXJyOiBzdHJpbmdbXSwgZWw6IHN0cmluZyB8IHN0cmluZ1tdICkgPT4ge1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBlbCApICkge1xuXHRcdFx0XHRhcnIucHVzaCggLi4uZWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFyci5wdXNoKCBlbCApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFycjtcblx0XHR9LFxuXHRcdFtdIFxuXHQpO1xuXG5cdGNvbnN0IHJlY29yZCA9IGluc3RhbmNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRjb25zdCBwaWNrZWQgPSBwcm9wcy5yZWR1Y2UoXG5cdFx0KCBvYmo6IHsgWyBpbmRleDogc3RyaW5nIF06IHVua25vd24gfSwgbmFtZTogc3RyaW5nICkgPT4ge1xuXHRcdFx0b2JqWyBuYW1lIF0gPSByZWNvcmRbIG5hbWUgXTtcblx0XHRcdHJldHVybiBvYmo7XG5cdFx0fSxcblx0XHR7fSBcblx0KTtcblxuXHRyZXR1cm4gcGlja2VkO1xuXG59O1xuIl19
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9waWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFhYixvQkE4QkM7QUF6Q0Qsa0RBQW9EO0FBQ3BELE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxHQUFHLG9CQUFXLENBQUM7QUFVbEQsU0FBZ0IsSUFBSSxDQUFHLFFBQWdCLEVBQUUsR0FBRyxJQUEyQjtJQUd0RSxJQUFLLFFBQVEsS0FBSyxNQUFNLENBQUUsUUFBUSxDQUFFLEVBQUcsQ0FBQztRQUN2QyxNQUFNLElBQUkseUJBQXlCLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQ3hCLENBQUUsR0FBYSxFQUFFLEVBQXFCLEVBQUcsRUFBRTtRQUMxQyxJQUFLLEtBQUssQ0FBQyxPQUFPLENBQUUsRUFBRSxDQUFFLEVBQUcsQ0FBQztZQUMzQixHQUFHLENBQUMsSUFBSSxDQUFFLEdBQUcsRUFBRSxDQUFFLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDUCxHQUFHLENBQUMsSUFBSSxDQUFFLEVBQUUsQ0FBRSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNaLENBQUMsRUFDRCxFQUFFLENBQ0YsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLFFBQW1DLENBQUM7SUFDbkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDMUIsQ0FBRSxHQUFtQyxFQUFFLElBQVksRUFBRyxFQUFFO1FBQ3ZELEdBQUcsQ0FBRSxJQUFJLENBQUUsR0FBRyxNQUFNLENBQUUsSUFBSSxDQUFFLENBQUM7UUFDN0IsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDLEVBQ0QsRUFBRSxDQUNGLENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUVmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTiB9ID0gRXJyb3JzVHlwZXM7XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrIDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMga2V5b2YgVD4gKFxuXHRpbnN0YW5jZTogVCxcblx0Li4uYXJnczogKEsgfCBLW10pW11cbik6IHsgW1AgaW4gS106IFRbUF0gfSAmIHt9O1xuZXhwb3J0IGZ1bmN0aW9uIHBpY2sgPFQgZXh0ZW5kcyBvYmplY3Q+IChcblx0aW5zdGFuY2U6IFQsXG5cdC4uLmFyZ3M6IChzdHJpbmcgfCBzdHJpbmdbXSlbXVxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5leHBvcnQgZnVuY3Rpb24gcGljayAoIGluc3RhbmNlOiBvYmplY3QsIC4uLmFyZ3M6IChzdHJpbmcgfCBzdHJpbmdbXSlbXSApIHtcblxuXHQvLyBhdCB0aGlzIHNpdHVhdGlvbiB0aGlzIGNoZWNrIGlzIGVub3VnaFxuXHRpZiAoIGluc3RhbmNlICE9PSBPYmplY3QoIGluc3RhbmNlICkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0lOU1RBTkNFX0lOVk9DQVRJT047XG5cdH1cblxuXHRjb25zdCBwcm9wcyA9IGFyZ3MucmVkdWNlKFxuXHRcdCggYXJyOiBzdHJpbmdbXSwgZWw6IHN0cmluZyB8IHN0cmluZ1tdICkgPT4ge1xuXHRcdFx0aWYgKCBBcnJheS5pc0FycmF5KCBlbCApICkge1xuXHRcdFx0XHRhcnIucHVzaCggLi4uZWwgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFyci5wdXNoKCBlbCApO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGFycjtcblx0XHR9LFxuXHRcdFtdIFxuXHQpO1xuXG5cdGNvbnN0IHJlY29yZCA9IGluc3RhbmNlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXHRjb25zdCBwaWNrZWQgPSBwcm9wcy5yZWR1Y2UoXG5cdFx0KCBvYmo6IHsgWyBpbmRleDogc3RyaW5nIF06IHVua25vd24gfSwgbmFtZTogc3RyaW5nICkgPT4ge1xuXHRcdFx0b2JqWyBuYW1lIF0gPSByZWNvcmRbIG5hbWUgXTtcblx0XHRcdHJldHVybiBvYmo7XG5cdFx0fSxcblx0XHR7fSBcblx0KTtcblxuXHRyZXR1cm4gcGlja2VkO1xuXG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const sibling: (instance: object) => unknown;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sibling = void 0;
|
|
4
|
+
const Props_1 = require("../api/types/Props");
|
|
5
|
+
const sibling = (instance) => {
|
|
6
|
+
const siblings = (SiblingTypeName) => {
|
|
7
|
+
const props = (0, Props_1.getProps)(instance);
|
|
8
|
+
const { __collection__: collection, } = props;
|
|
9
|
+
const answer = collection[SiblingTypeName];
|
|
10
|
+
return answer;
|
|
11
|
+
};
|
|
12
|
+
const result = new Proxy(siblings, {
|
|
13
|
+
get(_, prop) {
|
|
14
|
+
const proxyResult = siblings(prop);
|
|
15
|
+
return proxyResult;
|
|
16
|
+
},
|
|
17
|
+
apply(_, __, args) {
|
|
18
|
+
const proxyResult = siblings(args[0]);
|
|
19
|
+
return proxyResult;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
return result;
|
|
23
|
+
};
|
|
24
|
+
exports.sibling = sibling;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2libGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zaWJsaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsOENBRzRCO0FBRXJCLE1BQU0sT0FBTyxHQUFHLENBQUMsUUFBZ0IsRUFBVyxFQUFFO0lBRXBELE1BQU0sUUFBUSxHQUFHLENBQUMsZUFBdUIsRUFBRSxFQUFFO1FBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxRQUFRLENBQVUsQ0FBQztRQUMxQyxNQUFNLEVBQUUsY0FBYyxFQUFFLFVBQVUsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUUsZUFBZSxDQUFFLENBQUM7UUFDN0MsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FDdkIsUUFBUSxFQUNSO1FBQ0MsR0FBRyxDQUFFLENBQUMsRUFBRSxJQUFZO1lBQ25CLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuQyxPQUFPLFdBQVcsQ0FBQztRQUNwQixDQUFDO1FBQ0QsS0FBSyxDQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSTtZQUNqQixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBRSxDQUFDLENBQUM7WUFDeEMsT0FBTyxXQUFXLENBQUM7UUFDcEIsQ0FBQztLQUNELENBQ0QsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyxDQUFDO0FBekJXLFFBQUEsT0FBTyxXQXlCbEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7XG5cdGdldFByb3BzLFxuXHRQcm9wc1xufSBmcm9tICcuLi9hcGkvdHlwZXMvUHJvcHMnO1xuXG5leHBvcnQgY29uc3Qgc2libGluZyA9IChpbnN0YW5jZTogb2JqZWN0KTogdW5rbm93biA9PiB7XG5cblx0Y29uc3Qgc2libGluZ3MgPSAoU2libGluZ1R5cGVOYW1lOiBzdHJpbmcpID0+IHtcblx0XHRjb25zdCBwcm9wcyA9IGdldFByb3BzKGluc3RhbmNlKSBhcyBQcm9wcztcblx0XHRjb25zdCB7IF9fY29sbGVjdGlvbl9fOiBjb2xsZWN0aW9uLCB9ID0gcHJvcHM7XG5cdFx0Y29uc3QgYW5zd2VyID0gY29sbGVjdGlvblsgU2libGluZ1R5cGVOYW1lIF07XG5cdFx0cmV0dXJuIGFuc3dlcjtcblx0fTtcblxuXHRjb25zdCByZXN1bHQgPSBuZXcgUHJveHkoXG5cdFx0c2libGluZ3MsXG5cdFx0e1xuXHRcdFx0Z2V0IChfLCBwcm9wOiBzdHJpbmcpIHtcblx0XHRcdFx0Y29uc3QgcHJveHlSZXN1bHQgPSBzaWJsaW5ncyhwcm9wKTtcblx0XHRcdFx0cmV0dXJuIHByb3h5UmVzdWx0O1xuXHRcdFx0fSxcblx0XHRcdGFwcGx5IChfLCBfXywgYXJncywpIHtcblx0XHRcdFx0Y29uc3QgcHJveHlSZXN1bHQgPSBzaWJsaW5ncyhhcmdzWyAwIF0pO1xuXHRcdFx0XHRyZXR1cm4gcHJveHlSZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xuXG5cdHJldHVybiByZXN1bHQ7XG5cbn07XG4iXX0=
|
package/build/utils/toJSON.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const toJSON: (instance:
|
|
1
|
+
export declare const toJSON: <T extends object>(instance: T) => string;
|
package/build/utils/toJSON.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.toJSON = void 0;
|
|
|
4
4
|
const extract_1 = require("./extract");
|
|
5
5
|
const toJSON = (instance) => {
|
|
6
6
|
const extracted = (0, extract_1.extract)(instance);
|
|
7
|
-
|
|
7
|
+
const result = Object.entries(extracted).reduce((o, entry) => {
|
|
8
8
|
const [name, _value] = entry;
|
|
9
9
|
if ([null, undefined].includes(_value)) {
|
|
10
10
|
return o;
|
|
@@ -26,6 +26,7 @@ const toJSON = (instance) => {
|
|
|
26
26
|
return o;
|
|
27
27
|
}, '{')
|
|
28
28
|
.replace(/,$/, '}');
|
|
29
|
+
return result;
|
|
29
30
|
};
|
|
30
31
|
exports.toJSON = toJSON;
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9KU09OLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3RvSlNPTi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLHVDQUFvQztBQUM3QixNQUFNLE1BQU0sR0FBRyxDQUFvQixRQUFXLEVBQUcsRUFBRTtJQUV6RCxNQUFNLFNBQVMsR0FBRyxJQUFBLGlCQUFPLEVBQUUsUUFBUSxDQUFFLENBQUM7SUFDdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBRSxTQUFTLENBQUUsQ0FBQyxNQUFNLENBQ2hELENBQUUsQ0FBUyxFQUFFLEtBQTBCLEVBQUcsRUFBRTtRQUUzQyxNQUFNLENBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBRSxHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFLLENBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBRSxDQUFDLFFBQVEsQ0FBRSxNQUEwQixDQUFFLEVBQUcsQ0FBQztZQUNsRSxPQUFPLENBQUMsQ0FBQztRQUNWLENBQUM7UUFFRCxJQUFJLEtBQWEsQ0FBQztRQUVsQixJQUFJLENBQUM7WUFDSixLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBRSxNQUFNLENBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBUSxLQUFjLEVBQUcsQ0FBQztZQUMzQixNQUFNLFdBQVcsR0FBRyxvREFBb0QsQ0FBQztZQUN6RSxNQUFNLEVBQ0wsS0FBSyxFQUNMLE9BQU8sRUFDUCxHQUFHLEtBQWMsQ0FBQztZQUVuQixLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBRTtnQkFDdkIsV0FBVztnQkFDWCxLQUFLO2dCQUNMLE9BQU87YUFDUCxDQUFFLENBQUM7UUFDTCxDQUFDO1FBRUQsQ0FBQyxJQUFJLElBQUksSUFBSSxLQUFLLEtBQUssR0FBRyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxDQUFDO0lBRVYsQ0FBQyxFQUNELEdBQUcsQ0FDSDtTQUNDLE9BQU8sQ0FDUCxJQUFJLEVBQ0osR0FBRyxDQUNILENBQUM7SUFDSCxPQUFPLE1BQU0sQ0FBQztBQUVmLENBQUMsQ0FBQztBQXpDVyxRQUFBLE1BQU0sVUF5Q2pCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBleHRyYWN0IH0gZnJvbSAnLi9leHRyYWN0JztcbmV4cG9ydCBjb25zdCB0b0pTT04gPSA8VCBleHRlbmRzIG9iamVjdD4oIGluc3RhbmNlOiBUICkgPT4ge1xuXG5cdGNvbnN0IGV4dHJhY3RlZCA9IGV4dHJhY3QoIGluc3RhbmNlICk7XG5cdGNvbnN0IHJlc3VsdCA9IE9iamVjdC5lbnRyaWVzKCBleHRyYWN0ZWQgKS5yZWR1Y2UoXG5cdFx0KCBvOiBzdHJpbmcsIGVudHJ5OiBbIHN0cmluZywgdW5rbm93biBdICkgPT4ge1xuXG5cdFx0XHRjb25zdCBbIG5hbWUsIF92YWx1ZSBdID0gZW50cnk7XG5cdFx0XHRpZiAoIFsgbnVsbCwgdW5kZWZpbmVkIF0uaW5jbHVkZXMoIF92YWx1ZSBhcyBudWxsIHwgdW5kZWZpbmVkICkgKSB7XG5cdFx0XHRcdHJldHVybiBvO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgdmFsdWU6IHN0cmluZztcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dmFsdWUgPSBKU09OLnN0cmluZ2lmeSggX3ZhbHVlICk7XG5cdFx0XHR9IGNhdGNoICggZXJyb3I6IHVua25vd24gKSB7XG5cdFx0XHRcdGNvbnN0IGRlc2NyaXB0aW9uID0gJ1RoaXMgdmFsdWUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEpTT04uc3RyaW5naWZ5Jztcblx0XHRcdFx0Y29uc3Qge1xuXHRcdFx0XHRcdHN0YWNrLFxuXHRcdFx0XHRcdG1lc3NhZ2Vcblx0XHRcdFx0fSA9IGVycm9yIGFzIEVycm9yO1xuXG5cdFx0XHRcdHZhbHVlID0gSlNPTi5zdHJpbmdpZnkoIHtcblx0XHRcdFx0XHRkZXNjcmlwdGlvbixcblx0XHRcdFx0XHRzdGFjayxcblx0XHRcdFx0XHRtZXNzYWdlXG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0byArPSBgXCIke25hbWV9XCI6JHt2YWx1ZX0sYDtcblx0XHRcdHJldHVybiBvO1xuXG5cdFx0fSxcblx0XHQneycgXG5cdClcblx0XHQucmVwbGFjZShcblx0XHRcdC8sJC8sXG5cdFx0XHQnfScgXG5cdFx0KTtcblx0cmV0dXJuIHJlc3VsdDtcblxufTtcbiJdfQ==
|
package/docs/UTILS.md
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Mnemonica utilities
|
|
2
|
+
|
|
3
|
+
The `utils` export provides standalone versions of the instance introspection
|
|
4
|
+
and manipulation methods. Every utility that accepts an instance infers its
|
|
5
|
+
type parameter from that instance, so ordinary code needs no explicit `<T>`
|
|
6
|
+
casts.
|
|
7
|
+
|
|
8
|
+
```typescript
|
|
9
|
+
import { utils } from 'mnemonica';
|
|
10
|
+
|
|
11
|
+
const extracted = utils.extract(user); // Extracted<typeof user>
|
|
12
|
+
const picked = utils.pick(user, 'name', 'age');
|
|
13
|
+
const cloned = utils.clone(user); // typeof user
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Core helper types
|
|
19
|
+
|
|
20
|
+
These types live in `src/types/index.ts` and define how the utilities present
|
|
21
|
+
their results.
|
|
22
|
+
|
|
23
|
+
### `Extracted<T>`
|
|
24
|
+
|
|
25
|
+
A plain-object view of an instance's enumerable string-keyed user properties.
|
|
26
|
+
`MnemonicaInstance` method names (`extract`, `pick`, `parent`, `clone`, `fork`,
|
|
27
|
+
`exception`, `sibling`) are filtered out. Optionality is preserved from the
|
|
28
|
+
source type.
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
export type Extracted<T extends object> = {
|
|
32
|
+
[K in keyof T as K extends string ? (K extends MnemonicaInstanceMethodKeys ? never : K) : never]: T[K];
|
|
33
|
+
} & {};
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### `MnemonicaInstanceMethodKeys`
|
|
37
|
+
|
|
38
|
+
The set of prototype method names that must disappear from data-only views:
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
export type MnemonicaInstanceMethodKeys =
|
|
42
|
+
'extract' | 'pick' | 'parent' | 'clone' | 'fork' | 'exception' | 'sibling';
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### `Merge<E, T>`
|
|
46
|
+
|
|
47
|
+
Merges two instance shapes into a flat field object. `T` wins on conflicts;
|
|
48
|
+
`E` contributes only keys that `T` does not define. Method names are filtered
|
|
49
|
+
out. Used by `apply` / `call` / `bind` and by `utils.merge`.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
export type Merge<E extends object, T extends object> = {
|
|
53
|
+
[K in keyof T | keyof E as K extends MnemonicaInstanceMethodKeys ? never : K]:
|
|
54
|
+
K extends keyof T ? T[K] : E[K & keyof E];
|
|
55
|
+
};
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### `InstanceResult<N, Config>`
|
|
59
|
+
|
|
60
|
+
The public instance surface. It renders in hover tooltips as a plain field
|
|
61
|
+
object literal first, then `& MnemonicaInstance<{ ... }>` once:
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
export type InstanceResult<
|
|
65
|
+
N extends object,
|
|
66
|
+
Config extends constructorOptions,
|
|
67
|
+
> = IsHidingMethods<Config> extends true
|
|
68
|
+
? { [K in keyof N]: N[K] }
|
|
69
|
+
: { [K in keyof N]: N[K] } & MnemonicaInstance<{ [K in keyof N]: N[K] }>;
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### `Parsed<T>`
|
|
73
|
+
|
|
74
|
+
The shape returned by `utils.parse(instance)` — a one-level snapshot of the
|
|
75
|
+
instance's prototype chain:
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
export type Parsed<T extends object> = {
|
|
79
|
+
name: string;
|
|
80
|
+
props: Extracted<T>;
|
|
81
|
+
self: T;
|
|
82
|
+
proto: object;
|
|
83
|
+
joint: Record<string, unknown>;
|
|
84
|
+
parent: object | undefined;
|
|
85
|
+
};
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### `SiblingAccessor`
|
|
89
|
+
|
|
90
|
+
A callable/proxy object returned by `utils.sibling(instance)`:
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
export interface SiblingAccessor {
|
|
94
|
+
(SiblingTypeName: string): TypeClass | undefined;
|
|
95
|
+
[key: string]: TypeClass | undefined;
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Utility reference
|
|
102
|
+
|
|
103
|
+
| Utility | Inferred return type | Notes |
|
|
104
|
+
|---|---|---|
|
|
105
|
+
| `utils.extract(instance)` | `Extracted<T>` | Data-only view; methods filtered. |
|
|
106
|
+
| `utils.pick(instance, 'a', 'b')` | `{ a: T['a'], b: T['b'] } & {}` | Literal keys → typed subset. Dynamic `string[]` → `Record<string, unknown>`. |
|
|
107
|
+
| `utils.clone(instance)` | `T` | Same instance type. |
|
|
108
|
+
| `utils.fork(instance)` | `(this: object, ...args: unknown[]) => T` | Returns a fork constructor. |
|
|
109
|
+
| `utils.parent(instance, path?)` | `object \| undefined` | Structural only; nominal path typing needs `TypeRegistry`. |
|
|
110
|
+
| `utils.sibling(instance)` | `SiblingAccessor` | Look up sibling constructors by string name or property access. |
|
|
111
|
+
| `utils.merge(A, B, ...args)` | `InstanceResult<Merge<B, A>, constructorOptions>` | `A` wins; `B` fills non-overlapping keys; methods shown once. |
|
|
112
|
+
| `utils.parse(instance)` | `Parsed<T>` | One-level prototype-chain snapshot. |
|
|
113
|
+
| `utils.toJSON(instance)` | `string` | Generic so the instance type is captured at the call site. |
|
|
114
|
+
| `utils.collectConstructors(instance, flat?)` | `(CallableFunction \| string)[]` | Introspection helper. |
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## `utils.merge(A, B, ...args)` in detail
|
|
119
|
+
|
|
120
|
+
`merge(a, b)` is implemented as `fork(a).call(b, ...args)`. The result is a **new
|
|
121
|
+
instance of `a`’s type** whose parent/existent instance is `b`. That means:
|
|
122
|
+
|
|
123
|
+
- `a` provides the primary fields.
|
|
124
|
+
- `b` contributes only the fields `a` does not define.
|
|
125
|
+
- The result is a flat field object (`A` wins) with no auto-injected instance
|
|
126
|
+
methods.
|
|
127
|
+
|
|
128
|
+
The type `InstanceResult<Merge<B, A>>` expresses this: a flat field object
|
|
129
|
+
(`A` wins).
|
|
130
|
+
|
|
131
|
+
```typescript
|
|
132
|
+
const UserType = define('User', function (this: { name: string; age: number }) {
|
|
133
|
+
this.name = 'Alice';
|
|
134
|
+
this.age = 30;
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
const RoleType = define('Role', function (this: { role: string }) {
|
|
138
|
+
this.role = 'admin';
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
const user = new UserType();
|
|
142
|
+
const role = new RoleType();
|
|
143
|
+
|
|
144
|
+
// hover: { name: string; age: number; role: string; }
|
|
145
|
+
const merged = utils.merge(user, role);
|
|
146
|
+
merged.name; // string
|
|
147
|
+
merged.role; // string
|
|
148
|
+
utils.extract(merged); // OK
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## `utils.parse(instance)` in detail
|
|
154
|
+
|
|
155
|
+
`parse` returns a one-level snapshot of the instance's prototype chain:
|
|
156
|
+
|
|
157
|
+
- `name` — constructor name of the immediate prototype.
|
|
158
|
+
- `props` — `Extracted<T>` from the instance itself.
|
|
159
|
+
- `self` — the original instance reference (`T`).
|
|
160
|
+
- `proto` — `Object.getPrototypeOf(instance)`.
|
|
161
|
+
- `joint` — enumerable properties copied from `proto`.
|
|
162
|
+
- `parent` — `Object.getPrototypeOf(proto)` (the next link up; currently not
|
|
163
|
+
recursively parsed).
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
const parsed = utils.parse(user);
|
|
167
|
+
const name: string = parsed.name;
|
|
168
|
+
const propsName: string | undefined = parsed.props.name;
|
|
169
|
+
const self: typeof user = parsed.self;
|
|
170
|
+
const parent: object | undefined = parsed.parent;
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Limitations
|
|
176
|
+
|
|
177
|
+
- `utils.parent(instance, 'TypeName')` cannot return a specific nominal parent
|
|
178
|
+
type without a user-augmented `TypeRegistry`. This is the same limitation as
|
|
179
|
+
`lookup()`: TypeScript cannot retroactively learn the type graph created
|
|
180
|
+
by `define()` calls. See [`./typed-lookup.md`](./typed-lookup.md).
|
|
181
|
+
- `utils.parse()` returns `parent` as `object | undefined` because deep recursive
|
|
182
|
+
parsing is not implemented at runtime.
|
|
183
|
+
- `utils.toJSON()` always returns `string`; the generic parameter only preserves
|
|
184
|
+
the instance type at the call site for consistency with the other utilities.
|