@sphereon/ssi-sdk.agent-config
Version:
1 lines • 28.6 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/agentContextUtils.ts","../src/dataSources.ts","../src/agentCreator.ts","../src/objectCreator.ts","../src/typeormTypes.ts"],"sourcesContent":["/**\n * @public\n */\nexport * from './agentContextUtils'\nexport * from './dataSources'\nexport * from './agentCreator'\nexport * from './objectCreator'\nexport * from './generic'\nexport * from './typeormTypes'\n","import type {\n IAgentContext,\n ICredentialVerifier,\n IDataStore,\n IDataStoreORM,\n IDIDManager,\n IKeyManager,\n IPluginMethodMap,\n IResolver,\n ICredentialIssuer,\n ICredentialStatusVerifier,\n} from '@veramo/core'\n\n/**\n * Allows to get a type agent context plugin methods based on provided or inferred types and at least one method for these plugin(s)\n * @param context Tje agent context to check against\n * @param requiredMethod One or more method the plugin provides, so we can check availability and thus plugin presence\n */\nexport function contextHasPlugin<Plugins extends IPluginMethodMap>(\n context: IAgentContext<any>,\n requiredMethod: string | string[],\n): context is IAgentContext<Plugins> {\n const methods = Array.isArray(requiredMethod) ? requiredMethod : [requiredMethod]\n const allMethods = context.agent.availableMethods()\n return methods.every((method) => allMethods.includes(method))\n}\n\n/**\n * The below methods are convenience methods to directly get the appropriate context after calling the respective method\n *\n * @param context\n */\n\nexport function contextHasKeyManager(context: IAgentContext<IPluginMethodMap>): context is IAgentContext<IKeyManager> {\n return contextHasPlugin(context, 'keyManagerGet')\n}\n\nexport function contextHasDidManager(context: IAgentContext<IPluginMethodMap>): context is IAgentContext<IResolver & IDIDManager> {\n return contextHasPlugin(context, 'didManagerGet') // IResolver is always required for IDIDManager\n}\n\nexport function contextHasDidResolver(context: IAgentContext<IPluginMethodMap>): context is IAgentContext<IResolver> {\n return contextHasPlugin(context, 'resolveDid') // IResolver is always required for IDIDManager\n}\n\nexport function contextHasCredentialIssuer(context: IAgentContext<IPluginMethodMap>): context is IAgentContext<ICredentialIssuer> {\n return contextHasPlugin(context, ['createVerifiableCredential', 'createVerifiablePresentation']) // W3C Credential issuer\n}\n\nexport function contextHasCredentialVerifier(context: IAgentContext<IPluginMethodMap>): context is IAgentContext<ICredentialVerifier> {\n return contextHasPlugin(context, ['verifyCredential', 'verifyPresentation']) // W3c Credential Verifier\n}\n\nexport function contextHasCredentialStatusVerifier(context: IAgentContext<IPluginMethodMap>): context is IAgentContext<ICredentialStatusVerifier> {\n return contextHasPlugin(context, ['checkCredentialStatus']) // W3c Credential status Verifier\n}\n\nexport function contextHasDataStore(context: IAgentContext<IPluginMethodMap>): context is IAgentContext<IDataStore> {\n return contextHasPlugin(context, ['dataStoreGetVerifiableCredential', 'dataStoreGetVerifiablePresentation'])\n}\n\nexport function contextHasDataStoreORM(context: IAgentContext<IPluginMethodMap>): context is IAgentContext<IDataStoreORM> {\n return contextHasPlugin(context, ['dataStoreORMGetVerifiableCredentials', 'dataStoreORMGetVerifiablePresentations'])\n}\n","import Debug from 'debug'\nimport { DataSource } from 'typeorm/data-source/DataSource.js'\nimport type { BaseDataSourceOptions } from 'typeorm/data-source/BaseDataSourceOptions.js'\nimport type { DataSourceOptions } from 'typeorm/data-source/DataSourceOptions.js'\n\nconst debug = Debug(`sphereon:ssi-sdk:database`)\n\nexport class DataSources {\n get defaultDbType(): SupportedDatabaseType {\n return this._defaultDbType\n }\n\n set defaultDbType(value: SupportedDatabaseType) {\n this._defaultDbType = value\n }\n private dataSources = new Map<string, DataSource>()\n private configs = new Map<string, DataSourceOptions>()\n private _defaultDbType: SupportedDatabaseType = 'sqlite'\n\n private static singleton: DataSources\n\n public static singleInstance() {\n if (!DataSources.singleton) {\n DataSources.singleton = new DataSources()\n }\n return DataSources.singleton\n }\n\n public static newInstance(configs?: Map<string, DataSourceOptions>) {\n return new DataSources(configs)\n }\n\n private constructor(configs?: Map<string, DataSourceOptions>) {\n ;(configs ?? new Map<string, DataSourceOptions>()).forEach((config, name) => this.addConfig(name, config))\n }\n\n addConfig(dbName: string, config: DataSourceOptions): this {\n this.configs.set(dbName, config)\n // yes we are aware last one wins\n this._defaultDbType = config.type as SupportedDatabaseType\n return this\n }\n\n deleteConfig(dbName: string): this {\n this.configs.delete(dbName)\n return this\n }\n has(dbName: string) {\n return this.configs.has(dbName) && this.dataSources.has(dbName)\n }\n\n delete(dbName: string): this {\n this.deleteConfig(dbName)\n this.dataSources.delete(dbName)\n return this\n }\n\n getConfig(dbName: string): BaseDataSourceOptions {\n const config = this.configs.get(dbName)\n if (!config) {\n throw Error(`No DB config found for ${dbName}`)\n }\n return config\n }\n\n public getDbNames(): string[] {\n return [...this.configs.keys()]\n }\n\n async getDbConnection(dbName: string): Promise<DataSource> {\n const config = this.getConfig(dbName)\n if (!this._defaultDbType) {\n this._defaultDbType = config.type as SupportedDatabaseType\n }\n /*if (config.synchronize) {\n return Promise.reject(\n `WARNING: Automatic migrations need to be disabled in this app! Adjust the database configuration and set synchronize to false`\n )\n }*/\n\n let dataSource = this.dataSources.get(dbName)\n if (dataSource) {\n return dataSource\n }\n\n dataSource = await new DataSource({ ...(config as DataSourceOptions), name: dbName }).initialize()\n this.dataSources.set(dbName, dataSource)\n if (config.synchronize) {\n debug(`WARNING: Automatic migrations need to be disabled in this app! Adjust the database configuration and set synchronize to false`)\n } else if (config.migrationsRun) {\n debug(\n `Migrations are currently managed from config. Please set migrationsRun and synchronize to false to get consistent behaviour. We run migrations from code explicitly`,\n )\n } else {\n debug(`Running ${dataSource.migrations.length} migration(s) from code if needed...`)\n await dataSource.runMigrations()\n debug(`${dataSource.migrations.length} migration(s) from code were inspected and applied`)\n }\n return dataSource\n }\n}\n\nexport type SupportedDatabaseType = 'postgres' | 'sqlite' | 'react-native'\nexport type DateTimeType = 'timestamp' | 'datetime'\n\nexport type DateType = 'date'\n\n/**\n * Gets the database connection.\n *\n * Also makes sure that migrations are run (versioning for DB schema's), so we can properly update over time\n *\n * @param connectionName The database name\n * @param opts\n */\nexport const getDbConnection = async (\n connectionName: string,\n opts?: {\n config: BaseDataSourceOptions | any\n },\n): Promise<DataSource> => {\n if (!DataSources.singleInstance().has(connectionName) && opts?.config) {\n DataSources.singleInstance().addConfig(connectionName, opts?.config)\n }\n return DataSources.singleInstance().getDbConnection(connectionName)\n}\n\nexport const dropDatabase = async (dbName: string, opts?: { removeDataSource?: boolean }): Promise<void> => {\n const { removeDataSource = false } = { ...opts }\n if (!DataSources.singleInstance().has(dbName)) {\n return Promise.reject(Error(`No database present with name: ${dbName}`))\n }\n\n const connection: DataSource = await getDbConnection(dbName)\n await connection.dropDatabase()\n if (removeDataSource) {\n DataSources.singleInstance().delete(dbName)\n } else if (!connection.isInitialized) {\n await connection.initialize()\n }\n}\n\n/**\n * Runs a migration down (drops DB schema)\n * @param dataSource\n */\nexport const revertMigration = async (dataSource: DataSource): Promise<void> => {\n if (dataSource.isInitialized) {\n await dataSource.undoLastMigration()\n } else {\n console.error('DataSource is not initialized')\n }\n}\nexport const resetDatabase = async (dbName: string): Promise<void> => {\n await dropDatabase(dbName)\n const connection = await getDbConnection(dbName)\n await connection.runMigrations()\n}\n","import { type TAgent, type IPluginMethodMap, type IAgentOptions, Agent } from '@veramo/core'\nimport { createObjects } from './objectCreator'\nimport yaml from 'yaml'\n\n/**\n * Creates a Veramo agent from a config object containing an `/agent` pointer.\n * @param config - The configuration object\n *\n * @see {@link https://veramo.io/docs/veramo_agent/configuration_internals | Configuration Internals} for details on\n * the configuration options.\n *\n * @beta - This API may change without a major version bump\n */\nexport async function createAgentFromConfig<T extends IPluginMethodMap>(config: object): Promise<TAgent<T>> {\n // @ts-ignore\n const { agent } = await createObjects(config, { agent: '/agent' })\n return agent\n}\n\n/**\n * Helper function to create a new instance of the {@link Agent} class with correct type\n *\n * @remarks\n * Use {@link TAgent} to configure agent type (list of available methods) for autocomplete in IDE\n *\n * @example\n * ```typescript\n * import { createAgent, IResolver, IMessageHandler } from '@veramo/core'\n * import { AgentRestClient } from '@veramo/remote-client'\n * import { CredentialIssuer, ICredentialIssuer } from '@veramo/credential-w3c'\n * const agent = createAgent<IResolver & IMessageHandler & ICredentialIssuer>({\n * plugins: [\n * new CredentialIssuer(),\n * new AgentRestClient({\n * url: 'http://localhost:3002/agent',\n * enabledMethods: [\n * 'resolveDid',\n * 'handleMessage',\n * ],\n * }),\n * ],\n * })\n * ```\n * @param options - Agent configuration options\n * @returns configured agent\n * @public\n */\nexport async function createAgent<T extends IPluginMethodMap, C = Record<string, any>>(\n options: IAgentOptions & { context?: C },\n): Promise<TAgent<T> & { context?: C }> {\n return new Agent(options) as TAgent<T>\n}\n\n/**\n * Parses a yaml config file and returns a config object\n * @param filePath\n */\nexport const getConfig = async (filePath: string | Buffer | URL): Promise<{ version?: number; [x: string]: any }> => {\n let fileContent: string\n\n // read file async\n try {\n const fs = await import(/* webpackIgnore: true */ 'fs')\n fileContent = await fs.promises.readFile(filePath, 'utf8')\n } catch (e) {\n console.log('Config file not found: ' + filePath)\n console.log('Use \"veramo config create\" to create one')\n process.exit(1)\n }\n\n let config\n\n try {\n config = yaml.parse(fileContent, { prettyErrors: true })\n } catch (e: any) {\n console.error(`Unable to parse config file: ${e.message} ${e.linePos}`)\n process.exit(1)\n }\n\n if (config?.version != 3) {\n console.error('Unsupported configuration file version:', config.version)\n process.exit(1)\n }\n return config\n}\n\nexport async function getAgent<T extends IPluginMethodMap>(fileName: string): Promise<TAgent<T>> {\n try {\n return await createAgentFromConfig<T>(await getConfig(fileName))\n } catch (e: any) {\n console.log('Unable to create agent from ' + fileName + '.', e.message)\n process.exit(1)\n }\n}\n","import { set, get } from 'jsonpointer'\nimport parse from 'url-parse'\n\n/**\n * Creates objects from a configuration object and a set of pointers.\n *\n * Example:\n * ```ts\n * const { url } = createObjects({ \"rpcUrl\": \"http://localhost:8545\", }, { url: '/rpcUrl' })\n * ```\n *\n * The config can contain references (`$ref`) to other objects within using JSON pointers.\n * Example:\n * ```json\n * {\n * \"rpcUrl\": \"http://localhost:8545\",\n * \"endpoint\": {\n * \"url\": {\n * \"$ref\": \"/rpcUrl\"\n * }\n * }\n * }\n * ```\n *\n * The config object can also contain references to NPM modules using the `$require` property.\n * Example:\n * ```json\n * {\n * \"agent\": {\n * \"$require\": \"@veramo/core#Agent\",\n * \"$args\": {\n * \"plugins\": [\n * { \"$require\": \"@veramo/did-comm#DIDComm\" },\n * ]\n * }\n * }\n * }\n * ```\n *\n * Environment variables can also be specified using the `$env` property.\n *\n * @see Please see {@link https://veramo.io/docs/veramo_agent/configuration_internals | Configuration Internals} for\n * more information.\n *\n * @param config - The configuration object\n * @param pointers - A map of JSON pointers to objects within that config that you wish to create\n *\n * @beta - This API may change without a major version bump\n */\nexport async function createObjects(config: object, pointers: Record<string, string>): Promise<Record<string, any>> {\n const objects = {}\n\n async function resolveRefs(input: any): Promise<any> {\n if (Array.isArray(input)) {\n const resolved = []\n for (const item of input) {\n resolved.push(await resolveRefs(item))\n }\n return resolved\n }\n\n if (typeof input === 'object') {\n const resolved: any = {}\n for (const property in input) {\n if (input.hasOwnProperty(property)) {\n if (property === '$ref') {\n const pointer = input[property]\n return await objectFromPointer(pointer)\n } else if (property === '$require') {\n return await objectFromConfig(input)\n } else if (property === '$env') {\n return process.env[input[property]]\n } else {\n resolved[property] = await resolveRefs(input[property])\n }\n }\n }\n return resolved\n }\n\n return input\n }\n\n async function objectFromConfig(objectConfig: any): Promise<any> {\n console.log('Requiring', objectConfig['$require'])\n const parsed = parse(objectConfig['$require'], {}, true)\n let npmModule = parsed.pathname\n const member = parsed.hash.length > 1 ? parsed.hash.slice(1) : undefined\n console.log(`member: ${member}`)\n const type = parsed.query['t'] || 'class'\n const pointer = parsed.query['p']\n const args = objectConfig['$args']\n console.log({ module, member, type, query: parsed.query, pointer, args })\n\n if (npmModule.slice(0, 2) === './' || npmModule.slice(0, 3) === '../') {\n console.log('objectFromConfig: Resolving relative path', npmModule)\n const { resolve } = await import('path')\n npmModule = resolve(npmModule)\n }\n\n const resolvedArgs = args !== undefined ? await resolveRefs(args) : []\n console.error(`npmModule: ${npmModule}`)\n // try {\n return await Promise.resolve(\n await import(/*@metro-ignore*/ npmModule)\n\n .then((mod) => {\n if (member) {\n return mod[member]\n }\n return mod\n })\n .then((required) => {\n let object: any\n if (type === 'class') {\n object = new required(...resolvedArgs)\n } else if (type === 'function') {\n object = required(...resolvedArgs)\n } else if (type === 'object') {\n object = required\n } else {\n console.error(`Likely we have a bug in agent object creation. type = ${type} is not of type class, function or object`)\n }\n if (!pointer) {\n return object\n }\n\n if (!object) {\n return Promise.reject(Error(`Error creating ${npmModule}['${member}']: Object is undefined and pointer was present requiring an object.`))\n }\n return get(object, pointer)\n })\n .catch((e) => {\n console.error(e)\n return Promise.reject(Error(`Error creating ${npmModule}['${member}']: ${e.message}`))\n }),\n )\n\n /*let required = member ? (await import(npmModule))[member] : await import(npmModule)\n if (type === 'class') {\n object = new required(...resolvedArgs)\n } else if (type === 'function') {\n object = required(...resolvedArgs)\n } else if (type === 'object') {\n object = required\n }*/\n // } catch (e: any) {\n // console.log(e)\n // throw new Error(`Error creating ${npmModule}['${member}']: ${e.message}`)\n // }\n\n // return object\n }\n\n async function objectFromPointer(pointer: string) {\n const existingObject = get(objects, pointer)\n if (existingObject) {\n // console.log('Existing', pointer)\n return existingObject\n } else {\n // console.log('New', pointer)\n const objectConfig = get(config, pointer)\n if (!objectConfig) throw Error('Pointer not found: ' + pointer)\n try {\n let object\n if (objectConfig['$require']) {\n object = await objectFromConfig(objectConfig)\n } else if (objectConfig['$env']) {\n object = process.env[objectConfig['$env']]\n } else {\n object = await resolveRefs(objectConfig)\n }\n set(objects, pointer, object)\n return object\n } catch (e: any) {\n console.log(e)\n throw Error(e.message + '. While creating object from pointer: ' + pointer)\n }\n }\n }\n\n const result: any = {}\n for (const key of Object.keys(pointers)) {\n if (pointers.hasOwnProperty(key)) {\n result[key] = await objectFromPointer(pointers[key])\n }\n }\n return result\n}\n","import { DataSources, type DateTimeType, type DateType, type SupportedDatabaseType } from './dataSources'\n\nexport const getDbType = (opts?: { defaultType: SupportedDatabaseType }): SupportedDatabaseType => {\n const type = (typeof process === 'object' ? process?.env?.DB_TYPE : undefined) ?? DataSources.singleInstance().defaultDbType ?? opts?.defaultType\n if (!type) {\n throw Error(`Could not determine DB type. Please set the DB_TYPE global variable or env var to one of 'postgres' or 'sqlite'`)\n }\n return type as SupportedDatabaseType\n}\n\nexport const typeOrmDateTime = (opts?: { defaultType: SupportedDatabaseType }): DateTimeType => {\n switch (getDbType(opts)) {\n case 'postgres':\n return 'timestamp'\n case 'sqlite':\n case 'react-native':\n return 'datetime'\n default:\n throw Error(`DB type ${getDbType(opts)} not supported. Right now only sqlite, react-native and postgresql are supported`)\n }\n}\n\nexport const typeormDate = (opts?: { defaultType: SupportedDatabaseType }): DateType => {\n // The same for both DBs\n return 'date'\n}\n"],"mappings":"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","names":["contextHasPlugin","context","requiredMethod","methods","Array","isArray","allMethods","agent","availableMethods","every","method","includes","contextHasKeyManager","contextHasDidManager","contextHasDidResolver","contextHasCredentialIssuer","contextHasCredentialVerifier","contextHasCredentialStatusVerifier","contextHasDataStore","contextHasDataStoreORM","debug","Debug","DataSources","defaultDbType","_defaultDbType","value","dataSources","Map","configs","singleton","singleInstance","newInstance","forEach","config","name","addConfig","dbName","set","type","deleteConfig","delete","has","getConfig","get","Error","getDbNames","keys","getDbConnection","dataSource","DataSource","initialize","synchronize","migrationsRun","migrations","length","runMigrations","connectionName","opts","dropDatabase","removeDataSource","Promise","reject","connection","isInitialized","revertMigration","undoLastMigration","console","error","resetDatabase","createObjects","config","pointers","objects","resolveRefs","input","Array","isArray","resolved","item","push","property","hasOwnProperty","pointer","objectFromPointer","objectFromConfig","process","env","objectConfig","console","log","parsed","parse","npmModule","pathname","member","hash","length","slice","undefined","type","query","args","module","resolve","resolvedArgs","error","Promise","then","mod","required","object","reject","Error","get","catch","e","message","existingObject","set","result","key","Object","keys","createAgentFromConfig","config","agent","createObjects","createAgent","options","Agent","getConfig","filePath","fileContent","fs","promises","readFile","e","console","log","process","exit","yaml","parse","prettyErrors","error","message","linePos","version","getAgent","fileName","getDbType","opts","type","process","env","DB_TYPE","undefined","DataSources","singleInstance","defaultDbType","defaultType","Error","typeOrmDateTime","typeormDate"]}