mnemonica 1.0.6 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/AGENTS.md +1 -1
- package/.ai/ONBOARDING.md +2 -1
- package/.ai/PROTOTYPE-CHAIN.md +122 -0
- package/.ai/TACTICA-DEEP-DIVE.md +52 -49
- package/.ai/TACTICA-RULES.md +8 -8
- package/.ai/rules-skill/lookup-typed.md +17 -19
- package/AGENTS.md +19 -13
- package/CONTRIBUTING.md +1 -1
- package/FOR_HUMANS.md +51 -20
- package/README.md +14 -12
- package/SKILL.md +4 -4
- package/build/api/types/createInstanceModificator.js +1 -1
- package/build/descriptors/types/index.js +1 -1
- package/build/index.d.ts +6 -7
- package/build/index.js +6 -13
- package/build/types/index.d.ts +25 -2
- package/build/types/index.js +1 -1
- package/build/utils/parent.d.ts +4 -1
- package/build/utils/parent.js +5 -6
- package/docs/UTILS.md +1 -1
- package/docs/ai-learning-trajectory.md +8 -8
- package/docs/async-constructors.md +18 -0
- package/docs/prototype-chain.md +127 -0
- package/docs/purpose.md +4 -4
- package/docs/tactica-pattern.md +10 -10
- package/docs/typed-lookup.md +19 -15
- package/module/index.js +0 -1
- package/package.json +2 -1
- package/src/api/types/createInstanceModificator.ts +13 -0
- package/src/descriptors/types/index.ts +1 -1
- package/src/index.ts +35 -53
- package/src/types/index.ts +88 -2
- package/src/utils/parent.ts +13 -2
package/FOR_HUMANS.md
CHANGED
|
@@ -35,7 +35,7 @@ define(name, ctor) → TypeProxy → new instance.SubType()
|
|
|
35
35
|
|
|
36
36
|
> Status API is stable for the documented surface: advanced topics are also covered
|
|
37
37
|
> If you're looking for the deeper theory (Homotopy Type Theory, runtime Tries, AI-agent pipelines), see [`README.md`](./README.md). This document is the welcoming entry — practical, example-driven, aimed at developers who want to use the library.
|
|
38
|
-
> **For type-safe `
|
|
38
|
+
> **For type-safe `lookup()`:** read [`docs/typed-lookup.md`](./docs/typed-lookup.md) — the `TypeRegistry` augmentation pattern, hand-written or generated by [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica). Runtime behaviour is identical either way.
|
|
39
39
|
> [`SKILL.md`](./SKILL.md) is a usage quick reference only (not for contributors).
|
|
40
40
|
|
|
41
41
|
---
|
|
@@ -245,7 +245,7 @@ import { define, lookup } from 'mnemonica/module';
|
|
|
245
245
|
| Involves async constructors | + [`.ai/rules-skill/async-constructors.md`](./.ai/rules-skill/async-constructors.md) + [`.ai/async_init.md`](./.ai/async_init.md) |
|
|
246
246
|
| Involves TypeScript types | + [`.ai/rules-skill/type-system.md`](./.ai/rules-skill/type-system.md) |
|
|
247
247
|
| Involves proxy internals | + [`.ai/rules-skill/proxy-architecture.md`](./.ai/rules-skill/proxy-architecture.md) |
|
|
248
|
-
| Uses tactica / `
|
|
248
|
+
| Uses tactica / `lookup` | + [`.ai/TACTICA-RULES.md`](./.ai/TACTICA-RULES.md) |
|
|
249
249
|
| Docs-only change | README section you're touching only |
|
|
250
250
|
| Unfamiliar with the codebase | [`.ai/ONBOARDING.md`](./.ai/ONBOARDING.md) first — one file, five minutes |
|
|
251
251
|
|
|
@@ -508,7 +508,7 @@ const AsyncTypeNoReturn = define('AsyncType', async function () {
|
|
|
508
508
|
|---|---|
|
|
509
509
|
| Define a type | `define('Name', ctor)` |
|
|
510
510
|
| Create from instance | `new instance.SubType(args)` |
|
|
511
|
-
| Look up a type | `lookup('Name')` or `
|
|
511
|
+
| Look up a type | `lookup('Name')` or `lookup('Name')` |
|
|
512
512
|
| Read construction history | `getProps(instance)` |
|
|
513
513
|
| Get parent instance | `utils.parent(instance)` or `utils.parent(instance, 'TypeName')` |
|
|
514
514
|
| Flatten to plain object | `utils.extract(instance)` |
|
|
@@ -545,19 +545,19 @@ const SomeType = lookup('SomeType');
|
|
|
545
545
|
const SomeNestedType = lookup('SomeType.SomeNestedType');
|
|
546
546
|
```
|
|
547
547
|
|
|
548
|
-
#### `
|
|
548
|
+
#### `lookup(typeNestedPath)`
|
|
549
549
|
|
|
550
550
|
Type-safe lookup function. Requires a `TypeRegistry` augmentation — hand-written for small projects or generated by [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica). See [`docs/typed-lookup.md`](./docs/typed-lookup.md) for both paths side by side.
|
|
551
551
|
|
|
552
552
|
```typescript
|
|
553
|
-
import {
|
|
553
|
+
import { lookup } from 'mnemonica';
|
|
554
554
|
|
|
555
555
|
// Type-safe lookup - returns properly typed constructor
|
|
556
|
-
const UserType =
|
|
556
|
+
const UserType = lookup('UserType');
|
|
557
557
|
const user = new UserType({ name: 'John' }); // Full type safety!
|
|
558
558
|
|
|
559
559
|
// Works with nested types too
|
|
560
|
-
const SubType =
|
|
560
|
+
const SubType = lookup('Parent.SubType');
|
|
561
561
|
```
|
|
562
562
|
|
|
563
563
|
To enable type safety, generate types with tactica:
|
|
@@ -1257,23 +1257,54 @@ const merged = merge(instanceA, instanceB, 'args');
|
|
|
1257
1257
|
Items below are designed but **not yet shipped**. They are documented here
|
|
1258
1258
|
so consumers can avoid relying on them prematurely.
|
|
1259
1259
|
|
|
1260
|
-
### Nested `
|
|
1260
|
+
### Nested `lookup()` — resolved as unnecessary
|
|
1261
1261
|
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1262
|
+
A type-safe `.lookup()` method on constructors (e.g.
|
|
1263
|
+
`Scene2D.lookup('GraphNode2D')`) was considered so that the returned
|
|
1264
|
+
constructor would preserve the parent type in the prototype chain.
|
|
1265
1265
|
|
|
1266
|
-
|
|
1267
|
-
relative lookups that preserve the chain:
|
|
1266
|
+
However, this is unnecessary overhead:
|
|
1268
1267
|
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1268
|
+
- mnemonica subtypes are constructed from **parent instances**, not from
|
|
1269
|
+
parent constructors. The chain is created by `new scene.GraphNode2D(...)`,
|
|
1270
|
+
not by a constructor looked up in isolation.
|
|
1271
|
+
- Tactica-generated declaration merging already types those instance-level
|
|
1272
|
+
subtype constructors. Starting from `lookup('Scene2D')` gives a fully
|
|
1273
|
+
typed root constructor; after `const scene = new Scene2D(...)`,
|
|
1274
|
+
`scene.GraphNode2D` is typed and produces the correct chained instance.
|
|
1275
|
+
|
|
1276
|
+
If `lookup('Something')` returns `TypeClass | undefined` instead of a typed
|
|
1277
|
+
constructor, it means one of three things:
|
|
1278
|
+
|
|
1279
|
+
1. No `TypeRegistry` augmentation is in scope (the `.tactica` declarations
|
|
1280
|
+
are not imported or included in `tsconfig.json`).
|
|
1281
|
+
2. The augmentation is in scope, but does not declare `'Something'`.
|
|
1282
|
+
3. `'Something'` was never defined at runtime.
|
|
1283
|
+
|
|
1284
|
+
How nested `.lookup()` could have been implemented if it were needed:
|
|
1285
|
+
|
|
1286
|
+
1. Encode the type's dotted path in `TypeConstructor` itself:
|
|
1287
|
+
|
|
1288
|
+
```typescript
|
|
1289
|
+
interface TypeConstructor<Instance, Path extends string = string> {
|
|
1290
|
+
lookup<const K extends keyof NestedTypeRegistry[Path]>(
|
|
1291
|
+
name: K
|
|
1292
|
+
): NestedTypeRegistry[Path][K];
|
|
1293
|
+
}
|
|
1294
|
+
```
|
|
1295
|
+
|
|
1296
|
+
2. Or parse the full path with template literal types and consult a
|
|
1297
|
+
`NestedTypeRegistry` mapping parent paths to their child constructors:
|
|
1298
|
+
|
|
1299
|
+
```typescript
|
|
1300
|
+
type ParentPath<P extends string> =
|
|
1301
|
+
P extends `${infer Head}.${string}` ? Head : never;
|
|
1302
|
+
```
|
|
1274
1303
|
|
|
1275
|
-
|
|
1276
|
-
|
|
1304
|
+
Both approaches require either changing `TypeConstructor` to carry a `Path`
|
|
1305
|
+
generic or maintaining a second registry. Since the root-constructor +
|
|
1306
|
+
instance-level subtype pattern already gives the same result with no core
|
|
1307
|
+
changes, this item is intentionally not implemented.
|
|
1277
1308
|
|
|
1278
1309
|
---
|
|
1279
1310
|
|
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ You do not need HoTT to use mnemonica. The [primer](./docs/hott-primer.md) is th
|
|
|
39
39
|
## The shortest version
|
|
40
40
|
|
|
41
41
|
```typescript
|
|
42
|
-
import { define,
|
|
42
|
+
import { define, lookup, getProps } from 'mnemonica';
|
|
43
43
|
|
|
44
44
|
const Person = define('Person', function (data: { name: string }) {
|
|
45
45
|
this.name = data.name;
|
|
@@ -123,9 +123,9 @@ These are the two assumptions that most reliably produce incorrect code.
|
|
|
123
123
|
**1. "I should traverse the chain manually."** The most common mistake: seeing `utils.parent(utils.parent(instance))` in examples and treating it as a production traversal pattern. Manual depth-chaining is brittle and untyped. The correct APIs:
|
|
124
124
|
|
|
125
125
|
- **`utils.parent(instance, 'TypeName')`** — walks to a named ancestor in O(depth), no manual counting
|
|
126
|
-
- **`
|
|
126
|
+
- **`lookup(path)`** — resolves any type by path string with full TypeScript inference, against an augmented `TypeRegistry` (hand-written or `tactica`-generated — see [`docs/typed-lookup.md`](./docs/typed-lookup.md)). Paths may use dots, slashes, colons, or bracket notation, and may be single-segment names when the lookup is relative to a collection or type.
|
|
127
127
|
|
|
128
|
-
For any traversal deeper than a single step, prefer `parent('TypeName')` or `
|
|
128
|
+
For any traversal deeper than a single step, prefer `parent('TypeName')` or `lookup`. The manual chain form in examples is illustrative only. See [`.ai/TACTICA-RULES.md`](./.ai/TACTICA-RULES.md) for the full `lookup` usage guide.
|
|
129
129
|
|
|
130
130
|
**2. "`Person.define('Employee')` is `class Employee extends Person`."** It isn't. The difference is where `new` goes:
|
|
131
131
|
|
|
@@ -161,7 +161,7 @@ const engineer = new alice.Employee({ role: 'Engineer' });
|
|
|
161
161
|
In mnemonica, you **cannot**:
|
|
162
162
|
|
|
163
163
|
- Modify a prototype after creation (would corrupt the Trie)
|
|
164
|
-
- Reuse a constructor across
|
|
164
|
+
- Reuse a constructor's `.prototype` object across type definitions (would create parallel paths)
|
|
165
165
|
- Create subtypes from the wrong parent (`strictChain: true` enforces — default)
|
|
166
166
|
|
|
167
167
|
These restrictions are not arbitrary. They are runtime enforcement of the identity-as-path discipline that HoTT inspired: a path is determined by its endpoints and the specific steps taken, not by arbitrary identifications. Subtype creation uses *instance-level* inheritance:
|
|
@@ -190,7 +190,7 @@ These terms are used throughout the codebase and documentation with precise mean
|
|
|
190
190
|
| **Construction context** | The 9-tuple stored per instance: `__type__`, `__parent__`, `__args__`, `__timestamp__`, `__creator__`, `__collection__`, `__subtypes__`, `__proto_proto__`, `__stack__`. Readable via `getProps(instance)`. |
|
|
191
191
|
| **Instance-level inheritance** | The mechanism where `new alice.Employee()` creates a prototype chain whose immediate parent is the **specific instance** `alice`, not a shared `Employee.prototype`. |
|
|
192
192
|
| **Nominal type** | A type whose identity is determined by its constructor function reference, not by its property shape. Two types with identical fields but different constructors are different types. |
|
|
193
|
-
| **Mnemosyne** | The prototype object inserted between `ModificatorType.prototype` and the parent instance. Stores internal construction context
|
|
193
|
+
| **Mnemosyne** | The prototype object inserted between `ModificatorType.prototype` and the parent instance. Stores internal construction context. User-facing instance methods (`extract`, `pick`, `parent`, etc.) are available through standalone `utils.*` or by explicit prototype attachment. |
|
|
194
194
|
| **TypeProxy** | The constructor-like object returned by `define()`. Wraps the raw constructor with `.define()`, `.lookup()`, `.registerHook()` methods. |
|
|
195
195
|
| **ModificatorType** | The actual constructor function used for `new` calls. Its prototype is linked to Mnemosyne, which is linked to the parent instance. |
|
|
196
196
|
| **WeakMap key** | Internal properties are stored in a `WeakMap` keyed by the **Mnemosyne object**, not the instance itself. This keeps instance enumeration clean and shares metadata across instances of the same type. |
|
|
@@ -204,7 +204,7 @@ For the full construction pipeline from `define()` through `TypeProxy` → `Inst
|
|
|
204
204
|
This is the pattern that turns the theoretical correctness into practical leverage. An HTTP request handler (or any ETL-style data pipeline) can be expressed as a path through the type Trie:
|
|
205
205
|
|
|
206
206
|
```typescript
|
|
207
|
-
import { define, defaultTypes,
|
|
207
|
+
import { define, defaultTypes, lookup } from 'mnemonica';
|
|
208
208
|
|
|
209
209
|
// Define the pipeline as a chain of types
|
|
210
210
|
const RequestData = define('RequestData', function (this: { method: string; url: string }, req: { method: string; url: string }) {
|
|
@@ -282,7 +282,7 @@ Mnemonica provides:
|
|
|
282
282
|
|
|
283
283
|
- **Structured introspection.** `getProps(instance)` returns the full construction context: type, parent, args, timestamp, creator, collection.
|
|
284
284
|
- **Path queries.** `utils.parent(instance, 'UserType')` walks the Trie backward to a named ancestor. `utils.extract(instance)` flattens the inherited state.
|
|
285
|
-
- **Type-safe runtime lookup.** `
|
|
285
|
+
- **Type-safe runtime lookup.** `lookup(path)` returns a fully-typed constructor without manual casts, against an augmented `TypeRegistry`. The augmentation can be hand-written for small projects or generated by the companion `@mnemonica/tactica` package — see [`docs/typed-lookup.md`](./docs/typed-lookup.md).
|
|
286
286
|
- **Hook-based observability.** `preCreation`, `postCreation`, `creationError` fire at well-defined moments and can short-circuit construction.
|
|
287
287
|
- **Persistence-friendly.** Instances carry `__args__` — they can be reconstructed from their history.
|
|
288
288
|
- **Empathy-infrastructure.** Every instance is the endpoint of a reconstructible path, so an agent can understand another agent's present state in the context of how it was reached — see [`docs/empathy-in-ai.md`](./docs/empathy-in-ai.md).
|
|
@@ -298,7 +298,7 @@ This is the primitive that is currently missing in the Node.js ecosystem for bui
|
|
|
298
298
|
| Function | Purpose | Source |
|
|
299
299
|
|---|---|---|
|
|
300
300
|
| `define(name, ctor, config?)` | Create a type at module scope or as a subtype | [`src/index.ts`](./src/index.ts) |
|
|
301
|
-
| `
|
|
301
|
+
| `lookup(path)` | Type-safe runtime lookup — requires `TypeRegistry` augmentation (by hand or via [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica); see [`docs/typed-lookup.md`](./docs/typed-lookup.md)) | [`src/index.ts`](./src/index.ts) |
|
|
302
302
|
| `lookup(path)` | Untyped runtime lookup | [`src/index.ts`](./src/index.ts) |
|
|
303
303
|
| `apply(parent, Ctor, args)` / `call(...)` / `bind(...)` | Apply a constructor to a parent instance | [`src/index.ts`](./src/index.ts) |
|
|
304
304
|
| `decorate(parent?, config?)` | Class-based decorator equivalent of `define()` | [`src/index.ts`](./src/index.ts) |
|
|
@@ -418,7 +418,7 @@ For the full construction pipeline with source file references for every stage,
|
|
|
418
418
|
| `Proto<P, T>` | Merge parent and child types; child wins on key collision |
|
|
419
419
|
| `ProtoFlat<P, T>` | Flattened version used in tactica-generated types |
|
|
420
420
|
| `MnemonicaInstance` | The instance-method surface (extract, pick, parent, etc.) |
|
|
421
|
-
| `TypeRegistry` | Empty interface — tactica augments it for `
|
|
421
|
+
| `TypeRegistry` | Empty interface — tactica augments it for `lookup` |
|
|
422
422
|
| `TypeConstructor<T>` | What `define()` returns; both newable and callable |
|
|
423
423
|
| `hooksOpts<P, T>` | Shape of data passed to hook callbacks |
|
|
424
424
|
|
|
@@ -452,7 +452,8 @@ Everything below ships with this package.
|
|
|
452
452
|
1. **This file** — thesis, four data mistakes, pipeline pattern, operational reference
|
|
453
453
|
2. [`FOR_HUMANS.md`](./FOR_HUMANS.md) — gentler, example-heavy walkthrough for human developers
|
|
454
454
|
3. [`SKILL.md`](./SKILL.md) — quick reference for usage patterns
|
|
455
|
-
4. [`docs/
|
|
455
|
+
4. [`docs/prototype-chain.md`](./docs/prototype-chain.md) — how mnemonica builds the per-instance prototype chain and why the layers exist
|
|
456
|
+
5. [`docs/typed-lookup.md`](./docs/typed-lookup.md) — using `lookup()` with or without tactica (the `TypeRegistry` augmentation pattern)
|
|
456
457
|
5. [`docs/hott-primer.md`](./docs/hott-primer.md) — HoTT concepts mapped to mnemonica (monad, path types, univalence, HITs, fibrations)
|
|
457
458
|
6. [`docs/empathy-in-ai.md`](./docs/empathy-in-ai.md) — why reconstructible data lineage is infrastructure for empathetic AI
|
|
458
459
|
|
|
@@ -462,7 +463,8 @@ Everything below ships with this package.
|
|
|
462
463
|
2. [`.ai/ONBOARDING.md`](./.ai/ONBOARDING.md) — five-minute editor onboarding
|
|
463
464
|
3. [`CONTRIBUTING.md`](./CONTRIBUTING.md) — local workflow, branching, release process
|
|
464
465
|
4. [`docs/theory-of-operations.md`](./docs/theory-of-operations.md) — full construction pipeline from `define()` through `InstanceCreator` to instance return, with source file references for every stage
|
|
465
|
-
5. [`.ai/
|
|
466
|
+
5. [`.ai/PROTOTYPE-CHAIN.md`](./.ai/PROTOTYPE-CHAIN.md) — the exact shape of the prototype chain, what each layer holds, and how subtype lookup walks it
|
|
467
|
+
6. [`.ai/CODE.md`](./.ai/CODE.md), [`.ai/ARCHITECT.md`](./.ai/ARCHITECT.md), [`.ai/DEBUG.md`](./.ai/DEBUG.md) — role-specific deeper rules
|
|
466
468
|
6. [`.ai/TACTICA-DEEP-DIVE.md`](./.ai/TACTICA-DEEP-DIVE.md) — deeper tactica integration patterns
|
|
467
469
|
7. [`.ai/async_init.md`](./.ai/async_init.md) — async constructor patterns
|
|
468
470
|
8. [`.ai/rules-skill/`](./.ai/rules-skill/) — granular rules for type system, hooks, code style, errors, testing
|
|
@@ -474,7 +476,7 @@ The full TypeScript source is in [`src/`](./src/) (on GitHub; the npm package sh
|
|
|
474
476
|
|
|
475
477
|
## Companion packages on npm
|
|
476
478
|
|
|
477
|
-
- **[`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica)** — CLI/codegen utility. Scans your `define()` and `@decorate()` calls and generates the `TypeRegistry` augmentation that makes `
|
|
479
|
+
- **[`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica)** — CLI/codegen utility. Scans your `define()` and `@decorate()` calls and generates the `TypeRegistry` augmentation that makes `lookup()` fully typed. The augmentation can also be written by hand for small projects — runtime behaviour is identical either way. See [`docs/typed-lookup.md`](./docs/typed-lookup.md).
|
|
478
480
|
- **[`typeomatica`](https://www.npmjs.com/package/typeomatica)** — Runtime type enforcement via Proxy. Used with the `@Strict` decorator. Wraps property access to enforce type invariants at runtime.
|
|
479
481
|
|
|
480
482
|
Additional packages are in active development.
|
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: mnemonica-core
|
|
|
3
3
|
description: |
|
|
4
4
|
Instance inheritance system for JavaScript/TypeScript using prototype chains.
|
|
5
5
|
Use when the user mentions mnemonica, define(), prototype inheritance,
|
|
6
|
-
TypeRegistry,
|
|
6
|
+
TypeRegistry, lookup, tactica, instance inheritance, or when working
|
|
7
7
|
with the mnemonica core library. Covers: define() patterns, type-safe
|
|
8
8
|
lookup with tactica, Proxy-based architecture, hook system, async
|
|
9
9
|
constructors, strict chain validation, and 100% test coverage requirements.
|
|
@@ -16,7 +16,7 @@ metadata:
|
|
|
16
16
|
## When to use
|
|
17
17
|
|
|
18
18
|
Activate this skill when:
|
|
19
|
-
- User mentions `mnemonica`, `define()`, `
|
|
19
|
+
- User mentions `mnemonica`, `define()`, `lookup`, `TypeRegistry`
|
|
20
20
|
- User asks about prototype chain inheritance in JavaScript/TypeScript
|
|
21
21
|
- User is modifying files in `core/src/` or `core/test/`
|
|
22
22
|
- User asks about tactica-generated types or `.tactica/` directory
|
|
@@ -37,7 +37,7 @@ When the task involves adding or modifying a type definition:
|
|
|
37
37
|
|
|
38
38
|
2. **Check TypeRegistry augmentation** (if using tactica)
|
|
39
39
|
- Does `.tactica/types.ts` need updating?
|
|
40
|
-
- Is `
|
|
40
|
+
- Is `lookup('MyType')` properly typed?
|
|
41
41
|
- See [rules-skill/lookup-typed.md](.ai/rules-skill/lookup-typed.md)
|
|
42
42
|
|
|
43
43
|
3. **Test both success and error paths**
|
|
@@ -76,7 +76,7 @@ Read individual rule files for detailed explanations and code examples:
|
|
|
76
76
|
|
|
77
77
|
### Patterns
|
|
78
78
|
- [rules-skill/define-patterns.md](.ai/rules-skill/define-patterns.md) — `define()` usage, subtypes, config options
|
|
79
|
-
- [rules-skill/lookup-typed.md](.ai/rules-skill/lookup-typed.md) — `TypeRegistry`, `
|
|
79
|
+
- [rules-skill/lookup-typed.md](.ai/rules-skill/lookup-typed.md) — `TypeRegistry`, `lookup`, tactica integration
|
|
80
80
|
- [rules-skill/async-constructors.md](.ai/rules-skill/async-constructors.md) — async constructors, `awaitReturn`, chaining
|
|
81
81
|
|
|
82
82
|
### Architecture
|
|
@@ -23,4 +23,4 @@ function default_1() {
|
|
|
23
23
|
};
|
|
24
24
|
return CreateInstanceModificator;
|
|
25
25
|
}
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBV2IsNEJBdUVDO0FBdkVEO0lBRUMsTUFBTSx5QkFBeUIsR0FBRyxVQUVqQyxlQUFxQyxFQUNyQyx3QkFBc0QsRUFDdEQsU0FBMkI7UUFJM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFnQjlCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMsY0FBYyxDQUNyQixTQUFTLEVBQ1QsZ0JBQWdCLENBQ2hCLENBQUM7UUFDRixTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFJckIsTUFBTSxDQUFDLGNBQWMsQ0FDcEIsU0FBUyxFQUNULGFBQWEsRUFDYjtZQUNDLEdBQUc7Z0JBQ0YsT0FBTyxlQUFlLENBQUM7WUFDeEIsQ0FBQztZQUNELFVBQVUsRUFBRyxLQUFLO1NBQ2xCLENBQ0QsQ0FBQztRQUlGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pFLEtBQUssQ0FBQyxXQUFXLEdBQUc7WUFFbkIsS0FBSyxFQUFHLGVBQWU7U0FDdkIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDdEIsZUFBZSxDQUFDLFNBQVMsRUFDekIsS0FBSyxDQUNMLENBQUM7UUFJRixPQUFPLENBQUMsY0FBYyxDQUNyQixlQUFlLENBQUMsU0FBUyxFQUN6QixTQUFTLENBQ1QsQ0FBQztRQUVGLE9BQU8sZUFBZSxDQUFDO0lBRXhCLENBQUMsQ0FBQztJQUVGLE9BQU8seUJBQXlCLENBQUM7QUFFbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRNbmVtb25pY2FDb25zdHJ1Y3RvciwgQWRkUHJvcHNDYWxsYmFjayBcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vLyBTdGVwIDUgb2YgY29uc3RydWN0aW9uIHBpcGVsaW5lOiB0aGUgZGVmYXVsdCBNb2RpZmljYXRpb25Db25zdHJ1Y3Rvci5cbi8vIFdpcmVzIHRoZSBwcm90b3R5cGUgY2hhaW4gYnkgY3JlYXRpbmcgYSBNbmVtb3N5bmUgb2JqZWN0IGluaGVyaXRpbmdcbi8vIGZyb20gdGhlIHBhcmVudCBpbnN0YW5jZSwgYXR0YWNoaW5nIGludGVybmFsIHByb3BzLCBhbmQgbGlua2luZ1xuLy8gTW9kaWZpY2F0b3JUeXBlLnByb3RvdHlwZSB0byBpdC4gVGhpcyBpcyB3aGF0IG1ha2VzIGluc3RhbmNlb2Ygd29yay5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuXG5cdGNvbnN0IENyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3IgPSBmdW5jdGlvbiAoXG5cdFx0dGhpczogb2JqZWN0LFxuXHRcdE1vZGlmaWNhdG9yVHlwZTogTW5lbW9uaWNhQ29uc3RydWN0b3IsXG5cdFx0TW9kaWZpY2F0b3JUeXBlUHJvdG90eXBlOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LFxuXHRcdF9hZGRQcm9wczogQWRkUHJvcHNDYWxsYmFja1xuXHQpIHtcblxuXHRcdCBcblx0XHRjb25zdCBleGlzdGVudEluc3RhbmNlID0gdGhpcztcblxuXHRcdC8vIGluaGVyaXRlZFxuXHRcdC8vIFRPRE86IHN1YnR5cGUgY29uc3RydWN0b3JzIGNvdWxkIGJlIGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoaXNcblx0XHQvLyBNbmVtb3N5bmUgb2JqZWN0IGFzIG5vbi1lbnVtZXJhYmxlIGdldHRlcnMsIHdoaWNoIHdvdWxkIGxldCB1c1xuXHRcdC8vIHJlbW92ZSB0aGUgcm9vdCBNbmVtb3N5bmUgUHJveHkgZW50aXJlbHkgYW5kIHJlbHkgb24gbm9ybWFsXG5cdFx0Ly8gcHJvdG90eXBlLWNoYWluIGxvb2t1cCBmb3IgYGluc3RhbmNlLlN1YlR5cGVgLiBHZXR0ZXJzIGdpdmUgbGF6eVxuXHRcdC8vIGluaXRpYWxpemF0aW9uLCBwcmV2ZW50IGFjY2lkZW50YWwgcmUtZGVmaW5pdGlvbiwgYW5kIGxldCBlYWNoXG5cdFx0Ly8gYWNjZXNzIHJlbHkgb24gdGhlIGN1cnJlbnQgcnVudGltZSBzdGF0ZSBvZiB0aGUgdHlwZSBncmFwaFxuXHRcdC8vIChNb2RpZmljYXRvclR5cGUsIE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZSwgYW5kIGFueSBmYWN0b3JpZXMgdGhhdFxuXHRcdC8vIG1heSBwcm9kdWNlIG5ldyBmaWVsZHMgb3IgY29uc3RydWN0b3JzKS4gVGhhdCB3b3VsZCBzaW1wbGlmeVxuXHRcdC8vIHN1YnR5cGUgYWNjZXNzIGJ1dCB3b3VsZCBpbmNyZWFzZSBjeWNsb21hdGljIGNvbXBsZXhpdHkgaGVyZSBhbmRcblx0XHQvLyB3b3VsZCBsb3NlIHRoZSBhYmlsaXR5IHRvIGRlZmluZSBuZXcgc3VidHlwZXMgYWZ0ZXIgdGhlIGluc3RhbmNlXG5cdFx0Ly8gaXMgY3JlYXRlZC4gVXNlcnMgd2hvIG5lZWQgZHluYW1pYyBwb3N0LWNyZWF0aW9uIGRlZmluaXRpb25zIGNhblxuXHRcdC8vIHVzZSBgLmZvcmsoKWAgb3IgYC5jbG9uZSgpYCB0byBnZXQgZnJlc2ggaW5zdGFuY2VzIHRoYXQgY2FycnkgdGhlXG5cdFx0Ly8gdXBkYXRlZCBjb25zdHJ1Y3RvcnMgb24gdGhlaXIgY2hhaW4uXG5cdFx0Y29uc3QgTW5lbW9zeW5lID0ge307XG5cdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihcblx0XHRcdE1uZW1vc3luZSxcblx0XHRcdGV4aXN0ZW50SW5zdGFuY2Vcblx0XHQpO1xuXHRcdF9hZGRQcm9wcyhNbmVtb3N5bmUpO1xuXG5cdFx0Ly8gYWJvdXQgdG8gc2V0dXAgY29uc3RydWN0b3IgcHJvcGVydHkgZm9yIG5ldyBpbnN0YW5jZVxuXHRcdC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbmhlcml0ZWQsICdjb25zdHJ1Y3RvcicsIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoXG5cdFx0XHRNbmVtb3N5bmUsXG5cdFx0XHQnY29uc3RydWN0b3InLFxuXHRcdFx0e1xuXHRcdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRcdHJldHVybiBNb2RpZmljYXRvclR5cGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVudW1lcmFibGUgOiBmYWxzZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyBtb2RpZmljYXRpb24gaXRzZWxmXG5cdFx0Ly8gc28gbm93IHdlIGhhdmUgdG8gY29weSBhbGwgY29uc3RydWN0b3IgcHJvcHNcblx0XHRjb25zdCBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZSk7XG5cdFx0cHJvcHMuY29uc3RydWN0b3IgPSB7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIEknbSB0b28gbGF6eSBmb3IgdGhhdFxuXHRcdFx0dmFsdWUgOiBNb2RpZmljYXRvclR5cGVcblx0XHR9O1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFxuXHRcdFx0TW9kaWZpY2F0b3JUeXBlLnByb3RvdHlwZSxcblx0XHRcdHByb3BzXG5cdFx0KTtcblxuXHRcdC8vIGFuZCBzZXQgdGhlIHByb3RvdHlwZSBpbmhlcml0ZWRcblx0XHQvLyBSZWZsZWN0LnNldFByb3RvdHlwZU9mKE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsIGluaGVyaXRlZCk7XG5cdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihcblx0XHRcdE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsXG5cdFx0XHRNbmVtb3N5bmVcblx0XHQpO1xuXG5cdFx0cmV0dXJuIE1vZGlmaWNhdG9yVHlwZTtcblxuXHR9O1xuXG5cdHJldHVybiBDcmVhdGVJbnN0YW5jZU1vZGlmaWNhdG9yO1xuXG59XG4iXX0=
|
|
@@ -205,4 +205,4 @@ exports.types = {
|
|
|
205
205
|
return result;
|
|
206
206
|
}
|
|
207
207
|
};
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcnMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QsMkNBRXlCO0FBRXpCLDBEQUE0QztBQUU1QyxNQUFNLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsR0FDbkIsR0FBRyxRQUFRLENBQUM7QUFFYixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxlQUFlLEdBQUcsVUFBVyxPQUFnQztJQUVsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUczQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3ZDLENBQUUsQ0FBMEIsRUFBRSxHQUFXLEVBQUcsRUFBRTtRQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUUsR0FBRyxDQUFFLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFFLEdBQUcsQ0FBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxDQUFDO1FBQzdCLElBQUssTUFBTSxLQUFLLE1BQU0sRUFBRyxDQUFDO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLENBQUUsR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDUCxDQUFDLENBQUUsR0FBRyxD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RyxDQUFFLFNBQWtDLEVBQUUsRUFBRyxFQUFFO0lBRXhFLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFFLE1BQU0sQ0FBRSxDQUFDO0lBQ3RELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxLQUFLLENBQ3JDLGVBQWUsRUFDZiwyQkFBMkIsQ0FDM0IsQ0FBQztJQUVGLGdCQUFnQixDQUFDLEdBQUcsQ0FDbkIsZUFBZSxFQUNmLG9CQUFvQixDQUNwQixDQUFDO0lBRUYsT0FBTyxvQkFBb0IsQ0FBQztBQUU3QixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0FBQzlDLEdBQUcsQ0FDRixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCO0lBQ0MsR0FBRztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNELENBQ0QsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHO0lBQ3BCLElBQUkscUJBQXFCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLFVBQVcsU0FBa0MsRUFBRTtZQUM3RCxNQUFNLGdCQUFnQixHQUFHLHFCQUFxQixDQUFFLE1BQU0sQ0FBcUIsQ0FBQztZQUM1RSxPQUFPLGdCQUFnQixDQUFDO1FBQ3pCLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksWUFBWTtRQUNmLE1BQU0sTUFBTSxHQUFHLGFBQWdDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0NBRUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRfSW50ZXJuYWxfVENfLFxuXHRDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbixcblx0VHlwZXNDb2xsZWN0aW9uLFxuXHRob29rc09wdHMsXG5cdGhvb2tcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0U3ltYm9sQ29uZmlnLFxuXHRkZWZhdWx0T3B0aW9ucyxcblx0ZGVmYXVsdE9wdGlvbnNLZXlzLFxuXHRNTkVNT05JQ0EsXG5cdE1ORU1PU1lORSxcbn0gPSBjb25zdGFudHM7XG5cbi8vIGhlcmUgaXMgVHlwZXNDb2xsZWN0aW9uLmRlZmluZSgpIG1ldGhvZFxuaW1wb3J0IHtcblx0ZGVmaW5lLCBsb29rdXAsIHR5cGUgVHlwZXNNYXAgXG59IGZyb20gJy4uLy4uL2FwaS90eXBlcyc7XG5cbmltcG9ydCAqIGFzIGhvb2tzQVBJIGZyb20gJy4uLy4uL2FwaS9ob29rcyc7XG5cbmNvbnN0IHtcblx0cmVnaXN0ZXJIb29rLFxuXHRpbnZva2VIb29rLFxuXHRyZWdpc3RlckZsb3dDaGVja2VyLFxufSA9IGhvb2tzQVBJO1xuXG5jb25zdCB0eXBlc0NvbGxlY3Rpb25zID0gbmV3IE1hcCgpO1xuXG5jb25zdCBUeXBlc0NvbGxlY3Rpb24gPSBmdW5jdGlvbiAoIF9jb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGNvbnN0IHN1YnR5cGVzID0gbmV3IE1hcCgpO1xuXG5cdC8vIGRlZmF1bHQgY29uZmlnIGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gdHlwZXMgY29sbGVjdGlvbiBjb25maWdcblx0Y29uc3QgY29uZmlnID0gZGVmYXVsdE9wdGlvbnNLZXlzLnJlZHVjZShcblx0XHQoIG86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyApID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gX2NvbmZpZ1sga2V5IF07XG5cdFx0XHRjb25zdCBvcHRpb24gPSBkZWZhdWx0T3B0aW9uc1sga2V5IF07XG5cdFx0XHRjb25zdCB0X2NvbmYgPSB0eXBlb2YgdmFsdWU7XG5cdFx0XHRjb25zdCB0X29wdHMgPSB0eXBlb2Ygb3B0aW9uO1xuXHRcdFx0aWYgKCB0X2NvbmYgPT09IHRfb3B0cyApIHtcblx0XHRcdFx0b1sga2V5IF0gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9bIGtleSBdID0gb3B0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG87XG5cdFx0fSxcblx0XHR7fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRTeW1ib2xDb25maWcsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGNvbmZpZztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdFN5bWJvbC5oYXNJbnN0YW5jZSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSAoIGluc3RhbmNlOiB7IFtTeW1ib2xDb25zdHJ1Y3Rvck5hbWVdPzogc3RyaW5nIH0gKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2hlY2tSZXN1bHQgPSBpbnN0YW5jZVsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gPT09IE1ORU1PTklDQTtcblx0XHRcdFx0XHRyZXR1cm4gY2hlY2tSZXN1bHQ7XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHQnc3VidHlwZXMnLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBzdWJ0eXBlcztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0c3VidHlwZXMsXG5cdFx0TU5FTU9TWU5FLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHQvLyByZXR1cm5pbmcgcHJveHlcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdHlwZXNDb2xsZWN0aW9ucy5nZXQoIHNlbGYgKTtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRNTkVNT1NZTkUsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdC8vIHJldHVybmluZyBwcm94eVxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggc2VsZiApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0Y29uc3QgaG9va3MgPSBPYmplY3QuY3JlYXRlKCBudWxsICk7XG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdCdob29rcycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGhvb2tzO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cbn0gYXMgX0ludGVybmFsX1RDXzxvYmplY3Q+O1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdE1ORU1PTklDQSxcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdkZWZpbmUnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHsgc3VidHlwZXMgfSA9IHRoaXM7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoXG5cdFx0XHRcdHRoaXM6IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0XHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBDYWxsYWJsZUZ1bmN0aW9uIHwgb2JqZWN0LFxuXHRcdFx0XHRjb25maWc/OiBvYmplY3Rcblx0XHRcdCkge1xuXHRcdFx0Ly8gdGhpcyAtIGRlZmluZSBmdW5jdGlvbiBvZiBtbmVtb25pY2EgaW50ZXJmYWNlXG5cdFx0XHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IGRlZmluZS5jYWxsKFxuXHRcdFx0XHRcdHRoaXMgYXMgdW5rbm93bixcblx0XHRcdFx0XHRzdWJ0eXBlcyBhcyBUeXBlc01hcCxcblx0XHRcdFx0XHRUeXBlT3JUeXBlTmFtZSxcblx0XHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWcsXG5cdFx0XHRcdFx0Y29uZmlnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdsb29rdXAnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGZ1bmN0aW9uIChcblx0XHRcdFx0dGhpczogeyBzdWJ0eXBlczogTWFwPHN0cmluZywgb2JqZWN0PiB9LFxuXHRcdFx0XHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgbG9va3VwUmVzdWx0ID0gbG9va3VwLmNhbGwoXG4gdGhpcy5zdWJ0eXBlcyBhcyB1bmtub3duIGFzIFR5cGVzTWFwLFxuIFR5cGVOZXN0ZWRQYXRoIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gbG9va3VwUmVzdWx0O1xuXHRcdFx0fS5iaW5kKCB0aGlzICk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVySG9vaycsXG5cdHtcblx0XHRnZXQgKHRoaXM6IFR5cGVzQ29sbGVjdGlvbikge1xuXHRcdCBcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZnVuY3Rpb24gKCBob29rTmFtZTogc3RyaW5nLCBob29rQ2FsbGJhY2s6IGhvb2sgKSB7XG5cdFx0XHQvLyByZXR1cm4gcHJvdG8ucmVnaXN0ZXJIb29rLmNhbGwoIHR5cGVzQ29sbGVjdGlvbnMuZ2V0KCBzZWxmICksIGhvb2tOYW1lLCBob29rQ2FsbGJhY2sgKTtcblx0XHRcdFx0Y29uc3QgaG9va1Jlc3VsdCA9IHJlZ2lzdGVySG9vay5jYWxsKFxuXHRcdFx0XHRcdHNlbGYsXG5cdFx0XHRcdFx0aG9va05hbWUsXG5cdFx0XHRcdFx0aG9va0NhbGxiYWNrIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH0uYmluZCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdpbnZva2VIb29rJyxcblx0e1xuXHRcdGdldCAodGhpczogVHlwZXNDb2xsZWN0aW9uKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSAoIGhvb2tOYW1lOiBzdHJpbmcsIG9wdHM6IHsgW2luZGV4OiBzdHJpbmddOiB1bmtub3duIH0gKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGhvb2tSZXN1bHQgPSBpbnZva2VIb29rLmNhbGwoXG5cdFx0XHRcdFx0dHlwZXNDb2xsZWN0aW9ucy5nZXQoIHRoaXMgKSxcblx0XHRcdFx0XHRob29rTmFtZSxcbm9wdHMgYXMgaG9va3NPcHRzIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVyRmxvd0NoZWNrZXInLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiBUeXBlc0NvbGxlY3Rpb24pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9ICggZmxvd0NoZWNrZXJDYWxsYmFjazogKCkgPT4gdW5rbm93biApID0+IHtcblx0XHRcdFx0Y29uc3QgY2hlY2tlclJlc3VsdCA9IHJlZ2lzdGVyRmxvd0NoZWNrZXIuY2FsbChcblx0XHRcdFx0XHR0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApLFxuXHRcdFx0XHRcdGZsb3dDaGVja2VyQ2FsbGJhY2sgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBjaGVja2VyUmVzdWx0O1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9IFxuKTtcblxuXG5pbnRlcmZhY2UgVHlwZXNDb2xsZWN0aW9uVGFyZ2V0IHtcblx0c3VidHlwZXM6IFR5cGVzTWFwO1xuXHRkZWZpbmU6IChuYW1lOiBzdHJpbmcsIGN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IpID0+IG9iamVjdDtcbn1cblxuY29uc3QgdHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyID0ge1xuXHRnZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgcHJvcDogc3RyaW5nICkge1xuXHRcdGlmICggdGFyZ2V0LnN1YnR5cGVzLmhhcyggcHJvcCApICkge1xuXHRcdFx0Ly8gYWNjZXNzIHRvIHN1cHR5cGVcblx0XHRcdC8vIGZvciBuZXcgY2FsbCBvciBkZWZpbmluZyBuZXcgdHlwZVxuXHRcdFx0Y29uc3Qgc3VidHlwZVJlc3VsdCA9IHRhcmdldC5zdWJ0eXBlcy5nZXQoIHByb3AgKTtcblx0XHRcdHJldHVybiBzdWJ0eXBlUmVzdWx0O1xuXHRcdH1cblx0XHRpZiAoIHByb3AgPT09ICdkZWZpbmUnICkge1xuXHRcdFx0Ly8gd2lsbCBob3BlZnVsbHkgZGVmaW5lIG5ldyB0eXBlXG5cdFx0XHRyZXR1cm4gdGFyZ2V0LmRlZmluZTtcblx0XHR9XG5cdFx0Y29uc3QgcmVmbGVjdFJlc3VsdCA9IFJlZmxlY3QuZ2V0KFxuXHRcdFx0dGFyZ2V0LFxuXHRcdFx0cHJvcCBcblx0XHQpO1xuXHRcdHJldHVybiByZWZsZWN0UmVzdWx0O1xuXHR9LFxuXHRzZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgVHlwZU5hbWU6IHN0cmluZywgQ29uc3RydWN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IgKSB7XG5cdFx0dGFyZ2V0LmRlZmluZShcblx0XHRcdFR5cGVOYW1lLFxuXHRcdFx0Q29uc3RydWN0b3IgXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG5cdGdldE93blByb3BlcnR5RGVzY3JpcHRvciAoIHRhcmdldDogVHlwZXNDb2xsZWN0aW9uVGFyZ2V0LCBwcm9wOiBzdHJpbmcgKSB7XG5cdFx0aWYgKCB0YXJnZXQuc3VidHlwZXMuaGFzKCBwcm9wICkgKSB7XG5cdFx0XHRjb25zdCBkZXNjcmlwdG9yUmVzdWx0ID0ge1xuXHRcdFx0XHRjb25maWd1cmFibGUgOiB0cnVlLFxuXHRcdFx0XHRlbnVtZXJhYmxlICAgOiB0cnVlLFxuXHRcdFx0XHR3cml0YWJsZSAgICAgOiBmYWxzZSxcblx0XHRcdFx0dmFsdWUgICAgICAgIDogdGFyZ2V0LnN1YnR5cGVzLmdldCggcHJvcCApXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGRlc2NyaXB0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IG93blByb3BSZXN1bHQgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciggdGFyZ2V0LCBwcm9wICk7XG5cdFx0cmV0dXJuIG93blByb3BSZXN1bHQ7XG5cdH1cbn07XG5cbmNvbnN0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiA9ICggY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9ICkgPT4ge1xuXG5cdGNvbnN0IHR5cGVzQ29sbGVjdGlvbiA9IG5ldyBUeXBlc0NvbGxlY3Rpb24oIGNvbmZpZyApO1xuXHRjb25zdCB0eXBlc0NvbGxlY3Rpb25Qcm94eSA9IG5ldyBQcm94eShcblx0XHR0eXBlc0NvbGxlY3Rpb24sXG5cdFx0dHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyIFxuXHQpO1xuXG5cdHR5cGVzQ29sbGVjdGlvbnMuc2V0KFxuXHRcdHR5cGVzQ29sbGVjdGlvbixcblx0XHR0eXBlc0NvbGxlY3Rpb25Qcm94eSBcblx0KTtcblxuXHRyZXR1cm4gdHlwZXNDb2xsZWN0aW9uUHJveHk7XG5cbn07XG5cbmNvbnN0IERFRkFVTFRfVFlQRVMgPSBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKTtcbm9kcChcblx0REVGQVVMVF9UWVBFUyxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0gXG4pO1xuXG5leHBvcnQgY29uc3QgdHlwZXMgPSB7XG5cdGdldCBjcmVhdGVUeXBlc0NvbGxlY3Rpb24gKCk6IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uIHtcblx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSApOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvblJlc3VsdCA9IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiggY29uZmlnICkgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25SZXN1bHQ7XG5cdFx0fTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFxuXHRnZXQgZGVmYXVsdFR5cGVzICgpOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IERFRkFVTFRfVFlQRVMgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxufTtcbiJdfQ==
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcnMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QsMkNBRXlCO0FBRXpCLDBEQUE0QztBQUU1QyxNQUFNLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsR0FDbkIsR0FBRyxRQUFRLENBQUM7QUFFYixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxlQUFlLEdBQUcsVUFBVyxPQUFnQztJQUVsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUczQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3ZDLENBQUUsQ0FBMEIsRUFBRSxHQUFXLEVBQUcsRUFBRTtRQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUUsR0FBRyxDQUFFLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFFLEdBQUcsQ0FBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxDQUFDO1FBQzdCLElBQUssTUFBTSxLQUFLLE1BQU0sRUFBRyxDQUFDO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLENBQUUsR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDUCxDQUFDLENBQUUsR0FBRyxD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RyxDQUFFLFNBQWtDLEVBQUUsRUFBRyxFQUFFO0lBRXhFLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFFLE1BQU0sQ0FBRSxDQUFDO0lBQ3RELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxLQUFLLENBQ3JDLGVBQWUsRUFDZiwyQkFBMkIsQ0FDM0IsQ0FBQztJQUVGLGdCQUFnQixDQUFDLEdBQUcsQ0FDbkIsZUFBZSxFQUNmLG9CQUFvQixDQUNwQixDQUFDO0lBRUYsT0FBTyxvQkFBb0IsQ0FBQztBQUU3QixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0FBQzlDLEdBQUcsQ0FDRixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCO0lBQ0MsR0FBRztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNELENBQ0QsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHO0lBQ3BCLElBQUkscUJBQXFCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLFVBQVcsU0FBa0MsRUFBRTtZQUM3RCxNQUFNLGdCQUFnQixHQUFHLHFCQUFxQixDQUFFLE1BQU0sQ0FBcUIsQ0FBQztZQUM1RSxPQUFPLGdCQUFnQixDQUFDO1FBQ3pCLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksWUFBWTtRQUNmLE1BQU0sTUFBTSxHQUFHLGFBQWdDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0NBRUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRfSW50ZXJuYWxfVENfLFxuXHRDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbixcblx0VHlwZXNDb2xsZWN0aW9uLFxuXHRob29rc09wdHMsXG5cdGhvb2tcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0U3ltYm9sQ29uZmlnLFxuXHRkZWZhdWx0T3B0aW9ucyxcblx0ZGVmYXVsdE9wdGlvbnNLZXlzLFxuXHRNTkVNT05JQ0EsXG5cdE1ORU1PU1lORSxcbn0gPSBjb25zdGFudHM7XG5cbi8vIGhlcmUgaXMgVHlwZXNDb2xsZWN0aW9uLmRlZmluZSgpIG1ldGhvZFxuaW1wb3J0IHtcblx0ZGVmaW5lLCBsb29rdXAsIHR5cGUgVHlwZXNNYXAgXG59IGZyb20gJy4uLy4uL2FwaS90eXBlcyc7XG5cbmltcG9ydCAqIGFzIGhvb2tzQVBJIGZyb20gJy4uLy4uL2FwaS9ob29rcyc7XG5cbmNvbnN0IHtcblx0cmVnaXN0ZXJIb29rLFxuXHRpbnZva2VIb29rLFxuXHRyZWdpc3RlckZsb3dDaGVja2VyLFxufSA9IGhvb2tzQVBJO1xuXG5jb25zdCB0eXBlc0NvbGxlY3Rpb25zID0gbmV3IE1hcCgpO1xuXG5jb25zdCBUeXBlc0NvbGxlY3Rpb24gPSBmdW5jdGlvbiAoIF9jb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGNvbnN0IHN1YnR5cGVzID0gbmV3IE1hcCgpO1xuXG5cdC8vIGRlZmF1bHQgY29uZmlnIGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gdHlwZXMgY29sbGVjdGlvbiBjb25maWdcblx0Y29uc3QgY29uZmlnID0gZGVmYXVsdE9wdGlvbnNLZXlzLnJlZHVjZShcblx0XHQoIG86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyApID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gX2NvbmZpZ1sga2V5IF07XG5cdFx0XHRjb25zdCBvcHRpb24gPSBkZWZhdWx0T3B0aW9uc1sga2V5IF07XG5cdFx0XHRjb25zdCB0X2NvbmYgPSB0eXBlb2YgdmFsdWU7XG5cdFx0XHRjb25zdCB0X29wdHMgPSB0eXBlb2Ygb3B0aW9uO1xuXHRcdFx0aWYgKCB0X2NvbmYgPT09IHRfb3B0cyApIHtcblx0XHRcdFx0b1sga2V5IF0gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9bIGtleSBdID0gb3B0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG87XG5cdFx0fSxcblx0XHR7fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRTeW1ib2xDb25maWcsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGNvbmZpZztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdFN5bWJvbC5oYXNJbnN0YW5jZSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSAoIGluc3RhbmNlOiB7IFtTeW1ib2xDb25zdHJ1Y3Rvck5hbWVdPzogc3RyaW5nIH0gKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2hlY2tSZXN1bHQgPSBpbnN0YW5jZVsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gPT09IE1ORU1PTklDQTtcblx0XHRcdFx0XHRyZXR1cm4gY2hlY2tSZXN1bHQ7XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHQnc3VidHlwZXMnLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBzdWJ0eXBlcztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0c3VidHlwZXMsXG5cdFx0TU5FTU9TWU5FLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHQvLyByZXR1cm5pbmcgcHJveHlcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdHlwZXNDb2xsZWN0aW9ucy5nZXQoIHNlbGYgKTtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRNTkVNT1NZTkUsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdC8vIHJldHVybmluZyBwcm94eVxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggc2VsZiApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0Y29uc3QgaG9va3MgPSBPYmplY3QuY3JlYXRlKCBudWxsICk7XG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdCdob29rcycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGhvb2tzO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cbn0gYXMgX0ludGVybmFsX1RDXzxvYmplY3Q+O1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdE1ORU1PTklDQSxcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdkZWZpbmUnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHsgc3VidHlwZXMgfSA9IHRoaXM7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoXG5cdFx0XHRcdHRoaXM6IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0XHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBDYWxsYWJsZUZ1bmN0aW9uIHwgb2JqZWN0LFxuXHRcdFx0XHRjb25maWc/OiBvYmplY3Rcblx0XHRcdCkge1xuXHRcdFx0Ly8gdGhpcyAtIGRlZmluZSBmdW5jdGlvbiBvZiBtbmVtb25pY2EgaW50ZXJmYWNlXG5cdFx0XHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IGRlZmluZS5jYWxsKFxuXHRcdFx0XHRcdHRoaXMgYXMgdW5rbm93bixcblx0XHRcdFx0XHRzdWJ0eXBlcyBhcyBUeXBlc01hcCxcblx0XHRcdFx0XHRUeXBlT3JUeXBlTmFtZSxcblx0XHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWcsXG5cdFx0XHRcdFx0Y29uZmlnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdsb29rdXAnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGZ1bmN0aW9uIChcblx0XHRcdFx0dGhpczogeyBzdWJ0eXBlczogTWFwPHN0cmluZywgb2JqZWN0PiB9LFxuXHRcdFx0XHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgbG9va3VwUmVzdWx0ID0gbG9va3VwLmNhbGwoXG4gdGhpcy5zdWJ0eXBlcyBhcyB1bmtub3duIGFzIFR5cGVzTWFwLFxuIFR5cGVOZXN0ZWRQYXRoIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gbG9va3VwUmVzdWx0O1xuXHRcdFx0fS5iaW5kKCB0aGlzICk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVySG9vaycsXG5cdHtcblx0XHRnZXQgKHRoaXM6IFR5cGVzQ29sbGVjdGlvbikge1xuXHRcdCBcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZnVuY3Rpb24gKCBob29rTmFtZTogc3RyaW5nLCBob29rQ2FsbGJhY2s6IGhvb2sgKSB7XG5cdFx0XHQvLyByZXR1cm4gcHJvdG8ucmVnaXN0ZXJIb29rLmNhbGwoIHR5cGVzQ29sbGVjdGlvbnMuZ2V0KCBzZWxmICksIGhvb2tOYW1lLCBob29rQ2FsbGJhY2sgKTtcblx0XHRcdFx0Y29uc3QgaG9va1Jlc3VsdCA9IHJlZ2lzdGVySG9vay5jYWxsKFxuXHRcdFx0XHRcdHNlbGYsXG5cdFx0XHRcdFx0aG9va05hbWUsXG5cdFx0XHRcdFx0aG9va0NhbGxiYWNrIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH0uYmluZCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdpbnZva2VIb29rJyxcblx0e1xuXHRcdGdldCAodGhpczogVHlwZXNDb2xsZWN0aW9uKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSAoIGhvb2tOYW1lOiBzdHJpbmcsIG9wdHM6IHsgW2luZGV4OiBzdHJpbmddOiB1bmtub3duIH0gKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGhvb2tSZXN1bHQgPSBpbnZva2VIb29rLmNhbGwoXG5cdFx0XHRcdFx0dHlwZXNDb2xsZWN0aW9ucy5nZXQoIHRoaXMgKSxcblx0XHRcdFx0XHRob29rTmFtZSxcbm9wdHMgYXMgaG9va3NPcHRzIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVyRmxvd0NoZWNrZXInLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiBUeXBlc0NvbGxlY3Rpb24pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9ICggZmxvd0NoZWNrZXJDYWxsYmFjazogKCkgPT4gdW5rbm93biApID0+IHtcblx0XHRcdFx0Y29uc3QgY2hlY2tlclJlc3VsdCA9IHJlZ2lzdGVyRmxvd0NoZWNrZXIuY2FsbChcblx0XHRcdFx0XHR0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApLFxuXHRcdFx0XHRcdGZsb3dDaGVja2VyQ2FsbGJhY2sgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBjaGVja2VyUmVzdWx0O1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9IFxuKTtcblxuXG5pbnRlcmZhY2UgVHlwZXNDb2xsZWN0aW9uVGFyZ2V0IHtcblx0c3VidHlwZXM6IFR5cGVzTWFwO1xuXHRkZWZpbmU6IChuYW1lOiBzdHJpbmcsIGN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IpID0+IG9iamVjdDtcbn1cblxuY29uc3QgdHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyID0ge1xuXHRnZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgcHJvcDogc3RyaW5nICkge1xuXHRcdGlmICggdGFyZ2V0LnN1YnR5cGVzLmhhcyggcHJvcCApICkge1xuXHRcdFx0Ly8gYWNjZXNzIHRvIHN1YnR5cGVcblx0XHRcdC8vIGZvciBuZXcgY2FsbCBvciBkZWZpbmluZyBuZXcgdHlwZVxuXHRcdFx0Y29uc3Qgc3VidHlwZVJlc3VsdCA9IHRhcmdldC5zdWJ0eXBlcy5nZXQoIHByb3AgKTtcblx0XHRcdHJldHVybiBzdWJ0eXBlUmVzdWx0O1xuXHRcdH1cblx0XHRpZiAoIHByb3AgPT09ICdkZWZpbmUnICkge1xuXHRcdFx0Ly8gd2lsbCBob3BlZnVsbHkgZGVmaW5lIG5ldyB0eXBlXG5cdFx0XHRyZXR1cm4gdGFyZ2V0LmRlZmluZTtcblx0XHR9XG5cdFx0Y29uc3QgcmVmbGVjdFJlc3VsdCA9IFJlZmxlY3QuZ2V0KFxuXHRcdFx0dGFyZ2V0LFxuXHRcdFx0cHJvcCBcblx0XHQpO1xuXHRcdHJldHVybiByZWZsZWN0UmVzdWx0O1xuXHR9LFxuXHRzZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgVHlwZU5hbWU6IHN0cmluZywgQ29uc3RydWN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IgKSB7XG5cdFx0dGFyZ2V0LmRlZmluZShcblx0XHRcdFR5cGVOYW1lLFxuXHRcdFx0Q29uc3RydWN0b3IgXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG5cdGdldE93blByb3BlcnR5RGVzY3JpcHRvciAoIHRhcmdldDogVHlwZXNDb2xsZWN0aW9uVGFyZ2V0LCBwcm9wOiBzdHJpbmcgKSB7XG5cdFx0aWYgKCB0YXJnZXQuc3VidHlwZXMuaGFzKCBwcm9wICkgKSB7XG5cdFx0XHRjb25zdCBkZXNjcmlwdG9yUmVzdWx0ID0ge1xuXHRcdFx0XHRjb25maWd1cmFibGUgOiB0cnVlLFxuXHRcdFx0XHRlbnVtZXJhYmxlICAgOiB0cnVlLFxuXHRcdFx0XHR3cml0YWJsZSAgICAgOiBmYWxzZSxcblx0XHRcdFx0dmFsdWUgICAgICAgIDogdGFyZ2V0LnN1YnR5cGVzLmdldCggcHJvcCApXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGRlc2NyaXB0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IG93blByb3BSZXN1bHQgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciggdGFyZ2V0LCBwcm9wICk7XG5cdFx0cmV0dXJuIG93blByb3BSZXN1bHQ7XG5cdH1cbn07XG5cbmNvbnN0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiA9ICggY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9ICkgPT4ge1xuXG5cdGNvbnN0IHR5cGVzQ29sbGVjdGlvbiA9IG5ldyBUeXBlc0NvbGxlY3Rpb24oIGNvbmZpZyApO1xuXHRjb25zdCB0eXBlc0NvbGxlY3Rpb25Qcm94eSA9IG5ldyBQcm94eShcblx0XHR0eXBlc0NvbGxlY3Rpb24sXG5cdFx0dHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyIFxuXHQpO1xuXG5cdHR5cGVzQ29sbGVjdGlvbnMuc2V0KFxuXHRcdHR5cGVzQ29sbGVjdGlvbixcblx0XHR0eXBlc0NvbGxlY3Rpb25Qcm94eSBcblx0KTtcblxuXHRyZXR1cm4gdHlwZXNDb2xsZWN0aW9uUHJveHk7XG5cbn07XG5cbmNvbnN0IERFRkFVTFRfVFlQRVMgPSBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKTtcbm9kcChcblx0REVGQVVMVF9UWVBFUyxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0gXG4pO1xuXG5leHBvcnQgY29uc3QgdHlwZXMgPSB7XG5cdGdldCBjcmVhdGVUeXBlc0NvbGxlY3Rpb24gKCk6IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uIHtcblx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSApOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvblJlc3VsdCA9IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiggY29uZmlnICkgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25SZXN1bHQ7XG5cdFx0fTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFxuXHRnZXQgZGVmYXVsdFR5cGVzICgpOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IERFRkFVTFRfVFlQRVMgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxufTtcbiJdfQ==
|
package/build/index.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import type { CreateTypesCollectionFunction, IDEF, hook, hooksTypes, constructorOptions, Proto, Constructor, DecoratedClass, TypeClass, TypeAbsorber, MnemonicaModule,
|
|
1
|
+
import type { CreateTypesCollectionFunction, IDEF, hook, hooksTypes, constructorOptions, Proto, Constructor, DecoratedClass, TypeClass, TypeAbsorber, MnemonicaModule, InstanceResult, Merge } from './types';
|
|
2
2
|
export declare const isClass: (fn: import("./api/types/compileNewModificatorFunctionBody").ConstructHandler) => boolean, findSubTypeFromParent: (instance: import("./api/utils/index").parentSub | object | undefined, subType: string) => import("./api/utils/index").parentSub | null;
|
|
3
|
-
export type { IDEF, TypeConstructor, _Internal_TC_, Proto, ProtoFlat, hooksOpts, hook, hooksTypes, TypesCollection } from './types';
|
|
3
|
+
export type { IDEF, TypeConstructor, TypeConstructorBase, InstanceOfTypeRegistry, LiteralKeysOf, ParentPath, PathOfInstance, AllParentPrefixes, ParentPathOfInstance, _Internal_TC_, Proto, ProtoFlat, hooksOpts, hook, hooksTypes, TypesCollection } from './types';
|
|
4
|
+
export interface TypeRegistry {
|
|
5
|
+
}
|
|
4
6
|
export { getProps, setProps } from './api/types/Props';
|
|
5
7
|
export declare const defaultTypes: import("./types").TypesCollection;
|
|
6
8
|
export declare const define: TypeAbsorber;
|
|
7
|
-
export declare
|
|
8
|
-
export
|
|
9
|
-
[key: string]: TypeConstructor<never>;
|
|
10
|
-
}
|
|
11
|
-
export declare const lookupTyped: <const K extends keyof TypeRegistry>(this: unknown, TypeNestedPath: K) => TypeRegistry[K];
|
|
9
|
+
export declare function lookup<const K extends keyof TypeRegistry>(this: unknown, TypeNestedPath: K): TypeRegistry[K] | undefined;
|
|
10
|
+
export declare function lookup(this: unknown, TypeNestedPath: string): TypeClass | undefined;
|
|
12
11
|
export declare const apply: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>, args?: unknown[]) => InstanceResult<Merge<E, T>>;
|
|
13
12
|
export declare const call: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>, ...args: unknown[]) => InstanceResult<Merge<E, T>>;
|
|
14
13
|
export declare const bind: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>) => (...args: unknown[]) => InstanceResult<Merge<E, T>>;
|
package/build/index.js
CHANGED
|
@@ -37,7 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
var _a;
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.defineStackCleaner = exports.utils = exports.errors = exports.defaultCollection = exports.createTypesCollection = exports.ErrorMessages = exports.TYPE_TITLE_PREFIX = exports.MNEMOSYNE = exports.MNEMONICA = exports.SymbolConfig = exports.SymbolDefaultTypesCollection = exports.SymbolConstructorName = exports.SymbolParentType = exports._lookup = exports._define = exports.mnemonica = exports.registerHook = exports.decorate = exports.bind = exports.call = exports.apply = exports.
|
|
40
|
+
exports.defineStackCleaner = exports.utils = exports.errors = exports.defaultCollection = exports.createTypesCollection = exports.ErrorMessages = exports.TYPE_TITLE_PREFIX = exports.MNEMOSYNE = exports.MNEMONICA = exports.SymbolConfig = exports.SymbolDefaultTypesCollection = exports.SymbolConstructorName = exports.SymbolParentType = exports._lookup = exports._define = exports.mnemonica = exports.registerHook = exports.decorate = exports.bind = exports.call = exports.apply = exports.define = exports.defaultTypes = exports.setProps = exports.getProps = exports.findSubTypeFromParent = exports.isClass = void 0;
|
|
41
|
+
exports.lookup = lookup;
|
|
41
42
|
const index_1 = __importDefault(require("./api/utils/index"));
|
|
42
43
|
exports.isClass = index_1.default.isClass, exports.findSubTypeFromParent = index_1.default.findSubTypeFromParent;
|
|
43
44
|
var Props_1 = require("./api/types/Props");
|
|
@@ -61,19 +62,11 @@ exports.define = function (TypeName, constructHandler, config) {
|
|
|
61
62
|
.define(TypeName, constructHandler, config);
|
|
62
63
|
return defineResult;
|
|
63
64
|
};
|
|
64
|
-
|
|
65
|
+
function lookup(TypeNestedPath) {
|
|
65
66
|
const types = checkThis(this) ? exports.defaultTypes : this || exports.defaultTypes;
|
|
66
67
|
const lookupResult = types.lookup(TypeNestedPath);
|
|
67
68
|
return lookupResult;
|
|
68
|
-
}
|
|
69
|
-
exports.lookup = lookup;
|
|
70
|
-
const lookupTyped = function (TypeNestedPath) {
|
|
71
|
-
const types = checkThis(this) ? exports.defaultTypes : this || exports.defaultTypes;
|
|
72
|
-
const lookupResult = types
|
|
73
|
-
.lookup(TypeNestedPath);
|
|
74
|
-
return lookupResult;
|
|
75
|
-
};
|
|
76
|
-
exports.lookupTyped = lookupTyped;
|
|
69
|
+
}
|
|
77
70
|
const $run = function (entity, Ctor, args) {
|
|
78
71
|
const { TypeName } = Ctor;
|
|
79
72
|
const Cstr = prepareSubtypeForConstruction(TypeName, entity);
|
|
@@ -130,7 +123,7 @@ const registerHook = function (Ctor, hookType, cb) {
|
|
|
130
123
|
};
|
|
131
124
|
exports.registerHook = registerHook;
|
|
132
125
|
exports.mnemonica = Object.entries(Object.assign(Object.assign(Object.assign({ define: exports.define,
|
|
133
|
-
lookup
|
|
126
|
+
lookup,
|
|
134
127
|
apply: exports.apply,
|
|
135
128
|
call: exports.call,
|
|
136
129
|
bind: exports.bind,
|
|
@@ -155,4 +148,4 @@ var utils_1 = require("./utils");
|
|
|
155
148
|
Object.defineProperty(exports, "utils", { enumerable: true, get: function () { return utils_1.utils; } });
|
|
156
149
|
var utils_2 = require("./utils");
|
|
157
150
|
Object.defineProperty(exports, "defineStackCleaner", { enumerable: true, get: function () { return utils_2.defineStackCleaner; } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JiLDhEQUEyQztBQUUxQyxlQUFPLEdBRUosZUFBVSxVQURiLDZCQUFxQixHQUNsQixlQUFVLHVCQUFDO0FBTWYsMkNBRTJCO0FBRDFCLGlHQUFBLFFBQVEsT0FBQTtBQUFFLGlHQUFBLFFBQVEsT0FBQTtBQUduQiwyQ0FBd0M7QUFDeEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLHFCQUFTLENBQUM7QUFFMUIsd0RBQTBDO0FBQzFDLCtDQUE0QztBQUU1QyxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUUvRCxzRUFBK0M7QUFDL0MsTUFBTSxFQUFFLDZCQUE2QixFQUFFLEdBQUcsbUJBQVUsQ0FBQztBQUV0QyxvQkFBWSxHQUFNLHlCQUFXLGNBQUM7QUFFN0MsU0FBUyxTQUFTLENBQUMsT0FBb0Q7SUFDdEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLGlCQUFTLElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQztJQUM1RCxPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUM7QUFJWSxRQUFBLE1BQU0sR0FBRyxVQVNyQixRQUFzRCxFQUV0RCxnQkFBa0YsRUFDbEYsTUFBMkI7SUFFM0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksb0JBQVksQ0FBQztJQUVwRSxNQUFNLFlBQVksR0FBSSxLQUFrQztTQUN0RCxNQUFNLENBQ04sUUFBa0IsRUFDbEIsZ0JBQTJCLEVBQzNCLE1BQU0sQ0FDVSxDQUFDO0lBQ25CLE9BQU8sWUFBWSxDQUFDO0FBQ3JCLENBQWlCLENBQUM7QUFFWCxNQUFNLE1B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LENBQUUsR0FBRyxLQUFLLENBQUM7SUFDN0IsR0FBRyxDQUNGLEdBQUcsRUFDSCxJQUFJLEVBQ0o7UUFDQyxHQUFHO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO1FBQ0QsVUFBVSxFQUFHLElBQUk7S0FDakIsQ0FDRCxDQUFDO0lBQ0YsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLEVBQ0QsRUFBRSxDQUNpQixDQUFDO0FBRXJCLDJDQUE2QjtBQUVoQixLQUdULEdBQUcsQ0FBQyxLQUFLLEVBRkosZUFBTyxjQUNQLGVBQU8sYUFDRjtBQUliLHdCQUFnQixHQVNiLGlCQUFTLG1CQVJaLDZCQUFxQixHQVFsQixpQkFBUyx3QkFQWixvQ0FBNEIsR0FPekIsaUJBQVMsK0JBTlosb0JBQVksR0FNVCxpQkFBUyxlQUxaLGlCQUFTLEdBS04saUJBQVMsWUFKWixpQkFBUyxHQUlOLGlCQUFTLFlBSFoseUJBQWlCLEdBR2QsaUJBQVMsb0JBRloscUJBQWEsR0FFVixpQkFBUyxlQUFDO0FBR0QsUUFBQSxxQkFBcUIsR0FDakMsaUJBQVMsQ0FBQyxxQkFBc0QsQ0FBQztBQUdyRCxRQUFBLGlCQUFpQixHQUFJLG9CQUFrRCxDQUFDLFFBQVEsQ0FBQztBQUNqRixRQUFBLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUU5QyxpQ0FBZ0M7QUFBdkIsOEZBQUEsS0FBSyxPQUFBO0FBQ2QsaUNBQTZDO0FBQXBDLDJHQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG4ndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHtcblx0Q3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb24sXG5cdElERUYsXG5cdGhvb2ssXG5cdGhvb2tzVHlwZXMsXG5cdGNvbnN0cnVjdG9yT3B0aW9ucyxcblx0UHJvdG8sXG5cdElEZWZpbml0b3JJbnN0YW5jZSxcblx0Q29uc3RydWN0b3IsXG5cdERlY29yYXRlZENsYXNzLFxuXHRUeXBlQ2xhc3MsXG5cdFR5cGVBYnNvcmJlcixcblx0TW5lbW9uaWNhTW9kdWxlLFxuXHRUeXBlQ29uc3RydWN0b3IsXG5cdEluc3RhbmNlUmVzdWx0LFxuXHRNZXJnZVxufSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi9hcGkvdXRpbHMvaW5kZXgnO1xuZXhwb3J0IGNvbnN0IHtcblx0aXNDbGFzcyxcblx0ZmluZFN1YlR5cGVGcm9tUGFyZW50LFxufSA9IFR5cGVzVXRpbHM7XG5cbmV4cG9ydCB0eXBlIHtcblx0SURFRiwgVHlwZUNvbnN0cnVjdG9yLCBfSW50ZXJuYWxfVENfLCBQcm90bywgUHJvdG9GbGF0LFxuXHRob29rc09wdHMsIGhvb2ssIGhvb2tzVHlwZXMsIFR5cGVzQ29sbGVjdGlvblxufSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7XG5cdGdldFByb3BzLCBzZXRQcm9wcyBcbn0gZnJvbSAnLi9hcGkvdHlwZXMvUHJvcHMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCB7IG9kcCB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgKiBhcyBlcnJvcnNBcGkgZnJvbSAnLi9hcGkvZXJyb3JzJztcbmltcG9ydCB7IGRlc2NyaXB0b3JzIH0gZnJvbSAnLi9kZXNjcmlwdG9ycyc7XG5cbmNvbnN0IHsgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4gfSA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5pbXBvcnQgbW5lbW9zeW5lcyBmcm9tICcuL2FwaS90eXBlcy9NbmVtb3N5bmUnO1xuY29uc3QgeyBwcmVwYXJlU3VidHlwZUZvckNvbnN0cnVjdGlvbiB9ID0gbW5lbW9zeW5lcztcblxuZXhwb3J0IGNvbnN0IHsgZGVmYXVsdFR5cGVzLCB9ID0gZGVzY3JpcHRvcnM7XG5cbmZ1bmN0aW9uIGNoZWNrVGhpcyhwb2ludGVyOiB0eXBlb2YgbW5lbW9uaWNhIHwgdHlwZW9mIGV4cG9ydHMgfCB1bmtub3duKTogYm9vbGVhbiB7XG5cdGNvbnN0IHJlc3VsdCA9IHBvaW50ZXIgPT09IG1uZW1vbmljYSB8fCBwb2ludGVyID09PSBleHBvcnRzO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5cbi8vIERlZmluZSBmdW5jdGlvbiB1c2luZyBUeXBlQWJzb3JiZXIgaW50ZXJmYWNlIHdpdGggcHJvcGVyIHR5cGUgY2FzdGluZ1xuZXhwb3J0IGNvbnN0IGRlZmluZSA9IGZ1bmN0aW9uIDxcblx0VCBleHRlbmRzIG9iamVjdCxcblx0UCBleHRlbmRzIG9iamVjdCA9IG9iamVjdCxcblx0TiBleHRlbmRzIFByb3RvPFAsIFQ+ID0gUHJvdG88UCwgVD4sXG5cblx0Ly8gaGVyZSBJRGVmaW5pdG9ySW5zdGFuY2UgaXMgYSBDT05TVFJVQ1RPUiAhISFcblx0UiBleHRlbmRzIElEZWZpbml0b3JJbnN0YW5jZTxOPiA9IElEZWZpbml0b3JJbnN0YW5jZTxOPlxuPihcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5hbWU/OiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uIHwgTmV3YWJsZUZ1bmN0aW9uLFxuXHQvLyBBbGxvdyBib3RoIHN0cmljdCBJREVGIGFuZCBtb3JlIGZsZXhpYmxlIGZ1bmN0aW9uIHNpZ25hdHVyZXNcblx0Y29uc3RydWN0SGFuZGxlcj86IElERUY8VD4gfCBDYWxsYWJsZUZ1bmN0aW9uIHwgTmV3YWJsZUZ1bmN0aW9uIHwgb2JqZWN0IHwgYm9vbGVhbixcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zLFxuKTogUiB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdC8vIFR5cGUgYXNzZXJ0aW9uIG5lZWRlZCBiZWNhdXNlIFR5cGVzQ29sbGVjdGlvblByb3h5IGlzIGEgUHJveHlcblx0Y29uc3QgZGVmaW5lUmVzdWx0ID0gKHR5cGVzIGFzIHsgZGVmaW5lOiBUeXBlQWJzb3JiZXIgfSlcblx0XHQuZGVmaW5lKFxuXHRcdFx0VHlwZU5hbWUgYXMgc3RyaW5nLFxuXHRcdFx0Y29uc3RydWN0SGFuZGxlciBhcyBJREVGPFQ+LFxuXHRcdFx0Y29uZmlnXG5cdFx0KSBhcyB1bmtub3duIGFzIFI7XG5cdHJldHVybiBkZWZpbmVSZXN1bHQ7XG59IGFzIFR5cGVBYnNvcmJlcjtcblxuZXhwb3J0IGNvbnN0IGxvb2t1cCA9IGZ1bmN0aW9uIChcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5lc3RlZFBhdGg6IHN0cmluZ1xuKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRjb25zdCBsb29rdXBSZXN1bHQgPSAodHlwZXMgYXMgeyBsb29rdXA6IChwYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB9KS5sb29rdXAoVHlwZU5lc3RlZFBhdGgpO1xuXHRyZXR1cm4gbG9va3VwUmVzdWx0O1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IFR5cGVSZWdpc3RyeSBpbnRlcmZhY2UgLSBhdWdtZW50IHRoaXMgaW4geW91ciBwcm9qZWN0IHZpYVxuICogVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBtZXJnaW5nLiBUaGUgYXVnbWVudGF0aW9uIGNhbiBiZSBoYW5kLXdyaXR0ZW5cbiAqIGluIGEgLmQudHMgZmlsZSAoc21hbGwgcHJvamVjdHMpIG9yIGdlbmVyYXRlZCBieSBAbW5lbW9uaWNhL3RhY3RpY2EuXG4gKlxuICogVXNlcyBgVHlwZUNvbnN0cnVjdG9yPG5ldmVyPmAgYXMgdGhlIGluZGV4IHZhbHVlIHR5cGUgdG8gZW5mb3JjZVxuICogYXVnbWVudGF0aW9uOiB3aXRob3V0IGl0LCBhbnkga2V5IGxvb2t1cCByZXNvbHZlcyB0byBhIHVzZWxlc3MgdHlwZVxuICogYmVjYXVzZSBgVHlwZUNvbnN0cnVjdG9yPG5ldmVyPmAgaXMgbm90IGFzc2lnbmFibGUgdG8gY29uY3JldGUgdHlwZXMuXG4gKlxuICogRXhhbXBsZSAoaW4gYSBoYW5kLXdyaXR0ZW4gLmQudHMsIG9yIGdlbmVyYXRlZCBieSB0YWN0aWNhIGluXG4gKiAudGFjdGljYS9yZWdpc3RyeS50cyk6XG4gKiAgIGRlY2xhcmUgbW9kdWxlICdtbmVtb25pY2EnIHtcbiAqICAgICBpbnRlcmZhY2UgVHlwZVJlZ2lzdHJ5IHtcbiAqICAgICAgICdNeVR5cGUnOiBuZXcgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gTXlUeXBlSW5zdGFuY2U7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICogU2VlIGRvY3MvdHlwZWQtbG9va3VwLm1kIGZvciBib3RoIHBhdGhzIHNpZGUgYnkgc2lkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlUmVnaXN0cnkge1xuXHRba2V5OiBzdHJpbmddOiBUeXBlQ29uc3RydWN0b3I8bmV2ZXI+O1xufVxuXG4vKipcbiAqIFR5cGUtc2FmZSBsb29rdXAgZnVuY3Rpb24uIFJlcXVpcmVzIGEgVHlwZVJlZ2lzdHJ5IGF1Z21lbnRhdGlvbiDigJRcbiAqIGhhbmQtd3JpdHRlbiBpbiBhIC5kLnRzIChzbWFsbCBwcm9qZWN0cykgb3IgZ2VuZXJhdGVkIGJ5XG4gKiBAbW5lbW9uaWNhL3RhY3RpY2EgKGF1dG8tc3luY2VkIGZyb20geW91ciBkZWZpbmUoKSBjYWxscykuXG4gKlxuICogQXQgcnVudGltZSB0aGlzIGRlbGVnYXRlcyB0byBsb29rdXAoKS4gVGhlIHR5cGUgc2FmZXR5IGlzXG4gKiBjb21waWxlLXRpbWUgb25seTogVHlwZVNjcmlwdCByZXNvbHZlcyB0aGUga2V5IGFnYWluc3QgdGhlIGF1Z21lbnRlZFxuICogVHlwZVJlZ2lzdHJ5IGFuZCByZXR1cm5zIHRoZSBjb25zdHJ1Y3RvcidzIHR5cGUgc2lnbmF0dXJlLlxuICpcbiAqIFVzYWdlIChvbmNlIFR5cGVSZWdpc3RyeSBpcyBhdWdtZW50ZWQpOlxuICogICBjb25zdCBTb21lVHlwZSA9IGxvb2t1cFR5cGVkKCdTb21lVHlwZScpO1xuICogICBjb25zdCBpbnN0YW5jZSA9IG5ldyBTb21lVHlwZSh7IC4uLiB9KTsgLy8gRnVsbCB0eXBlIHNhZmV0eSFcbiAqXG4gKiBTZWUgZG9jcy90eXBlZC1sb29rdXAubWQgZm9yIGJvdGggYXVnbWVudGF0aW9uIHBhdGhzIHNpZGUgYnkgc2lkZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvb2t1cFR5cGVkID0gZnVuY3Rpb24gPFxuXHRjb25zdCBLIGV4dGVuZHMga2V5b2YgVHlwZVJlZ2lzdHJ5XG4+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmVzdGVkUGF0aDogS1xuKTogVHlwZVJlZ2lzdHJ5W0tdICB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdGNvbnN0IGxvb2t1cFJlc3VsdCA9ICh0eXBlcyBhcyB7IGxvb2t1cDogKHBhdGg6IHN0cmluZykgPT4gdW5rbm93biB9KVxuXHRcdC5sb29rdXAoVHlwZU5lc3RlZFBhdGggYXMgc3RyaW5nKSBhcyBUeXBlUmVnaXN0cnlbS107XG5cdHJldHVybiBsb29rdXBSZXN1bHQ7XG59O1xuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cblx0Ly8gZGVidWdnZXI7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBleHRyYWN0aW5nIFR5cGVOYW1lIGZyb20gZnVuY3Rpb25cblx0Y29uc3QgeyBUeXBlTmFtZSB9ID0gQ3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFxuXHRcdFR5cGVOYW1lLFxuXHRcdGVudGl0eVxuXHQpIGFzIHVua25vd24gYXMgeyBuZXcoLi4uYXJzOiB1bmtub3duW10pOiB1bmtub3duIH07XG5cdC8vIFRPRE86IGNoZWNrIGxpbmVzIGJlbG93IGFuZCBpZiBDb25zdHJ1Y3RvciBpcyBub3QgbW5lbW9uaXplZCAuLi5cblx0aWYgKENzdHIgPT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IEVycm9yQ3RvciA9IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOIGFzIHVua25vd24gYXMgbmV3IChtc2c6IHN0cmluZykgPT4gRXJyb3I7XG5cdFx0dGhyb3cgbmV3IEVycm9yQ3RvcihgWyAke1R5cGVOYW1lfSBdIGlzIG5vdCBkZWZpbmVkIGFzIGEgVHlwZSBDb25zdHJ1Y3RvciBvbiB1c2VkIGluc3RhbmNlYCk7XG5cdH1cblx0Y29uc3QgcnVuUmVzdWx0ID0gbmV3IENzdHIoLi4uYXJncyk7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSByZXR1cm5pbmcgcmVzdWx0IGFzIG1lcmdlZCBwcm90byB0eXBlXG5cdHJldHVybiBydW5SZXN1bHQ7XG59O1xuXG4vLyBUT0RPOiBhcHBseSBpbnN0YW5jZSAudG8gdHlwZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBhcHBseSA9IGZ1bmN0aW9uIDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdEN0b3I6IElERUY8VD4sXG5cdGFyZ3M6IHVua25vd25bXSA9IFtdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogY2FsbCB0eXBlIC5ieSBpbnN0YW5jZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBjYWxsID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0Li4uYXJnczogdW5rbm93bltdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogYmluZCB0eXBlIC53aXRoIGluc3RhbmNlIOKGkiAoLi4uYXJncylcbmV4cG9ydCBjb25zdCBiaW5kID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPlxuKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+IHtcblx0Y29uc3QgcmVzdWx0ID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuXHRcdGNvbnN0IHJ1blJlc3VsdCA9ICRydW48RSwgVCwgUz4oXG5cdFx0XHRlbnRpdHksXG5cdFx0XHRDdG9yLFxuXHRcdFx0YXJnc1xuXHRcdCk7XG5cdFx0Y29uc3QgdHlwZWRSZXN1bHQgPSBydW5SZXN1bHQgYXMgdW5rbm93biBhcyBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj47XG5cdFx0cmV0dXJuIHR5cGVkUmVzdWx0O1xuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29yYXRlID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0PiB8IGNvbnN0cnVjdG9yT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuPihcblx0dGFyZ2V0PzogVCxcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zXG4pOiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpID0+IERlY29yYXRlZENsYXNzPFU+IHtcblx0Y29uc3Qgb3B0cyA9IChjb25maWcgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAhKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSlcblx0XHQ/IHRhcmdldCBhcyBjb25zdHJ1Y3Rvck9wdGlvbnNcblx0XHQ6IGNvbmZpZztcblxuXHRjb25zdCBwYXJlbnRUeXBlID0gKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKVxuXHRcdD8gdGFyZ2V0IGFzIENvbnN0cnVjdG9yPG9iamVjdD5cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpOiBEZWNvcmF0ZWRDbGFzczxVPiB7XG5cdFx0Y29uc3QgeyBuYW1lIH0gPSBjc3RyO1xuXHRcdGlmIChwYXJlbnRUeXBlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRlY29yYXRvclJlc3VsdCA9IGRlZmluZShcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRcdG9wdHNcblx0XHRcdCkgYXMgdW5rbm93biBhcyBEZWNvcmF0ZWRDbGFzczxVPjtcblx0XHRcdHJldHVybiBkZWNvcmF0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IHBhcmVudCA9IHBhcmVudFR5cGUgYXMgdW5rbm93biBhcyB7XG5cdFx0XHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0XHR9O1xuXHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IHBhcmVudC5kZWZpbmUoXG5cdFx0XHRuYW1lLFxuXHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRvcHRzXG5cdFx0KSBhcyB1bmtub3duIGFzIERlY29yYXRlZENsYXNzPFU+O1xuXHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdH07XG5cdHJldHVybiBkZWNvcmF0b3I7XG59O1xuXG5cbmV4cG9ydCBjb25zdCByZWdpc3Rlckhvb2sgPSBmdW5jdGlvbiA8VCBleHRlbmRzIENvbnN0cnVjdG9yPFQ+Pihcblx0Q3RvcjogRGVjb3JhdGVkQ2xhc3M8VD4sXG5cdGhvb2tUeXBlOiBob29rc1R5cGVzLFxuXHRjYjogaG9va1xuKTogdm9pZCB7XG5cdEN0b3IucmVnaXN0ZXJIb29rKFxuXHRcdGhvb2tUeXBlLFxuXHRcdGNiXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgbW5lbW9uaWNhID0gT2JqZWN0LmVudHJpZXMoe1xuXG5cdGRlZmluZSxcblx0bG9va3VwLFxuXHRhcHBseSxcblx0Y2FsbCxcblx0YmluZCxcblx0ZGVjb3JhdGUsXG5cdHJlZ2lzdGVySG9vayxcblxuXHQuLi5kZXNjcmlwdG9ycyxcblxuXHQuLi5lcnJvcnNBcGksXG5cdC4uLmNvbnN0YW50cyxcblxufSkucmVkdWNlKFxuXHQoYWNjOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LCBlbnRyeTogW3N0cmluZywgdW5rbm93bl0pID0+IHtcblx0XHRjb25zdCBbIG5hbWUsIGNvZGUgXSA9IGVudHJ5O1xuXHRcdG9kcChcblx0XHRcdGFjYyxcblx0XHRcdG5hbWUsXG5cdFx0XHR7XG5cdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29kZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXHRcdHJldHVybiBhY2M7XG5cdH0sXG5cdHt9XG4pIGFzIE1uZW1vbmljYU1vZHVsZTtcblxuaW1wb3J0ICogYXMgYXBpIGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmaW5lOiBfZGVmaW5lLFxuXHRsb29rdXA6IF9sb29rdXBcbn0gPSBhcGkudHlwZXM7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblxufSA9IG1uZW1vbmljYTtcblxuLy8gRXhwb3J0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiB3aXRoIHByb3BlciB0eXBlXG5leHBvcnQgY29uc3QgY3JlYXRlVHlwZXNDb2xsZWN0aW9uOiBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbiA9XG5cdG1uZW1vbmljYS5jcmVhdGVUeXBlc0NvbGxlY3Rpb24gYXMgQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb247XG5cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xsZWN0aW9uID0gKGRlZmF1bHRUeXBlcyBhcyB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pLnN1YnR5cGVzO1xuZXhwb3J0IGNvbnN0IGVycm9ycyA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5leHBvcnQgeyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi91dGlscyc7XG4vKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuIl19
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0diLHdCQVFDO0FBcEdELDhEQUEyQztBQUUxQyxlQUFPLEdBRUosZUFBVSxVQURiLDZCQUFxQixHQUNsQixlQUFVLHVCQUFDO0FBa0NmLDJDQUUyQjtBQUQxQixpR0FBQSxRQUFRLE9BQUE7QUFBRSxpR0FBQSxRQUFRLE9BQUE7QUFHbkIsMkNBQXdDO0FBQ3hDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxxQkFBUyxDQUFDO0FBRTFCLHdEQUEwQztBQUMxQywrQ0FBNEM7QUFFNUMsTUFBTSxFQUFFLDBCQUEwQixFQUFFLEdBQUcseUJBQVcsQ0FBQyxXQUFXLENBQUM7QUFFL0Qsc0VBQStDO0FBQy9DLE1BQU0sRUFBRSw2QkFBNkIsRUFBRSxHQUFHLG1CQUFVLENBQUM7QUFFdEMsb0JBQVksR0FBTSx5QkFBVyxjQUFDO0FBRTdDLFNBQVMsU0FBUyxDQUFDLE9BQW9EO0lBQ3RFLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxpQkFBUyxJQUFJLE9BQU8sS0FBSyxPQUFPLENBQUM7SUFDNUQsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDO0FBSVksUUFBQSxNQUFNLEdBQUcsVUFTckIsUUFBc0QsRUFFdEQsZ0JBQWtGLEVBQ2xGLE1BQTJCO0lBRTNCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLG9CQUFZLENBQUM7SUFFcEUsTUFBTSxZQUFZLEdBQUksS0FBa0M7U0FDdEQsTUFBTSxDQUNOLFFBQWtCLEVBQ2xCLGdCQUEyQixFQUMzQixNQUFNLENBQ1UsQ0FBQztJQUNuQixPQUFPLFlBQVksQ0FBQztBQUNyQixDQUFpQixDQUFD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Wiw2QkFBcUIsR0FRbEIsaUJBQVMsd0JBUFosb0NBQTRCLEdBT3pCLGlCQUFTLCtCQU5aLG9CQUFZLEdBTVQsaUJBQVMsZUFMWixpQkFBUyxHQUtOLGlCQUFTLFlBSlosaUJBQVMsR0FJTixpQkFBUyxZQUhaLHlCQUFpQixHQUdkLGlCQUFTLG9CQUZaLHFCQUFhLEdBRVYsaUJBQVMsZUFBQztBQUdELFFBQUEscUJBQXFCLEdBQ2pDLGlCQUFTLENBQUMscUJBQXNELENBQUM7QUFHckQsUUFBQSxpQkFBaUIsR0FBSSxvQkFBa0QsQ0FBQyxRQUFRLENBQUM7QUFDakYsUUFBQSxNQUFNLEdBQUcseUJBQVcsQ0FBQyxXQUFXLENBQUM7QUFFOUMsaUNBQWdDO0FBQXZCLDhGQUFBLEtBQUssT0FBQTtBQUNkLGlDQUE2QztBQUFwQywyR0FBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7XG5cdENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uLFxuXHRJREVGLFxuXHRob29rLFxuXHRob29rc1R5cGVzLFxuXHRjb25zdHJ1Y3Rvck9wdGlvbnMsXG5cdFByb3RvLFxuXHRJRGVmaW5pdG9ySW5zdGFuY2UsXG5cdENvbnN0cnVjdG9yLFxuXHREZWNvcmF0ZWRDbGFzcyxcblx0VHlwZUNsYXNzLFxuXHRUeXBlQWJzb3JiZXIsXG5cdE1uZW1vbmljYU1vZHVsZSxcblx0SW5zdGFuY2VSZXN1bHQsXG5cdE1lcmdlXG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuL2FwaS91dGlscy9pbmRleCc7XG5leHBvcnQgY29uc3Qge1xuXHRpc0NsYXNzLFxuXHRmaW5kU3ViVHlwZUZyb21QYXJlbnQsXG59ID0gVHlwZXNVdGlscztcblxuZXhwb3J0IHR5cGUge1xuXHRJREVGLCBUeXBlQ29uc3RydWN0b3IsIFR5cGVDb25zdHJ1Y3RvckJhc2UsXG5cdEluc3RhbmNlT2ZUeXBlUmVnaXN0cnksIExpdGVyYWxLZXlzT2YsIFBhcmVudFBhdGgsIFBhdGhPZkluc3RhbmNlLFxuXHRBbGxQYXJlbnRQcmVmaXhlcywgUGFyZW50UGF0aE9mSW5zdGFuY2UsXG5cdF9JbnRlcm5hbF9UQ18sIFByb3RvLCBQcm90b0ZsYXQsXG5cdGhvb2tzT3B0cywgaG9vaywgaG9va3NUeXBlcywgVHlwZXNDb2xsZWN0aW9uXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFR5cGUtc2FmZSByZWdpc3RyeSBmb3IgbW5lbW9uaWNhIHR5cGVzLlxuICpcbiAqIFRoaXMgaW50ZXJmYWNlIHN0YXJ0cyBlbXB0eS4gQXBwbGljYXRpb24gY29kZSBvciBgQG1uZW1vbmljYS90YWN0aWNhYFxuICogYXVnbWVudHMgaXQgdGhyb3VnaCBUeXBlU2NyaXB0IG1vZHVsZSBkZWNsYXJhdGlvbiBtZXJnaW5nOlxuICpcbiAqIGBgYHRzXG4gKiBkZWNsYXJlIG1vZHVsZSAnbW5lbW9uaWNhJyB7XG4gKiAgIGludGVyZmFjZSBUeXBlUmVnaXN0cnkge1xuICogICAgICdNeVR5cGUnOiBUeXBlQ29uc3RydWN0b3I8TXlUeXBlSW5zdGFuY2U+O1xuICogICAgICdNeVR5cGUuU3ViVHlwZSc6IFR5cGVDb25zdHJ1Y3RvcjxTdWJUeXBlSW5zdGFuY2U+O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBPbmNlIGF1Z21lbnRlZCwgYGxvb2t1cCgnTXlUeXBlJylgIGFuZCBgdXRpbHMucGFyZW50KGluc3RhbmNlLCAnTXlUeXBlJylgXG4gKiByZXNvbHZlIGtleXMgYWdhaW5zdCB0aGlzIHJlZ2lzdHJ5LiBVbmF1Z21lbnRlZCBrZXlzIGZhbGwgYmFjayB0byB0aGUgYnJvYWRcbiAqIGBUeXBlQ2xhc3MgfCB1bmRlZmluZWRgIHJldHVybiB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVSZWdpc3RyeSB7XG5cdC8vIEludGVudGlvbmFsbHkgZW1wdHkuIEF1Z21lbnQgdGhpcyBpbnRlcmZhY2UgdmlhIGRlY2xhcmF0aW9uIG1lcmdpbmdcblx0Ly8gKGhhbmQtd3JpdHRlbiBvciBnZW5lcmF0ZWQgYnkgQG1uZW1vbmljYS90YWN0aWNhKSB0byBlbmFibGUgdHlwZWRcblx0Ly8gdXRpbGl0aWVzIGxpa2UgbG9va3VwKCkgYW5kIHBhcmVudCgpLlxufVxuZXhwb3J0IHtcblx0Z2V0UHJvcHMsIHNldFByb3BzIFxufSBmcm9tICcuL2FwaS90eXBlcy9Qcm9wcyc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IHsgb2RwIH0gPSBjb25zdGFudHM7XG5cbmltcG9ydCAqIGFzIGVycm9yc0FwaSBmcm9tICcuL2FwaS9lcnJvcnMnO1xuaW1wb3J0IHsgZGVzY3JpcHRvcnMgfSBmcm9tICcuL2Rlc2NyaXB0b3JzJztcblxuY29uc3QgeyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiB9ID0gZGVzY3JpcHRvcnMuRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBtbmVtb3N5bmVzIGZyb20gJy4vYXBpL3R5cGVzL01uZW1vc3luZSc7XG5jb25zdCB7IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uIH0gPSBtbmVtb3N5bmVzO1xuXG5leHBvcnQgY29uc3QgeyBkZWZhdWx0VHlwZXMsIH0gPSBkZXNjcmlwdG9ycztcblxuZnVuY3Rpb24gY2hlY2tUaGlzKHBvaW50ZXI6IHR5cGVvZiBtbmVtb25pY2EgfCB0eXBlb2YgZXhwb3J0cyB8IHVua25vd24pOiBib29sZWFuIHtcblx0Y29uc3QgcmVzdWx0ID0gcG9pbnRlciA9PT0gbW5lbW9uaWNhIHx8IHBvaW50ZXIgPT09IGV4cG9ydHM7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cblxuLy8gRGVmaW5lIGZ1bmN0aW9uIHVzaW5nIFR5cGVBYnNvcmJlciBpbnRlcmZhY2Ugd2l0aCBwcm9wZXIgdHlwZSBjYXN0aW5nXG5leHBvcnQgY29uc3QgZGVmaW5lID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgb2JqZWN0LFxuXHRQIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0LFxuXHROIGV4dGVuZHMgUHJvdG88UCwgVD4gPSBQcm90bzxQLCBUPixcblxuXHQvLyBoZXJlIElEZWZpbml0b3JJbnN0YW5jZSBpcyBhIENPTlNUUlVDVE9SICEhIVxuXHRSIGV4dGVuZHMgSURlZmluaXRvckluc3RhbmNlPE4+ID0gSURlZmluaXRvckluc3RhbmNlPE4+XG4+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZT86IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24gfCBOZXdhYmxlRnVuY3Rpb24sXG5cdC8vIEFsbG93IGJvdGggc3RyaWN0IElERUYgYW5kIG1vcmUgZmxleGlibGUgZnVuY3Rpb24gc2lnbmF0dXJlc1xuXHRjb25zdHJ1Y3RIYW5kbGVyPzogSURFRjxUPiB8IENhbGxhYmxlRnVuY3Rpb24gfCBOZXdhYmxlRnVuY3Rpb24gfCBvYmplY3QgfCBib29sZWFuLFxuXHRjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnMsXG4pOiBSIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRjb25zdCBkZWZpbmVSZXN1bHQgPSAodHlwZXMgYXMgeyBkZWZpbmU6IFR5cGVBYnNvcmJlciB9KVxuXHRcdC5kZWZpbmUoXG5cdFx0XHRUeXBlTmFtZSBhcyBzdHJpbmcsXG5cdFx0XHRjb25zdHJ1Y3RIYW5kbGVyIGFzIElERUY8VD4sXG5cdFx0XHRjb25maWdcblx0XHQpIGFzIHVua25vd24gYXMgUjtcblx0cmV0dXJuIGRlZmluZVJlc3VsdDtcbn0gYXMgVHlwZUFic29yYmVyO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9va3VwPGNvbnN0IEsgZXh0ZW5kcyBrZXlvZiBUeXBlUmVnaXN0cnk+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmVzdGVkUGF0aDogS1xuKTogVHlwZVJlZ2lzdHJ5W0tdIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIGxvb2t1cCh0aGlzOiB1bmtub3duLCBUeXBlTmVzdGVkUGF0aDogc3RyaW5nKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIGxvb2t1cChcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5lc3RlZFBhdGg6IHN0cmluZ1xuKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRjb25zdCBsb29rdXBSZXN1bHQgPSAodHlwZXMgYXMgeyBsb29rdXA6IChwYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB9KS5sb29rdXAoVHlwZU5lc3RlZFBhdGgpO1xuXHRyZXR1cm4gbG9va3VwUmVzdWx0O1xufVxuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cblx0Ly8gZGVidWdnZXI7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBleHRyYWN0aW5nIFR5cGVOYW1lIGZyb20gZnVuY3Rpb25cblx0Y29uc3QgeyBUeXBlTmFtZSB9ID0gQ3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFxuXHRcdFR5cGVOYW1lLFxuXHRcdGVudGl0eVxuXHQpIGFzIHVua25vd24gYXMgeyBuZXcoLi4uYXJzOiB1bmtub3duW10pOiB1bmtub3duIH07XG5cdC8vIFRPRE86IGNoZWNrIGxpbmVzIGJlbG93IGFuZCBpZiBDb25zdHJ1Y3RvciBpcyBub3QgbW5lbW9uaXplZCAuLi5cblx0aWYgKENzdHIgPT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IEVycm9yQ3RvciA9IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOIGFzIHVua25vd24gYXMgbmV3IChtc2c6IHN0cmluZykgPT4gRXJyb3I7XG5cdFx0dGhyb3cgbmV3IEVycm9yQ3RvcihgWyAke1R5cGVOYW1lfSBdIGlzIG5vdCBkZWZpbmVkIGFzIGEgVHlwZSBDb25zdHJ1Y3RvciBvbiB1c2VkIGluc3RhbmNlYCk7XG5cdH1cblx0Y29uc3QgcnVuUmVzdWx0ID0gbmV3IENzdHIoLi4uYXJncyk7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSByZXR1cm5pbmcgcmVzdWx0IGFzIG1lcmdlZCBwcm90byB0eXBlXG5cdHJldHVybiBydW5SZXN1bHQ7XG59O1xuXG4vLyBUT0RPOiBhcHBseSBpbnN0YW5jZSAudG8gdHlwZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBhcHBseSA9IGZ1bmN0aW9uIDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdEN0b3I6IElERUY8VD4sXG5cdGFyZ3M6IHVua25vd25bXSA9IFtdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogY2FsbCB0eXBlIC5ieSBpbnN0YW5jZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBjYWxsID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0Li4uYXJnczogdW5rbm93bltdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogYmluZCB0eXBlIC53aXRoIGluc3RhbmNlIOKGkiAoLi4uYXJncylcbmV4cG9ydCBjb25zdCBiaW5kID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPlxuKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+IHtcblx0Y29uc3QgcmVzdWx0ID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuXHRcdGNvbnN0IHJ1blJlc3VsdCA9ICRydW48RSwgVCwgUz4oXG5cdFx0XHRlbnRpdHksXG5cdFx0XHRDdG9yLFxuXHRcdFx0YXJnc1xuXHRcdCk7XG5cdFx0Y29uc3QgdHlwZWRSZXN1bHQgPSBydW5SZXN1bHQgYXMgdW5rbm93biBhcyBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj47XG5cdFx0cmV0dXJuIHR5cGVkUmVzdWx0O1xuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29yYXRlID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0PiB8IGNvbnN0cnVjdG9yT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuPihcblx0dGFyZ2V0PzogVCxcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zXG4pOiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpID0+IERlY29yYXRlZENsYXNzPFU+IHtcblx0Y29uc3Qgb3B0cyA9IChjb25maWcgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAhKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSlcblx0XHQ/IHRhcmdldCBhcyBjb25zdHJ1Y3Rvck9wdGlvbnNcblx0XHQ6IGNvbmZpZztcblxuXHRjb25zdCBwYXJlbnRUeXBlID0gKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKVxuXHRcdD8gdGFyZ2V0IGFzIENvbnN0cnVjdG9yPG9iamVjdD5cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpOiBEZWNvcmF0ZWRDbGFzczxVPiB7XG5cdFx0Y29uc3QgeyBuYW1lIH0gPSBjc3RyO1xuXHRcdGlmIChwYXJlbnRUeXBlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRlY29yYXRvclJlc3VsdCA9IGRlZmluZShcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRcdG9wdHNcblx0XHRcdCkgYXMgdW5rbm93biBhcyBEZWNvcmF0ZWRDbGFzczxVPjtcblx0XHRcdHJldHVybiBkZWNvcmF0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IHBhcmVudCA9IHBhcmVudFR5cGUgYXMgdW5rbm93biBhcyB7XG5cdFx0XHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0XHR9O1xuXHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IHBhcmVudC5kZWZpbmUoXG5cdFx0XHRuYW1lLFxuXHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRvcHRzXG5cdFx0KSBhcyB1bmtub3duIGFzIERlY29yYXRlZENsYXNzPFU+O1xuXHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdH07XG5cdHJldHVybiBkZWNvcmF0b3I7XG59O1xuXG5cbmV4cG9ydCBjb25zdCByZWdpc3Rlckhvb2sgPSBmdW5jdGlvbiA8VCBleHRlbmRzIENvbnN0cnVjdG9yPFQ+Pihcblx0Q3RvcjogRGVjb3JhdGVkQ2xhc3M8VD4sXG5cdGhvb2tUeXBlOiBob29rc1R5cGVzLFxuXHRjYjogaG9va1xuKTogdm9pZCB7XG5cdEN0b3IucmVnaXN0ZXJIb29rKFxuXHRcdGhvb2tUeXBlLFxuXHRcdGNiXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgbW5lbW9uaWNhID0gT2JqZWN0LmVudHJpZXMoe1xuXG5cdGRlZmluZSxcblx0bG9va3VwLFxuXHRhcHBseSxcblx0Y2FsbCxcblx0YmluZCxcblx0ZGVjb3JhdGUsXG5cdHJlZ2lzdGVySG9vayxcblxuXHQuLi5kZXNjcmlwdG9ycyxcblxuXHQuLi5lcnJvcnNBcGksXG5cdC4uLmNvbnN0YW50cyxcblxufSkucmVkdWNlKFxuXHQoYWNjOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LCBlbnRyeTogW3N0cmluZywgdW5rbm93bl0pID0+IHtcblx0XHRjb25zdCBbIG5hbWUsIGNvZGUgXSA9IGVudHJ5O1xuXHRcdG9kcChcblx0XHRcdGFjYyxcblx0XHRcdG5hbWUsXG5cdFx0XHR7XG5cdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29kZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXHRcdHJldHVybiBhY2M7XG5cdH0sXG5cdHt9XG4pIGFzIE1uZW1vbmljYU1vZHVsZTtcblxuaW1wb3J0ICogYXMgYXBpIGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmaW5lOiBfZGVmaW5lLFxuXHRsb29rdXA6IF9sb29rdXBcbn0gPSBhcGkudHlwZXM7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblxufSA9IG1uZW1vbmljYTtcblxuLy8gRXhwb3J0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiB3aXRoIHByb3BlciB0eXBlXG5leHBvcnQgY29uc3QgY3JlYXRlVHlwZXNDb2xsZWN0aW9uOiBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbiA9XG5cdG1uZW1vbmljYS5jcmVhdGVUeXBlc0NvbGxlY3Rpb24gYXMgQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb247XG5cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xsZWN0aW9uID0gKGRlZmF1bHRUeXBlcyBhcyB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pLnN1YnR5cGVzO1xuZXhwb3J0IGNvbnN0IGVycm9ycyA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5leHBvcnQgeyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi91dGlscyc7XG4vKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuIl19
|
package/build/types/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TypeRegistry } from '../index';
|
|
1
2
|
export type PropsType = Record<string, unknown>;
|
|
2
3
|
export type IDEF<T, Args extends unknown[] = unknown[]> = {
|
|
3
4
|
new (): T;
|
|
@@ -30,6 +31,22 @@ export interface _Internal_TC_<ConstructorInstance extends object> {
|
|
|
30
31
|
};
|
|
31
32
|
}
|
|
32
33
|
export type TypeConstructor<ConstructorInstance extends object> = _Internal_TC_<ConstructorInstance>;
|
|
34
|
+
export interface TypeConstructorBase {
|
|
35
|
+
new (...args: unknown[]): object;
|
|
36
|
+
}
|
|
37
|
+
export type InstanceOfTypeRegistry<K extends keyof TypeRegistry> = TypeRegistry[K] extends new (...args: unknown[]) => infer R ? R : never;
|
|
38
|
+
export type LiteralKeysOf<T> = keyof T extends infer K ? K extends string ? string extends K ? never : K : never : never;
|
|
39
|
+
export type ParentPath<K extends string> = K extends `${infer P}.${string}` ? P : never;
|
|
40
|
+
export type AllParentPrefixes<K extends string> = K extends `${infer P}.${string}` ? P | AllParentPrefixes<P> : never;
|
|
41
|
+
export type ChildKeysOf<P extends string> = {
|
|
42
|
+
[K in keyof TypeRegistry]: K extends `${P}.${string}` ? K : never;
|
|
43
|
+
}[keyof TypeRegistry];
|
|
44
|
+
export type PathOfInstance<T extends object> = {
|
|
45
|
+
[K in LiteralKeysOf<TypeRegistry>]: TypeRegistry[K] extends new (...args: unknown[]) => infer R ? T extends R ? K : never : never;
|
|
46
|
+
}[LiteralKeysOf<TypeRegistry>];
|
|
47
|
+
export type ParentPathOfInstance<T extends object> = {
|
|
48
|
+
[K in LiteralKeysOf<TypeRegistry>]: TypeRegistry[K] extends new (...args: unknown[]) => infer R ? T extends R ? AllParentPrefixes<K> : never : never;
|
|
49
|
+
}[LiteralKeysOf<TypeRegistry>];
|
|
33
50
|
export type hooksTypes = 'preCreation' | 'postCreation' | 'creationError';
|
|
34
51
|
export type hooksOpts<P = object, T = P> = {
|
|
35
52
|
TypeName: string;
|
|
@@ -152,6 +169,7 @@ export interface MnemonicaInstance<T extends object = object> {
|
|
|
152
169
|
} & {};
|
|
153
170
|
pick(...keys: string[]): Record<string, unknown>;
|
|
154
171
|
parent(): object | undefined;
|
|
172
|
+
parent<K extends ParentPathOfInstance<this> & string>(constructorLookupPath: K): InstanceOfTypeRegistry<K> | undefined;
|
|
155
173
|
parent(constructorLookupPath: string): object | undefined;
|
|
156
174
|
readonly clone: this;
|
|
157
175
|
fork(...forkArgs: unknown[]): this;
|
|
@@ -253,13 +271,18 @@ export interface UtilsCollection {
|
|
|
253
271
|
collectConstructors: (instance: object, flat?: boolean) => (CallableFunction | string)[];
|
|
254
272
|
merge<A extends object, B extends object>(a: A, b: B, ...args: unknown[]): InstanceResult<Merge<B, A>>;
|
|
255
273
|
parse<T extends object>(self: T): Parsed<T>;
|
|
256
|
-
parent<T extends object>(instance: T
|
|
274
|
+
parent<T extends object>(instance: T): object | undefined;
|
|
275
|
+
parent<T extends object, K extends ParentPathOfInstance<T> & string>(instance: T, path: K): InstanceOfTypeRegistry<K> | undefined;
|
|
276
|
+
parent<T extends object>(instance: T, path: string): object | undefined;
|
|
257
277
|
toJSON<T extends object>(instance: T): string;
|
|
258
278
|
[key: string]: CallableFunction;
|
|
259
279
|
}
|
|
260
280
|
export interface MnemonicaModule {
|
|
261
281
|
define: TypeAbsorber;
|
|
262
|
-
lookup:
|
|
282
|
+
lookup: {
|
|
283
|
+
(TypeNestedPath: string): TypeClass | undefined;
|
|
284
|
+
<const K extends keyof TypeRegistry>(TypeNestedPath: K): TypeRegistry[K] | undefined;
|
|
285
|
+
};
|
|
263
286
|
apply: ApplyFunction;
|
|
264
287
|
call: CallFunction;
|
|
265
288
|
bind: BindFunction;
|