UNPKG

@sphereon/ssi-sdk.dev

Version:

220 lines (214 loc) • 9.06 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { dev: () => dev, sphereon: () => sphereon }); module.exports = __toCommonJS(index_exports); // ../../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 var getImportMetaUrl = /* @__PURE__ */ __name(() => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href, "getImportMetaUrl"); var importMetaUrl = /* @__PURE__ */ getImportMetaUrl(); // src/createCommand.ts var import_commander2 = require("commander"); var import_module2 = __toESM(require("module"), 1); // src/dev.ts var import_api_extractor = require("@microsoft/api-extractor"); var import_api_extractor_model = require("@microsoft/api-extractor-model"); var import_commander = require("commander"); var import_fs = require("fs"); var import_path = require("path"); var TJS = __toESM(require("ts-json-schema-generator"), 1); var import_module = __toESM(require("module"), 1); var requireCjs = import_module.default.createRequire(importMetaUrl); var genericTypes = [ "boolean", "string", "number", "any", "Array<string>" ]; function createSchema(generator, symbol) { if (genericTypes.includes(symbol)) { return { components: { schemas: {} } }; } const fixedSymbol = symbol.replace(/Array\<(.*)\>/gm, "$1").replace(/(\\:[\w]?Certificate)/gm, ": any"); const schema = generator.createSchema(fixedSymbol); const newSchema = { components: { schemas: schema.definitions } }; let schemaStr = JSON.stringify(newSchema, null, 2); schemaStr = schemaStr.replace(/#\/definitions\//gm, "#/components/schemas/"); schemaStr = schemaStr.replace(/\"patternProperties\":{([^:]*):{[^}]*}}/gm, '"pattern": $1'); schemaStr = schemaStr.replace(/Verifiable\<(.*)\>/gm, "Verifiable-$1"); schemaStr = schemaStr.replace(/Where\<(.*)\>/gm, "Where-$1"); schemaStr = schemaStr.replace(/Order\<(.*)\>/gm, "Order-$1"); schemaStr = schemaStr.replace(/FindArgs\<(.*)\>/gm, "FindArgs-$1"); schemaStr = schemaStr.replace(/https \:\/\//gm, "https://"); schemaStr = schemaStr.replace(/\{@link\s+([^|}]+?)\s([^|}]+)\s}/g, "{@link $1 | $2 }"); return JSON.parse(schemaStr); } __name(createSchema, "createSchema"); function getReference(response) { if (!response) { return { type: "object" }; } if (response.slice(0, 6) === "Array<") { const symbol = response.replace("Array<", "").replace(">", ""); return { type: "array", items: genericTypes.includes(symbol) ? { type: symbol } : { $ref: "#/components/schemas/" + symbol } }; } response = response.replace(/(\\:?[\w]*Certificate)/gm, "any"); if (response === "any") { return { type: "object" }; } if ([ "string", "number", "boolean", "object", "integer" ].includes(response)) { return { type: response }; } else { return { $ref: "#/components/schemas/" + response }; } } __name(getReference, "getReference"); var dev = new import_commander.Command("dev").description("Plugin developer tools"); dev.command("generate-plugin-schema").description("generate plugin schema").option("-c, --extractorConfig <string>", "API Extractor config file", "./api-extractor.json").option("-p, --packageConfig <string>", "package.json file containing a Veramo plugin interface config", "./package.json").action(async (options) => { const apiExtractorJsonPath = (0, import_path.resolve)(options.extractorConfig); const extractorConfig = import_api_extractor.ExtractorConfig.loadFileAndPrepare(apiExtractorJsonPath); const extractorResult = import_api_extractor.Extractor.invoke(extractorConfig, { localBuild: true, showVerboseMessages: true, showDiagnostics: true }); if (!extractorResult.succeeded) { console.error(`API Extractor completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`); process.exitCode = 1; } const packageConfig = requireCjs((0, import_path.resolve)(options.packageConfig)); const interfaces = {}; for (const pluginInterfaceName in packageConfig?.veramo?.pluginInterfaces) { const entryFile = packageConfig.veramo.pluginInterfaces[pluginInterfaceName]; const api = { components: { schemas: {}, methods: {} } }; const generator = TJS.createGenerator({ path: (0, import_path.resolve)(entryFile), // tsconfig: resolve('../../tsconfig.json'), encodeRefs: false, // additionalProperties: true, skipTypeCheck: true, expose: "all", type: "*" }); const apiModel = new import_api_extractor_model.ApiModel(); const apiPackage = apiModel.loadPackage(extractorConfig.apiJsonFilePath); const entry = apiPackage.entryPoints[0]; const pluginInterface = entry.findMembersByName(pluginInterfaceName)[0]; for (const member of pluginInterface.members) { const method = {}; method.pluginInterfaceName = pluginInterfaceName; method.operationId = member.displayName; method.parameters = member.parameters[0]?.parameterTypeExcerpt?.text; method.response = member.returnTypeExcerpt.text.replace("Promise<", "").replace(">", ""); const methodSignature = member; method.description = methodSignature.tsdocComment?.summarySection?.getChildNodes()[0]?.getChildNodes()[0]?.text; method.description = method.description || ""; if (method.parameters) { api.components.schemas = { // @ts-ignore ...api.components.schemas, ...createSchema(generator, method.parameters).components.schemas }; } api.components.schemas = { // @ts-ignore ...api.components.schemas, ...createSchema(generator, method.response).components.schemas }; api.components.methods[method.operationId] = { description: method.description, arguments: getReference(method.parameters), returnType: getReference(method.response) }; } interfaces[pluginInterfaceName] = api; } (0, import_fs.writeFileSync)((0, import_path.resolve)("./plugin.schema.json"), JSON.stringify(interfaces, null, 2)); }); dev.command("extract-api").description("Extract API").option("-c, --extractorConfig <string>", "API Extractor config file", "./api-extractor.json").action(async (options) => { const apiExtractorJsonPath = (0, import_path.resolve)(options.extractorConfig); const extractorConfig = import_api_extractor.ExtractorConfig.loadFileAndPrepare(apiExtractorJsonPath); const extractorResult = import_api_extractor.Extractor.invoke(extractorConfig, { localBuild: true }); if (!extractorResult.succeeded) { console.error(`API Extractor completed with ${extractorResult.errorCount} errors and ${extractorResult.warningCount} warnings`); process.exitCode = 1; } }); // src/createCommand.ts var requireCjs2 = import_module2.default.createRequire(importMetaUrl); var { version } = requireCjs2("../package.json"); var sphereon = new import_commander2.Command("sphereon").version(version, "-v, --version").addCommand(dev); // src/cli.ts if (!process.argv.slice(2).length) { sphereon.outputHelp(); } else { sphereon.parse(process.argv); } //# sourceMappingURL=index.cjs.map