@atproto/lex-cli 0.10.2 → 0.10.3
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/CHANGELOG.md +16 -0
- package/bin.js +8 -4
- package/dist/codegen/client.d.ts +1 -1
- package/dist/codegen/client.d.ts.map +1 -1
- package/dist/codegen/client.js +1 -1
- package/dist/codegen/client.js.map +1 -1
- package/dist/codegen/common.d.ts +4 -4
- package/dist/codegen/common.d.ts.map +1 -1
- package/dist/codegen/common.js +1 -1
- package/dist/codegen/common.js.map +1 -1
- package/dist/codegen/lex-gen.js +2 -1
- package/dist/codegen/lex-gen.js.map +1 -1
- package/dist/codegen/server.d.ts +1 -1
- package/dist/codegen/server.d.ts.map +1 -1
- package/dist/codegen/server.js +1 -1
- package/dist/codegen/server.js.map +1 -1
- package/dist/codegen/util.js +1 -0
- package/dist/codegen/util.js.map +1 -1
- package/dist/mdgen/index.js +3 -2
- package/dist/mdgen/index.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js.map +1 -1
- package/package.json +17 -13
- package/src/codegen/client.ts +0 -566
- package/src/codegen/common.ts +0 -283
- package/src/codegen/lex-gen.ts +0 -720
- package/src/codegen/server.ts +0 -448
- package/src/codegen/util.ts +0 -84
- package/src/index.ts +0 -105
- package/src/mdgen/index.ts +0 -77
- package/src/types.ts +0 -14
- package/src/util.ts +0 -151
- package/tsconfig.build.json +0 -8
- package/tsconfig.build.tsbuildinfo +0 -1
- package/tsconfig.json +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/codegen/server.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n IndentationText,\n Project,\n SourceFile,\n VariableDeclarationKind,\n} from 'ts-morph'\nimport { type LexiconDoc, Lexicons } from '@atproto/lexicon'\nimport { NSID } from '@atproto/syntax'\nimport { type GeneratedAPI } from '../types.js'\nimport { gen, lexiconsTs, utilTs } from './common.js'\nimport {\n genCommonImports,\n genImports,\n genRecord,\n genUserType,\n genXrpcInput,\n genXrpcOutput,\n genXrpcParams,\n} from './lex-gen.js'\nimport {\n type DefTreeNode,\n lexiconsToDefTree,\n schemasToNsidTokens,\n toCamelCase,\n toScreamingSnakeCase,\n toTitleCase,\n} from './util.js'\n\nexport async function genServerApi(\n lexiconDocs: LexiconDoc[],\n): Promise<GeneratedAPI> {\n const project = new Project({\n useInMemoryFileSystem: true,\n manipulationSettings: { indentationText: IndentationText.TwoSpaces },\n })\n const api: GeneratedAPI = { files: [] }\n const lexicons = new Lexicons(lexiconDocs)\n const nsidTree = lexiconsToDefTree(lexiconDocs)\n const nsidTokens = schemasToNsidTokens(lexiconDocs)\n for (const lexiconDoc of lexiconDocs) {\n api.files.push(await lexiconTs(project, lexicons, lexiconDoc))\n }\n api.files.push(await utilTs(project))\n api.files.push(await lexiconsTs(project, lexiconDocs))\n api.files.push(await indexTs(project, lexiconDocs, nsidTree, nsidTokens))\n return api\n}\n\nconst indexTs = (\n project: Project,\n lexiconDocs: LexiconDoc[],\n nsidTree: DefTreeNode[],\n nsidTokens: Record<string, string[]>,\n) =>\n gen(project, '/index.ts', async (file) => {\n //= import {createServer as createXrpcServer, Server as XrpcServer} from '@atproto/xrpc-server'\n file.addImportDeclaration({\n moduleSpecifier: '@atproto/xrpc-server',\n namedImports: [\n { name: 'Auth', isTypeOnly: true },\n { name: 'Options', alias: 'XrpcOptions', isTypeOnly: true },\n { name: 'Server', alias: 'XrpcServer' },\n { name: 'StreamConfigOrHandler', isTypeOnly: true },\n { name: 'MethodConfigOrHandler', isTypeOnly: true },\n { name: 'createServer', alias: 'createXrpcServer' },\n ],\n })\n //= import {schemas} from './lexicons.js'\n file\n .addImportDeclaration({\n moduleSpecifier: './lexicons.js',\n })\n .addNamedImport({\n name: 'schemas',\n })\n\n // generate type imports\n for (const lexiconDoc of lexiconDocs) {\n if (\n lexiconDoc.defs.main?.type !== 'query' &&\n lexiconDoc.defs.main?.type !== 'subscription' &&\n lexiconDoc.defs.main?.type !== 'procedure'\n ) {\n continue\n }\n file\n .addImportDeclaration({\n moduleSpecifier: `./types/${lexiconDoc.id.split('.').join('/')}.js`,\n })\n .setNamespaceImport(toTitleCase(lexiconDoc.id))\n }\n\n // generate token enums\n for (const nsidAuthority in nsidTokens) {\n // export const {THE_AUTHORITY} = {\n // {Name}: \"{authority.the.name}\"\n // }\n file.addVariableStatement({\n isExported: true,\n declarationKind: VariableDeclarationKind.Const,\n declarations: [\n {\n name: toScreamingSnakeCase(nsidAuthority),\n initializer: [\n '{',\n ...nsidTokens[nsidAuthority].map(\n (nsidName) =>\n `${toTitleCase(nsidName)}: \"${nsidAuthority}.${nsidName}\",`,\n ),\n '}',\n ].join('\\n'),\n },\n ],\n })\n }\n\n //= export function createServer(options?: XrpcOptions) { ... }\n const createServerFn = file.addFunction({\n name: 'createServer',\n returnType: 'Server',\n parameters: [\n { name: 'options', type: 'XrpcOptions', hasQuestionToken: true },\n ],\n isExported: true,\n })\n createServerFn.setBodyText(`return new Server(options)`)\n\n //= export class Server {...}\n const serverCls = file.addClass({\n name: 'Server',\n isExported: true,\n })\n //= xrpc: XrpcServer = createXrpcServer(methodSchemas)\n serverCls.addProperty({\n name: 'xrpc',\n type: 'XrpcServer',\n })\n\n // generate classes for the schemas\n for (const ns of nsidTree) {\n //= ns: NS\n serverCls.addProperty({\n name: ns.propName,\n type: ns.className,\n })\n\n // class...\n genNamespaceCls(file, ns)\n }\n\n //= constructor (options?: XrpcOptions) {\n //= this.xrpc = createXrpcServer(schemas, options)\n //= {namespace declarations}\n //= }\n serverCls\n .addConstructor({\n parameters: [\n { name: 'options', type: 'XrpcOptions', hasQuestionToken: true },\n ],\n })\n .setBodyText(\n [\n 'this.xrpc = createXrpcServer(schemas, options)',\n ...nsidTree.map(\n (ns) => `this.${ns.propName} = new ${ns.className}(this)`,\n ),\n ].join('\\n'),\n )\n })\n\nfunction genNamespaceCls(file: SourceFile, ns: DefTreeNode) {\n //= export class {ns}NS {...}\n const cls = file.addClass({\n name: ns.className,\n isExported: true,\n })\n //= _server: Server\n cls.addProperty({\n name: '_server',\n type: 'Server',\n })\n\n for (const child of ns.children) {\n //= child: ChildNS\n cls.addProperty({\n name: child.propName,\n type: child.className,\n })\n\n // recurse\n genNamespaceCls(file, child)\n }\n\n //= constructor(server: Server) {\n //= this._server = server\n //= {child namespace declarations}\n //= }\n const cons = cls.addConstructor()\n cons.addParameter({\n name: 'server',\n type: 'Server',\n })\n cons.setBodyText(\n [\n `this._server = server`,\n ...ns.children.map(\n (ns) => `this.${ns.propName} = new ${ns.className}(server)`,\n ),\n ].join('\\n'),\n )\n\n // methods\n for (const userType of ns.userTypes) {\n if (\n userType.def.type !== 'query' &&\n userType.def.type !== 'subscription' &&\n userType.def.type !== 'procedure'\n ) {\n continue\n }\n const moduleName = toTitleCase(userType.nsid)\n const name = toCamelCase(NSID.parse(userType.nsid).name || '')\n const isSubscription = userType.def.type === 'subscription'\n const method = cls.addMethod({\n name,\n typeParameters: [\n {\n name: 'A',\n constraint: 'Auth',\n default: 'void',\n },\n ],\n })\n method.addParameter({\n name: 'cfg',\n type: isSubscription\n ? `StreamConfigOrHandler<\n A,\n ${moduleName}.QueryParams,\n ${moduleName}.HandlerOutput,\n >`\n : `MethodConfigOrHandler<\n A,\n ${moduleName}.QueryParams,\n ${moduleName}.HandlerInput,\n ${moduleName}.HandlerOutput,\n >`,\n })\n const methodType = isSubscription ? 'streamMethod' : 'method'\n method.setBodyText(\n [\n // Placing schema on separate line, since the following one was being formatted\n // into multiple lines and causing the ts-ignore to ignore the wrong line.\n `const nsid = '${userType.nsid}' // @ts-ignore`,\n `return this._server.xrpc.${methodType}(nsid, cfg)`,\n ].join('\\n'),\n )\n }\n}\n\nconst lexiconTs = (project, lexicons: Lexicons, lexiconDoc: LexiconDoc) =>\n gen(\n project,\n `/types/${lexiconDoc.id.split('.').join('/')}.ts`,\n async (file) => {\n const main = lexiconDoc.defs.main\n if (main?.type === 'query' || main?.type === 'procedure') {\n const streamingInput =\n main?.type === 'procedure' &&\n main.input?.encoding &&\n !main.input.schema\n const streamingOutput = main.output?.encoding && !main.output.schema\n if (streamingInput || streamingOutput) {\n //= import stream from 'node:stream'\n file.addImportDeclaration({\n moduleSpecifier: 'node:stream',\n defaultImport: 'stream',\n })\n }\n }\n\n genCommonImports(file, lexiconDoc.id)\n\n const imports: Set<string> = new Set()\n for (const defId in lexiconDoc.defs) {\n const def = lexiconDoc.defs[defId]\n const lexUri = `${lexiconDoc.id}#${defId}`\n if (defId === 'main') {\n if (def.type === 'query' || def.type === 'procedure') {\n genXrpcParams(file, lexicons, lexUri)\n genXrpcInput(file, imports, lexicons, lexUri)\n genXrpcOutput(file, imports, lexicons, lexUri, false)\n genServerXrpcMethod(file, lexicons, lexUri)\n } else if (def.type === 'subscription') {\n genXrpcParams(file, lexicons, lexUri)\n genXrpcOutput(file, imports, lexicons, lexUri, false)\n genServerXrpcStreaming(file, lexicons, lexUri)\n } else if (def.type === 'record') {\n genRecord(file, imports, lexicons, lexUri)\n } else {\n genUserType(file, imports, lexicons, lexUri)\n }\n } else {\n genUserType(file, imports, lexicons, lexUri)\n }\n }\n genImports(file, imports, lexiconDoc.id)\n },\n )\n\nfunction genServerXrpcMethod(\n file: SourceFile,\n lexicons: Lexicons,\n lexUri: string,\n) {\n const def = lexicons.getDefOrThrow(lexUri, ['query', 'procedure'])\n\n //= export interface HandlerInput {...}\n if (def.type === 'procedure' && def.input?.encoding) {\n const handlerInput = file.addInterface({\n name: 'HandlerInput',\n isExported: true,\n })\n\n handlerInput.addProperty({\n name: 'encoding',\n type: def.input.encoding\n .split(',')\n .map((v) => `'${v.trim()}'`)\n .join(' | '),\n })\n handlerInput.addProperty({\n name: 'body',\n type: def.input.schema\n ? def.input.encoding.includes(',')\n ? 'InputSchema | stream.Readable'\n : 'InputSchema'\n : 'stream.Readable',\n })\n } else {\n file.addTypeAlias({\n isExported: true,\n name: 'HandlerInput',\n type: 'void',\n })\n }\n\n // export interface HandlerSuccess {...}\n let hasHandlerSuccess = false\n if (def.output?.schema || def.output?.encoding) {\n hasHandlerSuccess = true\n const handlerSuccess = file.addInterface({\n name: 'HandlerSuccess',\n isExported: true,\n })\n\n if (def.output.encoding) {\n handlerSuccess.addProperty({\n name: 'encoding',\n type: def.output.encoding\n .split(',')\n .map((v) => `'${v.trim()}'`)\n .join(' | '),\n })\n }\n if (def.output?.schema) {\n if (def.output.encoding.includes(',')) {\n handlerSuccess.addProperty({\n name: 'body',\n type: 'OutputSchema | Uint8Array | stream.Readable',\n })\n } else {\n handlerSuccess.addProperty({ name: 'body', type: 'OutputSchema' })\n }\n } else if (def.output?.encoding) {\n handlerSuccess.addProperty({\n name: 'body',\n type: 'Uint8Array | stream.Readable',\n })\n }\n handlerSuccess.addProperty({\n name: 'headers?',\n type: '{ [key: string]: string }',\n })\n }\n\n // export interface HandlerError {...}\n const handlerError = file.addInterface({\n name: 'HandlerError',\n isExported: true,\n })\n handlerError.addProperties([\n { name: 'status', type: 'number' },\n { name: 'message?', type: 'string' },\n ])\n if (def.errors?.length) {\n handlerError.addProperty({\n name: 'error?',\n type: def.errors.map((err) => `'${err.name}'`).join(' | '),\n })\n }\n\n // export type HandlerOutput = ...\n file.addTypeAlias({\n isExported: true,\n name: 'HandlerOutput',\n type: `HandlerError | ${hasHandlerSuccess ? 'HandlerSuccess' : 'void'}`,\n })\n}\n\nfunction genServerXrpcStreaming(\n file: SourceFile,\n lexicons: Lexicons,\n lexUri: string,\n) {\n const def = lexicons.getDefOrThrow(lexUri, ['subscription'])\n\n file.addImportDeclaration({\n moduleSpecifier: '@atproto/xrpc-server',\n namedImports: [{ name: 'ErrorFrame' }],\n })\n\n file.addImportDeclaration({\n moduleSpecifier: 'node:http',\n namedImports: [{ name: 'IncomingMessage' }],\n })\n\n // export type HandlerError = ...\n file.addTypeAlias({\n name: 'HandlerError',\n isExported: true,\n type: `ErrorFrame<${arrayToUnion(def.errors?.map((e) => e.name))}>`,\n })\n\n // export type HandlerOutput = ...\n file.addTypeAlias({\n isExported: true,\n name: 'HandlerOutput',\n type: `HandlerError | ${def.message?.schema ? 'OutputSchema' : 'void'}`,\n })\n}\n\nfunction arrayToUnion(arr?: string[]) {\n if (!arr?.length) {\n return 'never'\n }\n return arr.map((item) => `'${item}'`).join(' | ')\n}\n"]}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/codegen/server.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n IndentationText,\n Project,\n SourceFile,\n VariableDeclarationKind,\n} from 'ts-morph'\nimport { type LexiconDoc, Lexicons } from '@atproto/lexicon'\nimport { NSID } from '@atproto/syntax'\nimport type { GeneratedAPI } from '../types.js'\nimport { gen, lexiconsTs, utilTs } from './common.js'\nimport {\n genCommonImports,\n genImports,\n genRecord,\n genUserType,\n genXrpcInput,\n genXrpcOutput,\n genXrpcParams,\n} from './lex-gen.js'\nimport {\n type DefTreeNode,\n lexiconsToDefTree,\n schemasToNsidTokens,\n toCamelCase,\n toScreamingSnakeCase,\n toTitleCase,\n} from './util.js'\n\nexport async function genServerApi(\n lexiconDocs: LexiconDoc[],\n): Promise<GeneratedAPI> {\n const project = new Project({\n useInMemoryFileSystem: true,\n manipulationSettings: { indentationText: IndentationText.TwoSpaces },\n })\n const api: GeneratedAPI = { files: [] }\n const lexicons = new Lexicons(lexiconDocs)\n const nsidTree = lexiconsToDefTree(lexiconDocs)\n const nsidTokens = schemasToNsidTokens(lexiconDocs)\n for (const lexiconDoc of lexiconDocs) {\n api.files.push(await lexiconTs(project, lexicons, lexiconDoc))\n }\n api.files.push(await utilTs(project))\n api.files.push(await lexiconsTs(project, lexiconDocs))\n api.files.push(await indexTs(project, lexiconDocs, nsidTree, nsidTokens))\n return api\n}\n\nconst indexTs = (\n project: Project,\n lexiconDocs: LexiconDoc[],\n nsidTree: DefTreeNode[],\n nsidTokens: Record<string, string[]>,\n) =>\n gen(project, '/index.ts', async (file) => {\n //= import {createServer as createXrpcServer, Server as XrpcServer} from '@atproto/xrpc-server'\n file.addImportDeclaration({\n moduleSpecifier: '@atproto/xrpc-server',\n namedImports: [\n { name: 'Auth', isTypeOnly: true },\n { name: 'Options', alias: 'XrpcOptions', isTypeOnly: true },\n { name: 'Server', alias: 'XrpcServer' },\n { name: 'StreamConfigOrHandler', isTypeOnly: true },\n { name: 'MethodConfigOrHandler', isTypeOnly: true },\n { name: 'createServer', alias: 'createXrpcServer' },\n ],\n })\n //= import {schemas} from './lexicons.js'\n file\n .addImportDeclaration({\n moduleSpecifier: './lexicons.js',\n })\n .addNamedImport({\n name: 'schemas',\n })\n\n // generate type imports\n for (const lexiconDoc of lexiconDocs) {\n if (\n lexiconDoc.defs.main?.type !== 'query' &&\n lexiconDoc.defs.main?.type !== 'subscription' &&\n lexiconDoc.defs.main?.type !== 'procedure'\n ) {\n continue\n }\n file\n .addImportDeclaration({\n moduleSpecifier: `./types/${lexiconDoc.id.split('.').join('/')}.js`,\n })\n .setNamespaceImport(toTitleCase(lexiconDoc.id))\n }\n\n // generate token enums\n for (const nsidAuthority in nsidTokens) {\n // export const {THE_AUTHORITY} = {\n // {Name}: \"{authority.the.name}\"\n // }\n file.addVariableStatement({\n isExported: true,\n declarationKind: VariableDeclarationKind.Const,\n declarations: [\n {\n name: toScreamingSnakeCase(nsidAuthority),\n initializer: [\n '{',\n ...nsidTokens[nsidAuthority].map(\n (nsidName) =>\n `${toTitleCase(nsidName)}: \"${nsidAuthority}.${nsidName}\",`,\n ),\n '}',\n ].join('\\n'),\n },\n ],\n })\n }\n\n //= export function createServer(options?: XrpcOptions) { ... }\n const createServerFn = file.addFunction({\n name: 'createServer',\n returnType: 'Server',\n parameters: [\n { name: 'options', type: 'XrpcOptions', hasQuestionToken: true },\n ],\n isExported: true,\n })\n createServerFn.setBodyText(`return new Server(options)`)\n\n //= export class Server {...}\n const serverCls = file.addClass({\n name: 'Server',\n isExported: true,\n })\n //= xrpc: XrpcServer = createXrpcServer(methodSchemas)\n serverCls.addProperty({\n name: 'xrpc',\n type: 'XrpcServer',\n })\n\n // generate classes for the schemas\n for (const ns of nsidTree) {\n //= ns: NS\n serverCls.addProperty({\n name: ns.propName,\n type: ns.className,\n })\n\n // class...\n genNamespaceCls(file, ns)\n }\n\n //= constructor (options?: XrpcOptions) {\n //= this.xrpc = createXrpcServer(schemas, options)\n //= {namespace declarations}\n //= }\n serverCls\n .addConstructor({\n parameters: [\n { name: 'options', type: 'XrpcOptions', hasQuestionToken: true },\n ],\n })\n .setBodyText(\n [\n 'this.xrpc = createXrpcServer(schemas, options)',\n ...nsidTree.map(\n (ns) => `this.${ns.propName} = new ${ns.className}(this)`,\n ),\n ].join('\\n'),\n )\n })\n\nfunction genNamespaceCls(file: SourceFile, ns: DefTreeNode) {\n //= export class {ns}NS {...}\n const cls = file.addClass({\n name: ns.className,\n isExported: true,\n })\n //= _server: Server\n cls.addProperty({\n name: '_server',\n type: 'Server',\n })\n\n for (const child of ns.children) {\n //= child: ChildNS\n cls.addProperty({\n name: child.propName,\n type: child.className,\n })\n\n // recurse\n genNamespaceCls(file, child)\n }\n\n //= constructor(server: Server) {\n //= this._server = server\n //= {child namespace declarations}\n //= }\n const cons = cls.addConstructor()\n cons.addParameter({\n name: 'server',\n type: 'Server',\n })\n cons.setBodyText(\n [\n `this._server = server`,\n ...ns.children.map(\n (ns) => `this.${ns.propName} = new ${ns.className}(server)`,\n ),\n ].join('\\n'),\n )\n\n // methods\n for (const userType of ns.userTypes) {\n if (\n userType.def.type !== 'query' &&\n userType.def.type !== 'subscription' &&\n userType.def.type !== 'procedure'\n ) {\n continue\n }\n const moduleName = toTitleCase(userType.nsid)\n const name = toCamelCase(NSID.parse(userType.nsid).name || '')\n const isSubscription = userType.def.type === 'subscription'\n const method = cls.addMethod({\n name,\n typeParameters: [\n {\n name: 'A',\n constraint: 'Auth',\n default: 'void',\n },\n ],\n })\n method.addParameter({\n name: 'cfg',\n type: isSubscription\n ? `StreamConfigOrHandler<\n A,\n ${moduleName}.QueryParams,\n ${moduleName}.HandlerOutput,\n >`\n : `MethodConfigOrHandler<\n A,\n ${moduleName}.QueryParams,\n ${moduleName}.HandlerInput,\n ${moduleName}.HandlerOutput,\n >`,\n })\n const methodType = isSubscription ? 'streamMethod' : 'method'\n method.setBodyText(\n [\n // Placing schema on separate line, since the following one was being formatted\n // into multiple lines and causing the ts-ignore to ignore the wrong line.\n `const nsid = '${userType.nsid}' // @ts-ignore`,\n `return this._server.xrpc.${methodType}(nsid, cfg)`,\n ].join('\\n'),\n )\n }\n}\n\nconst lexiconTs = (\n project: Project,\n lexicons: Lexicons,\n lexiconDoc: LexiconDoc,\n) =>\n gen(\n project,\n `/types/${lexiconDoc.id.split('.').join('/')}.ts`,\n async (file) => {\n const main = lexiconDoc.defs.main\n if (main?.type === 'query' || main?.type === 'procedure') {\n const streamingInput =\n main?.type === 'procedure' &&\n main.input?.encoding &&\n !main.input.schema\n const streamingOutput = main.output?.encoding && !main.output.schema\n if (streamingInput || streamingOutput) {\n //= import stream from 'node:stream'\n file.addImportDeclaration({\n moduleSpecifier: 'node:stream',\n defaultImport: 'stream',\n })\n }\n }\n\n genCommonImports(file, lexiconDoc.id)\n\n const imports: Set<string> = new Set()\n for (const defId in lexiconDoc.defs) {\n const def = lexiconDoc.defs[defId]\n const lexUri = `${lexiconDoc.id}#${defId}`\n if (defId === 'main') {\n if (def.type === 'query' || def.type === 'procedure') {\n genXrpcParams(file, lexicons, lexUri)\n genXrpcInput(file, imports, lexicons, lexUri)\n genXrpcOutput(file, imports, lexicons, lexUri, false)\n genServerXrpcMethod(file, lexicons, lexUri)\n } else if (def.type === 'subscription') {\n genXrpcParams(file, lexicons, lexUri)\n genXrpcOutput(file, imports, lexicons, lexUri, false)\n genServerXrpcStreaming(file, lexicons, lexUri)\n } else if (def.type === 'record') {\n genRecord(file, imports, lexicons, lexUri)\n } else {\n genUserType(file, imports, lexicons, lexUri)\n }\n } else {\n genUserType(file, imports, lexicons, lexUri)\n }\n }\n genImports(file, imports, lexiconDoc.id)\n },\n )\n\nfunction genServerXrpcMethod(\n file: SourceFile,\n lexicons: Lexicons,\n lexUri: string,\n) {\n const def = lexicons.getDefOrThrow(lexUri, ['query', 'procedure'])\n\n //= export interface HandlerInput {...}\n if (def.type === 'procedure' && def.input?.encoding) {\n const handlerInput = file.addInterface({\n name: 'HandlerInput',\n isExported: true,\n })\n\n handlerInput.addProperty({\n name: 'encoding',\n type: def.input.encoding\n .split(',')\n .map((v) => `'${v.trim()}'`)\n .join(' | '),\n })\n handlerInput.addProperty({\n name: 'body',\n type: def.input.schema\n ? def.input.encoding.includes(',')\n ? 'InputSchema | stream.Readable'\n : 'InputSchema'\n : 'stream.Readable',\n })\n } else {\n file.addTypeAlias({\n isExported: true,\n name: 'HandlerInput',\n type: 'void',\n })\n }\n\n // export interface HandlerSuccess {...}\n let hasHandlerSuccess = false\n if (def.output?.schema || def.output?.encoding) {\n hasHandlerSuccess = true\n const handlerSuccess = file.addInterface({\n name: 'HandlerSuccess',\n isExported: true,\n })\n\n if (def.output.encoding) {\n handlerSuccess.addProperty({\n name: 'encoding',\n type: def.output.encoding\n .split(',')\n .map((v) => `'${v.trim()}'`)\n .join(' | '),\n })\n }\n if (def.output?.schema) {\n if (def.output.encoding.includes(',')) {\n handlerSuccess.addProperty({\n name: 'body',\n type: 'OutputSchema | Uint8Array | stream.Readable',\n })\n } else {\n handlerSuccess.addProperty({ name: 'body', type: 'OutputSchema' })\n }\n } else if (def.output?.encoding) {\n handlerSuccess.addProperty({\n name: 'body',\n type: 'Uint8Array | stream.Readable',\n })\n }\n handlerSuccess.addProperty({\n name: 'headers?',\n type: '{ [key: string]: string }',\n })\n }\n\n // export interface HandlerError {...}\n const handlerError = file.addInterface({\n name: 'HandlerError',\n isExported: true,\n })\n handlerError.addProperties([\n { name: 'status', type: 'number' },\n { name: 'message?', type: 'string' },\n ])\n if (def.errors?.length) {\n handlerError.addProperty({\n name: 'error?',\n type: def.errors.map((err) => `'${err.name}'`).join(' | '),\n })\n }\n\n // export type HandlerOutput = ...\n file.addTypeAlias({\n isExported: true,\n name: 'HandlerOutput',\n type: `HandlerError | ${hasHandlerSuccess ? 'HandlerSuccess' : 'void'}`,\n })\n}\n\nfunction genServerXrpcStreaming(\n file: SourceFile,\n lexicons: Lexicons,\n lexUri: string,\n) {\n const def = lexicons.getDefOrThrow(lexUri, ['subscription'])\n\n file.addImportDeclaration({\n moduleSpecifier: '@atproto/xrpc-server',\n namedImports: [{ name: 'ErrorFrame' }],\n })\n\n file.addImportDeclaration({\n moduleSpecifier: 'node:http',\n namedImports: [{ name: 'IncomingMessage' }],\n })\n\n // export type HandlerError = ...\n file.addTypeAlias({\n name: 'HandlerError',\n isExported: true,\n type: `ErrorFrame<${arrayToUnion(def.errors?.map((e) => e.name))}>`,\n })\n\n // export type HandlerOutput = ...\n file.addTypeAlias({\n isExported: true,\n name: 'HandlerOutput',\n type: `HandlerError | ${def.message?.schema ? 'OutputSchema' : 'void'}`,\n })\n}\n\nfunction arrayToUnion(arr?: string[]) {\n if (!arr?.length) {\n return 'never'\n }\n return arr.map((item) => `'${item}'`).join(' | ')\n}\n"]}
|
package/dist/codegen/util.js
CHANGED
package/dist/codegen/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/codegen/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/codegen/util.ts"],"names":[],"mappings":"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","sourcesContent":["import { type LexUserType, type LexiconDoc } from '@atproto/lexicon'\nimport { NSID } from '@atproto/syntax'\n\nexport interface DefTreeNodeUserType {\n nsid: string\n def: LexUserType\n}\n\nexport interface DefTreeNode {\n name: string\n className: string\n propName: string\n children: DefTreeNode[]\n userTypes: DefTreeNodeUserType[]\n}\n\nexport function lexiconsToDefTree(lexicons: LexiconDoc[]): DefTreeNode[] {\n const tree: DefTreeNode[] = []\n for (const lexicon of lexicons) {\n if (!lexicon.defs.main) {\n continue\n }\n const node = getOrCreateNode(tree, lexicon.id.split('.').slice(0, -1))\n node.userTypes.push({ nsid: lexicon.id, def: lexicon.defs.main })\n }\n return tree\n}\n\nfunction getOrCreateNode(tree: DefTreeNode[], path: string[]): DefTreeNode {\n let node: DefTreeNode | undefined\n for (let i = 0; i < path.length; i++) {\n const segment = path[i]\n node = tree.find((v) => v.name === segment)\n if (!node) {\n node = {\n name: segment,\n className: `${toTitleCase(path.slice(0, i + 1).join('-'))}NS`,\n propName: toCamelCase(segment),\n children: [],\n userTypes: [],\n } as DefTreeNode\n tree.push(node)\n }\n tree = node.children\n }\n if (!node) throw new Error(`Invalid schema path: ${path.join('.')}`)\n return node\n}\n\nexport function schemasToNsidTokens(\n lexiconDocs: LexiconDoc[],\n): Record<string, string[]> {\n const nsidTokens: Record<string, string[]> = {}\n for (const lexiconDoc of lexiconDocs) {\n const nsidp = NSID.parse(lexiconDoc.id)\n if (!nsidp.name) continue\n for (const defId in lexiconDoc.defs) {\n const def = lexiconDoc.defs[defId]\n if (def.type !== 'token') continue\n const authority = nsidp.segments.slice(0, -1).join('.')\n nsidTokens[authority] ??= []\n nsidTokens[authority].push(\n nsidp.name + (defId === 'main' ? '' : `#${defId}`),\n )\n }\n }\n return nsidTokens\n}\n\nexport function toTitleCase(v: string): string {\n v = v.replace(/^([a-z])/gi, (_, g) => g.toUpperCase()) // upper-case first letter\n v = v.replace(/[.#-]([a-z])/gi, (_, g) => g.toUpperCase()) // uppercase any dash, dot, or hash segments\n return v.replace(/[.-]/g, '') // remove lefover dashes or dots\n}\n\nexport function toCamelCase(v: string): string {\n v = v.replace(/[.#-]([a-z])/gi, (_, g) => g.toUpperCase()) // uppercase any dash, dot, or hash segments\n return v.replace(/[.-]/g, '') // remove lefover dashes or dots\n}\n\nexport function toScreamingSnakeCase(v: string): string {\n v = v.replace(/[.#-]+/gi, '_') // convert dashes, dots, and hashes into underscores\n return v.toUpperCase() // and scream!\n}\n"]}
|
package/dist/mdgen/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import {} from '@atproto/lexicon';
|
|
2
3
|
const INSERT_START = [
|
|
3
4
|
'<!-- START lex generated content. Please keep comment here to allow auto update -->',
|
|
4
5
|
"<!-- DON'T EDIT THIS SECTION! INSTEAD RE-RUN lex TO UPDATE -->",
|
|
@@ -60,9 +61,9 @@ function merge(arr) {
|
|
|
60
61
|
.join('\n');
|
|
61
62
|
}
|
|
62
63
|
function matchesStart(line) {
|
|
63
|
-
return /<!-- START lex /.test(line);
|
|
64
|
+
return /<!-- START lex /.test(String(line));
|
|
64
65
|
}
|
|
65
66
|
function matchesEnd(line) {
|
|
66
|
-
return /<!-- END lex /.test(line);
|
|
67
|
+
return /<!-- END lex /.test(String(line));
|
|
67
68
|
}
|
|
68
69
|
//# sourceMappingURL=index.js.map
|
package/dist/mdgen/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mdgen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mdgen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAmB,MAAM,kBAAkB,CAAA;AAElD,MAAM,YAAY,GAAG;IACnB,qFAAqF;IACrF,gEAAgE;CACjE,CAAA;AACD,MAAM,UAAU,GAAG;IACjB,8EAA8E;CAC/E,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,WAAmB,EAAE,QAAsB;IACvE,IAAI,eAAe,GAAG,EAAE,CAAA;IACxB,IAAI,CAAC;QACH,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IACD,MAAM,SAAS,GAAe,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEzD,oCAAoC;IACpC,IAAI,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IAClE,IAAI,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,UAAU,GAAG,SAAS,CAAC,MAAM,CAAA;IAC/B,CAAC;IACD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAA;IAC7B,CAAC;IAED,4BAA4B;IAC5B,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,CAAC,EAAE;QACtD,YAAY;QACZ,MAAM,UAAU,CAAC,QAAQ,CAAC;QAC1B,UAAU;KACX,CAAC,CAAA;IAEF,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;AACzD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAsB;IAC9C,MAAM,GAAG,GAAe,EAAE,CAAA;IAC1B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,IAAI,GAAe,EAAE,CAAA;QAC3B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QACpC,CAAC;QACD,GAAG,CAAC,IAAI,CAAC;YACP,KAAK;YACL,EAAE;YACF,MAAM,OAAO,CAAC,EAAE,EAAE;YAClB,EAAE;YACF,IAAI;YACJ,SAAS;YACT,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAGD,SAAS,KAAK,CAAC,GAAe;IAC5B,OAAO,GAAG;SACP,IAAI,CAAC,EAAE,CAAC;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;SACpC,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAA0B;IAC9C,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,IAA0B;IAC5C,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3C,CAAC","sourcesContent":["import fs from 'node:fs'\nimport { type LexiconDoc } from '@atproto/lexicon'\n\nconst INSERT_START = [\n '<!-- START lex generated content. Please keep comment here to allow auto update -->',\n \"<!-- DON'T EDIT THIS SECTION! INSTEAD RE-RUN lex TO UPDATE -->\",\n]\nconst INSERT_END = [\n '<!-- END lex generated TOC please keep comment here to allow auto update -->',\n]\n\nexport async function process(outFilePath: string, lexicons: LexiconDoc[]) {\n let existingContent = ''\n try {\n existingContent = fs.readFileSync(outFilePath, 'utf8')\n } catch {\n // ignore - no existing content\n }\n const fileLines: StringTree = existingContent.split('\\n')\n\n // find previously generated content\n let startIndex = fileLines.findIndex((line) => matchesStart(line))\n let endIndex = fileLines.findIndex((line) => matchesEnd(line))\n if (startIndex === -1) {\n startIndex = fileLines.length\n }\n if (endIndex === -1) {\n endIndex = fileLines.length\n }\n\n // generate & insert content\n fileLines.splice(startIndex, endIndex - startIndex + 1, [\n INSERT_START,\n await genMdLines(lexicons),\n INSERT_END,\n ])\n\n fs.writeFileSync(outFilePath, merge(fileLines), 'utf8')\n}\n\nasync function genMdLines(lexicons: LexiconDoc[]): Promise<StringTree> {\n const doc: StringTree = []\n for (const lexicon of lexicons) {\n console.log(lexicon.id)\n const desc: StringTree = []\n if (lexicon.description) {\n desc.push(lexicon.description, ``)\n }\n doc.push([\n `---`,\n ``,\n `## ${lexicon.id}`,\n '',\n desc,\n '```json',\n JSON.stringify(lexicon, null, 2),\n '```',\n ])\n }\n return doc\n}\n\ntype StringTree = (StringTree | string | undefined)[]\nfunction merge(arr: StringTree): string {\n return arr\n .flat(10)\n .filter((v) => typeof v === 'string')\n .join('\\n')\n}\n\nfunction matchesStart(line?: string | StringTree) {\n return /<!-- START lex /.test(String(line))\n}\n\nfunction matchesEnd(line?: string | StringTree) {\n return /<!-- END lex /.test(String(line))\n}\n"]}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type LexiconDoc } from '@atproto/lexicon';
|
|
2
|
-
import {
|
|
2
|
+
import type { FileDiff, GeneratedAPI } from './types.js';
|
|
3
3
|
export declare function readAllLexicons(paths: string[]): LexiconDoc[];
|
|
4
4
|
export declare function readLexicon(path: string): LexiconDoc;
|
|
5
5
|
export declare function genTsObj(lexicons: LexiconDoc[]): string;
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAExD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAc7D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAiCpD;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAEvD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,cAqB5D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAc7C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAa7C"}
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from 'node:fs'\nimport { join } from 'node:path'\nimport chalk from 'chalk'\nimport { ZodError, type ZodFormattedError } from 'zod'\nimport { type LexiconDoc, parseLexiconDoc } from '@atproto/lexicon'\nimport type { FileDiff, GeneratedAPI } from './types.js'\n\nexport function readAllLexicons(paths: string[]): LexiconDoc[] {\n paths = [...paths].sort() // incoming path order may have come from locale-dependent shell globs\n const docs: LexiconDoc[] = []\n for (const path of paths) {\n if (!path.endsWith('.json') || !fs.statSync(path).isFile()) {\n continue\n }\n try {\n docs.push(readLexicon(path))\n } catch {\n // skip\n }\n }\n return docs\n}\n\nexport function readLexicon(path: string): LexiconDoc {\n let str: string\n let obj: unknown\n try {\n str = fs.readFileSync(path, 'utf8')\n } catch (e) {\n console.error(`Failed to read file`, path)\n throw e\n }\n try {\n obj = JSON.parse(str)\n } catch (e) {\n console.error(`Failed to parse JSON in file`, path)\n throw e\n }\n if (\n obj &&\n typeof obj === 'object' &&\n typeof (obj as LexiconDoc).lexicon === 'number'\n ) {\n try {\n return parseLexiconDoc(obj)\n } catch (e) {\n console.error(`Invalid lexicon`, path)\n if (e instanceof ZodError) {\n printZodError(e.format())\n }\n throw e\n }\n } else {\n console.error(`Not lexicon schema`, path)\n throw new Error(`Not lexicon schema`)\n }\n}\n\nexport function genTsObj(lexicons: LexiconDoc[]): string {\n return `export const lexicons = ${JSON.stringify(lexicons, null, 2)}`\n}\n\nexport function genFileDiff(outDir: string, api: GeneratedAPI) {\n const diffs: FileDiff[] = []\n const existingFiles = readdirRecursiveSync(outDir)\n\n for (const file of api.files) {\n file.path = join(outDir, file.path)\n if (existingFiles.includes(file.path)) {\n diffs.push({ act: 'mod', path: file.path, content: file.content })\n } else {\n diffs.push({ act: 'add', path: file.path, content: file.content })\n }\n }\n for (const filepath of existingFiles) {\n if (api.files.find((f) => f.path === filepath)) {\n // do nothing\n } else {\n diffs.push({ act: 'del', path: filepath })\n }\n }\n\n return diffs\n}\n\nexport function printFileDiff(diff: FileDiff[]) {\n for (const d of diff) {\n switch (d.act) {\n case 'add':\n console.log(`${chalk.greenBright('[+ add]')} ${d.path}`)\n break\n case 'mod':\n console.log(`${chalk.yellowBright('[* mod]')} ${d.path}`)\n break\n case 'del':\n console.log(`${chalk.redBright('[- del]')} ${d.path}`)\n break\n }\n }\n}\n\nexport function applyFileDiff(diff: FileDiff[]) {\n for (const d of diff) {\n switch (d.act) {\n case 'add':\n case 'mod':\n fs.mkdirSync(join(d.path, '..'), { recursive: true }) // lazy way to make sure the parent dir exists\n fs.writeFileSync(d.path, d.content || '', 'utf8')\n break\n case 'del':\n fs.unlinkSync(d.path)\n break\n }\n }\n}\n\nfunction printZodError(node: ZodFormattedError<any>, path = ''): boolean {\n if (node._errors?.length) {\n console.log(chalk.red(`Issues at ${path}:`))\n for (const err of dedup(node._errors)) {\n console.log(chalk.red(` - ${err}`))\n }\n return true\n } else {\n for (const k in node) {\n if (k === '_errors') {\n continue\n }\n printZodError((node as any)[k], `${path}/${k}`)\n }\n }\n return false\n}\n\nfunction readdirRecursiveSync(root: string, files: string[] = [], prefix = '') {\n const dir = join(root, prefix)\n if (!fs.existsSync(dir)) return files\n if (fs.statSync(dir).isDirectory())\n fs.readdirSync(dir).forEach(function (name) {\n readdirRecursiveSync(root, files, join(prefix, name))\n })\n else if (prefix.endsWith('.ts')) {\n files.push(join(root, prefix))\n }\n\n return files\n}\n\nfunction dedup(arr: string[]): string[] {\n return Array.from(new Set(arr))\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/lex-cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.3",
|
|
4
|
+
"engines": {
|
|
5
|
+
"node": ">=22"
|
|
6
|
+
},
|
|
4
7
|
"license": "MIT",
|
|
5
8
|
"description": "TypeScript codegen tool for atproto Lexicon schemas",
|
|
6
9
|
"keywords": [
|
|
@@ -13,11 +16,20 @@
|
|
|
13
16
|
"url": "https://github.com/bluesky-social/atproto",
|
|
14
17
|
"directory": "packages/lex-cli"
|
|
15
18
|
},
|
|
19
|
+
"files": [
|
|
20
|
+
"./bin.js",
|
|
21
|
+
"./dist",
|
|
22
|
+
"./CHANGELOG.md"
|
|
23
|
+
],
|
|
16
24
|
"bin": {
|
|
17
25
|
"lex": "bin.js"
|
|
18
26
|
},
|
|
19
|
-
"
|
|
20
|
-
|
|
27
|
+
"type": "module",
|
|
28
|
+
"exports": {
|
|
29
|
+
".": {
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"default": "./dist/index.js"
|
|
32
|
+
}
|
|
21
33
|
},
|
|
22
34
|
"dependencies": {
|
|
23
35
|
"chalk": "^4.1.2",
|
|
@@ -26,16 +38,8 @@
|
|
|
26
38
|
"ts-morph": "^24.0.0",
|
|
27
39
|
"yesno": "^0.4.0",
|
|
28
40
|
"zod": "^3.23.8",
|
|
29
|
-
"@atproto/lexicon": "^0.7.
|
|
30
|
-
"@atproto/syntax": "^0.6.
|
|
31
|
-
},
|
|
32
|
-
"devDependencies": {},
|
|
33
|
-
"type": "module",
|
|
34
|
-
"exports": {
|
|
35
|
-
".": {
|
|
36
|
-
"types": "./dist/index.d.ts",
|
|
37
|
-
"default": "./dist/index.js"
|
|
38
|
-
}
|
|
41
|
+
"@atproto/lexicon": "^0.7.4",
|
|
42
|
+
"@atproto/syntax": "^0.6.4"
|
|
39
43
|
},
|
|
40
44
|
"scripts": {
|
|
41
45
|
"build": "tsgo --build tsconfig.build.json"
|