@ishibashi0112/webview2-bridge-gen 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.
Files changed (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +133 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +60 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/define.d.ts +19 -0
  8. package/dist/define.d.ts.map +1 -0
  9. package/dist/define.js +8 -0
  10. package/dist/define.js.map +1 -0
  11. package/dist/emit-ts.d.ts +15 -0
  12. package/dist/emit-ts.d.ts.map +1 -0
  13. package/dist/emit-ts.js +113 -0
  14. package/dist/emit-ts.js.map +1 -0
  15. package/dist/emit-vb.d.ts +22 -0
  16. package/dist/emit-vb.d.ts.map +1 -0
  17. package/dist/emit-vb.js +467 -0
  18. package/dist/emit-vb.js.map +1 -0
  19. package/dist/emitted.d.ts +6 -0
  20. package/dist/emitted.d.ts.map +1 -0
  21. package/dist/emitted.js +2 -0
  22. package/dist/emitted.js.map +1 -0
  23. package/dist/generate.d.ts +47 -0
  24. package/dist/generate.d.ts.map +1 -0
  25. package/dist/generate.js +103 -0
  26. package/dist/generate.js.map +1 -0
  27. package/dist/index.d.ts +7 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +8 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/naming.d.ts +8 -0
  32. package/dist/naming.d.ts.map +1 -0
  33. package/dist/naming.js +42 -0
  34. package/dist/naming.js.map +1 -0
  35. package/dist/schema.d.ts +45 -0
  36. package/dist/schema.d.ts.map +1 -0
  37. package/dist/schema.js +21 -0
  38. package/dist/schema.js.map +1 -0
  39. package/dist/to-schema.d.ts +10 -0
  40. package/dist/to-schema.d.ts.map +1 -0
  41. package/dist/to-schema.js +75 -0
  42. package/dist/to-schema.js.map +1 -0
  43. package/dist/vb-runtime.d.ts +12 -0
  44. package/dist/vb-runtime.d.ts.map +1 -0
  45. package/dist/vb-runtime.js +50 -0
  46. package/dist/vb-runtime.js.map +1 -0
  47. package/package.json +73 -0
  48. package/vb-runtime/README.md +10 -0
  49. package/vb-runtime/runtime/Dispatcher.vb +145 -0
  50. package/vb-runtime/runtime/IBridgeEmitter.vb +16 -0
  51. package/vb-runtime/runtime/JsonRpc.vb +124 -0
  52. package/vb-runtime/winforms/WebViewBridge.vb +100 -0
@@ -0,0 +1,467 @@
1
+ import { pascalCase, toIdentifier, vbEscape } from "./naming.js";
2
+ import { GenerateError, refName } from "./schema.js";
3
+ /**
4
+ * contract.schema.json → VB.NET ソース(Dto.vb / Interfaces.vb / Dispatcher.Generated.vb / Events.vb)
5
+ */
6
+ export function emitVb(schema, options) {
7
+ const ctx = new VbContext(schema, options);
8
+ ctx.collect();
9
+ return [
10
+ { path: "Dto.vb", content: ctx.renderDto() },
11
+ { path: "Interfaces.vb", content: ctx.renderInterfaces() },
12
+ { path: "Dispatcher.Generated.vb", content: ctx.renderDispatcher() },
13
+ { path: "Events.vb", content: ctx.renderEvents() },
14
+ ];
15
+ }
16
+ class VbContext {
17
+ schema;
18
+ options;
19
+ decls = [];
20
+ declByName = new Map();
21
+ defsInProgress = new Set();
22
+ methods = [];
23
+ events = [];
24
+ dispatcherClass;
25
+ eventsClass;
26
+ emitterInterface;
27
+ runtimeNamespace;
28
+ constructor(schema, options) {
29
+ this.schema = schema;
30
+ this.options = options;
31
+ this.dispatcherClass = options.dispatcherClass ?? "Dispatcher";
32
+ this.eventsClass = options.eventsClass ?? "BridgeEvents";
33
+ this.emitterInterface = options.emitterInterface ?? "IBridgeEmitter";
34
+ this.runtimeNamespace = options.runtimeNamespace ?? "WebView2Bridge.Runtime";
35
+ }
36
+ collect() {
37
+ // $defs(.meta({ id }) 付き)を先に、契約に現れた順で
38
+ for (const id of Object.keys(this.schema.$defs)) {
39
+ this.ensureDef(id);
40
+ }
41
+ for (const [ns, methods] of Object.entries(this.schema.methods)) {
42
+ for (const [name, m] of Object.entries(methods)) {
43
+ const base = `${pascalCase(ns)}${pascalCase(name)}`;
44
+ const path = `methods.${ns}.${name}`;
45
+ const request = this.resolveNamed(m.input, `${base}Request`, `${path}.input`);
46
+ const response = this.resolveNamed(m.output, `${base}Response`, `${path}.output`);
47
+ this.methods.push({
48
+ ns,
49
+ name,
50
+ rpcName: `${ns}.${name}`,
51
+ vbName: pascalCase(name),
52
+ request,
53
+ response,
54
+ ...(m.input.description !== undefined && { description: m.input.description }),
55
+ });
56
+ }
57
+ }
58
+ for (const [name, e] of Object.entries(this.schema.events)) {
59
+ const payload = this.resolveNamed(e, `${pascalCase(name)}Event`, `events.${name}`);
60
+ this.events.push({
61
+ name,
62
+ rpcName: `event.${name}`,
63
+ vbName: pascalCase(name),
64
+ payload,
65
+ ...(e.description !== undefined && { description: e.description }),
66
+ });
67
+ }
68
+ }
69
+ /** method の input/output・event の payload は「クラスであること」を要求する($ref 可) */
70
+ resolveNamed(s, name, path) {
71
+ if (s.$ref)
72
+ return this.ensureDef(refName(s.$ref));
73
+ if (!isObjectSchema(s)) {
74
+ throw new GenerateError("Method input/output and event payload must be z.object() (or a .meta({ id }) object)", path);
75
+ }
76
+ this.addClass(name, s, path);
77
+ return name;
78
+ }
79
+ ensureDef(id) {
80
+ if (toIdentifier(id) !== id) {
81
+ throw new GenerateError(`meta id "${id}" is not a valid identifier (PascalCase, [A-Za-z0-9_])`, `$defs.${id}`);
82
+ }
83
+ const existing = this.declByName.get(id);
84
+ if (existing)
85
+ return id;
86
+ if (this.defsInProgress.has(id))
87
+ return id; // 再帰参照(自己参照クラス)
88
+ const def = this.schema.$defs[id];
89
+ if (!def)
90
+ throw new GenerateError(`Unknown $ref target "${id}"`, `$defs.${id}`);
91
+ this.defsInProgress.add(id);
92
+ try {
93
+ const path = `$defs.${id}`;
94
+ if (isStringEnum(def)) {
95
+ this.addEnum(id, def, path);
96
+ }
97
+ else if (isObjectSchema(def)) {
98
+ this.addClass(id, def, path);
99
+ }
100
+ else {
101
+ throw new GenerateError(`meta id "${id}" must be attached to z.object() or z.enum()`, path);
102
+ }
103
+ }
104
+ finally {
105
+ this.defsInProgress.delete(id);
106
+ }
107
+ return id;
108
+ }
109
+ register(decl) {
110
+ const prev = this.declByName.get(decl.name);
111
+ if (prev) {
112
+ throw new GenerateError(`Generated type name "${decl.name}" collides (${prev.origin} vs ${decl.origin}). Use .meta({ id }) to name one of them`, decl.origin);
113
+ }
114
+ this.declByName.set(decl.name, decl);
115
+ this.decls.push(decl);
116
+ }
117
+ addClass(name, s, path) {
118
+ const cls = {
119
+ kind: "class",
120
+ name,
121
+ props: [],
122
+ origin: path,
123
+ ...(s.description !== undefined && { description: s.description }),
124
+ };
125
+ this.register(cls);
126
+ const required = new Set(s.required ?? []);
127
+ for (const [jsonName, ps] of Object.entries(s.properties ?? {})) {
128
+ const propPath = `${path}.${jsonName}`;
129
+ const vbName = toIdentifier(jsonName);
130
+ if (vbName === name) {
131
+ throw new GenerateError(`Property "${jsonName}" would have the same name as its class "${name}"`, propPath);
132
+ }
133
+ const type = this.resolveType(ps, name, jsonName, propPath);
134
+ cls.props.push({
135
+ jsonName,
136
+ vbName,
137
+ type,
138
+ required: required.has(jsonName),
139
+ ...(ps.description !== undefined && { description: ps.description }),
140
+ });
141
+ }
142
+ const seen = new Set();
143
+ for (const p of cls.props) {
144
+ const key = p.vbName.toLowerCase();
145
+ if (seen.has(key)) {
146
+ throw new GenerateError(`Properties collide in VB (case-insensitive): "${p.vbName}"`, `${path}.${p.jsonName}`);
147
+ }
148
+ seen.add(key);
149
+ }
150
+ }
151
+ addEnum(name, s, path) {
152
+ const values = (s.enum ?? []).filter((v) => typeof v === "string");
153
+ this.register({
154
+ kind: "enum",
155
+ name,
156
+ values,
157
+ origin: path,
158
+ ...(s.description !== undefined && { description: s.description }),
159
+ });
160
+ }
161
+ /** プロパティ・配列要素・record 値の型を解決する。無名 object / enum はここで名前を与えて登録する */
162
+ resolveType(s, owner, prop, path) {
163
+ if (s.$ref) {
164
+ const id = this.ensureDef(refName(s.$ref));
165
+ // 名前付き enum(z.enum().meta({ id }))は Const クラスを生成しつつ、型は String のまま
166
+ const decl = this.declByName.get(id);
167
+ const name = decl?.kind === "enum" ? "String" : id;
168
+ return { name, isValueType: false, nullable: false };
169
+ }
170
+ const { types, nullable, inner } = unwrapNullable(s, path);
171
+ if (inner) {
172
+ const t = this.resolveType(inner, owner, prop, path);
173
+ // null 許容になったので初期化子は付けない(Nothing のまま送れるように)
174
+ return { name: t.name, isValueType: t.isValueType, nullable: t.nullable || nullable };
175
+ }
176
+ if (types.length === 0) {
177
+ if (s.enum) {
178
+ return this.enumType(s, owner, prop, path, nullable);
179
+ }
180
+ if (isAnySchema(s)) {
181
+ return { name: "JToken", isValueType: false, nullable };
182
+ }
183
+ throw new GenerateError(`Unsupported schema ${describe(s)}`, path);
184
+ }
185
+ if (types.length > 1) {
186
+ throw new GenerateError(`Union types are not supported: [${types.join(", ")}]`, path);
187
+ }
188
+ const type = types[0];
189
+ switch (type) {
190
+ case "string":
191
+ if (s.enum)
192
+ return this.enumType(s, owner, prop, path, nullable);
193
+ return { name: "String", isValueType: false, nullable };
194
+ case "number":
195
+ return { name: "Double", isValueType: true, nullable };
196
+ case "integer":
197
+ return { name: s.format === "int64" ? "Long" : "Integer", isValueType: true, nullable };
198
+ case "boolean":
199
+ return { name: "Boolean", isValueType: true, nullable };
200
+ case "array": {
201
+ const itemName = singularize(prop);
202
+ const item = this.resolveType(s.items ?? {}, owner, itemName, `${path}[]`);
203
+ const name = `List(Of ${item.name})`;
204
+ return { name, isValueType: false, nullable, initializer: `New ${name}()` };
205
+ }
206
+ case "object": {
207
+ if (s.properties && Object.keys(s.properties).length > 0) {
208
+ const name = `${owner}${toIdentifier(prop)}`;
209
+ this.addClass(name, s, path);
210
+ return { name, isValueType: false, nullable };
211
+ }
212
+ if (typeof s.additionalProperties === "object") {
213
+ const value = this.resolveType(s.additionalProperties, owner, `${prop}Value`, `${path}.*`);
214
+ const name = `Dictionary(Of String, ${value.name})`;
215
+ return { name, isValueType: false, nullable, initializer: `New ${name}()` };
216
+ }
217
+ if (s.properties && Object.keys(s.properties).length === 0 && s.additionalProperties === false) {
218
+ const name = `${owner}${toIdentifier(prop)}`;
219
+ this.addClass(name, s, path);
220
+ return { name, isValueType: false, nullable };
221
+ }
222
+ return { name: "JObject", isValueType: false, nullable };
223
+ }
224
+ case "null":
225
+ throw new GenerateError("z.null() alone is not supported", path);
226
+ default:
227
+ throw new GenerateError(`Unsupported JSON Schema type "${type}"`, path);
228
+ }
229
+ }
230
+ enumType(s, owner, prop, path, nullable) {
231
+ const values = s.enum ?? [];
232
+ const hasNull = values.includes(null);
233
+ const strings = values.filter((v) => v !== null);
234
+ if (!strings.every((v) => typeof v === "string")) {
235
+ throw new GenerateError("Only string enums are supported (z.enum([...]))", path);
236
+ }
237
+ const name = `${owner}${toIdentifier(prop)}`;
238
+ this.addEnum(name, { ...s, enum: strings }, path);
239
+ return { name: "String", isValueType: false, nullable: nullable || hasNull };
240
+ }
241
+ // ---------------------------------------------------------------- render
242
+ header(...imports) {
243
+ return [
244
+ "' <auto-generated>",
245
+ "' This code was generated by @ishibashi0112/webview2-bridge-gen from contract.schema.json.",
246
+ "' DO NOT EDIT. Changes will be lost when `pnpm gen` runs.",
247
+ "' </auto-generated>",
248
+ "Option Strict On",
249
+ "Option Explicit On",
250
+ "Option Infer On",
251
+ "",
252
+ "Imports System",
253
+ ...imports.map((i) => `Imports ${i}`),
254
+ ].join("\n");
255
+ }
256
+ renderDto() {
257
+ const out = [];
258
+ out.push(this.header());
259
+ out.push("Imports System.Collections.Generic");
260
+ out.push("Imports Newtonsoft.Json");
261
+ out.push("Imports Newtonsoft.Json.Linq");
262
+ out.push("");
263
+ out.push(`Namespace Global.${this.options.namespace}`);
264
+ out.push("");
265
+ for (const decl of this.decls) {
266
+ out.push(decl.kind === "class" ? this.renderClass(decl) : this.renderEnum(decl));
267
+ out.push("");
268
+ }
269
+ out.push("End Namespace");
270
+ return out.join("\n") + "\n";
271
+ }
272
+ renderClass(cls) {
273
+ const lines = [];
274
+ lines.push(...xmlDoc(cls.description, 4));
275
+ lines.push(` Public Class ${cls.name}`);
276
+ cls.props.forEach((p, i) => {
277
+ if (i > 0)
278
+ lines.push("");
279
+ lines.push(...xmlDoc(p.description, 8));
280
+ const attrArgs = [vbString(p.jsonName)];
281
+ // optional(required でない)プロパティは Nothing のとき JSON から省く。
282
+ // Web 側の zod `.optional()` は null を受け付けないため。
283
+ if (!p.required)
284
+ attrArgs.push("NullValueHandling:=NullValueHandling.Ignore");
285
+ lines.push(` <JsonProperty(${attrArgs.join(", ")})>`);
286
+ const optionalValue = p.type.isValueType && (!p.required || p.type.nullable);
287
+ const typeName = optionalValue ? `Nullable(Of ${p.type.name})` : p.type.name;
288
+ const init = p.required && !p.type.nullable && p.type.initializer ? ` = ${p.type.initializer}` : "";
289
+ lines.push(` Public Property ${vbEscape(p.vbName)} As ${typeName}${init}`);
290
+ });
291
+ lines.push(" End Class");
292
+ return lines.join("\n");
293
+ }
294
+ renderEnum(e) {
295
+ const lines = [];
296
+ lines.push(...xmlDoc(e.description, 4));
297
+ lines.push(` ''' <remarks>string enum. 値は文字列のまま往復する(VB の Enum にはしない)</remarks>`);
298
+ lines.push(` Public NotInheritable Class ${e.name}`);
299
+ lines.push(` Private Sub New()`);
300
+ lines.push(` End Sub`);
301
+ lines.push("");
302
+ const used = new Set();
303
+ for (const v of e.values) {
304
+ let id = toIdentifier(v);
305
+ while (used.has(id.toLowerCase()))
306
+ id = `${id}_`;
307
+ used.add(id.toLowerCase());
308
+ lines.push(` Public Const ${vbEscape(id)} As String = ${vbString(v)}`);
309
+ }
310
+ lines.push("");
311
+ lines.push(` Public Shared ReadOnly Values As String() = {${e.values.map(vbString).join(", ")}}`);
312
+ lines.push(" End Class");
313
+ return lines.join("\n");
314
+ }
315
+ renderInterfaces() {
316
+ const out = [];
317
+ out.push(this.header());
318
+ out.push("Imports System.Threading.Tasks");
319
+ out.push("");
320
+ out.push(`Namespace Global.${this.options.namespace}`);
321
+ out.push("");
322
+ for (const ns of this.namespaces()) {
323
+ out.push(` ''' <summary>"${ns}.*" メソッドの実装。人間が Implements して WebView2Bridge.Impl に置く</summary>`);
324
+ out.push(` Public Interface ${interfaceName(ns)}`);
325
+ const ms = this.methods.filter((m) => m.ns === ns);
326
+ ms.forEach((m, i) => {
327
+ if (i > 0)
328
+ out.push("");
329
+ out.push(...xmlDoc(m.description ?? `JSON-RPC method "${m.rpcName}"`, 8));
330
+ out.push(` Function ${vbEscape(m.vbName)}(req As ${m.request}) As Task(Of ${m.response})`);
331
+ });
332
+ out.push(" End Interface");
333
+ out.push("");
334
+ }
335
+ out.push("End Namespace");
336
+ return out.join("\n") + "\n";
337
+ }
338
+ renderDispatcher() {
339
+ const out = [];
340
+ // Dispatcher は WebView2Bridge.Runtime(別アセンブリ)にあるので Partial Class では拡張できない。
341
+ // 拡張メソッド `dispatcher.Register(api)` として生成する
342
+ out.push(this.header("System.Runtime.CompilerServices", this.runtimeNamespace));
343
+ out.push("");
344
+ out.push(`Namespace Global.${this.options.namespace}`);
345
+ out.push("");
346
+ out.push(` ''' <summary>契約の実装を ${this.dispatcherClass} に登録する拡張メソッド。dispatcher.Register(api) と書ける</summary>`);
347
+ out.push(` Public Module ${this.dispatcherClass}Extensions`);
348
+ out.push("");
349
+ out.push(` ''' <summary>契約に含まれる全メソッド名</summary>`);
350
+ out.push(` Public ReadOnly MethodNames As String() = {${this.methods.map((m) => vbString(m.rpcName)).join(", ")}}`);
351
+ for (const ns of this.namespaces()) {
352
+ out.push("");
353
+ out.push(` ''' <summary>"${ns}.*" の実装を登録する</summary>`);
354
+ out.push(` <Extension>`);
355
+ out.push(` Public Sub Register(dispatcher As ${this.dispatcherClass}, api As ${interfaceName(ns)})`);
356
+ out.push(` If dispatcher Is Nothing Then Throw New ArgumentNullException(NameOf(dispatcher))`);
357
+ out.push(` If api Is Nothing Then Throw New ArgumentNullException(NameOf(api))`);
358
+ for (const m of this.methods.filter((x) => x.ns === ns)) {
359
+ out.push(` dispatcher.RegisterHandler(Of ${m.request}, ${m.response})(${vbString(m.rpcName)}, AddressOf api.${vbEscape(m.vbName)})`);
360
+ }
361
+ out.push(" End Sub");
362
+ }
363
+ out.push(" End Module");
364
+ out.push("");
365
+ out.push("End Namespace");
366
+ return out.join("\n") + "\n";
367
+ }
368
+ renderEvents() {
369
+ const out = [];
370
+ out.push(this.header(this.runtimeNamespace));
371
+ out.push("");
372
+ out.push(`Namespace Global.${this.options.namespace}`);
373
+ out.push("");
374
+ out.push(` ''' <summary>Host → Web の型付きイベント発行ヘルパ。内部で ${this.emitterInterface}.Emit("event.&lt;name&gt;", payload) を呼ぶ</summary>`);
375
+ out.push(` Public Class ${this.eventsClass}`);
376
+ out.push(` Private ReadOnly _emitter As ${this.emitterInterface}`);
377
+ out.push("");
378
+ out.push(` Public Sub New(emitter As ${this.emitterInterface})`);
379
+ out.push(` If emitter Is Nothing Then Throw New ArgumentNullException(NameOf(emitter))`);
380
+ out.push(` _emitter = emitter`);
381
+ out.push(` End Sub`);
382
+ out.push("");
383
+ out.push(` ''' <summary>契約に含まれる全イベント名</summary>`);
384
+ out.push(` Public Shared ReadOnly EventNames As String() = {${this.events.map((e) => vbString(e.rpcName)).join(", ")}}`);
385
+ for (const e of this.events) {
386
+ out.push("");
387
+ out.push(...xmlDoc(e.description ?? `JSON-RPC notification "${e.rpcName}"`, 8));
388
+ out.push(` Public Sub ${vbEscape(e.vbName)}(payload As ${e.payload})`);
389
+ out.push(` _emitter.Emit(${vbString(e.rpcName)}, payload)`);
390
+ out.push(` End Sub`);
391
+ }
392
+ out.push(" End Class");
393
+ out.push("");
394
+ out.push("End Namespace");
395
+ return out.join("\n") + "\n";
396
+ }
397
+ namespaces() {
398
+ return [...new Set(this.methods.map((m) => m.ns))];
399
+ }
400
+ }
401
+ // ------------------------------------------------------------------ helpers
402
+ function interfaceName(ns) {
403
+ return `I${pascalCase(ns)}Api`;
404
+ }
405
+ function isObjectSchema(s) {
406
+ const t = Array.isArray(s.type) ? s.type.filter((x) => x !== "null") : s.type ? [s.type] : [];
407
+ return t.length === 1 && t[0] === "object" && typeof s.additionalProperties !== "object";
408
+ }
409
+ function isStringEnum(s) {
410
+ return Array.isArray(s.enum) && s.enum.every((v) => typeof v === "string");
411
+ }
412
+ const NON_TYPE_KEYWORDS = new Set(["description", "title", "$schema", "$id", "$comment", "default", "examples"]);
413
+ function isAnySchema(s) {
414
+ return Object.keys(s).every((k) => NON_TYPE_KEYWORDS.has(k));
415
+ }
416
+ /**
417
+ * `type: [X, "null"]` と `anyOf: [X, {type:"null"}]` を「null 許容の X」に正規化する。
418
+ * `inner` が返ったら、それを再帰的に解決する。
419
+ */
420
+ function unwrapNullable(s, path) {
421
+ const union = s.anyOf ?? s.oneOf;
422
+ if (union) {
423
+ const nonNull = union.filter((u) => u.type !== "null");
424
+ if (nonNull.length === union.length) {
425
+ throw new GenerateError("Union types (z.union / discriminatedUnion) are not supported", path);
426
+ }
427
+ if (nonNull.length !== 1) {
428
+ throw new GenerateError("Union types (z.union / discriminatedUnion) are not supported", path);
429
+ }
430
+ return { types: [], nullable: true, inner: nonNull[0] };
431
+ }
432
+ if (s.allOf)
433
+ throw new GenerateError("z.intersection / allOf is not supported", path);
434
+ const raw = Array.isArray(s.type) ? s.type : s.type ? [s.type] : [];
435
+ const nullable = raw.includes("null");
436
+ return { types: raw.filter((t) => t !== "null"), nullable };
437
+ }
438
+ /** items → Item のような単純な単数化。それ以外は "Item" を付ける */
439
+ function singularize(prop) {
440
+ const p = toIdentifier(prop);
441
+ if (/children$/i.test(p))
442
+ return p.replace(/children$/i, "Child");
443
+ if (/ies$/i.test(p))
444
+ return p.replace(/ies$/i, "y");
445
+ if (/[^s]s$/i.test(p))
446
+ return p.slice(0, -1);
447
+ return `${p}Item`;
448
+ }
449
+ function vbString(s) {
450
+ return `"${s.replace(/"/g, '""')}"`;
451
+ }
452
+ function escapeXml(s) {
453
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
454
+ }
455
+ function xmlDoc(text, indent) {
456
+ if (!text)
457
+ return [];
458
+ const pad = " ".repeat(indent);
459
+ const lines = text.split(/\r?\n/);
460
+ if (lines.length === 1)
461
+ return [`${pad}''' <summary>${escapeXml(lines[0])}</summary>`];
462
+ return [`${pad}''' <summary>`, ...lines.map((l) => `${pad}''' ${escapeXml(l)}`), `${pad}''' </summary>`];
463
+ }
464
+ function describe(s) {
465
+ return JSON.stringify(s).slice(0, 120);
466
+ }
467
+ //# sourceMappingURL=emit-vb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-vb.js","sourceRoot":"","sources":["../src/emit-vb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /** エミッタが返すファイル。`path` は出力ディレクトリからの相対パス */
2
+ export interface EmittedFile {
3
+ path: string;
4
+ content: string;
5
+ }
6
+ //# sourceMappingURL=emitted.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitted.d.ts","sourceRoot":"","sources":["../src/emitted.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=emitted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitted.js","sourceRoot":"","sources":["../src/emitted.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { type EmitTsOptions } from "./emit-ts.js";
2
+ import { type EmitVbOptions } from "./emit-vb.js";
3
+ import { type ContractSchema } from "./schema.js";
4
+ export interface GenerateConfig {
5
+ /** zod 契約モジュール(`export const contract = defineContract(...)`) */
6
+ contract: string;
7
+ /** 契約モジュールの export 名(既定 "contract") */
8
+ contractExport?: string;
9
+ /** contract.schema.json の出力先 */
10
+ schemaOut: string;
11
+ ts?: {
12
+ outDir: string;
13
+ } & EmitTsOptions;
14
+ vb?: {
15
+ outDir: string;
16
+ } & EmitVbOptions & {
17
+ /**
18
+ * VB ランタイム(JsonRpc / Dispatcher / IBridgeEmitter)の書き出し先。
19
+ * 設定すると NuGet の WebView2Bridge.Runtime は不要(Contract プロジェクトには Newtonsoft.Json の参照だけが要る)。
20
+ * 省略時は書き出さない(同リポジトリで ProjectReference する場合や NuGet を使う場合)
21
+ */
22
+ runtime?: {
23
+ outDir: string;
24
+ };
25
+ /**
26
+ * WinForms 用 WebViewBridge の書き出し先(Host プロジェクト内)。
27
+ * 設定すると NuGet の WebView2Bridge.WinForms は不要(Host には Microsoft.Web.WebView2 の参照が要る)
28
+ */
29
+ winforms?: {
30
+ outDir: string;
31
+ };
32
+ };
33
+ }
34
+ export interface GenerateResult {
35
+ schema: ContractSchema;
36
+ /** 書き込んだ(または --check で比較した)ファイルの絶対パス */
37
+ files: string[];
38
+ /** --check 時: 内容が一致しなかったファイル */
39
+ stale: string[];
40
+ }
41
+ /** 契約を読み込み、schema → TS → VB を生成して書き出す */
42
+ export declare function generate(config: GenerateConfig, opts: {
43
+ cwd: string;
44
+ check?: boolean;
45
+ }): Promise<GenerateResult>;
46
+ export { emitVbRuntime, genPackageVersion, VB_RUNTIME_FILES, type VbRuntimeKind } from "./vb-runtime.js";
47
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAKA,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAIjE,MAAM,WAAW,cAAc;IAC7B,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;IACxC,EAAE,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,GAAG;QACxC;;;;WAIG;QACH,OAAO,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B;;;WAGG;QACH,QAAQ,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,wCAAwC;IACxC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gCAAgC;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAID,yCAAyC;AACzC,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAqDtH;AAwCD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC"}