@no22/dison 1.4.0 → 1.6.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 +40 -1
- package/dist/cli.js +12 -1
- package/dist/cli.js.map +1 -1
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +17 -12
- package/dist/codegen.js.map +1 -1
- package/dist/collisions.d.ts +22 -0
- package/dist/collisions.d.ts.map +1 -1
- package/dist/collisions.js +116 -0
- package/dist/collisions.js.map +1 -1
- package/dist/core.d.ts +2 -2
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +16 -9
- package/dist/core.js.map +1 -1
- package/dist/generated-runtime.d.ts +31 -6
- package/dist/generated-runtime.d.ts.map +1 -1
- package/dist/generated-runtime.js +108 -40
- package/dist/generated-runtime.js.map +1 -1
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +157 -43
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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(); }
|
|
@@ -13,41 +57,63 @@ let __dison_classScopeCtx;
|
|
|
13
57
|
// A class-body configuration is placed as a static __dison_classScope_N field. Walk
|
|
14
58
|
// this.constructor's prototype chain (child -> parent) and collect the fields each class
|
|
15
59
|
// owns (inheritance: a subclass inherits its parent's class scope and can override just
|
|
16
|
-
// the delta).
|
|
60
|
+
// the delta). Within one class the frames are collected in reverse definition order,
|
|
61
|
+
// so when the same class body has several configurations for the same key, the LAST
|
|
62
|
+
// one wins (matching the last-assignment-wins intuition, and the behavior of
|
|
63
|
+
// sequential global registrations and nested local scopes).
|
|
17
64
|
function __disonClassScopes(cls) {
|
|
18
65
|
const out = [];
|
|
19
66
|
for (let c = cls; c && c !== Function.prototype && c !== Object; c = Object.getPrototypeOf(c)) {
|
|
67
|
+
const own = [];
|
|
20
68
|
for (const key of Object.getOwnPropertyNames(c)) {
|
|
21
69
|
if (key.indexOf('__dison_classScope') === 0)
|
|
22
|
-
|
|
70
|
+
own.push(c[key]);
|
|
23
71
|
}
|
|
72
|
+
for (let i = own.length - 1; i >= 0; i--)
|
|
73
|
+
out.push(own[i]);
|
|
24
74
|
}
|
|
25
75
|
return out;
|
|
26
76
|
}
|
|
77
|
+
function __disonNewFrame(parent) {
|
|
78
|
+
return { binds: new Map(), overrides: new WeakMap(), pending: [], parent };
|
|
79
|
+
}
|
|
27
80
|
// Build a frame without entering it (used to initialize a class body static field).
|
|
81
|
+
// The setup callback receives key THUNKS, so a class-body configuration may reference
|
|
82
|
+
// classes declared later in the file (evaluated at the first lookup on the frame).
|
|
83
|
+
export function __disonBuildFrameLazy(setup) {
|
|
84
|
+
const frame = __disonNewFrame(undefined);
|
|
85
|
+
setup((key, factory) => { __disonPendBind(frame, key, factory); }, (cls, prop, factory) => { __disonPendOverride(frame, cls, prop, factory); });
|
|
86
|
+
return frame;
|
|
87
|
+
}
|
|
88
|
+
// Backward-compatible variant taking eager key values (generated by older CLI versions).
|
|
28
89
|
export function __disonBuildFrame(setup) {
|
|
29
|
-
const frame =
|
|
30
|
-
setup((key, factory) => { frame
|
|
31
|
-
let e = frame.overrides.get(cls);
|
|
32
|
-
if (!e) {
|
|
33
|
-
e = {};
|
|
34
|
-
frame.overrides.set(cls, e);
|
|
35
|
-
}
|
|
36
|
-
e[prop] = factory;
|
|
37
|
-
});
|
|
90
|
+
const frame = __disonNewFrame(undefined);
|
|
91
|
+
setup((key, factory) => { __disonPendBind(frame, () => key, factory); }, (cls, prop, factory) => { __disonPendOverride(frame, () => cls, prop, factory); });
|
|
38
92
|
return frame;
|
|
39
93
|
}
|
|
40
94
|
// --- global registries ---
|
|
41
95
|
// Global dependency registry (per-property override). Keyed by the class itself
|
|
42
96
|
// so tsc catches a typo in the override target class name.
|
|
43
97
|
export const DI_REGISTRY = new WeakMap();
|
|
98
|
+
// Global type-replacement registry (bind). Key: class value (concrete class),
|
|
99
|
+
// companion/token Symbol, or type-name string. See docs/type-identity-matching.md.
|
|
100
|
+
export const TYPE_BINDINGS = new Map();
|
|
101
|
+
const __DISON_GLOBAL = { binds: TYPE_BINDINGS, overrides: DI_REGISTRY, pending: [] };
|
|
102
|
+
// The Lazy variants take the key as a thunk (forward-reference safe); the plain
|
|
103
|
+
// variants keep the old eager-key signature for code generated by older CLI versions.
|
|
104
|
+
// bindTypeLazy<T> takes T as an explicit type argument, so tsc raises a compile error
|
|
105
|
+
// if the replacement factory isn't compatible with the original type.
|
|
106
|
+
export function bindTypeLazy(key, factory) {
|
|
107
|
+
__disonPendBind(__DISON_GLOBAL, key, factory);
|
|
108
|
+
}
|
|
109
|
+
export function bindType(typeKey, factory) {
|
|
110
|
+
__disonPendBind(__DISON_GLOBAL, () => typeKey, factory);
|
|
111
|
+
}
|
|
112
|
+
export function registerOverrideLazy(cls, prop, factory) {
|
|
113
|
+
__disonPendOverride(__DISON_GLOBAL, cls, prop, factory);
|
|
114
|
+
}
|
|
44
115
|
export function registerOverride(cls, prop, factory) {
|
|
45
|
-
|
|
46
|
-
if (!entry) {
|
|
47
|
-
entry = {};
|
|
48
|
-
DI_REGISTRY.set(cls, entry);
|
|
49
|
-
}
|
|
50
|
-
entry[prop] = factory;
|
|
116
|
+
__disonPendOverride(__DISON_GLOBAL, () => cls, prop, factory);
|
|
51
117
|
}
|
|
52
118
|
// Override target matching walks the prototype chain of the receiver's class
|
|
53
119
|
// (child -> parent, child-wins): an override targeting a base class applies to
|
|
@@ -65,54 +131,53 @@ function __disonChainLookup(map, chain, prop) {
|
|
|
65
131
|
for (const c of chain) {
|
|
66
132
|
const o = map.get(c);
|
|
67
133
|
if (o && Object.prototype.hasOwnProperty.call(o, prop))
|
|
68
|
-
return o[prop];
|
|
134
|
+
return o[prop].f;
|
|
69
135
|
}
|
|
70
136
|
return undefined;
|
|
71
137
|
}
|
|
72
138
|
// Look up an override in order: local frame chain (inner->outer) -> class scopes
|
|
73
139
|
// (child->parent) -> global (priority: local > class > global). Scope-major: each
|
|
74
140
|
// layer checks the whole class chain, so a nearer scope targeting a base class
|
|
75
|
-
// beats a farther scope targeting the subclass.
|
|
141
|
+
// beats a farther scope targeting the subclass. Each store drains its queue first.
|
|
76
142
|
export function getOverride(cls, prop) {
|
|
77
143
|
const chain = __disonClassChain(cls);
|
|
78
144
|
for (let f = __dison_als.getStore(); f; f = f.parent) {
|
|
145
|
+
__disonApplyPending(f);
|
|
79
146
|
const hit = __disonChainLookup(f.overrides, chain, prop);
|
|
80
147
|
if (hit)
|
|
81
148
|
return hit;
|
|
82
149
|
}
|
|
83
150
|
if (__dison_classScopeCtx)
|
|
84
151
|
for (const f of __dison_classScopeCtx) {
|
|
152
|
+
__disonApplyPending(f);
|
|
85
153
|
const hit = __disonChainLookup(f.overrides, chain, prop);
|
|
86
154
|
if (hit)
|
|
87
155
|
return hit;
|
|
88
156
|
}
|
|
157
|
+
__disonApplyPending(__DISON_GLOBAL);
|
|
89
158
|
return __disonChainLookup(DI_REGISTRY, chain, prop);
|
|
90
159
|
}
|
|
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
160
|
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
161
|
// Look up a bind in order: local frame chain (inner->outer) -> class scopes (child->parent)
|
|
101
162
|
// -> global. __dison_classScopeCtx stays set throughout a resolution, so a bind chain inside
|
|
102
163
|
// a class scope (the recursion in resolveType) follows the class scope too.
|
|
164
|
+
// Each store drains its queue first.
|
|
103
165
|
function __disonLookupBind(typeKey) {
|
|
104
166
|
for (let f = __dison_als.getStore(); f; f = f.parent) {
|
|
167
|
+
__disonApplyPending(f);
|
|
105
168
|
const b = f.binds.get(typeKey);
|
|
106
169
|
if (b)
|
|
107
|
-
return b;
|
|
170
|
+
return b.f;
|
|
108
171
|
}
|
|
109
172
|
if (__dison_classScopeCtx)
|
|
110
173
|
for (const f of __dison_classScopeCtx) {
|
|
174
|
+
__disonApplyPending(f);
|
|
111
175
|
const b = f.binds.get(typeKey);
|
|
112
176
|
if (b)
|
|
113
|
-
return b;
|
|
177
|
+
return b.f;
|
|
114
178
|
}
|
|
115
|
-
|
|
179
|
+
__disonApplyPending(__DISON_GLOBAL);
|
|
180
|
+
return TYPE_BINDINGS.get(typeKey)?.f;
|
|
116
181
|
}
|
|
117
182
|
// Scope-aware bind resolution. bind chains (bind A = B; bind B = C; resolves A to C).
|
|
118
183
|
// Each hop of the chain also consults the current frame chain -> class -> global.
|
|
@@ -158,18 +223,21 @@ export function __disonResolveInjectable(scope, cls, prop, fallback) {
|
|
|
158
223
|
// current frame, populate its bind/override via setup, and enter it (enterWith). The return
|
|
159
224
|
// value has Symbol.dispose, so a `using` declaration restores the previous frame at the end
|
|
160
225
|
// of the enclosing block. setup uses the bind/override helpers to add the deltas.
|
|
161
|
-
|
|
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
|
-
});
|
|
226
|
+
function __disonEnterFrame(frame) {
|
|
171
227
|
const prev = __dison_als.getStore();
|
|
172
228
|
__dison_als.enterWith(frame);
|
|
173
229
|
return { [Symbol.dispose]() { __dison_als.enterWith(prev); } };
|
|
174
230
|
}
|
|
231
|
+
// The setup callback receives key THUNKS (forward-reference safe within the block).
|
|
232
|
+
export function __disonEnterScopeLazy(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
|
+
}
|
|
237
|
+
// Backward-compatible variant taking eager key values (generated by older CLI versions).
|
|
238
|
+
export function __disonEnterScope(setup) {
|
|
239
|
+
const frame = __disonNewFrame(__dison_als.getStore());
|
|
240
|
+
setup((key, factory) => { __disonPendBind(frame, () => key, factory); }, (cls, prop, factory) => { __disonPendOverride(frame, () => cls, prop, factory); });
|
|
241
|
+
return __disonEnterFrame(frame);
|
|
242
|
+
}
|
|
175
243
|
//# sourceMappingURL=generated-runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated-runtime.js","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"generated-runtime.js","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const DISON_RUNTIME_IMPORTS = "import { AsyncLocalStorage } from \"node:async_hooks\";\n";
|
|
2
|
-
export declare function generateRuntimeDeclarations(exportKeyword: "" | "export "): string;
|
|
2
|
+
export declare function generateRuntimeDeclarations(exportKeyword: "" | "export ", alsMode?: "node" | "stub"): string;
|
|
3
3
|
export declare const DISON_RUNTIME_MODULE_SOURCE: string;
|
|
4
4
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AA+BA,eAAO,MAAM,qBAAqB,8DAA4D,CAAC;AAQ/F,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,EAAE,GAAG,SAAS,EAC7B,OAAO,GAAE,MAAM,GAAG,MAAe,GAChC,MAAM,CAmRR;AAMD,eAAO,MAAM,2BAA2B,EAAE,MAMF,CAAC"}
|
package/dist/runtime.js
CHANGED
|
@@ -18,21 +18,93 @@
|
|
|
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
|
+
// alsMode(docs/spec-audit-2026-07.md #7):
|
|
33
|
+
// - "node": 本物の AsyncLocalStorage を使う(要 node:async_hooks import)。ローカル
|
|
34
|
+
// スコープを使うファイル・共有ランタイムモジュールはこちら。
|
|
35
|
+
// - "stub": 同期変数によるスタブ。ローカルスコープを使わないファイルでは、alsの
|
|
36
|
+
// ストアは__disonResolveInjectableの同期的なenter/restoreペアでしか触られないため
|
|
37
|
+
// ただの変数と等価。node:async_hooks への依存が消え、ブラウザ等でも動く。
|
|
38
|
+
export function generateRuntimeDeclarations(exportKeyword, alsMode = "node") {
|
|
26
39
|
const E = exportKeyword;
|
|
27
|
-
|
|
40
|
+
const alsDecl = alsMode === "node"
|
|
41
|
+
? `${E}const __dison_als = new AsyncLocalStorage<__DisonFrame | undefined>();\n`
|
|
42
|
+
: `// AsyncLocalStorage stub: this file uses no local scopes, so the store is only\n` +
|
|
43
|
+
`// touched synchronously (enter/restore pairs inside __disonResolveInjectable).\n` +
|
|
44
|
+
`// A plain variable is equivalent, and it avoids importing the Node-only\n` +
|
|
45
|
+
`// async-hooks module (the generated file also runs outside Node).\n` +
|
|
46
|
+
`${E}const __dison_als = {\n` +
|
|
47
|
+
` _store: undefined as __DisonFrame | undefined,\n` +
|
|
48
|
+
` getStore(): __DisonFrame | undefined { return this._store; },\n` +
|
|
49
|
+
` enterWith(store: __DisonFrame | undefined): void { this._store = store; },\n` +
|
|
50
|
+
`};\n`;
|
|
51
|
+
return (`// --- registration queue (docs/config-forward-reference.md) ---\n` +
|
|
52
|
+
`// Registrations are queued (with a global sequence number) and applied lazily the\n` +
|
|
53
|
+
`// first time a registry is read. Key expressions are passed as thunks, so a\n` +
|
|
54
|
+
`// configuration may forward-reference a class declared later in the same file\n` +
|
|
55
|
+
`// without hitting the temporal dead zone. A thunk that still throws ReferenceError\n` +
|
|
56
|
+
`// stays queued and is retried on the next read; seq comparison guarantees that the\n` +
|
|
57
|
+
`// final state for a key always follows source execution order, and that a blocked\n` +
|
|
58
|
+
`// entry never delays unrelated keys.\n` +
|
|
28
59
|
`type __DisonFactory = () => any;\n` +
|
|
29
60
|
`type __DisonKey = string | symbol | Function;\n` +
|
|
30
|
-
`
|
|
31
|
-
`
|
|
32
|
-
`
|
|
61
|
+
`type __DisonSlot = { f: __DisonFactory; seq: number };\n` +
|
|
62
|
+
`type __DisonPendingEntry =\n` +
|
|
63
|
+
` | { kind: "bind"; key: () => __DisonKey; f: __DisonFactory; seq: number }\n` +
|
|
64
|
+
` | { kind: "override"; cls: () => Function; prop: string; f: __DisonFactory; seq: number };\n` +
|
|
65
|
+
`// One store shape shared by the global registries and every scope frame.\n` +
|
|
66
|
+
`interface __DisonStore {\n` +
|
|
67
|
+
` binds: Map<__DisonKey, __DisonSlot>;\n` +
|
|
68
|
+
` overrides: WeakMap<Function, Record<string, __DisonSlot>>;\n` +
|
|
69
|
+
` pending: __DisonPendingEntry[];\n` +
|
|
70
|
+
`}\n` +
|
|
71
|
+
`interface __DisonFrame extends __DisonStore {\n` +
|
|
33
72
|
` parent: __DisonFrame | undefined;\n` +
|
|
34
73
|
`}\n` +
|
|
35
|
-
|
|
74
|
+
`let __dison_seq = 0;\n` +
|
|
75
|
+
`function __disonPendBind(store: __DisonStore, key: () => __DisonKey, f: __DisonFactory): void {\n` +
|
|
76
|
+
` store.pending.push({ kind: "bind", key, f, seq: __dison_seq++ });\n` +
|
|
77
|
+
`}\n` +
|
|
78
|
+
`function __disonPendOverride(store: __DisonStore, cls: () => Function, prop: string, f: __DisonFactory): void {\n` +
|
|
79
|
+
` store.pending.push({ kind: "override", cls, prop, f, seq: __dison_seq++ });\n` +
|
|
80
|
+
`}\n` +
|
|
81
|
+
`// Drain a store's queue. Entries whose key thunk still hits the TDZ are kept and\n` +
|
|
82
|
+
`// retried later; everything else is applied, newest-seq-wins per key.\n` +
|
|
83
|
+
`function __disonApplyPending(store: __DisonStore): void {\n` +
|
|
84
|
+
` if (store.pending.length === 0) return;\n` +
|
|
85
|
+
` const remaining: __DisonPendingEntry[] = [];\n` +
|
|
86
|
+
` for (const e of store.pending) {\n` +
|
|
87
|
+
` let key: any;\n` +
|
|
88
|
+
` try {\n` +
|
|
89
|
+
` key = e.kind === "bind" ? e.key() : e.cls();\n` +
|
|
90
|
+
` } catch (err) {\n` +
|
|
91
|
+
` if (err instanceof ReferenceError) { remaining.push(e); continue; }\n` +
|
|
92
|
+
` throw err;\n` +
|
|
93
|
+
` }\n` +
|
|
94
|
+
` if (e.kind === "bind") {\n` +
|
|
95
|
+
` const cur = store.binds.get(key);\n` +
|
|
96
|
+
` if (cur === undefined || cur.seq < e.seq) store.binds.set(key, { f: e.f, seq: e.seq });\n` +
|
|
97
|
+
` } else {\n` +
|
|
98
|
+
` let rec = store.overrides.get(key);\n` +
|
|
99
|
+
` if (rec === undefined) { rec = {}; store.overrides.set(key, rec); }\n` +
|
|
100
|
+
` const cur = rec[e.prop];\n` +
|
|
101
|
+
` if (cur === undefined || cur.seq < e.seq) rec[e.prop] = { f: e.f, seq: e.seq };\n` +
|
|
102
|
+
` }\n` +
|
|
103
|
+
` }\n` +
|
|
104
|
+
` store.pending = remaining;\n` +
|
|
105
|
+
`}\n\n` +
|
|
106
|
+
`// --- scope infrastructure (docs/scoped-configuration.md) ---\n` +
|
|
107
|
+
alsDecl +
|
|
36
108
|
`// Current scope frame (undefined = global only). Captured by injectable at construction.\n` +
|
|
37
109
|
`${E}function __disonCurrentScope(): __DisonFrame | undefined { return __dison_als.getStore(); }\n\n` +
|
|
38
110
|
`// Class scopes (an anonymous configuration directly inside a class body).\n` +
|
|
@@ -46,39 +118,71 @@ export function generateRuntimeDeclarations(exportKeyword) {
|
|
|
46
118
|
`// A class-body configuration is placed as a static __dison_classScope_N field. Walk\n` +
|
|
47
119
|
`// this.constructor's prototype chain (child -> parent) and collect the fields each class\n` +
|
|
48
120
|
`// owns (inheritance: a subclass inherits its parent's class scope and can override just\n` +
|
|
49
|
-
`// the delta)
|
|
121
|
+
`// the delta). Within one class the frames are collected in reverse definition order,\n` +
|
|
122
|
+
`// so when the same class body has several configurations for the same key, the LAST\n` +
|
|
123
|
+
`// one wins (matching the last-assignment-wins intuition, and the behavior of\n` +
|
|
124
|
+
`// sequential global registrations and nested local scopes).\n` +
|
|
50
125
|
`function __disonClassScopes(cls: Function): __DisonFrame[] {\n` +
|
|
51
126
|
` const out: __DisonFrame[] = [];\n` +
|
|
52
127
|
` for (let c: any = cls; c && c !== Function.prototype && c !== Object; c = Object.getPrototypeOf(c)) {\n` +
|
|
128
|
+
` const own: __DisonFrame[] = [];\n` +
|
|
53
129
|
` for (const key of Object.getOwnPropertyNames(c)) {\n` +
|
|
54
|
-
` if (key.indexOf('__dison_classScope') === 0)
|
|
130
|
+
` if (key.indexOf('__dison_classScope') === 0) own.push(c[key]);\n` +
|
|
55
131
|
` }\n` +
|
|
132
|
+
` for (let i = own.length - 1; i >= 0; i--) out.push(own[i]);\n` +
|
|
56
133
|
` }\n` +
|
|
57
134
|
` return out;\n` +
|
|
58
135
|
`}\n` +
|
|
136
|
+
`function __disonNewFrame(parent: __DisonFrame | undefined): __DisonFrame {\n` +
|
|
137
|
+
` return { binds: new Map(), overrides: new WeakMap(), pending: [], parent };\n` +
|
|
138
|
+
`}\n` +
|
|
59
139
|
`// Build a frame without entering it (used to initialize a class body static field).\n` +
|
|
140
|
+
`// The setup callback receives key THUNKS, so a class-body configuration may reference\n` +
|
|
141
|
+
`// classes declared later in the file (evaluated at the first lookup on the frame).\n` +
|
|
142
|
+
`${E}function __disonBuildFrameLazy(\n` +
|
|
143
|
+
` setup: (bind: (key: () => __DisonKey, factory: __DisonFactory) => void, override: (cls: () => Function, prop: string, factory: __DisonFactory) => void) => void\n` +
|
|
144
|
+
`): __DisonFrame {\n` +
|
|
145
|
+
` const frame = __disonNewFrame(undefined);\n` +
|
|
146
|
+
` setup(\n` +
|
|
147
|
+
` (key, factory) => { __disonPendBind(frame, key, factory); },\n` +
|
|
148
|
+
` (cls, prop, factory) => { __disonPendOverride(frame, cls, prop, factory); }\n` +
|
|
149
|
+
` );\n` +
|
|
150
|
+
` return frame;\n` +
|
|
151
|
+
`}\n` +
|
|
152
|
+
`// Backward-compatible variant taking eager key values (generated by older CLI versions).\n` +
|
|
60
153
|
`${E}function __disonBuildFrame(\n` +
|
|
61
154
|
` setup: (bind: (key: __DisonKey, factory: __DisonFactory) => void, override: (cls: Function, prop: string, factory: __DisonFactory) => void) => void\n` +
|
|
62
155
|
`): __DisonFrame {\n` +
|
|
63
|
-
` const frame
|
|
156
|
+
` const frame = __disonNewFrame(undefined);\n` +
|
|
64
157
|
` setup(\n` +
|
|
65
|
-
` (key, factory) => { frame
|
|
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` +
|
|
158
|
+
` (key, factory) => { __disonPendBind(frame, () => key, factory); },\n` +
|
|
159
|
+
` (cls, prop, factory) => { __disonPendOverride(frame, () => cls, prop, factory); }\n` +
|
|
71
160
|
` );\n` +
|
|
72
161
|
` return frame;\n` +
|
|
73
162
|
`}\n\n` +
|
|
74
163
|
`// --- global registries ---\n` +
|
|
75
164
|
`// Global dependency registry (per-property override). Keyed by the class itself\n` +
|
|
76
165
|
`// so tsc catches a typo in the override target class name.\n` +
|
|
77
|
-
`${E}const DI_REGISTRY = new WeakMap<Function, Record<string,
|
|
166
|
+
`${E}const DI_REGISTRY = new WeakMap<Function, Record<string, __DisonSlot>>();\n` +
|
|
167
|
+
`// Global type-replacement registry (bind). Key: class value (concrete class),\n` +
|
|
168
|
+
`// companion/token Symbol, or type-name string. See docs/type-identity-matching.md.\n` +
|
|
169
|
+
`${E}const TYPE_BINDINGS = new Map<__DisonKey, __DisonSlot>();\n` +
|
|
170
|
+
`const __DISON_GLOBAL: __DisonStore = { binds: TYPE_BINDINGS, overrides: DI_REGISTRY, pending: [] };\n\n` +
|
|
171
|
+
`// The Lazy variants take the key as a thunk (forward-reference safe); the plain\n` +
|
|
172
|
+
`// variants keep the old eager-key signature for code generated by older CLI versions.\n` +
|
|
173
|
+
`// bindTypeLazy<T> takes T as an explicit type argument, so tsc raises a compile error\n` +
|
|
174
|
+
`// if the replacement factory isn't compatible with the original type.\n` +
|
|
175
|
+
`${E}function bindTypeLazy<T>(key: () => __DisonKey, factory: () => T): void {\n` +
|
|
176
|
+
` __disonPendBind(__DISON_GLOBAL, key, factory);\n` +
|
|
177
|
+
`}\n` +
|
|
178
|
+
`${E}function bindType<T>(typeKey: __DisonKey, factory: () => T): void {\n` +
|
|
179
|
+
` __disonPendBind(__DISON_GLOBAL, () => typeKey, factory);\n` +
|
|
180
|
+
`}\n` +
|
|
181
|
+
`${E}function registerOverrideLazy(cls: () => Function, prop: string, factory: __DisonFactory): void {\n` +
|
|
182
|
+
` __disonPendOverride(__DISON_GLOBAL, cls, prop, factory);\n` +
|
|
183
|
+
`}\n` +
|
|
78
184
|
`${E}function registerOverride(cls: Function, prop: string, factory: __DisonFactory): void {\n` +
|
|
79
|
-
`
|
|
80
|
-
` if (!entry) { entry = {}; DI_REGISTRY.set(cls, entry); }\n` +
|
|
81
|
-
` entry[prop] = factory;\n` +
|
|
185
|
+
` __disonPendOverride(__DISON_GLOBAL, () => cls, prop, factory);\n` +
|
|
82
186
|
`}\n\n` +
|
|
83
187
|
`// Override target matching walks the prototype chain of the receiver's class\n` +
|
|
84
188
|
`// (child -> parent, child-wins): an override targeting a base class applies to\n` +
|
|
@@ -92,53 +196,52 @@ export function generateRuntimeDeclarations(exportKeyword) {
|
|
|
92
196
|
`}\n` +
|
|
93
197
|
`// Match one override table against the class chain (child-wins).\n` +
|
|
94
198
|
`function __disonChainLookup(\n` +
|
|
95
|
-
` map: { get(k: Function): Record<string,
|
|
199
|
+
` map: { get(k: Function): Record<string, __DisonSlot> | undefined },\n` +
|
|
96
200
|
` chain: Function[], prop: string\n` +
|
|
97
201
|
`): __DisonFactory | undefined {\n` +
|
|
98
202
|
` for (const c of chain) {\n` +
|
|
99
203
|
` const o = map.get(c);\n` +
|
|
100
|
-
` if (o && Object.prototype.hasOwnProperty.call(o, prop)) return o[prop];\n` +
|
|
204
|
+
` if (o && Object.prototype.hasOwnProperty.call(o, prop)) return o[prop].f;\n` +
|
|
101
205
|
` }\n` +
|
|
102
206
|
` return undefined;\n` +
|
|
103
207
|
`}\n` +
|
|
104
208
|
`// Look up an override in order: local frame chain (inner->outer) -> class scopes\n` +
|
|
105
209
|
`// (child->parent) -> global (priority: local > class > global). Scope-major: each\n` +
|
|
106
210
|
`// layer checks the whole class chain, so a nearer scope targeting a base class\n` +
|
|
107
|
-
`// beats a farther scope targeting the subclass.\n` +
|
|
211
|
+
`// beats a farther scope targeting the subclass. Each store drains its queue first.\n` +
|
|
108
212
|
`${E}function getOverride(cls: Function, prop: string): __DisonFactory | undefined {\n` +
|
|
109
213
|
` const chain = __disonClassChain(cls);\n` +
|
|
110
214
|
` for (let f = __dison_als.getStore(); f; f = f.parent) {\n` +
|
|
215
|
+
` __disonApplyPending(f);\n` +
|
|
111
216
|
` const hit = __disonChainLookup(f.overrides, chain, prop);\n` +
|
|
112
217
|
` if (hit) return hit;\n` +
|
|
113
218
|
` }\n` +
|
|
114
219
|
` if (__dison_classScopeCtx) for (const f of __dison_classScopeCtx) {\n` +
|
|
220
|
+
` __disonApplyPending(f);\n` +
|
|
115
221
|
` const hit = __disonChainLookup(f.overrides, chain, prop);\n` +
|
|
116
222
|
` if (hit) return hit;\n` +
|
|
117
223
|
` }\n` +
|
|
224
|
+
` __disonApplyPending(__DISON_GLOBAL);\n` +
|
|
118
225
|
` return __disonChainLookup(DI_REGISTRY, chain, prop);\n` +
|
|
119
226
|
`}\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
227
|
`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
228
|
`// Look up a bind in order: local frame chain (inner->outer) -> class scopes (child->parent)\n` +
|
|
130
229
|
`// -> global. __dison_classScopeCtx stays set throughout a resolution, so a bind chain inside\n` +
|
|
131
230
|
`// a class scope (the recursion in resolveType) follows the class scope too.\n` +
|
|
231
|
+
`// Each store drains its queue first.\n` +
|
|
132
232
|
`function __disonLookupBind(typeKey: __DisonKey): __DisonFactory | undefined {\n` +
|
|
133
233
|
` for (let f = __dison_als.getStore(); f; f = f.parent) {\n` +
|
|
234
|
+
` __disonApplyPending(f);\n` +
|
|
134
235
|
` const b = f.binds.get(typeKey);\n` +
|
|
135
|
-
` if (b) return b;\n` +
|
|
236
|
+
` if (b) return b.f;\n` +
|
|
136
237
|
` }\n` +
|
|
137
238
|
` if (__dison_classScopeCtx) for (const f of __dison_classScopeCtx) {\n` +
|
|
239
|
+
` __disonApplyPending(f);\n` +
|
|
138
240
|
` const b = f.binds.get(typeKey);\n` +
|
|
139
|
-
` if (b) return b;\n` +
|
|
241
|
+
` if (b) return b.f;\n` +
|
|
140
242
|
` }\n` +
|
|
141
|
-
`
|
|
243
|
+
` __disonApplyPending(__DISON_GLOBAL);\n` +
|
|
244
|
+
` return TYPE_BINDINGS.get(typeKey)?.f;\n` +
|
|
142
245
|
`}\n\n` +
|
|
143
246
|
`// Scope-aware bind resolution. bind chains (bind A = B; bind B = C; resolves A to C).\n` +
|
|
144
247
|
`// Each hop of the chain also consults the current frame chain -> class -> global.\n` +
|
|
@@ -177,21 +280,32 @@ export function generateRuntimeDeclarations(exportKeyword) {
|
|
|
177
280
|
`// current frame, populate its bind/override via setup, and enter it (enterWith). The return\n` +
|
|
178
281
|
`// value has Symbol.dispose, so a \`using\` declaration restores the previous frame at the end\n` +
|
|
179
282
|
`// of the enclosing block. setup uses the bind/override helpers to add the deltas.\n` +
|
|
283
|
+
`function __disonEnterFrame(frame: __DisonFrame): { [Symbol.dispose](): void } {\n` +
|
|
284
|
+
` const prev = __dison_als.getStore();\n` +
|
|
285
|
+
` __dison_als.enterWith(frame);\n` +
|
|
286
|
+
` return { [Symbol.dispose]() { __dison_als.enterWith(prev); } };\n` +
|
|
287
|
+
`}\n` +
|
|
288
|
+
`// The setup callback receives key THUNKS (forward-reference safe within the block).\n` +
|
|
289
|
+
`${E}function __disonEnterScopeLazy(\n` +
|
|
290
|
+
` setup: (bind: (key: () => __DisonKey, factory: __DisonFactory) => void, override: (cls: () => Function, prop: string, factory: __DisonFactory) => void) => void\n` +
|
|
291
|
+
`): { [Symbol.dispose](): void } {\n` +
|
|
292
|
+
` const frame = __disonNewFrame(__dison_als.getStore());\n` +
|
|
293
|
+
` setup(\n` +
|
|
294
|
+
` (key, factory) => { __disonPendBind(frame, key, factory); },\n` +
|
|
295
|
+
` (cls, prop, factory) => { __disonPendOverride(frame, cls, prop, factory); }\n` +
|
|
296
|
+
` );\n` +
|
|
297
|
+
` return __disonEnterFrame(frame);\n` +
|
|
298
|
+
`}\n` +
|
|
299
|
+
`// Backward-compatible variant taking eager key values (generated by older CLI versions).\n` +
|
|
180
300
|
`${E}function __disonEnterScope(\n` +
|
|
181
301
|
` setup: (bind: (key: __DisonKey, factory: __DisonFactory) => void, override: (cls: Function, prop: string, factory: __DisonFactory) => void) => void\n` +
|
|
182
302
|
`): { [Symbol.dispose](): void } {\n` +
|
|
183
|
-
` const frame
|
|
303
|
+
` const frame = __disonNewFrame(__dison_als.getStore());\n` +
|
|
184
304
|
` setup(\n` +
|
|
185
|
-
` (key, factory) => { frame
|
|
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` +
|
|
305
|
+
` (key, factory) => { __disonPendBind(frame, () => key, factory); },\n` +
|
|
306
|
+
` (cls, prop, factory) => { __disonPendOverride(frame, () => cls, prop, factory); }\n` +
|
|
191
307
|
` );\n` +
|
|
192
|
-
`
|
|
193
|
-
` __dison_als.enterWith(frame);\n` +
|
|
194
|
-
` return { [Symbol.dispose]() { __dison_als.enterWith(prev); } };\n` +
|
|
308
|
+
` return __disonEnterFrame(frame);\n` +
|
|
195
309
|
`}\n`);
|
|
196
310
|
}
|
|
197
311
|
// 複数ファイルでランタイム状態を共有するための共有ランタイムモジュールのソース。
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,gBAAgB;AAChB,wEAAwE;AACxE,EAAE;AACF,qDAAqD;AACrD,2CAA2C;AAC3C,kCAAkC;AAClC,EAAE;AACF,6DAA6D;AAC7D,8DAA8D;AAC9D,yDAAyD;AACzD,iCAAiC;AACjC,EAAE;AACF,uDAAuD;AACvD,4DAA4D;AAC5D,yDAAyD;AACzD,iDAAiD;AACjD,4CAA4C;AAC5C,oDAAoD;AACpD,sCAAsC;
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED