@xlr-lib/xlr-converters 0.1.1-next.4 → 0.1.1-next.6

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.
@@ -34,12 +34,269 @@ __export(src_exports, {
34
34
  TSWriter: () => TSWriter,
35
35
  TsConverter: () => TsConverter,
36
36
  converter: () => converter,
37
+ exportTypesToTypeScript: () => exportTypesToTypeScript,
37
38
  writeManifest: () => writeManifest
38
39
  });
39
40
  module.exports = __toCommonJS(src_exports);
40
41
 
41
42
  // ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/converters/src/ts/ts-to-xlr.ts
43
+ var import_typescript3 = __toESM(require("typescript"));
44
+
45
+ // ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/converters/src/ts/ts-utils.ts
42
46
  var import_typescript = __toESM(require("typescript"));
47
+ function isOptionalProperty(node) {
48
+ return node.questionToken?.kind === import_typescript.default.SyntaxKind.QuestionToken;
49
+ }
50
+ function isGenericInterfaceDeclaration(node) {
51
+ const length = node.typeParameters?.length;
52
+ return length ? length > 0 : false;
53
+ }
54
+ function isGenericTypeDeclaration(node) {
55
+ const length = node.typeParameters?.length;
56
+ return length ? length > 0 : false;
57
+ }
58
+ function isTypeReferenceGeneric(node, typeChecker) {
59
+ const symbol = typeChecker.getSymbolAtLocation(node.typeName);
60
+ if (symbol && symbol.declarations) {
61
+ return symbol.declarations[0].kind === import_typescript.default.SyntaxKind.TypeParameter;
62
+ }
63
+ return false;
64
+ }
65
+ function isTopLevelDeclaration(node) {
66
+ return node.kind === import_typescript.default.SyntaxKind.InterfaceDeclaration || node.kind === import_typescript.default.SyntaxKind.TypeAliasDeclaration;
67
+ }
68
+ function isTopLevelNode(node) {
69
+ return node.kind === import_typescript.default.SyntaxKind.InterfaceDeclaration || node.kind === import_typescript.default.SyntaxKind.TypeAliasDeclaration || node.kind === import_typescript.default.SyntaxKind.VariableStatement;
70
+ }
71
+ function tsStripOptionalType(node) {
72
+ return import_typescript.default.isOptionalTypeNode(node) ? node.type : node;
73
+ }
74
+ function isExportedDeclaration(node) {
75
+ const modifiers = import_typescript.default.canHaveModifiers(node) ? import_typescript.default.getModifiers(node) : void 0;
76
+ if (modifiers) {
77
+ return modifiers.some((m) => m.kind === import_typescript.default.SyntaxKind.ExportKeyword);
78
+ }
79
+ return false;
80
+ }
81
+ function isNodeExported(node) {
82
+ return (import_typescript.default.getCombinedModifierFlags(node) & import_typescript.default.ModifierFlags.Export) !== 0 || !!node.parent && node.parent.kind === import_typescript.default.SyntaxKind.SourceFile;
83
+ }
84
+ function getReferencedType(node, typeChecker) {
85
+ let symbol = typeChecker.getSymbolAtLocation(node.typeName);
86
+ if (symbol && (symbol.flags & import_typescript.default.SymbolFlags.Alias) === import_typescript.default.SymbolFlags.Alias) {
87
+ symbol = typeChecker.getAliasedSymbol(symbol);
88
+ }
89
+ const varDecl = symbol?.declarations?.[0];
90
+ if (varDecl && (import_typescript.default.isInterfaceDeclaration(varDecl) || import_typescript.default.isTypeAliasDeclaration(varDecl))) {
91
+ return { declaration: varDecl, exported: isNodeExported(varDecl) };
92
+ }
93
+ }
94
+ function isTypeScriptLibType(node, typeChecker) {
95
+ let symbol = typeChecker.getSymbolAtLocation(node.typeName);
96
+ if (!symbol) return false;
97
+ if ((symbol.flags & import_typescript.default.SymbolFlags.Alias) === import_typescript.default.SymbolFlags.Alias) {
98
+ symbol = typeChecker.getAliasedSymbol(symbol);
99
+ }
100
+ const declarations = symbol.getDeclarations();
101
+ if (!declarations || declarations.length === 0) return false;
102
+ return declarations.some((decl) => {
103
+ const sourceFile = decl.getSourceFile();
104
+ if (!sourceFile) return false;
105
+ const filePath = sourceFile.fileName;
106
+ return filePath.includes("/typescript/lib/") || filePath.includes("\\typescript\\lib\\") || filePath.endsWith(".d.ts") && filePath.includes("lib.");
107
+ });
108
+ }
109
+ function getStringLiteralsFromUnion(node) {
110
+ if (import_typescript.default.isUnionTypeNode(node)) {
111
+ return new Set(
112
+ node.types.map((type) => {
113
+ if (import_typescript.default.isLiteralTypeNode(type) && import_typescript.default.isStringLiteral(type.literal)) {
114
+ return type.literal.text;
115
+ }
116
+ return "";
117
+ })
118
+ );
119
+ }
120
+ if (import_typescript.default.isLiteralTypeNode(node) && import_typescript.default.isStringLiteral(node.literal)) {
121
+ return /* @__PURE__ */ new Set([node.literal.text]);
122
+ }
123
+ return /* @__PURE__ */ new Set();
124
+ }
125
+ function buildTemplateRegex(node, typeChecker) {
126
+ let regex = node.head.text;
127
+ node.templateSpans.forEach((span) => {
128
+ let type = span.type.kind;
129
+ if (import_typescript.default.isTypeReferenceNode(span.type)) {
130
+ let symbol = typeChecker.getSymbolAtLocation(
131
+ span.type.typeName
132
+ );
133
+ if (symbol && (symbol.flags & import_typescript.default.SymbolFlags.Alias) === import_typescript.default.SymbolFlags.Alias) {
134
+ symbol = typeChecker.getAliasedSymbol(symbol);
135
+ }
136
+ type = (symbol?.declarations?.[0]).type.kind;
137
+ }
138
+ if (type === import_typescript.default.SyntaxKind.StringKeyword) {
139
+ regex += ".*";
140
+ } else if (type === import_typescript.default.SyntaxKind.NumberKeyword) {
141
+ regex += "[0-9]*";
142
+ } else if (type === import_typescript.default.SyntaxKind.BooleanKeyword) {
143
+ regex += "true|false";
144
+ }
145
+ regex += span.literal.text;
146
+ });
147
+ return regex;
148
+ }
149
+ function isExportedModuleDeclaration(node) {
150
+ return isExportedDeclaration(node) && import_typescript.default.isModuleDeclaration(node);
151
+ }
152
+
153
+ // ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/converters/src/ts/annotations.ts
154
+ var import_typescript2 = __toESM(require("typescript"));
155
+ function extractDescription(text) {
156
+ if (!text) {
157
+ return {};
158
+ }
159
+ return { description: text };
160
+ }
161
+ function parentIsNonObjectPath(node) {
162
+ return node.parent && (import_typescript2.default.isArrayTypeNode(node.parent) || import_typescript2.default.isTupleTypeNode(node.parent) || import_typescript2.default.isOptionalTypeNode(node.parent) || import_typescript2.default.isRestTypeNode(node.parent) || import_typescript2.default.isUnionTypeNode(node.parent));
163
+ }
164
+ function recurseTypeChain(node, child) {
165
+ if (!node) {
166
+ return [];
167
+ }
168
+ if (import_typescript2.default.isArrayTypeNode(node) && node.parent && import_typescript2.default.isRestTypeNode(node.parent)) {
169
+ return recurseTypeChain(node.parent, node);
170
+ }
171
+ if (import_typescript2.default.isRestTypeNode(node)) {
172
+ return recurseTypeChain(node.parent, node);
173
+ }
174
+ if (import_typescript2.default.isOptionalTypeNode(node)) {
175
+ return recurseTypeChain(node.parent, node);
176
+ }
177
+ if (import_typescript2.default.isUnionTypeNode(node)) {
178
+ return recurseTypeChain(node.parent, node);
179
+ }
180
+ if (import_typescript2.default.isParenthesizedTypeNode(node)) {
181
+ return recurseTypeChain(node.parent, node);
182
+ }
183
+ if (import_typescript2.default.isTypeLiteralNode(node)) {
184
+ return recurseTypeChain(node.parent, node);
185
+ }
186
+ if (import_typescript2.default.isArrayTypeNode(node)) {
187
+ return ["[]", ...recurseTypeChain(node.parent, node)];
188
+ }
189
+ if (import_typescript2.default.isTupleTypeNode(node)) {
190
+ const pos = node.elements.indexOf(child);
191
+ return [
192
+ ...pos === -1 ? [] : [`${pos}`],
193
+ ...recurseTypeChain(node.parent, node)
194
+ ];
195
+ }
196
+ if (import_typescript2.default.isTypeAliasDeclaration(node) || import_typescript2.default.isInterfaceDeclaration(node) || import_typescript2.default.isPropertySignature(node)) {
197
+ return [node.name.getText(), ...recurseTypeChain(node.parent, node)];
198
+ }
199
+ if (parentIsNonObjectPath(node)) {
200
+ return recurseTypeChain(node.parent, node);
201
+ }
202
+ return [];
203
+ }
204
+ function extractTitle(node) {
205
+ const typeNames = recurseTypeChain(node, void 0).reverse().join(".");
206
+ if (!typeNames.length) {
207
+ return {};
208
+ }
209
+ return { title: typeNames };
210
+ }
211
+ function stringifyDoc(docString) {
212
+ if (typeof docString === "undefined" || typeof docString === "string") {
213
+ return docString;
214
+ }
215
+ return docString.map(({ text }) => text).join(" ");
216
+ }
217
+ function extractTags(tags) {
218
+ const descriptions = [];
219
+ const examples = [];
220
+ const _default = [];
221
+ const see = [];
222
+ const meta = {};
223
+ const extractSee = (tag) => {
224
+ return `${tag.tagName ? `${tag.tagName?.getText()} ` : ""}${stringifyDoc(tag.comment)?.trim() ?? ""}`;
225
+ };
226
+ tags.forEach((tag) => {
227
+ if (!tag.comment) {
228
+ return;
229
+ }
230
+ if (tag.tagName.text === "example") {
231
+ examples.push(stringifyDoc(tag.comment)?.trim() ?? "");
232
+ } else if (tag.tagName.text === "default") {
233
+ _default.push(stringifyDoc(tag.comment)?.trim() ?? "");
234
+ } else if (tag.tagName.text === "see") {
235
+ see.push(extractSee(tag));
236
+ } else if (tag.tagName.text === "meta") {
237
+ const [key, value] = tag.comment.toString().split(/:(.*)/);
238
+ meta[key] = value?.trim() ?? "";
239
+ } else {
240
+ const text = stringifyDoc(tag.comment)?.trim() ?? "";
241
+ descriptions.push(`@${tag.tagName.text} ${text}`);
242
+ }
243
+ });
244
+ return {
245
+ ...descriptions.length === 0 ? {} : { description: descriptions.join("\n") },
246
+ ...examples.length === 0 ? {} : { examples },
247
+ ..._default.length === 0 ? {} : { default: _default.join("\n") },
248
+ ...see.length === 0 ? {} : { see },
249
+ ...meta && Object.keys(meta).length === 0 ? {} : { meta }
250
+ };
251
+ }
252
+ function join(t, separator = "\n") {
253
+ const unique = new Set(t).values();
254
+ return Array.from(unique).filter((s) => s !== void 0).join(separator).trim();
255
+ }
256
+ function mergeAnnotations(nodes) {
257
+ const name = nodes.find((n) => n.name)?.name;
258
+ const title = join(
259
+ nodes.map((n) => n.title),
260
+ ", "
261
+ );
262
+ const description = join(nodes.map((n) => n.description));
263
+ const _default = join(nodes.map((n) => n.default));
264
+ const comment = join(nodes.map((n) => n.comment));
265
+ const examples = join(
266
+ nodes.map(
267
+ (n) => Array.isArray(n.examples) ? join(n.examples) : n.examples
268
+ )
269
+ );
270
+ const see = join(
271
+ nodes.map((n) => Array.isArray(n.see) ? join(n.see) : n.see)
272
+ );
273
+ const meta = nodes.find((n) => n.meta)?.meta;
274
+ return {
275
+ ...name ? { name } : {},
276
+ ...title ? { title } : {},
277
+ ...description ? { description } : {},
278
+ ...examples ? { examples } : {},
279
+ ..._default ? { default: _default } : {},
280
+ ...see ? { see } : {},
281
+ ...comment ? { comment } : {},
282
+ ...meta ? { meta } : {}
283
+ };
284
+ }
285
+ function decorateNode(node) {
286
+ const { jsDoc } = node;
287
+ const titleAnnotation = extractTitle(node);
288
+ if (jsDoc && jsDoc.length) {
289
+ const first = jsDoc[0];
290
+ return mergeAnnotations([
291
+ extractDescription(stringifyDoc(first.comment)),
292
+ titleAnnotation,
293
+ extractTags(first.tags ?? [])
294
+ ]);
295
+ }
296
+ return titleAnnotation;
297
+ }
298
+
299
+ // ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/converters/src/ts/ts-to-xlr.ts
43
300
  var import_xlr_utils = require("@xlr-lib/xlr-utils");
44
301
 
45
302
  // ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/converters/src/types.ts
@@ -58,7 +315,7 @@ function isMappedTypeNode(x) {
58
315
  return ["Pick", "Omit", "Required", "Partial", "Exclude"].includes(x);
59
316
  }
60
317
  function getPropertyNameText(name) {
61
- if (import_typescript.default.isIdentifier(name) || import_typescript.default.isStringLiteral(name) || import_typescript.default.isNumericLiteral(name)) {
318
+ if (import_typescript3.default.isIdentifier(name) || import_typescript3.default.isStringLiteral(name) || import_typescript3.default.isNumericLiteral(name)) {
62
319
  return name.text;
63
320
  }
64
321
  return name.getText();
@@ -83,11 +340,11 @@ var TsConverter = class {
83
340
  }
84
341
  /** Converts all exported objects to a XLR representation */
85
342
  convertSourceFile(sourceFile) {
86
- const declarations = sourceFile.statements.filter(import_xlr_utils.isTopLevelNode);
87
- const namespacedTypes = sourceFile.statements.filter((s) => (0, import_xlr_utils.isExportedModuleDeclaration)(s)).flatMap((module2) => {
88
- if (module2.body && import_typescript.default.isModuleBlock(module2.body)) {
343
+ const declarations = sourceFile.statements.filter(isTopLevelNode);
344
+ const namespacedTypes = sourceFile.statements.filter((s) => isExportedModuleDeclaration(s)).flatMap((module2) => {
345
+ if (module2.body && import_typescript3.default.isModuleBlock(module2.body)) {
89
346
  const nameSpaceName = module2.name.text;
90
- return module2.body.statements.filter(import_xlr_utils.isExportedDeclaration).filter(import_xlr_utils.isTopLevelNode).map((statement) => {
347
+ return module2.body.statements.filter(isExportedDeclaration).filter(isTopLevelNode).map((statement) => {
91
348
  const convertedNode = this.convertTopLevelNode(statement);
92
349
  return {
93
350
  ...convertedNode,
@@ -97,7 +354,7 @@ var TsConverter = class {
97
354
  }
98
355
  return [];
99
356
  });
100
- const types = declarations.filter((declaration) => (0, import_xlr_utils.isExportedDeclaration)(declaration)).map((statement) => this.convertTopLevelNode(statement)).filter((v) => !!v);
357
+ const types = declarations.filter((declaration) => isExportedDeclaration(declaration)).map((statement) => this.convertTopLevelNode(statement)).filter((v) => !!v);
101
358
  types.push(...namespacedTypes);
102
359
  return {
103
360
  data: { version: 1, types },
@@ -107,7 +364,7 @@ var TsConverter = class {
107
364
  convertTopLevelNode(node) {
108
365
  const sourceFile = node.parent;
109
366
  const { fileName } = sourceFile;
110
- if (import_typescript.default.isVariableStatement(node)) {
367
+ if (import_typescript3.default.isVariableStatement(node)) {
111
368
  return {
112
369
  source: fileName,
113
370
  ...this.convertVariable(node)
@@ -120,28 +377,28 @@ var TsConverter = class {
120
377
  }
121
378
  /** Converts a single type/interface declaration to XLRs */
122
379
  convertDeclaration(node) {
123
- if (import_typescript.default.isTypeAliasDeclaration(node)) {
380
+ if (import_typescript3.default.isTypeAliasDeclaration(node)) {
124
381
  let genericTokens;
125
- if ((0, import_xlr_utils.isGenericTypeDeclaration)(node)) {
382
+ if (isGenericTypeDeclaration(node)) {
126
383
  genericTokens = this.generateGenerics(node.typeParameters);
127
384
  }
128
385
  return {
129
386
  name: node.name.getText(),
130
387
  ...this.convertTsTypeNode(node.type) ?? AnyTypeNode,
131
- ...(0, import_xlr_utils.decorateNode)(node),
388
+ ...decorateNode(node),
132
389
  genericTokens
133
390
  };
134
391
  }
135
- if (import_typescript.default.isInterfaceDeclaration(node)) {
392
+ if (import_typescript3.default.isInterfaceDeclaration(node)) {
136
393
  let genericTokens;
137
- if ((0, import_xlr_utils.isGenericInterfaceDeclaration)(node)) {
394
+ if (isGenericInterfaceDeclaration(node)) {
138
395
  genericTokens = this.generateGenerics(node.typeParameters);
139
396
  }
140
397
  const baseObject = {
141
398
  name: node.name.getText(),
142
399
  type: "object",
143
400
  ...this.tsObjectMembersToProperties(node),
144
- ...(0, import_xlr_utils.decorateNode)(node),
401
+ ...decorateNode(node),
145
402
  genericTokens
146
403
  };
147
404
  if (node.heritageClauses) {
@@ -163,9 +420,9 @@ var TsConverter = class {
163
420
  const variable = variableDeclarations[0];
164
421
  if (variable.initializer) {
165
422
  let resultingNode;
166
- if (variable.type && import_typescript.default.isTypeReferenceNode(variable.type) && import_typescript.default.isIdentifier(variable.type.typeName) && this.context.customPrimitives.includes(variable.type.typeName.text)) {
423
+ if (variable.type && import_typescript3.default.isTypeReferenceNode(variable.type) && import_typescript3.default.isIdentifier(variable.type.typeName) && this.context.customPrimitives.includes(variable.type.typeName.text)) {
167
424
  resultingNode = this.makeBasicRefNode(variable.type);
168
- } else if (import_typescript.default.isCallExpression(variable.initializer) || import_typescript.default.isArrowFunction(variable.initializer)) {
425
+ } else if (import_typescript3.default.isCallExpression(variable.initializer) || import_typescript3.default.isArrowFunction(variable.initializer)) {
169
426
  resultingNode = this.resolveFunctionCall(
170
427
  variable.initializer,
171
428
  node.parent
@@ -200,80 +457,80 @@ var TsConverter = class {
200
457
  }
201
458
  /** Should not be called directly unless you want to bypass the cache, use `convertTsTypeNode` */
202
459
  tsNodeToType(node) {
203
- if (import_typescript.default.isUnionTypeNode(node)) {
460
+ if (import_typescript3.default.isUnionTypeNode(node)) {
204
461
  return {
205
462
  type: "or",
206
463
  or: node.types.map((child) => this.convertTsTypeNode(child)).filter(import_xlr_utils.isNonNullable),
207
- ...(0, import_xlr_utils.decorateNode)(node)
464
+ ...decorateNode(node)
208
465
  };
209
466
  }
210
- if (import_typescript.default.isIntersectionTypeNode(node)) {
467
+ if (import_typescript3.default.isIntersectionTypeNode(node)) {
211
468
  return {
212
469
  type: "and",
213
470
  and: node.types.map((child) => this.convertTsTypeNode(child)).filter(import_xlr_utils.isNonNullable),
214
- ...(0, import_xlr_utils.decorateNode)(node)
471
+ ...decorateNode(node)
215
472
  };
216
473
  }
217
- if (import_typescript.default.isParenthesizedTypeNode(node)) {
474
+ if (import_typescript3.default.isParenthesizedTypeNode(node)) {
218
475
  const children = [];
219
476
  node.forEachChild((child) => {
220
477
  children.push(child);
221
478
  });
222
- if (children[0]?.kind === import_typescript.default.SyntaxKind.OpenParenToken) {
479
+ if (children[0]?.kind === import_typescript3.default.SyntaxKind.OpenParenToken) {
223
480
  children.shift();
224
481
  }
225
- if (children[children.length - 1]?.kind === import_typescript.default.SyntaxKind.CloseParenToken) {
482
+ if (children[children.length - 1]?.kind === import_typescript3.default.SyntaxKind.CloseParenToken) {
226
483
  children.pop();
227
484
  }
228
485
  const element = children[0];
229
- if (children.length !== 1 || !import_typescript.default.isTypeNode(element)) {
486
+ if (children.length !== 1 || !import_typescript3.default.isTypeNode(element)) {
230
487
  this.context.throwError(
231
- `Parenthesis type not understood. Length ${children.length}, Is Type Node: ${import_typescript.default.SyntaxKind[element.kind]}`
488
+ `Parenthesis type not understood. Length ${children.length}, Is Type Node: ${import_typescript3.default.SyntaxKind[element.kind]}`
232
489
  );
233
490
  }
234
491
  return this.convertTsTypeNode(element);
235
492
  }
236
- if (node.kind === import_typescript.default.SyntaxKind.AnyKeyword) {
237
- return { type: "any", ...(0, import_xlr_utils.decorateNode)(node) };
493
+ if (node.kind === import_typescript3.default.SyntaxKind.AnyKeyword) {
494
+ return { type: "any", ...decorateNode(node) };
238
495
  }
239
- if (node.kind === import_typescript.default.SyntaxKind.UnknownKeyword) {
240
- return { type: "unknown", ...(0, import_xlr_utils.decorateNode)(node) };
496
+ if (node.kind === import_typescript3.default.SyntaxKind.UnknownKeyword) {
497
+ return { type: "unknown", ...decorateNode(node) };
241
498
  }
242
- if (node.kind === import_typescript.default.SyntaxKind.StringKeyword) {
243
- return { type: "string", ...(0, import_xlr_utils.decorateNode)(node) };
499
+ if (node.kind === import_typescript3.default.SyntaxKind.StringKeyword) {
500
+ return { type: "string", ...decorateNode(node) };
244
501
  }
245
- if (node.kind === import_typescript.default.SyntaxKind.NumberKeyword) {
246
- return { type: "number", ...(0, import_xlr_utils.decorateNode)(node) };
502
+ if (node.kind === import_typescript3.default.SyntaxKind.NumberKeyword) {
503
+ return { type: "number", ...decorateNode(node) };
247
504
  }
248
- if (node.kind === import_typescript.default.SyntaxKind.BooleanKeyword) {
249
- return { type: "boolean", ...(0, import_xlr_utils.decorateNode)(node) };
505
+ if (node.kind === import_typescript3.default.SyntaxKind.BooleanKeyword) {
506
+ return { type: "boolean", ...decorateNode(node) };
250
507
  }
251
- if (node.kind === import_typescript.default.SyntaxKind.UndefinedKeyword) {
252
- return { type: "undefined", ...(0, import_xlr_utils.decorateNode)(node) };
508
+ if (node.kind === import_typescript3.default.SyntaxKind.UndefinedKeyword) {
509
+ return { type: "undefined", ...decorateNode(node) };
253
510
  }
254
- if (node.kind === import_typescript.default.SyntaxKind.NeverKeyword) {
255
- return { type: "never", ...(0, import_xlr_utils.decorateNode)(node) };
511
+ if (node.kind === import_typescript3.default.SyntaxKind.NeverKeyword) {
512
+ return { type: "never", ...decorateNode(node) };
256
513
  }
257
- if (node.kind === import_typescript.default.SyntaxKind.ObjectKeyword) {
514
+ if (node.kind === import_typescript3.default.SyntaxKind.ObjectKeyword) {
258
515
  return {
259
516
  type: "object",
260
517
  properties: {},
261
518
  additionalProperties: AnyTypeNode,
262
- ...(0, import_xlr_utils.decorateNode)(node)
519
+ ...decorateNode(node)
263
520
  };
264
521
  }
265
- if (node.kind === import_typescript.default.SyntaxKind.VoidKeyword) {
522
+ if (node.kind === import_typescript3.default.SyntaxKind.VoidKeyword) {
266
523
  return {
267
524
  type: "void",
268
- ...(0, import_xlr_utils.decorateNode)(node)
525
+ ...decorateNode(node)
269
526
  };
270
527
  }
271
- if (import_typescript.default.isTemplateLiteralTypeNode(node)) {
528
+ if (import_typescript3.default.isTemplateLiteralTypeNode(node)) {
272
529
  let format;
273
530
  if (this.context.cache.convertedTemplates.has(node)) {
274
531
  format = this.context.cache.convertedTemplates.get(node);
275
532
  } else {
276
- format = (0, import_xlr_utils.buildTemplateRegex)(node, this.context.typeChecker);
533
+ format = buildTemplateRegex(node, this.context.typeChecker);
277
534
  this.context.cache.convertedTemplates.set(node, format);
278
535
  }
279
536
  return {
@@ -281,14 +538,14 @@ var TsConverter = class {
281
538
  format
282
539
  };
283
540
  }
284
- if (import_typescript.default.isArrayTypeNode(node)) {
541
+ if (import_typescript3.default.isArrayTypeNode(node)) {
285
542
  return {
286
543
  type: "array",
287
544
  elementType: this.convertTsTypeNode(node.elementType) ?? AnyTypeNode,
288
- ...(0, import_xlr_utils.decorateNode)(node)
545
+ ...decorateNode(node)
289
546
  };
290
547
  }
291
- if (import_typescript.default.isConditionalTypeNode(node)) {
548
+ if (import_typescript3.default.isConditionalTypeNode(node)) {
292
549
  const xlrNode = {
293
550
  type: "conditional",
294
551
  check: {
@@ -306,27 +563,27 @@ var TsConverter = class {
306
563
  return xlrNode;
307
564
  }
308
565
  }
309
- if (import_typescript.default.isTypeReferenceNode(node)) {
566
+ if (import_typescript3.default.isTypeReferenceNode(node)) {
310
567
  return this.resolveRefNode(node);
311
568
  }
312
- if (import_typescript.default.isTupleTypeNode(node)) {
569
+ if (import_typescript3.default.isTupleTypeNode(node)) {
313
570
  return {
314
571
  type: "tuple",
315
572
  ...this.tsTupleToType(node),
316
- ...(0, import_xlr_utils.decorateNode)(node)
573
+ ...decorateNode(node)
317
574
  };
318
575
  }
319
- if (import_typescript.default.isLiteralTypeNode(node)) {
576
+ if (import_typescript3.default.isLiteralTypeNode(node)) {
320
577
  return this.tsLiteralToType(node.literal);
321
578
  }
322
- if (import_typescript.default.isTypeLiteralNode(node)) {
579
+ if (import_typescript3.default.isTypeLiteralNode(node)) {
323
580
  return {
324
581
  type: "object",
325
582
  ...this.tsObjectMembersToProperties(node),
326
- ...(0, import_xlr_utils.decorateNode)(node)
583
+ ...decorateNode(node)
327
584
  };
328
585
  }
329
- if (import_typescript.default.isFunctionTypeNode(node) || import_typescript.default.isFunctionDeclaration(node) || import_typescript.default.isArrowFunction(node)) {
586
+ if (import_typescript3.default.isFunctionTypeNode(node) || import_typescript3.default.isFunctionDeclaration(node) || import_typescript3.default.isArrowFunction(node)) {
330
587
  const parameters = node.parameters.map(
331
588
  (param) => {
332
589
  let typeNode;
@@ -351,11 +608,11 @@ var TsConverter = class {
351
608
  type: "function",
352
609
  parameters,
353
610
  returnType,
354
- ...(0, import_xlr_utils.decorateNode)(node)
611
+ ...decorateNode(node)
355
612
  };
356
613
  }
357
- if (import_typescript.default.isIndexedAccessTypeNode(node)) {
358
- if (import_typescript.default.isTypeReferenceNode(node.objectType) && import_typescript.default.isLiteralTypeNode(node.indexType)) {
614
+ if (import_typescript3.default.isIndexedAccessTypeNode(node)) {
615
+ if (import_typescript3.default.isTypeReferenceNode(node.objectType) && import_typescript3.default.isLiteralTypeNode(node.indexType)) {
359
616
  const baseObject = this.convertTsTypeNode(node.objectType);
360
617
  const accessor = node.indexType.literal.getText().replace(/["']/g, "");
361
618
  if (!baseObject) {
@@ -378,10 +635,10 @@ var TsConverter = class {
378
635
  }
379
636
  }
380
637
  let queryNode = node.objectType;
381
- if (import_typescript.default.isParenthesizedTypeNode(node.objectType)) {
638
+ if (import_typescript3.default.isParenthesizedTypeNode(node.objectType)) {
382
639
  queryNode = node.objectType.type;
383
640
  }
384
- if (import_typescript.default.isTypeQueryNode(queryNode)) {
641
+ if (import_typescript3.default.isTypeQueryNode(queryNode)) {
385
642
  const elements = this.tsNodeToType(node.objectType);
386
643
  return {
387
644
  type: "or",
@@ -392,7 +649,7 @@ var TsConverter = class {
392
649
  const syntheticType = this.context.typeChecker.typeToTypeNode(
393
650
  effectiveType,
394
651
  node,
395
- import_typescript.default.NodeBuilderFlags.NoTruncation
652
+ import_typescript3.default.NodeBuilderFlags.NoTruncation
396
653
  );
397
654
  if (syntheticType) {
398
655
  return this.tsNodeToType(syntheticType);
@@ -401,12 +658,12 @@ var TsConverter = class {
401
658
  `Error: could not solve IndexedAccessType: ${node.getFullText()}`
402
659
  );
403
660
  }
404
- if (import_typescript.default.isTypeQueryNode(node)) {
661
+ if (import_typescript3.default.isTypeQueryNode(node)) {
405
662
  const effectiveType = this.context.typeChecker.getTypeAtLocation(node);
406
663
  const syntheticType = this.context.typeChecker.typeToTypeNode(
407
664
  effectiveType,
408
665
  node,
409
- import_typescript.default.NodeBuilderFlags.NoTruncation
666
+ import_typescript3.default.NodeBuilderFlags.NoTruncation
410
667
  );
411
668
  if (syntheticType) {
412
669
  return this.tsNodeToType(syntheticType);
@@ -415,55 +672,55 @@ var TsConverter = class {
415
672
  `Error: could not synthesize type for ${node.getText()}`
416
673
  );
417
674
  }
418
- if (import_typescript.default.isTypeOperatorNode(node)) {
675
+ if (import_typescript3.default.isTypeOperatorNode(node)) {
419
676
  return this.tsNodeToType(node.type);
420
677
  }
421
678
  this.context.throwError(
422
- `Unimplemented type ${import_typescript.default.SyntaxKind[node.kind]} at ${node.getText()}`
679
+ `Unimplemented type ${import_typescript3.default.SyntaxKind[node.kind]} at ${node.getText()}`
423
680
  );
424
681
  }
425
682
  tsLiteralToType(node) {
426
- if (import_typescript.default.isAsExpression(node)) {
683
+ if (import_typescript3.default.isAsExpression(node)) {
427
684
  return this.tsLiteralToType(node.expression);
428
685
  }
429
- if (import_typescript.default.isNumericLiteral(node)) {
686
+ if (import_typescript3.default.isNumericLiteral(node)) {
430
687
  return {
431
688
  type: "number",
432
689
  const: Number(node.text),
433
- ...(0, import_xlr_utils.decorateNode)(node)
690
+ ...decorateNode(node)
434
691
  };
435
692
  }
436
- if (import_typescript.default.isStringLiteral(node)) {
693
+ if (import_typescript3.default.isStringLiteral(node)) {
437
694
  return {
438
695
  type: "string",
439
696
  const: node.text,
440
- ...(0, import_xlr_utils.decorateNode)(node)
697
+ ...decorateNode(node)
441
698
  };
442
699
  }
443
- if (node.kind === import_typescript.default.SyntaxKind.TrueKeyword) {
700
+ if (node.kind === import_typescript3.default.SyntaxKind.TrueKeyword) {
444
701
  return {
445
702
  type: "boolean",
446
703
  const: true,
447
- ...(0, import_xlr_utils.decorateNode)(node)
704
+ ...decorateNode(node)
448
705
  };
449
706
  }
450
- if (node.kind === import_typescript.default.SyntaxKind.FalseKeyword) {
707
+ if (node.kind === import_typescript3.default.SyntaxKind.FalseKeyword) {
451
708
  return {
452
709
  type: "boolean",
453
710
  const: false,
454
- ...(0, import_xlr_utils.decorateNode)(node)
711
+ ...decorateNode(node)
455
712
  };
456
713
  }
457
- if (node.kind === import_typescript.default.SyntaxKind.NullKeyword) {
458
- return { type: "null", ...(0, import_xlr_utils.decorateNode)(node) };
714
+ if (node.kind === import_typescript3.default.SyntaxKind.NullKeyword) {
715
+ return { type: "null", ...decorateNode(node) };
459
716
  }
460
- if (import_typescript.default.isPrefixUnaryExpression(node)) {
717
+ if (import_typescript3.default.isPrefixUnaryExpression(node)) {
461
718
  this.context.throwError("Prefix unary expressions not supported");
462
719
  }
463
- if (import_typescript.default.isArrayLiteralExpression(node)) {
720
+ if (import_typescript3.default.isArrayLiteralExpression(node)) {
464
721
  const arrayElements = [];
465
722
  node.elements.forEach((element) => {
466
- if (import_typescript.default.isSpreadElement(element)) {
723
+ if (import_typescript3.default.isSpreadElement(element)) {
467
724
  const arrayReference = this.resolveLiteralReference(
468
725
  element.expression
469
726
  );
@@ -478,20 +735,20 @@ var TsConverter = class {
478
735
  const: arrayElements
479
736
  };
480
737
  }
481
- if (import_typescript.default.isObjectLiteralExpression(node)) {
738
+ if (import_typescript3.default.isObjectLiteralExpression(node)) {
482
739
  const ret = {
483
740
  type: "object",
484
741
  properties: {},
485
742
  additionalProperties: false
486
743
  };
487
744
  node.properties.forEach((property) => {
488
- if (import_typescript.default.isPropertyAssignment(property) && property.name) {
745
+ if (import_typescript3.default.isPropertyAssignment(property) && property.name) {
489
746
  const propertyName = getPropertyNameText(property.name);
490
747
  ret.properties[propertyName] = {
491
748
  required: true,
492
749
  node: this.tsLiteralToType(property.initializer)
493
750
  };
494
- } else if (import_typescript.default.isSpreadAssignment(property)) {
751
+ } else if (import_typescript3.default.isSpreadAssignment(property)) {
495
752
  const spreadValue = this.resolveLiteralReference(
496
753
  property.expression
497
754
  );
@@ -503,22 +760,22 @@ var TsConverter = class {
503
760
  });
504
761
  return ret;
505
762
  }
506
- if (import_typescript.default.isIdentifier(node)) {
763
+ if (import_typescript3.default.isIdentifier(node)) {
507
764
  return this.resolveLiteralReference(node);
508
765
  }
509
766
  this.context.throwError(
510
- `Literal type not understood ${import_typescript.default.SyntaxKind[node.kind]} at ${node.getText()}`
767
+ `Literal type not understood ${import_typescript3.default.SyntaxKind[node.kind]} at ${node.getText()}`
511
768
  );
512
769
  }
513
770
  resolveLiteralReference(expression) {
514
- if (import_typescript.default.isIdentifier(expression)) {
771
+ if (import_typescript3.default.isIdentifier(expression)) {
515
772
  const symbol = this.context.typeChecker.getSymbolAtLocation(expression);
516
773
  let expressionReference = symbol?.declarations?.[0];
517
- if (symbol && expressionReference && import_typescript.default.isImportSpecifier(expressionReference)) {
774
+ if (symbol && expressionReference && import_typescript3.default.isImportSpecifier(expressionReference)) {
518
775
  const referencedDeclaration = this.context.typeChecker.getAliasedSymbol(symbol);
519
776
  expressionReference = referencedDeclaration.declarations?.[0];
520
777
  }
521
- if (expressionReference && import_typescript.default.isVariableDeclaration(expressionReference) && expressionReference.initializer) {
778
+ if (expressionReference && import_typescript3.default.isVariableDeclaration(expressionReference) && expressionReference.initializer) {
522
779
  return this.convertVariable(
523
780
  expressionReference.parent.parent
524
781
  );
@@ -532,7 +789,7 @@ var TsConverter = class {
532
789
  );
533
790
  }
534
791
  resolveFunctionCall(functionCall, document) {
535
- if (import_typescript.default.isArrowFunction(functionCall)) {
792
+ if (import_typescript3.default.isArrowFunction(functionCall)) {
536
793
  const declaredReturnType = functionCall.parent.type;
537
794
  if (declaredReturnType) {
538
795
  return this.tsNodeToType(declaredReturnType);
@@ -544,7 +801,7 @@ var TsConverter = class {
544
801
  document,
545
802
  void 0
546
803
  );
547
- if (import_typescript.default.isArrowFunction(functionCall)) {
804
+ if (import_typescript3.default.isArrowFunction(functionCall)) {
548
805
  const syntheticWithParameters = {
549
806
  ...syntheticNode,
550
807
  parameters: functionCall.parameters
@@ -552,7 +809,7 @@ var TsConverter = class {
552
809
  syntheticNode = syntheticWithParameters;
553
810
  }
554
811
  if (syntheticNode) {
555
- if (import_typescript.default.isTypeReferenceNode(syntheticNode) && import_typescript.default.isIdentifier(syntheticNode.typeName)) {
812
+ if (import_typescript3.default.isTypeReferenceNode(syntheticNode) && import_typescript3.default.isIdentifier(syntheticNode.typeName)) {
556
813
  const { typeName } = syntheticNode;
557
814
  if (this.context.customPrimitives.includes(typeName.text)) {
558
815
  return this.makeBasicRefNode(syntheticNode);
@@ -560,7 +817,7 @@ var TsConverter = class {
560
817
  const declarationSymbol = typeName.symbol;
561
818
  if (declarationSymbol && declarationSymbol.declarations?.[0]) {
562
819
  const declaration = declarationSymbol.declarations[0];
563
- if (import_typescript.default.isTypeAliasDeclaration(declaration) || import_typescript.default.isInterfaceDeclaration(declaration)) {
820
+ if (import_typescript3.default.isTypeAliasDeclaration(declaration) || import_typescript3.default.isInterfaceDeclaration(declaration)) {
564
821
  return this.convertDeclaration(declaration);
565
822
  }
566
823
  }
@@ -580,18 +837,18 @@ var TsConverter = class {
580
837
  additionalProperties: false
581
838
  };
582
839
  node.members.forEach((member) => {
583
- if (import_typescript.default.isPropertySignature(member) && member.type) {
840
+ if (import_typescript3.default.isPropertySignature(member) && member.type) {
584
841
  const name = getPropertyNameText(member.name);
585
842
  ret.properties[name] = {
586
- required: !(0, import_xlr_utils.isOptionalProperty)(member),
843
+ required: !isOptionalProperty(member),
587
844
  node: {
588
845
  ...this.convertTsTypeNode(member.type) ?? AnyTypeNode,
589
- ...(0, import_xlr_utils.decorateNode)(member)
846
+ ...decorateNode(member)
590
847
  }
591
848
  };
592
- } else if (import_typescript.default.isIndexSignatureDeclaration(member)) {
849
+ } else if (import_typescript3.default.isIndexSignatureDeclaration(member)) {
593
850
  const param = member.parameters[0];
594
- if (param.type?.kind !== import_typescript.default.SyntaxKind.StringKeyword) {
851
+ if (param.type?.kind !== import_typescript3.default.SyntaxKind.StringKeyword) {
595
852
  this.context.throwError(
596
853
  "Will not convert non-string index signature"
597
854
  );
@@ -605,13 +862,13 @@ var TsConverter = class {
605
862
  if (node.elements.length === 0) {
606
863
  return { elementTypes: [], additionalItems: false, minItems: 0 };
607
864
  }
608
- const hasRest = import_typescript.default.isRestTypeNode(node.elements[node.elements.length - 1]);
865
+ const hasRest = import_typescript3.default.isRestTypeNode(node.elements[node.elements.length - 1]);
609
866
  const [elements, rest] = hasRest ? [
610
867
  node.elements.slice(0, node.elements.length - 1),
611
868
  node.elements[node.elements.length - 1]
612
869
  ] : [[...node.elements], void 0];
613
870
  const elementTypes = elements.map((element) => {
614
- if (import_typescript.default.isNamedTupleMember(element)) {
871
+ if (import_typescript3.default.isNamedTupleMember(element)) {
615
872
  let typeNode;
616
873
  if (element.type) {
617
874
  typeNode = this.convertTsTypeNode(element.type);
@@ -623,8 +880,8 @@ var TsConverter = class {
623
880
  };
624
881
  }
625
882
  return {
626
- type: this.convertTsTypeNode((0, import_xlr_utils.tsStripOptionalType)(element)),
627
- optional: import_typescript.default.isOptionalTypeNode(element)
883
+ type: this.convertTsTypeNode(tsStripOptionalType(element)),
884
+ optional: import_typescript3.default.isOptionalTypeNode(element)
628
885
  };
629
886
  });
630
887
  const additionalItems = rest ? this.convertTsTypeNode(rest.type.elementType) ?? AnyTypeNode : false;
@@ -658,7 +915,7 @@ var TsConverter = class {
658
915
  );
659
916
  }
660
917
  let parentInterface;
661
- if (import_typescript.default.isTypeLiteralNode(parentDeclarations?.[0]) && import_typescript.default.isTypeAliasDeclaration(parentDeclarations?.[0].parent)) {
918
+ if (import_typescript3.default.isTypeLiteralNode(parentDeclarations?.[0]) && import_typescript3.default.isTypeAliasDeclaration(parentDeclarations?.[0].parent)) {
662
919
  parentInterface = parentDeclarations?.[0].parent;
663
920
  } else {
664
921
  parentInterface = parentDeclarations?.[0];
@@ -728,8 +985,8 @@ var TsConverter = class {
728
985
  } else if (tp.default) {
729
986
  typeToProcess = tp.default;
730
987
  } else {
731
- typeToProcess = import_typescript.default.factory.createKeywordTypeNode(
732
- import_typescript.default.SyntaxKind.AnyKeyword
988
+ typeToProcess = import_typescript3.default.factory.createKeywordTypeNode(
989
+ import_typescript3.default.SyntaxKind.AnyKeyword
733
990
  );
734
991
  }
735
992
  const processedNodeType = this.convertTsTypeNode(typeToProcess);
@@ -762,14 +1019,14 @@ var TsConverter = class {
762
1019
  resolveRefNode(node) {
763
1020
  let refName;
764
1021
  let namespace;
765
- if (node.typeName.kind === import_typescript.default.SyntaxKind.QualifiedName) {
1022
+ if (node.typeName.kind === import_typescript3.default.SyntaxKind.QualifiedName) {
766
1023
  namespace = node.typeName.left.getText();
767
1024
  refName = node.typeName.right.getText();
768
1025
  } else {
769
1026
  refName = node.typeName.text;
770
1027
  }
771
- if ((0, import_xlr_utils.isTypeReferenceGeneric)(node, this.context.typeChecker)) {
772
- if (import_typescript.default.isIndexedAccessTypeNode(node.parent)) {
1028
+ if (isTypeReferenceGeneric(node, this.context.typeChecker)) {
1029
+ if (import_typescript3.default.isIndexedAccessTypeNode(node.parent)) {
773
1030
  const genericSymbol = this.context.typeChecker.getSymbolAtLocation(
774
1031
  node.typeName
775
1032
  );
@@ -787,14 +1044,14 @@ var TsConverter = class {
787
1044
  }
788
1045
  return AnyTypeNode;
789
1046
  }
790
- return { type: "ref", ref: node.getText(), ...(0, import_xlr_utils.decorateNode)(node) };
1047
+ return { type: "ref", ref: node.getText(), ...decorateNode(node) };
791
1048
  }
792
1049
  if (refName === "Array") {
793
1050
  const typeArgs = node.typeArguments;
794
1051
  return {
795
1052
  type: "array",
796
1053
  elementType: typeArgs ? this.convertTsTypeNode(typeArgs[0]) ?? AnyTypeNode : AnyTypeNode,
797
- ...(0, import_xlr_utils.decorateNode)(node)
1054
+ ...decorateNode(node)
798
1055
  };
799
1056
  }
800
1057
  if (refName === "Record") {
@@ -804,17 +1061,17 @@ var TsConverter = class {
804
1061
  type: "record",
805
1062
  keyType: this.convertTsTypeNode(indexType) ?? AnyTypeNode,
806
1063
  valueType: this.convertTsTypeNode(valueType) ?? AnyTypeNode,
807
- ...(0, import_xlr_utils.decorateNode)(node)
1064
+ ...decorateNode(node)
808
1065
  };
809
1066
  }
810
1067
  if (isMappedTypeNode(refName)) {
811
1068
  return this.makeMappedType(refName, node);
812
1069
  }
813
- if ((0, import_xlr_utils.isTypeScriptLibType)(node, this.context.typeChecker)) {
1070
+ if (isTypeScriptLibType(node, this.context.typeChecker)) {
814
1071
  return this.makeBasicRefNode(node);
815
1072
  }
816
1073
  if (!this.context.customPrimitives.includes(refName)) {
817
- const typeInfo = (0, import_xlr_utils.getReferencedType)(node, this.context.typeChecker);
1074
+ const typeInfo = getReferencedType(node, this.context.typeChecker);
818
1075
  if (typeInfo) {
819
1076
  const convertedType = this.convertTopLevelNode(typeInfo.declaration);
820
1077
  const genericParams = typeInfo.declaration.typeParameters;
@@ -867,7 +1124,7 @@ var TsConverter = class {
867
1124
  return (0, import_xlr_utils.applyPickOrOmitToNodeType)(
868
1125
  baseObj,
869
1126
  refName,
870
- (0, import_xlr_utils.getStringLiteralsFromUnion)(modifiers)
1127
+ getStringLiteralsFromUnion(modifiers)
871
1128
  );
872
1129
  }
873
1130
  }
@@ -884,7 +1141,7 @@ var TsConverter = class {
884
1141
  if (node.typeArguments) {
885
1142
  node.typeArguments.forEach((typeArg) => {
886
1143
  let convertedNode;
887
- if ((0, import_xlr_utils.isTopLevelDeclaration)(typeArg)) {
1144
+ if (isTopLevelDeclaration(typeArg)) {
888
1145
  convertedNode = this.convertDeclaration(typeArg);
889
1146
  } else {
890
1147
  convertedNode = this.convertTsTypeNode(typeArg);
@@ -899,10 +1156,10 @@ var TsConverter = class {
899
1156
  });
900
1157
  }
901
1158
  let ref;
902
- if (import_typescript.default.isTypeReferenceNode(node)) {
903
- if (node.typeName.kind === import_typescript.default.SyntaxKind.QualifiedName) {
1159
+ if (import_typescript3.default.isTypeReferenceNode(node)) {
1160
+ if (node.typeName.kind === import_typescript3.default.SyntaxKind.QualifiedName) {
904
1161
  ref = `${node.typeName.left.getText()}.${node.typeName.right.getText()}`;
905
- } else if (node.pos === -1 && import_typescript.default.isIdentifier(node.typeName)) {
1162
+ } else if (node.pos === -1 && import_typescript3.default.isIdentifier(node.typeName)) {
906
1163
  ref = node.typeName.text;
907
1164
  } else {
908
1165
  ref = node.getText();
@@ -913,7 +1170,7 @@ var TsConverter = class {
913
1170
  return {
914
1171
  type: "ref",
915
1172
  ref,
916
- ...(0, import_xlr_utils.decorateNode)(node),
1173
+ ...decorateNode(node),
917
1174
  genericArguments: genericArgs.length > 0 ? genericArgs : void 0
918
1175
  };
919
1176
  }
@@ -921,7 +1178,7 @@ var TsConverter = class {
921
1178
 
922
1179
  // ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/converters/src/ts/xlr-to-ts.ts
923
1180
  var import_xlr_utils2 = require("@xlr-lib/xlr-utils");
924
- var import_typescript2 = __toESM(require("typescript"));
1181
+ var import_typescript4 = __toESM(require("typescript"));
925
1182
  var templateTokenize = /(?=true\|false|\.\*|\[0-9]\*)/gm;
926
1183
  var tokenSplit = /(?<=true\|false|\.\*|\[0-9]\*)/gm;
927
1184
  var TSWriter = class {
@@ -930,7 +1187,7 @@ var TSWriter = class {
930
1187
  additionalTypes;
931
1188
  constructor(factory) {
932
1189
  this.context = {
933
- factory: factory ?? import_typescript2.default.factory,
1190
+ factory: factory ?? import_typescript4.default.factory,
934
1191
  throwError: (message) => {
935
1192
  throw new ConversionError(message);
936
1193
  }
@@ -958,7 +1215,7 @@ var TSWriter = class {
958
1215
  const refName = type.extends.ref.split("<")[0];
959
1216
  customPrimitiveHeritageClass = [
960
1217
  this.context.factory.createHeritageClause(
961
- import_typescript2.default.SyntaxKind.ExtendsKeyword,
1218
+ import_typescript4.default.SyntaxKind.ExtendsKeyword,
962
1219
  [
963
1220
  this.context.factory.createExpressionWithTypeArguments(
964
1221
  this.context.factory.createIdentifier(refName),
@@ -980,7 +1237,7 @@ var TSWriter = class {
980
1237
  });
981
1238
  }
982
1239
  let finalNode;
983
- if (import_typescript2.default.isTypeLiteralNode(tsNode)) {
1240
+ if (import_typescript4.default.isTypeLiteralNode(tsNode)) {
984
1241
  finalNode = this.makeInterfaceDeclaration(
985
1242
  typeName,
986
1243
  tsNode.members,
@@ -1093,35 +1350,35 @@ var TSWriter = class {
1093
1350
  switch (xlrNode.type) {
1094
1351
  case "string":
1095
1352
  return this.context.factory.createKeywordTypeNode(
1096
- import_typescript2.default.SyntaxKind.StringKeyword
1353
+ import_typescript4.default.SyntaxKind.StringKeyword
1097
1354
  );
1098
1355
  case "number":
1099
1356
  return this.context.factory.createKeywordTypeNode(
1100
- import_typescript2.default.SyntaxKind.NumberKeyword
1357
+ import_typescript4.default.SyntaxKind.NumberKeyword
1101
1358
  );
1102
1359
  case "boolean":
1103
1360
  return this.context.factory.createKeywordTypeNode(
1104
- import_typescript2.default.SyntaxKind.BooleanKeyword
1361
+ import_typescript4.default.SyntaxKind.BooleanKeyword
1105
1362
  );
1106
1363
  case "any":
1107
1364
  return this.context.factory.createKeywordTypeNode(
1108
- import_typescript2.default.SyntaxKind.AnyKeyword
1365
+ import_typescript4.default.SyntaxKind.AnyKeyword
1109
1366
  );
1110
1367
  case "unknown":
1111
1368
  return this.context.factory.createKeywordTypeNode(
1112
- import_typescript2.default.SyntaxKind.UnknownKeyword
1369
+ import_typescript4.default.SyntaxKind.UnknownKeyword
1113
1370
  );
1114
1371
  case "never":
1115
1372
  return this.context.factory.createKeywordTypeNode(
1116
- import_typescript2.default.SyntaxKind.NeverKeyword
1373
+ import_typescript4.default.SyntaxKind.NeverKeyword
1117
1374
  );
1118
1375
  case "undefined":
1119
1376
  return this.context.factory.createKeywordTypeNode(
1120
- import_typescript2.default.SyntaxKind.UndefinedKeyword
1377
+ import_typescript4.default.SyntaxKind.UndefinedKeyword
1121
1378
  );
1122
1379
  case "void":
1123
1380
  return this.context.factory.createKeywordTypeNode(
1124
- import_typescript2.default.SyntaxKind.VoidKeyword
1381
+ import_typescript4.default.SyntaxKind.VoidKeyword
1125
1382
  );
1126
1383
  default:
1127
1384
  this.context.throwError(
@@ -1155,7 +1412,7 @@ var TSWriter = class {
1155
1412
  return this.context.factory.createNamedTupleMember(
1156
1413
  void 0,
1157
1414
  this.context.factory.createIdentifier(e.name),
1158
- e.optional ? this.context.factory.createToken(import_typescript2.default.SyntaxKind.QuestionToken) : void 0,
1415
+ e.optional ? this.context.factory.createToken(import_typescript4.default.SyntaxKind.QuestionToken) : void 0,
1159
1416
  this.convertTypeNode(e.type)
1160
1417
  );
1161
1418
  }
@@ -1171,12 +1428,12 @@ var TSWriter = class {
1171
1428
  void 0,
1172
1429
  void 0,
1173
1430
  e.name,
1174
- e.optional ? this.context.factory.createToken(import_typescript2.default.SyntaxKind.QuestionToken) : void 0,
1431
+ e.optional ? this.context.factory.createToken(import_typescript4.default.SyntaxKind.QuestionToken) : void 0,
1175
1432
  this.convertTypeNode(e.type),
1176
1433
  e.default ? this.createLiteralTypeNode(e.default) : void 0
1177
1434
  );
1178
1435
  }),
1179
- xlrNode.returnType ? this.convertTypeNode(xlrNode.returnType) : this.context.factory.createToken(import_typescript2.default.SyntaxKind.VoidKeyword)
1436
+ xlrNode.returnType ? this.convertTypeNode(xlrNode.returnType) : this.context.factory.createToken(import_typescript4.default.SyntaxKind.VoidKeyword)
1180
1437
  );
1181
1438
  }
1182
1439
  createRecordNode(xlrNode) {
@@ -1208,7 +1465,7 @@ var TSWriter = class {
1208
1465
  void 0,
1209
1466
  // modifiers
1210
1467
  name,
1211
- required ? void 0 : this.context.factory.createToken(import_typescript2.default.SyntaxKind.QuestionToken),
1468
+ required ? void 0 : this.context.factory.createToken(import_typescript4.default.SyntaxKind.QuestionToken),
1212
1469
  this.convertTypeNode(node)
1213
1470
  ),
1214
1471
  node
@@ -1230,7 +1487,7 @@ var TSWriter = class {
1230
1487
  void 0,
1231
1488
  // question token
1232
1489
  this.context.factory.createKeywordTypeNode(
1233
- import_typescript2.default.SyntaxKind.StringKeyword
1490
+ import_typescript4.default.SyntaxKind.StringKeyword
1234
1491
  )
1235
1492
  )
1236
1493
  ],
@@ -1257,11 +1514,11 @@ var TSWriter = class {
1257
1514
  const [regexSegment, stringSegment = ""] = segments.split(tokenSplit);
1258
1515
  let regexTemplateType;
1259
1516
  if (regexSegment === ".*") {
1260
- regexTemplateType = import_typescript2.default.SyntaxKind.StringKeyword;
1517
+ regexTemplateType = import_typescript4.default.SyntaxKind.StringKeyword;
1261
1518
  } else if (regexSegment === "[0-9]*") {
1262
- regexTemplateType = import_typescript2.default.SyntaxKind.NumberKeyword;
1519
+ regexTemplateType = import_typescript4.default.SyntaxKind.NumberKeyword;
1263
1520
  } else if (regexSegment === "true|false") {
1264
- regexTemplateType = import_typescript2.default.SyntaxKind.BooleanKeyword;
1521
+ regexTemplateType = import_typescript4.default.SyntaxKind.BooleanKeyword;
1265
1522
  } else {
1266
1523
  this.context.throwError(
1267
1524
  `Can't make template literal type from regex ${regexSegment}`
@@ -1305,9 +1562,9 @@ ${comment.split("\n").map((s) => ` * ${s}`).join("\n")}
1305
1562
  } else {
1306
1563
  comment = `* ${comment} `;
1307
1564
  }
1308
- return import_typescript2.default.addSyntheticLeadingComment(
1565
+ return import_typescript4.default.addSyntheticLeadingComment(
1309
1566
  tsNode,
1310
- import_typescript2.default.SyntaxKind.MultiLineCommentTrivia,
1567
+ import_typescript4.default.SyntaxKind.MultiLineCommentTrivia,
1311
1568
  comment,
1312
1569
  true
1313
1570
  );
@@ -1325,7 +1582,7 @@ ${comment.split("\n").map((s) => ` * ${s}`).join("\n")}
1325
1582
  makeInterfaceDeclaration(name, node, generics, heritageClass) {
1326
1583
  return this.context.factory.createInterfaceDeclaration(
1327
1584
  this.context.factory.createModifiersFromModifierFlags(
1328
- import_typescript2.default.ModifierFlags.Export
1585
+ import_typescript4.default.ModifierFlags.Export
1329
1586
  ),
1330
1587
  this.context.factory.createIdentifier(name),
1331
1588
  generics,
@@ -1338,7 +1595,7 @@ ${comment.split("\n").map((s) => ` * ${s}`).join("\n")}
1338
1595
  makeTypeDeclaration(name, node, generics) {
1339
1596
  return this.context.factory.createTypeAliasDeclaration(
1340
1597
  this.context.factory.createModifiersFromModifierFlags(
1341
- import_typescript2.default.ModifierFlags.Export
1598
+ import_typescript4.default.ModifierFlags.Export
1342
1599
  ),
1343
1600
  this.context.factory.createIdentifier(name),
1344
1601
  generics,
@@ -1347,9 +1604,67 @@ ${comment.split("\n").map((s) => ` * ${s}`).join("\n")}
1347
1604
  );
1348
1605
  }
1349
1606
  };
1607
+ function exportTypesToTypeScript(typesToExport, importMap) {
1608
+ const writer = new TSWriter();
1609
+ const referencedImports = /* @__PURE__ */ new Set();
1610
+ const exportedTypes = /* @__PURE__ */ new Map();
1611
+ const printer = import_typescript4.default.createPrinter({ newLine: import_typescript4.default.NewLineKind.LineFeed });
1612
+ let resultFile = import_typescript4.default.createSourceFile(
1613
+ "output.d.ts",
1614
+ "",
1615
+ import_typescript4.default.ScriptTarget.ES2017,
1616
+ false,
1617
+ import_typescript4.default.ScriptKind.TS
1618
+ );
1619
+ typesToExport.forEach((typeNode) => {
1620
+ const { type, referencedTypes, additionalTypes } = writer.convertNamedType(typeNode);
1621
+ exportedTypes.set(typeNode.name, type);
1622
+ additionalTypes?.forEach(
1623
+ (additionalType, name) => exportedTypes.set(name, additionalType)
1624
+ );
1625
+ referencedTypes?.forEach(
1626
+ (referencedType) => referencedImports.add(referencedType)
1627
+ );
1628
+ });
1629
+ const typesToPrint = [];
1630
+ exportedTypes.forEach(
1631
+ (type) => typesToPrint.push(
1632
+ printer.printNode(import_typescript4.default.EmitHint.Unspecified, type, resultFile)
1633
+ )
1634
+ );
1635
+ importMap.forEach((imports, packageName) => {
1636
+ const applicableImports = imports.filter((i) => referencedImports.has(i));
1637
+ if (applicableImports.length === 0) return;
1638
+ resultFile = import_typescript4.default.factory.updateSourceFile(resultFile, [
1639
+ import_typescript4.default.factory.createImportDeclaration(
1640
+ /* modifiers */
1641
+ void 0,
1642
+ import_typescript4.default.factory.createImportClause(
1643
+ false,
1644
+ void 0,
1645
+ import_typescript4.default.factory.createNamedImports(
1646
+ applicableImports.map(
1647
+ (i) => import_typescript4.default.factory.createImportSpecifier(
1648
+ false,
1649
+ void 0,
1650
+ import_typescript4.default.factory.createIdentifier(i)
1651
+ )
1652
+ )
1653
+ )
1654
+ ),
1655
+ import_typescript4.default.factory.createStringLiteral(packageName)
1656
+ ),
1657
+ ...resultFile.statements
1658
+ ]);
1659
+ });
1660
+ const headerText = printer.printFile(resultFile);
1661
+ const nodeText = typesToPrint.join("\n");
1662
+ return `${headerText}
1663
+ ${nodeText}`;
1664
+ }
1350
1665
 
1351
1666
  // ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/converters/src/helpers/converter.ts
1352
- var import_typescript3 = __toESM(require("typescript"));
1667
+ var import_typescript5 = __toESM(require("typescript"));
1353
1668
  var import_path2 = __toESM(require("path"));
1354
1669
  var import_fs2 = __toESM(require("fs"));
1355
1670
 
@@ -1386,7 +1701,7 @@ function writeManifest(capabilities, outputDirectory) {
1386
1701
 
1387
1702
  // ../../../../../../../../../execroot/_main/bazel-out/k8-fastbuild/bin/converters/src/helpers/converter.ts
1388
1703
  function converter(sourceFile, outputDirectory, customPrimitives, tsOptions = {}) {
1389
- const program = import_typescript3.default.createProgram([sourceFile], tsOptions);
1704
+ const program = import_typescript5.default.createProgram([sourceFile], tsOptions);
1390
1705
  import_fs2.default.mkdirSync(outputDirectory, { recursive: true });
1391
1706
  const checker = program.getTypeChecker();
1392
1707
  const converter2 = new TsConverter(checker, customPrimitives);
@@ -1415,6 +1730,7 @@ function converter(sourceFile, outputDirectory, customPrimitives, tsOptions = {}
1415
1730
  TSWriter,
1416
1731
  TsConverter,
1417
1732
  converter,
1733
+ exportTypesToTypeScript,
1418
1734
  writeManifest
1419
1735
  });
1420
1736
  //# sourceMappingURL=index.cjs.map