behavior-contracts 0.7.3 → 0.8.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 +0 -1
- package/dist/authoring.d.ts +215 -3
- package/dist/authoring.d.ts.map +1 -1
- package/dist/authoring.js +269 -8
- package/dist/authoring.js.map +1 -1
- package/dist/behavior.d.ts +22 -1
- package/dist/behavior.d.ts.map +1 -1
- package/dist/behavior.js +23 -1
- package/dist/behavior.js.map +1 -1
- package/dist/bind.d.ts +64 -0
- package/dist/bind.d.ts.map +1 -0
- package/dist/bind.js +131 -0
- package/dist/bind.js.map +1 -0
- package/dist/builder.d.ts +30 -88
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +48 -56
- package/dist/builder.js.map +1 -1
- package/dist/expr-operator-types.d.ts +89 -0
- package/dist/expr-operator-types.d.ts.map +1 -0
- package/dist/expr-operator-types.js +134 -0
- package/dist/expr-operator-types.js.map +1 -0
- package/dist/generator/async-plan.d.ts.map +1 -1
- package/dist/generator/async-plan.js +4 -0
- package/dist/generator/async-plan.js.map +1 -1
- package/dist/generator/core.d.ts +15 -0
- package/dist/generator/core.d.ts.map +1 -1
- package/dist/generator/core.js +2 -0
- package/dist/generator/core.js.map +1 -1
- package/dist/generator/emit-php.d.ts.map +1 -1
- package/dist/generator/emit-php.js +1 -0
- package/dist/generator/emit-php.js.map +1 -1
- package/dist/generator/emit-python.d.ts.map +1 -1
- package/dist/generator/emit-python.js +1 -0
- package/dist/generator/emit-python.js.map +1 -1
- package/dist/generator/emit-straightline-typed-typescript.d.ts.map +1 -1
- package/dist/generator/emit-straightline-typed-typescript.js +1 -0
- package/dist/generator/emit-straightline-typed-typescript.js.map +1 -1
- package/dist/generator/emit-typed-native-go.d.ts.map +1 -1
- package/dist/generator/emit-typed-native-go.js +83 -12
- package/dist/generator/emit-typed-native-go.js.map +1 -1
- package/dist/generator/emit-typed-native-rust.d.ts.map +1 -1
- package/dist/generator/emit-typed-native-rust.js +83 -20
- package/dist/generator/emit-typed-native-rust.js.map +1 -1
- package/dist/generator/emit-typescript.d.ts.map +1 -1
- package/dist/generator/emit-typescript.js +24 -8
- package/dist/generator/emit-typescript.js.map +1 -1
- package/dist/generator/index.d.ts +1 -1
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +7 -5
- package/dist/generator/index.js.map +1 -1
- package/dist/index.d.ts +41 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -6
- package/dist/index.js.map +1 -1
- package/dist/provenance.d.ts +102 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +128 -0
- package/dist/provenance.js.map +1 -0
- package/dist/type-gate.d.ts +63 -0
- package/dist/type-gate.d.ts.map +1 -0
- package/dist/type-gate.js +295 -0
- package/dist/type-gate.js.map +1 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -94,7 +94,6 @@ The shared runtime also exposes the individual COMMON primitives piecewise:
|
|
|
94
94
|
| `assertPortable` / `assertPortableComponentGraph` | Portability Guard (fail-closed structural validation of portable IR) |
|
|
95
95
|
| `SemanticBehavior` / `behavior` / `compileBehaviors` / `catalogComponents` / `when` + expression builders | effect-agnostic authoring surface — each public method of a marked class lowers to one component-graph root Behavior |
|
|
96
96
|
| `referencedComponents` / `classifyBehaviorEffect` | consumer-side CQRS derivation from the lowered graph |
|
|
97
|
-
| `buildComponentDefinition` | data-registration IF for model-driven consumers — validates and canonicalizes a pre-composed component graph; byte-stable output |
|
|
98
97
|
|
|
99
98
|
## Spec versions
|
|
100
99
|
|
package/dist/authoring.d.ts
CHANGED
|
@@ -67,8 +67,9 @@
|
|
|
67
67
|
* IR スキーマは変えない)。生成 IR は `assertPortableComponentGraph` を通り、`runBehavior` で
|
|
68
68
|
* そのまま実行できる。
|
|
69
69
|
*/
|
|
70
|
-
import type { Catalog,
|
|
71
|
-
|
|
70
|
+
import type { Catalog, CatalogEntry, Component, PortSchema, PortableType } from "./behavior.js";
|
|
71
|
+
import type { ComponentGraphIR as CompiledIR } from "./index.js";
|
|
72
|
+
export type AuthoringFailureCode = "NOT_A_BEHAVIOR_CLASS" | "NO_PUBLIC_METHOD" | "NO_FRAME" | "NOT_RECORDABLE" | "NATIVE_CONTROL_SYNTAX" | "COMPUTED_ACCESS" | "WHOLE_INPUT" | "BAD_PORT_VALUE" | "UNKNOWN_PORT" | "MISSING_PORT" | "PORT_TYPE_MISMATCH" | "NOT_PORTABLE_COMPONENT" | "BAD_CONDITION" | "BAD_BRANCH" | "NESTED_BRANCH" | "MAP_IN_BRANCH" | "NESTED_MAP" | "MAP_NOT_LOWERABLE" | "MAP_MULTI_COMPONENT" | "FANOUT_NOT_LOWERABLE" | "FANOUT_MULTI_COMPONENT" | "FANOUT_IN_BRANCH" | "BAD_AS_TARGET" | "BAD_TYPE_NOTATION" | "BAD_LEAF_META" | "BAD_OUTPUT";
|
|
72
73
|
export declare class AuthoringFailure extends Error {
|
|
73
74
|
code: AuthoringFailureCode;
|
|
74
75
|
constructor(code: AuthoringFailureCode, message: string);
|
|
@@ -99,6 +100,89 @@ export type In<T> = Readonly<T>;
|
|
|
99
100
|
* (`In<...>` / consumer の Catalog 型)に委ね、recorder は構造の記録に徹する。
|
|
100
101
|
*/
|
|
101
102
|
export type Recorded = any;
|
|
103
|
+
/**
|
|
104
|
+
* `TsToPortable<T>` — TS 型 → 対応する `PortableType` runtime 注記の型レベル写像
|
|
105
|
+
* ({@link PortableTypeToTs} の逆向き)。`.as<T>(t)` の runtime 引数 `t` を、generic `<T>` が
|
|
106
|
+
* 表す確定型と**一致する PortableType リテラル**にだけ制約するために使う。矛盾(例
|
|
107
|
+
* `.as<string>({ obj: {…} })`)は tsc エラー(BC は runtime `t` だけを読み・型は推論しない)。
|
|
108
|
+
*
|
|
109
|
+
* - `string` → `"string"` / `number` → `"int" | "float"` / `boolean` → `"bool"` /
|
|
110
|
+
* `null` → `"null"`
|
|
111
|
+
* - `T | null | undefined` → `{ opt: TsToPortable<T> }`
|
|
112
|
+
* - `T[]` → `{ arr: TsToPortable<T> }`
|
|
113
|
+
* - `{ k: T, … }` → `{ obj: { k: TsToPortable<T>, … } }`
|
|
114
|
+
*/
|
|
115
|
+
export type TsToPortable<T> = [
|
|
116
|
+
T
|
|
117
|
+
] extends [string] ? "string" : [
|
|
118
|
+
T
|
|
119
|
+
] extends [number] ? ("int" | "float") : [
|
|
120
|
+
T
|
|
121
|
+
] extends [boolean] ? "bool" : [
|
|
122
|
+
T
|
|
123
|
+
] extends [null] ? "null" : null extends T ? {
|
|
124
|
+
opt: TsToPortable<Exclude<T, null | undefined>>;
|
|
125
|
+
} : undefined extends T ? {
|
|
126
|
+
opt: TsToPortable<Exclude<T, null | undefined>>;
|
|
127
|
+
} : T extends readonly (infer U)[] ? {
|
|
128
|
+
arr: TsToPortable<U>;
|
|
129
|
+
} : T extends object ? {
|
|
130
|
+
obj: {
|
|
131
|
+
[K in keyof T]-?: TsToPortable<T[K]>;
|
|
132
|
+
};
|
|
133
|
+
} : never;
|
|
134
|
+
/**
|
|
135
|
+
* `TypedRecorded<T>` — node 結果 recorder の型付きビュー(`behaviorComponents` の leaf 呼びが返す)。
|
|
136
|
+
* 実行時は {@link Recorded}(Proxy)そのものだが、compile-time では:
|
|
137
|
+
* - `.as<U>(t)` が **runtime `PortableType`({@link TsToPortable}<U> に一致)を必須引数**に取り、
|
|
138
|
+
* `TypedRecorded<U>` を返す(`<U>` を runtime `t` に束縛 = 型と runtime 注記の一致を tsc が強制)。
|
|
139
|
+
* - フィールドアクセス(`article.tagRefs`)・`.map` は既存の record ергономикс を保つため
|
|
140
|
+
* 緩く型付ける(base 型は leaf signature 由来・projection 点で `.as` が確定させる — §4.4)。
|
|
141
|
+
*/
|
|
142
|
+
export interface TypedRecorded<T = unknown> {
|
|
143
|
+
as<U>(t: TsToPortable<U>): TypedRecorded<U>;
|
|
144
|
+
map(cb: (el: any) => any, opts?: MapOptions): TypedRecorded;
|
|
145
|
+
refsConnection(cb: (el: any) => any, opts?: FanoutOptions): TypedRecorded;
|
|
146
|
+
[field: string]: any;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* `.map` の opts キーの閉集合(**runtime-enumerable SoT**)。{@link MapOptions} の型はここから
|
|
150
|
+
* 導出し(`Record<...> `)、新 opts キーを足すときはここに 1 語追加するのが正。matrix の網羅ゲート
|
|
151
|
+
* (#132)はこの配列から導出するので、SoT にキーを足して matrix にケースが無ければ CI が RED になる。
|
|
152
|
+
* 注: 要素ごと skip の `when` は opts キーではなく callback 内 `when(...)` guard 由来(`map.when` へ
|
|
153
|
+
* lower)なので、ここには含めない(authoring 手段が別。matrix 側で別途カバーする)。
|
|
154
|
+
*/
|
|
155
|
+
export declare const MAP_OPTION_KEYS: readonly ["into", "batched"];
|
|
156
|
+
/** `.map` の 1 opts キー({@link MAP_OPTION_KEYS} から導出)。 */
|
|
157
|
+
export type MapOptionKey = (typeof MAP_OPTION_KEYS)[number];
|
|
158
|
+
interface MapOptionShapes {
|
|
159
|
+
/** v2 zip-attach キー(scp-ir-architecture.md §5.1 `map.into`)。 */
|
|
160
|
+
into: string;
|
|
161
|
+
/** v2 バッチ fan-out(`map.batched`)。 */
|
|
162
|
+
batched: boolean;
|
|
163
|
+
}
|
|
164
|
+
/** `.map` の opts。キー集合は {@link MAP_OPTION_KEYS} が SoT(型は shape から取り、キーは SoT に一致)。 */
|
|
165
|
+
type MapOptions = {
|
|
166
|
+
[K in MapOptionKey]?: MapOptionShapes[K];
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* `refsConnection`(v3 fanout)の opts キーの閉集合(**runtime-enumerable SoT**)。graphddb の
|
|
170
|
+
* `@refs` 読みが宣言する dedupe/drop 契約。{@link FanoutOptions} の型はここから導出。新 opts キーは
|
|
171
|
+
* ここに追加するのが正で、matrix 網羅ゲート(#132)がこの配列から導出する(未カバー → CI RED)。
|
|
172
|
+
*/
|
|
173
|
+
export declare const FANOUT_OPTION_KEYS: readonly ["dedupeKey", "drop", "implicitSource"];
|
|
174
|
+
/** `refsConnection` の 1 opts キー({@link FANOUT_OPTION_KEYS} から導出)。 */
|
|
175
|
+
export type FanoutOptionKey = (typeof FANOUT_OPTION_KEYS)[number];
|
|
176
|
+
interface FanoutOptionShapes {
|
|
177
|
+
/** first-seen dedupe の基準となる結果要素の port(必須)。 */
|
|
178
|
+
dedupeKey: string;
|
|
179
|
+
/** dangling(null body)の扱い(既定 "dangling")。 */
|
|
180
|
+
drop?: "dangling" | "none";
|
|
181
|
+
/** 結果要素から除去する暗黙ソースフィールド名。 */
|
|
182
|
+
implicitSource?: string;
|
|
183
|
+
}
|
|
184
|
+
/** `refsConnection` の opts(キー集合は {@link FANOUT_OPTION_KEYS} が SoT)。 */
|
|
185
|
+
type FanoutOptions = Pick<FanoutOptionShapes, FanoutOptionKey>;
|
|
102
186
|
/** `+`(文字列連結)。n-ary(min 2)。 */
|
|
103
187
|
export declare function concat(...parts: unknown[]): Recorded;
|
|
104
188
|
export declare const add: (a: unknown, b: unknown) => Recorded;
|
|
@@ -136,6 +220,133 @@ export declare function opt(x: unknown): Recorded;
|
|
|
136
220
|
export declare function catalogComponents<C extends Catalog>(catalog: C): {
|
|
137
221
|
[K in keyof C]: (ports: Record<string, unknown>) => Recorded;
|
|
138
222
|
};
|
|
223
|
+
/**
|
|
224
|
+
* `PortableTypeToTs<T>` — 可搬型記法(`PortableType` 閉集合)→ TS 型の型レベル写像。
|
|
225
|
+
* `defineLeaf` の generic 制約が impl fn のシグネチャ(引数 = 入力 Port・戻り = 出力)を
|
|
226
|
+
* この写像で **runtime 注記(`ports`/`output`)に束縛**するために使う。宣言した runtime
|
|
227
|
+
* 型と impl の TS 型が矛盾すれば tsc エラーになる(型は consumer が確定・BC は推論しない)。
|
|
228
|
+
*
|
|
229
|
+
* - `"string"` → `string` / `"int" | "float"` → `number` / `"bool"` → `boolean` /
|
|
230
|
+
* `"null"` → `null`
|
|
231
|
+
* - `{opt: T}` → `PortableTypeToTs<T> | null | undefined`(nullable)
|
|
232
|
+
* - `{arr: T}` → `PortableTypeToTs<T>[]`
|
|
233
|
+
* - `{obj: {k: T, …}}` → `{ k: PortableTypeToTs<T>, … }`
|
|
234
|
+
*/
|
|
235
|
+
export type PortableTypeToTs<T> = T extends "string" ? string : T extends "int" ? number : T extends "float" ? number : T extends "bool" ? boolean : T extends "null" ? null : T extends {
|
|
236
|
+
opt: infer U;
|
|
237
|
+
} ? PortableTypeToTs<U> | null | undefined : T extends {
|
|
238
|
+
arr: infer U;
|
|
239
|
+
} ? PortableTypeToTs<U>[] : T extends {
|
|
240
|
+
obj: infer O;
|
|
241
|
+
} ? {
|
|
242
|
+
[K in keyof O]: PortableTypeToTs<O[K]>;
|
|
243
|
+
} : never;
|
|
244
|
+
/** opt でラップされた Port キー(省略可能キーにする)。 */
|
|
245
|
+
type OptionalPortKeys<P extends Record<string, PortableType>> = {
|
|
246
|
+
[K in keyof P]: P[K] extends {
|
|
247
|
+
opt: PortableType;
|
|
248
|
+
} ? K : never;
|
|
249
|
+
}[keyof P];
|
|
250
|
+
/**
|
|
251
|
+
* `ports` レコード(Port 名 → PortableType)→ impl fn の第1引数型(Port 束)。
|
|
252
|
+
* `{opt:T}` Port は**省略可能キー**(`SK?: string`)にする。
|
|
253
|
+
*/
|
|
254
|
+
export type PortsToTs<P extends Record<string, PortableType>> = {
|
|
255
|
+
[K in Exclude<keyof P, OptionalPortKeys<P>>]: PortableTypeToTs<P[K]>;
|
|
256
|
+
} & {
|
|
257
|
+
[K in OptionalPortKeys<P>]?: PortableTypeToTs<P[K]>;
|
|
258
|
+
};
|
|
259
|
+
/**
|
|
260
|
+
* leaf の意味情報(型で表せず consumer が inline で明示する最小集合 — §4.1(B))+
|
|
261
|
+
* runtime 型注記(`PortableType`。TS 型消去後に BC が読む SSoT)。
|
|
262
|
+
*/
|
|
263
|
+
export interface LeafMeta<P extends Record<string, PortableType> = Record<string, PortableType>, R extends PortableType = PortableType, Card extends "one" | "many" = "one" | "many"> {
|
|
264
|
+
/** cardinality(型から導けない意味情報。one → item / many → items)。 */
|
|
265
|
+
cardinality: Card;
|
|
266
|
+
/** 入力 Port schema(runtime SSoT。各 Port の確定型を PortableType で宣言)。 */
|
|
267
|
+
ports: P;
|
|
268
|
+
/** 出力(`cardinality:"many"` のときは要素型)の確定型(runtime SSoT)。 */
|
|
269
|
+
output: R;
|
|
270
|
+
/** 動的 port 群(`item.<field>` 等)の受容 opt-in(既定 false — CatalogEntry と同義)。 */
|
|
271
|
+
additionalPorts?: boolean;
|
|
272
|
+
/** 可搬 IR に載せられるか(既定 true — CatalogEntry と同義。false は ts-runtime 専用 leaf)。 */
|
|
273
|
+
portableToIR?: boolean;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* `defineLeaf` の戻り値。leaf を「型付き静的関数」として 1 回登録した結果で、runtime 注記
|
|
277
|
+
* (name + meta)と impl fn を保持する。`behaviorComponents` がこの注記から portable catalog を
|
|
278
|
+
* **導出**する(consumer は catalog を手書きしない・二重宣言しない — §4.1)。generic は fn の
|
|
279
|
+
* シグネチャに束縛され、`.__ports` / `.__output` phantom で TS の型情報を持ち回る。
|
|
280
|
+
*/
|
|
281
|
+
export interface LeafDefinition<P extends Record<string, PortableType> = Record<string, PortableType>, R extends PortableType = PortableType> {
|
|
282
|
+
readonly name: string;
|
|
283
|
+
readonly meta: LeafMeta<P, R>;
|
|
284
|
+
/**
|
|
285
|
+
* leaf 実装“本体”(ctx は環境境界注入。IR には載らない — C4)。stored 型は緩い
|
|
286
|
+
* (`(p, ctx) => unknown`): 厳密な signature 束縛は {@link defineLeaf} の**パラメータ**
|
|
287
|
+
* (generic P/R 由来)が担い、tsc がそこで矛盾を落とす。stored フィールドの緩さは
|
|
288
|
+
* `LeafDefinition<specific>` を `LeafDefinition`(既定パラメータ)へ代入可能にするための
|
|
289
|
+
* variance 対策(`fn` は contravariant なので厳密型のままだと合成レコードが不通過になる)。
|
|
290
|
+
*/
|
|
291
|
+
readonly fn: (p: any, ctx: any) => unknown;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* `LeafImplMatches<Card, R, Out>` — impl fn の戻り型 `Out` が、宣言した cardinality/output
|
|
295
|
+
* (`one` → 要素型 `PortableTypeToTs<R>` / `many` → その配列)に**適合するか**の型レベル述語。
|
|
296
|
+
* `defineLeaf` の戻り型ゲートに使う(fn 戻り型を推論源にせず照合先にすることで、`P2T<R>` を
|
|
297
|
+
* 通した逆方向推論が招く tsc "excessively deep" を回避する — この分離が設計上 load-bearing)。
|
|
298
|
+
*/
|
|
299
|
+
export type LeafImplMatches<Card extends "one" | "many", R extends PortableType, Out> = Card extends "many" ? [Out] extends [readonly PortableTypeToTs<R>[]] ? true : false : [Out] extends [PortableTypeToTs<R>] ? true : false;
|
|
300
|
+
/**
|
|
301
|
+
* impl 戻り型が宣言 output と矛盾したときの branded エラー型(`defineLeaf` の戻り型がこれに
|
|
302
|
+
* 化けると LeafDefinition として使えず、下流(`behaviorComponents` 等)で tsc が落ちる)。
|
|
303
|
+
*/
|
|
304
|
+
export interface LeafImplMismatch {
|
|
305
|
+
readonly __IMPL_RETURN_DOES_NOT_MATCH_DECLARED_OUTPUT__: true;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* defineLeaf — leaf を**型付き静的関数として 1 回定義**する(SA8・§4.1(B))。
|
|
309
|
+
*
|
|
310
|
+
* `fn` の引数型(= 入力 Port)は `meta.ports`、戻り型(= 出力)は `meta.output` + `cardinality`
|
|
311
|
+
* の runtime `PortableType` 注記へ**束縛**される。impl の TS 型が宣言と矛盾すると `defineLeaf` の
|
|
312
|
+
* 戻り型が {@link LeafImplMismatch} に化け、`LeafDefinition` として使えず **tsc エラー**になる
|
|
313
|
+
* (例: `output:"string"` なのに `(): number => …`)。BC core は runtime 注記だけを読み、TS の型は
|
|
314
|
+
* 推論しない(consumer-interface.md C3・不変)。`ctx`(環境依存物 = client/config/hooks の境界注入)
|
|
315
|
+
* は impl の第2引数で受ける(IR には載らない — C4)。
|
|
316
|
+
*
|
|
317
|
+
* @param name catalog 名(IR の componentRef が参照する名前)。
|
|
318
|
+
* @param meta cardinality(型で表せない意味情報)+ ports/output(runtime 型 SSoT)。
|
|
319
|
+
* @param fn leaf 実装本体(型付き。呼ばれ方=IR/dispatch は書かない)。
|
|
320
|
+
*/
|
|
321
|
+
export declare function defineLeaf<const P extends Record<string, PortableType>, const R extends PortableType, const Card extends "one" | "many", const Out, Ctx = unknown>(name: string, meta: LeafMeta<P, R, Card>, fn: (p: PortsToTs<P>, ctx: Ctx) => Out): LeafImplMatches<Card, R, Out> extends true ? LeafDefinition<P, R> : LeafImplMismatch;
|
|
322
|
+
/**
|
|
323
|
+
* catalogEntryFromLeaf — defineLeaf の runtime 注記から `CatalogEntry` を **導出**する
|
|
324
|
+
* (consumer は catalog を手書きしない — §4.1)。
|
|
325
|
+
* - `inputPorts` = 各 Port の PortableType を PortSchema へ射影(scalar/opt/arr/obj)。
|
|
326
|
+
* - `output.shape` = cardinality(one→item / many→items)。
|
|
327
|
+
* - `elemType` = `output`(その leaf が返す要素の確定型。typed codegen / map 要素型の SSoT)。
|
|
328
|
+
* - `portableToIR` / `additionalPorts` は meta から(既定 true / false)。
|
|
329
|
+
*/
|
|
330
|
+
export declare function catalogEntryFromLeaf(def: LeafDefinition): CatalogEntry;
|
|
331
|
+
/**
|
|
332
|
+
* behaviorComponents — `defineLeaf` 結果のレコードから **portable catalog を導出**し、
|
|
333
|
+
* authoring 本体で呼べる leaf コンポーネント関数群を返す(`catalogComponents(catalog)` と
|
|
334
|
+
* **同一の call-shape** `{ [name]: (ports) => Recorded }`・同一の {@link recordComponentCall}
|
|
335
|
+
* 機構)。consumer は catalog も handlers も手書きしない(§4.1 / SA4)。
|
|
336
|
+
*
|
|
337
|
+
* catalog は `defineLeaf` の型付きシグネチャ由来の runtime 注記から機械導出されるため、
|
|
338
|
+
* 手書き catalog と**構造的に同一**(AC1)。派生後の record は既存 catalog 経路と完全に同じ
|
|
339
|
+
* port 検証・lowering を通る。
|
|
340
|
+
*/
|
|
341
|
+
export declare function behaviorComponents<C extends Record<string, LeafDefinition>>(leaves: C): {
|
|
342
|
+
[K in keyof C]: C[K] extends LeafDefinition<infer _P, infer R> ? (ports: PortsToTs<C[K]["meta"]["ports"]>) => TypedRecorded<PortableTypeToTs<R>> : never;
|
|
343
|
+
};
|
|
344
|
+
/**
|
|
345
|
+
* deriveCatalog — `defineLeaf` レコードから `Catalog`(name → CatalogEntry)を導出する
|
|
346
|
+
* (guard / typed codegen / fingerprint の SSoT を得たい consumer 向け。`behaviorComponents`
|
|
347
|
+
* が内部で使うのと同一の {@link catalogEntryFromLeaf} 射影)。
|
|
348
|
+
*/
|
|
349
|
+
export declare function deriveCatalog(leaves: Record<string, LeafDefinition>): Catalog;
|
|
139
350
|
/**
|
|
140
351
|
* when — Conditional(`?:`)/ Guard(`&&`)の record 形(semantic-contract-programming.md
|
|
141
352
|
* 「構造化制御構文」の Compiler 規則を評価モードで実装する):
|
|
@@ -184,7 +395,7 @@ export interface CompileBehaviorsOptions {
|
|
|
184
395
|
*
|
|
185
396
|
* effect(Query/Command)はここでは一切扱わない — {@link classifyBehaviorEffect} を参照。
|
|
186
397
|
*/
|
|
187
|
-
export declare function compileBehaviors(cls: BehaviorClass, opts?: CompileBehaviorsOptions):
|
|
398
|
+
export declare function compileBehaviors(cls: BehaviorClass, opts?: CompileBehaviorsOptions): CompiledIR;
|
|
188
399
|
/**
|
|
189
400
|
* referencedComponents — lowering 済み合成コンポーネントの body が参照する catalog 名
|
|
190
401
|
* (componentRef / map。重複除去・出現順)。
|
|
@@ -199,4 +410,5 @@ export type BehaviorEffect = "read-only" | "writing";
|
|
|
199
410
|
* 実装点。
|
|
200
411
|
*/
|
|
201
412
|
export declare function classifyBehaviorEffect(component: Component, writeComponents: Iterable<string>): BehaviorEffect;
|
|
413
|
+
export {};
|
|
202
414
|
//# sourceMappingURL=authoring.d.ts.map
|
package/dist/authoring.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,OAAO,KAAK,EAEV,OAAO,
|
|
1
|
+
{"version":3,"file":"authoring.d.ts","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"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"}
|