@kubb/parser-ts 3.0.0-beta.5 → 3.0.0-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-VJY52WL4.cjs → chunk-DVADLCYY.cjs} +4 -4
- package/dist/chunk-DVADLCYY.cjs.map +1 -0
- package/dist/{chunk-GUQGBXJ7.js → chunk-RWXGFVS2.js} +4 -4
- package/dist/chunk-RWXGFVS2.js.map +1 -0
- package/dist/{factory-CicFXqtM.d.cts → factory-1NIBrzkm.d.cts} +1 -1
- package/dist/{factory-CicFXqtM.d.ts → factory-1NIBrzkm.d.ts} +1 -1
- package/dist/factory.cjs +30 -30
- package/dist/factory.d.cts +1 -1
- package/dist/factory.d.ts +1 -1
- package/dist/factory.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +5 -5
- package/src/factory.ts +3 -3
- package/dist/chunk-GUQGBXJ7.js.map +0 -1
- package/dist/chunk-VJY52WL4.cjs.map +0 -1
|
@@ -124,10 +124,10 @@ function createUnionDeclaration({
|
|
|
124
124
|
withParentheses
|
|
125
125
|
}) {
|
|
126
126
|
if (!nodes.length) {
|
|
127
|
-
return
|
|
127
|
+
return keywordTypeNodes.any;
|
|
128
128
|
}
|
|
129
129
|
if (nodes.length === 1) {
|
|
130
|
-
return nodes[0]
|
|
130
|
+
return nodes[0];
|
|
131
131
|
}
|
|
132
132
|
const node = factory.createUnionTypeNode(nodes);
|
|
133
133
|
if (withParentheses) {
|
|
@@ -463,5 +463,5 @@ exports.createUnionDeclaration = createUnionDeclaration;
|
|
|
463
463
|
exports.factory_exports = factory_exports;
|
|
464
464
|
exports.keywordTypeNodes = keywordTypeNodes;
|
|
465
465
|
exports.modifiers = modifiers;
|
|
466
|
-
//# sourceMappingURL=chunk-
|
|
467
|
-
//# sourceMappingURL=chunk-
|
|
466
|
+
//# sourceMappingURL=chunk-DVADLCYY.cjs.map
|
|
467
|
+
//# sourceMappingURL=chunk-DVADLCYY.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/factory.ts"],"names":["ts","modifiers","questionToken","propertyName","isNumber"],"mappings":"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","file":"chunk-DVADLCYY.cjs","sourcesContent":["import { isNumber } from 'remeda'\nimport ts from 'typescript'\n\nconst { factory } = ts\n\n// https://ts-ast-viewer.com/\n\nexport const modifiers = {\n async: factory.createModifier(ts.SyntaxKind.AsyncKeyword),\n export: factory.createModifier(ts.SyntaxKind.ExportKeyword),\n const: factory.createModifier(ts.SyntaxKind.ConstKeyword),\n static: factory.createModifier(ts.SyntaxKind.StaticKeyword),\n} as const\n\nfunction isValidIdentifier(str: string): boolean {\n if (!str.length || str.trim() !== str) {\n return false\n }\n const node = ts.parseIsolatedEntityName(str, ts.ScriptTarget.Latest)\n\n return !!node && node.kind === ts.SyntaxKind.Identifier && ts.identifierToKeywordKind(node.kind as unknown as ts.Identifier) === undefined\n}\n\nfunction propertyName(name: string | ts.PropertyName): ts.PropertyName {\n if (typeof name === 'string') {\n return isValidIdentifier(name) ? factory.createIdentifier(name) : factory.createStringLiteral(name)\n }\n return name\n}\n\nconst questionToken = factory.createToken(ts.SyntaxKind.QuestionToken)\n\nexport function createQuestionToken(token?: boolean | ts.QuestionToken) {\n if (!token) {\n return undefined\n }\n if (token === true) {\n return questionToken\n }\n return token\n}\n\nexport function createIntersectionDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createIntersectionTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\n/**\n * Minimum nodes length of 2\n * @example `string & number`\n */\nexport function createTupleDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createTupleTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\nexport function createArrayDeclaration({\n nodes,\n}: {\n nodes: Array<ts.TypeNode>\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return factory.createTupleTypeNode([])\n }\n\n if (nodes.length === 1) {\n return factory.createArrayTypeNode(nodes.at(0)!)\n }\n\n return factory.createExpressionWithTypeArguments(factory.createIdentifier('Array'), [factory.createUnionTypeNode(nodes)])\n}\n\n/**\n * Minimum nodes length of 2\n * @example `string | number`\n */\nexport function createUnionDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode {\n if (!nodes.length) {\n return keywordTypeNodes.any\n }\n\n if (nodes.length === 1) {\n return nodes[0] as ts.TypeNode\n }\n\n const node = factory.createUnionTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\nexport function createPropertySignature({\n readOnly,\n modifiers = [],\n name,\n questionToken,\n type,\n}: {\n readOnly?: boolean\n modifiers?: Array<ts.Modifier>\n name: ts.PropertyName | string\n questionToken?: ts.QuestionToken | boolean\n type?: ts.TypeNode\n}) {\n return factory.createPropertySignature(\n [...modifiers, readOnly ? factory.createToken(ts.SyntaxKind.ReadonlyKeyword) : undefined].filter(Boolean),\n propertyName(name),\n createQuestionToken(questionToken),\n type,\n )\n}\n\nexport function createParameterSignature(\n name: string | ts.BindingName,\n {\n modifiers,\n dotDotDotToken,\n questionToken,\n type,\n initializer,\n }: {\n decorators?: Array<ts.Decorator>\n modifiers?: Array<ts.Modifier>\n dotDotDotToken?: ts.DotDotDotToken\n questionToken?: ts.QuestionToken | boolean\n type?: ts.TypeNode\n initializer?: ts.Expression\n },\n): ts.ParameterDeclaration {\n return factory.createParameterDeclaration(modifiers, dotDotDotToken, name, createQuestionToken(questionToken), type, initializer)\n}\n\nexport function createJSDoc({ comments }: { comments: string[] }) {\n if (!comments.length) {\n return null\n }\n return factory.createJSDocComment(\n factory.createNodeArray(\n comments.map((comment, i) => {\n if (i === comments.length - 1) {\n return factory.createJSDocText(comment)\n }\n\n return factory.createJSDocText(`${comment}\\n`)\n }),\n ),\n )\n}\n\n/**\n * @link https://github.com/microsoft/TypeScript/issues/44151\n */\nexport function appendJSDocToNode<TNode extends ts.Node>({\n node,\n comments,\n}: {\n node: TNode\n comments: Array<string | undefined>\n}) {\n const filteredComments = comments.filter(Boolean)\n\n if (!filteredComments.length) {\n return node\n }\n\n const text = filteredComments.reduce((acc = '', comment = '') => {\n return `${acc}\\n * ${comment.replaceAll('*/', '*\\\\/')}`\n }, '*')\n\n // node: {...node}, with that ts.addSyntheticLeadingComment is appending\n return ts.addSyntheticLeadingComment({ ...node }, ts.SyntaxKind.MultiLineCommentTrivia, `${text || '*'}\\n`, true)\n}\n\nexport function createIndexSignature(\n type: ts.TypeNode,\n {\n modifiers,\n indexName = 'key',\n indexType = factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),\n }: {\n indexName?: string\n indexType?: ts.TypeNode\n decorators?: Array<ts.Decorator>\n modifiers?: Array<ts.Modifier>\n } = {},\n) {\n return factory.createIndexSignature(modifiers, [createParameterSignature(indexName, { type: indexType })], type)\n}\n\nexport function createTypeAliasDeclaration({\n modifiers,\n name,\n typeParameters,\n type,\n}: {\n modifiers?: Array<ts.Modifier>\n name: string | ts.Identifier\n typeParameters?: Array<ts.TypeParameterDeclaration>\n type: ts.TypeNode\n}) {\n return factory.createTypeAliasDeclaration(modifiers, name, typeParameters, type)\n}\n\nexport function createNamespaceDeclaration({\n statements,\n name,\n}: {\n name: string\n statements: ts.Statement[]\n}) {\n return factory.createModuleDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(name),\n factory.createModuleBlock(statements),\n ts.NodeFlags.Namespace,\n )\n}\n\n/**\n * In { propertyName: string; name?: string } is `name` being used to make the type more unique when multiple same names are used.\n * @example `import { Pet as Cat } from './Pet'`\n */\nexport function createImportDeclaration({\n name,\n path,\n isTypeOnly = false,\n isNameSpace = false,\n}: {\n name: string | Array<string | { propertyName: string; name?: string }>\n path: string\n isTypeOnly?: boolean\n isNameSpace?: boolean\n}) {\n if (!Array.isArray(name)) {\n let importPropertyName: ts.Identifier | undefined = factory.createIdentifier(name)\n let importName: ts.NamedImportBindings | undefined = undefined\n\n if (isNameSpace) {\n importPropertyName = undefined\n importName = factory.createNamespaceImport(factory.createIdentifier(name))\n }\n\n return factory.createImportDeclaration(\n undefined,\n factory.createImportClause(isTypeOnly, importPropertyName, importName),\n factory.createStringLiteral(path),\n undefined,\n )\n }\n\n return factory.createImportDeclaration(\n undefined,\n factory.createImportClause(\n isTypeOnly,\n undefined,\n factory.createNamedImports(\n name.map((item) => {\n if (typeof item === 'object') {\n const obj = item as { propertyName: string; name?: string }\n if (obj.name) {\n return factory.createImportSpecifier(false, factory.createIdentifier(obj.propertyName), factory.createIdentifier(obj.name))\n }\n\n return factory.createImportSpecifier(false, undefined, factory.createIdentifier(obj.propertyName))\n }\n\n return factory.createImportSpecifier(false, undefined, factory.createIdentifier(item))\n }),\n ),\n ),\n factory.createStringLiteral(path),\n undefined,\n )\n}\n\nexport function createExportDeclaration({\n path,\n asAlias,\n isTypeOnly = false,\n name,\n}: {\n path: string\n asAlias?: boolean\n isTypeOnly?: boolean\n name?: string | Array<ts.Identifier | string>\n}) {\n if (name && !Array.isArray(name) && !asAlias) {\n console.warn(`When using name as string, asAlias should be true ${name}`)\n }\n\n if (!Array.isArray(name)) {\n const parsedName = name?.match(/^\\d/) ? `_${name?.slice(1)}` : name\n\n return factory.createExportDeclaration(\n undefined,\n isTypeOnly,\n asAlias && parsedName ? factory.createNamespaceExport(factory.createIdentifier(parsedName)) : undefined,\n factory.createStringLiteral(path),\n undefined,\n )\n }\n\n return factory.createExportDeclaration(\n undefined,\n isTypeOnly,\n factory.createNamedExports(\n name.map((propertyName) => {\n return factory.createExportSpecifier(false, undefined, typeof propertyName === 'string' ? factory.createIdentifier(propertyName) : propertyName)\n }),\n ),\n factory.createStringLiteral(path),\n undefined,\n )\n}\n\nexport function createEnumDeclaration({\n type = 'enum',\n name,\n typeName,\n enums,\n}: {\n /**\n * @default `'enum'`\n */\n type?: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n /**\n * Enum name in camelCase.\n */\n name: string\n /**\n * Enum name in PascalCase.\n */\n typeName: string\n enums: [key: string | number, value: string | number | boolean][]\n}): [name: ts.Node | undefined, type: ts.Node] {\n if (type === 'literal') {\n return [\n undefined,\n factory.createTypeAliasDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(typeName),\n undefined,\n factory.createUnionTypeNode(\n enums\n .map(([_key, value]) => {\n if (isNumber(value)) {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value?.toString()))\n }\n\n if (typeof value === 'boolean') {\n return factory.createLiteralTypeNode(value ? factory.createTrue() : factory.createFalse())\n }\n if (value) {\n return factory.createLiteralTypeNode(factory.createStringLiteral(value.toString()))\n }\n\n return undefined\n })\n .filter(Boolean),\n ),\n ),\n ]\n }\n\n if (type === 'enum' || type === 'constEnum') {\n return [\n undefined,\n factory.createEnumDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword), type === 'constEnum' ? factory.createToken(ts.SyntaxKind.ConstKeyword) : undefined].filter(Boolean),\n factory.createIdentifier(typeName),\n enums\n .map(([key, value]) => {\n let initializer: ts.Expression = factory.createStringLiteral(value?.toString())\n\n if (isNumber(Number.parseInt(value.toString()))) {\n initializer = factory.createNumericLiteral(value as number)\n }\n if (typeof value === 'boolean') {\n initializer = value ? factory.createTrue() : factory.createFalse()\n }\n\n if (isNumber(Number.parseInt(key.toString()))) {\n return factory.createEnumMember(factory.createStringLiteral(`${typeName}_${key}`), initializer)\n }\n\n if (key) {\n return factory.createEnumMember(factory.createStringLiteral(`${key}`), initializer)\n }\n\n return undefined\n })\n .filter(Boolean),\n ),\n ]\n }\n\n // used when using `as const` instead of an TypeScript enum.\n const identifierName = type === 'asPascalConst' ? typeName : name\n\n return [\n factory.createVariableStatement(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createVariableDeclarationList(\n [\n factory.createVariableDeclaration(\n factory.createIdentifier(identifierName),\n undefined,\n undefined,\n factory.createAsExpression(\n factory.createObjectLiteralExpression(\n enums\n .map(([key, value]) => {\n let initializer: ts.Expression = factory.createStringLiteral(`${value?.toString()}`)\n\n if (isNumber(value)) {\n // Error: Negative numbers should be created in combination with createPrefixUnaryExpression factory.\n // The method createNumericLiteral only accepts positive numbers\n // or those combined with createPrefixUnaryExpression.\n // Therefore, we need to ensure that the number is not negative.\n if (value < 0) {\n initializer = factory.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, factory.createNumericLiteral(Math.abs(value)))\n } else {\n initializer = factory.createNumericLiteral(value)\n }\n }\n\n if (typeof value === 'boolean') {\n initializer = value ? factory.createTrue() : factory.createFalse()\n }\n\n if (key) {\n return factory.createPropertyAssignment(factory.createStringLiteral(`${key}`), initializer)\n }\n\n return undefined\n })\n .filter(Boolean),\n true,\n ),\n factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n factory.createTypeAliasDeclaration(\n type === 'asPascalConst' ? [] : [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(typeName),\n undefined,\n factory.createIndexedAccessTypeNode(\n factory.createParenthesizedType(factory.createTypeQueryNode(factory.createIdentifier(identifierName), undefined)),\n factory.createTypeOperatorNode(ts.SyntaxKind.KeyOfKeyword, factory.createTypeQueryNode(factory.createIdentifier(identifierName), undefined)),\n ),\n ),\n ]\n}\n\nexport function createOmitDeclaration({\n keys,\n type,\n nonNullable,\n}: {\n keys: Array<string> | string\n type: ts.TypeNode\n nonNullable?: boolean\n}) {\n const node = nonNullable ? factory.createTypeReferenceNode(factory.createIdentifier('NonNullable'), [type]) : type\n\n if (Array.isArray(keys)) {\n return factory.createTypeReferenceNode(factory.createIdentifier('Omit'), [\n node,\n factory.createUnionTypeNode(\n keys.map((key) => {\n return factory.createLiteralTypeNode(factory.createStringLiteral(key))\n }),\n ),\n ])\n }\n\n return factory.createTypeReferenceNode(factory.createIdentifier('Omit'), [node, factory.createLiteralTypeNode(factory.createStringLiteral(keys))])\n}\n\nexport const keywordTypeNodes = {\n any: factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),\n unknown: factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n number: factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),\n integer: factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),\n object: factory.createKeywordTypeNode(ts.SyntaxKind.ObjectKeyword),\n string: factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),\n boolean: factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword),\n undefined: factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword),\n null: factory.createLiteralTypeNode(factory.createToken(ts.SyntaxKind.NullKeyword)),\n} as const\n\nexport const createTypeLiteralNode = factory.createTypeLiteralNode\n\nexport const createTypeReferenceNode = factory.createTypeReferenceNode\nexport const createNumericLiteral = factory.createNumericLiteral\nexport const createStringLiteral = factory.createStringLiteral\n\nexport const createArrayTypeNode = factory.createArrayTypeNode\n\nexport const createLiteralTypeNode = factory.createLiteralTypeNode\nexport const createNull = factory.createNull\nexport const createIdentifier = factory.createIdentifier\n\nexport const createTupleTypeNode = factory.createTupleTypeNode\nexport const createTrue = factory.createTrue\nexport const createFalse = factory.createFalse\n"]}
|
|
@@ -118,10 +118,10 @@ function createUnionDeclaration({
|
|
|
118
118
|
withParentheses
|
|
119
119
|
}) {
|
|
120
120
|
if (!nodes.length) {
|
|
121
|
-
return
|
|
121
|
+
return keywordTypeNodes.any;
|
|
122
122
|
}
|
|
123
123
|
if (nodes.length === 1) {
|
|
124
|
-
return nodes[0]
|
|
124
|
+
return nodes[0];
|
|
125
125
|
}
|
|
126
126
|
const node = factory.createUnionTypeNode(nodes);
|
|
127
127
|
if (withParentheses) {
|
|
@@ -428,5 +428,5 @@ var createTrue = factory.createTrue;
|
|
|
428
428
|
var createFalse = factory.createFalse;
|
|
429
429
|
|
|
430
430
|
export { appendJSDocToNode, createArrayDeclaration, createArrayTypeNode, createEnumDeclaration, createExportDeclaration, createFalse, createIdentifier, createImportDeclaration, createIndexSignature, createIntersectionDeclaration, createJSDoc, createLiteralTypeNode, createNamespaceDeclaration, createNull, createNumericLiteral, createOmitDeclaration, createParameterSignature, createPropertySignature, createQuestionToken, createStringLiteral, createTrue, createTupleDeclaration, createTupleTypeNode, createTypeAliasDeclaration, createTypeLiteralNode, createTypeReferenceNode, createUnionDeclaration, factory_exports, keywordTypeNodes, modifiers };
|
|
431
|
-
//# sourceMappingURL=chunk-
|
|
432
|
-
//# sourceMappingURL=chunk-
|
|
431
|
+
//# sourceMappingURL=chunk-RWXGFVS2.js.map
|
|
432
|
+
//# sourceMappingURL=chunk-RWXGFVS2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/factory.ts"],"names":["modifiers","questionToken","propertyName"],"mappings":"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","file":"chunk-RWXGFVS2.js","sourcesContent":["import { isNumber } from 'remeda'\nimport ts from 'typescript'\n\nconst { factory } = ts\n\n// https://ts-ast-viewer.com/\n\nexport const modifiers = {\n async: factory.createModifier(ts.SyntaxKind.AsyncKeyword),\n export: factory.createModifier(ts.SyntaxKind.ExportKeyword),\n const: factory.createModifier(ts.SyntaxKind.ConstKeyword),\n static: factory.createModifier(ts.SyntaxKind.StaticKeyword),\n} as const\n\nfunction isValidIdentifier(str: string): boolean {\n if (!str.length || str.trim() !== str) {\n return false\n }\n const node = ts.parseIsolatedEntityName(str, ts.ScriptTarget.Latest)\n\n return !!node && node.kind === ts.SyntaxKind.Identifier && ts.identifierToKeywordKind(node.kind as unknown as ts.Identifier) === undefined\n}\n\nfunction propertyName(name: string | ts.PropertyName): ts.PropertyName {\n if (typeof name === 'string') {\n return isValidIdentifier(name) ? factory.createIdentifier(name) : factory.createStringLiteral(name)\n }\n return name\n}\n\nconst questionToken = factory.createToken(ts.SyntaxKind.QuestionToken)\n\nexport function createQuestionToken(token?: boolean | ts.QuestionToken) {\n if (!token) {\n return undefined\n }\n if (token === true) {\n return questionToken\n }\n return token\n}\n\nexport function createIntersectionDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createIntersectionTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\n/**\n * Minimum nodes length of 2\n * @example `string & number`\n */\nexport function createTupleDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createTupleTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\nexport function createArrayDeclaration({\n nodes,\n}: {\n nodes: Array<ts.TypeNode>\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return factory.createTupleTypeNode([])\n }\n\n if (nodes.length === 1) {\n return factory.createArrayTypeNode(nodes.at(0)!)\n }\n\n return factory.createExpressionWithTypeArguments(factory.createIdentifier('Array'), [factory.createUnionTypeNode(nodes)])\n}\n\n/**\n * Minimum nodes length of 2\n * @example `string | number`\n */\nexport function createUnionDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode {\n if (!nodes.length) {\n return keywordTypeNodes.any\n }\n\n if (nodes.length === 1) {\n return nodes[0] as ts.TypeNode\n }\n\n const node = factory.createUnionTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\nexport function createPropertySignature({\n readOnly,\n modifiers = [],\n name,\n questionToken,\n type,\n}: {\n readOnly?: boolean\n modifiers?: Array<ts.Modifier>\n name: ts.PropertyName | string\n questionToken?: ts.QuestionToken | boolean\n type?: ts.TypeNode\n}) {\n return factory.createPropertySignature(\n [...modifiers, readOnly ? factory.createToken(ts.SyntaxKind.ReadonlyKeyword) : undefined].filter(Boolean),\n propertyName(name),\n createQuestionToken(questionToken),\n type,\n )\n}\n\nexport function createParameterSignature(\n name: string | ts.BindingName,\n {\n modifiers,\n dotDotDotToken,\n questionToken,\n type,\n initializer,\n }: {\n decorators?: Array<ts.Decorator>\n modifiers?: Array<ts.Modifier>\n dotDotDotToken?: ts.DotDotDotToken\n questionToken?: ts.QuestionToken | boolean\n type?: ts.TypeNode\n initializer?: ts.Expression\n },\n): ts.ParameterDeclaration {\n return factory.createParameterDeclaration(modifiers, dotDotDotToken, name, createQuestionToken(questionToken), type, initializer)\n}\n\nexport function createJSDoc({ comments }: { comments: string[] }) {\n if (!comments.length) {\n return null\n }\n return factory.createJSDocComment(\n factory.createNodeArray(\n comments.map((comment, i) => {\n if (i === comments.length - 1) {\n return factory.createJSDocText(comment)\n }\n\n return factory.createJSDocText(`${comment}\\n`)\n }),\n ),\n )\n}\n\n/**\n * @link https://github.com/microsoft/TypeScript/issues/44151\n */\nexport function appendJSDocToNode<TNode extends ts.Node>({\n node,\n comments,\n}: {\n node: TNode\n comments: Array<string | undefined>\n}) {\n const filteredComments = comments.filter(Boolean)\n\n if (!filteredComments.length) {\n return node\n }\n\n const text = filteredComments.reduce((acc = '', comment = '') => {\n return `${acc}\\n * ${comment.replaceAll('*/', '*\\\\/')}`\n }, '*')\n\n // node: {...node}, with that ts.addSyntheticLeadingComment is appending\n return ts.addSyntheticLeadingComment({ ...node }, ts.SyntaxKind.MultiLineCommentTrivia, `${text || '*'}\\n`, true)\n}\n\nexport function createIndexSignature(\n type: ts.TypeNode,\n {\n modifiers,\n indexName = 'key',\n indexType = factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),\n }: {\n indexName?: string\n indexType?: ts.TypeNode\n decorators?: Array<ts.Decorator>\n modifiers?: Array<ts.Modifier>\n } = {},\n) {\n return factory.createIndexSignature(modifiers, [createParameterSignature(indexName, { type: indexType })], type)\n}\n\nexport function createTypeAliasDeclaration({\n modifiers,\n name,\n typeParameters,\n type,\n}: {\n modifiers?: Array<ts.Modifier>\n name: string | ts.Identifier\n typeParameters?: Array<ts.TypeParameterDeclaration>\n type: ts.TypeNode\n}) {\n return factory.createTypeAliasDeclaration(modifiers, name, typeParameters, type)\n}\n\nexport function createNamespaceDeclaration({\n statements,\n name,\n}: {\n name: string\n statements: ts.Statement[]\n}) {\n return factory.createModuleDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(name),\n factory.createModuleBlock(statements),\n ts.NodeFlags.Namespace,\n )\n}\n\n/**\n * In { propertyName: string; name?: string } is `name` being used to make the type more unique when multiple same names are used.\n * @example `import { Pet as Cat } from './Pet'`\n */\nexport function createImportDeclaration({\n name,\n path,\n isTypeOnly = false,\n isNameSpace = false,\n}: {\n name: string | Array<string | { propertyName: string; name?: string }>\n path: string\n isTypeOnly?: boolean\n isNameSpace?: boolean\n}) {\n if (!Array.isArray(name)) {\n let importPropertyName: ts.Identifier | undefined = factory.createIdentifier(name)\n let importName: ts.NamedImportBindings | undefined = undefined\n\n if (isNameSpace) {\n importPropertyName = undefined\n importName = factory.createNamespaceImport(factory.createIdentifier(name))\n }\n\n return factory.createImportDeclaration(\n undefined,\n factory.createImportClause(isTypeOnly, importPropertyName, importName),\n factory.createStringLiteral(path),\n undefined,\n )\n }\n\n return factory.createImportDeclaration(\n undefined,\n factory.createImportClause(\n isTypeOnly,\n undefined,\n factory.createNamedImports(\n name.map((item) => {\n if (typeof item === 'object') {\n const obj = item as { propertyName: string; name?: string }\n if (obj.name) {\n return factory.createImportSpecifier(false, factory.createIdentifier(obj.propertyName), factory.createIdentifier(obj.name))\n }\n\n return factory.createImportSpecifier(false, undefined, factory.createIdentifier(obj.propertyName))\n }\n\n return factory.createImportSpecifier(false, undefined, factory.createIdentifier(item))\n }),\n ),\n ),\n factory.createStringLiteral(path),\n undefined,\n )\n}\n\nexport function createExportDeclaration({\n path,\n asAlias,\n isTypeOnly = false,\n name,\n}: {\n path: string\n asAlias?: boolean\n isTypeOnly?: boolean\n name?: string | Array<ts.Identifier | string>\n}) {\n if (name && !Array.isArray(name) && !asAlias) {\n console.warn(`When using name as string, asAlias should be true ${name}`)\n }\n\n if (!Array.isArray(name)) {\n const parsedName = name?.match(/^\\d/) ? `_${name?.slice(1)}` : name\n\n return factory.createExportDeclaration(\n undefined,\n isTypeOnly,\n asAlias && parsedName ? factory.createNamespaceExport(factory.createIdentifier(parsedName)) : undefined,\n factory.createStringLiteral(path),\n undefined,\n )\n }\n\n return factory.createExportDeclaration(\n undefined,\n isTypeOnly,\n factory.createNamedExports(\n name.map((propertyName) => {\n return factory.createExportSpecifier(false, undefined, typeof propertyName === 'string' ? factory.createIdentifier(propertyName) : propertyName)\n }),\n ),\n factory.createStringLiteral(path),\n undefined,\n )\n}\n\nexport function createEnumDeclaration({\n type = 'enum',\n name,\n typeName,\n enums,\n}: {\n /**\n * @default `'enum'`\n */\n type?: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n /**\n * Enum name in camelCase.\n */\n name: string\n /**\n * Enum name in PascalCase.\n */\n typeName: string\n enums: [key: string | number, value: string | number | boolean][]\n}): [name: ts.Node | undefined, type: ts.Node] {\n if (type === 'literal') {\n return [\n undefined,\n factory.createTypeAliasDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(typeName),\n undefined,\n factory.createUnionTypeNode(\n enums\n .map(([_key, value]) => {\n if (isNumber(value)) {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value?.toString()))\n }\n\n if (typeof value === 'boolean') {\n return factory.createLiteralTypeNode(value ? factory.createTrue() : factory.createFalse())\n }\n if (value) {\n return factory.createLiteralTypeNode(factory.createStringLiteral(value.toString()))\n }\n\n return undefined\n })\n .filter(Boolean),\n ),\n ),\n ]\n }\n\n if (type === 'enum' || type === 'constEnum') {\n return [\n undefined,\n factory.createEnumDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword), type === 'constEnum' ? factory.createToken(ts.SyntaxKind.ConstKeyword) : undefined].filter(Boolean),\n factory.createIdentifier(typeName),\n enums\n .map(([key, value]) => {\n let initializer: ts.Expression = factory.createStringLiteral(value?.toString())\n\n if (isNumber(Number.parseInt(value.toString()))) {\n initializer = factory.createNumericLiteral(value as number)\n }\n if (typeof value === 'boolean') {\n initializer = value ? factory.createTrue() : factory.createFalse()\n }\n\n if (isNumber(Number.parseInt(key.toString()))) {\n return factory.createEnumMember(factory.createStringLiteral(`${typeName}_${key}`), initializer)\n }\n\n if (key) {\n return factory.createEnumMember(factory.createStringLiteral(`${key}`), initializer)\n }\n\n return undefined\n })\n .filter(Boolean),\n ),\n ]\n }\n\n // used when using `as const` instead of an TypeScript enum.\n const identifierName = type === 'asPascalConst' ? typeName : name\n\n return [\n factory.createVariableStatement(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createVariableDeclarationList(\n [\n factory.createVariableDeclaration(\n factory.createIdentifier(identifierName),\n undefined,\n undefined,\n factory.createAsExpression(\n factory.createObjectLiteralExpression(\n enums\n .map(([key, value]) => {\n let initializer: ts.Expression = factory.createStringLiteral(`${value?.toString()}`)\n\n if (isNumber(value)) {\n // Error: Negative numbers should be created in combination with createPrefixUnaryExpression factory.\n // The method createNumericLiteral only accepts positive numbers\n // or those combined with createPrefixUnaryExpression.\n // Therefore, we need to ensure that the number is not negative.\n if (value < 0) {\n initializer = factory.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, factory.createNumericLiteral(Math.abs(value)))\n } else {\n initializer = factory.createNumericLiteral(value)\n }\n }\n\n if (typeof value === 'boolean') {\n initializer = value ? factory.createTrue() : factory.createFalse()\n }\n\n if (key) {\n return factory.createPropertyAssignment(factory.createStringLiteral(`${key}`), initializer)\n }\n\n return undefined\n })\n .filter(Boolean),\n true,\n ),\n factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n factory.createTypeAliasDeclaration(\n type === 'asPascalConst' ? [] : [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(typeName),\n undefined,\n factory.createIndexedAccessTypeNode(\n factory.createParenthesizedType(factory.createTypeQueryNode(factory.createIdentifier(identifierName), undefined)),\n factory.createTypeOperatorNode(ts.SyntaxKind.KeyOfKeyword, factory.createTypeQueryNode(factory.createIdentifier(identifierName), undefined)),\n ),\n ),\n ]\n}\n\nexport function createOmitDeclaration({\n keys,\n type,\n nonNullable,\n}: {\n keys: Array<string> | string\n type: ts.TypeNode\n nonNullable?: boolean\n}) {\n const node = nonNullable ? factory.createTypeReferenceNode(factory.createIdentifier('NonNullable'), [type]) : type\n\n if (Array.isArray(keys)) {\n return factory.createTypeReferenceNode(factory.createIdentifier('Omit'), [\n node,\n factory.createUnionTypeNode(\n keys.map((key) => {\n return factory.createLiteralTypeNode(factory.createStringLiteral(key))\n }),\n ),\n ])\n }\n\n return factory.createTypeReferenceNode(factory.createIdentifier('Omit'), [node, factory.createLiteralTypeNode(factory.createStringLiteral(keys))])\n}\n\nexport const keywordTypeNodes = {\n any: factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),\n unknown: factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n number: factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),\n integer: factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),\n object: factory.createKeywordTypeNode(ts.SyntaxKind.ObjectKeyword),\n string: factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),\n boolean: factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword),\n undefined: factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword),\n null: factory.createLiteralTypeNode(factory.createToken(ts.SyntaxKind.NullKeyword)),\n} as const\n\nexport const createTypeLiteralNode = factory.createTypeLiteralNode\n\nexport const createTypeReferenceNode = factory.createTypeReferenceNode\nexport const createNumericLiteral = factory.createNumericLiteral\nexport const createStringLiteral = factory.createStringLiteral\n\nexport const createArrayTypeNode = factory.createArrayTypeNode\n\nexport const createLiteralTypeNode = factory.createLiteralTypeNode\nexport const createNull = factory.createNull\nexport const createIdentifier = factory.createIdentifier\n\nexport const createTupleTypeNode = factory.createTupleTypeNode\nexport const createTrue = factory.createTrue\nexport const createFalse = factory.createFalse\n"]}
|
|
@@ -29,7 +29,7 @@ declare function createArrayDeclaration({ nodes, }: {
|
|
|
29
29
|
declare function createUnionDeclaration({ nodes, withParentheses, }: {
|
|
30
30
|
nodes: Array<ts.TypeNode>;
|
|
31
31
|
withParentheses?: boolean;
|
|
32
|
-
}): ts.TypeNode
|
|
32
|
+
}): ts.TypeNode;
|
|
33
33
|
declare function createPropertySignature({ readOnly, modifiers, name, questionToken, type, }: {
|
|
34
34
|
readOnly?: boolean;
|
|
35
35
|
modifiers?: Array<ts.Modifier>;
|
|
@@ -29,7 +29,7 @@ declare function createArrayDeclaration({ nodes, }: {
|
|
|
29
29
|
declare function createUnionDeclaration({ nodes, withParentheses, }: {
|
|
30
30
|
nodes: Array<ts.TypeNode>;
|
|
31
31
|
withParentheses?: boolean;
|
|
32
|
-
}): ts.TypeNode
|
|
32
|
+
}): ts.TypeNode;
|
|
33
33
|
declare function createPropertySignature({ readOnly, modifiers, name, questionToken, type, }: {
|
|
34
34
|
readOnly?: boolean;
|
|
35
35
|
modifiers?: Array<ts.Modifier>;
|
package/dist/factory.cjs
CHANGED
|
@@ -1,124 +1,124 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkDVADLCYY_cjs = require('./chunk-DVADLCYY.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
Object.defineProperty(exports, "appendJSDocToNode", {
|
|
8
8
|
enumerable: true,
|
|
9
|
-
get: function () { return
|
|
9
|
+
get: function () { return chunkDVADLCYY_cjs.appendJSDocToNode; }
|
|
10
10
|
});
|
|
11
11
|
Object.defineProperty(exports, "createArrayDeclaration", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunkDVADLCYY_cjs.createArrayDeclaration; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "createArrayTypeNode", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkDVADLCYY_cjs.createArrayTypeNode; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "createEnumDeclaration", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkDVADLCYY_cjs.createEnumDeclaration; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "createExportDeclaration", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkDVADLCYY_cjs.createExportDeclaration; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "createFalse", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkDVADLCYY_cjs.createFalse; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "createIdentifier", {
|
|
32
32
|
enumerable: true,
|
|
33
|
-
get: function () { return
|
|
33
|
+
get: function () { return chunkDVADLCYY_cjs.createIdentifier; }
|
|
34
34
|
});
|
|
35
35
|
Object.defineProperty(exports, "createImportDeclaration", {
|
|
36
36
|
enumerable: true,
|
|
37
|
-
get: function () { return
|
|
37
|
+
get: function () { return chunkDVADLCYY_cjs.createImportDeclaration; }
|
|
38
38
|
});
|
|
39
39
|
Object.defineProperty(exports, "createIndexSignature", {
|
|
40
40
|
enumerable: true,
|
|
41
|
-
get: function () { return
|
|
41
|
+
get: function () { return chunkDVADLCYY_cjs.createIndexSignature; }
|
|
42
42
|
});
|
|
43
43
|
Object.defineProperty(exports, "createIntersectionDeclaration", {
|
|
44
44
|
enumerable: true,
|
|
45
|
-
get: function () { return
|
|
45
|
+
get: function () { return chunkDVADLCYY_cjs.createIntersectionDeclaration; }
|
|
46
46
|
});
|
|
47
47
|
Object.defineProperty(exports, "createJSDoc", {
|
|
48
48
|
enumerable: true,
|
|
49
|
-
get: function () { return
|
|
49
|
+
get: function () { return chunkDVADLCYY_cjs.createJSDoc; }
|
|
50
50
|
});
|
|
51
51
|
Object.defineProperty(exports, "createLiteralTypeNode", {
|
|
52
52
|
enumerable: true,
|
|
53
|
-
get: function () { return
|
|
53
|
+
get: function () { return chunkDVADLCYY_cjs.createLiteralTypeNode; }
|
|
54
54
|
});
|
|
55
55
|
Object.defineProperty(exports, "createNamespaceDeclaration", {
|
|
56
56
|
enumerable: true,
|
|
57
|
-
get: function () { return
|
|
57
|
+
get: function () { return chunkDVADLCYY_cjs.createNamespaceDeclaration; }
|
|
58
58
|
});
|
|
59
59
|
Object.defineProperty(exports, "createNull", {
|
|
60
60
|
enumerable: true,
|
|
61
|
-
get: function () { return
|
|
61
|
+
get: function () { return chunkDVADLCYY_cjs.createNull; }
|
|
62
62
|
});
|
|
63
63
|
Object.defineProperty(exports, "createNumericLiteral", {
|
|
64
64
|
enumerable: true,
|
|
65
|
-
get: function () { return
|
|
65
|
+
get: function () { return chunkDVADLCYY_cjs.createNumericLiteral; }
|
|
66
66
|
});
|
|
67
67
|
Object.defineProperty(exports, "createOmitDeclaration", {
|
|
68
68
|
enumerable: true,
|
|
69
|
-
get: function () { return
|
|
69
|
+
get: function () { return chunkDVADLCYY_cjs.createOmitDeclaration; }
|
|
70
70
|
});
|
|
71
71
|
Object.defineProperty(exports, "createParameterSignature", {
|
|
72
72
|
enumerable: true,
|
|
73
|
-
get: function () { return
|
|
73
|
+
get: function () { return chunkDVADLCYY_cjs.createParameterSignature; }
|
|
74
74
|
});
|
|
75
75
|
Object.defineProperty(exports, "createPropertySignature", {
|
|
76
76
|
enumerable: true,
|
|
77
|
-
get: function () { return
|
|
77
|
+
get: function () { return chunkDVADLCYY_cjs.createPropertySignature; }
|
|
78
78
|
});
|
|
79
79
|
Object.defineProperty(exports, "createQuestionToken", {
|
|
80
80
|
enumerable: true,
|
|
81
|
-
get: function () { return
|
|
81
|
+
get: function () { return chunkDVADLCYY_cjs.createQuestionToken; }
|
|
82
82
|
});
|
|
83
83
|
Object.defineProperty(exports, "createStringLiteral", {
|
|
84
84
|
enumerable: true,
|
|
85
|
-
get: function () { return
|
|
85
|
+
get: function () { return chunkDVADLCYY_cjs.createStringLiteral; }
|
|
86
86
|
});
|
|
87
87
|
Object.defineProperty(exports, "createTrue", {
|
|
88
88
|
enumerable: true,
|
|
89
|
-
get: function () { return
|
|
89
|
+
get: function () { return chunkDVADLCYY_cjs.createTrue; }
|
|
90
90
|
});
|
|
91
91
|
Object.defineProperty(exports, "createTupleDeclaration", {
|
|
92
92
|
enumerable: true,
|
|
93
|
-
get: function () { return
|
|
93
|
+
get: function () { return chunkDVADLCYY_cjs.createTupleDeclaration; }
|
|
94
94
|
});
|
|
95
95
|
Object.defineProperty(exports, "createTupleTypeNode", {
|
|
96
96
|
enumerable: true,
|
|
97
|
-
get: function () { return
|
|
97
|
+
get: function () { return chunkDVADLCYY_cjs.createTupleTypeNode; }
|
|
98
98
|
});
|
|
99
99
|
Object.defineProperty(exports, "createTypeAliasDeclaration", {
|
|
100
100
|
enumerable: true,
|
|
101
|
-
get: function () { return
|
|
101
|
+
get: function () { return chunkDVADLCYY_cjs.createTypeAliasDeclaration; }
|
|
102
102
|
});
|
|
103
103
|
Object.defineProperty(exports, "createTypeLiteralNode", {
|
|
104
104
|
enumerable: true,
|
|
105
|
-
get: function () { return
|
|
105
|
+
get: function () { return chunkDVADLCYY_cjs.createTypeLiteralNode; }
|
|
106
106
|
});
|
|
107
107
|
Object.defineProperty(exports, "createTypeReferenceNode", {
|
|
108
108
|
enumerable: true,
|
|
109
|
-
get: function () { return
|
|
109
|
+
get: function () { return chunkDVADLCYY_cjs.createTypeReferenceNode; }
|
|
110
110
|
});
|
|
111
111
|
Object.defineProperty(exports, "createUnionDeclaration", {
|
|
112
112
|
enumerable: true,
|
|
113
|
-
get: function () { return
|
|
113
|
+
get: function () { return chunkDVADLCYY_cjs.createUnionDeclaration; }
|
|
114
114
|
});
|
|
115
115
|
Object.defineProperty(exports, "keywordTypeNodes", {
|
|
116
116
|
enumerable: true,
|
|
117
|
-
get: function () { return
|
|
117
|
+
get: function () { return chunkDVADLCYY_cjs.keywordTypeNodes; }
|
|
118
118
|
});
|
|
119
119
|
Object.defineProperty(exports, "modifiers", {
|
|
120
120
|
enumerable: true,
|
|
121
|
-
get: function () { return
|
|
121
|
+
get: function () { return chunkDVADLCYY_cjs.modifiers; }
|
|
122
122
|
});
|
|
123
123
|
//# sourceMappingURL=factory.cjs.map
|
|
124
124
|
//# sourceMappingURL=factory.cjs.map
|
package/dist/factory.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import 'typescript';
|
|
2
|
-
export { j as appendJSDocToNode, d as createArrayDeclaration, x as createArrayTypeNode, q as createEnumDeclaration, p as createExportDeclaration, D as createFalse, A as createIdentifier, o as createImportDeclaration, k as createIndexSignature, a as createIntersectionDeclaration, i as createJSDoc, y as createLiteralTypeNode, n as createNamespaceDeclaration, z as createNull, v as createNumericLiteral, r as createOmitDeclaration, h as createParameterSignature, g as createPropertySignature, c as createQuestionToken, w as createStringLiteral, C as createTrue, b as createTupleDeclaration, B as createTupleTypeNode, l as createTypeAliasDeclaration, t as createTypeLiteralNode, u as createTypeReferenceNode, e as createUnionDeclaration, s as keywordTypeNodes, m as modifiers } from './factory-
|
|
2
|
+
export { j as appendJSDocToNode, d as createArrayDeclaration, x as createArrayTypeNode, q as createEnumDeclaration, p as createExportDeclaration, D as createFalse, A as createIdentifier, o as createImportDeclaration, k as createIndexSignature, a as createIntersectionDeclaration, i as createJSDoc, y as createLiteralTypeNode, n as createNamespaceDeclaration, z as createNull, v as createNumericLiteral, r as createOmitDeclaration, h as createParameterSignature, g as createPropertySignature, c as createQuestionToken, w as createStringLiteral, C as createTrue, b as createTupleDeclaration, B as createTupleTypeNode, l as createTypeAliasDeclaration, t as createTypeLiteralNode, u as createTypeReferenceNode, e as createUnionDeclaration, s as keywordTypeNodes, m as modifiers } from './factory-1NIBrzkm.cjs';
|
package/dist/factory.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import 'typescript';
|
|
2
|
-
export { j as appendJSDocToNode, d as createArrayDeclaration, x as createArrayTypeNode, q as createEnumDeclaration, p as createExportDeclaration, D as createFalse, A as createIdentifier, o as createImportDeclaration, k as createIndexSignature, a as createIntersectionDeclaration, i as createJSDoc, y as createLiteralTypeNode, n as createNamespaceDeclaration, z as createNull, v as createNumericLiteral, r as createOmitDeclaration, h as createParameterSignature, g as createPropertySignature, c as createQuestionToken, w as createStringLiteral, C as createTrue, b as createTupleDeclaration, B as createTupleTypeNode, l as createTypeAliasDeclaration, t as createTypeLiteralNode, u as createTypeReferenceNode, e as createUnionDeclaration, s as keywordTypeNodes, m as modifiers } from './factory-
|
|
2
|
+
export { j as appendJSDocToNode, d as createArrayDeclaration, x as createArrayTypeNode, q as createEnumDeclaration, p as createExportDeclaration, D as createFalse, A as createIdentifier, o as createImportDeclaration, k as createIndexSignature, a as createIntersectionDeclaration, i as createJSDoc, y as createLiteralTypeNode, n as createNamespaceDeclaration, z as createNull, v as createNumericLiteral, r as createOmitDeclaration, h as createParameterSignature, g as createPropertySignature, c as createQuestionToken, w as createStringLiteral, C as createTrue, b as createTupleDeclaration, B as createTupleTypeNode, l as createTypeAliasDeclaration, t as createTypeLiteralNode, u as createTypeReferenceNode, e as createUnionDeclaration, s as keywordTypeNodes, m as modifiers } from './factory-1NIBrzkm.js';
|
package/dist/factory.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { appendJSDocToNode, createArrayDeclaration, createArrayTypeNode, createEnumDeclaration, createExportDeclaration, createFalse, createIdentifier, createImportDeclaration, createIndexSignature, createIntersectionDeclaration, createJSDoc, createLiteralTypeNode, createNamespaceDeclaration, createNull, createNumericLiteral, createOmitDeclaration, createParameterSignature, createPropertySignature, createQuestionToken, createStringLiteral, createTrue, createTupleDeclaration, createTupleTypeNode, createTypeAliasDeclaration, createTypeLiteralNode, createTypeReferenceNode, createUnionDeclaration, keywordTypeNodes, modifiers } from './chunk-
|
|
1
|
+
export { appendJSDocToNode, createArrayDeclaration, createArrayTypeNode, createEnumDeclaration, createExportDeclaration, createFalse, createIdentifier, createImportDeclaration, createIndexSignature, createIntersectionDeclaration, createJSDoc, createLiteralTypeNode, createNamespaceDeclaration, createNull, createNumericLiteral, createOmitDeclaration, createParameterSignature, createPropertySignature, createQuestionToken, createStringLiteral, createTrue, createTupleDeclaration, createTupleTypeNode, createTypeAliasDeclaration, createTypeLiteralNode, createTypeReferenceNode, createUnionDeclaration, keywordTypeNodes, modifiers } from './chunk-RWXGFVS2.js';
|
|
2
2
|
//# sourceMappingURL=factory.js.map
|
|
3
3
|
//# sourceMappingURL=factory.js.map
|
package/dist/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkDVADLCYY_cjs = require('./chunk-DVADLCYY.cjs');
|
|
4
4
|
var ts = require('typescript');
|
|
5
5
|
|
|
6
6
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -39,7 +39,7 @@ function format(source) {
|
|
|
39
39
|
|
|
40
40
|
Object.defineProperty(exports, "factory", {
|
|
41
41
|
enumerable: true,
|
|
42
|
-
get: function () { return
|
|
42
|
+
get: function () { return chunkDVADLCYY_cjs.factory_exports; }
|
|
43
43
|
});
|
|
44
44
|
exports.format = format;
|
|
45
45
|
exports.print = print;
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubb/parser-ts",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.7",
|
|
4
4
|
"description": "TypeScript parser",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -48,13 +48,13 @@
|
|
|
48
48
|
"!/**/__tests__/**"
|
|
49
49
|
],
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"remeda": "^2.
|
|
52
|
-
"typescript": "^5.6.
|
|
51
|
+
"remeda": "^2.16.0",
|
|
52
|
+
"typescript": "^5.6.3"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"tsup": "^8.3.0",
|
|
56
|
-
"@kubb/config-ts": "3.0.0-beta.
|
|
57
|
-
"@kubb/config-tsup": "3.0.0-beta.
|
|
56
|
+
"@kubb/config-ts": "3.0.0-beta.7",
|
|
57
|
+
"@kubb/config-tsup": "3.0.0-beta.7"
|
|
58
58
|
},
|
|
59
59
|
"engines": {
|
|
60
60
|
"node": ">=20"
|
package/src/factory.ts
CHANGED
|
@@ -118,13 +118,13 @@ export function createUnionDeclaration({
|
|
|
118
118
|
}: {
|
|
119
119
|
nodes: Array<ts.TypeNode>
|
|
120
120
|
withParentheses?: boolean
|
|
121
|
-
}): ts.TypeNode
|
|
121
|
+
}): ts.TypeNode {
|
|
122
122
|
if (!nodes.length) {
|
|
123
|
-
return
|
|
123
|
+
return keywordTypeNodes.any
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
if (nodes.length === 1) {
|
|
127
|
-
return nodes[0]
|
|
127
|
+
return nodes[0] as ts.TypeNode
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
const node = factory.createUnionTypeNode(nodes)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/factory.ts"],"names":["modifiers","questionToken","propertyName"],"mappings":"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","file":"chunk-GUQGBXJ7.js","sourcesContent":["import { isNumber } from 'remeda'\nimport ts from 'typescript'\n\nconst { factory } = ts\n\n// https://ts-ast-viewer.com/\n\nexport const modifiers = {\n async: factory.createModifier(ts.SyntaxKind.AsyncKeyword),\n export: factory.createModifier(ts.SyntaxKind.ExportKeyword),\n const: factory.createModifier(ts.SyntaxKind.ConstKeyword),\n static: factory.createModifier(ts.SyntaxKind.StaticKeyword),\n} as const\n\nfunction isValidIdentifier(str: string): boolean {\n if (!str.length || str.trim() !== str) {\n return false\n }\n const node = ts.parseIsolatedEntityName(str, ts.ScriptTarget.Latest)\n\n return !!node && node.kind === ts.SyntaxKind.Identifier && ts.identifierToKeywordKind(node.kind as unknown as ts.Identifier) === undefined\n}\n\nfunction propertyName(name: string | ts.PropertyName): ts.PropertyName {\n if (typeof name === 'string') {\n return isValidIdentifier(name) ? factory.createIdentifier(name) : factory.createStringLiteral(name)\n }\n return name\n}\n\nconst questionToken = factory.createToken(ts.SyntaxKind.QuestionToken)\n\nexport function createQuestionToken(token?: boolean | ts.QuestionToken) {\n if (!token) {\n return undefined\n }\n if (token === true) {\n return questionToken\n }\n return token\n}\n\nexport function createIntersectionDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createIntersectionTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\n/**\n * Minimum nodes length of 2\n * @example `string & number`\n */\nexport function createTupleDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createTupleTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\nexport function createArrayDeclaration({\n nodes,\n}: {\n nodes: Array<ts.TypeNode>\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return factory.createTupleTypeNode([])\n }\n\n if (nodes.length === 1) {\n return factory.createArrayTypeNode(nodes.at(0)!)\n }\n\n return factory.createExpressionWithTypeArguments(factory.createIdentifier('Array'), [factory.createUnionTypeNode(nodes)])\n}\n\n/**\n * Minimum nodes length of 2\n * @example `string | number`\n */\nexport function createUnionDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createUnionTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\nexport function createPropertySignature({\n readOnly,\n modifiers = [],\n name,\n questionToken,\n type,\n}: {\n readOnly?: boolean\n modifiers?: Array<ts.Modifier>\n name: ts.PropertyName | string\n questionToken?: ts.QuestionToken | boolean\n type?: ts.TypeNode\n}) {\n return factory.createPropertySignature(\n [...modifiers, readOnly ? factory.createToken(ts.SyntaxKind.ReadonlyKeyword) : undefined].filter(Boolean),\n propertyName(name),\n createQuestionToken(questionToken),\n type,\n )\n}\n\nexport function createParameterSignature(\n name: string | ts.BindingName,\n {\n modifiers,\n dotDotDotToken,\n questionToken,\n type,\n initializer,\n }: {\n decorators?: Array<ts.Decorator>\n modifiers?: Array<ts.Modifier>\n dotDotDotToken?: ts.DotDotDotToken\n questionToken?: ts.QuestionToken | boolean\n type?: ts.TypeNode\n initializer?: ts.Expression\n },\n): ts.ParameterDeclaration {\n return factory.createParameterDeclaration(modifiers, dotDotDotToken, name, createQuestionToken(questionToken), type, initializer)\n}\n\nexport function createJSDoc({ comments }: { comments: string[] }) {\n if (!comments.length) {\n return null\n }\n return factory.createJSDocComment(\n factory.createNodeArray(\n comments.map((comment, i) => {\n if (i === comments.length - 1) {\n return factory.createJSDocText(comment)\n }\n\n return factory.createJSDocText(`${comment}\\n`)\n }),\n ),\n )\n}\n\n/**\n * @link https://github.com/microsoft/TypeScript/issues/44151\n */\nexport function appendJSDocToNode<TNode extends ts.Node>({\n node,\n comments,\n}: {\n node: TNode\n comments: Array<string | undefined>\n}) {\n const filteredComments = comments.filter(Boolean)\n\n if (!filteredComments.length) {\n return node\n }\n\n const text = filteredComments.reduce((acc = '', comment = '') => {\n return `${acc}\\n * ${comment.replaceAll('*/', '*\\\\/')}`\n }, '*')\n\n // node: {...node}, with that ts.addSyntheticLeadingComment is appending\n return ts.addSyntheticLeadingComment({ ...node }, ts.SyntaxKind.MultiLineCommentTrivia, `${text || '*'}\\n`, true)\n}\n\nexport function createIndexSignature(\n type: ts.TypeNode,\n {\n modifiers,\n indexName = 'key',\n indexType = factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),\n }: {\n indexName?: string\n indexType?: ts.TypeNode\n decorators?: Array<ts.Decorator>\n modifiers?: Array<ts.Modifier>\n } = {},\n) {\n return factory.createIndexSignature(modifiers, [createParameterSignature(indexName, { type: indexType })], type)\n}\n\nexport function createTypeAliasDeclaration({\n modifiers,\n name,\n typeParameters,\n type,\n}: {\n modifiers?: Array<ts.Modifier>\n name: string | ts.Identifier\n typeParameters?: Array<ts.TypeParameterDeclaration>\n type: ts.TypeNode\n}) {\n return factory.createTypeAliasDeclaration(modifiers, name, typeParameters, type)\n}\n\nexport function createNamespaceDeclaration({\n statements,\n name,\n}: {\n name: string\n statements: ts.Statement[]\n}) {\n return factory.createModuleDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(name),\n factory.createModuleBlock(statements),\n ts.NodeFlags.Namespace,\n )\n}\n\n/**\n * In { propertyName: string; name?: string } is `name` being used to make the type more unique when multiple same names are used.\n * @example `import { Pet as Cat } from './Pet'`\n */\nexport function createImportDeclaration({\n name,\n path,\n isTypeOnly = false,\n isNameSpace = false,\n}: {\n name: string | Array<string | { propertyName: string; name?: string }>\n path: string\n isTypeOnly?: boolean\n isNameSpace?: boolean\n}) {\n if (!Array.isArray(name)) {\n let importPropertyName: ts.Identifier | undefined = factory.createIdentifier(name)\n let importName: ts.NamedImportBindings | undefined = undefined\n\n if (isNameSpace) {\n importPropertyName = undefined\n importName = factory.createNamespaceImport(factory.createIdentifier(name))\n }\n\n return factory.createImportDeclaration(\n undefined,\n factory.createImportClause(isTypeOnly, importPropertyName, importName),\n factory.createStringLiteral(path),\n undefined,\n )\n }\n\n return factory.createImportDeclaration(\n undefined,\n factory.createImportClause(\n isTypeOnly,\n undefined,\n factory.createNamedImports(\n name.map((item) => {\n if (typeof item === 'object') {\n const obj = item as { propertyName: string; name?: string }\n if (obj.name) {\n return factory.createImportSpecifier(false, factory.createIdentifier(obj.propertyName), factory.createIdentifier(obj.name))\n }\n\n return factory.createImportSpecifier(false, undefined, factory.createIdentifier(obj.propertyName))\n }\n\n return factory.createImportSpecifier(false, undefined, factory.createIdentifier(item))\n }),\n ),\n ),\n factory.createStringLiteral(path),\n undefined,\n )\n}\n\nexport function createExportDeclaration({\n path,\n asAlias,\n isTypeOnly = false,\n name,\n}: {\n path: string\n asAlias?: boolean\n isTypeOnly?: boolean\n name?: string | Array<ts.Identifier | string>\n}) {\n if (name && !Array.isArray(name) && !asAlias) {\n console.warn(`When using name as string, asAlias should be true ${name}`)\n }\n\n if (!Array.isArray(name)) {\n const parsedName = name?.match(/^\\d/) ? `_${name?.slice(1)}` : name\n\n return factory.createExportDeclaration(\n undefined,\n isTypeOnly,\n asAlias && parsedName ? factory.createNamespaceExport(factory.createIdentifier(parsedName)) : undefined,\n factory.createStringLiteral(path),\n undefined,\n )\n }\n\n return factory.createExportDeclaration(\n undefined,\n isTypeOnly,\n factory.createNamedExports(\n name.map((propertyName) => {\n return factory.createExportSpecifier(false, undefined, typeof propertyName === 'string' ? factory.createIdentifier(propertyName) : propertyName)\n }),\n ),\n factory.createStringLiteral(path),\n undefined,\n )\n}\n\nexport function createEnumDeclaration({\n type = 'enum',\n name,\n typeName,\n enums,\n}: {\n /**\n * @default `'enum'`\n */\n type?: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n /**\n * Enum name in camelCase.\n */\n name: string\n /**\n * Enum name in PascalCase.\n */\n typeName: string\n enums: [key: string | number, value: string | number | boolean][]\n}): [name: ts.Node | undefined, type: ts.Node] {\n if (type === 'literal') {\n return [\n undefined,\n factory.createTypeAliasDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(typeName),\n undefined,\n factory.createUnionTypeNode(\n enums\n .map(([_key, value]) => {\n if (isNumber(value)) {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value?.toString()))\n }\n\n if (typeof value === 'boolean') {\n return factory.createLiteralTypeNode(value ? factory.createTrue() : factory.createFalse())\n }\n if (value) {\n return factory.createLiteralTypeNode(factory.createStringLiteral(value.toString()))\n }\n\n return undefined\n })\n .filter(Boolean),\n ),\n ),\n ]\n }\n\n if (type === 'enum' || type === 'constEnum') {\n return [\n undefined,\n factory.createEnumDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword), type === 'constEnum' ? factory.createToken(ts.SyntaxKind.ConstKeyword) : undefined].filter(Boolean),\n factory.createIdentifier(typeName),\n enums\n .map(([key, value]) => {\n let initializer: ts.Expression = factory.createStringLiteral(value?.toString())\n\n if (isNumber(Number.parseInt(value.toString()))) {\n initializer = factory.createNumericLiteral(value as number)\n }\n if (typeof value === 'boolean') {\n initializer = value ? factory.createTrue() : factory.createFalse()\n }\n\n if (isNumber(Number.parseInt(key.toString()))) {\n return factory.createEnumMember(factory.createStringLiteral(`${typeName}_${key}`), initializer)\n }\n\n if (key) {\n return factory.createEnumMember(factory.createStringLiteral(`${key}`), initializer)\n }\n\n return undefined\n })\n .filter(Boolean),\n ),\n ]\n }\n\n // used when using `as const` instead of an TypeScript enum.\n const identifierName = type === 'asPascalConst' ? typeName : name\n\n return [\n factory.createVariableStatement(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createVariableDeclarationList(\n [\n factory.createVariableDeclaration(\n factory.createIdentifier(identifierName),\n undefined,\n undefined,\n factory.createAsExpression(\n factory.createObjectLiteralExpression(\n enums\n .map(([key, value]) => {\n let initializer: ts.Expression = factory.createStringLiteral(`${value?.toString()}`)\n\n if (isNumber(value)) {\n // Error: Negative numbers should be created in combination with createPrefixUnaryExpression factory.\n // The method createNumericLiteral only accepts positive numbers\n // or those combined with createPrefixUnaryExpression.\n // Therefore, we need to ensure that the number is not negative.\n if (value < 0) {\n initializer = factory.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, factory.createNumericLiteral(Math.abs(value)))\n } else {\n initializer = factory.createNumericLiteral(value)\n }\n }\n\n if (typeof value === 'boolean') {\n initializer = value ? factory.createTrue() : factory.createFalse()\n }\n\n if (key) {\n return factory.createPropertyAssignment(factory.createStringLiteral(`${key}`), initializer)\n }\n\n return undefined\n })\n .filter(Boolean),\n true,\n ),\n factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n factory.createTypeAliasDeclaration(\n type === 'asPascalConst' ? [] : [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(typeName),\n undefined,\n factory.createIndexedAccessTypeNode(\n factory.createParenthesizedType(factory.createTypeQueryNode(factory.createIdentifier(identifierName), undefined)),\n factory.createTypeOperatorNode(ts.SyntaxKind.KeyOfKeyword, factory.createTypeQueryNode(factory.createIdentifier(identifierName), undefined)),\n ),\n ),\n ]\n}\n\nexport function createOmitDeclaration({\n keys,\n type,\n nonNullable,\n}: {\n keys: Array<string> | string\n type: ts.TypeNode\n nonNullable?: boolean\n}) {\n const node = nonNullable ? factory.createTypeReferenceNode(factory.createIdentifier('NonNullable'), [type]) : type\n\n if (Array.isArray(keys)) {\n return factory.createTypeReferenceNode(factory.createIdentifier('Omit'), [\n node,\n factory.createUnionTypeNode(\n keys.map((key) => {\n return factory.createLiteralTypeNode(factory.createStringLiteral(key))\n }),\n ),\n ])\n }\n\n return factory.createTypeReferenceNode(factory.createIdentifier('Omit'), [node, factory.createLiteralTypeNode(factory.createStringLiteral(keys))])\n}\n\nexport const keywordTypeNodes = {\n any: factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),\n unknown: factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n number: factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),\n integer: factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),\n object: factory.createKeywordTypeNode(ts.SyntaxKind.ObjectKeyword),\n string: factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),\n boolean: factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword),\n undefined: factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword),\n null: factory.createLiteralTypeNode(factory.createToken(ts.SyntaxKind.NullKeyword)),\n} as const\n\nexport const createTypeLiteralNode = factory.createTypeLiteralNode\n\nexport const createTypeReferenceNode = factory.createTypeReferenceNode\nexport const createNumericLiteral = factory.createNumericLiteral\nexport const createStringLiteral = factory.createStringLiteral\n\nexport const createArrayTypeNode = factory.createArrayTypeNode\n\nexport const createLiteralTypeNode = factory.createLiteralTypeNode\nexport const createNull = factory.createNull\nexport const createIdentifier = factory.createIdentifier\n\nexport const createTupleTypeNode = factory.createTupleTypeNode\nexport const createTrue = factory.createTrue\nexport const createFalse = factory.createFalse\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/factory.ts"],"names":["ts","modifiers","questionToken","propertyName","isNumber"],"mappings":";;;;;;;;;;;;;;;;AAAA,IAAA,eAAA,GAAA,GAAA;AAAA,QAAA,CAAA,eAAA,EAAA;AAAA,EAAA,iBAAA,EAAA,MAAA,iBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,6BAAA,EAAA,MAAA,6BAAA;AAAA,EAAA,WAAA,EAAA,MAAA,WAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,oBAAA,EAAA,MAAA,oBAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,wBAAA,EAAA,MAAA,wBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,UAAA,EAAA,MAAA,UAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,mBAAA,EAAA,MAAA,mBAAA;AAAA,EAAA,0BAAA,EAAA,MAAA,0BAAA;AAAA,EAAA,qBAAA,EAAA,MAAA,qBAAA;AAAA,EAAA,uBAAA,EAAA,MAAA,uBAAA;AAAA,EAAA,sBAAA,EAAA,MAAA,sBAAA;AAAA,EAAA,gBAAA,EAAA,MAAA,gBAAA;AAAA,EAAA,SAAA,EAAA,MAAA,SAAA;AAAA,CAAA,CAAA,CAAA;AAGA,IAAM,EAAE,SAAY,GAAAA,mBAAA,CAAA;AAIb,IAAM,SAAY,GAAA;AAAA,EACvB,KAAO,EAAA,OAAA,CAAQ,cAAe,CAAAA,mBAAA,CAAG,WAAW,YAAY,CAAA;AAAA,EACxD,MAAQ,EAAA,OAAA,CAAQ,cAAe,CAAAA,mBAAA,CAAG,WAAW,aAAa,CAAA;AAAA,EAC1D,KAAO,EAAA,OAAA,CAAQ,cAAe,CAAAA,mBAAA,CAAG,WAAW,YAAY,CAAA;AAAA,EACxD,MAAQ,EAAA,OAAA,CAAQ,cAAe,CAAAA,mBAAA,CAAG,WAAW,aAAa,CAAA;AAC5D,EAAA;AAEA,SAAS,kBAAkB,GAAsB,EAAA;AAC/C,EAAA,IAAI,CAAC,GAAI,CAAA,MAAA,IAAU,GAAI,CAAA,IAAA,OAAW,GAAK,EAAA;AACrC,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAA,MAAM,OAAOA,mBAAG,CAAA,uBAAA,CAAwB,GAAK,EAAAA,mBAAA,CAAG,aAAa,MAAM,CAAA,CAAA;AAEnE,EAAA,OAAO,CAAC,CAAC,IAAQ,IAAA,IAAA,CAAK,IAAS,KAAAA,mBAAA,CAAG,UAAW,CAAA,UAAA,IAAcA,mBAAG,CAAA,uBAAA,CAAwB,IAAK,CAAA,IAAgC,CAAM,KAAA,KAAA,CAAA,CAAA;AACnI,CAAA;AAEA,SAAS,aAAa,IAAiD,EAAA;AACrE,EAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,IAAO,OAAA,iBAAA,CAAkB,IAAI,CAAI,GAAA,OAAA,CAAQ,iBAAiB,IAAI,CAAA,GAAI,OAAQ,CAAA,mBAAA,CAAoB,IAAI,CAAA,CAAA;AAAA,GACpG;AACA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEA,IAAM,aAAgB,GAAA,OAAA,CAAQ,WAAY,CAAAA,mBAAA,CAAG,WAAW,aAAa,CAAA,CAAA;AAE9D,SAAS,oBAAoB,KAAoC,EAAA;AACtE,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AACA,EAAA,IAAI,UAAU,IAAM,EAAA;AAClB,IAAO,OAAA,aAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AAEO,SAAS,6BAA8B,CAAA;AAAA,EAC5C,KAAA;AAAA,EACA,eAAA;AACF,CAGuB,EAAA;AACrB,EAAI,IAAA,CAAC,MAAM,MAAQ,EAAA;AACjB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,IAAO,OAAA,KAAA,CAAM,CAAC,CAAK,IAAA,IAAA,CAAA;AAAA,GACrB;AAEA,EAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,0BAAA,CAA2B,KAAK,CAAA,CAAA;AAErD,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,OAAA,OAAA,CAAQ,wBAAwB,IAAI,CAAA,CAAA;AAAA,GAC7C;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAMO,SAAS,sBAAuB,CAAA;AAAA,EACrC,KAAA;AAAA,EACA,eAAA;AACF,CAGuB,EAAA;AACrB,EAAI,IAAA,CAAC,MAAM,MAAQ,EAAA;AACjB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,IAAO,OAAA,KAAA,CAAM,CAAC,CAAK,IAAA,IAAA,CAAA;AAAA,GACrB;AAEA,EAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,mBAAA,CAAoB,KAAK,CAAA,CAAA;AAE9C,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,OAAA,OAAA,CAAQ,wBAAwB,IAAI,CAAA,CAAA;AAAA,GAC7C;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEO,SAAS,sBAAuB,CAAA;AAAA,EACrC,KAAA;AACF,CAEuB,EAAA;AACrB,EAAI,IAAA,CAAC,MAAM,MAAQ,EAAA;AACjB,IAAO,OAAA,OAAA,CAAQ,mBAAoB,CAAA,EAAE,CAAA,CAAA;AAAA,GACvC;AAEA,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,IAAA,OAAO,OAAQ,CAAA,mBAAA,CAAoB,KAAM,CAAA,EAAA,CAAG,CAAC,CAAE,CAAA,CAAA;AAAA,GACjD;AAEA,EAAO,OAAA,OAAA,CAAQ,iCAAkC,CAAA,OAAA,CAAQ,gBAAiB,CAAA,OAAO,CAAG,EAAA,CAAC,OAAQ,CAAA,mBAAA,CAAoB,KAAK,CAAC,CAAC,CAAA,CAAA;AAC1H,CAAA;AAMO,SAAS,sBAAuB,CAAA;AAAA,EACrC,KAAA;AAAA,EACA,eAAA;AACF,CAGuB,EAAA;AACrB,EAAI,IAAA,CAAC,MAAM,MAAQ,EAAA;AACjB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,IAAO,OAAA,KAAA,CAAM,CAAC,CAAK,IAAA,IAAA,CAAA;AAAA,GACrB;AAEA,EAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,mBAAA,CAAoB,KAAK,CAAA,CAAA;AAE9C,EAAA,IAAI,eAAiB,EAAA;AACnB,IAAO,OAAA,OAAA,CAAQ,wBAAwB,IAAI,CAAA,CAAA;AAAA,GAC7C;AAEA,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEO,SAAS,uBAAwB,CAAA;AAAA,EACtC,QAAA;AAAA,EACA,SAAA,EAAAC,aAAY,EAAC;AAAA,EACb,IAAA;AAAA,EACA,aAAAC,EAAAA,cAAAA;AAAA,EACA,IAAA;AACF,CAMG,EAAA;AACD,EAAA,OAAO,OAAQ,CAAA,uBAAA;AAAA,IACb,CAAC,GAAGD,UAAW,EAAA,QAAA,GAAW,OAAQ,CAAA,WAAA,CAAYD,mBAAG,CAAA,UAAA,CAAW,eAAe,CAAA,GAAI,KAAS,CAAA,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,IACxG,aAAa,IAAI,CAAA;AAAA,IACjB,oBAAoBE,cAAa,CAAA;AAAA,IACjC,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AAEO,SAAS,yBACd,IACA,EAAA;AAAA,EACE,SAAAD,EAAAA,UAAAA;AAAA,EACA,cAAA;AAAA,EACA,aAAAC,EAAAA,cAAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AACF,CAQyB,EAAA;AACzB,EAAO,OAAA,OAAA,CAAQ,2BAA2BD,UAAW,EAAA,cAAA,EAAgB,MAAM,mBAAoBC,CAAAA,cAAa,CAAG,EAAA,IAAA,EAAM,WAAW,CAAA,CAAA;AAClI,CAAA;AAEO,SAAS,WAAA,CAAY,EAAE,QAAA,EAAoC,EAAA;AAChE,EAAI,IAAA,CAAC,SAAS,MAAQ,EAAA;AACpB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAA,OAAO,OAAQ,CAAA,kBAAA;AAAA,IACb,OAAQ,CAAA,eAAA;AAAA,MACN,QAAS,CAAA,GAAA,CAAI,CAAC,OAAA,EAAS,CAAM,KAAA;AAC3B,QAAI,IAAA,CAAA,KAAM,QAAS,CAAA,MAAA,GAAS,CAAG,EAAA;AAC7B,UAAO,OAAA,OAAA,CAAQ,gBAAgB,OAAO,CAAA,CAAA;AAAA,SACxC;AAEA,QAAO,OAAA,OAAA,CAAQ,eAAgB,CAAA,CAAA,EAAG,OAAO,CAAA;AAAA,CAAI,CAAA,CAAA;AAAA,OAC9C,CAAA;AAAA,KACH;AAAA,GACF,CAAA;AACF,CAAA;AAKO,SAAS,iBAAyC,CAAA;AAAA,EACvD,IAAA;AAAA,EACA,QAAA;AACF,CAGG,EAAA;AACD,EAAM,MAAA,gBAAA,GAAmB,QAAS,CAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AAEhD,EAAI,IAAA,CAAC,iBAAiB,MAAQ,EAAA;AAC5B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,OAAO,gBAAiB,CAAA,MAAA,CAAO,CAAC,GAAM,GAAA,EAAA,EAAI,UAAU,EAAO,KAAA;AAC/D,IAAA,OAAO,GAAG,GAAG,CAAA;AAAA,GAAA,EAAQ,OAAQ,CAAA,UAAA,CAAW,IAAM,EAAA,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,KACpD,GAAG,CAAA,CAAA;AAGN,EAAO,OAAAF,mBAAA,CAAG,0BAA2B,CAAA,EAAE,GAAG,IAAA,EAAQ,EAAAA,mBAAA,CAAG,UAAW,CAAA,sBAAA,EAAwB,CAAG,EAAA,IAAA,IAAQ,GAAG,CAAA;AAAA,CAAA,EAAM,IAAI,CAAA,CAAA;AAClH,CAAA;AAEO,SAAS,qBACd,IACA,EAAA;AAAA,EACE,SAAAC,EAAAA,UAAAA;AAAA,EACA,SAAY,GAAA,KAAA;AAAA,EACZ,SAAY,GAAA,OAAA,CAAQ,qBAAsB,CAAAD,mBAAA,CAAG,WAAW,aAAa,CAAA;AACvE,CAAA,GAKI,EACJ,EAAA;AACA,EAAA,OAAO,OAAQ,CAAA,oBAAA,CAAqBC,UAAW,EAAA,CAAC,wBAAyB,CAAA,SAAA,EAAW,EAAE,IAAA,EAAM,SAAU,EAAC,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA;AACjH,CAAA;AAEO,SAAS,0BAA2B,CAAA;AAAA,EACzC,SAAAA,EAAAA,UAAAA;AAAA,EACA,IAAA;AAAA,EACA,cAAA;AAAA,EACA,IAAA;AACF,CAKG,EAAA;AACD,EAAA,OAAO,OAAQ,CAAA,0BAAA,CAA2BA,UAAW,EAAA,IAAA,EAAM,gBAAgB,IAAI,CAAA,CAAA;AACjF,CAAA;AAEO,SAAS,0BAA2B,CAAA;AAAA,EACzC,UAAA;AAAA,EACA,IAAA;AACF,CAGG,EAAA;AACD,EAAA,OAAO,OAAQ,CAAA,uBAAA;AAAA,IACb,CAAC,OAAQ,CAAA,WAAA,CAAYD,mBAAG,CAAA,UAAA,CAAW,aAAa,CAAC,CAAA;AAAA,IACjD,OAAA,CAAQ,iBAAiB,IAAI,CAAA;AAAA,IAC7B,OAAA,CAAQ,kBAAkB,UAAU,CAAA;AAAA,IACpCA,oBAAG,SAAU,CAAA,SAAA;AAAA,GACf,CAAA;AACF,CAAA;AAMO,SAAS,uBAAwB,CAAA;AAAA,EACtC,IAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAa,GAAA,KAAA;AAAA,EACb,WAAc,GAAA,KAAA;AAChB,CAKG,EAAA;AACD,EAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAG,EAAA;AACxB,IAAI,IAAA,kBAAA,GAAgD,OAAQ,CAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AACjF,IAAA,IAAI,UAAiD,GAAA,KAAA,CAAA,CAAA;AAErD,IAAA,IAAI,WAAa,EAAA;AACf,MAAqB,kBAAA,GAAA,KAAA,CAAA,CAAA;AACrB,MAAA,UAAA,GAAa,OAAQ,CAAA,qBAAA,CAAsB,OAAQ,CAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA,CAAA;AAAA,KAC3E;AAEA,IAAA,OAAO,OAAQ,CAAA,uBAAA;AAAA,MACb,KAAA,CAAA;AAAA,MACA,OAAQ,CAAA,kBAAA,CAAmB,UAAY,EAAA,kBAAA,EAAoB,UAAU,CAAA;AAAA,MACrE,OAAA,CAAQ,oBAAoB,IAAI,CAAA;AAAA,MAChC,KAAA,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAA,OAAO,OAAQ,CAAA,uBAAA;AAAA,IACb,KAAA,CAAA;AAAA,IACA,OAAQ,CAAA,kBAAA;AAAA,MACN,UAAA;AAAA,MACA,KAAA,CAAA;AAAA,MACA,OAAQ,CAAA,kBAAA;AAAA,QACN,IAAA,CAAK,GAAI,CAAA,CAAC,IAAS,KAAA;AACjB,UAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,YAAA,MAAM,GAAM,GAAA,IAAA,CAAA;AACZ,YAAA,IAAI,IAAI,IAAM,EAAA;AACZ,cAAA,OAAO,OAAQ,CAAA,qBAAA,CAAsB,KAAO,EAAA,OAAA,CAAQ,gBAAiB,CAAA,GAAA,CAAI,YAAY,CAAA,EAAG,OAAQ,CAAA,gBAAA,CAAiB,GAAI,CAAA,IAAI,CAAC,CAAA,CAAA;AAAA,aAC5H;AAEA,YAAO,OAAA,OAAA,CAAQ,sBAAsB,KAAO,EAAA,KAAA,CAAA,EAAW,QAAQ,gBAAiB,CAAA,GAAA,CAAI,YAAY,CAAC,CAAA,CAAA;AAAA,WACnG;AAEA,UAAA,OAAO,QAAQ,qBAAsB,CAAA,KAAA,EAAO,QAAW,OAAQ,CAAA,gBAAA,CAAiB,IAAI,CAAC,CAAA,CAAA;AAAA,SACtF,CAAA;AAAA,OACH;AAAA,KACF;AAAA,IACA,OAAA,CAAQ,oBAAoB,IAAI,CAAA;AAAA,IAChC,KAAA,CAAA;AAAA,GACF,CAAA;AACF,CAAA;AAEO,SAAS,uBAAwB,CAAA;AAAA,EACtC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAa,GAAA,KAAA;AAAA,EACb,IAAA;AACF,CAKG,EAAA;AACD,EAAA,IAAI,QAAQ,CAAC,KAAA,CAAM,QAAQ,IAAI,CAAA,IAAK,CAAC,OAAS,EAAA;AAC5C,IAAQ,OAAA,CAAA,IAAA,CAAK,CAAqD,kDAAA,EAAA,IAAI,CAAE,CAAA,CAAA,CAAA;AAAA,GAC1E;AAEA,EAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAG,EAAA;AACxB,IAAM,MAAA,UAAA,GAAa,IAAM,EAAA,KAAA,CAAM,KAAK,CAAA,GAAI,IAAI,IAAM,EAAA,KAAA,CAAM,CAAC,CAAC,CAAK,CAAA,GAAA,IAAA,CAAA;AAE/D,IAAA,OAAO,OAAQ,CAAA,uBAAA;AAAA,MACb,KAAA,CAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,IAAW,aAAa,OAAQ,CAAA,qBAAA,CAAsB,QAAQ,gBAAiB,CAAA,UAAU,CAAC,CAAI,GAAA,KAAA,CAAA;AAAA,MAC9F,OAAA,CAAQ,oBAAoB,IAAI,CAAA;AAAA,MAChC,KAAA,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAA,OAAO,OAAQ,CAAA,uBAAA;AAAA,IACb,KAAA,CAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAQ,CAAA,kBAAA;AAAA,MACN,IAAA,CAAK,GAAI,CAAA,CAACG,aAAiB,KAAA;AACzB,QAAO,OAAA,OAAA,CAAQ,qBAAsB,CAAA,KAAA,EAAO,KAAW,CAAA,EAAA,OAAOA,aAAiB,KAAA,QAAA,GAAW,OAAQ,CAAA,gBAAA,CAAiBA,aAAY,CAAA,GAAIA,aAAY,CAAA,CAAA;AAAA,OAChJ,CAAA;AAAA,KACH;AAAA,IACA,OAAA,CAAQ,oBAAoB,IAAI,CAAA;AAAA,IAChC,KAAA,CAAA;AAAA,GACF,CAAA;AACF,CAAA;AAEO,SAAS,qBAAsB,CAAA;AAAA,EACpC,IAAO,GAAA,MAAA;AAAA,EACP,IAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AACF,CAc+C,EAAA;AAC7C,EAAA,IAAI,SAAS,SAAW,EAAA;AACtB,IAAO,OAAA;AAAA,MACL,KAAA,CAAA;AAAA,MACA,OAAQ,CAAA,0BAAA;AAAA,QACN,CAAC,OAAQ,CAAA,WAAA,CAAYH,mBAAG,CAAA,UAAA,CAAW,aAAa,CAAC,CAAA;AAAA,QACjD,OAAA,CAAQ,iBAAiB,QAAQ,CAAA;AAAA,QACjC,KAAA,CAAA;AAAA,QACA,OAAQ,CAAA,mBAAA;AAAA,UACN,MACG,GAAI,CAAA,CAAC,CAAC,IAAA,EAAM,KAAK,CAAM,KAAA;AACtB,YAAI,IAAAI,eAAA,CAAS,KAAK,CAAG,EAAA;AACnB,cAAA,OAAO,QAAQ,qBAAsB,CAAA,OAAA,CAAQ,qBAAqB,KAAO,EAAA,QAAA,EAAU,CAAC,CAAA,CAAA;AAAA,aACtF;AAEA,YAAI,IAAA,OAAO,UAAU,SAAW,EAAA;AAC9B,cAAO,OAAA,OAAA,CAAQ,sBAAsB,KAAQ,GAAA,OAAA,CAAQ,YAAe,GAAA,OAAA,CAAQ,aAAa,CAAA,CAAA;AAAA,aAC3F;AACA,YAAA,IAAI,KAAO,EAAA;AACT,cAAA,OAAO,QAAQ,qBAAsB,CAAA,OAAA,CAAQ,oBAAoB,KAAM,CAAA,QAAA,EAAU,CAAC,CAAA,CAAA;AAAA,aACpF;AAEA,YAAO,OAAA,KAAA,CAAA,CAAA;AAAA,WACR,CACA,CAAA,MAAA,CAAO,OAAO,CAAA;AAAA,SACnB;AAAA,OACF;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAI,IAAA,IAAA,KAAS,MAAU,IAAA,IAAA,KAAS,WAAa,EAAA;AAC3C,IAAO,OAAA;AAAA,MACL,KAAA,CAAA;AAAA,MACA,OAAQ,CAAA,qBAAA;AAAA,QACN,CAAC,OAAQ,CAAA,WAAA,CAAYJ,oBAAG,UAAW,CAAA,aAAa,GAAG,IAAS,KAAA,WAAA,GAAc,OAAQ,CAAA,WAAA,CAAYA,oBAAG,UAAW,CAAA,YAAY,IAAI,KAAS,CAAA,CAAA,CAAE,OAAO,OAAO,CAAA;AAAA,QACrJ,OAAA,CAAQ,iBAAiB,QAAQ,CAAA;AAAA,QACjC,MACG,GAAI,CAAA,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AACrB,UAAA,IAAI,WAA6B,GAAA,OAAA,CAAQ,mBAAoB,CAAA,KAAA,EAAO,UAAU,CAAA,CAAA;AAE9E,UAAA,IAAII,gBAAS,MAAO,CAAA,QAAA,CAAS,MAAM,QAAS,EAAC,CAAC,CAAG,EAAA;AAC/C,YAAc,WAAA,GAAA,OAAA,CAAQ,qBAAqB,KAAe,CAAA,CAAA;AAAA,WAC5D;AACA,UAAI,IAAA,OAAO,UAAU,SAAW,EAAA;AAC9B,YAAA,WAAA,GAAc,KAAQ,GAAA,OAAA,CAAQ,UAAW,EAAA,GAAI,QAAQ,WAAY,EAAA,CAAA;AAAA,WACnE;AAEA,UAAA,IAAIA,gBAAS,MAAO,CAAA,QAAA,CAAS,IAAI,QAAS,EAAC,CAAC,CAAG,EAAA;AAC7C,YAAO,OAAA,OAAA,CAAQ,gBAAiB,CAAA,OAAA,CAAQ,mBAAoB,CAAA,CAAA,EAAG,QAAQ,CAAI,CAAA,EAAA,GAAG,CAAE,CAAA,CAAA,EAAG,WAAW,CAAA,CAAA;AAAA,WAChG;AAEA,UAAA,IAAI,GAAK,EAAA;AACP,YAAO,OAAA,OAAA,CAAQ,iBAAiB,OAAQ,CAAA,mBAAA,CAAoB,GAAG,GAAG,CAAA,CAAE,GAAG,WAAW,CAAA,CAAA;AAAA,WACpF;AAEA,UAAO,OAAA,KAAA,CAAA,CAAA;AAAA,SACR,CACA,CAAA,MAAA,CAAO,OAAO,CAAA;AAAA,OACnB;AAAA,KACF,CAAA;AAAA,GACF;AAGA,EAAM,MAAA,cAAA,GAAiB,IAAS,KAAA,eAAA,GAAkB,QAAW,GAAA,IAAA,CAAA;AAE7D,EAAO,OAAA;AAAA,IACL,OAAQ,CAAA,uBAAA;AAAA,MACN,CAAC,OAAQ,CAAA,WAAA,CAAYJ,mBAAG,CAAA,UAAA,CAAW,aAAa,CAAC,CAAA;AAAA,MACjD,OAAQ,CAAA,6BAAA;AAAA,QACN;AAAA,UACE,OAAQ,CAAA,yBAAA;AAAA,YACN,OAAA,CAAQ,iBAAiB,cAAc,CAAA;AAAA,YACvC,KAAA,CAAA;AAAA,YACA,KAAA,CAAA;AAAA,YACA,OAAQ,CAAA,kBAAA;AAAA,cACN,OAAQ,CAAA,6BAAA;AAAA,gBACN,MACG,GAAI,CAAA,CAAC,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AACrB,kBAAA,IAAI,cAA6B,OAAQ,CAAA,mBAAA,CAAoB,GAAG,KAAO,EAAA,QAAA,EAAU,CAAE,CAAA,CAAA,CAAA;AAEnF,kBAAI,IAAAI,eAAA,CAAS,KAAK,CAAG,EAAA;AAKnB,oBAAA,IAAI,QAAQ,CAAG,EAAA;AACb,sBAAc,WAAA,GAAA,OAAA,CAAQ,2BAA4B,CAAAJ,mBAAA,CAAG,UAAW,CAAA,UAAA,EAAY,OAAQ,CAAA,oBAAA,CAAqB,IAAK,CAAA,GAAA,CAAI,KAAK,CAAC,CAAC,CAAA,CAAA;AAAA,qBACpH,MAAA;AACL,sBAAc,WAAA,GAAA,OAAA,CAAQ,qBAAqB,KAAK,CAAA,CAAA;AAAA,qBAClD;AAAA,mBACF;AAEA,kBAAI,IAAA,OAAO,UAAU,SAAW,EAAA;AAC9B,oBAAA,WAAA,GAAc,KAAQ,GAAA,OAAA,CAAQ,UAAW,EAAA,GAAI,QAAQ,WAAY,EAAA,CAAA;AAAA,mBACnE;AAEA,kBAAA,IAAI,GAAK,EAAA;AACP,oBAAO,OAAA,OAAA,CAAQ,yBAAyB,OAAQ,CAAA,mBAAA,CAAoB,GAAG,GAAG,CAAA,CAAE,GAAG,WAAW,CAAA,CAAA;AAAA,mBAC5F;AAEA,kBAAO,OAAA,KAAA,CAAA,CAAA;AAAA,iBACR,CACA,CAAA,MAAA,CAAO,OAAO,CAAA;AAAA,gBACjB,IAAA;AAAA,eACF;AAAA,cACA,QAAQ,uBAAwB,CAAA,OAAA,CAAQ,gBAAiB,CAAA,OAAO,GAAG,KAAS,CAAA,CAAA;AAAA,aAC9E;AAAA,WACF;AAAA,SACF;AAAA,QACAA,oBAAG,SAAU,CAAA,KAAA;AAAA,OACf;AAAA,KACF;AAAA,IACA,OAAQ,CAAA,0BAAA;AAAA,MACN,IAAA,KAAS,eAAkB,GAAA,EAAK,GAAA,CAAC,QAAQ,WAAY,CAAAA,mBAAA,CAAG,UAAW,CAAA,aAAa,CAAC,CAAA;AAAA,MACjF,OAAA,CAAQ,iBAAiB,QAAQ,CAAA;AAAA,MACjC,KAAA,CAAA;AAAA,MACA,OAAQ,CAAA,2BAAA;AAAA,QACN,OAAA,CAAQ,wBAAwB,OAAQ,CAAA,mBAAA,CAAoB,QAAQ,gBAAiB,CAAA,cAAc,CAAG,EAAA,KAAA,CAAS,CAAC,CAAA;AAAA,QAChH,OAAQ,CAAA,sBAAA,CAAuBA,mBAAG,CAAA,UAAA,CAAW,YAAc,EAAA,OAAA,CAAQ,mBAAoB,CAAA,OAAA,CAAQ,gBAAiB,CAAA,cAAc,CAAG,EAAA,KAAA,CAAS,CAAC,CAAA;AAAA,OAC7I;AAAA,KACF;AAAA,GACF,CAAA;AACF,CAAA;AAEO,SAAS,qBAAsB,CAAA;AAAA,EACpC,IAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AACF,CAIG,EAAA;AACD,EAAM,MAAA,IAAA,GAAO,WAAc,GAAA,OAAA,CAAQ,uBAAwB,CAAA,OAAA,CAAQ,gBAAiB,CAAA,aAAa,CAAG,EAAA,CAAC,IAAI,CAAC,CAAI,GAAA,IAAA,CAAA;AAE9G,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAG,EAAA;AACvB,IAAA,OAAO,OAAQ,CAAA,uBAAA,CAAwB,OAAQ,CAAA,gBAAA,CAAiB,MAAM,CAAG,EAAA;AAAA,MACvE,IAAA;AAAA,MACA,OAAQ,CAAA,mBAAA;AAAA,QACN,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AAChB,UAAA,OAAO,OAAQ,CAAA,qBAAA,CAAsB,OAAQ,CAAA,mBAAA,CAAoB,GAAG,CAAC,CAAA,CAAA;AAAA,SACtE,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,OAAO,OAAQ,CAAA,uBAAA,CAAwB,OAAQ,CAAA,gBAAA,CAAiB,MAAM,CAAG,EAAA,CAAC,IAAM,EAAA,OAAA,CAAQ,sBAAsB,OAAQ,CAAA,mBAAA,CAAoB,IAAI,CAAC,CAAC,CAAC,CAAA,CAAA;AACnJ,CAAA;AAEO,IAAM,gBAAmB,GAAA;AAAA,EAC9B,GAAK,EAAA,OAAA,CAAQ,qBAAsB,CAAAA,mBAAA,CAAG,WAAW,UAAU,CAAA;AAAA,EAC3D,OAAS,EAAA,OAAA,CAAQ,qBAAsB,CAAAA,mBAAA,CAAG,WAAW,cAAc,CAAA;AAAA,EACnE,MAAQ,EAAA,OAAA,CAAQ,qBAAsB,CAAAA,mBAAA,CAAG,WAAW,aAAa,CAAA;AAAA,EACjE,OAAS,EAAA,OAAA,CAAQ,qBAAsB,CAAAA,mBAAA,CAAG,WAAW,aAAa,CAAA;AAAA,EAClE,MAAQ,EAAA,OAAA,CAAQ,qBAAsB,CAAAA,mBAAA,CAAG,WAAW,aAAa,CAAA;AAAA,EACjE,MAAQ,EAAA,OAAA,CAAQ,qBAAsB,CAAAA,mBAAA,CAAG,WAAW,aAAa,CAAA;AAAA,EACjE,OAAS,EAAA,OAAA,CAAQ,qBAAsB,CAAAA,mBAAA,CAAG,WAAW,cAAc,CAAA;AAAA,EACnE,SAAW,EAAA,OAAA,CAAQ,qBAAsB,CAAAA,mBAAA,CAAG,WAAW,gBAAgB,CAAA;AAAA,EACvE,IAAA,EAAM,QAAQ,qBAAsB,CAAA,OAAA,CAAQ,YAAYA,mBAAG,CAAA,UAAA,CAAW,WAAW,CAAC,CAAA;AACpF,EAAA;AAEO,IAAM,wBAAwB,OAAQ,CAAA,sBAAA;AAEtC,IAAM,0BAA0B,OAAQ,CAAA,wBAAA;AACxC,IAAM,uBAAuB,OAAQ,CAAA,qBAAA;AACrC,IAAM,sBAAsB,OAAQ,CAAA,oBAAA;AAEpC,IAAM,sBAAsB,OAAQ,CAAA,oBAAA;AAEpC,IAAM,wBAAwB,OAAQ,CAAA,sBAAA;AACtC,IAAM,aAAa,OAAQ,CAAA,WAAA;AAC3B,IAAM,mBAAmB,OAAQ,CAAA,iBAAA;AAEjC,IAAM,sBAAsB,OAAQ,CAAA,oBAAA;AACpC,IAAM,aAAa,OAAQ,CAAA,WAAA;AAC3B,IAAM,cAAc,OAAQ,CAAA","file":"chunk-VJY52WL4.cjs","sourcesContent":["import { isNumber } from 'remeda'\nimport ts from 'typescript'\n\nconst { factory } = ts\n\n// https://ts-ast-viewer.com/\n\nexport const modifiers = {\n async: factory.createModifier(ts.SyntaxKind.AsyncKeyword),\n export: factory.createModifier(ts.SyntaxKind.ExportKeyword),\n const: factory.createModifier(ts.SyntaxKind.ConstKeyword),\n static: factory.createModifier(ts.SyntaxKind.StaticKeyword),\n} as const\n\nfunction isValidIdentifier(str: string): boolean {\n if (!str.length || str.trim() !== str) {\n return false\n }\n const node = ts.parseIsolatedEntityName(str, ts.ScriptTarget.Latest)\n\n return !!node && node.kind === ts.SyntaxKind.Identifier && ts.identifierToKeywordKind(node.kind as unknown as ts.Identifier) === undefined\n}\n\nfunction propertyName(name: string | ts.PropertyName): ts.PropertyName {\n if (typeof name === 'string') {\n return isValidIdentifier(name) ? factory.createIdentifier(name) : factory.createStringLiteral(name)\n }\n return name\n}\n\nconst questionToken = factory.createToken(ts.SyntaxKind.QuestionToken)\n\nexport function createQuestionToken(token?: boolean | ts.QuestionToken) {\n if (!token) {\n return undefined\n }\n if (token === true) {\n return questionToken\n }\n return token\n}\n\nexport function createIntersectionDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createIntersectionTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\n/**\n * Minimum nodes length of 2\n * @example `string & number`\n */\nexport function createTupleDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createTupleTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\nexport function createArrayDeclaration({\n nodes,\n}: {\n nodes: Array<ts.TypeNode>\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return factory.createTupleTypeNode([])\n }\n\n if (nodes.length === 1) {\n return factory.createArrayTypeNode(nodes.at(0)!)\n }\n\n return factory.createExpressionWithTypeArguments(factory.createIdentifier('Array'), [factory.createUnionTypeNode(nodes)])\n}\n\n/**\n * Minimum nodes length of 2\n * @example `string | number`\n */\nexport function createUnionDeclaration({\n nodes,\n withParentheses,\n}: {\n nodes: Array<ts.TypeNode>\n withParentheses?: boolean\n}): ts.TypeNode | null {\n if (!nodes.length) {\n return null\n }\n\n if (nodes.length === 1) {\n return nodes[0] || null\n }\n\n const node = factory.createUnionTypeNode(nodes)\n\n if (withParentheses) {\n return factory.createParenthesizedType(node)\n }\n\n return node\n}\n\nexport function createPropertySignature({\n readOnly,\n modifiers = [],\n name,\n questionToken,\n type,\n}: {\n readOnly?: boolean\n modifiers?: Array<ts.Modifier>\n name: ts.PropertyName | string\n questionToken?: ts.QuestionToken | boolean\n type?: ts.TypeNode\n}) {\n return factory.createPropertySignature(\n [...modifiers, readOnly ? factory.createToken(ts.SyntaxKind.ReadonlyKeyword) : undefined].filter(Boolean),\n propertyName(name),\n createQuestionToken(questionToken),\n type,\n )\n}\n\nexport function createParameterSignature(\n name: string | ts.BindingName,\n {\n modifiers,\n dotDotDotToken,\n questionToken,\n type,\n initializer,\n }: {\n decorators?: Array<ts.Decorator>\n modifiers?: Array<ts.Modifier>\n dotDotDotToken?: ts.DotDotDotToken\n questionToken?: ts.QuestionToken | boolean\n type?: ts.TypeNode\n initializer?: ts.Expression\n },\n): ts.ParameterDeclaration {\n return factory.createParameterDeclaration(modifiers, dotDotDotToken, name, createQuestionToken(questionToken), type, initializer)\n}\n\nexport function createJSDoc({ comments }: { comments: string[] }) {\n if (!comments.length) {\n return null\n }\n return factory.createJSDocComment(\n factory.createNodeArray(\n comments.map((comment, i) => {\n if (i === comments.length - 1) {\n return factory.createJSDocText(comment)\n }\n\n return factory.createJSDocText(`${comment}\\n`)\n }),\n ),\n )\n}\n\n/**\n * @link https://github.com/microsoft/TypeScript/issues/44151\n */\nexport function appendJSDocToNode<TNode extends ts.Node>({\n node,\n comments,\n}: {\n node: TNode\n comments: Array<string | undefined>\n}) {\n const filteredComments = comments.filter(Boolean)\n\n if (!filteredComments.length) {\n return node\n }\n\n const text = filteredComments.reduce((acc = '', comment = '') => {\n return `${acc}\\n * ${comment.replaceAll('*/', '*\\\\/')}`\n }, '*')\n\n // node: {...node}, with that ts.addSyntheticLeadingComment is appending\n return ts.addSyntheticLeadingComment({ ...node }, ts.SyntaxKind.MultiLineCommentTrivia, `${text || '*'}\\n`, true)\n}\n\nexport function createIndexSignature(\n type: ts.TypeNode,\n {\n modifiers,\n indexName = 'key',\n indexType = factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),\n }: {\n indexName?: string\n indexType?: ts.TypeNode\n decorators?: Array<ts.Decorator>\n modifiers?: Array<ts.Modifier>\n } = {},\n) {\n return factory.createIndexSignature(modifiers, [createParameterSignature(indexName, { type: indexType })], type)\n}\n\nexport function createTypeAliasDeclaration({\n modifiers,\n name,\n typeParameters,\n type,\n}: {\n modifiers?: Array<ts.Modifier>\n name: string | ts.Identifier\n typeParameters?: Array<ts.TypeParameterDeclaration>\n type: ts.TypeNode\n}) {\n return factory.createTypeAliasDeclaration(modifiers, name, typeParameters, type)\n}\n\nexport function createNamespaceDeclaration({\n statements,\n name,\n}: {\n name: string\n statements: ts.Statement[]\n}) {\n return factory.createModuleDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(name),\n factory.createModuleBlock(statements),\n ts.NodeFlags.Namespace,\n )\n}\n\n/**\n * In { propertyName: string; name?: string } is `name` being used to make the type more unique when multiple same names are used.\n * @example `import { Pet as Cat } from './Pet'`\n */\nexport function createImportDeclaration({\n name,\n path,\n isTypeOnly = false,\n isNameSpace = false,\n}: {\n name: string | Array<string | { propertyName: string; name?: string }>\n path: string\n isTypeOnly?: boolean\n isNameSpace?: boolean\n}) {\n if (!Array.isArray(name)) {\n let importPropertyName: ts.Identifier | undefined = factory.createIdentifier(name)\n let importName: ts.NamedImportBindings | undefined = undefined\n\n if (isNameSpace) {\n importPropertyName = undefined\n importName = factory.createNamespaceImport(factory.createIdentifier(name))\n }\n\n return factory.createImportDeclaration(\n undefined,\n factory.createImportClause(isTypeOnly, importPropertyName, importName),\n factory.createStringLiteral(path),\n undefined,\n )\n }\n\n return factory.createImportDeclaration(\n undefined,\n factory.createImportClause(\n isTypeOnly,\n undefined,\n factory.createNamedImports(\n name.map((item) => {\n if (typeof item === 'object') {\n const obj = item as { propertyName: string; name?: string }\n if (obj.name) {\n return factory.createImportSpecifier(false, factory.createIdentifier(obj.propertyName), factory.createIdentifier(obj.name))\n }\n\n return factory.createImportSpecifier(false, undefined, factory.createIdentifier(obj.propertyName))\n }\n\n return factory.createImportSpecifier(false, undefined, factory.createIdentifier(item))\n }),\n ),\n ),\n factory.createStringLiteral(path),\n undefined,\n )\n}\n\nexport function createExportDeclaration({\n path,\n asAlias,\n isTypeOnly = false,\n name,\n}: {\n path: string\n asAlias?: boolean\n isTypeOnly?: boolean\n name?: string | Array<ts.Identifier | string>\n}) {\n if (name && !Array.isArray(name) && !asAlias) {\n console.warn(`When using name as string, asAlias should be true ${name}`)\n }\n\n if (!Array.isArray(name)) {\n const parsedName = name?.match(/^\\d/) ? `_${name?.slice(1)}` : name\n\n return factory.createExportDeclaration(\n undefined,\n isTypeOnly,\n asAlias && parsedName ? factory.createNamespaceExport(factory.createIdentifier(parsedName)) : undefined,\n factory.createStringLiteral(path),\n undefined,\n )\n }\n\n return factory.createExportDeclaration(\n undefined,\n isTypeOnly,\n factory.createNamedExports(\n name.map((propertyName) => {\n return factory.createExportSpecifier(false, undefined, typeof propertyName === 'string' ? factory.createIdentifier(propertyName) : propertyName)\n }),\n ),\n factory.createStringLiteral(path),\n undefined,\n )\n}\n\nexport function createEnumDeclaration({\n type = 'enum',\n name,\n typeName,\n enums,\n}: {\n /**\n * @default `'enum'`\n */\n type?: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n /**\n * Enum name in camelCase.\n */\n name: string\n /**\n * Enum name in PascalCase.\n */\n typeName: string\n enums: [key: string | number, value: string | number | boolean][]\n}): [name: ts.Node | undefined, type: ts.Node] {\n if (type === 'literal') {\n return [\n undefined,\n factory.createTypeAliasDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(typeName),\n undefined,\n factory.createUnionTypeNode(\n enums\n .map(([_key, value]) => {\n if (isNumber(value)) {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(value?.toString()))\n }\n\n if (typeof value === 'boolean') {\n return factory.createLiteralTypeNode(value ? factory.createTrue() : factory.createFalse())\n }\n if (value) {\n return factory.createLiteralTypeNode(factory.createStringLiteral(value.toString()))\n }\n\n return undefined\n })\n .filter(Boolean),\n ),\n ),\n ]\n }\n\n if (type === 'enum' || type === 'constEnum') {\n return [\n undefined,\n factory.createEnumDeclaration(\n [factory.createToken(ts.SyntaxKind.ExportKeyword), type === 'constEnum' ? factory.createToken(ts.SyntaxKind.ConstKeyword) : undefined].filter(Boolean),\n factory.createIdentifier(typeName),\n enums\n .map(([key, value]) => {\n let initializer: ts.Expression = factory.createStringLiteral(value?.toString())\n\n if (isNumber(Number.parseInt(value.toString()))) {\n initializer = factory.createNumericLiteral(value as number)\n }\n if (typeof value === 'boolean') {\n initializer = value ? factory.createTrue() : factory.createFalse()\n }\n\n if (isNumber(Number.parseInt(key.toString()))) {\n return factory.createEnumMember(factory.createStringLiteral(`${typeName}_${key}`), initializer)\n }\n\n if (key) {\n return factory.createEnumMember(factory.createStringLiteral(`${key}`), initializer)\n }\n\n return undefined\n })\n .filter(Boolean),\n ),\n ]\n }\n\n // used when using `as const` instead of an TypeScript enum.\n const identifierName = type === 'asPascalConst' ? typeName : name\n\n return [\n factory.createVariableStatement(\n [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createVariableDeclarationList(\n [\n factory.createVariableDeclaration(\n factory.createIdentifier(identifierName),\n undefined,\n undefined,\n factory.createAsExpression(\n factory.createObjectLiteralExpression(\n enums\n .map(([key, value]) => {\n let initializer: ts.Expression = factory.createStringLiteral(`${value?.toString()}`)\n\n if (isNumber(value)) {\n // Error: Negative numbers should be created in combination with createPrefixUnaryExpression factory.\n // The method createNumericLiteral only accepts positive numbers\n // or those combined with createPrefixUnaryExpression.\n // Therefore, we need to ensure that the number is not negative.\n if (value < 0) {\n initializer = factory.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, factory.createNumericLiteral(Math.abs(value)))\n } else {\n initializer = factory.createNumericLiteral(value)\n }\n }\n\n if (typeof value === 'boolean') {\n initializer = value ? factory.createTrue() : factory.createFalse()\n }\n\n if (key) {\n return factory.createPropertyAssignment(factory.createStringLiteral(`${key}`), initializer)\n }\n\n return undefined\n })\n .filter(Boolean),\n true,\n ),\n factory.createTypeReferenceNode(factory.createIdentifier('const'), undefined),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n factory.createTypeAliasDeclaration(\n type === 'asPascalConst' ? [] : [factory.createToken(ts.SyntaxKind.ExportKeyword)],\n factory.createIdentifier(typeName),\n undefined,\n factory.createIndexedAccessTypeNode(\n factory.createParenthesizedType(factory.createTypeQueryNode(factory.createIdentifier(identifierName), undefined)),\n factory.createTypeOperatorNode(ts.SyntaxKind.KeyOfKeyword, factory.createTypeQueryNode(factory.createIdentifier(identifierName), undefined)),\n ),\n ),\n ]\n}\n\nexport function createOmitDeclaration({\n keys,\n type,\n nonNullable,\n}: {\n keys: Array<string> | string\n type: ts.TypeNode\n nonNullable?: boolean\n}) {\n const node = nonNullable ? factory.createTypeReferenceNode(factory.createIdentifier('NonNullable'), [type]) : type\n\n if (Array.isArray(keys)) {\n return factory.createTypeReferenceNode(factory.createIdentifier('Omit'), [\n node,\n factory.createUnionTypeNode(\n keys.map((key) => {\n return factory.createLiteralTypeNode(factory.createStringLiteral(key))\n }),\n ),\n ])\n }\n\n return factory.createTypeReferenceNode(factory.createIdentifier('Omit'), [node, factory.createLiteralTypeNode(factory.createStringLiteral(keys))])\n}\n\nexport const keywordTypeNodes = {\n any: factory.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),\n unknown: factory.createKeywordTypeNode(ts.SyntaxKind.UnknownKeyword),\n number: factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),\n integer: factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),\n object: factory.createKeywordTypeNode(ts.SyntaxKind.ObjectKeyword),\n string: factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword),\n boolean: factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword),\n undefined: factory.createKeywordTypeNode(ts.SyntaxKind.UndefinedKeyword),\n null: factory.createLiteralTypeNode(factory.createToken(ts.SyntaxKind.NullKeyword)),\n} as const\n\nexport const createTypeLiteralNode = factory.createTypeLiteralNode\n\nexport const createTypeReferenceNode = factory.createTypeReferenceNode\nexport const createNumericLiteral = factory.createNumericLiteral\nexport const createStringLiteral = factory.createStringLiteral\n\nexport const createArrayTypeNode = factory.createArrayTypeNode\n\nexport const createLiteralTypeNode = factory.createLiteralTypeNode\nexport const createNull = factory.createNull\nexport const createIdentifier = factory.createIdentifier\n\nexport const createTupleTypeNode = factory.createTupleTypeNode\nexport const createTrue = factory.createTrue\nexport const createFalse = factory.createFalse\n"]}
|