{"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,gCAAM,oBAAoB;CAK/B,AAAO,YACL,AAAiC,QACjC,kBACA,oBACA;AACA,OAAK,SAAS;AACd,OAAK,mBAAmB;AACxB,OAAK,qBAAqB;;CAG5B,MAAa,OACX,cACA,SAC0B;AAC1B,OAAK,OAAO,MAAM,gBAAgB,QAAQ,OAAO,QAAQ,SAAS;EAElE,MAAM,cAAc;GAClB,qBAAqB,EAAE;GACvB,yBAAyB,EAAE;GAC3B,UAAU;IACR,OAAO;IACP,KAAK,QAAQ;IACd;GACF;AAED,MAAK,CAAC,QAAQ,OAAO,CAAC,QAAQ,UAAY,QAAQ,OAAO,QAAQ,OAC/D,QAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ;IACT;GACF;EAGH,MAAM,SAAS,QAAQ,UAAU,YAAY,QAAQ,IAAc,EAAE;AACrE,MAAI,CAAC,OACH,QAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,qCAAqC,QAAQ;IACtD;GACF;EAGH,MAAM,YAAY,KAAK,uBAAuB,OAAO;AACrD,MAAI,CAAC,UACH,QAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,4BAA4B,OAAO;IAC5C;GACF;AAGH,SAAO,MAAM,UAAU,OAAO,cAAc,QAAQ;;CAGtD,MAAa,OAAO,cAA4B,SAAqD;AACnG,OAAK,OAAO,MAAM,gBAAgB,QAAQ,MAAM;EAEhD,MAAM,SAAS,YAAY,QAAQ,IAAI,EAAE;EAEzC,MAAM,cAAc;GAClB,qBAAqB,EAAE;GACvB,yBAAyB,EAAE;GAC3B,UAAU;IACR,OAAO;IACP,KAAK,QAAQ;IACd;GACF;AAED,MAAI,CAAC,OACH,QAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,qCAAqC,QAAQ;IACtD;GACF;EAGH,MAAM,YAAY,KAAK,uBAAuB,OAAO;AACrD,MAAI,CAAC,UACH,QAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,4BAA4B,OAAO;IAC5C;GACF;AAIH,QAAM,KAAK,mBAAmB,sBAAsB,cAAc,QAAQ,IAAI;AAE9E,SAAO,MAAM,UAAU,OAAO,cAAc,QAAQ;;CAGtD,MAAa,WAAW,cAA4B,SAA6D;AAC/G,OAAK,OAAO,MAAM,oBAAoB,QAAQ,MAAM;EAEpD,MAAM,cAAc;GAClB,qBAAqB,EAAE;GACvB,yBAAyB,EAAE;GAC3B,UAAU;IACR,OAAO;IACP,KAAK,QAAQ;IACd;GACF;EAED,MAAM,SAAS,YAAY,QAAQ,IAAI,EAAE;AACzC,MAAI,CAAC,OACH,QAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,qCAAqC,QAAQ;IACtD;GACF;EAGH,MAAM,YAAY,KAAK,uBAAuB,OAAO;AACrD,MAAI,CAAC,UACH,QAAO;GACL,GAAG;GACH,UAAU;IACR,GAAG,YAAY;IACf,QAAQ,4BAA4B,OAAO;IAC5C;GACF;AAIH,QAAM,KAAK,mBAAmB,sBAAsB,cAAc,QAAQ,IAAI;AAE9E,SAAO,MAAM,UAAU,WAAW,cAAc,QAAQ;;CAG1D,AAAQ,uBAAuB,QAAqC;AAClE,SAAO,KAAK,iBAAiB,WAAW,MAAM,MAAM,EAAE,iBAAiB,SAAS,OAAO,CAAC,IAAI;;;;;CAM9F,IAAW,mBAAmB;AAC5B,SAAO,MAAM,KAAK,IAAI,IAAI,KAAK,iBAAiB,WAAW,SAAS,MAAM,EAAE,iBAAiB,CAAC,CAAC;;;;CA3JlG,YAAY;oBAOR,OAAO,iBAAiB,OAAO"}