@no22/dison 1.4.0 → 1.5.0

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 CHANGED
@@ -110,6 +110,25 @@ To activate a configuration defined in another file:
110
110
  activate TestConfig from "./configs";
111
111
  ```
112
112
 
113
+ #### Forward references (new in 1.5.0)
114
+
115
+ A configuration may reference classes declared **later in the same
116
+ file** — key evaluation is deferred until the wiring is first consulted,
117
+ so the natural "declarative header" style just works:
118
+
119
+ ```dison
120
+ configuration { bind Repo = MockRepo; } // at the top of the file
121
+
122
+ class Repo { ... }
123
+ class MockRepo extends Repo { ... }
124
+ class Service { injectable repo: Repo; }
125
+ ```
126
+
127
+ This applies to `bind`, `override`, class-body configurations, and
128
+ `activate` alike. Registration *order* is still respected: if the same
129
+ type is bound twice, the registration that executes later wins, exactly
130
+ as if everything had been applied in place.
131
+
113
132
  #### Scoped configuration (new in 1.2.0)
114
133
 
115
134
  Where you write a `configuration` decides how far it reaches. An
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAA4B,MAAM,UAAU,CAAC;AAI/D,MAAM,WAAW,WAAW;IAK1B,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAKzC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACpD;AAID,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAoMD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAqB3F;AAOD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,MAAM,CAO/F;AAOD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAMrE;AAQD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CASpF;AAOD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,IAAI,EAAE,EACb,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC9C,QAAQ,EAAE,WAAW,GACpB,MAAM,CA4CR"}
1
+ {"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAA4B,MAAM,UAAU,CAAC;AAI/D,MAAM,WAAW,WAAW;IAK1B,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAKzC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACpD;AAID,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAyMD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAqB3F;AAOD,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,GAAG,MAAM,CAO/F;AAOD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAMrE;AAQD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,CASpF;AAOD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,IAAI,EAAE,EACb,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC9C,QAAQ,EAAE,WAAW,GACpB,MAAM,CA4CR"}
package/dist/codegen.js CHANGED
@@ -37,15 +37,17 @@ function keyExprFor(typeKey, token, strategy) {
37
37
  // override 1件分のDI_REGISTRY代入文を生成する。configuration内(関数本体に
38
38
  // 収集される場合)と、configurationで包まない単独のoverride(その場に直接
39
39
  // 出力される場合)の両方から共有される。
40
- // local=false: グローバルレジストリへ登録(registerOverride)。local=true: ローカル
41
- // スコープフレームへ登録(__disonOverride。__disonEnterScope の setup 内で使う)。
40
+ // local=false: グローバルレジストリへ登録(registerOverrideLazy)。local=true: ローカル
41
+ // スコープフレームへ登録(__disonOverride。__disonEnterScopeLazy の setup 内で使う)。
42
+ // 対象クラスはサンク(() => Class)で渡し、評価を初回参照時まで遅延する
43
+ // (後方宣言クラスへの前方参照を可能にする。docs/config-forward-reference.md)。
42
44
  function generateOverrideEntryLines(entry, local) {
43
45
  // entry.className はクラスの実体を指す識別子としてそのまま埋め込む
44
46
  // (文字列リテラルにはしない)。キーがクラスの実体そのものなので、className が
45
47
  // スコープ内に存在しない(タイプミス・importし忘れ)場合は tsc が "Cannot find name"
46
- // として検出する。
47
- const fn = local ? "__disonOverride" : "registerOverride";
48
- return entry.assignments.map((a) => ` ${fn}(${entry.className}, "${a.prop}", () => (${a.valueExpr}));`);
48
+ // として検出する(サンク内でも同様に検出される)。
49
+ const fn = local ? "__disonOverride" : "registerOverrideLazy";
50
+ return entry.assignments.map((a) => ` ${fn}(() => ${entry.className}, "${a.prop}", () => (${a.valueExpr}));`);
49
51
  }
50
52
  // bind 1件分のbindType呼び出し文を生成する(generateOverrideEntryLinesと同様、
51
53
  // configuration内・単独bindの両方から共有される)。
@@ -73,11 +75,14 @@ function generateOverrideEntryLines(entry, local) {
73
75
  // 連鎖: 差し替え先クラス自身がさらに bind されている可能性があるので、
74
76
  // 直接 new せず resolveType を介して再帰的に解決する。
75
77
  // (bind A = B; bind B = C; と書けば、Aの解決は最終的にCまで辿る)
76
- // local=false: グローバル TYPE_BINDINGS へ登録(bindType<T>)。local=true: ローカル
77
- // スコープフレームへ登録(__disonBind。__disonEnterScope の setup 内で使う)。
78
- // bindType<T> は型引数で差し替え先の型互換を tsc に検査させるが、__disonBind は
78
+ // local=false: グローバル TYPE_BINDINGS へ登録(bindTypeLazy<T>)。local=true: ローカル
79
+ // スコープフレームへ登録(__disonBind。__disonEnterScopeLazy の setup 内で使う)。
80
+ // bindTypeLazy<T> は型引数で差し替え先の型互換を tsc に検査させるが、__disonBind は
79
81
  // 型引数を取れないため、代わりに factory の返り値型注釈 `(): OrigType =>` で同じ検査を
80
82
  // 得る(差し替え先が OrigType と非互換なら tsc がエラーにする)。
83
+ // 左辺キーはサンク(() => Key)で渡し、評価を初回参照時まで遅延する
84
+ // (後方宣言クラスへの前方参照を可能にする。docs/config-forward-reference.md)。
85
+ // 差し替え先キーは factory 内にあり元々遅延評価される。
81
86
  function generateBindEntryLines(entry, strategy, local) {
82
87
  const originalKeyExpr = keyExprFor(entry.originalTypeKey, entry.token, strategy);
83
88
  // 差し替え先(replacement)は `new` で実体化される具象クラスなので、それ自身が
@@ -90,8 +95,8 @@ function generateBindEntryLines(entry, strategy, local) {
90
95
  const factory = `resolveType(${replacementKeyExpr}, () => new ${entry.replacementTypeName}(${args}))`;
91
96
  return [
92
97
  local
93
- ? ` __disonBind(${originalKeyExpr}, (): ${entry.originalTypeName} => ${factory});`
94
- : ` bindType<${entry.originalTypeName}>(${originalKeyExpr}, () => ${factory});`,
98
+ ? ` __disonBind(() => ${originalKeyExpr}, (): ${entry.originalTypeName} => ${factory});`
99
+ : ` bindTypeLazy<${entry.originalTypeName}>(() => ${originalKeyExpr}, () => ${factory});`,
95
100
  ];
96
101
  }
97
102
  // configuration を構文位置に応じて生成する(docs/scoped-configuration.md):
@@ -121,7 +126,7 @@ function generateConfiguration(node, strategy, scopeId) {
121
126
  // async関数内では (await null, ...) で一度中断してから enterWith することで、
122
127
  // スコープを関数専有のマイクロタスク実行に隔離し呼び出し元への漏れを防ぐ
123
128
  // (暗黙のサスペンションポイント。docs/async-local-scope.md §2)。
124
- const enter = `__disonEnterScope((__disonBind, __disonOverride) => {\n` +
129
+ const enter = `__disonEnterScopeLazy((__disonBind, __disonOverride) => {\n` +
125
130
  `${lines.join("\n")}\n})`;
126
131
  return node.asyncScope === true
127
132
  ? `using __dison_scope_${scopeId} = (await null, ${enter});`
@@ -130,7 +135,7 @@ function generateConfiguration(node, strategy, scopeId) {
130
135
  if (node.scope === "class") {
131
136
  // 無名クラス configuration。クラス本体の static フィールドとしてフレームを構築する。
132
137
  // __disonClassScopes が this.constructor のプロトタイプ鎖からこの static を集める。
133
- return (`static __dison_classScope_${scopeId} = __disonBuildFrame((__disonBind, __disonOverride) => {\n` +
138
+ return (`static __dison_classScope_${scopeId} = __disonBuildFrameLazy((__disonBind, __disonOverride) => {\n` +
134
139
  `${lines.join("\n")}\n});`);
135
140
  }
136
141
  if (node.name !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
package/dist/core.js CHANGED
@@ -298,8 +298,8 @@ export function transpileDisonToTS(sourceCode, options = {}) {
298
298
  const header = `// --- Auto-generated TypeScript code ---\n\n`;
299
299
  const prelude = options.runtimeModulePath
300
300
  ? `${header}${DISON_RUNTIME_IMPORTS}import {\n` +
301
- ` bindType,\n resolveType,\n registerOverride,\n` +
302
- ` __disonCurrentScope,\n __disonResolveInjectable,\n __disonEnterScope,\n __disonBuildFrame,\n` +
301
+ ` bindTypeLazy,\n resolveType,\n registerOverrideLazy,\n` +
302
+ ` __disonCurrentScope,\n __disonResolveInjectable,\n __disonEnterScopeLazy,\n __disonBuildFrameLazy,\n` +
303
303
  `} from ${JSON.stringify(options.runtimeModulePath)};\n\n`
304
304
  : `${header}${DISON_RUNTIME_IMPORTS}\n${generateRuntimeDeclarations("")}\n`;
305
305
  // ES Modules の import はファイル先頭にしか書けないため、import 系(companion import、
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,46 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
2
  type __DisonFactory = () => any;
3
3
  type __DisonKey = string | symbol | Function;
4
- interface __DisonFrame {
5
- binds: Map<__DisonKey, __DisonFactory>;
6
- overrides: WeakMap<Function, Record<string, __DisonFactory>>;
4
+ type __DisonSlot = {
5
+ f: __DisonFactory;
6
+ seq: number;
7
+ };
8
+ type __DisonPendingEntry = {
9
+ kind: "bind";
10
+ key: () => __DisonKey;
11
+ f: __DisonFactory;
12
+ seq: number;
13
+ } | {
14
+ kind: "override";
15
+ cls: () => Function;
16
+ prop: string;
17
+ f: __DisonFactory;
18
+ seq: number;
19
+ };
20
+ interface __DisonStore {
21
+ binds: Map<__DisonKey, __DisonSlot>;
22
+ overrides: WeakMap<Function, Record<string, __DisonSlot>>;
23
+ pending: __DisonPendingEntry[];
24
+ }
25
+ interface __DisonFrame extends __DisonStore {
7
26
  parent: __DisonFrame | undefined;
8
27
  }
9
28
  export declare const __dison_als: AsyncLocalStorage<__DisonFrame | undefined>;
10
29
  export declare function __disonCurrentScope(): __DisonFrame | undefined;
30
+ export declare function __disonBuildFrameLazy(setup: (bind: (key: () => __DisonKey, factory: __DisonFactory) => void, override: (cls: () => Function, prop: string, factory: __DisonFactory) => void) => void): __DisonFrame;
11
31
  export declare function __disonBuildFrame(setup: (bind: (key: __DisonKey, factory: __DisonFactory) => void, override: (cls: Function, prop: string, factory: __DisonFactory) => void) => void): __DisonFrame;
12
- export declare const DI_REGISTRY: WeakMap<Function, Record<string, __DisonFactory>>;
32
+ export declare const DI_REGISTRY: WeakMap<Function, Record<string, __DisonSlot>>;
33
+ export declare const TYPE_BINDINGS: Map<__DisonKey, __DisonSlot>;
34
+ export declare function bindTypeLazy<T>(key: () => __DisonKey, factory: () => T): void;
35
+ export declare function bindType<T>(typeKey: __DisonKey, factory: () => T): void;
36
+ export declare function registerOverrideLazy(cls: () => Function, prop: string, factory: __DisonFactory): void;
13
37
  export declare function registerOverride(cls: Function, prop: string, factory: __DisonFactory): void;
14
38
  export declare function getOverride(cls: Function, prop: string): __DisonFactory | undefined;
15
- export declare const TYPE_BINDINGS: Map<__DisonKey, __DisonFactory>;
16
- export declare function bindType<T>(typeKey: __DisonKey, factory: () => T): void;
17
39
  export declare function resolveType<T>(typeKey: __DisonKey, defaultFactory: () => T): T;
18
40
  export declare function __disonResolveInjectable<T>(scope: __DisonFrame | undefined, cls: Function, prop: string, fallback: () => T): T;
41
+ export declare function __disonEnterScopeLazy(setup: (bind: (key: () => __DisonKey, factory: __DisonFactory) => void, override: (cls: () => Function, prop: string, factory: __DisonFactory) => void) => void): {
42
+ [Symbol.dispose](): void;
43
+ };
19
44
  export declare function __disonEnterScope(setup: (bind: (key: __DisonKey, factory: __DisonFactory) => void, override: (cls: Function, prop: string, factory: __DisonFactory) => void) => void): {
20
45
  [Symbol.dispose](): void;
21
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generated-runtime.d.ts","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAOrD,KAAK,cAAc,GAAG,MAAM,GAAG,CAAC;AAChC,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAC7C,UAAU,YAAY;IACpB,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACvC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7D,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;CAClC;AACD,eAAO,MAAM,WAAW,6CAAoD,CAAC;AAE7E,wBAAgB,mBAAmB,IAAI,YAAY,GAAG,SAAS,CAAmC;AAwBlG,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,KAAK,IAAI,GAClJ,YAAY,CAWd;AAKD,eAAO,MAAM,WAAW,mDAA0D,CAAC;AAEnF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAI3F;AA2BD,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAWnF;AAID,eAAO,MAAM,aAAa,iCAAwC,CAAC;AAKnE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAEvE;AAoBD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAS9E;AASD,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAY9H;AAMD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,KAAK,IAAI,KAAK,IAAI,GAClJ;IAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAA;CAAE,CAa9B"}
1
+ {"version":3,"file":"generated-runtime.d.ts","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,48 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
+ let __dison_seq = 0;
3
+ function __disonPendBind(store, key, f) {
4
+ store.pending.push({ kind: "bind", key, f, seq: __dison_seq++ });
5
+ }
6
+ function __disonPendOverride(store, cls, prop, f) {
7
+ store.pending.push({ kind: "override", cls, prop, f, seq: __dison_seq++ });
8
+ }
9
+ // Drain a store's queue. Entries whose key thunk still hits the TDZ are kept and
10
+ // retried later; everything else is applied, newest-seq-wins per key.
11
+ function __disonApplyPending(store) {
12
+ if (store.pending.length === 0)
13
+ return;
14
+ const remaining = [];
15
+ for (const e of store.pending) {
16
+ let key;
17
+ try {
18
+ key = e.kind === "bind" ? e.key() : e.cls();
19
+ }
20
+ catch (err) {
21
+ if (err instanceof ReferenceError) {
22
+ remaining.push(e);
23
+ continue;
24
+ }
25
+ throw err;
26
+ }
27
+ if (e.kind === "bind") {
28
+ const cur = store.binds.get(key);
29
+ if (cur === undefined || cur.seq < e.seq)
30
+ store.binds.set(key, { f: e.f, seq: e.seq });
31
+ }
32
+ else {
33
+ let rec = store.overrides.get(key);
34
+ if (rec === undefined) {
35
+ rec = {};
36
+ store.overrides.set(key, rec);
37
+ }
38
+ const cur = rec[e.prop];
39
+ if (cur === undefined || cur.seq < e.seq)
40
+ rec[e.prop] = { f: e.f, seq: e.seq };
41
+ }
42
+ }
43
+ store.pending = remaining;
44
+ }
45
+ // --- scope infrastructure (docs/scoped-configuration.md) ---
2
46
  export const __dison_als = new AsyncLocalStorage();
3
47
  // Current scope frame (undefined = global only). Captured by injectable at construction.
4
48
  export function __disonCurrentScope() { return __dison_als.getStore(); }
@@ -24,30 +68,46 @@ function __disonClassScopes(cls) {
24
68
  }
25
69
  return out;
26
70
  }
71
+ function __disonNewFrame(parent) {
72
+ return { binds: new Map(), overrides: new WeakMap(), pending: [], parent };
73
+ }
27
74
  // Build a frame without entering it (used to initialize a class body static field).
75
+ // The setup callback receives key THUNKS, so a class-body configuration may reference
76
+ // classes declared later in the file (evaluated at the first lookup on the frame).
77
+ export function __disonBuildFrameLazy(setup) {
78
+ const frame = __disonNewFrame(undefined);
79
+ setup((key, factory) => { __disonPendBind(frame, key, factory); }, (cls, prop, factory) => { __disonPendOverride(frame, cls, prop, factory); });
80
+ return frame;
81
+ }
82
+ // Backward-compatible variant taking eager key values (generated by older CLI versions).
28
83
  export function __disonBuildFrame(setup) {
29
- const frame = { binds: new Map(), overrides: new WeakMap(), parent: undefined };
30
- setup((key, factory) => { frame.binds.set(key, factory); }, (cls, prop, factory) => {
31
- let e = frame.overrides.get(cls);
32
- if (!e) {
33
- e = {};
34
- frame.overrides.set(cls, e);
35
- }
36
- e[prop] = factory;
37
- });
84
+ const frame = __disonNewFrame(undefined);
85
+ setup((key, factory) => { __disonPendBind(frame, () => key, factory); }, (cls, prop, factory) => { __disonPendOverride(frame, () => cls, prop, factory); });
38
86
  return frame;
39
87
  }
40
88
  // --- global registries ---
41
89
  // Global dependency registry (per-property override). Keyed by the class itself
42
90
  // so tsc catches a typo in the override target class name.
43
91
  export const DI_REGISTRY = new WeakMap();
92
+ // Global type-replacement registry (bind). Key: class value (concrete class),
93
+ // companion/token Symbol, or type-name string. See docs/type-identity-matching.md.
94
+ export const TYPE_BINDINGS = new Map();
95
+ const __DISON_GLOBAL = { binds: TYPE_BINDINGS, overrides: DI_REGISTRY, pending: [] };
96
+ // The Lazy variants take the key as a thunk (forward-reference safe); the plain
97
+ // variants keep the old eager-key signature for code generated by older CLI versions.
98
+ // bindTypeLazy<T> takes T as an explicit type argument, so tsc raises a compile error
99
+ // if the replacement factory isn't compatible with the original type.
100
+ export function bindTypeLazy(key, factory) {
101
+ __disonPendBind(__DISON_GLOBAL, key, factory);
102
+ }
103
+ export function bindType(typeKey, factory) {
104
+ __disonPendBind(__DISON_GLOBAL, () => typeKey, factory);
105
+ }
106
+ export function registerOverrideLazy(cls, prop, factory) {
107
+ __disonPendOverride(__DISON_GLOBAL, cls, prop, factory);
108
+ }
44
109
  export function registerOverride(cls, prop, factory) {
45
- let entry = DI_REGISTRY.get(cls);
46
- if (!entry) {
47
- entry = {};
48
- DI_REGISTRY.set(cls, entry);
49
- }
50
- entry[prop] = factory;
110
+ __disonPendOverride(__DISON_GLOBAL, () => cls, prop, factory);
51
111
  }
52
112
  // Override target matching walks the prototype chain of the receiver's class
53
113
  // (child -> parent, child-wins): an override targeting a base class applies to
@@ -65,54 +125,53 @@ function __disonChainLookup(map, chain, prop) {
65
125
  for (const c of chain) {
66
126
  const o = map.get(c);
67
127
  if (o && Object.prototype.hasOwnProperty.call(o, prop))
68
- return o[prop];
128
+ return o[prop].f;
69
129
  }
70
130
  return undefined;
71
131
  }
72
132
  // Look up an override in order: local frame chain (inner->outer) -> class scopes
73
133
  // (child->parent) -> global (priority: local > class > global). Scope-major: each
74
134
  // layer checks the whole class chain, so a nearer scope targeting a base class
75
- // beats a farther scope targeting the subclass.
135
+ // beats a farther scope targeting the subclass. Each store drains its queue first.
76
136
  export function getOverride(cls, prop) {
77
137
  const chain = __disonClassChain(cls);
78
138
  for (let f = __dison_als.getStore(); f; f = f.parent) {
139
+ __disonApplyPending(f);
79
140
  const hit = __disonChainLookup(f.overrides, chain, prop);
80
141
  if (hit)
81
142
  return hit;
82
143
  }
83
144
  if (__dison_classScopeCtx)
84
145
  for (const f of __dison_classScopeCtx) {
146
+ __disonApplyPending(f);
85
147
  const hit = __disonChainLookup(f.overrides, chain, prop);
86
148
  if (hit)
87
149
  return hit;
88
150
  }
151
+ __disonApplyPending(__DISON_GLOBAL);
89
152
  return __disonChainLookup(DI_REGISTRY, chain, prop);
90
153
  }
91
- // Global type-replacement registry (bind). Key: class value (concrete class),
92
- // companion/token Symbol, or type-name string. See docs/type-identity-matching.md.
93
- export const TYPE_BINDINGS = new Map();
94
154
  const _resolvingTypeBindings = new Set();
95
- // bindType<T> takes T as an explicit type argument, so tsc raises a compile error
96
- // if the replacement factory isn't compatible with the original type.
97
- export function bindType(typeKey, factory) {
98
- TYPE_BINDINGS.set(typeKey, factory);
99
- }
100
155
  // Look up a bind in order: local frame chain (inner->outer) -> class scopes (child->parent)
101
156
  // -> global. __dison_classScopeCtx stays set throughout a resolution, so a bind chain inside
102
157
  // a class scope (the recursion in resolveType) follows the class scope too.
158
+ // Each store drains its queue first.
103
159
  function __disonLookupBind(typeKey) {
104
160
  for (let f = __dison_als.getStore(); f; f = f.parent) {
161
+ __disonApplyPending(f);
105
162
  const b = f.binds.get(typeKey);
106
163
  if (b)
107
- return b;
164
+ return b.f;
108
165
  }
109
166
  if (__dison_classScopeCtx)
110
167
  for (const f of __dison_classScopeCtx) {
168
+ __disonApplyPending(f);
111
169
  const b = f.binds.get(typeKey);
112
170
  if (b)
113
- return b;
171
+ return b.f;
114
172
  }
115
- return TYPE_BINDINGS.get(typeKey);
173
+ __disonApplyPending(__DISON_GLOBAL);
174
+ return TYPE_BINDINGS.get(typeKey)?.f;
116
175
  }
117
176
  // Scope-aware bind resolution. bind chains (bind A = B; bind B = C; resolves A to C).
118
177
  // Each hop of the chain also consults the current frame chain -> class -> global.
@@ -158,18 +217,21 @@ export function __disonResolveInjectable(scope, cls, prop, fallback) {
158
217
  // current frame, populate its bind/override via setup, and enter it (enterWith). The return
159
218
  // value has Symbol.dispose, so a `using` declaration restores the previous frame at the end
160
219
  // of the enclosing block. setup uses the bind/override helpers to add the deltas.
161
- export function __disonEnterScope(setup) {
162
- const frame = { binds: new Map(), overrides: new WeakMap(), parent: __dison_als.getStore() };
163
- setup((key, factory) => { frame.binds.set(key, factory); }, (cls, prop, factory) => {
164
- let e = frame.overrides.get(cls);
165
- if (!e) {
166
- e = {};
167
- frame.overrides.set(cls, e);
168
- }
169
- e[prop] = factory;
170
- });
220
+ function __disonEnterFrame(frame) {
171
221
  const prev = __dison_als.getStore();
172
222
  __dison_als.enterWith(frame);
173
223
  return { [Symbol.dispose]() { __dison_als.enterWith(prev); } };
174
224
  }
225
+ // The setup callback receives key THUNKS (forward-reference safe within the block).
226
+ export function __disonEnterScopeLazy(setup) {
227
+ const frame = __disonNewFrame(__dison_als.getStore());
228
+ setup((key, factory) => { __disonPendBind(frame, key, factory); }, (cls, prop, factory) => { __disonPendOverride(frame, cls, prop, factory); });
229
+ return __disonEnterFrame(frame);
230
+ }
231
+ // Backward-compatible variant taking eager key values (generated by older CLI versions).
232
+ export function __disonEnterScope(setup) {
233
+ const frame = __disonNewFrame(__dison_als.getStore());
234
+ setup((key, factory) => { __disonPendBind(frame, () => key, factory); }, (cls, prop, factory) => { __disonPendOverride(frame, () => cls, prop, factory); });
235
+ return __disonEnterFrame(frame);
236
+ }
175
237
  //# sourceMappingURL=generated-runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generated-runtime.js","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generated-runtime.js","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AA6BrD,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,SAAS,eAAe,CAAC,KAAmB,EAAE,GAAqB,EAAE,CAAiB;IACpF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AACD,SAAS,mBAAmB,CAAC,KAAmB,EAAE,GAAmB,EAAE,IAAY,EAAE,CAAiB;IACpG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;AAC7E,CAAC;AACD,iFAAiF;AACjF,sEAAsE;AACtE,SAAS,mBAAmB,CAAC,KAAmB;IAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACvC,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,GAAQ,CAAC;QACb,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;gBAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACnE,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;gBAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAAC,GAAG,GAAG,EAAE,CAAC;gBAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAAC,CAAC;YACnE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;gBAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QACjF,CAAC;IACH,CAAC;IACD,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED,8DAA8D;AAC9D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAA4B,CAAC;AAC7E,yFAAyF;AACzF,MAAM,UAAU,mBAAmB,KAA+B,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAElG,0EAA0E;AAC1E,mFAAmF;AACnF,mFAAmF;AACnF,mFAAmF;AACnF,gFAAgF;AAChF,uFAAuF;AACvF,qFAAqF;AACrF,IAAI,qBAAiD,CAAC;AACtD,oFAAoF;AACpF,yFAAyF;AACzF,wFAAwF;AACxF,cAAc;AACd,SAAS,kBAAkB,CAAC,GAAa;IACvC,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChD,IAAI,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AACD,SAAS,eAAe,CAAC,MAAgC;IACvD,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AAC7E,CAAC;AACD,oFAAoF;AACpF,sFAAsF;AACtF,mFAAmF;AACnF,MAAM,UAAU,qBAAqB,CACnC,KAA+J;IAE/J,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IACzC,KAAK,CACH,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAC3D,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AACD,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAC/B,KAAmJ;IAEnJ,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IACzC,KAAK,CACH,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EACjE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAClF,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4BAA4B;AAC5B,gFAAgF;AAChF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,EAAyC,CAAC;AAChF,8EAA8E;AAC9E,mFAAmF;AACnF,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAC;AAChE,MAAM,cAAc,GAAiB,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAEnG,gFAAgF;AAChF,sFAAsF;AACtF,sFAAsF;AACtF,sEAAsE;AACtE,MAAM,UAAU,YAAY,CAAI,GAAqB,EAAE,OAAgB;IACrE,eAAe,CAAC,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AACD,MAAM,UAAU,QAAQ,CAAI,OAAmB,EAAE,OAAgB;IAC/D,eAAe,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,oBAAoB,CAAC,GAAmB,EAAE,IAAY,EAAE,OAAuB;IAC7F,mBAAmB,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,GAAa,EAAE,IAAY,EAAE,OAAuB;IACnF,mBAAmB,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,6EAA6E;AAC7E,+EAA+E;AAC/E,oFAAoF;AACpF,mFAAmF;AACnF,yBAAyB;AACzB,SAAS,iBAAiB,CAAC,GAAa;IACtC,MAAM,GAAG,GAAe,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChH,OAAO,GAAG,CAAC;AACb,CAAC;AACD,iEAAiE;AACjE,SAAS,kBAAkB,CACzB,GAAkE,EAClE,KAAiB,EAAE,IAAY;IAE/B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AACD,iFAAiF;AACjF,kFAAkF;AAClF,+EAA+E;AAC/E,mFAAmF;AACnF,MAAM,UAAU,WAAW,CAAC,GAAa,EAAE,IAAY;IACrD,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACrD,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,IAAI,qBAAqB;QAAE,KAAK,MAAM,CAAC,IAAI,qBAAqB,EAAE,CAAC;YACjE,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACzD,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;QACtB,CAAC;IACD,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACpC,OAAO,kBAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAc,CAAC;AAErD,4FAA4F;AAC5F,6FAA6F;AAC7F,4EAA4E;AAC5E,qCAAqC;AACrC,SAAS,iBAAiB,CAAC,OAAmB;IAC5C,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACrD,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,qBAAqB;QAAE,KAAK,MAAM,CAAC,IAAI,qBAAqB,EAAE,CAAC;YACjE,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACD,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACpC,OAAO,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,sFAAsF;AACtF,kFAAkF;AAClF,gCAAgC;AAChC,MAAM,UAAU,WAAW,CAAI,OAAmB,EAAE,cAAuB;IACzE,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,cAAc,EAAE,CAAC;IACpC,IAAI,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtG,MAAM,IAAI,KAAK,CAAC,yCAAyC,GAAG,KAAK,GAAG,0CAA0C,CAAC,CAAC;IAClH,CAAC;IACD,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;IAAC,CAAC;YAAS,CAAC;QAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AAC7E,CAAC;AAED,2FAA2F;AAC3F,6FAA6F;AAC7F,6FAA6F;AAC7F,6FAA6F;AAC7F,yFAAyF;AACzF,kFAAkF;AAClF,yDAAyD;AACzD,MAAM,UAAU,wBAAwB,CAAI,KAA+B,EAAE,GAAa,EAAE,IAAY,EAAE,QAAiB;IACzH,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,qBAAqB,CAAC;IACxC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B,qBAAqB,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACjC,qBAAqB,GAAG,SAAS,CAAC;IACpC,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,4FAA4F;AAC5F,4FAA4F;AAC5F,kFAAkF;AAClF,SAAS,iBAAiB,CAAC,KAAmB;IAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;IACpC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjE,CAAC;AACD,oFAAoF;AACpF,MAAM,UAAU,qBAAqB,CACnC,KAA+J;IAE/J,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,KAAK,CACH,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAC3D,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC;IACF,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AACD,yFAAyF;AACzF,MAAM,UAAU,iBAAiB,CAC/B,KAAmJ;IAEnJ,MAAM,KAAK,GAAG,eAAe,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtD,KAAK,CACH,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EACjE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAClF,CAAC;IACF,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,qBAAqB,8DAA4D,CAAC;AAE/F,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,EAAE,GAAG,SAAS,GAAG,MAAM,CA6KjF;AAMD,eAAO,MAAM,2BAA2B,EAAE,MAMF,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,qBAAqB,8DAA4D,CAAC;AAE/F,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,EAAE,GAAG,SAAS,GAAG,MAAM,CAkQjF;AAMD,eAAO,MAAM,2BAA2B,EAAE,MAMF,CAAC"}
package/dist/runtime.js CHANGED
@@ -18,20 +18,75 @@
18
18
  // 現在のフレームを捕捉し、解決時にそのフレームへ再突入する(遅延構築される依存グラフ
19
19
  // 全体が root の構築スコープに一貫して従う)。ローカルスコープは `using` 宣言で入り、
20
20
  // 囲みブロックの終端で自動的に元に戻る(Symbol.dispose)。
21
+ //
22
+ // 前方参照対応(docs/config-forward-reference.md): 登録はFIFOキューに積まれ、
23
+ // レジストリを読むたびにドレインされる。キー式はサンクで渡され初回参照時まで
24
+ // 評価が遅延されるため、同一ファイル内で後方宣言されたクラスをconfigurationが
25
+ // 前方参照できる(TDZを踏まない)。seq比較により同一キーへの複数登録の最終状態は
26
+ // 常にソース実行順どおりになる。旧シグネチャ(bindType/registerOverride/
27
+ // __disonEnterScope/__disonBuildFrame)は互換のため残し、内部でキュー経由になる。
21
28
  // スコープ対応に必要な import(AsyncLocalStorage)。生成物のファイル先頭に置く必要が
22
29
  // あるため、宣言本体(generateRuntimeDeclarations)とは分けて提供する。単一ファイル
23
30
  // モードでは core.ts が、複数ファイルモードでは共有ランタイムモジュールが先頭に付ける。
24
31
  export const DISON_RUNTIME_IMPORTS = `import { AsyncLocalStorage } from "node:async_hooks";\n`;
25
32
  export function generateRuntimeDeclarations(exportKeyword) {
26
33
  const E = exportKeyword;
27
- return (`// --- scope infrastructure (docs/scoped-configuration.md) ---\n` +
34
+ return (`// --- registration queue (docs/config-forward-reference.md) ---\n` +
35
+ `// Registrations are queued (with a global sequence number) and applied lazily the\n` +
36
+ `// first time a registry is read. Key expressions are passed as thunks, so a\n` +
37
+ `// configuration may forward-reference a class declared later in the same file\n` +
38
+ `// without hitting the temporal dead zone. A thunk that still throws ReferenceError\n` +
39
+ `// stays queued and is retried on the next read; seq comparison guarantees that the\n` +
40
+ `// final state for a key always follows source execution order, and that a blocked\n` +
41
+ `// entry never delays unrelated keys.\n` +
28
42
  `type __DisonFactory = () => any;\n` +
29
43
  `type __DisonKey = string | symbol | Function;\n` +
30
- `interface __DisonFrame {\n` +
31
- ` binds: Map<__DisonKey, __DisonFactory>;\n` +
32
- ` overrides: WeakMap<Function, Record<string, __DisonFactory>>;\n` +
44
+ `type __DisonSlot = { f: __DisonFactory; seq: number };\n` +
45
+ `type __DisonPendingEntry =\n` +
46
+ ` | { kind: "bind"; key: () => __DisonKey; f: __DisonFactory; seq: number }\n` +
47
+ ` | { kind: "override"; cls: () => Function; prop: string; f: __DisonFactory; seq: number };\n` +
48
+ `// One store shape shared by the global registries and every scope frame.\n` +
49
+ `interface __DisonStore {\n` +
50
+ ` binds: Map<__DisonKey, __DisonSlot>;\n` +
51
+ ` overrides: WeakMap<Function, Record<string, __DisonSlot>>;\n` +
52
+ ` pending: __DisonPendingEntry[];\n` +
53
+ `}\n` +
54
+ `interface __DisonFrame extends __DisonStore {\n` +
33
55
  ` parent: __DisonFrame | undefined;\n` +
34
56
  `}\n` +
57
+ `let __dison_seq = 0;\n` +
58
+ `function __disonPendBind(store: __DisonStore, key: () => __DisonKey, f: __DisonFactory): void {\n` +
59
+ ` store.pending.push({ kind: "bind", key, f, seq: __dison_seq++ });\n` +
60
+ `}\n` +
61
+ `function __disonPendOverride(store: __DisonStore, cls: () => Function, prop: string, f: __DisonFactory): void {\n` +
62
+ ` store.pending.push({ kind: "override", cls, prop, f, seq: __dison_seq++ });\n` +
63
+ `}\n` +
64
+ `// Drain a store's queue. Entries whose key thunk still hits the TDZ are kept and\n` +
65
+ `// retried later; everything else is applied, newest-seq-wins per key.\n` +
66
+ `function __disonApplyPending(store: __DisonStore): void {\n` +
67
+ ` if (store.pending.length === 0) return;\n` +
68
+ ` const remaining: __DisonPendingEntry[] = [];\n` +
69
+ ` for (const e of store.pending) {\n` +
70
+ ` let key: any;\n` +
71
+ ` try {\n` +
72
+ ` key = e.kind === "bind" ? e.key() : e.cls();\n` +
73
+ ` } catch (err) {\n` +
74
+ ` if (err instanceof ReferenceError) { remaining.push(e); continue; }\n` +
75
+ ` throw err;\n` +
76
+ ` }\n` +
77
+ ` if (e.kind === "bind") {\n` +
78
+ ` const cur = store.binds.get(key);\n` +
79
+ ` if (cur === undefined || cur.seq < e.seq) store.binds.set(key, { f: e.f, seq: e.seq });\n` +
80
+ ` } else {\n` +
81
+ ` let rec = store.overrides.get(key);\n` +
82
+ ` if (rec === undefined) { rec = {}; store.overrides.set(key, rec); }\n` +
83
+ ` const cur = rec[e.prop];\n` +
84
+ ` if (cur === undefined || cur.seq < e.seq) rec[e.prop] = { f: e.f, seq: e.seq };\n` +
85
+ ` }\n` +
86
+ ` }\n` +
87
+ ` store.pending = remaining;\n` +
88
+ `}\n\n` +
89
+ `// --- scope infrastructure (docs/scoped-configuration.md) ---\n` +
35
90
  `${E}const __dison_als = new AsyncLocalStorage<__DisonFrame | undefined>();\n` +
36
91
  `// Current scope frame (undefined = global only). Captured by injectable at construction.\n` +
37
92
  `${E}function __disonCurrentScope(): __DisonFrame | undefined { return __dison_als.getStore(); }\n\n` +
@@ -56,29 +111,56 @@ export function generateRuntimeDeclarations(exportKeyword) {
56
111
  ` }\n` +
57
112
  ` return out;\n` +
58
113
  `}\n` +
114
+ `function __disonNewFrame(parent: __DisonFrame | undefined): __DisonFrame {\n` +
115
+ ` return { binds: new Map(), overrides: new WeakMap(), pending: [], parent };\n` +
116
+ `}\n` +
59
117
  `// Build a frame without entering it (used to initialize a class body static field).\n` +
118
+ `// The setup callback receives key THUNKS, so a class-body configuration may reference\n` +
119
+ `// classes declared later in the file (evaluated at the first lookup on the frame).\n` +
120
+ `${E}function __disonBuildFrameLazy(\n` +
121
+ ` setup: (bind: (key: () => __DisonKey, factory: __DisonFactory) => void, override: (cls: () => Function, prop: string, factory: __DisonFactory) => void) => void\n` +
122
+ `): __DisonFrame {\n` +
123
+ ` const frame = __disonNewFrame(undefined);\n` +
124
+ ` setup(\n` +
125
+ ` (key, factory) => { __disonPendBind(frame, key, factory); },\n` +
126
+ ` (cls, prop, factory) => { __disonPendOverride(frame, cls, prop, factory); }\n` +
127
+ ` );\n` +
128
+ ` return frame;\n` +
129
+ `}\n` +
130
+ `// Backward-compatible variant taking eager key values (generated by older CLI versions).\n` +
60
131
  `${E}function __disonBuildFrame(\n` +
61
132
  ` setup: (bind: (key: __DisonKey, factory: __DisonFactory) => void, override: (cls: Function, prop: string, factory: __DisonFactory) => void) => void\n` +
62
133
  `): __DisonFrame {\n` +
63
- ` const frame: __DisonFrame = { binds: new Map(), overrides: new WeakMap(), parent: undefined };\n` +
134
+ ` const frame = __disonNewFrame(undefined);\n` +
64
135
  ` setup(\n` +
65
- ` (key, factory) => { frame.binds.set(key, factory); },\n` +
66
- ` (cls, prop, factory) => {\n` +
67
- ` let e = frame.overrides.get(cls);\n` +
68
- ` if (!e) { e = {}; frame.overrides.set(cls, e); }\n` +
69
- ` e[prop] = factory;\n` +
70
- ` }\n` +
136
+ ` (key, factory) => { __disonPendBind(frame, () => key, factory); },\n` +
137
+ ` (cls, prop, factory) => { __disonPendOverride(frame, () => cls, prop, factory); }\n` +
71
138
  ` );\n` +
72
139
  ` return frame;\n` +
73
140
  `}\n\n` +
74
141
  `// --- global registries ---\n` +
75
142
  `// Global dependency registry (per-property override). Keyed by the class itself\n` +
76
143
  `// so tsc catches a typo in the override target class name.\n` +
77
- `${E}const DI_REGISTRY = new WeakMap<Function, Record<string, __DisonFactory>>();\n\n` +
144
+ `${E}const DI_REGISTRY = new WeakMap<Function, Record<string, __DisonSlot>>();\n` +
145
+ `// Global type-replacement registry (bind). Key: class value (concrete class),\n` +
146
+ `// companion/token Symbol, or type-name string. See docs/type-identity-matching.md.\n` +
147
+ `${E}const TYPE_BINDINGS = new Map<__DisonKey, __DisonSlot>();\n` +
148
+ `const __DISON_GLOBAL: __DisonStore = { binds: TYPE_BINDINGS, overrides: DI_REGISTRY, pending: [] };\n\n` +
149
+ `// The Lazy variants take the key as a thunk (forward-reference safe); the plain\n` +
150
+ `// variants keep the old eager-key signature for code generated by older CLI versions.\n` +
151
+ `// bindTypeLazy<T> takes T as an explicit type argument, so tsc raises a compile error\n` +
152
+ `// if the replacement factory isn't compatible with the original type.\n` +
153
+ `${E}function bindTypeLazy<T>(key: () => __DisonKey, factory: () => T): void {\n` +
154
+ ` __disonPendBind(__DISON_GLOBAL, key, factory);\n` +
155
+ `}\n` +
156
+ `${E}function bindType<T>(typeKey: __DisonKey, factory: () => T): void {\n` +
157
+ ` __disonPendBind(__DISON_GLOBAL, () => typeKey, factory);\n` +
158
+ `}\n` +
159
+ `${E}function registerOverrideLazy(cls: () => Function, prop: string, factory: __DisonFactory): void {\n` +
160
+ ` __disonPendOverride(__DISON_GLOBAL, cls, prop, factory);\n` +
161
+ `}\n` +
78
162
  `${E}function registerOverride(cls: Function, prop: string, factory: __DisonFactory): void {\n` +
79
- ` let entry = DI_REGISTRY.get(cls);\n` +
80
- ` if (!entry) { entry = {}; DI_REGISTRY.set(cls, entry); }\n` +
81
- ` entry[prop] = factory;\n` +
163
+ ` __disonPendOverride(__DISON_GLOBAL, () => cls, prop, factory);\n` +
82
164
  `}\n\n` +
83
165
  `// Override target matching walks the prototype chain of the receiver's class\n` +
84
166
  `// (child -> parent, child-wins): an override targeting a base class applies to\n` +
@@ -92,53 +174,52 @@ export function generateRuntimeDeclarations(exportKeyword) {
92
174
  `}\n` +
93
175
  `// Match one override table against the class chain (child-wins).\n` +
94
176
  `function __disonChainLookup(\n` +
95
- ` map: { get(k: Function): Record<string, __DisonFactory> | undefined },\n` +
177
+ ` map: { get(k: Function): Record<string, __DisonSlot> | undefined },\n` +
96
178
  ` chain: Function[], prop: string\n` +
97
179
  `): __DisonFactory | undefined {\n` +
98
180
  ` for (const c of chain) {\n` +
99
181
  ` const o = map.get(c);\n` +
100
- ` if (o && Object.prototype.hasOwnProperty.call(o, prop)) return o[prop];\n` +
182
+ ` if (o && Object.prototype.hasOwnProperty.call(o, prop)) return o[prop].f;\n` +
101
183
  ` }\n` +
102
184
  ` return undefined;\n` +
103
185
  `}\n` +
104
186
  `// Look up an override in order: local frame chain (inner->outer) -> class scopes\n` +
105
187
  `// (child->parent) -> global (priority: local > class > global). Scope-major: each\n` +
106
188
  `// layer checks the whole class chain, so a nearer scope targeting a base class\n` +
107
- `// beats a farther scope targeting the subclass.\n` +
189
+ `// beats a farther scope targeting the subclass. Each store drains its queue first.\n` +
108
190
  `${E}function getOverride(cls: Function, prop: string): __DisonFactory | undefined {\n` +
109
191
  ` const chain = __disonClassChain(cls);\n` +
110
192
  ` for (let f = __dison_als.getStore(); f; f = f.parent) {\n` +
193
+ ` __disonApplyPending(f);\n` +
111
194
  ` const hit = __disonChainLookup(f.overrides, chain, prop);\n` +
112
195
  ` if (hit) return hit;\n` +
113
196
  ` }\n` +
114
197
  ` if (__dison_classScopeCtx) for (const f of __dison_classScopeCtx) {\n` +
198
+ ` __disonApplyPending(f);\n` +
115
199
  ` const hit = __disonChainLookup(f.overrides, chain, prop);\n` +
116
200
  ` if (hit) return hit;\n` +
117
201
  ` }\n` +
202
+ ` __disonApplyPending(__DISON_GLOBAL);\n` +
118
203
  ` return __disonChainLookup(DI_REGISTRY, chain, prop);\n` +
119
204
  `}\n\n` +
120
- `// Global type-replacement registry (bind). Key: class value (concrete class),\n` +
121
- `// companion/token Symbol, or type-name string. See docs/type-identity-matching.md.\n` +
122
- `${E}const TYPE_BINDINGS = new Map<__DisonKey, __DisonFactory>();\n` +
123
205
  `const _resolvingTypeBindings = new Set<__DisonKey>();\n\n` +
124
- `// bindType<T> takes T as an explicit type argument, so tsc raises a compile error\n` +
125
- `// if the replacement factory isn't compatible with the original type.\n` +
126
- `${E}function bindType<T>(typeKey: __DisonKey, factory: () => T): void {\n` +
127
- ` TYPE_BINDINGS.set(typeKey, factory);\n` +
128
- `}\n\n` +
129
206
  `// Look up a bind in order: local frame chain (inner->outer) -> class scopes (child->parent)\n` +
130
207
  `// -> global. __dison_classScopeCtx stays set throughout a resolution, so a bind chain inside\n` +
131
208
  `// a class scope (the recursion in resolveType) follows the class scope too.\n` +
209
+ `// Each store drains its queue first.\n` +
132
210
  `function __disonLookupBind(typeKey: __DisonKey): __DisonFactory | undefined {\n` +
133
211
  ` for (let f = __dison_als.getStore(); f; f = f.parent) {\n` +
212
+ ` __disonApplyPending(f);\n` +
134
213
  ` const b = f.binds.get(typeKey);\n` +
135
- ` if (b) return b;\n` +
214
+ ` if (b) return b.f;\n` +
136
215
  ` }\n` +
137
216
  ` if (__dison_classScopeCtx) for (const f of __dison_classScopeCtx) {\n` +
217
+ ` __disonApplyPending(f);\n` +
138
218
  ` const b = f.binds.get(typeKey);\n` +
139
- ` if (b) return b;\n` +
219
+ ` if (b) return b.f;\n` +
140
220
  ` }\n` +
141
- ` return TYPE_BINDINGS.get(typeKey);\n` +
221
+ ` __disonApplyPending(__DISON_GLOBAL);\n` +
222
+ ` return TYPE_BINDINGS.get(typeKey)?.f;\n` +
142
223
  `}\n\n` +
143
224
  `// Scope-aware bind resolution. bind chains (bind A = B; bind B = C; resolves A to C).\n` +
144
225
  `// Each hop of the chain also consults the current frame chain -> class -> global.\n` +
@@ -177,21 +258,32 @@ export function generateRuntimeDeclarations(exportKeyword) {
177
258
  `// current frame, populate its bind/override via setup, and enter it (enterWith). The return\n` +
178
259
  `// value has Symbol.dispose, so a \`using\` declaration restores the previous frame at the end\n` +
179
260
  `// of the enclosing block. setup uses the bind/override helpers to add the deltas.\n` +
261
+ `function __disonEnterFrame(frame: __DisonFrame): { [Symbol.dispose](): void } {\n` +
262
+ ` const prev = __dison_als.getStore();\n` +
263
+ ` __dison_als.enterWith(frame);\n` +
264
+ ` return { [Symbol.dispose]() { __dison_als.enterWith(prev); } };\n` +
265
+ `}\n` +
266
+ `// The setup callback receives key THUNKS (forward-reference safe within the block).\n` +
267
+ `${E}function __disonEnterScopeLazy(\n` +
268
+ ` setup: (bind: (key: () => __DisonKey, factory: __DisonFactory) => void, override: (cls: () => Function, prop: string, factory: __DisonFactory) => void) => void\n` +
269
+ `): { [Symbol.dispose](): void } {\n` +
270
+ ` const frame = __disonNewFrame(__dison_als.getStore());\n` +
271
+ ` setup(\n` +
272
+ ` (key, factory) => { __disonPendBind(frame, key, factory); },\n` +
273
+ ` (cls, prop, factory) => { __disonPendOverride(frame, cls, prop, factory); }\n` +
274
+ ` );\n` +
275
+ ` return __disonEnterFrame(frame);\n` +
276
+ `}\n` +
277
+ `// Backward-compatible variant taking eager key values (generated by older CLI versions).\n` +
180
278
  `${E}function __disonEnterScope(\n` +
181
279
  ` setup: (bind: (key: __DisonKey, factory: __DisonFactory) => void, override: (cls: Function, prop: string, factory: __DisonFactory) => void) => void\n` +
182
280
  `): { [Symbol.dispose](): void } {\n` +
183
- ` const frame: __DisonFrame = { binds: new Map(), overrides: new WeakMap(), parent: __dison_als.getStore() };\n` +
281
+ ` const frame = __disonNewFrame(__dison_als.getStore());\n` +
184
282
  ` setup(\n` +
185
- ` (key, factory) => { frame.binds.set(key, factory); },\n` +
186
- ` (cls, prop, factory) => {\n` +
187
- ` let e = frame.overrides.get(cls);\n` +
188
- ` if (!e) { e = {}; frame.overrides.set(cls, e); }\n` +
189
- ` e[prop] = factory;\n` +
190
- ` }\n` +
283
+ ` (key, factory) => { __disonPendBind(frame, () => key, factory); },\n` +
284
+ ` (cls, prop, factory) => { __disonPendOverride(frame, () => cls, prop, factory); }\n` +
191
285
  ` );\n` +
192
- ` const prev = __dison_als.getStore();\n` +
193
- ` __dison_als.enterWith(frame);\n` +
194
- ` return { [Symbol.dispose]() { __dison_als.enterWith(prev); } };\n` +
286
+ ` return __disonEnterFrame(frame);\n` +
195
287
  `}\n`);
196
288
  }
197
289
  // 複数ファイルでランタイム状態を共有するための共有ランタイムモジュールのソース。
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@no22/dison",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "description": "An experimental DSL that transpiles to TypeScript, with property injection built into the language itself.",
6
6
  "main": "./dist/core.js",