@slicemachine/manager 0.24.15-beta.1 → 0.24.15-beta.11

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 (205) hide show
  1. package/dist/_node_modules/@amplitude/analytics-core/_node_modules/tslib/tslib.es6.cjs.map +1 -1
  2. package/dist/_node_modules/@amplitude/analytics-core/_node_modules/tslib/tslib.es6.js.map +1 -1
  3. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.cjs.map +1 -1
  4. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js.map +1 -1
  5. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.cjs.map +1 -1
  6. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.js.map +1 -1
  7. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.cjs.map +1 -1
  8. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js.map +1 -1
  9. package/dist/_node_modules/@amplitude/analytics-node/_node_modules/tslib/tslib.es6.cjs.map +1 -1
  10. package/dist/_node_modules/@amplitude/analytics-node/_node_modules/tslib/tslib.es6.js.map +1 -1
  11. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.cjs.map +1 -1
  12. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.js.map +1 -1
  13. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.cjs.map +1 -1
  14. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js.map +1 -1
  15. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.cjs.map +1 -1
  16. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.js.map +1 -1
  17. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.cjs.map +1 -1
  18. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.js.map +1 -1
  19. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.cjs.map +1 -1
  20. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.js.map +1 -1
  21. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.cjs.map +1 -1
  22. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.js.map +1 -1
  23. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.cjs +1 -1
  24. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.cjs.map +1 -1
  25. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js +1 -1
  26. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js.map +1 -1
  27. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.cjs.map +1 -1
  28. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.js.map +1 -1
  29. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.cjs.map +1 -1
  30. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js.map +1 -1
  31. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.cjs.map +1 -1
  32. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js.map +1 -1
  33. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.cjs.map +1 -1
  34. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js.map +1 -1
  35. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.cjs.map +1 -1
  36. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.js.map +1 -1
  37. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/Decoder.cjs.map +1 -1
  38. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/Decoder.js.map +1 -1
  39. package/dist/_node_modules/cross-spawn/index.cjs +1 -1
  40. package/dist/_node_modules/cross-spawn/index.js +1 -1
  41. package/dist/_node_modules/cross-spawn/lib/enoent.cjs.map +1 -1
  42. package/dist/_node_modules/cross-spawn/lib/enoent.js.map +1 -1
  43. package/dist/_node_modules/cross-spawn/lib/parse.cjs.map +1 -1
  44. package/dist/_node_modules/cross-spawn/lib/parse.js.map +1 -1
  45. package/dist/_node_modules/cross-spawn/lib/util/escape.cjs.map +1 -1
  46. package/dist/_node_modules/cross-spawn/lib/util/escape.js.map +1 -1
  47. package/dist/_node_modules/cross-spawn/lib/util/readShebang.cjs.map +1 -1
  48. package/dist/_node_modules/cross-spawn/lib/util/readShebang.js.map +1 -1
  49. package/dist/_node_modules/cross-spawn/lib/util/resolveCommand.cjs.map +1 -1
  50. package/dist/_node_modules/cross-spawn/lib/util/resolveCommand.js.map +1 -1
  51. package/dist/_node_modules/data-uri-to-buffer/dist/index.cjs.map +1 -1
  52. package/dist/_node_modules/data-uri-to-buffer/dist/index.js.map +1 -1
  53. package/dist/_node_modules/execa/index.cjs +2 -2
  54. package/dist/_node_modules/execa/index.cjs.map +1 -1
  55. package/dist/_node_modules/execa/index.js +2 -2
  56. package/dist/_node_modules/execa/index.js.map +1 -1
  57. package/dist/_node_modules/execa/lib/command.cjs.map +1 -1
  58. package/dist/_node_modules/execa/lib/command.js.map +1 -1
  59. package/dist/_node_modules/execa/lib/error.cjs.map +1 -1
  60. package/dist/_node_modules/execa/lib/error.js.map +1 -1
  61. package/dist/_node_modules/execa/lib/kill.cjs.map +1 -1
  62. package/dist/_node_modules/execa/lib/kill.js.map +1 -1
  63. package/dist/_node_modules/execa/lib/promise.cjs +2 -2
  64. package/dist/_node_modules/execa/lib/promise.cjs.map +1 -1
  65. package/dist/_node_modules/execa/lib/promise.js +2 -2
  66. package/dist/_node_modules/execa/lib/promise.js.map +1 -1
  67. package/dist/_node_modules/execa/lib/stdio.cjs.map +1 -1
  68. package/dist/_node_modules/execa/lib/stdio.js.map +1 -1
  69. package/dist/_node_modules/execa/lib/stream.cjs.map +1 -1
  70. package/dist/_node_modules/execa/lib/stream.js.map +1 -1
  71. package/dist/_node_modules/execa/lib/verbose.cjs.map +1 -1
  72. package/dist/_node_modules/execa/lib/verbose.js.map +1 -1
  73. package/dist/_node_modules/fetch-blob/file.cjs.map +1 -1
  74. package/dist/_node_modules/fetch-blob/file.js.map +1 -1
  75. package/dist/_node_modules/fetch-blob/index.cjs.map +1 -1
  76. package/dist/_node_modules/fetch-blob/index.js.map +1 -1
  77. package/dist/_node_modules/fetch-blob/streams.cjs.map +1 -1
  78. package/dist/_node_modules/fetch-blob/streams.js.map +1 -1
  79. package/dist/_node_modules/file-type/core.cjs.map +1 -1
  80. package/dist/_node_modules/file-type/core.js.map +1 -1
  81. package/dist/_node_modules/formdata-polyfill/esm.min.cjs.map +1 -1
  82. package/dist/_node_modules/formdata-polyfill/esm.min.js.map +1 -1
  83. package/dist/_node_modules/get-port/index.cjs.map +1 -1
  84. package/dist/_node_modules/get-port/index.js.map +1 -1
  85. package/dist/_node_modules/get-stream/index.cjs.map +1 -1
  86. package/dist/_node_modules/get-stream/index.js.map +1 -1
  87. package/dist/_node_modules/human-signals/build/src/realtime.cjs.map +1 -1
  88. package/dist/_node_modules/human-signals/build/src/realtime.js.map +1 -1
  89. package/dist/_node_modules/isexe/index.cjs.map +1 -1
  90. package/dist/_node_modules/isexe/index.js.map +1 -1
  91. package/dist/_node_modules/mimic-fn/index.cjs.map +1 -1
  92. package/dist/_node_modules/mimic-fn/index.js.map +1 -1
  93. package/dist/_node_modules/node-domexception/index.cjs.map +1 -1
  94. package/dist/_node_modules/node-domexception/index.js.map +1 -1
  95. package/dist/_node_modules/node-fetch/src/body.cjs.map +1 -1
  96. package/dist/_node_modules/node-fetch/src/body.js.map +1 -1
  97. package/dist/_node_modules/node-fetch/src/headers.cjs.map +1 -1
  98. package/dist/_node_modules/node-fetch/src/headers.js.map +1 -1
  99. package/dist/_node_modules/node-fetch/src/index.cjs.map +1 -1
  100. package/dist/_node_modules/node-fetch/src/index.js.map +1 -1
  101. package/dist/_node_modules/node-fetch/src/request.cjs.map +1 -1
  102. package/dist/_node_modules/node-fetch/src/request.js.map +1 -1
  103. package/dist/_node_modules/node-fetch/src/utils/is.cjs.map +1 -1
  104. package/dist/_node_modules/node-fetch/src/utils/is.js.map +1 -1
  105. package/dist/_node_modules/node-fetch/src/utils/multipart-parser.cjs.map +1 -1
  106. package/dist/_node_modules/node-fetch/src/utils/multipart-parser.js.map +1 -1
  107. package/dist/_node_modules/node-fetch/src/utils/referrer.cjs.map +1 -1
  108. package/dist/_node_modules/node-fetch/src/utils/referrer.js.map +1 -1
  109. package/dist/_node_modules/npm-run-path/_node_modules/path-key/index.cjs.map +1 -0
  110. package/dist/_node_modules/npm-run-path/_node_modules/path-key/index.js.map +1 -0
  111. package/dist/_node_modules/{execa/_node_modules/npm-run-path → npm-run-path}/index.cjs +1 -1
  112. package/dist/_node_modules/npm-run-path/index.cjs.map +1 -0
  113. package/dist/_node_modules/{execa/_node_modules/npm-run-path → npm-run-path}/index.js +1 -1
  114. package/dist/_node_modules/npm-run-path/index.js.map +1 -0
  115. package/dist/_node_modules/{execa/_node_modules/onetime → onetime}/index.cjs +1 -1
  116. package/dist/_node_modules/onetime/index.cjs.map +1 -0
  117. package/dist/_node_modules/{execa/_node_modules/onetime → onetime}/index.js +1 -1
  118. package/dist/_node_modules/onetime/index.js.map +1 -0
  119. package/dist/_node_modules/p-limit/index.cjs.map +1 -1
  120. package/dist/_node_modules/p-limit/index.js.map +1 -1
  121. package/dist/_node_modules/r19/dist/handleRPCRequest.cjs.map +1 -1
  122. package/dist/_node_modules/r19/dist/handleRPCRequest.js.map +1 -1
  123. package/dist/_node_modules/shebang-command/index.cjs.map +1 -1
  124. package/dist/_node_modules/shebang-command/index.js.map +1 -1
  125. package/dist/_node_modules/signal-exit/index.cjs.map +1 -1
  126. package/dist/_node_modules/signal-exit/index.js.map +1 -1
  127. package/dist/_node_modules/web-streams-polyfill/dist/ponyfill.es2018.cjs.map +1 -1
  128. package/dist/_node_modules/web-streams-polyfill/dist/ponyfill.es2018.js.map +1 -1
  129. package/dist/_node_modules/which/which.cjs.map +1 -1
  130. package/dist/_node_modules/which/which.js.map +1 -1
  131. package/dist/_node_modules/zod/lib/index.cjs.map +1 -1
  132. package/dist/_node_modules/zod/lib/index.js.map +1 -1
  133. package/dist/_virtual/_commonjsHelpers.cjs +1 -4
  134. package/dist/_virtual/_commonjsHelpers.cjs.map +1 -1
  135. package/dist/_virtual/_commonjsHelpers.js +1 -4
  136. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  137. package/dist/_virtual/index2.cjs +4 -3
  138. package/dist/_virtual/index2.cjs.map +1 -1
  139. package/dist/_virtual/index2.js +4 -2
  140. package/dist/_virtual/index2.js.map +1 -1
  141. package/dist/_virtual/index3.cjs +3 -4
  142. package/dist/_virtual/index3.cjs.map +1 -1
  143. package/dist/_virtual/index3.js +2 -4
  144. package/dist/_virtual/index3.js.map +1 -1
  145. package/dist/auth/PrismicAuthManager.cjs.map +1 -1
  146. package/dist/auth/PrismicAuthManager.js.map +1 -1
  147. package/dist/auth/createPrismicAuthManagerMiddleware.cjs.map +1 -1
  148. package/dist/auth/createPrismicAuthManagerMiddleware.js.map +1 -1
  149. package/dist/constants/API_ENDPOINTS.cjs.map +1 -1
  150. package/dist/constants/API_ENDPOINTS.js.map +1 -1
  151. package/dist/constants/API_TOKENS.cjs.map +1 -1
  152. package/dist/constants/API_TOKENS.js.map +1 -1
  153. package/dist/errors.cjs.map +1 -1
  154. package/dist/errors.js.map +1 -1
  155. package/dist/getEnvironmentInfo.cjs.map +1 -1
  156. package/dist/getEnvironmentInfo.js.map +1 -1
  157. package/dist/lib/DecodeError.cjs.map +1 -1
  158. package/dist/lib/DecodeError.js.map +1 -1
  159. package/dist/lib/buildPrismicRepositoryAPIEndpoint.cjs.map +1 -1
  160. package/dist/lib/buildPrismicRepositoryAPIEndpoint.js.map +1 -1
  161. package/dist/lib/fetchGitHubReleaseBodyForRelease.cjs.map +1 -1
  162. package/dist/lib/fetchGitHubReleaseBodyForRelease.js.map +1 -1
  163. package/dist/lib/fetchNPMPackageVersions.cjs.map +1 -1
  164. package/dist/lib/fetchNPMPackageVersions.js.map +1 -1
  165. package/dist/lib/installDependencies.cjs.map +1 -1
  166. package/dist/lib/installDependencies.js.map +1 -1
  167. package/dist/lib/locateFileUpward.cjs.map +1 -1
  168. package/dist/lib/locateFileUpward.js.map +1 -1
  169. package/dist/lib/prismicrc.cjs.map +1 -1
  170. package/dist/lib/prismicrc.js.map +1 -1
  171. package/dist/managers/SliceMachineManager.cjs.map +1 -1
  172. package/dist/managers/SliceMachineManager.js.map +1 -1
  173. package/dist/managers/customTypes/CustomTypesManager.cjs +213 -4
  174. package/dist/managers/customTypes/CustomTypesManager.cjs.map +1 -1
  175. package/dist/managers/customTypes/CustomTypesManager.d.ts +130 -11
  176. package/dist/managers/customTypes/CustomTypesManager.js +215 -6
  177. package/dist/managers/customTypes/CustomTypesManager.js.map +1 -1
  178. package/dist/managers/git/GitManager.cjs.map +1 -1
  179. package/dist/managers/git/GitManager.js.map +1 -1
  180. package/dist/managers/git/buildGitRepoSpecifier.cjs.map +1 -1
  181. package/dist/managers/git/buildGitRepoSpecifier.js.map +1 -1
  182. package/dist/managers/prismicRepository/PrismicRepositoryManager.cjs.map +1 -1
  183. package/dist/managers/prismicRepository/PrismicRepositoryManager.js.map +1 -1
  184. package/dist/managers/project/ProjectManager.cjs.map +1 -1
  185. package/dist/managers/project/ProjectManager.js.map +1 -1
  186. package/dist/managers/screenshots/ScreenshotsManager.cjs.map +1 -1
  187. package/dist/managers/screenshots/ScreenshotsManager.js.map +1 -1
  188. package/dist/managers/sliceTemplateLibrary/SliceTemplateLibraryManager.cjs.map +1 -1
  189. package/dist/managers/sliceTemplateLibrary/SliceTemplateLibraryManager.js.map +1 -1
  190. package/dist/managers/slices/SlicesManager.cjs.map +1 -1
  191. package/dist/managers/slices/SlicesManager.js.map +1 -1
  192. package/dist/managers/telemetry/TelemetryManager.cjs.map +1 -1
  193. package/dist/managers/telemetry/TelemetryManager.js.map +1 -1
  194. package/dist/managers/versions/VersionsManager.cjs.map +1 -1
  195. package/dist/managers/versions/VersionsManager.js.map +1 -1
  196. package/package.json +5 -5
  197. package/src/managers/customTypes/CustomTypesManager.ts +365 -6
  198. package/dist/_node_modules/execa/_node_modules/npm-run-path/index.cjs.map +0 -1
  199. package/dist/_node_modules/execa/_node_modules/npm-run-path/index.js.map +0 -1
  200. package/dist/_node_modules/execa/_node_modules/onetime/index.cjs.map +0 -1
  201. package/dist/_node_modules/execa/_node_modules/onetime/index.js.map +0 -1
  202. package/dist/_node_modules/execa/_node_modules/path-key/index.cjs.map +0 -1
  203. package/dist/_node_modules/execa/_node_modules/path-key/index.js.map +0 -1
  204. /package/dist/_node_modules/{execa → npm-run-path}/_node_modules/path-key/index.cjs +0 -0
  205. /package/dist/_node_modules/{execa → npm-run-path}/_node_modules/path-key/index.js +0 -0
@@ -11,10 +11,7 @@ function getAugmentedNamespace(n) {
11
11
  if (typeof f == "function") {
12
12
  var a = function a2() {
13
13
  if (this instanceof a2) {
14
- var args = [null];
15
- args.push.apply(args, arguments);
16
- var Ctor = Function.bind.apply(f, args);
17
- return new Ctor();
14
+ return Reflect.construct(f, arguments, this.constructor);
18
15
  }
19
16
  return f.apply(this, arguments);
20
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"_commonjsHelpers.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"_commonjsHelpers.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -9,10 +9,7 @@ function getAugmentedNamespace(n) {
9
9
  if (typeof f == "function") {
10
10
  var a = function a2() {
11
11
  if (this instanceof a2) {
12
- var args = [null];
13
- args.push.apply(args, arguments);
14
- var Ctor = Function.bind.apply(f, args);
15
- return new Ctor();
12
+ return Reflect.construct(f, arguments, this.constructor);
16
13
  }
17
14
  return f.apply(this, arguments);
18
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- var crossSpawn = { exports: {} };
4
- exports.__module = crossSpawn;
2
+ const _commonjsHelpers = require("./_commonjsHelpers.cjs");
3
+ const index = require('./../_node_modules/@amplitude/analytics-node/lib/esm/index.cjs');
4
+ const require$$0 = /* @__PURE__ */ _commonjsHelpers.getAugmentedNamespace(index);
5
+ module.exports = require$$0;
5
6
  //# sourceMappingURL=index2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index2.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,5 +1,7 @@
1
- var crossSpawn = { exports: {} };
1
+ import { getAugmentedNamespace } from "./_commonjsHelpers.js";
2
+ import * as index from './../_node_modules/@amplitude/analytics-node/lib/esm/index.js';
3
+ const require$$0 = /* @__PURE__ */ getAugmentedNamespace(index);
2
4
  export {
3
- crossSpawn as __module
5
+ require$$0 as default
4
6
  };
5
7
  //# sourceMappingURL=index2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
- const _commonjsHelpers = require("./_commonjsHelpers.cjs");
3
- const index = require('./../_node_modules/@amplitude/analytics-node/lib/esm/index.cjs');
4
- const require$$0 = /* @__PURE__ */ _commonjsHelpers.getAugmentedNamespace(index);
5
- module.exports = require$$0;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ var crossSpawn = { exports: {} };
4
+ exports.__module = crossSpawn;
6
5
  //# sourceMappingURL=index3.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index3.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,7 +1,5 @@
1
- import { getAugmentedNamespace } from "./_commonjsHelpers.js";
2
- import * as index from './../_node_modules/@amplitude/analytics-node/lib/esm/index.js';
3
- const require$$0 = /* @__PURE__ */ getAugmentedNamespace(index);
1
+ var crossSpawn = { exports: {} };
4
2
  export {
5
- require$$0 as default
3
+ crossSpawn as __module
6
4
  };
7
5
  //# sourceMappingURL=index3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"index3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1 +1 @@
1
- {"version":3,"file":"PrismicAuthManager.cjs","sources":["../../../src/auth/PrismicAuthManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport * as os from \"node:os\";\nimport * as http from \"node:http\";\n\nimport * as h3 from \"h3\";\nimport fetch from \"../lib/fetch\";\nimport cookie from \"cookie\";\nimport cors from \"cors\";\nimport getPort from \"get-port\";\n\nimport { decode } from \"../lib/decode\";\nimport { serializeCookies } from \"../lib/serializeCookies\";\n\nimport { API_ENDPOINTS } from \"../constants/API_ENDPOINTS\";\nimport { SLICE_MACHINE_USER_AGENT } from \"../constants/SLICE_MACHINE_USER_AGENT\";\nimport { createPrismicAuthManagerMiddleware } from \"./createPrismicAuthManagerMiddleware\";\nimport {\n\tInternalError,\n\tUnauthenticatedError,\n\tUnexpectedDataError,\n} from \"../errors\";\n\nconst COOKIE_SEPARATOR = \"; \";\nconst AUTH_COOKIE_KEY = \"prismic-auth\";\nconst SESSION_COOKIE_KEY = \"SESSION\";\n\nconst PERSISTED_AUTH_STATE_FILE_NAME = \".prismic\";\nconst DEFAULT_PERSISTED_AUTH_STATE: PrismicAuthState = {\n\tbase: \"https://prismic.io\",\n\tcookies: {},\n};\n\nconst PrismicAuthState = t.intersection([\n\tt.type({\n\t\tbase: t.string,\n\t\tcookies: t.intersection([\n\t\t\tt.partial({\n\t\t\t\t[AUTH_COOKIE_KEY]: t.string,\n\t\t\t\tSESSION: t.string,\n\t\t\t}),\n\t\t\tt.record(t.string, t.string),\n\t\t]),\n\t}),\n\tt.partial({\n\t\tshortId: t.string,\n\t\tintercomHash: t.string,\n\t\toauthAccessToken: t.string,\n\t\tauthUrl: t.string,\n\t}),\n]);\nexport type PrismicAuthState = t.TypeOf<typeof PrismicAuthState>;\n\nconst PrismicUserProfile = t.exact(\n\tt.type({\n\t\tuserId: t.string,\n\t\tshortId: t.string,\n\t\tintercomHash: t.string,\n\t\temail: t.string,\n\t\tfirstName: t.string,\n\t\tlastName: t.string,\n\t}),\n);\nexport type PrismicUserProfile = t.TypeOf<typeof PrismicUserProfile>;\n\ntype PrismicAuthManagerConstructorArgs = {\n\tscopedDirectory?: string;\n};\n\ntype PrismicAuthManagerLoginArgs = {\n\temail: string;\n\tcookies: string[];\n};\n\ntype PrismicAuthManagerGetLoginSessionInfoReturnType = {\n\tport: number;\n\turl: string;\n};\n\ntype PrismicAuthManagerNodeLoginSessionArgs = {\n\tport: number;\n\tonListenCallback?: () => void;\n};\n\ntype GetProfileForAuthenticationTokenArgs = {\n\tauthenticationToken: string;\n};\n\nconst checkHasAuthenticationToken = (\n\tauthState: PrismicAuthState,\n): authState is PrismicAuthState & {\n\tcookies: Required<\n\t\tPick<\n\t\t\tPrismicAuthState[\"cookies\"],\n\t\t\ttypeof AUTH_COOKIE_KEY | typeof SESSION_COOKIE_KEY\n\t\t>\n\t>;\n} => {\n\treturn Boolean(\n\t\tauthState.cookies[AUTH_COOKIE_KEY] && authState.cookies[SESSION_COOKIE_KEY],\n\t);\n};\n\nconst parseCookies = (cookies: string): Record<string, string> => {\n\treturn cookie.parse(cookies, {\n\t\t// Don't escape any values.\n\t\tdecode: (value) => value,\n\t});\n};\n\nexport class PrismicAuthManager {\n\t// TODO: Automatically scope the manager to the current Slice Machine\n\t// project? If not, this internal state can be removed.\n\tscopedDirectory: string;\n\n\tconstructor({\n\t\tscopedDirectory = os.homedir(),\n\t}: PrismicAuthManagerConstructorArgs = {}) {\n\t\tthis.scopedDirectory = scopedDirectory;\n\t}\n\n\t// TODO: Make the `cookies` argument more explicit. What are these\n\t// mysterious cookies?\n\tasync login(args: PrismicAuthManagerLoginArgs): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t// Set the auth's URL base to the current base at runtime.\n\t\tauthState.base = API_ENDPOINTS.PrismicWroom;\n\t\tauthState.cookies = {\n\t\t\t...authState.cookies,\n\t\t\t...parseCookies(args.cookies.join(COOKIE_SEPARATOR)),\n\t\t};\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst authenticationToken = authState.cookies[AUTH_COOKIE_KEY];\n\t\t\tconst profile = await this._getProfileForAuthenticationToken({\n\t\t\t\tauthenticationToken,\n\t\t\t});\n\n\t\t\tauthState.shortId = profile.shortId;\n\t\t\tauthState.intercomHash = profile.intercomHash;\n\t\t}\n\n\t\tawait this._writePersistedAuthState(authState);\n\t}\n\n\tasync getLoginSessionInfo(): Promise<PrismicAuthManagerGetLoginSessionInfoReturnType> {\n\t\t// Pick a random port, with a preference for historic `5555`\n\t\tconst port = await getPort({ port: 5555 });\n\n\t\tconst url = new URL(\n\t\t\t`./dashboard/cli/login?source=slice-machine&port=${port}`,\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t).toString();\n\n\t\treturn {\n\t\t\tport,\n\t\t\turl,\n\t\t};\n\t}\n\n\tasync nodeLoginSession(\n\t\targs: PrismicAuthManagerNodeLoginSessionArgs,\n\t): Promise<void> {\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\t// Timeout attempt after 3 minutes\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\tserver.close();\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Login timeout, server did not receive a response within a 3-minute delay\",\n\t\t\t\t);\n\t\t\t}, 180_000);\n\n\t\t\tconst app = h3.createApp();\n\t\t\tapp.use(h3.fromNodeMiddleware(cors()));\n\t\t\tapp.use(\n\t\t\t\th3.fromNodeMiddleware(\n\t\t\t\t\tcreatePrismicAuthManagerMiddleware({\n\t\t\t\t\t\tprismicAuthManager: this,\n\t\t\t\t\t\tonLoginCallback() {\n\t\t\t\t\t\t\t// Cleanup process and resolve\n\t\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\t\tserver.close();\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\t// Start server\n\t\t\tconst server = http.createServer(h3.toNodeListener(app));\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tserver.once(\"listening\", () => {\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t\tserver.listen(args.port);\n\t\t\t});\n\n\t\t\tif (args.onListenCallback) {\n\t\t\t\targs.onListenCallback();\n\t\t\t}\n\t\t});\n\t}\n\n\tasync logout(): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t// Remove all Prismic cookies, short ID, and Intercom hash\n\t\t// associated with the currently logged in user.\n\t\tauthState.cookies = {};\n\t\tauthState.shortId = undefined;\n\t\tauthState.intercomHash = undefined;\n\n\t\tawait this._writePersistedAuthState(authState);\n\t}\n\n\tasync checkIsLoggedIn(): Promise<boolean> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst url = new URL(\"./validate\", API_ENDPOINTS.PrismicAuthentication);\n\t\t\turl.searchParams.set(\"token\", authState.cookies[AUTH_COOKIE_KEY]);\n\n\t\t\tlet res;\n\t\t\ttry {\n\t\t\t\tres = await fetch(url.toString(), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\t// Noop, we return if `res` is not defined.\n\t\t\t}\n\n\t\t\tif (!res || !res.ok) {\n\t\t\t\tawait this.logout();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync getAuthenticationCookies(): Promise<\n\t\tPrismicAuthState[\"cookies\"] &\n\t\t\tRequired<\n\t\t\t\tPick<\n\t\t\t\t\tPrismicAuthState[\"cookies\"],\n\t\t\t\t\ttypeof AUTH_COOKIE_KEY | typeof SESSION_COOKIE_KEY\n\t\t\t\t>\n\t\t\t>\n\t> {\n\t\tconst isLoggedIn = await this.checkIsLoggedIn();\n\n\t\tif (isLoggedIn) {\n\t\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\t\treturn authState.cookies;\n\t\t\t}\n\t\t}\n\n\t\tthrow new UnauthenticatedError();\n\t}\n\n\tasync getAuthenticationToken(): Promise<string> {\n\t\tconst cookies = await this.getAuthenticationCookies();\n\n\t\treturn cookies[AUTH_COOKIE_KEY];\n\t}\n\n\tasync refreshAuthenticationToken(): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst url = new URL(\n\t\t\t\t\"./refreshtoken\",\n\t\t\t\tAPI_ENDPOINTS.PrismicAuthentication,\n\t\t\t);\n\t\t\turl.searchParams.set(\"token\", authState.cookies[AUTH_COOKIE_KEY]);\n\n\t\t\tconst res = await fetch(url.toString(), {\n\t\t\t\theaders: {\n\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst text = await res.text();\n\n\t\t\tif (res.ok) {\n\t\t\t\tauthState.cookies[AUTH_COOKIE_KEY] = text;\n\n\t\t\t\tawait this._writePersistedAuthState(authState);\n\t\t\t} else {\n\t\t\t\tthrow new InternalError(\"Failed to refresh authentication token.\", {\n\t\t\t\t\tcause: text,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new UnauthenticatedError();\n\t\t}\n\t}\n\n\tasync getProfile(): Promise<PrismicUserProfile> {\n\t\tconst authenticationToken = await this.getAuthenticationToken();\n\n\t\treturn await this._getProfileForAuthenticationToken({\n\t\t\tauthenticationToken,\n\t\t});\n\t}\n\n\tprivate async _getProfileForAuthenticationToken(\n\t\targs: GetProfileForAuthenticationTokenArgs,\n\t): Promise<PrismicUserProfile> {\n\t\tconst url = new URL(\"./profile\", API_ENDPOINTS.PrismicUser);\n\t\tconst res = await fetch(url.toString(), {\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${args.authenticationToken}`,\n\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t},\n\t\t});\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value: profile, error } = decode(PrismicUserProfile, json);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t\"Received invalid data from the Prismic user service.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn profile;\n\t\t} else {\n\t\t\tconst text = await res.text();\n\t\t\tthrow new InternalError(\n\t\t\t\t\"Failed to retrieve profile from the Prismic user service.\",\n\t\t\t\t{\n\t\t\t\t\tcause: text,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate async _readPersistedAuthState(): Promise<PrismicAuthState> {\n\t\tconst authStateFilePath = this._getPersistedAuthStateFilePath();\n\n\t\tlet authStateFileContents: string = JSON.stringify({});\n\t\tlet rawAuthState: Record<string, unknown> = {};\n\n\t\ttry {\n\t\t\tauthStateFileContents = await fs.readFile(authStateFilePath, \"utf8\");\n\t\t\trawAuthState = JSON.parse(authStateFileContents);\n\t\t} catch {\n\t\t\t// Write a default persisted state if it doesn't already exist.\n\n\t\t\trawAuthState = {\n\t\t\t\t...DEFAULT_PERSISTED_AUTH_STATE,\n\t\t\t\tcookies: serializeCookies(DEFAULT_PERSISTED_AUTH_STATE.cookies),\n\t\t\t};\n\t\t\tauthStateFileContents = JSON.stringify(rawAuthState, null, \"\\t\");\n\n\t\t\tawait fs.mkdir(path.dirname(authStateFilePath), { recursive: true });\n\t\t\tawait fs.writeFile(authStateFilePath, authStateFileContents);\n\t\t}\n\n\t\t// Decode cookies into a record for convenience.\n\t\tif (typeof rawAuthState.cookies === \"string\") {\n\t\t\trawAuthState.cookies = parseCookies(rawAuthState.cookies);\n\t\t}\n\n\t\tconst { value: authState, error } = decode(PrismicAuthState, rawAuthState);\n\n\t\tif (error) {\n\t\t\tthrow new UnexpectedDataError(\"Prismic authentication state is invalid.\");\n\t\t}\n\n\t\treturn authState;\n\t}\n\n\tprivate async _writePersistedAuthState(\n\t\tauthState: PrismicAuthState,\n\t): Promise<void> {\n\t\tconst authStateFilePath = this._getPersistedAuthStateFilePath();\n\n\t\tconst preparedAuthState = {\n\t\t\t...authState,\n\t\t\tcookies: serializeCookies(authState.cookies),\n\t\t};\n\n\t\ttry {\n\t\t\tawait fs.writeFile(\n\t\t\t\tauthStateFilePath,\n\t\t\t\tJSON.stringify(preparedAuthState, null, 2),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new InternalError(\n\t\t\t\t\"Failed to write Prismic authentication state to the file system.\",\n\t\t\t\t{\n\t\t\t\t\tcause: error,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _getPersistedAuthStateFilePath(): string {\n\t\treturn path.resolve(this.scopedDirectory, PERSISTED_AUTH_STATE_FILE_NAME);\n\t}\n}\n"],"names":["t","os","API_ENDPOINTS","getPort","h3","createPrismicAuthManagerMiddleware","http","resolve","fetch","SLICE_MACHINE_USER_AGENT","UnauthenticatedError","InternalError","decode","UnexpectedDataError","fs","serializeCookies","path"],"mappings":"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"}
1
+ {"version":3,"file":"PrismicAuthManager.cjs","sources":["../../../src/auth/PrismicAuthManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport * as os from \"node:os\";\nimport * as http from \"node:http\";\n\nimport * as h3 from \"h3\";\nimport fetch from \"../lib/fetch\";\nimport cookie from \"cookie\";\nimport cors from \"cors\";\nimport getPort from \"get-port\";\n\nimport { decode } from \"../lib/decode\";\nimport { serializeCookies } from \"../lib/serializeCookies\";\n\nimport { API_ENDPOINTS } from \"../constants/API_ENDPOINTS\";\nimport { SLICE_MACHINE_USER_AGENT } from \"../constants/SLICE_MACHINE_USER_AGENT\";\nimport { createPrismicAuthManagerMiddleware } from \"./createPrismicAuthManagerMiddleware\";\nimport {\n\tInternalError,\n\tUnauthenticatedError,\n\tUnexpectedDataError,\n} from \"../errors\";\n\nconst COOKIE_SEPARATOR = \"; \";\nconst AUTH_COOKIE_KEY = \"prismic-auth\";\nconst SESSION_COOKIE_KEY = \"SESSION\";\n\nconst PERSISTED_AUTH_STATE_FILE_NAME = \".prismic\";\nconst DEFAULT_PERSISTED_AUTH_STATE: PrismicAuthState = {\n\tbase: \"https://prismic.io\",\n\tcookies: {},\n};\n\nconst PrismicAuthState = t.intersection([\n\tt.type({\n\t\tbase: t.string,\n\t\tcookies: t.intersection([\n\t\t\tt.partial({\n\t\t\t\t[AUTH_COOKIE_KEY]: t.string,\n\t\t\t\tSESSION: t.string,\n\t\t\t}),\n\t\t\tt.record(t.string, t.string),\n\t\t]),\n\t}),\n\tt.partial({\n\t\tshortId: t.string,\n\t\tintercomHash: t.string,\n\t\toauthAccessToken: t.string,\n\t\tauthUrl: t.string,\n\t}),\n]);\nexport type PrismicAuthState = t.TypeOf<typeof PrismicAuthState>;\n\nconst PrismicUserProfile = t.exact(\n\tt.type({\n\t\tuserId: t.string,\n\t\tshortId: t.string,\n\t\tintercomHash: t.string,\n\t\temail: t.string,\n\t\tfirstName: t.string,\n\t\tlastName: t.string,\n\t}),\n);\nexport type PrismicUserProfile = t.TypeOf<typeof PrismicUserProfile>;\n\ntype PrismicAuthManagerConstructorArgs = {\n\tscopedDirectory?: string;\n};\n\ntype PrismicAuthManagerLoginArgs = {\n\temail: string;\n\tcookies: string[];\n};\n\ntype PrismicAuthManagerGetLoginSessionInfoReturnType = {\n\tport: number;\n\turl: string;\n};\n\ntype PrismicAuthManagerNodeLoginSessionArgs = {\n\tport: number;\n\tonListenCallback?: () => void;\n};\n\ntype GetProfileForAuthenticationTokenArgs = {\n\tauthenticationToken: string;\n};\n\nconst checkHasAuthenticationToken = (\n\tauthState: PrismicAuthState,\n): authState is PrismicAuthState & {\n\tcookies: Required<\n\t\tPick<\n\t\t\tPrismicAuthState[\"cookies\"],\n\t\t\ttypeof AUTH_COOKIE_KEY | typeof SESSION_COOKIE_KEY\n\t\t>\n\t>;\n} => {\n\treturn Boolean(\n\t\tauthState.cookies[AUTH_COOKIE_KEY] && authState.cookies[SESSION_COOKIE_KEY],\n\t);\n};\n\nconst parseCookies = (cookies: string): Record<string, string> => {\n\treturn cookie.parse(cookies, {\n\t\t// Don't escape any values.\n\t\tdecode: (value) => value,\n\t});\n};\n\nexport class PrismicAuthManager {\n\t// TODO: Automatically scope the manager to the current Slice Machine\n\t// project? If not, this internal state can be removed.\n\tscopedDirectory: string;\n\n\tconstructor({\n\t\tscopedDirectory = os.homedir(),\n\t}: PrismicAuthManagerConstructorArgs = {}) {\n\t\tthis.scopedDirectory = scopedDirectory;\n\t}\n\n\t// TODO: Make the `cookies` argument more explicit. What are these\n\t// mysterious cookies?\n\tasync login(args: PrismicAuthManagerLoginArgs): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t// Set the auth's URL base to the current base at runtime.\n\t\tauthState.base = API_ENDPOINTS.PrismicWroom;\n\t\tauthState.cookies = {\n\t\t\t...authState.cookies,\n\t\t\t...parseCookies(args.cookies.join(COOKIE_SEPARATOR)),\n\t\t};\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst authenticationToken = authState.cookies[AUTH_COOKIE_KEY];\n\t\t\tconst profile = await this._getProfileForAuthenticationToken({\n\t\t\t\tauthenticationToken,\n\t\t\t});\n\n\t\t\tauthState.shortId = profile.shortId;\n\t\t\tauthState.intercomHash = profile.intercomHash;\n\t\t}\n\n\t\tawait this._writePersistedAuthState(authState);\n\t}\n\n\tasync getLoginSessionInfo(): Promise<PrismicAuthManagerGetLoginSessionInfoReturnType> {\n\t\t// Pick a random port, with a preference for historic `5555`\n\t\tconst port = await getPort({ port: 5555 });\n\n\t\tconst url = new URL(\n\t\t\t`./dashboard/cli/login?source=slice-machine&port=${port}`,\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t).toString();\n\n\t\treturn {\n\t\t\tport,\n\t\t\turl,\n\t\t};\n\t}\n\n\tasync nodeLoginSession(\n\t\targs: PrismicAuthManagerNodeLoginSessionArgs,\n\t): Promise<void> {\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\t// Timeout attempt after 3 minutes\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\tserver.close();\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Login timeout, server did not receive a response within a 3-minute delay\",\n\t\t\t\t);\n\t\t\t}, 180_000);\n\n\t\t\tconst app = h3.createApp();\n\t\t\tapp.use(h3.fromNodeMiddleware(cors()));\n\t\t\tapp.use(\n\t\t\t\th3.fromNodeMiddleware(\n\t\t\t\t\tcreatePrismicAuthManagerMiddleware({\n\t\t\t\t\t\tprismicAuthManager: this,\n\t\t\t\t\t\tonLoginCallback() {\n\t\t\t\t\t\t\t// Cleanup process and resolve\n\t\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\t\tserver.close();\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\t// Start server\n\t\t\tconst server = http.createServer(h3.toNodeListener(app));\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tserver.once(\"listening\", () => {\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t\tserver.listen(args.port);\n\t\t\t});\n\n\t\t\tif (args.onListenCallback) {\n\t\t\t\targs.onListenCallback();\n\t\t\t}\n\t\t});\n\t}\n\n\tasync logout(): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t// Remove all Prismic cookies, short ID, and Intercom hash\n\t\t// associated with the currently logged in user.\n\t\tauthState.cookies = {};\n\t\tauthState.shortId = undefined;\n\t\tauthState.intercomHash = undefined;\n\n\t\tawait this._writePersistedAuthState(authState);\n\t}\n\n\tasync checkIsLoggedIn(): Promise<boolean> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst url = new URL(\"./validate\", API_ENDPOINTS.PrismicAuthentication);\n\t\t\turl.searchParams.set(\"token\", authState.cookies[AUTH_COOKIE_KEY]);\n\n\t\t\tlet res;\n\t\t\ttry {\n\t\t\t\tres = await fetch(url.toString(), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\t// Noop, we return if `res` is not defined.\n\t\t\t}\n\n\t\t\tif (!res || !res.ok) {\n\t\t\t\tawait this.logout();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync getAuthenticationCookies(): Promise<\n\t\tPrismicAuthState[\"cookies\"] &\n\t\t\tRequired<\n\t\t\t\tPick<\n\t\t\t\t\tPrismicAuthState[\"cookies\"],\n\t\t\t\t\ttypeof AUTH_COOKIE_KEY | typeof SESSION_COOKIE_KEY\n\t\t\t\t>\n\t\t\t>\n\t> {\n\t\tconst isLoggedIn = await this.checkIsLoggedIn();\n\n\t\tif (isLoggedIn) {\n\t\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\t\treturn authState.cookies;\n\t\t\t}\n\t\t}\n\n\t\tthrow new UnauthenticatedError();\n\t}\n\n\tasync getAuthenticationToken(): Promise<string> {\n\t\tconst cookies = await this.getAuthenticationCookies();\n\n\t\treturn cookies[AUTH_COOKIE_KEY];\n\t}\n\n\tasync refreshAuthenticationToken(): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst url = new URL(\n\t\t\t\t\"./refreshtoken\",\n\t\t\t\tAPI_ENDPOINTS.PrismicAuthentication,\n\t\t\t);\n\t\t\turl.searchParams.set(\"token\", authState.cookies[AUTH_COOKIE_KEY]);\n\n\t\t\tconst res = await fetch(url.toString(), {\n\t\t\t\theaders: {\n\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst text = await res.text();\n\n\t\t\tif (res.ok) {\n\t\t\t\tauthState.cookies[AUTH_COOKIE_KEY] = text;\n\n\t\t\t\tawait this._writePersistedAuthState(authState);\n\t\t\t} else {\n\t\t\t\tthrow new InternalError(\"Failed to refresh authentication token.\", {\n\t\t\t\t\tcause: text,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new UnauthenticatedError();\n\t\t}\n\t}\n\n\tasync getProfile(): Promise<PrismicUserProfile> {\n\t\tconst authenticationToken = await this.getAuthenticationToken();\n\n\t\treturn await this._getProfileForAuthenticationToken({\n\t\t\tauthenticationToken,\n\t\t});\n\t}\n\n\tprivate async _getProfileForAuthenticationToken(\n\t\targs: GetProfileForAuthenticationTokenArgs,\n\t): Promise<PrismicUserProfile> {\n\t\tconst url = new URL(\"./profile\", API_ENDPOINTS.PrismicUser);\n\t\tconst res = await fetch(url.toString(), {\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${args.authenticationToken}`,\n\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t},\n\t\t});\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value: profile, error } = decode(PrismicUserProfile, json);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t\"Received invalid data from the Prismic user service.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn profile;\n\t\t} else {\n\t\t\tconst text = await res.text();\n\t\t\tthrow new InternalError(\n\t\t\t\t\"Failed to retrieve profile from the Prismic user service.\",\n\t\t\t\t{\n\t\t\t\t\tcause: text,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate async _readPersistedAuthState(): Promise<PrismicAuthState> {\n\t\tconst authStateFilePath = this._getPersistedAuthStateFilePath();\n\n\t\tlet authStateFileContents: string = JSON.stringify({});\n\t\tlet rawAuthState: Record<string, unknown> = {};\n\n\t\ttry {\n\t\t\tauthStateFileContents = await fs.readFile(authStateFilePath, \"utf8\");\n\t\t\trawAuthState = JSON.parse(authStateFileContents);\n\t\t} catch {\n\t\t\t// Write a default persisted state if it doesn't already exist.\n\n\t\t\trawAuthState = {\n\t\t\t\t...DEFAULT_PERSISTED_AUTH_STATE,\n\t\t\t\tcookies: serializeCookies(DEFAULT_PERSISTED_AUTH_STATE.cookies),\n\t\t\t};\n\t\t\tauthStateFileContents = JSON.stringify(rawAuthState, null, \"\\t\");\n\n\t\t\tawait fs.mkdir(path.dirname(authStateFilePath), { recursive: true });\n\t\t\tawait fs.writeFile(authStateFilePath, authStateFileContents);\n\t\t}\n\n\t\t// Decode cookies into a record for convenience.\n\t\tif (typeof rawAuthState.cookies === \"string\") {\n\t\t\trawAuthState.cookies = parseCookies(rawAuthState.cookies);\n\t\t}\n\n\t\tconst { value: authState, error } = decode(PrismicAuthState, rawAuthState);\n\n\t\tif (error) {\n\t\t\tthrow new UnexpectedDataError(\"Prismic authentication state is invalid.\");\n\t\t}\n\n\t\treturn authState;\n\t}\n\n\tprivate async _writePersistedAuthState(\n\t\tauthState: PrismicAuthState,\n\t): Promise<void> {\n\t\tconst authStateFilePath = this._getPersistedAuthStateFilePath();\n\n\t\tconst preparedAuthState = {\n\t\t\t...authState,\n\t\t\tcookies: serializeCookies(authState.cookies),\n\t\t};\n\n\t\ttry {\n\t\t\tawait fs.writeFile(\n\t\t\t\tauthStateFilePath,\n\t\t\t\tJSON.stringify(preparedAuthState, null, 2),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new InternalError(\n\t\t\t\t\"Failed to write Prismic authentication state to the file system.\",\n\t\t\t\t{\n\t\t\t\t\tcause: error,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _getPersistedAuthStateFilePath(): string {\n\t\treturn path.resolve(this.scopedDirectory, PERSISTED_AUTH_STATE_FILE_NAME);\n\t}\n}\n"],"names":["t","os","API_ENDPOINTS","getPort","h3","createPrismicAuthManagerMiddleware","http","resolve","fetch","SLICE_MACHINE_USER_AGENT","UnauthenticatedError","InternalError","decode","UnexpectedDataError","fs","serializeCookies","path"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,MAAM,mBAAmB;AACzB,MAAM,kBAAkB;AACxB,MAAM,qBAAqB;AAE3B,MAAM,iCAAiC;AACvC,MAAM,+BAAiD;AAAA,EACtD,MAAM;AAAA,EACN,SAAS,CAAE;;AAGZ,MAAM,mBAAmBA,aAAE,aAAa;AAAA,EACvCA,aAAE,KAAK;AAAA,IACN,MAAMA,aAAE;AAAA,IACR,SAASA,aAAE,aAAa;AAAA,MACvBA,aAAE,QAAQ;AAAA,QACT,CAAC,eAAe,GAAGA,aAAE;AAAA,QACrB,SAASA,aAAE;AAAA,MAAA,CACX;AAAA,MACDA,aAAE,OAAOA,aAAE,QAAQA,aAAE,MAAM;AAAA,IAAA,CAC3B;AAAA,EAAA,CACD;AAAA,EACDA,aAAE,QAAQ;AAAA,IACT,SAASA,aAAE;AAAA,IACX,cAAcA,aAAE;AAAA,IAChB,kBAAkBA,aAAE;AAAA,IACpB,SAASA,aAAE;AAAA,EAAA,CACX;AACD,CAAA;AAGD,MAAM,qBAAqBA,aAAE,MAC5BA,aAAE,KAAK;AAAA,EACN,QAAQA,aAAE;AAAA,EACV,SAASA,aAAE;AAAA,EACX,cAAcA,aAAE;AAAA,EAChB,OAAOA,aAAE;AAAA,EACT,WAAWA,aAAE;AAAA,EACb,UAAUA,aAAE;AACZ,CAAA,CAAC;AA2BH,MAAM,8BAA8B,CACnC,cAQG;AACI,SAAA,QACN,UAAU,QAAQ,eAAe,KAAK,UAAU,QAAQ,kBAAkB,CAAC;AAE7E;AAEA,MAAM,eAAe,CAAC,YAA2C;AACzD,SAAA,OAAO,MAAM,SAAS;AAAA;AAAA,IAE5B,QAAQ,CAAC,UAAU;AAAA,EAAA,CACnB;AACF;MAEa,mBAAkB;AAAA,EAK9B,YAAY,EACX,kBAAkBC,cAAG,cACiB,CAAA,GAAE;AAJzC;AAAA;AAAA;AAKC,SAAK,kBAAkB;AAAA,EACxB;AAAA;AAAA;AAAA,EAIA,MAAM,MAAM,MAAiC;AACtC,UAAA,YAAY,MAAM,KAAK;AAG7B,cAAU,OAAOC,cAAc,cAAA;AAC/B,cAAU,UAAU;AAAA,MACnB,GAAG,UAAU;AAAA,MACb,GAAG,aAAa,KAAK,QAAQ,KAAK,gBAAgB,CAAC;AAAA,IAAA;AAGhD,QAAA,4BAA4B,SAAS,GAAG;AACrC,YAAA,sBAAsB,UAAU,QAAQ,eAAe;AACvD,YAAA,UAAU,MAAM,KAAK,kCAAkC;AAAA,QAC5D;AAAA,MAAA,CACA;AAED,gBAAU,UAAU,QAAQ;AAC5B,gBAAU,eAAe,QAAQ;AAAA,IAClC;AAEM,UAAA,KAAK,yBAAyB,SAAS;AAAA,EAC9C;AAAA,EAEA,MAAM,sBAAmB;AAExB,UAAM,OAAO,MAAMC,MAAQ,EAAE,MAAM,KAAM,CAAA;AAEnC,UAAA,MAAM,IAAI,IACf,mDAAmD,IAAI,IACvDD,4BAAc,YAAY,EACzB;AAEK,WAAA;AAAA,MACN;AAAA,MACA;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,MAAM,iBACL,MAA4C;AAErC,WAAA,IAAI,QAAc,OAAO,YAAW;AAEpC,YAAA,UAAU,WAAW,MAAK;AAC/B,eAAO,MAAK;AACN,cAAA,IAAI,MACT,0EAA0E;AAAA,SAEzE,IAAO;AAEJ,YAAA,MAAME,cAAG;AACf,UAAI,IAAIA,cAAG,mBAAmB,KAAA,CAAM,CAAC;AACjC,UAAA,IACHA,cAAG,mBACFC,mCAAAA,mCAAmC;AAAA,QAClC,oBAAoB;AAAA,QACpB,kBAAe;AAEd,uBAAa,OAAO;AACpB,iBAAO,MAAK;;QAEb;AAAA,MACA,CAAA,CAAC,CACF;AAIF,YAAM,SAASC,gBAAK,aAAaF,cAAG,eAAe,GAAG,CAAC;AACjD,YAAA,IAAI,QAAc,CAACG,aAAW;AAC5B,eAAA,KAAK,aAAa,MAAK;AAC7BA;SACA;AACM,eAAA,OAAO,KAAK,IAAI;AAAA,MAAA,CACvB;AAED,UAAI,KAAK,kBAAkB;AAC1B,aAAK,iBAAgB;AAAA,MACtB;AAAA,IAAA,CACA;AAAA,EACF;AAAA,EAEA,MAAM,SAAM;AACL,UAAA,YAAY,MAAM,KAAK;AAI7B,cAAU,UAAU;AACpB,cAAU,UAAU;AACpB,cAAU,eAAe;AAEnB,UAAA,KAAK,yBAAyB,SAAS;AAAA,EAC9C;AAAA,EAEA,MAAM,kBAAe;AACd,UAAA,YAAY,MAAM,KAAK;AAEzB,QAAA,4BAA4B,SAAS,GAAG;AAC3C,YAAM,MAAM,IAAI,IAAI,cAAcL,4BAAc,qBAAqB;AACrE,UAAI,aAAa,IAAI,SAAS,UAAU,QAAQ,eAAe,CAAC;AAE5D,UAAA;AACA,UAAA;AACH,cAAM,MAAMM,MAAAA,QAAM,IAAI,SAAA,GAAY;AAAA,UACjC,SAAS;AAAA,YACR,cAAcC,yBAAA;AAAA,UACd;AAAA,QAAA,CACD;AAAA,eACO,OAAO;AAAA,MAEhB;AAEA,UAAI,CAAC,OAAO,CAAC,IAAI,IAAI;AACpB,cAAM,KAAK;AAEJ,eAAA;AAAA,MACR;AAEO,aAAA;AAAA,IAAA,OACD;AACC,aAAA;AAAA,IACR;AAAA,EACD;AAAA,EAEA,MAAM,2BAAwB;AASvB,UAAA,aAAa,MAAM,KAAK;AAE9B,QAAI,YAAY;AACT,YAAA,YAAY,MAAM,KAAK;AAEzB,UAAA,4BAA4B,SAAS,GAAG;AAC3C,eAAO,UAAU;AAAA,MAClB;AAAA,IACD;AAEA,UAAM,IAAIC,OAAoB,qBAAA;AAAA,EAC/B;AAAA,EAEA,MAAM,yBAAsB;AACrB,UAAA,UAAU,MAAM,KAAK;AAE3B,WAAO,QAAQ,eAAe;AAAA,EAC/B;AAAA,EAEA,MAAM,6BAA0B;AACzB,UAAA,YAAY,MAAM,KAAK;AAEzB,QAAA,4BAA4B,SAAS,GAAG;AAC3C,YAAM,MAAM,IAAI,IACf,kBACAR,4BAAc,qBAAqB;AAEpC,UAAI,aAAa,IAAI,SAAS,UAAU,QAAQ,eAAe,CAAC;AAEhE,YAAM,MAAM,MAAMM,MAAAA,QAAM,IAAI,YAAY;AAAA,QACvC,SAAS;AAAA,UACR,cAAcC,yBAAA;AAAA,QACd;AAAA,MAAA,CACD;AACK,YAAA,OAAO,MAAM,IAAI;AAEvB,UAAI,IAAI,IAAI;AACD,kBAAA,QAAQ,eAAe,IAAI;AAE/B,cAAA,KAAK,yBAAyB,SAAS;AAAA,MAAA,OACvC;AACA,cAAA,IAAIE,qBAAc,2CAA2C;AAAA,UAClE,OAAO;AAAA,QAAA,CACP;AAAA,MACF;AAAA,IAAA,OACM;AACN,YAAM,IAAID,OAAoB,qBAAA;AAAA,IAC/B;AAAA,EACD;AAAA,EAEA,MAAM,aAAU;AACT,UAAA,sBAAsB,MAAM,KAAK;AAEhC,WAAA,MAAM,KAAK,kCAAkC;AAAA,MACnD;AAAA,IAAA,CACA;AAAA,EACF;AAAA,EAEQ,MAAM,kCACb,MAA0C;AAE1C,UAAM,MAAM,IAAI,IAAI,aAAaR,4BAAc,WAAW;AAC1D,UAAM,MAAM,MAAMM,MAAAA,QAAM,IAAI,YAAY;AAAA,MACvC,SAAS;AAAA,QACR,eAAe,UAAU,KAAK,mBAAmB;AAAA,QACjD,cAAcC,yBAAA;AAAA,MACd;AAAA,IAAA,CACD;AAED,QAAI,IAAI,IAAI;AACL,YAAA,OAAO,MAAM,IAAI;AACvB,YAAM,EAAE,OAAO,SAAS,MAAU,IAAAG,cAAO,oBAAoB,IAAI;AAEjE,UAAI,OAAO;AACJ,cAAA,IAAIC,OAAAA,oBACT,sDAAsD;AAAA,MAExD;AAEO,aAAA;AAAA,IAAA,OACD;AACA,YAAA,OAAO,MAAM,IAAI;AACjB,YAAA,IAAIF,qBACT,6DACA;AAAA,QACC,OAAO;AAAA,MAAA,CACP;AAAA,IAEH;AAAA,EACD;AAAA,EAEQ,MAAM,0BAAuB;AAC9B,UAAA,oBAAoB,KAAK;AAE/B,QAAI,wBAAgC,KAAK,UAAU,CAAE,CAAA;AACrD,QAAI,eAAwC,CAAA;AAExC,QAAA;AACH,8BAAwB,MAAMG,cAAG,SAAS,mBAAmB,MAAM;AACpD,qBAAA,KAAK,MAAM,qBAAqB;AAAA,IAAA,QACxC;AAGQ,qBAAA;AAAA,QACd,GAAG;AAAA,QACH,SAASC,iBAAAA,iBAAiB,6BAA6B,OAAO;AAAA,MAAA;AAE/D,8BAAwB,KAAK,UAAU,cAAc,MAAM,GAAI;AAEzD,YAAAD,cAAG,MAAME,gBAAK,QAAQ,iBAAiB,GAAG,EAAE,WAAW,KAAA,CAAM;AAC7D,YAAAF,cAAG,UAAU,mBAAmB,qBAAqB;AAAA,IAC5D;AAGI,QAAA,OAAO,aAAa,YAAY,UAAU;AAChC,mBAAA,UAAU,aAAa,aAAa,OAAO;AAAA,IACzD;AAEA,UAAM,EAAE,OAAO,WAAW,MAAU,IAAAF,cAAO,kBAAkB,YAAY;AAEzE,QAAI,OAAO;AACJ,YAAA,IAAIC,OAAAA,oBAAoB,0CAA0C;AAAA,IACzE;AAEO,WAAA;AAAA,EACR;AAAA,EAEQ,MAAM,yBACb,WAA2B;AAErB,UAAA,oBAAoB,KAAK;AAE/B,UAAM,oBAAoB;AAAA,MACzB,GAAG;AAAA,MACH,SAASE,iBAAAA,iBAAiB,UAAU,OAAO;AAAA,IAAA;AAGxC,QAAA;AACG,YAAAD,cAAG,UACR,mBACA,KAAK,UAAU,mBAAmB,MAAM,CAAC,CAAC;AAAA,aAEnC,OAAO;AACT,YAAA,IAAIH,qBACT,oEACA;AAAA,QACC,OAAO;AAAA,MAAA,CACP;AAAA,IAEH;AAAA,EACD;AAAA,EAEQ,iCAA8B;AACrC,WAAOK,gBAAK,QAAQ,KAAK,iBAAiB,8BAA8B;AAAA,EACzE;AACA;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PrismicAuthManager.js","sources":["../../../src/auth/PrismicAuthManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport * as os from \"node:os\";\nimport * as http from \"node:http\";\n\nimport * as h3 from \"h3\";\nimport fetch from \"../lib/fetch\";\nimport cookie from \"cookie\";\nimport cors from \"cors\";\nimport getPort from \"get-port\";\n\nimport { decode } from \"../lib/decode\";\nimport { serializeCookies } from \"../lib/serializeCookies\";\n\nimport { API_ENDPOINTS } from \"../constants/API_ENDPOINTS\";\nimport { SLICE_MACHINE_USER_AGENT } from \"../constants/SLICE_MACHINE_USER_AGENT\";\nimport { createPrismicAuthManagerMiddleware } from \"./createPrismicAuthManagerMiddleware\";\nimport {\n\tInternalError,\n\tUnauthenticatedError,\n\tUnexpectedDataError,\n} from \"../errors\";\n\nconst COOKIE_SEPARATOR = \"; \";\nconst AUTH_COOKIE_KEY = \"prismic-auth\";\nconst SESSION_COOKIE_KEY = \"SESSION\";\n\nconst PERSISTED_AUTH_STATE_FILE_NAME = \".prismic\";\nconst DEFAULT_PERSISTED_AUTH_STATE: PrismicAuthState = {\n\tbase: \"https://prismic.io\",\n\tcookies: {},\n};\n\nconst PrismicAuthState = t.intersection([\n\tt.type({\n\t\tbase: t.string,\n\t\tcookies: t.intersection([\n\t\t\tt.partial({\n\t\t\t\t[AUTH_COOKIE_KEY]: t.string,\n\t\t\t\tSESSION: t.string,\n\t\t\t}),\n\t\t\tt.record(t.string, t.string),\n\t\t]),\n\t}),\n\tt.partial({\n\t\tshortId: t.string,\n\t\tintercomHash: t.string,\n\t\toauthAccessToken: t.string,\n\t\tauthUrl: t.string,\n\t}),\n]);\nexport type PrismicAuthState = t.TypeOf<typeof PrismicAuthState>;\n\nconst PrismicUserProfile = t.exact(\n\tt.type({\n\t\tuserId: t.string,\n\t\tshortId: t.string,\n\t\tintercomHash: t.string,\n\t\temail: t.string,\n\t\tfirstName: t.string,\n\t\tlastName: t.string,\n\t}),\n);\nexport type PrismicUserProfile = t.TypeOf<typeof PrismicUserProfile>;\n\ntype PrismicAuthManagerConstructorArgs = {\n\tscopedDirectory?: string;\n};\n\ntype PrismicAuthManagerLoginArgs = {\n\temail: string;\n\tcookies: string[];\n};\n\ntype PrismicAuthManagerGetLoginSessionInfoReturnType = {\n\tport: number;\n\turl: string;\n};\n\ntype PrismicAuthManagerNodeLoginSessionArgs = {\n\tport: number;\n\tonListenCallback?: () => void;\n};\n\ntype GetProfileForAuthenticationTokenArgs = {\n\tauthenticationToken: string;\n};\n\nconst checkHasAuthenticationToken = (\n\tauthState: PrismicAuthState,\n): authState is PrismicAuthState & {\n\tcookies: Required<\n\t\tPick<\n\t\t\tPrismicAuthState[\"cookies\"],\n\t\t\ttypeof AUTH_COOKIE_KEY | typeof SESSION_COOKIE_KEY\n\t\t>\n\t>;\n} => {\n\treturn Boolean(\n\t\tauthState.cookies[AUTH_COOKIE_KEY] && authState.cookies[SESSION_COOKIE_KEY],\n\t);\n};\n\nconst parseCookies = (cookies: string): Record<string, string> => {\n\treturn cookie.parse(cookies, {\n\t\t// Don't escape any values.\n\t\tdecode: (value) => value,\n\t});\n};\n\nexport class PrismicAuthManager {\n\t// TODO: Automatically scope the manager to the current Slice Machine\n\t// project? If not, this internal state can be removed.\n\tscopedDirectory: string;\n\n\tconstructor({\n\t\tscopedDirectory = os.homedir(),\n\t}: PrismicAuthManagerConstructorArgs = {}) {\n\t\tthis.scopedDirectory = scopedDirectory;\n\t}\n\n\t// TODO: Make the `cookies` argument more explicit. What are these\n\t// mysterious cookies?\n\tasync login(args: PrismicAuthManagerLoginArgs): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t// Set the auth's URL base to the current base at runtime.\n\t\tauthState.base = API_ENDPOINTS.PrismicWroom;\n\t\tauthState.cookies = {\n\t\t\t...authState.cookies,\n\t\t\t...parseCookies(args.cookies.join(COOKIE_SEPARATOR)),\n\t\t};\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst authenticationToken = authState.cookies[AUTH_COOKIE_KEY];\n\t\t\tconst profile = await this._getProfileForAuthenticationToken({\n\t\t\t\tauthenticationToken,\n\t\t\t});\n\n\t\t\tauthState.shortId = profile.shortId;\n\t\t\tauthState.intercomHash = profile.intercomHash;\n\t\t}\n\n\t\tawait this._writePersistedAuthState(authState);\n\t}\n\n\tasync getLoginSessionInfo(): Promise<PrismicAuthManagerGetLoginSessionInfoReturnType> {\n\t\t// Pick a random port, with a preference for historic `5555`\n\t\tconst port = await getPort({ port: 5555 });\n\n\t\tconst url = new URL(\n\t\t\t`./dashboard/cli/login?source=slice-machine&port=${port}`,\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t).toString();\n\n\t\treturn {\n\t\t\tport,\n\t\t\turl,\n\t\t};\n\t}\n\n\tasync nodeLoginSession(\n\t\targs: PrismicAuthManagerNodeLoginSessionArgs,\n\t): Promise<void> {\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\t// Timeout attempt after 3 minutes\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\tserver.close();\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Login timeout, server did not receive a response within a 3-minute delay\",\n\t\t\t\t);\n\t\t\t}, 180_000);\n\n\t\t\tconst app = h3.createApp();\n\t\t\tapp.use(h3.fromNodeMiddleware(cors()));\n\t\t\tapp.use(\n\t\t\t\th3.fromNodeMiddleware(\n\t\t\t\t\tcreatePrismicAuthManagerMiddleware({\n\t\t\t\t\t\tprismicAuthManager: this,\n\t\t\t\t\t\tonLoginCallback() {\n\t\t\t\t\t\t\t// Cleanup process and resolve\n\t\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\t\tserver.close();\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\t// Start server\n\t\t\tconst server = http.createServer(h3.toNodeListener(app));\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tserver.once(\"listening\", () => {\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t\tserver.listen(args.port);\n\t\t\t});\n\n\t\t\tif (args.onListenCallback) {\n\t\t\t\targs.onListenCallback();\n\t\t\t}\n\t\t});\n\t}\n\n\tasync logout(): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t// Remove all Prismic cookies, short ID, and Intercom hash\n\t\t// associated with the currently logged in user.\n\t\tauthState.cookies = {};\n\t\tauthState.shortId = undefined;\n\t\tauthState.intercomHash = undefined;\n\n\t\tawait this._writePersistedAuthState(authState);\n\t}\n\n\tasync checkIsLoggedIn(): Promise<boolean> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst url = new URL(\"./validate\", API_ENDPOINTS.PrismicAuthentication);\n\t\t\turl.searchParams.set(\"token\", authState.cookies[AUTH_COOKIE_KEY]);\n\n\t\t\tlet res;\n\t\t\ttry {\n\t\t\t\tres = await fetch(url.toString(), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\t// Noop, we return if `res` is not defined.\n\t\t\t}\n\n\t\t\tif (!res || !res.ok) {\n\t\t\t\tawait this.logout();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync getAuthenticationCookies(): Promise<\n\t\tPrismicAuthState[\"cookies\"] &\n\t\t\tRequired<\n\t\t\t\tPick<\n\t\t\t\t\tPrismicAuthState[\"cookies\"],\n\t\t\t\t\ttypeof AUTH_COOKIE_KEY | typeof SESSION_COOKIE_KEY\n\t\t\t\t>\n\t\t\t>\n\t> {\n\t\tconst isLoggedIn = await this.checkIsLoggedIn();\n\n\t\tif (isLoggedIn) {\n\t\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\t\treturn authState.cookies;\n\t\t\t}\n\t\t}\n\n\t\tthrow new UnauthenticatedError();\n\t}\n\n\tasync getAuthenticationToken(): Promise<string> {\n\t\tconst cookies = await this.getAuthenticationCookies();\n\n\t\treturn cookies[AUTH_COOKIE_KEY];\n\t}\n\n\tasync refreshAuthenticationToken(): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst url = new URL(\n\t\t\t\t\"./refreshtoken\",\n\t\t\t\tAPI_ENDPOINTS.PrismicAuthentication,\n\t\t\t);\n\t\t\turl.searchParams.set(\"token\", authState.cookies[AUTH_COOKIE_KEY]);\n\n\t\t\tconst res = await fetch(url.toString(), {\n\t\t\t\theaders: {\n\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst text = await res.text();\n\n\t\t\tif (res.ok) {\n\t\t\t\tauthState.cookies[AUTH_COOKIE_KEY] = text;\n\n\t\t\t\tawait this._writePersistedAuthState(authState);\n\t\t\t} else {\n\t\t\t\tthrow new InternalError(\"Failed to refresh authentication token.\", {\n\t\t\t\t\tcause: text,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new UnauthenticatedError();\n\t\t}\n\t}\n\n\tasync getProfile(): Promise<PrismicUserProfile> {\n\t\tconst authenticationToken = await this.getAuthenticationToken();\n\n\t\treturn await this._getProfileForAuthenticationToken({\n\t\t\tauthenticationToken,\n\t\t});\n\t}\n\n\tprivate async _getProfileForAuthenticationToken(\n\t\targs: GetProfileForAuthenticationTokenArgs,\n\t): Promise<PrismicUserProfile> {\n\t\tconst url = new URL(\"./profile\", API_ENDPOINTS.PrismicUser);\n\t\tconst res = await fetch(url.toString(), {\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${args.authenticationToken}`,\n\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t},\n\t\t});\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value: profile, error } = decode(PrismicUserProfile, json);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t\"Received invalid data from the Prismic user service.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn profile;\n\t\t} else {\n\t\t\tconst text = await res.text();\n\t\t\tthrow new InternalError(\n\t\t\t\t\"Failed to retrieve profile from the Prismic user service.\",\n\t\t\t\t{\n\t\t\t\t\tcause: text,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate async _readPersistedAuthState(): Promise<PrismicAuthState> {\n\t\tconst authStateFilePath = this._getPersistedAuthStateFilePath();\n\n\t\tlet authStateFileContents: string = JSON.stringify({});\n\t\tlet rawAuthState: Record<string, unknown> = {};\n\n\t\ttry {\n\t\t\tauthStateFileContents = await fs.readFile(authStateFilePath, \"utf8\");\n\t\t\trawAuthState = JSON.parse(authStateFileContents);\n\t\t} catch {\n\t\t\t// Write a default persisted state if it doesn't already exist.\n\n\t\t\trawAuthState = {\n\t\t\t\t...DEFAULT_PERSISTED_AUTH_STATE,\n\t\t\t\tcookies: serializeCookies(DEFAULT_PERSISTED_AUTH_STATE.cookies),\n\t\t\t};\n\t\t\tauthStateFileContents = JSON.stringify(rawAuthState, null, \"\\t\");\n\n\t\t\tawait fs.mkdir(path.dirname(authStateFilePath), { recursive: true });\n\t\t\tawait fs.writeFile(authStateFilePath, authStateFileContents);\n\t\t}\n\n\t\t// Decode cookies into a record for convenience.\n\t\tif (typeof rawAuthState.cookies === \"string\") {\n\t\t\trawAuthState.cookies = parseCookies(rawAuthState.cookies);\n\t\t}\n\n\t\tconst { value: authState, error } = decode(PrismicAuthState, rawAuthState);\n\n\t\tif (error) {\n\t\t\tthrow new UnexpectedDataError(\"Prismic authentication state is invalid.\");\n\t\t}\n\n\t\treturn authState;\n\t}\n\n\tprivate async _writePersistedAuthState(\n\t\tauthState: PrismicAuthState,\n\t): Promise<void> {\n\t\tconst authStateFilePath = this._getPersistedAuthStateFilePath();\n\n\t\tconst preparedAuthState = {\n\t\t\t...authState,\n\t\t\tcookies: serializeCookies(authState.cookies),\n\t\t};\n\n\t\ttry {\n\t\t\tawait fs.writeFile(\n\t\t\t\tauthStateFilePath,\n\t\t\t\tJSON.stringify(preparedAuthState, null, 2),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new InternalError(\n\t\t\t\t\"Failed to write Prismic authentication state to the file system.\",\n\t\t\t\t{\n\t\t\t\t\tcause: error,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _getPersistedAuthStateFilePath(): string {\n\t\treturn path.resolve(this.scopedDirectory, PERSISTED_AUTH_STATE_FILE_NAME);\n\t}\n}\n"],"names":["getPort","resolve"],"mappings":"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"}
1
+ {"version":3,"file":"PrismicAuthManager.js","sources":["../../../src/auth/PrismicAuthManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as fs from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport * as os from \"node:os\";\nimport * as http from \"node:http\";\n\nimport * as h3 from \"h3\";\nimport fetch from \"../lib/fetch\";\nimport cookie from \"cookie\";\nimport cors from \"cors\";\nimport getPort from \"get-port\";\n\nimport { decode } from \"../lib/decode\";\nimport { serializeCookies } from \"../lib/serializeCookies\";\n\nimport { API_ENDPOINTS } from \"../constants/API_ENDPOINTS\";\nimport { SLICE_MACHINE_USER_AGENT } from \"../constants/SLICE_MACHINE_USER_AGENT\";\nimport { createPrismicAuthManagerMiddleware } from \"./createPrismicAuthManagerMiddleware\";\nimport {\n\tInternalError,\n\tUnauthenticatedError,\n\tUnexpectedDataError,\n} from \"../errors\";\n\nconst COOKIE_SEPARATOR = \"; \";\nconst AUTH_COOKIE_KEY = \"prismic-auth\";\nconst SESSION_COOKIE_KEY = \"SESSION\";\n\nconst PERSISTED_AUTH_STATE_FILE_NAME = \".prismic\";\nconst DEFAULT_PERSISTED_AUTH_STATE: PrismicAuthState = {\n\tbase: \"https://prismic.io\",\n\tcookies: {},\n};\n\nconst PrismicAuthState = t.intersection([\n\tt.type({\n\t\tbase: t.string,\n\t\tcookies: t.intersection([\n\t\t\tt.partial({\n\t\t\t\t[AUTH_COOKIE_KEY]: t.string,\n\t\t\t\tSESSION: t.string,\n\t\t\t}),\n\t\t\tt.record(t.string, t.string),\n\t\t]),\n\t}),\n\tt.partial({\n\t\tshortId: t.string,\n\t\tintercomHash: t.string,\n\t\toauthAccessToken: t.string,\n\t\tauthUrl: t.string,\n\t}),\n]);\nexport type PrismicAuthState = t.TypeOf<typeof PrismicAuthState>;\n\nconst PrismicUserProfile = t.exact(\n\tt.type({\n\t\tuserId: t.string,\n\t\tshortId: t.string,\n\t\tintercomHash: t.string,\n\t\temail: t.string,\n\t\tfirstName: t.string,\n\t\tlastName: t.string,\n\t}),\n);\nexport type PrismicUserProfile = t.TypeOf<typeof PrismicUserProfile>;\n\ntype PrismicAuthManagerConstructorArgs = {\n\tscopedDirectory?: string;\n};\n\ntype PrismicAuthManagerLoginArgs = {\n\temail: string;\n\tcookies: string[];\n};\n\ntype PrismicAuthManagerGetLoginSessionInfoReturnType = {\n\tport: number;\n\turl: string;\n};\n\ntype PrismicAuthManagerNodeLoginSessionArgs = {\n\tport: number;\n\tonListenCallback?: () => void;\n};\n\ntype GetProfileForAuthenticationTokenArgs = {\n\tauthenticationToken: string;\n};\n\nconst checkHasAuthenticationToken = (\n\tauthState: PrismicAuthState,\n): authState is PrismicAuthState & {\n\tcookies: Required<\n\t\tPick<\n\t\t\tPrismicAuthState[\"cookies\"],\n\t\t\ttypeof AUTH_COOKIE_KEY | typeof SESSION_COOKIE_KEY\n\t\t>\n\t>;\n} => {\n\treturn Boolean(\n\t\tauthState.cookies[AUTH_COOKIE_KEY] && authState.cookies[SESSION_COOKIE_KEY],\n\t);\n};\n\nconst parseCookies = (cookies: string): Record<string, string> => {\n\treturn cookie.parse(cookies, {\n\t\t// Don't escape any values.\n\t\tdecode: (value) => value,\n\t});\n};\n\nexport class PrismicAuthManager {\n\t// TODO: Automatically scope the manager to the current Slice Machine\n\t// project? If not, this internal state can be removed.\n\tscopedDirectory: string;\n\n\tconstructor({\n\t\tscopedDirectory = os.homedir(),\n\t}: PrismicAuthManagerConstructorArgs = {}) {\n\t\tthis.scopedDirectory = scopedDirectory;\n\t}\n\n\t// TODO: Make the `cookies` argument more explicit. What are these\n\t// mysterious cookies?\n\tasync login(args: PrismicAuthManagerLoginArgs): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t// Set the auth's URL base to the current base at runtime.\n\t\tauthState.base = API_ENDPOINTS.PrismicWroom;\n\t\tauthState.cookies = {\n\t\t\t...authState.cookies,\n\t\t\t...parseCookies(args.cookies.join(COOKIE_SEPARATOR)),\n\t\t};\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst authenticationToken = authState.cookies[AUTH_COOKIE_KEY];\n\t\t\tconst profile = await this._getProfileForAuthenticationToken({\n\t\t\t\tauthenticationToken,\n\t\t\t});\n\n\t\t\tauthState.shortId = profile.shortId;\n\t\t\tauthState.intercomHash = profile.intercomHash;\n\t\t}\n\n\t\tawait this._writePersistedAuthState(authState);\n\t}\n\n\tasync getLoginSessionInfo(): Promise<PrismicAuthManagerGetLoginSessionInfoReturnType> {\n\t\t// Pick a random port, with a preference for historic `5555`\n\t\tconst port = await getPort({ port: 5555 });\n\n\t\tconst url = new URL(\n\t\t\t`./dashboard/cli/login?source=slice-machine&port=${port}`,\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t).toString();\n\n\t\treturn {\n\t\t\tport,\n\t\t\turl,\n\t\t};\n\t}\n\n\tasync nodeLoginSession(\n\t\targs: PrismicAuthManagerNodeLoginSessionArgs,\n\t): Promise<void> {\n\t\treturn new Promise<void>(async (resolve) => {\n\t\t\t// Timeout attempt after 3 minutes\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\tserver.close();\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Login timeout, server did not receive a response within a 3-minute delay\",\n\t\t\t\t);\n\t\t\t}, 180_000);\n\n\t\t\tconst app = h3.createApp();\n\t\t\tapp.use(h3.fromNodeMiddleware(cors()));\n\t\t\tapp.use(\n\t\t\t\th3.fromNodeMiddleware(\n\t\t\t\t\tcreatePrismicAuthManagerMiddleware({\n\t\t\t\t\t\tprismicAuthManager: this,\n\t\t\t\t\t\tonLoginCallback() {\n\t\t\t\t\t\t\t// Cleanup process and resolve\n\t\t\t\t\t\t\tclearTimeout(timeout);\n\t\t\t\t\t\t\tserver.close();\n\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t);\n\n\t\t\t// Start server\n\t\t\tconst server = http.createServer(h3.toNodeListener(app));\n\t\t\tawait new Promise<void>((resolve) => {\n\t\t\t\tserver.once(\"listening\", () => {\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t\tserver.listen(args.port);\n\t\t\t});\n\n\t\t\tif (args.onListenCallback) {\n\t\t\t\targs.onListenCallback();\n\t\t\t}\n\t\t});\n\t}\n\n\tasync logout(): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t// Remove all Prismic cookies, short ID, and Intercom hash\n\t\t// associated with the currently logged in user.\n\t\tauthState.cookies = {};\n\t\tauthState.shortId = undefined;\n\t\tauthState.intercomHash = undefined;\n\n\t\tawait this._writePersistedAuthState(authState);\n\t}\n\n\tasync checkIsLoggedIn(): Promise<boolean> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst url = new URL(\"./validate\", API_ENDPOINTS.PrismicAuthentication);\n\t\t\turl.searchParams.set(\"token\", authState.cookies[AUTH_COOKIE_KEY]);\n\n\t\t\tlet res;\n\t\t\ttry {\n\t\t\t\tres = await fetch(url.toString(), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\t// Noop, we return if `res` is not defined.\n\t\t\t}\n\n\t\t\tif (!res || !res.ok) {\n\t\t\t\tawait this.logout();\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync getAuthenticationCookies(): Promise<\n\t\tPrismicAuthState[\"cookies\"] &\n\t\t\tRequired<\n\t\t\t\tPick<\n\t\t\t\t\tPrismicAuthState[\"cookies\"],\n\t\t\t\t\ttypeof AUTH_COOKIE_KEY | typeof SESSION_COOKIE_KEY\n\t\t\t\t>\n\t\t\t>\n\t> {\n\t\tconst isLoggedIn = await this.checkIsLoggedIn();\n\n\t\tif (isLoggedIn) {\n\t\t\tconst authState = await this._readPersistedAuthState();\n\n\t\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\t\treturn authState.cookies;\n\t\t\t}\n\t\t}\n\n\t\tthrow new UnauthenticatedError();\n\t}\n\n\tasync getAuthenticationToken(): Promise<string> {\n\t\tconst cookies = await this.getAuthenticationCookies();\n\n\t\treturn cookies[AUTH_COOKIE_KEY];\n\t}\n\n\tasync refreshAuthenticationToken(): Promise<void> {\n\t\tconst authState = await this._readPersistedAuthState();\n\n\t\tif (checkHasAuthenticationToken(authState)) {\n\t\t\tconst url = new URL(\n\t\t\t\t\"./refreshtoken\",\n\t\t\t\tAPI_ENDPOINTS.PrismicAuthentication,\n\t\t\t);\n\t\t\turl.searchParams.set(\"token\", authState.cookies[AUTH_COOKIE_KEY]);\n\n\t\t\tconst res = await fetch(url.toString(), {\n\t\t\t\theaders: {\n\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t},\n\t\t\t});\n\t\t\tconst text = await res.text();\n\n\t\t\tif (res.ok) {\n\t\t\t\tauthState.cookies[AUTH_COOKIE_KEY] = text;\n\n\t\t\t\tawait this._writePersistedAuthState(authState);\n\t\t\t} else {\n\t\t\t\tthrow new InternalError(\"Failed to refresh authentication token.\", {\n\t\t\t\t\tcause: text,\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new UnauthenticatedError();\n\t\t}\n\t}\n\n\tasync getProfile(): Promise<PrismicUserProfile> {\n\t\tconst authenticationToken = await this.getAuthenticationToken();\n\n\t\treturn await this._getProfileForAuthenticationToken({\n\t\t\tauthenticationToken,\n\t\t});\n\t}\n\n\tprivate async _getProfileForAuthenticationToken(\n\t\targs: GetProfileForAuthenticationTokenArgs,\n\t): Promise<PrismicUserProfile> {\n\t\tconst url = new URL(\"./profile\", API_ENDPOINTS.PrismicUser);\n\t\tconst res = await fetch(url.toString(), {\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${args.authenticationToken}`,\n\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t},\n\t\t});\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value: profile, error } = decode(PrismicUserProfile, json);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t\"Received invalid data from the Prismic user service.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn profile;\n\t\t} else {\n\t\t\tconst text = await res.text();\n\t\t\tthrow new InternalError(\n\t\t\t\t\"Failed to retrieve profile from the Prismic user service.\",\n\t\t\t\t{\n\t\t\t\t\tcause: text,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate async _readPersistedAuthState(): Promise<PrismicAuthState> {\n\t\tconst authStateFilePath = this._getPersistedAuthStateFilePath();\n\n\t\tlet authStateFileContents: string = JSON.stringify({});\n\t\tlet rawAuthState: Record<string, unknown> = {};\n\n\t\ttry {\n\t\t\tauthStateFileContents = await fs.readFile(authStateFilePath, \"utf8\");\n\t\t\trawAuthState = JSON.parse(authStateFileContents);\n\t\t} catch {\n\t\t\t// Write a default persisted state if it doesn't already exist.\n\n\t\t\trawAuthState = {\n\t\t\t\t...DEFAULT_PERSISTED_AUTH_STATE,\n\t\t\t\tcookies: serializeCookies(DEFAULT_PERSISTED_AUTH_STATE.cookies),\n\t\t\t};\n\t\t\tauthStateFileContents = JSON.stringify(rawAuthState, null, \"\\t\");\n\n\t\t\tawait fs.mkdir(path.dirname(authStateFilePath), { recursive: true });\n\t\t\tawait fs.writeFile(authStateFilePath, authStateFileContents);\n\t\t}\n\n\t\t// Decode cookies into a record for convenience.\n\t\tif (typeof rawAuthState.cookies === \"string\") {\n\t\t\trawAuthState.cookies = parseCookies(rawAuthState.cookies);\n\t\t}\n\n\t\tconst { value: authState, error } = decode(PrismicAuthState, rawAuthState);\n\n\t\tif (error) {\n\t\t\tthrow new UnexpectedDataError(\"Prismic authentication state is invalid.\");\n\t\t}\n\n\t\treturn authState;\n\t}\n\n\tprivate async _writePersistedAuthState(\n\t\tauthState: PrismicAuthState,\n\t): Promise<void> {\n\t\tconst authStateFilePath = this._getPersistedAuthStateFilePath();\n\n\t\tconst preparedAuthState = {\n\t\t\t...authState,\n\t\t\tcookies: serializeCookies(authState.cookies),\n\t\t};\n\n\t\ttry {\n\t\t\tawait fs.writeFile(\n\t\t\t\tauthStateFilePath,\n\t\t\t\tJSON.stringify(preparedAuthState, null, 2),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new InternalError(\n\t\t\t\t\"Failed to write Prismic authentication state to the file system.\",\n\t\t\t\t{\n\t\t\t\t\tcause: error,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate _getPersistedAuthStateFilePath(): string {\n\t\treturn path.resolve(this.scopedDirectory, PERSISTED_AUTH_STATE_FILE_NAME);\n\t}\n}\n"],"names":["getPort","resolve"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createPrismicAuthManagerMiddleware.cjs","sources":["../../../src/auth/createPrismicAuthManagerMiddleware.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport {\n\tcreateEvent,\n\tcreateRouter,\n\tdefineNodeMiddleware,\n\teventHandler,\n\tNodeMiddleware,\n\treadBody,\n} from \"h3\";\n\nimport { decode } from \"../lib/decode\";\n\nimport { PrismicAuthManager } from \"./PrismicAuthManager\";\n\nconst PrismicAuthResponse = t.type({\n\temail: t.string,\n\tcookies: t.array(t.string),\n});\ntype PrismicAuthResponse = t.TypeOf<typeof PrismicAuthResponse>;\n\nexport type PrismicAuthCheckStatusResponse =\n\t| {\n\t\t\tstatus: \"ok\";\n\t\t\tshortId: string;\n\t\t\tintercomHash: string;\n\t }\n\t| {\n\t\t\tstatus: \"pending\";\n\t };\n\nexport type CreatePrismicAuthManagerMiddlewareArgs = {\n\tprismicAuthManager: PrismicAuthManager;\n\tonLoginCallback?: () => void | Promise<void>;\n};\n\nexport const createPrismicAuthManagerMiddleware = (\n\targs: CreatePrismicAuthManagerMiddlewareArgs,\n): NodeMiddleware => {\n\tconst router = createRouter();\n\n\t// Route called by the remote Prismic login page on successful login.\n\trouter.post(\n\t\t\"/\",\n\t\teventHandler(async (event) => {\n\t\t\tconst body = await readBody(event);\n\t\t\tconst { value, error } = decode(PrismicAuthResponse, body);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(`Invalid auth payload: ${error.errors.join(\", \")}`);\n\t\t\t}\n\n\t\t\tawait args.prismicAuthManager.login({\n\t\t\t\temail: value.email,\n\t\t\t\tcookies: value.cookies,\n\t\t\t});\n\n\t\t\tif (args.onLoginCallback) {\n\t\t\t\tawait args.onLoginCallback();\n\t\t\t}\n\n\t\t\treturn {};\n\t\t}),\n\t);\n\n\treturn defineNodeMiddleware(async (req, res) => {\n\t\tconst event = createEvent(req, res);\n\n\t\tawait router.handler(event);\n\n\t\tres.end();\n\t});\n};\n"],"names":["t","createRouter","eventHandler","readBody","decode","defineNodeMiddleware","createEvent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,sBAAsBA,aAAE,KAAK;AAAA,EAClC,OAAOA,aAAE;AAAA,EACT,SAASA,aAAE,MAAMA,aAAE,MAAM;AACzB,CAAA;AAkBY,MAAA,qCAAqC,CACjD,SACmB;AACnB,QAAM,SAASC,GAAAA;AAGf,SAAO,KACN,KACAC,GAAa,aAAA,OAAO,UAAS;AACtB,UAAA,OAAO,MAAMC,YAAS,KAAK;AACjC,UAAM,EAAE,OAAO,MAAA,IAAUC,OAAAA,OAAO,qBAAqB,IAAI;AAEzD,QAAI,OAAO;AACV,YAAM,IAAI,MAAM,yBAAyB,MAAM,OAAO,KAAK,IAAI,GAAG;AAAA,IACnE;AAEM,UAAA,KAAK,mBAAmB,MAAM;AAAA,MACnC,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,IAAA,CACf;AAED,QAAI,KAAK,iBAAiB;AACzB,YAAM,KAAK;IACZ;AAEA,WAAO;EACP,CAAA,CAAC;AAGI,SAAAC,GAAA,qBAAqB,OAAO,KAAK,QAAO;AACxC,UAAA,QAAQC,GAAAA,YAAY,KAAK,GAAG;AAE5B,UAAA,OAAO,QAAQ,KAAK;AAE1B,QAAI,IAAG;AAAA,EAAA,CACP;AACF;;"}
1
+ {"version":3,"file":"createPrismicAuthManagerMiddleware.cjs","sources":["../../../src/auth/createPrismicAuthManagerMiddleware.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport {\n\tcreateEvent,\n\tcreateRouter,\n\tdefineNodeMiddleware,\n\teventHandler,\n\tNodeMiddleware,\n\treadBody,\n} from \"h3\";\n\nimport { decode } from \"../lib/decode\";\n\nimport { PrismicAuthManager } from \"./PrismicAuthManager\";\n\nconst PrismicAuthResponse = t.type({\n\temail: t.string,\n\tcookies: t.array(t.string),\n});\ntype PrismicAuthResponse = t.TypeOf<typeof PrismicAuthResponse>;\n\nexport type PrismicAuthCheckStatusResponse =\n\t| {\n\t\t\tstatus: \"ok\";\n\t\t\tshortId: string;\n\t\t\tintercomHash: string;\n\t }\n\t| {\n\t\t\tstatus: \"pending\";\n\t };\n\nexport type CreatePrismicAuthManagerMiddlewareArgs = {\n\tprismicAuthManager: PrismicAuthManager;\n\tonLoginCallback?: () => void | Promise<void>;\n};\n\nexport const createPrismicAuthManagerMiddleware = (\n\targs: CreatePrismicAuthManagerMiddlewareArgs,\n): NodeMiddleware => {\n\tconst router = createRouter();\n\n\t// Route called by the remote Prismic login page on successful login.\n\trouter.post(\n\t\t\"/\",\n\t\teventHandler(async (event) => {\n\t\t\tconst body = await readBody(event);\n\t\t\tconst { value, error } = decode(PrismicAuthResponse, body);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(`Invalid auth payload: ${error.errors.join(\", \")}`);\n\t\t\t}\n\n\t\t\tawait args.prismicAuthManager.login({\n\t\t\t\temail: value.email,\n\t\t\t\tcookies: value.cookies,\n\t\t\t});\n\n\t\t\tif (args.onLoginCallback) {\n\t\t\t\tawait args.onLoginCallback();\n\t\t\t}\n\n\t\t\treturn {};\n\t\t}),\n\t);\n\n\treturn defineNodeMiddleware(async (req, res) => {\n\t\tconst event = createEvent(req, res);\n\n\t\tawait router.handler(event);\n\n\t\tres.end();\n\t});\n};\n"],"names":["t","createRouter","eventHandler","readBody","decode","defineNodeMiddleware","createEvent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,sBAAsBA,aAAE,KAAK;AAAA,EAClC,OAAOA,aAAE;AAAA,EACT,SAASA,aAAE,MAAMA,aAAE,MAAM;AACzB,CAAA;AAkBY,MAAA,qCAAqC,CACjD,SACmB;AACnB,QAAM,SAASC,GAAAA;AAGf,SAAO,KACN,KACAC,GAAa,aAAA,OAAO,UAAS;AACtB,UAAA,OAAO,MAAMC,YAAS,KAAK;AACjC,UAAM,EAAE,OAAO,MAAA,IAAUC,OAAAA,OAAO,qBAAqB,IAAI;AAEzD,QAAI,OAAO;AACJ,YAAA,IAAI,MAAM,yBAAyB,MAAM,OAAO,KAAK,IAAI,CAAC,EAAE;AAAA,IACnE;AAEM,UAAA,KAAK,mBAAmB,MAAM;AAAA,MACnC,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,IAAA,CACf;AAED,QAAI,KAAK,iBAAiB;AACzB,YAAM,KAAK;IACZ;AAEA,WAAO;EACP,CAAA,CAAC;AAGI,SAAAC,GAAA,qBAAqB,OAAO,KAAK,QAAO;AACxC,UAAA,QAAQC,GAAAA,YAAY,KAAK,GAAG;AAE5B,UAAA,OAAO,QAAQ,KAAK;AAE1B,QAAI,IAAG;AAAA,EAAA,CACP;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"createPrismicAuthManagerMiddleware.js","sources":["../../../src/auth/createPrismicAuthManagerMiddleware.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport {\n\tcreateEvent,\n\tcreateRouter,\n\tdefineNodeMiddleware,\n\teventHandler,\n\tNodeMiddleware,\n\treadBody,\n} from \"h3\";\n\nimport { decode } from \"../lib/decode\";\n\nimport { PrismicAuthManager } from \"./PrismicAuthManager\";\n\nconst PrismicAuthResponse = t.type({\n\temail: t.string,\n\tcookies: t.array(t.string),\n});\ntype PrismicAuthResponse = t.TypeOf<typeof PrismicAuthResponse>;\n\nexport type PrismicAuthCheckStatusResponse =\n\t| {\n\t\t\tstatus: \"ok\";\n\t\t\tshortId: string;\n\t\t\tintercomHash: string;\n\t }\n\t| {\n\t\t\tstatus: \"pending\";\n\t };\n\nexport type CreatePrismicAuthManagerMiddlewareArgs = {\n\tprismicAuthManager: PrismicAuthManager;\n\tonLoginCallback?: () => void | Promise<void>;\n};\n\nexport const createPrismicAuthManagerMiddleware = (\n\targs: CreatePrismicAuthManagerMiddlewareArgs,\n): NodeMiddleware => {\n\tconst router = createRouter();\n\n\t// Route called by the remote Prismic login page on successful login.\n\trouter.post(\n\t\t\"/\",\n\t\teventHandler(async (event) => {\n\t\t\tconst body = await readBody(event);\n\t\t\tconst { value, error } = decode(PrismicAuthResponse, body);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(`Invalid auth payload: ${error.errors.join(\", \")}`);\n\t\t\t}\n\n\t\t\tawait args.prismicAuthManager.login({\n\t\t\t\temail: value.email,\n\t\t\t\tcookies: value.cookies,\n\t\t\t});\n\n\t\t\tif (args.onLoginCallback) {\n\t\t\t\tawait args.onLoginCallback();\n\t\t\t}\n\n\t\t\treturn {};\n\t\t}),\n\t);\n\n\treturn defineNodeMiddleware(async (req, res) => {\n\t\tconst event = createEvent(req, res);\n\n\t\tawait router.handler(event);\n\n\t\tres.end();\n\t});\n};\n"],"names":[],"mappings":";;;AAcA,MAAM,sBAAsB,EAAE,KAAK;AAAA,EAClC,OAAO,EAAE;AAAA,EACT,SAAS,EAAE,MAAM,EAAE,MAAM;AACzB,CAAA;AAkBY,MAAA,qCAAqC,CACjD,SACmB;AACnB,QAAM,SAAS;AAGf,SAAO,KACN,KACA,aAAa,OAAO,UAAS;AACtB,UAAA,OAAO,MAAM,SAAS,KAAK;AACjC,UAAM,EAAE,OAAO,MAAA,IAAU,OAAO,qBAAqB,IAAI;AAEzD,QAAI,OAAO;AACV,YAAM,IAAI,MAAM,yBAAyB,MAAM,OAAO,KAAK,IAAI,GAAG;AAAA,IACnE;AAEM,UAAA,KAAK,mBAAmB,MAAM;AAAA,MACnC,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,IAAA,CACf;AAED,QAAI,KAAK,iBAAiB;AACzB,YAAM,KAAK;IACZ;AAEA,WAAO;EACP,CAAA,CAAC;AAGI,SAAA,qBAAqB,OAAO,KAAK,QAAO;AACxC,UAAA,QAAQ,YAAY,KAAK,GAAG;AAE5B,UAAA,OAAO,QAAQ,KAAK;AAE1B,QAAI,IAAG;AAAA,EAAA,CACP;AACF;"}
1
+ {"version":3,"file":"createPrismicAuthManagerMiddleware.js","sources":["../../../src/auth/createPrismicAuthManagerMiddleware.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport {\n\tcreateEvent,\n\tcreateRouter,\n\tdefineNodeMiddleware,\n\teventHandler,\n\tNodeMiddleware,\n\treadBody,\n} from \"h3\";\n\nimport { decode } from \"../lib/decode\";\n\nimport { PrismicAuthManager } from \"./PrismicAuthManager\";\n\nconst PrismicAuthResponse = t.type({\n\temail: t.string,\n\tcookies: t.array(t.string),\n});\ntype PrismicAuthResponse = t.TypeOf<typeof PrismicAuthResponse>;\n\nexport type PrismicAuthCheckStatusResponse =\n\t| {\n\t\t\tstatus: \"ok\";\n\t\t\tshortId: string;\n\t\t\tintercomHash: string;\n\t }\n\t| {\n\t\t\tstatus: \"pending\";\n\t };\n\nexport type CreatePrismicAuthManagerMiddlewareArgs = {\n\tprismicAuthManager: PrismicAuthManager;\n\tonLoginCallback?: () => void | Promise<void>;\n};\n\nexport const createPrismicAuthManagerMiddleware = (\n\targs: CreatePrismicAuthManagerMiddlewareArgs,\n): NodeMiddleware => {\n\tconst router = createRouter();\n\n\t// Route called by the remote Prismic login page on successful login.\n\trouter.post(\n\t\t\"/\",\n\t\teventHandler(async (event) => {\n\t\t\tconst body = await readBody(event);\n\t\t\tconst { value, error } = decode(PrismicAuthResponse, body);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(`Invalid auth payload: ${error.errors.join(\", \")}`);\n\t\t\t}\n\n\t\t\tawait args.prismicAuthManager.login({\n\t\t\t\temail: value.email,\n\t\t\t\tcookies: value.cookies,\n\t\t\t});\n\n\t\t\tif (args.onLoginCallback) {\n\t\t\t\tawait args.onLoginCallback();\n\t\t\t}\n\n\t\t\treturn {};\n\t\t}),\n\t);\n\n\treturn defineNodeMiddleware(async (req, res) => {\n\t\tconst event = createEvent(req, res);\n\n\t\tawait router.handler(event);\n\n\t\tres.end();\n\t});\n};\n"],"names":[],"mappings":";;;AAcA,MAAM,sBAAsB,EAAE,KAAK;AAAA,EAClC,OAAO,EAAE;AAAA,EACT,SAAS,EAAE,MAAM,EAAE,MAAM;AACzB,CAAA;AAkBY,MAAA,qCAAqC,CACjD,SACmB;AACnB,QAAM,SAAS;AAGf,SAAO,KACN,KACA,aAAa,OAAO,UAAS;AACtB,UAAA,OAAO,MAAM,SAAS,KAAK;AACjC,UAAM,EAAE,OAAO,MAAA,IAAU,OAAO,qBAAqB,IAAI;AAEzD,QAAI,OAAO;AACJ,YAAA,IAAI,MAAM,yBAAyB,MAAM,OAAO,KAAK,IAAI,CAAC,EAAE;AAAA,IACnE;AAEM,UAAA,KAAK,mBAAmB,MAAM;AAAA,MACnC,OAAO,MAAM;AAAA,MACb,SAAS,MAAM;AAAA,IAAA,CACf;AAED,QAAI,KAAK,iBAAiB;AACzB,YAAM,KAAK;IACZ;AAEA,WAAO;EACP,CAAA,CAAC;AAGI,SAAA,qBAAqB,OAAO,KAAK,QAAO;AACxC,UAAA,QAAQ,YAAY,KAAK,GAAG;AAE5B,UAAA,OAAO,QAAQ,KAAK;AAE1B,QAAI,IAAG;AAAA,EAAA,CACP;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"API_ENDPOINTS.cjs","sources":["../../../src/constants/API_ENDPOINTS.ts"],"sourcesContent":["import { addTrailingSlash, removeTrailingSlash } from \"../lib/trailingSlash\";\nimport { APPLICATION_MODE } from \"./APPLICATION_MODE\";\n\nexport type APIEndpoints = {\n\tPrismicWroom: string;\n\tPrismicAuthentication: string;\n\tPrismicModels: string;\n\tPrismicUser: string;\n\tAwsAclProvider: string;\n\tPrismicEmbed: string;\n\tPrismicUnsplash: string;\n\tSliceMachineV1: string;\n\tRepositoryService: string;\n\tLocaleService: string;\n\tCustomTypeService: string;\n};\n\nexport const API_ENDPOINTS: APIEndpoints = (() => {\n\tswitch (process.env.SM_ENV) {\n\t\tcase APPLICATION_MODE.Development: {\n\t\t\tconst apiEndpoints = {\n\t\t\t\tPrismicWroom: addTrailingSlash(process.env.wroom_endpoint),\n\t\t\t\tPrismicAuthentication: addTrailingSlash(\n\t\t\t\t\tprocess.env.authentication_server_endpoint,\n\t\t\t\t),\n\t\t\t\tPrismicModels: addTrailingSlash(process.env.customtypesapi_endpoint),\n\t\t\t\tPrismicUser: addTrailingSlash(process.env.user_service_endpoint),\n\t\t\t\tAwsAclProvider: addTrailingSlash(process.env.acl_provider_endpoint),\n\t\t\t\tPrismicEmbed: removeTrailingSlash(\n\t\t\t\t\tprocess.env.oembed_endpoint ?? \"https://oembed.wroom.io\",\n\t\t\t\t),\n\t\t\t\tPrismicUnsplash: addTrailingSlash(\n\t\t\t\t\tprocess.env.unsplash_endpoint ?? \"https://unsplash.wroom.io/\",\n\t\t\t\t),\n\t\t\t\tSliceMachineV1: addTrailingSlash(\n\t\t\t\t\tprocess.env.slice_machine_v1_endpoint ??\n\t\t\t\t\t\t\"https://sm-api.wroom.io/v1/\",\n\t\t\t\t),\n\t\t\t\tRepositoryService: addTrailingSlash(\n\t\t\t\t\tprocess.env.repository_api ??\n\t\t\t\t\t\t\"https://api.internal.wroom.io/repository/\",\n\t\t\t\t),\n\t\t\t\tLocaleService: addTrailingSlash(\n\t\t\t\t\tprocess.env.locale_api ?? \"https://api.internal.wroom.io/locale/\",\n\t\t\t\t),\n\t\t\t\tCustomTypeService: addTrailingSlash(\n\t\t\t\t\tprocess.env.custom_type_api ??\n\t\t\t\t\t\t\"https://api.internal.wroom.io/custom-type/\",\n\t\t\t\t),\n\t\t\t};\n\n\t\t\tconst missingAPIEndpoints = Object.keys(apiEndpoints).filter((key) => {\n\t\t\t\treturn !apiEndpoints[key as keyof typeof apiEndpoints];\n\t\t\t});\n\n\t\t\tif (missingAPIEndpoints.length > 0) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`You are running Slice Machine in development mode (SM_ENV=${\n\t\t\t\t\t\tAPPLICATION_MODE.Development\n\t\t\t\t\t}) where API endpoints are configured via environment variables.\n\nThe following endpoints were not configured: ${missingAPIEndpoints.join(\", \")}.\n\nConfigure them before continuing.`,\n\t\t\t\t);\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\tconsole.warn(`You are running Slice Machine in development mode (SM_ENV=${\n\t\t\t\tAPPLICATION_MODE.Development\n\t\t\t}).\n\nThe following API endpoints were configured via environment variables:\n${Object.entries(apiEndpoints)\n\t.map(([name, endpoint]) => ` - ${name}: ${endpoint}`)\n\t.join(\"\\n\")}\n\nThese endpoints are different than Slice Machine's normal endpoints and are not trusted.\n\nIf you didn't intend to run Slice Machine this way, stop it immediately and unset the SM_ENV environment variable.`);\n\n\t\t\treturn apiEndpoints as APIEndpoints;\n\t\t}\n\n\t\tcase APPLICATION_MODE.Staging: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: \"https://wroom.io/\",\n\t\t\t\tPrismicAuthentication: \"https://auth.wroom.io/\",\n\t\t\t\tPrismicModels: \"https://customtypes.wroom.io/\",\n\t\t\t\tPrismicUser: \"https://user-service.wroom.io/\",\n\t\t\t\tAwsAclProvider: \"https://acl-provider.wroom.io/\",\n\t\t\t\tPrismicEmbed: \"https://oembed.wroom.io\",\n\t\t\t\tPrismicUnsplash: \"https://unsplash.wroom.io/\",\n\t\t\t\tSliceMachineV1: \"https://sm-api.wroom.io/v1/\",\n\t\t\t\tRepositoryService: \"https://api.internal.wroom.io/repository/\",\n\t\t\t\tLocaleService: \"https://api.internal.wroom.io/locale/\",\n\t\t\t\tCustomTypeService: \"https://api.internal.wroom.io/custom-type/\",\n\t\t\t};\n\t\t}\n\n\t\tcase APPLICATION_MODE.DevTools:\n\t\tcase APPLICATION_MODE.MarketingTools:\n\t\tcase APPLICATION_MODE.Platform: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: `https://${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicAuthentication: `https://auth.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicModels: `https://customtypes.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicUser: `https://user-service.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tAwsAclProvider: `https://acl-provider.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicEmbed: `https://oembed.${process.env.SM_ENV}-wroom.com`,\n\t\t\t\tPrismicUnsplash: `https://unsplash.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tSliceMachineV1: `https://sm-api.${process.env.SM_ENV}-wroom.com/v1/`,\n\t\t\t\tRepositoryService: `https://api.internal.${process.env.SM_ENV}-wroom.com/repository/`,\n\t\t\t\tLocaleService: `https://api.internal.${process.env.SM_ENV}-wroom.com/locale/`,\n\t\t\t\tCustomTypeService: `https://api.internal.${process.env.SM_ENV}-wroom.com/custom-type/`,\n\t\t\t};\n\t\t}\n\n\t\tcase APPLICATION_MODE.Production:\n\t\tdefault: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: \"https://prismic.io/\",\n\t\t\t\tPrismicAuthentication: \"https://auth.prismic.io/\",\n\t\t\t\tPrismicModels: \"https://customtypes.prismic.io/\",\n\t\t\t\tPrismicUser: \"https://user-service.prismic.io/\",\n\t\t\t\tAwsAclProvider: \"https://acl-provider.prismic.io/\",\n\t\t\t\tPrismicEmbed: \"https://oembed.prismic.io\",\n\t\t\t\tPrismicUnsplash: \"https://unsplash.prismic.io/\",\n\t\t\t\tSliceMachineV1: \"https://sm-api.prismic.io/v1/\",\n\t\t\t\tRepositoryService: \"https://api.internal.prismic.io/repository/\",\n\t\t\t\tLocaleService: \"https://api.internal.prismic.io/locale/\",\n\t\t\t\tCustomTypeService: \"https://api.internal.prismic.io/custom-type/\",\n\t\t\t};\n\t\t}\n\t}\n})();\n"],"names":["APPLICATION_MODE","addTrailingSlash","removeTrailingSlash"],"mappings":"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"}
1
+ {"version":3,"file":"API_ENDPOINTS.cjs","sources":["../../../src/constants/API_ENDPOINTS.ts"],"sourcesContent":["import { addTrailingSlash, removeTrailingSlash } from \"../lib/trailingSlash\";\nimport { APPLICATION_MODE } from \"./APPLICATION_MODE\";\n\nexport type APIEndpoints = {\n\tPrismicWroom: string;\n\tPrismicAuthentication: string;\n\tPrismicModels: string;\n\tPrismicUser: string;\n\tAwsAclProvider: string;\n\tPrismicEmbed: string;\n\tPrismicUnsplash: string;\n\tSliceMachineV1: string;\n\tRepositoryService: string;\n\tLocaleService: string;\n\tCustomTypeService: string;\n};\n\nexport const API_ENDPOINTS: APIEndpoints = (() => {\n\tswitch (process.env.SM_ENV) {\n\t\tcase APPLICATION_MODE.Development: {\n\t\t\tconst apiEndpoints = {\n\t\t\t\tPrismicWroom: addTrailingSlash(process.env.wroom_endpoint),\n\t\t\t\tPrismicAuthentication: addTrailingSlash(\n\t\t\t\t\tprocess.env.authentication_server_endpoint,\n\t\t\t\t),\n\t\t\t\tPrismicModels: addTrailingSlash(process.env.customtypesapi_endpoint),\n\t\t\t\tPrismicUser: addTrailingSlash(process.env.user_service_endpoint),\n\t\t\t\tAwsAclProvider: addTrailingSlash(process.env.acl_provider_endpoint),\n\t\t\t\tPrismicEmbed: removeTrailingSlash(\n\t\t\t\t\tprocess.env.oembed_endpoint ?? \"https://oembed.wroom.io\",\n\t\t\t\t),\n\t\t\t\tPrismicUnsplash: addTrailingSlash(\n\t\t\t\t\tprocess.env.unsplash_endpoint ?? \"https://unsplash.wroom.io/\",\n\t\t\t\t),\n\t\t\t\tSliceMachineV1: addTrailingSlash(\n\t\t\t\t\tprocess.env.slice_machine_v1_endpoint ??\n\t\t\t\t\t\t\"https://sm-api.wroom.io/v1/\",\n\t\t\t\t),\n\t\t\t\tRepositoryService: addTrailingSlash(\n\t\t\t\t\tprocess.env.repository_api ??\n\t\t\t\t\t\t\"https://api.internal.wroom.io/repository/\",\n\t\t\t\t),\n\t\t\t\tLocaleService: addTrailingSlash(\n\t\t\t\t\tprocess.env.locale_api ?? \"https://api.internal.wroom.io/locale/\",\n\t\t\t\t),\n\t\t\t\tCustomTypeService: addTrailingSlash(\n\t\t\t\t\tprocess.env.custom_type_api ??\n\t\t\t\t\t\t\"https://api.internal.wroom.io/custom-type/\",\n\t\t\t\t),\n\t\t\t};\n\n\t\t\tconst missingAPIEndpoints = Object.keys(apiEndpoints).filter((key) => {\n\t\t\t\treturn !apiEndpoints[key as keyof typeof apiEndpoints];\n\t\t\t});\n\n\t\t\tif (missingAPIEndpoints.length > 0) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`You are running Slice Machine in development mode (SM_ENV=${\n\t\t\t\t\t\tAPPLICATION_MODE.Development\n\t\t\t\t\t}) where API endpoints are configured via environment variables.\n\nThe following endpoints were not configured: ${missingAPIEndpoints.join(\", \")}.\n\nConfigure them before continuing.`,\n\t\t\t\t);\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\tconsole.warn(`You are running Slice Machine in development mode (SM_ENV=${\n\t\t\t\tAPPLICATION_MODE.Development\n\t\t\t}).\n\nThe following API endpoints were configured via environment variables:\n${Object.entries(apiEndpoints)\n\t.map(([name, endpoint]) => ` - ${name}: ${endpoint}`)\n\t.join(\"\\n\")}\n\nThese endpoints are different than Slice Machine's normal endpoints and are not trusted.\n\nIf you didn't intend to run Slice Machine this way, stop it immediately and unset the SM_ENV environment variable.`);\n\n\t\t\treturn apiEndpoints as APIEndpoints;\n\t\t}\n\n\t\tcase APPLICATION_MODE.Staging: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: \"https://wroom.io/\",\n\t\t\t\tPrismicAuthentication: \"https://auth.wroom.io/\",\n\t\t\t\tPrismicModels: \"https://customtypes.wroom.io/\",\n\t\t\t\tPrismicUser: \"https://user-service.wroom.io/\",\n\t\t\t\tAwsAclProvider: \"https://acl-provider.wroom.io/\",\n\t\t\t\tPrismicEmbed: \"https://oembed.wroom.io\",\n\t\t\t\tPrismicUnsplash: \"https://unsplash.wroom.io/\",\n\t\t\t\tSliceMachineV1: \"https://sm-api.wroom.io/v1/\",\n\t\t\t\tRepositoryService: \"https://api.internal.wroom.io/repository/\",\n\t\t\t\tLocaleService: \"https://api.internal.wroom.io/locale/\",\n\t\t\t\tCustomTypeService: \"https://api.internal.wroom.io/custom-type/\",\n\t\t\t};\n\t\t}\n\n\t\tcase APPLICATION_MODE.DevTools:\n\t\tcase APPLICATION_MODE.MarketingTools:\n\t\tcase APPLICATION_MODE.Platform: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: `https://${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicAuthentication: `https://auth.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicModels: `https://customtypes.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicUser: `https://user-service.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tAwsAclProvider: `https://acl-provider.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicEmbed: `https://oembed.${process.env.SM_ENV}-wroom.com`,\n\t\t\t\tPrismicUnsplash: `https://unsplash.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tSliceMachineV1: `https://sm-api.${process.env.SM_ENV}-wroom.com/v1/`,\n\t\t\t\tRepositoryService: `https://api.internal.${process.env.SM_ENV}-wroom.com/repository/`,\n\t\t\t\tLocaleService: `https://api.internal.${process.env.SM_ENV}-wroom.com/locale/`,\n\t\t\t\tCustomTypeService: `https://api.internal.${process.env.SM_ENV}-wroom.com/custom-type/`,\n\t\t\t};\n\t\t}\n\n\t\tcase APPLICATION_MODE.Production:\n\t\tdefault: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: \"https://prismic.io/\",\n\t\t\t\tPrismicAuthentication: \"https://auth.prismic.io/\",\n\t\t\t\tPrismicModels: \"https://customtypes.prismic.io/\",\n\t\t\t\tPrismicUser: \"https://user-service.prismic.io/\",\n\t\t\t\tAwsAclProvider: \"https://acl-provider.prismic.io/\",\n\t\t\t\tPrismicEmbed: \"https://oembed.prismic.io\",\n\t\t\t\tPrismicUnsplash: \"https://unsplash.prismic.io/\",\n\t\t\t\tSliceMachineV1: \"https://sm-api.prismic.io/v1/\",\n\t\t\t\tRepositoryService: \"https://api.internal.prismic.io/repository/\",\n\t\t\t\tLocaleService: \"https://api.internal.prismic.io/locale/\",\n\t\t\t\tCustomTypeService: \"https://api.internal.prismic.io/custom-type/\",\n\t\t\t};\n\t\t}\n\t}\n})();\n"],"names":["APPLICATION_MODE","addTrailingSlash","removeTrailingSlash"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"API_ENDPOINTS.js","sources":["../../../src/constants/API_ENDPOINTS.ts"],"sourcesContent":["import { addTrailingSlash, removeTrailingSlash } from \"../lib/trailingSlash\";\nimport { APPLICATION_MODE } from \"./APPLICATION_MODE\";\n\nexport type APIEndpoints = {\n\tPrismicWroom: string;\n\tPrismicAuthentication: string;\n\tPrismicModels: string;\n\tPrismicUser: string;\n\tAwsAclProvider: string;\n\tPrismicEmbed: string;\n\tPrismicUnsplash: string;\n\tSliceMachineV1: string;\n\tRepositoryService: string;\n\tLocaleService: string;\n\tCustomTypeService: string;\n};\n\nexport const API_ENDPOINTS: APIEndpoints = (() => {\n\tswitch (process.env.SM_ENV) {\n\t\tcase APPLICATION_MODE.Development: {\n\t\t\tconst apiEndpoints = {\n\t\t\t\tPrismicWroom: addTrailingSlash(process.env.wroom_endpoint),\n\t\t\t\tPrismicAuthentication: addTrailingSlash(\n\t\t\t\t\tprocess.env.authentication_server_endpoint,\n\t\t\t\t),\n\t\t\t\tPrismicModels: addTrailingSlash(process.env.customtypesapi_endpoint),\n\t\t\t\tPrismicUser: addTrailingSlash(process.env.user_service_endpoint),\n\t\t\t\tAwsAclProvider: addTrailingSlash(process.env.acl_provider_endpoint),\n\t\t\t\tPrismicEmbed: removeTrailingSlash(\n\t\t\t\t\tprocess.env.oembed_endpoint ?? \"https://oembed.wroom.io\",\n\t\t\t\t),\n\t\t\t\tPrismicUnsplash: addTrailingSlash(\n\t\t\t\t\tprocess.env.unsplash_endpoint ?? \"https://unsplash.wroom.io/\",\n\t\t\t\t),\n\t\t\t\tSliceMachineV1: addTrailingSlash(\n\t\t\t\t\tprocess.env.slice_machine_v1_endpoint ??\n\t\t\t\t\t\t\"https://sm-api.wroom.io/v1/\",\n\t\t\t\t),\n\t\t\t\tRepositoryService: addTrailingSlash(\n\t\t\t\t\tprocess.env.repository_api ??\n\t\t\t\t\t\t\"https://api.internal.wroom.io/repository/\",\n\t\t\t\t),\n\t\t\t\tLocaleService: addTrailingSlash(\n\t\t\t\t\tprocess.env.locale_api ?? \"https://api.internal.wroom.io/locale/\",\n\t\t\t\t),\n\t\t\t\tCustomTypeService: addTrailingSlash(\n\t\t\t\t\tprocess.env.custom_type_api ??\n\t\t\t\t\t\t\"https://api.internal.wroom.io/custom-type/\",\n\t\t\t\t),\n\t\t\t};\n\n\t\t\tconst missingAPIEndpoints = Object.keys(apiEndpoints).filter((key) => {\n\t\t\t\treturn !apiEndpoints[key as keyof typeof apiEndpoints];\n\t\t\t});\n\n\t\t\tif (missingAPIEndpoints.length > 0) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`You are running Slice Machine in development mode (SM_ENV=${\n\t\t\t\t\t\tAPPLICATION_MODE.Development\n\t\t\t\t\t}) where API endpoints are configured via environment variables.\n\nThe following endpoints were not configured: ${missingAPIEndpoints.join(\", \")}.\n\nConfigure them before continuing.`,\n\t\t\t\t);\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\tconsole.warn(`You are running Slice Machine in development mode (SM_ENV=${\n\t\t\t\tAPPLICATION_MODE.Development\n\t\t\t}).\n\nThe following API endpoints were configured via environment variables:\n${Object.entries(apiEndpoints)\n\t.map(([name, endpoint]) => ` - ${name}: ${endpoint}`)\n\t.join(\"\\n\")}\n\nThese endpoints are different than Slice Machine's normal endpoints and are not trusted.\n\nIf you didn't intend to run Slice Machine this way, stop it immediately and unset the SM_ENV environment variable.`);\n\n\t\t\treturn apiEndpoints as APIEndpoints;\n\t\t}\n\n\t\tcase APPLICATION_MODE.Staging: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: \"https://wroom.io/\",\n\t\t\t\tPrismicAuthentication: \"https://auth.wroom.io/\",\n\t\t\t\tPrismicModels: \"https://customtypes.wroom.io/\",\n\t\t\t\tPrismicUser: \"https://user-service.wroom.io/\",\n\t\t\t\tAwsAclProvider: \"https://acl-provider.wroom.io/\",\n\t\t\t\tPrismicEmbed: \"https://oembed.wroom.io\",\n\t\t\t\tPrismicUnsplash: \"https://unsplash.wroom.io/\",\n\t\t\t\tSliceMachineV1: \"https://sm-api.wroom.io/v1/\",\n\t\t\t\tRepositoryService: \"https://api.internal.wroom.io/repository/\",\n\t\t\t\tLocaleService: \"https://api.internal.wroom.io/locale/\",\n\t\t\t\tCustomTypeService: \"https://api.internal.wroom.io/custom-type/\",\n\t\t\t};\n\t\t}\n\n\t\tcase APPLICATION_MODE.DevTools:\n\t\tcase APPLICATION_MODE.MarketingTools:\n\t\tcase APPLICATION_MODE.Platform: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: `https://${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicAuthentication: `https://auth.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicModels: `https://customtypes.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicUser: `https://user-service.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tAwsAclProvider: `https://acl-provider.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicEmbed: `https://oembed.${process.env.SM_ENV}-wroom.com`,\n\t\t\t\tPrismicUnsplash: `https://unsplash.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tSliceMachineV1: `https://sm-api.${process.env.SM_ENV}-wroom.com/v1/`,\n\t\t\t\tRepositoryService: `https://api.internal.${process.env.SM_ENV}-wroom.com/repository/`,\n\t\t\t\tLocaleService: `https://api.internal.${process.env.SM_ENV}-wroom.com/locale/`,\n\t\t\t\tCustomTypeService: `https://api.internal.${process.env.SM_ENV}-wroom.com/custom-type/`,\n\t\t\t};\n\t\t}\n\n\t\tcase APPLICATION_MODE.Production:\n\t\tdefault: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: \"https://prismic.io/\",\n\t\t\t\tPrismicAuthentication: \"https://auth.prismic.io/\",\n\t\t\t\tPrismicModels: \"https://customtypes.prismic.io/\",\n\t\t\t\tPrismicUser: \"https://user-service.prismic.io/\",\n\t\t\t\tAwsAclProvider: \"https://acl-provider.prismic.io/\",\n\t\t\t\tPrismicEmbed: \"https://oembed.prismic.io\",\n\t\t\t\tPrismicUnsplash: \"https://unsplash.prismic.io/\",\n\t\t\t\tSliceMachineV1: \"https://sm-api.prismic.io/v1/\",\n\t\t\t\tRepositoryService: \"https://api.internal.prismic.io/repository/\",\n\t\t\t\tLocaleService: \"https://api.internal.prismic.io/locale/\",\n\t\t\t\tCustomTypeService: \"https://api.internal.prismic.io/custom-type/\",\n\t\t\t};\n\t\t}\n\t}\n})();\n"],"names":[],"mappings":";;AAiBO,MAAM,iBAA+B,MAAK;AACxC,UAAA,QAAQ,IAAI,QAAQ;AAAA,IAC3B,KAAK,iBAAiB,aAAa;AAClC,YAAM,eAAe;AAAA,QACpB,cAAc,iBAAiB,QAAQ,IAAI,cAAc;AAAA,QACzD,uBAAuB,iBACtB,QAAQ,IAAI,8BAA8B;AAAA,QAE3C,eAAe,iBAAiB,QAAQ,IAAI,uBAAuB;AAAA,QACnE,aAAa,iBAAiB,QAAQ,IAAI,qBAAqB;AAAA,QAC/D,gBAAgB,iBAAiB,QAAQ,IAAI,qBAAqB;AAAA,QAClE,cAAc,oBACb,QAAQ,IAAI,mBAAmB,yBAAyB;AAAA,QAEzD,iBAAiB,iBAChB,QAAQ,IAAI,qBAAqB,4BAA4B;AAAA,QAE9D,gBAAgB,iBACf,QAAQ,IAAI,6BACX,6BAA6B;AAAA,QAE/B,mBAAmB,iBAClB,QAAQ,IAAI,kBACX,2CAA2C;AAAA,QAE7C,eAAe,iBACd,QAAQ,IAAI,cAAc,uCAAuC;AAAA,QAElE,mBAAmB,iBAClB,QAAQ,IAAI,mBACX,4CAA4C;AAAA,MAAA;AAI/C,YAAM,sBAAsB,OAAO,KAAK,YAAY,EAAE,OAAO,CAAC,QAAO;AAC7D,eAAA,CAAC,aAAa,GAAgC;AAAA,MAAA,CACrD;AAEG,UAAA,oBAAoB,SAAS,GAAG;AAC3B,gBAAA,MACP,6DACC,iBAAiB;AAAA;AAAA,+CAGwB,oBAAoB,KAAK,IAAI;AAAA;AAAA,kCAE1C;AAG9B,gBAAQ,KAAK,CAAC;AAAA,MACf;AAEQ,cAAA,KAAK,6DACZ,iBAAiB;AAAA;AAAA;AAAA,EAInB,OAAO,QAAQ,YAAY,EAC3B,IAAI,CAAC,CAAC,MAAM,QAAQ,MAAM,OAAO,SAAS,UAAU,EACpD,KAAK,IAAI;AAAA;AAAA;AAAA;AAAA,mHAIwG;AAEzG,aAAA;AAAA,IACR;AAAA,IAEA,KAAK,iBAAiB,SAAS;AACvB,aAAA;AAAA,QACN,cAAc;AAAA,QACd,uBAAuB;AAAA,QACvB,eAAe;AAAA,QACf,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,eAAe;AAAA,QACf,mBAAmB;AAAA,MAAA;AAAA,IAErB;AAAA,IAEA,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB,UAAU;AACxB,aAAA;AAAA,QACN,cAAc,WAAW,QAAQ,IAAI;AAAA,QACrC,uBAAuB,gBAAgB,QAAQ,IAAI;AAAA,QACnD,eAAe,uBAAuB,QAAQ,IAAI;AAAA,QAClD,aAAa,wBAAwB,QAAQ,IAAI;AAAA,QACjD,gBAAgB,wBAAwB,QAAQ,IAAI;AAAA,QACpD,cAAc,kBAAkB,QAAQ,IAAI;AAAA,QAC5C,iBAAiB,oBAAoB,QAAQ,IAAI;AAAA,QACjD,gBAAgB,kBAAkB,QAAQ,IAAI;AAAA,QAC9C,mBAAmB,wBAAwB,QAAQ,IAAI;AAAA,QACvD,eAAe,wBAAwB,QAAQ,IAAI;AAAA,QACnD,mBAAmB,wBAAwB,QAAQ,IAAI;AAAA,MAAA;AAAA,IAEzD;AAAA,IAEA,KAAK,iBAAiB;AAAA,IACtB,SAAS;AACD,aAAA;AAAA,QACN,cAAc;AAAA,QACd,uBAAuB;AAAA,QACvB,eAAe;AAAA,QACf,aAAa;AAAA,QACb,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,mBAAmB;AAAA,QACnB,eAAe;AAAA,QACf,mBAAmB;AAAA,MAAA;AAAA,IAErB;AAAA,EACD;AACD;"}
1
+ {"version":3,"file":"API_ENDPOINTS.js","sources":["../../../src/constants/API_ENDPOINTS.ts"],"sourcesContent":["import { addTrailingSlash, removeTrailingSlash } from \"../lib/trailingSlash\";\nimport { APPLICATION_MODE } from \"./APPLICATION_MODE\";\n\nexport type APIEndpoints = {\n\tPrismicWroom: string;\n\tPrismicAuthentication: string;\n\tPrismicModels: string;\n\tPrismicUser: string;\n\tAwsAclProvider: string;\n\tPrismicEmbed: string;\n\tPrismicUnsplash: string;\n\tSliceMachineV1: string;\n\tRepositoryService: string;\n\tLocaleService: string;\n\tCustomTypeService: string;\n};\n\nexport const API_ENDPOINTS: APIEndpoints = (() => {\n\tswitch (process.env.SM_ENV) {\n\t\tcase APPLICATION_MODE.Development: {\n\t\t\tconst apiEndpoints = {\n\t\t\t\tPrismicWroom: addTrailingSlash(process.env.wroom_endpoint),\n\t\t\t\tPrismicAuthentication: addTrailingSlash(\n\t\t\t\t\tprocess.env.authentication_server_endpoint,\n\t\t\t\t),\n\t\t\t\tPrismicModels: addTrailingSlash(process.env.customtypesapi_endpoint),\n\t\t\t\tPrismicUser: addTrailingSlash(process.env.user_service_endpoint),\n\t\t\t\tAwsAclProvider: addTrailingSlash(process.env.acl_provider_endpoint),\n\t\t\t\tPrismicEmbed: removeTrailingSlash(\n\t\t\t\t\tprocess.env.oembed_endpoint ?? \"https://oembed.wroom.io\",\n\t\t\t\t),\n\t\t\t\tPrismicUnsplash: addTrailingSlash(\n\t\t\t\t\tprocess.env.unsplash_endpoint ?? \"https://unsplash.wroom.io/\",\n\t\t\t\t),\n\t\t\t\tSliceMachineV1: addTrailingSlash(\n\t\t\t\t\tprocess.env.slice_machine_v1_endpoint ??\n\t\t\t\t\t\t\"https://sm-api.wroom.io/v1/\",\n\t\t\t\t),\n\t\t\t\tRepositoryService: addTrailingSlash(\n\t\t\t\t\tprocess.env.repository_api ??\n\t\t\t\t\t\t\"https://api.internal.wroom.io/repository/\",\n\t\t\t\t),\n\t\t\t\tLocaleService: addTrailingSlash(\n\t\t\t\t\tprocess.env.locale_api ?? \"https://api.internal.wroom.io/locale/\",\n\t\t\t\t),\n\t\t\t\tCustomTypeService: addTrailingSlash(\n\t\t\t\t\tprocess.env.custom_type_api ??\n\t\t\t\t\t\t\"https://api.internal.wroom.io/custom-type/\",\n\t\t\t\t),\n\t\t\t};\n\n\t\t\tconst missingAPIEndpoints = Object.keys(apiEndpoints).filter((key) => {\n\t\t\t\treturn !apiEndpoints[key as keyof typeof apiEndpoints];\n\t\t\t});\n\n\t\t\tif (missingAPIEndpoints.length > 0) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`You are running Slice Machine in development mode (SM_ENV=${\n\t\t\t\t\t\tAPPLICATION_MODE.Development\n\t\t\t\t\t}) where API endpoints are configured via environment variables.\n\nThe following endpoints were not configured: ${missingAPIEndpoints.join(\", \")}.\n\nConfigure them before continuing.`,\n\t\t\t\t);\n\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\n\t\t\tconsole.warn(`You are running Slice Machine in development mode (SM_ENV=${\n\t\t\t\tAPPLICATION_MODE.Development\n\t\t\t}).\n\nThe following API endpoints were configured via environment variables:\n${Object.entries(apiEndpoints)\n\t.map(([name, endpoint]) => ` - ${name}: ${endpoint}`)\n\t.join(\"\\n\")}\n\nThese endpoints are different than Slice Machine's normal endpoints and are not trusted.\n\nIf you didn't intend to run Slice Machine this way, stop it immediately and unset the SM_ENV environment variable.`);\n\n\t\t\treturn apiEndpoints as APIEndpoints;\n\t\t}\n\n\t\tcase APPLICATION_MODE.Staging: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: \"https://wroom.io/\",\n\t\t\t\tPrismicAuthentication: \"https://auth.wroom.io/\",\n\t\t\t\tPrismicModels: \"https://customtypes.wroom.io/\",\n\t\t\t\tPrismicUser: \"https://user-service.wroom.io/\",\n\t\t\t\tAwsAclProvider: \"https://acl-provider.wroom.io/\",\n\t\t\t\tPrismicEmbed: \"https://oembed.wroom.io\",\n\t\t\t\tPrismicUnsplash: \"https://unsplash.wroom.io/\",\n\t\t\t\tSliceMachineV1: \"https://sm-api.wroom.io/v1/\",\n\t\t\t\tRepositoryService: \"https://api.internal.wroom.io/repository/\",\n\t\t\t\tLocaleService: \"https://api.internal.wroom.io/locale/\",\n\t\t\t\tCustomTypeService: \"https://api.internal.wroom.io/custom-type/\",\n\t\t\t};\n\t\t}\n\n\t\tcase APPLICATION_MODE.DevTools:\n\t\tcase APPLICATION_MODE.MarketingTools:\n\t\tcase APPLICATION_MODE.Platform: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: `https://${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicAuthentication: `https://auth.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicModels: `https://customtypes.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicUser: `https://user-service.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tAwsAclProvider: `https://acl-provider.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tPrismicEmbed: `https://oembed.${process.env.SM_ENV}-wroom.com`,\n\t\t\t\tPrismicUnsplash: `https://unsplash.${process.env.SM_ENV}-wroom.com/`,\n\t\t\t\tSliceMachineV1: `https://sm-api.${process.env.SM_ENV}-wroom.com/v1/`,\n\t\t\t\tRepositoryService: `https://api.internal.${process.env.SM_ENV}-wroom.com/repository/`,\n\t\t\t\tLocaleService: `https://api.internal.${process.env.SM_ENV}-wroom.com/locale/`,\n\t\t\t\tCustomTypeService: `https://api.internal.${process.env.SM_ENV}-wroom.com/custom-type/`,\n\t\t\t};\n\t\t}\n\n\t\tcase APPLICATION_MODE.Production:\n\t\tdefault: {\n\t\t\treturn {\n\t\t\t\tPrismicWroom: \"https://prismic.io/\",\n\t\t\t\tPrismicAuthentication: \"https://auth.prismic.io/\",\n\t\t\t\tPrismicModels: \"https://customtypes.prismic.io/\",\n\t\t\t\tPrismicUser: \"https://user-service.prismic.io/\",\n\t\t\t\tAwsAclProvider: \"https://acl-provider.prismic.io/\",\n\t\t\t\tPrismicEmbed: \"https://oembed.prismic.io\",\n\t\t\t\tPrismicUnsplash: \"https://unsplash.prismic.io/\",\n\t\t\t\tSliceMachineV1: \"https://sm-api.prismic.io/v1/\",\n\t\t\t\tRepositoryService: \"https://api.internal.prismic.io/repository/\",\n\t\t\t\tLocaleService: \"https://api.internal.prismic.io/locale/\",\n\t\t\t\tCustomTypeService: \"https://api.internal.prismic.io/custom-type/\",\n\t\t\t};\n\t\t}\n\t}\n})();\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"API_TOKENS.cjs","sources":["../../../src/constants/API_TOKENS.ts"],"sourcesContent":["import { APPLICATION_MODE } from \"./APPLICATION_MODE\";\n\ntype APITokens = {\n\tSegmentKey: string;\n\tAmplitudeKey: string;\n};\n\nexport const API_TOKENS: APITokens = (() => {\n\tswitch (process.env.SM_ENV) {\n\t\tcase APPLICATION_MODE.Development:\n\t\tcase APPLICATION_MODE.DevTools:\n\t\tcase APPLICATION_MODE.MarketingTools:\n\t\tcase APPLICATION_MODE.Platform:\n\t\tcase APPLICATION_MODE.Staging:\n\t\t\treturn {\n\t\t\t\tSegmentKey: \"Ng5oKJHCGpSWplZ9ymB7Pu7rm0sTDeiG\",\n\t\t\t\tAmplitudeKey: \"client-rqVU4xTNaz7F51nBfKRUa0K3qnODiqzh\",\n\t\t\t};\n\t\tcase undefined:\n\t\tcase \"\":\n\t\tcase APPLICATION_MODE.Production:\n\t\t\treturn {\n\t\t\t\tSegmentKey: \"cGjidifKefYb6EPaGaqpt8rQXkv5TD6P\",\n\t\t\t\tAmplitudeKey: \"client-JuQQWUPimfKWId3WWU6p8xSkTiFqd1qV\",\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown application mode \"${process.env.SM_ENV}\".`);\n\t}\n})();\n"],"names":["APPLICATION_MODE"],"mappings":";;;AAOO,MAAM,cAAyB,MAAK;AAClC,UAAA,QAAQ,IAAI,QAAQ;AAAA,IAC3B,KAAKA,iBAAAA,iBAAiB;AAAA,IACtB,KAAKA,iBAAAA,iBAAiB;AAAA,IACtB,KAAKA,iBAAAA,iBAAiB;AAAA,IACtB,KAAKA,iBAAAA,iBAAiB;AAAA,IACtB,KAAKA,iBAAiB,iBAAA;AACd,aAAA;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAKA,iBAAiB,iBAAA;AACd,aAAA;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,IAEhB;AACC,YAAM,IAAI,MAAM,6BAA6B,QAAQ,IAAI,UAAU;AAAA,EACrE;AACD;;"}
1
+ {"version":3,"file":"API_TOKENS.cjs","sources":["../../../src/constants/API_TOKENS.ts"],"sourcesContent":["import { APPLICATION_MODE } from \"./APPLICATION_MODE\";\n\ntype APITokens = {\n\tSegmentKey: string;\n\tAmplitudeKey: string;\n};\n\nexport const API_TOKENS: APITokens = (() => {\n\tswitch (process.env.SM_ENV) {\n\t\tcase APPLICATION_MODE.Development:\n\t\tcase APPLICATION_MODE.DevTools:\n\t\tcase APPLICATION_MODE.MarketingTools:\n\t\tcase APPLICATION_MODE.Platform:\n\t\tcase APPLICATION_MODE.Staging:\n\t\t\treturn {\n\t\t\t\tSegmentKey: \"Ng5oKJHCGpSWplZ9ymB7Pu7rm0sTDeiG\",\n\t\t\t\tAmplitudeKey: \"client-rqVU4xTNaz7F51nBfKRUa0K3qnODiqzh\",\n\t\t\t};\n\t\tcase undefined:\n\t\tcase \"\":\n\t\tcase APPLICATION_MODE.Production:\n\t\t\treturn {\n\t\t\t\tSegmentKey: \"cGjidifKefYb6EPaGaqpt8rQXkv5TD6P\",\n\t\t\t\tAmplitudeKey: \"client-JuQQWUPimfKWId3WWU6p8xSkTiFqd1qV\",\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown application mode \"${process.env.SM_ENV}\".`);\n\t}\n})();\n"],"names":["APPLICATION_MODE"],"mappings":";;;AAOO,MAAM,cAAyB,MAAK;AAClC,UAAA,QAAQ,IAAI,QAAQ;AAAA,IAC3B,KAAKA,iBAAAA,iBAAiB;AAAA,IACtB,KAAKA,iBAAAA,iBAAiB;AAAA,IACtB,KAAKA,iBAAAA,iBAAiB;AAAA,IACtB,KAAKA,iBAAAA,iBAAiB;AAAA,IACtB,KAAKA,iBAAiB,iBAAA;AACd,aAAA;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAKA,iBAAiB,iBAAA;AACd,aAAA;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,IAEhB;AACC,YAAM,IAAI,MAAM,6BAA6B,QAAQ,IAAI,MAAM,IAAI;AAAA,EACrE;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"API_TOKENS.js","sources":["../../../src/constants/API_TOKENS.ts"],"sourcesContent":["import { APPLICATION_MODE } from \"./APPLICATION_MODE\";\n\ntype APITokens = {\n\tSegmentKey: string;\n\tAmplitudeKey: string;\n};\n\nexport const API_TOKENS: APITokens = (() => {\n\tswitch (process.env.SM_ENV) {\n\t\tcase APPLICATION_MODE.Development:\n\t\tcase APPLICATION_MODE.DevTools:\n\t\tcase APPLICATION_MODE.MarketingTools:\n\t\tcase APPLICATION_MODE.Platform:\n\t\tcase APPLICATION_MODE.Staging:\n\t\t\treturn {\n\t\t\t\tSegmentKey: \"Ng5oKJHCGpSWplZ9ymB7Pu7rm0sTDeiG\",\n\t\t\t\tAmplitudeKey: \"client-rqVU4xTNaz7F51nBfKRUa0K3qnODiqzh\",\n\t\t\t};\n\t\tcase undefined:\n\t\tcase \"\":\n\t\tcase APPLICATION_MODE.Production:\n\t\t\treturn {\n\t\t\t\tSegmentKey: \"cGjidifKefYb6EPaGaqpt8rQXkv5TD6P\",\n\t\t\t\tAmplitudeKey: \"client-JuQQWUPimfKWId3WWU6p8xSkTiFqd1qV\",\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown application mode \"${process.env.SM_ENV}\".`);\n\t}\n})();\n"],"names":[],"mappings":";AAOO,MAAM,cAAyB,MAAK;AAClC,UAAA,QAAQ,IAAI,QAAQ;AAAA,IAC3B,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AACd,aAAA;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,iBAAiB;AACd,aAAA;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,IAEhB;AACC,YAAM,IAAI,MAAM,6BAA6B,QAAQ,IAAI,UAAU;AAAA,EACrE;AACD;"}
1
+ {"version":3,"file":"API_TOKENS.js","sources":["../../../src/constants/API_TOKENS.ts"],"sourcesContent":["import { APPLICATION_MODE } from \"./APPLICATION_MODE\";\n\ntype APITokens = {\n\tSegmentKey: string;\n\tAmplitudeKey: string;\n};\n\nexport const API_TOKENS: APITokens = (() => {\n\tswitch (process.env.SM_ENV) {\n\t\tcase APPLICATION_MODE.Development:\n\t\tcase APPLICATION_MODE.DevTools:\n\t\tcase APPLICATION_MODE.MarketingTools:\n\t\tcase APPLICATION_MODE.Platform:\n\t\tcase APPLICATION_MODE.Staging:\n\t\t\treturn {\n\t\t\t\tSegmentKey: \"Ng5oKJHCGpSWplZ9ymB7Pu7rm0sTDeiG\",\n\t\t\t\tAmplitudeKey: \"client-rqVU4xTNaz7F51nBfKRUa0K3qnODiqzh\",\n\t\t\t};\n\t\tcase undefined:\n\t\tcase \"\":\n\t\tcase APPLICATION_MODE.Production:\n\t\t\treturn {\n\t\t\t\tSegmentKey: \"cGjidifKefYb6EPaGaqpt8rQXkv5TD6P\",\n\t\t\t\tAmplitudeKey: \"client-JuQQWUPimfKWId3WWU6p8xSkTiFqd1qV\",\n\t\t\t};\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown application mode \"${process.env.SM_ENV}\".`);\n\t}\n})();\n"],"names":[],"mappings":";AAOO,MAAM,cAAyB,MAAK;AAClC,UAAA,QAAQ,IAAI,QAAQ;AAAA,IAC3B,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AAAA,IACtB,KAAK,iBAAiB;AACd,aAAA;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,IAEhB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,iBAAiB;AACd,aAAA;AAAA,QACN,YAAY;AAAA,QACZ,cAAc;AAAA,MAAA;AAAA,IAEhB;AACC,YAAM,IAAI,MAAM,6BAA6B,QAAQ,IAAI,MAAM,IAAI;AAAA,EACrE;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.cjs","sources":["../../src/errors.ts"],"sourcesContent":["import { HookError } from \"@slicemachine/plugin-kit\";\n\nexport class SliceMachineError extends Error {\n\tname = \"SMSliceMachineError\";\n}\nexport class UnauthorizedError extends SliceMachineError {\n\tname = \"SMUnauthorizedError\" as const;\n}\nexport class UnauthenticatedError extends SliceMachineError {\n\tname = \"SMUnauthenticatedError\" as const;\n\tmessage = \"Authenticate before trying again.\";\n}\nexport class NotFoundError extends SliceMachineError {\n\tname = \"SMNotFoundError\" as const;\n}\nexport class UnexpectedDataError extends SliceMachineError {\n\tname = \"SMUnexpectedDataError\" as const;\n}\nexport class InternalError extends SliceMachineError {\n\tname = \"SMInternalError\" as const;\n}\nexport class PluginError extends SliceMachineError {\n\tname = \"SMPluginError\" as const;\n}\nexport class PluginHookResultError extends SliceMachineError {\n\tname = \"SMPluginHookResultError\" as const;\n\n\tconstructor(errors: HookError[]) {\n\t\tsuper(\n\t\t\t`${errors.length} error${\n\t\t\t\terrors.length === 1 ? \"\" : \"s\"\n\t\t\t} were returned by one or more plugins.`,\n\t\t\t{\n\t\t\t\tcause: errors,\n\t\t\t},\n\t\t);\n\t}\n}\nexport class InvalidActiveEnvironmentError extends SliceMachineError {\n\tname = \"SMInvalidActiveEnvironmentError\" as const;\n}\nexport class UnsupportedError extends SliceMachineError {\n\tname = \"SMUnsupportedError\" as const;\n}\n\ntype SliceMachineErrorNames =\n\t| \"SMSliceMachineError\"\n\t| UnauthorizedError[\"name\"]\n\t| UnauthenticatedError[\"name\"]\n\t| NotFoundError[\"name\"]\n\t| UnexpectedDataError[\"name\"]\n\t| InternalError[\"name\"]\n\t| PluginError[\"name\"]\n\t| PluginHookResultError[\"name\"]\n\t| InvalidActiveEnvironmentError[\"name\"]\n\t| UnsupportedError[\"name\"];\n\ntype ShallowSliceMachineError<TName extends SliceMachineErrorNames> = Error & {\n\tname: TName;\n};\n\nexport const isSliceMachineError = <TName extends SliceMachineErrorNames>(\n\terror: unknown,\n\tname?: TName,\n): error is TName extends string ? ShallowSliceMachineError<TName> : Error => {\n\tconst isErrorInstance = error instanceof Error;\n\n\treturn name === undefined\n\t\t? isErrorInstance && error.name.startsWith(\"SM\")\n\t\t: isErrorInstance && error.name === name;\n};\n\nexport const isUnauthorizedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnauthorizedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnauthorizedError\");\n};\n\nexport const isUnauthenticatedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnauthenticatedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnauthenticatedError\");\n};\n\nexport const isNotFoundError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMNotFoundError\"> => {\n\treturn isSliceMachineError(error, \"SMNotFoundError\");\n};\n\nexport const isUnexpectedDataError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnexpectedDataError\"> => {\n\treturn isSliceMachineError(error, \"SMUnexpectedDataError\");\n};\n\nexport const isInternalError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMInternalError\"> => {\n\treturn isSliceMachineError(error, \"SMInternalError\");\n};\n\nexport const isPluginError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMPluginError\"> => {\n\treturn isSliceMachineError(error, \"SMPluginError\");\n};\n\nexport const isInvalidActiveEnvironmentError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMInvalidActiveEnvironmentError\"> => {\n\treturn isSliceMachineError(error, \"SMInvalidActiveEnvironmentError\");\n};\n\nexport const isUnsupportedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnsupportedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnsupportedError\");\n};\n"],"names":[],"mappings":";;;;;;;;AAEM,MAAO,0BAA0B,MAAK;AAAA,EAAtC;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,0BAA0B,kBAAiB;AAAA,EAAlD;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,6BAA6B,kBAAiB;AAAA,EAArD;AAAA;AACL,gCAAO;AACP,mCAAU;AAAA;AACV;AACK,MAAO,sBAAsB,kBAAiB;AAAA,EAA9C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,4BAA4B,kBAAiB;AAAA,EAApD;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,sBAAsB,kBAAiB;AAAA,EAA9C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,oBAAoB,kBAAiB;AAAA,EAA5C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,8BAA8B,kBAAiB;AAAA,EAG3D,YAAY,QAAmB;AAC9B,UACC,GAAG,OAAO,eACT,OAAO,WAAW,IAAI,KAAK,6CAE5B;AAAA,MACC,OAAO;AAAA,IAAA,CACP;AATH,gCAAO;AAAA,EAWP;AACA;AACK,MAAO,sCAAsC,kBAAiB;AAAA,EAA9D;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,yBAAyB,kBAAiB;AAAA,EAAjD;AAAA;AACL,gCAAO;AAAA;AACP;AAkBY,MAAA,sBAAsB,CAClC,OACA,SAC4E;AAC5E,QAAM,kBAAkB,iBAAiB;AAElC,SAAA,SAAS,SACb,mBAAmB,MAAM,KAAK,WAAW,IAAI,IAC7C,mBAAmB,MAAM,SAAS;AACtC;AAEa,MAAA,sBAAsB,CAClC,UAC6D;AACtD,SAAA,oBAAoB,OAAO,qBAAqB;AACxD;AAEa,MAAA,yBAAyB,CACrC,UACgE;AACzD,SAAA,oBAAoB,OAAO,wBAAwB;AAC3D;AAEa,MAAA,kBAAkB,CAC9B,UACyD;AAClD,SAAA,oBAAoB,OAAO,iBAAiB;AACpD;AAEa,MAAA,wBAAwB,CACpC,UAC+D;AACxD,SAAA,oBAAoB,OAAO,uBAAuB;AAC1D;AAEa,MAAA,kBAAkB,CAC9B,UACyD;AAClD,SAAA,oBAAoB,OAAO,iBAAiB;AACpD;AAEa,MAAA,gBAAgB,CAC5B,UACuD;AAChD,SAAA,oBAAoB,OAAO,eAAe;AAClD;AAEa,MAAA,kCAAkC,CAC9C,UACyE;AAClE,SAAA,oBAAoB,OAAO,iCAAiC;AACpE;AAEa,MAAA,qBAAqB,CACjC,UAC4D;AACrD,SAAA,oBAAoB,OAAO,oBAAoB;AACvD;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"errors.cjs","sources":["../../src/errors.ts"],"sourcesContent":["import { HookError } from \"@slicemachine/plugin-kit\";\n\nexport class SliceMachineError extends Error {\n\tname = \"SMSliceMachineError\";\n}\nexport class UnauthorizedError extends SliceMachineError {\n\tname = \"SMUnauthorizedError\" as const;\n}\nexport class UnauthenticatedError extends SliceMachineError {\n\tname = \"SMUnauthenticatedError\" as const;\n\tmessage = \"Authenticate before trying again.\";\n}\nexport class NotFoundError extends SliceMachineError {\n\tname = \"SMNotFoundError\" as const;\n}\nexport class UnexpectedDataError extends SliceMachineError {\n\tname = \"SMUnexpectedDataError\" as const;\n}\nexport class InternalError extends SliceMachineError {\n\tname = \"SMInternalError\" as const;\n}\nexport class PluginError extends SliceMachineError {\n\tname = \"SMPluginError\" as const;\n}\nexport class PluginHookResultError extends SliceMachineError {\n\tname = \"SMPluginHookResultError\" as const;\n\n\tconstructor(errors: HookError[]) {\n\t\tsuper(\n\t\t\t`${errors.length} error${\n\t\t\t\terrors.length === 1 ? \"\" : \"s\"\n\t\t\t} were returned by one or more plugins.`,\n\t\t\t{\n\t\t\t\tcause: errors,\n\t\t\t},\n\t\t);\n\t}\n}\nexport class InvalidActiveEnvironmentError extends SliceMachineError {\n\tname = \"SMInvalidActiveEnvironmentError\" as const;\n}\nexport class UnsupportedError extends SliceMachineError {\n\tname = \"SMUnsupportedError\" as const;\n}\n\ntype SliceMachineErrorNames =\n\t| \"SMSliceMachineError\"\n\t| UnauthorizedError[\"name\"]\n\t| UnauthenticatedError[\"name\"]\n\t| NotFoundError[\"name\"]\n\t| UnexpectedDataError[\"name\"]\n\t| InternalError[\"name\"]\n\t| PluginError[\"name\"]\n\t| PluginHookResultError[\"name\"]\n\t| InvalidActiveEnvironmentError[\"name\"]\n\t| UnsupportedError[\"name\"];\n\ntype ShallowSliceMachineError<TName extends SliceMachineErrorNames> = Error & {\n\tname: TName;\n};\n\nexport const isSliceMachineError = <TName extends SliceMachineErrorNames>(\n\terror: unknown,\n\tname?: TName,\n): error is TName extends string ? ShallowSliceMachineError<TName> : Error => {\n\tconst isErrorInstance = error instanceof Error;\n\n\treturn name === undefined\n\t\t? isErrorInstance && error.name.startsWith(\"SM\")\n\t\t: isErrorInstance && error.name === name;\n};\n\nexport const isUnauthorizedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnauthorizedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnauthorizedError\");\n};\n\nexport const isUnauthenticatedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnauthenticatedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnauthenticatedError\");\n};\n\nexport const isNotFoundError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMNotFoundError\"> => {\n\treturn isSliceMachineError(error, \"SMNotFoundError\");\n};\n\nexport const isUnexpectedDataError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnexpectedDataError\"> => {\n\treturn isSliceMachineError(error, \"SMUnexpectedDataError\");\n};\n\nexport const isInternalError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMInternalError\"> => {\n\treturn isSliceMachineError(error, \"SMInternalError\");\n};\n\nexport const isPluginError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMPluginError\"> => {\n\treturn isSliceMachineError(error, \"SMPluginError\");\n};\n\nexport const isInvalidActiveEnvironmentError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMInvalidActiveEnvironmentError\"> => {\n\treturn isSliceMachineError(error, \"SMInvalidActiveEnvironmentError\");\n};\n\nexport const isUnsupportedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnsupportedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnsupportedError\");\n};\n"],"names":[],"mappings":";;;;;;;;AAEM,MAAO,0BAA0B,MAAK;AAAA,EAAtC;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,0BAA0B,kBAAiB;AAAA,EAAlD;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,6BAA6B,kBAAiB;AAAA,EAArD;AAAA;AACL,gCAAO;AACP,mCAAU;AAAA;AACV;AACK,MAAO,sBAAsB,kBAAiB;AAAA,EAA9C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,4BAA4B,kBAAiB;AAAA,EAApD;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,sBAAsB,kBAAiB;AAAA,EAA9C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,oBAAoB,kBAAiB;AAAA,EAA5C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,8BAA8B,kBAAiB;AAAA,EAG3D,YAAY,QAAmB;AAE7B,UAAA,GAAG,OAAO,MAAM,SACf,OAAO,WAAW,IAAI,KAAK,GAC5B,0CACA;AAAA,MACC,OAAO;AAAA,IAAA,CACP;AATH,gCAAO;AAAA,EAWP;AACA;AACK,MAAO,sCAAsC,kBAAiB;AAAA,EAA9D;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,yBAAyB,kBAAiB;AAAA,EAAjD;AAAA;AACL,gCAAO;AAAA;AACP;AAkBY,MAAA,sBAAsB,CAClC,OACA,SAC4E;AAC5E,QAAM,kBAAkB,iBAAiB;AAElC,SAAA,SAAS,SACb,mBAAmB,MAAM,KAAK,WAAW,IAAI,IAC7C,mBAAmB,MAAM,SAAS;AACtC;AAEa,MAAA,sBAAsB,CAClC,UAC6D;AACtD,SAAA,oBAAoB,OAAO,qBAAqB;AACxD;AAEa,MAAA,yBAAyB,CACrC,UACgE;AACzD,SAAA,oBAAoB,OAAO,wBAAwB;AAC3D;AAEa,MAAA,kBAAkB,CAC9B,UACyD;AAClD,SAAA,oBAAoB,OAAO,iBAAiB;AACpD;AAEa,MAAA,wBAAwB,CACpC,UAC+D;AACxD,SAAA,oBAAoB,OAAO,uBAAuB;AAC1D;AAEa,MAAA,kBAAkB,CAC9B,UACyD;AAClD,SAAA,oBAAoB,OAAO,iBAAiB;AACpD;AAEa,MAAA,gBAAgB,CAC5B,UACuD;AAChD,SAAA,oBAAoB,OAAO,eAAe;AAClD;AAEa,MAAA,kCAAkC,CAC9C,UACyE;AAClE,SAAA,oBAAoB,OAAO,iCAAiC;AACpE;AAEa,MAAA,qBAAqB,CACjC,UAC4D;AACrD,SAAA,oBAAoB,OAAO,oBAAoB;AACvD;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sources":["../../src/errors.ts"],"sourcesContent":["import { HookError } from \"@slicemachine/plugin-kit\";\n\nexport class SliceMachineError extends Error {\n\tname = \"SMSliceMachineError\";\n}\nexport class UnauthorizedError extends SliceMachineError {\n\tname = \"SMUnauthorizedError\" as const;\n}\nexport class UnauthenticatedError extends SliceMachineError {\n\tname = \"SMUnauthenticatedError\" as const;\n\tmessage = \"Authenticate before trying again.\";\n}\nexport class NotFoundError extends SliceMachineError {\n\tname = \"SMNotFoundError\" as const;\n}\nexport class UnexpectedDataError extends SliceMachineError {\n\tname = \"SMUnexpectedDataError\" as const;\n}\nexport class InternalError extends SliceMachineError {\n\tname = \"SMInternalError\" as const;\n}\nexport class PluginError extends SliceMachineError {\n\tname = \"SMPluginError\" as const;\n}\nexport class PluginHookResultError extends SliceMachineError {\n\tname = \"SMPluginHookResultError\" as const;\n\n\tconstructor(errors: HookError[]) {\n\t\tsuper(\n\t\t\t`${errors.length} error${\n\t\t\t\terrors.length === 1 ? \"\" : \"s\"\n\t\t\t} were returned by one or more plugins.`,\n\t\t\t{\n\t\t\t\tcause: errors,\n\t\t\t},\n\t\t);\n\t}\n}\nexport class InvalidActiveEnvironmentError extends SliceMachineError {\n\tname = \"SMInvalidActiveEnvironmentError\" as const;\n}\nexport class UnsupportedError extends SliceMachineError {\n\tname = \"SMUnsupportedError\" as const;\n}\n\ntype SliceMachineErrorNames =\n\t| \"SMSliceMachineError\"\n\t| UnauthorizedError[\"name\"]\n\t| UnauthenticatedError[\"name\"]\n\t| NotFoundError[\"name\"]\n\t| UnexpectedDataError[\"name\"]\n\t| InternalError[\"name\"]\n\t| PluginError[\"name\"]\n\t| PluginHookResultError[\"name\"]\n\t| InvalidActiveEnvironmentError[\"name\"]\n\t| UnsupportedError[\"name\"];\n\ntype ShallowSliceMachineError<TName extends SliceMachineErrorNames> = Error & {\n\tname: TName;\n};\n\nexport const isSliceMachineError = <TName extends SliceMachineErrorNames>(\n\terror: unknown,\n\tname?: TName,\n): error is TName extends string ? ShallowSliceMachineError<TName> : Error => {\n\tconst isErrorInstance = error instanceof Error;\n\n\treturn name === undefined\n\t\t? isErrorInstance && error.name.startsWith(\"SM\")\n\t\t: isErrorInstance && error.name === name;\n};\n\nexport const isUnauthorizedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnauthorizedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnauthorizedError\");\n};\n\nexport const isUnauthenticatedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnauthenticatedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnauthenticatedError\");\n};\n\nexport const isNotFoundError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMNotFoundError\"> => {\n\treturn isSliceMachineError(error, \"SMNotFoundError\");\n};\n\nexport const isUnexpectedDataError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnexpectedDataError\"> => {\n\treturn isSliceMachineError(error, \"SMUnexpectedDataError\");\n};\n\nexport const isInternalError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMInternalError\"> => {\n\treturn isSliceMachineError(error, \"SMInternalError\");\n};\n\nexport const isPluginError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMPluginError\"> => {\n\treturn isSliceMachineError(error, \"SMPluginError\");\n};\n\nexport const isInvalidActiveEnvironmentError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMInvalidActiveEnvironmentError\"> => {\n\treturn isSliceMachineError(error, \"SMInvalidActiveEnvironmentError\");\n};\n\nexport const isUnsupportedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnsupportedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnsupportedError\");\n};\n"],"names":[],"mappings":";;;;;;AAEM,MAAO,0BAA0B,MAAK;AAAA,EAAtC;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,0BAA0B,kBAAiB;AAAA,EAAlD;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,6BAA6B,kBAAiB;AAAA,EAArD;AAAA;AACL,gCAAO;AACP,mCAAU;AAAA;AACV;AACK,MAAO,sBAAsB,kBAAiB;AAAA,EAA9C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,4BAA4B,kBAAiB;AAAA,EAApD;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,sBAAsB,kBAAiB;AAAA,EAA9C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,oBAAoB,kBAAiB;AAAA,EAA5C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,8BAA8B,kBAAiB;AAAA,EAG3D,YAAY,QAAmB;AAC9B,UACC,GAAG,OAAO,eACT,OAAO,WAAW,IAAI,KAAK,6CAE5B;AAAA,MACC,OAAO;AAAA,IAAA,CACP;AATH,gCAAO;AAAA,EAWP;AACA;AACK,MAAO,sCAAsC,kBAAiB;AAAA,EAA9D;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,yBAAyB,kBAAiB;AAAA,EAAjD;AAAA;AACL,gCAAO;AAAA;AACP;AAkBY,MAAA,sBAAsB,CAClC,OACA,SAC4E;AAC5E,QAAM,kBAAkB,iBAAiB;AAElC,SAAA,SAAS,SACb,mBAAmB,MAAM,KAAK,WAAW,IAAI,IAC7C,mBAAmB,MAAM,SAAS;AACtC;AAEa,MAAA,sBAAsB,CAClC,UAC6D;AACtD,SAAA,oBAAoB,OAAO,qBAAqB;AACxD;AAEa,MAAA,yBAAyB,CACrC,UACgE;AACzD,SAAA,oBAAoB,OAAO,wBAAwB;AAC3D;AAEa,MAAA,kBAAkB,CAC9B,UACyD;AAClD,SAAA,oBAAoB,OAAO,iBAAiB;AACpD;AAEa,MAAA,wBAAwB,CACpC,UAC+D;AACxD,SAAA,oBAAoB,OAAO,uBAAuB;AAC1D;AAEa,MAAA,kBAAkB,CAC9B,UACyD;AAClD,SAAA,oBAAoB,OAAO,iBAAiB;AACpD;AAEa,MAAA,gBAAgB,CAC5B,UACuD;AAChD,SAAA,oBAAoB,OAAO,eAAe;AAClD;AAEa,MAAA,kCAAkC,CAC9C,UACyE;AAClE,SAAA,oBAAoB,OAAO,iCAAiC;AACpE;AAEa,MAAA,qBAAqB,CACjC,UAC4D;AACrD,SAAA,oBAAoB,OAAO,oBAAoB;AACvD;"}
1
+ {"version":3,"file":"errors.js","sources":["../../src/errors.ts"],"sourcesContent":["import { HookError } from \"@slicemachine/plugin-kit\";\n\nexport class SliceMachineError extends Error {\n\tname = \"SMSliceMachineError\";\n}\nexport class UnauthorizedError extends SliceMachineError {\n\tname = \"SMUnauthorizedError\" as const;\n}\nexport class UnauthenticatedError extends SliceMachineError {\n\tname = \"SMUnauthenticatedError\" as const;\n\tmessage = \"Authenticate before trying again.\";\n}\nexport class NotFoundError extends SliceMachineError {\n\tname = \"SMNotFoundError\" as const;\n}\nexport class UnexpectedDataError extends SliceMachineError {\n\tname = \"SMUnexpectedDataError\" as const;\n}\nexport class InternalError extends SliceMachineError {\n\tname = \"SMInternalError\" as const;\n}\nexport class PluginError extends SliceMachineError {\n\tname = \"SMPluginError\" as const;\n}\nexport class PluginHookResultError extends SliceMachineError {\n\tname = \"SMPluginHookResultError\" as const;\n\n\tconstructor(errors: HookError[]) {\n\t\tsuper(\n\t\t\t`${errors.length} error${\n\t\t\t\terrors.length === 1 ? \"\" : \"s\"\n\t\t\t} were returned by one or more plugins.`,\n\t\t\t{\n\t\t\t\tcause: errors,\n\t\t\t},\n\t\t);\n\t}\n}\nexport class InvalidActiveEnvironmentError extends SliceMachineError {\n\tname = \"SMInvalidActiveEnvironmentError\" as const;\n}\nexport class UnsupportedError extends SliceMachineError {\n\tname = \"SMUnsupportedError\" as const;\n}\n\ntype SliceMachineErrorNames =\n\t| \"SMSliceMachineError\"\n\t| UnauthorizedError[\"name\"]\n\t| UnauthenticatedError[\"name\"]\n\t| NotFoundError[\"name\"]\n\t| UnexpectedDataError[\"name\"]\n\t| InternalError[\"name\"]\n\t| PluginError[\"name\"]\n\t| PluginHookResultError[\"name\"]\n\t| InvalidActiveEnvironmentError[\"name\"]\n\t| UnsupportedError[\"name\"];\n\ntype ShallowSliceMachineError<TName extends SliceMachineErrorNames> = Error & {\n\tname: TName;\n};\n\nexport const isSliceMachineError = <TName extends SliceMachineErrorNames>(\n\terror: unknown,\n\tname?: TName,\n): error is TName extends string ? ShallowSliceMachineError<TName> : Error => {\n\tconst isErrorInstance = error instanceof Error;\n\n\treturn name === undefined\n\t\t? isErrorInstance && error.name.startsWith(\"SM\")\n\t\t: isErrorInstance && error.name === name;\n};\n\nexport const isUnauthorizedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnauthorizedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnauthorizedError\");\n};\n\nexport const isUnauthenticatedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnauthenticatedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnauthenticatedError\");\n};\n\nexport const isNotFoundError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMNotFoundError\"> => {\n\treturn isSliceMachineError(error, \"SMNotFoundError\");\n};\n\nexport const isUnexpectedDataError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnexpectedDataError\"> => {\n\treturn isSliceMachineError(error, \"SMUnexpectedDataError\");\n};\n\nexport const isInternalError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMInternalError\"> => {\n\treturn isSliceMachineError(error, \"SMInternalError\");\n};\n\nexport const isPluginError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMPluginError\"> => {\n\treturn isSliceMachineError(error, \"SMPluginError\");\n};\n\nexport const isInvalidActiveEnvironmentError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMInvalidActiveEnvironmentError\"> => {\n\treturn isSliceMachineError(error, \"SMInvalidActiveEnvironmentError\");\n};\n\nexport const isUnsupportedError = (\n\terror: unknown,\n): error is ShallowSliceMachineError<\"SMUnsupportedError\"> => {\n\treturn isSliceMachineError(error, \"SMUnsupportedError\");\n};\n"],"names":[],"mappings":";;;;;;AAEM,MAAO,0BAA0B,MAAK;AAAA,EAAtC;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,0BAA0B,kBAAiB;AAAA,EAAlD;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,6BAA6B,kBAAiB;AAAA,EAArD;AAAA;AACL,gCAAO;AACP,mCAAU;AAAA;AACV;AACK,MAAO,sBAAsB,kBAAiB;AAAA,EAA9C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,4BAA4B,kBAAiB;AAAA,EAApD;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,sBAAsB,kBAAiB;AAAA,EAA9C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,oBAAoB,kBAAiB;AAAA,EAA5C;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,8BAA8B,kBAAiB;AAAA,EAG3D,YAAY,QAAmB;AAE7B,UAAA,GAAG,OAAO,MAAM,SACf,OAAO,WAAW,IAAI,KAAK,GAC5B,0CACA;AAAA,MACC,OAAO;AAAA,IAAA,CACP;AATH,gCAAO;AAAA,EAWP;AACA;AACK,MAAO,sCAAsC,kBAAiB;AAAA,EAA9D;AAAA;AACL,gCAAO;AAAA;AACP;AACK,MAAO,yBAAyB,kBAAiB;AAAA,EAAjD;AAAA;AACL,gCAAO;AAAA;AACP;AAkBY,MAAA,sBAAsB,CAClC,OACA,SAC4E;AAC5E,QAAM,kBAAkB,iBAAiB;AAElC,SAAA,SAAS,SACb,mBAAmB,MAAM,KAAK,WAAW,IAAI,IAC7C,mBAAmB,MAAM,SAAS;AACtC;AAEa,MAAA,sBAAsB,CAClC,UAC6D;AACtD,SAAA,oBAAoB,OAAO,qBAAqB;AACxD;AAEa,MAAA,yBAAyB,CACrC,UACgE;AACzD,SAAA,oBAAoB,OAAO,wBAAwB;AAC3D;AAEa,MAAA,kBAAkB,CAC9B,UACyD;AAClD,SAAA,oBAAoB,OAAO,iBAAiB;AACpD;AAEa,MAAA,wBAAwB,CACpC,UAC+D;AACxD,SAAA,oBAAoB,OAAO,uBAAuB;AAC1D;AAEa,MAAA,kBAAkB,CAC9B,UACyD;AAClD,SAAA,oBAAoB,OAAO,iBAAiB;AACpD;AAEa,MAAA,gBAAgB,CAC5B,UACuD;AAChD,SAAA,oBAAoB,OAAO,eAAe;AAClD;AAEa,MAAA,kCAAkC,CAC9C,UACyE;AAClE,SAAA,oBAAoB,OAAO,iCAAiC;AACpE;AAEa,MAAA,qBAAqB,CACjC,UAC4D;AACrD,SAAA,oBAAoB,OAAO,oBAAoB;AACvD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getEnvironmentInfo.cjs","sources":["../../src/getEnvironmentInfo.ts"],"sourcesContent":["import semver from \"semver\";\n\ntype PackageManifest = { name: string; version: string };\n\ntype EnvironmentInfo = { environment: string; release: string };\n\nexport const getEnvironmentInfo = (pkg: PackageManifest): EnvironmentInfo => {\n\tconst parsedPkgVersion = semver.parse(pkg.version);\n\tif (parsedPkgVersion === null) {\n\t\tthrow new Error(\n\t\t\t`Package \\`${pkg.name}\\` has an invalid version \\`${pkg.version}\\` in its manifest.`,\n\t\t);\n\t}\n\n\tlet environment;\n\tif (parsedPkgVersion.prerelease.length === 0) {\n\t\tenvironment = import.meta.env.MODE || \"production\";\n\t} else if (\n\t\tparsedPkgVersion.prerelease[0] === \"alpha\" ||\n\t\tparsedPkgVersion.prerelease[0] === \"beta\"\n\t) {\n\t\tenvironment = parsedPkgVersion.prerelease[0];\n\t} else {\n\t\tthrow new Error(\n\t\t\t`Invalid package version: \\`${pkg.name}@${parsedPkgVersion.version}\\`. The first prerelease component \\`${parsedPkgVersion.prerelease[0]}\\` must be either \\`alpha\\` or \\`beta\\`.`,\n\t\t);\n\t}\n\n\treturn { environment, release: parsedPkgVersion.version };\n};\n"],"names":[],"mappings":";;;AAMa,MAAA,qBAAqB,CAAC,QAAyC;AAC3E,QAAM,mBAAmB,OAAO,MAAM,IAAI,OAAO;AACjD,MAAI,qBAAqB,MAAM;AAC9B,UAAM,IAAI,MACT,aAAa,IAAI,mCAAmC,IAAI,4BAA4B;AAAA,EAEtF;AAEI,MAAA;AACA,MAAA,iBAAiB,WAAW,WAAW,GAAG;AAC/B,kBAAA;AAAA,EAAwB,WAEtC,iBAAiB,WAAW,CAAC,MAAM,WACnC,iBAAiB,WAAW,CAAC,MAAM,QAClC;AACa,kBAAA,iBAAiB,WAAW,CAAC;AAAA,EAAA,OACrC;AACA,UAAA,IAAI,MACT,8BAA8B,IAAI,QAAQ,iBAAiB,+CAA+C,iBAAiB,WAAW,CAAC,2CAA2C;AAAA,EAEpL;AAEA,SAAO,EAAE,aAAa,SAAS,iBAAiB,QAAO;AACxD;;"}
1
+ {"version":3,"file":"getEnvironmentInfo.cjs","sources":["../../src/getEnvironmentInfo.ts"],"sourcesContent":["import semver from \"semver\";\n\ntype PackageManifest = { name: string; version: string };\n\ntype EnvironmentInfo = { environment: string; release: string };\n\nexport const getEnvironmentInfo = (pkg: PackageManifest): EnvironmentInfo => {\n\tconst parsedPkgVersion = semver.parse(pkg.version);\n\tif (parsedPkgVersion === null) {\n\t\tthrow new Error(\n\t\t\t`Package \\`${pkg.name}\\` has an invalid version \\`${pkg.version}\\` in its manifest.`,\n\t\t);\n\t}\n\n\tlet environment;\n\tif (parsedPkgVersion.prerelease.length === 0) {\n\t\tenvironment = import.meta.env.MODE || \"production\";\n\t} else if (\n\t\tparsedPkgVersion.prerelease[0] === \"alpha\" ||\n\t\tparsedPkgVersion.prerelease[0] === \"beta\"\n\t) {\n\t\tenvironment = parsedPkgVersion.prerelease[0];\n\t} else {\n\t\tthrow new Error(\n\t\t\t`Invalid package version: \\`${pkg.name}@${parsedPkgVersion.version}\\`. The first prerelease component \\`${parsedPkgVersion.prerelease[0]}\\` must be either \\`alpha\\` or \\`beta\\`.`,\n\t\t);\n\t}\n\n\treturn { environment, release: parsedPkgVersion.version };\n};\n"],"names":[],"mappings":";;;AAMa,MAAA,qBAAqB,CAAC,QAAyC;AAC3E,QAAM,mBAAmB,OAAO,MAAM,IAAI,OAAO;AACjD,MAAI,qBAAqB,MAAM;AACxB,UAAA,IAAI,MACT,aAAa,IAAI,IAAI,+BAA+B,IAAI,OAAO,qBAAqB;AAAA,EAEtF;AAEI,MAAA;AACA,MAAA,iBAAiB,WAAW,WAAW,GAAG;AAC/B,kBAAA;AAAA,EAAwB,WAEtC,iBAAiB,WAAW,CAAC,MAAM,WACnC,iBAAiB,WAAW,CAAC,MAAM,QAClC;AACa,kBAAA,iBAAiB,WAAW,CAAC;AAAA,EAAA,OACrC;AACN,UAAM,IAAI,MACT,8BAA8B,IAAI,IAAI,IAAI,iBAAiB,OAAO,wCAAwC,iBAAiB,WAAW,CAAC,CAAC,0CAA0C;AAAA,EAEpL;AAEA,SAAO,EAAE,aAAa,SAAS,iBAAiB,QAAO;AACxD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getEnvironmentInfo.js","sources":["../../src/getEnvironmentInfo.ts"],"sourcesContent":["import semver from \"semver\";\n\ntype PackageManifest = { name: string; version: string };\n\ntype EnvironmentInfo = { environment: string; release: string };\n\nexport const getEnvironmentInfo = (pkg: PackageManifest): EnvironmentInfo => {\n\tconst parsedPkgVersion = semver.parse(pkg.version);\n\tif (parsedPkgVersion === null) {\n\t\tthrow new Error(\n\t\t\t`Package \\`${pkg.name}\\` has an invalid version \\`${pkg.version}\\` in its manifest.`,\n\t\t);\n\t}\n\n\tlet environment;\n\tif (parsedPkgVersion.prerelease.length === 0) {\n\t\tenvironment = import.meta.env.MODE || \"production\";\n\t} else if (\n\t\tparsedPkgVersion.prerelease[0] === \"alpha\" ||\n\t\tparsedPkgVersion.prerelease[0] === \"beta\"\n\t) {\n\t\tenvironment = parsedPkgVersion.prerelease[0];\n\t} else {\n\t\tthrow new Error(\n\t\t\t`Invalid package version: \\`${pkg.name}@${parsedPkgVersion.version}\\`. The first prerelease component \\`${parsedPkgVersion.prerelease[0]}\\` must be either \\`alpha\\` or \\`beta\\`.`,\n\t\t);\n\t}\n\n\treturn { environment, release: parsedPkgVersion.version };\n};\n"],"names":[],"mappings":";AAMa,MAAA,qBAAqB,CAAC,QAAyC;AAC3E,QAAM,mBAAmB,OAAO,MAAM,IAAI,OAAO;AACjD,MAAI,qBAAqB,MAAM;AAC9B,UAAM,IAAI,MACT,aAAa,IAAI,mCAAmC,IAAI,4BAA4B;AAAA,EAEtF;AAEI,MAAA;AACA,MAAA,iBAAiB,WAAW,WAAW,GAAG;AAC/B,kBAAA;AAAA,EAAwB,WAEtC,iBAAiB,WAAW,CAAC,MAAM,WACnC,iBAAiB,WAAW,CAAC,MAAM,QAClC;AACa,kBAAA,iBAAiB,WAAW,CAAC;AAAA,EAAA,OACrC;AACA,UAAA,IAAI,MACT,8BAA8B,IAAI,QAAQ,iBAAiB,+CAA+C,iBAAiB,WAAW,CAAC,2CAA2C;AAAA,EAEpL;AAEA,SAAO,EAAE,aAAa,SAAS,iBAAiB,QAAO;AACxD;"}
1
+ {"version":3,"file":"getEnvironmentInfo.js","sources":["../../src/getEnvironmentInfo.ts"],"sourcesContent":["import semver from \"semver\";\n\ntype PackageManifest = { name: string; version: string };\n\ntype EnvironmentInfo = { environment: string; release: string };\n\nexport const getEnvironmentInfo = (pkg: PackageManifest): EnvironmentInfo => {\n\tconst parsedPkgVersion = semver.parse(pkg.version);\n\tif (parsedPkgVersion === null) {\n\t\tthrow new Error(\n\t\t\t`Package \\`${pkg.name}\\` has an invalid version \\`${pkg.version}\\` in its manifest.`,\n\t\t);\n\t}\n\n\tlet environment;\n\tif (parsedPkgVersion.prerelease.length === 0) {\n\t\tenvironment = import.meta.env.MODE || \"production\";\n\t} else if (\n\t\tparsedPkgVersion.prerelease[0] === \"alpha\" ||\n\t\tparsedPkgVersion.prerelease[0] === \"beta\"\n\t) {\n\t\tenvironment = parsedPkgVersion.prerelease[0];\n\t} else {\n\t\tthrow new Error(\n\t\t\t`Invalid package version: \\`${pkg.name}@${parsedPkgVersion.version}\\`. The first prerelease component \\`${parsedPkgVersion.prerelease[0]}\\` must be either \\`alpha\\` or \\`beta\\`.`,\n\t\t);\n\t}\n\n\treturn { environment, release: parsedPkgVersion.version };\n};\n"],"names":[],"mappings":";AAMa,MAAA,qBAAqB,CAAC,QAAyC;AAC3E,QAAM,mBAAmB,OAAO,MAAM,IAAI,OAAO;AACjD,MAAI,qBAAqB,MAAM;AACxB,UAAA,IAAI,MACT,aAAa,IAAI,IAAI,+BAA+B,IAAI,OAAO,qBAAqB;AAAA,EAEtF;AAEI,MAAA;AACA,MAAA,iBAAiB,WAAW,WAAW,GAAG;AAC/B,kBAAA;AAAA,EAAwB,WAEtC,iBAAiB,WAAW,CAAC,MAAM,WACnC,iBAAiB,WAAW,CAAC,MAAM,QAClC;AACa,kBAAA,iBAAiB,WAAW,CAAC;AAAA,EAAA,OACrC;AACN,UAAM,IAAI,MACT,8BAA8B,IAAI,IAAI,IAAI,iBAAiB,OAAO,wCAAwC,iBAAiB,WAAW,CAAC,CAAC,0CAA0C;AAAA,EAEpL;AAEA,SAAO,EAAE,aAAa,SAAS,iBAAiB,QAAO;AACxD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DecodeError.cjs","sources":["../../../src/lib/DecodeError.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { formatValidationErrors } from \"io-ts-reporters\";\nimport { ZodIssue } from \"zod\";\n\ntype DecodeErrorConstructorArgs<TInput = unknown> = {\n\tinput: TInput;\n\terrors: t.Errors | ZodIssue[];\n};\n\nfunction isZodIssueArray(errors: object[]): errors is ZodIssue[] {\n\treturn \"path\" in errors[0];\n}\n\nfunction formatZodErrors(errors: ZodIssue[]): string[] {\n\treturn errors.map((err) => {\n\t\tconst path = err.path.length > 0 ? ` at ${err.path.join(\".\")}` : \"\";\n\n\t\treturn `${err.message}${path}`;\n\t});\n}\n\nexport class DecodeError<TInput = unknown> extends Error {\n\tname = \"DecodeError\";\n\tinput: TInput;\n\terrors: string[];\n\n\tconstructor(args: DecodeErrorConstructorArgs<TInput>) {\n\t\tlet formattedErrors: string[] = [];\n\n\t\tif (isZodIssueArray(args.errors)) {\n\t\t\tformattedErrors = formatZodErrors(args.errors);\n\t\t} else {\n\t\t\tformattedErrors = formatValidationErrors(args.errors);\n\t\t}\n\n\t\tsuper(formattedErrors.join(\", \"));\n\n\t\tthis.input = args.input;\n\t\tthis.errors = formattedErrors;\n\t}\n}\n"],"names":["formatValidationErrors"],"mappings":";;;;;;;;;AASA,SAAS,gBAAgB,QAAgB;AACjC,SAAA,UAAU,OAAO,CAAC;AAC1B;AAEA,SAAS,gBAAgB,QAAkB;AACnC,SAAA,OAAO,IAAI,CAAC,QAAO;AACnB,UAAA,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,KAAK,GAAG,MAAM;AAE1D,WAAA,GAAG,IAAI,UAAU;AAAA,EAAA,CACxB;AACF;AAEM,MAAO,oBAAsC,MAAK;AAAA,EAKvD,YAAY,MAAwC;AACnD,QAAI,kBAA4B,CAAA;AAE5B,QAAA,gBAAgB,KAAK,MAAM,GAAG;AACf,wBAAA,gBAAgB,KAAK,MAAM;AAAA,IAAA,OACvC;AACY,wBAAAA,cAAA,uBAAuB,KAAK,MAAM;AAAA,IACrD;AAEM,UAAA,gBAAgB,KAAK,IAAI,CAAC;AAbjC,gCAAO;AACP;AACA;AAaC,SAAK,QAAQ,KAAK;AAClB,SAAK,SAAS;AAAA,EACf;AACA;;"}
1
+ {"version":3,"file":"DecodeError.cjs","sources":["../../../src/lib/DecodeError.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { formatValidationErrors } from \"io-ts-reporters\";\nimport { ZodIssue } from \"zod\";\n\ntype DecodeErrorConstructorArgs<TInput = unknown> = {\n\tinput: TInput;\n\terrors: t.Errors | ZodIssue[];\n};\n\nfunction isZodIssueArray(errors: object[]): errors is ZodIssue[] {\n\treturn \"path\" in errors[0];\n}\n\nfunction formatZodErrors(errors: ZodIssue[]): string[] {\n\treturn errors.map((err) => {\n\t\tconst path = err.path.length > 0 ? ` at ${err.path.join(\".\")}` : \"\";\n\n\t\treturn `${err.message}${path}`;\n\t});\n}\n\nexport class DecodeError<TInput = unknown> extends Error {\n\tname = \"DecodeError\";\n\tinput: TInput;\n\terrors: string[];\n\n\tconstructor(args: DecodeErrorConstructorArgs<TInput>) {\n\t\tlet formattedErrors: string[] = [];\n\n\t\tif (isZodIssueArray(args.errors)) {\n\t\t\tformattedErrors = formatZodErrors(args.errors);\n\t\t} else {\n\t\t\tformattedErrors = formatValidationErrors(args.errors);\n\t\t}\n\n\t\tsuper(formattedErrors.join(\", \"));\n\n\t\tthis.input = args.input;\n\t\tthis.errors = formattedErrors;\n\t}\n}\n"],"names":["formatValidationErrors"],"mappings":";;;;;;;;;AASA,SAAS,gBAAgB,QAAgB;AACjC,SAAA,UAAU,OAAO,CAAC;AAC1B;AAEA,SAAS,gBAAgB,QAAkB;AACnC,SAAA,OAAO,IAAI,CAAC,QAAO;AACnB,UAAA,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK;AAEjE,WAAO,GAAG,IAAI,OAAO,GAAG,IAAI;AAAA,EAAA,CAC5B;AACF;AAEM,MAAO,oBAAsC,MAAK;AAAA,EAKvD,YAAY,MAAwC;AACnD,QAAI,kBAA4B,CAAA;AAE5B,QAAA,gBAAgB,KAAK,MAAM,GAAG;AACf,wBAAA,gBAAgB,KAAK,MAAM;AAAA,IAAA,OACvC;AACY,wBAAAA,cAAA,uBAAuB,KAAK,MAAM;AAAA,IACrD;AAEM,UAAA,gBAAgB,KAAK,IAAI,CAAC;AAbjC,gCAAO;AACP;AACA;AAaC,SAAK,QAAQ,KAAK;AAClB,SAAK,SAAS;AAAA,EACf;AACA;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DecodeError.js","sources":["../../../src/lib/DecodeError.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { formatValidationErrors } from \"io-ts-reporters\";\nimport { ZodIssue } from \"zod\";\n\ntype DecodeErrorConstructorArgs<TInput = unknown> = {\n\tinput: TInput;\n\terrors: t.Errors | ZodIssue[];\n};\n\nfunction isZodIssueArray(errors: object[]): errors is ZodIssue[] {\n\treturn \"path\" in errors[0];\n}\n\nfunction formatZodErrors(errors: ZodIssue[]): string[] {\n\treturn errors.map((err) => {\n\t\tconst path = err.path.length > 0 ? ` at ${err.path.join(\".\")}` : \"\";\n\n\t\treturn `${err.message}${path}`;\n\t});\n}\n\nexport class DecodeError<TInput = unknown> extends Error {\n\tname = \"DecodeError\";\n\tinput: TInput;\n\terrors: string[];\n\n\tconstructor(args: DecodeErrorConstructorArgs<TInput>) {\n\t\tlet formattedErrors: string[] = [];\n\n\t\tif (isZodIssueArray(args.errors)) {\n\t\t\tformattedErrors = formatZodErrors(args.errors);\n\t\t} else {\n\t\t\tformattedErrors = formatValidationErrors(args.errors);\n\t\t}\n\n\t\tsuper(formattedErrors.join(\", \"));\n\n\t\tthis.input = args.input;\n\t\tthis.errors = formattedErrors;\n\t}\n}\n"],"names":[],"mappings":";;;;;;;AASA,SAAS,gBAAgB,QAAgB;AACjC,SAAA,UAAU,OAAO,CAAC;AAC1B;AAEA,SAAS,gBAAgB,QAAkB;AACnC,SAAA,OAAO,IAAI,CAAC,QAAO;AACnB,UAAA,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,KAAK,GAAG,MAAM;AAE1D,WAAA,GAAG,IAAI,UAAU;AAAA,EAAA,CACxB;AACF;AAEM,MAAO,oBAAsC,MAAK;AAAA,EAKvD,YAAY,MAAwC;AACnD,QAAI,kBAA4B,CAAA;AAE5B,QAAA,gBAAgB,KAAK,MAAM,GAAG;AACf,wBAAA,gBAAgB,KAAK,MAAM;AAAA,IAAA,OACvC;AACY,wBAAA,uBAAuB,KAAK,MAAM;AAAA,IACrD;AAEM,UAAA,gBAAgB,KAAK,IAAI,CAAC;AAbjC,gCAAO;AACP;AACA;AAaC,SAAK,QAAQ,KAAK;AAClB,SAAK,SAAS;AAAA,EACf;AACA;"}
1
+ {"version":3,"file":"DecodeError.js","sources":["../../../src/lib/DecodeError.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { formatValidationErrors } from \"io-ts-reporters\";\nimport { ZodIssue } from \"zod\";\n\ntype DecodeErrorConstructorArgs<TInput = unknown> = {\n\tinput: TInput;\n\terrors: t.Errors | ZodIssue[];\n};\n\nfunction isZodIssueArray(errors: object[]): errors is ZodIssue[] {\n\treturn \"path\" in errors[0];\n}\n\nfunction formatZodErrors(errors: ZodIssue[]): string[] {\n\treturn errors.map((err) => {\n\t\tconst path = err.path.length > 0 ? ` at ${err.path.join(\".\")}` : \"\";\n\n\t\treturn `${err.message}${path}`;\n\t});\n}\n\nexport class DecodeError<TInput = unknown> extends Error {\n\tname = \"DecodeError\";\n\tinput: TInput;\n\terrors: string[];\n\n\tconstructor(args: DecodeErrorConstructorArgs<TInput>) {\n\t\tlet formattedErrors: string[] = [];\n\n\t\tif (isZodIssueArray(args.errors)) {\n\t\t\tformattedErrors = formatZodErrors(args.errors);\n\t\t} else {\n\t\t\tformattedErrors = formatValidationErrors(args.errors);\n\t\t}\n\n\t\tsuper(formattedErrors.join(\", \"));\n\n\t\tthis.input = args.input;\n\t\tthis.errors = formattedErrors;\n\t}\n}\n"],"names":[],"mappings":";;;;;;;AASA,SAAS,gBAAgB,QAAgB;AACjC,SAAA,UAAU,OAAO,CAAC;AAC1B;AAEA,SAAS,gBAAgB,QAAkB;AACnC,SAAA,OAAO,IAAI,CAAC,QAAO;AACnB,UAAA,OAAO,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK;AAEjE,WAAO,GAAG,IAAI,OAAO,GAAG,IAAI;AAAA,EAAA,CAC5B;AACF;AAEM,MAAO,oBAAsC,MAAK;AAAA,EAKvD,YAAY,MAAwC;AACnD,QAAI,kBAA4B,CAAA;AAE5B,QAAA,gBAAgB,KAAK,MAAM,GAAG;AACf,wBAAA,gBAAgB,KAAK,MAAM;AAAA,IAAA,OACvC;AACY,wBAAA,uBAAuB,KAAK,MAAM;AAAA,IACrD;AAEM,UAAA,gBAAgB,KAAK,IAAI,CAAC;AAbjC,gCAAO;AACP;AACA;AAaC,SAAK,QAAQ,KAAK;AAClB,SAAK,SAAS;AAAA,EACf;AACA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildPrismicRepositoryAPIEndpoint.cjs","sources":["../../../src/lib/buildPrismicRepositoryAPIEndpoint.ts"],"sourcesContent":["import { API_ENDPOINTS } from \"../constants/API_ENDPOINTS\";\n\nexport type BuildPrismicRepositoryAPIEndpointConfig = {\n\twithCDN?: boolean;\n};\n\nexport const buildPrismicRepositoryAPIEndpoint = (\n\trepositoryName: string,\n\t{ withCDN = true }: BuildPrismicRepositoryAPIEndpointConfig = {},\n): string => {\n\tconst baseEndpoint = new URL(API_ENDPOINTS.PrismicWroom);\n\n\treturn `${baseEndpoint.protocol}//${repositoryName}${withCDN ? \".cdn\" : \"\"}.${\n\t\tbaseEndpoint.host\n\t}/api/v2`;\n};\n"],"names":["API_ENDPOINTS"],"mappings":";;;AAMa,MAAA,oCAAoC,CAChD,gBACA,EAAE,UAAU,KAAkD,IAAA,CAAA,MACnD;AACX,QAAM,eAAe,IAAI,IAAIA,cAAA,cAAc,YAAY;AAEvD,SAAO,GAAG,aAAa,aAAa,iBAAiB,UAAU,SAAS,MACvE,aAAa;AAEf;;"}
1
+ {"version":3,"file":"buildPrismicRepositoryAPIEndpoint.cjs","sources":["../../../src/lib/buildPrismicRepositoryAPIEndpoint.ts"],"sourcesContent":["import { API_ENDPOINTS } from \"../constants/API_ENDPOINTS\";\n\nexport type BuildPrismicRepositoryAPIEndpointConfig = {\n\twithCDN?: boolean;\n};\n\nexport const buildPrismicRepositoryAPIEndpoint = (\n\trepositoryName: string,\n\t{ withCDN = true }: BuildPrismicRepositoryAPIEndpointConfig = {},\n): string => {\n\tconst baseEndpoint = new URL(API_ENDPOINTS.PrismicWroom);\n\n\treturn `${baseEndpoint.protocol}//${repositoryName}${withCDN ? \".cdn\" : \"\"}.${\n\t\tbaseEndpoint.host\n\t}/api/v2`;\n};\n"],"names":["API_ENDPOINTS"],"mappings":";;;AAMa,MAAA,oCAAoC,CAChD,gBACA,EAAE,UAAU,KAAkD,IAAA,CAAA,MACnD;AACX,QAAM,eAAe,IAAI,IAAIA,cAAA,cAAc,YAAY;AAEhD,SAAA,GAAG,aAAa,QAAQ,KAAK,cAAc,GAAG,UAAU,SAAS,EAAE,IACzE,aAAa,IACd;AACD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildPrismicRepositoryAPIEndpoint.js","sources":["../../../src/lib/buildPrismicRepositoryAPIEndpoint.ts"],"sourcesContent":["import { API_ENDPOINTS } from \"../constants/API_ENDPOINTS\";\n\nexport type BuildPrismicRepositoryAPIEndpointConfig = {\n\twithCDN?: boolean;\n};\n\nexport const buildPrismicRepositoryAPIEndpoint = (\n\trepositoryName: string,\n\t{ withCDN = true }: BuildPrismicRepositoryAPIEndpointConfig = {},\n): string => {\n\tconst baseEndpoint = new URL(API_ENDPOINTS.PrismicWroom);\n\n\treturn `${baseEndpoint.protocol}//${repositoryName}${withCDN ? \".cdn\" : \"\"}.${\n\t\tbaseEndpoint.host\n\t}/api/v2`;\n};\n"],"names":[],"mappings":";AAMa,MAAA,oCAAoC,CAChD,gBACA,EAAE,UAAU,KAAkD,IAAA,CAAA,MACnD;AACX,QAAM,eAAe,IAAI,IAAI,cAAc,YAAY;AAEvD,SAAO,GAAG,aAAa,aAAa,iBAAiB,UAAU,SAAS,MACvE,aAAa;AAEf;"}
1
+ {"version":3,"file":"buildPrismicRepositoryAPIEndpoint.js","sources":["../../../src/lib/buildPrismicRepositoryAPIEndpoint.ts"],"sourcesContent":["import { API_ENDPOINTS } from \"../constants/API_ENDPOINTS\";\n\nexport type BuildPrismicRepositoryAPIEndpointConfig = {\n\twithCDN?: boolean;\n};\n\nexport const buildPrismicRepositoryAPIEndpoint = (\n\trepositoryName: string,\n\t{ withCDN = true }: BuildPrismicRepositoryAPIEndpointConfig = {},\n): string => {\n\tconst baseEndpoint = new URL(API_ENDPOINTS.PrismicWroom);\n\n\treturn `${baseEndpoint.protocol}//${repositoryName}${withCDN ? \".cdn\" : \"\"}.${\n\t\tbaseEndpoint.host\n\t}/api/v2`;\n};\n"],"names":[],"mappings":";AAMa,MAAA,oCAAoC,CAChD,gBACA,EAAE,UAAU,KAAkD,IAAA,CAAA,MACnD;AACX,QAAM,eAAe,IAAI,IAAI,cAAc,YAAY;AAEhD,SAAA,GAAG,aAAa,QAAQ,KAAK,cAAc,GAAG,UAAU,SAAS,EAAE,IACzE,aAAa,IACd;AACD;"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchGitHubReleaseBodyForRelease.cjs","sources":["../../../src/lib/fetchGitHubReleaseBodyForRelease.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport fetch from \"./fetch\";\nimport pLimit from \"p-limit\";\n\nimport { decode } from \"./decode\";\n\nconst GITHUB_JSON_ACCEPT_HEADER = \"application/vnd.github+json\";\n\n/**\n * A minimally defined codec for GitHub release metadata.\n *\n * @see https://docs.github.com/en/rest/releases/releases#get-a-release-by-tag-name\n */\nconst GitHubReleaseMetadata = t.type({\n\tname: t.string,\n\tbody: t.union([t.null, t.string]),\n});\nexport type GitHubReleaseMetadata = t.TypeOf<typeof GitHubReleaseMetadata>;\n\ntype FetchAllGitHubReleasesArgs = {\n\trepositoryOwner: string;\n\trepositoryName: string;\n};\n\nconst fetchAllGitHubReleases = async (\n\targs: FetchAllGitHubReleasesArgs,\n): Promise<GitHubReleaseMetadata[]> => {\n\tconst res = await fetch(\n\t\t`https://api.github.com/repos/${args.repositoryOwner}/${args.repositoryName}/releases`,\n\t\t{\n\t\t\theaders: {\n\t\t\t\tAccept: GITHUB_JSON_ACCEPT_HEADER,\n\t\t\t},\n\t\t},\n\t);\n\n\tif (res.ok) {\n\t\tconst json = await res.json();\n\n\t\tconst { value, error } = decode(t.array(GitHubReleaseMetadata), json);\n\n\t\tif (error) {\n\t\t\tthrow new Error(`Invalid GitHub Release response.`, { cause: error });\n\t\t}\n\n\t\treturn value;\n\t} else {\n\t\tconst text = await res.text();\n\t\tthrow new Error(`Invalid GitHub Release response.`, {\n\t\t\tcause: text,\n\t\t});\n\t}\n};\n\ntype FetchGitHubReleaseByVersionArgs = {\n\trepositoryOwner: string;\n\trepositoryName: string;\n\tpackageName?: string;\n\tversion: string;\n};\n\nconst fetchGitHubReleaseByVersion = async (\n\targs: FetchGitHubReleaseByVersionArgs,\n): Promise<GitHubReleaseMetadata | undefined> => {\n\tlet url: string;\n\n\tif (args.packageName) {\n\t\turl = `https://api.github.com/repos/${args.repositoryOwner}/${args.repositoryName}/releases/tags/${args.packageName}@${args.version}`;\n\t} else {\n\t\turl = `https://api.github.com/repos/${args.repositoryOwner}/${args.repositoryName}/releases/tags/${args.version}`;\n\t}\n\n\tconst res = await fetch(url, {\n\t\theaders: {\n\t\t\tAccept: GITHUB_JSON_ACCEPT_HEADER,\n\t\t},\n\t});\n\n\tif (res.ok) {\n\t\tconst json = await res.json();\n\n\t\tconst { value, error } = decode(GitHubReleaseMetadata, json);\n\n\t\tif (error) {\n\t\t\tthrow new Error(`Invalid GitHub Release response.`, { cause: error });\n\t\t}\n\n\t\treturn value;\n\t}\n};\n\ntype FetchGitHubReleaseBodyForReleaseArgs = {\n\trepositoryOwner: string;\n\trepositoryName: string;\n\tpackageName?: string;\n\tversion: string;\n\tcache?: Record<string, GitHubReleaseMetadata | undefined>;\n};\n\nconst _fetchGitHubReleaseBodyForRelease = async (\n\targs: FetchGitHubReleaseBodyForReleaseArgs,\n): Promise<string | undefined> => {\n\tconst cache = args.cache || {};\n\n\tif (Object.keys(cache).length < 1) {\n\t\tconst releases = await fetchAllGitHubReleases({\n\t\t\trepositoryOwner: args.repositoryOwner,\n\t\t\trepositoryName: args.repositoryName,\n\t\t});\n\n\t\tfor (const release of releases) {\n\t\t\tcache[release.name] = release;\n\t\t}\n\t}\n\n\tif (args.version in cache) {\n\t\tconst release = cache[args.version];\n\n\t\treturn release?.body ?? undefined;\n\t} else {\n\t\ttry {\n\t\t\tconst version = await fetchGitHubReleaseByVersion({\n\t\t\t\trepositoryOwner: args.repositoryOwner,\n\t\t\t\trepositoryName: args.repositoryName,\n\t\t\t\tpackageName: args.packageName,\n\t\t\t\tversion: args.version,\n\t\t\t});\n\n\t\t\tcache[args.version] = version;\n\n\t\t\treturn version?.body ?? undefined;\n\t\t} catch {\n\t\t\tcache[args.version] = undefined;\n\n\t\t\treturn undefined;\n\t\t}\n\t}\n};\n\nconst limit = pLimit(1);\n\nexport const fetchGitHubReleaseBodyForRelease = async (\n\t...args: Parameters<typeof _fetchGitHubReleaseBodyForRelease>\n): ReturnType<typeof _fetchGitHubReleaseBodyForRelease> => {\n\treturn await limit(() => _fetchGitHubReleaseBodyForRelease(...args));\n};\n"],"names":["t","fetch","decode","pLimit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,4BAA4B;AAOlC,MAAM,wBAAwBA,aAAE,KAAK;AAAA,EACpC,MAAMA,aAAE;AAAA,EACR,MAAMA,aAAE,MAAM,CAACA,aAAE,MAAMA,aAAE,MAAM,CAAC;AAChC,CAAA;AAQD,MAAM,yBAAyB,OAC9B,SACqC;AACrC,QAAM,MAAM,MAAMC,cACjB,gCAAgC,KAAK,mBAAmB,KAAK,2BAC7D;AAAA,IACC,SAAS;AAAA,MACR,QAAQ;AAAA,IACR;AAAA,EAAA,CACD;AAGF,MAAI,IAAI,IAAI;AACL,UAAA,OAAO,MAAM,IAAI;AAEjB,UAAA,EAAE,OAAO,MAAK,IAAKC,cAAOF,aAAE,MAAM,qBAAqB,GAAG,IAAI;AAEpE,QAAI,OAAO;AACV,YAAM,IAAI,MAAM,oCAAoC,EAAE,OAAO,OAAO;AAAA,IACrE;AAEO,WAAA;AAAA,EAAA,OACD;AACA,UAAA,OAAO,MAAM,IAAI;AACjB,UAAA,IAAI,MAAM,oCAAoC;AAAA,MACnD,OAAO;AAAA,IAAA,CACP;AAAA,EACF;AACD;AASA,MAAM,8BAA8B,OACnC,SAC+C;AAC3C,MAAA;AAEJ,MAAI,KAAK,aAAa;AACrB,UAAM,gCAAgC,KAAK,mBAAmB,KAAK,gCAAgC,KAAK,eAAe,KAAK;AAAA,EAAA,OACtH;AACN,UAAM,gCAAgC,KAAK,mBAAmB,KAAK,gCAAgC,KAAK;AAAA,EACzG;AAEM,QAAA,MAAM,MAAMC,MAAA,QAAM,KAAK;AAAA,IAC5B,SAAS;AAAA,MACR,QAAQ;AAAA,IACR;AAAA,EAAA,CACD;AAED,MAAI,IAAI,IAAI;AACL,UAAA,OAAO,MAAM,IAAI;AAEvB,UAAM,EAAE,OAAO,MAAA,IAAUC,OAAAA,OAAO,uBAAuB,IAAI;AAE3D,QAAI,OAAO;AACV,YAAM,IAAI,MAAM,oCAAoC,EAAE,OAAO,OAAO;AAAA,IACrE;AAEO,WAAA;AAAA,EACR;AACD;AAUA,MAAM,oCAAoC,OACzC,SACgC;AAC1B,QAAA,QAAQ,KAAK,SAAS;AAE5B,MAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAC5B,UAAA,WAAW,MAAM,uBAAuB;AAAA,MAC7C,iBAAiB,KAAK;AAAA,MACtB,gBAAgB,KAAK;AAAA,IAAA,CACrB;AAED,eAAW,WAAW,UAAU;AACzB,YAAA,QAAQ,IAAI,IAAI;AAAA,IACvB;AAAA,EACD;AAEI,MAAA,KAAK,WAAW,OAAO;AACpB,UAAA,UAAU,MAAM,KAAK,OAAO;AAElC,YAAO,mCAAS,SAAQ;AAAA,EAAA,OAClB;AACF,QAAA;AACG,YAAA,UAAU,MAAM,4BAA4B;AAAA,QACjD,iBAAiB,KAAK;AAAA,QACtB,gBAAgB,KAAK;AAAA,QACrB,aAAa,KAAK;AAAA,QAClB,SAAS,KAAK;AAAA,MAAA,CACd;AAEK,YAAA,KAAK,OAAO,IAAI;AAEtB,cAAO,mCAAS,SAAQ;AAAA,IAAA,QACvB;AACK,YAAA,KAAK,OAAO,IAAI;AAEf,aAAA;AAAA,IACR;AAAA,EACD;AACD;AAEA,MAAM,QAAQC,MAAO,CAAC;AAET,MAAA,mCAAmC,UAC5C,SACsD;AACzD,SAAO,MAAM,MAAM,MAAM,kCAAkC,GAAG,IAAI,CAAC;AACpE;;"}
1
+ {"version":3,"file":"fetchGitHubReleaseBodyForRelease.cjs","sources":["../../../src/lib/fetchGitHubReleaseBodyForRelease.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport fetch from \"./fetch\";\nimport pLimit from \"p-limit\";\n\nimport { decode } from \"./decode\";\n\nconst GITHUB_JSON_ACCEPT_HEADER = \"application/vnd.github+json\";\n\n/**\n * A minimally defined codec for GitHub release metadata.\n *\n * @see https://docs.github.com/en/rest/releases/releases#get-a-release-by-tag-name\n */\nconst GitHubReleaseMetadata = t.type({\n\tname: t.string,\n\tbody: t.union([t.null, t.string]),\n});\nexport type GitHubReleaseMetadata = t.TypeOf<typeof GitHubReleaseMetadata>;\n\ntype FetchAllGitHubReleasesArgs = {\n\trepositoryOwner: string;\n\trepositoryName: string;\n};\n\nconst fetchAllGitHubReleases = async (\n\targs: FetchAllGitHubReleasesArgs,\n): Promise<GitHubReleaseMetadata[]> => {\n\tconst res = await fetch(\n\t\t`https://api.github.com/repos/${args.repositoryOwner}/${args.repositoryName}/releases`,\n\t\t{\n\t\t\theaders: {\n\t\t\t\tAccept: GITHUB_JSON_ACCEPT_HEADER,\n\t\t\t},\n\t\t},\n\t);\n\n\tif (res.ok) {\n\t\tconst json = await res.json();\n\n\t\tconst { value, error } = decode(t.array(GitHubReleaseMetadata), json);\n\n\t\tif (error) {\n\t\t\tthrow new Error(`Invalid GitHub Release response.`, { cause: error });\n\t\t}\n\n\t\treturn value;\n\t} else {\n\t\tconst text = await res.text();\n\t\tthrow new Error(`Invalid GitHub Release response.`, {\n\t\t\tcause: text,\n\t\t});\n\t}\n};\n\ntype FetchGitHubReleaseByVersionArgs = {\n\trepositoryOwner: string;\n\trepositoryName: string;\n\tpackageName?: string;\n\tversion: string;\n};\n\nconst fetchGitHubReleaseByVersion = async (\n\targs: FetchGitHubReleaseByVersionArgs,\n): Promise<GitHubReleaseMetadata | undefined> => {\n\tlet url: string;\n\n\tif (args.packageName) {\n\t\turl = `https://api.github.com/repos/${args.repositoryOwner}/${args.repositoryName}/releases/tags/${args.packageName}@${args.version}`;\n\t} else {\n\t\turl = `https://api.github.com/repos/${args.repositoryOwner}/${args.repositoryName}/releases/tags/${args.version}`;\n\t}\n\n\tconst res = await fetch(url, {\n\t\theaders: {\n\t\t\tAccept: GITHUB_JSON_ACCEPT_HEADER,\n\t\t},\n\t});\n\n\tif (res.ok) {\n\t\tconst json = await res.json();\n\n\t\tconst { value, error } = decode(GitHubReleaseMetadata, json);\n\n\t\tif (error) {\n\t\t\tthrow new Error(`Invalid GitHub Release response.`, { cause: error });\n\t\t}\n\n\t\treturn value;\n\t}\n};\n\ntype FetchGitHubReleaseBodyForReleaseArgs = {\n\trepositoryOwner: string;\n\trepositoryName: string;\n\tpackageName?: string;\n\tversion: string;\n\tcache?: Record<string, GitHubReleaseMetadata | undefined>;\n};\n\nconst _fetchGitHubReleaseBodyForRelease = async (\n\targs: FetchGitHubReleaseBodyForReleaseArgs,\n): Promise<string | undefined> => {\n\tconst cache = args.cache || {};\n\n\tif (Object.keys(cache).length < 1) {\n\t\tconst releases = await fetchAllGitHubReleases({\n\t\t\trepositoryOwner: args.repositoryOwner,\n\t\t\trepositoryName: args.repositoryName,\n\t\t});\n\n\t\tfor (const release of releases) {\n\t\t\tcache[release.name] = release;\n\t\t}\n\t}\n\n\tif (args.version in cache) {\n\t\tconst release = cache[args.version];\n\n\t\treturn release?.body ?? undefined;\n\t} else {\n\t\ttry {\n\t\t\tconst version = await fetchGitHubReleaseByVersion({\n\t\t\t\trepositoryOwner: args.repositoryOwner,\n\t\t\t\trepositoryName: args.repositoryName,\n\t\t\t\tpackageName: args.packageName,\n\t\t\t\tversion: args.version,\n\t\t\t});\n\n\t\t\tcache[args.version] = version;\n\n\t\t\treturn version?.body ?? undefined;\n\t\t} catch {\n\t\t\tcache[args.version] = undefined;\n\n\t\t\treturn undefined;\n\t\t}\n\t}\n};\n\nconst limit = pLimit(1);\n\nexport const fetchGitHubReleaseBodyForRelease = async (\n\t...args: Parameters<typeof _fetchGitHubReleaseBodyForRelease>\n): ReturnType<typeof _fetchGitHubReleaseBodyForRelease> => {\n\treturn await limit(() => _fetchGitHubReleaseBodyForRelease(...args));\n};\n"],"names":["t","fetch","decode","pLimit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAM,4BAA4B;AAOlC,MAAM,wBAAwBA,aAAE,KAAK;AAAA,EACpC,MAAMA,aAAE;AAAA,EACR,MAAMA,aAAE,MAAM,CAACA,aAAE,MAAMA,aAAE,MAAM,CAAC;AAChC,CAAA;AAQD,MAAM,yBAAyB,OAC9B,SACqC;AAC/B,QAAA,MAAM,MAAMC,cACjB,gCAAgC,KAAK,eAAe,IAAI,KAAK,cAAc,aAC3E;AAAA,IACC,SAAS;AAAA,MACR,QAAQ;AAAA,IACR;AAAA,EAAA,CACD;AAGF,MAAI,IAAI,IAAI;AACL,UAAA,OAAO,MAAM,IAAI;AAEjB,UAAA,EAAE,OAAO,MAAK,IAAKC,cAAOF,aAAE,MAAM,qBAAqB,GAAG,IAAI;AAEpE,QAAI,OAAO;AACV,YAAM,IAAI,MAAM,oCAAoC,EAAE,OAAO,OAAO;AAAA,IACrE;AAEO,WAAA;AAAA,EAAA,OACD;AACA,UAAA,OAAO,MAAM,IAAI;AACjB,UAAA,IAAI,MAAM,oCAAoC;AAAA,MACnD,OAAO;AAAA,IAAA,CACP;AAAA,EACF;AACD;AASA,MAAM,8BAA8B,OACnC,SAC+C;AAC3C,MAAA;AAEJ,MAAI,KAAK,aAAa;AACf,UAAA,gCAAgC,KAAK,eAAe,IAAI,KAAK,cAAc,kBAAkB,KAAK,WAAW,IAAI,KAAK,OAAO;AAAA,EAAA,OAC7H;AACA,UAAA,gCAAgC,KAAK,eAAe,IAAI,KAAK,cAAc,kBAAkB,KAAK,OAAO;AAAA,EAChH;AAEM,QAAA,MAAM,MAAMC,MAAA,QAAM,KAAK;AAAA,IAC5B,SAAS;AAAA,MACR,QAAQ;AAAA,IACR;AAAA,EAAA,CACD;AAED,MAAI,IAAI,IAAI;AACL,UAAA,OAAO,MAAM,IAAI;AAEvB,UAAM,EAAE,OAAO,MAAA,IAAUC,OAAAA,OAAO,uBAAuB,IAAI;AAE3D,QAAI,OAAO;AACV,YAAM,IAAI,MAAM,oCAAoC,EAAE,OAAO,OAAO;AAAA,IACrE;AAEO,WAAA;AAAA,EACR;AACD;AAUA,MAAM,oCAAoC,OACzC,SACgC;AAC1B,QAAA,QAAQ,KAAK,SAAS;AAE5B,MAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAC5B,UAAA,WAAW,MAAM,uBAAuB;AAAA,MAC7C,iBAAiB,KAAK;AAAA,MACtB,gBAAgB,KAAK;AAAA,IAAA,CACrB;AAED,eAAW,WAAW,UAAU;AACzB,YAAA,QAAQ,IAAI,IAAI;AAAA,IACvB;AAAA,EACD;AAEI,MAAA,KAAK,WAAW,OAAO;AACpB,UAAA,UAAU,MAAM,KAAK,OAAO;AAElC,YAAO,mCAAS,SAAQ;AAAA,EAAA,OAClB;AACF,QAAA;AACG,YAAA,UAAU,MAAM,4BAA4B;AAAA,QACjD,iBAAiB,KAAK;AAAA,QACtB,gBAAgB,KAAK;AAAA,QACrB,aAAa,KAAK;AAAA,QAClB,SAAS,KAAK;AAAA,MAAA,CACd;AAEK,YAAA,KAAK,OAAO,IAAI;AAEtB,cAAO,mCAAS,SAAQ;AAAA,IAAA,QACjB;AACD,YAAA,KAAK,OAAO,IAAI;AAEf,aAAA;AAAA,IACR;AAAA,EACD;AACD;AAEA,MAAM,QAAQC,MAAO,CAAC;AAET,MAAA,mCAAmC,UAC5C,SACsD;AACzD,SAAO,MAAM,MAAM,MAAM,kCAAkC,GAAG,IAAI,CAAC;AACpE;;"}