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.
Files changed (99) hide show
  1. package/.ai/AGENTS.md +1 -1
  2. package/.ai/ONBOARDING.md +3 -2
  3. package/.ai/PROTOTYPE-CHAIN.md +122 -0
  4. package/.ai/TACTICA-DEEP-DIVE.md +52 -49
  5. package/.ai/TACTICA-RULES.md +8 -8
  6. package/.ai/ask/AGENTS.md +15 -9
  7. package/.ai/rules-skill/contributing.md +1 -1
  8. package/.ai/rules-skill/define-patterns.md +8 -2
  9. package/.ai/rules-skill/ecosystem.md +4 -4
  10. package/.ai/rules-skill/instance-methods.md +48 -15
  11. package/.ai/rules-skill/lookup-typed.md +17 -19
  12. package/.ai/rules-skill/type-system.md +12 -2
  13. package/AGENTS.md +25 -15
  14. package/CONTRIBUTING.md +8 -2
  15. package/FOR_HUMANS.md +193 -218
  16. package/README.md +84 -47
  17. package/SKILL.md +4 -4
  18. package/build/api/errors/exceptionConstructor.js +20 -12
  19. package/build/api/errors/index.js +9 -5
  20. package/build/api/errors/throwModificationError.js +15 -9
  21. package/build/api/index.js +35 -2
  22. package/build/api/types/InstanceCreator.js +5 -2
  23. package/build/api/types/Mnemosyne.d.ts +6 -6
  24. package/build/api/types/Mnemosyne.js +43 -120
  25. package/build/api/types/Props.js +5 -3
  26. package/build/api/types/TypeProxy.js +13 -9
  27. package/build/api/types/compileNewModificatorFunctionBody.js +14 -8
  28. package/build/api/types/createInstanceModificator.js +1 -1
  29. package/build/api/types/index.js +56 -13
  30. package/build/api/utils/index.js +21 -12
  31. package/build/constants/index.js +11 -8
  32. package/build/descriptors/types/index.js +79 -26
  33. package/build/index.d.ts +9 -10
  34. package/build/index.js +65 -25
  35. package/build/types/index.d.ts +76 -32
  36. package/build/types/index.js +1 -1
  37. package/build/utils/clone.d.ts +1 -0
  38. package/build/utils/clone.js +11 -0
  39. package/build/utils/collectConstructors.js +5 -3
  40. package/build/utils/exception.d.ts +1 -0
  41. package/build/utils/exception.js +14 -0
  42. package/build/utils/extract.d.ts +2 -3
  43. package/build/utils/extract.js +3 -2
  44. package/build/utils/fork.d.ts +1 -0
  45. package/build/utils/fork.js +33 -0
  46. package/build/utils/index.d.ts +2 -3
  47. package/build/utils/index.js +21 -7
  48. package/build/utils/merge.d.ts +2 -1
  49. package/build/utils/merge.js +10 -6
  50. package/build/utils/parent.d.ts +4 -1
  51. package/build/utils/parent.js +7 -7
  52. package/build/utils/parse.d.ts +2 -12
  53. package/build/utils/parse.js +1 -1
  54. package/build/utils/pick.d.ts +4 -3
  55. package/build/utils/pick.js +4 -5
  56. package/build/utils/sibling.d.ts +1 -0
  57. package/build/utils/sibling.js +25 -0
  58. package/build/utils/toJSON.d.ts +1 -1
  59. package/build/utils/toJSON.js +3 -2
  60. package/docs/UTILS.md +184 -0
  61. package/docs/ai-learning-trajectory.md +9 -9
  62. package/docs/async-constructors.md +21 -1
  63. package/docs/empathy-in-ai.md +170 -0
  64. package/docs/hott-primer.md +47 -0
  65. package/docs/performance-vs-security.md +2 -2
  66. package/docs/prototype-chain.md +127 -0
  67. package/docs/purpose.md +42 -11
  68. package/docs/tactica-pattern.md +20 -20
  69. package/docs/theory-of-operations.md +224 -0
  70. package/docs/typed-lookup.md +30 -26
  71. package/module/index.js +0 -1
  72. package/package.json +13 -7
  73. package/src/api/errors/exceptionConstructor.ts +14 -9
  74. package/src/api/errors/index.ts +8 -4
  75. package/src/api/errors/throwModificationError.ts +10 -9
  76. package/src/api/types/InstanceCreator.ts +5 -8
  77. package/src/api/types/Mnemosyne.ts +72 -231
  78. package/src/api/types/Props.ts +4 -2
  79. package/src/api/types/TypeProxy.ts +7 -11
  80. package/src/api/types/compileNewModificatorFunctionBody.ts +13 -7
  81. package/src/api/types/createInstanceModificator.ts +13 -0
  82. package/src/api/types/index.ts +15 -8
  83. package/src/api/utils/index.ts +16 -14
  84. package/src/constants/index.ts +6 -9
  85. package/src/descriptors/types/index.ts +45 -25
  86. package/src/index.ts +60 -71
  87. package/src/types/index.ts +188 -70
  88. package/src/utils/clone.ts +11 -0
  89. package/src/utils/collectConstructors.ts +4 -2
  90. package/src/utils/exception.ts +16 -0
  91. package/src/utils/extract.ts +5 -2
  92. package/src/utils/fork.ts +57 -0
  93. package/src/utils/index.ts +32 -13
  94. package/src/utils/merge.ts +18 -6
  95. package/src/utils/parent.ts +16 -7
  96. package/src/utils/parse.ts +5 -4
  97. package/src/utils/pick.ts +10 -2
  98. package/src/utils/sibling.ts +33 -0
  99. 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
@@ -1,3 +1,2 @@
1
- export declare const extract: (instance: object) => {
2
- [index: string]: unknown;
3
- };
1
+ import type { Extracted } from '../types';
2
+ export declare const extract: <T extends object>(instance: T) => Extracted<T>;
@@ -11,7 +11,8 @@ const extract = (instance) => {
11
11
  for (const name in instance) {
12
12
  extracted[name] = instance[name];
13
13
  }
14
- return extracted;
14
+ const result = extracted;
15
+ return result;
15
16
  };
16
17
  exports.extract = extract;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leHRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsa0RBQW9EO0FBQ3BELE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxHQUFHLG9CQUFXLENBQUM7QUFJM0MsTUFBTSxPQUFPLEdBQUcsQ0FBRSxRQUFnQixFQUFHLEVBQUU7SUFHN0MsSUFBSyxRQUFRLEtBQUssTUFBTSxDQUFFLFFBQVEsQ0FBRSxFQUFHLENBQUM7UUFDdkMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBbUMsRUFBRSxDQUFDO0lBRXJELEtBQU0sTUFBTSxJQUFJLElBQUksUUFBUSxFQUFHLENBQUM7UUFRL0IsU0FBUyxDQUFFLElBQUksQ0FBRSxHQUFLLFFBQXFDLENBQUUsSUFBSSxDQUFFLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBRWxCLENBQUMsQ0FBQztBQXRCVyxRQUFBLE9BQU8sV0FzQmxCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7IFdST05HX0lOU1RBTkNFX0lOVk9DQVRJT04gfSA9IEVycm9yc1R5cGVzO1xuXG4vLyBpbXBvcnQgeyBob3AgfSBmcm9tICcuL2hvcCc7XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0ID0gKCBpbnN0YW5jZTogb2JqZWN0ICkgPT4ge1xuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggaW5zdGFuY2UgIT09IE9iamVjdCggaW5zdGFuY2UgKSApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTjtcblx0fVxuXG5cdGNvbnN0IGV4dHJhY3RlZDogeyBbIGluZGV4OiBzdHJpbmcgXTogdW5rbm93biB9ID0ge307XG5cblx0Zm9yICggY29uc3QgbmFtZSBpbiBpbnN0YW5jZSApIHtcblx0XHQvLyBpZiAoIG5hbWUgPT09ICdjb25zdHJ1Y3RvcicgJiYgIWhvcCggaW5zdGFuY2UsIG5hbWUgKSApIHtcblx0XHQvLyBcdGNvbnRpbnVlO1xuXHRcdC8vIH1cblx0XHQvLyBpZiAobmFtZSA9PT0gJ3RpbWVzdGFtcCcpIHtcblx0XHQvLyBcdGNvbnRpbnVlO1xuXHRcdC8vIH1cblxuXHRcdGV4dHJhY3RlZFsgbmFtZSBdID0gKCBpbnN0YW5jZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiApWyBuYW1lIF07XG5cdH1cblxuXHRyZXR1cm4gZXh0cmFjdGVkO1xuXG59O1xuIl19
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==
@@ -1,4 +1,3 @@
1
- export declare const utils: {
2
- [index: string]: CallableFunction;
3
- };
1
+ import type { UtilsCollection } from '../types';
2
+ export declare const utils: UtilsCollection;
4
3
  export { defineStackCleaner } from './defineStackCleaner';
@@ -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
- get collectConstructors() {
19
- return collectConstructors_1.collectConstructors;
20
- },
26
+ collectConstructors: collectConstructors_1.collectConstructors,
21
27
  };
22
28
  const wrapThis = (method) => {
23
- return function (instance, ...args) {
24
- const result = method(instance !== undefined ? instance : this, ...args);
25
- return result;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFJYiwrREFBNEQ7QUFDNUQsdUNBQW9DO0FBQ3BDLHFDQUFrQztBQUNsQyxpQ0FBOEI7QUFDOUIscUNBQWtDO0FBQ2xDLG1DQUFnQztBQUNoQyxtQ0FBZ0M7QUFFaEMsTUFBTSxjQUFjLEdBQUc7SUFFdEIsT0FBTyxFQUFQLGlCQUFPO0lBQ1AsSUFBSSxFQUFKLFdBQUk7SUFFSixNQUFNLEVBQU4sZUFBTTtJQUVOLE1BQU0sRUFBTixlQUFNO0lBRU4sS0FBSyxFQUFMLGFBQUs7SUFDTCxLQUFLLEVBQUwsYUFBSztJQUVMLElBQUksbUJBQW1CO1FBQ3RCLE9BQU8seUNBQW1CLENBQUM7SUFDNUIsQ0FBQztDQUVELENBQUM7QUFFRixNQUFNLFFBQVEsR0FBRyxDQUFFLE1BQXVCLEVBQUcsRUFBRTtJQUM5QyxPQUFPLFVBQXlCLFFBQTRCLEVBQUUsR0FBRyxJQUFlO1FBQy9FLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FDcEIsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ3hDLEdBQUcsSUFBSSxDQUNQLENBQUM7UUFDRixPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUMsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVXLFFBQUEsS0FBSyxxQkFFZCxNQUFNLENBQUMsT0FBTyxDQUFFLGNBQWMsQ0FBRTtLQUNqQyxNQUFNLENBQ04sQ0FBRSxPQUFnRCxFQUFFLElBQUksRUFBRyxFQUFFO0lBQzVELE1BQU0sQ0FBRSxJQUFJLEVBQUUsRUFBRSxDQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzFCLE9BQU8sQ0FBRSxJQUFJLENBQUUsR0FBRyxRQUFRLENBQUUsRUFBRSxDQUFFLENBQUM7SUFDakMsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQyxFQUNELEVBQUUsQ0FDRixFQUVEO0FBRUYsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IFdyYXBwYWJsZU1ldGhvZCB9IGZyb20gJy4uL3R5cGVzJztcblxuaW1wb3J0IHsgY29sbGVjdENvbnN0cnVjdG9ycyB9IGZyb20gJy4vY29sbGVjdENvbnN0cnVjdG9ycyc7XG5pbXBvcnQgeyBleHRyYWN0IH0gZnJvbSAnLi9leHRyYWN0JztcbmltcG9ydCB7IHBhcmVudCB9IGZyb20gJy4vcGFyZW50JztcbmltcG9ydCB7IHBpY2sgfSBmcm9tICcuL3BpY2snO1xuaW1wb3J0IHsgdG9KU09OIH0gZnJvbSAnLi90b0pTT04nO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXJnZSc7XG5cbmNvbnN0IHV0aWxzVW5XcmFwcGVkID0ge1xuXG5cdGV4dHJhY3QsXG5cdHBpY2ssXG5cblx0cGFyZW50LFxuXG5cdHRvSlNPTixcblxuXHRwYXJzZSxcblx0bWVyZ2UsXG5cblx0Z2V0IGNvbGxlY3RDb25zdHJ1Y3RvcnMgKCkge1xuXHRcdHJldHVybiBjb2xsZWN0Q29uc3RydWN0b3JzO1xuXHR9LFxuXG59O1xuXG5jb25zdCB3cmFwVGhpcyA9ICggbWV0aG9kOiBXcmFwcGFibGVNZXRob2QgKSA9PiB7XG5cdHJldHVybiBmdW5jdGlvbiAoIHRoaXM6IG9iamVjdCwgaW5zdGFuY2U6IG9iamVjdCB8IHVuZGVmaW5lZCwgLi4uYXJnczogdW5rbm93bltdICkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IG1ldGhvZChcblx0XHRcdGluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBpbnN0YW5jZSA6IHRoaXMsXG5cdFx0XHQuLi5hcmdzIFxuXHRcdCk7XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCB1dGlsczogeyBbIGluZGV4OiBzdHJpbmcgXTogQ2FsbGFibGVGdW5jdGlvbiB9ID0ge1xuXG5cdC4uLk9iamVjdC5lbnRyaWVzKCB1dGlsc1VuV3JhcHBlZCApXG5cdFx0LnJlZHVjZShcblx0XHRcdCggbWV0aG9kczogeyBbIGluZGV4OiBzdHJpbmcgXTogQ2FsbGFibGVGdW5jdGlvbiB9LCB1dGlsICkgPT4ge1xuXHRcdFx0XHRjb25zdCBbIG5hbWUsIGZuIF0gPSB1dGlsO1xuXHRcdFx0XHRtZXRob2RzWyBuYW1lIF0gPSB3cmFwVGhpcyggZm4gKTtcblx0XHRcdFx0cmV0dXJuIG1ldGhvZHM7XG5cdFx0XHR9LFxuXHRcdFx0e30gXG5cdFx0KSxcblxufTtcblxuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi9kZWZpbmVTdGFja0NsZWFuZXInO1xuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFPYiwrREFBNEQ7QUFDNUQsdUNBQW9DO0FBQ3BDLHFDQUFrQztBQUNsQyxpQ0FBOEI7QUFDOUIsdUNBQW9DO0FBQ3BDLDJDQUF3QztBQUN4QyxpQ0FBOEI7QUFDOUIsbUNBQWdDO0FBQ2hDLHFDQUFrQztBQUNsQyxtQ0FBZ0M7QUFDaEMsbUNBQWdDO0FBRWhDLE1BQU0sY0FBYyxHQUFHO0lBRXRCLE9BQU8sRUFBUCxpQkFBTztJQUNQLElBQUksRUFBSixXQUFJO0lBRUosTUFBTSxFQUFOLGVBQU07SUFDTixPQUFPLEVBQVAsaUJBQU87SUFDUCxTQUFTLEVBQVQscUJBQVM7SUFDVCxJQUFJLEVBQUosV0FBSTtJQUNKLEtBQUssRUFBTCxhQUFLO0lBRUwsTUFBTSxFQUFOLGVBQU07SUFFTixLQUFLLEVBQUwsYUFBSztJQUNMLEtBQUssRUFBTCxhQUFLO0lBRUwsbUJBQW1CLEVBQW5CLHlDQUFtQjtDQUVuQixDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBRSxNQUF1QixFQUFHLEVBQUU7SUFDOUMsTUFBTSxNQUFNLEdBQUcsVUFBeUIsUUFBNEIsRUFBRSxHQUFHLElBQWU7UUFDdkYsTUFBTSxlQUFlLEdBQUcsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDakUsSUFBSSxVQUFtQixDQUFDO1FBQ3hCLElBQUssR0FBRyxDQUFDLE1BQU0sRUFBRyxDQUFDO1lBQ2xCLFVBQVUsR0FBRyxJQUFLLE1BQXNELENBQ3ZFLGVBQWUsRUFDZixHQUFHLElBQUksQ0FDUCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDUCxVQUFVLEdBQUcsTUFBTSxDQUNsQixlQUFlLEVBQ2YsR0FBRyxJQUFJLENBQ1AsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHLGtCQUVqQixNQUFNLENBQUMsT0FBTyxDQUFFLGNBQWMsQ0FBRTtLQUNqQyxNQUFNLENBQ04sQ0FBRSxPQUFnRCxFQUFFLElBQUksRUFBRyxFQUFFO0lBQzVELE1BQU0sQ0FBRSxJQUFJLEVBQUUsRUFBRSxDQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzFCLE9BQU8sQ0FBRSxJQUFJLENBQUUsR0FBRyxRQUFRLENBQUUsRUFBRSxDQUFFLENBQUM7SUFDakMsT0FBTyxPQUFPLENBQUM7QUFDaEIsQ0FBQyxFQUNELEVBQUUsQ0FDRixDQUVpQixDQUFDO0FBRXJCLDJEQUEwRDtBQUFqRCx3SEFBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRXcmFwcGFibGVNZXRob2QsXG5cdFV0aWxzQ29sbGVjdGlvblxufSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IGNvbGxlY3RDb25zdHJ1Y3RvcnMgfSBmcm9tICcuL2NvbGxlY3RDb25zdHJ1Y3RvcnMnO1xuaW1wb3J0IHsgZXh0cmFjdCB9IGZyb20gJy4vZXh0cmFjdCc7XG5pbXBvcnQgeyBwYXJlbnQgfSBmcm9tICcuL3BhcmVudCc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnLi9waWNrJztcbmltcG9ydCB7IHNpYmxpbmcgfSBmcm9tICcuL3NpYmxpbmcnO1xuaW1wb3J0IHsgZXhjZXB0aW9uIH0gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHsgZm9yayB9IGZyb20gJy4vZm9yayc7XG5pbXBvcnQgeyBjbG9uZSB9IGZyb20gJy4vY2xvbmUnO1xuaW1wb3J0IHsgdG9KU09OIH0gZnJvbSAnLi90b0pTT04nO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICcuL3BhcnNlJztcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnLi9tZXJnZSc7XG5cbmNvbnN0IHV0aWxzVW5XcmFwcGVkID0ge1xuXG5cdGV4dHJhY3QsXG5cdHBpY2ssXG5cblx0cGFyZW50LFxuXHRzaWJsaW5nLFxuXHRleGNlcHRpb24sXG5cdGZvcmssXG5cdGNsb25lLFxuXG5cdHRvSlNPTixcblxuXHRwYXJzZSxcblx0bWVyZ2UsXG5cblx0Y29sbGVjdENvbnN0cnVjdG9ycyxcblxufTtcblxuY29uc3Qgd3JhcFRoaXMgPSAoIG1ldGhvZDogV3JhcHBhYmxlTWV0aG9kICkgPT4ge1xuXHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoIHRoaXM6IG9iamVjdCwgaW5zdGFuY2U6IG9iamVjdCB8IHVuZGVmaW5lZCwgLi4uYXJnczogdW5rbm93bltdICkge1xuXHRcdGNvbnN0IGluc3RhbmNlQ29udGV4dCA9IGluc3RhbmNlICE9PSB1bmRlZmluZWQgPyBpbnN0YW5jZSA6IHRoaXM7XG5cdFx0bGV0IHdyYXBSZXN1bHQ6IHVua25vd247XG5cdFx0aWYgKCBuZXcudGFyZ2V0ICkge1xuXHRcdFx0d3JhcFJlc3VsdCA9IG5ldyAobWV0aG9kIGFzIHVua25vd24gYXMgbmV3ICguLi5hOiB1bmtub3duW10pID0+IHVua25vd24pKFxuXHRcdFx0XHRpbnN0YW5jZUNvbnRleHQsXG5cdFx0XHRcdC4uLmFyZ3Ncblx0XHRcdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXBSZXN1bHQgPSBtZXRob2QoXG5cdFx0XHRcdGluc3RhbmNlQ29udGV4dCxcblx0XHRcdFx0Li4uYXJncyBcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB3cmFwUmVzdWx0O1xuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHV0aWxzID0ge1xuXG5cdC4uLk9iamVjdC5lbnRyaWVzKCB1dGlsc1VuV3JhcHBlZCApXG5cdFx0LnJlZHVjZShcblx0XHRcdCggbWV0aG9kczogeyBbIGluZGV4OiBzdHJpbmcgXTogQ2FsbGFibGVGdW5jdGlvbiB9LCB1dGlsICkgPT4ge1xuXHRcdFx0XHRjb25zdCBbIG5hbWUsIGZuIF0gPSB1dGlsO1xuXHRcdFx0XHRtZXRob2RzWyBuYW1lIF0gPSB3cmFwVGhpcyggZm4gKTtcblx0XHRcdFx0cmV0dXJuIG1ldGhvZHM7XG5cdFx0XHR9LFxuXHRcdFx0e31cblx0XHQpLFxuXG59IGFzIFV0aWxzQ29sbGVjdGlvbjtcblxuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi9kZWZpbmVTdGFja0NsZWFuZXInO1xuIl19
@@ -1 +1,2 @@
1
- export declare const merge: (a: object, b: object, ...args: unknown[]) => object;
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>>;
@@ -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 { fork } = a;
14
- if (typeof fork !== 'function') {
15
- throw new WRONG_ARGUMENTS_USED('A should have A.fork()');
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 aa = fork.call(b, ...args);
18
- return aa;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixrREFBb0Q7QUFDcEQsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsb0JBQVcsQ0FBQztBQUV0QyxNQUFNLEtBQUssR0FBRyxDQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsR0FBRyxJQUFlLEVBQVcsRUFBRTtJQUczRSxJQUFLLENBQUMsS0FBSyxNQUFNLENBQUUsQ0FBQyxDQUFFLEVBQUcsQ0FBQztRQUN6QixNQUFNLElBQUksb0JBQW9CLENBQUUsdUJBQXVCLENBQUUsQ0FBQztJQUMzRCxDQUFDO0lBR0QsSUFBSyxDQUFDLEtBQUssTUFBTSxDQUFFLENBQUMsQ0FBRSxFQUFHLENBQUM7UUFDekIsTUFBTSxJQUFJLG9CQUFvQixDQUFFLHVCQUF1QixDQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFpRSxDQUFDO0lBQ25GLElBQUssT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFHLENBQUM7UUFDbEMsTUFBTSxJQUFJLG9CQUFvQixDQUFFLHdCQUF3QixDQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQ25CLENBQUMsRUFDRCxHQUFHLElBQUksQ0FDUCxDQUFDO0lBQ0YsT0FBTyxFQUFZLENBQUM7QUFFckIsQ0FBQyxDQUFDO0FBdkJXLFFBQUEsS0FBSyxTQXVCaEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfQVJHVU1FTlRTX1VTRUQgfSA9IEVycm9yc1R5cGVzO1xuXG5leHBvcnQgY29uc3QgbWVyZ2UgPSAoIGE6IG9iamVjdCwgYjogb2JqZWN0LCAuLi5hcmdzOiB1bmtub3duW10gKTogb2JqZWN0ID0+IHtcblxuXHQvLyBhdCB0aGlzIHNpdHVhdGlvbiB0aGlzIGNoZWNrIGlzIGVub3VnaFxuXHRpZiAoIGEgIT09IE9iamVjdCggYSApICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19BUkdVTUVOVFNfVVNFRCggJ0Egc2hvdWxkIGJlIGFuIG9iamVjdCcgKTtcblx0fVxuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggYiAhPT0gT2JqZWN0KCBiICkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCAnQiBzaG91bGQgYmUgYW4gb2JqZWN0JyApO1xuXHR9XG5cblx0Y29uc3QgeyBmb3JrIH0gPSBhIGFzIHsgZm9yaz86ICh0aGlzOiBvYmplY3QsIC4uLmZvcmtBcmdzOiB1bmtub3duW10pID0+IHVua25vd24gfTtcblx0aWYgKCB0eXBlb2YgZm9yayAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoICdBIHNob3VsZCBoYXZlIEEuZm9yaygpJyApO1xuXHR9XG5cblx0Y29uc3QgYWEgPSBmb3JrLmNhbGwoXG5cdFx0Yixcblx0XHQuLi5hcmdzIFxuXHQpO1xuXHRyZXR1cm4gYWEgYXMgb2JqZWN0O1xuXG59O1xuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWVyZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixrREFBb0Q7QUFDcEQsTUFBTSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsb0JBQVcsQ0FBQztBQUM3QyxpQ0FBOEI7QUFDOUIsOENBQThDO0FBTXZDLE1BQU0sS0FBSyxHQUFHLENBQ3BCLENBQUksRUFDSixDQUFJLEVBQ0osR0FBRyxJQUFlLEVBQ1ksRUFBRTtJQUdoQyxJQUFLLENBQUMsS0FBSyxNQUFNLENBQUUsQ0FBQyxDQUFFLEVBQUcsQ0FBQztRQUN6QixNQUFNLElBQUksb0JBQW9CLENBQUUsdUJBQXVCLENBQUUsQ0FBQztJQUMzRCxDQUFDO0lBR0QsSUFBSyxDQUFDLEtBQUssTUFBTSxDQUFFLENBQUMsQ0FBRSxFQUFHLENBQUM7UUFDekIsTUFBTSxJQUFJLG9CQUFvQixDQUFFLHVCQUF1QixDQUFFLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksb0JBQW9CLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBQSxXQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDckIsQ0FBQyxFQUNELEdBQUcsSUFBSSxDQUNQLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxFQUFpQyxDQUFDO0lBQ2pELE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyxDQUFDO0FBN0JXLFFBQUEsS0FBSyxTQTZCaEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfQVJHVU1FTlRTX1VTRUQgfSA9IEVycm9yc1R5cGVzO1xuaW1wb3J0IHsgZm9yayB9IGZyb20gJy4vZm9yayc7XG5pbXBvcnQgeyBnZXRQcm9wcyB9IGZyb20gJy4uL2FwaS90eXBlcy9Qcm9wcyc7XG5pbXBvcnQgdHlwZSB7XG5cdE1lcmdlLFxuXHRJbnN0YW5jZVJlc3VsdCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgbWVyZ2UgPSA8QSBleHRlbmRzIG9iamVjdCwgQiBleHRlbmRzIG9iamVjdD4oXG5cdGE6IEEsXG5cdGI6IEIsXG5cdC4uLmFyZ3M6IHVua25vd25bXVxuKTogSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8QiwgQT4+ID0+IHtcblxuXHQvLyBhdCB0aGlzIHNpdHVhdGlvbiB0aGlzIGNoZWNrIGlzIGVub3VnaFxuXHRpZiAoIGEgIT09IE9iamVjdCggYSApICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19BUkdVTUVOVFNfVVNFRCggJ0Egc2hvdWxkIGJlIGFuIG9iamVjdCcgKTtcblx0fVxuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggYiAhPT0gT2JqZWN0KCBiICkgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCAnQiBzaG91bGQgYmUgYW4gb2JqZWN0JyApO1xuXHR9XG5cblx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wcyhhKTtcblx0aWYgKHByb3BzID09PSB1bmRlZmluZWQpIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoJ0Egc2hvdWxkIGJlIGEgbW5lbW9uaWNhIGluc3RhbmNlJyk7XG5cdH1cblxuXHRjb25zdCBmb3JrZWQgPSBmb3JrKGEpO1xuXHRjb25zdCBhYSA9IGZvcmtlZC5jYWxsKFxuXHRcdGIsXG5cdFx0Li4uYXJncyBcblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gYWEgYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8QiwgQT4+O1xuXHRyZXR1cm4gcmVzdWx0O1xuXG59O1xuIl19
@@ -1 +1,4 @@
1
- export declare const parent: (instance: object, path?: string) => unknown;
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;
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parent = void 0;
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
- const parent = (instance, path) => {
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
- return name === path ?
21
- p : (0, exports.parent)(p, path);
22
- };
23
- exports.parent = parent;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLGtEQUFvRDtBQUNwRCxNQUFNLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxvQkFBVyxDQUFDO0FBRWxELDhDQUU0QjtBQUtyQixNQUFNLE1BQU0sR0FBRyxDQUFFLFFBQWdCLEVBQUUsSUFBYSxFQUFZLEVBQUU7SUFHcEUsSUFBSyxRQUFRLEtBQUssTUFBTSxDQUFFLFFBQVEsQ0FBRSxFQUFHLENBQUM7UUFDdkMsTUFBTSxJQUFJLHlCQUF5QixDQUFDO0lBQ3JDLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFTLEVBQUMsUUFBUSxDQUFVLENBQUM7SUFFM0MsSUFBSyxDQUFDLEtBQUssRUFBRyxDQUFDO1FBQ2QsT0FBTztJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztJQUVoQyxJQUFLLENBQUMsSUFBSSxFQUFHLENBQUM7UUFDYixPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFJcEMsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLGNBQU0sRUFDWCxDQUFXLEVBQ1gsSUFBSSxDQUNGLENBQUM7QUFFSixDQUFDLENBQUM7QUE3QlcsUUFBQSxNQUFNLFVBNkJqQiIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3QgeyBXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OIH0gPSBFcnJvcnNUeXBlcztcblxuaW1wb3J0IHtcblx0X2dldFByb3BzLCBQcm9wcyBcbn0gZnJvbSAnLi4vYXBpL3R5cGVzL1Byb3BzJztcblxuLy8gc2VlayBmb3IgZmlydHMgcGFyZW50IGluc3RhbmNlXG4vLyBvZiBpbnN0YW5jZSBwcm90b3R5cGUgY2hhaW5cbi8vIHdpdGggY29uc3RydWN0b3JzIG9mIHBhdGhcbmV4cG9ydCBjb25zdCBwYXJlbnQgPSAoIGluc3RhbmNlOiBvYmplY3QsIHBhdGg/OiBzdHJpbmcgKTogdW5rbm93biA9PiB7XG5cblx0Ly8gYXQgdGhpcyBzaXR1YXRpb24gdGhpcyBjaGVjayBpcyBlbm91Z2hcblx0aWYgKCBpbnN0YW5jZSAhPT0gT2JqZWN0KCBpbnN0YW5jZSApICkge1xuXHRcdHRocm93IG5ldyBXUk9OR19JTlNUQU5DRV9JTlZPQ0FUSU9OO1xuXHR9XG5cblx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMoaW5zdGFuY2UpIGFzIFByb3BzO1xuXG5cdGlmICggIXByb3BzICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHsgX19wYXJlbnRfXzogcCB9ID0gcHJvcHM7XG5cblx0aWYgKCAhcGF0aCApIHtcblx0XHRyZXR1cm4gcDtcblx0fVxuXG5cdGNvbnN0IHsgY29uc3RydWN0b3I6IHsgbmFtZSB9IH0gPSBwO1xuXG5cdC8vIHNlZWsgdGhyb3VoIHBhcmVudCBpbnN0YW5jZXNcblx0Ly8gYWJvdXQgdGhlIGZpc3QgY29uc3RydWN0b3Igd2l0aCB0aGlzIG5hbWVcblx0cmV0dXJuIG5hbWUgPT09IHBhdGggP1xuXHRcdHAgOiBwYXJlbnQoXG4gcCBhcyBvYmplY3QsXG4gcGF0aCBcblx0XHQpO1xuXG59O1xuIl19
20
+ const result = name === path ?
21
+ p : parent(p, path);
22
+ return result;
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BhcmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBdUJiLHdCQTJCQztBQTNDRCxrREFBb0Q7QUFDcEQsTUFBTSxFQUFFLHlCQUF5QixFQUFFLEdBQUcsb0JBQVcsQ0FBQztBQUVsRCw4Q0FFNEI7QUFXNUIsU0FBZ0IsTUFBTSxDQUFxQixRQUFXLEVBQUUsSUFBYTtJQUdwRSxJQUFLLFFBQVEsS0FBSyxNQUFNLENBQUUsUUFBUSxDQUFFLEVBQUcsQ0FBQztRQUN2QyxNQUFNLElBQUkseUJBQXlCLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQVMsRUFBQyxRQUFRLENBQVUsQ0FBQztJQUUzQyxJQUFLLENBQUMsS0FBSyxFQUFHLENBQUM7UUFDZCxPQUFPO0lBQ1IsQ0FBQztJQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWhDLElBQUssQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELE1BQU0sRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUlwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUUsQ0FBVyxFQUFFLElBQUksQ0FBRSxDQUFDO0lBQ2pDLE9BQU8sTUFBTSxDQUFDO0FBRWYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRJbnN0YW5jZU9mVHlwZVJlZ2lzdHJ5LFxuXHRQYXJlbnRQYXRoT2ZJbnN0YW5jZVxufSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHsgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTiB9ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCB7XG5cdF9nZXRQcm9wcywgUHJvcHMgXG59IGZyb20gJy4uL2FwaS90eXBlcy9Qcm9wcyc7XG5cbi8vIHNlZWsgZm9yIGZpcnRzIHBhcmVudCBpbnN0YW5jZVxuLy8gb2YgaW5zdGFuY2UgcHJvdG90eXBlIGNoYWluXG4vLyB3aXRoIGNvbnN0cnVjdG9ycyBvZiBwYXRoXG5leHBvcnQgZnVuY3Rpb24gcGFyZW50IDxUIGV4dGVuZHMgb2JqZWN0PiAoaW5zdGFuY2U6IFQpOiBvYmplY3QgfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcGFyZW50IDxUIGV4dGVuZHMgb2JqZWN0LCBLIGV4dGVuZHMgUGFyZW50UGF0aE9mSW5zdGFuY2U8VD4gJiBzdHJpbmc+IChcblx0aW5zdGFuY2U6IFQsXG5cdHBhdGg6IEtcbik6IEluc3RhbmNlT2ZUeXBlUmVnaXN0cnk8Sz4gfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcGFyZW50IChpbnN0YW5jZTogb2JqZWN0LCBwYXRoOiBzdHJpbmcpOiBvYmplY3QgfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcGFyZW50IDxUIGV4dGVuZHMgb2JqZWN0PiAoaW5zdGFuY2U6IFQsIHBhdGg/OiBzdHJpbmcpOiBvYmplY3QgfCB1bmRlZmluZWQge1xuXG5cdC8vIGF0IHRoaXMgc2l0dWF0aW9uIHRoaXMgY2hlY2sgaXMgZW5vdWdoXG5cdGlmICggaW5zdGFuY2UgIT09IE9iamVjdCggaW5zdGFuY2UgKSApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfSU5TVEFOQ0VfSU5WT0NBVElPTjtcblx0fVxuXG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRpZiAoICFwcm9wcyApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB7IF9fcGFyZW50X186IHAgfSA9IHByb3BzO1xuXG5cdGlmICggIXBhdGggKSB7XG5cdFx0cmV0dXJuIHA7XG5cdH1cblxuXHRjb25zdCB7IGNvbnN0cnVjdG9yOiB7IG5hbWUgfSB9ID0gcDtcblxuXHQvLyBzZWVrIHRocm91aCBwYXJlbnQgaW5zdGFuY2VzXG5cdC8vIGFib3V0IHRoZSBmaXN0IGNvbnN0cnVjdG9yIHdpdGggdGhpcyBuYW1lXG5cdGNvbnN0IHJlc3VsdCA9IG5hbWUgPT09IHBhdGggP1xuXHRcdHAgOiBwYXJlbnQoIHAgYXMgb2JqZWN0LCBwYXRoICk7XG5cdHJldHVybiByZXN1bHQ7XG5cbn1cbiJdfQ==
@@ -1,12 +1,2 @@
1
- export declare const parse: (self: object) => {
2
- name: string;
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>;
@@ -42,4 +42,4 @@ const parse = (self) => {
42
42
  return result;
43
43
  };
44
44
  exports.parse = parse;
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFHYixrREFBb0Q7QUFDcEQsTUFBTSxFQUNMLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBUWhCLHVDQUFvQztBQUU3QixNQUFNLEtBQUssR0FBRyxDQUFFLElBQVksRUFBRyxFQUFFO0lBRXZDLElBQUssQ0FBQyxJQUFJLElBQUksQ0FBRyxJQUE0QyxDQUFDLFdBQVcsRUFBRyxDQUFDO1FBQzVFLE1BQU0sSUFBSSwwQkFBMEIsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBRSxJQUFJLENBQVksQ0FBQztJQUV2RCxNQUFNLGVBQWUsR0FBSyxJQUEyQyxDQUFDLFdBQVcsQ0FBQztJQUNsRixNQUFNLGdCQUFnQixHQUFLLEtBQTRDLENBQUMsV0FBVyxDQUFDO0lBRXBGLElBQUssZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUcsQ0FBQztRQUM1RSxNQUFNLEdBQUcsR0FBRyxpQ0FBaUM7WUFDNUMsSUFBSSxlQUFlLENBQUMsSUFBSSxTQUFTLGdCQUFnQixDQUFDLElBQUksR0FBRyxDQUFDO1FBQzNELE1BQU0sSUFBSSxvQkFBb0IsQ0FBRSxHQUFHLENBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQVksT0FBTyxDQUFDLGNBQWMsQ0FBRSxLQUFLLENBQUUsQ0FBQztJQUM1RCxJQUFLLFVBQVUsRUFBRyxDQUFDO1FBQ2xCLE1BQU0scUJBQXFCLEdBQUssVUFBa0QsQ0FBQyxXQUFXLENBQUM7UUFDL0YsSUFBSyxxQkFBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUsscUJBQXFCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFHLENBQUM7WUFDM0csTUFBTSxJQUFJLEdBQUcsaUNBQWlDO2dCQUM3QyxJQUFJLGdCQUFnQixDQUFDLElBQUksU0FBUyxxQkFBcUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUNqRSxNQUFNLElBQUksb0JBQW9CLENBQUUsSUFBSSxDQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNGLENBQUM7SUFLRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsZ0JBQWdCLENBQUM7SUFFbEMsTUFBTSxLQUFLLEdBQUcsSUFBQSxpQkFBTyxFQUFFLGtCQUFLLElBQUksQ0FBNkIsQ0FBRSxDQUFDO0lBRWhFLE9BQVMsS0FBb0MsQ0FBQyxXQUFXLENBQUM7SUFFMUQsTUFBTSxLQUFLLEdBQUcsSUFBQSxpQkFBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQ25DLEVBQUUsRUFDRixLQUFLLENBQ3NCLENBQUUsQ0FBQztJQUMvQixPQUFTLEtBQW9DLENBQUMsV0FBVyxDQUFDO0lBRTFELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQztJQVMxQixNQUFNLE1BQU0sR0FBRztRQUVkLElBQUk7UUFFSixLQUFLO1FBR0wsSUFBSTtRQUNKLEtBQUs7UUFFTCxLQUFLO1FBRUwsTUFBTTtLQUVOLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQW5FVyxRQUFBLEtBQUssU0FtRWhCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHtcblx0V1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4sXG5cdFdST05HX0FSR1VNRU5UU19VU0VEXG59ID0gRXJyb3JzVHlwZXM7XG5cbi8vIGltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG4vLyBjb25zdCB7XG4vLyBcdE1ORU1PTklDQSxcbi8vIFx0U3ltYm9sQ29uc3RydWN0b3JOYW1lXG4vLyB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgeyBleHRyYWN0IH0gZnJvbSAnLi9leHRyYWN0JztcblxuZXhwb3J0IGNvbnN0IHBhcnNlID0gKCBzZWxmOiBvYmplY3QgKSA9PiB7XG5cblx0aWYgKCAhc2VsZiB8fCAhKCBzZWxmIGFzIHsgY29uc3RydWN0b3I/OiBDYWxsYWJsZUZ1bmN0aW9uIH0gKS5jb25zdHJ1Y3RvciApIHtcblx0XHR0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk47XG5cdH1cblxuXHRjb25zdCBwcm90byA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoIHNlbGYgKSBhcyBvYmplY3Q7XG5cblx0Y29uc3Qgc2VsZkNvbnN0cnVjdG9yID0gKCBzZWxmIGFzIHsgY29uc3RydWN0b3I6IHsgbmFtZTogc3RyaW5nIH0gfSApLmNvbnN0cnVjdG9yO1xuXHRjb25zdCBwcm90b0NvbnN0cnVjdG9yID0gKCBwcm90byBhcyB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH0gKS5jb25zdHJ1Y3RvcjtcblxuXHRpZiAoIHNlbGZDb25zdHJ1Y3Rvci5uYW1lLnRvU3RyaW5nKCkgIT09IHByb3RvQ29uc3RydWN0b3IubmFtZS50b1N0cmluZygpICkge1xuXHRcdGNvbnN0IG1zZyA9ICdoYXZlIHRvIHVzZSBcImluc3RhbmNlXCIgaXRzZWxmOiAnICtcblx0XHRcdGAnJHtzZWxmQ29uc3RydWN0b3IubmFtZX0nIHZzICcke3Byb3RvQ29uc3RydWN0b3IubmFtZX0nYDtcblx0XHR0aHJvdyBuZXcgV1JPTkdfQVJHVU1FTlRTX1VTRUQoIG1zZyApO1xuXHR9XG5cblx0Y29uc3QgcHJvdG9Qcm90bzogdW5rbm93biA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoIHByb3RvICk7XG5cdGlmICggcHJvdG9Qcm90byApIHtcblx0XHRjb25zdCBwcm90b1Byb3RvQ29uc3RydWN0b3IgPSAoIHByb3RvUHJvdG8gYXMgeyBjb25zdHJ1Y3Rvcj86IHsgbmFtZTogc3RyaW5nIH0gfSApLmNvbnN0cnVjdG9yO1xuXHRcdGlmICggcHJvdG9Qcm90b0NvbnN0cnVjdG9yICYmIHByb3RvQ29uc3RydWN0b3IubmFtZS50b1N0cmluZygpICE9PSBwcm90b1Byb3RvQ29uc3RydWN0b3IubmFtZS50b1N0cmluZygpICkge1xuXHRcdFx0Y29uc3QgbXNnMiA9ICdoYXZlIHRvIHVzZSBcImluc3RhbmNlXCIgaXRzZWxmOiAnICtcblx0XHRcdFx0YCcke3Byb3RvQ29uc3RydWN0b3IubmFtZX0nIHZzICcke3Byb3RvUHJvdG9Db25zdHJ1Y3Rvci5uYW1lfSdgO1xuXHRcdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCBtc2cyICk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gY29uc3QgYXJncyA9IHNlbGZbU3ltYm9sQ29uc3RydWN0b3JOYW1lXSA/XG5cdC8vIHNlbGZbU3ltYm9sQ29uc3RydWN0b3JOYW1lXS5hcmdzIDogW107XG5cblx0Y29uc3QgeyBuYW1lIH0gPSBwcm90b0NvbnN0cnVjdG9yO1xuXG5cdGNvbnN0IHByb3BzID0gZXh0cmFjdCggeyAuLi5zZWxmIH0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKTtcblx0Ly8gcHJvcHMuY29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG5cdGRlbGV0ZSAoIHByb3BzIGFzIHsgY29uc3RydWN0b3I/OiB1bmtub3duIH0gKS5jb25zdHJ1Y3RvcjtcblxuXHRjb25zdCBqb2ludCA9IGV4dHJhY3QoIE9iamVjdC5hc3NpZ24oXG5cdFx0e30sXG5cdFx0cHJvdG8gXG5cdCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKTtcblx0ZGVsZXRlICggam9pbnQgYXMgeyBjb25zdHJ1Y3Rvcj86IHVua25vd24gfSApLmNvbnN0cnVjdG9yO1xuXG5cdGNvbnN0IHBhcmVudCA9IHByb3RvUHJvdG87XG5cdC8vIFRPRE86IGRlZXAgcGFyc2Vcblx0Ly8gbGV0IHBhcmVudDtcblx0Ly8gaWYgKCBwcm90b1Byb3RvWyBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgXSA9PT0gTU5FTU9OSUNBICkge1xuXHQvLyBcdHBhcmVudCA9IHBhcnNlKCBwcm90b1Byb3RvICk7XG5cdC8vIH0gZWxzZSB7XG5cdC8vIFx0cGFyZW50ID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZiggcHJvdG9Qcm90byApO1xuXHQvLyB9XG5cblx0Y29uc3QgcmVzdWx0ID0ge1xuXG5cdFx0bmFtZSxcblxuXHRcdHByb3BzLFxuXHRcdC8vIHRoZSBsaW5lIGJlbG93IGNvcHkgc3ltYm9scyBhbHNvXG5cblx0XHRzZWxmLFxuXHRcdHByb3RvLFxuXG5cdFx0am9pbnQsXG5cdFx0Ly8gYXJncyxcblx0XHRwYXJlbnQsXG5cblx0fTtcblx0cmV0dXJuIHJlc3VsdDtcbn07XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFHYixrREFBb0Q7QUFDcEQsTUFBTSxFQUNMLDBCQUEwQixFQUMxQixvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBUWhCLHVDQUFvQztBQUc3QixNQUFNLEtBQUssR0FBRyxDQUFvQixJQUFPLEVBQWMsRUFBRTtJQUUvRCxJQUFLLENBQUMsSUFBSSxJQUFJLENBQUcsSUFBNEMsQ0FBQyxXQUFXLEVBQUcsQ0FBQztRQUM1RSxNQUFNLElBQUksMEJBQTBCLENBQUM7SUFDdEMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUUsSUFBSSxDQUFZLENBQUM7SUFFdkQsTUFBTSxlQUFlLEdBQUssSUFBMkMsQ0FBQyxXQUFXLENBQUM7SUFDbEYsTUFBTSxnQkFBZ0IsR0FBSyxLQUE0QyxDQUFDLFdBQVcsQ0FBQztJQUVwRixJQUFLLGVBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFHLENBQUM7UUFDNUUsTUFBTSxHQUFHLEdBQUcsaUNBQWlDO1lBQzVDLElBQUksZUFBZSxDQUFDLElBQUksU0FBUyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUMzRCxNQUFNLElBQUksb0JBQW9CLENBQUUsR0FBRyxDQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFZLE9BQU8sQ0FBQyxjQUFjLENBQUUsS0FBSyxDQUFFLENBQUM7SUFDNUQsSUFBSyxVQUFVLEVBQUcsQ0FBQztRQUNsQixNQUFNLHFCQUFxQixHQUFLLFVBQWtELENBQUMsV0FBVyxDQUFDO1FBQy9GLElBQUsscUJBQXFCLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLHFCQUFxQixDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRyxDQUFDO1lBQzNHLE1BQU0sSUFBSSxHQUFHLGlDQUFpQztnQkFDN0MsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLFNBQVMscUJBQXFCLENBQUMsSUFBSSxHQUFHLENBQUM7WUFDakUsTUFBTSxJQUFJLG9CQUFvQixDQUFFLElBQUksQ0FBRSxDQUFDO1FBQ3hDLENBQUM7SUFDRixDQUFDO0lBS0QsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLGdCQUFnQixDQUFDO0lBRWxDLE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQU8sRUFBRSxrQkFBSyxJQUFJLENBQU8sQ0FBRSxDQUFDO0lBRTFDLE9BQVMsS0FBb0MsQ0FBQyxXQUFXLENBQUM7SUFFMUQsTUFBTSxLQUFLLEdBQUcsSUFBQSxpQkFBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQ25DLEVBQUUsRUFDRixLQUFLLENBQ3NCLENBQUUsQ0FBQztJQUMvQixPQUFTLEtBQW9DLENBQUMsV0FBVyxDQUFDO0lBRTFELE1BQU0sTUFBTSxHQUFHLFVBQWdDLENBQUM7SUFTaEQsTUFBTSxNQUFNLEdBQWM7UUFFekIsSUFBSTtRQUVKLEtBQUs7UUFHTCxJQUFJO1FBQ0osS0FBSztRQUVMLEtBQUs7UUFFTCxNQUFNO0tBRU4sQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBbkVXLFFBQUEsS0FBSyxTQW1FaEIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTixcblx0V1JPTkdfQVJHVU1FTlRTX1VTRURcbn0gPSBFcnJvcnNUeXBlcztcblxuLy8gaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbi8vIGNvbnN0IHtcbi8vIFx0TU5FTU9OSUNBLFxuLy8gXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcbi8vIH0gPSBjb25zdGFudHM7XG5cbmltcG9ydCB7IGV4dHJhY3QgfSBmcm9tICcuL2V4dHJhY3QnO1xuaW1wb3J0IHR5cGUgeyBQYXJzZWQgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZSA9IDxUIGV4dGVuZHMgb2JqZWN0Piggc2VsZjogVCApOiBQYXJzZWQ8VD4gPT4ge1xuXG5cdGlmICggIXNlbGYgfHwgISggc2VsZiBhcyB7IGNvbnN0cnVjdG9yPzogQ2FsbGFibGVGdW5jdGlvbiB9ICkuY29uc3RydWN0b3IgKSB7XG5cdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOO1xuXHR9XG5cblx0Y29uc3QgcHJvdG8gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKCBzZWxmICkgYXMgb2JqZWN0O1xuXG5cdGNvbnN0IHNlbGZDb25zdHJ1Y3RvciA9ICggc2VsZiBhcyB7IGNvbnN0cnVjdG9yOiB7IG5hbWU6IHN0cmluZyB9IH0gKS5jb25zdHJ1Y3Rvcjtcblx0Y29uc3QgcHJvdG9Db25zdHJ1Y3RvciA9ICggcHJvdG8gYXMgeyBjb25zdHJ1Y3RvcjogeyBuYW1lOiBzdHJpbmcgfSB9ICkuY29uc3RydWN0b3I7XG5cblx0aWYgKCBzZWxmQ29uc3RydWN0b3IubmFtZS50b1N0cmluZygpICE9PSBwcm90b0NvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSApIHtcblx0XHRjb25zdCBtc2cgPSAnaGF2ZSB0byB1c2UgXCJpbnN0YW5jZVwiIGl0c2VsZjogJyArXG5cdFx0XHRgJyR7c2VsZkNvbnN0cnVjdG9yLm5hbWV9JyB2cyAnJHtwcm90b0NvbnN0cnVjdG9yLm5hbWV9J2A7XG5cdFx0dGhyb3cgbmV3IFdST05HX0FSR1VNRU5UU19VU0VEKCBtc2cgKTtcblx0fVxuXG5cdGNvbnN0IHByb3RvUHJvdG86IHVua25vd24gPSBSZWZsZWN0LmdldFByb3RvdHlwZU9mKCBwcm90byApO1xuXHRpZiAoIHByb3RvUHJvdG8gKSB7XG5cdFx0Y29uc3QgcHJvdG9Qcm90b0NvbnN0cnVjdG9yID0gKCBwcm90b1Byb3RvIGFzIHsgY29uc3RydWN0b3I/OiB7IG5hbWU6IHN0cmluZyB9IH0gKS5jb25zdHJ1Y3Rvcjtcblx0XHRpZiAoIHByb3RvUHJvdG9Db25zdHJ1Y3RvciAmJiBwcm90b0NvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSAhPT0gcHJvdG9Qcm90b0NvbnN0cnVjdG9yLm5hbWUudG9TdHJpbmcoKSApIHtcblx0XHRcdGNvbnN0IG1zZzIgPSAnaGF2ZSB0byB1c2UgXCJpbnN0YW5jZVwiIGl0c2VsZjogJyArXG5cdFx0XHRcdGAnJHtwcm90b0NvbnN0cnVjdG9yLm5hbWV9JyB2cyAnJHtwcm90b1Byb3RvQ29uc3RydWN0b3IubmFtZX0nYDtcblx0XHRcdHRocm93IG5ldyBXUk9OR19BUkdVTUVOVFNfVVNFRCggbXNnMiApO1xuXHRcdH1cblx0fVxuXG5cdC8vIGNvbnN0IGFyZ3MgPSBzZWxmW1N5bWJvbENvbnN0cnVjdG9yTmFtZV0gP1xuXHQvLyBzZWxmW1N5bWJvbENvbnN0cnVjdG9yTmFtZV0uYXJncyA6IFtdO1xuXG5cdGNvbnN0IHsgbmFtZSB9ID0gcHJvdG9Db25zdHJ1Y3RvcjtcblxuXHRjb25zdCBwcm9wcyA9IGV4dHJhY3QoIHsgLi4uc2VsZiB9IGFzIFQgKTtcblx0Ly8gcHJvcHMuY29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG5cdGRlbGV0ZSAoIHByb3BzIGFzIHsgY29uc3RydWN0b3I/OiB1bmtub3duIH0gKS5jb25zdHJ1Y3RvcjtcblxuXHRjb25zdCBqb2ludCA9IGV4dHJhY3QoIE9iamVjdC5hc3NpZ24oXG5cdFx0e30sXG5cdFx0cHJvdG8gXG5cdCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKTtcblx0ZGVsZXRlICggam9pbnQgYXMgeyBjb25zdHJ1Y3Rvcj86IHVua25vd24gfSApLmNvbnN0cnVjdG9yO1xuXG5cdGNvbnN0IHBhcmVudCA9IHByb3RvUHJvdG8gYXMgb2JqZWN0IHwgdW5kZWZpbmVkO1xuXHQvLyBUT0RPOiBkZWVwIHBhcnNlXG5cdC8vIGxldCBwYXJlbnQ7XG5cdC8vIGlmICggcHJvdG9Qcm90b1sgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gPT09IE1ORU1PTklDQSApIHtcblx0Ly8gXHRwYXJlbnQgPSBwYXJzZSggcHJvdG9Qcm90byApO1xuXHQvLyB9IGVsc2Uge1xuXHQvLyBcdHBhcmVudCA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoIHByb3RvUHJvdG8gKTtcblx0Ly8gfVxuXG5cdGNvbnN0IHJlc3VsdDogUGFyc2VkPFQ+ID0ge1xuXG5cdFx0bmFtZSxcblxuXHRcdHByb3BzLFxuXHRcdC8vIHRoZSBsaW5lIGJlbG93IGNvcHkgc3ltYm9scyBhbHNvXG5cblx0XHRzZWxmLFxuXHRcdHByb3RvLFxuXG5cdFx0am9pbnQsXG5cdFx0Ly8gYXJncyxcblx0XHRwYXJlbnQsXG5cblx0fTtcblx0cmV0dXJuIHJlc3VsdDtcbn07XG4iXX0=
@@ -1,3 +1,4 @@
1
- export declare const pick: (instance: object, ...args: (string | string[])[]) => {
2
- [index: string]: unknown;
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>;
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pick = void 0;
3
+ exports.pick = pick;
4
4
  const errors_1 = require("../descriptors/errors");
5
5
  const { WRONG_INSTANCE_INVOCATION } = errors_1.ErrorsTypes;
6
- const pick = (instance, ...args) => {
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
- exports.pick = pick;
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=
@@ -1 +1 @@
1
- export declare const toJSON: (instance: object) => string;
1
+ export declare const toJSON: <T extends object>(instance: T) => string;
@@ -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
- return Object.entries(extracted).reduce((o, entry) => {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9KU09OLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3RvSlNPTi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQUViLHVDQUFvQztBQUM3QixNQUFNLE1BQU0sR0FBRyxDQUFFLFFBQWdCLEVBQUcsRUFBRTtJQUU1QyxNQUFNLFNBQVMsR0FBRyxJQUFBLGlCQUFPLEVBQUUsUUFBUSxDQUFFLENBQUM7SUFDdEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFFLFNBQVMsQ0FBRSxDQUFDLE1BQU0sQ0FDeEMsQ0FBRSxDQUFTLEVBQUUsS0FBMEIsRUFBRyxFQUFFO1FBRTNDLE1BQU0sQ0FBRSxJQUFJLEVBQUUsTUFBTSxDQUFFLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUssQ0FBRSxJQUFJLEVBQUUsU0FBUyxDQUFFLENBQUMsUUFBUSxDQUFFLE1BQTBCLENBQUUsRUFBRyxDQUFDO1lBQ2xFLE9BQU8sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksS0FBYSxDQUFDO1FBRWxCLElBQUksQ0FBQztZQUNKLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFFLE1BQU0sQ0FBRSxDQUFDO1FBQ2xDLENBQUM7UUFBQyxPQUFRLEtBQWMsRUFBRyxDQUFDO1lBQzNCLE1BQU0sV0FBVyxHQUFHLG9EQUFvRCxDQUFDO1lBQ3pFLE1BQU0sRUFDTCxLQUFLLEVBQ0wsT0FBTyxFQUNQLEdBQUcsS0FBYyxDQUFDO1lBRW5CLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFFO2dCQUN2QixXQUFXO2dCQUNYLEtBQUs7Z0JBQ0wsT0FBTzthQUNQLENBQUUsQ0FBQztRQUNMLENBQUM7UUFFRCxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUM7UUFDM0IsT0FBTyxDQUFDLENBQUM7SUFFVixDQUFDLEVBQ0QsR0FBRyxDQUNIO1NBQ0MsT0FBTyxDQUNQLElBQUksRUFDSixHQUFHLENBQ0gsQ0FBQztBQUVKLENBQUMsQ0FBQztBQXhDVyxRQUFBLE1BQU0sVUF3Q2pCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBleHRyYWN0IH0gZnJvbSAnLi9leHRyYWN0JztcbmV4cG9ydCBjb25zdCB0b0pTT04gPSAoIGluc3RhbmNlOiBvYmplY3QgKSA9PiB7XG5cblx0Y29uc3QgZXh0cmFjdGVkID0gZXh0cmFjdCggaW5zdGFuY2UgKTtcblx0cmV0dXJuIE9iamVjdC5lbnRyaWVzKCBleHRyYWN0ZWQgKS5yZWR1Y2UoXG5cdFx0KCBvOiBzdHJpbmcsIGVudHJ5OiBbIHN0cmluZywgdW5rbm93biBdICkgPT4ge1xuXG5cdFx0XHRjb25zdCBbIG5hbWUsIF92YWx1ZSBdID0gZW50cnk7XG5cdFx0XHRpZiAoIFsgbnVsbCwgdW5kZWZpbmVkIF0uaW5jbHVkZXMoIF92YWx1ZSBhcyBudWxsIHwgdW5kZWZpbmVkICkgKSB7XG5cdFx0XHRcdHJldHVybiBvO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgdmFsdWU6IHN0cmluZztcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dmFsdWUgPSBKU09OLnN0cmluZ2lmeSggX3ZhbHVlICk7XG5cdFx0XHR9IGNhdGNoICggZXJyb3I6IHVua25vd24gKSB7XG5cdFx0XHRcdGNvbnN0IGRlc2NyaXB0aW9uID0gJ1RoaXMgdmFsdWUgdHlwZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IEpTT04uc3RyaW5naWZ5Jztcblx0XHRcdFx0Y29uc3Qge1xuXHRcdFx0XHRcdHN0YWNrLFxuXHRcdFx0XHRcdG1lc3NhZ2Vcblx0XHRcdFx0fSA9IGVycm9yIGFzIEVycm9yO1xuXG5cdFx0XHRcdHZhbHVlID0gSlNPTi5zdHJpbmdpZnkoIHtcblx0XHRcdFx0XHRkZXNjcmlwdGlvbixcblx0XHRcdFx0XHRzdGFjayxcblx0XHRcdFx0XHRtZXNzYWdlXG5cdFx0XHRcdH0gKTtcblx0XHRcdH1cblxuXHRcdFx0byArPSBgXCIke25hbWV9XCI6JHt2YWx1ZX0sYDtcblx0XHRcdHJldHVybiBvO1xuXG5cdFx0fSxcblx0XHQneycgXG5cdClcblx0XHQucmVwbGFjZShcblx0XHRcdC8sJC8sXG5cdFx0XHQnfScgXG5cdFx0KTtcblxufTtcbiJdfQ==
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.