@sphereon/ssi-sdk.contact-manager-rest-api
Version:
277 lines (273 loc) • 10.3 kB
JavaScript
"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