@sphereon/ssi-sdk.dev
Version:
1 lines • 14.4 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../../../node_modules/.pnpm/tsup@8.5.1_@microsoft+api-extractor@7.55.0_@types+node@20.19.25__@swc+core@1.15.2_@swc+_119fedc18e19d1717452bb9e989205b3/node_modules/tsup/assets/cjs_shims.js","../src/createCommand.ts","../src/dev.ts","../src/cli.ts"],"sourcesContent":["/**\n * @public\n */\nexport * from './createCommand'\nexport * from './cli'\nexport * from './dev'\n","// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import { Command } from 'commander'\nimport module from 'module'\nimport { dev } from './dev'\n\nconst requireCjs = module.createRequire(import.meta.url)\nconst { version } = requireCjs('../package.json')\n\nconst sphereon = new Command('sphereon').version(version, '-v, --version').addCommand(dev)\n\nexport { sphereon }\n","import { Extractor, ExtractorConfig, ExtractorResult } from '@microsoft/api-extractor'\nimport { ApiMethodSignature, ApiModel, ApiParameterListMixin, ApiReturnTypeMixin } from '@microsoft/api-extractor-model'\nimport { Command } from 'commander'\nimport { writeFileSync } from 'fs'\nimport { OpenAPIV3 } from 'openapi-types'\nimport { resolve } from 'path'\nimport * as TJS from 'ts-json-schema-generator'\n\nimport module from 'module'\n\nconst requireCjs = module.createRequire(import.meta.url)\n\ninterface Method {\n packageName: string\n pluginInterfaceName: string\n operationId: string\n description?: string\n parameters?: string\n response: string\n}\n\nconst genericTypes = ['boolean', 'string', 'number', 'any', 'Array<string>']\n\nfunction createSchema(generator: TJS.SchemaGenerator, symbol: string) {\n if (genericTypes.includes(symbol)) {\n return { components: { schemas: {} } }\n }\n\n const fixedSymbol = symbol.replace(/Array\\<(.*)\\>/gm, '$1').replace(/(\\\\:[\\w]?Certificate)/gm, ': any')\n\n const schema = generator.createSchema(fixedSymbol)\n\n const newSchema = {\n components: {\n schemas: schema.definitions,\n },\n }\n\n let schemaStr = JSON.stringify(newSchema, null, 2)\n\n schemaStr = schemaStr.replace(/#\\/definitions\\//gm, '#/components/schemas/')\n schemaStr = schemaStr.replace(/\\\"patternProperties\\\":{([^:]*):{[^}]*}}/gm, '\"pattern\": $1')\n schemaStr = schemaStr.replace(/Verifiable\\<(.*)\\>/gm, 'Verifiable-$1')\n schemaStr = schemaStr.replace(/Where\\<(.*)\\>/gm, 'Where-$1')\n schemaStr = schemaStr.replace(/Order\\<(.*)\\>/gm, 'Order-$1')\n schemaStr = schemaStr.replace(/FindArgs\\<(.*)\\>/gm, 'FindArgs-$1')\n schemaStr = schemaStr.replace(/https \\:\\/\\//gm, 'https://')\n // a bug in the schema generator stack mangles @link tags with text.\n schemaStr = schemaStr.replace(/\\{@link\\s+([^|}]+?)\\s([^|}]+)\\s}/g, '{@link $1 | $2 }')\n return JSON.parse(schemaStr)\n}\n\nfunction getReference(response: string): OpenAPIV3.ReferenceObject | OpenAPIV3.SchemaObject {\n if (!response) {\n return { type: 'object' }\n }\n\n if (response.slice(0, 6) === 'Array<') {\n const symbol = response.replace('Array<', '').replace('>', '') as 'string' | 'number' | 'boolean' | 'object' | 'integer'\n return {\n type: 'array',\n items: genericTypes.includes(symbol) ? { type: symbol } : { $ref: '#/components/schemas/' + symbol },\n }\n }\n response = response.replace(/(\\\\:?[\\w]*Certificate)/gm, 'any')\n if (response === 'any') {\n return { type: 'object' }\n }\n\n if (['string', 'number', 'boolean', 'object', 'integer'].includes(response)) {\n // @ts-ignore\n return { type: response }\n } else {\n return { $ref: '#/components/schemas/' + response }\n }\n}\n\nconst dev = new Command('dev').description('Plugin developer tools')\n\ndev\n .command('generate-plugin-schema')\n .description('generate plugin schema')\n .option('-c, --extractorConfig <string>', 'API Extractor config file', './api-extractor.json')\n .option('-p, --packageConfig <string>', 'package.json file containing a Veramo plugin interface config', './package.json')\n\n .action(async (options) => {\n const apiExtractorJsonPath: string = resolve(options.extractorConfig)\n const extractorConfig: ExtractorConfig = ExtractorConfig.loadFileAndPrepare(apiExtractorJsonPath)\n\n const extractorResult: ExtractorResult = Extractor.invoke(extractorConfig, {\n localBuild: true,\n showVerboseMessages: true,\n showDiagnostics: true,\n })\n\n if (!extractorResult.succeeded) {\n console.error(`API Extractor completed with ${extractorResult.errorCount} errors` + ` and ${extractorResult.warningCount} warnings`)\n process.exitCode = 1\n }\n\n const packageConfig = requireCjs(resolve(options.packageConfig))\n const interfaces: any = {}\n\n for (const pluginInterfaceName in packageConfig?.veramo?.pluginInterfaces) {\n const entryFile = packageConfig.veramo.pluginInterfaces[pluginInterfaceName]\n const api = {\n components: {\n schemas: {},\n methods: {},\n },\n }\n\n const generator = TJS.createGenerator({\n path: resolve(entryFile),\n // tsconfig: resolve('../../tsconfig.json'),\n encodeRefs: false,\n // additionalProperties: true,\n skipTypeCheck: true,\n expose: 'all',\n type: '*',\n // functions: 'hide',\n })\n\n const apiModel: ApiModel = new ApiModel()\n const apiPackage = apiModel.loadPackage(extractorConfig.apiJsonFilePath)\n\n const entry = apiPackage.entryPoints[0]\n\n const pluginInterface = entry.findMembersByName(pluginInterfaceName)[0]\n\n for (const member of pluginInterface.members) {\n const method: Partial<Method> = {}\n method.pluginInterfaceName = pluginInterfaceName\n method.operationId = member.displayName\n // console.log(member)\n method.parameters = (member as ApiParameterListMixin).parameters[0]?.parameterTypeExcerpt?.text\n method.response = (member as ApiReturnTypeMixin).returnTypeExcerpt.text.replace('Promise<', '').replace('>', '')\n\n const methodSignature = member as ApiMethodSignature\n method.description = methodSignature.tsdocComment?.summarySection\n ?.getChildNodes()[0]\n // @ts-ignore\n ?.getChildNodes()[0]?.text\n\n method.description = method.description || ''\n\n if (method.parameters) {\n // @ts-ignore\n api.components.schemas = {\n // @ts-ignore\n ...api.components.schemas,\n ...createSchema(generator, method.parameters).components.schemas,\n }\n }\n\n // @ts-ignore\n api.components.schemas = {\n // @ts-ignore\n ...api.components.schemas,\n ...createSchema(generator, method.response).components.schemas,\n }\n\n // @ts-ignore\n api.components.methods[method.operationId] = {\n description: method.description,\n arguments: getReference(method.parameters),\n returnType: getReference(method.response),\n }\n }\n\n interfaces[pluginInterfaceName] = api\n }\n\n writeFileSync(resolve('./plugin.schema.json'), JSON.stringify(interfaces, null, 2))\n })\n\ndev\n .command('extract-api')\n .description('Extract API')\n .option('-c, --extractorConfig <string>', 'API Extractor config file', './api-extractor.json')\n .action(async (options) => {\n const apiExtractorJsonPath: string = resolve(options.extractorConfig)\n const extractorConfig: ExtractorConfig = ExtractorConfig.loadFileAndPrepare(apiExtractorJsonPath)\n\n const extractorResult: ExtractorResult = Extractor.invoke(extractorConfig, {\n localBuild: true,\n // showVerboseMessages: true,\n })\n\n if (!extractorResult.succeeded) {\n console.error(`API Extractor completed with ${extractorResult.errorCount} errors` + ` and ${extractorResult.warningCount} warnings`)\n process.exitCode = 1\n }\n })\n\nexport { dev }\n","// import inquirer from 'inquirer'\n// import inquirerAutoPrompt from 'inquirer-autocomplete-prompt'\n//\n// inquirer.registerPrompt('autocomplete', inquirerAutoPrompt)\nimport { sphereon } from './createCommand'\n\nif (!process.argv.slice(2).length) {\n sphereon.outputHelp()\n} else {\n sphereon.parse(process.argv)\n}\n"],"mappings":"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","names":["getImportMetaUrl","document","URL","__filename","href","currentScript","tagName","toUpperCase","src","baseURI","importMetaUrl","import_commander","import_module","requireCjs","module","createRequire","genericTypes","createSchema","generator","symbol","includes","components","schemas","fixedSymbol","replace","schema","newSchema","definitions","schemaStr","JSON","stringify","parse","getReference","response","type","slice","items","$ref","dev","Command","description","command","option","action","options","apiExtractorJsonPath","resolve","extractorConfig","ExtractorConfig","loadFileAndPrepare","extractorResult","Extractor","invoke","localBuild","showVerboseMessages","showDiagnostics","succeeded","console","error","errorCount","warningCount","process","exitCode","packageConfig","interfaces","pluginInterfaceName","veramo","pluginInterfaces","entryFile","api","methods","createGenerator","path","encodeRefs","skipTypeCheck","expose","apiModel","ApiModel","apiPackage","loadPackage","apiJsonFilePath","entry","entryPoints","pluginInterface","findMembersByName","member","members","method","operationId","displayName","parameters","parameterTypeExcerpt","text","returnTypeExcerpt","methodSignature","tsdocComment","summarySection","getChildNodes","arguments","returnType","writeFileSync","requireCjs","module","createRequire","version","sphereon","Command","addCommand","dev","process","argv","slice","length","sphereon","outputHelp","parse"]}