@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
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
|
|
@@ -123,7 +142,9 @@ needed) for the place it's written:
|
|
|
123
142
|
and concurrent async requests don't interfere.
|
|
124
143
|
- **Directly inside a class body** → a **class scope**: that class's
|
|
125
144
|
declarative DI wiring, shared by all its instances and inherited by
|
|
126
|
-
subclasses (which can override just the parts they change).
|
|
145
|
+
subclasses (which can override just the parts they change). If the
|
|
146
|
+
same class body wires the same key twice, the last configuration
|
|
147
|
+
wins (new in 1.6.0).
|
|
127
148
|
|
|
128
149
|
```dison
|
|
129
150
|
class UserService {
|
|
@@ -216,6 +237,11 @@ bind Repository = PostgresRepository("postgres://localhost/db");
|
|
|
216
237
|
The arguments are type-checked against the replacement's constructor,
|
|
217
238
|
and a standalone `bind`'s arguments can capture local variables.
|
|
218
239
|
|
|
240
|
+
When bind chains redirect the replacement (`bind A = B("x"); bind B = C;`),
|
|
241
|
+
`A` resolves all the way to `new C()` and `B`'s arguments are not used —
|
|
242
|
+
arguments only matter on the *final* replacement of a chain. This is by
|
|
243
|
+
design: a chain replaces `B` wholesale, constructor call included.
|
|
244
|
+
|
|
219
245
|
### `token`
|
|
220
246
|
|
|
221
247
|
Most name clashes are resolved automatically (see *Automatic collision
|
|
@@ -278,6 +304,13 @@ classes defined in another — as long as they all resolve
|
|
|
278
304
|
`@no22/dison/runtime` to the same installed copy (in practice: they're part of the same project
|
|
279
305
|
and share a common `node_modules` ancestor, which is the normal case).
|
|
280
306
|
|
|
307
|
+
The CLI also fails the build with a specific fix suggestion when a
|
|
308
|
+
`bind`/`override` in one file could **never match** its declaration in
|
|
309
|
+
another — e.g. you bound a class without importing it, or imported it
|
|
310
|
+
`type`-only where the identity key needs the runtime value (new in
|
|
311
|
+
1.6.0). Previously such mistakes were silent no-ops unless you ran
|
|
312
|
+
`tsc`.
|
|
313
|
+
|
|
281
314
|
## Requirements
|
|
282
315
|
|
|
283
316
|
The generated code targets a modern TypeScript/Node toolchain:
|
|
@@ -290,6 +323,12 @@ The generated code targets a modern TypeScript/Node toolchain:
|
|
|
290
323
|
`@types/node`.
|
|
291
324
|
- Everything else (`injectable`/`override`/`bind`, global and class
|
|
292
325
|
scopes) has no special requirement beyond a current TypeScript.
|
|
326
|
+
Since 1.6.0, a **single-file** transpile that uses no local scopes
|
|
327
|
+
emits no `node:async_hooks` import at all (a synchronous stub is
|
|
328
|
+
inlined instead), so that output also runs outside Node — in a
|
|
329
|
+
browser, for example. Multi-file output shares state through
|
|
330
|
+
`@no22/dison/runtime`, which does import `node:async_hooks`, so
|
|
331
|
+
multi-file projects remain Node-oriented.
|
|
293
332
|
|
|
294
333
|
The runtime module (`@no22/dison/runtime`) is shipped pre-compiled, so
|
|
295
334
|
these requirements apply to *your generated `.ts` files*, not to the
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import * as path from 'path';
|
|
4
|
-
import { transpileDisonToTS, findBindCollisions, computeIdentityKeyClassesByFile, computeCompanionPlanByFile } from './core.js'; // ※NodeNext環境のために.jsをつけます
|
|
4
|
+
import { transpileDisonToTS, findBindCollisions, findCrossFileKeyMismatches, computeIdentityKeyClassesByFile, computeCompanionPlanByFile } from './core.js'; // ※NodeNext環境のために.jsをつけます
|
|
5
5
|
// 複数ファイルの生成コードが共有ランタイム(DI_REGISTRY/TYPE_BINDINGS等)を
|
|
6
6
|
// importする際に使うパッケージのサブパス。@no22/disonパッケージ自身が
|
|
7
7
|
// この下に実体(src/generated-runtime.ts→dist/generated-runtime.js)を
|
|
@@ -57,6 +57,17 @@ function transpileMultipleFiles(inputFiles) {
|
|
|
57
57
|
throw new Error(`Possible bind/injectable type-name collisions across files` +
|
|
58
58
|
` (${collisions.length}). No files were generated.\n${details}`);
|
|
59
59
|
}
|
|
60
|
+
// クロスファイルキー不一致(import忘れ・type-onlyインポートのクラス)の検出
|
|
61
|
+
// (docs/cross-file-key-mismatch.md)。文字列キーに落ちた識別子が他ファイルの
|
|
62
|
+
// identity/companionキー宣言と決して一致しない=bind/overrideが黙って無効になる
|
|
63
|
+
// ケースを、変換前にエラーとして報告する。
|
|
64
|
+
const mismatches = findCrossFileKeyMismatches(fileInputs);
|
|
65
|
+
if (mismatches.length > 0) {
|
|
66
|
+
const details = mismatches.map((c) => ` - ${c.message}`).join('\n');
|
|
67
|
+
throw new Error(`Cross-file key mismatches detected (${mismatches.length}):` +
|
|
68
|
+
` these bind/override/injectable keys can never match their declarations.` +
|
|
69
|
+
` No files were generated.\n${details}`);
|
|
70
|
+
}
|
|
60
71
|
console.log(`🎉 Using "${RUNTIME_PACKAGE_SPECIFIER}" as the shared runtime (the target project must have "@no22/dison" installed as a dependency).`);
|
|
61
72
|
// 各ファイルが他のプロジェクトファイルからvalue-importしている具象クラスを解決し、
|
|
62
73
|
// 宣言元ファイルと同じ実体キーを使うよう transpile に渡す(docs/type-identity-
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC,CAAC,0BAA0B;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/codegen.d.ts.map
CHANGED
|
@@ -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;
|
|
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: グローバルレジストリへ登録(
|
|
41
|
-
// スコープフレームへ登録(__disonOverride。
|
|
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" : "
|
|
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 へ登録(
|
|
77
|
-
// スコープフレームへ登録(__disonBind。
|
|
78
|
-
//
|
|
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
|
-
: `
|
|
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 = `
|
|
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} =
|
|
138
|
+
return (`static __dison_classScope_${scopeId} = __disonBuildFrameLazy((__disonBind, __disonOverride) => {\n` +
|
|
134
139
|
`${lines.join("\n")}\n});`);
|
|
135
140
|
}
|
|
136
141
|
if (node.name !== undefined) {
|
package/dist/codegen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,mBAAmB;AACnB,wEAAwE;AAGxE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAgBpE,wDAAwD;AACxD,6CAA6C;AAC7C,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,iBAAiB,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,qCAAqC;AACrC,gDAAgD;AAChD,mDAAmD;AACnD,8CAA8C;AAC9C,iDAAiD;AACjD,2DAA2D;AAC3D,wCAAwC;AACxC,qDAAqD;AACrD,6DAA6D;AAC7D,gCAAgC;AAChC,8CAA8C;AAC9C,oDAAoD;AACpD,yDAAyD;AACzD,iDAAiD;AACjD,SAAS,UAAU,CAAC,OAAe,EAAE,KAAyB,EAAE,QAAqB;IACnF,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB;IACxE,IAAI,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,wDAAwD;AACxD,iDAAiD;AACjD,sBAAsB;AACtB,
|
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../src/codegen.ts"],"names":[],"mappings":"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"}
|
package/dist/collisions.d.ts
CHANGED
|
@@ -39,6 +39,28 @@ export declare function computeIdentityKeyClassesByFile(files: DisonFileInput[])
|
|
|
39
39
|
* 他ファイル由来 interface のローカル名 -> {specifier, 元名})。
|
|
40
40
|
*/
|
|
41
41
|
export declare function computeCompanionPlanByFile(files: DisonFileInput[]): Map<string, CompanionPlan>;
|
|
42
|
+
/**
|
|
43
|
+
* 複数ファイルモードのクロスファイルキー不一致検出(docs/cross-file-key-mismatch.md、
|
|
44
|
+
* 仕様監査2026-07 #4)。
|
|
45
|
+
*
|
|
46
|
+
* このファイルで文字列キーに落ちる(またはキー評価が失敗し続ける)裸の識別子が、
|
|
47
|
+
* 他のプロジェクトファイルでは identity(クラス実体)/companion Symbol でキー化される
|
|
48
|
+
* 宣言を持つ場合、キーは決して一致せず bind/override が黙って無効になる。これを
|
|
49
|
+
* transpile時エラーとして検出する。
|
|
50
|
+
*
|
|
51
|
+
* 対象サイト: bindの左辺・差し替え先、override対象クラス、injectableの型注釈
|
|
52
|
+
* (いずれも "as トークン" なしの裸の識別子のみ)。判定:
|
|
53
|
+
* - ローカル宣言あり / value-import済み → 安全(identity/companion側でキー化)。
|
|
54
|
+
* - type-only import されたプロジェクトのクラス → エラー(実体キーには値が必要。
|
|
55
|
+
* "type" を外すよう案内)。interface の type-only import は companion の既存機構
|
|
56
|
+
* (importedProjectInterfaceLocalNames が typeOnly も対象にする)で解決されるので安全。
|
|
57
|
+
* - importなしで他プロジェクトファイルにクラス/interface宣言あり → エラー
|
|
58
|
+
* (importするか as トークンを案内)。
|
|
59
|
+
* - どこにも宣言なし → 対象外(外部パッケージ型の文字列キーは正当。純粋な
|
|
60
|
+
* タイプミスは従来どおりtscの担当。const代入クラス等ヒューリスティックで
|
|
61
|
+
* 追えない宣言形への誤検出を避けるための線引き)。
|
|
62
|
+
*/
|
|
63
|
+
export declare function findCrossFileKeyMismatches(files: DisonFileInput[]): BindCollisionDiagnostic[];
|
|
42
64
|
/**
|
|
43
65
|
* 複数の.disファイルを横断して、`bind`の左辺や`injectable`の型注釈に
|
|
44
66
|
* 使われている型名(クラス/interface/型エイリアスを問わない)の衝突を
|
package/dist/collisions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collisions.d.ts","sourceRoot":"","sources":["../src/collisions.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAG5B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAG3B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAwFD;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAOjG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CA2D9F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAE,CAiIrF"}
|
|
1
|
+
{"version":3,"file":"collisions.d.ts","sourceRoot":"","sources":["../src/collisions.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,aAAa;IAG5B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAG3B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAwFD;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAOjG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CA2D9F;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAE,CA6F7F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,uBAAuB,EAAE,CAiIrF"}
|
package/dist/collisions.js
CHANGED
|
@@ -158,6 +158,122 @@ export function computeCompanionPlanByFile(files) {
|
|
|
158
158
|
}
|
|
159
159
|
return result;
|
|
160
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* 複数ファイルモードのクロスファイルキー不一致検出(docs/cross-file-key-mismatch.md、
|
|
163
|
+
* 仕様監査2026-07 #4)。
|
|
164
|
+
*
|
|
165
|
+
* このファイルで文字列キーに落ちる(またはキー評価が失敗し続ける)裸の識別子が、
|
|
166
|
+
* 他のプロジェクトファイルでは identity(クラス実体)/companion Symbol でキー化される
|
|
167
|
+
* 宣言を持つ場合、キーは決して一致せず bind/override が黙って無効になる。これを
|
|
168
|
+
* transpile時エラーとして検出する。
|
|
169
|
+
*
|
|
170
|
+
* 対象サイト: bindの左辺・差し替え先、override対象クラス、injectableの型注釈
|
|
171
|
+
* (いずれも "as トークン" なしの裸の識別子のみ)。判定:
|
|
172
|
+
* - ローカル宣言あり / value-import済み → 安全(identity/companion側でキー化)。
|
|
173
|
+
* - type-only import されたプロジェクトのクラス → エラー(実体キーには値が必要。
|
|
174
|
+
* "type" を外すよう案内)。interface の type-only import は companion の既存機構
|
|
175
|
+
* (importedProjectInterfaceLocalNames が typeOnly も対象にする)で解決されるので安全。
|
|
176
|
+
* - importなしで他プロジェクトファイルにクラス/interface宣言あり → エラー
|
|
177
|
+
* (importするか as トークンを案内)。
|
|
178
|
+
* - どこにも宣言なし → 対象外(外部パッケージ型の文字列キーは正当。純粋な
|
|
179
|
+
* タイプミスは従来どおりtscの担当。const代入クラス等ヒューリスティックで
|
|
180
|
+
* 追えない宣言形への誤検出を避けるための線引き)。
|
|
181
|
+
*/
|
|
182
|
+
export function findCrossFileKeyMismatches(files) {
|
|
183
|
+
const classIndex = buildProjectClassIndex(files);
|
|
184
|
+
const interfaceIndex = buildProjectInterfaceIndex(files);
|
|
185
|
+
const diagnostics = [];
|
|
186
|
+
for (const file of files) {
|
|
187
|
+
const tokens = new Lexer(file.source).tokenize();
|
|
188
|
+
const typeKinds = collectDeclaredTypeKinds(tokens);
|
|
189
|
+
const ast = new Parser(tokens, typeKinds).parseProgram();
|
|
190
|
+
const normSelf = normalizeExtensionlessAbsolutePath(file.path);
|
|
191
|
+
// このファイル内に何らかの宣言がある名前(クラス/abstract/interface/型エイリアス)。
|
|
192
|
+
// ローカル宣言があればそのファイル内では identity/companion 側でキー化される。
|
|
193
|
+
const localNames = new Set([...typeKinds.classNames, ...typeKinds.nonNewableTypeNames]);
|
|
194
|
+
const importsByLocalName = new Map(collectImportBindings(tokens).map((b) => [b.localName, b]));
|
|
195
|
+
// 他プロジェクトファイルで name を宣言しているファイルを探す。
|
|
196
|
+
const declaredElsewhere = (name) => {
|
|
197
|
+
const out = [];
|
|
198
|
+
for (const g of files) {
|
|
199
|
+
const normG = normalizeExtensionlessAbsolutePath(g.path);
|
|
200
|
+
if (normG === normSelf)
|
|
201
|
+
continue;
|
|
202
|
+
if (classIndex.get(normG)?.has(name))
|
|
203
|
+
out.push({ file: g.path, kind: "class" });
|
|
204
|
+
else if (interfaceIndex.get(normG)?.has(name))
|
|
205
|
+
out.push({ file: g.path, kind: "interface" });
|
|
206
|
+
}
|
|
207
|
+
return out;
|
|
208
|
+
};
|
|
209
|
+
const check = (typeKey, hasToken, site) => {
|
|
210
|
+
if (hasToken)
|
|
211
|
+
return;
|
|
212
|
+
const name = baseIdentifierOf(typeKey);
|
|
213
|
+
if (name !== typeKey)
|
|
214
|
+
return; // ジェネリクス等の複合型は文字列キーが正当
|
|
215
|
+
if (localNames.has(name))
|
|
216
|
+
return;
|
|
217
|
+
const imp = importsByLocalName.get(name);
|
|
218
|
+
if (imp !== undefined && !imp.typeOnly)
|
|
219
|
+
return; // value-import済み(外部パッケージ含め安全)
|
|
220
|
+
if (imp !== undefined && imp.typeOnly) {
|
|
221
|
+
// type-only import: 宣言元がプロジェクトのクラスの場合のみ問題
|
|
222
|
+
// (interfaceのtype-only importはcompanion機構が解決する。外部パッケージは文字列キーで一貫)。
|
|
223
|
+
if (!imp.specifier.startsWith("."))
|
|
224
|
+
return;
|
|
225
|
+
const resolved = normalizeExtensionlessAbsolutePath(path.resolve(path.dirname(file.path), imp.specifier));
|
|
226
|
+
if (classIndex.get(resolved)?.has(imp.importedName)) {
|
|
227
|
+
diagnostics.push({
|
|
228
|
+
name,
|
|
229
|
+
message: `${file.path}'s ${site}: "${name}" is imported type-only from "${imp.specifier}", ` +
|
|
230
|
+
`but it is a class matched by identity there — an identity key needs the runtime value. ` +
|
|
231
|
+
`Remove "type" from the import.`,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
// importなし: 他プロジェクトファイルの宣言と同名なら、文字列キーは決して一致しない。
|
|
237
|
+
const decls = declaredElsewhere(name);
|
|
238
|
+
if (decls.length === 0)
|
|
239
|
+
return;
|
|
240
|
+
const where = decls.map((d) => `${d.file} (as a ${d.kind})`).join(", ");
|
|
241
|
+
diagnostics.push({
|
|
242
|
+
name,
|
|
243
|
+
message: `${file.path}'s ${site}: "${name}" is declared in ${where} and matched by ` +
|
|
244
|
+
`${decls[0].kind === "class" ? "class identity" : "a companion Symbol"} there, ` +
|
|
245
|
+
`but this file neither declares nor imports it, so it would fall back to a string key ` +
|
|
246
|
+
`that can never match. Import it from the declaring file, or key both sides explicitly ` +
|
|
247
|
+
`with "as <token>".`,
|
|
248
|
+
});
|
|
249
|
+
};
|
|
250
|
+
const visitBind = (entry, label) => {
|
|
251
|
+
check(entry.originalTypeKey, entry.token !== undefined, `bind "${entry.originalTypeName}" (${label})`);
|
|
252
|
+
check(entry.replacementTypeKey, false, `bind replacement "${entry.replacementTypeName}" (${label})`);
|
|
253
|
+
};
|
|
254
|
+
for (const node of ast) {
|
|
255
|
+
if (node.kind === "injectable") {
|
|
256
|
+
check(node.typeKey, node.token !== undefined, `injectable "${node.propName}"`);
|
|
257
|
+
}
|
|
258
|
+
else if (node.kind === "configuration") {
|
|
259
|
+
const label = node.name !== undefined ? `configuration "${node.name}"` : "anonymous configuration";
|
|
260
|
+
for (const entry of node.entries) {
|
|
261
|
+
if (entry.kind === "bind")
|
|
262
|
+
visitBind(entry, label);
|
|
263
|
+
else
|
|
264
|
+
check(entry.className, false, `override "${entry.className}" (${label})`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else if (node.kind === "standalone-bind") {
|
|
268
|
+
visitBind(node.entry, "standalone");
|
|
269
|
+
}
|
|
270
|
+
else if (node.kind === "standalone-override") {
|
|
271
|
+
check(node.entry.className, false, `override "${node.entry.className}" (standalone)`);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return diagnostics;
|
|
276
|
+
}
|
|
161
277
|
/**
|
|
162
278
|
* 複数の.disファイルを横断して、`bind`の左辺や`injectable`の型注釈に
|
|
163
279
|
* 使われている型名(クラス/interface/型エイリアスを問わない)の衝突を
|
package/dist/collisions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collisions.js","sourceRoot":"","sources":["../src/collisions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collisions.js","sourceRoot":"","sources":["../src/collisions.ts"],"names":[],"mappings":"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"}
|
package/dist/core.d.ts
CHANGED
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
* -----------------------------------------------------------
|
|
236
236
|
*/
|
|
237
237
|
import { DISON_RUNTIME_MODULE_SOURCE } from "./runtime.js";
|
|
238
|
-
import { findBindCollisions, computeIdentityKeyClassesByFile, computeCompanionPlanByFile } from "./collisions.js";
|
|
238
|
+
import { findBindCollisions, findCrossFileKeyMismatches, computeIdentityKeyClassesByFile, computeCompanionPlanByFile } from "./collisions.js";
|
|
239
239
|
import type { DisonFileInput, BindCollisionDiagnostic, CompanionImportInfo } from "./collisions.js";
|
|
240
240
|
export interface TranspileOptions {
|
|
241
241
|
runtimeModulePath?: string;
|
|
@@ -249,6 +249,6 @@ export interface TranspileOptions {
|
|
|
249
249
|
* トークナイザ+パーサを経由してもなお100%元の文字列のまま出力される。
|
|
250
250
|
*/
|
|
251
251
|
export declare function transpileDisonToTS(sourceCode: string, options?: TranspileOptions): string;
|
|
252
|
-
export { DISON_RUNTIME_MODULE_SOURCE, findBindCollisions, computeIdentityKeyClassesByFile, computeCompanionPlanByFile };
|
|
252
|
+
export { DISON_RUNTIME_MODULE_SOURCE, findBindCollisions, findCrossFileKeyMismatches, computeIdentityKeyClassesByFile, computeCompanionPlanByFile };
|
|
253
253
|
export type { DisonFileInput, BindCollisionDiagnostic, CompanionImportInfo };
|
|
254
254
|
//# sourceMappingURL=core.d.ts.map
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2OG;AAgBH,OAAO,EAA+B,2BAA2B,EAAyB,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2OG;AAgBH,OAAO,EAA+B,2BAA2B,EAAyB,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC9I,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEpG,MAAM,WAAW,gBAAgB;IAI/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAW3B,kBAAkB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAQtC,aAAa,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAMjC,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CA4E7F;AAID,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,CAAC;AACpJ,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,CAAC"}
|
package/dist/core.js
CHANGED
|
@@ -239,7 +239,7 @@ import { collectDeclaredTypeKinds, trueInterfaceOrAliasNames, identityKeyableCla
|
|
|
239
239
|
import { Parser } from "./parser.js";
|
|
240
240
|
import { generate, resolveFromActivateBindings, generateFromImportStatements, generateCompanionDeclarations, generateCompanionImportStatements, collectDiUsedTypeNames, companionName, } from "./codegen.js";
|
|
241
241
|
import { generateRuntimeDeclarations, DISON_RUNTIME_MODULE_SOURCE, DISON_RUNTIME_IMPORTS } from "./runtime.js";
|
|
242
|
-
import { findBindCollisions, computeIdentityKeyClassesByFile, computeCompanionPlanByFile } from "./collisions.js";
|
|
242
|
+
import { findBindCollisions, findCrossFileKeyMismatches, computeIdentityKeyClassesByFile, computeCompanionPlanByFile } from "./collisions.js";
|
|
243
243
|
/**
|
|
244
244
|
* Dison言語のソースコードを受け取り、完全に動作するTypeScriptコードに変換する。
|
|
245
245
|
* DSL構文(configuration / override / injectable / activate / bind)以外の部分は、
|
|
@@ -292,16 +292,23 @@ export function transpileDisonToTS(sourceCode, options = {}) {
|
|
|
292
292
|
companionImportList.push({ localName, originalName: info.originalName, specifier: info.specifier });
|
|
293
293
|
}
|
|
294
294
|
}
|
|
295
|
-
//
|
|
296
|
-
//
|
|
297
|
-
//
|
|
295
|
+
// ランタイム前置き(docs/spec-audit-2026-07.md #7):
|
|
296
|
+
// - 複数ファイルモード: 生成ファイル自身は AsyncLocalStorage を参照しない
|
|
297
|
+
// (als は共有ランタイムモジュール側にある)ため、node:async_hooks の import は
|
|
298
|
+
// 生成ファイルには出さない。
|
|
299
|
+
// - 単一ファイルモード: ローカルスコープの configuration を使うファイルだけが
|
|
300
|
+
// 本物の AsyncLocalStorage(node:async_hooks)を必要とする。使わないファイルは
|
|
301
|
+
// 同期スタブでインライン生成し、Node 以外のランタイムでも動く生成物にする。
|
|
302
|
+
const usesLocalScope = ast.some((n) => n.kind === "configuration" && n.scope === "local");
|
|
298
303
|
const header = `// --- Auto-generated TypeScript code ---\n\n`;
|
|
299
304
|
const prelude = options.runtimeModulePath
|
|
300
|
-
? `${header}
|
|
301
|
-
`
|
|
302
|
-
` __disonCurrentScope,\n __disonResolveInjectable,\n
|
|
305
|
+
? `${header}import {\n` +
|
|
306
|
+
` bindTypeLazy,\n resolveType,\n registerOverrideLazy,\n` +
|
|
307
|
+
` __disonCurrentScope,\n __disonResolveInjectable,\n __disonEnterScopeLazy,\n __disonBuildFrameLazy,\n` +
|
|
303
308
|
`} from ${JSON.stringify(options.runtimeModulePath)};\n\n`
|
|
304
|
-
:
|
|
309
|
+
: usesLocalScope
|
|
310
|
+
? `${header}${DISON_RUNTIME_IMPORTS}\n${generateRuntimeDeclarations("", "node")}\n`
|
|
311
|
+
: `${header}\n${generateRuntimeDeclarations("", "stub")}\n`;
|
|
305
312
|
// ES Modules の import はファイル先頭にしか書けないため、import 系(companion import、
|
|
306
313
|
// "activate ... from" の import)を前置きの直後にまとめて出す。companion の const 宣言
|
|
307
314
|
// (export const __dison_token_X = Symbol(...))は import ではないので、すべての import
|
|
@@ -313,5 +320,5 @@ export function transpileDisonToTS(sourceCode, options = {}) {
|
|
|
313
320
|
}
|
|
314
321
|
// 公開API: 複数ファイル対応(docs/multi-file-support.md、
|
|
315
322
|
// docs/bind-interface-token.md)。CLIが複数ファイルを一括処理する際に使う。
|
|
316
|
-
export { DISON_RUNTIME_MODULE_SOURCE, findBindCollisions, computeIdentityKeyClassesByFile, computeCompanionPlanByFile };
|
|
323
|
+
export { DISON_RUNTIME_MODULE_SOURCE, findBindCollisions, findCrossFileKeyMismatches, computeIdentityKeyClassesByFile, computeCompanionPlanByFile };
|
|
317
324
|
//# sourceMappingURL=core.js.map
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2OG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACL,QAAQ,EACR,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,iCAAiC,EACjC,sBAAsB,EACtB,aAAa,GAGd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,kBAAkB,EAAE,+BAA+B,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;
|
|
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
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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,
|
|
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
|
};
|