behavior-contracts 0.1.2 → 0.2.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 -2
- package/dist/authoring.d.ts +202 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.js +787 -0
- package/dist/authoring.js.map +1 -0
- package/dist/behavior.d.ts +201 -0
- package/dist/behavior.d.ts.map +1 -0
- package/dist/behavior.js +373 -0
- package/dist/behavior.js.map +1 -0
- package/dist/builder.d.ts +154 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +574 -0
- package/dist/builder.js.map +1 -0
- package/dist/canonical.d.ts +1 -1
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +13 -1
- package/dist/canonical.js.map +1 -1
- package/dist/codec.d.ts.map +1 -1
- package/dist/codec.js +7 -1
- package/dist/codec.js.map +1 -1
- package/dist/expr-eval.d.ts +9 -1
- package/dist/expr-eval.d.ts.map +1 -1
- package/dist/expr-eval.js +21 -3
- package/dist/expr-eval.js.map +1 -1
- package/dist/generator/core.d.ts +89 -0
- package/dist/generator/core.d.ts.map +1 -0
- package/dist/generator/core.js +124 -0
- package/dist/generator/core.js.map +1 -0
- package/dist/generator/emit-go.d.ts +19 -0
- package/dist/generator/emit-go.d.ts.map +1 -0
- package/dist/generator/emit-go.js +79 -0
- package/dist/generator/emit-go.js.map +1 -0
- package/dist/generator/emit-php.d.ts +20 -0
- package/dist/generator/emit-php.d.ts.map +1 -0
- package/dist/generator/emit-php.js +76 -0
- package/dist/generator/emit-php.js.map +1 -0
- package/dist/generator/emit-python.d.ts +10 -0
- package/dist/generator/emit-python.d.ts.map +1 -0
- package/dist/generator/emit-python.js +75 -0
- package/dist/generator/emit-python.js.map +1 -0
- package/dist/generator/emit-rust.d.ts +25 -0
- package/dist/generator/emit-rust.d.ts.map +1 -0
- package/dist/generator/emit-rust.js +125 -0
- package/dist/generator/emit-rust.js.map +1 -0
- package/dist/generator/emit-typescript.d.ts +11 -0
- package/dist/generator/emit-typescript.d.ts.map +1 -0
- package/dist/generator/emit-typescript.js +68 -0
- package/dist/generator/emit-typescript.js.map +1 -0
- package/dist/generator/fingerprint.d.ts +14 -0
- package/dist/generator/fingerprint.d.ts.map +1 -0
- package/dist/generator/fingerprint.js +74 -0
- package/dist/generator/fingerprint.js.map +1 -0
- package/dist/generator/index.d.ts +9 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +25 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/literal.d.ts +8 -0
- package/dist/generator/literal.d.ts.map +1 -0
- package/dist/generator/literal.js +191 -0
- package/dist/generator/literal.js.map +1 -0
- package/dist/guard.d.ts +18 -0
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +130 -0
- package/dist/guard.js.map +1 -1
- package/dist/index.d.ts +17 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -5
- package/dist/index.js.map +1 -1
- package/dist/plan.d.ts +36 -0
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +152 -14
- package/dist/plan.js.map +1 -1
- package/package.json +6 -3
package/dist/canonical.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cmpCodePoints } from "./expr-eval.js";
|
|
1
|
+
import { cmpCodePoints, FORBIDDEN_OBJECT_KEY } from "./expr-eval.js";
|
|
2
2
|
export class CanonicalFailure extends Error {
|
|
3
3
|
code;
|
|
4
4
|
constructor(code, message) {
|
|
@@ -124,6 +124,7 @@ function formatScientific(digits, decpt) {
|
|
|
124
124
|
*/
|
|
125
125
|
export function canonicalValue(v) {
|
|
126
126
|
if (isPlainObject(v)) {
|
|
127
|
+
guardKeys(Object.keys(v));
|
|
127
128
|
const keys = Object.keys(v).sort(cmpCodePoints); // トップレベルのみソート(code-point 順)
|
|
128
129
|
const parts = keys.map((k) => `${jsonString(k)}:${encodeNested(v[k])}`);
|
|
129
130
|
return `{${parts.join(",")}}`;
|
|
@@ -134,6 +135,7 @@ export function canonicalValue(v) {
|
|
|
134
135
|
/** canonicalJson — fingerprint 用。全 object 階層のキーを昇順ソート(配列は順序保持)。 */
|
|
135
136
|
export function canonicalJson(v) {
|
|
136
137
|
if (isPlainObject(v)) {
|
|
138
|
+
guardKeys(Object.keys(v));
|
|
137
139
|
const keys = Object.keys(v).sort(cmpCodePoints);
|
|
138
140
|
const parts = keys.map((k) => `${jsonString(k)}:${canonicalJson(v[k])}`);
|
|
139
141
|
return `{${parts.join(",")}}`;
|
|
@@ -145,6 +147,7 @@ export function canonicalJson(v) {
|
|
|
145
147
|
// ── 内部: ネスト値の直列化(canonicalValue 用。ネスト object は挿入順)──────────────
|
|
146
148
|
function encodeNested(v) {
|
|
147
149
|
if (isPlainObject(v)) {
|
|
150
|
+
guardKeys(Object.keys(v));
|
|
148
151
|
const parts = Object.keys(v).map((k) => `${jsonString(k)}:${encodeNested(v[k])}`);
|
|
149
152
|
return `{${parts.join(",")}}`;
|
|
150
153
|
}
|
|
@@ -179,4 +182,13 @@ function jsonString(s) {
|
|
|
179
182
|
function isPlainObject(v) {
|
|
180
183
|
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
181
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* guardKeys — obj 値の own key に `"__proto__"` があれば fail-closed(FORBIDDEN_KEY)。
|
|
187
|
+
* canonicalValue/canonicalJson/encodeNested の全経路で適用し、expression の obj ノードと
|
|
188
|
+
* 同一の禁止キー規律を持つ(expression-ir.md §2.3/§8)。
|
|
189
|
+
*/
|
|
190
|
+
function guardKeys(keys) {
|
|
191
|
+
if (keys.includes(FORBIDDEN_OBJECT_KEY))
|
|
192
|
+
fail("FORBIDDEN_KEY", `object key "${FORBIDDEN_OBJECT_KEY}" is forbidden (fail-closed)`);
|
|
193
|
+
}
|
|
182
194
|
//# sourceMappingURL=canonical.js.map
|
package/dist/canonical.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"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"}
|
package/dist/codec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,CA2B7C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CActD"}
|
package/dist/codec.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ExprFailure, FORBIDDEN_OBJECT_KEY } from "./expr-eval.js";
|
|
1
2
|
/**
|
|
2
3
|
* decodeValue — golden vector の JSON 値表現を runtime {@link Value} へ復元する。
|
|
3
4
|
* expression-ir.md §2.3 の逆写像:
|
|
@@ -30,8 +31,13 @@ export function decodeValue(x) {
|
|
|
30
31
|
return o.inf < 0 ? -Infinity : Infinity;
|
|
31
32
|
}
|
|
32
33
|
const out = {};
|
|
33
|
-
for (const k of keys)
|
|
34
|
+
for (const k of keys) {
|
|
35
|
+
// fail-closed: own key "__proto__" は言語間で発散する(TS では prototype セッタで
|
|
36
|
+
// 消え、他言語は保持)。全経路で拒否する(expression-ir.md §2.3/§8)。
|
|
37
|
+
if (k === FORBIDDEN_OBJECT_KEY)
|
|
38
|
+
throw new ExprFailure("FORBIDDEN_KEY", `object key "${FORBIDDEN_OBJECT_KEY}" is forbidden (fail-closed)`);
|
|
34
39
|
out[k] = decodeValue(o[k]);
|
|
40
|
+
}
|
|
35
41
|
return out;
|
|
36
42
|
}
|
|
37
43
|
throw new Error(`cannot decode value: ${String(x)}`);
|
package/dist/codec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
|
package/dist/expr-eval.d.ts
CHANGED
|
@@ -17,12 +17,20 @@ export type Value = bigint | number | string | boolean | null | Value[] | {
|
|
|
17
17
|
[k: string]: Value;
|
|
18
18
|
};
|
|
19
19
|
export type Scope = Record<string, Value>;
|
|
20
|
-
export type FailureCode = "INT_OVERFLOW" | "NAN_OR_INF" | "MOD_ZERO" | "PRECISION_LOSS" | "TYPE_MISMATCH" | "NULL_REF" | "MISSING_PROP" | "UNKNOWN_BINDING" | "UNKNOWN_OP" | "INVALID_NODE" | "INVALID_LITERAL";
|
|
20
|
+
export type FailureCode = "INT_OVERFLOW" | "NAN_OR_INF" | "MOD_ZERO" | "PRECISION_LOSS" | "TYPE_MISMATCH" | "NULL_REF" | "MISSING_PROP" | "UNKNOWN_BINDING" | "UNKNOWN_OP" | "INVALID_NODE" | "INVALID_LITERAL" | "FORBIDDEN_KEY";
|
|
21
21
|
export declare class ExprFailure extends Error {
|
|
22
22
|
code: FailureCode;
|
|
23
23
|
constructor(code: FailureCode, message: string);
|
|
24
24
|
}
|
|
25
25
|
export declare function cmpCodePoints(a: string, b: string): -1 | 0 | 1;
|
|
26
|
+
/**
|
|
27
|
+
* 禁止キー(expression-ir.md §2.3/§8)。IR/JSON 由来の任意文字列キーからオブジェクトを
|
|
28
|
+
* 構築するすべての経路で own key `"__proto__"` を fail-closed で拒否する。JS では
|
|
29
|
+
* `out["__proto__"] = v` が prototype セッタを叩きキーが値として保持されない(TS では消える)
|
|
30
|
+
* 一方、Python/Rust/Go は素直に保持するため、同一 IR が言語間で発散する(prototype
|
|
31
|
+
* pollution の温床でもある)。全言語で `FORBIDDEN_KEY` に倒して一致させる。
|
|
32
|
+
*/
|
|
33
|
+
export declare const FORBIDDEN_OBJECT_KEY = "__proto__";
|
|
26
34
|
export declare function evaluate(node: unknown, scope?: Scope): Value;
|
|
27
35
|
export declare function encodeValue(v: Value): unknown;
|
|
28
36
|
//# sourceMappingURL=expr-eval.d.ts.map
|
package/dist/expr-eval.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expr-eval.d.ts","sourceRoot":"","sources":["../src/expr-eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,MAAM,MAAM,KAAK,GACb,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,KAAK,EAAE,GACP;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE,CAAC;AAE3B,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAG1C,MAAM,MAAM,WAAW,GACnB,cAAc,GACd,YAAY,GACZ,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,UAAU,GACV,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,cAAc,GACd,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"expr-eval.d.ts","sourceRoot":"","sources":["../src/expr-eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,MAAM,MAAM,KAAK,GACb,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,KAAK,EAAE,GACP;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE,CAAC;AAE3B,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAG1C,MAAM,MAAM,WAAW,GACnB,cAAc,GACd,YAAY,GACZ,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,UAAU,GACV,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,eAAe,CAAC;AAEpB,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,WAAW,CAAC;gBACN,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;CAK/C;AAgCD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAa9D;AAqBD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAGhD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAE,KAAU,GAAG,KAAK,CA6LhE;AAoCD,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAa7C"}
|
package/dist/expr-eval.js
CHANGED
|
@@ -87,6 +87,14 @@ function requireBool(v, ctx) {
|
|
|
87
87
|
function isPlainObject(v) {
|
|
88
88
|
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
89
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* 禁止キー(expression-ir.md §2.3/§8)。IR/JSON 由来の任意文字列キーからオブジェクトを
|
|
92
|
+
* 構築するすべての経路で own key `"__proto__"` を fail-closed で拒否する。JS では
|
|
93
|
+
* `out["__proto__"] = v` が prototype セッタを叩きキーが値として保持されない(TS では消える)
|
|
94
|
+
* 一方、Python/Rust/Go は素直に保持するため、同一 IR が言語間で発散する(prototype
|
|
95
|
+
* pollution の温床でもある)。全言語で `FORBIDDEN_KEY` に倒して一致させる。
|
|
96
|
+
*/
|
|
97
|
+
export const FORBIDDEN_OBJECT_KEY = "__proto__";
|
|
90
98
|
// ── 評価器本体 ───────────────────────────────────────────────────────────────
|
|
91
99
|
export function evaluate(node, scope = {}) {
|
|
92
100
|
// リテラル
|
|
@@ -161,8 +169,14 @@ export function evaluate(node, scope = {}) {
|
|
|
161
169
|
if (!isPlainObject(arg))
|
|
162
170
|
fail("INVALID_NODE", "{obj: ...} expects an object");
|
|
163
171
|
const out = {};
|
|
164
|
-
|
|
165
|
-
|
|
172
|
+
// own key の走査は Object.keys(JSON.parse は "__proto__" を own enumerable として作る)。
|
|
173
|
+
for (const k of Object.keys(arg)) {
|
|
174
|
+
if (k === FORBIDDEN_OBJECT_KEY)
|
|
175
|
+
fail("FORBIDDEN_KEY", `obj key "${FORBIDDEN_OBJECT_KEY}" is forbidden (fail-closed)`);
|
|
176
|
+
// 代入も明示 own property に(prototype セッタを踏まないよう defineProperty ではなく
|
|
177
|
+
// 事前 reject で担保。ここに来る時点で k は __proto__ ではない)。
|
|
178
|
+
out[k] = evaluate(arg[k], scope);
|
|
179
|
+
}
|
|
166
180
|
return out;
|
|
167
181
|
}
|
|
168
182
|
case "arr":
|
|
@@ -209,7 +223,11 @@ export function evaluate(node, scope = {}) {
|
|
|
209
223
|
}
|
|
210
224
|
// ── 文字列 ──
|
|
211
225
|
case "concat": {
|
|
212
|
-
const
|
|
226
|
+
const rawParts = argArray(op, arg);
|
|
227
|
+
// n-ary(min 2 args)。arity<2 は不正 IR(expression-ir.md §2.1/§3/§6)。
|
|
228
|
+
if (rawParts.length < 2)
|
|
229
|
+
fail("INVALID_NODE", `concat expects >= 2 args, got ${rawParts.length}`);
|
|
230
|
+
const parts = rawParts.map((e) => evaluate(e, scope));
|
|
213
231
|
for (const p of parts)
|
|
214
232
|
if (typeof p !== "string")
|
|
215
233
|
fail("TYPE_MISMATCH", `concat: string のみ(got ${typeName(p)}。数値の暗黙 toString は存在しない)`);
|
package/dist/expr-eval.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expr-eval.js","sourceRoot":"","sources":["../src/expr-eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA4BH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,IAAI,CAAc;IAClB,YAAY,IAAiB,EAAE,OAAe;QAC5C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,SAAS,IAAI,CAAC,IAAiB,EAAE,OAAe;IAC9C,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,6EAA6E;AAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;AAC7B,MAAM,OAAO,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,CAAC;AAC/B,MAAM,WAAW,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,wCAAwC;AAEvE,SAAS,QAAQ,CAAC,CAAS;IACzB,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,GAAG,OAAO;QAAE,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,YAAY,CAAC,CAAQ;IAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,WAAW,IAAI,CAAC,GAAG,CAAC,WAAW;YACrC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,oCAAoC,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,eAAe,EAAE,iCAAiC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS;IAChD,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChC,SAAS,CAAC;QACR,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACvB,IAAI,EAAE,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QACpC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QACpC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,SAAS,QAAQ,CAAC,CAAQ;IACxB,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAC9B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,OAAO,CAAC,CAAC,CAAC,4BAA4B;AAC/C,CAAC;AAED,SAAS,WAAW,CAAC,CAAQ,EAAE,GAAW;IACxC,IAAI,OAAO,CAAC,KAAK,SAAS;QACxB,IAAI,CAAC,eAAe,EAAE,GAAG,GAAG,wBAAwB,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACxF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,QAAQ,CAAC,IAAa,EAAE,QAAe,EAAE;IACvD,OAAO;IACP,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,iDAAiD;QACjD,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBAC7B,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,IAAI,sCAAsC,CAAC,CAAC;YACjG,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,cAAc,EAAE,mDAAmD,CAAC,CAAC;IACnG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,IAAI,CAAC,cAAc,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEhF,kBAAkB;IAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,iDAAiD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5F,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,MAAM,GAAG,GAAI,IAAgC,CAAC,EAAE,CAAC,CAAC;IAElD,QAAQ,EAAE,EAAE,CAAC;QACX,gBAAgB;QAChB,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,IAAI,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC;YACjF,IAAI,CAAS,CAAC;YACd,IAAI,CAAC;gBACH,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,IAAI,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;YACnF,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,WAAW;QACX,KAAK,KAAK,CAAC;QACX,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;gBAChE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,kCAAkC,CAAC,CAAC;YAChE,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,IAAgB,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;gBACpD,IAAI,CAAC,iBAAiB,EAAE,oBAAoB,IAAI,EAAE,CAAC,CAAC;YACtD,IAAI,GAAG,GAAU,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACjB,IAAI,EAAE,KAAK,QAAQ;wBAAE,OAAO,IAAI,CAAC,CAAC,eAAe;oBACjD,IAAI,CAAC,UAAU,EAAE,yBAAyB,GAAG,UAAU,CAAC,CAAC;gBAC3D,CAAC;gBACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;oBACrB,IAAI,CAAC,eAAe,EAAE,kBAAkB,GAAG,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACrE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;oBACjD,IAAI,CAAC,cAAc,EAAE,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBACnD,GAAG,GAAI,GAA6B,CAAC,GAAG,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QAED,WAAW;QACX,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;YAC9E,MAAM,GAAG,GAA0B,EAAE,CAAC;YACtC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACtE,OAAO,GAAG,CAAC;QACb,CAAC;QACD,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAE1D,4BAA4B;QAC5B,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC;QACX,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACnD,MAAM,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9D,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACnD,MAAM,CAAC,GAAG,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC9D,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,+BAA+B,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACtG,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,eAAe,EAAE,8BAA8B,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,kEAAkE;YAClE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,gEAAgE;YAChE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACnD,IAAI,CAAC,KAAK,EAAE;oBAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;gBAClD,OAAO,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B;YACpD,CAAC;YACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,eAAe,EAAE,kCAAkC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzF,CAAC;QAED,YAAY;QACZ,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/D,KAAK,MAAM,CAAC,IAAI,KAAK;gBACnB,IAAI,OAAO,CAAC,KAAK,QAAQ;oBACvB,IAAI,CAAC,eAAe,EAAE,yBAAyB,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;YACzF,OAAQ,KAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,WAAW;QACX,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACtC,CAAC;QACD,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAa,CAAC;YAClB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9E,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACnF,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;gBAC5E,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,kCAAkC,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjG,QAAQ,EAAE,EAAE,CAAC;gBACX,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACxB,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACxB,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,KAAK,KAAK,CAAC;QACX,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC,CAAC,gBAAgB;YACtD,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClC,OAAO,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,KAAK,KAAK;YACR,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACjE,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9B,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACzD,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,IAAI,CAAC,cAAc,EAAE,wBAAwB,CAAC,CAAC;YAC5F,MAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;YACvD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU;QACzD,CAAC;QAED,YAAY;QACZ,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,eAAe,EAAE,2CAA2C,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACnF,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED;YACE,IAAI,CAAC,YAAY,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,SAAS,QAAQ,CAAC,EAAU,EAAE,GAAY;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,wBAAwB,CAAC,CAAC;IAC7E,OAAO,GAAG,CAAC;AACb,CAAC;AACD,SAAS,QAAQ,CAAC,EAAU,EAAE,GAAY;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;IAChE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,CAAC;AACD,SAAS,SAAS,CAAC,EAAU,EAAE,GAAY;IACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AACD,SAAS,UAAU,CAAC,EAAU,EAAE,GAAY,EAAE,KAAY;IACxD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;AAC5D,CAAC;AAED,0DAA0D;AAC1D,SAAS,WAAW,CAAC,CAAQ,EAAE,CAAQ;IACrC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;IAC9D,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,KAAK,EAAE;QAAE,IAAI,CAAC,eAAe,EAAE,oBAAoB,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtE,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,QAAQ;QACjC,IAAI,CAAC,eAAe,EAAE,6BAA6B,CAAC,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,gEAAgE;AAChE,+CAA+C;AAC/C,gDAAgD;AAChD,MAAM,UAAU,WAAW,CAAC,CAAQ;IAClC,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,KAAK,QAAQ;QACvB,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACjF,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACX,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,WAAW;IACvB,kEAAkE;IAClE,yEAAyE;IACzE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAE,CAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjG,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"expr-eval.js","sourceRoot":"","sources":["../src/expr-eval.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { ComponentGraphIR } from "../behavior.js";
|
|
2
|
+
export type GeneratorFailureCode = "INPUT_NOT_PORTABLE_IR" | "UNSUPPORTED_IR_VERSION" | "UNSUPPORTED_EXPR_VERSION" | "EMPTY_IR" | "DUPLICATE_COMPONENT" | "UNKNOWN_LANGUAGE";
|
|
3
|
+
export declare class GeneratorFailure extends Error {
|
|
4
|
+
code: GeneratorFailureCode;
|
|
5
|
+
constructor(code: GeneratorFailureCode, message: string);
|
|
6
|
+
}
|
|
7
|
+
/** 生成時に emitter へ渡される言語中立コンテキスト(検証済み)。 */
|
|
8
|
+
export interface EmitContext {
|
|
9
|
+
/** 検証済み可搬 IR(構造は入力のまま — キー順保存)。 */
|
|
10
|
+
ir: ComponentGraphIR;
|
|
11
|
+
/** source IR の fingerprint(`"fnv1a64:<16hex>"`)。 */
|
|
12
|
+
fingerprint: string;
|
|
13
|
+
/** 生成時 SPEC_VERSIONS のうち実行経路が依存する版(焼き込み対象)。 */
|
|
14
|
+
specVersions: {
|
|
15
|
+
behavior: number;
|
|
16
|
+
expression: number;
|
|
17
|
+
plan: number;
|
|
18
|
+
};
|
|
19
|
+
/** IR 内の component 名(宣言順)。 */
|
|
20
|
+
componentNames: string[];
|
|
21
|
+
/** runtime-core を import するモジュール指定子(emitter の既定を上書き可)。 */
|
|
22
|
+
runtimeImport: string;
|
|
23
|
+
}
|
|
24
|
+
/** 言語 emitter プラグイン。DSL 非依存の EmitContext からモジュール全文を emit する。 */
|
|
25
|
+
export interface EmitterPlugin {
|
|
26
|
+
/** 言語識別子(`generateModule` の `language`)。 */
|
|
27
|
+
language: string;
|
|
28
|
+
/** 生成ファイルの拡張子(`.ts` / `.py` …)。 */
|
|
29
|
+
fileExtension: string;
|
|
30
|
+
/** runtime-core の既定 import 指定子(`"behavior-contracts"` / `"behavior_contracts"`)。 */
|
|
31
|
+
defaultRuntimeImport: string;
|
|
32
|
+
/**
|
|
33
|
+
* 推奨ファイル名の上書き(省略時は `behaviors.generated` + fileExtension)。
|
|
34
|
+
* Rust のように `.` 区切りがモジュール名として使えない言語が指定する。
|
|
35
|
+
*/
|
|
36
|
+
filenameHint?: string;
|
|
37
|
+
/** モジュール全文を emit(決定的であること)。 */
|
|
38
|
+
emit(ctx: EmitContext): string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* registerEmitter — 言語 emitter を登録する(consumer / 後続 SP の言語追加 seam)。
|
|
42
|
+
* 同名言語の再登録は上書き(テスト・差し替え用)。
|
|
43
|
+
*/
|
|
44
|
+
export declare function registerEmitter(plugin: EmitterPlugin): void;
|
|
45
|
+
/** 登録済み言語の一覧(宣言順不定 — 表示用途はソートして使う)。 */
|
|
46
|
+
export declare function registeredLanguages(): string[];
|
|
47
|
+
export interface GenerateOptions {
|
|
48
|
+
/** 生成先言語(登録済み emitter の識別子。SP1: "typescript" | "python")。 */
|
|
49
|
+
language: string;
|
|
50
|
+
/**
|
|
51
|
+
* runtime-core を import するモジュール指定子。省略時は emitter の既定
|
|
52
|
+
* (npm/PyPI パッケージ名)。テスト・vendored 配置ではソースへの相対パス等を渡す。
|
|
53
|
+
* 生成コードの決定性は指定子込み(同一 IR + 同一オプション → byte-identical)。
|
|
54
|
+
*/
|
|
55
|
+
runtimeImport?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface GeneratedModule {
|
|
58
|
+
/** 生成言語。 */
|
|
59
|
+
language: string;
|
|
60
|
+
/** モジュール全文(実行可能なソースコード)。 */
|
|
61
|
+
code: string;
|
|
62
|
+
/** source IR の fingerprint(生成コードにも定数として焼き込み済み)。 */
|
|
63
|
+
fingerprint: string;
|
|
64
|
+
/** 焼き込んだ spec versions。 */
|
|
65
|
+
specVersions: {
|
|
66
|
+
behavior: number;
|
|
67
|
+
expression: number;
|
|
68
|
+
plan: number;
|
|
69
|
+
};
|
|
70
|
+
/** bind で公開される component 名(IR 宣言順)。 */
|
|
71
|
+
componentNames: string[];
|
|
72
|
+
/** 推奨ファイル名(`behaviors.generated` + 言語拡張子)。 */
|
|
73
|
+
filenameHint: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* generateModule — 可搬 component-graph IR から言語ネイティブの実行モジュールを生成する。
|
|
77
|
+
*
|
|
78
|
+
* 生成物の形(全言語共通の契約):
|
|
79
|
+
* - IR がネイティブリテラル定数として埋め込まれる(実行時 JSON パースなし)。
|
|
80
|
+
* - `EXPECTED_SPEC_VERSIONS` / `IR_FINGERPRINT` 定数 + ロード時 fail-closed 検査。
|
|
81
|
+
* - `bind(handlers)`(TS はさらに `bindAsync`): handler 注入を受けて
|
|
82
|
+
* `{component名: (input) => runBehavior(IR, handlers, input, name)}` を返す薄い束ね。
|
|
83
|
+
* **handler は常に境界注入**であり、生成対象にならない(C4)。
|
|
84
|
+
*
|
|
85
|
+
* @throws {GeneratorFailure} 入力が可搬 IR でない / 版超過 / 未知言語(fail-closed)。
|
|
86
|
+
* @throws {PortabilityError} IR が Portability Guard に違反するとき。
|
|
87
|
+
*/
|
|
88
|
+
export declare function generateModule(ir: unknown, options: GenerateOptions): GeneratedModule;
|
|
89
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/generator/core.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,MAAM,MAAM,oBAAoB,GAC5B,uBAAuB,GACvB,wBAAwB,GACxB,0BAA0B,GAC1B,UAAU,GACV,qBAAqB,GACrB,kBAAkB,CAAC;AAEvB,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,IAAI,EAAE,oBAAoB,CAAC;gBACf,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;CAKxD;AAOD,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,EAAE,EAAE,gBAAgB,CAAC;IACrB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,8BAA8B;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC;CAChC;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED,uCAAuC;AACvC,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AA8CD,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,uCAAuC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,eAAe,CA+BrF"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* core.ts — SCP Runtime Code Generation Layer: 共通 Generator 本体(bc#13 SP1)。
|
|
3
|
+
*
|
|
4
|
+
* docs/scp-ir-architecture.md §7.2–§7.4 の規範実装:
|
|
5
|
+
* - **入力は可搬 IR のみ**(§5 の component-graph ドキュメント。ソース/内部 IR は拒否 —
|
|
6
|
+
* concept.md §5.6 Generator Interface)。生成時に envelope(irVersion / exprVersion)と
|
|
7
|
+
* assertPortableComponentGraph を fail-closed で検査する。
|
|
8
|
+
* - **DSL 非依存**: components[] / Expression IR / plan という DSL 不変部(§7.4)だけを
|
|
9
|
+
* 消費する。DSL 固有部(catalog 実装・handler)は生成コードに載らず、実行時に
|
|
10
|
+
* `IR + {effects,config,hooks}` 境界で注入される(concept.md §4.4)。
|
|
11
|
+
* - **実行ロジックを再実装しない**: 生成コードは事前構築済みネイティブリテラルを既存の
|
|
12
|
+
* runtime-core API(runBehavior / runBehaviorAsync / run_behavior)へ渡す薄い束ね
|
|
13
|
+
* (runtime≈0 追加。graphddb #208 の AOT パターンの一般化)。
|
|
14
|
+
* - **決定的**: 同一 IR ドキュメント → byte-identical な生成コード(タイムスタンプ・
|
|
15
|
+
* 絶対パス等の非決定要素を埋め込まない)。
|
|
16
|
+
* - **spec-version / fingerprint 焼き込み**: 生成時の SPEC_VERSIONS(behavior /
|
|
17
|
+
* expression / plan)と source IR の fingerprint を定数として焼き込み、生成モジュールは
|
|
18
|
+
* ロード時に runtime の定数と照合して skew を LOUD reject する(#208 の
|
|
19
|
+
* prepared-artifact 規律)。
|
|
20
|
+
*
|
|
21
|
+
* 経路の恒久併存(§7.2): この codegen 経路(エンドポイント 3)は動的 JSON 経路
|
|
22
|
+
* (エンドポイント 2)を置き換えない。両経路は同一 IR に対して観測等価であることが
|
|
23
|
+
* conformance ゲート(§7.3 — ts/test/codegen-conformance.test.ts)で強制される。
|
|
24
|
+
*/
|
|
25
|
+
import { SPEC_VERSIONS } from "../index.js";
|
|
26
|
+
import { assertPortableComponentGraph } from "../guard.js";
|
|
27
|
+
import { fingerprintComponentGraph } from "./fingerprint.js";
|
|
28
|
+
export class GeneratorFailure extends Error {
|
|
29
|
+
code;
|
|
30
|
+
constructor(code, message) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.code = code;
|
|
33
|
+
this.name = "GeneratorFailure";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function gfail(code, message) {
|
|
37
|
+
throw new GeneratorFailure(code, message);
|
|
38
|
+
}
|
|
39
|
+
const registry = new Map();
|
|
40
|
+
/**
|
|
41
|
+
* registerEmitter — 言語 emitter を登録する(consumer / 後続 SP の言語追加 seam)。
|
|
42
|
+
* 同名言語の再登録は上書き(テスト・差し替え用)。
|
|
43
|
+
*/
|
|
44
|
+
export function registerEmitter(plugin) {
|
|
45
|
+
registry.set(plugin.language, plugin);
|
|
46
|
+
}
|
|
47
|
+
/** 登録済み言語の一覧(宣言順不定 — 表示用途はソートして使う)。 */
|
|
48
|
+
export function registeredLanguages() {
|
|
49
|
+
return [...registry.keys()].sort();
|
|
50
|
+
}
|
|
51
|
+
// ── 入力検証(生成時 fail-closed)────────────────────────────────────────────
|
|
52
|
+
/**
|
|
53
|
+
* 可搬 IR envelope 検査 + Portability Guard。**可搬 component-graph IR 以外は LOUD reject**
|
|
54
|
+
* (graphddb operations.json のような consumer bundle・内部 IR・任意 JSON を黙って
|
|
55
|
+
* 受け付けない)。
|
|
56
|
+
*/
|
|
57
|
+
function validateGeneratorInput(ir) {
|
|
58
|
+
if (ir === null || typeof ir !== "object" || Array.isArray(ir))
|
|
59
|
+
gfail("INPUT_NOT_PORTABLE_IR", "generator input must be a portable component-graph IR document ({irVersion, exprVersion, components[]} — scp-ir-architecture.md §5); got a non-object (fail-closed)");
|
|
60
|
+
const doc = ir;
|
|
61
|
+
if (doc.irVersion === undefined || doc.components === undefined)
|
|
62
|
+
gfail("INPUT_NOT_PORTABLE_IR", "generator input must be a portable component-graph IR document ({irVersion, exprVersion, components[]}); the codegen path consumes portable IR ONLY — never source/internal IR or consumer bundles (fail-closed)");
|
|
63
|
+
if (doc.irVersion !== 1)
|
|
64
|
+
gfail("UNSUPPORTED_IR_VERSION", `irVersion ${String(doc.irVersion)} is not supported (supported: 1) (fail-closed)`);
|
|
65
|
+
const exprVersion = doc.exprVersion;
|
|
66
|
+
if (typeof exprVersion !== "number" || !Number.isInteger(exprVersion) || exprVersion < 1)
|
|
67
|
+
gfail("INPUT_NOT_PORTABLE_IR", `exprVersion must be a positive integer, got ${String(exprVersion)} (fail-closed)`);
|
|
68
|
+
if (exprVersion > SPEC_VERSIONS.expression)
|
|
69
|
+
gfail("UNSUPPORTED_EXPR_VERSION", `exprVersion ${exprVersion} exceeds supported expression version ${SPEC_VERSIONS.expression} (fail-closed)`);
|
|
70
|
+
// Portability Guard(P0-2): 関数残存・非文字列 component 参照・未知 operator を静的拒否。
|
|
71
|
+
assertPortableComponentGraph(ir);
|
|
72
|
+
const components = doc.components;
|
|
73
|
+
if (components.length === 0)
|
|
74
|
+
gfail("EMPTY_IR", "IR has no components — nothing to generate (fail-closed)");
|
|
75
|
+
const seen = new Set();
|
|
76
|
+
for (const c of components) {
|
|
77
|
+
if (seen.has(c.name))
|
|
78
|
+
gfail("DUPLICATE_COMPONENT", `component name '${c.name}' appears more than once — bind() keys must be unique (fail-closed)`);
|
|
79
|
+
seen.add(c.name);
|
|
80
|
+
}
|
|
81
|
+
return ir;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* generateModule — 可搬 component-graph IR から言語ネイティブの実行モジュールを生成する。
|
|
85
|
+
*
|
|
86
|
+
* 生成物の形(全言語共通の契約):
|
|
87
|
+
* - IR がネイティブリテラル定数として埋め込まれる(実行時 JSON パースなし)。
|
|
88
|
+
* - `EXPECTED_SPEC_VERSIONS` / `IR_FINGERPRINT` 定数 + ロード時 fail-closed 検査。
|
|
89
|
+
* - `bind(handlers)`(TS はさらに `bindAsync`): handler 注入を受けて
|
|
90
|
+
* `{component名: (input) => runBehavior(IR, handlers, input, name)}` を返す薄い束ね。
|
|
91
|
+
* **handler は常に境界注入**であり、生成対象にならない(C4)。
|
|
92
|
+
*
|
|
93
|
+
* @throws {GeneratorFailure} 入力が可搬 IR でない / 版超過 / 未知言語(fail-closed)。
|
|
94
|
+
* @throws {PortabilityError} IR が Portability Guard に違反するとき。
|
|
95
|
+
*/
|
|
96
|
+
export function generateModule(ir, options) {
|
|
97
|
+
const plugin = registry.get(options.language);
|
|
98
|
+
if (!plugin)
|
|
99
|
+
gfail("UNKNOWN_LANGUAGE", `no emitter registered for language '${options.language}' (registered: ${registeredLanguages().join(", ")}) (fail-closed)`);
|
|
100
|
+
const validated = validateGeneratorInput(ir);
|
|
101
|
+
const fingerprint = fingerprintComponentGraph(validated);
|
|
102
|
+
const specVersions = {
|
|
103
|
+
behavior: SPEC_VERSIONS.behavior,
|
|
104
|
+
expression: SPEC_VERSIONS.expression,
|
|
105
|
+
plan: SPEC_VERSIONS.plan,
|
|
106
|
+
};
|
|
107
|
+
const componentNames = validated.components.map((c) => c.name);
|
|
108
|
+
const ctx = {
|
|
109
|
+
ir: validated,
|
|
110
|
+
fingerprint,
|
|
111
|
+
specVersions,
|
|
112
|
+
componentNames,
|
|
113
|
+
runtimeImport: options.runtimeImport ?? plugin.defaultRuntimeImport,
|
|
114
|
+
};
|
|
115
|
+
return {
|
|
116
|
+
language: plugin.language,
|
|
117
|
+
code: plugin.emit(ctx),
|
|
118
|
+
fingerprint,
|
|
119
|
+
specVersions,
|
|
120
|
+
componentNames,
|
|
121
|
+
filenameHint: plugin.filenameHint ?? `behaviors.generated${plugin.fileExtension}`,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/generator/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* emit-go.ts — Go emitter(共通 Generator, bc#13 SP2)。
|
|
3
|
+
*
|
|
4
|
+
* 生成物: 可搬 IR を **JNode ネイティブ複合リテラル**(`dslcontracts.JObjOf` /
|
|
5
|
+
* `[]dslcontracts.JNode` / `json.Number` — RunBehavior が消費する JNode ドメイン。
|
|
6
|
+
* dynamic 経路の ParseJSONOrdered 出力と同型)として埋め込み、runtime-core の
|
|
7
|
+
* `RunBehavior` に handler 注入で渡す薄い accessor(`Bind`)を公開する .go ファイル。
|
|
8
|
+
*
|
|
9
|
+
* ロード時検査は **init 時**(package import 時): spec-version skew / fingerprint
|
|
10
|
+
* mismatch は `init()` の panic で LOUD reject — 生成 package を import しただけで
|
|
11
|
+
* プロセスが起動不能になる(#208 prepared-artifact 規律。first-Bind 遅延ではなく
|
|
12
|
+
* init を選ぶ: Go では import 副作用が慣用で、検査漏れの窓が生じない)。
|
|
13
|
+
*
|
|
14
|
+
* 出力は gofmt-clean(tab インデント・trailing comma)— CI の gofmt -l ゲートと
|
|
15
|
+
* fixture byte-drift ゲートの両立のため、emitter 出力自体が gofmt 不動点である。
|
|
16
|
+
*/
|
|
17
|
+
import type { EmitterPlugin } from "./core.js";
|
|
18
|
+
export declare const goEmitter: EmitterPlugin;
|
|
19
|
+
//# sourceMappingURL=emit-go.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-go.d.ts","sourceRoot":"","sources":["../../src/generator/emit-go.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AA2E5D,eAAO,MAAM,SAAS,EAAE,aAKvB,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { emitDocLiteral } from "./literal.js";
|
|
2
|
+
function emit(ctx) {
|
|
3
|
+
const { fingerprint, specVersions, componentNames, runtimeImport } = ctx;
|
|
4
|
+
const names = componentNames.map((n) => JSON.stringify(n)).join(", ");
|
|
5
|
+
const irLiteral = emitDocLiteral(ctx.ir, "go");
|
|
6
|
+
return `// GENERATED by behavior-contracts common generator (bc#13) — DO NOT EDIT.
|
|
7
|
+
// Input: portable component-graph IR only (scp-ir-architecture.md §5/§7.4).
|
|
8
|
+
// This module is the codegen endpoint (§7.3 endpoint 3): the IR is embedded as a
|
|
9
|
+
// native JNode composite literal and handed to the EXISTING runtime core
|
|
10
|
+
// (RunBehavior) — no execution logic is generated. Handlers are ALWAYS injected
|
|
11
|
+
// at the boundary (IR + {effects,config,hooks} — concept.md §4.4); they are
|
|
12
|
+
// never generated.
|
|
13
|
+
// irFingerprint: ${fingerprint}
|
|
14
|
+
|
|
15
|
+
package behaviors
|
|
16
|
+
|
|
17
|
+
import (
|
|
18
|
+
"encoding/json"
|
|
19
|
+
"fmt"
|
|
20
|
+
|
|
21
|
+
dslcontracts ${JSON.stringify(runtimeImport)}
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
// ExpectedSpecVersions are the spec versions baked at generation time
|
|
25
|
+
// (fail-closed constant comparison at init).
|
|
26
|
+
var ExpectedSpecVersions = map[string]int64{"behavior": ${specVersions.behavior}, "expression": ${specVersions.expression}, "plan": ${specVersions.plan}}
|
|
27
|
+
|
|
28
|
+
// IRFingerprint is the FNV-1a 64 fingerprint of the source portable IR
|
|
29
|
+
// (CanonicalJSON discipline, #208).
|
|
30
|
+
const IRFingerprint = ${JSON.stringify(fingerprint)}
|
|
31
|
+
|
|
32
|
+
// ComponentNames are the components exposed by Bind(), in IR declaration order.
|
|
33
|
+
var ComponentNames = []string{${names}}
|
|
34
|
+
|
|
35
|
+
// IR is the portable component-graph IR, embedded as a native JNode composite
|
|
36
|
+
// literal (no JSON parse at runtime).
|
|
37
|
+
var IR dslcontracts.JNode = ${irLiteral}
|
|
38
|
+
|
|
39
|
+
// init — load-time fail-closed checks (#208 prepared-artifact discipline).
|
|
40
|
+
// A spec-version skew or fingerprint mismatch panics at package initialization,
|
|
41
|
+
// so importing a stale/tampered generated module fails LOUDLY before any
|
|
42
|
+
// behavior can run.
|
|
43
|
+
func init() {
|
|
44
|
+
for k, want := range ExpectedSpecVersions {
|
|
45
|
+
if got := dslcontracts.SpecVersions[k]; got != want {
|
|
46
|
+
panic(fmt.Sprintf("behavior-contracts generated module: spec-version skew for '%s' (generated=%d, runtime=%d) — regenerate against this runtime (fail-closed)", k, want, got))
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
got, err := dslcontracts.FingerprintComponentGraph(IR)
|
|
50
|
+
if err != nil {
|
|
51
|
+
panic(fmt.Sprintf("behavior-contracts generated module: fingerprint recompute failed: %v (fail-closed)", err))
|
|
52
|
+
}
|
|
53
|
+
if got != IRFingerprint {
|
|
54
|
+
panic(fmt.Sprintf("behavior-contracts generated module: IR fingerprint mismatch (baked=%s, embedded literal=%s) — the generated code was modified or corrupted (fail-closed)", IRFingerprint, got))
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Bind — inject handlers (boundary injection; catalog name → implementation) and
|
|
59
|
+
// get one executor func per component. Each call delegates to the runtime core's
|
|
60
|
+
// RunBehavior over the embedded IR (dynamic-path equivalent — §7.3).
|
|
61
|
+
func Bind(handlers dslcontracts.ComponentExec) map[string]func(input *dslcontracts.Obj) (dslcontracts.Value, error) {
|
|
62
|
+
bound := make(map[string]func(input *dslcontracts.Obj) (dslcontracts.Value, error), len(ComponentNames))
|
|
63
|
+
for _, name := range ComponentNames {
|
|
64
|
+
n := name
|
|
65
|
+
bound[n] = func(input *dslcontracts.Obj) (dslcontracts.Value, error) {
|
|
66
|
+
return dslcontracts.RunBehavior(IR, handlers, input, n)
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return bound
|
|
70
|
+
}
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
export const goEmitter = {
|
|
74
|
+
language: "go",
|
|
75
|
+
fileExtension: ".go",
|
|
76
|
+
defaultRuntimeImport: "github.com/foo-ogawa/behavior-contracts/go",
|
|
77
|
+
emit,
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=emit-go.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-go.js","sourceRoot":"","sources":["../../src/generator/emit-go.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,SAAS,IAAI,CAAC,GAAgB;IAC5B,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;IACzE,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,OAAO;;;;;;;oBAOW,WAAW;;;;;;;;gBAQf,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;;;;0DAKa,YAAY,CAAC,QAAQ,mBAAmB,YAAY,CAAC,UAAU,aAAa,YAAY,CAAC,IAAI;;;;wBAI/H,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;gCAGnB,KAAK;;;;8BAIP,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCtC,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAkB;IACtC,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,KAAK;IACpB,oBAAoB,EAAE,4CAA4C;IAClE,IAAI;CACL,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* emit-php.ts — PHP emitter(共通 Generator, bc#13 SP2)。
|
|
3
|
+
*
|
|
4
|
+
* 生成物: 可搬 IR を **ネイティブ配列/stdClass リテラル**(`(object) [...]` /
|
|
5
|
+
* `[...]` — Behavior::runBehavior が消費する json_decode(.., false) 同型ドメイン)
|
|
6
|
+
* として埋め込み、`Behavior::runBehavior` に handler 注入で渡す accessor
|
|
7
|
+
* (`bind` クロージャ)を公開する .php ファイル。
|
|
8
|
+
*
|
|
9
|
+
* ロード形: PHP に「モジュール」概念は無いため、生成ファイルは **require の戻り値**
|
|
10
|
+
* としてモジュールオブジェクト(stdClass: EXPECTED_SPEC_VERSIONS / IR_FINGERPRINT /
|
|
11
|
+
* COMPONENT_NAMES / IR / bind)を返す。トップレベルシンボルを定義しないので、
|
|
12
|
+
* 同一プロセスで複数の生成モジュールを衝突なく require できる
|
|
13
|
+
* (変数スコープ漏れを避けるにはクロージャ内で require すること)。
|
|
14
|
+
*
|
|
15
|
+
* ロード時検査は **require 時**: spec-version skew / fingerprint mismatch は
|
|
16
|
+
* RuntimeException で LOUD reject(#208 prepared-artifact 規律)。
|
|
17
|
+
*/
|
|
18
|
+
import type { EmitterPlugin } from "./core.js";
|
|
19
|
+
export declare const phpEmitter: EmitterPlugin;
|
|
20
|
+
//# sourceMappingURL=emit-php.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-php.d.ts","sourceRoot":"","sources":["../../src/generator/emit-php.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AAyE5D,eAAO,MAAM,UAAU,EAAE,aAKxB,CAAC"}
|