mnemonica 0.9.99782 → 0.9.99787
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/README.md +109 -130
- package/build/api/errors/throwModificationError.js +7 -3
- package/build/api/hooks/flowCheckers.js +2 -5
- package/build/api/types/InstanceCreator.d.ts +2 -2
- package/build/api/types/InstanceCreator.js +8 -3
- package/build/api/types/InstanceModificator.js +1 -1
- package/build/api/types/Mnemosyne.d.ts +3 -2
- package/build/api/types/Mnemosyne.js +4 -3
- package/build/api/types/Props.js +1 -1
- package/build/api/types/TypeProxy.d.ts +2 -2
- package/build/api/types/TypeProxy.js +1 -1
- package/build/api/types/createInstanceModificator.js +1 -1
- package/build/api/types/index.js +24 -4
- package/build/constants/index.d.ts +0 -1
- package/build/constants/index.js +1 -2
- package/build/descriptors/types/index.d.ts +2 -2
- package/build/descriptors/types/index.js +4 -1
- package/build/index.d.ts +4 -4
- package/build/index.js +5 -3
- package/build/types/index.d.ts +46 -32
- package/build/types/index.js +1 -1
- package/build/utils/parent.d.ts +1 -1
- package/build/utils/parent.js +1 -1
- package/module/index.js +40 -41
- package/package.json +18 -15
package/README.md
CHANGED
|
@@ -1,28 +1,49 @@
|
|
|
1
1
|
# mnemonica
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Instance Inheritance System for JavaScript / TypeScript.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
> **Using this library?** You're in the right place. |
|
|
6
|
+
> **Contributing / modifying code?** Start with [`AGENTS.md`](./AGENTS.md).
|
|
7
|
+
> [`SKILL.md`](./SKILL.md) is a usage quick reference only (not for contributors).
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
Mnemonica builds typed prototype chains *between instances* (not just classes).
|
|
10
|
+
You declare a type with `define(name, ctor)`; new instances inherit through
|
|
11
|
+
the prototype chain from the instance they were created from. Mnemonica makes
|
|
12
|
+
the inheritance graph explicit — eliminating a class of `Object.setPrototypeOf`
|
|
13
|
+
and constructor-reuse bugs by design.
|
|
8
14
|
|
|
15
|
+
```
|
|
16
|
+
define(name, ctor) → TypeProxy → new instance.SubType()
|
|
17
|
+
│ │
|
|
18
|
+
▼ ▼
|
|
19
|
+
subtype registry InstanceCreator
|
|
20
|
+
│ │
|
|
21
|
+
▼ ▼
|
|
22
|
+
preCreation hook Mnemosyne
|
|
23
|
+
│
|
|
24
|
+
▼
|
|
25
|
+
instance with
|
|
26
|
+
prototype chain →
|
|
27
|
+
parent instance
|
|
28
|
+
│
|
|
29
|
+
▼
|
|
30
|
+
postCreation hook
|
|
31
|
+
```
|
|
9
32
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* ?. : state : **mad science**
|
|
15
|
-
* ?. : type : **asynchronous monad descriptor** => this
|
|
16
|
-
* ?. : prod ready : **we wonder about**
|
|
17
|
-
* ?. : example : **git clone && npm run example**
|
|
33
|
+
Think `f(x) ⇒ y` where `this` is a persistent data structure carrying the
|
|
34
|
+
transformation history. Stored constructor arguments stay introspectable via
|
|
35
|
+
`getProps()`, so an instance is also a record of how it was built.
|
|
18
36
|
|
|
19
|
-
---
|
|
20
37
|
[](https://coveralls.io/github/wentout/mnemonica?branch=master)
|
|
21
38
|

|
|
22
39
|

|
|
23
40
|

|
|
24
41
|
[](https://www.npmjs.com/package/mnemonica)
|
|
25
42
|
|
|
43
|
+
> Status: experimental. API is stable for the documented surface; advanced
|
|
44
|
+
> internals (`_define`, `_lookup`, `defaultCollection`) are not part of the
|
|
45
|
+
> stability contract.
|
|
46
|
+
|
|
26
47
|
---
|
|
27
48
|
|
|
28
49
|
## Table of Contents
|
|
@@ -42,9 +63,15 @@
|
|
|
42
63
|
- [Error Handling](#error-handling)
|
|
43
64
|
- [Symbols & Constants](#symbols--constants)
|
|
44
65
|
- [Configuration Options](#configuration-options)
|
|
45
|
-
- [AI Agent Usage Guide](#ai-agent-usage-guide)
|
|
46
|
-
- [Usage with TypeØmatica](#usage-with-typeomatica)
|
|
47
66
|
- [Examples](#examples)
|
|
67
|
+
- [Usage with TypeØmatica](#usage-with-typeomatica)
|
|
68
|
+
- [Roadmap](#roadmap)
|
|
69
|
+
- [Contributing](#contributing)
|
|
70
|
+
- [License](#license)
|
|
71
|
+
|
|
72
|
+
> AI agent integration guidance (introspection patterns, type discovery,
|
|
73
|
+
> safe construction) lives in [AGENTS.md](AGENTS.md). It is kept separate
|
|
74
|
+
> from the user-facing API reference.
|
|
48
75
|
|
|
49
76
|
---
|
|
50
77
|
|
|
@@ -78,7 +105,21 @@ Think of it as a mathematical function `f(x) => y` where `this` is your persiste
|
|
|
78
105
|
npm install mnemonica
|
|
79
106
|
```
|
|
80
107
|
|
|
81
|
-
**Requirements:** Node.js
|
|
108
|
+
**Requirements:** Node.js `>=18 <26` (tested on 20.x, 22.x, 24.x in CI).
|
|
109
|
+
|
|
110
|
+
### From a Git checkout
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
git clone https://github.com/wentout/mnemonica.git
|
|
114
|
+
cd mnemonica
|
|
115
|
+
npm ci
|
|
116
|
+
npm run build # compiles src/ → build/
|
|
117
|
+
npm run test:cov # mocha + coverage
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
The ESM entry point (`mnemonica/module`) re-exports the CommonJS build, so
|
|
121
|
+
`npm run build` must succeed before `import 'mnemonica/module'` works from
|
|
122
|
+
a fresh checkout.
|
|
82
123
|
|
|
83
124
|
---
|
|
84
125
|
|
|
@@ -973,116 +1014,29 @@ user.age = 25; // ✓ Works - number to number
|
|
|
973
1014
|
user.age = '25'; // ✗ TypeError: Type Mismatch at runtime!
|
|
974
1015
|
```
|
|
975
1016
|
|
|
976
|
-
For complete documentation including integration patterns, error handling, and advanced usage, see [
|
|
1017
|
+
For complete documentation including integration patterns, error handling, and advanced usage, see [docs/typeomatica.md](docs/typeomatica.md).
|
|
977
1018
|
|
|
978
1019
|
---
|
|
979
1020
|
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
### 1. Type Introspection
|
|
985
|
-
|
|
986
|
-
Use `utils.parse(instance)` to understand instance structure:
|
|
987
|
-
|
|
988
|
-
```js
|
|
989
|
-
const { utils: { parse } } = require('mnemonica');
|
|
990
|
-
|
|
991
|
-
const parsed = parse(instance);
|
|
992
|
-
// Returns: { name, props, self, proto, joint, parent, constructor }
|
|
993
|
-
```
|
|
994
|
-
|
|
995
|
-
### 2. Safe Property Access
|
|
996
|
-
|
|
997
|
-
Always use `getProps()` instead of direct property access:
|
|
998
|
-
|
|
999
|
-
```js
|
|
1000
|
-
const { getProps } = require('mnemonica');
|
|
1001
|
-
|
|
1002
|
-
const props = getProps(instance);
|
|
1003
|
-
// props.__type__, props.__args__, props.__parent__, props.__subtypes__, etc.
|
|
1004
|
-
```
|
|
1005
|
-
|
|
1006
|
-
### 3. Type Discovery
|
|
1007
|
-
|
|
1008
|
-
```js
|
|
1009
|
-
const { defaultTypes } = require('mnemonica');
|
|
1010
|
-
|
|
1011
|
-
// List all types in default collection
|
|
1012
|
-
const typeNames = [...defaultTypes.subtypes.keys()];
|
|
1013
|
-
|
|
1014
|
-
// List subtypes of a specific type
|
|
1015
|
-
const myType = defaultTypes.MyType;
|
|
1016
|
-
const subTypeNames = [...myType.subtypes.keys()];
|
|
1017
|
-
|
|
1018
|
-
// Check if a type exists
|
|
1019
|
-
const hasType = defaultTypes.lookup('MyType') !== undefined;
|
|
1020
|
-
```
|
|
1021
|
-
|
|
1022
|
-
### 4. Instance Traversal
|
|
1023
|
-
|
|
1024
|
-
```js
|
|
1025
|
-
const { getProps } = require('mnemonica');
|
|
1021
|
+
> **AI agent guidance.** Patterns for type introspection, safe property
|
|
1022
|
+
> access, type discovery, instance traversal, and safe construction live
|
|
1023
|
+
> in [AGENTS.md](AGENTS.md). They are not duplicated here.
|
|
1026
1024
|
|
|
1027
|
-
|
|
1028
|
-
function traverseChain(instance) {
|
|
1029
|
-
const chain = [];
|
|
1030
|
-
let current = instance;
|
|
1031
|
-
|
|
1032
|
-
while (current) {
|
|
1033
|
-
const props = getProps(current);
|
|
1034
|
-
if (!props) break;
|
|
1035
|
-
|
|
1036
|
-
chain.push({
|
|
1037
|
-
typeName: props.__type__.TypeName,
|
|
1038
|
-
timestamp: props.__timestamp__,
|
|
1039
|
-
args: props.__args__
|
|
1040
|
-
});
|
|
1041
|
-
|
|
1042
|
-
current = props.__parent__;
|
|
1043
|
-
}
|
|
1044
|
-
|
|
1045
|
-
return chain;
|
|
1046
|
-
}
|
|
1047
|
-
```
|
|
1048
|
-
|
|
1049
|
-
### 5. Safe Construction Patterns
|
|
1050
|
-
|
|
1051
|
-
```js
|
|
1052
|
-
const { lookup } = require('mnemonica');
|
|
1053
|
-
|
|
1054
|
-
// Always check if type exists before construction
|
|
1055
|
-
const MyType = lookup('MyType');
|
|
1056
|
-
if (MyType) {
|
|
1057
|
-
const instance = new MyType(data);
|
|
1058
|
-
}
|
|
1025
|
+
---
|
|
1059
1026
|
|
|
1060
|
-
|
|
1061
|
-
try {
|
|
1062
|
-
const subInstance = new instance.SubType(data);
|
|
1063
|
-
} catch (error) {
|
|
1064
|
-
// Handle WRONG_MODIFICATION_PATTERN if SubType not defined
|
|
1065
|
-
console.error('Subtype not available:', error.message);
|
|
1066
|
-
}
|
|
1067
|
-
```
|
|
1027
|
+
## Examples
|
|
1068
1028
|
|
|
1069
|
-
|
|
1029
|
+
Runnable scripts in [`examples/`](examples/) demonstrate edge cases and
|
|
1030
|
+
integration patterns. See [examples/README.md](examples/README.md). Quick
|
|
1031
|
+
runners are wired up in `package.json`:
|
|
1070
1032
|
|
|
1071
|
-
```
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
return {
|
|
1076
|
-
name: typeConstructor.TypeName,
|
|
1077
|
-
isSubType: typeConstructor.isSubType,
|
|
1078
|
-
subTypesCount: typeConstructor.subtypes?.size || 0,
|
|
1079
|
-
hasHooks: Object.keys(typeConstructor.hooks || {}).length > 0,
|
|
1080
|
-
config: typeConstructor.config
|
|
1081
|
-
};
|
|
1082
|
-
}
|
|
1033
|
+
```bash
|
|
1034
|
+
npm run example:async # async constructor edge case
|
|
1035
|
+
npm run example:rename # constructor renaming via Object.defineProperty
|
|
1036
|
+
npm run example:v8bug # documents a Node 22 .stack/.hasOwn divergence
|
|
1083
1037
|
```
|
|
1084
1038
|
|
|
1085
|
-
###
|
|
1039
|
+
### Working with Collections
|
|
1086
1040
|
|
|
1087
1041
|
```js
|
|
1088
1042
|
const { createTypesCollection, defaultTypes } = require('mnemonica');
|
|
@@ -1102,10 +1056,6 @@ testCollection.registerHook('preCreation', (data) => {
|
|
|
1102
1056
|
});
|
|
1103
1057
|
```
|
|
1104
1058
|
|
|
1105
|
-
---
|
|
1106
|
-
|
|
1107
|
-
## Examples
|
|
1108
|
-
|
|
1109
1059
|
### Asynchronous Constructors
|
|
1110
1060
|
|
|
1111
1061
|
```js
|
|
@@ -1169,22 +1119,51 @@ const merged = merge(instanceA, instanceB, 'args');
|
|
|
1169
1119
|
|
|
1170
1120
|
---
|
|
1171
1121
|
|
|
1172
|
-
##
|
|
1122
|
+
## Roadmap
|
|
1123
|
+
|
|
1124
|
+
Items below are designed but **not yet shipped**. They are documented here
|
|
1125
|
+
so consumers can avoid relying on them prematurely.
|
|
1126
|
+
|
|
1127
|
+
### Nested `lookupTyped()`
|
|
1128
|
+
|
|
1129
|
+
**Problem.** Global `lookupTyped('Parent.Child')` returns a constructor
|
|
1130
|
+
*without* the parent in the prototype chain — that breaks instance
|
|
1131
|
+
inheritance.
|
|
1132
|
+
|
|
1133
|
+
**Planned.** A type-safe `.lookupTyped()` method on constructors for
|
|
1134
|
+
relative lookups that preserve the chain:
|
|
1135
|
+
|
|
1136
|
+
```typescript
|
|
1137
|
+
const GraphNode2D = Scene2D.lookupTyped('GraphNode2D');
|
|
1138
|
+
const node = new GraphNode2D({ x: 10, y: 20 });
|
|
1139
|
+
// node has Scene2D in its prototype chain
|
|
1140
|
+
```
|
|
1141
|
+
|
|
1142
|
+
This requires a `NestedTypeRegistry` interface augmentation alongside
|
|
1143
|
+
`TypeRegistry` and is generated by [tactica](https://www.npmjs.com/package/typeomatica).
|
|
1173
1144
|
|
|
1174
|
-
|
|
1145
|
+
---
|
|
1146
|
+
|
|
1147
|
+
## Contributing
|
|
1175
1148
|
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
* and even `.parse` them using `mnemonica.utils.parse`
|
|
1149
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for branch model, commit style, and
|
|
1150
|
+
the local build/test loop. Repository conventions, code style, and agent
|
|
1151
|
+
rules live in [AGENTS.md](AGENTS.md). Release notes live in
|
|
1152
|
+
[CHANGELOG.md](CHANGELOG.md).
|
|
1181
1153
|
|
|
1182
|
-
|
|
1154
|
+
**Related reading:**
|
|
1155
|
+
- [Inheritance in JavaScript: Factory of Constructors with Prototype Chain](https://github.com/mythographica/stash/blob/master/inheritance.md)
|
|
1156
|
+
- [Architecture of Prototype Inheritance in JavaScript](https://dev.to/wentout/architecture-of-prototype-inheritance-in-javascript-ce6)
|
|
1157
|
+
- [Dead Simple type checker for JavaScript](https://dev.to/wentout/dead-simple-type-checker-for-javascript-4l40)
|
|
1183
1158
|
|
|
1184
1159
|
---
|
|
1185
1160
|
|
|
1186
1161
|
## License
|
|
1187
1162
|
|
|
1188
|
-
MIT
|
|
1163
|
+
MIT — Copyright (c) 2019 https://github.com/wentout
|
|
1189
1164
|
|
|
1190
|
-
|
|
1165
|
+
---
|
|
1166
|
+
|
|
1167
|
+
> *"O Great Mnemosyne! Please! Save us from Oblivion..."*
|
|
1168
|
+
>
|
|
1169
|
+
> — from the source, where memory persists
|
|
@@ -47,8 +47,12 @@ const throwModificationError = function (error) {
|
|
|
47
47
|
let isMnemonicaInstance = false;
|
|
48
48
|
while (errorProto) {
|
|
49
49
|
const testToProto = Reflect.getPrototypeOf(errorProto);
|
|
50
|
-
if (testToProto
|
|
51
|
-
|
|
50
|
+
if (testToProto === null) {
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
if (testToProto !== null &&
|
|
54
|
+
Object.hasOwnProperty.call(testToProto, 'constructor') &&
|
|
55
|
+
testToProto.constructor.name === MNEMONICA) {
|
|
52
56
|
isMnemonicaInstance = true;
|
|
53
57
|
break;
|
|
54
58
|
}
|
|
@@ -122,4 +126,4 @@ const throwModificationError = function (error) {
|
|
|
122
126
|
throw erroredInstance;
|
|
123
127
|
};
|
|
124
128
|
exports.throwModificationError = throwModificationError;
|
|
125
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dNb2RpZmljYXRpb25FcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvZXJyb3JzL3Rocm93TW9kaWZpY2F0aW9uRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFJYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLHlCQUE0QztBQUU1QyxvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLHdCQUF3QixFQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHVDQUFvQztBQUNwQyxNQUFNLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBQ1AsR0FBRyxhQUFLLENBQUM7QUFFVixzRUFBdUU7QUFjaEUsTUFBTSxzQkFBc0IsR0FBRyxVQUF5QyxLQUFxQjtJQUluRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQUUsRUFDTCxLQUFLLEVBQUUsU0FBUyxFQUNoQixFQUNELElBQUksRUFDSixHQUFHLElBQUksQ0FBQztJQU1ULE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO0lBRXZELElBQUssS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUcsQ0FBQztRQUUxQyxLQUFLLENBQUMsT0FBbUIsQ0FBQyxJQUFJLENBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBRSxDQUFDO1FBQ3hELEtBQUssQ0FBQyxPQUFtQixDQUFDLElBQUksQ0FBRSxLQUFLLENBQUUsQ0FBQztRQUV6QyxNQUFNLEtBQUssQ0FBQztJQUViLENBQUM7SUFFRCxHQUFHLENBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1FBQzlCLEdBQUc7WUFDRixPQUFPLGVBQWUsQ0FBQztRQUN4QixDQUFDO1FBQ0QsVUFBVSxFQUFHLElBQUk7S0FDakIsQ0FBRSxDQUFDO0lBRUosTUFBTSxPQUFPLEdBQVksQ0FBRSxlQUFlLENBQUUsQ0FBQztJQUU3QyxHQUFHLENBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtRQUN0QixHQUFHO1lBQ0YsT0FBTyxPQUFPLENBQUM7UUFDaEIsQ0FBQztRQUNELFVBQVUsRUFBRyxJQUFJO0tBQ2pCLENBQUUsQ0FBQztJQUNKLE1BQU0sT0FBTyxHQUFZLEVBQUUsQ0FBQztJQUM1QixHQUFHLENBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtRQUN0QixHQUFHO1lBQ0YsT0FBTyxPQUFPLENBQUM7UUFDaEIsQ0FBQztRQUNELFVBQVUsRUFBRyxJQUFJO0tBQ2pCLENBQUUsQ0FBQztJQUVKLElBQUksQ0FBQyxlQUFlLEdBQUcsd0JBQXdCLENBQUUsUUFBUSxDQUFFLENBQUM7SUFFNUQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUEsNkNBQXVCLEVBQUUsSUFBMEMsQ0FBbUQsQ0FBQztJQUdsSixNQUFNLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBRXZELElBQUksVUFBVSxHQUFrQixPQUFPLENBQUMsY0FBYyxDQUFFLGVBQWUsQ0FBRSxDQUFDO0lBQzFFLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ2hDLE9BQVEsVUFBVSxFQUFHLENBQUM7UUFDckIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBRSxVQUFVLENBQUUsQ0FBQztRQU96RCxJQUNDLFdBQVcsS0FBSyxJQUFJLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUztZQUNsRSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLEVBQ3JELENBQUM7WUFDRixtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDM0IsTUFBTTtRQUNQLENBQUM7UUFDRCxVQUFVLEdBQUcsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFHRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFFLFVBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFTcEUsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO0lBRTNCLElBQUssS0FBSyxZQUFZLG9CQUFvQixFQUFHLENBQUM7UUFFN0MsS0FBSyxDQUFDLElBQUksQ0FBRSxLQUFLLENBQUMsS0FBZSxDQUFFLENBQUM7SUFFckMsQ0FBQztTQUFNLENBQUM7UUFFUCxNQUFNLEtBQUssR0FBRyx1QkFBdUIsUUFBUSxlQUFlLENBQUM7UUFFN0QsV0FBUSxDQUFDLElBQUksQ0FBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSw4QkFBc0IsQ0FBRSxDQUFDO1FBRXBFLEtBQUssQ0FBQyxJQUFJLENBQUUsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFFLENBQUM7UUFFdkMsTUFBTSxVQUFVLEdBQUksS0FBSyxDQUFDLEtBQWlCLENBQUMsS0FBSyxDQUFFLElBQUksQ0FBRSxDQUFDO1FBRTFELEtBQUssQ0FBQyxJQUFJLENBQUUsa0NBQWtDLENBQUUsQ0FBQztRQUVqRCxVQUFVLENBQUMsT0FBTyxDQUFFLENBQUUsSUFBWSxFQUFHLEVBQUU7WUFDdEMsSUFBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUUsSUFBSSxDQUFFLEVBQUcsQ0FBQztnQkFDL0IsS0FBSyxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUUsQ0FBQztZQUNwQixDQUFDO1FBQ0YsQ0FBQyxDQUFFLENBQUM7UUFFSixLQUFLLENBQUMsSUFBSSxDQUFFLDRDQUE0QyxDQUFFLENBQUM7UUFDM0QsS0FBSyxDQUFDLElBQUksQ0FBRSxHQUFHLFNBQVMsQ0FBRSxDQUFDO0lBRTVCLENBQUM7SUFFRCxNQUFNLG9CQUFvQixHQUFHLElBQUEsZUFBWSxFQUFFLEtBQUssQ0FBRSxDQUFDLElBQUksQ0FBRSxJQUFJLENBQUUsQ0FBQztJQU9oRSxHQUFHLENBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRTtRQUM5QixHQUFHO1lBQ0YsT0FBTyxvQkFBb0IsQ0FBQztRQUM3QixDQUFDO0tBQ0QsQ0FBRSxDQUFDO0lBRUosSUFBSSxDQUFDLGlCQUFpQixHQUFHLGVBQWUsQ0FBQztJQUV6QyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1osSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBR3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEVBQ0wsSUFBSSxFQUNKLFVBQVUsR0FDVixHQUFHLE9BQU8sQ0FBQztZQUNaLElBQUssSUFBSSxDQUFDLEdBQUcsQ0FBRSxJQUFJLENBQUUsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFFLElBQUksQ0FBRSxFQUFHLENBQUM7Z0JBQ2xELE9BQU87WUFDUixDQUFDO1FBQ0YsQ0FBQztRQU1ELEdBQUcsQ0FBRSxlQUFlLEVBQUUsTUFBTSxFQUFFO1lBQzdCLEdBQUc7Z0JBQ0YsT0FBTyxJQUFJLENBQUM7WUFDYixDQUFDO1NBQ0QsQ0FBRSxDQUFDO1FBRUosR0FBRyxDQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUU7WUFDdEMsR0FBRztnQkFDRixPQUFPLEtBQUssQ0FBQztZQUNkLENBQUM7U0FDRCxDQUFFLENBQUM7UUFFSixHQUFHLENBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRTtZQUNqQyxHQUFHO2dCQUNGLE9BQU8sZUFBZSxDQUFDO1lBQ3hCLENBQUM7U0FDRCxDQUFFLENBQUM7UUFFSixHQUFHLENBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRTtZQUNoQyxHQUFHO2dCQUNGLE9BQU8sR0FBRyxFQUFFO29CQUNYLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDeEMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pCLENBQUMsQ0FBQztZQUNILENBQUM7U0FDRCxDQUFFLENBQUM7UUFFSixHQUFHLENBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRTtZQUM5QixHQUFHO2dCQUNGLE9BQU8sR0FBRyxFQUFFO29CQUNYLE9BQU8sS0FBSyxDQUFFLGVBQWUsQ0FBRSxDQUFDO2dCQUNqQyxDQUFDLENBQUM7WUFDSCxDQUFDO1NBQ0QsQ0FBRSxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sZUFBZSxDQUFDO0FBRXZCLENBQUMsQ0FBQztBQTdMVyxRQUFBLHNCQUFzQiwwQkE2TGpDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IE1uZW1vbmljYUVycm9yIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdE1ORU1PTklDQSxcbn0gPSBjb25zdGFudHM7XG5cblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRCQVNFX01ORU1PTklDQV9FUlJPUlxufSA9IEVycm9yc1R5cGVzO1xuXG5pbXBvcnQgeyBjbGVhbnVwU3RhY2ssIGdldFN0YWNrIH0gZnJvbSAnLi8nO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdG1ha2VFcnJvck1vZGlmaWNhdG9yVHlwZVxufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuY29uc3Qge1xuXHRwYXJzZSxcblx0cGFyZW50LFxuXHRleHRyYWN0XG59ID0gdXRpbHM7XG5cbmltcG9ydCB7IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvcic7XG5cbi8vIEluc3RhbmNlIGNyZWF0b3IgY29udGV4dCB0eXBlXG50eXBlIEluc3RhbmNlQ3JlYXRvckNvbnRleHQgPSB7XG5cdFR5cGVOYW1lOiBzdHJpbmc7XG5cdHR5cGU6IHsgc3RhY2s6IHN0cmluZyB9O1xuXHRhcmdzOiB1bmtub3duW107XG5cdE1vZGlmaWNhdG9yVHlwZTogQ2FsbGFibGVGdW5jdGlvbjtcblx0SW5zdGFuY2VNb2RpZmljYXRvcjogbmV3ICguLi5hcmdzOiB1bmtub3duW10pID0+IHsgc3RhY2s6IHN0cmluZ1tdIH07XG5cdGluaGVyaXRlZEluc3RhbmNlPzogdW5rbm93bjtcblx0aW52b2tlUG9zdEhvb2tzKCk6IHsgdHlwZTogU2V0PHVua25vd24+OyBjb2xsZWN0aW9uOiBTZXQ8dW5rbm93bj4gfTtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cbmV4cG9ydCBjb25zdCB0aHJvd01vZGlmaWNhdGlvbkVycm9yID0gZnVuY3Rpb24gKCB0aGlzOiBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LCBlcnJvcjogTW5lbW9uaWNhRXJyb3IgKSB7XG5cblx0Ly8gSW5zdGFuY2VDcmVhdG9yXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0Y29uc3Qge1xuXHRcdFR5cGVOYW1lLFxuXHRcdHR5cGU6IHtcblx0XHRcdHN0YWNrOiB0eXBlU3RhY2tcblx0XHR9LFxuXHRcdGFyZ3Ncblx0fSA9IHNlbGY7XG5cblx0Ly8gaWYgKCBlcnJvclsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gKSB7XG5cdC8vIFx0ZGVidWdnZXI7XG5cdC8vIH1cblxuXHRjb25zdCBleGNlcHRpb25SZWFzb24gPSBlcnJvci5leGNlcHRpb25SZWFzb24gfHwgZXJyb3I7XG5cblx0aWYgKCBlcnJvci5leGNlcHRpb25SZWFzb24gIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdChlcnJvci5yZWFzb25zIGFzIEVycm9yW10pLnB1c2goIGVycm9yLmV4Y2VwdGlvblJlYXNvbiApO1xuXHRcdChlcnJvci5zdXJwbHVzIGFzIEVycm9yW10pLnB1c2goIGVycm9yICk7XG5cblx0XHR0aHJvdyBlcnJvcjtcblxuXHR9XG5cblx0b2RwKCBlcnJvciwgJ2V4Y2VwdGlvblJlYXNvbicsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGV4Y2VwdGlvblJlYXNvbjtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gKTtcblxuXHRjb25zdCByZWFzb25zOiBFcnJvcltdID0gWyBleGNlcHRpb25SZWFzb24gXTtcblxuXHRvZHAoIGVycm9yLCAncmVhc29ucycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHJlYXNvbnM7XG5cdFx0fSxcblx0XHRlbnVtZXJhYmxlIDogdHJ1ZVxuXHR9ICk7XG5cdGNvbnN0IHN1cnBsdXM6IEVycm9yW10gPSBbXTtcblx0b2RwKCBlcnJvciwgJ3N1cnBsdXMnLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBzdXJwbHVzO1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSApO1xuXG5cdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlKCBUeXBlTmFtZSApO1xuXG5cdHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciA9IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yKCBzZWxmIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKSBhcyBJbnN0YW5jZUNyZWF0b3JDb250ZXh0WydJbnN0YW5jZU1vZGlmaWNhdG9yJ107XG5cblx0Ly8gbGV0IGVycm9yZWRJbnN0YW5jZSA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoKTtcblx0Y29uc3QgZXJyb3JlZEluc3RhbmNlID0gbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvcigpO1xuXG5cdGxldCBlcnJvclByb3RvOiBvYmplY3QgfCBudWxsID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZiggZXJyb3JlZEluc3RhbmNlICk7XG5cdGxldCBpc01uZW1vbmljYUluc3RhbmNlID0gZmFsc2U7XG5cdHdoaWxlICggZXJyb3JQcm90byApIHtcblx0XHRjb25zdCB0ZXN0VG9Qcm90byA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoIGVycm9yUHJvdG8gKTtcblx0XHQvLyBpZiAodGVzdFRvUHJvdG8gPT09IG51bGwpIHtcblx0XHQvLyBcdGJyZWFrO1xuXHRcdC8vIH1cblx0XHQvLyBpZiAodGVzdFRvUHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpIHtcblx0XHQvLyBcdGJyZWFrO1xuXHRcdC8vIH1cblx0XHRpZiAoXG5cdFx0XHR0ZXN0VG9Qcm90byAhPT0gbnVsbCAmJiB0ZXN0VG9Qcm90by5jb25zdHJ1Y3Rvci5uYW1lID09PSBNTkVNT05JQ0EgJiZcblx0XHRcdE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRlc3RUb1Byb3RvLCAnY29uc3RydWN0b3InKVxuXHRcdCkge1xuXHRcdFx0aXNNbmVtb25pY2FJbnN0YW5jZSA9IHRydWU7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cdFx0ZXJyb3JQcm90byA9IHRlc3RUb1Byb3RvO1xuXHR9XG5cblx0Ly8gUmVmbGVjdC5zZXRQcm90b3R5cGVPZiggZXJyb3JQcm90bywgZXJyb3IpO1xuXHRjb25zdCByZXN1bHQgPSBSZWZsZWN0LnNldFByb3RvdHlwZU9mKCBlcnJvclByb3RvIGFzIG9iamVjdCwgZXJyb3IpO1xuXHQvLyBsZXQgcmVzdWx0ID0gUmVmbGVjdC5zZXRQcm90b3R5cGVPZiggZXJyb3JQcm90bywgZXJyb3IpO1xuXHQvLyBpZiAocmVzdWx0ID09PSBmYWxzZSkge1xuXHQvLyBcdE9iamVjdC5zZXRQcm90b3R5cGVPZihlcnJvclByb3RvLCBlcnJvcik7XG5cdC8vIFx0Ly8gdW5yZWFjaGFibGVcblx0Ly8gXHRyZXN1bHQgPSB0cnVlO1xuXHQvLyB9XG5cdC8vIGNvbnNvbGUubG9nKHJlc3VsdCk7XG5cblx0Y29uc3Qgc3RhY2s6IHN0cmluZ1tdID0gW107XG5cblx0aWYgKCBlcnJvciBpbnN0YW5jZW9mIEJBU0VfTU5FTU9OSUNBX0VSUk9SICkge1xuXG5cdFx0c3RhY2sucHVzaCggZXJyb3Iuc3RhY2sgYXMgc3RyaW5nICk7XG5cblx0fSBlbHNlIHtcblxuXHRcdGNvbnN0IHRpdGxlID0gYFxcbjwtLSBjcmVhdGlvbiBvZiBbICR7VHlwZU5hbWV9IF0gdHJhY2VkIC0tPmA7XG5cblx0XHRnZXRTdGFjay5jYWxsKCBlcnJvcmVkSW5zdGFuY2UsIHRpdGxlLCBbXSwgdGhyb3dNb2RpZmljYXRpb25FcnJvciApO1xuXG5cdFx0c3RhY2sucHVzaCggLi4uZXJyb3JlZEluc3RhbmNlLnN0YWNrICk7XG5cblx0XHRjb25zdCBlcnJvclN0YWNrID0gKGVycm9yLnN0YWNrIGFzIHN0cmluZyApLnNwbGl0KCAnXFxuJyApO1xuXG5cdFx0c3RhY2sucHVzaCggJzwtLSB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3IgLS0+JyApO1xuXG5cdFx0ZXJyb3JTdGFjay5mb3JFYWNoKCAoIGxpbmU6IHN0cmluZyApID0+IHtcblx0XHRcdGlmICggIXN0YWNrLmluY2x1ZGVzKCBsaW5lICkgKSB7XG5cdFx0XHRcdHN0YWNrLnB1c2goIGxpbmUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRzdGFjay5wdXNoKCAnXFxuPC0tIG9mIGNvbnN0cnVjdG9yIGRlZmluaXRpb25zIHN0YWNrIC0tPicgKTtcblx0XHRzdGFjay5wdXNoKCAuLi50eXBlU3RhY2sgKTtcblxuXHR9XG5cblx0Y29uc3QgZXJyb3JlZEluc3RhbmNlU3RhY2sgPSBjbGVhbnVwU3RhY2soIHN0YWNrICkuam9pbiggJ1xcbicgKTtcblxuXHQvLyBzdGFydGluZyBmcm9tIE5vZGUuanMgdjIyIHdlIHNob3VsZCBkZWZpbmUgdGhpcyBwcm9wZXJ0eSB0aHJvdWdoIG9kcFxuXHQvLyB0aGF0IHdhcyB1bm5lY2Vzc2FyeSBmb3IgdjIwLCB0aG91Z2ggc2VlbXMgbmV3IHY4IG9wdGltaXplZCBjb21waWxlclxuXHQvLyBpcyBnYXRoZXJpbmcgdmFsdWUgZnJvbSBkZWVwIGNoYWluIGFuZCB3aGlsZSBjb21wYXJpbmcgaXQgd2l0aCBcblx0Ly8gYXNzaWdubWVudCBvcGVyYXRvciwgdGhlbiBpdCB3aWxsIG5vdCBjcmVhdGUgdGhpcyBwcm9wZXJ0eSBcblx0Ly8gc28gd2UgbmVlZCBkaXJlY3QgcHJvcGVydHkgZGVjbGFyYXRpb24gaGVyZSAuLi5cblx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdzdGFjaycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGVycm9yZWRJbnN0YW5jZVN0YWNrO1xuXHRcdH1cblx0fSApO1xuXG5cdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBlcnJvcmVkSW5zdGFuY2U7XG5cblx0aWYgKHJlc3VsdCkge1xuXHRcdGlmIChpc01uZW1vbmljYUluc3RhbmNlKSB7XG5cblx0XHRcdC8vIGlmIGhvb2tzIGhhZCBzb21lIGludGVyY2VwdGlvbjogc3RhcnRcblx0XHRcdGNvbnN0IHJlc3VsdHMgPSBzZWxmLmludm9rZVBvc3RIb29rcygpO1xuXHRcdFx0Y29uc3Qge1xuXHRcdFx0XHR0eXBlLFxuXHRcdFx0XHRjb2xsZWN0aW9uLFxuXHRcdFx0fSA9IHJlc3VsdHM7XG5cdFx0XHRpZiAoIHR5cGUuaGFzKCB0cnVlICkgfHwgY29sbGVjdGlvbi5oYXMoIHRydWUgKSApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIH1cblxuXHRcdC8vIGlmIGhvb2tzIGhhZCBzb21lIGludGVyY2VwdGlvbjogc3RvcFxuXG5cdFx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdhcmdzJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0b2RwKCBlcnJvcmVkSW5zdGFuY2UsICdvcmlnaW5hbEVycm9yJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGVycm9yO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnaW5zdGFuY2UnLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gZXJyb3JlZEluc3RhbmNlO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnZXh0cmFjdCcsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgX3BhcmVudCA9IHBhcmVudChlcnJvcmVkSW5zdGFuY2UpO1xuXHRcdFx0XHRcdHJldHVybiBleHRyYWN0KF9wYXJlbnQpO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAncGFyc2UnLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBwYXJzZSggZXJyb3JlZEluc3RhbmNlICk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9XG5cblx0dGhyb3cgZXJyb3JlZEluc3RhbmNlO1xuXG59O1xuIl19
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3dNb2RpZmljYXRpb25FcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvZXJyb3JzL3Rocm93TW9kaWZpY2F0aW9uRXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFJYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLHlCQUE0QztBQUU1QyxvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLHdCQUF3QixFQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHVDQUFvQztBQUNwQyxNQUFNLEVBQ0wsS0FBSyxFQUNMLE1BQU0sRUFDTixPQUFPLEVBQ1AsR0FBRyxhQUFLLENBQUM7QUFFVixzRUFBdUU7QUFjaEUsTUFBTSxzQkFBc0IsR0FBRyxVQUF5QyxLQUFxQjtJQUluRyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQUUsRUFDTCxLQUFLLEVBQUUsU0FBUyxFQUNoQixFQUNELElBQUksRUFDSixHQUFHLElBQUksQ0FBQztJQU1ULE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDO0lBRXZELElBQUssS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUcsQ0FBQztRQUUxQyxLQUFLLENBQUMsT0FBbUIsQ0FBQyxJQUFJLENBQUUsS0FBSyxDQUFDLGVBQWUsQ0FBRSxDQUFDO1FBQ3hELEtBQUssQ0FBQyxPQUFtQixDQUFDLElBQUksQ0FBRSxLQUFLLENBQUUsQ0FBQztRQUV6QyxNQUFNLEtBQUssQ0FBQztJQUViLENBQUM7SUFFRCxHQUFHLENBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO1FBQzlCLEdBQUc7WUFDRixPQUFP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LE9BQU8sRUFBRTtZQUM5QixHQUFHO2dCQUNGLE9BQU8sR0FBRyxFQUFFO29CQUNYLE9BQU8sS0FBSyxDQUFFLGVBQWUsQ0FBRSxDQUFDO2dCQUNqQyxDQUFDLENBQUM7WUFDSCxDQUFDO1NBQ0QsQ0FBRSxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sZUFBZSxDQUFDO0FBRXZCLENBQUMsQ0FBQztBQTlMVyxRQUFBLHNCQUFzQiwwQkE4TGpDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IE1uZW1vbmljYUVycm9yIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdE1ORU1PTklDQSxcbn0gPSBjb25zdGFudHM7XG5cblxuaW1wb3J0IHsgRXJyb3JzVHlwZXMgfSBmcm9tICcuLi8uLi9kZXNjcmlwdG9ycy9lcnJvcnMnO1xuY29uc3Qge1xuXHRCQVNFX01ORU1PTklDQV9FUlJPUlxufSA9IEVycm9yc1R5cGVzO1xuXG5pbXBvcnQgeyBjbGVhbnVwU3RhY2ssIGdldFN0YWNrIH0gZnJvbSAnLi8nO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdG1ha2VFcnJvck1vZGlmaWNhdG9yVHlwZVxufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuY29uc3Qge1xuXHRwYXJzZSxcblx0cGFyZW50LFxuXHRleHRyYWN0XG59ID0gdXRpbHM7XG5cbmltcG9ydCB7IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yIH0gZnJvbSAnLi4vdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvcic7XG5cbi8vIEluc3RhbmNlIGNyZWF0b3IgY29udGV4dCB0eXBlXG50eXBlIEluc3RhbmNlQ3JlYXRvckNvbnRleHQgPSB7XG5cdFR5cGVOYW1lOiBzdHJpbmc7XG5cdHR5cGU6IHsgc3RhY2s6IHN0cmluZyB9O1xuXHRhcmdzOiB1bmtub3duW107XG5cdE1vZGlmaWNhdG9yVHlwZTogQ2FsbGFibGVGdW5jdGlvbjtcblx0SW5zdGFuY2VNb2RpZmljYXRvcjogbmV3ICguLi5hcmdzOiB1bmtub3duW10pID0+IHsgc3RhY2s6IHN0cmluZ1tdIH07XG5cdGluaGVyaXRlZEluc3RhbmNlPzogdW5rbm93bjtcblx0aW52b2tlUG9zdEhvb2tzKCk6IHsgdHlwZTogU2V0PHVua25vd24+OyBjb2xsZWN0aW9uOiBTZXQ8dW5rbm93bj4gfTtcblx0W2tleTogc3RyaW5nXTogdW5rbm93bjtcbn07XG5cbmV4cG9ydCBjb25zdCB0aHJvd01vZGlmaWNhdGlvbkVycm9yID0gZnVuY3Rpb24gKCB0aGlzOiBJbnN0YW5jZUNyZWF0b3JDb250ZXh0LCBlcnJvcjogTW5lbW9uaWNhRXJyb3IgKSB7XG5cblx0Ly8gSW5zdGFuY2VDcmVhdG9yXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0Y29uc3Qge1xuXHRcdFR5cGVOYW1lLFxuXHRcdHR5cGU6IHtcblx0XHRcdHN0YWNrOiB0eXBlU3RhY2tcblx0XHR9LFxuXHRcdGFyZ3Ncblx0fSA9IHNlbGY7XG5cblx0Ly8gaWYgKCBlcnJvclsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gKSB7XG5cdC8vIFx0ZGVidWdnZXI7XG5cdC8vIH1cblxuXHRjb25zdCBleGNlcHRpb25SZWFzb24gPSBlcnJvci5leGNlcHRpb25SZWFzb24gfHwgZXJyb3I7XG5cblx0aWYgKCBlcnJvci5leGNlcHRpb25SZWFzb24gIT09IHVuZGVmaW5lZCApIHtcblxuXHRcdChlcnJvci5yZWFzb25zIGFzIEVycm9yW10pLnB1c2goIGVycm9yLmV4Y2VwdGlvblJlYXNvbiApO1xuXHRcdChlcnJvci5zdXJwbHVzIGFzIEVycm9yW10pLnB1c2goIGVycm9yICk7XG5cblx0XHR0aHJvdyBlcnJvcjtcblxuXHR9XG5cblx0b2RwKCBlcnJvciwgJ2V4Y2VwdGlvblJlYXNvbicsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIGV4Y2VwdGlvblJlYXNvbjtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gKTtcblxuXHRjb25zdCByZWFzb25zOiBFcnJvcltdID0gWyBleGNlcHRpb25SZWFzb24gXTtcblxuXHRvZHAoIGVycm9yLCAncmVhc29ucycsIHtcblx0XHRnZXQgKCkge1xuXHRcdFx0cmV0dXJuIHJlYXNvbnM7XG5cdFx0fSxcblx0XHRlbnVtZXJhYmxlIDogdHJ1ZVxuXHR9ICk7XG5cdGNvbnN0IHN1cnBsdXM6IEVycm9yW10gPSBbXTtcblx0b2RwKCBlcnJvciwgJ3N1cnBsdXMnLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBzdXJwbHVzO1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSApO1xuXG5cdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlKCBUeXBlTmFtZSApO1xuXG5cdHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciA9IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yKCBzZWxmIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gKSBhcyBJbnN0YW5jZUNyZWF0b3JDb250ZXh0WydJbnN0YW5jZU1vZGlmaWNhdG9yJ107XG5cblx0Ly8gbGV0IGVycm9yZWRJbnN0YW5jZSA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoKTtcblx0Y29uc3QgZXJyb3JlZEluc3RhbmNlID0gbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvcigpO1xuXG5cdGxldCBlcnJvclByb3RvOiBvYmplY3QgfCBudWxsID0gUmVmbGVjdC5nZXRQcm90b3R5cGVPZiggZXJyb3JlZEluc3RhbmNlICk7XG5cdGxldCBpc01uZW1vbmljYUluc3RhbmNlID0gZmFsc2U7XG5cdHdoaWxlICggZXJyb3JQcm90byApIHtcblx0XHRjb25zdCB0ZXN0VG9Qcm90byA9IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YoIGVycm9yUHJvdG8gKTtcblx0XHRpZiAodGVzdFRvUHJvdG8gPT09IG51bGwpIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHQvLyBpZiAodGVzdFRvUHJvdG8gPT09IE9iamVjdC5wcm90b3R5cGUpIHtcblx0XHQvLyBcdGJyZWFrO1xuXHRcdC8vIH1cblx0XHRpZiAoXG5cdFx0XHR0ZXN0VG9Qcm90byAhPT0gbnVsbCAmJlxuXHRcdFx0T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodGVzdFRvUHJvdG8sICdjb25zdHJ1Y3RvcicpICYmXG5cdFx0XHR0ZXN0VG9Qcm90by5jb25zdHJ1Y3Rvci5uYW1lID09PSBNTkVNT05JQ0Fcblx0XHQpIHtcblx0XHRcdGlzTW5lbW9uaWNhSW5zdGFuY2UgPSB0cnVlO1xuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGVycm9yUHJvdG8gPSB0ZXN0VG9Qcm90bztcblx0fVxuXG5cdC8vIFJlZmxlY3Quc2V0UHJvdG90eXBlT2YoIGVycm9yUHJvdG8sIGVycm9yKTtcblx0Y29uc3QgcmVzdWx0ID0gUmVmbGVjdC5zZXRQcm90b3R5cGVPZiggZXJyb3JQcm90byBhcyBvYmplY3QsIGVycm9yKTtcblx0Ly8gbGV0IHJlc3VsdCA9IFJlZmxlY3Quc2V0UHJvdG90eXBlT2YoIGVycm9yUHJvdG8sIGVycm9yKTtcblx0Ly8gaWYgKHJlc3VsdCA9PT0gZmFsc2UpIHtcblx0Ly8gXHRPYmplY3Quc2V0UHJvdG90eXBlT2YoZXJyb3JQcm90bywgZXJyb3IpO1xuXHQvLyBcdC8vIHVucmVhY2hhYmxlXG5cdC8vIFx0cmVzdWx0ID0gdHJ1ZTtcblx0Ly8gfVxuXHQvLyBjb25zb2xlLmxvZyhyZXN1bHQpO1xuXG5cdGNvbnN0IHN0YWNrOiBzdHJpbmdbXSA9IFtdO1xuXG5cdGlmICggZXJyb3IgaW5zdGFuY2VvZiBCQVNFX01ORU1PTklDQV9FUlJPUiApIHtcblxuXHRcdHN0YWNrLnB1c2goIGVycm9yLnN0YWNrIGFzIHN0cmluZyApO1xuXG5cdH0gZWxzZSB7XG5cblx0XHRjb25zdCB0aXRsZSA9IGBcXG48LS0gY3JlYXRpb24gb2YgWyAke1R5cGVOYW1lfSBdIHRyYWNlZCAtLT5gO1xuXG5cdFx0Z2V0U3RhY2suY2FsbCggZXJyb3JlZEluc3RhbmNlLCB0aXRsZSwgW10sIHRocm93TW9kaWZpY2F0aW9uRXJyb3IgKTtcblxuXHRcdHN0YWNrLnB1c2goIC4uLmVycm9yZWRJbnN0YW5jZS5zdGFjayApO1xuXG5cdFx0Y29uc3QgZXJyb3JTdGFjayA9IChlcnJvci5zdGFjayBhcyBzdHJpbmcgKS5zcGxpdCggJ1xcbicgKTtcblxuXHRcdHN0YWNrLnB1c2goICc8LS0gd2l0aCB0aGUgZm9sbG93aW5nIGVycm9yIC0tPicgKTtcblxuXHRcdGVycm9yU3RhY2suZm9yRWFjaCggKCBsaW5lOiBzdHJpbmcgKSA9PiB7XG5cdFx0XHRpZiAoICFzdGFjay5pbmNsdWRlcyggbGluZSApICkge1xuXHRcdFx0XHRzdGFjay5wdXNoKCBsaW5lICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0c3RhY2sucHVzaCggJ1xcbjwtLSBvZiBjb25zdHJ1Y3RvciBkZWZpbml0aW9ucyBzdGFjayAtLT4nICk7XG5cdFx0c3RhY2sucHVzaCggLi4udHlwZVN0YWNrICk7XG5cblx0fVxuXG5cdGNvbnN0IGVycm9yZWRJbnN0YW5jZVN0YWNrID0gY2xlYW51cFN0YWNrKCBzdGFjayApLmpvaW4oICdcXG4nICk7XG5cblx0Ly8gc3RhcnRpbmcgZnJvbSBOb2RlLmpzIHYyMiB3ZSBzaG91bGQgZGVmaW5lIHRoaXMgcHJvcGVydHkgdGhyb3VnaCBvZHBcblx0Ly8gdGhhdCB3YXMgdW5uZWNlc3NhcnkgZm9yIHYyMCwgdGhvdWdoIHNlZW1zIG5ldyB2OCBvcHRpbWl6ZWQgY29tcGlsZXJcblx0Ly8gaXMgZ2F0aGVyaW5nIHZhbHVlIGZyb20gZGVlcCBjaGFpbiBhbmQgd2hpbGUgY29tcGFyaW5nIGl0IHdpdGggXG5cdC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZW4gaXQgd2lsbCBub3QgY3JlYXRlIHRoaXMgcHJvcGVydHkgXG5cdC8vIHNvIHdlIG5lZWQgZGlyZWN0IHByb3BlcnR5IGRlY2xhcmF0aW9uIGhlcmUgLi4uXG5cdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnc3RhY2snLCB7XG5cdFx0Z2V0ICgpIHtcblx0XHRcdHJldHVybiBlcnJvcmVkSW5zdGFuY2VTdGFjaztcblx0XHR9XG5cdH0gKTtcblxuXHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gZXJyb3JlZEluc3RhbmNlO1xuXG5cdGlmIChyZXN1bHQpIHtcblx0XHRpZiAoaXNNbmVtb25pY2FJbnN0YW5jZSkge1xuXG5cdFx0XHQvLyBpZiBob29rcyBoYWQgc29tZSBpbnRlcmNlcHRpb246IHN0YXJ0XG5cdFx0XHRjb25zdCByZXN1bHRzID0gc2VsZi5pbnZva2VQb3N0SG9va3MoKTtcblx0XHRcdGNvbnN0IHtcblx0XHRcdFx0dHlwZSxcblx0XHRcdFx0Y29sbGVjdGlvbixcblx0XHRcdH0gPSByZXN1bHRzO1xuXHRcdFx0aWYgKCB0eXBlLmhhcyggdHJ1ZSApIHx8IGNvbGxlY3Rpb24uaGFzKCB0cnVlICkgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyB9XG5cblx0XHQvLyBpZiBob29rcyBoYWQgc29tZSBpbnRlcmNlcHRpb246IHN0b3BcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnYXJncycsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBhcmdzO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdG9kcCggZXJyb3JlZEluc3RhbmNlLCAnb3JpZ2luYWxFcnJvcicsIHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBlcnJvcjtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRvZHAoIGVycm9yZWRJbnN0YW5jZSwgJ2luc3RhbmNlJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGVycm9yZWRJbnN0YW5jZTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRvZHAoIGVycm9yZWRJbnN0YW5jZSwgJ2V4dHJhY3QnLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IF9wYXJlbnQgPSBwYXJlbnQoZXJyb3JlZEluc3RhbmNlKTtcblx0XHRcdFx0XHRyZXR1cm4gZXh0cmFjdChfcGFyZW50KTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9ICk7XG5cblx0XHRvZHAoIGVycm9yZWRJbnN0YW5jZSwgJ3BhcnNlJywge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gcGFyc2UoIGVycm9yZWRJbnN0YW5jZSApO1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0gKTtcblx0fVxuXG5cdHRocm93IGVycm9yZWRJbnN0YW5jZTtcblxufTtcbiJdfQ==
|
|
@@ -2,16 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.registerFlowChecker = exports.flowCheckers = void 0;
|
|
4
4
|
const errors_1 = require("../../descriptors/errors");
|
|
5
|
-
const { MISSING_CALLBACK_ARGUMENT,
|
|
5
|
+
const { MISSING_CALLBACK_ARGUMENT, } = errors_1.ErrorsTypes;
|
|
6
6
|
exports.flowCheckers = new WeakMap();
|
|
7
7
|
const registerFlowChecker = function (cb) {
|
|
8
8
|
if (typeof cb !== 'function') {
|
|
9
9
|
throw new MISSING_CALLBACK_ARGUMENT;
|
|
10
10
|
}
|
|
11
|
-
if (exports.flowCheckers.has(this)) {
|
|
12
|
-
throw new FLOW_CHECKER_REDEFINITION;
|
|
13
|
-
}
|
|
14
11
|
exports.flowCheckers.set(this, cb);
|
|
15
12
|
};
|
|
16
13
|
exports.registerFlowChecker = registerFlowChecker;
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd0NoZWNrZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9ob29rcy9mbG93Q2hlY2tlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixxREFBdUQ7QUFDdkQsTUFBTSxFQUNMLHlCQUF5QixHQUV6QixHQUFHLG9CQUFXLENBQUM7QUFFSCxRQUFBLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ25DLE1BQU0sbUJBQW1CLEdBQUcsVUFBcUIsRUFBaUI7SUFFeEUsSUFBSyxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQUcsQ0FBQztRQUNoQyxNQUFNLElBQUkseUJBQXlCLENBQUM7SUFDckMsQ0FBQztJQU1ELG9CQUFZLENBQUMsR0FBRyxDQUFFLElBQUksRUFBRSxFQUFFLENBQUUsQ0FBQztBQUU5QixDQUFDLENBQUM7QUFaVyxRQUFBLG1CQUFtQix1QkFZOUIiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHtcblx0TUlTU0lOR19DQUxMQkFDS19BUkdVTUVOVCxcblx0Ly8gRkxPV19DSEVDS0VSX1JFREVGSU5JVElPTixcbn0gPSBFcnJvcnNUeXBlcztcblxuZXhwb3J0IGNvbnN0IGZsb3dDaGVja2VycyA9IG5ldyBXZWFrTWFwKCk7XG5leHBvcnQgY29uc3QgcmVnaXN0ZXJGbG93Q2hlY2tlciA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIGNiOiAoKSA9PiB1bmtub3duICkge1xuXG5cdGlmICggdHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nICkge1xuXHRcdHRocm93IG5ldyBNSVNTSU5HX0NBTExCQUNLX0FSR1VNRU5UO1xuXHR9XG5cblx0Ly8gaWYgKCBmbG93Q2hlY2tlcnMuaGFzKCB0aGlzICkgKSB7XG5cdC8vIFx0dGhyb3cgbmV3IEZMT1dfQ0hFQ0tFUl9SRURFRklOSVRJT047XG5cdC8vIH1cblxuXHRmbG93Q2hlY2tlcnMuc2V0KCB0aGlzLCBjYiApO1xuXG59O1xuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _Internal_TC_ } from '../../types';
|
|
2
2
|
export interface ThenSpec {
|
|
3
3
|
subtype: object;
|
|
4
4
|
args: unknown[];
|
|
@@ -32,5 +32,5 @@ declare const InstanceCreatorPrototype: {
|
|
|
32
32
|
};
|
|
33
33
|
}, error: import("../../types").MnemonicaError) => void;
|
|
34
34
|
};
|
|
35
|
-
export declare const InstanceCreator:
|
|
35
|
+
export declare const InstanceCreator: _Internal_TC_<typeof InstanceCreatorPrototype>;
|
|
36
36
|
export {};
|
|
@@ -11,6 +11,7 @@ const errors_2 = require("../errors");
|
|
|
11
11
|
const throwModificationError_1 = require("../errors/throwModificationError");
|
|
12
12
|
const Props_1 = require("./Props");
|
|
13
13
|
const InstanceModificator_1 = require("./InstanceModificator");
|
|
14
|
+
const parent_1 = require("../../utils/parent");
|
|
14
15
|
const invokePreHooks = function () {
|
|
15
16
|
const { type, existentInstance, args, InstanceModificator } = this;
|
|
16
17
|
const { collection, } = type;
|
|
@@ -63,8 +64,12 @@ const postProcessing = function (continuationOf) {
|
|
|
63
64
|
if (self.inheritedInstance instanceof Error && !blockErrors) {
|
|
64
65
|
return;
|
|
65
66
|
}
|
|
66
|
-
const
|
|
67
|
-
|
|
67
|
+
const prev = (0, parent_1.parent)(self.inheritedInstance);
|
|
68
|
+
if (!prev || (prev && !prev.constructor)) {
|
|
69
|
+
const msg = 'should inherit from some instance';
|
|
70
|
+
self.throwModificationError(new WRONG_MODIFICATION_PATTERN(msg, stack));
|
|
71
|
+
}
|
|
72
|
+
const parentName = prev.constructor.name;
|
|
68
73
|
const parentTypeName = self.type.parentType.TypeName;
|
|
69
74
|
if (parentName !== parentTypeName) {
|
|
70
75
|
const msg = `should inherit from ${parentTypeName} but made on ${parentName}`;
|
|
@@ -204,4 +209,4 @@ exports.InstanceCreator = function (type, existentInstance, args, chained) {
|
|
|
204
209
|
return self.inheritedInstance;
|
|
205
210
|
};
|
|
206
211
|
Object.assign(exports.InstanceCreator.prototype, InstanceCreatorPrototype);
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VDcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFJYiwrQ0FFeUI7QUFFekIsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsR0FBRyxxQkFBUyxDQUFDO0FBRWQscURBQXVEO0FBQ3ZELE1BQU0sRUFDTCwwQkFBMEIsR0FDMUIsR0FBRyxvQkFBVyxDQUFDO0FBRWhCLG9DQUFrQztBQUNsQyxNQUFNLEVBQ0wscUJBQXFCLEVBQ3JCLHdCQUF3QixHQUN4QixHQUFHLGVBQVUsQ0FBQztBQUVmLHNDQUFxQztBQUNyQyw2RUFBMEU7QUFFMUUsbUNBQXFEO0FBRXJELCtEQUFnRTtBQUVoRSxNQUFNLGNBQWMsR0FBRztJQUV0QixNQUFNLEVBQ0wsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxFQUNMLFVBQVUsR0FDVixHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sUUFBUSxHQUFHO1FBQ2hCLElBQUk7UUFDSixnQkFBZ0I7UUFDaEIsSUFBSTtRQUNKLG1CQUFtQjtLQUNuQixDQUFDO0lBRUYsVUFBVSxDQUFDLFVBQVUsQ0FBRSxhQUFhLEVBQUUsUUFBUSxDQUFFLENBQUM7SUFFakQsSUFBSSxDQUFDLFVBQVUsQ0FBRSxhQUFhLEVBQUUsUUFBUSxDQUFFLENBQUM7QUFFNUMsQ0FBQyxDQUFDO0FBSUYsTUFBTSxlQUFlLEdBQUc7SUFHdkIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLE1BQU0sRUFDTCxpQkFBaUIsR0FDakIsR0FBRyxPQUFPLENBQUM7SUFFWixNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFTLEVBQUMsaUJBQWlCLENBQVUsQ0FBQztJQUVwRCxNQUFNLEVBQ0wsUUFBUSxF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aUJBQWlCLEdBQUcsTUFBTSxDQUFDO0lBRWpDLENBQUM7SUFHRCxJQUFLLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxPQUFPLEVBQUcsQ0FBQztRQUVqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBRSxDQUFDO1FBRXhDLEdBQUcsQ0FBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUU7WUFDbkMsR0FBRztnQkFDRixPQUFPLFFBQVEsQ0FBQztZQUNqQixDQUFDO1NBQ0QsQ0FBRSxDQUFDO1FBRUosT0FBTyxNQUFNLENBQUM7SUFFZixDQUFDO0lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBRSxJQUFJLENBQUUsQ0FBQztJQUU1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztBQUUvQixDQUF5RCxDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLENBQUUsdUJBQWUsQ0FBQyxTQUFTLEVBQUUsd0JBQXdCLENBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiAgXG4ndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IENvbnN0cnVjdG9yRnVuY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7XG5cdGNvbnN0YW50c1xufSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5jb25zdCB7XG5cdG9kcCxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lXG59ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgeyBFcnJvcnNUeXBlcyB9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2Vycm9ycyc7XG5jb25zdCB7XG5cdFdST05HX01PRElGSUNBVElPTl9QQVRURVJOLFxufSA9IEVycm9yc1R5cGVzO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuLi91dGlscyc7XG5jb25zdCB7XG5cdGdldEV4aXN0ZW50QXN5bmNTdGFjayxcblx0bWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlLFxufSA9IFR5cGVzVXRpbHM7XG5cbmltcG9ydCB7IGdldFN0YWNrIH0gZnJvbSAnLi4vZXJyb3JzJztcbmltcG9ydCB7IHRocm93TW9kaWZpY2F0aW9uRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMvdGhyb3dNb2RpZmljYXRpb25FcnJvcic7XG5cbmltcG9ydCB7IF9nZXRQcm9wcywgX3NldFNlbGYsIFByb3BzIH0gZnJvbSAnLi9Qcm9wcyc7XG5cbmltcG9ydCB7IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yIH0gZnJvbSAnLi9JbnN0YW5jZU1vZGlmaWNhdG9yJztcbiAgXG5jb25zdCBpbnZva2VQcmVIb29rcyA9IGZ1bmN0aW9uICggdGhpczogYW55ICkge1xuXG5cdGNvbnN0IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRJbnN0YW5jZU1vZGlmaWNhdG9yXG5cdH0gPSB0aGlzO1xuXG5cdGNvbnN0IHtcblx0XHRjb2xsZWN0aW9uLFxuXHR9ID0gdHlwZTtcblxuXHRjb25zdCBob29rRGF0YSA9IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRJbnN0YW5jZU1vZGlmaWNhdG9yXG5cdH07XG5cblx0Y29sbGVjdGlvbi5pbnZva2VIb29rKCAncHJlQ3JlYXRpb24nLCBob29rRGF0YSApO1xuXG5cdHR5cGUuaW52b2tlSG9vayggJ3ByZUNyZWF0aW9uJywgaG9va0RhdGEgKTtcblxufTtcblxuXG4gIFxuY29uc3QgaW52b2tlUG9zdEhvb2tzID0gZnVuY3Rpb24gKCB0aGlzOiBhbnkgKSB7XG5cblx0IFxuXHRjb25zdCBjcmVhdG9yID0gdGhpcztcblx0Y29uc3Qge1xuXHRcdGluaGVyaXRlZEluc3RhbmNlLFxuXHR9ID0gY3JlYXRvcjtcblxuXHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhpbmhlcml0ZWRJbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0Y29uc3Qge1xuXHRcdF9fdHlwZV9fOiB0eXBlLFxuXHRcdF9fcGFyZW50X186IGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0X19hcmdzX186IGFyZ3MsXG5cdH0gPSBwcm9wcztcblxuXHRjb25zdCB7XG5cdFx0Y29sbGVjdGlvbixcblx0fSA9IHR5cGU7XG5cblx0Y29uc3QgaG9va1R5cGUgPSBpbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yID9cblx0XHQnY3JlYXRpb25FcnJvcicgOiAncG9zdENyZWF0aW9uJztcblxuXHRjb25zdCBob29rRGF0YSA9IHtcblx0XHR0eXBlLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdFx0YXJncyxcblx0XHRjcmVhdG9yXG5cdH07XG5cblx0cmV0dXJuIHtcblxuXHRcdHR5cGUgOiB0eXBlLmludm9rZUhvb2soIGhvb2tUeXBlLCBob29rRGF0YSApLFxuXG5cdFx0Y29sbGVjdGlvbiA6IGNvbGxlY3Rpb24uaW52b2tlSG9vayggaG9va1R5cGUsIGhvb2tEYXRhICksXG5cblx0fTtcblxufTtcblxuXG4gIFxuY29uc3QgcG9zdFByb2Nlc3NpbmcgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgY29udGludWF0aW9uT2Y6IGFueSApIHtcblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblx0Y29uc3Qge1xuXHRcdHN0YWNrLFxuXHRcdHR5cGU6IHtcblx0XHRcdGlzU3ViVHlwZSxcblx0XHRcdGNvbmZpZzoge1xuXHRcdFx0XHRzdHJpY3RDaGFpbixcblx0XHRcdFx0YmxvY2tFcnJvcnNcblx0XHRcdH1cblx0XHR9XG5cdH0gPSBzZWxmO1xuXG5cdGlmICggIXNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuY29uc3RydWN0b3IgKSB7XG5cdFx0Y29uc3QgbXNnID0gJ3Nob3VsZCBpbmhlcml0IGZyb20gbW5lbW9uaWNhIGluc3RhbmNlJztcblx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzdGFjayApICk7XG5cdH1cblxuXHRpZiAoICFzZWxmLmluaGVyaXRlZEluc3RhbmNlLmNvbnN0cnVjdG9yWyBTeW1ib2xDb25zdHJ1Y3Rvck5hbWUgXSApIHtcblx0XHRjb25zdCBtc2cgPSAnc2hvdWxkIGluaGVyaXQgZnJvbSBtbmVtb25pY2EgaW5zdGFuY2UnO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0fVxuXG5cdGlmICggY29udGludWF0aW9uT2YgJiYgISggc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIGNvbnRpbnVhdGlvbk9mICkgKSB7XG5cdFx0Ly8gZGVidWdnZXI7XG5cdFx0Y29uc3QgaWNuID0gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7Y29udGludWF0aW9uT2YuVHlwZU5hbWV9IGJ1dCBnb3QgJHtpY259YDtcblx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzdGFjayApICk7XG5cdFx0Ly8gdGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKG1zZywgc2VsZi5zdGFjayk7XG5cdH1cblxuXHRpZiAoaXNTdWJUeXBlICYmIHN0cmljdENoYWluKSB7XG5cdFx0XG5cdFx0aWYgKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgaW5zdGFuY2VvZiBFcnJvciAmJiAhYmxvY2tFcnJvcnMpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBwYXJlbnQgPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlLnBhcmVudCgpO1xuXHRcdGNvbnN0IHBhcmVudE5hbWUgPSBwYXJlbnQuY29uc3RydWN0b3IubmFtZTtcblx0XHRjb25zdCBwYXJlbnRUeXBlTmFtZSA9IHNlbGYudHlwZS5wYXJlbnRUeXBlLlR5cGVOYW1lO1xuXHRcdGlmIChwYXJlbnROYW1lICE9PSBwYXJlbnRUeXBlTmFtZSkge1xuXHRcdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHtwYXJlbnRUeXBlTmFtZX0gYnV0IG1hZGUgb24gJHtwYXJlbnROYW1lfWA7XG5cdFx0XHRzZWxmLnRocm93TW9kaWZpY2F0aW9uRXJyb3IoIG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzdGFjayApICk7XG5cdFx0fVxuXG5cdH1cblxuXHRfc2V0U2VsZihzZWxmLmluaGVyaXRlZEluc3RhbmNlKTtcblxuXHRzZWxmLmludm9rZVBvc3RIb29rcygpO1xuXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZW5TcGVjIHtcblx0c3VidHlwZTogb2JqZWN0O1xuXHRhcmdzOiB1bmtub3duW107XG5cdG5hbWU/OiBzdHJpbmc7XG59XG5cbiAgXG5jb25zdCBhZGRUaGVuID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHRoZW46IFRoZW5TcGVjICkge1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2Vcblx0XHQudGhlbiggKCkgPT4ge1xuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9XG5cdFx0XHRcdG5ldyBJbnN0YW5jZUNyZWF0b3IoXG5cdFx0XHRcdFx0dGhlbi5zdWJ0eXBlLFxuXHRcdFx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UsXG5cdFx0XHRcdFx0dGhlbi5hcmdzLFxuXHRcdFx0XHRcdC8vIHdhcyBjaGFpbmVkIDpcblx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0Ly8gc2VsZi5leGlzdGVudEluc3RhbmNlXG5cdFx0XHRcdCkgYXMgdW5rbm93biBhcyBQcm9taXNlPHVua25vd24+O1xuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cdFx0fSApO1xuXG59O1xuXG5jb25zdCBtYWtlQXdhaXRlciA9IGZ1bmN0aW9uICggdGhpczogYW55LCB0eXBlOiBhbnksIHRoZW4/OiBUaGVuU3BlYyApIHtcblxuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlXG5cdFx0LnRoZW4oICggaW5zdGFuY2U6IHVua25vd24gKSA9PiB7XG5cblx0XHRcdGlmICggdHlwZW9mIGluc3RhbmNlICE9PSAnb2JqZWN0JyApIHtcblx0XHRcdFx0aWYgKCBzZWxmLmNvbmZpZy5hd2FpdFJldHVybiApIHtcblx0XHRcdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3R5cGUuVHlwZU5hbWV9OiBzZWVtcyBhc3luYyAke3R5cGUuVHlwZU5hbWV9IGhhcyBubyByZXR1cm4gc3RhdGVtZW50YDtcblx0XHRcdFx0XHR0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc2VsZi5zdGFjayApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBpbnN0YW5jZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoICEoIGluc3RhbmNlIGluc3RhbmNlb2Ygc2VsZi50eXBlICkgKSB7XG5cdFx0XHRcdCBcblx0XHRcdFx0Y29uc3QgaWNuID0gKGluc3RhbmNlIGFzIGFueSkuY29uc3RydWN0b3IubmFtZTtcblx0XHRcdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHt0eXBlLlR5cGVOYW1lfSBidXQgZ290ICR7aWNufWA7XG5cdFx0XHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzZWxmLnN0YWNrICk7XG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuXHRcdFx0Y29uc3QgcHJvcHMgPSBfZ2V0UHJvcHMoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSkgYXMgUHJvcHM7XG5cblx0XHRcdCBcblx0XHRcdGlmICggcHJvcHMuX19zZWxmX18gIT09IChzZWxmLmluaGVyaXRlZEluc3RhbmNlIGFzIHVua25vd24pICkge1xuXHRcdFx0XHRzZWxmLnBvc3RQcm9jZXNzaW5nKCB0eXBlICk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG5cdFx0fSApXG5cdFx0LmNhdGNoKCAoIGVycm9yOiBFcnJvciApID0+IHtcblx0XHRcdGlmICggc2VsZi5jb25maWcuYmxvY2tFcnJvcnMgKSB7XG5cdFx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggZXJyb3IgKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRocm93IGVycm9yO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRpZiAoIHRoZW4gKSB7XG5cdFx0c2VsZi5hZGRUaGVuKCB0aGVuICk7XG5cdH1cblxuXHR0eXBlLnN1YnR5cGVzLmZvckVhY2goICggc3VidHlwZTogb2JqZWN0LCBuYW1lOiBzdHJpbmcgKSA9PiB7XG5cdFx0IFxuXHRcdChzZWxmLmluaGVyaXRlZEluc3RhbmNlIGFzIGFueSlbIG5hbWUgXSA9ICggLi4uYXJnczogdW5rbm93bltdICkgPT4ge1xuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYubWFrZUF3YWl0ZXIoIHN1YnR5cGUsIHtcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0c3VidHlwZSxcblx0XHRcdFx0YXJncyxcblx0XHRcdH0gKTtcblx0XHRcdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXHRcdH07XG5cdH0gKTtcblxuXHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblxufTtcblxuY29uc3QgSW5zdGFuY2VDcmVhdG9yUHJvdG90eXBlID0ge1xuXHRnZXRFeGlzdGVudEFzeW5jU3RhY2ssXG5cdHBvc3RQcm9jZXNzaW5nLFxuXHRtYWtlQXdhaXRlcixcblx0YWRkVGhlbixcblx0aW52b2tlUHJlSG9va3MsXG5cdGludm9rZVBvc3RIb29rcyxcblx0dGhyb3dNb2RpZmljYXRpb25FcnJvclxufTtcblxuICBcbmV4cG9ydCBjb25zdCBJbnN0YW5jZUNyZWF0b3IgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgdHlwZTogYW55LCBleGlzdGVudEluc3RhbmNlOiB1bmtub3duLCBhcmdzOiB1bmtub3duW10sIGNoYWluZWQ6IGJvb2xlYW4gKSB7XG5cblx0Y29uc3Qge1xuXHRcdGNvbnN0cnVjdEhhbmRsZXIsXG5cdFx0cHJvdG8sXG5cdFx0Y29uZmlnLFxuXHRcdFR5cGVOYW1lXG5cdH0gPSB0eXBlO1xuXG5cdGNvbnN0IHtcblx0XHRNb2RpZmljYXRpb25Db25zdHJ1Y3Rvcixcblx0XHRibG9ja0Vycm9ycyxcblx0XHRzdWJtaXRTdGFja1xuXHR9ID0gY29uZmlnO1xuXG5cdCBcblx0Y29uc3QgbWMgPSBNb2RpZmljYXRpb25Db25zdHJ1Y3RvcigpO1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0Y29uc3QgTW9kaWZpY2F0b3JUeXBlID0gY29uc3RydWN0SGFuZGxlcigpO1xuXG5cdE9iamVjdC5hc3NpZ24oIHNlbGYsIHtcblxuXHRcdHR5cGUsXG5cdFx0VHlwZU5hbWUsXG5cblx0XHRleGlzdGVudEluc3RhbmNlLFxuXG5cdFx0Z2V0IGFyZ3MgKCkge1xuXHRcdFx0cmV0dXJuIGFyZ3M7XG5cdFx0fSxcblxuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yIDogbWMsXG5cdFx0TW9kaWZpY2F0b3JUeXBlLFxuXG5cdFx0Y29uZmlnLFxuXG5cdFx0cHJvdG9cblxuXHR9ICk7XG5cblx0aWYgKCBzdWJtaXRTdGFjayB8fCBjaGFpbmVkICkge1xuXHRcdGNvbnN0IHN0YWNrQWRkaXRpb246IHN0cmluZ1tdID0gY2hhaW5lZCA/IHNlbGYuZ2V0RXhpc3RlbnRBc3luY1N0YWNrKCBleGlzdGVudEluc3RhbmNlICkgOiBbXTtcblx0XHRjb25zdCB0aXRsZSA9IGBcXG48LS0gY3JlYXRpb24gb2YgWyAke1R5cGVOYW1lfSBdIHRyYWNlZCAtLT5gO1xuXHRcdGlmICggc3VibWl0U3RhY2sgKSB7XG5cdFx0XHRnZXRTdGFjay5jYWxsKCBzZWxmLCB0aXRsZSwgc3RhY2tBZGRpdGlvbiApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZWxmLnN0YWNrID0gdGl0bGU7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCBibG9ja0Vycm9ycyApIHtcblxuXHRcdGlmICggZXhpc3RlbnRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yICkge1xuXG5cdFx0XHRzZWxmLk1vZGlmaWNhdG9yVHlwZSA9IG1ha2VFcnJvck1vZGlmaWNhdG9yVHlwZSggVHlwZU5hbWUgKTtcblxuXHRcdFx0c2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yID0gbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IoIHNlbGYgKTtcblxuXHRcdFx0Y29uc3QgYmxvY2tFcnJvcnNFcnJvckluc3RhbmNlID0gbmV3IHNlbGYuSW5zdGFuY2VNb2RpZmljYXRvciggLi4uYXJncyApO1xuXG5cdFx0XHR0aHJvdyBibG9ja0Vycm9yc0Vycm9ySW5zdGFuY2U7XG5cblx0XHR9XG5cdH1cblxuXHRzZWxmLmludm9rZVByZUhvb2tzKCk7XG5cblx0c2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yID0gbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IoIHNlbGYgKTtcblxuXHRpZiAoIGJsb2NrRXJyb3JzICkge1xuXG5cdFx0dHJ5IHtcblx0XHRcdC8vIENvbnN0cnVjdG9yIEludm9jYXRpb24gSXRzZWxmXG5cdFx0XHRjb25zdCBhbnN3ZXIgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRcdHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgPSBhbnN3ZXI7XG5cblx0XHR9IGNhdGNoICggZXJyb3IgKSB7XG5cblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggZXJyb3IgKTtcblxuXHRcdH1cblxuXHR9IGVsc2Uge1xuXG5cdFx0Ly8gQ29uc3RydWN0b3IgSW52b2NhdGlvbiBJdHNlbGZcblx0XHRjb25zdCBhbnN3ZXIgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cdFx0Ly8gZGVidWdnZXI7XG5cdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGFuc3dlcjtcblxuXHR9XG5cblxuXHRpZiAoIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgaW5zdGFuY2VvZiBQcm9taXNlICkge1xuXG5cdFx0Y29uc3Qgd2FpdGVyID0gc2VsZi5tYWtlQXdhaXRlciggdHlwZSApO1xuXG5cdFx0b2RwKCB3YWl0ZXIsIFN5bWJvbENvbnN0cnVjdG9yTmFtZSwge1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIFR5cGVOYW1lO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxuXHRcdHJldHVybiB3YWl0ZXI7XG5cblx0fVxuXG5cdHNlbGYucG9zdFByb2Nlc3NpbmcoIHR5cGUgKTtcblxuXHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblxufSBhcyBDb25zdHJ1Y3RvckZ1bmN0aW9uPHR5cGVvZiBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGU+O1xuXG5PYmplY3QuYXNzaWduKCBJbnN0YW5jZUNyZWF0b3IucHJvdG90eXBlLCBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGUgKTtcbiJdfQ==
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VDcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS90eXBlcy9JbnN0YW5jZUNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7QUFrQmIsK0NBRXlCO0FBRXpCLE1BQU0sRUFDTCxHQUFHLEVBQ0gscUJBQXFCLEVBQ3JCLEdBQUcscUJBQVMsQ0FBQztBQUVkLHFEQUF1RDtBQUN2RCxNQUFNLEVBQ0wsMEJBQTBCLEdBQzFCLEdBQUcsb0JBQVcsQ0FBQztBQUVoQixvQ0FBa0M7QUFDbEMsTUFBTSxFQUNMLHFCQUFxQixFQUNyQix3QkFBd0IsR0FDeEIsR0FBRyxlQUFVLENBQUM7QUFFZixzQ0FBcUM7QUFDckMsNkVBQTBFO0FBRTFFLG1DQUFxRDtBQUVyRCwrREFBZ0U7QUFDaEUsK0NBQTRDO0FBSTVDLE1BQU0sY0FBYyxHQUFHO0lBRXRCLE1BQU0sRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLElBQUksRUFDSixtQkFBbUIsRUFDbkIsR0FBRyxJQUFJLENBQUM7SUFFVCxNQUFNLEVBQ0wsVUFBVSxHQUNWLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxRQUFRLEdBQUc7UUFDaEIsSUFBSTtRQUNKLGdCQUFnQjtRQUNoQixJQUFJO1FBQ0osbUJBQW1CO0tBQ25CLENBQUM7SUFFRixVQUFVLENBQUMsVUFBVSxDQUFFLGFBQWEsRUFBRSxRQUFRLENBQUUsQ0FBQztJQUVqRCxJQUFJLENBQUMsVUFBVSxDQUFFLGFBQWEsRUFBRSxRQUFRLENBQUUsQ0FBQztBQUU1QyxDQUFDLENBQUM7QUFJRixNQUFNLGVBQWUsR0FBRztJQUd2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDckIsTUFBTSxFQUNMLGlCQUFpQixHQUNqQixHQUFHLE9BQU8sQ0FBQztJQUVaLE1BQU0sS0FBSyxHQUFHLElBQUEsaUJBQVMsRUFBQyxpQkFBaUIsQ0FBVSxDQUFDO0lBRXBELE1B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QUFpQixHQUFHLE1BQU0sQ0FBQztRQUVqQyxDQUFDO1FBQUMsT0FBUSxLQUFLLEVBQUcsQ0FBQztZQUVsQixJQUFJLENBQUMsc0JBQXNCLENBQUUsS0FBSyxDQUFFLENBQUM7UUFFdEMsQ0FBQztJQUVGLENBQUM7U0FBTSxDQUFDO1FBR1AsTUFBTSxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUUsR0FBRyxJQUFJLENBQUUsQ0FBQztRQUV2RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDO0lBRWpDLENBQUM7SUFHRCxJQUFLLElBQUksQ0FBQyxpQkFBaUIsWUFBWSxPQUFPLEVBQUcsQ0FBQztRQUVqRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFFLElBQUksQ0FBRSxDQUFDO1FBRXhDLEdBQUcsQ0FBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUU7WUFDbkMsR0FBRztnQkFDRixPQUFPLFFBQVEsQ0FBQztZQUNqQixDQUFDO1NBQ0QsQ0FBRSxDQUFDO1FBRUosT0FBTyxNQUFNLENBQUM7SUFFZixDQUFDO0lBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBRSxJQUFJLENBQUUsQ0FBQztJQUU1QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztBQUUvQixDQUFtRCxDQUFDO0FBRXBELE1BQU0sQ0FBQyxNQUFNLENBQUUsdUJBQWUsQ0FBQyxTQUFTLEVBQUUsd0JBQXdCLENBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiAgXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogSW5zdGFuY2VDcmVhdG9yIG9yY2hlc3RyYXRlcyB0aGUgZnVsbCBpbnN0YW5jZSBjb25zdHJ1Y3Rpb24gbGlmZWN5Y2xlLlxuICpcbiAqIFBpcGVsaW5lIHN0YWdlcyAoc2VlIGFsc28gY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci50cyBhbmQgSW5zdGFuY2VNb2RpZmljYXRvci50cyk6XG4gKiAgIDEuIFNldHVwICAgICAgLSBleHRyYWN0IHR5cGUsIGNvbmZpZywgcHJlcGFyZSBNb2RpZmljYXRpb25Db25zdHJ1Y3RvclxuICogICAyLiBTdGFjayAgICAgIC0gY29sbGVjdCBjcmVhdGlvbiBzdGFjayBpZiBzdWJtaXRTdGFjayBvciBjaGFpbmVkXG4gKiAgIDMuIGJsb2NrRXJyb3JzLSBpZiBwYXJlbnQgaXMgRXJyb3IsIG9wdGlvbmFsbHkgYmxvY2sgZnVydGhlciBjb25zdHJ1Y3Rpb25cbiAqICAgNC4gUHJlLWhvb2tzICAtIGludm9rZSBwcmVDcmVhdGlvbiBob29rcyBvbiBjb2xsZWN0aW9uIGFuZCB0eXBlXG4gKiAgIDUuIEJ1aWxkICAgICAgLSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvcigpIHdpcmVzIHByb3RvdHlwZSBjaGFpblxuICogICA2LiBDb25zdHJ1Y3QgIC0gbmV3IEluc3RhbmNlTW9kaWZpY2F0b3IoLi4uYXJncykgcnVucyB1c2VyIGNvbnN0cnVjdG9yXG4gKiAgIDcuIEFzeW5jICAgICAgLSBpZiByZXN1bHQgaXMgUHJvbWlzZSwgYXR0YWNoIGF3YWl0ZXIgYW5kIHN1YnR5cGUgZmFjdG9yaWVzXG4gKiAgIDguIFBvc3QtcHJvYyAgLSB2YWxpZGF0ZSBpbmhlcml0YW5jZSwgc2V0IF9fc2VsZl9fLCBpbnZva2UgcG9zdENyZWF0aW9uIGhvb2tzXG4gKi9cblxuaW1wb3J0IHsgX0ludGVybmFsX1RDXyB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHtcblx0Y29uc3RhbnRzXG59IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5cbmNvbnN0IHtcblx0b2RwLFxuXHRTeW1ib2xDb25zdHJ1Y3Rvck5hbWVcbn0gPSBjb25zdGFudHM7XG5cbmltcG9ydCB7IEVycm9yc1R5cGVzIH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvZXJyb3JzJztcbmNvbnN0IHtcblx0V1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4sXG59ID0gRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBUeXBlc1V0aWxzIGZyb20gJy4uL3V0aWxzJztcbmNvbnN0IHtcblx0Z2V0RXhpc3RlbnRBc3luY1N0YWNrLFxuXHRtYWtlRXJyb3JNb2RpZmljYXRvclR5cGUsXG59ID0gVHlwZXNVdGlscztcblxuaW1wb3J0IHsgZ2V0U3RhY2sgfSBmcm9tICcuLi9lcnJvcnMnO1xuaW1wb3J0IHsgdGhyb3dNb2RpZmljYXRpb25FcnJvciB9IGZyb20gJy4uL2Vycm9ycy90aHJvd01vZGlmaWNhdGlvbkVycm9yJztcblxuaW1wb3J0IHsgX2dldFByb3BzLCBfc2V0U2VsZiwgUHJvcHMgfSBmcm9tICcuL1Byb3BzJztcblxuaW1wb3J0IHsgbWFrZUluc3RhbmNlTW9kaWZpY2F0b3IgfSBmcm9tICcuL0luc3RhbmNlTW9kaWZpY2F0b3InO1xuaW1wb3J0IHsgcGFyZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvcGFyZW50JztcblxuLy8gaW1wb3J0IHsgTW5lbW9zeW5lIH0gZnJvbSAnLi9NbmVtb3N5bmUnO1xuICBcbmNvbnN0IGludm9rZVByZUhvb2tzID0gZnVuY3Rpb24gKCB0aGlzOiBhbnkgKSB7XG5cblx0Y29uc3Qge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdEluc3RhbmNlTW9kaWZpY2F0b3Jcblx0fSA9IHRoaXM7XG5cblx0Y29uc3Qge1xuXHRcdGNvbGxlY3Rpb24sXG5cdH0gPSB0eXBlO1xuXG5cdGNvbnN0IGhvb2tEYXRhID0ge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdEluc3RhbmNlTW9kaWZpY2F0b3Jcblx0fTtcblxuXHRjb2xsZWN0aW9uLmludm9rZUhvb2soICdwcmVDcmVhdGlvbicsIGhvb2tEYXRhICk7XG5cblx0dHlwZS5pbnZva2VIb29rKCAncHJlQ3JlYXRpb24nLCBob29rRGF0YSApO1xuXG59O1xuXG5cbiAgXG5jb25zdCBpbnZva2VQb3N0SG9va3MgPSBmdW5jdGlvbiAoIHRoaXM6IGFueSApIHtcblxuXHQgXG5cdGNvbnN0IGNyZWF0b3IgPSB0aGlzO1xuXHRjb25zdCB7XG5cdFx0aW5oZXJpdGVkSW5zdGFuY2UsXG5cdH0gPSBjcmVhdG9yO1xuXG5cdGNvbnN0IHByb3BzID0gX2dldFByb3BzKGluaGVyaXRlZEluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRjb25zdCB7XG5cdFx0X190eXBlX186IHR5cGUsXG5cdFx0X19wYXJlbnRfXzogZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRfX2FyZ3NfXzogYXJncyxcblx0fSA9IHByb3BzO1xuXG5cdGNvbnN0IHtcblx0XHRjb2xsZWN0aW9uLFxuXHR9ID0gdHlwZTtcblxuXHRjb25zdCBob29rVHlwZSA9IGluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgRXJyb3IgP1xuXHRcdCdjcmVhdGlvbkVycm9yJyA6ICdwb3N0Q3JlYXRpb24nO1xuXG5cdGNvbnN0IGhvb2tEYXRhID0ge1xuXHRcdHR5cGUsXG5cdFx0ZXhpc3RlbnRJbnN0YW5jZSxcblx0XHRpbmhlcml0ZWRJbnN0YW5jZSxcblx0XHRhcmdzLFxuXHRcdGNyZWF0b3Jcblx0fTtcblxuXHRyZXR1cm4ge1xuXG5cdFx0dHlwZSA6IHR5cGUuaW52b2tlSG9vayggaG9va1R5cGUsIGhvb2tEYXRhICksXG5cblx0XHRjb2xsZWN0aW9uIDogY29sbGVjdGlvbi5pbnZva2VIb29rKCBob29rVHlwZSwgaG9va0RhdGEgKSxcblxuXHR9O1xuXG59O1xuXG5cbiAgXG5jb25zdCBwb3N0UHJvY2Vzc2luZyA9IGZ1bmN0aW9uICggdGhpczogYW55LCBjb250aW51YXRpb25PZjogYW55ICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRjb25zdCB7XG5cdFx0c3RhY2ssXG5cdFx0dHlwZToge1xuXHRcdFx0aXNTdWJUeXBlLFxuXHRcdFx0Y29uZmlnOiB7XG5cdFx0XHRcdHN0cmljdENoYWluLFxuXHRcdFx0XHRibG9ja0Vycm9yc1xuXHRcdFx0fVxuXHRcdH1cblx0fSA9IHNlbGY7XG5cblx0aWYgKCAhc2VsZi5pbmhlcml0ZWRJbnN0YW5jZS5jb25zdHJ1Y3RvciApIHtcblx0XHRjb25zdCBtc2cgPSAnc2hvdWxkIGluaGVyaXQgZnJvbSBtbmVtb25pY2EgaW5zdGFuY2UnO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0fVxuXG5cdGlmICggIXNlbGYuaW5oZXJpdGVkSW5zdGFuY2UuY29uc3RydWN0b3JbIFN5bWJvbENvbnN0cnVjdG9yTmFtZSBdICkge1xuXHRcdGNvbnN0IG1zZyA9ICdzaG91bGQgaW5oZXJpdCBmcm9tIG1uZW1vbmljYSBpbnN0YW5jZSc7XG5cdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc3RhY2sgKSApO1xuXHR9XG5cblx0aWYgKCBjb250aW51YXRpb25PZiAmJiAhKCBzZWxmLmluaGVyaXRlZEluc3RhbmNlIGluc3RhbmNlb2YgY29udGludWF0aW9uT2YgKSApIHtcblx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRjb25zdCBpY24gPSBzZWxmLmluaGVyaXRlZEluc3RhbmNlLmNvbnN0cnVjdG9yLm5hbWU7XG5cdFx0Y29uc3QgbXNnID0gYHNob3VsZCBpbmhlcml0IGZyb20gJHtjb250aW51YXRpb25PZi5UeXBlTmFtZX0gYnV0IGdvdCAke2ljbn1gO1xuXHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0XHQvLyB0aHJvdyBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4obXNnLCBzZWxmLnN0YWNrKTtcblx0fVxuXG5cdGlmIChpc1N1YlR5cGUgJiYgc3RyaWN0Q2hhaW4pIHtcblx0XHRcblx0XHRpZiAoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIEVycm9yICYmICFibG9ja0Vycm9ycykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IHByZXYgPSBwYXJlbnQoc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSkgYXMgYW55O1xuXHRcdGlmICghcHJldiB8fCAocHJldiAmJiAhcHJldi5jb25zdHJ1Y3RvcikpIHtcblx0XHRcdGNvbnN0IG1zZyA9ICdzaG91bGQgaW5oZXJpdCBmcm9tIHNvbWUgaW5zdGFuY2UnO1xuXHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBuZXcgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4oIG1zZywgc3RhY2sgKSApO1xuXHRcdH1cblx0XHRjb25zdCBwYXJlbnROYW1lID0gcHJldi5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdGNvbnN0IHBhcmVudFR5cGVOYW1lID0gc2VsZi50eXBlLnBhcmVudFR5cGUuVHlwZU5hbWU7XG5cdFx0aWYgKHBhcmVudE5hbWUgIT09IHBhcmVudFR5cGVOYW1lKSB7XG5cdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3BhcmVudFR5cGVOYW1lfSBidXQgbWFkZSBvbiAke3BhcmVudE5hbWV9YDtcblx0XHRcdHNlbGYudGhyb3dNb2RpZmljYXRpb25FcnJvciggbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHN0YWNrICkgKTtcblx0XHR9XG5cblx0fVxuXG5cdF9zZXRTZWxmKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UpO1xuXG5cdHNlbGYuaW52b2tlUG9zdEhvb2tzKCk7XG5cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhlblNwZWMge1xuXHRzdWJ0eXBlOiBvYmplY3Q7XG5cdGFyZ3M6IHVua25vd25bXTtcblx0bmFtZT86IHN0cmluZztcbn1cblxuICBcbmNvbnN0IGFkZFRoZW4gPSBmdW5jdGlvbiAoIHRoaXM6IGFueSwgdGhlbjogVGhlblNwZWMgKSB7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZVxuXHRcdC50aGVuKCAoKSA9PiB7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID1cblx0XHRcdFx0bmV3IEluc3RhbmNlQ3JlYXRvcihcblx0XHRcdFx0XHR0aGVuLnN1YnR5cGUsXG5cdFx0XHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSxcblx0XHRcdFx0XHR0aGVuLmFyZ3MsXG5cdFx0XHRcdFx0Ly8gd2FzIGNoYWluZWQgOlxuXHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQvLyBzZWxmLmV4aXN0ZW50SW5zdGFuY2Vcblx0XHRcdFx0KSBhcyB1bmtub3duIGFzIFByb21pc2U8dW5rbm93bj47XG5cdFx0XHRyZXR1cm4gc2VsZi5pbmhlcml0ZWRJbnN0YW5jZTtcblx0XHR9ICk7XG5cbn07XG5cbmNvbnN0IG1ha2VBd2FpdGVyID0gZnVuY3Rpb24gKCB0aGlzOiBhbnksIHR5cGU6IGFueSwgdGhlbj86IFRoZW5TcGVjICkge1xuXG5cdCBcblx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IHNlbGYuaW5oZXJpdGVkSW5zdGFuY2Vcblx0XHQudGhlbiggKCBpbnN0YW5jZTogdW5rbm93biApID0+IHtcblxuXHRcdFx0aWYgKCB0eXBlb2YgaW5zdGFuY2UgIT09ICdvYmplY3QnICkge1xuXHRcdFx0XHRpZiAoIHNlbGYuY29uZmlnLmF3YWl0UmV0dXJuICkge1xuXHRcdFx0XHRcdGNvbnN0IG1zZyA9IGBzaG91bGQgaW5oZXJpdCBmcm9tICR7dHlwZS5UeXBlTmFtZX06IHNlZW1zIGFzeW5jICR7dHlwZS5UeXBlTmFtZX0gaGFzIG5vIHJldHVybiBzdGF0ZW1lbnRgO1xuXHRcdFx0XHRcdHRocm93IG5ldyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiggbXNnLCBzZWxmLnN0YWNrICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGluc3RhbmNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICggISggaW5zdGFuY2UgaW5zdGFuY2VvZiBzZWxmLnR5cGUgKSApIHtcblx0XHRcdFx0IFxuXHRcdFx0XHRjb25zdCBpY24gPSAoaW5zdGFuY2UgYXMgYW55KS5jb25zdHJ1Y3Rvci5uYW1lO1xuXHRcdFx0XHRjb25zdCBtc2cgPSBgc2hvdWxkIGluaGVyaXQgZnJvbSAke3R5cGUuVHlwZU5hbWV9IGJ1dCBnb3QgJHtpY259YDtcblx0XHRcdFx0dGhyb3cgbmV3IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOKCBtc2csIHNlbGYuc3RhY2sgKTtcblx0XHRcdH1cblxuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGluc3RhbmNlO1xuXG5cdFx0XHRjb25zdCBwcm9wcyA9IF9nZXRQcm9wcyhzZWxmLmluaGVyaXRlZEluc3RhbmNlKSBhcyBQcm9wcztcblxuXHRcdFx0IFxuXHRcdFx0aWYgKCBwcm9wcy5fX3NlbGZfXyAhPT0gKHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgdW5rbm93bikgKSB7XG5cdFx0XHRcdHNlbGYucG9zdFByb2Nlc3NpbmcoIHR5cGUgKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cblx0XHR9IClcblx0XHQuY2F0Y2goICggZXJyb3I6IEVycm9yICkgPT4ge1xuXHRcdFx0aWYgKCBzZWxmLmNvbmZpZy5ibG9ja0Vycm9ycyApIHtcblx0XHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBlcnJvciApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdGlmICggdGhlbiApIHtcblx0XHRzZWxmLmFkZFRoZW4oIHRoZW4gKTtcblx0fVxuXG5cdHR5cGUuc3VidHlwZXMuZm9yRWFjaCggKCBzdWJ0eXBlOiBvYmplY3QsIG5hbWU6IHN0cmluZyApID0+IHtcblx0XHQgXG5cdFx0KHNlbGYuaW5oZXJpdGVkSW5zdGFuY2UgYXMgYW55KVsgbmFtZSBdID0gKCAuLi5hcmdzOiB1bmtub3duW10gKSA9PiB7XG5cdFx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gc2VsZi5tYWtlQXdhaXRlciggc3VidHlwZSwge1xuXHRcdFx0XHRuYW1lLFxuXHRcdFx0XHRzdWJ0eXBlLFxuXHRcdFx0XHRhcmdzLFxuXHRcdFx0fSApO1xuXHRcdFx0cmV0dXJuIHNlbGYuaW5oZXJpdGVkSW5zdGFuY2U7XG5cdFx0fTtcblx0fSApO1xuXG5cdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG59O1xuXG5jb25zdCBJbnN0YW5jZUNyZWF0b3JQcm90b3R5cGUgPSB7XG5cdGdldEV4aXN0ZW50QXN5bmNTdGFjayxcblx0cG9zdFByb2Nlc3NpbmcsXG5cdG1ha2VBd2FpdGVyLFxuXHRhZGRUaGVuLFxuXHRpbnZva2VQcmVIb29rcyxcblx0aW52b2tlUG9zdEhvb2tzLFxuXHR0aHJvd01vZGlmaWNhdGlvbkVycm9yXG59O1xuXG4gIFxuZXhwb3J0IGNvbnN0IEluc3RhbmNlQ3JlYXRvciA9IGZ1bmN0aW9uICggdGhpczogYW55LCB0eXBlOiBhbnksIGV4aXN0ZW50SW5zdGFuY2U6IHVua25vd24sIGFyZ3M6IHVua25vd25bXSwgY2hhaW5lZDogYm9vbGVhbiApIHtcblxuXHRjb25zdCB7XG5cdFx0Y29uc3RydWN0SGFuZGxlcixcblx0XHRwcm90byxcblx0XHRjb25maWcsXG5cdFx0VHlwZU5hbWVcblx0fSA9IHR5cGU7XG5cblx0Y29uc3Qge1xuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLFxuXHRcdGJsb2NrRXJyb3JzLFxuXHRcdHN1Ym1pdFN0YWNrXG5cdH0gPSBjb25maWc7XG5cblx0IFxuXHRjb25zdCBtYyA9IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yKCk7XG5cblx0IFxuXHRjb25zdCBzZWxmID0gdGhpcztcblxuXHRjb25zdCBNb2RpZmljYXRvclR5cGUgPSBjb25zdHJ1Y3RIYW5kbGVyKCk7XG5cblx0T2JqZWN0LmFzc2lnbiggc2VsZiwge1xuXG5cdFx0dHlwZSxcblx0XHRUeXBlTmFtZSxcblxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cblx0XHRnZXQgYXJncyAoKSB7XG5cdFx0XHRyZXR1cm4gYXJncztcblx0XHR9LFxuXG5cdFx0TW9kaWZpY2F0aW9uQ29uc3RydWN0b3IgOiBtYyxcblx0XHRNb2RpZmljYXRvclR5cGUsXG5cblx0XHRjb25maWcsXG5cblx0XHRwcm90b1xuXG5cdH0gKTtcblxuXHRpZiAoIHN1Ym1pdFN0YWNrIHx8IGNoYWluZWQgKSB7XG5cdFx0Y29uc3Qgc3RhY2tBZGRpdGlvbjogc3RyaW5nW10gPSBjaGFpbmVkID8gc2VsZi5nZXRFeGlzdGVudEFzeW5jU3RhY2soIGV4aXN0ZW50SW5zdGFuY2UgKSA6IFtdO1xuXHRcdGNvbnN0IHRpdGxlID0gYFxcbjwtLSBjcmVhdGlvbiBvZiBbICR7VHlwZU5hbWV9IF0gdHJhY2VkIC0tPmA7XG5cdFx0aWYgKCBzdWJtaXRTdGFjayApIHtcblx0XHRcdGdldFN0YWNrLmNhbGwoIHNlbGYsIHRpdGxlLCBzdGFja0FkZGl0aW9uICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNlbGYuc3RhY2sgPSB0aXRsZTtcblx0XHR9XG5cdH1cblxuXHRpZiAoIGJsb2NrRXJyb3JzICkge1xuXG5cdFx0aWYgKCBleGlzdGVudEluc3RhbmNlIGluc3RhbmNlb2YgRXJyb3IgKSB7XG5cblx0XHRcdHNlbGYuTW9kaWZpY2F0b3JUeXBlID0gbWFrZUVycm9yTW9kaWZpY2F0b3JUeXBlKCBUeXBlTmFtZSApO1xuXG5cdFx0XHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdFx0XHRjb25zdCBibG9ja0Vycm9yc0Vycm9ySW5zdGFuY2UgPSBuZXcgc2VsZi5JbnN0YW5jZU1vZGlmaWNhdG9yKCAuLi5hcmdzICk7XG5cblx0XHRcdHRocm93IGJsb2NrRXJyb3JzRXJyb3JJbnN0YW5jZTtcblxuXHRcdH1cblx0fVxuXG5cdHNlbGYuaW52b2tlUHJlSG9va3MoKTtcblxuXHRzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IgPSBtYWtlSW5zdGFuY2VNb2RpZmljYXRvciggc2VsZiApO1xuXG5cdGlmICggYmxvY2tFcnJvcnMgKSB7XG5cblx0XHR0cnkge1xuXHRcdFx0Ly8gQ29uc3RydWN0b3IgSW52b2NhdGlvbiBJdHNlbGZcblx0XHRcdGNvbnN0IGFuc3dlciA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoIC4uLmFyZ3MgKTtcblx0XHRcdC8vIGRlYnVnZ2VyO1xuXHRcdFx0c2VsZi5pbmhlcml0ZWRJbnN0YW5jZSA9IGFuc3dlcjtcblxuXHRcdH0gY2F0Y2ggKCBlcnJvciApIHtcblxuXHRcdFx0c2VsZi50aHJvd01vZGlmaWNhdGlvbkVycm9yKCBlcnJvciApO1xuXG5cdFx0fVxuXG5cdH0gZWxzZSB7XG5cblx0XHQvLyBDb25zdHJ1Y3RvciBJbnZvY2F0aW9uIEl0c2VsZlxuXHRcdGNvbnN0IGFuc3dlciA9IG5ldyBzZWxmLkluc3RhbmNlTW9kaWZpY2F0b3IoIC4uLmFyZ3MgKTtcblx0XHQvLyBkZWJ1Z2dlcjtcblx0XHRzZWxmLmluaGVyaXRlZEluc3RhbmNlID0gYW5zd2VyO1xuXG5cdH1cblxuXG5cdGlmICggc2VsZi5pbmhlcml0ZWRJbnN0YW5jZSBpbnN0YW5jZW9mIFByb21pc2UgKSB7XG5cblx0XHRjb25zdCB3YWl0ZXIgPSBzZWxmLm1ha2VBd2FpdGVyKCB0eXBlICk7XG5cblx0XHRvZHAoIHdhaXRlciwgU3ltYm9sQ29uc3RydWN0b3JOYW1lLCB7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRyZXR1cm4gVHlwZU5hbWU7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0cmV0dXJuIHdhaXRlcjtcblxuXHR9XG5cblx0c2VsZi5wb3N0UHJvY2Vzc2luZyggdHlwZSApO1xuXG5cdHJldHVybiBzZWxmLmluaGVyaXRlZEluc3RhbmNlO1xuXG59IGFzIF9JbnRlcm5hbF9UQ188dHlwZW9mIEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZT47XG5cbk9iamVjdC5hc3NpZ24oIEluc3RhbmNlQ3JlYXRvci5wcm90b3R5cGUsIEluc3RhbmNlQ3JlYXRvclByb3RvdHlwZSApO1xuIl19
|
|
@@ -11,4 +11,4 @@ const makeInstanceModificator = (self) => {
|
|
|
11
11
|
return result;
|
|
12
12
|
};
|
|
13
13
|
exports.makeInstanceModificator = makeInstanceModificator;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQU1iLG1DQUFvQztBQUU3QixNQUFNLHVCQUF1QixHQUFHLENBQUUsSUFBUyxFQUFHLEVBQUU7SUFFdEQsTUFBTSxFQUNMLHVCQUF1QixFQUN2QixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLEtBQUssR0FDTCxHQUFHLElBQUksQ0FBQztJQUVULE1BQU0sTUFBTSxHQUFHLHVCQUF1QixDQUFDLElBQUksQ0FDMUMsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixNQUFNLENBQUMsTUFBTSxDQUFFLEVBQUUsRUFBRSxLQUFLLENBQUUsRUFDMUIsQ0FBRSxlQUF3QixFQUFHLEVBQUU7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsaUJBQVMsQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFFLENBQUM7SUFDeEIsQ0FBQyxDQUNELENBQUM7SUFFRixPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUMsQ0FBQztBQXBCVyxRQUFBLHVCQUF1QiwyQkFvQmxDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vLyBTdGVwIDQgb2YgY29uc3RydWN0aW9uIHBpcGVsaW5lOiBicmlkZ2UgYmV0d2VlbiBJbnN0YW5jZUNyZWF0b3IgYW5kIE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLlxuLy8gQ2FsbGVkIGZyb20gSW5zdGFuY2VDcmVhdG9yIGFmdGVyIHByZS1ob29rcy4gRGVsZWdhdGVzIHRvIE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yXG4vLyAoc2VlIGNyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3IudHMpIHRvIHdpcmUgdGhlIHByb3RvdHlwZSBjaGFpbiBhbmQgYXR0YWNoIHByb3BzLlxuXG5pbXBvcnQgeyBfYWRkUHJvcHMgfSBmcm9tICcuL1Byb3BzJztcblxuZXhwb3J0IGNvbnN0IG1ha2VJbnN0YW5jZU1vZGlmaWNhdG9yID0gKCBzZWxmOiBhbnkgKSA9PiB7XG5cblx0Y29uc3Qge1xuXHRcdE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0TW9kaWZpY2F0b3JUeXBlLFxuXHRcdHByb3RvLFxuXHR9ID0gc2VsZjtcblxuXHRjb25zdCByZXN1bHQgPSBNb2RpZmljYXRpb25Db25zdHJ1Y3Rvci5jYWxsKFxuXHRcdGV4aXN0ZW50SW5zdGFuY2UsXG5cdFx0TW9kaWZpY2F0b3JUeXBlLFxuXHRcdE9iamVjdC5hc3NpZ24oIHt9LCBwcm90byApLFxuXHRcdCggX19wcm90b19wcm90b19fOiB1bmtub3duICkgPT4ge1xuXHRcdFx0c2VsZi5fX3Byb3RvX3Byb3RvX18gPSBfX3Byb3RvX3Byb3RvX187XG5cdFx0XHRfYWRkUHJvcHMuY2FsbCggc2VsZiApO1xuXHRcdH1cblx0KTtcblxuXHRyZXR1cm4gcmVzdWx0O1xufTtcbiJdfQ==
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _Internal_TC_ } from '../../types';
|
|
2
|
+
export declare const Mnemosyne: _Internal_TC_<object>;
|
|
2
3
|
declare const _default: {
|
|
3
4
|
readonly createMnemosyne: (Uranus: unknown, exposeInstanceMethods: boolean) => object;
|
|
4
|
-
readonly prepareSubtypeForConstruction: (subtypeName: string, inheritedInstance: unknown) =>
|
|
5
|
+
readonly prepareSubtypeForConstruction: (subtypeName: string, inheritedInstance: unknown) => _Internal_TC_<{
|
|
5
6
|
getExistentAsyncStack: (existentInstance: import("../utils").asyncStack) => unknown;
|
|
6
7
|
postProcessing: (this: any, continuationOf: any) => void;
|
|
7
8
|
makeAwaiter: (this: any, type: any, then?: import("./InstanceCreator").ThenSpec) => any;
|