{"version":3,"file":"DidRegistrarService.mjs","names":[],"sources":["../../../../src/modules/dids/services/DidRegistrarService.ts"],"sourcesContent":["import type { AgentContext } from '../../../agent'\nimport { InjectionSymbols } from '../../../constants'\nimport type { Logger } from '../../../logger'\nimport { inject, injectable } from '../../../plugins'\nimport { DidsModuleConfig } from '../DidsModuleConfig'\nimport type { DidRegistrar } from '../domain/DidRegistrar'\nimport { tryParseDid } from '../domain/parse'\nimport type {\n  DidCreateOptions,\n  DidCreateResult,\n  DidDeactivateOptions,\n  DidDeactivateResult,\n  DidUpdateOptions,\n  DidUpdateResult,\n} from '../types'\n\nimport { DidResolverService } from './DidResolverService'\n\n@injectable()\nexport class DidRegistrarService {\n  private logger: Logger\n  private didsModuleConfig: DidsModuleConfig\n  private didResolverService: DidResolverService\n\n  public constructor(\n    @inject(InjectionSymbols.Logger) logger: Logger,\n    didsModuleConfig: DidsModuleConfig,\n    didResolverService: DidResolverService\n  ) {\n    this.logger = logger\n    this.didsModuleConfig = didsModuleConfig\n    this.didResolverService = didResolverService\n  }\n\n  public async create<CreateOptions extends DidCreateOptions = DidCreateOptions>(\n    agentContext: AgentContext,\n    options: CreateOptions\n  ): Promise<DidCreateResult> {\n    this.logger.debug(`creating did ${options.did ?? options.method}`)\n\n    const errorResult = {\n      didDocumentMetadata: {},\n      didRegistrationMetadata: {},\n      didState: {\n        state: 'failed',\n        did: options.did,\n      },\n    } as const\n\n    if ((!options.did && !options.method) || (options.did && options.method)) {\n      return {\n        ...errorResult,\n        didState: {\n          ...errorResult.didState,\n          reason: 'Either did OR method must be specified',\n        },\n      }\n    }\n\n    const method = options.method ?? tryParseDid(options.did as string)?.method\n    if (!method) {\n      return {\n        ...errorResult,\n        didState: {\n          ...errorResult.didState,\n          reason: `Could not extract method from did ${options.did}`,\n        },\n      }\n    }\n\n    const registrar = this.findRegistrarForMethod(method)\n    if (!registrar) {\n      return {\n        ...errorResult,\n        didState: {\n          ...errorResult.didState,\n          reason: `Unsupported did method: '${method}'`,\n        },\n      }\n    }\n\n    return await registrar.create(agentContext, options)\n  }\n\n  public async update(agentContext: AgentContext, options: DidUpdateOptions): Promise<DidUpdateResult> {\n    this.logger.debug(`updating did ${options.did}`)\n\n    const method = tryParseDid(options.did)?.method\n\n    const errorResult = {\n      didDocumentMetadata: {},\n      didRegistrationMetadata: {},\n      didState: {\n        state: 'failed',\n        did: options.did,\n      },\n    } as const\n\n    if (!method) {\n      return {\n        ...errorResult,\n        didState: {\n          ...errorResult.didState,\n          reason: `Could not extract method from did ${options.did}`,\n        },\n      }\n    }\n\n    const registrar = this.findRegistrarForMethod(method)\n    if (!registrar) {\n      return {\n        ...errorResult,\n        didState: {\n          ...errorResult.didState,\n          reason: `Unsupported did method: '${method}'`,\n        },\n      }\n    }\n\n    // Invalidate cache before updating\n    await this.didResolverService.invalidateCacheForDid(agentContext, options.did)\n\n    return await registrar.update(agentContext, options)\n  }\n\n  public async deactivate(agentContext: AgentContext, options: DidDeactivateOptions): Promise<DidDeactivateResult> {\n    this.logger.debug(`deactivating did ${options.did}`)\n\n    const errorResult = {\n      didDocumentMetadata: {},\n      didRegistrationMetadata: {},\n      didState: {\n        state: 'failed',\n        did: options.did,\n      },\n    } as const\n\n    const method = tryParseDid(options.did)?.method\n    if (!method) {\n      return {\n        ...errorResult,\n        didState: {\n          ...errorResult.didState,\n          reason: `Could not extract method from did ${options.did}`,\n        },\n      }\n    }\n\n    const registrar = this.findRegistrarForMethod(method)\n    if (!registrar) {\n      return {\n        ...errorResult,\n        didState: {\n          ...errorResult.didState,\n          reason: `Unsupported did method: '${method}'`,\n        },\n      }\n    }\n\n    // Invalidate cache before deactivating\n    await this.didResolverService.invalidateCacheForDid(agentContext, options.did)\n\n    return await registrar.deactivate(agentContext, options)\n  }\n\n  private findRegistrarForMethod(method: string): DidRegistrar | null {\n    return this.didsModuleConfig.registrars.find((r) => r.supportedMethods.includes(method)) ?? null\n  }\n\n  /**\n   * Get all supported did methods for the did registrar.\n   */\n  public get supportedMethods() {\n    return Array.from(new Set(this.didsModuleConfig.registrars.flatMap((r) => r.supportedMethods)))\n  }\n}\n"],"mappings":";;;;;;;;;AAmBO,IAAM,sBAAN,MAAM,oBAAoB;CAK/B,YACE,QACA,kBACA,oBACA;EACA,KAAK,SAAS;EACd,KAAK,mBAAmB;EACxB,KAAK,qBAAqB;CAC5B;CAEA,MAAa,OACX,cACA,SAC0B;EAC1B,KAAK,OAAO,MAAM,gBAAgB,QAAQ,OAAO,QAAQ,QAAQ;EAEjE,MAAM,cAAc;GAClB,qBAAqB,CAAC;GACtB,yBAAyB,CAAC;GAC1B,UAAU;IACR,OAAO;IACP,KAAK,QAAQ;GACf;EACF;EAEA,IAAK,CAAC,QAAQ,OAAO,CAAC,QAAQ,UAAY,QAAQ,OAAO,QAAQ,QAC/D,OAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ;GACV;EACF;EAGF,MAAM,SAAS,QAAQ,UAAU,YAAY,QAAQ,GAAa,CAAC,EAAE;EACrE,IAAI,CAAC,QACH,OAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,qCAAqC,QAAQ;GACvD;EACF;EAGF,MAAM,YAAY,KAAK,uBAAuB,MAAM;EACpD,IAAI,CAAC,WACH,OAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,4BAA4B,OAAO;GAC7C;EACF;EAGF,OAAO,MAAM,UAAU,OAAO,cAAc,OAAO;CACrD;CAEA,MAAa,OAAO,cAA4B,SAAqD;EACnG,KAAK,OAAO,MAAM,gBAAgB,QAAQ,KAAK;EAE/C,MAAM,SAAS,YAAY,QAAQ,GAAG,CAAC,EAAE;EAEzC,MAAM,cAAc;GAClB,qBAAqB,CAAC;GACtB,yBAAyB,CAAC;GAC1B,UAAU;IACR,OAAO;IACP,KAAK,QAAQ;GACf;EACF;EAEA,IAAI,CAAC,QACH,OAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,qCAAqC,QAAQ;GACvD;EACF;EAGF,MAAM,YAAY,KAAK,uBAAuB,MAAM;EACpD,IAAI,CAAC,WACH,OAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,4BAA4B,OAAO;GAC7C;EACF;EAIF,MAAM,KAAK,mBAAmB,sBAAsB,cAAc,QAAQ,GAAG;EAE7E,OAAO,MAAM,UAAU,OAAO,cAAc,OAAO;CACrD;CAEA,MAAa,WAAW,cAA4B,SAA6D;EAC/G,KAAK,OAAO,MAAM,oBAAoB,QAAQ,KAAK;EAEnD,MAAM,cAAc;GAClB,qBAAqB,CAAC;GACtB,yBAAyB,CAAC;GAC1B,UAAU;IACR,OAAO;IACP,KAAK,QAAQ;GACf;EACF;EAEA,MAAM,SAAS,YAAY,QAAQ,GAAG,CAAC,EAAE;EACzC,IAAI,CAAC,QACH,OAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,qCAAqC,QAAQ;GACvD;EACF;EAGF,MAAM,YAAY,KAAK,uBAAuB,MAAM;EACpD,IAAI,CAAC,WACH,OAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,4BAA4B,OAAO;GAC7C;EACF;EAIF,MAAM,KAAK,mBAAmB,sBAAsB,cAAc,QAAQ,GAAG;EAE7E,OAAO,MAAM,UAAU,WAAW,cAAc,OAAO;CACzD;CAEA,uBAA+B,QAAqC;EAClE,OAAO,KAAK,iBAAiB,WAAW,MAAM,MAAM,EAAE,iBAAiB,SAAS,MAAM,CAAC,KAAK;CAC9F;;;;CAKA,IAAW,mBAAmB;EAC5B,OAAO,MAAM,KAAK,IAAI,IAAI,KAAK,iBAAiB,WAAW,SAAS,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAChG;AACF;;CA7JC,WAAW;CAOP,gBAAA,GAAA,OAAO,iBAAiB,MAAM,CAAA"}