@no22/dison 1.2.0 → 1.3.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 +8 -0
- package/dist/generated-runtime.d.ts.map +1 -1
- package/dist/generated-runtime.js +31 -8
- package/dist/generated-runtime.js.map +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +31 -7
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -161,6 +161,14 @@ override UserService {
|
|
|
161
161
|
}
|
|
162
162
|
```
|
|
163
163
|
|
|
164
|
+
An override targeting a base class also applies to instances of its
|
|
165
|
+
subclasses (new in 1.3.0) — consistent with the fact that `injectable`
|
|
166
|
+
properties are inherited. The most specific registration wins: if both
|
|
167
|
+
`override Service` and `override SubService` set the same property, a
|
|
168
|
+
`SubService` instance uses the latter. Across scopes the usual priority
|
|
169
|
+
(local > class > global) is checked first, so a local override targeting
|
|
170
|
+
a base class beats a global override targeting the subclass.
|
|
171
|
+
|
|
164
172
|
`override` can also be written standalone (not wrapped in a
|
|
165
173
|
`configuration`), which desugars to an immediate assignment — useful
|
|
166
174
|
inside a function to capture a lexical variable:
|
|
@@ -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;
|
|
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"}
|
|
@@ -49,21 +49,44 @@ export function registerOverride(cls, prop, factory) {
|
|
|
49
49
|
}
|
|
50
50
|
entry[prop] = factory;
|
|
51
51
|
}
|
|
52
|
+
// Override target matching walks the prototype chain of the receiver's class
|
|
53
|
+
// (child -> parent, child-wins): an override targeting a base class applies to
|
|
54
|
+
// subclass instances too, consistent with how injectable properties and class-scope
|
|
55
|
+
// configurations are inherited (docs/override-inheritance.md). Same stop condition
|
|
56
|
+
// as __disonClassScopes.
|
|
57
|
+
function __disonClassChain(cls) {
|
|
58
|
+
const out = [];
|
|
59
|
+
for (let c = cls; c && c !== Function.prototype && c !== Object; c = Object.getPrototypeOf(c))
|
|
60
|
+
out.push(c);
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
// Match one override table against the class chain (child-wins).
|
|
64
|
+
function __disonChainLookup(map, chain, prop) {
|
|
65
|
+
for (const c of chain) {
|
|
66
|
+
const o = map.get(c);
|
|
67
|
+
if (o && Object.prototype.hasOwnProperty.call(o, prop))
|
|
68
|
+
return o[prop];
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
52
72
|
// Look up an override in order: local frame chain (inner->outer) -> class scopes
|
|
53
|
-
// (child->parent) -> global (priority: local > class > global).
|
|
73
|
+
// (child->parent) -> global (priority: local > class > global). Scope-major: each
|
|
74
|
+
// layer checks the whole class chain, so a nearer scope targeting a base class
|
|
75
|
+
// beats a farther scope targeting the subclass.
|
|
54
76
|
export function getOverride(cls, prop) {
|
|
77
|
+
const chain = __disonClassChain(cls);
|
|
55
78
|
for (let f = __dison_als.getStore(); f; f = f.parent) {
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
58
|
-
return
|
|
79
|
+
const hit = __disonChainLookup(f.overrides, chain, prop);
|
|
80
|
+
if (hit)
|
|
81
|
+
return hit;
|
|
59
82
|
}
|
|
60
83
|
if (__dison_classScopeCtx)
|
|
61
84
|
for (const f of __dison_classScopeCtx) {
|
|
62
|
-
const
|
|
63
|
-
if (
|
|
64
|
-
return
|
|
85
|
+
const hit = __disonChainLookup(f.overrides, chain, prop);
|
|
86
|
+
if (hit)
|
|
87
|
+
return hit;
|
|
65
88
|
}
|
|
66
|
-
return DI_REGISTRY
|
|
89
|
+
return __disonChainLookup(DI_REGISTRY, chain, prop);
|
|
67
90
|
}
|
|
68
91
|
// Global type-replacement registry (bind). Key: class value (concrete class),
|
|
69
92
|
// companion/token Symbol, or type-name string. See docs/type-identity-matching.md.
|
|
@@ -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;AAcrD,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,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAC/B,KAAmJ;IAEnJ,MAAM,KAAK,GAAiB,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC9F,KAAK,CACH,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EACpD,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;QACrB,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,EAAE,CAAC;YAAC,CAAC,GAAG,EAAE,CAAC;YAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QAChD,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACpB,CAAC,CACF,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4BAA4B;AAC5B,gFAAgF;AAChF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,EAA4C,CAAC;AAEnF,MAAM,UAAU,gBAAgB,CAAC,GAAa,EAAE,IAAY,EAAE,OAAuB;IACnF,IAAI,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,KAAK,GAAG,EAAE,CAAC;QAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;AACxB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"generated-runtime.js","sourceRoot":"","sources":["../src/generated-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/runtime.js
CHANGED
|
@@ -80,18 +80,42 @@ export function generateRuntimeDeclarations(exportKeyword) {
|
|
|
80
80
|
` if (!entry) { entry = {}; DI_REGISTRY.set(cls, entry); }\n` +
|
|
81
81
|
` entry[prop] = factory;\n` +
|
|
82
82
|
`}\n\n` +
|
|
83
|
+
`// Override target matching walks the prototype chain of the receiver's class\n` +
|
|
84
|
+
`// (child -> parent, child-wins): an override targeting a base class applies to\n` +
|
|
85
|
+
`// subclass instances too, consistent with how injectable properties and class-scope\n` +
|
|
86
|
+
`// configurations are inherited (docs/override-inheritance.md). Same stop condition\n` +
|
|
87
|
+
`// as __disonClassScopes.\n` +
|
|
88
|
+
`function __disonClassChain(cls: Function): Function[] {\n` +
|
|
89
|
+
` const out: Function[] = [];\n` +
|
|
90
|
+
` for (let c: any = cls; c && c !== Function.prototype && c !== Object; c = Object.getPrototypeOf(c)) out.push(c);\n` +
|
|
91
|
+
` return out;\n` +
|
|
92
|
+
`}\n` +
|
|
93
|
+
`// Match one override table against the class chain (child-wins).\n` +
|
|
94
|
+
`function __disonChainLookup(\n` +
|
|
95
|
+
` map: { get(k: Function): Record<string, __DisonFactory> | undefined },\n` +
|
|
96
|
+
` chain: Function[], prop: string\n` +
|
|
97
|
+
`): __DisonFactory | undefined {\n` +
|
|
98
|
+
` for (const c of chain) {\n` +
|
|
99
|
+
` const o = map.get(c);\n` +
|
|
100
|
+
` if (o && Object.prototype.hasOwnProperty.call(o, prop)) return o[prop];\n` +
|
|
101
|
+
` }\n` +
|
|
102
|
+
` return undefined;\n` +
|
|
103
|
+
`}\n` +
|
|
83
104
|
`// Look up an override in order: local frame chain (inner->outer) -> class scopes\n` +
|
|
84
|
-
`// (child->parent) -> global (priority: local > class > global)
|
|
105
|
+
`// (child->parent) -> global (priority: local > class > global). Scope-major: each\n` +
|
|
106
|
+
`// layer checks the whole class chain, so a nearer scope targeting a base class\n` +
|
|
107
|
+
`// beats a farther scope targeting the subclass.\n` +
|
|
85
108
|
`${E}function getOverride(cls: Function, prop: string): __DisonFactory | undefined {\n` +
|
|
109
|
+
` const chain = __disonClassChain(cls);\n` +
|
|
86
110
|
` for (let f = __dison_als.getStore(); f; f = f.parent) {\n` +
|
|
87
|
-
` const
|
|
88
|
-
` if (
|
|
111
|
+
` const hit = __disonChainLookup(f.overrides, chain, prop);\n` +
|
|
112
|
+
` if (hit) return hit;\n` +
|
|
89
113
|
` }\n` +
|
|
90
114
|
` if (__dison_classScopeCtx) for (const f of __dison_classScopeCtx) {\n` +
|
|
91
|
-
` const
|
|
92
|
-
` if (
|
|
115
|
+
` const hit = __disonChainLookup(f.overrides, chain, prop);\n` +
|
|
116
|
+
` if (hit) return hit;\n` +
|
|
93
117
|
` }\n` +
|
|
94
|
-
` return DI_REGISTRY
|
|
118
|
+
` return __disonChainLookup(DI_REGISTRY, chain, prop);\n` +
|
|
95
119
|
`}\n\n` +
|
|
96
120
|
`// Global type-replacement registry (bind). Key: class value (concrete class),\n` +
|
|
97
121
|
`// companion/token Symbol, or type-name string. See docs/type-identity-matching.md.\n` +
|
|
@@ -172,7 +196,7 @@ export function generateRuntimeDeclarations(exportKeyword) {
|
|
|
172
196
|
}
|
|
173
197
|
// 複数ファイルでランタイム状態を共有するための共有ランタイムモジュールのソース。
|
|
174
198
|
// scripts/generate-runtime-module.tsがこれをsrc/generated-runtime.tsとして書き出し、
|
|
175
|
-
// tscがdist/にコンパイルすることで、"
|
|
199
|
+
// tscがdist/にコンパイルすることで、"dison/runtime" として配布される
|
|
176
200
|
// (docs/packaging.md)。AsyncLocalStorage の import を先頭に付ける。
|
|
177
201
|
export const DISON_RUNTIME_MODULE_SOURCE = DISON_RUNTIME_IMPORTS +
|
|
178
202
|
`// --- Dison shared runtime module ---\n` +
|
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;AAEtC,wDAAwD;AACxD,yDAAyD;AACzD,kDAAkD;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG,yDAAyD,CAAC;AAE/F,MAAM,UAAU,2BAA2B,CAAC,aAA6B;IACvE,MAAM,CAAC,GAAG,aAAa,CAAC;IACxB,OAAO,CACL,kEAAkE;QAClE,oCAAoC;QACpC,iDAAiD;QACjD,4BAA4B;QAC5B,6CAA6C;QAC7C,mEAAmE;QACnE,uCAAuC;QACvC,KAAK;QACL,GAAG,CAAC,0EAA0E;QAC9E,6FAA6F;QAC7F,GAAG,CAAC,iGAAiG;QACrG,8EAA8E;QAC9E,uFAAuF;QACvF,uFAAuF;QACvF,uFAAuF;QACvF,oFAAoF;QACpF,2FAA2F;QAC3F,yFAAyF;QACzF,0DAA0D;QAC1D,wFAAwF;QACxF,6FAA6F;QAC7F,4FAA4F;QAC5F,kBAAkB;QAClB,gEAAgE;QAChE,qCAAqC;QACrC,2GAA2G;QAC3G,0DAA0D;QAC1D,wEAAwE;QACxE,SAAS;QACT,OAAO;QACP,iBAAiB;QACjB,KAAK;QACL,wFAAwF;QACxF,GAAG,CAAC,+BAA+B;QACnC,yJAAyJ;QACzJ,qBAAqB;QACrB,oGAAoG;QACpG,YAAY;QACZ,6DAA6D;QAC7D,iCAAiC;QACjC,2CAA2C;QAC3C,0DAA0D;QAC1D,4BAA4B;QAC5B,SAAS;QACT,QAAQ;QACR,mBAAmB;QACnB,OAAO;QACP,gCAAgC;QAChC,oFAAoF;QACpF,+DAA+D;QAC/D,GAAG,CAAC,kFAAkF;QACtF,GAAG,CAAC,2FAA2F;QAC/F,uCAAuC;QACvC,8DAA8D;QAC9D,4BAA4B;QAC5B,OAAO;QACP,qFAAqF;QACrF,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED