UNPKG

@sphereon/ssi-sdk.contact-manager-rest-api

Version:

277 lines (273 loc) • 10.3 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, { ContactManagerApiServer: () => ContactManagerApiServer, identitiesReadEndpoint: () => identitiesReadEndpoint, identityReadEndpoints: () => identityReadEndpoints, partiesReadEndpoint: () => partiesReadEndpoint, partiesTypeReadEndpoint: () => partiesTypeReadEndpoint, partyDeleteEndpoint: () => partyDeleteEndpoint, partyReadEndpoint: () => partyReadEndpoint, partyTypeReadEndpoint: () => partyTypeReadEndpoint, partyWriteEndpoint: () => partyWriteEndpoint }); module.exports = __toCommonJS(index_exports); // src/contact-manager-api-server.ts var import_ssi_sdk = require("@sphereon/ssi-sdk.core"); var import_express = __toESM(require("express"), 1); // src/api-functions.ts var import_ssi_express_support = require("@sphereon/ssi-express-support"); function partiesReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partiesReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/parties"; router.get(path, (0, import_ssi_express_support.checkAuth)(opts?.endpoint), async (request, response) => { try { const parties = await context.agent.cmGetContacts(); response.statusCode = 200; return response.send(parties); } catch (error) { return (0, import_ssi_express_support.sendErrorResponse)(response, 500, error.message, error); } }); } __name(partiesReadEndpoint, "partiesReadEndpoint"); function partyReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partyReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/parties"; router.get(`${path}/:partyId`, (0, import_ssi_express_support.checkAuth)(opts?.endpoint), async (request, response) => { try { const partyId = request.params.partyId; const party = await context.agent.cmGetContact({ contactId: partyId }); response.statusCode = 200; return response.send(party); } catch (error) { return (0, import_ssi_express_support.sendErrorResponse)(response, 500, error.message, error); } }); } __name(partyReadEndpoint, "partyReadEndpoint"); function partyWriteEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partyWriteEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/parties"; router.post(path, async (request, response) => { try { const addParty = request.body; const party = await context.agent.cmAddContact(addParty); response.statusCode = 201; return response.send(party); } catch (error) { return (0, import_ssi_express_support.sendErrorResponse)(response, 500, error.message, error); } }); } __name(partyWriteEndpoint, "partyWriteEndpoint"); function partyDeleteEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partyDeleteEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/parties"; router.delete(`${path}/:partyId`, async (request, response) => { try { const partyId = request.params.partyId; const result = await context.agent.cmRemoveContact({ contactId: partyId }); response.statusCode = 200; return response.send(result); } catch (error) { return (0, import_ssi_express_support.sendErrorResponse)(response, 500, error.message, error); } }); } __name(partyDeleteEndpoint, "partyDeleteEndpoint"); function partiesTypeReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partiesTypeReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/party-types"; router.get(path, (0, import_ssi_express_support.checkAuth)(opts?.endpoint), async (request, response) => { try { const partyTypes = await context.agent.cmGetContactTypes(); response.statusCode = 200; return response.send(partyTypes); } catch (error) { return (0, import_ssi_express_support.sendErrorResponse)(response, 500, error.message, error); } }); } __name(partiesTypeReadEndpoint, "partiesTypeReadEndpoint"); function partyTypeReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"partyTypeReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/party-types"; router.get(`${path}/:partyTypeId`, (0, import_ssi_express_support.checkAuth)(opts?.endpoint), async (request, response) => { try { const partyTypeId = request.params.partyTypeId; const partyType = await context.agent.cmGetContactType({ contactTypeId: partyTypeId }); response.statusCode = 200; return response.send(partyType); } catch (error) { return (0, import_ssi_express_support.sendErrorResponse)(response, 500, error.message, error); } }); } __name(partyTypeReadEndpoint, "partyTypeReadEndpoint"); function identitiesReadEndpoint(router, context, opts) { if (opts?.enabled === false) { console.log(`"identitiesReadEndpoint" Endpoint is disabled`); return; } const path = opts?.path ?? "/identities"; router.get(path, (0, import_ssi_express_support.checkAuth)(opts?.endpoint), async (request, response) => { try { const identities = await context.agent.cmGetIdentities(); response.statusCode = 200; return response.send(identities); } catch (error) { return (0, import_ssi_express_support.sendErrorResponse)(response, 500, error.message, error); } }); } __name(identitiesReadEndpoint, "identitiesReadEndpoint"); function identityReadEndpoints(router, context, opts) { if (opts?.enabled === false) { console.log(`"identityReadEndpoints" Endpoint is disabled`); return; } const path = opts?.path ?? "/identities"; router.get(`${path}/:identityId`, (0, import_ssi_express_support.checkAuth)(opts?.endpoint), async (request, response) => { try { const identityId = request.params.identityId; const identity = await context.agent.cmGetIdentity({ identityId }); response.statusCode = 200; return response.send(identity); } catch (error) { return (0, import_ssi_express_support.sendErrorResponse)(response, 500, error.message, error); } }); } __name(identityReadEndpoints, "identityReadEndpoints"); // src/contact-manager-api-server.ts var import_ssi_express_support2 = require("@sphereon/ssi-express-support"); var ContactManagerApiServer = class { static { __name(this, "ContactManagerApiServer"); } _express; _agent; _opts; _router; constructor(args) { const { agent, opts } = args; this._agent = agent; (0, import_ssi_express_support2.copyGlobalAuthToEndpoints)({ opts, keys: [ "partyRead", "partyWrite", "partyTypeRead", "identityRead" ] }); if (opts?.endpointOpts?.globalAuth?.secureContactManagerEndpoints) { (0, import_ssi_express_support2.copyGlobalAuthToEndpoints)({ opts, keys: [ "partyRead", "partyWrite", "partyTypeRead", "identityRead" ] }); } this._opts = opts; this._express = args.expressSupport.express; this._router = import_express.default.Router(); const context = (0, import_ssi_sdk.agentContext)(agent); const features = opts?.enableFeatures ?? [ "party_read", "party_write", "party_type_read", "identity_read" ]; console.log(`Contact Manager API enabled, with features: ${JSON.stringify(features)}}`); if (features.includes("party_read")) { partiesReadEndpoint(this.router, context, this._opts?.endpointOpts?.partyRead); partyReadEndpoint(this.router, context, this._opts?.endpointOpts?.partyRead); } if (features.includes("party_write")) { partyWriteEndpoint(this.router, context, this._opts?.endpointOpts?.partyWrite); partyDeleteEndpoint(this.router, context, this._opts?.endpointOpts?.partyWrite); } if (features.includes("party_type_read")) { partiesTypeReadEndpoint(this.router, context, this._opts?.endpointOpts?.partyTypeRead); partyTypeReadEndpoint(this.router, context, this._opts?.endpointOpts?.partyTypeRead); } if (features.includes("identity_read")) { identitiesReadEndpoint(this.router, context, this._opts?.endpointOpts?.identityRead); identityReadEndpoints(this.router, context, this._opts?.endpointOpts?.identityRead); } this._express.use(opts?.endpointOpts?.basePath ?? "", this.router); } get express() { return this._express; } get router() { return this._router; } get agent() { return this._agent; } get opts() { return this._opts; } }; //# sourceMappingURL=index.cjs.map