tiptap-apcore 0.1.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 (70) hide show
  1. package/README.md +407 -0
  2. package/dist/builder/AnnotationCatalog.d.ts +22 -0
  3. package/dist/builder/AnnotationCatalog.d.ts.map +1 -0
  4. package/dist/builder/AnnotationCatalog.js +269 -0
  5. package/dist/builder/AnnotationCatalog.js.map +1 -0
  6. package/dist/builder/ModuleBuilder.d.ts +42 -0
  7. package/dist/builder/ModuleBuilder.d.ts.map +1 -0
  8. package/dist/builder/ModuleBuilder.js +106 -0
  9. package/dist/builder/ModuleBuilder.js.map +1 -0
  10. package/dist/builder/SchemaCatalog.d.ts +20 -0
  11. package/dist/builder/SchemaCatalog.d.ts.map +1 -0
  12. package/dist/builder/SchemaCatalog.js +352 -0
  13. package/dist/builder/SchemaCatalog.js.map +1 -0
  14. package/dist/builder/index.d.ts +4 -0
  15. package/dist/builder/index.d.ts.map +1 -0
  16. package/dist/builder/index.js +5 -0
  17. package/dist/builder/index.js.map +1 -0
  18. package/dist/discovery/ExtensionScanner.d.ts +25 -0
  19. package/dist/discovery/ExtensionScanner.d.ts.map +1 -0
  20. package/dist/discovery/ExtensionScanner.js +61 -0
  21. package/dist/discovery/ExtensionScanner.js.map +1 -0
  22. package/dist/discovery/index.d.ts +2 -0
  23. package/dist/discovery/index.d.ts.map +1 -0
  24. package/dist/discovery/index.js +3 -0
  25. package/dist/discovery/index.js.map +1 -0
  26. package/dist/errors/TiptapModuleError.d.ts +18 -0
  27. package/dist/errors/TiptapModuleError.d.ts.map +1 -0
  28. package/dist/errors/TiptapModuleError.js +23 -0
  29. package/dist/errors/TiptapModuleError.js.map +1 -0
  30. package/dist/errors/index.d.ts +2 -0
  31. package/dist/errors/index.d.ts.map +1 -0
  32. package/dist/errors/index.js +2 -0
  33. package/dist/errors/index.js.map +1 -0
  34. package/dist/index.d.ts +19 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +17 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/runtime/TiptapExecutor.d.ts +20 -0
  39. package/dist/runtime/TiptapExecutor.d.ts.map +1 -0
  40. package/dist/runtime/TiptapExecutor.js +327 -0
  41. package/dist/runtime/TiptapExecutor.js.map +1 -0
  42. package/dist/runtime/TiptapRegistry.d.ts +35 -0
  43. package/dist/runtime/TiptapRegistry.d.ts.map +1 -0
  44. package/dist/runtime/TiptapRegistry.js +100 -0
  45. package/dist/runtime/TiptapRegistry.js.map +1 -0
  46. package/dist/runtime/index.d.ts +3 -0
  47. package/dist/runtime/index.d.ts.map +1 -0
  48. package/dist/runtime/index.js +4 -0
  49. package/dist/runtime/index.js.map +1 -0
  50. package/dist/security/AclGuard.d.ts +10 -0
  51. package/dist/security/AclGuard.d.ts.map +1 -0
  52. package/dist/security/AclGuard.js +96 -0
  53. package/dist/security/AclGuard.js.map +1 -0
  54. package/dist/security/index.d.ts +2 -0
  55. package/dist/security/index.d.ts.map +1 -0
  56. package/dist/security/index.js +2 -0
  57. package/dist/security/index.js.map +1 -0
  58. package/dist/server.d.ts +10 -0
  59. package/dist/server.d.ts.map +1 -0
  60. package/dist/server.js +9 -0
  61. package/dist/server.js.map +1 -0
  62. package/dist/types.d.ts +116 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +8 -0
  65. package/dist/types.js.map +1 -0
  66. package/dist/withApcore.d.ts +14 -0
  67. package/dist/withApcore.d.ts.map +1 -0
  68. package/dist/withApcore.js +81 -0
  69. package/dist/withApcore.js.map +1 -0
  70. package/package.json +79 -0
@@ -0,0 +1,352 @@
1
+ /**
2
+ * SchemaCatalog: Static mapping of TipTap command names to JSON Schema
3
+ * input/output definitions.
4
+ *
5
+ * Every known command has explicit schemas with additionalProperties: false.
6
+ * Unknown commands fall back to a permissive default schema.
7
+ */
8
+ // ── Reusable schema fragments ──────────────────────────────────────────────
9
+ const SUCCESS_OUTPUT = Object.freeze({
10
+ type: "object",
11
+ properties: Object.freeze({ success: Object.freeze({ type: "boolean" }) }),
12
+ required: Object.freeze(["success"]),
13
+ });
14
+ const EMPTY_INPUT = Object.freeze({
15
+ type: "object",
16
+ properties: Object.freeze({}),
17
+ additionalProperties: false,
18
+ });
19
+ /** Shorthand for the most common pattern: {} -> {success: boolean} */
20
+ function simpleCommand() {
21
+ return { inputSchema: EMPTY_INPUT, outputSchema: SUCCESS_OUTPUT };
22
+ }
23
+ /** Builds a SchemaEntry with typed input properties. */
24
+ function entry(input, output) {
25
+ return { inputSchema: input, outputSchema: output };
26
+ }
27
+ /**
28
+ * Wraps properties + required into a strict object schema.
29
+ *
30
+ * For OpenAI strict mode compatibility, ALL property keys are listed
31
+ * in `required`. Properties not in the caller's `required` list are
32
+ * made nullable (type becomes [originalType, "null"]) so they can
33
+ * accept null as a value.
34
+ */
35
+ function inputSchema(properties, required = []) {
36
+ const allKeys = Object.keys(properties);
37
+ if (allKeys.length === 0) {
38
+ return { type: "object", properties: {}, additionalProperties: false };
39
+ }
40
+ const requiredSet = new Set(required);
41
+ const processed = {};
42
+ for (const [key, schema] of Object.entries(properties)) {
43
+ const strict = ensureStrictObject(schema);
44
+ if (requiredSet.has(key)) {
45
+ processed[key] = strict;
46
+ }
47
+ else {
48
+ processed[key] = makeNullable(strict);
49
+ }
50
+ }
51
+ return {
52
+ type: "object",
53
+ properties: processed,
54
+ required: allKeys,
55
+ additionalProperties: false,
56
+ };
57
+ }
58
+ /**
59
+ * Ensure bare { type: "object" } schemas have explicit properties and
60
+ * additionalProperties: false, as required by OpenAI strict mode.
61
+ */
62
+ function ensureStrictObject(schema) {
63
+ if (schema.type === "object" && !schema.properties) {
64
+ return { ...schema, properties: {}, additionalProperties: false };
65
+ }
66
+ return schema;
67
+ }
68
+ /** Make a schema accept null in addition to its original type. */
69
+ function makeNullable(schema) {
70
+ const copy = { ...schema };
71
+ if (typeof copy.type === "string") {
72
+ copy.type = [copy.type, "null"];
73
+ }
74
+ else if (copy.anyOf) {
75
+ copy.anyOf = [...copy.anyOf, { type: "null" }];
76
+ }
77
+ return copy;
78
+ }
79
+ // ── Catalog class ──────────────────────────────────────────────────────────
80
+ export class SchemaCatalog {
81
+ catalog;
82
+ static DEFAULT_ENTRY = {
83
+ inputSchema: { type: "object", additionalProperties: true },
84
+ outputSchema: SUCCESS_OUTPUT,
85
+ };
86
+ constructor() {
87
+ this.catalog = new Map();
88
+ this.populate();
89
+ }
90
+ /**
91
+ * Returns the SchemaEntry for the given command name.
92
+ * Falls back to a permissive default for unknown commands.
93
+ */
94
+ get(commandName) {
95
+ return this.catalog.get(commandName) ?? SchemaCatalog.DEFAULT_ENTRY;
96
+ }
97
+ // ── Private population ─────────────────────────────────────────────────
98
+ populate() {
99
+ // ── Query modules ────────────────────────────────────────────────────
100
+ this.catalog.set("getHTML", entry(EMPTY_INPUT, {
101
+ type: "object",
102
+ properties: { html: { type: "string" } },
103
+ required: ["html"],
104
+ }));
105
+ this.catalog.set("getJSON", entry(EMPTY_INPUT, {
106
+ type: "object",
107
+ properties: { json: { type: "object" } },
108
+ required: ["json"],
109
+ }));
110
+ this.catalog.set("getText", entry(inputSchema({ blockSeparator: { type: "string" } }), {
111
+ type: "object",
112
+ properties: { text: { type: "string" } },
113
+ required: ["text"],
114
+ }));
115
+ this.catalog.set("isActive", entry(inputSchema({
116
+ name: { type: "string" },
117
+ attrs: { type: "object" },
118
+ }, ["name"]), {
119
+ type: "object",
120
+ properties: { active: { type: "boolean" } },
121
+ required: ["active"],
122
+ }));
123
+ this.catalog.set("getAttributes", entry(inputSchema({ typeOrName: { type: "string" } }, ["typeOrName"]), {
124
+ type: "object",
125
+ properties: { attributes: { type: "object" } },
126
+ required: ["attributes"],
127
+ }));
128
+ // Boolean query commands
129
+ for (const cmd of ["isEmpty", "isEditable", "isFocused"]) {
130
+ this.catalog.set(cmd, entry(EMPTY_INPUT, {
131
+ type: "object",
132
+ properties: { value: { type: "boolean" } },
133
+ required: ["value"],
134
+ }));
135
+ }
136
+ // Count query commands
137
+ for (const cmd of ["getCharacterCount", "getWordCount"]) {
138
+ this.catalog.set(cmd, entry(EMPTY_INPUT, {
139
+ type: "object",
140
+ properties: { count: { type: "integer" } },
141
+ required: ["count"],
142
+ }));
143
+ }
144
+ // ── Format modules ───────────────────────────────────────────────────
145
+ // Simple toggles: {} -> {success: boolean}
146
+ const simpleToggles = [
147
+ "toggleBold",
148
+ "toggleItalic",
149
+ "toggleStrike",
150
+ "toggleCode",
151
+ "toggleUnderline",
152
+ "toggleSubscript",
153
+ "toggleSuperscript",
154
+ "toggleBulletList",
155
+ "toggleOrderedList",
156
+ "toggleTaskList",
157
+ "toggleBlockquote",
158
+ ];
159
+ for (const cmd of simpleToggles) {
160
+ this.catalog.set(cmd, simpleCommand());
161
+ }
162
+ this.catalog.set("toggleHighlight", entry(inputSchema({ color: { type: "string" } }), SUCCESS_OUTPUT));
163
+ this.catalog.set("toggleHeading", entry(inputSchema({
164
+ level: {
165
+ type: "integer",
166
+ minimum: 1,
167
+ maximum: 6,
168
+ },
169
+ }, ["level"]), SUCCESS_OUTPUT));
170
+ this.catalog.set("toggleCodeBlock", entry(inputSchema({ language: { type: "string" } }), SUCCESS_OUTPUT));
171
+ this.catalog.set("setTextAlign", entry(inputSchema({
172
+ alignment: {
173
+ type: "string",
174
+ enum: ["left", "center", "right", "justify"],
175
+ },
176
+ }, ["alignment"]), SUCCESS_OUTPUT));
177
+ this.catalog.set("setMark", entry(inputSchema({
178
+ typeOrName: { type: "string" },
179
+ attrs: { type: "object" },
180
+ }, ["typeOrName"]), SUCCESS_OUTPUT));
181
+ this.catalog.set("unsetMark", entry(inputSchema({ typeOrName: { type: "string" } }, ["typeOrName"]), SUCCESS_OUTPUT));
182
+ // Simple format commands with empty input
183
+ for (const cmd of [
184
+ "unsetAllMarks",
185
+ "clearNodes",
186
+ "setHardBreak",
187
+ "setHorizontalRule",
188
+ ]) {
189
+ this.catalog.set(cmd, simpleCommand());
190
+ }
191
+ this.catalog.set("updateAttributes", entry(inputSchema({
192
+ typeOrName: { type: "string" },
193
+ attrs: { type: "object" },
194
+ }, ["typeOrName", "attrs"]), SUCCESS_OUTPUT));
195
+ this.catalog.set("setLink", entry(inputSchema({
196
+ href: { type: "string" },
197
+ target: { type: "string" },
198
+ rel: { type: "string" },
199
+ }, ["href"]), SUCCESS_OUTPUT));
200
+ this.catalog.set("unsetLink", simpleCommand());
201
+ // Simple set/unset format commands
202
+ for (const cmd of [
203
+ "setBold",
204
+ "unsetBold",
205
+ "setItalic",
206
+ "unsetItalic",
207
+ "setStrike",
208
+ "unsetStrike",
209
+ "setCode",
210
+ "unsetCode",
211
+ "setBlockquote",
212
+ "unsetBlockquote",
213
+ "setParagraph",
214
+ ]) {
215
+ this.catalog.set(cmd, simpleCommand());
216
+ }
217
+ this.catalog.set("setHeading", entry(inputSchema({
218
+ level: {
219
+ type: "integer",
220
+ minimum: 1,
221
+ maximum: 6,
222
+ },
223
+ }, ["level"]), SUCCESS_OUTPUT));
224
+ // ── Content modules ──────────────────────────────────────────────────
225
+ this.catalog.set("insertContent", entry(inputSchema({
226
+ value: { type: "string" },
227
+ options: {
228
+ type: "object",
229
+ properties: {
230
+ parseOptions: {
231
+ type: "object",
232
+ properties: {
233
+ preserveWhitespace: { type: ["boolean", "null"] },
234
+ },
235
+ required: ["preserveWhitespace"],
236
+ additionalProperties: false,
237
+ },
238
+ updateSelection: { type: ["boolean", "null"] },
239
+ },
240
+ required: ["parseOptions", "updateSelection"],
241
+ additionalProperties: false,
242
+ },
243
+ }, ["value"]), SUCCESS_OUTPUT));
244
+ this.catalog.set("insertContentAt", entry(inputSchema({
245
+ position: { type: "integer", minimum: 0 },
246
+ value: { type: "string" },
247
+ options: { type: "object" },
248
+ }, ["position", "value"]), SUCCESS_OUTPUT));
249
+ this.catalog.set("setNode", entry(inputSchema({
250
+ typeOrName: { type: "string" },
251
+ attrs: { type: "object" },
252
+ }, ["typeOrName"]), SUCCESS_OUTPUT));
253
+ this.catalog.set("splitBlock", entry(inputSchema({ keepMarks: { type: "boolean" } }), SUCCESS_OUTPUT));
254
+ for (const cmd of ["liftListItem", "sinkListItem"]) {
255
+ this.catalog.set(cmd, entry(inputSchema({ typeOrName: { type: "string" } }, ["typeOrName"]), SUCCESS_OUTPUT));
256
+ }
257
+ this.catalog.set("wrapIn", entry(inputSchema({
258
+ typeOrName: { type: "string" },
259
+ attrs: { type: "object" },
260
+ }, ["typeOrName"]), SUCCESS_OUTPUT));
261
+ for (const cmd of ["joinBackward", "joinForward"]) {
262
+ this.catalog.set(cmd, simpleCommand());
263
+ }
264
+ this.catalog.set("lift", entry(inputSchema({
265
+ typeOrName: { type: "string" },
266
+ attrs: { type: "object" },
267
+ }, ["typeOrName"]), SUCCESS_OUTPUT));
268
+ this.catalog.set("splitListItem", entry(inputSchema({
269
+ typeOrName: { type: "string" },
270
+ overrideAttrs: { type: "object" },
271
+ }, ["typeOrName"]), SUCCESS_OUTPUT));
272
+ this.catalog.set("wrapInList", entry(inputSchema({
273
+ typeOrName: { type: "string" },
274
+ attributes: { type: "object" },
275
+ }, ["typeOrName"]), SUCCESS_OUTPUT));
276
+ this.catalog.set("toggleList", entry(inputSchema({
277
+ listTypeOrName: { type: "string" },
278
+ itemTypeOrName: { type: "string" },
279
+ keepMarks: { type: "boolean" },
280
+ attributes: { type: "object" },
281
+ }, ["listTypeOrName", "itemTypeOrName"]), SUCCESS_OUTPUT));
282
+ this.catalog.set("exitCode", simpleCommand());
283
+ this.catalog.set("deleteNode", entry(inputSchema({ typeOrName: { type: "string" } }, ["typeOrName"]), SUCCESS_OUTPUT));
284
+ // ── Destructive modules ──────────────────────────────────────────────
285
+ this.catalog.set("clearContent", entry(inputSchema({ emitUpdate: { type: "boolean" } }), SUCCESS_OUTPUT));
286
+ this.catalog.set("setContent", entry(inputSchema({
287
+ value: { type: "string" },
288
+ emitUpdate: { type: "boolean" },
289
+ parseOptions: { type: "object" },
290
+ }, ["value"]), SUCCESS_OUTPUT));
291
+ this.catalog.set("deleteSelection", simpleCommand());
292
+ this.catalog.set("deleteRange", entry(inputSchema({
293
+ from: { type: "integer", minimum: 0 },
294
+ to: { type: "integer", minimum: 0 },
295
+ }, ["from", "to"]), SUCCESS_OUTPUT));
296
+ this.catalog.set("deleteCurrentNode", simpleCommand());
297
+ this.catalog.set("cut", simpleCommand());
298
+ // ── Selection modules ────────────────────────────────────────────────
299
+ this.catalog.set("setTextSelection", entry(inputSchema({
300
+ position: {
301
+ anyOf: [
302
+ { type: "integer" },
303
+ {
304
+ type: "object",
305
+ properties: {
306
+ from: { type: "integer" },
307
+ to: { type: "integer" },
308
+ },
309
+ required: ["from", "to"],
310
+ additionalProperties: false,
311
+ },
312
+ ],
313
+ },
314
+ }, ["position"]), SUCCESS_OUTPUT));
315
+ this.catalog.set("setNodeSelection", entry(inputSchema({ position: { type: "integer", minimum: 0 } }, ["position"]), SUCCESS_OUTPUT));
316
+ // Custom APCore command (not native TipTap) — semantic text selection
317
+ this.catalog.set("selectText", entry(inputSchema({
318
+ text: { type: "string", description: "The text content to search for and select" },
319
+ occurrence: { type: "integer", minimum: 1, description: "Which occurrence to select (1-based, defaults to 1)" },
320
+ }, ["text"]), {
321
+ type: "object",
322
+ properties: {
323
+ found: { type: "boolean" },
324
+ from: { type: "integer" },
325
+ to: { type: "integer" },
326
+ },
327
+ required: ["found"],
328
+ }));
329
+ for (const cmd of [
330
+ "selectAll",
331
+ "selectParentNode",
332
+ "selectTextblockStart",
333
+ "selectTextblockEnd",
334
+ "blur",
335
+ "scrollIntoView",
336
+ ]) {
337
+ this.catalog.set(cmd, simpleCommand());
338
+ }
339
+ this.catalog.set("focus", entry(inputSchema({
340
+ position: {
341
+ anyOf: [
342
+ { type: "string", enum: ["start", "end", "all"] },
343
+ { type: "integer" },
344
+ ],
345
+ },
346
+ }), SUCCESS_OUTPUT));
347
+ // ── History modules ──────────────────────────────────────────────────
348
+ this.catalog.set("undo", simpleCommand());
349
+ this.catalog.set("redo", simpleCommand());
350
+ }
351
+ }
352
+ //# sourceMappingURL=SchemaCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaCatalog.js","sourceRoot":"","sources":["../../src/builder/SchemaCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,8EAA8E;AAE9E,MAAM,cAAc,GAAe,MAAM,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAC1E,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAe,MAAM,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B,oBAAoB,EAAE,KAAK;CAC5B,CAAC,CAAC;AAEH,sEAAsE;AACtE,SAAS,aAAa;IACpB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;AACpE,CAAC;AAED,wDAAwD;AACxD,SAAS,KAAK,CAAC,KAAiB,EAAE,MAAkB;IAClD,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AACtD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAClB,UAAsC,EACtC,WAAqB,EAAE;IAEvB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,SAAS,GAA+B,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,OAAO;QACjB,oBAAoB,EAAE,KAAK;KAC5B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,MAAkB;IAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACnD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kEAAkE;AAClE,SAAS,YAAY,CAAC,MAAkB;IACtC,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3B,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;SAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAI,IAAI,CAAC,KAAmB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAE9E,MAAM,OAAO,aAAa;IAChB,OAAO,CAA2B;IAElC,MAAM,CAAU,aAAa,GAAgB;QACnD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE;QAC3D,YAAY,EAAE,cAAc;KAC7B,CAAC;IAEF;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,WAAmB;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,aAAa,CAAC,aAAa,CAAC;IACtE,CAAC;IAED,0EAA0E;IAElE,QAAQ;QACd,wEAAwE;QAExE,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,SAAS,EACT,KAAK,CAAC,WAAW,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACxC,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,SAAS,EACT,KAAK,CAAC,WAAW,EAAE;YACjB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACxC,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,SAAS,EACT,KAAK,CACH,WAAW,CAAC,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EACnD;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YACxC,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB,CACF,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,UAAU,EACV,KAAK,CACH,WAAW,CACT;YACE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,EACD,CAAC,MAAM,CAAC,CACT,EACD;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;YAC3C,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB,CACF,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,eAAe,EACf,KAAK,CACH,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAC/D;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YAC9C,QAAQ,EAAE,CAAC,YAAY,CAAC;SACzB,CACF,CACF,CAAC;QAEF,yBAAyB;QACzB,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,EACH,KAAK,CAAC,WAAW,EAAE;gBACjB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;gBAC1C,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,KAAK,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,EACH,KAAK,CAAC,WAAW,EAAE;gBACjB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;gBAC1C,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,wEAAwE;QAExE,2CAA2C;QAC3C,MAAM,aAAa,GAAG;YACpB,YAAY;YACZ,cAAc;YACd,cAAc;YACd,YAAY;YACZ,iBAAiB;YACjB,iBAAiB;YACjB,mBAAmB;YACnB,kBAAkB;YAClB,mBAAmB;YACnB,gBAAgB;YAChB,kBAAkB;SACnB,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,iBAAiB,EACjB,KAAK,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,cAAc,CAAC,CAClE,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,eAAe,EACf,KAAK,CACH,WAAW,CACT;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;aACX;SACF,EACD,CAAC,OAAO,CAAC,CACV,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,iBAAiB,EACjB,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,cAAc,CAAC,CACrE,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,cAAc,EACd,KAAK,CACH,WAAW,CACT;YACE,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;aAC7C;SACF,EACD,CAAC,WAAW,CAAC,CACd,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,SAAS,EACT,KAAK,CACH,WAAW,CACT;YACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,EACD,CAAC,YAAY,CAAC,CACf,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,WAAW,EACX,KAAK,CACH,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAC/D,cAAc,CACf,CACF,CAAC;QAEF,0CAA0C;QAC1C,KAAK,MAAM,GAAG,IAAI;YAChB,eAAe;YACf,YAAY;YACZ,cAAc;YACd,mBAAmB;SACpB,EAAE,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,kBAAkB,EAClB,KAAK,CACH,WAAW,CACT;YACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,EACD,CAAC,YAAY,EAAE,OAAO,CAAC,CACxB,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,SAAS,EACT,KAAK,CACH,WAAW,CACT;YACE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACxB,EACD,CAAC,MAAM,CAAC,CACT,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;QAE/C,mCAAmC;QACnC,KAAK,MAAM,GAAG,IAAI;YAChB,SAAS;YACT,WAAW;YACX,WAAW;YACX,aAAa;YACb,WAAW;YACX,aAAa;YACb,SAAS;YACT,WAAW;YACX,eAAe;YACf,iBAAiB;YACjB,cAAc;SACf,EAAE,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,EACZ,KAAK,CACH,WAAW,CACT;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;aACX;SACF,EACD,CAAC,OAAO,CAAC,CACV,EACD,cAAc,CACf,CACF,CAAC;QAEF,wEAAwE;QAExE,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,eAAe,EACf,KAAK,CACH,WAAW,CACT;YACE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,YAAY,EAAE;wBACZ,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;yBAClD;wBACD,QAAQ,EAAE,CAAC,oBAAoB,CAAC;wBAChC,oBAAoB,EAAE,KAAK;qBAC5B;oBACD,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;iBAC/C;gBACD,QAAQ,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC;gBAC7C,oBAAoB,EAAE,KAAK;aAC5B;SACF,EACD,CAAC,OAAO,CAAC,CACV,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,iBAAiB,EACjB,KAAK,CACH,WAAW,CACT;YACE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;YACzC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC5B,EACD,CAAC,UAAU,EAAE,OAAO,CAAC,CACtB,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,SAAS,EACT,KAAK,CACH,WAAW,CACT;YACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,EACD,CAAC,YAAY,CAAC,CACf,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,EACZ,KAAK,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,cAAc,CAAC,CACvE,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,GAAG,EACH,KAAK,CACH,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAC/D,cAAc,CACf,CACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,QAAQ,EACR,KAAK,CACH,WAAW,CACT;YACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,EACD,CAAC,YAAY,CAAC,CACf,EACD,cAAc,CACf,CACF,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,MAAM,EACN,KAAK,CACH,WAAW,CACT;YACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,EACD,CAAC,YAAY,CAAC,CACf,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,eAAe,EACf,KAAK,CACH,WAAW,CACT;YACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAClC,EACD,CAAC,YAAY,CAAC,CACf,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,EACZ,KAAK,CACH,WAAW,CACT;YACE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC/B,EACD,CAAC,YAAY,CAAC,CACf,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,EACZ,KAAK,CACH,WAAW,CACT;YACE,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClC,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAClC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC/B,EACD,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CACrC,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,EACZ,KAAK,CACH,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAC/D,cAAc,CACf,CACF,CAAC;QAEF,wEAAwE;QAExE,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,cAAc,EACd,KAAK,CACH,WAAW,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,EAChD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,EACZ,KAAK,CACH,WAAW,CACT;YACE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC/B,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACjC,EACD,CAAC,OAAO,CAAC,CACV,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,aAAa,EACb,KAAK,CACH,WAAW,CACT;YACE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;YACrC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE;SACpC,EACD,CAAC,MAAM,EAAE,IAAI,CAAC,CACf,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,aAAa,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;QAEzC,wEAAwE;QAExE,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,kBAAkB,EAClB,KAAK,CACH,WAAW,CACT;YACE,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,SAAS,EAAE;oBACnB;wBACE,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BACzB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;yBACxB;wBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;wBACxB,oBAAoB,EAAE,KAAK;qBAC5B;iBACF;aACF;SACF,EACD,CAAC,UAAU,CAAC,CACb,EACD,cAAc,CACf,CACF,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,kBAAkB,EAClB,KAAK,CACH,WAAW,CACT,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAC7C,CAAC,UAAU,CAAC,CACb,EACD,cAAc,CACf,CACF,CAAC;QAEF,sEAAsE;QACtE,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,YAAY,EACZ,KAAK,CACH,WAAW,CACT;YACE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;YAClF,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,qDAAqD,EAAE;SAChH,EACD,CAAC,MAAM,CAAC,CACT,EACD;YACE,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACzB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aACxB;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CACF,CACF,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI;YAChB,WAAW;YACX,kBAAkB;YAClB,sBAAsB;YACtB,oBAAoB;YACpB,MAAM;YACN,gBAAgB;SACjB,EAAE,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,GAAG,CACd,OAAO,EACP,KAAK,CACH,WAAW,CAAC;YACV,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;oBACjD,EAAE,IAAI,EAAE,SAAS,EAAE;iBACpB;aACF;SACF,CAAC,EACF,cAAc,CACf,CACF,CAAC;QAEF,wEAAwE;QAExE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC5C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { AnnotationCatalog } from "./AnnotationCatalog.js";
2
+ export { SchemaCatalog } from "./SchemaCatalog.js";
3
+ export { ModuleBuilder } from "./ModuleBuilder.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Builder layer - ModuleBuilder, AnnotationCatalog, SchemaCatalog (Tasks 3-5)
2
+ export { AnnotationCatalog } from "./AnnotationCatalog.js";
3
+ export { SchemaCatalog } from "./SchemaCatalog.js";
4
+ export { ModuleBuilder } from "./ModuleBuilder.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { ExtensionCommandInfo, Logger } from "../types.js";
2
+ /** The minimal Editor interface we need for scanning */
3
+ interface ScannerEditorLike {
4
+ extensionManager: {
5
+ extensions: Array<{
6
+ name: string;
7
+ type: string;
8
+ addCommands?: () => Record<string, unknown>;
9
+ config?: {
10
+ addCommands?: () => Record<string, unknown>;
11
+ [key: string]: unknown;
12
+ };
13
+ options?: Record<string, unknown>;
14
+ storage?: Record<string, unknown>;
15
+ }>;
16
+ };
17
+ commands: Record<string, unknown>;
18
+ }
19
+ export declare class ExtensionScanner {
20
+ private logger;
21
+ constructor(logger?: Logger);
22
+ scan(editor: ScannerEditorLike): Map<string, ExtensionCommandInfo>;
23
+ }
24
+ export {};
25
+ //# sourceMappingURL=ExtensionScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionScanner.d.ts","sourceRoot":"","sources":["../../src/discovery/ExtensionScanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEhE,wDAAwD;AACxD,UAAU,iBAAiB;IACzB,gBAAgB,EAAE;QAChB,UAAU,EAAE,KAAK,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5C,MAAM,CAAC,EAAE;gBACP,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aACxB,CAAC;YACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACnC,CAAC,CAAC;KACJ,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAaD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,CAAC,EAAE,MAAM;IAI3B,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC;CAoDnE"}
@@ -0,0 +1,61 @@
1
+ /** Built-in methods available on every TipTap editor */
2
+ const BUILTIN_QUERIES = [
3
+ "getHTML", "getJSON", "getText", "isActive", "getAttributes",
4
+ "isEmpty", "isEditable", "isFocused",
5
+ ];
6
+ /** Built-in selection methods provided by apcore (not from extensions) */
7
+ const BUILTIN_SELECTIONS = [
8
+ "selectText",
9
+ ];
10
+ export class ExtensionScanner {
11
+ logger;
12
+ constructor(logger) {
13
+ this.logger = logger;
14
+ }
15
+ scan(editor) {
16
+ const result = new Map();
17
+ // Scan each extension for commands
18
+ for (const extension of editor.extensionManager.extensions) {
19
+ const extensionName = extension.name;
20
+ const extensionType = extension.type ?? "extension";
21
+ let commandNames = [];
22
+ // Try to get commands from extension.
23
+ // TipTap v2 stores addCommands on extension.config (runtime instances),
24
+ // while direct Extension objects may have it as a direct method.
25
+ const addCommandsFn = (typeof extension.addCommands === "function" ? extension.addCommands : null) ??
26
+ (extension.config && typeof extension.config.addCommands === "function"
27
+ ? extension.config.addCommands
28
+ : null);
29
+ if (addCommandsFn) {
30
+ try {
31
+ // H-3: Bind extension as `this` when calling addCommands
32
+ const commands = addCommandsFn.call(extension);
33
+ if (commands && typeof commands === "object") {
34
+ commandNames = Object.keys(commands);
35
+ }
36
+ }
37
+ catch (err) {
38
+ // H-12: Log instead of silently swallowing
39
+ this.logger?.warn(`Failed to scan extension '${extensionName}'`, {
40
+ error: err instanceof Error ? err.message : String(err),
41
+ });
42
+ }
43
+ }
44
+ if (commandNames.length > 0) {
45
+ result.set(extensionName, {
46
+ extensionName,
47
+ commandNames,
48
+ extensionType,
49
+ });
50
+ }
51
+ }
52
+ // Add built-in query methods
53
+ result.set("__builtin__", {
54
+ extensionName: "__builtin__",
55
+ commandNames: [...BUILTIN_QUERIES, ...BUILTIN_SELECTIONS],
56
+ extensionType: "extension",
57
+ });
58
+ return result;
59
+ }
60
+ }
61
+ //# sourceMappingURL=ExtensionScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExtensionScanner.js","sourceRoot":"","sources":["../../src/discovery/ExtensionScanner.ts"],"names":[],"mappings":"AAoBA,wDAAwD;AACxD,MAAM,eAAe,GAAG;IACtB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe;IAC5D,SAAS,EAAE,YAAY,EAAE,WAAW;CACrC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG;IACzB,YAAY;CACb,CAAC;AAEF,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAqB;IAEnC,YAAY,MAAe;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,MAAyB;QAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;QAEvD,mCAAmC;QACnC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;YAC3D,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC;YACrC,MAAM,aAAa,GAAI,SAAS,CAAC,IAAsC,IAAI,WAAW,CAAC;YAEvF,IAAI,YAAY,GAAa,EAAE,CAAC;YAEhC,sCAAsC;YACtC,wEAAwE;YACxE,iEAAiE;YACjE,MAAM,aAAa,GACjB,CAAC,OAAO,SAAS,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC5E,CAAC,SAAS,CAAC,MAAM,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,WAAW,KAAK,UAAU;oBACrE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW;oBAC9B,CAAC,CAAC,IAAI,CAAC,CAAC;YAEZ,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,yDAAyD;oBACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC/C,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBAC7C,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,2CAA2C;oBAC3C,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,6BAA6B,aAAa,GAAG,EAAE;wBAC/D,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACxD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;oBACxB,aAAa;oBACb,YAAY;oBACZ,aAAa;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE;YACxB,aAAa,EAAE,aAAa;YAC5B,YAAY,EAAE,CAAC,GAAG,eAAe,EAAE,GAAG,kBAAkB,CAAC;YACzD,aAAa,EAAE,WAAW;SAC3B,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { ExtensionScanner } from "./ExtensionScanner.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // Discovery layer
2
+ export { ExtensionScanner } from "./ExtensionScanner.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,kBAAkB;AAClB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * TiptapModuleError - structured error class for tiptap-apcore.
3
+ */
4
+ export declare class TiptapModuleError extends Error {
5
+ readonly code: string;
6
+ readonly details: Record<string, unknown> | null;
7
+ constructor(code: string, message: string, details?: Record<string, unknown>);
8
+ }
9
+ export declare const ErrorCodes: {
10
+ readonly MODULE_NOT_FOUND: "MODULE_NOT_FOUND";
11
+ readonly COMMAND_NOT_FOUND: "COMMAND_NOT_FOUND";
12
+ readonly SCHEMA_VALIDATION_ERROR: "SCHEMA_VALIDATION_ERROR";
13
+ readonly ACL_DENIED: "ACL_DENIED";
14
+ readonly EDITOR_NOT_READY: "EDITOR_NOT_READY";
15
+ readonly COMMAND_FAILED: "COMMAND_FAILED";
16
+ readonly INTERNAL_ERROR: "INTERNAL_ERROR";
17
+ };
18
+ //# sourceMappingURL=TiptapModuleError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TiptapModuleError.d.ts","sourceRoot":"","sources":["../../src/errors/TiptapModuleError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;gBAG/C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOpC;AAED,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * TiptapModuleError - structured error class for tiptap-apcore.
3
+ */
4
+ export class TiptapModuleError extends Error {
5
+ code;
6
+ details;
7
+ constructor(code, message, details) {
8
+ super(message);
9
+ this.name = "ModuleError";
10
+ this.code = code;
11
+ this.details = details ?? null;
12
+ }
13
+ }
14
+ export const ErrorCodes = {
15
+ MODULE_NOT_FOUND: "MODULE_NOT_FOUND",
16
+ COMMAND_NOT_FOUND: "COMMAND_NOT_FOUND",
17
+ SCHEMA_VALIDATION_ERROR: "SCHEMA_VALIDATION_ERROR",
18
+ ACL_DENIED: "ACL_DENIED",
19
+ EDITOR_NOT_READY: "EDITOR_NOT_READY",
20
+ COMMAND_FAILED: "COMMAND_FAILED",
21
+ INTERNAL_ERROR: "INTERNAL_ERROR",
22
+ };
23
+ //# sourceMappingURL=TiptapModuleError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TiptapModuleError.js","sourceRoot":"","sources":["../../src/errors/TiptapModuleError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACjC,IAAI,CAAS;IACb,OAAO,CAAiC;IAEjD,YACE,IAAY,EACZ,OAAe,EACf,OAAiC;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC;IACjC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,uBAAuB,EAAE,yBAAyB;IAClD,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;CACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { TiptapModuleError, ErrorCodes } from "./TiptapModuleError.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { TiptapModuleError, ErrorCodes } from "./TiptapModuleError.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * tiptap-apcore: Let AI safely control your TipTap editor.
3
+ *
4
+ * Public API:
5
+ * - withApcore(editor, options?) - Create APCore Registry + Executor from a TipTap editor
6
+ *
7
+ * Server-only (import from "tiptap-apcore/server"):
8
+ * - serve(registryOrExecutor, options?) - Launch an MCP Server
9
+ * - toOpenaiTools(registryOrExecutor, options?) - Export OpenAI tool definitions
10
+ */
11
+ export { withApcore } from "./withApcore.js";
12
+ export type { ApcoreOptions, ApcoreResult, AclConfig, ExtensionCommandInfo, AnnotationEntry, SelectionEffect, SchemaEntry, Logger, EditorLike, ChainLike, Registry, Executor, ModuleDescriptor, ModuleAnnotations, JsonSchema, } from "./types.js";
13
+ export { TiptapModuleError, ErrorCodes } from "./errors/index.js";
14
+ export { TiptapRegistry } from "./runtime/index.js";
15
+ export { TiptapExecutor } from "./runtime/index.js";
16
+ export { AclGuard } from "./security/index.js";
17
+ export type { ServeOptions, ToOpenaiToolsOptions, RegistryOrExecutor, OpenAIToolDef } from "apcore-mcp";
18
+ export { REGISTRY_EVENTS, MODULE_ID_PATTERN } from "apcore-mcp";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,WAAW,EACX,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * tiptap-apcore: Let AI safely control your TipTap editor.
3
+ *
4
+ * Public API:
5
+ * - withApcore(editor, options?) - Create APCore Registry + Executor from a TipTap editor
6
+ *
7
+ * Server-only (import from "tiptap-apcore/server"):
8
+ * - serve(registryOrExecutor, options?) - Launch an MCP Server
9
+ * - toOpenaiTools(registryOrExecutor, options?) - Export OpenAI tool definitions
10
+ */
11
+ export { withApcore } from "./withApcore.js";
12
+ export { TiptapModuleError, ErrorCodes } from "./errors/index.js";
13
+ export { TiptapRegistry } from "./runtime/index.js";
14
+ export { TiptapExecutor } from "./runtime/index.js";
15
+ export { AclGuard } from "./security/index.js";
16
+ export { REGISTRY_EVENTS, MODULE_ID_PATTERN } from "apcore-mcp";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkB7C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}