@prismicio/e2e-tests-utils 1.18.0 → 1.19.0-canary.d349d21

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.
Files changed (159) hide show
  1. package/README.md +24 -27
  2. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  3. package/dist/clients/apiClient.cjs +38 -38
  4. package/dist/clients/apiClient.cjs.map +1 -1
  5. package/dist/clients/apiClient.d.cts +30 -0
  6. package/dist/clients/apiClient.d.cts.map +1 -0
  7. package/dist/clients/apiClient.d.ts +23 -23
  8. package/dist/clients/apiClient.d.ts.map +1 -0
  9. package/dist/clients/apiClient.js +38 -38
  10. package/dist/clients/apiClient.js.map +1 -1
  11. package/dist/clients/assetApi.cjs +81 -93
  12. package/dist/clients/assetApi.cjs.map +1 -1
  13. package/dist/clients/assetApi.d.cts +105 -0
  14. package/dist/clients/assetApi.d.cts.map +1 -0
  15. package/dist/clients/assetApi.d.ts +96 -97
  16. package/dist/clients/assetApi.d.ts.map +1 -0
  17. package/dist/clients/assetApi.js +79 -91
  18. package/dist/clients/assetApi.js.map +1 -1
  19. package/dist/clients/authenticationApi.cjs +66 -73
  20. package/dist/clients/authenticationApi.cjs.map +1 -1
  21. package/dist/clients/authenticationApi.d.cts +20 -0
  22. package/dist/clients/authenticationApi.d.cts.map +1 -0
  23. package/dist/clients/authenticationApi.d.ts +18 -13
  24. package/dist/clients/authenticationApi.d.ts.map +1 -0
  25. package/dist/clients/authenticationApi.js +65 -72
  26. package/dist/clients/authenticationApi.js.map +1 -1
  27. package/dist/clients/contentApi.cjs +94 -103
  28. package/dist/clients/contentApi.cjs.map +1 -1
  29. package/dist/clients/contentApi.d.cts +116 -0
  30. package/dist/clients/contentApi.d.cts.map +1 -0
  31. package/dist/clients/contentApi.d.ts +102 -98
  32. package/dist/clients/contentApi.d.ts.map +1 -0
  33. package/dist/clients/contentApi.js +94 -103
  34. package/dist/clients/contentApi.js.map +1 -1
  35. package/dist/clients/coreApi.cjs +154 -145
  36. package/dist/clients/coreApi.cjs.map +1 -1
  37. package/dist/clients/coreApi.d.cts +143 -0
  38. package/dist/clients/coreApi.d.cts.map +1 -0
  39. package/dist/clients/coreApi.d.ts +132 -109
  40. package/dist/clients/coreApi.d.ts.map +1 -0
  41. package/dist/clients/coreApi.js +153 -144
  42. package/dist/clients/coreApi.js.map +1 -1
  43. package/dist/clients/customTypesApi.cjs +90 -99
  44. package/dist/clients/customTypesApi.cjs.map +1 -1
  45. package/dist/clients/customTypesApi.d.cts +46 -0
  46. package/dist/clients/customTypesApi.d.cts.map +1 -0
  47. package/dist/clients/customTypesApi.d.ts +45 -45
  48. package/dist/clients/customTypesApi.d.ts.map +1 -0
  49. package/dist/clients/customTypesApi.js +87 -98
  50. package/dist/clients/customTypesApi.js.map +1 -1
  51. package/dist/clients/integrationFields.cjs +96 -87
  52. package/dist/clients/integrationFields.cjs.map +1 -1
  53. package/dist/clients/integrationFields.d.cts +30 -0
  54. package/dist/clients/integrationFields.d.cts.map +1 -0
  55. package/dist/clients/integrationFields.d.ts +27 -22
  56. package/dist/clients/integrationFields.d.ts.map +1 -0
  57. package/dist/clients/integrationFields.js +93 -86
  58. package/dist/clients/integrationFields.js.map +1 -1
  59. package/dist/clients/manageV2.cjs +154 -171
  60. package/dist/clients/manageV2.cjs.map +1 -1
  61. package/dist/clients/manageV2.d.cts +105 -0
  62. package/dist/clients/manageV2.d.cts.map +1 -0
  63. package/dist/clients/manageV2.d.ts +103 -111
  64. package/dist/clients/manageV2.d.ts.map +1 -0
  65. package/dist/clients/manageV2.js +149 -169
  66. package/dist/clients/manageV2.js.map +1 -1
  67. package/dist/clients/migrationApi.cjs +37 -36
  68. package/dist/clients/migrationApi.cjs.map +1 -1
  69. package/dist/clients/migrationApi.d.cts +48 -0
  70. package/dist/clients/migrationApi.d.cts.map +1 -0
  71. package/dist/clients/migrationApi.d.ts +45 -39
  72. package/dist/clients/migrationApi.d.ts.map +1 -0
  73. package/dist/clients/migrationApi.js +35 -34
  74. package/dist/clients/migrationApi.js.map +1 -1
  75. package/dist/clients/wroom.cjs +101 -122
  76. package/dist/clients/wroom.cjs.map +1 -1
  77. package/dist/clients/wroom.d.cts +48 -0
  78. package/dist/clients/wroom.d.cts.map +1 -0
  79. package/dist/clients/wroom.d.ts +46 -47
  80. package/dist/clients/wroom.d.ts.map +1 -0
  81. package/dist/clients/wroom.js +99 -122
  82. package/dist/clients/wroom.js.map +1 -1
  83. package/dist/index.cjs +13 -15
  84. package/dist/index.d.cts +8 -0
  85. package/dist/index.d.ts +8 -7
  86. package/dist/index.js +5 -14
  87. package/dist/managers/repositories.cjs +159 -169
  88. package/dist/managers/repositories.cjs.map +1 -1
  89. package/dist/managers/repositories.d.cts +67 -0
  90. package/dist/managers/repositories.d.cts.map +1 -0
  91. package/dist/managers/repositories.d.ts +56 -63
  92. package/dist/managers/repositories.d.ts.map +1 -0
  93. package/dist/managers/repositories.js +148 -159
  94. package/dist/managers/repositories.js.map +1 -1
  95. package/dist/managers/repository.cjs +595 -616
  96. package/dist/managers/repository.cjs.map +1 -1
  97. package/dist/managers/repository.d.cts +341 -0
  98. package/dist/managers/repository.d.cts.map +1 -0
  99. package/dist/managers/repository.d.ts +336 -307
  100. package/dist/managers/repository.d.ts.map +1 -0
  101. package/dist/managers/repository.js +595 -616
  102. package/dist/managers/repository.js.map +1 -1
  103. package/dist/types.d.cts +41 -0
  104. package/dist/types.d.cts.map +1 -0
  105. package/dist/types.d.ts +35 -37
  106. package/dist/types.d.ts.map +1 -0
  107. package/dist/utils/cookies.cjs +19 -17
  108. package/dist/utils/cookies.cjs.map +1 -1
  109. package/dist/utils/cookies.js +20 -18
  110. package/dist/utils/cookies.js.map +1 -1
  111. package/dist/utils/envVariableManager.cjs +33 -34
  112. package/dist/utils/envVariableManager.cjs.map +1 -1
  113. package/dist/utils/envVariableManager.js +34 -35
  114. package/dist/utils/envVariableManager.js.map +1 -1
  115. package/dist/utils/log.cjs +18 -19
  116. package/dist/utils/log.cjs.map +1 -1
  117. package/dist/utils/log.js +18 -21
  118. package/dist/utils/log.js.map +1 -1
  119. package/dist/utils/random.cjs +13 -6
  120. package/dist/utils/random.cjs.map +1 -1
  121. package/dist/utils/random.js +13 -6
  122. package/dist/utils/random.js.map +1 -1
  123. package/dist/utils/strings.cjs +13 -7
  124. package/dist/utils/strings.cjs.map +1 -1
  125. package/dist/utils/strings.js +14 -8
  126. package/dist/utils/strings.js.map +1 -1
  127. package/dist/utils/urls.cjs +21 -10
  128. package/dist/utils/urls.cjs.map +1 -1
  129. package/dist/utils/urls.js +22 -12
  130. package/dist/utils/urls.js.map +1 -1
  131. package/package.json +42 -67
  132. package/src/clients/apiClient.ts +16 -21
  133. package/src/clients/assetApi.ts +75 -82
  134. package/src/clients/authenticationApi.ts +54 -27
  135. package/src/clients/contentApi.ts +111 -129
  136. package/src/clients/coreApi.ts +166 -117
  137. package/src/clients/customTypesApi.ts +54 -74
  138. package/src/clients/integrationFields.ts +59 -74
  139. package/src/clients/manageV2.ts +72 -96
  140. package/src/clients/migrationApi.ts +35 -39
  141. package/src/clients/wroom.ts +42 -56
  142. package/src/index.ts +7 -7
  143. package/src/managers/repositories.ts +85 -108
  144. package/src/managers/repository.ts +410 -378
  145. package/src/types.ts +31 -31
  146. package/src/utils/cookies.ts +8 -8
  147. package/src/utils/envVariableManager.ts +15 -15
  148. package/src/utils/log.ts +17 -21
  149. package/src/utils/random.ts +5 -6
  150. package/src/utils/strings.ts +7 -9
  151. package/src/utils/urls.ts +10 -12
  152. package/dist/index.cjs.map +0 -1
  153. package/dist/index.js.map +0 -1
  154. package/dist/utils/cookies.d.ts +0 -8
  155. package/dist/utils/envVariableManager.d.ts +0 -16
  156. package/dist/utils/log.d.ts +0 -5
  157. package/dist/utils/random.d.ts +0 -8
  158. package/dist/utils/strings.d.ts +0 -11
  159. package/dist/utils/urls.d.ts +0 -16
@@ -1,75 +1,68 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
7
- };
8
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
- const test = require("@playwright/test");
10
- const log = require("../utils/log.cjs");
11
- class AuthenticationApiClient {
12
- constructor(baseURL, auth) {
13
- __publicField(this, "baseURL");
14
- __publicField(this, "auth");
15
- __publicField(this, "authToken");
16
- __publicField(this, "_context");
17
- this.baseURL = baseURL;
18
- this.auth = auth;
19
- }
20
- async getContext() {
21
- if (!this._context) {
22
- this._context = await test.request.newContext({
23
- baseURL: this.baseURL
24
- });
25
- }
26
- return this._context;
27
- }
28
- async login() {
29
- const profiler = log.logger.startTimer();
30
- const context = await this.getContext();
31
- const result = await context.post("login", {
32
- data: {
33
- email: this.auth.email,
34
- password: this.auth.password
35
- }
36
- });
37
- const token = await result.text();
38
- if (!result.ok() || !token) {
39
- log.logPlaywrightApiResponse(result);
40
- throw new Error("Authentication failed, no token received.");
41
- }
42
- profiler.done({
43
- message: `generated user token for ${this.auth.email} from auth service`
44
- });
45
- return token;
46
- }
47
- /** Return an api user token. Creates one if needed. */
48
- async getToken() {
49
- if (!this.authToken) {
50
- this.authToken = await this.login();
51
- }
52
- return this.authToken;
53
- }
54
- /** Return an api user token. Creates one if needed. */
55
- async getMachine2MachineToken(repository) {
56
- if (!this.authToken) {
57
- this.authToken = await this.login();
58
- }
59
- const context = await this.getContext();
60
- const result = await context.get("machine2machine", {
61
- headers: {
62
- Authorization: `Bearer ${this.authToken}`,
63
- repository
64
- }
65
- });
66
- if (!result.ok()) {
67
- log.logPlaywrightApiResponse(result);
68
- throw new Error("Machine2Machine token generation failed, no token received.");
69
- }
70
- const token = (await result.json()).token;
71
- return token;
72
- }
1
+ const require_log = require("../utils/log.cjs");
2
+ let _playwright_test = require("@playwright/test");
3
+ //#region src/clients/authenticationApi.ts
4
+ const AUTH_API_TOKENS_ENV = "PRISMIC_E2E_TEST_UTILS_AUTH_API_TOKENS";
5
+ function getAuthApiTokenFromEnv(email) {
6
+ const value = process.env[AUTH_API_TOKENS_ENV];
7
+ if (!value) return;
8
+ for (const entry of value.split(",")) {
9
+ const separatorIndex = entry.indexOf(":");
10
+ if (separatorIndex === -1) continue;
11
+ const entryEmail = entry.slice(0, separatorIndex).trim();
12
+ const token = entry.slice(separatorIndex + 1).trim();
13
+ if (entryEmail === email && token) return token;
14
+ }
73
15
  }
16
+ /** Client for interacting with the authentication service to manage tokens */
17
+ var AuthenticationApiClient = class {
18
+ baseURL;
19
+ auth;
20
+ authToken;
21
+ _context;
22
+ constructor(baseURL, auth) {
23
+ this.baseURL = baseURL;
24
+ this.auth = auth;
25
+ this.authToken = getAuthApiTokenFromEnv(auth.email);
26
+ if (this.authToken) require_log.logger.info(`using user token for ${auth.email} from ${AUTH_API_TOKENS_ENV}`);
27
+ }
28
+ async getContext() {
29
+ if (!this._context) this._context = await _playwright_test.request.newContext({ baseURL: this.baseURL });
30
+ return this._context;
31
+ }
32
+ async login() {
33
+ const profiler = require_log.logger.startTimer();
34
+ const result = await (await this.getContext()).post("login", { data: {
35
+ email: this.auth.email,
36
+ password: this.auth.password
37
+ } });
38
+ const token = await result.text();
39
+ if (!result.ok() || !token) {
40
+ require_log.logPlaywrightApiResponse(result);
41
+ throw new Error("Authentication failed, no token received.");
42
+ }
43
+ profiler.done({ message: `generated user token for ${this.auth.email} from auth service` });
44
+ return token;
45
+ }
46
+ /** Return an api user token. Creates one if needed. */
47
+ async getToken() {
48
+ if (!this.authToken) this.authToken = await this.login();
49
+ return this.authToken;
50
+ }
51
+ /** Return an api user token. Creates one if needed. */
52
+ async getMachine2MachineToken(repository) {
53
+ if (!this.authToken) this.authToken = await this.login();
54
+ const result = await (await this.getContext()).get("machine2machine", { headers: {
55
+ Authorization: `Bearer ${this.authToken}`,
56
+ repository
57
+ } });
58
+ if (!result.ok()) {
59
+ require_log.logPlaywrightApiResponse(result);
60
+ throw new Error("Machine2Machine token generation failed, no token received.");
61
+ }
62
+ return (await result.json()).token;
63
+ }
64
+ };
65
+ //#endregion
74
66
  exports.AuthenticationApiClient = AuthenticationApiClient;
75
- //# sourceMappingURL=authenticationApi.cjs.map
67
+
68
+ //# sourceMappingURL=authenticationApi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"authenticationApi.cjs","sources":["../../../src/clients/authenticationApi.ts"],"sourcesContent":["import { APIRequestContext, request } from \"@playwright/test\";\n\nimport { AuthConfig } from \"../types\";\n\nimport { logPlaywrightApiResponse, logger } from \"../utils/log\";\n\n/** Client for interacting with the authentication service to manage tokens */\nexport class AuthenticationApiClient {\n\tprivate authToken?: string;\n\tprivate _context?: APIRequestContext;\n\n\tconstructor(\n\t\tprivate readonly baseURL: string,\n\t\tprivate readonly auth: AuthConfig,\n\t) {}\n\n\tprivate async getContext(): Promise<APIRequestContext> {\n\t\tif (!this._context) {\n\t\t\tthis._context = await request.newContext({\n\t\t\t\tbaseURL: this.baseURL,\n\t\t\t});\n\t\t}\n\n\t\treturn this._context;\n\t}\n\n\tprivate async login(): Promise<string> {\n\t\tconst profiler = logger.startTimer();\n\n\t\tconst context = await this.getContext();\n\t\tconst result = await context.post(\"login\", {\n\t\t\tdata: {\n\t\t\t\temail: this.auth.email,\n\t\t\t\tpassword: this.auth.password,\n\t\t\t},\n\t\t});\n\n\t\tconst token = await result.text();\n\t\tif (!result.ok() || !token) {\n\t\t\tlogPlaywrightApiResponse(result);\n\t\t\tthrow new Error(\"Authentication failed, no token received.\");\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage: `generated user token for ${this.auth.email} from auth service`,\n\t\t});\n\n\t\treturn token;\n\t}\n\n\t/** Return an api user token. Creates one if needed. */\n\tasync getToken(): Promise<string> {\n\t\tif (!this.authToken) {\n\t\t\tthis.authToken = await this.login();\n\t\t}\n\n\t\treturn this.authToken;\n\t}\n\n\t/** Return an api user token. Creates one if needed. */\n\tasync getMachine2MachineToken(repository: string): Promise<string> {\n\t\tif (!this.authToken) {\n\t\t\tthis.authToken = await this.login();\n\t\t}\n\n\t\tconst context = await this.getContext();\n\t\tconst result = await context.get(\"machine2machine\", {\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.authToken}`,\n\t\t\t\trepository,\n\t\t\t},\n\t\t});\n\n\t\tif (!result.ok()) {\n\t\t\tlogPlaywrightApiResponse(result);\n\t\t\tthrow new Error(\n\t\t\t\t\"Machine2Machine token generation failed, no token received.\",\n\t\t\t);\n\t\t}\n\t\tconst token = (await result.json()).token;\n\n\t\treturn token;\n\t}\n}\n"],"names":["request","logger","logPlaywrightApiResponse"],"mappings":";;;;;;;;;;MAOa,wBAAuB;AAAA,EAInC,YACkB,SACA,MAAgB;AADhB;AACA;AALV;AACA;AAGU,SAAO,UAAP;AACA,SAAI,OAAJ;AAAA,EACf;AAAA,EAEK,MAAM,aAAU;AACnB,QAAA,CAAC,KAAK,UAAU;AACd,WAAA,WAAW,MAAMA,KAAA,QAAQ,WAAW;AAAA,QACxC,SAAS,KAAK;AAAA,MAAA,CACd;AAAA,IACF;AAEA,WAAO,KAAK;AAAA,EACb;AAAA,EAEQ,MAAM,QAAK;AACZ,UAAA,WAAWC,WAAO;AAElB,UAAA,UAAU,MAAM,KAAK;AAC3B,UAAM,SAAS,MAAM,QAAQ,KAAK,SAAS;AAAA,MAC1C,MAAM;AAAA,QACL,OAAO,KAAK,KAAK;AAAA,QACjB,UAAU,KAAK,KAAK;AAAA,MACpB;AAAA,IAAA,CACD;AAEK,UAAA,QAAQ,MAAM,OAAO;AAC3B,QAAI,CAAC,OAAO,QAAQ,CAAC,OAAO;AAC3BC,UAAA,yBAAyB,MAAM;AACzB,YAAA,IAAI,MAAM,2CAA2C;AAAA,IAC5D;AAEA,aAAS,KAAK;AAAA,MACb,SAAS,4BAA4B,KAAK,KAAK,KAAK;AAAA,IAAA,CACpD;AAEM,WAAA;AAAA,EACR;AAAA;AAAA,EAGA,MAAM,WAAQ;AACT,QAAA,CAAC,KAAK,WAAW;AACf,WAAA,YAAY,MAAM,KAAK;IAC7B;AAEA,WAAO,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,MAAM,wBAAwB,YAAkB;AAC3C,QAAA,CAAC,KAAK,WAAW;AACf,WAAA,YAAY,MAAM,KAAK;IAC7B;AAEM,UAAA,UAAU,MAAM,KAAK;AAC3B,UAAM,SAAS,MAAM,QAAQ,IAAI,mBAAmB;AAAA,MACnD,SAAS;AAAA,QACR,eAAe,UAAU,KAAK,SAAS;AAAA,QACvC;AAAA,MACA;AAAA,IAAA,CACD;AAEG,QAAA,CAAC,OAAO,MAAM;AACjBA,UAAA,yBAAyB,MAAM;AACzB,YAAA,IAAI,MACT,6DAA6D;AAAA,IAE/D;AACA,UAAM,SAAS,MAAM,OAAO,KAAA,GAAQ;AAE7B,WAAA;AAAA,EACR;AACA;;"}
1
+ {"version":3,"file":"authenticationApi.cjs","names":["request","logger"],"sources":["../../src/clients/authenticationApi.ts"],"sourcesContent":["import type { APIRequestContext } from \"@playwright/test\"\nimport { request } from \"@playwright/test\"\n\nimport type { AuthConfig } from \"../types\"\nimport { logPlaywrightApiResponse, logger } from \"../utils/log\"\n\nconst AUTH_API_TOKENS_ENV = \"PRISMIC_E2E_TEST_UTILS_AUTH_API_TOKENS\"\n\nfunction getAuthApiTokenFromEnv(email: string): string | undefined {\n\tconst value = process.env[AUTH_API_TOKENS_ENV]\n\tif (!value) {\n\t\treturn undefined\n\t}\n\n\tfor (const entry of value.split(\",\")) {\n\t\tconst separatorIndex = entry.indexOf(\":\")\n\t\tif (separatorIndex === -1) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst entryEmail = entry.slice(0, separatorIndex).trim()\n\t\tconst token = entry.slice(separatorIndex + 1).trim()\n\t\tif (entryEmail === email && token) {\n\t\t\treturn token\n\t\t}\n\t}\n\n\treturn undefined\n}\n\n/** Client for interacting with the authentication service to manage tokens */\nexport class AuthenticationApiClient {\n\tprivate authToken?: string\n\tprivate _context?: APIRequestContext\n\n\tconstructor(\n\t\tprivate readonly baseURL: string,\n\t\tprivate readonly auth: AuthConfig,\n\t) {\n\t\tthis.authToken = getAuthApiTokenFromEnv(auth.email)\n\t\tif (this.authToken) {\n\t\t\tlogger.info(`using user token for ${auth.email} from ${AUTH_API_TOKENS_ENV}`)\n\t\t}\n\t}\n\n\tprivate async getContext(): Promise<APIRequestContext> {\n\t\tif (!this._context) {\n\t\t\tthis._context = await request.newContext({\n\t\t\t\tbaseURL: this.baseURL,\n\t\t\t})\n\t\t}\n\n\t\treturn this._context\n\t}\n\n\tprivate async login(): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"login\", {\n\t\t\tdata: {\n\t\t\t\temail: this.auth.email,\n\t\t\t\tpassword: this.auth.password,\n\t\t\t},\n\t\t})\n\n\t\tconst token = await result.text()\n\t\tif (!result.ok() || !token) {\n\t\t\tlogPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Authentication failed, no token received.\")\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage: `generated user token for ${this.auth.email} from auth service`,\n\t\t})\n\n\t\treturn token\n\t}\n\n\t/** Return an api user token. Creates one if needed. */\n\tasync getToken(): Promise<string> {\n\t\tif (!this.authToken) {\n\t\t\tthis.authToken = await this.login()\n\t\t}\n\n\t\treturn this.authToken\n\t}\n\n\t/** Return an api user token. Creates one if needed. */\n\tasync getMachine2MachineToken(repository: string): Promise<string> {\n\t\tif (!this.authToken) {\n\t\t\tthis.authToken = await this.login()\n\t\t}\n\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"machine2machine\", {\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.authToken}`,\n\t\t\t\trepository,\n\t\t\t},\n\t\t})\n\n\t\tif (!result.ok()) {\n\t\t\tlogPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Machine2Machine token generation failed, no token received.\")\n\t\t}\n\t\tconst token = (await result.json()).token\n\n\t\treturn token\n\t}\n}\n"],"mappings":";;;AAMA,MAAM,sBAAsB;AAE5B,SAAS,uBAAuB,OAAmC;CAClE,MAAM,QAAQ,QAAQ,IAAI;CAC1B,IAAI,CAAC,OACJ;CAGD,KAAK,MAAM,SAAS,MAAM,MAAM,GAAG,GAAG;EACrC,MAAM,iBAAiB,MAAM,QAAQ,GAAG;EACxC,IAAI,mBAAmB,IACtB;EAGD,MAAM,aAAa,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,KAAK;EACvD,MAAM,QAAQ,MAAM,MAAM,iBAAiB,CAAC,CAAC,CAAC,KAAK;EACnD,IAAI,eAAe,SAAS,OAC3B,OAAO;CAET;AAGD;;AAGA,IAAa,0BAAb,MAAqC;CAKlB;CACA;CALlB;CACA;CAEA,YACC,SACA,MACC;EAFgB,KAAA,UAAA;EACA,KAAA,OAAA;EAEjB,KAAK,YAAY,uBAAuB,KAAK,KAAK;EAClD,IAAI,KAAK,WACR,YAAA,OAAO,KAAK,wBAAwB,KAAK,MAAM,QAAQ,qBAAqB;CAE9E;CAEA,MAAc,aAAyC;EACtD,IAAI,CAAC,KAAK,UACT,KAAK,WAAW,MAAMA,iBAAAA,QAAQ,WAAW,EACxC,SAAS,KAAK,QACf,CAAC;EAGF,OAAO,KAAK;CACb;CAEA,MAAc,QAAyB;EACtC,MAAM,WAAWC,YAAAA,OAAO,WAAW;EAGnC,MAAM,SAAS,OAAM,MADC,KAAK,WAAW,EAAA,CACT,KAAK,SAAS,EAC1C,MAAM;GACL,OAAO,KAAK,KAAK;GACjB,UAAU,KAAK,KAAK;EACrB,EACD,CAAC;EAED,MAAM,QAAQ,MAAM,OAAO,KAAK;EAChC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;GAC3B,YAAA,yBAAyB,MAAM;GAC/B,MAAM,IAAI,MAAM,2CAA2C;EAC5D;EAEA,SAAS,KAAK,EACb,SAAS,4BAA4B,KAAK,KAAK,MAAM,oBACtD,CAAC;EAED,OAAO;CACR;;CAGA,MAAM,WAA4B;EACjC,IAAI,CAAC,KAAK,WACT,KAAK,YAAY,MAAM,KAAK,MAAM;EAGnC,OAAO,KAAK;CACb;;CAGA,MAAM,wBAAwB,YAAqC;EAClE,IAAI,CAAC,KAAK,WACT,KAAK,YAAY,MAAM,KAAK,MAAM;EAInC,MAAM,SAAS,OAAM,MADC,KAAK,WAAW,EAAA,CACT,IAAI,mBAAmB,EACnD,SAAS;GACR,eAAe,UAAU,KAAK;GAC9B;EACD,EACD,CAAC;EAED,IAAI,CAAC,OAAO,GAAG,GAAG;GACjB,YAAA,yBAAyB,MAAM;GAC/B,MAAM,IAAI,MAAM,6DAA6D;EAC9E;EAGA,QAFe,MAAM,OAAO,KAAK,EAAA,CAAG;CAGrC;AACD"}
@@ -0,0 +1,20 @@
1
+ import { AuthConfig } from "../types.cjs";
2
+
3
+ //#region src/clients/authenticationApi.d.ts
4
+ /** Client for interacting with the authentication service to manage tokens */
5
+ declare class AuthenticationApiClient {
6
+ private readonly baseURL;
7
+ private readonly auth;
8
+ private authToken?;
9
+ private _context?;
10
+ constructor(baseURL: string, auth: AuthConfig);
11
+ private getContext;
12
+ private login;
13
+ /** Return an api user token. Creates one if needed. */
14
+ getToken(): Promise<string>;
15
+ /** Return an api user token. Creates one if needed. */
16
+ getMachine2MachineToken(repository: string): Promise<string>;
17
+ }
18
+ //#endregion
19
+ export { AuthenticationApiClient };
20
+ //# sourceMappingURL=authenticationApi.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticationApi.d.cts","names":[],"sources":["../../src/clients/authenticationApi.ts"],"mappings":";;;;cA+Ba,uBAAA;EAAA,iBAKM,OAAA;EAAA,iBACA,IAAA;EAAA,QALV,SAAA;EAAA,QACA,QAAA;cAGU,OAAA,UACA,IAAA,EAAM,UAAA;EAAA,QAQV,UAAA;EAAA,QAUA,KAAA;EAkC4C;EATpD,QAAA,IAAY,OAAA;EA3CA;EAoDZ,uBAAA,CAAwB,UAAA,WAAqB,OAAA;AAAA"}
@@ -1,15 +1,20 @@
1
- import { AuthConfig } from "../types";
1
+ import { AuthConfig } from "../types.js";
2
+
3
+ //#region src/clients/authenticationApi.d.ts
2
4
  /** Client for interacting with the authentication service to manage tokens */
3
- export declare class AuthenticationApiClient {
4
- private readonly baseURL;
5
- private readonly auth;
6
- private authToken?;
7
- private _context?;
8
- constructor(baseURL: string, auth: AuthConfig);
9
- private getContext;
10
- private login;
11
- /** Return an api user token. Creates one if needed. */
12
- getToken(): Promise<string>;
13
- /** Return an api user token. Creates one if needed. */
14
- getMachine2MachineToken(repository: string): Promise<string>;
5
+ declare class AuthenticationApiClient {
6
+ private readonly baseURL;
7
+ private readonly auth;
8
+ private authToken?;
9
+ private _context?;
10
+ constructor(baseURL: string, auth: AuthConfig);
11
+ private getContext;
12
+ private login;
13
+ /** Return an api user token. Creates one if needed. */
14
+ getToken(): Promise<string>;
15
+ /** Return an api user token. Creates one if needed. */
16
+ getMachine2MachineToken(repository: string): Promise<string>;
15
17
  }
18
+ //#endregion
19
+ export { AuthenticationApiClient };
20
+ //# sourceMappingURL=authenticationApi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticationApi.d.ts","names":[],"sources":["../../src/clients/authenticationApi.ts"],"mappings":";;;;cA+Ba,uBAAA;EAAA,iBAKM,OAAA;EAAA,iBACA,IAAA;EAAA,QALV,SAAA;EAAA,QACA,QAAA;cAGU,OAAA,UACA,IAAA,EAAM,UAAA;EAAA,QAQV,UAAA;EAAA,QAUA,KAAA;EAkC4C;EATpD,QAAA,IAAY,OAAA;EA3CA;EAoDZ,uBAAA,CAAwB,UAAA,WAAqB,OAAA;AAAA"}
@@ -1,75 +1,68 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => {
4
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- return value;
6
- };
1
+ import { logPlaywrightApiResponse, logger } from "../utils/log.js";
7
2
  import { request } from "@playwright/test";
8
- import { logger, logPlaywrightApiResponse } from "../utils/log.js";
9
- class AuthenticationApiClient {
10
- constructor(baseURL, auth) {
11
- __publicField(this, "baseURL");
12
- __publicField(this, "auth");
13
- __publicField(this, "authToken");
14
- __publicField(this, "_context");
15
- this.baseURL = baseURL;
16
- this.auth = auth;
17
- }
18
- async getContext() {
19
- if (!this._context) {
20
- this._context = await request.newContext({
21
- baseURL: this.baseURL
22
- });
23
- }
24
- return this._context;
25
- }
26
- async login() {
27
- const profiler = logger.startTimer();
28
- const context = await this.getContext();
29
- const result = await context.post("login", {
30
- data: {
31
- email: this.auth.email,
32
- password: this.auth.password
33
- }
34
- });
35
- const token = await result.text();
36
- if (!result.ok() || !token) {
37
- logPlaywrightApiResponse(result);
38
- throw new Error("Authentication failed, no token received.");
39
- }
40
- profiler.done({
41
- message: `generated user token for ${this.auth.email} from auth service`
42
- });
43
- return token;
44
- }
45
- /** Return an api user token. Creates one if needed. */
46
- async getToken() {
47
- if (!this.authToken) {
48
- this.authToken = await this.login();
49
- }
50
- return this.authToken;
51
- }
52
- /** Return an api user token. Creates one if needed. */
53
- async getMachine2MachineToken(repository) {
54
- if (!this.authToken) {
55
- this.authToken = await this.login();
56
- }
57
- const context = await this.getContext();
58
- const result = await context.get("machine2machine", {
59
- headers: {
60
- Authorization: `Bearer ${this.authToken}`,
61
- repository
62
- }
63
- });
64
- if (!result.ok()) {
65
- logPlaywrightApiResponse(result);
66
- throw new Error("Machine2Machine token generation failed, no token received.");
67
- }
68
- const token = (await result.json()).token;
69
- return token;
70
- }
3
+ //#region src/clients/authenticationApi.ts
4
+ const AUTH_API_TOKENS_ENV = "PRISMIC_E2E_TEST_UTILS_AUTH_API_TOKENS";
5
+ function getAuthApiTokenFromEnv(email) {
6
+ const value = process.env[AUTH_API_TOKENS_ENV];
7
+ if (!value) return;
8
+ for (const entry of value.split(",")) {
9
+ const separatorIndex = entry.indexOf(":");
10
+ if (separatorIndex === -1) continue;
11
+ const entryEmail = entry.slice(0, separatorIndex).trim();
12
+ const token = entry.slice(separatorIndex + 1).trim();
13
+ if (entryEmail === email && token) return token;
14
+ }
71
15
  }
72
- export {
73
- AuthenticationApiClient
16
+ /** Client for interacting with the authentication service to manage tokens */
17
+ var AuthenticationApiClient = class {
18
+ baseURL;
19
+ auth;
20
+ authToken;
21
+ _context;
22
+ constructor(baseURL, auth) {
23
+ this.baseURL = baseURL;
24
+ this.auth = auth;
25
+ this.authToken = getAuthApiTokenFromEnv(auth.email);
26
+ if (this.authToken) logger.info(`using user token for ${auth.email} from ${AUTH_API_TOKENS_ENV}`);
27
+ }
28
+ async getContext() {
29
+ if (!this._context) this._context = await request.newContext({ baseURL: this.baseURL });
30
+ return this._context;
31
+ }
32
+ async login() {
33
+ const profiler = logger.startTimer();
34
+ const result = await (await this.getContext()).post("login", { data: {
35
+ email: this.auth.email,
36
+ password: this.auth.password
37
+ } });
38
+ const token = await result.text();
39
+ if (!result.ok() || !token) {
40
+ logPlaywrightApiResponse(result);
41
+ throw new Error("Authentication failed, no token received.");
42
+ }
43
+ profiler.done({ message: `generated user token for ${this.auth.email} from auth service` });
44
+ return token;
45
+ }
46
+ /** Return an api user token. Creates one if needed. */
47
+ async getToken() {
48
+ if (!this.authToken) this.authToken = await this.login();
49
+ return this.authToken;
50
+ }
51
+ /** Return an api user token. Creates one if needed. */
52
+ async getMachine2MachineToken(repository) {
53
+ if (!this.authToken) this.authToken = await this.login();
54
+ const result = await (await this.getContext()).get("machine2machine", { headers: {
55
+ Authorization: `Bearer ${this.authToken}`,
56
+ repository
57
+ } });
58
+ if (!result.ok()) {
59
+ logPlaywrightApiResponse(result);
60
+ throw new Error("Machine2Machine token generation failed, no token received.");
61
+ }
62
+ return (await result.json()).token;
63
+ }
74
64
  };
75
- //# sourceMappingURL=authenticationApi.js.map
65
+ //#endregion
66
+ export { AuthenticationApiClient };
67
+
68
+ //# sourceMappingURL=authenticationApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"authenticationApi.js","sources":["../../../src/clients/authenticationApi.ts"],"sourcesContent":["import { APIRequestContext, request } from \"@playwright/test\";\n\nimport { AuthConfig } from \"../types\";\n\nimport { logPlaywrightApiResponse, logger } from \"../utils/log\";\n\n/** Client for interacting with the authentication service to manage tokens */\nexport class AuthenticationApiClient {\n\tprivate authToken?: string;\n\tprivate _context?: APIRequestContext;\n\n\tconstructor(\n\t\tprivate readonly baseURL: string,\n\t\tprivate readonly auth: AuthConfig,\n\t) {}\n\n\tprivate async getContext(): Promise<APIRequestContext> {\n\t\tif (!this._context) {\n\t\t\tthis._context = await request.newContext({\n\t\t\t\tbaseURL: this.baseURL,\n\t\t\t});\n\t\t}\n\n\t\treturn this._context;\n\t}\n\n\tprivate async login(): Promise<string> {\n\t\tconst profiler = logger.startTimer();\n\n\t\tconst context = await this.getContext();\n\t\tconst result = await context.post(\"login\", {\n\t\t\tdata: {\n\t\t\t\temail: this.auth.email,\n\t\t\t\tpassword: this.auth.password,\n\t\t\t},\n\t\t});\n\n\t\tconst token = await result.text();\n\t\tif (!result.ok() || !token) {\n\t\t\tlogPlaywrightApiResponse(result);\n\t\t\tthrow new Error(\"Authentication failed, no token received.\");\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage: `generated user token for ${this.auth.email} from auth service`,\n\t\t});\n\n\t\treturn token;\n\t}\n\n\t/** Return an api user token. Creates one if needed. */\n\tasync getToken(): Promise<string> {\n\t\tif (!this.authToken) {\n\t\t\tthis.authToken = await this.login();\n\t\t}\n\n\t\treturn this.authToken;\n\t}\n\n\t/** Return an api user token. Creates one if needed. */\n\tasync getMachine2MachineToken(repository: string): Promise<string> {\n\t\tif (!this.authToken) {\n\t\t\tthis.authToken = await this.login();\n\t\t}\n\n\t\tconst context = await this.getContext();\n\t\tconst result = await context.get(\"machine2machine\", {\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.authToken}`,\n\t\t\t\trepository,\n\t\t\t},\n\t\t});\n\n\t\tif (!result.ok()) {\n\t\t\tlogPlaywrightApiResponse(result);\n\t\t\tthrow new Error(\n\t\t\t\t\"Machine2Machine token generation failed, no token received.\",\n\t\t\t);\n\t\t}\n\t\tconst token = (await result.json()).token;\n\n\t\treturn token;\n\t}\n}\n"],"names":[],"mappings":";;;;;;;;MAOa,wBAAuB;AAAA,EAInC,YACkB,SACA,MAAgB;AADhB;AACA;AALV;AACA;AAGU,SAAO,UAAP;AACA,SAAI,OAAJ;AAAA,EACf;AAAA,EAEK,MAAM,aAAU;AACnB,QAAA,CAAC,KAAK,UAAU;AACd,WAAA,WAAW,MAAM,QAAQ,WAAW;AAAA,QACxC,SAAS,KAAK;AAAA,MAAA,CACd;AAAA,IACF;AAEA,WAAO,KAAK;AAAA,EACb;AAAA,EAEQ,MAAM,QAAK;AACZ,UAAA,WAAW,OAAO;AAElB,UAAA,UAAU,MAAM,KAAK;AAC3B,UAAM,SAAS,MAAM,QAAQ,KAAK,SAAS;AAAA,MAC1C,MAAM;AAAA,QACL,OAAO,KAAK,KAAK;AAAA,QACjB,UAAU,KAAK,KAAK;AAAA,MACpB;AAAA,IAAA,CACD;AAEK,UAAA,QAAQ,MAAM,OAAO;AAC3B,QAAI,CAAC,OAAO,QAAQ,CAAC,OAAO;AAC3B,+BAAyB,MAAM;AACzB,YAAA,IAAI,MAAM,2CAA2C;AAAA,IAC5D;AAEA,aAAS,KAAK;AAAA,MACb,SAAS,4BAA4B,KAAK,KAAK,KAAK;AAAA,IAAA,CACpD;AAEM,WAAA;AAAA,EACR;AAAA;AAAA,EAGA,MAAM,WAAQ;AACT,QAAA,CAAC,KAAK,WAAW;AACf,WAAA,YAAY,MAAM,KAAK;IAC7B;AAEA,WAAO,KAAK;AAAA,EACb;AAAA;AAAA,EAGA,MAAM,wBAAwB,YAAkB;AAC3C,QAAA,CAAC,KAAK,WAAW;AACf,WAAA,YAAY,MAAM,KAAK;IAC7B;AAEM,UAAA,UAAU,MAAM,KAAK;AAC3B,UAAM,SAAS,MAAM,QAAQ,IAAI,mBAAmB;AAAA,MACnD,SAAS;AAAA,QACR,eAAe,UAAU,KAAK,SAAS;AAAA,QACvC;AAAA,MACA;AAAA,IAAA,CACD;AAEG,QAAA,CAAC,OAAO,MAAM;AACjB,+BAAyB,MAAM;AACzB,YAAA,IAAI,MACT,6DAA6D;AAAA,IAE/D;AACA,UAAM,SAAS,MAAM,OAAO,KAAA,GAAQ;AAE7B,WAAA;AAAA,EACR;AACA;"}
1
+ {"version":3,"file":"authenticationApi.js","names":[],"sources":["../../src/clients/authenticationApi.ts"],"sourcesContent":["import type { APIRequestContext } from \"@playwright/test\"\nimport { request } from \"@playwright/test\"\n\nimport type { AuthConfig } from \"../types\"\nimport { logPlaywrightApiResponse, logger } from \"../utils/log\"\n\nconst AUTH_API_TOKENS_ENV = \"PRISMIC_E2E_TEST_UTILS_AUTH_API_TOKENS\"\n\nfunction getAuthApiTokenFromEnv(email: string): string | undefined {\n\tconst value = process.env[AUTH_API_TOKENS_ENV]\n\tif (!value) {\n\t\treturn undefined\n\t}\n\n\tfor (const entry of value.split(\",\")) {\n\t\tconst separatorIndex = entry.indexOf(\":\")\n\t\tif (separatorIndex === -1) {\n\t\t\tcontinue\n\t\t}\n\n\t\tconst entryEmail = entry.slice(0, separatorIndex).trim()\n\t\tconst token = entry.slice(separatorIndex + 1).trim()\n\t\tif (entryEmail === email && token) {\n\t\t\treturn token\n\t\t}\n\t}\n\n\treturn undefined\n}\n\n/** Client for interacting with the authentication service to manage tokens */\nexport class AuthenticationApiClient {\n\tprivate authToken?: string\n\tprivate _context?: APIRequestContext\n\n\tconstructor(\n\t\tprivate readonly baseURL: string,\n\t\tprivate readonly auth: AuthConfig,\n\t) {\n\t\tthis.authToken = getAuthApiTokenFromEnv(auth.email)\n\t\tif (this.authToken) {\n\t\t\tlogger.info(`using user token for ${auth.email} from ${AUTH_API_TOKENS_ENV}`)\n\t\t}\n\t}\n\n\tprivate async getContext(): Promise<APIRequestContext> {\n\t\tif (!this._context) {\n\t\t\tthis._context = await request.newContext({\n\t\t\t\tbaseURL: this.baseURL,\n\t\t\t})\n\t\t}\n\n\t\treturn this._context\n\t}\n\n\tprivate async login(): Promise<string> {\n\t\tconst profiler = logger.startTimer()\n\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.post(\"login\", {\n\t\t\tdata: {\n\t\t\t\temail: this.auth.email,\n\t\t\t\tpassword: this.auth.password,\n\t\t\t},\n\t\t})\n\n\t\tconst token = await result.text()\n\t\tif (!result.ok() || !token) {\n\t\t\tlogPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Authentication failed, no token received.\")\n\t\t}\n\n\t\tprofiler.done({\n\t\t\tmessage: `generated user token for ${this.auth.email} from auth service`,\n\t\t})\n\n\t\treturn token\n\t}\n\n\t/** Return an api user token. Creates one if needed. */\n\tasync getToken(): Promise<string> {\n\t\tif (!this.authToken) {\n\t\t\tthis.authToken = await this.login()\n\t\t}\n\n\t\treturn this.authToken\n\t}\n\n\t/** Return an api user token. Creates one if needed. */\n\tasync getMachine2MachineToken(repository: string): Promise<string> {\n\t\tif (!this.authToken) {\n\t\t\tthis.authToken = await this.login()\n\t\t}\n\n\t\tconst context = await this.getContext()\n\t\tconst result = await context.get(\"machine2machine\", {\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.authToken}`,\n\t\t\t\trepository,\n\t\t\t},\n\t\t})\n\n\t\tif (!result.ok()) {\n\t\t\tlogPlaywrightApiResponse(result)\n\t\t\tthrow new Error(\"Machine2Machine token generation failed, no token received.\")\n\t\t}\n\t\tconst token = (await result.json()).token\n\n\t\treturn token\n\t}\n}\n"],"mappings":";;;AAMA,MAAM,sBAAsB;AAE5B,SAAS,uBAAuB,OAAmC;CAClE,MAAM,QAAQ,QAAQ,IAAI;CAC1B,IAAI,CAAC,OACJ;CAGD,KAAK,MAAM,SAAS,MAAM,MAAM,GAAG,GAAG;EACrC,MAAM,iBAAiB,MAAM,QAAQ,GAAG;EACxC,IAAI,mBAAmB,IACtB;EAGD,MAAM,aAAa,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,KAAK;EACvD,MAAM,QAAQ,MAAM,MAAM,iBAAiB,CAAC,CAAC,CAAC,KAAK;EACnD,IAAI,eAAe,SAAS,OAC3B,OAAO;CAET;AAGD;;AAGA,IAAa,0BAAb,MAAqC;CAKlB;CACA;CALlB;CACA;CAEA,YACC,SACA,MACC;EAFgB,KAAA,UAAA;EACA,KAAA,OAAA;EAEjB,KAAK,YAAY,uBAAuB,KAAK,KAAK;EAClD,IAAI,KAAK,WACR,OAAO,KAAK,wBAAwB,KAAK,MAAM,QAAQ,qBAAqB;CAE9E;CAEA,MAAc,aAAyC;EACtD,IAAI,CAAC,KAAK,UACT,KAAK,WAAW,MAAM,QAAQ,WAAW,EACxC,SAAS,KAAK,QACf,CAAC;EAGF,OAAO,KAAK;CACb;CAEA,MAAc,QAAyB;EACtC,MAAM,WAAW,OAAO,WAAW;EAGnC,MAAM,SAAS,OAAM,MADC,KAAK,WAAW,EAAA,CACT,KAAK,SAAS,EAC1C,MAAM;GACL,OAAO,KAAK,KAAK;GACjB,UAAU,KAAK,KAAK;EACrB,EACD,CAAC;EAED,MAAM,QAAQ,MAAM,OAAO,KAAK;EAChC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;GAC3B,yBAAyB,MAAM;GAC/B,MAAM,IAAI,MAAM,2CAA2C;EAC5D;EAEA,SAAS,KAAK,EACb,SAAS,4BAA4B,KAAK,KAAK,MAAM,oBACtD,CAAC;EAED,OAAO;CACR;;CAGA,MAAM,WAA4B;EACjC,IAAI,CAAC,KAAK,WACT,KAAK,YAAY,MAAM,KAAK,MAAM;EAGnC,OAAO,KAAK;CACb;;CAGA,MAAM,wBAAwB,YAAqC;EAClE,IAAI,CAAC,KAAK,WACT,KAAK,YAAY,MAAM,KAAK,MAAM;EAInC,MAAM,SAAS,OAAM,MADC,KAAK,WAAW,EAAA,CACT,IAAI,mBAAmB,EACnD,SAAS;GACR,eAAe,UAAU,KAAK;GAC9B;EACD,EACD,CAAC;EAED,IAAI,CAAC,OAAO,GAAG,GAAG;GACjB,yBAAyB,MAAM;GAC/B,MAAM,IAAI,MAAM,6DAA6D;EAC9E;EAGA,QAFe,MAAM,OAAO,KAAK,EAAA,CAAG;CAGrC;AACD"}
@@ -1,105 +1,96 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
1
+ const require_apiClient = require("./apiClient.cjs");
2
+ //#region src/clients/contentApi.ts
3
+ /**
4
+ * Client to query the Prismic content api. Uses Playwright to benefit from network request traces
5
+ * in your reports. See api docs: https://prismic.io/docs/rest-api-technical-reference
6
+ */
7
+ var ContentApiClient = class extends require_apiClient.AuthenticatedApiClient {
8
+ version;
9
+ accessToken;
10
+ /**
11
+ * @example
12
+ * To instantiate the class:
13
+ *
14
+ * ```js
15
+ * new ContentApiClient("https://my-repo.cdn.prismic.io", {
16
+ * version: "v2",
17
+ * accessToken: "my-secret-token",
18
+ * });
19
+ * ```
20
+ *
21
+ * @param baseURL - The api base URL like https://my-repo.cdn.prismic.io
22
+ * @param config - Optional configuration
23
+ *
24
+ * - {@link config.version}: Api version, default is "v2"
25
+ * - {@link config.accessToken}: Access token for the content api -
26
+ * https://prismic.io/docs/access-token
27
+ */
28
+ constructor(baseURL, config = {}) {
29
+ super(baseURL, config.accessToken || "");
30
+ this.version = config.version || "v2";
31
+ this.accessToken = config.accessToken;
32
+ }
33
+ async get(path, params, headers) {
34
+ const context = await this.getContext();
35
+ const securityParams = this.accessToken ? { access_token: this.accessToken } : {};
36
+ return context.get(path, {
37
+ params: {
38
+ ...securityParams,
39
+ ...params
40
+ },
41
+ headers
42
+ });
43
+ }
44
+ async getAsJson(url, params, headers) {
45
+ return (await this.get(url, params, headers)).json();
46
+ }
47
+ /** Query the graphql api - https://prismic.io/docs/graphql-technical-reference */
48
+ async graphql(ref, query) {
49
+ return this.getAsJson("graphql", { query }, { "Prismic-ref": ref });
50
+ }
51
+ async getRefs() {
52
+ return (await this.getAsJson(`api/${this.version}`)).refs;
53
+ }
54
+ async getMasterRef() {
55
+ const masterRef = (await this.getRefs()).find(({ isMasterRef }) => isMasterRef === true);
56
+ if (!masterRef) throw "No master ref found";
57
+ return masterRef.ref;
58
+ }
59
+ async getRefByReleaseID(releaseID) {
60
+ const release = (await this.getRefs()).find(({ id }) => id === releaseID);
61
+ if (!release) throw `No ref found for release ${releaseID}`;
62
+ return release.ref;
63
+ }
64
+ /** Search documents from the `/api/v<version>/documents/search` endpoint. */
65
+ async search(filters) {
66
+ let ref = filters?.ref;
67
+ if (!ref) ref = await this.getMasterRef();
68
+ return this.getAsJson(`api/${this.version}/documents/search`, {
69
+ ...filters,
70
+ ref
71
+ });
72
+ }
73
+ /**
74
+ * Search for a single document by its it, using the `/api/v<version>/documents/search` endpoint
75
+ * and a default filter.
76
+ */
77
+ async searchByID(id, filters) {
78
+ return this.search({
79
+ ...filters,
80
+ q: `[[at(document.id, "${id}")]]`
81
+ });
82
+ }
83
+ /** Retrieve a single document or undefined if not found. */
84
+ async getDocumentByID(id, filters) {
85
+ const data = await this.searchByID(id, filters);
86
+ switch (data.results_size) {
87
+ case 0: return;
88
+ case 1: return data.results[0];
89
+ default: throw new Error(`Too many documents returned with the same id ${id}`);
90
+ }
91
+ }
7
92
  };
8
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
- const apiClient = require("./apiClient.cjs");
10
- class ContentApiClient extends apiClient.AuthenticatedApiClient {
11
- /**
12
- * @example To instantiate the class:
13
- *
14
- * ```js
15
- * new ContentApiClient("https://my-repo.cdn.prismic.io", {
16
- * version: "v2",
17
- * accessToken: "my-secret-token",
18
- * });
19
- * ```
20
- *
21
- * @param baseURL - the api base URL like https://my-repo.cdn.prismic.io
22
- * @param config - Optional configuration
23
- *
24
- * - {@link config.version}: Api version, default is "v2"
25
- * - {@link config.accessToken}: Access token for the content api -
26
- * https://prismic.io/docs/access-token
27
- */
28
- constructor(baseURL, config = {}) {
29
- super(baseURL, config.accessToken || "");
30
- __publicField(this, "version");
31
- __publicField(this, "accessToken");
32
- this.version = config.version || "v2";
33
- this.accessToken = config.accessToken;
34
- }
35
- async get(path, params, headers) {
36
- const context = await this.getContext();
37
- const securityParams = {
38
- ...this.accessToken ? { access_token: this.accessToken } : {}
39
- };
40
- return context.get(path, {
41
- params: { ...securityParams, ...params },
42
- headers
43
- });
44
- }
45
- async getAsJson(url, params, headers) {
46
- const response = await this.get(url, params, headers);
47
- return response.json();
48
- }
49
- /** Query the graphql api - https://prismic.io/docs/graphql-technical-reference */
50
- async graphql(ref, query) {
51
- return this.getAsJson("graphql", { query }, { "Prismic-ref": ref });
52
- }
53
- async getRefs() {
54
- const data = await this.getAsJson(`api/${this.version}`);
55
- return data.refs;
56
- }
57
- async getMasterRef() {
58
- const refs = await this.getRefs();
59
- const masterRef = refs.find(({ isMasterRef }) => isMasterRef === true);
60
- if (!masterRef) {
61
- throw "No master ref found";
62
- }
63
- return masterRef.ref;
64
- }
65
- async getRefByReleaseID(releaseID) {
66
- const refs = await this.getRefs();
67
- const release = refs.find(({ id }) => id === releaseID);
68
- if (!release) {
69
- throw `No ref found for release ${releaseID}`;
70
- }
71
- return release.ref;
72
- }
73
- /** Search documents from the `/api/v<version>/documents/search` endpoint. */
74
- async search(filters) {
75
- let ref = filters == null ? void 0 : filters.ref;
76
- if (!ref) {
77
- ref = await this.getMasterRef();
78
- }
79
- return this.getAsJson(`api/${this.version}/documents/search`, {
80
- ...filters,
81
- ref
82
- });
83
- }
84
- /**
85
- * Search for a single document by its it, using the
86
- * `/api/v<version>/documents/search` endpoint and a default filter.
87
- */
88
- async searchByID(id, filters) {
89
- return this.search({ ...filters, q: `[[at(document.id, "${id}")]]` });
90
- }
91
- /** Retrieve a single document or undefined if not found. */
92
- async getDocumentByID(id, filters) {
93
- const data = await this.searchByID(id, filters);
94
- switch (data.results_size) {
95
- case 0:
96
- return;
97
- case 1:
98
- return data.results[0];
99
- default:
100
- throw new Error(`Too many documents returned with the same id ${id}`);
101
- }
102
- }
103
- }
93
+ //#endregion
104
94
  exports.ContentApiClient = ContentApiClient;
105
- //# sourceMappingURL=contentApi.cjs.map
95
+
96
+ //# sourceMappingURL=contentApi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"contentApi.cjs","sources":["../../../src/clients/contentApi.ts"],"sourcesContent":["import { APIResponse } from \"@playwright/test\";\n\nimport { AuthenticatedApiClient } from \"./apiClient\";\n\nexport interface ContentApiError {\n\ttype: string;\n\tmessage: string;\n}\nexport interface ContentApiSearchResponse {\n\tpage: number;\n\tresults_per_page: number;\n\tresults_size: number;\n\ttotal_results_size: number;\n\ttotal_pages: number;\n\tnext_page: string | null;\n\tprev_page: string | null;\n\tresults: ContentApiDocument[];\n}\n\nexport interface ContentApiDocument {\n\tid: string;\n\tuid: string | null;\n\turl: string | null;\n\ttype: string;\n\thref: string;\n\ttags: string[];\n\tfirst_publication_date: string;\n\tlast_publication_date: string;\n\tslugs: string[];\n\tlinked_documents: unknown[];\n\tlang: string;\n\talternate_languages: ContentApiAlternateLanguage[];\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tdata: Record<string, any>;\n}\n\nexport interface ContentApiGraphQLResponse {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tdata: Record<string, any>;\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\terrors?: { message: string; locations: any }[];\n}\n\nexport interface ContentApiRef {\n\tid: string;\n\tref: string;\n\tlabel: string;\n\tisMasterRef?: boolean;\n\tscheduledAt?: number | undefined;\n}\n\ninterface ContentApiAlternateLanguage {\n\tid: string;\n\ttype: string;\n\tlang: string;\n\tuid?: string;\n}\n\ninterface ContentApiRepoConfigResponse {\n\trefs: ContentApiRef[];\n\tbookmarks: Record<string, unknown>;\n\ttypes: Record<string, string>;\n\tlanguages: {\n\t\tid: string;\n\t\tname: string;\n\t\tis_master: boolean;\n\t}[];\n\toauth_initiate: string;\n\toauth_token: string;\n\ttags: string[];\n\tlicense: string;\n\tversion: string;\n}\n\ntype SearchQueryParams = {\n\tref?: string;\n\tquery?: string;\n\tq?: string;\n\tgraphQuery?: string;\n\tfetchLinks?: string;\n\torderings?: string;\n\tpageSize?: number;\n\tpage?: number;\n\tlang?: string;\n\tafter?: string;\n\troutes?: string;\n};\n\ntype ApiVersions = \"v1\" | \"v2\";\n\n/**\n * Client to query the Prismic content api. Uses Playwright to benefit from\n * network request traces in your reports. See api docs:\n * https://prismic.io/docs/rest-api-technical-reference\n */\nexport class ContentApiClient extends AuthenticatedApiClient {\n\tprivate version: ApiVersions;\n\tprivate accessToken: string | undefined;\n\n\t/**\n\t * @example To instantiate the class:\n\t *\n\t * ```js\n\t * new ContentApiClient(\"https://my-repo.cdn.prismic.io\", {\n\t * \tversion: \"v2\",\n\t * \taccessToken: \"my-secret-token\",\n\t * });\n\t * ```\n\t *\n\t * @param baseURL - the api base URL like https://my-repo.cdn.prismic.io\n\t * @param config - Optional configuration\n\t *\n\t * - {@link config.version}: Api version, default is \"v2\"\n\t * - {@link config.accessToken}: Access token for the content api -\n\t * https://prismic.io/docs/access-token\n\t */\n\tconstructor(\n\t\tbaseURL: string,\n\t\tconfig: { version?: ApiVersions; accessToken?: string } = {},\n\t) {\n\t\t// Use an empty string as Authorization header in case it is already set globally in the project Playwright config file.\n\t\t// This is because the content api returns an error in case it gets an non-empty invalid Authorization\n\t\t// even though it actually checks authorization from the access_token query parameter.\n\t\tsuper(baseURL, config.accessToken || \"\");\n\t\tthis.version = config.version || \"v2\";\n\t\tthis.accessToken = config.accessToken;\n\t}\n\n\tasync get(\n\t\tpath: string,\n\t\tparams?: SearchQueryParams,\n\t\theaders?: Record<string, string>,\n\t): Promise<APIResponse> {\n\t\tconst context = await this.getContext();\n\t\tconst securityParams = {\n\t\t\t...(this.accessToken ? { access_token: this.accessToken } : {}),\n\t\t};\n\n\t\treturn context.get(path, {\n\t\t\tparams: { ...securityParams, ...params },\n\t\t\theaders,\n\t\t});\n\t}\n\n\tasync getAsJson<T>(\n\t\turl: string,\n\t\tparams?: SearchQueryParams,\n\t\theaders?: Record<string, string>,\n\t): Promise<T> {\n\t\tconst response = await this.get(url, params, headers);\n\n\t\treturn response.json() as T;\n\t}\n\n\t/** Query the graphql api - https://prismic.io/docs/graphql-technical-reference */\n\tasync graphql(\n\t\tref: string,\n\t\tquery: string,\n\t): Promise<ContentApiGraphQLResponse> {\n\t\treturn this.getAsJson<ContentApiGraphQLResponse>(\n\t\t\t\"graphql\",\n\t\t\t{ query },\n\t\t\t{ \"Prismic-ref\": ref },\n\t\t);\n\t}\n\n\tasync getRefs(): Promise<ContentApiRef[]> {\n\t\tconst data = await this.getAsJson<ContentApiRepoConfigResponse>(\n\t\t\t`api/${this.version}`,\n\t\t);\n\n\t\treturn data.refs;\n\t}\n\n\tasync getMasterRef(): Promise<string> {\n\t\tconst refs = await this.getRefs();\n\n\t\tconst masterRef = refs.find(({ isMasterRef }) => isMasterRef === true);\n\t\tif (!masterRef) {\n\t\t\tthrow \"No master ref found\";\n\t\t}\n\n\t\treturn masterRef.ref;\n\t}\n\n\tasync getRefByReleaseID(releaseID: string): Promise<string> {\n\t\tconst refs = await this.getRefs();\n\t\tconst release = refs.find(({ id }) => id === releaseID);\n\t\tif (!release) {\n\t\t\tthrow `No ref found for release ${releaseID}`;\n\t\t}\n\n\t\treturn release.ref;\n\t}\n\n\t/** Search documents from the `/api/v<version>/documents/search` endpoint. */\n\tasync search(filters?: SearchQueryParams): Promise<ContentApiSearchResponse> {\n\t\tlet ref = filters?.ref;\n\t\tif (!ref) {\n\t\t\tref = await this.getMasterRef();\n\t\t}\n\n\t\treturn this.getAsJson<ContentApiSearchResponse>(\n\t\t\t`api/${this.version}/documents/search`,\n\t\t\t{\n\t\t\t\t...filters,\n\t\t\t\tref,\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * Search for a single document by its it, using the\n\t * `/api/v<version>/documents/search` endpoint and a default filter.\n\t */\n\tasync searchByID(\n\t\tid: string,\n\t\tfilters?: SearchQueryParams,\n\t): Promise<ContentApiSearchResponse> {\n\t\treturn this.search({ ...filters, q: `[[at(document.id, \"${id}\")]]` });\n\t}\n\n\t/** Retrieve a single document or undefined if not found. */\n\tasync getDocumentByID(\n\t\tid: string,\n\t\tfilters?: SearchQueryParams,\n\t): Promise<ContentApiDocument | undefined> {\n\t\tconst data = await this.searchByID(id, filters);\n\t\tswitch (data.results_size) {\n\t\t\tcase 0:\n\t\t\t\treturn;\n\t\t\tcase 1:\n\t\t\t\treturn data.results[0];\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Too many documents returned with the same id ${id}`);\n\t\t}\n\t}\n}\n"],"names":["AuthenticatedApiClient"],"mappings":";;;;;;;;;AA+FM,MAAO,yBAAyBA,UAAAA,uBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqB3D,YACC,SACA,SAA0D,IAAE;AAKtD,UAAA,SAAS,OAAO,eAAe,EAAE;AA3BhC;AACA;AA2BF,SAAA,UAAU,OAAO,WAAW;AACjC,SAAK,cAAc,OAAO;AAAA,EAC3B;AAAA,EAEA,MAAM,IACL,MACA,QACA,SAAgC;AAE1B,UAAA,UAAU,MAAM,KAAK;AAC3B,UAAM,iBAAiB;AAAA,MACtB,GAAI,KAAK,cAAc,EAAE,cAAc,KAAK,YAAA,IAAgB;;AAGtD,WAAA,QAAQ,IAAI,MAAM;AAAA,MACxB,QAAQ,EAAE,GAAG,gBAAgB,GAAG,OAAQ;AAAA,MACxC;AAAA,IAAA,CACA;AAAA,EACF;AAAA,EAEA,MAAM,UACL,KACA,QACA,SAAgC;AAEhC,UAAM,WAAW,MAAM,KAAK,IAAI,KAAK,QAAQ,OAAO;AAEpD,WAAO,SAAS;EACjB;AAAA;AAAA,EAGA,MAAM,QACL,KACA,OAAa;AAEN,WAAA,KAAK,UACX,WACA,EAAE,SACF,EAAE,eAAe,IAAA,CAAK;AAAA,EAExB;AAAA,EAEA,MAAM,UAAO;AACZ,UAAM,OAAO,MAAM,KAAK,UACvB,OAAO,KAAK,OAAO,EAAE;AAGtB,WAAO,KAAK;AAAA,EACb;AAAA,EAEA,MAAM,eAAY;AACX,UAAA,OAAO,MAAM,KAAK;AAElB,UAAA,YAAY,KAAK,KAAK,CAAC,EAAE,kBAAkB,gBAAgB,IAAI;AACrE,QAAI,CAAC,WAAW;AACT,YAAA;AAAA,IACP;AAEA,WAAO,UAAU;AAAA,EAClB;AAAA,EAEA,MAAM,kBAAkB,WAAiB;AAClC,UAAA,OAAO,MAAM,KAAK;AAClB,UAAA,UAAU,KAAK,KAAK,CAAC,EAAE,SAAS,OAAO,SAAS;AACtD,QAAI,CAAC,SAAS;AACb,YAAM,4BAA4B,SAAS;AAAA,IAC5C;AAEA,WAAO,QAAQ;AAAA,EAChB;AAAA;AAAA,EAGA,MAAM,OAAO,SAA2B;AACvC,QAAI,MAAM,mCAAS;AACnB,QAAI,CAAC,KAAK;AACH,YAAA,MAAM,KAAK;IAClB;AAEA,WAAO,KAAK,UACX,OAAO,KAAK,OAAO,qBACnB;AAAA,MACC,GAAG;AAAA,MACH;AAAA,IAAA,CACA;AAAA,EAEH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WACL,IACA,SAA2B;AAEpB,WAAA,KAAK,OAAO,EAAE,GAAG,SAAS,GAAG,sBAAsB,EAAE,OAAA,CAAQ;AAAA,EACrE;AAAA;AAAA,EAGA,MAAM,gBACL,IACA,SAA2B;AAE3B,UAAM,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO;AAC9C,YAAQ,KAAK,cAAc;AAAA,MAC1B,KAAK;AACJ;AAAA,MACD,KAAK;AACG,eAAA,KAAK,QAAQ,CAAC;AAAA,MACtB;AACC,cAAM,IAAI,MAAM,gDAAgD,EAAE,EAAE;AAAA,IACtE;AAAA,EACD;AACA;;"}
1
+ {"version":3,"file":"contentApi.cjs","names":["AuthenticatedApiClient"],"sources":["../../src/clients/contentApi.ts"],"sourcesContent":["import type { APIResponse } from \"@playwright/test\"\n\nimport { AuthenticatedApiClient } from \"./apiClient\"\n\nexport interface ContentApiError {\n\ttype: string\n\tmessage: string\n}\nexport interface ContentApiSearchResponse {\n\tpage: number\n\tresults_per_page: number\n\tresults_size: number\n\ttotal_results_size: number\n\ttotal_pages: number\n\tnext_page: string | null\n\tprev_page: string | null\n\tresults: ContentApiDocument[]\n}\n\nexport interface ContentApiDocument {\n\tid: string\n\tuid: string | null\n\turl: string | null\n\ttype: string\n\thref: string\n\ttags: string[]\n\tfirst_publication_date: string\n\tlast_publication_date: string\n\tslugs: string[]\n\tlinked_documents: unknown[]\n\tlang: string\n\talternate_languages: ContentApiAlternateLanguage[]\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tdata: Record<string, any>\n}\n\nexport interface ContentApiGraphQLResponse {\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tdata: Record<string, any>\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\terrors?: { message: string; locations: any }[]\n}\n\nexport interface ContentApiRef {\n\tid: string\n\tref: string\n\tlabel: string\n\tisMasterRef?: boolean\n\tscheduledAt?: number | undefined\n}\n\ninterface ContentApiAlternateLanguage {\n\tid: string\n\ttype: string\n\tlang: string\n\tuid?: string\n}\n\ninterface ContentApiRepoConfigResponse {\n\trefs: ContentApiRef[]\n\tbookmarks: Record<string, unknown>\n\ttypes: Record<string, string>\n\tlanguages: {\n\t\tid: string\n\t\tname: string\n\t\tis_master: boolean\n\t}[]\n\toauth_initiate: string\n\toauth_token: string\n\ttags: string[]\n\tlicense: string\n\tversion: string\n}\n\ntype SearchQueryParams = {\n\tref?: string\n\tquery?: string\n\tq?: string\n\tgraphQuery?: string\n\tfetchLinks?: string\n\torderings?: string\n\tpageSize?: number\n\tpage?: number\n\tlang?: string\n\tafter?: string\n\troutes?: string\n}\n\ntype ApiVersions = \"v1\" | \"v2\"\n\n/**\n * Client to query the Prismic content api. Uses Playwright to benefit from network request traces\n * in your reports. See api docs: https://prismic.io/docs/rest-api-technical-reference\n */\nexport class ContentApiClient extends AuthenticatedApiClient {\n\tprivate version: ApiVersions\n\tprivate accessToken: string | undefined\n\n\t/**\n\t * @example\n\t * \tTo instantiate the class:\n\t *\n\t * \t```js\n\t * \tnew ContentApiClient(\"https://my-repo.cdn.prismic.io\", {\n\t * \tversion: \"v2\",\n\t * \taccessToken: \"my-secret-token\",\n\t * \t});\n\t * \t```\n\t *\n\t * @param baseURL - The api base URL like https://my-repo.cdn.prismic.io\n\t * @param config - Optional configuration\n\t *\n\t * - {@link config.version}: Api version, default is \"v2\"\n\t * - {@link config.accessToken}: Access token for the content api -\n\t * https://prismic.io/docs/access-token\n\t */\n\tconstructor(baseURL: string, config: { version?: ApiVersions; accessToken?: string } = {}) {\n\t\t// Use an empty string as Authorization header in case it is already set globally in the project Playwright config file.\n\t\t// This is because the content api returns an error in case it gets an non-empty invalid Authorization\n\t\t// even though it actually checks authorization from the access_token query parameter.\n\t\tsuper(baseURL, config.accessToken || \"\")\n\t\tthis.version = config.version || \"v2\"\n\t\tthis.accessToken = config.accessToken\n\t}\n\n\tasync get(\n\t\tpath: string,\n\t\tparams?: SearchQueryParams,\n\t\theaders?: Record<string, string>,\n\t): Promise<APIResponse> {\n\t\tconst context = await this.getContext()\n\t\tconst securityParams = this.accessToken\n\t\t\t? { access_token: this.accessToken }\n\t\t\t: ({} as Record<string, never>)\n\n\t\treturn context.get(path, {\n\t\t\tparams: { ...securityParams, ...params },\n\t\t\theaders,\n\t\t})\n\t}\n\n\tasync getAsJson<T>(\n\t\turl: string,\n\t\tparams?: SearchQueryParams,\n\t\theaders?: Record<string, string>,\n\t): Promise<T> {\n\t\tconst response = await this.get(url, params, headers)\n\n\t\treturn response.json() as T\n\t}\n\n\t/** Query the graphql api - https://prismic.io/docs/graphql-technical-reference */\n\tasync graphql(ref: string, query: string): Promise<ContentApiGraphQLResponse> {\n\t\treturn this.getAsJson<ContentApiGraphQLResponse>(\"graphql\", { query }, { \"Prismic-ref\": ref })\n\t}\n\n\tasync getRefs(): Promise<ContentApiRef[]> {\n\t\tconst data = await this.getAsJson<ContentApiRepoConfigResponse>(`api/${this.version}`)\n\n\t\treturn data.refs\n\t}\n\n\tasync getMasterRef(): Promise<string> {\n\t\tconst refs = await this.getRefs()\n\n\t\tconst masterRef = refs.find(({ isMasterRef }) => isMasterRef === true)\n\t\tif (!masterRef) {\n\t\t\tthrow \"No master ref found\"\n\t\t}\n\n\t\treturn masterRef.ref\n\t}\n\n\tasync getRefByReleaseID(releaseID: string): Promise<string> {\n\t\tconst refs = await this.getRefs()\n\t\tconst release = refs.find(({ id }) => id === releaseID)\n\t\tif (!release) {\n\t\t\tthrow `No ref found for release ${releaseID}`\n\t\t}\n\n\t\treturn release.ref\n\t}\n\n\t/** Search documents from the `/api/v<version>/documents/search` endpoint. */\n\tasync search(filters?: SearchQueryParams): Promise<ContentApiSearchResponse> {\n\t\tlet ref = filters?.ref\n\t\tif (!ref) {\n\t\t\tref = await this.getMasterRef()\n\t\t}\n\n\t\treturn this.getAsJson<ContentApiSearchResponse>(`api/${this.version}/documents/search`, {\n\t\t\t...filters,\n\t\t\tref,\n\t\t})\n\t}\n\n\t/**\n\t * Search for a single document by its it, using the `/api/v<version>/documents/search` endpoint\n\t * and a default filter.\n\t */\n\tasync searchByID(id: string, filters?: SearchQueryParams): Promise<ContentApiSearchResponse> {\n\t\treturn this.search({ ...filters, q: `[[at(document.id, \"${id}\")]]` })\n\t}\n\n\t/** Retrieve a single document or undefined if not found. */\n\tasync getDocumentByID(\n\t\tid: string,\n\t\tfilters?: SearchQueryParams,\n\t): Promise<ContentApiDocument | undefined> {\n\t\tconst data = await this.searchByID(id, filters)\n\t\tswitch (data.results_size) {\n\t\t\tcase 0:\n\t\t\t\treturn\n\t\t\tcase 1:\n\t\t\t\treturn data.results[0]\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Too many documents returned with the same id ${id}`)\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;AA8FA,IAAa,mBAAb,cAAsCA,kBAAAA,uBAAuB;CAC5D;CACA;;;;;;;;;;;;;;;;;;;CAoBA,YAAY,SAAiB,SAA0D,CAAC,GAAG;EAI1F,MAAM,SAAS,OAAO,eAAe,EAAE;EACvC,KAAK,UAAU,OAAO,WAAW;EACjC,KAAK,cAAc,OAAO;CAC3B;CAEA,MAAM,IACL,MACA,QACA,SACuB;EACvB,MAAM,UAAU,MAAM,KAAK,WAAW;EACtC,MAAM,iBAAiB,KAAK,cACzB,EAAE,cAAc,KAAK,YAAY,IAChC,CAAC;EAEL,OAAO,QAAQ,IAAI,MAAM;GACxB,QAAQ;IAAE,GAAG;IAAgB,GAAG;GAAO;GACvC;EACD,CAAC;CACF;CAEA,MAAM,UACL,KACA,QACA,SACa;EAGb,QAAO,MAFgB,KAAK,IAAI,KAAK,QAAQ,OAAO,EAAA,CAEpC,KAAK;CACtB;;CAGA,MAAM,QAAQ,KAAa,OAAmD;EAC7E,OAAO,KAAK,UAAqC,WAAW,EAAE,MAAM,GAAG,EAAE,eAAe,IAAI,CAAC;CAC9F;CAEA,MAAM,UAAoC;EAGzC,QAAO,MAFY,KAAK,UAAwC,OAAO,KAAK,SAAS,EAAA,CAEzE;CACb;CAEA,MAAM,eAAgC;EAGrC,MAAM,aAAY,MAFC,KAAK,QAAQ,EAAA,CAET,MAAM,EAAE,kBAAkB,gBAAgB,IAAI;EACrE,IAAI,CAAC,WACJ,MAAM;EAGP,OAAO,UAAU;CAClB;CAEA,MAAM,kBAAkB,WAAoC;EAE3D,MAAM,WAAU,MADG,KAAK,QAAQ,EAAA,CACX,MAAM,EAAE,SAAS,OAAO,SAAS;EACtD,IAAI,CAAC,SACJ,MAAM,4BAA4B;EAGnC,OAAO,QAAQ;CAChB;;CAGA,MAAM,OAAO,SAAgE;EAC5E,IAAI,MAAM,SAAS;EACnB,IAAI,CAAC,KACJ,MAAM,MAAM,KAAK,aAAa;EAG/B,OAAO,KAAK,UAAoC,OAAO,KAAK,QAAQ,oBAAoB;GACvF,GAAG;GACH;EACD,CAAC;CACF;;;;;CAMA,MAAM,WAAW,IAAY,SAAgE;EAC5F,OAAO,KAAK,OAAO;GAAE,GAAG;GAAS,GAAG,sBAAsB,GAAG;EAAM,CAAC;CACrE;;CAGA,MAAM,gBACL,IACA,SAC0C;EAC1C,MAAM,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO;EAC9C,QAAQ,KAAK,cAAb;GACC,KAAK,GACJ;GACD,KAAK,GACJ,OAAO,KAAK,QAAQ;GACrB,SACC,MAAM,IAAI,MAAM,gDAAgD,IAAI;EACtE;CACD;AACD"}