@prismicio/e2e-tests-utils 1.19.0-pr.37.21fc0dd → 1.19.0-pr.37.3a87a0c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"coreApi.cjs","names":["AuthenticatedApiClient","logger","logPlaywrightApiResponse"],"sources":["../../src/clients/coreApi.ts"],"sourcesContent":["import { logPlaywrightApiResponse, logger } from \"../utils/log\"\nimport type { AuthServerToken } from \"./apiClient\"\nimport { AuthenticatedApiClient } from \"./apiClient\"\n\ntype Language = {\n\tid: string\n\tname: string\n\tis_master: boolean\n}\n\nexport type Release = {\n\tid: string\n\tlabel: string\n\tmigration: boolean\n}\n\nexport type CoreApiDocumentCreationPayload = {\n\ttitle: string\n\tlocale?: string\n\tgroup_lang_id?: string\n\trelease_id?: string\n\tintegration_field_ids: string[]\n\tdata: Record<string, unknown>\n\tcustom_type_id: string\n\ttags: string[]\n}\n\nexport type CoreApiDocumentUpdatePayload = {\n\tdata: Record<string, unknown>\n\tintegration_field_ids: string[]\n\ttags: string[]\n}\n\nexport type CoreApiRepository = Record<string, unknown> & {\n\tsimulator_url?: string\n}\n\nexport type CoreApiDocumentCreationResponse = {\n\tid: string\n\tgroup_lang_id: string\n\tcustom_type_id: string\n\tlocale: string\n\tlanguage: { id: string; name: string }\n\tfirst_publication_date: number | null\n\tlast_publication_date: number | null\n\ttitle: string\n\tversions: {\n\t\tstatus: string\n\t\tversion_id: string\n\t\tauthor: {\n\t\t\tid: string\n\t\t\tfirst_name: string | null\n\t\t\tlast_name: string | null\n\t\t\temail: string\n\t\t}\n\t\trelease_id: string | null\n\t\tlast_modified_date: number\n\t\ttags: string[]\n\t\tcustom_type_label: string\n\t\tpreview_summary?: string\n\t\tpreview_image?: string\n\t\tuid?: string\n\t}[]\n}\n\nexport type CoreApiDocumentsPayload = {\n\tlanguage?: string\n\tlimit?: number\n\tstatuses?: string[]\n\tgroupLangIds?: string[]\n}\n\nexport type CoreApiDocumentsResponse = {\n\ttotal: number\n\tcursor: string\n\tresults: CoreApiDocumentCreationResponse[]\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CoreApiDocumentData = Record<string, any>\n\nexport class CoreApiClient extends AuthenticatedApiClient {\n\t/**\n\t * @example\n\t * \tTo instantiate the class:\n\t *\n\t * \t```js\n\t * \tnew CoreApiClient(\"https://my-repo.prismic.io\", {\n\t * \tauthToken: \"my-secret-token\",\n\t * \t});\n\t * \t```\n\t *\n\t * @param baseURL - The api base URL like https://my-repo.prismic.io\n\t * @param config - Optional configuration\n\t *\n\t * - {@link config.authToken}: Api token generated from the auth service or a function to fetch it\n\t * when it's needed.\n\t */\n\tconstructor(baseURL: string, config: AuthServerToken) {\n\t\tsuper(baseURL, config)\n\t}\n\n\tasync getLanguages(): Promise<Language[]> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"core/repository\")\n\n\t\tif (200 !== result.status() || !(await result.json()).languages) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not get languages from the core api.\")\n\t\t}\n\n\t\tprofiler.done({ message: \"retrieved languages configuration\" })\n\n\t\treturn (await result.json()).languages\n\t}\n\n\t/**\n\t * Retrieves all releases, including the migration release.\n\t *\n\t * @returns An array of release metadata.\n\t */\n\tasync getReleases(): Promise<Release[]> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"core/releases\", {\n\t\t\tparams: { include_migration_releases: true },\n\t\t})\n\n\t\tif (200 !== result.status() || !(await result.json()).results) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not get releases from the core api.\")\n\t\t}\n\n\t\tprofiler.done({ message: \"retrieved releases\" })\n\n\t\treturn (await result.json()).results\n\t}\n\n\tasync createDraft(\n\t\tdata: CoreApiDocumentCreationPayload,\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"core/documents\", {\n\t\t\tdata,\n\t\t})\n\n\t\tif (201 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not create draft document\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Creates a new draft version of an existing document, on top of the given base version.\n\t *\n\t * @param documentId - The id of the document to update.\n\t * @param data - The new version payload in the core api format.\n\t * @param baseVersionId - The id of the version the draft is created from.\n\t * @returns The updated document, including the new version's id.\n\t */\n\tasync updateDraft(\n\t\tdocumentId: string,\n\t\tdata: CoreApiDocumentUpdatePayload,\n\t\tbaseVersionId: string,\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.put(`core/documents/${documentId}/draft`, {\n\t\t\tparams: { base_version_id: baseVersionId },\n\t\t\tdata,\n\t\t})\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not update draft for document with id ${documentId}`)\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\tasync publishDraft(documentId: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/documents/${documentId}/draft`, {\n\t\t\tdata: {\n\t\t\t\tstatus: \"published\",\n\t\t\t},\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not publish document with id ${documentId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Unpublishes (archives) a live document.\n\t *\n\t * @param documentId - The id of the document to unpublish.\n\t */\n\tasync unpublishDocument(documentId: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/documents/${documentId}/live`, {\n\t\t\tdata: {\n\t\t\t\tstatus: \"archived\",\n\t\t\t},\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not unpublish document with id ${documentId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Retrieves documents.\n\t *\n\t * @param args - Configure which documents are retrieved.\n\t * @returns A paginated set of documents.\n\t */\n\tasync getDocuments(args: CoreApiDocumentsPayload): Promise<CoreApiDocumentsResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"core/documents/search\", {\n\t\t\tdata: args,\n\t\t})\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not search documents\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Retrieves data for a specific document version.\n\t *\n\t * @param versionId - The document's version ID.\n\t * @returns The document's version data.\n\t */\n\tasync getDocumentData(versionId: string): Promise<CoreApiDocumentData> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(`core/documents/data/${versionId}`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not retrieve document data\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Publishes a release.\n\t *\n\t * @param id - The ID of the release.\n\t * @returns A Promise that resolves when the release is published.\n\t */\n\tasync publishRelease(id: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(`core/releases/${id}/publish`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not publish release ${id}\")\n\t\t}\n\t}\n\n\tasync getRepository(): Promise<CoreApiRepository> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(`core/repository`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not get repository`)\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\tasync updateRepository(data: CoreApiRepository): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/repository`, {\n\t\t\tdata,\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not update repository`)\n\t\t}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"coreApi.cjs","names":["AuthenticatedApiClient","logger","logPlaywrightApiResponse"],"sources":["../../src/clients/coreApi.ts"],"sourcesContent":["import { logPlaywrightApiResponse, logger } from \"../utils/log\"\nimport type { AuthServerToken } from \"./apiClient\"\nimport { AuthenticatedApiClient } from \"./apiClient\"\n\ntype Language = {\n\tid: string\n\tname: string\n\tis_master: boolean\n}\n\nexport type Release = {\n\tid: string\n\tlabel: string\n\tmigration: boolean\n}\n\nexport type CoreApiDocumentCreationPayload = {\n\ttitle: string\n\tlocale?: string\n\tgroup_lang_id?: string\n\trelease_id?: string\n\tintegration_field_ids: string[]\n\tdata: Record<string, unknown>\n\tcustom_type_id: string\n\ttags: string[]\n}\n\nexport type CoreApiDocumentUpdatePayload = {\n\tdata: Record<string, unknown>\n\tintegration_field_ids: string[]\n\ttags: string[]\n}\n\nexport type CoreApiRepository = Record<string, unknown> & {\n\tsimulator_url?: string\n}\n\nexport type CoreApiDocumentCreationResponse = {\n\tid: string\n\tgroup_lang_id: string\n\tcustom_type_id: string\n\tlocale: string\n\tlanguage: { id: string; name: string }\n\tfirst_publication_date: number | null\n\tlast_publication_date: number | null\n\ttitle: string\n\tversions: {\n\t\tstatus: string\n\t\tversion_id: string\n\t\tauthor: {\n\t\t\tid: string\n\t\t\tfirst_name: string | null\n\t\t\tlast_name: string | null\n\t\t\temail: string\n\t\t}\n\t\trelease_id: string | null\n\t\tlast_modified_date: number\n\t\ttags: string[]\n\t\tcustom_type_label: string\n\t\tpreview_summary?: string\n\t\tpreview_image?: string\n\t\tuid?: string\n\t}[]\n}\n\nexport type CoreApiDocumentsPayload = {\n\tlanguage?: string\n\tlimit?: number\n\tstatuses?: string[]\n\tgroupLangIds?: string[]\n\tdocumentIds?: string[]\n}\n\nexport type CoreApiDocumentsResponse = {\n\ttotal: number\n\tcursor: string\n\tresults: CoreApiDocumentCreationResponse[]\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CoreApiDocumentData = Record<string, any>\n\nexport class CoreApiClient extends AuthenticatedApiClient {\n\t/**\n\t * @example\n\t * \tTo instantiate the class:\n\t *\n\t * \t```js\n\t * \tnew CoreApiClient(\"https://my-repo.prismic.io\", {\n\t * \tauthToken: \"my-secret-token\",\n\t * \t});\n\t * \t```\n\t *\n\t * @param baseURL - The api base URL like https://my-repo.prismic.io\n\t * @param config - Optional configuration\n\t *\n\t * - {@link config.authToken}: Api token generated from the auth service or a function to fetch it\n\t * when it's needed.\n\t */\n\tconstructor(baseURL: string, config: AuthServerToken) {\n\t\tsuper(baseURL, config)\n\t}\n\n\tasync getLanguages(): Promise<Language[]> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"core/repository\")\n\n\t\tif (200 !== result.status() || !(await result.json()).languages) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not get languages from the core api.\")\n\t\t}\n\n\t\tprofiler.done({ message: \"retrieved languages configuration\" })\n\n\t\treturn (await result.json()).languages\n\t}\n\n\t/**\n\t * Retrieves all releases, including the migration release.\n\t *\n\t * @returns An array of release metadata.\n\t */\n\tasync getReleases(): Promise<Release[]> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"core/releases\", {\n\t\t\tparams: { include_migration_releases: true },\n\t\t})\n\n\t\tif (200 !== result.status() || !(await result.json()).results) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not get releases from the core api.\")\n\t\t}\n\n\t\tprofiler.done({ message: \"retrieved releases\" })\n\n\t\treturn (await result.json()).results\n\t}\n\n\tasync createDraft(\n\t\tdata: CoreApiDocumentCreationPayload,\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"core/documents\", {\n\t\t\tdata,\n\t\t})\n\n\t\tif (201 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not create draft document\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Creates a new draft version of an existing document, on top of the given base version.\n\t *\n\t * @param documentId - The id of the document to update.\n\t * @param data - The new version payload in the core api format.\n\t * @param baseVersionId - The id of the version the draft is created from.\n\t * @returns The updated document, including the new version's id.\n\t */\n\tasync updateDraft(\n\t\tdocumentId: string,\n\t\tdata: CoreApiDocumentUpdatePayload,\n\t\tbaseVersionId: string,\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.put(`core/documents/${documentId}/draft`, {\n\t\t\tparams: { base_version_id: baseVersionId },\n\t\t\tdata,\n\t\t})\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not update draft for document with id ${documentId}`)\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\tasync publishDraft(documentId: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/documents/${documentId}/draft`, {\n\t\t\tdata: {\n\t\t\t\tstatus: \"published\",\n\t\t\t},\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not publish document with id ${documentId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Unpublishes (archives) a live document.\n\t *\n\t * @param documentId - The id of the document to unpublish.\n\t */\n\tasync unpublishDocument(documentId: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/documents/${documentId}/live`, {\n\t\t\tdata: {\n\t\t\t\tstatus: \"archived\",\n\t\t\t},\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not unpublish document with id ${documentId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Retrieves documents.\n\t *\n\t * @param args - Configure which documents are retrieved.\n\t * @returns A paginated set of documents.\n\t */\n\tasync getDocuments(args: CoreApiDocumentsPayload): Promise<CoreApiDocumentsResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"core/documents/search\", {\n\t\t\tdata: args,\n\t\t})\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not search documents\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Retrieves data for a specific document version.\n\t *\n\t * @param versionId - The document's version ID.\n\t * @returns The document's version data.\n\t */\n\tasync getDocumentData(versionId: string): Promise<CoreApiDocumentData> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(`core/documents/data/${versionId}`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not retrieve document data\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Publishes a release.\n\t *\n\t * @param id - The ID of the release.\n\t * @returns A Promise that resolves when the release is published.\n\t */\n\tasync publishRelease(id: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(`core/releases/${id}/publish`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not publish release ${id}\")\n\t\t}\n\t}\n\n\tasync getRepository(): Promise<CoreApiRepository> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(`core/repository`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not get repository`)\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\tasync updateRepository(data: CoreApiRepository): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/repository`, {\n\t\t\tdata,\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not update repository`)\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -64,6 +64,7 @@ type CoreApiDocumentsPayload = {
64
64
  limit?: number;
65
65
  statuses?: string[];
66
66
  groupLangIds?: string[];
67
+ documentIds?: string[];
67
68
  };
68
69
  type CoreApiDocumentsResponse = {
69
70
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"coreApi.d.cts","names":[],"sources":["../../src/clients/coreApi.ts"],"mappings":";;;KAIK,QAAA;EACJ,EAAA;EACA,IAAA;EACA,SAAA;AAAA;AAAA,KAGW,OAAA;EACX,EAAA;EACA,KAAA;EACA,SAAA;AAAA;AAAA,KAGW,8BAAA;EACX,KAAA;EACA,MAAA;EACA,aAAA;EACA,UAAA;EACA,qBAAA;EACA,IAAA,EAAM,MAAM;EACZ,cAAA;EACA,IAAA;AAAA;AAAA,KAGW,4BAAA;EACX,IAAA,EAAM,MAAM;EACZ,qBAAA;EACA,IAAA;AAAA;AAAA,KAGW,iBAAA,GAAoB,MAAM;EACrC,aAAa;AAAA;AAAA,KAGF,+BAAA;EACX,EAAA;EACA,aAAA;EACA,cAAA;EACA,MAAA;EACA,QAAA;IAAY,EAAA;IAAY,IAAA;EAAA;EACxB,sBAAA;EACA,qBAAA;EACA,KAAA;EACA,QAAA;IACC,MAAA;IACA,UAAA;IACA,MAAA;MACC,EAAA;MACA,UAAA;MACA,SAAA;MACA,KAAA;IAAA;IAED,UAAA;IACA,kBAAA;IACA,IAAA;IACA,iBAAA;IACA,eAAA;IACA,aAAA;IACA,GAAA;EAAA;AAAA;AAAA,KAIU,uBAAA;EACX,QAAA;EACA,KAAA;EACA,QAAA;EACA,YAAA;AAAA;AAAA,KAGW,wBAAA;EACX,KAAA;EACA,MAAA;EACA,OAAA,EAAS,+BAA+B;AAAA;AAAA,KAI7B,mBAAA,GAAsB,MAAM;AAAA,cAE3B,aAAA,SAAsB,sBAAA;EA1BjC;;;;;;;;AAMG;AAIL;;;;;;;cAiCa,OAAA,UAAiB,MAAA,EAAQ,eAAA;EAI/B,YAAA,IAAgB,OAAA,CAAQ,QAAA;EAjClB;AAGb;;;;EAkDO,WAAA,IAAe,OAAA,CAAQ,OAAA;EAiBvB,WAAA,CACL,IAAA,EAAM,8BAAA,GACJ,OAAA,CAAQ,+BAAA;EAlEX;;;AAAwC;AAIzC;;;;EAoFO,WAAA,CACL,UAAA,UACA,IAAA,EAAM,4BAAA,EACN,aAAA,WACE,OAAA,CAAQ,+BAAA;EAeL,YAAA,CAAa,UAAA,WAAqB,OAAA;EArGd;;;;;EAwHpB,iBAAA,CAAkB,UAAA,WAAqB,OAAA;EA/ExB;;;;;;EAmGf,YAAA,CAAa,IAAA,EAAM,uBAAA,GAA0B,OAAA,CAAQ,wBAAA;EAvCnB;;;;;;EA2DlC,eAAA,CAAgB,SAAA,WAAoB,OAAA,CAAQ,mBAAA;EAkBhB;;;;;;EAA5B,cAAA,CAAe,EAAA,WAAa,OAAA;EAU5B,aAAA,IAAiB,OAAA,CAAQ,iBAAA;EAYzB,gBAAA,CAAiB,IAAA,EAAM,iBAAA,GAAoB,OAAA;AAAA"}
1
+ {"version":3,"file":"coreApi.d.cts","names":[],"sources":["../../src/clients/coreApi.ts"],"mappings":";;;KAIK,QAAA;EACJ,EAAA;EACA,IAAA;EACA,SAAA;AAAA;AAAA,KAGW,OAAA;EACX,EAAA;EACA,KAAA;EACA,SAAA;AAAA;AAAA,KAGW,8BAAA;EACX,KAAA;EACA,MAAA;EACA,aAAA;EACA,UAAA;EACA,qBAAA;EACA,IAAA,EAAM,MAAM;EACZ,cAAA;EACA,IAAA;AAAA;AAAA,KAGW,4BAAA;EACX,IAAA,EAAM,MAAM;EACZ,qBAAA;EACA,IAAA;AAAA;AAAA,KAGW,iBAAA,GAAoB,MAAM;EACrC,aAAa;AAAA;AAAA,KAGF,+BAAA;EACX,EAAA;EACA,aAAA;EACA,cAAA;EACA,MAAA;EACA,QAAA;IAAY,EAAA;IAAY,IAAA;EAAA;EACxB,sBAAA;EACA,qBAAA;EACA,KAAA;EACA,QAAA;IACC,MAAA;IACA,UAAA;IACA,MAAA;MACC,EAAA;MACA,UAAA;MACA,SAAA;MACA,KAAA;IAAA;IAED,UAAA;IACA,kBAAA;IACA,IAAA;IACA,iBAAA;IACA,eAAA;IACA,aAAA;IACA,GAAA;EAAA;AAAA;AAAA,KAIU,uBAAA;EACX,QAAA;EACA,KAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;AAAA;AAAA,KAGW,wBAAA;EACX,KAAA;EACA,MAAA;EACA,OAAA,EAAS,+BAA+B;AAAA;AAAA,KAI7B,mBAAA,GAAsB,MAAM;AAAA,cAE3B,aAAA,SAAsB,sBAAA;EA1BjC;;;;;;;AAKG;AAIL;;;;;;;;cAkCa,OAAA,UAAiB,MAAA,EAAQ,eAAA;EAI/B,YAAA,IAAgB,OAAA,CAAQ,QAAA;EAjCnB;AAGZ;;;;EAkDO,WAAA,IAAe,OAAA,CAAQ,OAAA;EAiBvB,WAAA,CACL,IAAA,EAAM,8BAAA,GACJ,OAAA,CAAQ,+BAAA;EAlEX;;;AAAwC;AAIzC;;;;EAoFO,WAAA,CACL,UAAA,UACA,IAAA,EAAM,4BAAA,EACN,aAAA,WACE,OAAA,CAAQ,+BAAA;EAeL,YAAA,CAAa,UAAA,WAAqB,OAAA;EArGd;;;;;EAwHpB,iBAAA,CAAkB,UAAA,WAAqB,OAAA;EA/ExB;;;;;;EAmGf,YAAA,CAAa,IAAA,EAAM,uBAAA,GAA0B,OAAA,CAAQ,wBAAA;EAvCnB;;;;;;EA2DlC,eAAA,CAAgB,SAAA,WAAoB,OAAA,CAAQ,mBAAA;EAkBhB;;;;;;EAA5B,cAAA,CAAe,EAAA,WAAa,OAAA;EAU5B,aAAA,IAAiB,OAAA,CAAQ,iBAAA;EAYzB,gBAAA,CAAiB,IAAA,EAAM,iBAAA,GAAoB,OAAA;AAAA"}
@@ -64,6 +64,7 @@ type CoreApiDocumentsPayload = {
64
64
  limit?: number;
65
65
  statuses?: string[];
66
66
  groupLangIds?: string[];
67
+ documentIds?: string[];
67
68
  };
68
69
  type CoreApiDocumentsResponse = {
69
70
  total: number;
@@ -1 +1 @@
1
- {"version":3,"file":"coreApi.d.ts","names":[],"sources":["../../src/clients/coreApi.ts"],"mappings":";;;KAIK,QAAA;EACJ,EAAA;EACA,IAAA;EACA,SAAA;AAAA;AAAA,KAGW,OAAA;EACX,EAAA;EACA,KAAA;EACA,SAAA;AAAA;AAAA,KAGW,8BAAA;EACX,KAAA;EACA,MAAA;EACA,aAAA;EACA,UAAA;EACA,qBAAA;EACA,IAAA,EAAM,MAAM;EACZ,cAAA;EACA,IAAA;AAAA;AAAA,KAGW,4BAAA;EACX,IAAA,EAAM,MAAM;EACZ,qBAAA;EACA,IAAA;AAAA;AAAA,KAGW,iBAAA,GAAoB,MAAM;EACrC,aAAa;AAAA;AAAA,KAGF,+BAAA;EACX,EAAA;EACA,aAAA;EACA,cAAA;EACA,MAAA;EACA,QAAA;IAAY,EAAA;IAAY,IAAA;EAAA;EACxB,sBAAA;EACA,qBAAA;EACA,KAAA;EACA,QAAA;IACC,MAAA;IACA,UAAA;IACA,MAAA;MACC,EAAA;MACA,UAAA;MACA,SAAA;MACA,KAAA;IAAA;IAED,UAAA;IACA,kBAAA;IACA,IAAA;IACA,iBAAA;IACA,eAAA;IACA,aAAA;IACA,GAAA;EAAA;AAAA;AAAA,KAIU,uBAAA;EACX,QAAA;EACA,KAAA;EACA,QAAA;EACA,YAAA;AAAA;AAAA,KAGW,wBAAA;EACX,KAAA;EACA,MAAA;EACA,OAAA,EAAS,+BAA+B;AAAA;AAAA,KAI7B,mBAAA,GAAsB,MAAM;AAAA,cAE3B,aAAA,SAAsB,sBAAA;EA1BjC;;;;;;;;AAMG;AAIL;;;;;;;cAiCa,OAAA,UAAiB,MAAA,EAAQ,eAAA;EAI/B,YAAA,IAAgB,OAAA,CAAQ,QAAA;EAjClB;AAGb;;;;EAkDO,WAAA,IAAe,OAAA,CAAQ,OAAA;EAiBvB,WAAA,CACL,IAAA,EAAM,8BAAA,GACJ,OAAA,CAAQ,+BAAA;EAlEX;;;AAAwC;AAIzC;;;;EAoFO,WAAA,CACL,UAAA,UACA,IAAA,EAAM,4BAAA,EACN,aAAA,WACE,OAAA,CAAQ,+BAAA;EAeL,YAAA,CAAa,UAAA,WAAqB,OAAA;EArGd;;;;;EAwHpB,iBAAA,CAAkB,UAAA,WAAqB,OAAA;EA/ExB;;;;;;EAmGf,YAAA,CAAa,IAAA,EAAM,uBAAA,GAA0B,OAAA,CAAQ,wBAAA;EAvCnB;;;;;;EA2DlC,eAAA,CAAgB,SAAA,WAAoB,OAAA,CAAQ,mBAAA;EAkBhB;;;;;;EAA5B,cAAA,CAAe,EAAA,WAAa,OAAA;EAU5B,aAAA,IAAiB,OAAA,CAAQ,iBAAA;EAYzB,gBAAA,CAAiB,IAAA,EAAM,iBAAA,GAAoB,OAAA;AAAA"}
1
+ {"version":3,"file":"coreApi.d.ts","names":[],"sources":["../../src/clients/coreApi.ts"],"mappings":";;;KAIK,QAAA;EACJ,EAAA;EACA,IAAA;EACA,SAAA;AAAA;AAAA,KAGW,OAAA;EACX,EAAA;EACA,KAAA;EACA,SAAA;AAAA;AAAA,KAGW,8BAAA;EACX,KAAA;EACA,MAAA;EACA,aAAA;EACA,UAAA;EACA,qBAAA;EACA,IAAA,EAAM,MAAM;EACZ,cAAA;EACA,IAAA;AAAA;AAAA,KAGW,4BAAA;EACX,IAAA,EAAM,MAAM;EACZ,qBAAA;EACA,IAAA;AAAA;AAAA,KAGW,iBAAA,GAAoB,MAAM;EACrC,aAAa;AAAA;AAAA,KAGF,+BAAA;EACX,EAAA;EACA,aAAA;EACA,cAAA;EACA,MAAA;EACA,QAAA;IAAY,EAAA;IAAY,IAAA;EAAA;EACxB,sBAAA;EACA,qBAAA;EACA,KAAA;EACA,QAAA;IACC,MAAA;IACA,UAAA;IACA,MAAA;MACC,EAAA;MACA,UAAA;MACA,SAAA;MACA,KAAA;IAAA;IAED,UAAA;IACA,kBAAA;IACA,IAAA;IACA,iBAAA;IACA,eAAA;IACA,aAAA;IACA,GAAA;EAAA;AAAA;AAAA,KAIU,uBAAA;EACX,QAAA;EACA,KAAA;EACA,QAAA;EACA,YAAA;EACA,WAAA;AAAA;AAAA,KAGW,wBAAA;EACX,KAAA;EACA,MAAA;EACA,OAAA,EAAS,+BAA+B;AAAA;AAAA,KAI7B,mBAAA,GAAsB,MAAM;AAAA,cAE3B,aAAA,SAAsB,sBAAA;EA1BjC;;;;;;;AAKG;AAIL;;;;;;;;cAkCa,OAAA,UAAiB,MAAA,EAAQ,eAAA;EAI/B,YAAA,IAAgB,OAAA,CAAQ,QAAA;EAjCnB;AAGZ;;;;EAkDO,WAAA,IAAe,OAAA,CAAQ,OAAA;EAiBvB,WAAA,CACL,IAAA,EAAM,8BAAA,GACJ,OAAA,CAAQ,+BAAA;EAlEX;;;AAAwC;AAIzC;;;;EAoFO,WAAA,CACL,UAAA,UACA,IAAA,EAAM,4BAAA,EACN,aAAA,WACE,OAAA,CAAQ,+BAAA;EAeL,YAAA,CAAa,UAAA,WAAqB,OAAA;EArGd;;;;;EAwHpB,iBAAA,CAAkB,UAAA,WAAqB,OAAA;EA/ExB;;;;;;EAmGf,YAAA,CAAa,IAAA,EAAM,uBAAA,GAA0B,OAAA,CAAQ,wBAAA;EAvCnB;;;;;;EA2DlC,eAAA,CAAgB,SAAA,WAAoB,OAAA,CAAQ,mBAAA;EAkBhB;;;;;;EAA5B,cAAA,CAAe,EAAA,WAAa,OAAA;EAU5B,aAAA,IAAiB,OAAA,CAAQ,iBAAA;EAYzB,gBAAA,CAAiB,IAAA,EAAM,iBAAA,GAAoB,OAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"coreApi.js","names":[],"sources":["../../src/clients/coreApi.ts"],"sourcesContent":["import { logPlaywrightApiResponse, logger } from \"../utils/log\"\nimport type { AuthServerToken } from \"./apiClient\"\nimport { AuthenticatedApiClient } from \"./apiClient\"\n\ntype Language = {\n\tid: string\n\tname: string\n\tis_master: boolean\n}\n\nexport type Release = {\n\tid: string\n\tlabel: string\n\tmigration: boolean\n}\n\nexport type CoreApiDocumentCreationPayload = {\n\ttitle: string\n\tlocale?: string\n\tgroup_lang_id?: string\n\trelease_id?: string\n\tintegration_field_ids: string[]\n\tdata: Record<string, unknown>\n\tcustom_type_id: string\n\ttags: string[]\n}\n\nexport type CoreApiDocumentUpdatePayload = {\n\tdata: Record<string, unknown>\n\tintegration_field_ids: string[]\n\ttags: string[]\n}\n\nexport type CoreApiRepository = Record<string, unknown> & {\n\tsimulator_url?: string\n}\n\nexport type CoreApiDocumentCreationResponse = {\n\tid: string\n\tgroup_lang_id: string\n\tcustom_type_id: string\n\tlocale: string\n\tlanguage: { id: string; name: string }\n\tfirst_publication_date: number | null\n\tlast_publication_date: number | null\n\ttitle: string\n\tversions: {\n\t\tstatus: string\n\t\tversion_id: string\n\t\tauthor: {\n\t\t\tid: string\n\t\t\tfirst_name: string | null\n\t\t\tlast_name: string | null\n\t\t\temail: string\n\t\t}\n\t\trelease_id: string | null\n\t\tlast_modified_date: number\n\t\ttags: string[]\n\t\tcustom_type_label: string\n\t\tpreview_summary?: string\n\t\tpreview_image?: string\n\t\tuid?: string\n\t}[]\n}\n\nexport type CoreApiDocumentsPayload = {\n\tlanguage?: string\n\tlimit?: number\n\tstatuses?: string[]\n\tgroupLangIds?: string[]\n}\n\nexport type CoreApiDocumentsResponse = {\n\ttotal: number\n\tcursor: string\n\tresults: CoreApiDocumentCreationResponse[]\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CoreApiDocumentData = Record<string, any>\n\nexport class CoreApiClient extends AuthenticatedApiClient {\n\t/**\n\t * @example\n\t * \tTo instantiate the class:\n\t *\n\t * \t```js\n\t * \tnew CoreApiClient(\"https://my-repo.prismic.io\", {\n\t * \tauthToken: \"my-secret-token\",\n\t * \t});\n\t * \t```\n\t *\n\t * @param baseURL - The api base URL like https://my-repo.prismic.io\n\t * @param config - Optional configuration\n\t *\n\t * - {@link config.authToken}: Api token generated from the auth service or a function to fetch it\n\t * when it's needed.\n\t */\n\tconstructor(baseURL: string, config: AuthServerToken) {\n\t\tsuper(baseURL, config)\n\t}\n\n\tasync getLanguages(): Promise<Language[]> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"core/repository\")\n\n\t\tif (200 !== result.status() || !(await result.json()).languages) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not get languages from the core api.\")\n\t\t}\n\n\t\tprofiler.done({ message: \"retrieved languages configuration\" })\n\n\t\treturn (await result.json()).languages\n\t}\n\n\t/**\n\t * Retrieves all releases, including the migration release.\n\t *\n\t * @returns An array of release metadata.\n\t */\n\tasync getReleases(): Promise<Release[]> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"core/releases\", {\n\t\t\tparams: { include_migration_releases: true },\n\t\t})\n\n\t\tif (200 !== result.status() || !(await result.json()).results) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not get releases from the core api.\")\n\t\t}\n\n\t\tprofiler.done({ message: \"retrieved releases\" })\n\n\t\treturn (await result.json()).results\n\t}\n\n\tasync createDraft(\n\t\tdata: CoreApiDocumentCreationPayload,\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"core/documents\", {\n\t\t\tdata,\n\t\t})\n\n\t\tif (201 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not create draft document\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Creates a new draft version of an existing document, on top of the given base version.\n\t *\n\t * @param documentId - The id of the document to update.\n\t * @param data - The new version payload in the core api format.\n\t * @param baseVersionId - The id of the version the draft is created from.\n\t * @returns The updated document, including the new version's id.\n\t */\n\tasync updateDraft(\n\t\tdocumentId: string,\n\t\tdata: CoreApiDocumentUpdatePayload,\n\t\tbaseVersionId: string,\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.put(`core/documents/${documentId}/draft`, {\n\t\t\tparams: { base_version_id: baseVersionId },\n\t\t\tdata,\n\t\t})\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not update draft for document with id ${documentId}`)\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\tasync publishDraft(documentId: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/documents/${documentId}/draft`, {\n\t\t\tdata: {\n\t\t\t\tstatus: \"published\",\n\t\t\t},\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not publish document with id ${documentId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Unpublishes (archives) a live document.\n\t *\n\t * @param documentId - The id of the document to unpublish.\n\t */\n\tasync unpublishDocument(documentId: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/documents/${documentId}/live`, {\n\t\t\tdata: {\n\t\t\t\tstatus: \"archived\",\n\t\t\t},\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not unpublish document with id ${documentId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Retrieves documents.\n\t *\n\t * @param args - Configure which documents are retrieved.\n\t * @returns A paginated set of documents.\n\t */\n\tasync getDocuments(args: CoreApiDocumentsPayload): Promise<CoreApiDocumentsResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"core/documents/search\", {\n\t\t\tdata: args,\n\t\t})\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not search documents\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Retrieves data for a specific document version.\n\t *\n\t * @param versionId - The document's version ID.\n\t * @returns The document's version data.\n\t */\n\tasync getDocumentData(versionId: string): Promise<CoreApiDocumentData> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(`core/documents/data/${versionId}`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not retrieve document data\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Publishes a release.\n\t *\n\t * @param id - The ID of the release.\n\t * @returns A Promise that resolves when the release is published.\n\t */\n\tasync publishRelease(id: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(`core/releases/${id}/publish`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not publish release ${id}\")\n\t\t}\n\t}\n\n\tasync getRepository(): Promise<CoreApiRepository> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(`core/repository`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not get repository`)\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\tasync updateRepository(data: CoreApiRepository): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/repository`, {\n\t\t\tdata,\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not update repository`)\n\t\t}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"coreApi.js","names":[],"sources":["../../src/clients/coreApi.ts"],"sourcesContent":["import { logPlaywrightApiResponse, logger } from \"../utils/log\"\nimport type { AuthServerToken } from \"./apiClient\"\nimport { AuthenticatedApiClient } from \"./apiClient\"\n\ntype Language = {\n\tid: string\n\tname: string\n\tis_master: boolean\n}\n\nexport type Release = {\n\tid: string\n\tlabel: string\n\tmigration: boolean\n}\n\nexport type CoreApiDocumentCreationPayload = {\n\ttitle: string\n\tlocale?: string\n\tgroup_lang_id?: string\n\trelease_id?: string\n\tintegration_field_ids: string[]\n\tdata: Record<string, unknown>\n\tcustom_type_id: string\n\ttags: string[]\n}\n\nexport type CoreApiDocumentUpdatePayload = {\n\tdata: Record<string, unknown>\n\tintegration_field_ids: string[]\n\ttags: string[]\n}\n\nexport type CoreApiRepository = Record<string, unknown> & {\n\tsimulator_url?: string\n}\n\nexport type CoreApiDocumentCreationResponse = {\n\tid: string\n\tgroup_lang_id: string\n\tcustom_type_id: string\n\tlocale: string\n\tlanguage: { id: string; name: string }\n\tfirst_publication_date: number | null\n\tlast_publication_date: number | null\n\ttitle: string\n\tversions: {\n\t\tstatus: string\n\t\tversion_id: string\n\t\tauthor: {\n\t\t\tid: string\n\t\t\tfirst_name: string | null\n\t\t\tlast_name: string | null\n\t\t\temail: string\n\t\t}\n\t\trelease_id: string | null\n\t\tlast_modified_date: number\n\t\ttags: string[]\n\t\tcustom_type_label: string\n\t\tpreview_summary?: string\n\t\tpreview_image?: string\n\t\tuid?: string\n\t}[]\n}\n\nexport type CoreApiDocumentsPayload = {\n\tlanguage?: string\n\tlimit?: number\n\tstatuses?: string[]\n\tgroupLangIds?: string[]\n\tdocumentIds?: string[]\n}\n\nexport type CoreApiDocumentsResponse = {\n\ttotal: number\n\tcursor: string\n\tresults: CoreApiDocumentCreationResponse[]\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type CoreApiDocumentData = Record<string, any>\n\nexport class CoreApiClient extends AuthenticatedApiClient {\n\t/**\n\t * @example\n\t * \tTo instantiate the class:\n\t *\n\t * \t```js\n\t * \tnew CoreApiClient(\"https://my-repo.prismic.io\", {\n\t * \tauthToken: \"my-secret-token\",\n\t * \t});\n\t * \t```\n\t *\n\t * @param baseURL - The api base URL like https://my-repo.prismic.io\n\t * @param config - Optional configuration\n\t *\n\t * - {@link config.authToken}: Api token generated from the auth service or a function to fetch it\n\t * when it's needed.\n\t */\n\tconstructor(baseURL: string, config: AuthServerToken) {\n\t\tsuper(baseURL, config)\n\t}\n\n\tasync getLanguages(): Promise<Language[]> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"core/repository\")\n\n\t\tif (200 !== result.status() || !(await result.json()).languages) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not get languages from the core api.\")\n\t\t}\n\n\t\tprofiler.done({ message: \"retrieved languages configuration\" })\n\n\t\treturn (await result.json()).languages\n\t}\n\n\t/**\n\t * Retrieves all releases, including the migration release.\n\t *\n\t * @returns An array of release metadata.\n\t */\n\tasync getReleases(): Promise<Release[]> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"core/releases\", {\n\t\t\tparams: { include_migration_releases: true },\n\t\t})\n\n\t\tif (200 !== result.status() || !(await result.json()).results) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not get releases from the core api.\")\n\t\t}\n\n\t\tprofiler.done({ message: \"retrieved releases\" })\n\n\t\treturn (await result.json()).results\n\t}\n\n\tasync createDraft(\n\t\tdata: CoreApiDocumentCreationPayload,\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"core/documents\", {\n\t\t\tdata,\n\t\t})\n\n\t\tif (201 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not create draft document\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Creates a new draft version of an existing document, on top of the given base version.\n\t *\n\t * @param documentId - The id of the document to update.\n\t * @param data - The new version payload in the core api format.\n\t * @param baseVersionId - The id of the version the draft is created from.\n\t * @returns The updated document, including the new version's id.\n\t */\n\tasync updateDraft(\n\t\tdocumentId: string,\n\t\tdata: CoreApiDocumentUpdatePayload,\n\t\tbaseVersionId: string,\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.put(`core/documents/${documentId}/draft`, {\n\t\t\tparams: { base_version_id: baseVersionId },\n\t\t\tdata,\n\t\t})\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not update draft for document with id ${documentId}`)\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\tasync publishDraft(documentId: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/documents/${documentId}/draft`, {\n\t\t\tdata: {\n\t\t\t\tstatus: \"published\",\n\t\t\t},\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not publish document with id ${documentId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Unpublishes (archives) a live document.\n\t *\n\t * @param documentId - The id of the document to unpublish.\n\t */\n\tasync unpublishDocument(documentId: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/documents/${documentId}/live`, {\n\t\t\tdata: {\n\t\t\t\tstatus: \"archived\",\n\t\t\t},\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not unpublish document with id ${documentId}`)\n\t\t}\n\t}\n\n\t/**\n\t * Retrieves documents.\n\t *\n\t * @param args - Configure which documents are retrieved.\n\t * @returns A paginated set of documents.\n\t */\n\tasync getDocuments(args: CoreApiDocumentsPayload): Promise<CoreApiDocumentsResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"core/documents/search\", {\n\t\t\tdata: args,\n\t\t})\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not search documents\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Retrieves data for a specific document version.\n\t *\n\t * @param versionId - The document's version ID.\n\t * @returns The document's version data.\n\t */\n\tasync getDocumentData(versionId: string): Promise<CoreApiDocumentData> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(`core/documents/data/${versionId}`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not retrieve document data\")\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\t/**\n\t * Publishes a release.\n\t *\n\t * @param id - The ID of the release.\n\t * @returns A Promise that resolves when the release is published.\n\t */\n\tasync publishRelease(id: string): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(`core/releases/${id}/publish`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Could not publish release ${id}\")\n\t\t}\n\t}\n\n\tasync getRepository(): Promise<CoreApiRepository> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(`core/repository`)\n\n\t\tif (200 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not get repository`)\n\t\t}\n\n\t\treturn result.json()\n\t}\n\n\tasync updateRepository(data: CoreApiRepository): Promise<void> {\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.patch(`core/repository`, {\n\t\t\tdata,\n\t\t})\n\n\t\tif (204 !== result.status()) {\n\t\t\tawait logPlaywrightApiResponse(result)\n\t\t\tthrow new Error(`Could not update repository`)\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -206,10 +206,7 @@ var RepositoryManager = class {
206
206
  const contentApi = this.getContentApiClient();
207
207
  const masterRef = await contentApi.getMasterRef();
208
208
  await this.coreApiClient.publishRelease(id);
209
- await _playwright_test.expect.poll(async () => contentApi.getMasterRef(), {
210
- timeout: 1e4,
211
- message: "Waiting for new master ref to be available"
212
- }).not.toBe(masterRef);
209
+ await this.waitForNewMasterRef(contentApi, masterRef);
213
210
  profiler.done({ message: `release '${id}' published and new master ref available` });
214
211
  }
215
212
  /**
@@ -500,10 +497,7 @@ var RepositoryManager = class {
500
497
  const contentApi = this.getContentApiClient();
501
498
  const masterRef = await contentApi.getMasterRef();
502
499
  await this.coreApiClient.publishDraft(result.id);
503
- await _playwright_test.expect.poll(async () => contentApi.getMasterRef(), {
504
- timeout: 1e4,
505
- message: "Waiting for new master ref to be available"
506
- }).not.toBe(masterRef);
500
+ await this.waitForNewMasterRef(contentApi, masterRef);
507
501
  message += ", status 'published' and new master ref available";
508
502
  }
509
503
  profiler.done({ message });
@@ -523,28 +517,34 @@ var RepositoryManager = class {
523
517
  * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master
524
518
  * ref to be available (default false). Set to true to return without waiting for the
525
519
  * projection.
526
- * @returns The updated document, including the new version's id.
520
+ * @returns The updated document, including the new version's id. When publishing, the document is
521
+ * retrieved again after publication so that the returned versions reflect the published state.
527
522
  */
528
523
  async updateDocument(documentId, data, baseVersionId, status, options = {}) {
529
524
  const { skipMasterRefWait = false } = options;
530
525
  const profiler = require_log.logger.startTimer();
531
- const result = await this.coreApiClient.updateDraft(documentId, data, baseVersionId);
532
- let message = `Document '${documentId}' updated`;
533
- if (status === "published") if (skipMasterRefWait) {
534
- await this.coreApiClient.publishDraft(documentId);
535
- message += ", status 'published'";
536
- } else {
526
+ const draft = await this.coreApiClient.updateDraft(documentId, data, baseVersionId);
527
+ if (status === "draft") {
528
+ profiler.done({ message: `Document '${documentId}' updated` });
529
+ return draft;
530
+ }
531
+ let message = `Document '${documentId}' updated, status 'published'`;
532
+ if (skipMasterRefWait) await this.coreApiClient.publishDraft(documentId);
533
+ else {
537
534
  const contentApi = this.getContentApiClient();
538
535
  const masterRef = await contentApi.getMasterRef();
539
536
  await this.coreApiClient.publishDraft(documentId);
540
- await _playwright_test.expect.poll(async () => contentApi.getMasterRef(), {
541
- timeout: 1e4,
542
- message: "Waiting for new master ref to be available"
543
- }).not.toBe(masterRef);
544
- message += ", status 'published' and new master ref available";
537
+ await this.waitForNewMasterRef(contentApi, masterRef);
538
+ message += " and new master ref available";
545
539
  }
540
+ const { results } = await this.coreApiClient.getDocuments({
541
+ documentIds: [documentId],
542
+ limit: 1
543
+ });
544
+ const publishedDocument = results[0];
545
+ if (!publishedDocument) throw new Error(`Could not retrieve document '${documentId}' after publication`);
546
546
  profiler.done({ message });
547
- return result;
547
+ return publishedDocument;
548
548
  }
549
549
  /**
550
550
  * Unpublishes (archives) a live document using the core api. Unless disabled, waits for a new
@@ -566,10 +566,7 @@ var RepositoryManager = class {
566
566
  const contentApi = this.getContentApiClient();
567
567
  const masterRef = await contentApi.getMasterRef();
568
568
  await this.coreApiClient.unpublishDocument(documentId);
569
- await _playwright_test.expect.poll(async () => contentApi.getMasterRef(), {
570
- timeout: 1e4,
571
- message: "Waiting for new master ref to be available"
572
- }).not.toBe(masterRef);
569
+ await this.waitForNewMasterRef(contentApi, masterRef);
573
570
  profiler.done({ message: `Document '${documentId}' unpublished and new master ref available` });
574
571
  }
575
572
  /**
@@ -587,6 +584,12 @@ var RepositoryManager = class {
587
584
  await this.integrationFieldsClient.setupIntegrationFields(integrationFields);
588
585
  profiler.done({ message: `Integration Fields setup` });
589
586
  }
587
+ async waitForNewMasterRef(contentApi, previousMasterRef) {
588
+ await _playwright_test.expect.poll(async () => contentApi.getMasterRef(), {
589
+ timeout: 1e4,
590
+ message: "Waiting for new master ref to be available"
591
+ }).not.toBe(previousMasterRef);
592
+ }
590
593
  };
591
594
  //#endregion
592
595
  exports.RepositoryManager = RepositoryManager;
@@ -1 +1 @@
1
- {"version":3,"file":"repository.cjs","names":["getRepositoryUrl","ContentApiClient","logger","expect"],"sources":["../../src/managers/repository.ts"],"sourcesContent":["import { expect } from \"@playwright/test\"\nimport type { DynamicCustomTypeModel, SharedSliceModel } from \"@prismicio/types-internal\"\nimport type { AxiosResponse } from \"axios\"\n\nimport type { AssetApiClient } from \"../clients/assetApi\"\nimport type { AuthenticationApiClient } from \"../clients/authenticationApi\"\nimport { ContentApiClient } from \"../clients/contentApi\"\nimport type {\n\tCoreApiClient,\n\tCoreApiDocumentCreationPayload,\n\tCoreApiDocumentCreationResponse,\n\tCoreApiDocumentData,\n\tCoreApiDocumentsPayload,\n\tCoreApiDocumentsResponse,\n\tCoreApiDocumentUpdatePayload,\n\tRelease,\n} from \"../clients/coreApi\"\nimport type { CustomTypesApiClient } from \"../clients/customTypesApi\"\nimport type { IntegrationFieldsClient } from \"../clients/integrationFields\"\nimport type { ManageV2Client } from \"../clients/manageV2\"\nimport type { MigrationApiClient } from \"../clients/migrationApi\"\nimport type { WroomClient } from \"../clients/wroom\"\nimport type { IntegrationFieldConfig } from \"../types\"\nimport { logHttpResponse, logger } from \"../utils/log\"\nimport { getRepositoryUrl } from \"../utils/urls\"\n\n/** Utility to manage test data for a Prismic repository */\nexport class RepositoryManager {\n\tconstructor(\n\t\treadonly name: string,\n\t\tprivate readonly coreApiClient: CoreApiClient,\n\t\tprivate readonly authApiClient: AuthenticationApiClient,\n\t\tprivate readonly wroomClient: WroomClient,\n\t\tprivate readonly customTypesApiClient: CustomTypesApiClient,\n\t\tprivate readonly migrationApiClient: MigrationApiClient | undefined,\n\t\tprivate readonly assetApiClient: AssetApiClient,\n\t\tprivate readonly manageV2Client: ManageV2Client,\n\t\tprivate readonly integrationFieldsClient: IntegrationFieldsClient | undefined,\n\t) {}\n\n\tasync configure(config: RepositoryConfig): Promise<void> {\n\t\tconst hasLangConfig = config.defaultLocale || config.locales || config.customLocale\n\t\tif (hasLangConfig) {\n\t\t\tconst languages = await this.coreApiClient.getLanguages()\n\t\t\tlet updateDefaultLocaleAtTheEnd = false\n\t\t\t// if no locale exists on repo, the master locale needs to be set first\n\t\t\tif (config.defaultLocale) {\n\t\t\t\tconst master = languages.find(({ is_master }) => is_master === true)\n\t\t\t\tif (!master) {\n\t\t\t\t\tawait this.setDefaultLocale(config.defaultLocale, \"create\")\n\t\t\t\t} else if (master.id !== config.defaultLocale) {\n\t\t\t\t\t// update the master lang at the end, after it is created.\n\t\t\t\t\tupdateDefaultLocaleAtTheEnd = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.locales) {\n\t\t\t\t// No need to add default locale and already existing languages\n\t\t\t\tconst localesToAdd = config.locales.filter(\n\t\t\t\t\t(id) => !languages.some((language) => language.id === id),\n\t\t\t\t)\n\t\t\t\tif (localesToAdd.length > 0) {\n\t\t\t\t\tawait this.createLocales(localesToAdd)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.customLocale) {\n\t\t\t\tif (!languages.find(({ id }) => id === config.customLocale?.lang.id)) {\n\t\t\t\t\tawait this.createCustomLocale(config.customLocale)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.defaultLocale && updateDefaultLocaleAtTheEnd) {\n\t\t\t\tawait this.setDefaultLocale(config.defaultLocale, \"update\")\n\t\t\t}\n\t\t}\n\n\t\tif (config.slices) {\n\t\t\tawait this.createSlices(config.slices)\n\t\t}\n\n\t\tif (config.customTypes) {\n\t\t\tawait this.createCustomTypes(config.customTypes)\n\t\t}\n\n\t\tif (config.preview) {\n\t\t\tawait this.createPreview(config.preview)\n\t\t}\n\n\t\tif (config.simulatorURL) {\n\t\t\tawait this.setSimulatorURL(config.simulatorURL)\n\t\t}\n\n\t\tif (config.rolePerLocal) {\n\t\t\tawait this.toggleRolePerLocal(true)\n\t\t}\n\n\t\tif (config.customRoles) {\n\t\t\tawait this.toggleCustomRoles(true)\n\t\t}\n\n\t\tif (config.integrationFields) {\n\t\t\tawait this.toggleIntegrationFields(true)\n\t\t\tawait this.setupIntegrationFields(config.integrationFields)\n\t\t}\n\t}\n\n\t/** @returns The repository base url, like https://my-repo.prismic.io */\n\tgetBaseURL(): string {\n\t\treturn getRepositoryUrl(this.wroomClient.getBaseURL(), this.name)\n\t}\n\n\t/** @returns The repository base cdn url, like https://my-repo.cdn.prismic.io */\n\tgetBaseCdnURL(): string {\n\t\treturn getRepositoryUrl(this.wroomClient.getBaseURL(), `${this.name}.cdn`)\n\t}\n\n\t/**\n\t * @returns A Content Type api client configured to target the repository CDN url. Uses Playwright\n\t * for requests so if your project uses Playwright too, any network request will be present in\n\t * Playwright test reports.\n\t */\n\tgetContentApiClient(config?: { version?: \"v1\" | \"v2\"; accessToken?: string }): ContentApiClient {\n\t\treturn new ContentApiClient(this.getBaseCdnURL(), config)\n\t}\n\n\t/**\n\t * @returns An instance of the Migration api client, see\n\t * https://prismic.io/docs/migration-api-technical-reference\n\t */\n\tgetMigrationApiClient(): MigrationApiClient {\n\t\tif (!this.migrationApiClient) {\n\t\t\tthrow \"No client found for the migration api. Did you provide a migration api url in the configuration?\"\n\t\t}\n\n\t\treturn this.migrationApiClient\n\t}\n\n\t/**\n\t * @returns An instance of the Asset api client, see\n\t * https://prismic.io/docs/asset-api-technical-reference\n\t */\n\tgetAssetApiClient(): AssetApiClient {\n\t\treturn this.assetApiClient\n\t}\n\n\t/** @returns The Wroom commit hash deployed on the current repository */\n\tasync getDeployedVersion(): Promise<string | undefined> {\n\t\tconst response = await this.wroomClient.get(\n\t\t\tthis.name,\n\t\t\t\"underground/834b34f16f451e00f268dd5c8c81d16e3c020275\",\n\t\t)\n\n\t\t// Somehow axios directly parses the text response `Prismic version: <commit hash> into a version attribute\n\t\treturn response.data.version\n\t}\n\n\t/**\n\t * Set additional standard locales for a repository in Wroom, does not fail if the locales already\n\t * exist.\n\t *\n\t * @param locales - An array of all locales to be added to the repository.\n\t * @throws Error if setting the locales fails.\n\t */\n\tasync createLocales(locales: string[]): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/settings/multilanguages\", {\n\t\t\tlanguages: locales,\n\t\t})\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 || (status === 400 && (data as string).includes(\"already existing languages\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not add locales ${locales.join(\", \")}`)\n\t\t}\n\t\tprofiler.done({ message: `locales '${locales}' created` })\n\t}\n\n\t/**\n\t * Set additional custom locale for a repository in Wroom, does not fail if the locales already\n\t * exist.\n\t *\n\t * @param locale - The locale to be added to the repository.\n\t * @throws Error if setting the locale fails.\n\t */\n\tasync createCustomLocale(locale: CustomLocale): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t\"app/settings/multilanguages/custom\",\n\t\t\tlocale,\n\t\t)\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 || (status === 400 && JSON.stringify(data).includes(\"code is already used\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not create custom locale ${locale}`)\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage: `custom locale ${JSON.stringify(locale)} created`,\n\t\t})\n\t}\n\n\tprivate failIfNot200(response: AxiosResponse, msg: string) {\n\t\tif (response.status !== 200) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(msg)\n\t\t}\n\t}\n\n\t/**\n\t * Delete a locale from a repository.\n\t *\n\t * @param locale - Locale to remove from the repository configuration.\n\t * @throws Error if deleting the locale fails.\n\t */\n\tasync deleteLocale(locale: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`app/settings/multilanguages/${locale}/delete`,\n\t\t)\n\t\tthis.failIfNot200(response, `Could not delete locale ${locale}`)\n\t\tprofiler.done({ message: `locale '${locale}' deleted` })\n\t}\n\n\t/**\n\t * Create or update the default (master) locale for a repository in Wroom, the locale needs to\n\t * exist in the repository.\n\t *\n\t * @param locale - The locale to be set as the default.\n\t * @param endpoint - \"createMasterLang\" to create it, \"defineAsMaster\" to update it.\n\t * @throws Error if setting the default locale fails.\n\t */\n\tasync setDefaultLocale(locale: string, action: \"create\" | \"update\"): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst endpoint = {\n\t\t\tcreate: \"createMasterLang\",\n\t\t\tupdate: \"defineAsMaster\",\n\t\t}\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`/app/settings/multilanguages/${locale}/${endpoint[action]}`,\n\t\t)\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 ||\n\t\t\t(status === 400 &&\n\t\t\t\t// returns 400 if master lang is already set\n\t\t\t\tJSON.stringify(data).includes(\"Unable to set as master language\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not set default locale to ${locale}`)\n\t\t}\n\t\tprofiler.done({ message: `default locale set to '${locale}'` })\n\t}\n\n\t/**\n\t * Retrieves documents.\n\t *\n\t * @param args - Configure which documents are retrieved.\n\t * @returns A paginated set of documents.\n\t */\n\tasync getDocuments(args: CoreApiDocumentsPayload): Promise<CoreApiDocumentsResponse> {\n\t\treturn this.coreApiClient.getDocuments(args)\n\t}\n\n\t/**\n\t * Creates a release.\n\t *\n\t * @param label - The label for the release.\n\t * @returns A Promise that resolves when the release is created.\n\t */\n\tasync createRelease(label: string): Promise<{ id: string }> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/releases\", {\n\t\t\tlabel,\n\t\t})\n\t\tthis.failIfNot200(response, `Could not create release ${label}`)\n\t\tprofiler.done({ message: `release '${label}' created` })\n\n\t\treturn response.data\n\t}\n\n\t/**\n\t * Retrieves the migration release.\n\t *\n\t * @returns The migration relese metadata.\n\t */\n\tasync getMigrationRelease(): Promise<Release> {\n\t\tconst releases = await this.coreApiClient.getReleases()\n\t\tconst migrationRelease = releases.find((release) => release.migration)\n\t\tif (!migrationRelease) {\n\t\t\tthrow new Error(`The repository does not have a migration release`)\n\t\t}\n\n\t\treturn migrationRelease\n\t}\n\n\t/**\n\t * Publishes a release.\n\t *\n\t * @param id - The ID of the release.\n\t * @returns A Promise that resolves when the release is published and a new master ref is\n\t * available.\n\t */\n\tasync publishRelease(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst contentApi = this.getContentApiClient()\n\t\tconst masterRef = await contentApi.getMasterRef()\n\t\tawait this.coreApiClient.publishRelease(id)\n\t\tawait expect\n\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\ttimeout: 10_000,\n\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t})\n\t\t\t.not.toBe(masterRef)\n\n\t\tprofiler.done({\n\t\t\tmessage: `release '${id}' published and new master ref available`,\n\t\t})\n\t}\n\n\t/**\n\t * Deletes a repository release.\n\t *\n\t * @param id - The ID of the release to be deleted.\n\t */\n\tasync deleteRelease(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `app/releases/${id}/delete`, {})\n\n\t\tthis.failIfNot200(response, `Could not delete release with id ${id}`)\n\t\tprofiler.done({ message: `release '${id}' deleted` })\n\t}\n\n\t/**\n\t * Creates a preview for a repository.\n\t *\n\t * @param data - The data for creating the preview.\n\t */\n\tasync createPreview(data: Preview): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `previews/new`, data)\n\n\t\tthis.failIfNot200(response, `Could not create preview ${data.name}`)\n\t\tprofiler.done({ message: `preview '${data.name}' created` })\n\n\t\treturn response.data\n\t}\n\n\t/**\n\t * Set the simulator URL (table of slices) for a repository.\n\t *\n\t * @param data - The simulator URL to set.\n\t */\n\tasync setSimulatorURL(simulatorURL: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst repository = await this.coreApiClient.getRepository()\n\t\tawait this.coreApiClient.updateRepository({\n\t\t\t...repository,\n\t\t\tsimulator_url: simulatorURL,\n\t\t})\n\n\t\tprofiler.done({\n\t\t\tmessage: `simulator preview '${simulatorURL}' created`,\n\t\t})\n\t}\n\n\t/**\n\t * Deletes a preview from a repository.\n\t *\n\t * @param id - The ID of the preview to be deleted.\n\t */\n\tasync deletePreview(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `previews/delete/${id}`, {})\n\n\t\tthis.failIfNot200(response, `Could not delete preview with id ${id}`)\n\t\tprofiler.done({ message: `preview '${id}' deleted` })\n\t}\n\n\t/**\n\t * Create a webhook.\n\t *\n\t * @returns A Promise that resolves with the webhook id.\n\t */\n\tasync createWebhook(\n\t\tname: string,\n\t\turl: string,\n\t\tsecret: string,\n\t\ttriggers: {\n\t\t\tdocumentsPublished?: boolean\n\t\t\tdocumentsUnpublished?: boolean\n\t\t\treleasesCreated?: boolean\n\t\t\treleasesUpdated?: boolean\n\t\t\ttagsCreated?: boolean\n\t\t\ttagsDeleted?: boolean\n\t\t},\n\t\tactive: boolean,\n\t): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/settings/webhooks/create\", {\n\t\t\tname,\n\t\t\turl,\n\t\t\tsecret,\n\t\t\tactive: active ? \"on\" : \"off\",\n\t\t\t...triggers,\n\t\t})\n\t\tthis.failIfNot200(response, `Could not create webhook ${name}`)\n\t\tprofiler.done({ message: `webhook '${name}' created` })\n\n\t\treturn response.data.created\n\t}\n\n\t/**\n\t * Deletes a webhook.\n\t *\n\t * @param id - The webhook ID.\n\t */\n\tasync deleteWebhook(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`app/settings/webhooks/${id}/delete`,\n\t\t\t{},\n\t\t)\n\n\t\tthis.failIfNot200(response, `Could not delete webhook with id ${id}`)\n\t\tprofiler.done({ message: `webhook '${id}' deleted` })\n\t}\n\n\t/**\n\t * Create Custom Types using the Custom types api.\n\t *\n\t * @param customTypes\n\t */\n\tasync createCustomTypes(customTypes: DynamicCustomTypeModel[]): Promise<void> {\n\t\tawait this.customTypesApiClient.createCustomTypes(customTypes)\n\t}\n\n\tasync deleteCustomType(customTypeId: string): Promise<void> {\n\t\tawait this.customTypesApiClient.deleteCustomType(customTypeId)\n\t}\n\n\t/**\n\t * Create slices using the Custom types api.\n\t *\n\t * @param slices\n\t */\n\tasync createSlices(slices: SharedSliceModel[]): Promise<void> {\n\t\tawait this.customTypesApiClient.createSlices(slices)\n\t}\n\n\t/**\n\t * Create an access token to query private items of the Content api.\n\t *\n\t * @param appName - Mandatory authorized application name\n\t * @param tokenScope - Access token scope. Use \"master\" to when your content api is fully private\n\t * or \"master+releases\" to access private releases\n\t */\n\tasync createContentAPIToken(\n\t\tappName: string,\n\t\ttokenScope: \"master\" | \"master+releases\" = \"master\",\n\t): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\t\ttype AuthorizedAppResponse = {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\twroom_auths: { token: string; scope: \"master\" | \"master+releases\" }[]\n\t\t}\n\t\tconst existingApps: AxiosResponse<AuthorizedAppResponse[]> = await this.wroomClient.get(\n\t\t\tthis.name,\n\t\t\t\"settings/security/contentapi\",\n\t\t)\n\n\t\tthis.failIfNot200(\n\t\t\texistingApps,\n\t\t\t`Could not get status of existing applications to generate a content api token`,\n\t\t)\n\t\tlet app = existingApps.data.find(({ name, wroom_auths }) => {\n\t\t\treturn name === appName && wroom_auths.length > 0\n\t\t})\n\n\t\tif (!app) {\n\t\t\tconst response: AxiosResponse<AuthorizedAppResponse> = await this.wroomClient.post(\n\t\t\t\tthis.name,\n\t\t\t\t\"settings/security/oauthapp\",\n\t\t\t\t{\n\t\t\t\t\tapp_name: appName,\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tthis.failIfNot200(response, `Could not create content api app ${appName}`)\n\t\t\tapp = response.data\n\t\t}\n\n\t\tlet tokenInfo = app.wroom_auths.find(({ scope }) => scope === tokenScope)\n\t\tif (!tokenInfo) {\n\t\t\tconst response = await this.wroomClient.post(this.name, \"settings/security/authorizations\", {\n\t\t\t\tapp: app.id,\n\t\t\t\tscope: tokenScope,\n\t\t\t})\n\t\t\tthis.failIfNot200(\n\t\t\t\tresponse,\n\t\t\t\t`Could not create content api access token for app ${appName} with scope ${tokenScope}`,\n\t\t\t)\n\t\t\ttokenInfo = response.data\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage: `content api access token for app '${appName}' created`,\n\t\t})\n\n\t\tif (!tokenInfo?.token) {\n\t\t\tthrow `Could not create content api access token for app ${appName} with scope ${tokenScope}`\n\t\t}\n\n\t\treturn tokenInfo.token\n\t}\n\n\t/** Create a permanent access token to authenticate to Prismic public apis. */\n\tasync createPermanentAccessToken(): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst token = await this.authApiClient.getMachine2MachineToken(this.name)\n\n\t\tprofiler.done({\n\t\t\tmessage: `machine2machine token created`,\n\t\t})\n\n\t\treturn token\n\t}\n\n\t/**\n\t * Toggle the Role per Locale workflow\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleRolePerLocal(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleRolePerLocal({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Role per local for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Role per local ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Toggle the Custom Roles workflow\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleCustomRoles(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleCustomRoles({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Custom Roles for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Custom Roles ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Toggle the Integration Fields feature\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleIntegrationFields(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleIntegrationFields({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Integration Fields for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Integration Fields ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Change the Repository Plan\n\t *\n\t * @param {string} newPlanId - The Id of the new Plan to apply\n\t */\n\tasync changePlan(newPlanId: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.changePlan({\n\t\t\trepository: this.name,\n\t\t\tnewPlanId: newPlanId,\n\t\t\tbypassManualBilling: true, // For now the library does not support Stripe features\n\t\t})\n\n\t\tthis.failIfNot200(response, \"Could not change the Repository Plan\")\n\t\tprofiler.done({\n\t\t\tmessage: `Repository Plan changed to ${newPlanId}`,\n\t\t})\n\t}\n\n\t/**\n\t * Add a new user to the repository\n\t *\n\t * @param {string} email - The email of the user\n\t */\n\tasync addUser(email: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.addUserToRepository({\n\t\t\trepository: this.name,\n\t\t\temail: email,\n\t\t})\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 ||\n\t\t\t(status === 409 && JSON.stringify(data).includes(\"already a member of the repo\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not add a new user ${email} to the repository`)\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage: `User ${email} was added to the repository`,\n\t\t})\n\t}\n\n\t/**\n\t * Remove a user from the repository\n\t *\n\t * @param {string} email - The email of the user\n\t */\n\tasync removeUser(email: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.removeUserFromRepository({\n\t\t\trepository: this.name,\n\t\t\temail: email,\n\t\t})\n\n\t\tthis.failIfNot200(response, `Could not remove the user ${email} from the repository`)\n\t\tprofiler.done({\n\t\t\tmessage: `User ${email} was removed from the repository`,\n\t\t})\n\t}\n\n\t/**\n\t * Update the role of a user in a repository\n\t *\n\t * @param {string} email - The email of the user\n\t * @param {string | Record<string, string>} role - The new Role of the user, either a string for\n\t * basic workflow or an object such as `{ \"lang_id\": \"Writer\" }`\n\t *\n\t * Example of roles are\n\t *\n\t * - Administrator\n\t * - Writer\n\t * - Contributor\n\t * - Manager (publisher)\n\t */\n\tasync updateUserRole(email: string, role: string | Record<string, string>): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response =\n\t\t\ttypeof role === \"string\"\n\t\t\t\t? await this.wroomClient.updateRole(this.name, email, role)\n\t\t\t\t: await this.wroomClient.updateRolePerLocal(this.name, email, role)\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not update the ${\n\t\t\t\ttypeof role === \"string\" ? \"role\" : \"rolePerLocal\"\n\t\t\t} of the user ${email}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Updated User's ${\n\t\t\t\ttypeof role === \"string\" ? \"role\" : \"rolePerLocal\"\n\t\t\t} for user ${email}`,\n\t\t})\n\t}\n\n\t/**\n\t * Creates a document using the core api. If the Core api format is too specific, use the\n\t * migration api client to create a document with the MigrationApiClient. See the\n\t * `getMigrationApiClient()` method.\n\t *\n\t * @example\n\t * \tTo create a document by converting it from the Page Builder to\n\t * \tCore api format\n\t *\n\t * \t```js\n\t * \timport { DocumentLegacy, UIDContentType } from '@prismicio/types-internal/lib/content';\n\t *\n\t * \tconst document = {\n\t * \ttitle: 'A new document',\n\t * \tcustom_type_id: 'home-page',\n\t * \tlocale: 'en-gb',\n\t * \tintegration_field_ids: [],\n\t * \ttags: [],\n\t * \tdata: DocumentLegacy.encode({\n\t * \tuid: {\n\t * \t__TYPE__: UIDContentType,\n\t * \tvalue: 'home-page',\n\t * \t},\n\t * \t})\n\t * \t}\n\t * \tawait repository.createDocument(document, 'published');\n\t * \t* ```\n\t * \t```\n\t *\n\t * \t@returns\n\t *\n\t * \t@param document - in the core api format.\n\t *\n\t * \t@param status - status of the document, if published, the function will\n\t * \twait for a new content api master ref to be created\n\t */\n\tasync createDocument(\n\t\tdocument: CoreApiDocumentCreationPayload,\n\t\tstatus: \"draft\" | \"published\",\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst result = await this.coreApiClient.createDraft(document)\n\n\t\tlet message = `Document created with id '${result.id}'`\n\t\tif (status === \"published\") {\n\t\t\tconst contentApi = this.getContentApiClient()\n\t\t\tconst masterRef = await contentApi.getMasterRef()\n\t\t\tawait this.coreApiClient.publishDraft(result.id)\n\t\t\tawait expect\n\t\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\t\ttimeout: 10_000,\n\t\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t\t})\n\t\t\t\t.not.toBe(masterRef)\n\t\t\tmessage += \", status 'published' and new master ref available\"\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage,\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Updates an existing document using the core api by creating a new draft version on top of the\n\t * given base version. If the status is published, the function will, unless disabled, wait for a\n\t * new content api master ref to be created.\n\t *\n\t * @param documentId - The id of the document to update.\n\t * @param data - The new version payload in the core api format.\n\t * @param baseVersionId - The id of the version the draft is created from.\n\t * @param status - Status of the new version, if published, the function will wait for a new\n\t * content api master ref to be created.\n\t * @param options - Additional options.\n\t * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master\n\t * ref to be available (default false). Set to true to return without waiting for the\n\t * projection.\n\t * @returns The updated document, including the new version's id.\n\t */\n\tasync updateDocument(\n\t\tdocumentId: string,\n\t\tdata: CoreApiDocumentUpdatePayload,\n\t\tbaseVersionId: string,\n\t\tstatus: \"draft\" | \"published\",\n\t\toptions: { skipMasterRefWait?: boolean } = {},\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst { skipMasterRefWait = false } = options\n\t\tconst profiler = logger.startTimer()\n\t\tconst result = await this.coreApiClient.updateDraft(documentId, data, baseVersionId)\n\n\t\tlet message = `Document '${documentId}' updated`\n\t\tif (status === \"published\") {\n\t\t\tif (skipMasterRefWait) {\n\t\t\t\tawait this.coreApiClient.publishDraft(documentId)\n\t\t\t\tmessage += \", status 'published'\"\n\t\t\t} else {\n\t\t\t\tconst contentApi = this.getContentApiClient()\n\t\t\t\tconst masterRef = await contentApi.getMasterRef()\n\t\t\t\tawait this.coreApiClient.publishDraft(documentId)\n\t\t\t\tawait expect\n\t\t\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\t\t\ttimeout: 10_000,\n\t\t\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t\t\t})\n\t\t\t\t\t.not.toBe(masterRef)\n\t\t\t\tmessage += \", status 'published' and new master ref available\"\n\t\t\t}\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage,\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Unpublishes (archives) a live document using the core api. Unless disabled, waits for a new\n\t * content api master ref to be available.\n\t *\n\t * @param documentId - The id of the document to unpublish.\n\t * @param options - Additional options.\n\t * @param options.skipMasterRefWait - Skip waiting for a new content api master ref to be\n\t * available (default false). Set to true to return without waiting for the projection.\n\t */\n\tasync unpublishDocument(\n\t\tdocumentId: string,\n\t\toptions: { skipMasterRefWait?: boolean } = {},\n\t): Promise<void> {\n\t\tconst { skipMasterRefWait = false } = options\n\t\tconst profiler = logger.startTimer()\n\n\t\tif (skipMasterRefWait) {\n\t\t\tawait this.coreApiClient.unpublishDocument(documentId)\n\t\t\tprofiler.done({ message: `Document '${documentId}' unpublished` })\n\n\t\t\treturn\n\t\t}\n\n\t\tconst contentApi = this.getContentApiClient()\n\t\tconst masterRef = await contentApi.getMasterRef()\n\t\tawait this.coreApiClient.unpublishDocument(documentId)\n\t\tawait expect\n\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\ttimeout: 10_000,\n\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t})\n\t\t\t.not.toBe(masterRef)\n\n\t\tprofiler.done({\n\t\t\tmessage: `Document '${documentId}' unpublished and new master ref available`,\n\t\t})\n\t}\n\n\t/**\n\t * Retrieves data for a specific document version.\n\t *\n\t * @param versionId - The document's version ID.\n\t * @returns The document's version data.\n\t */\n\tasync getDocumentData(versionId: string): Promise<CoreApiDocumentData> {\n\t\treturn await this.coreApiClient.getDocumentData(versionId)\n\t}\n\n\tasync setupIntegrationFields(integrationFields: IntegrationFieldConfig[]): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tif (!this.integrationFieldsClient) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Integration Fields client not found. Did you provide a integration fields api url in the configuration?\",\n\t\t\t)\n\t\t}\n\n\t\tawait this.integrationFieldsClient.setupIntegrationFields(integrationFields)\n\t\tprofiler.done({\n\t\t\tmessage: `Integration Fields setup`,\n\t\t})\n\t}\n}\n\nexport type RepositoryConfig = {\n\tcustomLocale?: CustomLocale\n\tlocales?: string[]\n\tdefaultLocale?: string\n\tslices?: SharedSliceModel[]\n\tcustomTypes?: DynamicCustomTypeModel[]\n\tpreview?: Preview\n\tsimulatorURL?: string\n\trolePerLocal?: boolean\n\tcustomRoles?: boolean\n\tintegrationFields?: IntegrationFieldConfig[]\n}\n\nexport type Preview = {\n\tname: string\n\twebsiteURL: string\n\tresolverPath: string\n}\n\nexport type CustomLocale = {\n\tlang: {\n\t\tlabel: string\n\t\tid: string\n\t\tuseStandardAnalyzer?: boolean\n\t}\n\tregion: {\n\t\tlabel: string\n\t\tid: string\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"repository.cjs","names":["getRepositoryUrl","ContentApiClient","logger","expect"],"sources":["../../src/managers/repository.ts"],"sourcesContent":["import { expect } from \"@playwright/test\"\nimport type { DynamicCustomTypeModel, SharedSliceModel } from \"@prismicio/types-internal\"\nimport type { AxiosResponse } from \"axios\"\n\nimport type { AssetApiClient } from \"../clients/assetApi\"\nimport type { AuthenticationApiClient } from \"../clients/authenticationApi\"\nimport { ContentApiClient } from \"../clients/contentApi\"\nimport type {\n\tCoreApiClient,\n\tCoreApiDocumentCreationPayload,\n\tCoreApiDocumentCreationResponse,\n\tCoreApiDocumentData,\n\tCoreApiDocumentsPayload,\n\tCoreApiDocumentsResponse,\n\tCoreApiDocumentUpdatePayload,\n\tRelease,\n} from \"../clients/coreApi\"\nimport type { CustomTypesApiClient } from \"../clients/customTypesApi\"\nimport type { IntegrationFieldsClient } from \"../clients/integrationFields\"\nimport type { ManageV2Client } from \"../clients/manageV2\"\nimport type { MigrationApiClient } from \"../clients/migrationApi\"\nimport type { WroomClient } from \"../clients/wroom\"\nimport type { IntegrationFieldConfig } from \"../types\"\nimport { logHttpResponse, logger } from \"../utils/log\"\nimport { getRepositoryUrl } from \"../utils/urls\"\n\n/** Utility to manage test data for a Prismic repository */\nexport class RepositoryManager {\n\tconstructor(\n\t\treadonly name: string,\n\t\tprivate readonly coreApiClient: CoreApiClient,\n\t\tprivate readonly authApiClient: AuthenticationApiClient,\n\t\tprivate readonly wroomClient: WroomClient,\n\t\tprivate readonly customTypesApiClient: CustomTypesApiClient,\n\t\tprivate readonly migrationApiClient: MigrationApiClient | undefined,\n\t\tprivate readonly assetApiClient: AssetApiClient,\n\t\tprivate readonly manageV2Client: ManageV2Client,\n\t\tprivate readonly integrationFieldsClient: IntegrationFieldsClient | undefined,\n\t) {}\n\n\tasync configure(config: RepositoryConfig): Promise<void> {\n\t\tconst hasLangConfig = config.defaultLocale || config.locales || config.customLocale\n\t\tif (hasLangConfig) {\n\t\t\tconst languages = await this.coreApiClient.getLanguages()\n\t\t\tlet updateDefaultLocaleAtTheEnd = false\n\t\t\t// if no locale exists on repo, the master locale needs to be set first\n\t\t\tif (config.defaultLocale) {\n\t\t\t\tconst master = languages.find(({ is_master }) => is_master === true)\n\t\t\t\tif (!master) {\n\t\t\t\t\tawait this.setDefaultLocale(config.defaultLocale, \"create\")\n\t\t\t\t} else if (master.id !== config.defaultLocale) {\n\t\t\t\t\t// update the master lang at the end, after it is created.\n\t\t\t\t\tupdateDefaultLocaleAtTheEnd = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.locales) {\n\t\t\t\t// No need to add default locale and already existing languages\n\t\t\t\tconst localesToAdd = config.locales.filter(\n\t\t\t\t\t(id) => !languages.some((language) => language.id === id),\n\t\t\t\t)\n\t\t\t\tif (localesToAdd.length > 0) {\n\t\t\t\t\tawait this.createLocales(localesToAdd)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.customLocale) {\n\t\t\t\tif (!languages.find(({ id }) => id === config.customLocale?.lang.id)) {\n\t\t\t\t\tawait this.createCustomLocale(config.customLocale)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.defaultLocale && updateDefaultLocaleAtTheEnd) {\n\t\t\t\tawait this.setDefaultLocale(config.defaultLocale, \"update\")\n\t\t\t}\n\t\t}\n\n\t\tif (config.slices) {\n\t\t\tawait this.createSlices(config.slices)\n\t\t}\n\n\t\tif (config.customTypes) {\n\t\t\tawait this.createCustomTypes(config.customTypes)\n\t\t}\n\n\t\tif (config.preview) {\n\t\t\tawait this.createPreview(config.preview)\n\t\t}\n\n\t\tif (config.simulatorURL) {\n\t\t\tawait this.setSimulatorURL(config.simulatorURL)\n\t\t}\n\n\t\tif (config.rolePerLocal) {\n\t\t\tawait this.toggleRolePerLocal(true)\n\t\t}\n\n\t\tif (config.customRoles) {\n\t\t\tawait this.toggleCustomRoles(true)\n\t\t}\n\n\t\tif (config.integrationFields) {\n\t\t\tawait this.toggleIntegrationFields(true)\n\t\t\tawait this.setupIntegrationFields(config.integrationFields)\n\t\t}\n\t}\n\n\t/** @returns The repository base url, like https://my-repo.prismic.io */\n\tgetBaseURL(): string {\n\t\treturn getRepositoryUrl(this.wroomClient.getBaseURL(), this.name)\n\t}\n\n\t/** @returns The repository base cdn url, like https://my-repo.cdn.prismic.io */\n\tgetBaseCdnURL(): string {\n\t\treturn getRepositoryUrl(this.wroomClient.getBaseURL(), `${this.name}.cdn`)\n\t}\n\n\t/**\n\t * @returns A Content Type api client configured to target the repository CDN url. Uses Playwright\n\t * for requests so if your project uses Playwright too, any network request will be present in\n\t * Playwright test reports.\n\t */\n\tgetContentApiClient(config?: { version?: \"v1\" | \"v2\"; accessToken?: string }): ContentApiClient {\n\t\treturn new ContentApiClient(this.getBaseCdnURL(), config)\n\t}\n\n\t/**\n\t * @returns An instance of the Migration api client, see\n\t * https://prismic.io/docs/migration-api-technical-reference\n\t */\n\tgetMigrationApiClient(): MigrationApiClient {\n\t\tif (!this.migrationApiClient) {\n\t\t\tthrow \"No client found for the migration api. Did you provide a migration api url in the configuration?\"\n\t\t}\n\n\t\treturn this.migrationApiClient\n\t}\n\n\t/**\n\t * @returns An instance of the Asset api client, see\n\t * https://prismic.io/docs/asset-api-technical-reference\n\t */\n\tgetAssetApiClient(): AssetApiClient {\n\t\treturn this.assetApiClient\n\t}\n\n\t/** @returns The Wroom commit hash deployed on the current repository */\n\tasync getDeployedVersion(): Promise<string | undefined> {\n\t\tconst response = await this.wroomClient.get(\n\t\t\tthis.name,\n\t\t\t\"underground/834b34f16f451e00f268dd5c8c81d16e3c020275\",\n\t\t)\n\n\t\t// Somehow axios directly parses the text response `Prismic version: <commit hash> into a version attribute\n\t\treturn response.data.version\n\t}\n\n\t/**\n\t * Set additional standard locales for a repository in Wroom, does not fail if the locales already\n\t * exist.\n\t *\n\t * @param locales - An array of all locales to be added to the repository.\n\t * @throws Error if setting the locales fails.\n\t */\n\tasync createLocales(locales: string[]): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/settings/multilanguages\", {\n\t\t\tlanguages: locales,\n\t\t})\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 || (status === 400 && (data as string).includes(\"already existing languages\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not add locales ${locales.join(\", \")}`)\n\t\t}\n\t\tprofiler.done({ message: `locales '${locales}' created` })\n\t}\n\n\t/**\n\t * Set additional custom locale for a repository in Wroom, does not fail if the locales already\n\t * exist.\n\t *\n\t * @param locale - The locale to be added to the repository.\n\t * @throws Error if setting the locale fails.\n\t */\n\tasync createCustomLocale(locale: CustomLocale): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t\"app/settings/multilanguages/custom\",\n\t\t\tlocale,\n\t\t)\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 || (status === 400 && JSON.stringify(data).includes(\"code is already used\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not create custom locale ${locale}`)\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage: `custom locale ${JSON.stringify(locale)} created`,\n\t\t})\n\t}\n\n\tprivate failIfNot200(response: AxiosResponse, msg: string) {\n\t\tif (response.status !== 200) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(msg)\n\t\t}\n\t}\n\n\t/**\n\t * Delete a locale from a repository.\n\t *\n\t * @param locale - Locale to remove from the repository configuration.\n\t * @throws Error if deleting the locale fails.\n\t */\n\tasync deleteLocale(locale: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`app/settings/multilanguages/${locale}/delete`,\n\t\t)\n\t\tthis.failIfNot200(response, `Could not delete locale ${locale}`)\n\t\tprofiler.done({ message: `locale '${locale}' deleted` })\n\t}\n\n\t/**\n\t * Create or update the default (master) locale for a repository in Wroom, the locale needs to\n\t * exist in the repository.\n\t *\n\t * @param locale - The locale to be set as the default.\n\t * @param endpoint - \"createMasterLang\" to create it, \"defineAsMaster\" to update it.\n\t * @throws Error if setting the default locale fails.\n\t */\n\tasync setDefaultLocale(locale: string, action: \"create\" | \"update\"): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst endpoint = {\n\t\t\tcreate: \"createMasterLang\",\n\t\t\tupdate: \"defineAsMaster\",\n\t\t}\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`/app/settings/multilanguages/${locale}/${endpoint[action]}`,\n\t\t)\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 ||\n\t\t\t(status === 400 &&\n\t\t\t\t// returns 400 if master lang is already set\n\t\t\t\tJSON.stringify(data).includes(\"Unable to set as master language\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not set default locale to ${locale}`)\n\t\t}\n\t\tprofiler.done({ message: `default locale set to '${locale}'` })\n\t}\n\n\t/**\n\t * Retrieves documents.\n\t *\n\t * @param args - Configure which documents are retrieved.\n\t * @returns A paginated set of documents.\n\t */\n\tasync getDocuments(args: CoreApiDocumentsPayload): Promise<CoreApiDocumentsResponse> {\n\t\treturn this.coreApiClient.getDocuments(args)\n\t}\n\n\t/**\n\t * Creates a release.\n\t *\n\t * @param label - The label for the release.\n\t * @returns A Promise that resolves when the release is created.\n\t */\n\tasync createRelease(label: string): Promise<{ id: string }> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/releases\", {\n\t\t\tlabel,\n\t\t})\n\t\tthis.failIfNot200(response, `Could not create release ${label}`)\n\t\tprofiler.done({ message: `release '${label}' created` })\n\n\t\treturn response.data\n\t}\n\n\t/**\n\t * Retrieves the migration release.\n\t *\n\t * @returns The migration relese metadata.\n\t */\n\tasync getMigrationRelease(): Promise<Release> {\n\t\tconst releases = await this.coreApiClient.getReleases()\n\t\tconst migrationRelease = releases.find((release) => release.migration)\n\t\tif (!migrationRelease) {\n\t\t\tthrow new Error(`The repository does not have a migration release`)\n\t\t}\n\n\t\treturn migrationRelease\n\t}\n\n\t/**\n\t * Publishes a release.\n\t *\n\t * @param id - The ID of the release.\n\t * @returns A Promise that resolves when the release is published and a new master ref is\n\t * available.\n\t */\n\tasync publishRelease(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst contentApi = this.getContentApiClient()\n\t\tconst masterRef = await contentApi.getMasterRef()\n\t\tawait this.coreApiClient.publishRelease(id)\n\t\tawait this.waitForNewMasterRef(contentApi, masterRef)\n\n\t\tprofiler.done({\n\t\t\tmessage: `release '${id}' published and new master ref available`,\n\t\t})\n\t}\n\n\t/**\n\t * Deletes a repository release.\n\t *\n\t * @param id - The ID of the release to be deleted.\n\t */\n\tasync deleteRelease(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `app/releases/${id}/delete`, {})\n\n\t\tthis.failIfNot200(response, `Could not delete release with id ${id}`)\n\t\tprofiler.done({ message: `release '${id}' deleted` })\n\t}\n\n\t/**\n\t * Creates a preview for a repository.\n\t *\n\t * @param data - The data for creating the preview.\n\t */\n\tasync createPreview(data: Preview): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `previews/new`, data)\n\n\t\tthis.failIfNot200(response, `Could not create preview ${data.name}`)\n\t\tprofiler.done({ message: `preview '${data.name}' created` })\n\n\t\treturn response.data\n\t}\n\n\t/**\n\t * Set the simulator URL (table of slices) for a repository.\n\t *\n\t * @param data - The simulator URL to set.\n\t */\n\tasync setSimulatorURL(simulatorURL: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst repository = await this.coreApiClient.getRepository()\n\t\tawait this.coreApiClient.updateRepository({\n\t\t\t...repository,\n\t\t\tsimulator_url: simulatorURL,\n\t\t})\n\n\t\tprofiler.done({\n\t\t\tmessage: `simulator preview '${simulatorURL}' created`,\n\t\t})\n\t}\n\n\t/**\n\t * Deletes a preview from a repository.\n\t *\n\t * @param id - The ID of the preview to be deleted.\n\t */\n\tasync deletePreview(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `previews/delete/${id}`, {})\n\n\t\tthis.failIfNot200(response, `Could not delete preview with id ${id}`)\n\t\tprofiler.done({ message: `preview '${id}' deleted` })\n\t}\n\n\t/**\n\t * Create a webhook.\n\t *\n\t * @returns A Promise that resolves with the webhook id.\n\t */\n\tasync createWebhook(\n\t\tname: string,\n\t\turl: string,\n\t\tsecret: string,\n\t\ttriggers: {\n\t\t\tdocumentsPublished?: boolean\n\t\t\tdocumentsUnpublished?: boolean\n\t\t\treleasesCreated?: boolean\n\t\t\treleasesUpdated?: boolean\n\t\t\ttagsCreated?: boolean\n\t\t\ttagsDeleted?: boolean\n\t\t},\n\t\tactive: boolean,\n\t): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/settings/webhooks/create\", {\n\t\t\tname,\n\t\t\turl,\n\t\t\tsecret,\n\t\t\tactive: active ? \"on\" : \"off\",\n\t\t\t...triggers,\n\t\t})\n\t\tthis.failIfNot200(response, `Could not create webhook ${name}`)\n\t\tprofiler.done({ message: `webhook '${name}' created` })\n\n\t\treturn response.data.created\n\t}\n\n\t/**\n\t * Deletes a webhook.\n\t *\n\t * @param id - The webhook ID.\n\t */\n\tasync deleteWebhook(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`app/settings/webhooks/${id}/delete`,\n\t\t\t{},\n\t\t)\n\n\t\tthis.failIfNot200(response, `Could not delete webhook with id ${id}`)\n\t\tprofiler.done({ message: `webhook '${id}' deleted` })\n\t}\n\n\t/**\n\t * Create Custom Types using the Custom types api.\n\t *\n\t * @param customTypes\n\t */\n\tasync createCustomTypes(customTypes: DynamicCustomTypeModel[]): Promise<void> {\n\t\tawait this.customTypesApiClient.createCustomTypes(customTypes)\n\t}\n\n\tasync deleteCustomType(customTypeId: string): Promise<void> {\n\t\tawait this.customTypesApiClient.deleteCustomType(customTypeId)\n\t}\n\n\t/**\n\t * Create slices using the Custom types api.\n\t *\n\t * @param slices\n\t */\n\tasync createSlices(slices: SharedSliceModel[]): Promise<void> {\n\t\tawait this.customTypesApiClient.createSlices(slices)\n\t}\n\n\t/**\n\t * Create an access token to query private items of the Content api.\n\t *\n\t * @param appName - Mandatory authorized application name\n\t * @param tokenScope - Access token scope. Use \"master\" to when your content api is fully private\n\t * or \"master+releases\" to access private releases\n\t */\n\tasync createContentAPIToken(\n\t\tappName: string,\n\t\ttokenScope: \"master\" | \"master+releases\" = \"master\",\n\t): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\t\ttype AuthorizedAppResponse = {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\twroom_auths: { token: string; scope: \"master\" | \"master+releases\" }[]\n\t\t}\n\t\tconst existingApps: AxiosResponse<AuthorizedAppResponse[]> = await this.wroomClient.get(\n\t\t\tthis.name,\n\t\t\t\"settings/security/contentapi\",\n\t\t)\n\n\t\tthis.failIfNot200(\n\t\t\texistingApps,\n\t\t\t`Could not get status of existing applications to generate a content api token`,\n\t\t)\n\t\tlet app = existingApps.data.find(({ name, wroom_auths }) => {\n\t\t\treturn name === appName && wroom_auths.length > 0\n\t\t})\n\n\t\tif (!app) {\n\t\t\tconst response: AxiosResponse<AuthorizedAppResponse> = await this.wroomClient.post(\n\t\t\t\tthis.name,\n\t\t\t\t\"settings/security/oauthapp\",\n\t\t\t\t{\n\t\t\t\t\tapp_name: appName,\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tthis.failIfNot200(response, `Could not create content api app ${appName}`)\n\t\t\tapp = response.data\n\t\t}\n\n\t\tlet tokenInfo = app.wroom_auths.find(({ scope }) => scope === tokenScope)\n\t\tif (!tokenInfo) {\n\t\t\tconst response = await this.wroomClient.post(this.name, \"settings/security/authorizations\", {\n\t\t\t\tapp: app.id,\n\t\t\t\tscope: tokenScope,\n\t\t\t})\n\t\t\tthis.failIfNot200(\n\t\t\t\tresponse,\n\t\t\t\t`Could not create content api access token for app ${appName} with scope ${tokenScope}`,\n\t\t\t)\n\t\t\ttokenInfo = response.data\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage: `content api access token for app '${appName}' created`,\n\t\t})\n\n\t\tif (!tokenInfo?.token) {\n\t\t\tthrow `Could not create content api access token for app ${appName} with scope ${tokenScope}`\n\t\t}\n\n\t\treturn tokenInfo.token\n\t}\n\n\t/** Create a permanent access token to authenticate to Prismic public apis. */\n\tasync createPermanentAccessToken(): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst token = await this.authApiClient.getMachine2MachineToken(this.name)\n\n\t\tprofiler.done({\n\t\t\tmessage: `machine2machine token created`,\n\t\t})\n\n\t\treturn token\n\t}\n\n\t/**\n\t * Toggle the Role per Locale workflow\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleRolePerLocal(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleRolePerLocal({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Role per local for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Role per local ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Toggle the Custom Roles workflow\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleCustomRoles(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleCustomRoles({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Custom Roles for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Custom Roles ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Toggle the Integration Fields feature\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleIntegrationFields(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleIntegrationFields({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Integration Fields for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Integration Fields ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Change the Repository Plan\n\t *\n\t * @param {string} newPlanId - The Id of the new Plan to apply\n\t */\n\tasync changePlan(newPlanId: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.changePlan({\n\t\t\trepository: this.name,\n\t\t\tnewPlanId: newPlanId,\n\t\t\tbypassManualBilling: true, // For now the library does not support Stripe features\n\t\t})\n\n\t\tthis.failIfNot200(response, \"Could not change the Repository Plan\")\n\t\tprofiler.done({\n\t\t\tmessage: `Repository Plan changed to ${newPlanId}`,\n\t\t})\n\t}\n\n\t/**\n\t * Add a new user to the repository\n\t *\n\t * @param {string} email - The email of the user\n\t */\n\tasync addUser(email: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.addUserToRepository({\n\t\t\trepository: this.name,\n\t\t\temail: email,\n\t\t})\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 ||\n\t\t\t(status === 409 && JSON.stringify(data).includes(\"already a member of the repo\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not add a new user ${email} to the repository`)\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage: `User ${email} was added to the repository`,\n\t\t})\n\t}\n\n\t/**\n\t * Remove a user from the repository\n\t *\n\t * @param {string} email - The email of the user\n\t */\n\tasync removeUser(email: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.removeUserFromRepository({\n\t\t\trepository: this.name,\n\t\t\temail: email,\n\t\t})\n\n\t\tthis.failIfNot200(response, `Could not remove the user ${email} from the repository`)\n\t\tprofiler.done({\n\t\t\tmessage: `User ${email} was removed from the repository`,\n\t\t})\n\t}\n\n\t/**\n\t * Update the role of a user in a repository\n\t *\n\t * @param {string} email - The email of the user\n\t * @param {string | Record<string, string>} role - The new Role of the user, either a string for\n\t * basic workflow or an object such as `{ \"lang_id\": \"Writer\" }`\n\t *\n\t * Example of roles are\n\t *\n\t * - Administrator\n\t * - Writer\n\t * - Contributor\n\t * - Manager (publisher)\n\t */\n\tasync updateUserRole(email: string, role: string | Record<string, string>): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response =\n\t\t\ttypeof role === \"string\"\n\t\t\t\t? await this.wroomClient.updateRole(this.name, email, role)\n\t\t\t\t: await this.wroomClient.updateRolePerLocal(this.name, email, role)\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not update the ${\n\t\t\t\ttypeof role === \"string\" ? \"role\" : \"rolePerLocal\"\n\t\t\t} of the user ${email}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Updated User's ${\n\t\t\t\ttypeof role === \"string\" ? \"role\" : \"rolePerLocal\"\n\t\t\t} for user ${email}`,\n\t\t})\n\t}\n\n\t/**\n\t * Creates a document using the core api. If the Core api format is too specific, use the\n\t * migration api client to create a document with the MigrationApiClient. See the\n\t * `getMigrationApiClient()` method.\n\t *\n\t * @example\n\t * \tTo create a document by converting it from the Page Builder to\n\t * \tCore api format\n\t *\n\t * \t```js\n\t * \timport { DocumentLegacy, UIDContentType } from '@prismicio/types-internal/lib/content';\n\t *\n\t * \tconst document = {\n\t * \ttitle: 'A new document',\n\t * \tcustom_type_id: 'home-page',\n\t * \tlocale: 'en-gb',\n\t * \tintegration_field_ids: [],\n\t * \ttags: [],\n\t * \tdata: DocumentLegacy.encode({\n\t * \tuid: {\n\t * \t__TYPE__: UIDContentType,\n\t * \tvalue: 'home-page',\n\t * \t},\n\t * \t})\n\t * \t}\n\t * \tawait repository.createDocument(document, 'published');\n\t * \t* ```\n\t * \t```\n\t *\n\t * \t@returns\n\t *\n\t * \t@param document - in the core api format.\n\t *\n\t * \t@param status - status of the document, if published, the function will\n\t * \twait for a new content api master ref to be created\n\t */\n\tasync createDocument(\n\t\tdocument: CoreApiDocumentCreationPayload,\n\t\tstatus: \"draft\" | \"published\",\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst result = await this.coreApiClient.createDraft(document)\n\n\t\tlet message = `Document created with id '${result.id}'`\n\t\tif (status === \"published\") {\n\t\t\tconst contentApi = this.getContentApiClient()\n\t\t\tconst masterRef = await contentApi.getMasterRef()\n\t\t\tawait this.coreApiClient.publishDraft(result.id)\n\t\t\tawait this.waitForNewMasterRef(contentApi, masterRef)\n\t\t\tmessage += \", status 'published' and new master ref available\"\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage,\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Updates an existing document using the core api by creating a new draft version on top of the\n\t * given base version. If the status is published, the function will, unless disabled, wait for a\n\t * new content api master ref to be created.\n\t *\n\t * @param documentId - The id of the document to update.\n\t * @param data - The new version payload in the core api format.\n\t * @param baseVersionId - The id of the version the draft is created from.\n\t * @param status - Status of the new version, if published, the function will wait for a new\n\t * content api master ref to be created.\n\t * @param options - Additional options.\n\t * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master\n\t * ref to be available (default false). Set to true to return without waiting for the\n\t * projection.\n\t * @returns The updated document, including the new version's id. When publishing, the document is\n\t * retrieved again after publication so that the returned versions reflect the published state.\n\t */\n\tasync updateDocument(\n\t\tdocumentId: string,\n\t\tdata: CoreApiDocumentUpdatePayload,\n\t\tbaseVersionId: string,\n\t\tstatus: \"draft\" | \"published\",\n\t\toptions: { skipMasterRefWait?: boolean } = {},\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst { skipMasterRefWait = false } = options\n\t\tconst profiler = logger.startTimer()\n\t\tconst draft = await this.coreApiClient.updateDraft(documentId, data, baseVersionId)\n\n\t\tif (status === \"draft\") {\n\t\t\tprofiler.done({ message: `Document '${documentId}' updated` })\n\n\t\t\treturn draft\n\t\t}\n\n\t\tlet message = `Document '${documentId}' updated, status 'published'`\n\t\tif (skipMasterRefWait) {\n\t\t\tawait this.coreApiClient.publishDraft(documentId)\n\t\t} else {\n\t\t\tconst contentApi = this.getContentApiClient()\n\t\t\tconst masterRef = await contentApi.getMasterRef()\n\t\t\tawait this.coreApiClient.publishDraft(documentId)\n\t\t\tawait this.waitForNewMasterRef(contentApi, masterRef)\n\t\t\tmessage += \" and new master ref available\"\n\t\t}\n\n\t\tconst { results } = await this.coreApiClient.getDocuments({\n\t\t\tdocumentIds: [documentId],\n\t\t\tlimit: 1,\n\t\t})\n\t\tconst publishedDocument = results[0]\n\t\tif (!publishedDocument) {\n\t\t\tthrow new Error(`Could not retrieve document '${documentId}' after publication`)\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage,\n\t\t})\n\n\t\treturn publishedDocument\n\t}\n\n\t/**\n\t * Unpublishes (archives) a live document using the core api. Unless disabled, waits for a new\n\t * content api master ref to be available.\n\t *\n\t * @param documentId - The id of the document to unpublish.\n\t * @param options - Additional options.\n\t * @param options.skipMasterRefWait - Skip waiting for a new content api master ref to be\n\t * available (default false). Set to true to return without waiting for the projection.\n\t */\n\tasync unpublishDocument(\n\t\tdocumentId: string,\n\t\toptions: { skipMasterRefWait?: boolean } = {},\n\t): Promise<void> {\n\t\tconst { skipMasterRefWait = false } = options\n\t\tconst profiler = logger.startTimer()\n\n\t\tif (skipMasterRefWait) {\n\t\t\tawait this.coreApiClient.unpublishDocument(documentId)\n\t\t\tprofiler.done({ message: `Document '${documentId}' unpublished` })\n\n\t\t\treturn\n\t\t}\n\n\t\tconst contentApi = this.getContentApiClient()\n\t\tconst masterRef = await contentApi.getMasterRef()\n\t\tawait this.coreApiClient.unpublishDocument(documentId)\n\t\tawait this.waitForNewMasterRef(contentApi, masterRef)\n\n\t\tprofiler.done({\n\t\t\tmessage: `Document '${documentId}' unpublished and new master ref available`,\n\t\t})\n\t}\n\n\t/**\n\t * Retrieves data for a specific document version.\n\t *\n\t * @param versionId - The document's version ID.\n\t * @returns The document's version data.\n\t */\n\tasync getDocumentData(versionId: string): Promise<CoreApiDocumentData> {\n\t\treturn await this.coreApiClient.getDocumentData(versionId)\n\t}\n\n\tasync setupIntegrationFields(integrationFields: IntegrationFieldConfig[]): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tif (!this.integrationFieldsClient) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Integration Fields client not found. Did you provide a integration fields api url in the configuration?\",\n\t\t\t)\n\t\t}\n\n\t\tawait this.integrationFieldsClient.setupIntegrationFields(integrationFields)\n\t\tprofiler.done({\n\t\t\tmessage: `Integration Fields setup`,\n\t\t})\n\t}\n\n\tprivate async waitForNewMasterRef(\n\t\tcontentApi: ContentApiClient,\n\t\tpreviousMasterRef: string,\n\t): Promise<void> {\n\t\tawait expect\n\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\ttimeout: 10_000,\n\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t})\n\t\t\t.not.toBe(previousMasterRef)\n\t}\n}\n\nexport type RepositoryConfig = {\n\tcustomLocale?: CustomLocale\n\tlocales?: string[]\n\tdefaultLocale?: string\n\tslices?: SharedSliceModel[]\n\tcustomTypes?: DynamicCustomTypeModel[]\n\tpreview?: Preview\n\tsimulatorURL?: string\n\trolePerLocal?: boolean\n\tcustomRoles?: boolean\n\tintegrationFields?: IntegrationFieldConfig[]\n}\n\nexport type Preview = {\n\tname: string\n\twebsiteURL: string\n\tresolverPath: string\n}\n\nexport type CustomLocale = {\n\tlang: {\n\t\tlabel: string\n\t\tid: string\n\t\tuseStandardAnalyzer?: boolean\n\t}\n\tregion: {\n\t\tlabel: string\n\t\tid: string\n\t}\n}\n"],"mappings":"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"}
@@ -280,7 +280,8 @@ declare class RepositoryManager {
280
280
  * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master
281
281
  * ref to be available (default false). Set to true to return without waiting for the
282
282
  * projection.
283
- * @returns The updated document, including the new version's id.
283
+ * @returns The updated document, including the new version's id. When publishing, the document is
284
+ * retrieved again after publication so that the returned versions reflect the published state.
284
285
  */
285
286
  updateDocument(documentId: string, data: CoreApiDocumentUpdatePayload, baseVersionId: string, status: "draft" | "published", options?: {
286
287
  skipMasterRefWait?: boolean;
@@ -305,6 +306,7 @@ declare class RepositoryManager {
305
306
  */
306
307
  getDocumentData(versionId: string): Promise<CoreApiDocumentData>;
307
308
  setupIntegrationFields(integrationFields: IntegrationFieldConfig[]): Promise<void>;
309
+ private waitForNewMasterRef;
308
310
  }
309
311
  type RepositoryConfig = {
310
312
  customLocale?: CustomLocale;
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.cts","names":[],"sources":["../../src/managers/repository.ts"],"mappings":"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"}
1
+ {"version":3,"file":"repository.d.cts","names":[],"sources":["../../src/managers/repository.ts"],"mappings":"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"}
@@ -280,7 +280,8 @@ declare class RepositoryManager {
280
280
  * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master
281
281
  * ref to be available (default false). Set to true to return without waiting for the
282
282
  * projection.
283
- * @returns The updated document, including the new version's id.
283
+ * @returns The updated document, including the new version's id. When publishing, the document is
284
+ * retrieved again after publication so that the returned versions reflect the published state.
284
285
  */
285
286
  updateDocument(documentId: string, data: CoreApiDocumentUpdatePayload, baseVersionId: string, status: "draft" | "published", options?: {
286
287
  skipMasterRefWait?: boolean;
@@ -305,6 +306,7 @@ declare class RepositoryManager {
305
306
  */
306
307
  getDocumentData(versionId: string): Promise<CoreApiDocumentData>;
307
308
  setupIntegrationFields(integrationFields: IntegrationFieldConfig[]): Promise<void>;
309
+ private waitForNewMasterRef;
308
310
  }
309
311
  type RepositoryConfig = {
310
312
  customLocale?: CustomLocale;
@@ -1 +1 @@
1
- {"version":3,"file":"repository.d.ts","names":[],"sources":["../../src/managers/repository.ts"],"mappings":"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"}
1
+ {"version":3,"file":"repository.d.ts","names":[],"sources":["../../src/managers/repository.ts"],"mappings":"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"}
@@ -206,10 +206,7 @@ var RepositoryManager = class {
206
206
  const contentApi = this.getContentApiClient();
207
207
  const masterRef = await contentApi.getMasterRef();
208
208
  await this.coreApiClient.publishRelease(id);
209
- await expect.poll(async () => contentApi.getMasterRef(), {
210
- timeout: 1e4,
211
- message: "Waiting for new master ref to be available"
212
- }).not.toBe(masterRef);
209
+ await this.waitForNewMasterRef(contentApi, masterRef);
213
210
  profiler.done({ message: `release '${id}' published and new master ref available` });
214
211
  }
215
212
  /**
@@ -500,10 +497,7 @@ var RepositoryManager = class {
500
497
  const contentApi = this.getContentApiClient();
501
498
  const masterRef = await contentApi.getMasterRef();
502
499
  await this.coreApiClient.publishDraft(result.id);
503
- await expect.poll(async () => contentApi.getMasterRef(), {
504
- timeout: 1e4,
505
- message: "Waiting for new master ref to be available"
506
- }).not.toBe(masterRef);
500
+ await this.waitForNewMasterRef(contentApi, masterRef);
507
501
  message += ", status 'published' and new master ref available";
508
502
  }
509
503
  profiler.done({ message });
@@ -523,28 +517,34 @@ var RepositoryManager = class {
523
517
  * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master
524
518
  * ref to be available (default false). Set to true to return without waiting for the
525
519
  * projection.
526
- * @returns The updated document, including the new version's id.
520
+ * @returns The updated document, including the new version's id. When publishing, the document is
521
+ * retrieved again after publication so that the returned versions reflect the published state.
527
522
  */
528
523
  async updateDocument(documentId, data, baseVersionId, status, options = {}) {
529
524
  const { skipMasterRefWait = false } = options;
530
525
  const profiler = logger.startTimer();
531
- const result = await this.coreApiClient.updateDraft(documentId, data, baseVersionId);
532
- let message = `Document '${documentId}' updated`;
533
- if (status === "published") if (skipMasterRefWait) {
534
- await this.coreApiClient.publishDraft(documentId);
535
- message += ", status 'published'";
536
- } else {
526
+ const draft = await this.coreApiClient.updateDraft(documentId, data, baseVersionId);
527
+ if (status === "draft") {
528
+ profiler.done({ message: `Document '${documentId}' updated` });
529
+ return draft;
530
+ }
531
+ let message = `Document '${documentId}' updated, status 'published'`;
532
+ if (skipMasterRefWait) await this.coreApiClient.publishDraft(documentId);
533
+ else {
537
534
  const contentApi = this.getContentApiClient();
538
535
  const masterRef = await contentApi.getMasterRef();
539
536
  await this.coreApiClient.publishDraft(documentId);
540
- await expect.poll(async () => contentApi.getMasterRef(), {
541
- timeout: 1e4,
542
- message: "Waiting for new master ref to be available"
543
- }).not.toBe(masterRef);
544
- message += ", status 'published' and new master ref available";
537
+ await this.waitForNewMasterRef(contentApi, masterRef);
538
+ message += " and new master ref available";
545
539
  }
540
+ const { results } = await this.coreApiClient.getDocuments({
541
+ documentIds: [documentId],
542
+ limit: 1
543
+ });
544
+ const publishedDocument = results[0];
545
+ if (!publishedDocument) throw new Error(`Could not retrieve document '${documentId}' after publication`);
546
546
  profiler.done({ message });
547
- return result;
547
+ return publishedDocument;
548
548
  }
549
549
  /**
550
550
  * Unpublishes (archives) a live document using the core api. Unless disabled, waits for a new
@@ -566,10 +566,7 @@ var RepositoryManager = class {
566
566
  const contentApi = this.getContentApiClient();
567
567
  const masterRef = await contentApi.getMasterRef();
568
568
  await this.coreApiClient.unpublishDocument(documentId);
569
- await expect.poll(async () => contentApi.getMasterRef(), {
570
- timeout: 1e4,
571
- message: "Waiting for new master ref to be available"
572
- }).not.toBe(masterRef);
569
+ await this.waitForNewMasterRef(contentApi, masterRef);
573
570
  profiler.done({ message: `Document '${documentId}' unpublished and new master ref available` });
574
571
  }
575
572
  /**
@@ -587,6 +584,12 @@ var RepositoryManager = class {
587
584
  await this.integrationFieldsClient.setupIntegrationFields(integrationFields);
588
585
  profiler.done({ message: `Integration Fields setup` });
589
586
  }
587
+ async waitForNewMasterRef(contentApi, previousMasterRef) {
588
+ await expect.poll(async () => contentApi.getMasterRef(), {
589
+ timeout: 1e4,
590
+ message: "Waiting for new master ref to be available"
591
+ }).not.toBe(previousMasterRef);
592
+ }
590
593
  };
591
594
  //#endregion
592
595
  export { RepositoryManager };
@@ -1 +1 @@
1
- {"version":3,"file":"repository.js","names":[],"sources":["../../src/managers/repository.ts"],"sourcesContent":["import { expect } from \"@playwright/test\"\nimport type { DynamicCustomTypeModel, SharedSliceModel } from \"@prismicio/types-internal\"\nimport type { AxiosResponse } from \"axios\"\n\nimport type { AssetApiClient } from \"../clients/assetApi\"\nimport type { AuthenticationApiClient } from \"../clients/authenticationApi\"\nimport { ContentApiClient } from \"../clients/contentApi\"\nimport type {\n\tCoreApiClient,\n\tCoreApiDocumentCreationPayload,\n\tCoreApiDocumentCreationResponse,\n\tCoreApiDocumentData,\n\tCoreApiDocumentsPayload,\n\tCoreApiDocumentsResponse,\n\tCoreApiDocumentUpdatePayload,\n\tRelease,\n} from \"../clients/coreApi\"\nimport type { CustomTypesApiClient } from \"../clients/customTypesApi\"\nimport type { IntegrationFieldsClient } from \"../clients/integrationFields\"\nimport type { ManageV2Client } from \"../clients/manageV2\"\nimport type { MigrationApiClient } from \"../clients/migrationApi\"\nimport type { WroomClient } from \"../clients/wroom\"\nimport type { IntegrationFieldConfig } from \"../types\"\nimport { logHttpResponse, logger } from \"../utils/log\"\nimport { getRepositoryUrl } from \"../utils/urls\"\n\n/** Utility to manage test data for a Prismic repository */\nexport class RepositoryManager {\n\tconstructor(\n\t\treadonly name: string,\n\t\tprivate readonly coreApiClient: CoreApiClient,\n\t\tprivate readonly authApiClient: AuthenticationApiClient,\n\t\tprivate readonly wroomClient: WroomClient,\n\t\tprivate readonly customTypesApiClient: CustomTypesApiClient,\n\t\tprivate readonly migrationApiClient: MigrationApiClient | undefined,\n\t\tprivate readonly assetApiClient: AssetApiClient,\n\t\tprivate readonly manageV2Client: ManageV2Client,\n\t\tprivate readonly integrationFieldsClient: IntegrationFieldsClient | undefined,\n\t) {}\n\n\tasync configure(config: RepositoryConfig): Promise<void> {\n\t\tconst hasLangConfig = config.defaultLocale || config.locales || config.customLocale\n\t\tif (hasLangConfig) {\n\t\t\tconst languages = await this.coreApiClient.getLanguages()\n\t\t\tlet updateDefaultLocaleAtTheEnd = false\n\t\t\t// if no locale exists on repo, the master locale needs to be set first\n\t\t\tif (config.defaultLocale) {\n\t\t\t\tconst master = languages.find(({ is_master }) => is_master === true)\n\t\t\t\tif (!master) {\n\t\t\t\t\tawait this.setDefaultLocale(config.defaultLocale, \"create\")\n\t\t\t\t} else if (master.id !== config.defaultLocale) {\n\t\t\t\t\t// update the master lang at the end, after it is created.\n\t\t\t\t\tupdateDefaultLocaleAtTheEnd = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.locales) {\n\t\t\t\t// No need to add default locale and already existing languages\n\t\t\t\tconst localesToAdd = config.locales.filter(\n\t\t\t\t\t(id) => !languages.some((language) => language.id === id),\n\t\t\t\t)\n\t\t\t\tif (localesToAdd.length > 0) {\n\t\t\t\t\tawait this.createLocales(localesToAdd)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.customLocale) {\n\t\t\t\tif (!languages.find(({ id }) => id === config.customLocale?.lang.id)) {\n\t\t\t\t\tawait this.createCustomLocale(config.customLocale)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.defaultLocale && updateDefaultLocaleAtTheEnd) {\n\t\t\t\tawait this.setDefaultLocale(config.defaultLocale, \"update\")\n\t\t\t}\n\t\t}\n\n\t\tif (config.slices) {\n\t\t\tawait this.createSlices(config.slices)\n\t\t}\n\n\t\tif (config.customTypes) {\n\t\t\tawait this.createCustomTypes(config.customTypes)\n\t\t}\n\n\t\tif (config.preview) {\n\t\t\tawait this.createPreview(config.preview)\n\t\t}\n\n\t\tif (config.simulatorURL) {\n\t\t\tawait this.setSimulatorURL(config.simulatorURL)\n\t\t}\n\n\t\tif (config.rolePerLocal) {\n\t\t\tawait this.toggleRolePerLocal(true)\n\t\t}\n\n\t\tif (config.customRoles) {\n\t\t\tawait this.toggleCustomRoles(true)\n\t\t}\n\n\t\tif (config.integrationFields) {\n\t\t\tawait this.toggleIntegrationFields(true)\n\t\t\tawait this.setupIntegrationFields(config.integrationFields)\n\t\t}\n\t}\n\n\t/** @returns The repository base url, like https://my-repo.prismic.io */\n\tgetBaseURL(): string {\n\t\treturn getRepositoryUrl(this.wroomClient.getBaseURL(), this.name)\n\t}\n\n\t/** @returns The repository base cdn url, like https://my-repo.cdn.prismic.io */\n\tgetBaseCdnURL(): string {\n\t\treturn getRepositoryUrl(this.wroomClient.getBaseURL(), `${this.name}.cdn`)\n\t}\n\n\t/**\n\t * @returns A Content Type api client configured to target the repository CDN url. Uses Playwright\n\t * for requests so if your project uses Playwright too, any network request will be present in\n\t * Playwright test reports.\n\t */\n\tgetContentApiClient(config?: { version?: \"v1\" | \"v2\"; accessToken?: string }): ContentApiClient {\n\t\treturn new ContentApiClient(this.getBaseCdnURL(), config)\n\t}\n\n\t/**\n\t * @returns An instance of the Migration api client, see\n\t * https://prismic.io/docs/migration-api-technical-reference\n\t */\n\tgetMigrationApiClient(): MigrationApiClient {\n\t\tif (!this.migrationApiClient) {\n\t\t\tthrow \"No client found for the migration api. Did you provide a migration api url in the configuration?\"\n\t\t}\n\n\t\treturn this.migrationApiClient\n\t}\n\n\t/**\n\t * @returns An instance of the Asset api client, see\n\t * https://prismic.io/docs/asset-api-technical-reference\n\t */\n\tgetAssetApiClient(): AssetApiClient {\n\t\treturn this.assetApiClient\n\t}\n\n\t/** @returns The Wroom commit hash deployed on the current repository */\n\tasync getDeployedVersion(): Promise<string | undefined> {\n\t\tconst response = await this.wroomClient.get(\n\t\t\tthis.name,\n\t\t\t\"underground/834b34f16f451e00f268dd5c8c81d16e3c020275\",\n\t\t)\n\n\t\t// Somehow axios directly parses the text response `Prismic version: <commit hash> into a version attribute\n\t\treturn response.data.version\n\t}\n\n\t/**\n\t * Set additional standard locales for a repository in Wroom, does not fail if the locales already\n\t * exist.\n\t *\n\t * @param locales - An array of all locales to be added to the repository.\n\t * @throws Error if setting the locales fails.\n\t */\n\tasync createLocales(locales: string[]): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/settings/multilanguages\", {\n\t\t\tlanguages: locales,\n\t\t})\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 || (status === 400 && (data as string).includes(\"already existing languages\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not add locales ${locales.join(\", \")}`)\n\t\t}\n\t\tprofiler.done({ message: `locales '${locales}' created` })\n\t}\n\n\t/**\n\t * Set additional custom locale for a repository in Wroom, does not fail if the locales already\n\t * exist.\n\t *\n\t * @param locale - The locale to be added to the repository.\n\t * @throws Error if setting the locale fails.\n\t */\n\tasync createCustomLocale(locale: CustomLocale): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t\"app/settings/multilanguages/custom\",\n\t\t\tlocale,\n\t\t)\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 || (status === 400 && JSON.stringify(data).includes(\"code is already used\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not create custom locale ${locale}`)\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage: `custom locale ${JSON.stringify(locale)} created`,\n\t\t})\n\t}\n\n\tprivate failIfNot200(response: AxiosResponse, msg: string) {\n\t\tif (response.status !== 200) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(msg)\n\t\t}\n\t}\n\n\t/**\n\t * Delete a locale from a repository.\n\t *\n\t * @param locale - Locale to remove from the repository configuration.\n\t * @throws Error if deleting the locale fails.\n\t */\n\tasync deleteLocale(locale: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`app/settings/multilanguages/${locale}/delete`,\n\t\t)\n\t\tthis.failIfNot200(response, `Could not delete locale ${locale}`)\n\t\tprofiler.done({ message: `locale '${locale}' deleted` })\n\t}\n\n\t/**\n\t * Create or update the default (master) locale for a repository in Wroom, the locale needs to\n\t * exist in the repository.\n\t *\n\t * @param locale - The locale to be set as the default.\n\t * @param endpoint - \"createMasterLang\" to create it, \"defineAsMaster\" to update it.\n\t * @throws Error if setting the default locale fails.\n\t */\n\tasync setDefaultLocale(locale: string, action: \"create\" | \"update\"): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst endpoint = {\n\t\t\tcreate: \"createMasterLang\",\n\t\t\tupdate: \"defineAsMaster\",\n\t\t}\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`/app/settings/multilanguages/${locale}/${endpoint[action]}`,\n\t\t)\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 ||\n\t\t\t(status === 400 &&\n\t\t\t\t// returns 400 if master lang is already set\n\t\t\t\tJSON.stringify(data).includes(\"Unable to set as master language\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not set default locale to ${locale}`)\n\t\t}\n\t\tprofiler.done({ message: `default locale set to '${locale}'` })\n\t}\n\n\t/**\n\t * Retrieves documents.\n\t *\n\t * @param args - Configure which documents are retrieved.\n\t * @returns A paginated set of documents.\n\t */\n\tasync getDocuments(args: CoreApiDocumentsPayload): Promise<CoreApiDocumentsResponse> {\n\t\treturn this.coreApiClient.getDocuments(args)\n\t}\n\n\t/**\n\t * Creates a release.\n\t *\n\t * @param label - The label for the release.\n\t * @returns A Promise that resolves when the release is created.\n\t */\n\tasync createRelease(label: string): Promise<{ id: string }> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/releases\", {\n\t\t\tlabel,\n\t\t})\n\t\tthis.failIfNot200(response, `Could not create release ${label}`)\n\t\tprofiler.done({ message: `release '${label}' created` })\n\n\t\treturn response.data\n\t}\n\n\t/**\n\t * Retrieves the migration release.\n\t *\n\t * @returns The migration relese metadata.\n\t */\n\tasync getMigrationRelease(): Promise<Release> {\n\t\tconst releases = await this.coreApiClient.getReleases()\n\t\tconst migrationRelease = releases.find((release) => release.migration)\n\t\tif (!migrationRelease) {\n\t\t\tthrow new Error(`The repository does not have a migration release`)\n\t\t}\n\n\t\treturn migrationRelease\n\t}\n\n\t/**\n\t * Publishes a release.\n\t *\n\t * @param id - The ID of the release.\n\t * @returns A Promise that resolves when the release is published and a new master ref is\n\t * available.\n\t */\n\tasync publishRelease(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst contentApi = this.getContentApiClient()\n\t\tconst masterRef = await contentApi.getMasterRef()\n\t\tawait this.coreApiClient.publishRelease(id)\n\t\tawait expect\n\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\ttimeout: 10_000,\n\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t})\n\t\t\t.not.toBe(masterRef)\n\n\t\tprofiler.done({\n\t\t\tmessage: `release '${id}' published and new master ref available`,\n\t\t})\n\t}\n\n\t/**\n\t * Deletes a repository release.\n\t *\n\t * @param id - The ID of the release to be deleted.\n\t */\n\tasync deleteRelease(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `app/releases/${id}/delete`, {})\n\n\t\tthis.failIfNot200(response, `Could not delete release with id ${id}`)\n\t\tprofiler.done({ message: `release '${id}' deleted` })\n\t}\n\n\t/**\n\t * Creates a preview for a repository.\n\t *\n\t * @param data - The data for creating the preview.\n\t */\n\tasync createPreview(data: Preview): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `previews/new`, data)\n\n\t\tthis.failIfNot200(response, `Could not create preview ${data.name}`)\n\t\tprofiler.done({ message: `preview '${data.name}' created` })\n\n\t\treturn response.data\n\t}\n\n\t/**\n\t * Set the simulator URL (table of slices) for a repository.\n\t *\n\t * @param data - The simulator URL to set.\n\t */\n\tasync setSimulatorURL(simulatorURL: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst repository = await this.coreApiClient.getRepository()\n\t\tawait this.coreApiClient.updateRepository({\n\t\t\t...repository,\n\t\t\tsimulator_url: simulatorURL,\n\t\t})\n\n\t\tprofiler.done({\n\t\t\tmessage: `simulator preview '${simulatorURL}' created`,\n\t\t})\n\t}\n\n\t/**\n\t * Deletes a preview from a repository.\n\t *\n\t * @param id - The ID of the preview to be deleted.\n\t */\n\tasync deletePreview(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `previews/delete/${id}`, {})\n\n\t\tthis.failIfNot200(response, `Could not delete preview with id ${id}`)\n\t\tprofiler.done({ message: `preview '${id}' deleted` })\n\t}\n\n\t/**\n\t * Create a webhook.\n\t *\n\t * @returns A Promise that resolves with the webhook id.\n\t */\n\tasync createWebhook(\n\t\tname: string,\n\t\turl: string,\n\t\tsecret: string,\n\t\ttriggers: {\n\t\t\tdocumentsPublished?: boolean\n\t\t\tdocumentsUnpublished?: boolean\n\t\t\treleasesCreated?: boolean\n\t\t\treleasesUpdated?: boolean\n\t\t\ttagsCreated?: boolean\n\t\t\ttagsDeleted?: boolean\n\t\t},\n\t\tactive: boolean,\n\t): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/settings/webhooks/create\", {\n\t\t\tname,\n\t\t\turl,\n\t\t\tsecret,\n\t\t\tactive: active ? \"on\" : \"off\",\n\t\t\t...triggers,\n\t\t})\n\t\tthis.failIfNot200(response, `Could not create webhook ${name}`)\n\t\tprofiler.done({ message: `webhook '${name}' created` })\n\n\t\treturn response.data.created\n\t}\n\n\t/**\n\t * Deletes a webhook.\n\t *\n\t * @param id - The webhook ID.\n\t */\n\tasync deleteWebhook(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`app/settings/webhooks/${id}/delete`,\n\t\t\t{},\n\t\t)\n\n\t\tthis.failIfNot200(response, `Could not delete webhook with id ${id}`)\n\t\tprofiler.done({ message: `webhook '${id}' deleted` })\n\t}\n\n\t/**\n\t * Create Custom Types using the Custom types api.\n\t *\n\t * @param customTypes\n\t */\n\tasync createCustomTypes(customTypes: DynamicCustomTypeModel[]): Promise<void> {\n\t\tawait this.customTypesApiClient.createCustomTypes(customTypes)\n\t}\n\n\tasync deleteCustomType(customTypeId: string): Promise<void> {\n\t\tawait this.customTypesApiClient.deleteCustomType(customTypeId)\n\t}\n\n\t/**\n\t * Create slices using the Custom types api.\n\t *\n\t * @param slices\n\t */\n\tasync createSlices(slices: SharedSliceModel[]): Promise<void> {\n\t\tawait this.customTypesApiClient.createSlices(slices)\n\t}\n\n\t/**\n\t * Create an access token to query private items of the Content api.\n\t *\n\t * @param appName - Mandatory authorized application name\n\t * @param tokenScope - Access token scope. Use \"master\" to when your content api is fully private\n\t * or \"master+releases\" to access private releases\n\t */\n\tasync createContentAPIToken(\n\t\tappName: string,\n\t\ttokenScope: \"master\" | \"master+releases\" = \"master\",\n\t): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\t\ttype AuthorizedAppResponse = {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\twroom_auths: { token: string; scope: \"master\" | \"master+releases\" }[]\n\t\t}\n\t\tconst existingApps: AxiosResponse<AuthorizedAppResponse[]> = await this.wroomClient.get(\n\t\t\tthis.name,\n\t\t\t\"settings/security/contentapi\",\n\t\t)\n\n\t\tthis.failIfNot200(\n\t\t\texistingApps,\n\t\t\t`Could not get status of existing applications to generate a content api token`,\n\t\t)\n\t\tlet app = existingApps.data.find(({ name, wroom_auths }) => {\n\t\t\treturn name === appName && wroom_auths.length > 0\n\t\t})\n\n\t\tif (!app) {\n\t\t\tconst response: AxiosResponse<AuthorizedAppResponse> = await this.wroomClient.post(\n\t\t\t\tthis.name,\n\t\t\t\t\"settings/security/oauthapp\",\n\t\t\t\t{\n\t\t\t\t\tapp_name: appName,\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tthis.failIfNot200(response, `Could not create content api app ${appName}`)\n\t\t\tapp = response.data\n\t\t}\n\n\t\tlet tokenInfo = app.wroom_auths.find(({ scope }) => scope === tokenScope)\n\t\tif (!tokenInfo) {\n\t\t\tconst response = await this.wroomClient.post(this.name, \"settings/security/authorizations\", {\n\t\t\t\tapp: app.id,\n\t\t\t\tscope: tokenScope,\n\t\t\t})\n\t\t\tthis.failIfNot200(\n\t\t\t\tresponse,\n\t\t\t\t`Could not create content api access token for app ${appName} with scope ${tokenScope}`,\n\t\t\t)\n\t\t\ttokenInfo = response.data\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage: `content api access token for app '${appName}' created`,\n\t\t})\n\n\t\tif (!tokenInfo?.token) {\n\t\t\tthrow `Could not create content api access token for app ${appName} with scope ${tokenScope}`\n\t\t}\n\n\t\treturn tokenInfo.token\n\t}\n\n\t/** Create a permanent access token to authenticate to Prismic public apis. */\n\tasync createPermanentAccessToken(): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst token = await this.authApiClient.getMachine2MachineToken(this.name)\n\n\t\tprofiler.done({\n\t\t\tmessage: `machine2machine token created`,\n\t\t})\n\n\t\treturn token\n\t}\n\n\t/**\n\t * Toggle the Role per Locale workflow\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleRolePerLocal(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleRolePerLocal({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Role per local for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Role per local ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Toggle the Custom Roles workflow\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleCustomRoles(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleCustomRoles({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Custom Roles for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Custom Roles ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Toggle the Integration Fields feature\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleIntegrationFields(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleIntegrationFields({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Integration Fields for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Integration Fields ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Change the Repository Plan\n\t *\n\t * @param {string} newPlanId - The Id of the new Plan to apply\n\t */\n\tasync changePlan(newPlanId: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.changePlan({\n\t\t\trepository: this.name,\n\t\t\tnewPlanId: newPlanId,\n\t\t\tbypassManualBilling: true, // For now the library does not support Stripe features\n\t\t})\n\n\t\tthis.failIfNot200(response, \"Could not change the Repository Plan\")\n\t\tprofiler.done({\n\t\t\tmessage: `Repository Plan changed to ${newPlanId}`,\n\t\t})\n\t}\n\n\t/**\n\t * Add a new user to the repository\n\t *\n\t * @param {string} email - The email of the user\n\t */\n\tasync addUser(email: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.addUserToRepository({\n\t\t\trepository: this.name,\n\t\t\temail: email,\n\t\t})\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 ||\n\t\t\t(status === 409 && JSON.stringify(data).includes(\"already a member of the repo\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not add a new user ${email} to the repository`)\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage: `User ${email} was added to the repository`,\n\t\t})\n\t}\n\n\t/**\n\t * Remove a user from the repository\n\t *\n\t * @param {string} email - The email of the user\n\t */\n\tasync removeUser(email: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.removeUserFromRepository({\n\t\t\trepository: this.name,\n\t\t\temail: email,\n\t\t})\n\n\t\tthis.failIfNot200(response, `Could not remove the user ${email} from the repository`)\n\t\tprofiler.done({\n\t\t\tmessage: `User ${email} was removed from the repository`,\n\t\t})\n\t}\n\n\t/**\n\t * Update the role of a user in a repository\n\t *\n\t * @param {string} email - The email of the user\n\t * @param {string | Record<string, string>} role - The new Role of the user, either a string for\n\t * basic workflow or an object such as `{ \"lang_id\": \"Writer\" }`\n\t *\n\t * Example of roles are\n\t *\n\t * - Administrator\n\t * - Writer\n\t * - Contributor\n\t * - Manager (publisher)\n\t */\n\tasync updateUserRole(email: string, role: string | Record<string, string>): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response =\n\t\t\ttypeof role === \"string\"\n\t\t\t\t? await this.wroomClient.updateRole(this.name, email, role)\n\t\t\t\t: await this.wroomClient.updateRolePerLocal(this.name, email, role)\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not update the ${\n\t\t\t\ttypeof role === \"string\" ? \"role\" : \"rolePerLocal\"\n\t\t\t} of the user ${email}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Updated User's ${\n\t\t\t\ttypeof role === \"string\" ? \"role\" : \"rolePerLocal\"\n\t\t\t} for user ${email}`,\n\t\t})\n\t}\n\n\t/**\n\t * Creates a document using the core api. If the Core api format is too specific, use the\n\t * migration api client to create a document with the MigrationApiClient. See the\n\t * `getMigrationApiClient()` method.\n\t *\n\t * @example\n\t * \tTo create a document by converting it from the Page Builder to\n\t * \tCore api format\n\t *\n\t * \t```js\n\t * \timport { DocumentLegacy, UIDContentType } from '@prismicio/types-internal/lib/content';\n\t *\n\t * \tconst document = {\n\t * \ttitle: 'A new document',\n\t * \tcustom_type_id: 'home-page',\n\t * \tlocale: 'en-gb',\n\t * \tintegration_field_ids: [],\n\t * \ttags: [],\n\t * \tdata: DocumentLegacy.encode({\n\t * \tuid: {\n\t * \t__TYPE__: UIDContentType,\n\t * \tvalue: 'home-page',\n\t * \t},\n\t * \t})\n\t * \t}\n\t * \tawait repository.createDocument(document, 'published');\n\t * \t* ```\n\t * \t```\n\t *\n\t * \t@returns\n\t *\n\t * \t@param document - in the core api format.\n\t *\n\t * \t@param status - status of the document, if published, the function will\n\t * \twait for a new content api master ref to be created\n\t */\n\tasync createDocument(\n\t\tdocument: CoreApiDocumentCreationPayload,\n\t\tstatus: \"draft\" | \"published\",\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst result = await this.coreApiClient.createDraft(document)\n\n\t\tlet message = `Document created with id '${result.id}'`\n\t\tif (status === \"published\") {\n\t\t\tconst contentApi = this.getContentApiClient()\n\t\t\tconst masterRef = await contentApi.getMasterRef()\n\t\t\tawait this.coreApiClient.publishDraft(result.id)\n\t\t\tawait expect\n\t\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\t\ttimeout: 10_000,\n\t\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t\t})\n\t\t\t\t.not.toBe(masterRef)\n\t\t\tmessage += \", status 'published' and new master ref available\"\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage,\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Updates an existing document using the core api by creating a new draft version on top of the\n\t * given base version. If the status is published, the function will, unless disabled, wait for a\n\t * new content api master ref to be created.\n\t *\n\t * @param documentId - The id of the document to update.\n\t * @param data - The new version payload in the core api format.\n\t * @param baseVersionId - The id of the version the draft is created from.\n\t * @param status - Status of the new version, if published, the function will wait for a new\n\t * content api master ref to be created.\n\t * @param options - Additional options.\n\t * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master\n\t * ref to be available (default false). Set to true to return without waiting for the\n\t * projection.\n\t * @returns The updated document, including the new version's id.\n\t */\n\tasync updateDocument(\n\t\tdocumentId: string,\n\t\tdata: CoreApiDocumentUpdatePayload,\n\t\tbaseVersionId: string,\n\t\tstatus: \"draft\" | \"published\",\n\t\toptions: { skipMasterRefWait?: boolean } = {},\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst { skipMasterRefWait = false } = options\n\t\tconst profiler = logger.startTimer()\n\t\tconst result = await this.coreApiClient.updateDraft(documentId, data, baseVersionId)\n\n\t\tlet message = `Document '${documentId}' updated`\n\t\tif (status === \"published\") {\n\t\t\tif (skipMasterRefWait) {\n\t\t\t\tawait this.coreApiClient.publishDraft(documentId)\n\t\t\t\tmessage += \", status 'published'\"\n\t\t\t} else {\n\t\t\t\tconst contentApi = this.getContentApiClient()\n\t\t\t\tconst masterRef = await contentApi.getMasterRef()\n\t\t\t\tawait this.coreApiClient.publishDraft(documentId)\n\t\t\t\tawait expect\n\t\t\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\t\t\ttimeout: 10_000,\n\t\t\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t\t\t})\n\t\t\t\t\t.not.toBe(masterRef)\n\t\t\t\tmessage += \", status 'published' and new master ref available\"\n\t\t\t}\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage,\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Unpublishes (archives) a live document using the core api. Unless disabled, waits for a new\n\t * content api master ref to be available.\n\t *\n\t * @param documentId - The id of the document to unpublish.\n\t * @param options - Additional options.\n\t * @param options.skipMasterRefWait - Skip waiting for a new content api master ref to be\n\t * available (default false). Set to true to return without waiting for the projection.\n\t */\n\tasync unpublishDocument(\n\t\tdocumentId: string,\n\t\toptions: { skipMasterRefWait?: boolean } = {},\n\t): Promise<void> {\n\t\tconst { skipMasterRefWait = false } = options\n\t\tconst profiler = logger.startTimer()\n\n\t\tif (skipMasterRefWait) {\n\t\t\tawait this.coreApiClient.unpublishDocument(documentId)\n\t\t\tprofiler.done({ message: `Document '${documentId}' unpublished` })\n\n\t\t\treturn\n\t\t}\n\n\t\tconst contentApi = this.getContentApiClient()\n\t\tconst masterRef = await contentApi.getMasterRef()\n\t\tawait this.coreApiClient.unpublishDocument(documentId)\n\t\tawait expect\n\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\ttimeout: 10_000,\n\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t})\n\t\t\t.not.toBe(masterRef)\n\n\t\tprofiler.done({\n\t\t\tmessage: `Document '${documentId}' unpublished and new master ref available`,\n\t\t})\n\t}\n\n\t/**\n\t * Retrieves data for a specific document version.\n\t *\n\t * @param versionId - The document's version ID.\n\t * @returns The document's version data.\n\t */\n\tasync getDocumentData(versionId: string): Promise<CoreApiDocumentData> {\n\t\treturn await this.coreApiClient.getDocumentData(versionId)\n\t}\n\n\tasync setupIntegrationFields(integrationFields: IntegrationFieldConfig[]): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tif (!this.integrationFieldsClient) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Integration Fields client not found. Did you provide a integration fields api url in the configuration?\",\n\t\t\t)\n\t\t}\n\n\t\tawait this.integrationFieldsClient.setupIntegrationFields(integrationFields)\n\t\tprofiler.done({\n\t\t\tmessage: `Integration Fields setup`,\n\t\t})\n\t}\n}\n\nexport type RepositoryConfig = {\n\tcustomLocale?: CustomLocale\n\tlocales?: string[]\n\tdefaultLocale?: string\n\tslices?: SharedSliceModel[]\n\tcustomTypes?: DynamicCustomTypeModel[]\n\tpreview?: Preview\n\tsimulatorURL?: string\n\trolePerLocal?: boolean\n\tcustomRoles?: boolean\n\tintegrationFields?: IntegrationFieldConfig[]\n}\n\nexport type Preview = {\n\tname: string\n\twebsiteURL: string\n\tresolverPath: string\n}\n\nexport type CustomLocale = {\n\tlang: {\n\t\tlabel: string\n\t\tid: string\n\t\tuseStandardAnalyzer?: boolean\n\t}\n\tregion: {\n\t\tlabel: string\n\t\tid: string\n\t}\n}\n"],"mappings":";;;;;;AA2BA,IAAa,oBAAb,MAA+B;CAEpB;CACQ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CATlB,YACC,MACA,eACA,eACA,aACA,sBACA,oBACA,gBACA,gBACA,yBACC;EATQ,KAAA,OAAA;EACQ,KAAA,gBAAA;EACA,KAAA,gBAAA;EACA,KAAA,cAAA;EACA,KAAA,uBAAA;EACA,KAAA,qBAAA;EACA,KAAA,iBAAA;EACA,KAAA,iBAAA;EACA,KAAA,0BAAA;CACf;CAEH,MAAM,UAAU,QAAyC;EAExD,IADsB,OAAO,iBAAiB,OAAO,WAAW,OAAO,cACpD;GAClB,MAAM,YAAY,MAAM,KAAK,cAAc,aAAa;GACxD,IAAI,8BAA8B;GAElC,IAAI,OAAO,eAAe;IACzB,MAAM,SAAS,UAAU,MAAM,EAAE,gBAAgB,cAAc,IAAI;IACnE,IAAI,CAAC,QACJ,MAAM,KAAK,iBAAiB,OAAO,eAAe,QAAQ;SACpD,IAAI,OAAO,OAAO,OAAO,eAE/B,8BAA8B;GAEhC;GAEA,IAAI,OAAO,SAAS;IAEnB,MAAM,eAAe,OAAO,QAAQ,QAClC,OAAO,CAAC,UAAU,MAAM,aAAa,SAAS,OAAO,EAAE,CACzD;IACA,IAAI,aAAa,SAAS,GACzB,MAAM,KAAK,cAAc,YAAY;GAEvC;GAEA,IAAI,OAAO;QACN,CAAC,UAAU,MAAM,EAAE,SAAS,OAAO,OAAO,cAAc,KAAK,EAAE,GAClE,MAAM,KAAK,mBAAmB,OAAO,YAAY;GAAA;GAInD,IAAI,OAAO,iBAAiB,6BAC3B,MAAM,KAAK,iBAAiB,OAAO,eAAe,QAAQ;EAE5D;EAEA,IAAI,OAAO,QACV,MAAM,KAAK,aAAa,OAAO,MAAM;EAGtC,IAAI,OAAO,aACV,MAAM,KAAK,kBAAkB,OAAO,WAAW;EAGhD,IAAI,OAAO,SACV,MAAM,KAAK,cAAc,OAAO,OAAO;EAGxC,IAAI,OAAO,cACV,MAAM,KAAK,gBAAgB,OAAO,YAAY;EAG/C,IAAI,OAAO,cACV,MAAM,KAAK,mBAAmB,IAAI;EAGnC,IAAI,OAAO,aACV,MAAM,KAAK,kBAAkB,IAAI;EAGlC,IAAI,OAAO,mBAAmB;GAC7B,MAAM,KAAK,wBAAwB,IAAI;GACvC,MAAM,KAAK,uBAAuB,OAAO,iBAAiB;EAC3D;CACD;;CAGA,aAAqB;EACpB,OAAO,iBAAiB,KAAK,YAAY,WAAW,GAAG,KAAK,IAAI;CACjE;;CAGA,gBAAwB;EACvB,OAAO,iBAAiB,KAAK,YAAY,WAAW,GAAG,GAAG,KAAK,KAAK,KAAK;CAC1E;;;;;;CAOA,oBAAoB,QAA4E;EAC/F,OAAO,IAAI,iBAAiB,KAAK,cAAc,GAAG,MAAM;CACzD;;;;;CAMA,wBAA4C;EAC3C,IAAI,CAAC,KAAK,oBACT,MAAM;EAGP,OAAO,KAAK;CACb;;;;;CAMA,oBAAoC;EACnC,OAAO,KAAK;CACb;;CAGA,MAAM,qBAAkD;EAOvD,QAAO,MANgB,KAAK,YAAY,IACvC,KAAK,MACL,sDACD,EAAA,CAGgB,KAAK;CACtB;;;;;;;;CASA,MAAM,cAAc,SAAkC;EACrD,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KAAK,KAAK,MAAM,+BAA+B,EACtF,WAAW,QACZ,CAAC;EAED,MAAM,EAAE,MAAM,WAAW;EAGzB,IAAI,EADH,WAAW,OAAQ,WAAW,OAAQ,KAAgB,SAAS,4BAA4B,IAC9E;GACb,gBAAgB,QAAQ;GACxB,MAAM,IAAI,MAAM,yBAAyB,QAAQ,KAAK,IAAI,GAAG;EAC9D;EACA,SAAS,KAAK,EAAE,SAAS,YAAY,QAAQ,WAAW,CAAC;CAC1D;;;;;;;;CASA,MAAM,mBAAmB,QAAqC;EAC7D,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KACvC,KAAK,MACL,sCACA,MACD;EAEA,MAAM,EAAE,MAAM,WAAW;EAGzB,IAAI,EADH,WAAW,OAAQ,WAAW,OAAO,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,sBAAsB,IAC5E;GACb,gBAAgB,QAAQ;GACxB,MAAM,IAAI,MAAM,kCAAkC,QAAQ;EAC3D;EACA,SAAS,KAAK,EACb,SAAS,iBAAiB,KAAK,UAAU,MAAM,EAAE,UAClD,CAAC;CACF;CAEA,aAAqB,UAAyB,KAAa;EAC1D,IAAI,SAAS,WAAW,KAAK;GAC5B,gBAAgB,QAAQ;GACxB,MAAM,IAAI,MAAM,GAAG;EACpB;CACD;;;;;;;CAQA,MAAM,aAAa,QAA+B;EACjD,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KACvC,KAAK,MACL,+BAA+B,OAAO,QACvC;EACA,KAAK,aAAa,UAAU,2BAA2B,QAAQ;EAC/D,SAAS,KAAK,EAAE,SAAS,WAAW,OAAO,WAAW,CAAC;CACxD;;;;;;;;;CAUA,MAAM,iBAAiB,QAAgB,QAA4C;EAClF,MAAM,WAAW,OAAO,WAAW;EAMnC,MAAM,WAAW,MAAM,KAAK,YAAY,KACvC,KAAK,MACL,gCAAgC,OAAO,GAAG;GAL1C,QAAQ;GACR,QAAQ;EAIyC,EAAE,SACpD;EAEA,MAAM,EAAE,MAAM,WAAW;EAMzB,IAAI,EAJH,WAAW,OACV,WAAW,OAEX,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,kCAAkC,IACpD;GACb,gBAAgB,QAAQ;GACxB,MAAM,IAAI,MAAM,mCAAmC,QAAQ;EAC5D;EACA,SAAS,KAAK,EAAE,SAAS,0BAA0B,OAAO,GAAG,CAAC;CAC/D;;;;;;;CAQA,MAAM,aAAa,MAAkE;EACpF,OAAO,KAAK,cAAc,aAAa,IAAI;CAC5C;;;;;;;CAQA,MAAM,cAAc,OAAwC;EAC3D,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KAAK,KAAK,MAAM,gBAAgB,EACvE,MACD,CAAC;EACD,KAAK,aAAa,UAAU,4BAA4B,OAAO;EAC/D,SAAS,KAAK,EAAE,SAAS,YAAY,MAAM,WAAW,CAAC;EAEvD,OAAO,SAAS;CACjB;;;;;;CAOA,MAAM,sBAAwC;EAE7C,MAAM,oBAAmB,MADF,KAAK,cAAc,YAAY,EAAA,CACpB,MAAM,YAAY,QAAQ,SAAS;EACrE,IAAI,CAAC,kBACJ,MAAM,IAAI,MAAM,kDAAkD;EAGnE,OAAO;CACR;;;;;;;;CASA,MAAM,eAAe,IAA2B;EAC/C,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,aAAa,KAAK,oBAAoB;EAC5C,MAAM,YAAY,MAAM,WAAW,aAAa;EAChD,MAAM,KAAK,cAAc,eAAe,EAAE;EAC1C,MAAM,OACJ,KAAK,YAAY,WAAW,aAAa,GAAG;GAC5C,SAAS;GACT,SAAS;EACV,CAAC,CAAC,CACD,IAAI,KAAK,SAAS;EAEpB,SAAS,KAAK,EACb,SAAS,YAAY,GAAG,0CACzB,CAAC;CACF;;;;;;CAOA,MAAM,cAAc,IAA2B;EAC9C,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KAAK,KAAK,MAAM,gBAAgB,GAAG,UAAU,CAAC,CAAC;EAEvF,KAAK,aAAa,UAAU,oCAAoC,IAAI;EACpE,SAAS,KAAK,EAAE,SAAS,YAAY,GAAG,WAAW,CAAC;CACrD;;;;;;CAOA,MAAM,cAAc,MAA8B;EACjD,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KAAK,KAAK,MAAM,gBAAgB,IAAI;EAE5E,KAAK,aAAa,UAAU,4BAA4B,KAAK,MAAM;EACnE,SAAS,KAAK,EAAE,SAAS,YAAY,KAAK,KAAK,WAAW,CAAC;EAE3D,OAAO,SAAS;CACjB;;;;;;CAOA,MAAM,gBAAgB,cAAqC;EAC1D,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,aAAa,MAAM,KAAK,cAAc,cAAc;EAC1D,MAAM,KAAK,cAAc,iBAAiB;GACzC,GAAG;GACH,eAAe;EAChB,CAAC;EAED,SAAS,KAAK,EACb,SAAS,sBAAsB,aAAa,WAC7C,CAAC;CACF;;;;;;CAOA,MAAM,cAAc,IAA2B;EAC9C,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KAAK,KAAK,MAAM,mBAAmB,MAAM,CAAC,CAAC;EAEnF,KAAK,aAAa,UAAU,oCAAoC,IAAI;EACpE,SAAS,KAAK,EAAE,SAAS,YAAY,GAAG,WAAW,CAAC;CACrD;;;;;;CAOA,MAAM,cACL,MACA,KACA,QACA,UAQA,QACkB;EAClB,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KAAK,KAAK,MAAM,gCAAgC;GACvF;GACA;GACA;GACA,QAAQ,SAAS,OAAO;GACxB,GAAG;EACJ,CAAC;EACD,KAAK,aAAa,UAAU,4BAA4B,MAAM;EAC9D,SAAS,KAAK,EAAE,SAAS,YAAY,KAAK,WAAW,CAAC;EAEtD,OAAO,SAAS,KAAK;CACtB;;;;;;CAOA,MAAM,cAAc,IAA2B;EAC9C,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,YAAY,KACvC,KAAK,MACL,yBAAyB,GAAG,UAC5B,CAAC,CACF;EAEA,KAAK,aAAa,UAAU,oCAAoC,IAAI;EACpE,SAAS,KAAK,EAAE,SAAS,YAAY,GAAG,WAAW,CAAC;CACrD;;;;;;CAOA,MAAM,kBAAkB,aAAsD;EAC7E,MAAM,KAAK,qBAAqB,kBAAkB,WAAW;CAC9D;CAEA,MAAM,iBAAiB,cAAqC;EAC3D,MAAM,KAAK,qBAAqB,iBAAiB,YAAY;CAC9D;;;;;;CAOA,MAAM,aAAa,QAA2C;EAC7D,MAAM,KAAK,qBAAqB,aAAa,MAAM;CACpD;;;;;;;;CASA,MAAM,sBACL,SACA,aAA2C,UACzB;EAClB,MAAM,WAAW,OAAO,WAAW;EAMnC,MAAM,eAAuD,MAAM,KAAK,YAAY,IACnF,KAAK,MACL,8BACD;EAEA,KAAK,aACJ,cACA,+EACD;EACA,IAAI,MAAM,aAAa,KAAK,MAAM,EAAE,MAAM,kBAAkB;GAC3D,OAAO,SAAS,WAAW,YAAY,SAAS;EACjD,CAAC;EAED,IAAI,CAAC,KAAK;GACT,MAAM,WAAiD,MAAM,KAAK,YAAY,KAC7E,KAAK,MACL,8BACA,EACC,UAAU,QACX,CACD;GAEA,KAAK,aAAa,UAAU,oCAAoC,SAAS;GACzE,MAAM,SAAS;EAChB;EAEA,IAAI,YAAY,IAAI,YAAY,MAAM,EAAE,YAAY,UAAU,UAAU;EACxE,IAAI,CAAC,WAAW;GACf,MAAM,WAAW,MAAM,KAAK,YAAY,KAAK,KAAK,MAAM,oCAAoC;IAC3F,KAAK,IAAI;IACT,OAAO;GACR,CAAC;GACD,KAAK,aACJ,UACA,qDAAqD,QAAQ,cAAc,YAC5E;GACA,YAAY,SAAS;EACtB;EAEA,SAAS,KAAK,EACb,SAAS,qCAAqC,QAAQ,WACvD,CAAC;EAED,IAAI,CAAC,WAAW,OACf,MAAM,qDAAqD,QAAQ,cAAc;EAGlF,OAAO,UAAU;CAClB;;CAGA,MAAM,6BAA8C;EACnD,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,QAAQ,MAAM,KAAK,cAAc,wBAAwB,KAAK,IAAI;EAExE,SAAS,KAAK,EACb,SAAS,gCACV,CAAC;EAED,OAAO;CACR;;;;;;CAOA,MAAM,mBAAmB,SAAiC;EACzD,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,eAAe,mBAAmB;GAC7D,YAAY,KAAK;GACR;EACV,CAAC;EAED,KAAK,aACJ,UACA,aAAa,UAAU,WAAW,UAAU,sBAAsB,KAAK,MACxE;EACA,SAAS,KAAK,EACb,SAAS,kBAAkB,UAAU,YAAY,aAClD,CAAC;CACF;;;;;;CAOA,MAAM,kBAAkB,SAAiC;EACxD,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,eAAe,kBAAkB;GAC5D,YAAY,KAAK;GACR;EACV,CAAC;EAED,KAAK,aACJ,UACA,aAAa,UAAU,WAAW,UAAU,oBAAoB,KAAK,MACtE;EACA,SAAS,KAAK,EACb,SAAS,gBAAgB,UAAU,YAAY,aAChD,CAAC;CACF;;;;;;CAOA,MAAM,wBAAwB,SAAiC;EAC9D,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,eAAe,wBAAwB;GAClE,YAAY,KAAK;GACR;EACV,CAAC;EAED,KAAK,aACJ,UACA,aAAa,UAAU,WAAW,UAAU,0BAA0B,KAAK,MAC5E;EACA,SAAS,KAAK,EACb,SAAS,sBAAsB,UAAU,YAAY,aACtD,CAAC;CACF;;;;;;CAOA,MAAM,WAAW,WAAkC;EAClD,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,eAAe,WAAW;GACrD,YAAY,KAAK;GACN;GACX,qBAAqB;EACtB,CAAC;EAED,KAAK,aAAa,UAAU,sCAAsC;EAClE,SAAS,KAAK,EACb,SAAS,8BAA8B,YACxC,CAAC;CACF;;;;;;CAOA,MAAM,QAAQ,OAA8B;EAC3C,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,eAAe,oBAAoB;GAC9D,YAAY,KAAK;GACV;EACR,CAAC;EAED,MAAM,EAAE,MAAM,WAAW;EAIzB,IAAI,EAFH,WAAW,OACV,WAAW,OAAO,KAAK,UAAU,IAAI,CAAC,CAAC,SAAS,8BAA8B,IAClE;GACb,gBAAgB,QAAQ;GACxB,MAAM,IAAI,MAAM,4BAA4B,MAAM,mBAAmB;EACtE;EACA,SAAS,KAAK,EACb,SAAS,QAAQ,MAAM,8BACxB,CAAC;CACF;;;;;;CAOA,MAAM,WAAW,OAA8B;EAC9C,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WAAW,MAAM,KAAK,eAAe,yBAAyB;GACnE,YAAY,KAAK;GACV;EACR,CAAC;EAED,KAAK,aAAa,UAAU,6BAA6B,MAAM,qBAAqB;EACpF,SAAS,KAAK,EACb,SAAS,QAAQ,MAAM,kCACxB,CAAC;CACF;;;;;;;;;;;;;;;CAgBA,MAAM,eAAe,OAAe,MAAsD;EACzF,MAAM,WAAW,OAAO,WAAW;EAEnC,MAAM,WACL,OAAO,SAAS,WACb,MAAM,KAAK,YAAY,WAAW,KAAK,MAAM,OAAO,IAAI,IACxD,MAAM,KAAK,YAAY,mBAAmB,KAAK,MAAM,OAAO,IAAI;EAEpE,KAAK,aACJ,UACA,wBACC,OAAO,SAAS,WAAW,SAAS,eACpC,eAAe,OACjB;EACA,SAAS,KAAK,EACb,SAAS,kBACR,OAAO,SAAS,WAAW,SAAS,eACpC,YAAY,QACd,CAAC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCA,MAAM,eACL,UACA,QAC2C;EAC3C,MAAM,WAAW,OAAO,WAAW;EACnC,MAAM,SAAS,MAAM,KAAK,cAAc,YAAY,QAAQ;EAE5D,IAAI,UAAU,6BAA6B,OAAO,GAAG;EACrD,IAAI,WAAW,aAAa;GAC3B,MAAM,aAAa,KAAK,oBAAoB;GAC5C,MAAM,YAAY,MAAM,WAAW,aAAa;GAChD,MAAM,KAAK,cAAc,aAAa,OAAO,EAAE;GAC/C,MAAM,OACJ,KAAK,YAAY,WAAW,aAAa,GAAG;IAC5C,SAAS;IACT,SAAS;GACV,CAAC,CAAC,CACD,IAAI,KAAK,SAAS;GACpB,WAAW;EACZ;EACA,SAAS,KAAK,EACb,QACD,CAAC;EAED,OAAO;CACR;;;;;;;;;;;;;;;;;CAkBA,MAAM,eACL,YACA,MACA,eACA,QACA,UAA2C,CAAC,GACD;EAC3C,MAAM,EAAE,oBAAoB,UAAU;EACtC,MAAM,WAAW,OAAO,WAAW;EACnC,MAAM,SAAS,MAAM,KAAK,cAAc,YAAY,YAAY,MAAM,aAAa;EAEnF,IAAI,UAAU,aAAa,WAAW;EACtC,IAAI,WAAW,aACd,IAAI,mBAAmB;GACtB,MAAM,KAAK,cAAc,aAAa,UAAU;GAChD,WAAW;EACZ,OAAO;GACN,MAAM,aAAa,KAAK,oBAAoB;GAC5C,MAAM,YAAY,MAAM,WAAW,aAAa;GAChD,MAAM,KAAK,cAAc,aAAa,UAAU;GAChD,MAAM,OACJ,KAAK,YAAY,WAAW,aAAa,GAAG;IAC5C,SAAS;IACT,SAAS;GACV,CAAC,CAAC,CACD,IAAI,KAAK,SAAS;GACpB,WAAW;EACZ;EAED,SAAS,KAAK,EACb,QACD,CAAC;EAED,OAAO;CACR;;;;;;;;;;CAWA,MAAM,kBACL,YACA,UAA2C,CAAC,GAC5B;EAChB,MAAM,EAAE,oBAAoB,UAAU;EACtC,MAAM,WAAW,OAAO,WAAW;EAEnC,IAAI,mBAAmB;GACtB,MAAM,KAAK,cAAc,kBAAkB,UAAU;GACrD,SAAS,KAAK,EAAE,SAAS,aAAa,WAAW,eAAe,CAAC;GAEjE;EACD;EAEA,MAAM,aAAa,KAAK,oBAAoB;EAC5C,MAAM,YAAY,MAAM,WAAW,aAAa;EAChD,MAAM,KAAK,cAAc,kBAAkB,UAAU;EACrD,MAAM,OACJ,KAAK,YAAY,WAAW,aAAa,GAAG;GAC5C,SAAS;GACT,SAAS;EACV,CAAC,CAAC,CACD,IAAI,KAAK,SAAS;EAEpB,SAAS,KAAK,EACb,SAAS,aAAa,WAAW,4CAClC,CAAC;CACF;;;;;;;CAQA,MAAM,gBAAgB,WAAiD;EACtE,OAAO,MAAM,KAAK,cAAc,gBAAgB,SAAS;CAC1D;CAEA,MAAM,uBAAuB,mBAA4D;EACxF,MAAM,WAAW,OAAO,WAAW;EAEnC,IAAI,CAAC,KAAK,yBACT,MAAM,IAAI,MACT,yGACD;EAGD,MAAM,KAAK,wBAAwB,uBAAuB,iBAAiB;EAC3E,SAAS,KAAK,EACb,SAAS,2BACV,CAAC;CACF;AACD"}
1
+ {"version":3,"file":"repository.js","names":[],"sources":["../../src/managers/repository.ts"],"sourcesContent":["import { expect } from \"@playwright/test\"\nimport type { DynamicCustomTypeModel, SharedSliceModel } from \"@prismicio/types-internal\"\nimport type { AxiosResponse } from \"axios\"\n\nimport type { AssetApiClient } from \"../clients/assetApi\"\nimport type { AuthenticationApiClient } from \"../clients/authenticationApi\"\nimport { ContentApiClient } from \"../clients/contentApi\"\nimport type {\n\tCoreApiClient,\n\tCoreApiDocumentCreationPayload,\n\tCoreApiDocumentCreationResponse,\n\tCoreApiDocumentData,\n\tCoreApiDocumentsPayload,\n\tCoreApiDocumentsResponse,\n\tCoreApiDocumentUpdatePayload,\n\tRelease,\n} from \"../clients/coreApi\"\nimport type { CustomTypesApiClient } from \"../clients/customTypesApi\"\nimport type { IntegrationFieldsClient } from \"../clients/integrationFields\"\nimport type { ManageV2Client } from \"../clients/manageV2\"\nimport type { MigrationApiClient } from \"../clients/migrationApi\"\nimport type { WroomClient } from \"../clients/wroom\"\nimport type { IntegrationFieldConfig } from \"../types\"\nimport { logHttpResponse, logger } from \"../utils/log\"\nimport { getRepositoryUrl } from \"../utils/urls\"\n\n/** Utility to manage test data for a Prismic repository */\nexport class RepositoryManager {\n\tconstructor(\n\t\treadonly name: string,\n\t\tprivate readonly coreApiClient: CoreApiClient,\n\t\tprivate readonly authApiClient: AuthenticationApiClient,\n\t\tprivate readonly wroomClient: WroomClient,\n\t\tprivate readonly customTypesApiClient: CustomTypesApiClient,\n\t\tprivate readonly migrationApiClient: MigrationApiClient | undefined,\n\t\tprivate readonly assetApiClient: AssetApiClient,\n\t\tprivate readonly manageV2Client: ManageV2Client,\n\t\tprivate readonly integrationFieldsClient: IntegrationFieldsClient | undefined,\n\t) {}\n\n\tasync configure(config: RepositoryConfig): Promise<void> {\n\t\tconst hasLangConfig = config.defaultLocale || config.locales || config.customLocale\n\t\tif (hasLangConfig) {\n\t\t\tconst languages = await this.coreApiClient.getLanguages()\n\t\t\tlet updateDefaultLocaleAtTheEnd = false\n\t\t\t// if no locale exists on repo, the master locale needs to be set first\n\t\t\tif (config.defaultLocale) {\n\t\t\t\tconst master = languages.find(({ is_master }) => is_master === true)\n\t\t\t\tif (!master) {\n\t\t\t\t\tawait this.setDefaultLocale(config.defaultLocale, \"create\")\n\t\t\t\t} else if (master.id !== config.defaultLocale) {\n\t\t\t\t\t// update the master lang at the end, after it is created.\n\t\t\t\t\tupdateDefaultLocaleAtTheEnd = true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.locales) {\n\t\t\t\t// No need to add default locale and already existing languages\n\t\t\t\tconst localesToAdd = config.locales.filter(\n\t\t\t\t\t(id) => !languages.some((language) => language.id === id),\n\t\t\t\t)\n\t\t\t\tif (localesToAdd.length > 0) {\n\t\t\t\t\tawait this.createLocales(localesToAdd)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.customLocale) {\n\t\t\t\tif (!languages.find(({ id }) => id === config.customLocale?.lang.id)) {\n\t\t\t\t\tawait this.createCustomLocale(config.customLocale)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (config.defaultLocale && updateDefaultLocaleAtTheEnd) {\n\t\t\t\tawait this.setDefaultLocale(config.defaultLocale, \"update\")\n\t\t\t}\n\t\t}\n\n\t\tif (config.slices) {\n\t\t\tawait this.createSlices(config.slices)\n\t\t}\n\n\t\tif (config.customTypes) {\n\t\t\tawait this.createCustomTypes(config.customTypes)\n\t\t}\n\n\t\tif (config.preview) {\n\t\t\tawait this.createPreview(config.preview)\n\t\t}\n\n\t\tif (config.simulatorURL) {\n\t\t\tawait this.setSimulatorURL(config.simulatorURL)\n\t\t}\n\n\t\tif (config.rolePerLocal) {\n\t\t\tawait this.toggleRolePerLocal(true)\n\t\t}\n\n\t\tif (config.customRoles) {\n\t\t\tawait this.toggleCustomRoles(true)\n\t\t}\n\n\t\tif (config.integrationFields) {\n\t\t\tawait this.toggleIntegrationFields(true)\n\t\t\tawait this.setupIntegrationFields(config.integrationFields)\n\t\t}\n\t}\n\n\t/** @returns The repository base url, like https://my-repo.prismic.io */\n\tgetBaseURL(): string {\n\t\treturn getRepositoryUrl(this.wroomClient.getBaseURL(), this.name)\n\t}\n\n\t/** @returns The repository base cdn url, like https://my-repo.cdn.prismic.io */\n\tgetBaseCdnURL(): string {\n\t\treturn getRepositoryUrl(this.wroomClient.getBaseURL(), `${this.name}.cdn`)\n\t}\n\n\t/**\n\t * @returns A Content Type api client configured to target the repository CDN url. Uses Playwright\n\t * for requests so if your project uses Playwright too, any network request will be present in\n\t * Playwright test reports.\n\t */\n\tgetContentApiClient(config?: { version?: \"v1\" | \"v2\"; accessToken?: string }): ContentApiClient {\n\t\treturn new ContentApiClient(this.getBaseCdnURL(), config)\n\t}\n\n\t/**\n\t * @returns An instance of the Migration api client, see\n\t * https://prismic.io/docs/migration-api-technical-reference\n\t */\n\tgetMigrationApiClient(): MigrationApiClient {\n\t\tif (!this.migrationApiClient) {\n\t\t\tthrow \"No client found for the migration api. Did you provide a migration api url in the configuration?\"\n\t\t}\n\n\t\treturn this.migrationApiClient\n\t}\n\n\t/**\n\t * @returns An instance of the Asset api client, see\n\t * https://prismic.io/docs/asset-api-technical-reference\n\t */\n\tgetAssetApiClient(): AssetApiClient {\n\t\treturn this.assetApiClient\n\t}\n\n\t/** @returns The Wroom commit hash deployed on the current repository */\n\tasync getDeployedVersion(): Promise<string | undefined> {\n\t\tconst response = await this.wroomClient.get(\n\t\t\tthis.name,\n\t\t\t\"underground/834b34f16f451e00f268dd5c8c81d16e3c020275\",\n\t\t)\n\n\t\t// Somehow axios directly parses the text response `Prismic version: <commit hash> into a version attribute\n\t\treturn response.data.version\n\t}\n\n\t/**\n\t * Set additional standard locales for a repository in Wroom, does not fail if the locales already\n\t * exist.\n\t *\n\t * @param locales - An array of all locales to be added to the repository.\n\t * @throws Error if setting the locales fails.\n\t */\n\tasync createLocales(locales: string[]): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/settings/multilanguages\", {\n\t\t\tlanguages: locales,\n\t\t})\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 || (status === 400 && (data as string).includes(\"already existing languages\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not add locales ${locales.join(\", \")}`)\n\t\t}\n\t\tprofiler.done({ message: `locales '${locales}' created` })\n\t}\n\n\t/**\n\t * Set additional custom locale for a repository in Wroom, does not fail if the locales already\n\t * exist.\n\t *\n\t * @param locale - The locale to be added to the repository.\n\t * @throws Error if setting the locale fails.\n\t */\n\tasync createCustomLocale(locale: CustomLocale): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t\"app/settings/multilanguages/custom\",\n\t\t\tlocale,\n\t\t)\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 || (status === 400 && JSON.stringify(data).includes(\"code is already used\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not create custom locale ${locale}`)\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage: `custom locale ${JSON.stringify(locale)} created`,\n\t\t})\n\t}\n\n\tprivate failIfNot200(response: AxiosResponse, msg: string) {\n\t\tif (response.status !== 200) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(msg)\n\t\t}\n\t}\n\n\t/**\n\t * Delete a locale from a repository.\n\t *\n\t * @param locale - Locale to remove from the repository configuration.\n\t * @throws Error if deleting the locale fails.\n\t */\n\tasync deleteLocale(locale: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`app/settings/multilanguages/${locale}/delete`,\n\t\t)\n\t\tthis.failIfNot200(response, `Could not delete locale ${locale}`)\n\t\tprofiler.done({ message: `locale '${locale}' deleted` })\n\t}\n\n\t/**\n\t * Create or update the default (master) locale for a repository in Wroom, the locale needs to\n\t * exist in the repository.\n\t *\n\t * @param locale - The locale to be set as the default.\n\t * @param endpoint - \"createMasterLang\" to create it, \"defineAsMaster\" to update it.\n\t * @throws Error if setting the default locale fails.\n\t */\n\tasync setDefaultLocale(locale: string, action: \"create\" | \"update\"): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst endpoint = {\n\t\t\tcreate: \"createMasterLang\",\n\t\t\tupdate: \"defineAsMaster\",\n\t\t}\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`/app/settings/multilanguages/${locale}/${endpoint[action]}`,\n\t\t)\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 ||\n\t\t\t(status === 400 &&\n\t\t\t\t// returns 400 if master lang is already set\n\t\t\t\tJSON.stringify(data).includes(\"Unable to set as master language\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not set default locale to ${locale}`)\n\t\t}\n\t\tprofiler.done({ message: `default locale set to '${locale}'` })\n\t}\n\n\t/**\n\t * Retrieves documents.\n\t *\n\t * @param args - Configure which documents are retrieved.\n\t * @returns A paginated set of documents.\n\t */\n\tasync getDocuments(args: CoreApiDocumentsPayload): Promise<CoreApiDocumentsResponse> {\n\t\treturn this.coreApiClient.getDocuments(args)\n\t}\n\n\t/**\n\t * Creates a release.\n\t *\n\t * @param label - The label for the release.\n\t * @returns A Promise that resolves when the release is created.\n\t */\n\tasync createRelease(label: string): Promise<{ id: string }> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/releases\", {\n\t\t\tlabel,\n\t\t})\n\t\tthis.failIfNot200(response, `Could not create release ${label}`)\n\t\tprofiler.done({ message: `release '${label}' created` })\n\n\t\treturn response.data\n\t}\n\n\t/**\n\t * Retrieves the migration release.\n\t *\n\t * @returns The migration relese metadata.\n\t */\n\tasync getMigrationRelease(): Promise<Release> {\n\t\tconst releases = await this.coreApiClient.getReleases()\n\t\tconst migrationRelease = releases.find((release) => release.migration)\n\t\tif (!migrationRelease) {\n\t\t\tthrow new Error(`The repository does not have a migration release`)\n\t\t}\n\n\t\treturn migrationRelease\n\t}\n\n\t/**\n\t * Publishes a release.\n\t *\n\t * @param id - The ID of the release.\n\t * @returns A Promise that resolves when the release is published and a new master ref is\n\t * available.\n\t */\n\tasync publishRelease(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst contentApi = this.getContentApiClient()\n\t\tconst masterRef = await contentApi.getMasterRef()\n\t\tawait this.coreApiClient.publishRelease(id)\n\t\tawait this.waitForNewMasterRef(contentApi, masterRef)\n\n\t\tprofiler.done({\n\t\t\tmessage: `release '${id}' published and new master ref available`,\n\t\t})\n\t}\n\n\t/**\n\t * Deletes a repository release.\n\t *\n\t * @param id - The ID of the release to be deleted.\n\t */\n\tasync deleteRelease(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `app/releases/${id}/delete`, {})\n\n\t\tthis.failIfNot200(response, `Could not delete release with id ${id}`)\n\t\tprofiler.done({ message: `release '${id}' deleted` })\n\t}\n\n\t/**\n\t * Creates a preview for a repository.\n\t *\n\t * @param data - The data for creating the preview.\n\t */\n\tasync createPreview(data: Preview): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `previews/new`, data)\n\n\t\tthis.failIfNot200(response, `Could not create preview ${data.name}`)\n\t\tprofiler.done({ message: `preview '${data.name}' created` })\n\n\t\treturn response.data\n\t}\n\n\t/**\n\t * Set the simulator URL (table of slices) for a repository.\n\t *\n\t * @param data - The simulator URL to set.\n\t */\n\tasync setSimulatorURL(simulatorURL: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst repository = await this.coreApiClient.getRepository()\n\t\tawait this.coreApiClient.updateRepository({\n\t\t\t...repository,\n\t\t\tsimulator_url: simulatorURL,\n\t\t})\n\n\t\tprofiler.done({\n\t\t\tmessage: `simulator preview '${simulatorURL}' created`,\n\t\t})\n\t}\n\n\t/**\n\t * Deletes a preview from a repository.\n\t *\n\t * @param id - The ID of the preview to be deleted.\n\t */\n\tasync deletePreview(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, `previews/delete/${id}`, {})\n\n\t\tthis.failIfNot200(response, `Could not delete preview with id ${id}`)\n\t\tprofiler.done({ message: `preview '${id}' deleted` })\n\t}\n\n\t/**\n\t * Create a webhook.\n\t *\n\t * @returns A Promise that resolves with the webhook id.\n\t */\n\tasync createWebhook(\n\t\tname: string,\n\t\turl: string,\n\t\tsecret: string,\n\t\ttriggers: {\n\t\t\tdocumentsPublished?: boolean\n\t\t\tdocumentsUnpublished?: boolean\n\t\t\treleasesCreated?: boolean\n\t\t\treleasesUpdated?: boolean\n\t\t\ttagsCreated?: boolean\n\t\t\ttagsDeleted?: boolean\n\t\t},\n\t\tactive: boolean,\n\t): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(this.name, \"app/settings/webhooks/create\", {\n\t\t\tname,\n\t\t\turl,\n\t\t\tsecret,\n\t\t\tactive: active ? \"on\" : \"off\",\n\t\t\t...triggers,\n\t\t})\n\t\tthis.failIfNot200(response, `Could not create webhook ${name}`)\n\t\tprofiler.done({ message: `webhook '${name}' created` })\n\n\t\treturn response.data.created\n\t}\n\n\t/**\n\t * Deletes a webhook.\n\t *\n\t * @param id - The webhook ID.\n\t */\n\tasync deleteWebhook(id: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.wroomClient.post(\n\t\t\tthis.name,\n\t\t\t`app/settings/webhooks/${id}/delete`,\n\t\t\t{},\n\t\t)\n\n\t\tthis.failIfNot200(response, `Could not delete webhook with id ${id}`)\n\t\tprofiler.done({ message: `webhook '${id}' deleted` })\n\t}\n\n\t/**\n\t * Create Custom Types using the Custom types api.\n\t *\n\t * @param customTypes\n\t */\n\tasync createCustomTypes(customTypes: DynamicCustomTypeModel[]): Promise<void> {\n\t\tawait this.customTypesApiClient.createCustomTypes(customTypes)\n\t}\n\n\tasync deleteCustomType(customTypeId: string): Promise<void> {\n\t\tawait this.customTypesApiClient.deleteCustomType(customTypeId)\n\t}\n\n\t/**\n\t * Create slices using the Custom types api.\n\t *\n\t * @param slices\n\t */\n\tasync createSlices(slices: SharedSliceModel[]): Promise<void> {\n\t\tawait this.customTypesApiClient.createSlices(slices)\n\t}\n\n\t/**\n\t * Create an access token to query private items of the Content api.\n\t *\n\t * @param appName - Mandatory authorized application name\n\t * @param tokenScope - Access token scope. Use \"master\" to when your content api is fully private\n\t * or \"master+releases\" to access private releases\n\t */\n\tasync createContentAPIToken(\n\t\tappName: string,\n\t\ttokenScope: \"master\" | \"master+releases\" = \"master\",\n\t): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\t\ttype AuthorizedAppResponse = {\n\t\t\tid: string\n\t\t\tname: string\n\t\t\twroom_auths: { token: string; scope: \"master\" | \"master+releases\" }[]\n\t\t}\n\t\tconst existingApps: AxiosResponse<AuthorizedAppResponse[]> = await this.wroomClient.get(\n\t\t\tthis.name,\n\t\t\t\"settings/security/contentapi\",\n\t\t)\n\n\t\tthis.failIfNot200(\n\t\t\texistingApps,\n\t\t\t`Could not get status of existing applications to generate a content api token`,\n\t\t)\n\t\tlet app = existingApps.data.find(({ name, wroom_auths }) => {\n\t\t\treturn name === appName && wroom_auths.length > 0\n\t\t})\n\n\t\tif (!app) {\n\t\t\tconst response: AxiosResponse<AuthorizedAppResponse> = await this.wroomClient.post(\n\t\t\t\tthis.name,\n\t\t\t\t\"settings/security/oauthapp\",\n\t\t\t\t{\n\t\t\t\t\tapp_name: appName,\n\t\t\t\t},\n\t\t\t)\n\n\t\t\tthis.failIfNot200(response, `Could not create content api app ${appName}`)\n\t\t\tapp = response.data\n\t\t}\n\n\t\tlet tokenInfo = app.wroom_auths.find(({ scope }) => scope === tokenScope)\n\t\tif (!tokenInfo) {\n\t\t\tconst response = await this.wroomClient.post(this.name, \"settings/security/authorizations\", {\n\t\t\t\tapp: app.id,\n\t\t\t\tscope: tokenScope,\n\t\t\t})\n\t\t\tthis.failIfNot200(\n\t\t\t\tresponse,\n\t\t\t\t`Could not create content api access token for app ${appName} with scope ${tokenScope}`,\n\t\t\t)\n\t\t\ttokenInfo = response.data\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage: `content api access token for app '${appName}' created`,\n\t\t})\n\n\t\tif (!tokenInfo?.token) {\n\t\t\tthrow `Could not create content api access token for app ${appName} with scope ${tokenScope}`\n\t\t}\n\n\t\treturn tokenInfo.token\n\t}\n\n\t/** Create a permanent access token to authenticate to Prismic public apis. */\n\tasync createPermanentAccessToken(): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst token = await this.authApiClient.getMachine2MachineToken(this.name)\n\n\t\tprofiler.done({\n\t\t\tmessage: `machine2machine token created`,\n\t\t})\n\n\t\treturn token\n\t}\n\n\t/**\n\t * Toggle the Role per Locale workflow\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleRolePerLocal(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleRolePerLocal({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Role per local for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Role per local ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Toggle the Custom Roles workflow\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleCustomRoles(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleCustomRoles({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Custom Roles for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Custom Roles ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Toggle the Integration Fields feature\n\t *\n\t * @param enabled - The feature new status\n\t */\n\tasync toggleIntegrationFields(enabled: boolean): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.toggleIntegrationFields({\n\t\t\trepository: this.name,\n\t\t\tenabled: enabled,\n\t\t})\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not ${enabled ? \"enable\" : \"disable\"} Integration Fields for ${this.name}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Integration Fields ${enabled ? \"enabled\" : \"disabled\"}`,\n\t\t})\n\t}\n\n\t/**\n\t * Change the Repository Plan\n\t *\n\t * @param {string} newPlanId - The Id of the new Plan to apply\n\t */\n\tasync changePlan(newPlanId: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.changePlan({\n\t\t\trepository: this.name,\n\t\t\tnewPlanId: newPlanId,\n\t\t\tbypassManualBilling: true, // For now the library does not support Stripe features\n\t\t})\n\n\t\tthis.failIfNot200(response, \"Could not change the Repository Plan\")\n\t\tprofiler.done({\n\t\t\tmessage: `Repository Plan changed to ${newPlanId}`,\n\t\t})\n\t}\n\n\t/**\n\t * Add a new user to the repository\n\t *\n\t * @param {string} email - The email of the user\n\t */\n\tasync addUser(email: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.addUserToRepository({\n\t\t\trepository: this.name,\n\t\t\temail: email,\n\t\t})\n\n\t\tconst { data, status } = response\n\t\tconst success =\n\t\t\tstatus === 200 ||\n\t\t\t(status === 409 && JSON.stringify(data).includes(\"already a member of the repo\"))\n\t\tif (!success) {\n\t\t\tlogHttpResponse(response)\n\t\t\tthrow new Error(`Could not add a new user ${email} to the repository`)\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage: `User ${email} was added to the repository`,\n\t\t})\n\t}\n\n\t/**\n\t * Remove a user from the repository\n\t *\n\t * @param {string} email - The email of the user\n\t */\n\tasync removeUser(email: string): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response = await this.manageV2Client.removeUserFromRepository({\n\t\t\trepository: this.name,\n\t\t\temail: email,\n\t\t})\n\n\t\tthis.failIfNot200(response, `Could not remove the user ${email} from the repository`)\n\t\tprofiler.done({\n\t\t\tmessage: `User ${email} was removed from the repository`,\n\t\t})\n\t}\n\n\t/**\n\t * Update the role of a user in a repository\n\t *\n\t * @param {string} email - The email of the user\n\t * @param {string | Record<string, string>} role - The new Role of the user, either a string for\n\t * basic workflow or an object such as `{ \"lang_id\": \"Writer\" }`\n\t *\n\t * Example of roles are\n\t *\n\t * - Administrator\n\t * - Writer\n\t * - Contributor\n\t * - Manager (publisher)\n\t */\n\tasync updateUserRole(email: string, role: string | Record<string, string>): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst response =\n\t\t\ttypeof role === \"string\"\n\t\t\t\t? await this.wroomClient.updateRole(this.name, email, role)\n\t\t\t\t: await this.wroomClient.updateRolePerLocal(this.name, email, role)\n\n\t\tthis.failIfNot200(\n\t\t\tresponse,\n\t\t\t`Could not update the ${\n\t\t\t\ttypeof role === \"string\" ? \"role\" : \"rolePerLocal\"\n\t\t\t} of the user ${email}`,\n\t\t)\n\t\tprofiler.done({\n\t\t\tmessage: `Updated User's ${\n\t\t\t\ttypeof role === \"string\" ? \"role\" : \"rolePerLocal\"\n\t\t\t} for user ${email}`,\n\t\t})\n\t}\n\n\t/**\n\t * Creates a document using the core api. If the Core api format is too specific, use the\n\t * migration api client to create a document with the MigrationApiClient. See the\n\t * `getMigrationApiClient()` method.\n\t *\n\t * @example\n\t * \tTo create a document by converting it from the Page Builder to\n\t * \tCore api format\n\t *\n\t * \t```js\n\t * \timport { DocumentLegacy, UIDContentType } from '@prismicio/types-internal/lib/content';\n\t *\n\t * \tconst document = {\n\t * \ttitle: 'A new document',\n\t * \tcustom_type_id: 'home-page',\n\t * \tlocale: 'en-gb',\n\t * \tintegration_field_ids: [],\n\t * \ttags: [],\n\t * \tdata: DocumentLegacy.encode({\n\t * \tuid: {\n\t * \t__TYPE__: UIDContentType,\n\t * \tvalue: 'home-page',\n\t * \t},\n\t * \t})\n\t * \t}\n\t * \tawait repository.createDocument(document, 'published');\n\t * \t* ```\n\t * \t```\n\t *\n\t * \t@returns\n\t *\n\t * \t@param document - in the core api format.\n\t *\n\t * \t@param status - status of the document, if published, the function will\n\t * \twait for a new content api master ref to be created\n\t */\n\tasync createDocument(\n\t\tdocument: CoreApiDocumentCreationPayload,\n\t\tstatus: \"draft\" | \"published\",\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst profiler = logger.startTimer()\n\t\tconst result = await this.coreApiClient.createDraft(document)\n\n\t\tlet message = `Document created with id '${result.id}'`\n\t\tif (status === \"published\") {\n\t\t\tconst contentApi = this.getContentApiClient()\n\t\t\tconst masterRef = await contentApi.getMasterRef()\n\t\t\tawait this.coreApiClient.publishDraft(result.id)\n\t\t\tawait this.waitForNewMasterRef(contentApi, masterRef)\n\t\t\tmessage += \", status 'published' and new master ref available\"\n\t\t}\n\t\tprofiler.done({\n\t\t\tmessage,\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * Updates an existing document using the core api by creating a new draft version on top of the\n\t * given base version. If the status is published, the function will, unless disabled, wait for a\n\t * new content api master ref to be created.\n\t *\n\t * @param documentId - The id of the document to update.\n\t * @param data - The new version payload in the core api format.\n\t * @param baseVersionId - The id of the version the draft is created from.\n\t * @param status - Status of the new version, if published, the function will wait for a new\n\t * content api master ref to be created.\n\t * @param options - Additional options.\n\t * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master\n\t * ref to be available (default false). Set to true to return without waiting for the\n\t * projection.\n\t * @returns The updated document, including the new version's id. When publishing, the document is\n\t * retrieved again after publication so that the returned versions reflect the published state.\n\t */\n\tasync updateDocument(\n\t\tdocumentId: string,\n\t\tdata: CoreApiDocumentUpdatePayload,\n\t\tbaseVersionId: string,\n\t\tstatus: \"draft\" | \"published\",\n\t\toptions: { skipMasterRefWait?: boolean } = {},\n\t): Promise<CoreApiDocumentCreationResponse> {\n\t\tconst { skipMasterRefWait = false } = options\n\t\tconst profiler = logger.startTimer()\n\t\tconst draft = await this.coreApiClient.updateDraft(documentId, data, baseVersionId)\n\n\t\tif (status === \"draft\") {\n\t\t\tprofiler.done({ message: `Document '${documentId}' updated` })\n\n\t\t\treturn draft\n\t\t}\n\n\t\tlet message = `Document '${documentId}' updated, status 'published'`\n\t\tif (skipMasterRefWait) {\n\t\t\tawait this.coreApiClient.publishDraft(documentId)\n\t\t} else {\n\t\t\tconst contentApi = this.getContentApiClient()\n\t\t\tconst masterRef = await contentApi.getMasterRef()\n\t\t\tawait this.coreApiClient.publishDraft(documentId)\n\t\t\tawait this.waitForNewMasterRef(contentApi, masterRef)\n\t\t\tmessage += \" and new master ref available\"\n\t\t}\n\n\t\tconst { results } = await this.coreApiClient.getDocuments({\n\t\t\tdocumentIds: [documentId],\n\t\t\tlimit: 1,\n\t\t})\n\t\tconst publishedDocument = results[0]\n\t\tif (!publishedDocument) {\n\t\t\tthrow new Error(`Could not retrieve document '${documentId}' after publication`)\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage,\n\t\t})\n\n\t\treturn publishedDocument\n\t}\n\n\t/**\n\t * Unpublishes (archives) a live document using the core api. Unless disabled, waits for a new\n\t * content api master ref to be available.\n\t *\n\t * @param documentId - The id of the document to unpublish.\n\t * @param options - Additional options.\n\t * @param options.skipMasterRefWait - Skip waiting for a new content api master ref to be\n\t * available (default false). Set to true to return without waiting for the projection.\n\t */\n\tasync unpublishDocument(\n\t\tdocumentId: string,\n\t\toptions: { skipMasterRefWait?: boolean } = {},\n\t): Promise<void> {\n\t\tconst { skipMasterRefWait = false } = options\n\t\tconst profiler = logger.startTimer()\n\n\t\tif (skipMasterRefWait) {\n\t\t\tawait this.coreApiClient.unpublishDocument(documentId)\n\t\t\tprofiler.done({ message: `Document '${documentId}' unpublished` })\n\n\t\t\treturn\n\t\t}\n\n\t\tconst contentApi = this.getContentApiClient()\n\t\tconst masterRef = await contentApi.getMasterRef()\n\t\tawait this.coreApiClient.unpublishDocument(documentId)\n\t\tawait this.waitForNewMasterRef(contentApi, masterRef)\n\n\t\tprofiler.done({\n\t\t\tmessage: `Document '${documentId}' unpublished and new master ref available`,\n\t\t})\n\t}\n\n\t/**\n\t * Retrieves data for a specific document version.\n\t *\n\t * @param versionId - The document's version ID.\n\t * @returns The document's version data.\n\t */\n\tasync getDocumentData(versionId: string): Promise<CoreApiDocumentData> {\n\t\treturn await this.coreApiClient.getDocumentData(versionId)\n\t}\n\n\tasync setupIntegrationFields(integrationFields: IntegrationFieldConfig[]): Promise<void> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tif (!this.integrationFieldsClient) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Integration Fields client not found. Did you provide a integration fields api url in the configuration?\",\n\t\t\t)\n\t\t}\n\n\t\tawait this.integrationFieldsClient.setupIntegrationFields(integrationFields)\n\t\tprofiler.done({\n\t\t\tmessage: `Integration Fields setup`,\n\t\t})\n\t}\n\n\tprivate async waitForNewMasterRef(\n\t\tcontentApi: ContentApiClient,\n\t\tpreviousMasterRef: string,\n\t): Promise<void> {\n\t\tawait expect\n\t\t\t.poll(async () => contentApi.getMasterRef(), {\n\t\t\t\ttimeout: 10_000,\n\t\t\t\tmessage: \"Waiting for new master ref to be available\",\n\t\t\t})\n\t\t\t.not.toBe(previousMasterRef)\n\t}\n}\n\nexport type RepositoryConfig = {\n\tcustomLocale?: CustomLocale\n\tlocales?: string[]\n\tdefaultLocale?: string\n\tslices?: SharedSliceModel[]\n\tcustomTypes?: DynamicCustomTypeModel[]\n\tpreview?: Preview\n\tsimulatorURL?: string\n\trolePerLocal?: boolean\n\tcustomRoles?: boolean\n\tintegrationFields?: IntegrationFieldConfig[]\n}\n\nexport type Preview = {\n\tname: string\n\twebsiteURL: string\n\tresolverPath: string\n}\n\nexport type CustomLocale = {\n\tlang: {\n\t\tlabel: string\n\t\tid: string\n\t\tuseStandardAnalyzer?: boolean\n\t}\n\tregion: {\n\t\tlabel: string\n\t\tid: string\n\t}\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prismicio/e2e-tests-utils",
3
- "version": "1.19.0-pr.37.21fc0dd",
3
+ "version": "1.19.0-pr.37.3a87a0c",
4
4
  "description": "A collection of utilities for to manage Prismic test data",
5
5
  "keywords": [
6
6
  "prismic",
@@ -68,6 +68,7 @@ export type CoreApiDocumentsPayload = {
68
68
  limit?: number
69
69
  statuses?: string[]
70
70
  groupLangIds?: string[]
71
+ documentIds?: string[]
71
72
  }
72
73
 
73
74
  export type CoreApiDocumentsResponse = {
@@ -320,12 +320,7 @@ export class RepositoryManager {
320
320
  const contentApi = this.getContentApiClient()
321
321
  const masterRef = await contentApi.getMasterRef()
322
322
  await this.coreApiClient.publishRelease(id)
323
- await expect
324
- .poll(async () => contentApi.getMasterRef(), {
325
- timeout: 10_000,
326
- message: "Waiting for new master ref to be available",
327
- })
328
- .not.toBe(masterRef)
323
+ await this.waitForNewMasterRef(contentApi, masterRef)
329
324
 
330
325
  profiler.done({
331
326
  message: `release '${id}' published and new master ref available`,
@@ -763,12 +758,7 @@ export class RepositoryManager {
763
758
  const contentApi = this.getContentApiClient()
764
759
  const masterRef = await contentApi.getMasterRef()
765
760
  await this.coreApiClient.publishDraft(result.id)
766
- await expect
767
- .poll(async () => contentApi.getMasterRef(), {
768
- timeout: 10_000,
769
- message: "Waiting for new master ref to be available",
770
- })
771
- .not.toBe(masterRef)
761
+ await this.waitForNewMasterRef(contentApi, masterRef)
772
762
  message += ", status 'published' and new master ref available"
773
763
  }
774
764
  profiler.done({
@@ -792,7 +782,8 @@ export class RepositoryManager {
792
782
  * @param options.skipMasterRefWait - When publishing, skip waiting for a new content api master
793
783
  * ref to be available (default false). Set to true to return without waiting for the
794
784
  * projection.
795
- * @returns The updated document, including the new version's id.
785
+ * @returns The updated document, including the new version's id. When publishing, the document is
786
+ * retrieved again after publication so that the returned versions reflect the published state.
796
787
  */
797
788
  async updateDocument(
798
789
  documentId: string,
@@ -803,31 +794,39 @@ export class RepositoryManager {
803
794
  ): Promise<CoreApiDocumentCreationResponse> {
804
795
  const { skipMasterRefWait = false } = options
805
796
  const profiler = logger.startTimer()
806
- const result = await this.coreApiClient.updateDraft(documentId, data, baseVersionId)
797
+ const draft = await this.coreApiClient.updateDraft(documentId, data, baseVersionId)
807
798
 
808
- let message = `Document '${documentId}' updated`
809
- if (status === "published") {
810
- if (skipMasterRefWait) {
811
- await this.coreApiClient.publishDraft(documentId)
812
- message += ", status 'published'"
813
- } else {
814
- const contentApi = this.getContentApiClient()
815
- const masterRef = await contentApi.getMasterRef()
816
- await this.coreApiClient.publishDraft(documentId)
817
- await expect
818
- .poll(async () => contentApi.getMasterRef(), {
819
- timeout: 10_000,
820
- message: "Waiting for new master ref to be available",
821
- })
822
- .not.toBe(masterRef)
823
- message += ", status 'published' and new master ref available"
824
- }
799
+ if (status === "draft") {
800
+ profiler.done({ message: `Document '${documentId}' updated` })
801
+
802
+ return draft
803
+ }
804
+
805
+ let message = `Document '${documentId}' updated, status 'published'`
806
+ if (skipMasterRefWait) {
807
+ await this.coreApiClient.publishDraft(documentId)
808
+ } else {
809
+ const contentApi = this.getContentApiClient()
810
+ const masterRef = await contentApi.getMasterRef()
811
+ await this.coreApiClient.publishDraft(documentId)
812
+ await this.waitForNewMasterRef(contentApi, masterRef)
813
+ message += " and new master ref available"
814
+ }
815
+
816
+ const { results } = await this.coreApiClient.getDocuments({
817
+ documentIds: [documentId],
818
+ limit: 1,
819
+ })
820
+ const publishedDocument = results[0]
821
+ if (!publishedDocument) {
822
+ throw new Error(`Could not retrieve document '${documentId}' after publication`)
825
823
  }
824
+
826
825
  profiler.done({
827
826
  message,
828
827
  })
829
828
 
830
- return result
829
+ return publishedDocument
831
830
  }
832
831
 
833
832
  /**
@@ -856,12 +855,7 @@ export class RepositoryManager {
856
855
  const contentApi = this.getContentApiClient()
857
856
  const masterRef = await contentApi.getMasterRef()
858
857
  await this.coreApiClient.unpublishDocument(documentId)
859
- await expect
860
- .poll(async () => contentApi.getMasterRef(), {
861
- timeout: 10_000,
862
- message: "Waiting for new master ref to be available",
863
- })
864
- .not.toBe(masterRef)
858
+ await this.waitForNewMasterRef(contentApi, masterRef)
865
859
 
866
860
  profiler.done({
867
861
  message: `Document '${documentId}' unpublished and new master ref available`,
@@ -892,6 +886,18 @@ export class RepositoryManager {
892
886
  message: `Integration Fields setup`,
893
887
  })
894
888
  }
889
+
890
+ private async waitForNewMasterRef(
891
+ contentApi: ContentApiClient,
892
+ previousMasterRef: string,
893
+ ): Promise<void> {
894
+ await expect
895
+ .poll(async () => contentApi.getMasterRef(), {
896
+ timeout: 10_000,
897
+ message: "Waiting for new master ref to be available",
898
+ })
899
+ .not.toBe(previousMasterRef)
900
+ }
895
901
  }
896
902
 
897
903
  export type RepositoryConfig = {