@xxxaz/json-rpc-schema-typing 0.11.0 → 0.11.1
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticRouter.js","sourceRoot":"","sources":["../../src/router/StaticRouter.ts"],"names":[],"mappings":";;;AAAA,0DAG6B;AAC7B,yDAAkE;
|
|
1
|
+
{"version":3,"file":"StaticRouter.js","sourceRoot":"","sources":["../../src/router/StaticRouter.ts"],"names":[],"mappings":";;;AAAA,0DAG6B;AAC7B,yDAAkE;AA8DlE,MAAa,YAAkB,SAAQ,gCAAkB;IACxB;IAA7B,YAA6B,QAAuB;QAChD,KAAK,EAAE,CAAC;QADiB,aAAQ,GAAR,QAAQ,CAAe;IAEpD,CAAC;IAED,MAAM,GAAG,EAAqB,CAAC;IAE/B;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CACd,UAAkB;QAIlB,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,MAAM,GACR,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;QAC9D,MAAM,QAAQ,GAAG,YAAY,CAAM,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;QACvD,IAAI,0CAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,0EAA0E;YAC1E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,CAAC;QAChD,CAAC;QACD,0DAA0D;QAC1D,2DAA2D;QAC3D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,YAAY,CAC9C,QAAyB,CAC5B,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CACT,UAA6B;QAI7B,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;QAEnC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,0CAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,2EAA2E;QAC3E,OAAQ,KAA2B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,CAAC,SAAS;QACZ,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;CACJ;AAjED,oCAiEC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAM,MAAe;IACtC,IACI,MAAM;QACN,OAAO,MAAM,KAAK,QAAQ;QAC1B,CAAC,0CAAuB,CAAC,YAAY,CAAC,MAAM,CAAC;QAC7C,SAAS,IAAI,MAAM,EACrB,CAAC;QACC,yEAAyE;QACzE,OAAQ,MAAwC,CAAC,OAAO,CAAC;IAC7D,CAAC;IACD,kEAAkE;IAClE,OAAO,MAAsC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACU,QAAA,UAAU,GAAG,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticRouter.js","sourceRoot":"","sources":["../../src/router/StaticRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,GAE1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAiB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"StaticRouter.js","sourceRoot":"","sources":["../../src/router/StaticRouter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -9,11 +9,20 @@ export type StaticRoute<Ctx> =
|
|
|
9
9
|
| JsonRpcMethodDefinition<Ctx, any, any>;
|
|
10
10
|
/**
|
|
11
11
|
* `() => import('./path.js')` 形式の遅延エントリ。
|
|
12
|
-
*
|
|
12
|
+
* 解決結果 (module) は `resolveChild` 内で `isDefinition` ガードにより検証し、
|
|
13
|
+
* 戻り値の型を `JsonRpcMethodDefinition | StaticRouter | null` に固定する。
|
|
14
|
+
*
|
|
15
|
+
* 解決結果の型を `unknown` にしているのは意図的。ここを `StaticRoute<Ctx>`
|
|
16
|
+
* (= `RouteMap<Ctx> | JsonRpcMethodDefinition`) にすると、具体 route リテラルとの
|
|
17
|
+
* assignability 検査で thunk の `{ default: MethodDef }` が
|
|
18
|
+
* `StaticRoute → RouteMap → MethodDef の $params/$return` を再帰展開し、
|
|
19
|
+
* 単一メソッドの route map でも TS2589 (型 instantiation が深すぎる) を誘発する。
|
|
20
|
+
* dispatch 型はモジュール実体の形を静的に知り得ず実行時ガードに委ねるため、
|
|
21
|
+
* ここを `unknown` に固定するのは型安全の毀損ではなく責務の適切な分離。
|
|
22
|
+
* client 側の引数・返り値型は `SchemaTree<typeof routes>` が具体リテラルから
|
|
23
|
+
* 導出する別経路であり、本型に一切影響されない。
|
|
13
24
|
*/
|
|
14
|
-
export type LazyRouteThunk<Ctx> = () => Promise<
|
|
15
|
-
StaticRoute<Ctx> | { default: StaticRoute<Ctx> } | undefined
|
|
16
|
-
>;
|
|
25
|
+
export type LazyRouteThunk<Ctx> = () => Promise<unknown>;
|
|
17
26
|
export type RouteMap<Ctx> = {
|
|
18
27
|
readonly [path: string]:
|
|
19
28
|
| StaticRoute<Ctx>
|
|
@@ -127,9 +136,7 @@ export class StaticRouter<Ctx> extends JsonRpcRouter<Ctx> {
|
|
|
127
136
|
* 「default を持つ module namespace なら default を採用」という一時的なランタイム判定を
|
|
128
137
|
* この関数内に閉じ込め、戻り値は `StaticRoute<Ctx>|undefined` に固定する。
|
|
129
138
|
*/
|
|
130
|
-
function unwrapModule<Ctx>(
|
|
131
|
-
loaded: StaticRoute<Ctx> | { default: StaticRoute<Ctx> } | undefined,
|
|
132
|
-
): StaticRoute<Ctx> | undefined {
|
|
139
|
+
function unwrapModule<Ctx>(loaded: unknown): StaticRoute<Ctx> | undefined {
|
|
133
140
|
if (
|
|
134
141
|
loaded &&
|
|
135
142
|
typeof loaded === 'object' &&
|
|
@@ -139,7 +146,8 @@ function unwrapModule<Ctx>(
|
|
|
139
146
|
// module namespace ({ default }) と runtime 判定できた場合のみ default を採用する局所キャスト
|
|
140
147
|
return (loaded as { default: StaticRoute<Ctx> }).default;
|
|
141
148
|
}
|
|
142
|
-
|
|
149
|
+
// lazy thunk の解決結果は dispatch 型では unknown。実行時判定を経て戻り値型を固定する局所キャスト。
|
|
150
|
+
return loaded as StaticRoute<Ctx> | undefined;
|
|
143
151
|
}
|
|
144
152
|
|
|
145
153
|
/**
|
|
@@ -3,11 +3,20 @@ import { JsonRpcRouter } from './JsonRpcRouter.js';
|
|
|
3
3
|
export type StaticRoute<Ctx> = RouteMap<Ctx> | JsonRpcMethodDefinition<Ctx, any, any>;
|
|
4
4
|
/**
|
|
5
5
|
* `() => import('./path.js')` 形式の遅延エントリ。
|
|
6
|
-
*
|
|
6
|
+
* 解決結果 (module) は `resolveChild` 内で `isDefinition` ガードにより検証し、
|
|
7
|
+
* 戻り値の型を `JsonRpcMethodDefinition | StaticRouter | null` に固定する。
|
|
8
|
+
*
|
|
9
|
+
* 解決結果の型を `unknown` にしているのは意図的。ここを `StaticRoute<Ctx>`
|
|
10
|
+
* (= `RouteMap<Ctx> | JsonRpcMethodDefinition`) にすると、具体 route リテラルとの
|
|
11
|
+
* assignability 検査で thunk の `{ default: MethodDef }` が
|
|
12
|
+
* `StaticRoute → RouteMap → MethodDef の $params/$return` を再帰展開し、
|
|
13
|
+
* 単一メソッドの route map でも TS2589 (型 instantiation が深すぎる) を誘発する。
|
|
14
|
+
* dispatch 型はモジュール実体の形を静的に知り得ず実行時ガードに委ねるため、
|
|
15
|
+
* ここを `unknown` に固定するのは型安全の毀損ではなく責務の適切な分離。
|
|
16
|
+
* client 側の引数・返り値型は `SchemaTree<typeof routes>` が具体リテラルから
|
|
17
|
+
* 導出する別経路であり、本型に一切影響されない。
|
|
7
18
|
*/
|
|
8
|
-
export type LazyRouteThunk<Ctx> = () => Promise<
|
|
9
|
-
default: StaticRoute<Ctx>;
|
|
10
|
-
} | undefined>;
|
|
19
|
+
export type LazyRouteThunk<Ctx> = () => Promise<unknown>;
|
|
11
20
|
export type RouteMap<Ctx> = {
|
|
12
21
|
readonly [path: string]: StaticRoute<Ctx> | Promise<StaticRoute<Ctx> | undefined> | LazyRouteThunk<Ctx>;
|
|
13
22
|
};
|