@slicemachine/manager 0.25.4-beta.5 → 0.25.4-beta.7

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 (501) hide show
  1. package/dist/_node_modules/@amplitude/analytics-core/_node_modules/tslib/tslib.es6.cjs +69 -88
  2. package/dist/_node_modules/@amplitude/analytics-core/_node_modules/tslib/tslib.es6.cjs.map +1 -1
  3. package/dist/_node_modules/@amplitude/analytics-core/_node_modules/tslib/tslib.es6.js +69 -88
  4. package/dist/_node_modules/@amplitude/analytics-core/_node_modules/tslib/tslib.es6.js.map +1 -1
  5. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.cjs +4 -4
  6. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.cjs.map +1 -1
  7. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.js +1 -1
  8. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/config.js.map +1 -1
  9. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.cjs +3 -6
  10. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.cjs.map +1 -1
  11. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.js +3 -6
  12. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/core-client.js.map +1 -1
  13. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.cjs.map +1 -1
  14. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/identify.js.map +1 -1
  15. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.cjs.map +1 -1
  16. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/logger.js.map +1 -1
  17. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.cjs.map +1 -1
  18. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/plugins/destination.js.map +1 -1
  19. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.cjs.map +1 -1
  20. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/revenue.js.map +1 -1
  21. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.cjs +6 -12
  22. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.cjs.map +1 -1
  23. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.js +6 -12
  24. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/timeline.js.map +1 -1
  25. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.cjs.map +1 -1
  26. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/transports/base.js.map +1 -1
  27. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.cjs.map +1 -1
  28. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/chunk.js.map +1 -1
  29. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.cjs +4 -11
  30. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.cjs.map +1 -1
  31. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.js +5 -12
  32. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/debug.js.map +1 -1
  33. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.cjs.map +1 -1
  34. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/event-builder.js.map +1 -1
  35. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.cjs.map +1 -1
  36. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/result-builder.js.map +1 -1
  37. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.cjs.map +1 -1
  38. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/return-wrapper.js.map +1 -1
  39. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.cjs.map +1 -1
  40. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/uuid.js.map +1 -1
  41. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.cjs +2 -4
  42. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.cjs.map +1 -1
  43. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js +2 -4
  44. package/dist/_node_modules/@amplitude/analytics-core/lib/esm/utils/valid-properties.js.map +1 -1
  45. package/dist/_node_modules/@amplitude/analytics-node/_node_modules/tslib/tslib.es6.cjs +52 -63
  46. package/dist/_node_modules/@amplitude/analytics-node/_node_modules/tslib/tslib.es6.cjs.map +1 -1
  47. package/dist/_node_modules/@amplitude/analytics-node/_node_modules/tslib/tslib.es6.js +52 -63
  48. package/dist/_node_modules/@amplitude/analytics-node/_node_modules/tslib/tslib.es6.js.map +1 -1
  49. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.cjs.map +1 -1
  50. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/config.js.map +1 -1
  51. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/index.cjs.map +1 -1
  52. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.cjs.map +1 -1
  53. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/node-client.js.map +1 -1
  54. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.cjs.map +1 -1
  55. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/plugins/context.js.map +1 -1
  56. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.cjs.map +1 -1
  57. package/dist/_node_modules/@amplitude/analytics-node/lib/esm/transports/http.js.map +1 -1
  58. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.cjs.map +1 -1
  59. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/event.js.map +1 -1
  60. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/logger.cjs.map +1 -1
  61. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/plugin.cjs.map +1 -1
  62. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/server-zone.cjs.map +1 -1
  63. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/status.cjs.map +1 -1
  64. package/dist/_node_modules/@amplitude/analytics-types/lib/esm/transport.cjs.map +1 -1
  65. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.cjs +101 -146
  66. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.cjs.map +1 -1
  67. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js +101 -146
  68. package/dist/_node_modules/@amplitude/experiment-core/dist/experiment-core.esm.js.map +1 -1
  69. package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.cjs.map +1 -1
  70. package/dist/_node_modules/@amplitude/experiment-node-server/dist/gen/version.js.map +1 -1
  71. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.cjs +1 -1
  72. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.cjs.map +1 -1
  73. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.js +1 -1
  74. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-filter.js.map +1 -1
  75. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.cjs.map +1 -1
  76. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment-service.js.map +1 -1
  77. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.cjs.map +1 -1
  78. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/assignment/assignment.js.map +1 -1
  79. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.cjs.map +1 -1
  80. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/cookie.js.map +1 -1
  81. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.cjs +1 -1
  82. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.cjs.map +1 -1
  83. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.js +1 -1
  84. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/factory.js.map +1 -1
  85. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.cjs.map +1 -1
  86. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/index.js.map +1 -1
  87. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.cjs.map +1 -1
  88. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/cache.js.map +1 -1
  89. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.cjs +12 -18
  90. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.cjs.map +1 -1
  91. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js +12 -18
  92. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/client.js.map +1 -1
  93. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.cjs +2 -2
  94. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.cjs.map +1 -1
  95. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.js +2 -2
  96. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/fetcher.js.map +1 -1
  97. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.cjs +1 -1
  98. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.cjs.map +1 -1
  99. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js +1 -1
  100. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/local/poller.js.map +1 -1
  101. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.cjs +3 -3
  102. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.cjs.map +1 -1
  103. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js +3 -3
  104. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/remote/client.js.map +1 -1
  105. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.cjs.map +1 -1
  106. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/transport/http.js.map +1 -1
  107. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.cjs.map +1 -1
  108. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/types/config.js.map +1 -1
  109. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.cjs.map +1 -1
  110. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/backoff.js.map +1 -1
  111. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.cjs.map +1 -1
  112. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/cache.js.map +1 -1
  113. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.cjs.map +1 -1
  114. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/hash.js.map +1 -1
  115. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.cjs.map +1 -1
  116. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/logger.js.map +1 -1
  117. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.cjs.map +1 -1
  118. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/time.js.map +1 -1
  119. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.cjs.map +1 -1
  120. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/user.js.map +1 -1
  121. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.cjs.map +1 -1
  122. package/dist/_node_modules/@amplitude/experiment-node-server/dist/src/util/variant.js.map +1 -1
  123. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/CachedKeyDecoder.cjs +8 -9
  124. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/CachedKeyDecoder.cjs.map +1 -1
  125. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/CachedKeyDecoder.js +8 -9
  126. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/CachedKeyDecoder.js.map +1 -1
  127. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/DecodeError.cjs +2 -4
  128. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/DecodeError.cjs.map +1 -1
  129. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/DecodeError.js +2 -4
  130. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/DecodeError.js.map +1 -1
  131. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/Decoder.cjs +220 -239
  132. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/Decoder.cjs.map +1 -1
  133. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/Decoder.js +221 -240
  134. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/Decoder.js.map +1 -1
  135. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/Encoder.cjs.map +1 -1
  136. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/Encoder.js.map +1 -1
  137. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/ExtData.cjs +1 -1
  138. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/ExtData.cjs.map +1 -1
  139. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/ExtData.js +1 -1
  140. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/ExtData.js.map +1 -1
  141. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/ExtensionCodec.cjs.map +1 -1
  142. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/ExtensionCodec.js.map +1 -1
  143. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/decode.cjs.map +1 -1
  144. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/decode.js.map +1 -1
  145. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/encode.cjs.map +1 -1
  146. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/encode.js.map +1 -1
  147. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/timestamp.cjs.map +1 -1
  148. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/timestamp.js +1 -1
  149. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/timestamp.js.map +1 -1
  150. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/utils/typedArrays.cjs.map +1 -1
  151. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/utils/typedArrays.js.map +1 -1
  152. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/utils/utf8.cjs.map +1 -1
  153. package/dist/_node_modules/@msgpack/msgpack/dist.es5_esm/utils/utf8.js.map +1 -1
  154. package/dist/_node_modules/common-tags/es/TemplateTag/TemplateTag.cjs +4 -7
  155. package/dist/_node_modules/common-tags/es/TemplateTag/TemplateTag.cjs.map +1 -1
  156. package/dist/_node_modules/common-tags/es/TemplateTag/TemplateTag.js +4 -7
  157. package/dist/_node_modules/common-tags/es/TemplateTag/TemplateTag.js.map +1 -1
  158. package/dist/_node_modules/common-tags/es/commaLists/commaLists.cjs.map +1 -1
  159. package/dist/_node_modules/common-tags/es/commaLists/commaLists.js.map +1 -1
  160. package/dist/_node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.cjs.map +1 -1
  161. package/dist/_node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js.map +1 -1
  162. package/dist/_node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.cjs.map +1 -1
  163. package/dist/_node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js.map +1 -1
  164. package/dist/_node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.cjs.map +1 -1
  165. package/dist/_node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js.map +1 -1
  166. package/dist/_node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.cjs.map +1 -1
  167. package/dist/_node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js.map +1 -1
  168. package/dist/_node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.cjs.map +1 -1
  169. package/dist/_node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js.map +1 -1
  170. package/dist/_node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.cjs.map +1 -1
  171. package/dist/_node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js.map +1 -1
  172. package/dist/_node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.cjs +1 -3
  173. package/dist/_node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.cjs.map +1 -1
  174. package/dist/_node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js +1 -3
  175. package/dist/_node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js.map +1 -1
  176. package/dist/_node_modules/common-tags/es/stripIndent/stripIndent.cjs +1 -2
  177. package/dist/_node_modules/common-tags/es/stripIndent/stripIndent.cjs.map +1 -1
  178. package/dist/_node_modules/common-tags/es/stripIndent/stripIndent.js +1 -2
  179. package/dist/_node_modules/common-tags/es/stripIndent/stripIndent.js.map +1 -1
  180. package/dist/_node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.cjs.map +1 -1
  181. package/dist/_node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js.map +1 -1
  182. package/dist/_node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.cjs.map +1 -1
  183. package/dist/_node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js.map +1 -1
  184. package/dist/_node_modules/cross-spawn/index.cjs.map +1 -1
  185. package/dist/_node_modules/cross-spawn/index.js.map +1 -1
  186. package/dist/_node_modules/cross-spawn/lib/enoent.cjs.map +1 -1
  187. package/dist/_node_modules/cross-spawn/lib/enoent.js.map +1 -1
  188. package/dist/_node_modules/cross-spawn/lib/parse.cjs.map +1 -1
  189. package/dist/_node_modules/cross-spawn/lib/parse.js.map +1 -1
  190. package/dist/_node_modules/cross-spawn/lib/util/escape.cjs.map +1 -1
  191. package/dist/_node_modules/cross-spawn/lib/util/escape.js.map +1 -1
  192. package/dist/_node_modules/cross-spawn/lib/util/readShebang.cjs.map +1 -1
  193. package/dist/_node_modules/cross-spawn/lib/util/readShebang.js.map +1 -1
  194. package/dist/_node_modules/cross-spawn/lib/util/resolveCommand.cjs.map +1 -1
  195. package/dist/_node_modules/cross-spawn/lib/util/resolveCommand.js.map +1 -1
  196. package/dist/_node_modules/data-uri-to-buffer/dist/index.cjs.map +1 -1
  197. package/dist/_node_modules/data-uri-to-buffer/dist/index.js.map +1 -1
  198. package/dist/_node_modules/execa/index.cjs +1 -1
  199. package/dist/_node_modules/execa/index.cjs.map +1 -1
  200. package/dist/_node_modules/execa/index.js +1 -1
  201. package/dist/_node_modules/execa/index.js.map +1 -1
  202. package/dist/_node_modules/execa/lib/command.cjs.map +1 -1
  203. package/dist/_node_modules/execa/lib/command.js.map +1 -1
  204. package/dist/_node_modules/execa/lib/error.cjs.map +1 -1
  205. package/dist/_node_modules/execa/lib/error.js.map +1 -1
  206. package/dist/_node_modules/execa/lib/kill.cjs.map +1 -1
  207. package/dist/_node_modules/execa/lib/kill.js.map +1 -1
  208. package/dist/_node_modules/execa/lib/pipe.cjs.map +1 -1
  209. package/dist/_node_modules/execa/lib/pipe.js.map +1 -1
  210. package/dist/_node_modules/execa/lib/promise.cjs +2 -2
  211. package/dist/_node_modules/execa/lib/promise.cjs.map +1 -1
  212. package/dist/_node_modules/execa/lib/promise.js +2 -2
  213. package/dist/_node_modules/execa/lib/promise.js.map +1 -1
  214. package/dist/_node_modules/execa/lib/stdio.cjs.map +1 -1
  215. package/dist/_node_modules/execa/lib/stdio.js.map +1 -1
  216. package/dist/_node_modules/execa/lib/stream.cjs.map +1 -1
  217. package/dist/_node_modules/execa/lib/stream.js.map +1 -1
  218. package/dist/_node_modules/execa/lib/verbose.cjs.map +1 -1
  219. package/dist/_node_modules/execa/lib/verbose.js.map +1 -1
  220. package/dist/_node_modules/fetch-blob/file.cjs +9 -21
  221. package/dist/_node_modules/fetch-blob/file.cjs.map +1 -1
  222. package/dist/_node_modules/fetch-blob/file.js +8 -20
  223. package/dist/_node_modules/fetch-blob/file.js.map +1 -1
  224. package/dist/_node_modules/fetch-blob/from.cjs +9 -0
  225. package/dist/_node_modules/fetch-blob/from.cjs.map +1 -0
  226. package/dist/_node_modules/fetch-blob/from.js +9 -0
  227. package/dist/_node_modules/fetch-blob/from.js.map +1 -0
  228. package/dist/_node_modules/fetch-blob/index.cjs +8 -21
  229. package/dist/_node_modules/fetch-blob/index.cjs.map +1 -1
  230. package/dist/_node_modules/fetch-blob/index.js +8 -21
  231. package/dist/_node_modules/fetch-blob/index.js.map +1 -1
  232. package/dist/_node_modules/fetch-blob/streams.cjs.map +1 -1
  233. package/dist/_node_modules/fetch-blob/streams.js.map +1 -1
  234. package/dist/_node_modules/file-type/core.cjs.map +1 -1
  235. package/dist/_node_modules/file-type/core.js.map +1 -1
  236. package/dist/_node_modules/file-type/util.cjs.map +1 -1
  237. package/dist/_node_modules/file-type/util.js.map +1 -1
  238. package/dist/_node_modules/formdata-polyfill/esm.min.cjs +12 -29
  239. package/dist/_node_modules/formdata-polyfill/esm.min.cjs.map +1 -1
  240. package/dist/_node_modules/formdata-polyfill/esm.min.js +12 -29
  241. package/dist/_node_modules/formdata-polyfill/esm.min.js.map +1 -1
  242. package/dist/_node_modules/fp-ts/es6/Either.cjs.map +1 -1
  243. package/dist/_node_modules/fp-ts/es6/Either.js.map +1 -1
  244. package/dist/_node_modules/fp-ts/es6/function.cjs +7 -9
  245. package/dist/_node_modules/fp-ts/es6/function.cjs.map +1 -1
  246. package/dist/_node_modules/fp-ts/es6/function.js +7 -9
  247. package/dist/_node_modules/fp-ts/es6/function.js.map +1 -1
  248. package/dist/_node_modules/fp-ts/es6/internal.cjs +7 -9
  249. package/dist/_node_modules/fp-ts/es6/internal.cjs.map +1 -1
  250. package/dist/_node_modules/fp-ts/es6/internal.js +7 -9
  251. package/dist/_node_modules/fp-ts/es6/internal.js.map +1 -1
  252. package/dist/_node_modules/get-port/index.cjs.map +1 -1
  253. package/dist/_node_modules/get-port/index.js.map +1 -1
  254. package/dist/_node_modules/get-stream/buffer-stream.cjs.map +1 -1
  255. package/dist/_node_modules/get-stream/buffer-stream.js.map +1 -1
  256. package/dist/_node_modules/get-stream/index.cjs +4 -4
  257. package/dist/_node_modules/get-stream/index.cjs.map +1 -1
  258. package/dist/_node_modules/get-stream/index.js +4 -4
  259. package/dist/_node_modules/get-stream/index.js.map +1 -1
  260. package/dist/_node_modules/human-signals/build/src/main.cjs.map +1 -1
  261. package/dist/_node_modules/human-signals/build/src/main.js.map +1 -1
  262. package/dist/_node_modules/human-signals/build/src/signals.cjs.map +1 -1
  263. package/dist/_node_modules/isexe/index.cjs.map +1 -1
  264. package/dist/_node_modules/isexe/index.js.map +1 -1
  265. package/dist/_node_modules/isexe/mode.cjs +1 -2
  266. package/dist/_node_modules/isexe/mode.cjs.map +1 -1
  267. package/dist/_node_modules/isexe/mode.js +1 -2
  268. package/dist/_node_modules/isexe/mode.js.map +1 -1
  269. package/dist/_node_modules/isexe/windows.cjs +1 -2
  270. package/dist/_node_modules/isexe/windows.cjs.map +1 -1
  271. package/dist/_node_modules/isexe/windows.js +1 -2
  272. package/dist/_node_modules/isexe/windows.js.map +1 -1
  273. package/dist/_node_modules/merge-stream/index.cjs.map +1 -1
  274. package/dist/_node_modules/merge-stream/index.js.map +1 -1
  275. package/dist/_node_modules/mimic-fn/index.cjs.map +1 -1
  276. package/dist/_node_modules/mimic-fn/index.js.map +1 -1
  277. package/dist/_node_modules/node-domexception/index.cjs.map +1 -1
  278. package/dist/_node_modules/node-domexception/index.js.map +1 -1
  279. package/dist/_node_modules/node-fetch/src/body.cjs +4 -7
  280. package/dist/_node_modules/node-fetch/src/body.cjs.map +1 -1
  281. package/dist/_node_modules/node-fetch/src/body.js +5 -8
  282. package/dist/_node_modules/node-fetch/src/body.js.map +1 -1
  283. package/dist/_node_modules/node-fetch/src/errors/abort-error.cjs.map +1 -1
  284. package/dist/_node_modules/node-fetch/src/errors/abort-error.js.map +1 -1
  285. package/dist/_node_modules/node-fetch/src/errors/base.cjs.map +1 -1
  286. package/dist/_node_modules/node-fetch/src/errors/base.js.map +1 -1
  287. package/dist/_node_modules/node-fetch/src/errors/fetch-error.cjs.map +1 -1
  288. package/dist/_node_modules/node-fetch/src/errors/fetch-error.js.map +1 -1
  289. package/dist/_node_modules/node-fetch/src/headers.cjs +1 -2
  290. package/dist/_node_modules/node-fetch/src/headers.cjs.map +1 -1
  291. package/dist/_node_modules/node-fetch/src/headers.js +1 -2
  292. package/dist/_node_modules/node-fetch/src/headers.js.map +1 -1
  293. package/dist/_node_modules/node-fetch/src/index.cjs +2 -4
  294. package/dist/_node_modules/node-fetch/src/index.cjs.map +1 -1
  295. package/dist/_node_modules/node-fetch/src/index.js +3 -5
  296. package/dist/_node_modules/node-fetch/src/index.js.map +1 -1
  297. package/dist/_node_modules/node-fetch/src/request.cjs.map +1 -1
  298. package/dist/_node_modules/node-fetch/src/request.js.map +1 -1
  299. package/dist/_node_modules/node-fetch/src/response.cjs.map +1 -1
  300. package/dist/_node_modules/node-fetch/src/response.js.map +1 -1
  301. package/dist/_node_modules/node-fetch/src/utils/get-search.cjs.map +1 -1
  302. package/dist/_node_modules/node-fetch/src/utils/get-search.js.map +1 -1
  303. package/dist/_node_modules/node-fetch/src/utils/multipart-parser.cjs +2 -5
  304. package/dist/_node_modules/node-fetch/src/utils/multipart-parser.cjs.map +1 -1
  305. package/dist/_node_modules/node-fetch/src/utils/multipart-parser.js +2 -5
  306. package/dist/_node_modules/node-fetch/src/utils/multipart-parser.js.map +1 -1
  307. package/dist/_node_modules/node-fetch/src/utils/referrer.cjs.map +1 -1
  308. package/dist/_node_modules/node-fetch/src/utils/referrer.js.map +1 -1
  309. package/dist/_node_modules/npm-run-path/_node_modules/path-key/index.cjs.map +1 -1
  310. package/dist/_node_modules/npm-run-path/_node_modules/path-key/index.js.map +1 -1
  311. package/dist/_node_modules/npm-run-path/index.cjs.map +1 -1
  312. package/dist/_node_modules/npm-run-path/index.js.map +1 -1
  313. package/dist/_node_modules/onetime/index.cjs.map +1 -1
  314. package/dist/_node_modules/onetime/index.js.map +1 -1
  315. package/dist/_node_modules/p-limit/_node_modules/yocto-queue/index.cjs +11 -25
  316. package/dist/_node_modules/p-limit/_node_modules/yocto-queue/index.cjs.map +1 -1
  317. package/dist/_node_modules/p-limit/_node_modules/yocto-queue/index.js +11 -25
  318. package/dist/_node_modules/p-limit/_node_modules/yocto-queue/index.js.map +1 -1
  319. package/dist/_node_modules/p-limit/index.cjs.map +1 -1
  320. package/dist/_node_modules/p-limit/index.js.map +1 -1
  321. package/dist/_node_modules/path-key/index.cjs.map +1 -1
  322. package/dist/_node_modules/path-key/index.js.map +1 -1
  323. package/dist/_node_modules/peek-readable/lib/EndOfFileStream.cjs.map +1 -1
  324. package/dist/_node_modules/peek-readable/lib/EndOfFileStream.js.map +1 -1
  325. package/dist/_node_modules/r19/dist/R19Error.cjs.map +1 -1
  326. package/dist/_node_modules/r19/dist/R19Error.js.map +1 -1
  327. package/dist/_node_modules/r19/dist/client/createRPCClient.cjs.map +1 -1
  328. package/dist/_node_modules/r19/dist/client/createRPCClient.js.map +1 -1
  329. package/dist/_node_modules/r19/dist/createRPCMiddleware.cjs.map +1 -1
  330. package/dist/_node_modules/r19/dist/createRPCMiddleware.js.map +1 -1
  331. package/dist/_node_modules/r19/dist/handleRPCRequest.cjs.map +1 -1
  332. package/dist/_node_modules/r19/dist/handleRPCRequest.js.map +1 -1
  333. package/dist/_node_modules/r19/dist/lib/replaceLeaves.cjs.map +1 -1
  334. package/dist/_node_modules/r19/dist/lib/replaceLeaves.js.map +1 -1
  335. package/dist/_node_modules/r19/dist/proceduresFromInstance.cjs.map +1 -1
  336. package/dist/_node_modules/r19/dist/proceduresFromInstance.js.map +1 -1
  337. package/dist/_node_modules/shebang-command/index.cjs.map +1 -1
  338. package/dist/_node_modules/shebang-command/index.js.map +1 -1
  339. package/dist/_node_modules/signal-exit/index.cjs.map +1 -1
  340. package/dist/_node_modules/signal-exit/index.js +1 -1
  341. package/dist/_node_modules/signal-exit/index.js.map +1 -1
  342. package/dist/_node_modules/signal-exit/signals.cjs +1 -2
  343. package/dist/_node_modules/signal-exit/signals.cjs.map +1 -1
  344. package/dist/_node_modules/signal-exit/signals.js +1 -2
  345. package/dist/_node_modules/signal-exit/signals.js.map +1 -1
  346. package/dist/_node_modules/strip-final-newline/index.cjs.map +1 -1
  347. package/dist/_node_modules/strip-final-newline/index.js.map +1 -1
  348. package/dist/_node_modules/strtok3/lib/AbstractTokenizer.cjs.map +1 -1
  349. package/dist/_node_modules/strtok3/lib/AbstractTokenizer.js.map +1 -1
  350. package/dist/_node_modules/strtok3/lib/BufferTokenizer.cjs.map +1 -1
  351. package/dist/_node_modules/strtok3/lib/BufferTokenizer.js.map +1 -1
  352. package/dist/_node_modules/strtok3/lib/core.cjs.map +1 -1
  353. package/dist/_node_modules/token-types/lib/index.cjs.map +1 -1
  354. package/dist/_node_modules/token-types/lib/index.js.map +1 -1
  355. package/dist/_node_modules/web-streams-polyfill/dist/ponyfill.es2018.cjs +5 -10
  356. package/dist/_node_modules/web-streams-polyfill/dist/ponyfill.es2018.cjs.map +1 -1
  357. package/dist/_node_modules/web-streams-polyfill/dist/ponyfill.es2018.js +5 -10
  358. package/dist/_node_modules/web-streams-polyfill/dist/ponyfill.es2018.js.map +1 -1
  359. package/dist/_node_modules/which/which.cjs.map +1 -1
  360. package/dist/_node_modules/which/which.js.map +1 -1
  361. package/dist/_node_modules/zod/lib/index.cjs +11 -20
  362. package/dist/_node_modules/zod/lib/index.cjs.map +1 -1
  363. package/dist/_node_modules/zod/lib/index.js +11 -20
  364. package/dist/_node_modules/zod/lib/index.js.map +1 -1
  365. package/dist/_virtual/_commonjsHelpers.cjs +2 -4
  366. package/dist/_virtual/_commonjsHelpers.cjs.map +1 -1
  367. package/dist/_virtual/_commonjsHelpers.js +2 -4
  368. package/dist/_virtual/_commonjsHelpers.js.map +1 -1
  369. package/dist/auth/PrismicAuthManager.cjs +1 -4
  370. package/dist/auth/PrismicAuthManager.cjs.map +1 -1
  371. package/dist/auth/PrismicAuthManager.js +1 -4
  372. package/dist/auth/PrismicAuthManager.js.map +1 -1
  373. package/dist/auth/createPrismicAuthManager.cjs.map +1 -1
  374. package/dist/auth/createPrismicAuthManager.js.map +1 -1
  375. package/dist/auth/createPrismicAuthManagerMiddleware.cjs.map +1 -1
  376. package/dist/auth/createPrismicAuthManagerMiddleware.js.map +1 -1
  377. package/dist/constants/API_ENDPOINTS.cjs.map +1 -1
  378. package/dist/constants/API_ENDPOINTS.js.map +1 -1
  379. package/dist/constants/API_TOKENS.cjs.map +1 -1
  380. package/dist/constants/API_TOKENS.js.map +1 -1
  381. package/dist/errors.cjs +1 -4
  382. package/dist/errors.cjs.map +1 -1
  383. package/dist/errors.js +1 -4
  384. package/dist/errors.js.map +1 -1
  385. package/dist/getEnvironmentInfo.cjs.map +1 -1
  386. package/dist/getEnvironmentInfo.js.map +1 -1
  387. package/dist/lib/DecodeError.cjs +1 -4
  388. package/dist/lib/DecodeError.cjs.map +1 -1
  389. package/dist/lib/DecodeError.js +1 -4
  390. package/dist/lib/DecodeError.js.map +1 -1
  391. package/dist/lib/assertPluginsInitialized.cjs.map +1 -1
  392. package/dist/lib/assertPluginsInitialized.js.map +1 -1
  393. package/dist/lib/bufferCodec.cjs.map +1 -1
  394. package/dist/lib/buildPrismicRepositoryAPIEndpoint.cjs.map +1 -1
  395. package/dist/lib/buildPrismicRepositoryAPIEndpoint.js.map +1 -1
  396. package/dist/lib/castArray.cjs.map +1 -1
  397. package/dist/lib/castArray.js.map +1 -1
  398. package/dist/lib/createContentDigest.cjs.map +1 -1
  399. package/dist/lib/createContentDigest.js.map +1 -1
  400. package/dist/lib/decode.cjs.map +1 -1
  401. package/dist/lib/decode.js.map +1 -1
  402. package/dist/lib/decodeHookResult.cjs.map +1 -1
  403. package/dist/lib/decodeHookResult.js.map +1 -1
  404. package/dist/lib/decodePackageJSON.cjs.map +1 -1
  405. package/dist/lib/decodePackageJSON.js.map +1 -1
  406. package/dist/lib/decodeSliceMachineConfig.cjs.map +1 -1
  407. package/dist/lib/decodeSliceMachineConfig.js.map +1 -1
  408. package/dist/lib/fetch.cjs +1 -2
  409. package/dist/lib/fetch.cjs.map +1 -1
  410. package/dist/lib/fetch.js +3 -4
  411. package/dist/lib/fetch.js.map +1 -1
  412. package/dist/lib/fetchGitHubReleaseBodyForRelease.cjs.map +1 -1
  413. package/dist/lib/fetchGitHubReleaseBodyForRelease.js.map +1 -1
  414. package/dist/lib/fetchNPMPackageVersions.cjs.map +1 -1
  415. package/dist/lib/fetchNPMPackageVersions.js.map +1 -1
  416. package/dist/lib/findEnvironment.cjs.map +1 -1
  417. package/dist/lib/findEnvironment.js.map +1 -1
  418. package/dist/lib/format.cjs +1 -4
  419. package/dist/lib/format.cjs.map +1 -1
  420. package/dist/lib/format.js +1 -4
  421. package/dist/lib/format.js.map +1 -1
  422. package/dist/lib/installDependencies.cjs.map +1 -1
  423. package/dist/lib/installDependencies.js.map +1 -1
  424. package/dist/lib/locateFileUpward.cjs.map +1 -1
  425. package/dist/lib/locateFileUpward.js.map +1 -1
  426. package/dist/lib/mockSlice.cjs.map +1 -1
  427. package/dist/lib/mockSlice.js.map +1 -1
  428. package/dist/lib/prismicrc.cjs.map +1 -1
  429. package/dist/lib/prismicrc.js.map +1 -1
  430. package/dist/lib/requireResolve.cjs.map +1 -1
  431. package/dist/lib/requireResolve.js.map +1 -1
  432. package/dist/lib/serializeCookies.cjs.map +1 -1
  433. package/dist/lib/serializeCookies.js.map +1 -1
  434. package/dist/lib/trailingSlash.cjs.map +1 -1
  435. package/dist/lib/trailingSlash.js.map +1 -1
  436. package/dist/managers/BaseManager.cjs +1 -4
  437. package/dist/managers/BaseManager.cjs.map +1 -1
  438. package/dist/managers/BaseManager.js +1 -4
  439. package/dist/managers/BaseManager.js.map +1 -1
  440. package/dist/managers/SliceMachineManager.cjs +1 -4
  441. package/dist/managers/SliceMachineManager.cjs.map +1 -1
  442. package/dist/managers/SliceMachineManager.js +1 -4
  443. package/dist/managers/SliceMachineManager.js.map +1 -1
  444. package/dist/managers/createSliceMachineManager.cjs.map +1 -1
  445. package/dist/managers/createSliceMachineManager.js.map +1 -1
  446. package/dist/managers/createSliceMachineManagerClient.cjs.map +1 -1
  447. package/dist/managers/createSliceMachineManagerClient.js.map +1 -1
  448. package/dist/managers/createSliceMachineManagerMiddleware.cjs.map +1 -1
  449. package/dist/managers/createSliceMachineManagerMiddleware.js.map +1 -1
  450. package/dist/managers/customTypes/CustomTypesManager.cjs.map +1 -1
  451. package/dist/managers/customTypes/CustomTypesManager.js +1 -1
  452. package/dist/managers/customTypes/CustomTypesManager.js.map +1 -1
  453. package/dist/managers/documentation/DocumentationManager.cjs.map +1 -1
  454. package/dist/managers/documentation/DocumentationManager.js.map +1 -1
  455. package/dist/managers/plugins/PluginsManager.cjs +1 -4
  456. package/dist/managers/plugins/PluginsManager.cjs.map +1 -1
  457. package/dist/managers/plugins/PluginsManager.js +1 -4
  458. package/dist/managers/plugins/PluginsManager.js.map +1 -1
  459. package/dist/managers/prismicRepository/PrismicRepositoryManager.cjs.map +1 -1
  460. package/dist/managers/prismicRepository/PrismicRepositoryManager.js.map +1 -1
  461. package/dist/managers/prismicRepository/sortEnvironments.cjs.map +1 -1
  462. package/dist/managers/prismicRepository/sortEnvironments.js.map +1 -1
  463. package/dist/managers/prismicRepository/types.cjs.map +1 -1
  464. package/dist/managers/prismicRepository/types.js.map +1 -1
  465. package/dist/managers/project/ProjectManager.cjs +1 -4
  466. package/dist/managers/project/ProjectManager.cjs.map +1 -1
  467. package/dist/managers/project/ProjectManager.js +1 -4
  468. package/dist/managers/project/ProjectManager.js.map +1 -1
  469. package/dist/managers/screenshots/ScreenshotsManager.cjs +6 -11
  470. package/dist/managers/screenshots/ScreenshotsManager.cjs.map +1 -1
  471. package/dist/managers/screenshots/ScreenshotsManager.js +3 -8
  472. package/dist/managers/screenshots/ScreenshotsManager.js.map +1 -1
  473. package/dist/managers/simulator/SimulatorManager.cjs.map +1 -1
  474. package/dist/managers/simulator/SimulatorManager.js.map +1 -1
  475. package/dist/managers/sliceTemplateLibrary/SliceTemplateLibraryManager.cjs.map +1 -1
  476. package/dist/managers/sliceTemplateLibrary/SliceTemplateLibraryManager.js.map +1 -1
  477. package/dist/managers/slices/SlicesManager.cjs.map +1 -1
  478. package/dist/managers/slices/SlicesManager.js.map +1 -1
  479. package/dist/managers/snippets/SnippetsManager.cjs.map +1 -1
  480. package/dist/managers/snippets/SnippetsManager.js.map +1 -1
  481. package/dist/managers/telemetry/TelemetryManager.cjs +1 -13
  482. package/dist/managers/telemetry/TelemetryManager.cjs.map +1 -1
  483. package/dist/managers/telemetry/TelemetryManager.js +1 -13
  484. package/dist/managers/telemetry/TelemetryManager.js.map +1 -1
  485. package/dist/managers/telemetry/types.cjs +6 -2
  486. package/dist/managers/telemetry/types.cjs.map +1 -1
  487. package/dist/managers/telemetry/types.d.ts +11 -1
  488. package/dist/managers/telemetry/types.js +6 -2
  489. package/dist/managers/telemetry/types.js.map +1 -1
  490. package/dist/managers/user/UserManager.cjs +1 -4
  491. package/dist/managers/user/UserManager.cjs.map +1 -1
  492. package/dist/managers/user/UserManager.js +1 -4
  493. package/dist/managers/user/UserManager.js.map +1 -1
  494. package/dist/managers/versions/VersionsManager.cjs +1 -4
  495. package/dist/managers/versions/VersionsManager.cjs.map +1 -1
  496. package/dist/managers/versions/VersionsManager.js +1 -4
  497. package/dist/managers/versions/VersionsManager.js.map +1 -1
  498. package/dist/test/createSliceMachineManagerMSWHandler.cjs.map +1 -1
  499. package/dist/test/createSliceMachineManagerMSWHandler.js.map +1 -1
  500. package/package.json +3 -3
  501. package/src/managers/telemetry/types.ts +23 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PrismicRepositoryManager.js","sources":["../../../../src/managers/prismicRepository/PrismicRepositoryManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { z } from \"zod\";\nimport fetch, { Response } from \"../../lib/fetch\";\nimport { fold } from \"fp-ts/Either\";\n\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decode } from \"../../lib/decode\";\nimport { serializeCookies } from \"../../lib/serializeCookies\";\n\nimport { SLICE_MACHINE_USER_AGENT } from \"../../constants/SLICE_MACHINE_USER_AGENT\";\nimport { API_ENDPOINTS } from \"../../constants/API_ENDPOINTS\";\nimport { REPOSITORY_NAME_VALIDATION } from \"../../constants/REPOSITORY_NAME_VALIDATION\";\n\nimport {\n\tUnauthenticatedError,\n\tUnauthorizedError,\n\tUnexpectedDataError,\n} from \"../../errors\";\n\nimport { BaseManager } from \"../BaseManager\";\n\nimport {\n\tAllChangeTypes,\n\tPushBody,\n\tChangeTypes,\n\tClientError,\n\tPushChangesLimit,\n\tPushChangesLimitType,\n\tPrismicRepository,\n\tPrismicRepositoryRole,\n\tPrismicRepositoryUserAgent,\n\tPrismicRepositoryUserAgents,\n\tPushChangesRawLimit,\n\tTransactionalMergeArgs,\n\tTransactionalMergeReturnType,\n\tFrameworkWroomTelemetryID,\n\tStarterId,\n\tEnvironment,\n\tOnboardingState,\n} from \"./types\";\nimport { sortEnvironments } from \"./sortEnvironments\";\n\nconst DEFAULT_REPOSITORY_SETTINGS = {\n\tplan: \"personal\",\n\tisAnnual: \"false\",\n\trole: \"developer\",\n};\n\ntype PrismicRepositoryManagerCheckExistsArgs = {\n\tdomain: string;\n};\n\ntype PrismicRepositoryManagerCreateArgs = {\n\tdomain: string;\n\tframework: FrameworkWroomTelemetryID;\n\tstarterId?: StarterId;\n};\n\ntype PrismicRepositoryManagerDeleteArgs = {\n\tdomain: string;\n\tpassword: string;\n};\n\ntype PrismicRepositoryManagerPushDocumentsArgs = {\n\tdomain: string;\n\tsignature: string;\n\tdocuments: Record<string, unknown>; // TODO: Type unknown if possible(?)\n};\n\ntype PrismicRepositoryManagerFetchEnvironmentsArgs = {\n\t/**\n\t * If set to `true`, all environments are returned regardless of the user's\n\t * permission level.\n\t *\n\t * If set to `false`, only environments the user can access are returned.\n\t *\n\t * @defaultValue `false`\n\t */\n\tincludeAll?: boolean;\n};\n\ntype PrismicRepositoryManagerFetchEnvironmentsReturnType = {\n\tenvironments?: Environment[];\n};\n\nexport class PrismicRepositoryManager extends BaseManager {\n\t// TODO: Add methods for repository-specific actions. E.g. creating a\n\t// new repository.\n\n\tasync readAll(): Promise<PrismicRepository[]> {\n\t\tconst url = new URL(\"./repositories\", API_ENDPOINTS.PrismicUser);\n\t\tconst res = await this._fetch({ url });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value: repositories, error } = decode(\n\t\t\t\tt.array(PrismicRepository),\n\t\t\t\tjson,\n\t\t\t);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to decode repositories: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn repositories;\n\t\t} else {\n\t\t\tconst text = await res.text();\n\t\t\tthrow new Error(`Failed to read repositories`, { cause: text });\n\t\t}\n\t}\n\n\t// Should this be in manager? It's one of the few sync method\n\t//\n\t// Reply from Angelo 2022-12-22: I think it should be in manager\n\t// because we shouldn't be exporting root-level utilities from this\n\t// package. If we want to make it more inline with the other methods,\n\t// we could simplify the API by changing its signature to the\n\t// following:\n\t//\n\t// ```ts\n\t// (repositoryName: string) => Promise<boolean>\n\t// ```\n\t//\n\t// This method would:\n\t//\n\t// 1. Fetch the list of repositories for the user using `readAll()`.\n\t// The list would be cached.\n\t// 2. Determine if the user has write access to the given repository.\n\t//\n\t// This version has the following benefits:\n\t//\n\t// - Does not expect the consumer to supply a repository object; it\n\t// only requires a repository name, which could be sourced from\n\t// anything (incl. the project's `slicemachine.config.json`).\n\t//\n\t// - Similarly, it does not expect the consumer to call `readAll()`\n\t// before calling this method.\n\t//\n\t// - Works for repositories that the user does not have access to. For\n\t// example, I could use it to check if I have access to \"qwerty\",\n\t// even if I am not added as a user. The purpose of the method is\n\t// still valid: do I have write access to a given repository?\n\thasWriteAccess(repository: PrismicRepository): boolean {\n\t\tswitch (repository.role) {\n\t\t\tcase PrismicRepositoryRole.SuperUser:\n\t\t\tcase PrismicRepositoryRole.Owner:\n\t\t\tcase PrismicRepositoryRole.Administrator:\n\t\t\t\treturn true;\n\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync checkExists(\n\t\targs: PrismicRepositoryManagerCheckExistsArgs,\n\t): Promise<boolean> {\n\t\tconst url = new URL(\n\t\t\t`./app/dashboard/repositories/${args.domain}/exists`,\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t);\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tskipAuthentication: true,\n\t\t});\n\n\t\tconst text = await res.text();\n\n\t\tif (res.ok) {\n\t\t\treturn text === \"false\"; // Endpoint returns `false` when repository exists\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to check repository existence for domain \\`${args.domain}\\``,\n\t\t\t\t{ cause: text },\n\t\t\t);\n\t\t}\n\t}\n\n\tasync create(args: PrismicRepositoryManagerCreateArgs): Promise<void> {\n\t\tconst url = new URL(\n\t\t\t\"./authentication/newrepository?app=slicemachine\",\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t);\n\n\t\tconst body = {\n\t\t\t...DEFAULT_REPOSITORY_SETTINGS,\n\t\t\tdomain: args.domain,\n\t\t\t// These properties are optional in the API but needed for tracking\n\t\t\tframework: args.framework,\n\t\t\tstarterId: args.starterId,\n\t\t};\n\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tmethod: \"POST\",\n\t\t\tbody,\n\t\t\tuserAgent: PrismicRepositoryUserAgent.SliceMachine, // Custom User Agent is required\n\t\t});\n\t\tconst text = await res.text();\n\n\t\t// Endpoint returns repository name on success, that should be within the validation range\n\t\t// Even when there is an error, we get a 200 success and so we have to check the name thanks to that\n\t\tif (\n\t\t\t!res.ok ||\n\t\t\ttext.length < REPOSITORY_NAME_VALIDATION.Min ||\n\t\t\ttext.length > REPOSITORY_NAME_VALIDATION.Max\n\t\t) {\n\t\t\tthrow new Error(`Failed to create repository \\`${args.domain}\\``, {\n\t\t\t\tcause: text,\n\t\t\t});\n\t\t}\n\t}\n\n\t// TODO: Delete this endpoint? It doesn't seem to be used (I might be wrong). - Angelo\n\tasync delete(args: PrismicRepositoryManagerDeleteArgs): Promise<void> {\n\t\tconst cookies = await this.user.getAuthenticationCookies();\n\n\t\tconst url = new URL(\n\t\t\t`./app/settings/delete?_=${cookies[\"X_XSRF\"]}`, // TODO: Maybe we want to throw early if the token is no available, or get the token another way\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t);\n\t\t// Update hostname to include repository domain\n\t\turl.hostname = `${args.domain}.${url.hostname}`;\n\n\t\tconst body = {\n\t\t\tconfirm: args.domain,\n\t\t\tpassword: args.password,\n\t\t};\n\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tmethod: \"POST\",\n\t\t\tbody,\n\t\t\tuserAgent: PrismicRepositoryUserAgent.LegacyZero, // Custom User Agent is required\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tthrow new Error(`Failed to delete repository \\`${args.domain}\\``, {\n\t\t\t\tcause: res,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync pushDocuments(\n\t\targs: PrismicRepositoryManagerPushDocumentsArgs,\n\t): Promise<void> {\n\t\tconst url = new URL(\"./starter/documents\", API_ENDPOINTS.PrismicWroom);\n\t\t// Update hostname to include repository domain\n\t\turl.hostname = `${args.domain}.${url.hostname}`;\n\n\t\tconst body = {\n\t\t\tsignature: args.signature,\n\t\t\tdocuments: JSON.stringify(args.documents),\n\t\t};\n\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tmethod: \"POST\",\n\t\t\tbody,\n\t\t\tuserAgent: PrismicRepositoryUserAgent.LegacyZero, // Custom User Agent is required\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tlet reason: string | null = null;\n\t\t\ttry {\n\t\t\t\treason = await res.text();\n\t\t\t} catch {\n\t\t\t\t// Noop\n\t\t\t}\n\n\t\t\t// Ideally the API should throw a 409 or something like that...\n\t\t\tif (reason === \"Repository should not contain documents\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to push documents to repository \\`${args.domain}\\`, repository is not empty`,\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: reason,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to push documents to repository \\`${args.domain}\\`, ${res.status} ${res.statusText}`,\n\t\t\t\t{\n\t\t\t\t\tcause: reason,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tasync pushChanges(\n\t\targs: TransactionalMergeArgs,\n\t): Promise<TransactionalMergeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tif (!(await this.user.checkIsLoggedIn())) {\n\t\t\tthrow new UnauthenticatedError();\n\t\t}\n\n\t\ttry {\n\t\t\t// Update the AWS ACL before uploading screenshots as it might have expired\n\t\t\tawait this.screenshots.initS3ACL();\n\n\t\t\tconst allChanges: AllChangeTypes[] = await Promise.all(\n\t\t\t\targs.changes.map(async (change) => {\n\t\t\t\t\tif (change.type === \"Slice\") {\n\t\t\t\t\t\tswitch (change.status) {\n\t\t\t\t\t\t\tcase \"NEW\": {\n\t\t\t\t\t\t\t\tconst { model } = await this.slices.readSlice({\n\t\t\t\t\t\t\t\t\tlibraryID: change.libraryID,\n\t\t\t\t\t\t\t\t\tsliceID: change.id,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (!model) {\n\t\t\t\t\t\t\t\t\tthrow Error(`Could not find model ${change.id}`);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst modelWithScreenshots =\n\t\t\t\t\t\t\t\t\tawait this.slices.updateSliceModelScreenshotsInPlace({\n\t\t\t\t\t\t\t\t\t\tlibraryID: change.libraryID,\n\t\t\t\t\t\t\t\t\t\tvariationImageUrlMap: change.variationImageUrlMap,\n\t\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: modelWithScreenshots,\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.SLICE_INSERT,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"MODIFIED\": {\n\t\t\t\t\t\t\t\tconst { model } = await this.slices.readSlice({\n\t\t\t\t\t\t\t\t\tlibraryID: change.libraryID,\n\t\t\t\t\t\t\t\t\tsliceID: change.id,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (!model) {\n\t\t\t\t\t\t\t\t\tthrow Error(`Could not find model ${change.id}`);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst modelWithScreenshots =\n\t\t\t\t\t\t\t\t\tawait this.slices.updateSliceModelScreenshotsInPlace({\n\t\t\t\t\t\t\t\t\t\tlibraryID: change.libraryID,\n\t\t\t\t\t\t\t\t\t\tvariationImageUrlMap: change.variationImageUrlMap,\n\t\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: modelWithScreenshots,\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.SLICE_UPDATE,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"DELETED\":\n\t\t\t\t\t\t\t\tawait this.screenshots.deleteScreenshotFolder({\n\t\t\t\t\t\t\t\t\tsliceID: change.id,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: { id: change.id },\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.SLICE_DELETE,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tswitch (change.status) {\n\t\t\t\t\t\t\tcase \"NEW\": {\n\t\t\t\t\t\t\t\tconst { model } = await this.customTypes.readCustomType({\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!model) {\n\t\t\t\t\t\t\t\t\tthrow Error(`Could not find model ${change.id}`);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.CUSTOM_TYPE_INSERT,\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: model,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"MODIFIED\": {\n\t\t\t\t\t\t\t\tconst { model } = await this.customTypes.readCustomType({\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!model) {\n\t\t\t\t\t\t\t\t\tthrow Error(`Could not find model ${change.id}`);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.CUSTOM_TYPE_UPDATE,\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: model,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"DELETED\":\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: { id: change.id },\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.CUSTOM_TYPE_DELETE,\n\t\t\t\t\t\t\t\t};\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// Compute the POST body\n\t\t\tconst requestBody: PushBody = {\n\t\t\t\tconfirmDeleteDocuments: args.confirmDeleteDocuments,\n\t\t\t\tchanges: allChanges,\n\t\t\t};\n\n\t\t\tconst repositoryName = await this.project.getResolvedRepositoryName();\n\n\t\t\tconst response = await this._fetch({\n\t\t\t\turl: new URL(\"./push\", API_ENDPOINTS.SliceMachineV1),\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: requestBody,\n\t\t\t\trepository: repositoryName,\n\t\t\t});\n\n\t\t\tswitch (response.status) {\n\t\t\t\tcase 202:\n\t\t\t\t\treturn this._decodeLimitOrThrow(\n\t\t\t\t\t\tawait response.json(),\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\tPushChangesLimitType.SOFT,\n\t\t\t\t\t);\n\t\t\t\tcase 204:\n\t\t\t\t\treturn null;\n\t\t\t\tcase 401:\n\t\t\t\t\tthrow new UnauthenticatedError();\n\t\t\t\tcase 403:\n\t\t\t\t\treturn this._decodeLimitOrThrow(\n\t\t\t\t\t\tawait response.json(),\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\tPushChangesLimitType.HARD,\n\t\t\t\t\t);\n\t\t\t\tcase 400:\n\t\t\t\t\tconst text = await response.text();\n\t\t\t\t\tthrow new Error(text);\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected status code ${response.status}`, {\n\t\t\t\t\t\tcause: await response.text(),\n\t\t\t\t\t});\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(\"An error happened while pushing your changes\");\n\t\t\tconsole.error(err);\n\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tasync fetchEnvironments(\n\t\targs?: PrismicRepositoryManagerFetchEnvironmentsArgs,\n\t): Promise<PrismicRepositoryManagerFetchEnvironmentsReturnType> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(`./environments`, API_ENDPOINTS.SliceMachineV1);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\n\t\tconst res = await this._fetch({ url });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\n\t\t\tconst { value, error } = decode(\n\t\t\t\tt.union([\n\t\t\t\t\tt.type({\n\t\t\t\t\t\tresults: t.array(Environment),\n\t\t\t\t\t}),\n\t\t\t\t\tt.type({\n\t\t\t\t\t\terror: t.literal(\"invalid_token\"),\n\t\t\t\t\t}),\n\t\t\t\t]),\n\t\t\t\tjson,\n\t\t\t);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t`Failed to decode environments: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\"results\" in value) {\n\t\t\t\tlet environments = value.results;\n\n\t\t\t\tif (!args?.includeAll) {\n\t\t\t\t\tconst profile = await this.user.getProfile();\n\n\t\t\t\t\tenvironments = environments.filter((environment) =>\n\t\t\t\t\t\tenvironment.users.some((user) => user.id === profile.shortId),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn { environments: sortEnvironments(environments) };\n\t\t\t}\n\t\t}\n\n\t\tswitch (res.status) {\n\t\t\tcase 400:\n\t\t\tcase 401:\n\t\t\t\tthrow new UnauthenticatedError();\n\t\t\tcase 403:\n\t\t\t\tthrow new UnauthorizedError();\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Failed to fetch environments.\");\n\t\t}\n\t}\n\n\tasync fetchOnboarding(): Promise<OnboardingState> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(\"./onboarding\", API_ENDPOINTS.RepositoryService);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\t\tconst res = await this._fetch({ url });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value, error } = decode(OnboardingState, json);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t`Failed to decode onboarding: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\tswitch (res.status) {\n\t\t\tcase 400:\n\t\t\tcase 401:\n\t\t\t\tthrow new UnauthenticatedError();\n\t\t\tcase 403:\n\t\t\t\tthrow new UnauthorizedError();\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Failed to fetch onboarding.\");\n\t\t}\n\t}\n\n\tasync toggleOnboardingStep(\n\t\tstepId: string,\n\t): Promise<{ completedSteps: string[] }> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(\n\t\t\t`./onboarding/${stepId}/toggle`,\n\t\t\tAPI_ENDPOINTS.RepositoryService,\n\t\t);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\t\tconst res = await this._fetch({ url, method: \"PATCH\" });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value, error } = decode(\n\t\t\t\tz.object({ completedSteps: z.array(z.string()) }),\n\t\t\t\tjson,\n\t\t\t);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t`Failed to decode onboarding step toggle: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\tswitch (res.status) {\n\t\t\tcase 400:\n\t\t\tcase 401:\n\t\t\t\tthrow new UnauthenticatedError();\n\t\t\tcase 403:\n\t\t\t\tthrow new UnauthorizedError();\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Failed to toggle onboarding step.\");\n\t\t}\n\t}\n\n\tasync completeOnboardingStep(\n\t\t...stepIds: string[]\n\t): Promise<{ completedSteps: string[] }> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst currentState = await this.fetchOnboarding();\n\t\tconst incompleteSteps = stepIds.filter(\n\t\t\t(stepId) => !currentState.completedSteps.includes(stepId),\n\t\t);\n\n\t\tif (incompleteSteps.length > 0) {\n\t\t\t// TODO: Refactor when the API accepts multiple steps (DT-2389)\n\t\t\tfor await (const stepId of incompleteSteps) {\n\t\t\t\tconst url = new URL(\n\t\t\t\t\t`./onboarding/${stepId}/toggle`,\n\t\t\t\t\tAPI_ENDPOINTS.RepositoryService,\n\t\t\t\t);\n\t\t\t\turl.searchParams.set(\"repository\", repositoryName);\n\t\t\t\tconst res = await this._fetch({ url, method: \"PATCH\" });\n\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tconst json = await res.json();\n\t\t\t\t\tconst { value, error } = decode(\n\t\t\t\t\t\tz.object({ completedSteps: z.array(z.string()) }),\n\t\t\t\t\t\tjson,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t\t\t`Failed to decode onboarding step complete response: ${error.errors.join(\n\t\t\t\t\t\t\t\t\", \",\n\t\t\t\t\t\t\t)}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tcurrentState.completedSteps = value.completedSteps;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (res.status) {\n\t\t\t\t\tcase 400:\n\t\t\t\t\tcase 401:\n\t\t\t\t\t\tthrow new UnauthenticatedError();\n\t\t\t\t\tcase 403:\n\t\t\t\t\t\tthrow new UnauthorizedError();\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error(\"Failed to complete onboarding step.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { completedSteps: currentState.completedSteps };\n\t}\n\n\tasync toggleOnboarding(): Promise<{ isDismissed: boolean }> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(\"./onboarding/toggle\", API_ENDPOINTS.RepositoryService);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\t\tconst res = await this._fetch({ url, method: \"PATCH\" });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value, error } = decode(\n\t\t\t\tz.object({ isDismissed: z.boolean() }),\n\t\t\t\tjson,\n\t\t\t);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t`Failed to decode onboarding toggle: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\tswitch (res.status) {\n\t\t\tcase 400:\n\t\t\tcase 401:\n\t\t\t\tthrow new UnauthenticatedError();\n\t\t\tcase 403:\n\t\t\t\tthrow new UnauthorizedError();\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Failed to toggle onboarding guide.\");\n\t\t}\n\t}\n\n\tasync setDefaultMasterLocale(): Promise<void> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(\"./repository/locales\", API_ENDPOINTS.LocaleService);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tmethod: \"POST\",\n\t\t\tbody: {\n\t\t\t\tid: \"en-us\",\n\t\t\t\tisMaster: true,\n\t\t\t},\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tswitch (res.status) {\n\t\t\t\tcase 400:\n\t\t\t\tcase 401:\n\t\t\t\t\tthrow new UnauthenticatedError();\n\t\t\t\tcase 403:\n\t\t\t\t\tthrow new UnauthorizedError();\n\t\t\t\tdefault:\n\t\t\t\t\tconst text = await res.text();\n\t\t\t\t\tthrow new Error(\"Failed to set main content language.\", {\n\t\t\t\t\t\tcause: text,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _decodeLimitOrThrow(\n\t\tpotentialLimit: unknown,\n\t\tstatusCode: number,\n\t\tlimitType: PushChangesLimitType,\n\t): PushChangesLimit | null {\n\t\treturn fold<t.Errors, PushChangesRawLimit, PushChangesLimit | null>(\n\t\t\t() => {\n\t\t\t\tconst error: ClientError = {\n\t\t\t\t\tstatus: statusCode,\n\t\t\t\t\tmessage: `Unable to parse raw limit from ${JSON.stringify(\n\t\t\t\t\t\tpotentialLimit,\n\t\t\t\t\t)}`,\n\t\t\t\t};\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t\t(rawLimit: PushChangesRawLimit) => {\n\t\t\t\tconst limit = { ...rawLimit, type: limitType };\n\n\t\t\t\treturn limit;\n\t\t\t},\n\t\t)(PushChangesRawLimit.decode(potentialLimit));\n\t}\n\n\tprivate async _fetch(args: {\n\t\turl: URL;\n\t\tmethod?: \"GET\" | \"POST\" | \"PATCH\";\n\t\tbody?: unknown;\n\t\tuserAgent?: PrismicRepositoryUserAgents;\n\t\trepository?: string;\n\t\tskipAuthentication?: boolean;\n\t}): Promise<Response> {\n\t\tlet cookies;\n\t\ttry {\n\t\t\tcookies = await this.user.getAuthenticationCookies();\n\t\t} catch (e) {\n\t\t\tif (!args.skipAuthentication) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\tconst extraHeaders: Record<string, string> = {};\n\n\t\tif (args.body) {\n\t\t\textraHeaders[\"Content-Type\"] = \"application/json\";\n\t\t}\n\n\t\tif (args.repository) {\n\t\t\textraHeaders.repository = args.repository;\n\t\t}\n\n\t\treturn await fetch(args.url.toString(), {\n\t\t\tmethod: args.method,\n\t\t\tbody: args.body ? JSON.stringify(args.body) : undefined,\n\t\t\theaders: {\n\t\t\t\t// Some endpoints rely on the authorization header...\n\n\t\t\t\t...(cookies !== undefined\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tAuthorization: `Bearer ${cookies[\"prismic-auth\"]}`,\n\t\t\t\t\t\t\tCookie: serializeCookies(cookies),\n\t\t\t\t\t }\n\t\t\t\t\t: {}),\n\t\t\t\t\"User-Agent\": args.userAgent || SLICE_MACHINE_USER_AGENT,\n\t\t\t\t...extraHeaders,\n\t\t\t},\n\t\t});\n\t}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PrismicRepositoryManager.js","sources":["../../../../src/managers/prismicRepository/PrismicRepositoryManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport { z } from \"zod\";\nimport fetch, { Response } from \"../../lib/fetch\";\nimport { fold } from \"fp-ts/Either\";\n\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decode } from \"../../lib/decode\";\nimport { serializeCookies } from \"../../lib/serializeCookies\";\n\nimport { SLICE_MACHINE_USER_AGENT } from \"../../constants/SLICE_MACHINE_USER_AGENT\";\nimport { API_ENDPOINTS } from \"../../constants/API_ENDPOINTS\";\nimport { REPOSITORY_NAME_VALIDATION } from \"../../constants/REPOSITORY_NAME_VALIDATION\";\n\nimport {\n\tUnauthenticatedError,\n\tUnauthorizedError,\n\tUnexpectedDataError,\n} from \"../../errors\";\n\nimport { BaseManager } from \"../BaseManager\";\n\nimport {\n\tAllChangeTypes,\n\tPushBody,\n\tChangeTypes,\n\tClientError,\n\tPushChangesLimit,\n\tPushChangesLimitType,\n\tPrismicRepository,\n\tPrismicRepositoryRole,\n\tPrismicRepositoryUserAgent,\n\tPrismicRepositoryUserAgents,\n\tPushChangesRawLimit,\n\tTransactionalMergeArgs,\n\tTransactionalMergeReturnType,\n\tFrameworkWroomTelemetryID,\n\tStarterId,\n\tEnvironment,\n\tOnboardingState,\n} from \"./types\";\nimport { sortEnvironments } from \"./sortEnvironments\";\n\nconst DEFAULT_REPOSITORY_SETTINGS = {\n\tplan: \"personal\",\n\tisAnnual: \"false\",\n\trole: \"developer\",\n};\n\ntype PrismicRepositoryManagerCheckExistsArgs = {\n\tdomain: string;\n};\n\ntype PrismicRepositoryManagerCreateArgs = {\n\tdomain: string;\n\tframework: FrameworkWroomTelemetryID;\n\tstarterId?: StarterId;\n};\n\ntype PrismicRepositoryManagerDeleteArgs = {\n\tdomain: string;\n\tpassword: string;\n};\n\ntype PrismicRepositoryManagerPushDocumentsArgs = {\n\tdomain: string;\n\tsignature: string;\n\tdocuments: Record<string, unknown>; // TODO: Type unknown if possible(?)\n};\n\ntype PrismicRepositoryManagerFetchEnvironmentsArgs = {\n\t/**\n\t * If set to `true`, all environments are returned regardless of the user's\n\t * permission level.\n\t *\n\t * If set to `false`, only environments the user can access are returned.\n\t *\n\t * @defaultValue `false`\n\t */\n\tincludeAll?: boolean;\n};\n\ntype PrismicRepositoryManagerFetchEnvironmentsReturnType = {\n\tenvironments?: Environment[];\n};\n\nexport class PrismicRepositoryManager extends BaseManager {\n\t// TODO: Add methods for repository-specific actions. E.g. creating a\n\t// new repository.\n\n\tasync readAll(): Promise<PrismicRepository[]> {\n\t\tconst url = new URL(\"./repositories\", API_ENDPOINTS.PrismicUser);\n\t\tconst res = await this._fetch({ url });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value: repositories, error } = decode(\n\t\t\t\tt.array(PrismicRepository),\n\t\t\t\tjson,\n\t\t\t);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to decode repositories: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn repositories;\n\t\t} else {\n\t\t\tconst text = await res.text();\n\t\t\tthrow new Error(`Failed to read repositories`, { cause: text });\n\t\t}\n\t}\n\n\t// Should this be in manager? It's one of the few sync method\n\t//\n\t// Reply from Angelo 2022-12-22: I think it should be in manager\n\t// because we shouldn't be exporting root-level utilities from this\n\t// package. If we want to make it more inline with the other methods,\n\t// we could simplify the API by changing its signature to the\n\t// following:\n\t//\n\t// ```ts\n\t// (repositoryName: string) => Promise<boolean>\n\t// ```\n\t//\n\t// This method would:\n\t//\n\t// 1. Fetch the list of repositories for the user using `readAll()`.\n\t// The list would be cached.\n\t// 2. Determine if the user has write access to the given repository.\n\t//\n\t// This version has the following benefits:\n\t//\n\t// - Does not expect the consumer to supply a repository object; it\n\t// only requires a repository name, which could be sourced from\n\t// anything (incl. the project's `slicemachine.config.json`).\n\t//\n\t// - Similarly, it does not expect the consumer to call `readAll()`\n\t// before calling this method.\n\t//\n\t// - Works for repositories that the user does not have access to. For\n\t// example, I could use it to check if I have access to \"qwerty\",\n\t// even if I am not added as a user. The purpose of the method is\n\t// still valid: do I have write access to a given repository?\n\thasWriteAccess(repository: PrismicRepository): boolean {\n\t\tswitch (repository.role) {\n\t\t\tcase PrismicRepositoryRole.SuperUser:\n\t\t\tcase PrismicRepositoryRole.Owner:\n\t\t\tcase PrismicRepositoryRole.Administrator:\n\t\t\t\treturn true;\n\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync checkExists(\n\t\targs: PrismicRepositoryManagerCheckExistsArgs,\n\t): Promise<boolean> {\n\t\tconst url = new URL(\n\t\t\t`./app/dashboard/repositories/${args.domain}/exists`,\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t);\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tskipAuthentication: true,\n\t\t});\n\n\t\tconst text = await res.text();\n\n\t\tif (res.ok) {\n\t\t\treturn text === \"false\"; // Endpoint returns `false` when repository exists\n\t\t} else {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to check repository existence for domain \\`${args.domain}\\``,\n\t\t\t\t{ cause: text },\n\t\t\t);\n\t\t}\n\t}\n\n\tasync create(args: PrismicRepositoryManagerCreateArgs): Promise<void> {\n\t\tconst url = new URL(\n\t\t\t\"./authentication/newrepository?app=slicemachine\",\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t);\n\n\t\tconst body = {\n\t\t\t...DEFAULT_REPOSITORY_SETTINGS,\n\t\t\tdomain: args.domain,\n\t\t\t// These properties are optional in the API but needed for tracking\n\t\t\tframework: args.framework,\n\t\t\tstarterId: args.starterId,\n\t\t};\n\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tmethod: \"POST\",\n\t\t\tbody,\n\t\t\tuserAgent: PrismicRepositoryUserAgent.SliceMachine, // Custom User Agent is required\n\t\t});\n\t\tconst text = await res.text();\n\n\t\t// Endpoint returns repository name on success, that should be within the validation range\n\t\t// Even when there is an error, we get a 200 success and so we have to check the name thanks to that\n\t\tif (\n\t\t\t!res.ok ||\n\t\t\ttext.length < REPOSITORY_NAME_VALIDATION.Min ||\n\t\t\ttext.length > REPOSITORY_NAME_VALIDATION.Max\n\t\t) {\n\t\t\tthrow new Error(`Failed to create repository \\`${args.domain}\\``, {\n\t\t\t\tcause: text,\n\t\t\t});\n\t\t}\n\t}\n\n\t// TODO: Delete this endpoint? It doesn't seem to be used (I might be wrong). - Angelo\n\tasync delete(args: PrismicRepositoryManagerDeleteArgs): Promise<void> {\n\t\tconst cookies = await this.user.getAuthenticationCookies();\n\n\t\tconst url = new URL(\n\t\t\t`./app/settings/delete?_=${cookies[\"X_XSRF\"]}`, // TODO: Maybe we want to throw early if the token is no available, or get the token another way\n\t\t\tAPI_ENDPOINTS.PrismicWroom,\n\t\t);\n\t\t// Update hostname to include repository domain\n\t\turl.hostname = `${args.domain}.${url.hostname}`;\n\n\t\tconst body = {\n\t\t\tconfirm: args.domain,\n\t\t\tpassword: args.password,\n\t\t};\n\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tmethod: \"POST\",\n\t\t\tbody,\n\t\t\tuserAgent: PrismicRepositoryUserAgent.LegacyZero, // Custom User Agent is required\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tthrow new Error(`Failed to delete repository \\`${args.domain}\\``, {\n\t\t\t\tcause: res,\n\t\t\t});\n\t\t}\n\t}\n\n\tasync pushDocuments(\n\t\targs: PrismicRepositoryManagerPushDocumentsArgs,\n\t): Promise<void> {\n\t\tconst url = new URL(\"./starter/documents\", API_ENDPOINTS.PrismicWroom);\n\t\t// Update hostname to include repository domain\n\t\turl.hostname = `${args.domain}.${url.hostname}`;\n\n\t\tconst body = {\n\t\t\tsignature: args.signature,\n\t\t\tdocuments: JSON.stringify(args.documents),\n\t\t};\n\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tmethod: \"POST\",\n\t\t\tbody,\n\t\t\tuserAgent: PrismicRepositoryUserAgent.LegacyZero, // Custom User Agent is required\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tlet reason: string | null = null;\n\t\t\ttry {\n\t\t\t\treason = await res.text();\n\t\t\t} catch {\n\t\t\t\t// Noop\n\t\t\t}\n\n\t\t\t// Ideally the API should throw a 409 or something like that...\n\t\t\tif (reason === \"Repository should not contain documents\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Failed to push documents to repository \\`${args.domain}\\`, repository is not empty`,\n\t\t\t\t\t{\n\t\t\t\t\t\tcause: reason,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to push documents to repository \\`${args.domain}\\`, ${res.status} ${res.statusText}`,\n\t\t\t\t{\n\t\t\t\t\tcause: reason,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tasync pushChanges(\n\t\targs: TransactionalMergeArgs,\n\t): Promise<TransactionalMergeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tif (!(await this.user.checkIsLoggedIn())) {\n\t\t\tthrow new UnauthenticatedError();\n\t\t}\n\n\t\ttry {\n\t\t\t// Update the AWS ACL before uploading screenshots as it might have expired\n\t\t\tawait this.screenshots.initS3ACL();\n\n\t\t\tconst allChanges: AllChangeTypes[] = await Promise.all(\n\t\t\t\targs.changes.map(async (change) => {\n\t\t\t\t\tif (change.type === \"Slice\") {\n\t\t\t\t\t\tswitch (change.status) {\n\t\t\t\t\t\t\tcase \"NEW\": {\n\t\t\t\t\t\t\t\tconst { model } = await this.slices.readSlice({\n\t\t\t\t\t\t\t\t\tlibraryID: change.libraryID,\n\t\t\t\t\t\t\t\t\tsliceID: change.id,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (!model) {\n\t\t\t\t\t\t\t\t\tthrow Error(`Could not find model ${change.id}`);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst modelWithScreenshots =\n\t\t\t\t\t\t\t\t\tawait this.slices.updateSliceModelScreenshotsInPlace({\n\t\t\t\t\t\t\t\t\t\tlibraryID: change.libraryID,\n\t\t\t\t\t\t\t\t\t\tvariationImageUrlMap: change.variationImageUrlMap,\n\t\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: modelWithScreenshots,\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.SLICE_INSERT,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"MODIFIED\": {\n\t\t\t\t\t\t\t\tconst { model } = await this.slices.readSlice({\n\t\t\t\t\t\t\t\t\tlibraryID: change.libraryID,\n\t\t\t\t\t\t\t\t\tsliceID: change.id,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (!model) {\n\t\t\t\t\t\t\t\t\tthrow Error(`Could not find model ${change.id}`);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst modelWithScreenshots =\n\t\t\t\t\t\t\t\t\tawait this.slices.updateSliceModelScreenshotsInPlace({\n\t\t\t\t\t\t\t\t\t\tlibraryID: change.libraryID,\n\t\t\t\t\t\t\t\t\t\tvariationImageUrlMap: change.variationImageUrlMap,\n\t\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: modelWithScreenshots,\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.SLICE_UPDATE,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"DELETED\":\n\t\t\t\t\t\t\t\tawait this.screenshots.deleteScreenshotFolder({\n\t\t\t\t\t\t\t\t\tsliceID: change.id,\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: { id: change.id },\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.SLICE_DELETE,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tswitch (change.status) {\n\t\t\t\t\t\t\tcase \"NEW\": {\n\t\t\t\t\t\t\t\tconst { model } = await this.customTypes.readCustomType({\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!model) {\n\t\t\t\t\t\t\t\t\tthrow Error(`Could not find model ${change.id}`);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.CUSTOM_TYPE_INSERT,\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: model,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"MODIFIED\": {\n\t\t\t\t\t\t\t\tconst { model } = await this.customTypes.readCustomType({\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!model) {\n\t\t\t\t\t\t\t\t\tthrow Error(`Could not find model ${change.id}`);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.CUSTOM_TYPE_UPDATE,\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: model,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase \"DELETED\":\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tid: change.id,\n\t\t\t\t\t\t\t\t\tpayload: { id: change.id },\n\t\t\t\t\t\t\t\t\ttype: ChangeTypes.CUSTOM_TYPE_DELETE,\n\t\t\t\t\t\t\t\t};\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// Compute the POST body\n\t\t\tconst requestBody: PushBody = {\n\t\t\t\tconfirmDeleteDocuments: args.confirmDeleteDocuments,\n\t\t\t\tchanges: allChanges,\n\t\t\t};\n\n\t\t\tconst repositoryName = await this.project.getResolvedRepositoryName();\n\n\t\t\tconst response = await this._fetch({\n\t\t\t\turl: new URL(\"./push\", API_ENDPOINTS.SliceMachineV1),\n\t\t\t\tmethod: \"POST\",\n\t\t\t\tbody: requestBody,\n\t\t\t\trepository: repositoryName,\n\t\t\t});\n\n\t\t\tswitch (response.status) {\n\t\t\t\tcase 202:\n\t\t\t\t\treturn this._decodeLimitOrThrow(\n\t\t\t\t\t\tawait response.json(),\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\tPushChangesLimitType.SOFT,\n\t\t\t\t\t);\n\t\t\t\tcase 204:\n\t\t\t\t\treturn null;\n\t\t\t\tcase 401:\n\t\t\t\t\tthrow new UnauthenticatedError();\n\t\t\t\tcase 403:\n\t\t\t\t\treturn this._decodeLimitOrThrow(\n\t\t\t\t\t\tawait response.json(),\n\t\t\t\t\t\tresponse.status,\n\t\t\t\t\t\tPushChangesLimitType.HARD,\n\t\t\t\t\t);\n\t\t\t\tcase 400:\n\t\t\t\t\tconst text = await response.text();\n\t\t\t\t\tthrow new Error(text);\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected status code ${response.status}`, {\n\t\t\t\t\t\tcause: await response.text(),\n\t\t\t\t\t});\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(\"An error happened while pushing your changes\");\n\t\t\tconsole.error(err);\n\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tasync fetchEnvironments(\n\t\targs?: PrismicRepositoryManagerFetchEnvironmentsArgs,\n\t): Promise<PrismicRepositoryManagerFetchEnvironmentsReturnType> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(`./environments`, API_ENDPOINTS.SliceMachineV1);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\n\t\tconst res = await this._fetch({ url });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\n\t\t\tconst { value, error } = decode(\n\t\t\t\tt.union([\n\t\t\t\t\tt.type({\n\t\t\t\t\t\tresults: t.array(Environment),\n\t\t\t\t\t}),\n\t\t\t\t\tt.type({\n\t\t\t\t\t\terror: t.literal(\"invalid_token\"),\n\t\t\t\t\t}),\n\t\t\t\t]),\n\t\t\t\tjson,\n\t\t\t);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t`Failed to decode environments: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\"results\" in value) {\n\t\t\t\tlet environments = value.results;\n\n\t\t\t\tif (!args?.includeAll) {\n\t\t\t\t\tconst profile = await this.user.getProfile();\n\n\t\t\t\t\tenvironments = environments.filter((environment) =>\n\t\t\t\t\t\tenvironment.users.some((user) => user.id === profile.shortId),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn { environments: sortEnvironments(environments) };\n\t\t\t}\n\t\t}\n\n\t\tswitch (res.status) {\n\t\t\tcase 400:\n\t\t\tcase 401:\n\t\t\t\tthrow new UnauthenticatedError();\n\t\t\tcase 403:\n\t\t\t\tthrow new UnauthorizedError();\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Failed to fetch environments.\");\n\t\t}\n\t}\n\n\tasync fetchOnboarding(): Promise<OnboardingState> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(\"./onboarding\", API_ENDPOINTS.RepositoryService);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\t\tconst res = await this._fetch({ url });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value, error } = decode(OnboardingState, json);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t`Failed to decode onboarding: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\tswitch (res.status) {\n\t\t\tcase 400:\n\t\t\tcase 401:\n\t\t\t\tthrow new UnauthenticatedError();\n\t\t\tcase 403:\n\t\t\t\tthrow new UnauthorizedError();\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Failed to fetch onboarding.\");\n\t\t}\n\t}\n\n\tasync toggleOnboardingStep(\n\t\tstepId: string,\n\t): Promise<{ completedSteps: string[] }> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(\n\t\t\t`./onboarding/${stepId}/toggle`,\n\t\t\tAPI_ENDPOINTS.RepositoryService,\n\t\t);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\t\tconst res = await this._fetch({ url, method: \"PATCH\" });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value, error } = decode(\n\t\t\t\tz.object({ completedSteps: z.array(z.string()) }),\n\t\t\t\tjson,\n\t\t\t);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t`Failed to decode onboarding step toggle: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\tswitch (res.status) {\n\t\t\tcase 400:\n\t\t\tcase 401:\n\t\t\t\tthrow new UnauthenticatedError();\n\t\t\tcase 403:\n\t\t\t\tthrow new UnauthorizedError();\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Failed to toggle onboarding step.\");\n\t\t}\n\t}\n\n\tasync completeOnboardingStep(\n\t\t...stepIds: string[]\n\t): Promise<{ completedSteps: string[] }> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst currentState = await this.fetchOnboarding();\n\t\tconst incompleteSteps = stepIds.filter(\n\t\t\t(stepId) => !currentState.completedSteps.includes(stepId),\n\t\t);\n\n\t\tif (incompleteSteps.length > 0) {\n\t\t\t// TODO: Refactor when the API accepts multiple steps (DT-2389)\n\t\t\tfor await (const stepId of incompleteSteps) {\n\t\t\t\tconst url = new URL(\n\t\t\t\t\t`./onboarding/${stepId}/toggle`,\n\t\t\t\t\tAPI_ENDPOINTS.RepositoryService,\n\t\t\t\t);\n\t\t\t\turl.searchParams.set(\"repository\", repositoryName);\n\t\t\t\tconst res = await this._fetch({ url, method: \"PATCH\" });\n\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tconst json = await res.json();\n\t\t\t\t\tconst { value, error } = decode(\n\t\t\t\t\t\tz.object({ completedSteps: z.array(z.string()) }),\n\t\t\t\t\t\tjson,\n\t\t\t\t\t);\n\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t\t\t`Failed to decode onboarding step complete response: ${error.errors.join(\n\t\t\t\t\t\t\t\t\", \",\n\t\t\t\t\t\t\t)}`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tcurrentState.completedSteps = value.completedSteps;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch (res.status) {\n\t\t\t\t\tcase 400:\n\t\t\t\t\tcase 401:\n\t\t\t\t\t\tthrow new UnauthenticatedError();\n\t\t\t\t\tcase 403:\n\t\t\t\t\t\tthrow new UnauthorizedError();\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error(\"Failed to complete onboarding step.\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { completedSteps: currentState.completedSteps };\n\t}\n\n\tasync toggleOnboarding(): Promise<{ isDismissed: boolean }> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(\"./onboarding/toggle\", API_ENDPOINTS.RepositoryService);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\t\tconst res = await this._fetch({ url, method: \"PATCH\" });\n\n\t\tif (res.ok) {\n\t\t\tconst json = await res.json();\n\t\t\tconst { value, error } = decode(\n\t\t\t\tz.object({ isDismissed: z.boolean() }),\n\t\t\t\tjson,\n\t\t\t);\n\n\t\t\tif (error) {\n\t\t\t\tthrow new UnexpectedDataError(\n\t\t\t\t\t`Failed to decode onboarding toggle: ${error.errors.join(\", \")}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\n\t\tswitch (res.status) {\n\t\t\tcase 400:\n\t\t\tcase 401:\n\t\t\t\tthrow new UnauthenticatedError();\n\t\t\tcase 403:\n\t\t\t\tthrow new UnauthorizedError();\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"Failed to toggle onboarding guide.\");\n\t\t}\n\t}\n\n\tasync setDefaultMasterLocale(): Promise<void> {\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\n\t\tconst url = new URL(\"./repository/locales\", API_ENDPOINTS.LocaleService);\n\t\turl.searchParams.set(\"repository\", repositoryName);\n\n\t\tconst res = await this._fetch({\n\t\t\turl,\n\t\t\tmethod: \"POST\",\n\t\t\tbody: {\n\t\t\t\tid: \"en-us\",\n\t\t\t\tisMaster: true,\n\t\t\t},\n\t\t});\n\n\t\tif (!res.ok) {\n\t\t\tswitch (res.status) {\n\t\t\t\tcase 400:\n\t\t\t\tcase 401:\n\t\t\t\t\tthrow new UnauthenticatedError();\n\t\t\t\tcase 403:\n\t\t\t\t\tthrow new UnauthorizedError();\n\t\t\t\tdefault:\n\t\t\t\t\tconst text = await res.text();\n\t\t\t\t\tthrow new Error(\"Failed to set main content language.\", {\n\t\t\t\t\t\tcause: text,\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _decodeLimitOrThrow(\n\t\tpotentialLimit: unknown,\n\t\tstatusCode: number,\n\t\tlimitType: PushChangesLimitType,\n\t): PushChangesLimit | null {\n\t\treturn fold<t.Errors, PushChangesRawLimit, PushChangesLimit | null>(\n\t\t\t() => {\n\t\t\t\tconst error: ClientError = {\n\t\t\t\t\tstatus: statusCode,\n\t\t\t\t\tmessage: `Unable to parse raw limit from ${JSON.stringify(\n\t\t\t\t\t\tpotentialLimit,\n\t\t\t\t\t)}`,\n\t\t\t\t};\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t\t(rawLimit: PushChangesRawLimit) => {\n\t\t\t\tconst limit = { ...rawLimit, type: limitType };\n\n\t\t\t\treturn limit;\n\t\t\t},\n\t\t)(PushChangesRawLimit.decode(potentialLimit));\n\t}\n\n\tprivate async _fetch(args: {\n\t\turl: URL;\n\t\tmethod?: \"GET\" | \"POST\" | \"PATCH\";\n\t\tbody?: unknown;\n\t\tuserAgent?: PrismicRepositoryUserAgents;\n\t\trepository?: string;\n\t\tskipAuthentication?: boolean;\n\t}): Promise<Response> {\n\t\tlet cookies;\n\t\ttry {\n\t\t\tcookies = await this.user.getAuthenticationCookies();\n\t\t} catch (e) {\n\t\t\tif (!args.skipAuthentication) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t}\n\n\t\tconst extraHeaders: Record<string, string> = {};\n\n\t\tif (args.body) {\n\t\t\textraHeaders[\"Content-Type\"] = \"application/json\";\n\t\t}\n\n\t\tif (args.repository) {\n\t\t\textraHeaders.repository = args.repository;\n\t\t}\n\n\t\treturn await fetch(args.url.toString(), {\n\t\t\tmethod: args.method,\n\t\t\tbody: args.body ? JSON.stringify(args.body) : undefined,\n\t\t\theaders: {\n\t\t\t\t// Some endpoints rely on the authorization header...\n\n\t\t\t\t...(cookies !== undefined\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tAuthorization: `Bearer ${cookies[\"prismic-auth\"]}`,\n\t\t\t\t\t\t\tCookie: serializeCookies(cookies),\n\t\t\t\t\t }\n\t\t\t\t\t: {}),\n\t\t\t\t\"User-Agent\": args.userAgent || SLICE_MACHINE_USER_AGENT,\n\t\t\t\t...extraHeaders,\n\t\t\t},\n\t\t});\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sortEnvironments.cjs","sources":["../../../../src/managers/prismicRepository/sortEnvironments.ts"],"sourcesContent":["import { Environment } from \"./types\";\n\n/**\n * Sorts a list of environments using the following criteria:\n *\n * - The production environment is always first.\n * - Staging environments are always after production, before development\n * environments, and sorted alphabetically by name.\n * - The development environment is always last.\n *\n * It assumes the list of environments contains one production environment and\n * at most one dev environment.\n *\n * @param environments - The environments to sort.\n *\n * @returns The sorted environments.\n */\nexport function sortEnvironments(environments: Environment[]): Environment[] {\n\treturn [...environments].sort((a, b) => {\n\t\tswitch (a.kind) {\n\t\t\tcase \"prod\": {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcase \"stage\": {\n\t\t\t\tswitch (b.kind) {\n\t\t\t\t\tcase \"prod\": {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"stage\": {\n\t\t\t\t\t\treturn a.name.localeCompare(b.name);\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"dev\":\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"dev\": {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tif (b.kind === undefined) {\n\t\t\t\t\treturn a.name.localeCompare(b.name);\n\t\t\t\t}\n\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t});\n}\n"],"names":[],"mappings":";;AAiBM,SAAU,iBAAiB,cAA2B;AAC3D,SAAO,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC,GAAG,MAAK;AACtC,YAAQ,EAAE,MAAM;AAAA,MACf,KAAK,QAAQ;AACL,eAAA;AAAA,MACR;AAAA,MAEA,KAAK,SAAS;AACb,gBAAQ,EAAE,MAAM;AAAA,UACf,KAAK,QAAQ;AACL,mBAAA;AAAA,UACR;AAAA,UAEA,KAAK,SAAS;AACb,mBAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,UACnC;AAAA,UAEA,KAAK;AAAA,UACL,SAAS;AACD,mBAAA;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,MAEA,KAAK,OAAO;AACJ,eAAA;AAAA,MACR;AAAA,MAEA,SAAS;AACJ,YAAA,EAAE,SAAS,QAAW;AACzB,iBAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,QACnC;AAEO,eAAA;AAAA,MACR;AAAA,IACD;AAAA,EAAA,CACA;AACF;;"}
1
+ {"version":3,"file":"sortEnvironments.cjs","sources":["../../../../src/managers/prismicRepository/sortEnvironments.ts"],"sourcesContent":["import { Environment } from \"./types\";\n\n/**\n * Sorts a list of environments using the following criteria:\n *\n * - The production environment is always first.\n * - Staging environments are always after production, before development\n * environments, and sorted alphabetically by name.\n * - The development environment is always last.\n *\n * It assumes the list of environments contains one production environment and\n * at most one dev environment.\n *\n * @param environments - The environments to sort.\n *\n * @returns The sorted environments.\n */\nexport function sortEnvironments(environments: Environment[]): Environment[] {\n\treturn [...environments].sort((a, b) => {\n\t\tswitch (a.kind) {\n\t\t\tcase \"prod\": {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcase \"stage\": {\n\t\t\t\tswitch (b.kind) {\n\t\t\t\t\tcase \"prod\": {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"stage\": {\n\t\t\t\t\t\treturn a.name.localeCompare(b.name);\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"dev\":\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"dev\": {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tif (b.kind === undefined) {\n\t\t\t\t\treturn a.name.localeCompare(b.name);\n\t\t\t\t}\n\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t});\n}\n"],"names":[],"mappings":";;AAiBM,SAAU,iBAAiB,cAA2B;AAC3D,SAAO,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC,GAAG,MAAK;AACtC,YAAQ,EAAE,MAAA;AAAA,MACT,KAAK,QAAQ;AACZ,eAAO;AAAA,MACR;AAAA,MAEA,KAAK,SAAS;AACb,gBAAQ,EAAE,MAAA;AAAA,UACT,KAAK,QAAQ;AACZ,mBAAO;AAAA,UACR;AAAA,UAEA,KAAK,SAAS;AACb,mBAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,UACnC;AAAA,UAEA,KAAK;AAAA,UACL,SAAS;AACR,mBAAO;AAAA,UACR;AAAA,QAAA;AAAA,MAEF;AAAA,MAEA,KAAK,OAAO;AACX,eAAO;AAAA,MACR;AAAA,MAEA,SAAS;AACR,YAAI,EAAE,SAAS,QAAW;AACzB,iBAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,QACnC;AAEA,eAAO;AAAA,MACR;AAAA,IAAA;AAAA,EAEF,CAAC;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"sortEnvironments.js","sources":["../../../../src/managers/prismicRepository/sortEnvironments.ts"],"sourcesContent":["import { Environment } from \"./types\";\n\n/**\n * Sorts a list of environments using the following criteria:\n *\n * - The production environment is always first.\n * - Staging environments are always after production, before development\n * environments, and sorted alphabetically by name.\n * - The development environment is always last.\n *\n * It assumes the list of environments contains one production environment and\n * at most one dev environment.\n *\n * @param environments - The environments to sort.\n *\n * @returns The sorted environments.\n */\nexport function sortEnvironments(environments: Environment[]): Environment[] {\n\treturn [...environments].sort((a, b) => {\n\t\tswitch (a.kind) {\n\t\t\tcase \"prod\": {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcase \"stage\": {\n\t\t\t\tswitch (b.kind) {\n\t\t\t\t\tcase \"prod\": {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"stage\": {\n\t\t\t\t\t\treturn a.name.localeCompare(b.name);\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"dev\":\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"dev\": {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tif (b.kind === undefined) {\n\t\t\t\t\treturn a.name.localeCompare(b.name);\n\t\t\t\t}\n\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t});\n}\n"],"names":[],"mappings":"AAiBM,SAAU,iBAAiB,cAA2B;AAC3D,SAAO,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC,GAAG,MAAK;AACtC,YAAQ,EAAE,MAAM;AAAA,MACf,KAAK,QAAQ;AACL,eAAA;AAAA,MACR;AAAA,MAEA,KAAK,SAAS;AACb,gBAAQ,EAAE,MAAM;AAAA,UACf,KAAK,QAAQ;AACL,mBAAA;AAAA,UACR;AAAA,UAEA,KAAK,SAAS;AACb,mBAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,UACnC;AAAA,UAEA,KAAK;AAAA,UACL,SAAS;AACD,mBAAA;AAAA,UACR;AAAA,QACD;AAAA,MACD;AAAA,MAEA,KAAK,OAAO;AACJ,eAAA;AAAA,MACR;AAAA,MAEA,SAAS;AACJ,YAAA,EAAE,SAAS,QAAW;AACzB,iBAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,QACnC;AAEO,eAAA;AAAA,MACR;AAAA,IACD;AAAA,EAAA,CACA;AACF;"}
1
+ {"version":3,"file":"sortEnvironments.js","sources":["../../../../src/managers/prismicRepository/sortEnvironments.ts"],"sourcesContent":["import { Environment } from \"./types\";\n\n/**\n * Sorts a list of environments using the following criteria:\n *\n * - The production environment is always first.\n * - Staging environments are always after production, before development\n * environments, and sorted alphabetically by name.\n * - The development environment is always last.\n *\n * It assumes the list of environments contains one production environment and\n * at most one dev environment.\n *\n * @param environments - The environments to sort.\n *\n * @returns The sorted environments.\n */\nexport function sortEnvironments(environments: Environment[]): Environment[] {\n\treturn [...environments].sort((a, b) => {\n\t\tswitch (a.kind) {\n\t\t\tcase \"prod\": {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcase \"stage\": {\n\t\t\t\tswitch (b.kind) {\n\t\t\t\t\tcase \"prod\": {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"stage\": {\n\t\t\t\t\t\treturn a.name.localeCompare(b.name);\n\t\t\t\t\t}\n\n\t\t\t\t\tcase \"dev\":\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcase \"dev\": {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tif (b.kind === undefined) {\n\t\t\t\t\treturn a.name.localeCompare(b.name);\n\t\t\t\t}\n\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\t});\n}\n"],"names":[],"mappings":"AAiBM,SAAU,iBAAiB,cAA2B;AAC3D,SAAO,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC,GAAG,MAAK;AACtC,YAAQ,EAAE,MAAA;AAAA,MACT,KAAK,QAAQ;AACZ,eAAO;AAAA,MACR;AAAA,MAEA,KAAK,SAAS;AACb,gBAAQ,EAAE,MAAA;AAAA,UACT,KAAK,QAAQ;AACZ,mBAAO;AAAA,UACR;AAAA,UAEA,KAAK,SAAS;AACb,mBAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,UACnC;AAAA,UAEA,KAAK;AAAA,UACL,SAAS;AACR,mBAAO;AAAA,UACR;AAAA,QAAA;AAAA,MAEF;AAAA,MAEA,KAAK,OAAO;AACX,eAAO;AAAA,MACR;AAAA,MAEA,SAAS;AACR,YAAI,EAAE,SAAS,QAAW;AACzB,iBAAO,EAAE,KAAK,cAAc,EAAE,IAAI;AAAA,QACnC;AAEA,eAAO;AAAA,MACR;AAAA,IAAA;AAAA,EAEF,CAAC;AACF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sources":["../../../../src/managers/prismicRepository/types.ts"],"sourcesContent":["import {\n\tCustomType,\n\tSharedSlice,\n} from \"@prismicio/types-internal/lib/customtypes\";\nimport * as t from \"io-ts\";\nimport { z } from \"zod\";\n\nexport const PrismicRepositoryUserAgent = {\n\tSliceMachine: \"prismic-cli/sm\",\n\tLegacyZero: \"prismic-cli/0\",\n} as const;\nexport type PrismicRepositoryUserAgents =\n\t(typeof PrismicRepositoryUserAgent)[keyof typeof PrismicRepositoryUserAgent];\n\nexport const PrismicRepositoryRole = {\n\tSuperUser: \"SuperUser\",\n\tAdministrator: \"Administrator\",\n\tOwner: \"Owner\",\n\tManager: \"Manager\",\n\tPublisher: \"Publisher\",\n\tWriter: \"Writer\",\n\tReadonly: \"Readonly\",\n} as const;\nexport type PrismicRepositoryRoles =\n\t(typeof PrismicRepositoryRole)[keyof typeof PrismicRepositoryRole];\n\nexport const PrismicRepository = t.type({\n\tdomain: t.string,\n\tname: t.string,\n\trole: t.union([\n\t\tt.keyof(PrismicRepositoryRole),\n\t\tt.record(t.string, t.keyof(PrismicRepositoryRole)),\n\t]),\n});\nexport type PrismicRepository = t.TypeOf<typeof PrismicRepository>;\n\nexport enum ChangeTypes {\n\tSLICE_INSERT = \"SLICE_INSERT\",\n\tSLICE_UPDATE = \"SLICE_UPDATE\",\n\tSLICE_DELETE = \"SLICE_DELETE\",\n\tCUSTOM_TYPE_INSERT = \"CUSTOM_TYPE_INSERT\",\n\tCUSTOM_TYPE_UPDATE = \"CUSTOM_TYPE_UPDATE\",\n\tCUSTOM_TYPE_DELETE = \"CUSTOM_TYPE_DELETE\",\n}\ninterface Change {\n\ttype: ChangeTypes;\n\tid: string;\n\tpayload: Record<string, unknown>;\n}\ninterface DeleteChange extends Change {\n\tpayload: {\n\t\tid: Change[\"id\"];\n\t};\n}\nexport interface SliceInsertChange extends Change {\n\ttype: ChangeTypes.SLICE_INSERT;\n\tpayload: SharedSlice;\n}\nexport interface SliceUpdateChange extends Change {\n\ttype: ChangeTypes.SLICE_UPDATE;\n\tpayload: SharedSlice;\n}\nexport interface SliceDeleteChange extends DeleteChange {\n\ttype: ChangeTypes.SLICE_DELETE;\n}\nexport interface CustomTypeInsertChange extends Change {\n\ttype: ChangeTypes.CUSTOM_TYPE_INSERT;\n\tpayload: CustomType;\n}\nexport interface CustomTypeUpdateChange extends Change {\n\ttype: ChangeTypes.CUSTOM_TYPE_UPDATE;\n\tpayload: CustomType;\n}\nexport interface CustomTypeDeleteChange extends DeleteChange {\n\ttype: ChangeTypes.CUSTOM_TYPE_DELETE;\n}\nexport type AllChangeTypes =\n\t| SliceInsertChange\n\t| SliceUpdateChange\n\t| SliceDeleteChange\n\t| CustomTypeInsertChange\n\t| CustomTypeUpdateChange\n\t| CustomTypeDeleteChange;\nexport interface PushBody {\n\tconfirmDeleteDocuments: boolean;\n\tchanges: AllChangeTypes[];\n}\n\nexport const PushChangesRawLimit = t.type({\n\tdetails: t.type({\n\t\tcustomTypes: t.array(\n\t\t\tt.type({\n\t\t\t\tid: t.string,\n\t\t\t\tnumberOfDocuments: t.number,\n\t\t\t\turl: t.string,\n\t\t\t}),\n\t\t),\n\t}),\n});\nexport type PushChangesRawLimit = t.TypeOf<typeof PushChangesRawLimit>;\nexport enum PushChangesLimitType {\n\tSOFT = \"SOFT\",\n\tHARD = \"HARD\",\n}\nexport type PushChangesLimit = PushChangesRawLimit & {\n\ttype: PushChangesLimitType;\n};\n\nexport interface ClientError {\n\tstatus: number;\n\tmessage: string;\n}\n\ntype ChangeStatus = \"NEW\" | \"MODIFIED\" | \"DELETED\";\n\ntype CustomTypeChange = {\n\tid: string;\n\ttype: \"CustomType\";\n\tstatus: ChangeStatus;\n};\n\ntype SliceChange = {\n\tid: string;\n\ttype: \"Slice\";\n\tstatus: ChangeStatus;\n\tlibraryID: string;\n\t/**\n\t * A map of variation IDs to remote screenshot URLs. These URLs are used to\n\t * detect if a screenshot has changed when comparing with local ones and to\n\t * push slices with the current screenshot. If a matching screenshot is not\n\t * found in this map, the current local screenshot is uploaded again.\n\t */\n\tvariationImageUrlMap: Record<string, string>;\n};\n\nexport type TransactionalMergeArgs = {\n\tconfirmDeleteDocuments: boolean;\n\tchanges: (CustomTypeChange | SliceChange)[];\n};\n\nexport type TransactionalMergeReturnType = PushChangesLimit | null;\n\n/**\n * Framework id sent to Segment from wroom. Property used for the \"framework\"\n * and \"hasSlicemachine\" properties.\n *\n * Values from:\n * https://github.com/prismicio/wroom/blob/65d4f53fd46df7d366d80e7ba9c965339ac7369d/subprojects/common/app/models/Framework.scala#LL20C6-L20C6\n */\nexport type FrameworkWroomTelemetryID = \"next\" | \"nuxt\" | \"sveltekit\" | \"other\";\n\n/**\n * Starter id sent to Segment from wroom.Property used for the \"starter\"\n * properties.\n *\n * Values from:\n * https://github.com/prismicio/wroom/blob/65d4f53fd46df7d366d80e7ba9c965339ac7369d/conf/application.conf#L938\n */\nexport type StarterId =\n\t| \"next_multi_page\"\n\t| \"next_blog\"\n\t| \"next_multi_lang\"\n\t| \"nuxt_multi_page\"\n\t| \"nuxt_blog\"\n\t| \"nuxt_multi_lang\";\n\nexport const Environment = t.type({\n\tkind: t.union([t.literal(\"prod\"), t.literal(\"stage\"), t.literal(\"dev\")]),\n\tname: t.string,\n\tdomain: t.string,\n\tusers: t.array(\n\t\tt.type({\n\t\t\tid: t.string,\n\t\t}),\n\t),\n});\nexport type Environment = t.TypeOf<typeof Environment>;\n\nexport const supportedSliceMachineFrameworks = [\n\t\"next\",\n\t\"nuxt\",\n\t\"sveltekit\",\n] as const;\n\ntype SupportedFramework = (typeof supportedSliceMachineFrameworks)[number];\n\nfunction isSupportedFramework(value: string): value is SupportedFramework {\n\treturn supportedSliceMachineFrameworks.includes(value as SupportedFramework);\n}\n\nexport const repositoryFramework = z.preprocess(\n\t(value) => {\n\t\t// NOTE: we persist a lot of different frameworks in the DB, but only the SM supported are relevant to us\n\t\t// Any other framework is treated like \"other\"\n\t\tif (typeof value === \"string\" && isSupportedFramework(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn \"other\";\n\t},\n\tz.enum([...supportedSliceMachineFrameworks, \"other\"]),\n);\n\nexport type RepositoryFramework = z.TypeOf<typeof repositoryFramework>;\n\nexport const OnboardingState = z.object({\n\tcompletedSteps: z.array(z.string()),\n\tisDismissed: z.boolean(),\n\tcontext: z.object({\n\t\tframework: repositoryFramework,\n\t\tstarterId: z.string().nullable(),\n\t}),\n});\nexport type OnboardingState = z.infer<typeof OnboardingState>;\n"],"names":["t","ChangeTypes","PushChangesLimitType","z"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,6BAA6B;AAAA,EACzC,cAAc;AAAA,EACd,YAAY;;AAKN,MAAM,wBAAwB;AAAA,EACpC,WAAW;AAAA,EACX,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;;AAKE,MAAA,oBAAoBA,aAAE,KAAK;AAAA,EACvC,QAAQA,aAAE;AAAA,EACV,MAAMA,aAAE;AAAA,EACR,MAAMA,aAAE,MAAM;AAAA,IACbA,aAAE,MAAM,qBAAqB;AAAA,IAC7BA,aAAE,OAAOA,aAAE,QAAQA,aAAE,MAAM,qBAAqB,CAAC;AAAA,EAAA,CACjD;AACD,CAAA;AAGWC,QAAA,cAAA;AAAA,CAAZ,SAAYA,cAAW;AACtBA,eAAA,cAAA,IAAA;AACAA,eAAA,cAAA,IAAA;AACAA,eAAA,cAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACD,GAPYA,wBAAAA,QAAAA,cAOX,CAAA,EAAA;AA6CY,MAAA,sBAAsBD,aAAE,KAAK;AAAA,EACzC,SAASA,aAAE,KAAK;AAAA,IACf,aAAaA,aAAE,MACdA,aAAE,KAAK;AAAA,MACN,IAAIA,aAAE;AAAA,MACN,mBAAmBA,aAAE;AAAA,MACrB,KAAKA,aAAE;AAAA,IAAA,CACP,CAAC;AAAA,EAAA,CAEH;AACD,CAAA;AAEWE,QAAA,uBAAA;AAAA,CAAZ,SAAYA,uBAAoB;AAC/BA,wBAAA,MAAA,IAAA;AACAA,wBAAA,MAAA,IAAA;AACD,GAHYA,iCAAAA,QAAAA,uBAGX,CAAA,EAAA;AA+DY,MAAA,cAAcF,aAAE,KAAK;AAAA,EACjC,MAAMA,aAAE,MAAM,CAACA,aAAE,QAAQ,MAAM,GAAGA,aAAE,QAAQ,OAAO,GAAGA,aAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,EACvE,MAAMA,aAAE;AAAA,EACR,QAAQA,aAAE;AAAA,EACV,OAAOA,aAAE,MACRA,aAAE,KAAK;AAAA,IACN,IAAIA,aAAE;AAAA,EAAA,CACN,CAAC;AAEH,CAAA;AAGM,MAAM,kCAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;;AAKD,SAAS,qBAAqB,OAAa;AACnC,SAAA,gCAAgC,SAAS,KAA2B;AAC5E;AAEO,MAAM,sBAAsBG,MAAA,QAAE,WACpC,CAAC,UAAS;AAGT,MAAI,OAAO,UAAU,YAAY,qBAAqB,KAAK,GAAG;AACtD,WAAA;AAAA,EACR;AAEO,SAAA;AACR,GACAA,MAAAA,QAAE,KAAK,CAAC,GAAG,iCAAiC,OAAO,CAAC,CAAC;AAKzC,MAAA,kBAAkBA,cAAE,OAAO;AAAA,EACvC,gBAAgBA,MAAAA,QAAE,MAAMA,MAAA,QAAE,QAAQ;AAAA,EAClC,aAAaA,cAAE,QAAS;AAAA,EACxB,SAASA,cAAE,OAAO;AAAA,IACjB,WAAW;AAAA,IACX,WAAWA,MAAA,QAAE,OAAQ,EAAC,SAAU;AAAA,EAAA,CAChC;AACD,CAAA;;;;;;;;;"}
1
+ {"version":3,"file":"types.cjs","sources":["../../../../src/managers/prismicRepository/types.ts"],"sourcesContent":["import {\n\tCustomType,\n\tSharedSlice,\n} from \"@prismicio/types-internal/lib/customtypes\";\nimport * as t from \"io-ts\";\nimport { z } from \"zod\";\n\nexport const PrismicRepositoryUserAgent = {\n\tSliceMachine: \"prismic-cli/sm\",\n\tLegacyZero: \"prismic-cli/0\",\n} as const;\nexport type PrismicRepositoryUserAgents =\n\t(typeof PrismicRepositoryUserAgent)[keyof typeof PrismicRepositoryUserAgent];\n\nexport const PrismicRepositoryRole = {\n\tSuperUser: \"SuperUser\",\n\tAdministrator: \"Administrator\",\n\tOwner: \"Owner\",\n\tManager: \"Manager\",\n\tPublisher: \"Publisher\",\n\tWriter: \"Writer\",\n\tReadonly: \"Readonly\",\n} as const;\nexport type PrismicRepositoryRoles =\n\t(typeof PrismicRepositoryRole)[keyof typeof PrismicRepositoryRole];\n\nexport const PrismicRepository = t.type({\n\tdomain: t.string,\n\tname: t.string,\n\trole: t.union([\n\t\tt.keyof(PrismicRepositoryRole),\n\t\tt.record(t.string, t.keyof(PrismicRepositoryRole)),\n\t]),\n});\nexport type PrismicRepository = t.TypeOf<typeof PrismicRepository>;\n\nexport enum ChangeTypes {\n\tSLICE_INSERT = \"SLICE_INSERT\",\n\tSLICE_UPDATE = \"SLICE_UPDATE\",\n\tSLICE_DELETE = \"SLICE_DELETE\",\n\tCUSTOM_TYPE_INSERT = \"CUSTOM_TYPE_INSERT\",\n\tCUSTOM_TYPE_UPDATE = \"CUSTOM_TYPE_UPDATE\",\n\tCUSTOM_TYPE_DELETE = \"CUSTOM_TYPE_DELETE\",\n}\ninterface Change {\n\ttype: ChangeTypes;\n\tid: string;\n\tpayload: Record<string, unknown>;\n}\ninterface DeleteChange extends Change {\n\tpayload: {\n\t\tid: Change[\"id\"];\n\t};\n}\nexport interface SliceInsertChange extends Change {\n\ttype: ChangeTypes.SLICE_INSERT;\n\tpayload: SharedSlice;\n}\nexport interface SliceUpdateChange extends Change {\n\ttype: ChangeTypes.SLICE_UPDATE;\n\tpayload: SharedSlice;\n}\nexport interface SliceDeleteChange extends DeleteChange {\n\ttype: ChangeTypes.SLICE_DELETE;\n}\nexport interface CustomTypeInsertChange extends Change {\n\ttype: ChangeTypes.CUSTOM_TYPE_INSERT;\n\tpayload: CustomType;\n}\nexport interface CustomTypeUpdateChange extends Change {\n\ttype: ChangeTypes.CUSTOM_TYPE_UPDATE;\n\tpayload: CustomType;\n}\nexport interface CustomTypeDeleteChange extends DeleteChange {\n\ttype: ChangeTypes.CUSTOM_TYPE_DELETE;\n}\nexport type AllChangeTypes =\n\t| SliceInsertChange\n\t| SliceUpdateChange\n\t| SliceDeleteChange\n\t| CustomTypeInsertChange\n\t| CustomTypeUpdateChange\n\t| CustomTypeDeleteChange;\nexport interface PushBody {\n\tconfirmDeleteDocuments: boolean;\n\tchanges: AllChangeTypes[];\n}\n\nexport const PushChangesRawLimit = t.type({\n\tdetails: t.type({\n\t\tcustomTypes: t.array(\n\t\t\tt.type({\n\t\t\t\tid: t.string,\n\t\t\t\tnumberOfDocuments: t.number,\n\t\t\t\turl: t.string,\n\t\t\t}),\n\t\t),\n\t}),\n});\nexport type PushChangesRawLimit = t.TypeOf<typeof PushChangesRawLimit>;\nexport enum PushChangesLimitType {\n\tSOFT = \"SOFT\",\n\tHARD = \"HARD\",\n}\nexport type PushChangesLimit = PushChangesRawLimit & {\n\ttype: PushChangesLimitType;\n};\n\nexport interface ClientError {\n\tstatus: number;\n\tmessage: string;\n}\n\ntype ChangeStatus = \"NEW\" | \"MODIFIED\" | \"DELETED\";\n\ntype CustomTypeChange = {\n\tid: string;\n\ttype: \"CustomType\";\n\tstatus: ChangeStatus;\n};\n\ntype SliceChange = {\n\tid: string;\n\ttype: \"Slice\";\n\tstatus: ChangeStatus;\n\tlibraryID: string;\n\t/**\n\t * A map of variation IDs to remote screenshot URLs. These URLs are used to\n\t * detect if a screenshot has changed when comparing with local ones and to\n\t * push slices with the current screenshot. If a matching screenshot is not\n\t * found in this map, the current local screenshot is uploaded again.\n\t */\n\tvariationImageUrlMap: Record<string, string>;\n};\n\nexport type TransactionalMergeArgs = {\n\tconfirmDeleteDocuments: boolean;\n\tchanges: (CustomTypeChange | SliceChange)[];\n};\n\nexport type TransactionalMergeReturnType = PushChangesLimit | null;\n\n/**\n * Framework id sent to Segment from wroom. Property used for the \"framework\"\n * and \"hasSlicemachine\" properties.\n *\n * Values from:\n * https://github.com/prismicio/wroom/blob/65d4f53fd46df7d366d80e7ba9c965339ac7369d/subprojects/common/app/models/Framework.scala#LL20C6-L20C6\n */\nexport type FrameworkWroomTelemetryID = \"next\" | \"nuxt\" | \"sveltekit\" | \"other\";\n\n/**\n * Starter id sent to Segment from wroom.Property used for the \"starter\"\n * properties.\n *\n * Values from:\n * https://github.com/prismicio/wroom/blob/65d4f53fd46df7d366d80e7ba9c965339ac7369d/conf/application.conf#L938\n */\nexport type StarterId =\n\t| \"next_multi_page\"\n\t| \"next_blog\"\n\t| \"next_multi_lang\"\n\t| \"nuxt_multi_page\"\n\t| \"nuxt_blog\"\n\t| \"nuxt_multi_lang\";\n\nexport const Environment = t.type({\n\tkind: t.union([t.literal(\"prod\"), t.literal(\"stage\"), t.literal(\"dev\")]),\n\tname: t.string,\n\tdomain: t.string,\n\tusers: t.array(\n\t\tt.type({\n\t\t\tid: t.string,\n\t\t}),\n\t),\n});\nexport type Environment = t.TypeOf<typeof Environment>;\n\nexport const supportedSliceMachineFrameworks = [\n\t\"next\",\n\t\"nuxt\",\n\t\"sveltekit\",\n] as const;\n\ntype SupportedFramework = (typeof supportedSliceMachineFrameworks)[number];\n\nfunction isSupportedFramework(value: string): value is SupportedFramework {\n\treturn supportedSliceMachineFrameworks.includes(value as SupportedFramework);\n}\n\nexport const repositoryFramework = z.preprocess(\n\t(value) => {\n\t\t// NOTE: we persist a lot of different frameworks in the DB, but only the SM supported are relevant to us\n\t\t// Any other framework is treated like \"other\"\n\t\tif (typeof value === \"string\" && isSupportedFramework(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn \"other\";\n\t},\n\tz.enum([...supportedSliceMachineFrameworks, \"other\"]),\n);\n\nexport type RepositoryFramework = z.TypeOf<typeof repositoryFramework>;\n\nexport const OnboardingState = z.object({\n\tcompletedSteps: z.array(z.string()),\n\tisDismissed: z.boolean(),\n\tcontext: z.object({\n\t\tframework: repositoryFramework,\n\t\tstarterId: z.string().nullable(),\n\t}),\n});\nexport type OnboardingState = z.infer<typeof OnboardingState>;\n"],"names":["t","ChangeTypes","PushChangesLimitType","z"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,6BAA6B;AAAA,EACzC,cAAc;AAAA,EACd,YAAY;;AAKN,MAAM,wBAAwB;AAAA,EACpC,WAAW;AAAA,EACX,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;;AAKJ,MAAM,oBAAoBA,aAAE,KAAK;AAAA,EACvC,QAAQA,aAAE;AAAA,EACV,MAAMA,aAAE;AAAA,EACR,MAAMA,aAAE,MAAM;AAAA,IACbA,aAAE,MAAM,qBAAqB;AAAA,IAC7BA,aAAE,OAAOA,aAAE,QAAQA,aAAE,MAAM,qBAAqB,CAAC;AAAA,EAAA,CACjD;AACD,CAAA;AAGWC,QAAAA,cAAAA;AAAAA,CAAZ,SAAYA,cAAW;AACtBA,eAAA,cAAA,IAAA;AACAA,eAAA,cAAA,IAAA;AACAA,eAAA,cAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACD,GAPYA,QAAAA,gBAAAA,sBAAW,CAAA,EAAA;AAoDhB,MAAM,sBAAsBD,aAAE,KAAK;AAAA,EACzC,SAASA,aAAE,KAAK;AAAA,IACf,aAAaA,aAAE,MACdA,aAAE,KAAK;AAAA,MACN,IAAIA,aAAE;AAAA,MACN,mBAAmBA,aAAE;AAAA,MACrB,KAAKA,aAAE;AAAA,IAAA,CACP,CAAC;AAAA,EAAA,CAEH;AACD,CAAA;AAEWE,QAAAA,uBAAAA;AAAAA,CAAZ,SAAYA,uBAAoB;AAC/BA,wBAAA,MAAA,IAAA;AACAA,wBAAA,MAAA,IAAA;AACD,GAHYA,QAAAA,yBAAAA,+BAAoB,CAAA,EAAA;AAkEzB,MAAM,cAAcF,aAAE,KAAK;AAAA,EACjC,MAAMA,aAAE,MAAM,CAACA,aAAE,QAAQ,MAAM,GAAGA,aAAE,QAAQ,OAAO,GAAGA,aAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,EACvE,MAAMA,aAAE;AAAA,EACR,QAAQA,aAAE;AAAA,EACV,OAAOA,aAAE,MACRA,aAAE,KAAK;AAAA,IACN,IAAIA,aAAE;AAAA,EAAA,CACN,CAAC;AAEH,CAAA;AAGM,MAAM,kCAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;;AAKD,SAAS,qBAAqB,OAAa;AAC1C,SAAO,gCAAgC,SAAS,KAA2B;AAC5E;AAEO,MAAM,sBAAsBG,MAAAA,QAAE,WACpC,CAAC,UAAS;AAGT,MAAI,OAAO,UAAU,YAAY,qBAAqB,KAAK,GAAG;AAC7D,WAAO;AAAA,EACR;AAEA,SAAO;AACR,GACAA,MAAAA,QAAE,KAAK,CAAC,GAAG,iCAAiC,OAAO,CAAC,CAAC;AAK/C,MAAM,kBAAkBA,MAAAA,QAAE,OAAO;AAAA,EACvC,gBAAgBA,MAAAA,QAAE,MAAMA,MAAAA,QAAE,QAAQ;AAAA,EAClC,aAAaA,MAAAA,QAAE,QAAA;AAAA,EACf,SAASA,MAAAA,QAAE,OAAO;AAAA,IACjB,WAAW;AAAA,IACX,WAAWA,MAAAA,QAAE,OAAA,EAAS,SAAA;AAAA,EAAQ,CAC9B;AACD,CAAA;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../src/managers/prismicRepository/types.ts"],"sourcesContent":["import {\n\tCustomType,\n\tSharedSlice,\n} from \"@prismicio/types-internal/lib/customtypes\";\nimport * as t from \"io-ts\";\nimport { z } from \"zod\";\n\nexport const PrismicRepositoryUserAgent = {\n\tSliceMachine: \"prismic-cli/sm\",\n\tLegacyZero: \"prismic-cli/0\",\n} as const;\nexport type PrismicRepositoryUserAgents =\n\t(typeof PrismicRepositoryUserAgent)[keyof typeof PrismicRepositoryUserAgent];\n\nexport const PrismicRepositoryRole = {\n\tSuperUser: \"SuperUser\",\n\tAdministrator: \"Administrator\",\n\tOwner: \"Owner\",\n\tManager: \"Manager\",\n\tPublisher: \"Publisher\",\n\tWriter: \"Writer\",\n\tReadonly: \"Readonly\",\n} as const;\nexport type PrismicRepositoryRoles =\n\t(typeof PrismicRepositoryRole)[keyof typeof PrismicRepositoryRole];\n\nexport const PrismicRepository = t.type({\n\tdomain: t.string,\n\tname: t.string,\n\trole: t.union([\n\t\tt.keyof(PrismicRepositoryRole),\n\t\tt.record(t.string, t.keyof(PrismicRepositoryRole)),\n\t]),\n});\nexport type PrismicRepository = t.TypeOf<typeof PrismicRepository>;\n\nexport enum ChangeTypes {\n\tSLICE_INSERT = \"SLICE_INSERT\",\n\tSLICE_UPDATE = \"SLICE_UPDATE\",\n\tSLICE_DELETE = \"SLICE_DELETE\",\n\tCUSTOM_TYPE_INSERT = \"CUSTOM_TYPE_INSERT\",\n\tCUSTOM_TYPE_UPDATE = \"CUSTOM_TYPE_UPDATE\",\n\tCUSTOM_TYPE_DELETE = \"CUSTOM_TYPE_DELETE\",\n}\ninterface Change {\n\ttype: ChangeTypes;\n\tid: string;\n\tpayload: Record<string, unknown>;\n}\ninterface DeleteChange extends Change {\n\tpayload: {\n\t\tid: Change[\"id\"];\n\t};\n}\nexport interface SliceInsertChange extends Change {\n\ttype: ChangeTypes.SLICE_INSERT;\n\tpayload: SharedSlice;\n}\nexport interface SliceUpdateChange extends Change {\n\ttype: ChangeTypes.SLICE_UPDATE;\n\tpayload: SharedSlice;\n}\nexport interface SliceDeleteChange extends DeleteChange {\n\ttype: ChangeTypes.SLICE_DELETE;\n}\nexport interface CustomTypeInsertChange extends Change {\n\ttype: ChangeTypes.CUSTOM_TYPE_INSERT;\n\tpayload: CustomType;\n}\nexport interface CustomTypeUpdateChange extends Change {\n\ttype: ChangeTypes.CUSTOM_TYPE_UPDATE;\n\tpayload: CustomType;\n}\nexport interface CustomTypeDeleteChange extends DeleteChange {\n\ttype: ChangeTypes.CUSTOM_TYPE_DELETE;\n}\nexport type AllChangeTypes =\n\t| SliceInsertChange\n\t| SliceUpdateChange\n\t| SliceDeleteChange\n\t| CustomTypeInsertChange\n\t| CustomTypeUpdateChange\n\t| CustomTypeDeleteChange;\nexport interface PushBody {\n\tconfirmDeleteDocuments: boolean;\n\tchanges: AllChangeTypes[];\n}\n\nexport const PushChangesRawLimit = t.type({\n\tdetails: t.type({\n\t\tcustomTypes: t.array(\n\t\t\tt.type({\n\t\t\t\tid: t.string,\n\t\t\t\tnumberOfDocuments: t.number,\n\t\t\t\turl: t.string,\n\t\t\t}),\n\t\t),\n\t}),\n});\nexport type PushChangesRawLimit = t.TypeOf<typeof PushChangesRawLimit>;\nexport enum PushChangesLimitType {\n\tSOFT = \"SOFT\",\n\tHARD = \"HARD\",\n}\nexport type PushChangesLimit = PushChangesRawLimit & {\n\ttype: PushChangesLimitType;\n};\n\nexport interface ClientError {\n\tstatus: number;\n\tmessage: string;\n}\n\ntype ChangeStatus = \"NEW\" | \"MODIFIED\" | \"DELETED\";\n\ntype CustomTypeChange = {\n\tid: string;\n\ttype: \"CustomType\";\n\tstatus: ChangeStatus;\n};\n\ntype SliceChange = {\n\tid: string;\n\ttype: \"Slice\";\n\tstatus: ChangeStatus;\n\tlibraryID: string;\n\t/**\n\t * A map of variation IDs to remote screenshot URLs. These URLs are used to\n\t * detect if a screenshot has changed when comparing with local ones and to\n\t * push slices with the current screenshot. If a matching screenshot is not\n\t * found in this map, the current local screenshot is uploaded again.\n\t */\n\tvariationImageUrlMap: Record<string, string>;\n};\n\nexport type TransactionalMergeArgs = {\n\tconfirmDeleteDocuments: boolean;\n\tchanges: (CustomTypeChange | SliceChange)[];\n};\n\nexport type TransactionalMergeReturnType = PushChangesLimit | null;\n\n/**\n * Framework id sent to Segment from wroom. Property used for the \"framework\"\n * and \"hasSlicemachine\" properties.\n *\n * Values from:\n * https://github.com/prismicio/wroom/blob/65d4f53fd46df7d366d80e7ba9c965339ac7369d/subprojects/common/app/models/Framework.scala#LL20C6-L20C6\n */\nexport type FrameworkWroomTelemetryID = \"next\" | \"nuxt\" | \"sveltekit\" | \"other\";\n\n/**\n * Starter id sent to Segment from wroom.Property used for the \"starter\"\n * properties.\n *\n * Values from:\n * https://github.com/prismicio/wroom/blob/65d4f53fd46df7d366d80e7ba9c965339ac7369d/conf/application.conf#L938\n */\nexport type StarterId =\n\t| \"next_multi_page\"\n\t| \"next_blog\"\n\t| \"next_multi_lang\"\n\t| \"nuxt_multi_page\"\n\t| \"nuxt_blog\"\n\t| \"nuxt_multi_lang\";\n\nexport const Environment = t.type({\n\tkind: t.union([t.literal(\"prod\"), t.literal(\"stage\"), t.literal(\"dev\")]),\n\tname: t.string,\n\tdomain: t.string,\n\tusers: t.array(\n\t\tt.type({\n\t\t\tid: t.string,\n\t\t}),\n\t),\n});\nexport type Environment = t.TypeOf<typeof Environment>;\n\nexport const supportedSliceMachineFrameworks = [\n\t\"next\",\n\t\"nuxt\",\n\t\"sveltekit\",\n] as const;\n\ntype SupportedFramework = (typeof supportedSliceMachineFrameworks)[number];\n\nfunction isSupportedFramework(value: string): value is SupportedFramework {\n\treturn supportedSliceMachineFrameworks.includes(value as SupportedFramework);\n}\n\nexport const repositoryFramework = z.preprocess(\n\t(value) => {\n\t\t// NOTE: we persist a lot of different frameworks in the DB, but only the SM supported are relevant to us\n\t\t// Any other framework is treated like \"other\"\n\t\tif (typeof value === \"string\" && isSupportedFramework(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn \"other\";\n\t},\n\tz.enum([...supportedSliceMachineFrameworks, \"other\"]),\n);\n\nexport type RepositoryFramework = z.TypeOf<typeof repositoryFramework>;\n\nexport const OnboardingState = z.object({\n\tcompletedSteps: z.array(z.string()),\n\tisDismissed: z.boolean(),\n\tcontext: z.object({\n\t\tframework: repositoryFramework,\n\t\tstarterId: z.string().nullable(),\n\t}),\n});\nexport type OnboardingState = z.infer<typeof OnboardingState>;\n"],"names":["ChangeTypes","PushChangesLimitType"],"mappings":";;AAOO,MAAM,6BAA6B;AAAA,EACzC,cAAc;AAAA,EACd,YAAY;;AAKN,MAAM,wBAAwB;AAAA,EACpC,WAAW;AAAA,EACX,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;;AAKE,MAAA,oBAAoB,EAAE,KAAK;AAAA,EACvC,QAAQ,EAAE;AAAA,EACV,MAAM,EAAE;AAAA,EACR,MAAM,EAAE,MAAM;AAAA,IACb,EAAE,MAAM,qBAAqB;AAAA,IAC7B,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAAA,EAAA,CACjD;AACD,CAAA;AAGW,IAAA;AAAA,CAAZ,SAAYA,cAAW;AACtBA,eAAA,cAAA,IAAA;AACAA,eAAA,cAAA,IAAA;AACAA,eAAA,cAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACD,GAPY,gBAAA,cAOX,CAAA,EAAA;AA6CY,MAAA,sBAAsB,EAAE,KAAK;AAAA,EACzC,SAAS,EAAE,KAAK;AAAA,IACf,aAAa,EAAE,MACd,EAAE,KAAK;AAAA,MACN,IAAI,EAAE;AAAA,MACN,mBAAmB,EAAE;AAAA,MACrB,KAAK,EAAE;AAAA,IAAA,CACP,CAAC;AAAA,EAAA,CAEH;AACD,CAAA;AAEW,IAAA;AAAA,CAAZ,SAAYC,uBAAoB;AAC/BA,wBAAA,MAAA,IAAA;AACAA,wBAAA,MAAA,IAAA;AACD,GAHY,yBAAA,uBAGX,CAAA,EAAA;AA+DY,MAAA,cAAc,EAAE,KAAK;AAAA,EACjC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,MAAM,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,EACvE,MAAM,EAAE;AAAA,EACR,QAAQ,EAAE;AAAA,EACV,OAAO,EAAE,MACR,EAAE,KAAK;AAAA,IACN,IAAI,EAAE;AAAA,EAAA,CACN,CAAC;AAEH,CAAA;AAGM,MAAM,kCAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;;AAKD,SAAS,qBAAqB,OAAa;AACnC,SAAA,gCAAgC,SAAS,KAA2B;AAC5E;AAEO,MAAM,sBAAsB,EAAE,WACpC,CAAC,UAAS;AAGT,MAAI,OAAO,UAAU,YAAY,qBAAqB,KAAK,GAAG;AACtD,WAAA;AAAA,EACR;AAEO,SAAA;AACR,GACA,EAAE,KAAK,CAAC,GAAG,iCAAiC,OAAO,CAAC,CAAC;AAKzC,MAAA,kBAAkB,EAAE,OAAO;AAAA,EACvC,gBAAgB,EAAE,MAAM,EAAE,QAAQ;AAAA,EAClC,aAAa,EAAE,QAAS;AAAA,EACxB,SAAS,EAAE,OAAO;AAAA,IACjB,WAAW;AAAA,IACX,WAAW,EAAE,OAAQ,EAAC,SAAU;AAAA,EAAA,CAChC;AACD,CAAA;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../src/managers/prismicRepository/types.ts"],"sourcesContent":["import {\n\tCustomType,\n\tSharedSlice,\n} from \"@prismicio/types-internal/lib/customtypes\";\nimport * as t from \"io-ts\";\nimport { z } from \"zod\";\n\nexport const PrismicRepositoryUserAgent = {\n\tSliceMachine: \"prismic-cli/sm\",\n\tLegacyZero: \"prismic-cli/0\",\n} as const;\nexport type PrismicRepositoryUserAgents =\n\t(typeof PrismicRepositoryUserAgent)[keyof typeof PrismicRepositoryUserAgent];\n\nexport const PrismicRepositoryRole = {\n\tSuperUser: \"SuperUser\",\n\tAdministrator: \"Administrator\",\n\tOwner: \"Owner\",\n\tManager: \"Manager\",\n\tPublisher: \"Publisher\",\n\tWriter: \"Writer\",\n\tReadonly: \"Readonly\",\n} as const;\nexport type PrismicRepositoryRoles =\n\t(typeof PrismicRepositoryRole)[keyof typeof PrismicRepositoryRole];\n\nexport const PrismicRepository = t.type({\n\tdomain: t.string,\n\tname: t.string,\n\trole: t.union([\n\t\tt.keyof(PrismicRepositoryRole),\n\t\tt.record(t.string, t.keyof(PrismicRepositoryRole)),\n\t]),\n});\nexport type PrismicRepository = t.TypeOf<typeof PrismicRepository>;\n\nexport enum ChangeTypes {\n\tSLICE_INSERT = \"SLICE_INSERT\",\n\tSLICE_UPDATE = \"SLICE_UPDATE\",\n\tSLICE_DELETE = \"SLICE_DELETE\",\n\tCUSTOM_TYPE_INSERT = \"CUSTOM_TYPE_INSERT\",\n\tCUSTOM_TYPE_UPDATE = \"CUSTOM_TYPE_UPDATE\",\n\tCUSTOM_TYPE_DELETE = \"CUSTOM_TYPE_DELETE\",\n}\ninterface Change {\n\ttype: ChangeTypes;\n\tid: string;\n\tpayload: Record<string, unknown>;\n}\ninterface DeleteChange extends Change {\n\tpayload: {\n\t\tid: Change[\"id\"];\n\t};\n}\nexport interface SliceInsertChange extends Change {\n\ttype: ChangeTypes.SLICE_INSERT;\n\tpayload: SharedSlice;\n}\nexport interface SliceUpdateChange extends Change {\n\ttype: ChangeTypes.SLICE_UPDATE;\n\tpayload: SharedSlice;\n}\nexport interface SliceDeleteChange extends DeleteChange {\n\ttype: ChangeTypes.SLICE_DELETE;\n}\nexport interface CustomTypeInsertChange extends Change {\n\ttype: ChangeTypes.CUSTOM_TYPE_INSERT;\n\tpayload: CustomType;\n}\nexport interface CustomTypeUpdateChange extends Change {\n\ttype: ChangeTypes.CUSTOM_TYPE_UPDATE;\n\tpayload: CustomType;\n}\nexport interface CustomTypeDeleteChange extends DeleteChange {\n\ttype: ChangeTypes.CUSTOM_TYPE_DELETE;\n}\nexport type AllChangeTypes =\n\t| SliceInsertChange\n\t| SliceUpdateChange\n\t| SliceDeleteChange\n\t| CustomTypeInsertChange\n\t| CustomTypeUpdateChange\n\t| CustomTypeDeleteChange;\nexport interface PushBody {\n\tconfirmDeleteDocuments: boolean;\n\tchanges: AllChangeTypes[];\n}\n\nexport const PushChangesRawLimit = t.type({\n\tdetails: t.type({\n\t\tcustomTypes: t.array(\n\t\t\tt.type({\n\t\t\t\tid: t.string,\n\t\t\t\tnumberOfDocuments: t.number,\n\t\t\t\turl: t.string,\n\t\t\t}),\n\t\t),\n\t}),\n});\nexport type PushChangesRawLimit = t.TypeOf<typeof PushChangesRawLimit>;\nexport enum PushChangesLimitType {\n\tSOFT = \"SOFT\",\n\tHARD = \"HARD\",\n}\nexport type PushChangesLimit = PushChangesRawLimit & {\n\ttype: PushChangesLimitType;\n};\n\nexport interface ClientError {\n\tstatus: number;\n\tmessage: string;\n}\n\ntype ChangeStatus = \"NEW\" | \"MODIFIED\" | \"DELETED\";\n\ntype CustomTypeChange = {\n\tid: string;\n\ttype: \"CustomType\";\n\tstatus: ChangeStatus;\n};\n\ntype SliceChange = {\n\tid: string;\n\ttype: \"Slice\";\n\tstatus: ChangeStatus;\n\tlibraryID: string;\n\t/**\n\t * A map of variation IDs to remote screenshot URLs. These URLs are used to\n\t * detect if a screenshot has changed when comparing with local ones and to\n\t * push slices with the current screenshot. If a matching screenshot is not\n\t * found in this map, the current local screenshot is uploaded again.\n\t */\n\tvariationImageUrlMap: Record<string, string>;\n};\n\nexport type TransactionalMergeArgs = {\n\tconfirmDeleteDocuments: boolean;\n\tchanges: (CustomTypeChange | SliceChange)[];\n};\n\nexport type TransactionalMergeReturnType = PushChangesLimit | null;\n\n/**\n * Framework id sent to Segment from wroom. Property used for the \"framework\"\n * and \"hasSlicemachine\" properties.\n *\n * Values from:\n * https://github.com/prismicio/wroom/blob/65d4f53fd46df7d366d80e7ba9c965339ac7369d/subprojects/common/app/models/Framework.scala#LL20C6-L20C6\n */\nexport type FrameworkWroomTelemetryID = \"next\" | \"nuxt\" | \"sveltekit\" | \"other\";\n\n/**\n * Starter id sent to Segment from wroom.Property used for the \"starter\"\n * properties.\n *\n * Values from:\n * https://github.com/prismicio/wroom/blob/65d4f53fd46df7d366d80e7ba9c965339ac7369d/conf/application.conf#L938\n */\nexport type StarterId =\n\t| \"next_multi_page\"\n\t| \"next_blog\"\n\t| \"next_multi_lang\"\n\t| \"nuxt_multi_page\"\n\t| \"nuxt_blog\"\n\t| \"nuxt_multi_lang\";\n\nexport const Environment = t.type({\n\tkind: t.union([t.literal(\"prod\"), t.literal(\"stage\"), t.literal(\"dev\")]),\n\tname: t.string,\n\tdomain: t.string,\n\tusers: t.array(\n\t\tt.type({\n\t\t\tid: t.string,\n\t\t}),\n\t),\n});\nexport type Environment = t.TypeOf<typeof Environment>;\n\nexport const supportedSliceMachineFrameworks = [\n\t\"next\",\n\t\"nuxt\",\n\t\"sveltekit\",\n] as const;\n\ntype SupportedFramework = (typeof supportedSliceMachineFrameworks)[number];\n\nfunction isSupportedFramework(value: string): value is SupportedFramework {\n\treturn supportedSliceMachineFrameworks.includes(value as SupportedFramework);\n}\n\nexport const repositoryFramework = z.preprocess(\n\t(value) => {\n\t\t// NOTE: we persist a lot of different frameworks in the DB, but only the SM supported are relevant to us\n\t\t// Any other framework is treated like \"other\"\n\t\tif (typeof value === \"string\" && isSupportedFramework(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn \"other\";\n\t},\n\tz.enum([...supportedSliceMachineFrameworks, \"other\"]),\n);\n\nexport type RepositoryFramework = z.TypeOf<typeof repositoryFramework>;\n\nexport const OnboardingState = z.object({\n\tcompletedSteps: z.array(z.string()),\n\tisDismissed: z.boolean(),\n\tcontext: z.object({\n\t\tframework: repositoryFramework,\n\t\tstarterId: z.string().nullable(),\n\t}),\n});\nexport type OnboardingState = z.infer<typeof OnboardingState>;\n"],"names":["ChangeTypes","PushChangesLimitType"],"mappings":";;AAOO,MAAM,6BAA6B;AAAA,EACzC,cAAc;AAAA,EACd,YAAY;;AAKN,MAAM,wBAAwB;AAAA,EACpC,WAAW;AAAA,EACX,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;;AAKJ,MAAM,oBAAoB,EAAE,KAAK;AAAA,EACvC,QAAQ,EAAE;AAAA,EACV,MAAM,EAAE;AAAA,EACR,MAAM,EAAE,MAAM;AAAA,IACb,EAAE,MAAM,qBAAqB;AAAA,IAC7B,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAAA,EAAA,CACjD;AACD,CAAA;AAGD,IAAY;AAAA,CAAZ,SAAYA,cAAW;AACtBA,eAAA,cAAA,IAAA;AACAA,eAAA,cAAA,IAAA;AACAA,eAAA,cAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACAA,eAAA,oBAAA,IAAA;AACD,GAPY,gBAAA,cAAW,CAAA,EAAA;AAoDhB,MAAM,sBAAsB,EAAE,KAAK;AAAA,EACzC,SAAS,EAAE,KAAK;AAAA,IACf,aAAa,EAAE,MACd,EAAE,KAAK;AAAA,MACN,IAAI,EAAE;AAAA,MACN,mBAAmB,EAAE;AAAA,MACrB,KAAK,EAAE;AAAA,IAAA,CACP,CAAC;AAAA,EAAA,CAEH;AACD,CAAA;AAED,IAAY;AAAA,CAAZ,SAAYC,uBAAoB;AAC/BA,wBAAA,MAAA,IAAA;AACAA,wBAAA,MAAA,IAAA;AACD,GAHY,yBAAA,uBAAoB,CAAA,EAAA;AAkEzB,MAAM,cAAc,EAAE,KAAK;AAAA,EACjC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,MAAM,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,EACvE,MAAM,EAAE;AAAA,EACR,QAAQ,EAAE;AAAA,EACV,OAAO,EAAE,MACR,EAAE,KAAK;AAAA,IACN,IAAI,EAAE;AAAA,EAAA,CACN,CAAC;AAEH,CAAA;AAGM,MAAM,kCAAkC;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;;AAKD,SAAS,qBAAqB,OAAa;AAC1C,SAAO,gCAAgC,SAAS,KAA2B;AAC5E;AAEO,MAAM,sBAAsB,EAAE,WACpC,CAAC,UAAS;AAGT,MAAI,OAAO,UAAU,YAAY,qBAAqB,KAAK,GAAG;AAC7D,WAAO;AAAA,EACR;AAEA,SAAO;AACR,GACA,EAAE,KAAK,CAAC,GAAG,iCAAiC,OAAO,CAAC,CAAC;AAK/C,MAAM,kBAAkB,EAAE,OAAO;AAAA,EACvC,gBAAgB,EAAE,MAAM,EAAE,QAAQ;AAAA,EAClC,aAAa,EAAE,QAAA;AAAA,EACf,SAAS,EAAE,OAAO;AAAA,IACjB,WAAW;AAAA,IACX,WAAW,EAAE,OAAA,EAAS,SAAA;AAAA,EAAQ,CAC9B;AACD,CAAA;"}
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
7
- };
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
5
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
6
  const fs = require("node:fs/promises");
10
7
  const node_fs = require("node:fs");
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectManager.cjs","sources":["../../../../src/managers/project/ProjectManager.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport { detect as niDetect } from \"@antfu/ni\";\nimport { ExecaChildProcess } from \"execa\";\nimport {\n\tHookError,\n\tCallHookReturnType,\n\tProjectEnvironmentUpdateHook,\n} from \"@slicemachine/plugin-kit\";\nimport * as t from \"io-ts\";\n\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\nimport { decodeSliceMachineConfig } from \"../../lib/decodeSliceMachineConfig\";\nimport { findEnvironment } from \"../../lib/findEnvironment\";\nimport { format } from \"../../lib/format\";\nimport { installDependencies } from \"../../lib/installDependencies\";\nimport { locateFileUpward } from \"../../lib/locateFileUpward\";\nimport { requireResolve } from \"../../lib/requireResolve\";\n\nimport {\n\tPackageManager,\n\tSliceMachineConfig,\n\tOnlyHookErrors,\n} from \"../../types\";\n\nimport {\n\tSliceMachineError,\n\tInternalError,\n\tPluginError,\n\tInvalidActiveEnvironmentError,\n} from \"../../errors\";\n\nimport { SLICE_MACHINE_CONFIG_FILENAME } from \"../../constants/SLICE_MACHINE_CONFIG_FILENAME\";\nimport { TS_CONFIG_FILENAME } from \"../../constants/TS_CONFIG_FILENAME\";\nimport { SLICE_MACHINE_NPM_PACKAGE_NAME } from \"../../constants/SLICE_MACHINE_NPM_PACKAGE_NAME\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { Environment } from \"../prismicRepository/types\";\n\ntype ProjectManagerGetSliceMachineConfigPathArgs = {\n\tignoreCache?: boolean;\n};\n\ntype ProjectManagerGetRootArgs = {\n\tignoreCache?: boolean;\n};\n\ntype ProjectManagerCheckIsTypeScriptArgs = {\n\trootOverride?: string;\n};\n\ntype ProjectManagerWriteSliceMachineConfigArgs = {\n\tconfig: SliceMachineConfig;\n\tpath?: string;\n};\n\ntype ProjectManagerInitProjectArgs = {\n\tlog?: (message: string) => void;\n};\n\ntype ProjectManagerDetectPackageManager = {\n\troot?: string;\n};\n\ntype ProjectManagerInstallDependenciesArgs = {\n\tdependencies: Record<string, string>;\n\tdev?: boolean;\n\tpackageManager?: PackageManager;\n\tlog?: (message: string) => void;\n};\n\ntype ProjectManagerInstallDependenciesReturnType = {\n\texecaProcess: ExecaChildProcess;\n};\n\ntype ProjectManagerReadEnvironmentReturnType = {\n\tenvironment: string | undefined;\n\terrors: (DecodeError | HookError)[];\n};\n\ntype ProjectManagerUpdateEnvironmentArgs = {\n\tenvironment: string | undefined;\n};\n\ntype ProjectManagerFetchActiveEnvironmentReturnType =\n\t| { type: \"ok\"; activeEnvironment: Environment }\n\t| { type: \"error\"; error: InvalidActiveEnvironmentError };\n\nexport class ProjectManager extends BaseManager {\n\tprivate _cachedRoot: string | undefined;\n\tprivate _cachedSliceMachineConfigPath: string | undefined;\n\tprivate _cachedSliceMachineConfig: SliceMachineConfig | undefined;\n\tprivate _cachedEnvironments: Environment[] | undefined;\n\n\tasync getSliceMachineConfigPath(\n\t\targs?: ProjectManagerGetSliceMachineConfigPathArgs,\n\t): Promise<string> {\n\t\tif (this._cachedSliceMachineConfigPath && !args?.ignoreCache) {\n\t\t\treturn this._cachedSliceMachineConfigPath;\n\t\t}\n\n\t\ttry {\n\t\t\tthis._cachedSliceMachineConfigPath = await locateFileUpward(\n\t\t\t\tSLICE_MACHINE_CONFIG_FILENAME,\n\t\t\t\t{ startDir: this.cwd },\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Could not find a ${SLICE_MACHINE_CONFIG_FILENAME} file. Please create a config file at the root of your project.`,\n\t\t\t);\n\t\t}\n\n\t\treturn this._cachedSliceMachineConfigPath;\n\t}\n\n\tasync getRoot(args?: ProjectManagerGetRootArgs): Promise<string> {\n\t\tif (this._cachedRoot && !args?.ignoreCache) {\n\t\t\treturn this._cachedRoot;\n\t\t}\n\n\t\tconst sliceMachineConfigFilePath = await this.getSliceMachineConfigPath({\n\t\t\tignoreCache: args?.ignoreCache,\n\t\t});\n\n\t\tthis._cachedRoot = path.dirname(sliceMachineConfigFilePath);\n\n\t\treturn this._cachedRoot;\n\t}\n\n\tasync suggestRoot(): Promise<string> {\n\t\tconst suggestedRootPackageJSON = await locateFileUpward(\"package.json\", {\n\t\t\tstartDir: this.cwd,\n\t\t});\n\n\t\treturn path.dirname(suggestedRootPackageJSON);\n\t}\n\n\tasync suggestSliceMachineConfigPath(): Promise<string> {\n\t\tconst suggestedRoot = await this.suggestRoot();\n\n\t\treturn path.resolve(suggestedRoot, SLICE_MACHINE_CONFIG_FILENAME);\n\t}\n\n\tasync checkIsTypeScript(\n\t\targs?: ProjectManagerCheckIsTypeScriptArgs,\n\t): Promise<boolean> {\n\t\tconst root = args?.rootOverride || (await this.getRoot());\n\t\tconst rootTSConfigPath = path.resolve(root, TS_CONFIG_FILENAME);\n\n\t\t// We just care if the file exists, we don't need access to it\n\t\treturn existsSync(rootTSConfigPath);\n\t}\n\n\tasync getSliceMachineConfig(): Promise<SliceMachineConfig> {\n\t\tif (this._cachedSliceMachineConfig) {\n\t\t\treturn this._cachedSliceMachineConfig;\n\t\t} else {\n\t\t\treturn await this.loadSliceMachineConfig();\n\t\t}\n\t}\n\n\tasync writeSliceMachineConfig(\n\t\targs: ProjectManagerWriteSliceMachineConfigArgs,\n\t): Promise<void> {\n\t\tconst configFilePath =\n\t\t\targs.path || (await this.getSliceMachineConfigPath());\n\n\t\tconst config = await format(\n\t\t\tJSON.stringify(args.config, null, 2),\n\t\t\tconfigFilePath,\n\t\t);\n\n\t\tawait fs.writeFile(configFilePath, config, \"utf-8\");\n\t\tdelete this._cachedSliceMachineConfig; // Clear config cache\n\t}\n\n\tasync loadSliceMachineConfig(): Promise<SliceMachineConfig> {\n\t\t// TODO: Reload plugins with a fresh plugin runner. Plugins may\n\t\t// have been added or removed.\n\t\tconst configFilePath = await this.getSliceMachineConfigPath();\n\n\t\tlet rawConfig: unknown | undefined;\n\t\ttry {\n\t\t\tconst contents = await fs.readFile(configFilePath, \"utf8\");\n\t\t\trawConfig = JSON.parse(contents);\n\t\t} catch (error) {\n\t\t\tif (error instanceof SyntaxError) {\n\t\t\t\tthrow new SliceMachineError(\n\t\t\t\t\t`Could not parse config file at ${configFilePath}.\\n\\nError Message: ${error.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Noop, more specific error is thrown after\n\t\t}\n\n\t\tif (!rawConfig) {\n\t\t\t// TODO: Write a more friendly and useful message.\n\t\t\tthrow new Error(\"No config found.\");\n\t\t}\n\n\t\tconst { value: sliceMachineConfig, error } =\n\t\t\tdecodeSliceMachineConfig(rawConfig);\n\n\t\tif (error) {\n\t\t\t// TODO: Write a more friendly and useful message.\n\t\t\tthrow new Error(`Invalid config. ${error.errors.join(\", \")}`, {\n\t\t\t\tcause: { rawConfig },\n\t\t\t});\n\t\t}\n\n\t\t// Allow cached config reading using `SliceMachineManager.prototype.getProjectConfig()`.\n\t\tthis._cachedSliceMachineConfig = sliceMachineConfig;\n\n\t\treturn sliceMachineConfig;\n\t}\n\n\tasync locateSliceMachineUIDir(): Promise<string> {\n\t\tconst projectRoot = await this.getRoot();\n\n\t\tconst sliceMachinePackageJSONPath = requireResolve(\n\t\t\t`${SLICE_MACHINE_NPM_PACKAGE_NAME}/package.json`,\n\t\t\tpath.join(projectRoot, \"index.js\"),\n\t\t);\n\n\t\treturn path.dirname(sliceMachinePackageJSONPath);\n\t}\n\n\t/**\n\t * Returns the project's repository name (i.e. the production environment). It\n\t * ignores the currently selected environment.\n\t *\n\t * Use this method to retrieve the production environment domain.\n\t *\n\t * @returns The project's repository name.\n\t */\n\tasync getRepositoryName(): Promise<string> {\n\t\tconst sliceMachineConfig = await this.getSliceMachineConfig();\n\n\t\treturn sliceMachineConfig.repositoryName;\n\t}\n\n\t/**\n\t * Returns the currently selected environment domain if set. If an environment\n\t * is not set, it returns the project's repository name (the production\n\t * environment).\n\t *\n\t * Use this method to retrieve the repository name to be sent with Prismic API\n\t * requests.\n\t *\n\t * @returns The resolved repository name.\n\t */\n\tasync getResolvedRepositoryName(): Promise<string> {\n\t\tconst repositoryName = await this.getRepositoryName();\n\n\t\tconst supportsEnvironments = this.project.checkSupportsEnvironments();\n\t\tif (!supportsEnvironments) {\n\t\t\treturn repositoryName;\n\t\t}\n\n\t\tconst { environment } = await this.project.readEnvironment();\n\n\t\treturn environment ?? repositoryName;\n\t}\n\n\tasync getAdapterName(): Promise<string> {\n\t\tconst sliceMachineConfig = await this.getSliceMachineConfig();\n\t\tconst adapterName =\n\t\t\ttypeof sliceMachineConfig.adapter === \"string\"\n\t\t\t\t? sliceMachineConfig.adapter\n\t\t\t\t: sliceMachineConfig.adapter.resolve;\n\n\t\treturn adapterName;\n\t}\n\n\tasync locateAdapterDir(): Promise<string> {\n\t\tconst projectRoot = await this.getRoot();\n\t\tconst adapterName = await this.getAdapterName();\n\t\tconst adapterPackageJSONPath = requireResolve(\n\t\t\t`${adapterName}/package.json`,\n\t\t\tpath.join(projectRoot, \"index.js\"),\n\t\t);\n\n\t\treturn path.dirname(adapterPackageJSONPath);\n\t}\n\n\tasync initProject(args?: ProjectManagerInitProjectArgs): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\t// eslint-disable-next-line no-console\n\t\tconst log = args?.log || console.log.bind(this);\n\n\t\tconst { errors } = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:init\",\n\t\t\t{\n\t\t\t\tlog,\n\t\t\t\tinstallDependencies: async (args) => {\n\t\t\t\t\tconst { execaProcess } = await this.installDependencies({\n\t\t\t\t\t\tdependencies: args.dependencies,\n\t\t\t\t\t\tdev: args.dev,\n\t\t\t\t\t\tlog,\n\t\t\t\t\t});\n\n\t\t\t\t\tawait execaProcess;\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tif (errors.length > 0) {\n\t\t\t// TODO: Provide better error message.\n\t\t\tthrow new SliceMachineError(\n\t\t\t\t`Failed to initialize project: ${errors.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tasync detectPackageManager(\n\t\targs?: ProjectManagerDetectPackageManager,\n\t): Promise<PackageManager> {\n\t\tconst projectRoot = args?.root || (await this.getRoot());\n\n\t\tconst packageManager = await niDetect({\n\t\t\tautoInstall: true,\n\t\t\tcwd: projectRoot,\n\t\t});\n\n\t\treturn packageManager || \"npm\";\n\t}\n\n\tasync installDependencies(\n\t\targs: ProjectManagerInstallDependenciesArgs,\n\t): Promise<ProjectManagerInstallDependenciesReturnType> {\n\t\tconst packageManager =\n\t\t\targs.packageManager || (await this.detectPackageManager());\n\n\t\t// eslint-disable-next-line no-console\n\t\tconst log = args.log || console.log.bind(this);\n\n\t\tconst wrappedLogger = (data: Buffer | string | null) => {\n\t\t\tif (data instanceof Buffer) {\n\t\t\t\tlog(data.toString());\n\t\t\t} else if (typeof data === \"string\") {\n\t\t\t\tlog(data);\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\tconst { execaProcess } = await installDependencies({\n\t\t\t\tpackageManager,\n\t\t\t\tdependencies: args.dependencies,\n\t\t\t\tdev: args.dev,\n\t\t\t});\n\n\t\t\t// Don't clutter console with logs when process is non TTY (CI, etc.)\n\t\t\tif (process.stdout.isTTY || process.env.NODE_ENV === \"test\") {\n\t\t\t\texecaProcess.stdout?.on(\"data\", wrappedLogger);\n\t\t\t}\n\t\t\texecaProcess.stderr?.on(\"data\", wrappedLogger);\n\n\t\t\treturn {\n\t\t\t\texecaProcess,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\t\"shortMessage\" in error &&\n\t\t\t\t\"stderr\" in error\n\t\t\t) {\n\t\t\t\tthrow new InternalError(\"Package installation failed\", {\n\t\t\t\t\tcause: error,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tcheckSupportsEnvironments(): boolean {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\treturn (\n\t\t\tthis.sliceMachinePluginRunner.hooksForType(\"project:environment:read\")\n\t\t\t\t.length > 0 &&\n\t\t\tthis.sliceMachinePluginRunner.hooksForType(\"project:environment:update\")\n\t\t\t\t.length > 0\n\t\t);\n\t}\n\n\tasync readEnvironment(): Promise<ProjectManagerReadEnvironmentReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tawait this._assertAdapterSupportsEnvironments();\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:environment:read\",\n\t\t\tundefined,\n\t\t);\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.type({\n\t\t\t\tenvironment: t.union([t.undefined, t.string]),\n\t\t\t}),\n\t\t\thookResult,\n\t\t);\n\n\t\t// An undefined value is equivalent to the production environment.\n\t\t// We cast to undefined.\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\t\tconst environmentDomain =\n\t\t\tdata[0]?.environment === repositoryName\n\t\t\t\t? undefined\n\t\t\t\t: data[0]?.environment;\n\n\t\treturn {\n\t\t\tenvironment: environmentDomain,\n\t\t\terrors,\n\t\t};\n\t}\n\n\tasync updateEnvironment(\n\t\targs: ProjectManagerUpdateEnvironmentArgs,\n\t): Promise<OnlyHookErrors<CallHookReturnType<ProjectEnvironmentUpdateHook>>> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tawait this._assertAdapterSupportsEnvironments();\n\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\t\tconst environment =\n\t\t\targs.environment === repositoryName ? undefined : args.environment;\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:environment:update\",\n\t\t\t{ environment },\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync fetchActiveEnvironment(): Promise<ProjectManagerFetchActiveEnvironmentReturnType> {\n\t\tconst { environment: activeEnvironmentDomain } =\n\t\t\tawait this.readEnvironment();\n\n\t\t// We can assume an environment cannot change its kind. If the\n\t\t// environment exists in the cached list, we are confident it\n\t\t// will not change.\n\t\tconst cachedActiveEnvironment = findEnvironment(\n\t\t\tactiveEnvironmentDomain,\n\t\t\tthis._cachedEnvironments || [],\n\t\t);\n\t\tif (cachedActiveEnvironment) {\n\t\t\treturn { type: \"ok\", activeEnvironment: cachedActiveEnvironment };\n\t\t}\n\n\t\t// If the environment is not in the cached environments list, we\n\t\t// must fetch a fresh list and set the cache.\n\t\tconst { environments } = await this.prismicRepository.fetchEnvironments();\n\t\t// TODO: Remove the wrapping if statement when\n\t\t// `this.prismicRepository.fetchEnvironments()` is able to throw\n\t\t// normally. The method returns an object with an `error`\n\t\t// property at the time of this writing, which means we need to\n\t\t// check if the `environments` property exists.\n\t\tif (environments) {\n\t\t\tthis._cachedEnvironments = environments;\n\t\t}\n\n\t\tconst activeEnvironment = findEnvironment(\n\t\t\tactiveEnvironmentDomain,\n\t\t\tthis._cachedEnvironments || [],\n\t\t);\n\n\t\tif (!activeEnvironment) {\n\t\t\treturn {\n\t\t\t\ttype: \"error\",\n\t\t\t\terror: new InvalidActiveEnvironmentError(),\n\t\t\t};\n\t\t}\n\n\t\treturn { type: \"ok\", activeEnvironment: activeEnvironment };\n\t}\n\n\tasync detectVersionControlSystem(): Promise<string | \"_unknown\"> {\n\t\ttry {\n\t\t\tconst projectRoot = await this.getRoot();\n\n\t\t\tif (existsSync(path.join(projectRoot, \".git\"))) {\n\t\t\t\treturn \"Git\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \".svn\"))) {\n\t\t\t\treturn \"SVN\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \".hg\"))) {\n\t\t\t\treturn \"Mercurial\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \"CVS\"))) {\n\t\t\t\treturn \"CVS\";\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (import.meta.env.DEV) {\n\t\t\t\tconsole.error(\"Failed to detect Version Control System:\", error);\n\t\t\t}\n\t\t}\n\n\t\treturn \"_unknown\";\n\t}\n\n\tprivate async _assertAdapterSupportsEnvironments(): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst supportsEnvironments = this.checkSupportsEnvironments();\n\n\t\tif (!supportsEnvironments) {\n\t\t\tconst adapterName = await this.project.getAdapterName();\n\n\t\t\tthrow new PluginError(\n\t\t\t\t`${adapterName} does not support environments. Use an adapter that implements the \\`project:environment:read\\` and \\`project:environment:update\\` hooks to use environments.`,\n\t\t\t);\n\t\t}\n\t}\n}\n"],"names":["BaseManager","locateFileUpward","SLICE_MACHINE_CONFIG_FILENAME","path","TS_CONFIG_FILENAME","existsSync","format","fs","error","SliceMachineError","decodeSliceMachineConfig","requireResolve","SLICE_MACHINE_NPM_PACKAGE_NAME","assertPluginsInitialized","errors","args","niDetect","installDependencies","InternalError","decodeHookResult","t","findEnvironment","InvalidActiveEnvironmentError","PluginError"],"mappings":"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"}
1
+ {"version":3,"file":"ProjectManager.cjs","sources":["../../../../src/managers/project/ProjectManager.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport { detect as niDetect } from \"@antfu/ni\";\nimport { ExecaChildProcess } from \"execa\";\nimport {\n\tHookError,\n\tCallHookReturnType,\n\tProjectEnvironmentUpdateHook,\n} from \"@slicemachine/plugin-kit\";\nimport * as t from \"io-ts\";\n\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\nimport { decodeSliceMachineConfig } from \"../../lib/decodeSliceMachineConfig\";\nimport { findEnvironment } from \"../../lib/findEnvironment\";\nimport { format } from \"../../lib/format\";\nimport { installDependencies } from \"../../lib/installDependencies\";\nimport { locateFileUpward } from \"../../lib/locateFileUpward\";\nimport { requireResolve } from \"../../lib/requireResolve\";\n\nimport {\n\tPackageManager,\n\tSliceMachineConfig,\n\tOnlyHookErrors,\n} from \"../../types\";\n\nimport {\n\tSliceMachineError,\n\tInternalError,\n\tPluginError,\n\tInvalidActiveEnvironmentError,\n} from \"../../errors\";\n\nimport { SLICE_MACHINE_CONFIG_FILENAME } from \"../../constants/SLICE_MACHINE_CONFIG_FILENAME\";\nimport { TS_CONFIG_FILENAME } from \"../../constants/TS_CONFIG_FILENAME\";\nimport { SLICE_MACHINE_NPM_PACKAGE_NAME } from \"../../constants/SLICE_MACHINE_NPM_PACKAGE_NAME\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { Environment } from \"../prismicRepository/types\";\n\ntype ProjectManagerGetSliceMachineConfigPathArgs = {\n\tignoreCache?: boolean;\n};\n\ntype ProjectManagerGetRootArgs = {\n\tignoreCache?: boolean;\n};\n\ntype ProjectManagerCheckIsTypeScriptArgs = {\n\trootOverride?: string;\n};\n\ntype ProjectManagerWriteSliceMachineConfigArgs = {\n\tconfig: SliceMachineConfig;\n\tpath?: string;\n};\n\ntype ProjectManagerInitProjectArgs = {\n\tlog?: (message: string) => void;\n};\n\ntype ProjectManagerDetectPackageManager = {\n\troot?: string;\n};\n\ntype ProjectManagerInstallDependenciesArgs = {\n\tdependencies: Record<string, string>;\n\tdev?: boolean;\n\tpackageManager?: PackageManager;\n\tlog?: (message: string) => void;\n};\n\ntype ProjectManagerInstallDependenciesReturnType = {\n\texecaProcess: ExecaChildProcess;\n};\n\ntype ProjectManagerReadEnvironmentReturnType = {\n\tenvironment: string | undefined;\n\terrors: (DecodeError | HookError)[];\n};\n\ntype ProjectManagerUpdateEnvironmentArgs = {\n\tenvironment: string | undefined;\n};\n\ntype ProjectManagerFetchActiveEnvironmentReturnType =\n\t| { type: \"ok\"; activeEnvironment: Environment }\n\t| { type: \"error\"; error: InvalidActiveEnvironmentError };\n\nexport class ProjectManager extends BaseManager {\n\tprivate _cachedRoot: string | undefined;\n\tprivate _cachedSliceMachineConfigPath: string | undefined;\n\tprivate _cachedSliceMachineConfig: SliceMachineConfig | undefined;\n\tprivate _cachedEnvironments: Environment[] | undefined;\n\n\tasync getSliceMachineConfigPath(\n\t\targs?: ProjectManagerGetSliceMachineConfigPathArgs,\n\t): Promise<string> {\n\t\tif (this._cachedSliceMachineConfigPath && !args?.ignoreCache) {\n\t\t\treturn this._cachedSliceMachineConfigPath;\n\t\t}\n\n\t\ttry {\n\t\t\tthis._cachedSliceMachineConfigPath = await locateFileUpward(\n\t\t\t\tSLICE_MACHINE_CONFIG_FILENAME,\n\t\t\t\t{ startDir: this.cwd },\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Could not find a ${SLICE_MACHINE_CONFIG_FILENAME} file. Please create a config file at the root of your project.`,\n\t\t\t);\n\t\t}\n\n\t\treturn this._cachedSliceMachineConfigPath;\n\t}\n\n\tasync getRoot(args?: ProjectManagerGetRootArgs): Promise<string> {\n\t\tif (this._cachedRoot && !args?.ignoreCache) {\n\t\t\treturn this._cachedRoot;\n\t\t}\n\n\t\tconst sliceMachineConfigFilePath = await this.getSliceMachineConfigPath({\n\t\t\tignoreCache: args?.ignoreCache,\n\t\t});\n\n\t\tthis._cachedRoot = path.dirname(sliceMachineConfigFilePath);\n\n\t\treturn this._cachedRoot;\n\t}\n\n\tasync suggestRoot(): Promise<string> {\n\t\tconst suggestedRootPackageJSON = await locateFileUpward(\"package.json\", {\n\t\t\tstartDir: this.cwd,\n\t\t});\n\n\t\treturn path.dirname(suggestedRootPackageJSON);\n\t}\n\n\tasync suggestSliceMachineConfigPath(): Promise<string> {\n\t\tconst suggestedRoot = await this.suggestRoot();\n\n\t\treturn path.resolve(suggestedRoot, SLICE_MACHINE_CONFIG_FILENAME);\n\t}\n\n\tasync checkIsTypeScript(\n\t\targs?: ProjectManagerCheckIsTypeScriptArgs,\n\t): Promise<boolean> {\n\t\tconst root = args?.rootOverride || (await this.getRoot());\n\t\tconst rootTSConfigPath = path.resolve(root, TS_CONFIG_FILENAME);\n\n\t\t// We just care if the file exists, we don't need access to it\n\t\treturn existsSync(rootTSConfigPath);\n\t}\n\n\tasync getSliceMachineConfig(): Promise<SliceMachineConfig> {\n\t\tif (this._cachedSliceMachineConfig) {\n\t\t\treturn this._cachedSliceMachineConfig;\n\t\t} else {\n\t\t\treturn await this.loadSliceMachineConfig();\n\t\t}\n\t}\n\n\tasync writeSliceMachineConfig(\n\t\targs: ProjectManagerWriteSliceMachineConfigArgs,\n\t): Promise<void> {\n\t\tconst configFilePath =\n\t\t\targs.path || (await this.getSliceMachineConfigPath());\n\n\t\tconst config = await format(\n\t\t\tJSON.stringify(args.config, null, 2),\n\t\t\tconfigFilePath,\n\t\t);\n\n\t\tawait fs.writeFile(configFilePath, config, \"utf-8\");\n\t\tdelete this._cachedSliceMachineConfig; // Clear config cache\n\t}\n\n\tasync loadSliceMachineConfig(): Promise<SliceMachineConfig> {\n\t\t// TODO: Reload plugins with a fresh plugin runner. Plugins may\n\t\t// have been added or removed.\n\t\tconst configFilePath = await this.getSliceMachineConfigPath();\n\n\t\tlet rawConfig: unknown | undefined;\n\t\ttry {\n\t\t\tconst contents = await fs.readFile(configFilePath, \"utf8\");\n\t\t\trawConfig = JSON.parse(contents);\n\t\t} catch (error) {\n\t\t\tif (error instanceof SyntaxError) {\n\t\t\t\tthrow new SliceMachineError(\n\t\t\t\t\t`Could not parse config file at ${configFilePath}.\\n\\nError Message: ${error.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Noop, more specific error is thrown after\n\t\t}\n\n\t\tif (!rawConfig) {\n\t\t\t// TODO: Write a more friendly and useful message.\n\t\t\tthrow new Error(\"No config found.\");\n\t\t}\n\n\t\tconst { value: sliceMachineConfig, error } =\n\t\t\tdecodeSliceMachineConfig(rawConfig);\n\n\t\tif (error) {\n\t\t\t// TODO: Write a more friendly and useful message.\n\t\t\tthrow new Error(`Invalid config. ${error.errors.join(\", \")}`, {\n\t\t\t\tcause: { rawConfig },\n\t\t\t});\n\t\t}\n\n\t\t// Allow cached config reading using `SliceMachineManager.prototype.getProjectConfig()`.\n\t\tthis._cachedSliceMachineConfig = sliceMachineConfig;\n\n\t\treturn sliceMachineConfig;\n\t}\n\n\tasync locateSliceMachineUIDir(): Promise<string> {\n\t\tconst projectRoot = await this.getRoot();\n\n\t\tconst sliceMachinePackageJSONPath = requireResolve(\n\t\t\t`${SLICE_MACHINE_NPM_PACKAGE_NAME}/package.json`,\n\t\t\tpath.join(projectRoot, \"index.js\"),\n\t\t);\n\n\t\treturn path.dirname(sliceMachinePackageJSONPath);\n\t}\n\n\t/**\n\t * Returns the project's repository name (i.e. the production environment). It\n\t * ignores the currently selected environment.\n\t *\n\t * Use this method to retrieve the production environment domain.\n\t *\n\t * @returns The project's repository name.\n\t */\n\tasync getRepositoryName(): Promise<string> {\n\t\tconst sliceMachineConfig = await this.getSliceMachineConfig();\n\n\t\treturn sliceMachineConfig.repositoryName;\n\t}\n\n\t/**\n\t * Returns the currently selected environment domain if set. If an environment\n\t * is not set, it returns the project's repository name (the production\n\t * environment).\n\t *\n\t * Use this method to retrieve the repository name to be sent with Prismic API\n\t * requests.\n\t *\n\t * @returns The resolved repository name.\n\t */\n\tasync getResolvedRepositoryName(): Promise<string> {\n\t\tconst repositoryName = await this.getRepositoryName();\n\n\t\tconst supportsEnvironments = this.project.checkSupportsEnvironments();\n\t\tif (!supportsEnvironments) {\n\t\t\treturn repositoryName;\n\t\t}\n\n\t\tconst { environment } = await this.project.readEnvironment();\n\n\t\treturn environment ?? repositoryName;\n\t}\n\n\tasync getAdapterName(): Promise<string> {\n\t\tconst sliceMachineConfig = await this.getSliceMachineConfig();\n\t\tconst adapterName =\n\t\t\ttypeof sliceMachineConfig.adapter === \"string\"\n\t\t\t\t? sliceMachineConfig.adapter\n\t\t\t\t: sliceMachineConfig.adapter.resolve;\n\n\t\treturn adapterName;\n\t}\n\n\tasync locateAdapterDir(): Promise<string> {\n\t\tconst projectRoot = await this.getRoot();\n\t\tconst adapterName = await this.getAdapterName();\n\t\tconst adapterPackageJSONPath = requireResolve(\n\t\t\t`${adapterName}/package.json`,\n\t\t\tpath.join(projectRoot, \"index.js\"),\n\t\t);\n\n\t\treturn path.dirname(adapterPackageJSONPath);\n\t}\n\n\tasync initProject(args?: ProjectManagerInitProjectArgs): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\t// eslint-disable-next-line no-console\n\t\tconst log = args?.log || console.log.bind(this);\n\n\t\tconst { errors } = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:init\",\n\t\t\t{\n\t\t\t\tlog,\n\t\t\t\tinstallDependencies: async (args) => {\n\t\t\t\t\tconst { execaProcess } = await this.installDependencies({\n\t\t\t\t\t\tdependencies: args.dependencies,\n\t\t\t\t\t\tdev: args.dev,\n\t\t\t\t\t\tlog,\n\t\t\t\t\t});\n\n\t\t\t\t\tawait execaProcess;\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tif (errors.length > 0) {\n\t\t\t// TODO: Provide better error message.\n\t\t\tthrow new SliceMachineError(\n\t\t\t\t`Failed to initialize project: ${errors.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tasync detectPackageManager(\n\t\targs?: ProjectManagerDetectPackageManager,\n\t): Promise<PackageManager> {\n\t\tconst projectRoot = args?.root || (await this.getRoot());\n\n\t\tconst packageManager = await niDetect({\n\t\t\tautoInstall: true,\n\t\t\tcwd: projectRoot,\n\t\t});\n\n\t\treturn packageManager || \"npm\";\n\t}\n\n\tasync installDependencies(\n\t\targs: ProjectManagerInstallDependenciesArgs,\n\t): Promise<ProjectManagerInstallDependenciesReturnType> {\n\t\tconst packageManager =\n\t\t\targs.packageManager || (await this.detectPackageManager());\n\n\t\t// eslint-disable-next-line no-console\n\t\tconst log = args.log || console.log.bind(this);\n\n\t\tconst wrappedLogger = (data: Buffer | string | null) => {\n\t\t\tif (data instanceof Buffer) {\n\t\t\t\tlog(data.toString());\n\t\t\t} else if (typeof data === \"string\") {\n\t\t\t\tlog(data);\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\tconst { execaProcess } = await installDependencies({\n\t\t\t\tpackageManager,\n\t\t\t\tdependencies: args.dependencies,\n\t\t\t\tdev: args.dev,\n\t\t\t});\n\n\t\t\t// Don't clutter console with logs when process is non TTY (CI, etc.)\n\t\t\tif (process.stdout.isTTY || process.env.NODE_ENV === \"test\") {\n\t\t\t\texecaProcess.stdout?.on(\"data\", wrappedLogger);\n\t\t\t}\n\t\t\texecaProcess.stderr?.on(\"data\", wrappedLogger);\n\n\t\t\treturn {\n\t\t\t\texecaProcess,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\t\"shortMessage\" in error &&\n\t\t\t\t\"stderr\" in error\n\t\t\t) {\n\t\t\t\tthrow new InternalError(\"Package installation failed\", {\n\t\t\t\t\tcause: error,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tcheckSupportsEnvironments(): boolean {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\treturn (\n\t\t\tthis.sliceMachinePluginRunner.hooksForType(\"project:environment:read\")\n\t\t\t\t.length > 0 &&\n\t\t\tthis.sliceMachinePluginRunner.hooksForType(\"project:environment:update\")\n\t\t\t\t.length > 0\n\t\t);\n\t}\n\n\tasync readEnvironment(): Promise<ProjectManagerReadEnvironmentReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tawait this._assertAdapterSupportsEnvironments();\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:environment:read\",\n\t\t\tundefined,\n\t\t);\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.type({\n\t\t\t\tenvironment: t.union([t.undefined, t.string]),\n\t\t\t}),\n\t\t\thookResult,\n\t\t);\n\n\t\t// An undefined value is equivalent to the production environment.\n\t\t// We cast to undefined.\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\t\tconst environmentDomain =\n\t\t\tdata[0]?.environment === repositoryName\n\t\t\t\t? undefined\n\t\t\t\t: data[0]?.environment;\n\n\t\treturn {\n\t\t\tenvironment: environmentDomain,\n\t\t\terrors,\n\t\t};\n\t}\n\n\tasync updateEnvironment(\n\t\targs: ProjectManagerUpdateEnvironmentArgs,\n\t): Promise<OnlyHookErrors<CallHookReturnType<ProjectEnvironmentUpdateHook>>> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tawait this._assertAdapterSupportsEnvironments();\n\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\t\tconst environment =\n\t\t\targs.environment === repositoryName ? undefined : args.environment;\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:environment:update\",\n\t\t\t{ environment },\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync fetchActiveEnvironment(): Promise<ProjectManagerFetchActiveEnvironmentReturnType> {\n\t\tconst { environment: activeEnvironmentDomain } =\n\t\t\tawait this.readEnvironment();\n\n\t\t// We can assume an environment cannot change its kind. If the\n\t\t// environment exists in the cached list, we are confident it\n\t\t// will not change.\n\t\tconst cachedActiveEnvironment = findEnvironment(\n\t\t\tactiveEnvironmentDomain,\n\t\t\tthis._cachedEnvironments || [],\n\t\t);\n\t\tif (cachedActiveEnvironment) {\n\t\t\treturn { type: \"ok\", activeEnvironment: cachedActiveEnvironment };\n\t\t}\n\n\t\t// If the environment is not in the cached environments list, we\n\t\t// must fetch a fresh list and set the cache.\n\t\tconst { environments } = await this.prismicRepository.fetchEnvironments();\n\t\t// TODO: Remove the wrapping if statement when\n\t\t// `this.prismicRepository.fetchEnvironments()` is able to throw\n\t\t// normally. The method returns an object with an `error`\n\t\t// property at the time of this writing, which means we need to\n\t\t// check if the `environments` property exists.\n\t\tif (environments) {\n\t\t\tthis._cachedEnvironments = environments;\n\t\t}\n\n\t\tconst activeEnvironment = findEnvironment(\n\t\t\tactiveEnvironmentDomain,\n\t\t\tthis._cachedEnvironments || [],\n\t\t);\n\n\t\tif (!activeEnvironment) {\n\t\t\treturn {\n\t\t\t\ttype: \"error\",\n\t\t\t\terror: new InvalidActiveEnvironmentError(),\n\t\t\t};\n\t\t}\n\n\t\treturn { type: \"ok\", activeEnvironment: activeEnvironment };\n\t}\n\n\tasync detectVersionControlSystem(): Promise<string | \"_unknown\"> {\n\t\ttry {\n\t\t\tconst projectRoot = await this.getRoot();\n\n\t\t\tif (existsSync(path.join(projectRoot, \".git\"))) {\n\t\t\t\treturn \"Git\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \".svn\"))) {\n\t\t\t\treturn \"SVN\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \".hg\"))) {\n\t\t\t\treturn \"Mercurial\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \"CVS\"))) {\n\t\t\t\treturn \"CVS\";\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (import.meta.env.DEV) {\n\t\t\t\tconsole.error(\"Failed to detect Version Control System:\", error);\n\t\t\t}\n\t\t}\n\n\t\treturn \"_unknown\";\n\t}\n\n\tprivate async _assertAdapterSupportsEnvironments(): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst supportsEnvironments = this.checkSupportsEnvironments();\n\n\t\tif (!supportsEnvironments) {\n\t\t\tconst adapterName = await this.project.getAdapterName();\n\n\t\t\tthrow new PluginError(\n\t\t\t\t`${adapterName} does not support environments. Use an adapter that implements the \\`project:environment:read\\` and \\`project:environment:update\\` hooks to use environments.`,\n\t\t\t);\n\t\t}\n\t}\n}\n"],"names":["BaseManager","locateFileUpward","SLICE_MACHINE_CONFIG_FILENAME","path","TS_CONFIG_FILENAME","existsSync","format","fs","error","SliceMachineError","decodeSliceMachineConfig","requireResolve","SLICE_MACHINE_NPM_PACKAGE_NAME","assertPluginsInitialized","errors","args","niDetect","installDependencies","InternalError","decodeHookResult","t","findEnvironment","InvalidActiveEnvironmentError","PluginError"],"mappings":"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"}
@@ -1,9 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => {
4
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- return value;
6
- };
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
4
  import * as fs from "node:fs/promises";
8
5
  import { existsSync } from "node:fs";
9
6
  import * as path from "node:path";
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectManager.js","sources":["../../../../src/managers/project/ProjectManager.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport { detect as niDetect } from \"@antfu/ni\";\nimport { ExecaChildProcess } from \"execa\";\nimport {\n\tHookError,\n\tCallHookReturnType,\n\tProjectEnvironmentUpdateHook,\n} from \"@slicemachine/plugin-kit\";\nimport * as t from \"io-ts\";\n\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\nimport { decodeSliceMachineConfig } from \"../../lib/decodeSliceMachineConfig\";\nimport { findEnvironment } from \"../../lib/findEnvironment\";\nimport { format } from \"../../lib/format\";\nimport { installDependencies } from \"../../lib/installDependencies\";\nimport { locateFileUpward } from \"../../lib/locateFileUpward\";\nimport { requireResolve } from \"../../lib/requireResolve\";\n\nimport {\n\tPackageManager,\n\tSliceMachineConfig,\n\tOnlyHookErrors,\n} from \"../../types\";\n\nimport {\n\tSliceMachineError,\n\tInternalError,\n\tPluginError,\n\tInvalidActiveEnvironmentError,\n} from \"../../errors\";\n\nimport { SLICE_MACHINE_CONFIG_FILENAME } from \"../../constants/SLICE_MACHINE_CONFIG_FILENAME\";\nimport { TS_CONFIG_FILENAME } from \"../../constants/TS_CONFIG_FILENAME\";\nimport { SLICE_MACHINE_NPM_PACKAGE_NAME } from \"../../constants/SLICE_MACHINE_NPM_PACKAGE_NAME\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { Environment } from \"../prismicRepository/types\";\n\ntype ProjectManagerGetSliceMachineConfigPathArgs = {\n\tignoreCache?: boolean;\n};\n\ntype ProjectManagerGetRootArgs = {\n\tignoreCache?: boolean;\n};\n\ntype ProjectManagerCheckIsTypeScriptArgs = {\n\trootOverride?: string;\n};\n\ntype ProjectManagerWriteSliceMachineConfigArgs = {\n\tconfig: SliceMachineConfig;\n\tpath?: string;\n};\n\ntype ProjectManagerInitProjectArgs = {\n\tlog?: (message: string) => void;\n};\n\ntype ProjectManagerDetectPackageManager = {\n\troot?: string;\n};\n\ntype ProjectManagerInstallDependenciesArgs = {\n\tdependencies: Record<string, string>;\n\tdev?: boolean;\n\tpackageManager?: PackageManager;\n\tlog?: (message: string) => void;\n};\n\ntype ProjectManagerInstallDependenciesReturnType = {\n\texecaProcess: ExecaChildProcess;\n};\n\ntype ProjectManagerReadEnvironmentReturnType = {\n\tenvironment: string | undefined;\n\terrors: (DecodeError | HookError)[];\n};\n\ntype ProjectManagerUpdateEnvironmentArgs = {\n\tenvironment: string | undefined;\n};\n\ntype ProjectManagerFetchActiveEnvironmentReturnType =\n\t| { type: \"ok\"; activeEnvironment: Environment }\n\t| { type: \"error\"; error: InvalidActiveEnvironmentError };\n\nexport class ProjectManager extends BaseManager {\n\tprivate _cachedRoot: string | undefined;\n\tprivate _cachedSliceMachineConfigPath: string | undefined;\n\tprivate _cachedSliceMachineConfig: SliceMachineConfig | undefined;\n\tprivate _cachedEnvironments: Environment[] | undefined;\n\n\tasync getSliceMachineConfigPath(\n\t\targs?: ProjectManagerGetSliceMachineConfigPathArgs,\n\t): Promise<string> {\n\t\tif (this._cachedSliceMachineConfigPath && !args?.ignoreCache) {\n\t\t\treturn this._cachedSliceMachineConfigPath;\n\t\t}\n\n\t\ttry {\n\t\t\tthis._cachedSliceMachineConfigPath = await locateFileUpward(\n\t\t\t\tSLICE_MACHINE_CONFIG_FILENAME,\n\t\t\t\t{ startDir: this.cwd },\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Could not find a ${SLICE_MACHINE_CONFIG_FILENAME} file. Please create a config file at the root of your project.`,\n\t\t\t);\n\t\t}\n\n\t\treturn this._cachedSliceMachineConfigPath;\n\t}\n\n\tasync getRoot(args?: ProjectManagerGetRootArgs): Promise<string> {\n\t\tif (this._cachedRoot && !args?.ignoreCache) {\n\t\t\treturn this._cachedRoot;\n\t\t}\n\n\t\tconst sliceMachineConfigFilePath = await this.getSliceMachineConfigPath({\n\t\t\tignoreCache: args?.ignoreCache,\n\t\t});\n\n\t\tthis._cachedRoot = path.dirname(sliceMachineConfigFilePath);\n\n\t\treturn this._cachedRoot;\n\t}\n\n\tasync suggestRoot(): Promise<string> {\n\t\tconst suggestedRootPackageJSON = await locateFileUpward(\"package.json\", {\n\t\t\tstartDir: this.cwd,\n\t\t});\n\n\t\treturn path.dirname(suggestedRootPackageJSON);\n\t}\n\n\tasync suggestSliceMachineConfigPath(): Promise<string> {\n\t\tconst suggestedRoot = await this.suggestRoot();\n\n\t\treturn path.resolve(suggestedRoot, SLICE_MACHINE_CONFIG_FILENAME);\n\t}\n\n\tasync checkIsTypeScript(\n\t\targs?: ProjectManagerCheckIsTypeScriptArgs,\n\t): Promise<boolean> {\n\t\tconst root = args?.rootOverride || (await this.getRoot());\n\t\tconst rootTSConfigPath = path.resolve(root, TS_CONFIG_FILENAME);\n\n\t\t// We just care if the file exists, we don't need access to it\n\t\treturn existsSync(rootTSConfigPath);\n\t}\n\n\tasync getSliceMachineConfig(): Promise<SliceMachineConfig> {\n\t\tif (this._cachedSliceMachineConfig) {\n\t\t\treturn this._cachedSliceMachineConfig;\n\t\t} else {\n\t\t\treturn await this.loadSliceMachineConfig();\n\t\t}\n\t}\n\n\tasync writeSliceMachineConfig(\n\t\targs: ProjectManagerWriteSliceMachineConfigArgs,\n\t): Promise<void> {\n\t\tconst configFilePath =\n\t\t\targs.path || (await this.getSliceMachineConfigPath());\n\n\t\tconst config = await format(\n\t\t\tJSON.stringify(args.config, null, 2),\n\t\t\tconfigFilePath,\n\t\t);\n\n\t\tawait fs.writeFile(configFilePath, config, \"utf-8\");\n\t\tdelete this._cachedSliceMachineConfig; // Clear config cache\n\t}\n\n\tasync loadSliceMachineConfig(): Promise<SliceMachineConfig> {\n\t\t// TODO: Reload plugins with a fresh plugin runner. Plugins may\n\t\t// have been added or removed.\n\t\tconst configFilePath = await this.getSliceMachineConfigPath();\n\n\t\tlet rawConfig: unknown | undefined;\n\t\ttry {\n\t\t\tconst contents = await fs.readFile(configFilePath, \"utf8\");\n\t\t\trawConfig = JSON.parse(contents);\n\t\t} catch (error) {\n\t\t\tif (error instanceof SyntaxError) {\n\t\t\t\tthrow new SliceMachineError(\n\t\t\t\t\t`Could not parse config file at ${configFilePath}.\\n\\nError Message: ${error.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Noop, more specific error is thrown after\n\t\t}\n\n\t\tif (!rawConfig) {\n\t\t\t// TODO: Write a more friendly and useful message.\n\t\t\tthrow new Error(\"No config found.\");\n\t\t}\n\n\t\tconst { value: sliceMachineConfig, error } =\n\t\t\tdecodeSliceMachineConfig(rawConfig);\n\n\t\tif (error) {\n\t\t\t// TODO: Write a more friendly and useful message.\n\t\t\tthrow new Error(`Invalid config. ${error.errors.join(\", \")}`, {\n\t\t\t\tcause: { rawConfig },\n\t\t\t});\n\t\t}\n\n\t\t// Allow cached config reading using `SliceMachineManager.prototype.getProjectConfig()`.\n\t\tthis._cachedSliceMachineConfig = sliceMachineConfig;\n\n\t\treturn sliceMachineConfig;\n\t}\n\n\tasync locateSliceMachineUIDir(): Promise<string> {\n\t\tconst projectRoot = await this.getRoot();\n\n\t\tconst sliceMachinePackageJSONPath = requireResolve(\n\t\t\t`${SLICE_MACHINE_NPM_PACKAGE_NAME}/package.json`,\n\t\t\tpath.join(projectRoot, \"index.js\"),\n\t\t);\n\n\t\treturn path.dirname(sliceMachinePackageJSONPath);\n\t}\n\n\t/**\n\t * Returns the project's repository name (i.e. the production environment). It\n\t * ignores the currently selected environment.\n\t *\n\t * Use this method to retrieve the production environment domain.\n\t *\n\t * @returns The project's repository name.\n\t */\n\tasync getRepositoryName(): Promise<string> {\n\t\tconst sliceMachineConfig = await this.getSliceMachineConfig();\n\n\t\treturn sliceMachineConfig.repositoryName;\n\t}\n\n\t/**\n\t * Returns the currently selected environment domain if set. If an environment\n\t * is not set, it returns the project's repository name (the production\n\t * environment).\n\t *\n\t * Use this method to retrieve the repository name to be sent with Prismic API\n\t * requests.\n\t *\n\t * @returns The resolved repository name.\n\t */\n\tasync getResolvedRepositoryName(): Promise<string> {\n\t\tconst repositoryName = await this.getRepositoryName();\n\n\t\tconst supportsEnvironments = this.project.checkSupportsEnvironments();\n\t\tif (!supportsEnvironments) {\n\t\t\treturn repositoryName;\n\t\t}\n\n\t\tconst { environment } = await this.project.readEnvironment();\n\n\t\treturn environment ?? repositoryName;\n\t}\n\n\tasync getAdapterName(): Promise<string> {\n\t\tconst sliceMachineConfig = await this.getSliceMachineConfig();\n\t\tconst adapterName =\n\t\t\ttypeof sliceMachineConfig.adapter === \"string\"\n\t\t\t\t? sliceMachineConfig.adapter\n\t\t\t\t: sliceMachineConfig.adapter.resolve;\n\n\t\treturn adapterName;\n\t}\n\n\tasync locateAdapterDir(): Promise<string> {\n\t\tconst projectRoot = await this.getRoot();\n\t\tconst adapterName = await this.getAdapterName();\n\t\tconst adapterPackageJSONPath = requireResolve(\n\t\t\t`${adapterName}/package.json`,\n\t\t\tpath.join(projectRoot, \"index.js\"),\n\t\t);\n\n\t\treturn path.dirname(adapterPackageJSONPath);\n\t}\n\n\tasync initProject(args?: ProjectManagerInitProjectArgs): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\t// eslint-disable-next-line no-console\n\t\tconst log = args?.log || console.log.bind(this);\n\n\t\tconst { errors } = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:init\",\n\t\t\t{\n\t\t\t\tlog,\n\t\t\t\tinstallDependencies: async (args) => {\n\t\t\t\t\tconst { execaProcess } = await this.installDependencies({\n\t\t\t\t\t\tdependencies: args.dependencies,\n\t\t\t\t\t\tdev: args.dev,\n\t\t\t\t\t\tlog,\n\t\t\t\t\t});\n\n\t\t\t\t\tawait execaProcess;\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tif (errors.length > 0) {\n\t\t\t// TODO: Provide better error message.\n\t\t\tthrow new SliceMachineError(\n\t\t\t\t`Failed to initialize project: ${errors.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tasync detectPackageManager(\n\t\targs?: ProjectManagerDetectPackageManager,\n\t): Promise<PackageManager> {\n\t\tconst projectRoot = args?.root || (await this.getRoot());\n\n\t\tconst packageManager = await niDetect({\n\t\t\tautoInstall: true,\n\t\t\tcwd: projectRoot,\n\t\t});\n\n\t\treturn packageManager || \"npm\";\n\t}\n\n\tasync installDependencies(\n\t\targs: ProjectManagerInstallDependenciesArgs,\n\t): Promise<ProjectManagerInstallDependenciesReturnType> {\n\t\tconst packageManager =\n\t\t\targs.packageManager || (await this.detectPackageManager());\n\n\t\t// eslint-disable-next-line no-console\n\t\tconst log = args.log || console.log.bind(this);\n\n\t\tconst wrappedLogger = (data: Buffer | string | null) => {\n\t\t\tif (data instanceof Buffer) {\n\t\t\t\tlog(data.toString());\n\t\t\t} else if (typeof data === \"string\") {\n\t\t\t\tlog(data);\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\tconst { execaProcess } = await installDependencies({\n\t\t\t\tpackageManager,\n\t\t\t\tdependencies: args.dependencies,\n\t\t\t\tdev: args.dev,\n\t\t\t});\n\n\t\t\t// Don't clutter console with logs when process is non TTY (CI, etc.)\n\t\t\tif (process.stdout.isTTY || process.env.NODE_ENV === \"test\") {\n\t\t\t\texecaProcess.stdout?.on(\"data\", wrappedLogger);\n\t\t\t}\n\t\t\texecaProcess.stderr?.on(\"data\", wrappedLogger);\n\n\t\t\treturn {\n\t\t\t\texecaProcess,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\t\"shortMessage\" in error &&\n\t\t\t\t\"stderr\" in error\n\t\t\t) {\n\t\t\t\tthrow new InternalError(\"Package installation failed\", {\n\t\t\t\t\tcause: error,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tcheckSupportsEnvironments(): boolean {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\treturn (\n\t\t\tthis.sliceMachinePluginRunner.hooksForType(\"project:environment:read\")\n\t\t\t\t.length > 0 &&\n\t\t\tthis.sliceMachinePluginRunner.hooksForType(\"project:environment:update\")\n\t\t\t\t.length > 0\n\t\t);\n\t}\n\n\tasync readEnvironment(): Promise<ProjectManagerReadEnvironmentReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tawait this._assertAdapterSupportsEnvironments();\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:environment:read\",\n\t\t\tundefined,\n\t\t);\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.type({\n\t\t\t\tenvironment: t.union([t.undefined, t.string]),\n\t\t\t}),\n\t\t\thookResult,\n\t\t);\n\n\t\t// An undefined value is equivalent to the production environment.\n\t\t// We cast to undefined.\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\t\tconst environmentDomain =\n\t\t\tdata[0]?.environment === repositoryName\n\t\t\t\t? undefined\n\t\t\t\t: data[0]?.environment;\n\n\t\treturn {\n\t\t\tenvironment: environmentDomain,\n\t\t\terrors,\n\t\t};\n\t}\n\n\tasync updateEnvironment(\n\t\targs: ProjectManagerUpdateEnvironmentArgs,\n\t): Promise<OnlyHookErrors<CallHookReturnType<ProjectEnvironmentUpdateHook>>> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tawait this._assertAdapterSupportsEnvironments();\n\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\t\tconst environment =\n\t\t\targs.environment === repositoryName ? undefined : args.environment;\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:environment:update\",\n\t\t\t{ environment },\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync fetchActiveEnvironment(): Promise<ProjectManagerFetchActiveEnvironmentReturnType> {\n\t\tconst { environment: activeEnvironmentDomain } =\n\t\t\tawait this.readEnvironment();\n\n\t\t// We can assume an environment cannot change its kind. If the\n\t\t// environment exists in the cached list, we are confident it\n\t\t// will not change.\n\t\tconst cachedActiveEnvironment = findEnvironment(\n\t\t\tactiveEnvironmentDomain,\n\t\t\tthis._cachedEnvironments || [],\n\t\t);\n\t\tif (cachedActiveEnvironment) {\n\t\t\treturn { type: \"ok\", activeEnvironment: cachedActiveEnvironment };\n\t\t}\n\n\t\t// If the environment is not in the cached environments list, we\n\t\t// must fetch a fresh list and set the cache.\n\t\tconst { environments } = await this.prismicRepository.fetchEnvironments();\n\t\t// TODO: Remove the wrapping if statement when\n\t\t// `this.prismicRepository.fetchEnvironments()` is able to throw\n\t\t// normally. The method returns an object with an `error`\n\t\t// property at the time of this writing, which means we need to\n\t\t// check if the `environments` property exists.\n\t\tif (environments) {\n\t\t\tthis._cachedEnvironments = environments;\n\t\t}\n\n\t\tconst activeEnvironment = findEnvironment(\n\t\t\tactiveEnvironmentDomain,\n\t\t\tthis._cachedEnvironments || [],\n\t\t);\n\n\t\tif (!activeEnvironment) {\n\t\t\treturn {\n\t\t\t\ttype: \"error\",\n\t\t\t\terror: new InvalidActiveEnvironmentError(),\n\t\t\t};\n\t\t}\n\n\t\treturn { type: \"ok\", activeEnvironment: activeEnvironment };\n\t}\n\n\tasync detectVersionControlSystem(): Promise<string | \"_unknown\"> {\n\t\ttry {\n\t\t\tconst projectRoot = await this.getRoot();\n\n\t\t\tif (existsSync(path.join(projectRoot, \".git\"))) {\n\t\t\t\treturn \"Git\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \".svn\"))) {\n\t\t\t\treturn \"SVN\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \".hg\"))) {\n\t\t\t\treturn \"Mercurial\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \"CVS\"))) {\n\t\t\t\treturn \"CVS\";\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (import.meta.env.DEV) {\n\t\t\t\tconsole.error(\"Failed to detect Version Control System:\", error);\n\t\t\t}\n\t\t}\n\n\t\treturn \"_unknown\";\n\t}\n\n\tprivate async _assertAdapterSupportsEnvironments(): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst supportsEnvironments = this.checkSupportsEnvironments();\n\n\t\tif (!supportsEnvironments) {\n\t\t\tconst adapterName = await this.project.getAdapterName();\n\n\t\t\tthrow new PluginError(\n\t\t\t\t`${adapterName} does not support environments. Use an adapter that implements the \\`project:environment:read\\` and \\`project:environment:update\\` hooks to use environments.`,\n\t\t\t);\n\t\t}\n\t}\n}\n"],"names":["error","args","niDetect"],"mappings":"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"}
1
+ {"version":3,"file":"ProjectManager.js","sources":["../../../../src/managers/project/ProjectManager.ts"],"sourcesContent":["import * as fs from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport * as path from \"node:path\";\nimport { detect as niDetect } from \"@antfu/ni\";\nimport { ExecaChildProcess } from \"execa\";\nimport {\n\tHookError,\n\tCallHookReturnType,\n\tProjectEnvironmentUpdateHook,\n} from \"@slicemachine/plugin-kit\";\nimport * as t from \"io-ts\";\n\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\nimport { decodeSliceMachineConfig } from \"../../lib/decodeSliceMachineConfig\";\nimport { findEnvironment } from \"../../lib/findEnvironment\";\nimport { format } from \"../../lib/format\";\nimport { installDependencies } from \"../../lib/installDependencies\";\nimport { locateFileUpward } from \"../../lib/locateFileUpward\";\nimport { requireResolve } from \"../../lib/requireResolve\";\n\nimport {\n\tPackageManager,\n\tSliceMachineConfig,\n\tOnlyHookErrors,\n} from \"../../types\";\n\nimport {\n\tSliceMachineError,\n\tInternalError,\n\tPluginError,\n\tInvalidActiveEnvironmentError,\n} from \"../../errors\";\n\nimport { SLICE_MACHINE_CONFIG_FILENAME } from \"../../constants/SLICE_MACHINE_CONFIG_FILENAME\";\nimport { TS_CONFIG_FILENAME } from \"../../constants/TS_CONFIG_FILENAME\";\nimport { SLICE_MACHINE_NPM_PACKAGE_NAME } from \"../../constants/SLICE_MACHINE_NPM_PACKAGE_NAME\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { Environment } from \"../prismicRepository/types\";\n\ntype ProjectManagerGetSliceMachineConfigPathArgs = {\n\tignoreCache?: boolean;\n};\n\ntype ProjectManagerGetRootArgs = {\n\tignoreCache?: boolean;\n};\n\ntype ProjectManagerCheckIsTypeScriptArgs = {\n\trootOverride?: string;\n};\n\ntype ProjectManagerWriteSliceMachineConfigArgs = {\n\tconfig: SliceMachineConfig;\n\tpath?: string;\n};\n\ntype ProjectManagerInitProjectArgs = {\n\tlog?: (message: string) => void;\n};\n\ntype ProjectManagerDetectPackageManager = {\n\troot?: string;\n};\n\ntype ProjectManagerInstallDependenciesArgs = {\n\tdependencies: Record<string, string>;\n\tdev?: boolean;\n\tpackageManager?: PackageManager;\n\tlog?: (message: string) => void;\n};\n\ntype ProjectManagerInstallDependenciesReturnType = {\n\texecaProcess: ExecaChildProcess;\n};\n\ntype ProjectManagerReadEnvironmentReturnType = {\n\tenvironment: string | undefined;\n\terrors: (DecodeError | HookError)[];\n};\n\ntype ProjectManagerUpdateEnvironmentArgs = {\n\tenvironment: string | undefined;\n};\n\ntype ProjectManagerFetchActiveEnvironmentReturnType =\n\t| { type: \"ok\"; activeEnvironment: Environment }\n\t| { type: \"error\"; error: InvalidActiveEnvironmentError };\n\nexport class ProjectManager extends BaseManager {\n\tprivate _cachedRoot: string | undefined;\n\tprivate _cachedSliceMachineConfigPath: string | undefined;\n\tprivate _cachedSliceMachineConfig: SliceMachineConfig | undefined;\n\tprivate _cachedEnvironments: Environment[] | undefined;\n\n\tasync getSliceMachineConfigPath(\n\t\targs?: ProjectManagerGetSliceMachineConfigPathArgs,\n\t): Promise<string> {\n\t\tif (this._cachedSliceMachineConfigPath && !args?.ignoreCache) {\n\t\t\treturn this._cachedSliceMachineConfigPath;\n\t\t}\n\n\t\ttry {\n\t\t\tthis._cachedSliceMachineConfigPath = await locateFileUpward(\n\t\t\t\tSLICE_MACHINE_CONFIG_FILENAME,\n\t\t\t\t{ startDir: this.cwd },\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Could not find a ${SLICE_MACHINE_CONFIG_FILENAME} file. Please create a config file at the root of your project.`,\n\t\t\t);\n\t\t}\n\n\t\treturn this._cachedSliceMachineConfigPath;\n\t}\n\n\tasync getRoot(args?: ProjectManagerGetRootArgs): Promise<string> {\n\t\tif (this._cachedRoot && !args?.ignoreCache) {\n\t\t\treturn this._cachedRoot;\n\t\t}\n\n\t\tconst sliceMachineConfigFilePath = await this.getSliceMachineConfigPath({\n\t\t\tignoreCache: args?.ignoreCache,\n\t\t});\n\n\t\tthis._cachedRoot = path.dirname(sliceMachineConfigFilePath);\n\n\t\treturn this._cachedRoot;\n\t}\n\n\tasync suggestRoot(): Promise<string> {\n\t\tconst suggestedRootPackageJSON = await locateFileUpward(\"package.json\", {\n\t\t\tstartDir: this.cwd,\n\t\t});\n\n\t\treturn path.dirname(suggestedRootPackageJSON);\n\t}\n\n\tasync suggestSliceMachineConfigPath(): Promise<string> {\n\t\tconst suggestedRoot = await this.suggestRoot();\n\n\t\treturn path.resolve(suggestedRoot, SLICE_MACHINE_CONFIG_FILENAME);\n\t}\n\n\tasync checkIsTypeScript(\n\t\targs?: ProjectManagerCheckIsTypeScriptArgs,\n\t): Promise<boolean> {\n\t\tconst root = args?.rootOverride || (await this.getRoot());\n\t\tconst rootTSConfigPath = path.resolve(root, TS_CONFIG_FILENAME);\n\n\t\t// We just care if the file exists, we don't need access to it\n\t\treturn existsSync(rootTSConfigPath);\n\t}\n\n\tasync getSliceMachineConfig(): Promise<SliceMachineConfig> {\n\t\tif (this._cachedSliceMachineConfig) {\n\t\t\treturn this._cachedSliceMachineConfig;\n\t\t} else {\n\t\t\treturn await this.loadSliceMachineConfig();\n\t\t}\n\t}\n\n\tasync writeSliceMachineConfig(\n\t\targs: ProjectManagerWriteSliceMachineConfigArgs,\n\t): Promise<void> {\n\t\tconst configFilePath =\n\t\t\targs.path || (await this.getSliceMachineConfigPath());\n\n\t\tconst config = await format(\n\t\t\tJSON.stringify(args.config, null, 2),\n\t\t\tconfigFilePath,\n\t\t);\n\n\t\tawait fs.writeFile(configFilePath, config, \"utf-8\");\n\t\tdelete this._cachedSliceMachineConfig; // Clear config cache\n\t}\n\n\tasync loadSliceMachineConfig(): Promise<SliceMachineConfig> {\n\t\t// TODO: Reload plugins with a fresh plugin runner. Plugins may\n\t\t// have been added or removed.\n\t\tconst configFilePath = await this.getSliceMachineConfigPath();\n\n\t\tlet rawConfig: unknown | undefined;\n\t\ttry {\n\t\t\tconst contents = await fs.readFile(configFilePath, \"utf8\");\n\t\t\trawConfig = JSON.parse(contents);\n\t\t} catch (error) {\n\t\t\tif (error instanceof SyntaxError) {\n\t\t\t\tthrow new SliceMachineError(\n\t\t\t\t\t`Could not parse config file at ${configFilePath}.\\n\\nError Message: ${error.message}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Noop, more specific error is thrown after\n\t\t}\n\n\t\tif (!rawConfig) {\n\t\t\t// TODO: Write a more friendly and useful message.\n\t\t\tthrow new Error(\"No config found.\");\n\t\t}\n\n\t\tconst { value: sliceMachineConfig, error } =\n\t\t\tdecodeSliceMachineConfig(rawConfig);\n\n\t\tif (error) {\n\t\t\t// TODO: Write a more friendly and useful message.\n\t\t\tthrow new Error(`Invalid config. ${error.errors.join(\", \")}`, {\n\t\t\t\tcause: { rawConfig },\n\t\t\t});\n\t\t}\n\n\t\t// Allow cached config reading using `SliceMachineManager.prototype.getProjectConfig()`.\n\t\tthis._cachedSliceMachineConfig = sliceMachineConfig;\n\n\t\treturn sliceMachineConfig;\n\t}\n\n\tasync locateSliceMachineUIDir(): Promise<string> {\n\t\tconst projectRoot = await this.getRoot();\n\n\t\tconst sliceMachinePackageJSONPath = requireResolve(\n\t\t\t`${SLICE_MACHINE_NPM_PACKAGE_NAME}/package.json`,\n\t\t\tpath.join(projectRoot, \"index.js\"),\n\t\t);\n\n\t\treturn path.dirname(sliceMachinePackageJSONPath);\n\t}\n\n\t/**\n\t * Returns the project's repository name (i.e. the production environment). It\n\t * ignores the currently selected environment.\n\t *\n\t * Use this method to retrieve the production environment domain.\n\t *\n\t * @returns The project's repository name.\n\t */\n\tasync getRepositoryName(): Promise<string> {\n\t\tconst sliceMachineConfig = await this.getSliceMachineConfig();\n\n\t\treturn sliceMachineConfig.repositoryName;\n\t}\n\n\t/**\n\t * Returns the currently selected environment domain if set. If an environment\n\t * is not set, it returns the project's repository name (the production\n\t * environment).\n\t *\n\t * Use this method to retrieve the repository name to be sent with Prismic API\n\t * requests.\n\t *\n\t * @returns The resolved repository name.\n\t */\n\tasync getResolvedRepositoryName(): Promise<string> {\n\t\tconst repositoryName = await this.getRepositoryName();\n\n\t\tconst supportsEnvironments = this.project.checkSupportsEnvironments();\n\t\tif (!supportsEnvironments) {\n\t\t\treturn repositoryName;\n\t\t}\n\n\t\tconst { environment } = await this.project.readEnvironment();\n\n\t\treturn environment ?? repositoryName;\n\t}\n\n\tasync getAdapterName(): Promise<string> {\n\t\tconst sliceMachineConfig = await this.getSliceMachineConfig();\n\t\tconst adapterName =\n\t\t\ttypeof sliceMachineConfig.adapter === \"string\"\n\t\t\t\t? sliceMachineConfig.adapter\n\t\t\t\t: sliceMachineConfig.adapter.resolve;\n\n\t\treturn adapterName;\n\t}\n\n\tasync locateAdapterDir(): Promise<string> {\n\t\tconst projectRoot = await this.getRoot();\n\t\tconst adapterName = await this.getAdapterName();\n\t\tconst adapterPackageJSONPath = requireResolve(\n\t\t\t`${adapterName}/package.json`,\n\t\t\tpath.join(projectRoot, \"index.js\"),\n\t\t);\n\n\t\treturn path.dirname(adapterPackageJSONPath);\n\t}\n\n\tasync initProject(args?: ProjectManagerInitProjectArgs): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\t// eslint-disable-next-line no-console\n\t\tconst log = args?.log || console.log.bind(this);\n\n\t\tconst { errors } = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:init\",\n\t\t\t{\n\t\t\t\tlog,\n\t\t\t\tinstallDependencies: async (args) => {\n\t\t\t\t\tconst { execaProcess } = await this.installDependencies({\n\t\t\t\t\t\tdependencies: args.dependencies,\n\t\t\t\t\t\tdev: args.dev,\n\t\t\t\t\t\tlog,\n\t\t\t\t\t});\n\n\t\t\t\t\tawait execaProcess;\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\tif (errors.length > 0) {\n\t\t\t// TODO: Provide better error message.\n\t\t\tthrow new SliceMachineError(\n\t\t\t\t`Failed to initialize project: ${errors.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tasync detectPackageManager(\n\t\targs?: ProjectManagerDetectPackageManager,\n\t): Promise<PackageManager> {\n\t\tconst projectRoot = args?.root || (await this.getRoot());\n\n\t\tconst packageManager = await niDetect({\n\t\t\tautoInstall: true,\n\t\t\tcwd: projectRoot,\n\t\t});\n\n\t\treturn packageManager || \"npm\";\n\t}\n\n\tasync installDependencies(\n\t\targs: ProjectManagerInstallDependenciesArgs,\n\t): Promise<ProjectManagerInstallDependenciesReturnType> {\n\t\tconst packageManager =\n\t\t\targs.packageManager || (await this.detectPackageManager());\n\n\t\t// eslint-disable-next-line no-console\n\t\tconst log = args.log || console.log.bind(this);\n\n\t\tconst wrappedLogger = (data: Buffer | string | null) => {\n\t\t\tif (data instanceof Buffer) {\n\t\t\t\tlog(data.toString());\n\t\t\t} else if (typeof data === \"string\") {\n\t\t\t\tlog(data);\n\t\t\t}\n\t\t};\n\n\t\ttry {\n\t\t\tconst { execaProcess } = await installDependencies({\n\t\t\t\tpackageManager,\n\t\t\t\tdependencies: args.dependencies,\n\t\t\t\tdev: args.dev,\n\t\t\t});\n\n\t\t\t// Don't clutter console with logs when process is non TTY (CI, etc.)\n\t\t\tif (process.stdout.isTTY || process.env.NODE_ENV === \"test\") {\n\t\t\t\texecaProcess.stdout?.on(\"data\", wrappedLogger);\n\t\t\t}\n\t\t\texecaProcess.stderr?.on(\"data\", wrappedLogger);\n\n\t\t\treturn {\n\t\t\t\texecaProcess,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof Error &&\n\t\t\t\t\"shortMessage\" in error &&\n\t\t\t\t\"stderr\" in error\n\t\t\t) {\n\t\t\t\tthrow new InternalError(\"Package installation failed\", {\n\t\t\t\t\tcause: error,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tcheckSupportsEnvironments(): boolean {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\treturn (\n\t\t\tthis.sliceMachinePluginRunner.hooksForType(\"project:environment:read\")\n\t\t\t\t.length > 0 &&\n\t\t\tthis.sliceMachinePluginRunner.hooksForType(\"project:environment:update\")\n\t\t\t\t.length > 0\n\t\t);\n\t}\n\n\tasync readEnvironment(): Promise<ProjectManagerReadEnvironmentReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tawait this._assertAdapterSupportsEnvironments();\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:environment:read\",\n\t\t\tundefined,\n\t\t);\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.type({\n\t\t\t\tenvironment: t.union([t.undefined, t.string]),\n\t\t\t}),\n\t\t\thookResult,\n\t\t);\n\n\t\t// An undefined value is equivalent to the production environment.\n\t\t// We cast to undefined.\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\t\tconst environmentDomain =\n\t\t\tdata[0]?.environment === repositoryName\n\t\t\t\t? undefined\n\t\t\t\t: data[0]?.environment;\n\n\t\treturn {\n\t\t\tenvironment: environmentDomain,\n\t\t\terrors,\n\t\t};\n\t}\n\n\tasync updateEnvironment(\n\t\targs: ProjectManagerUpdateEnvironmentArgs,\n\t): Promise<OnlyHookErrors<CallHookReturnType<ProjectEnvironmentUpdateHook>>> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tawait this._assertAdapterSupportsEnvironments();\n\n\t\tconst repositoryName = await this.project.getRepositoryName();\n\t\tconst environment =\n\t\t\targs.environment === repositoryName ? undefined : args.environment;\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"project:environment:update\",\n\t\t\t{ environment },\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync fetchActiveEnvironment(): Promise<ProjectManagerFetchActiveEnvironmentReturnType> {\n\t\tconst { environment: activeEnvironmentDomain } =\n\t\t\tawait this.readEnvironment();\n\n\t\t// We can assume an environment cannot change its kind. If the\n\t\t// environment exists in the cached list, we are confident it\n\t\t// will not change.\n\t\tconst cachedActiveEnvironment = findEnvironment(\n\t\t\tactiveEnvironmentDomain,\n\t\t\tthis._cachedEnvironments || [],\n\t\t);\n\t\tif (cachedActiveEnvironment) {\n\t\t\treturn { type: \"ok\", activeEnvironment: cachedActiveEnvironment };\n\t\t}\n\n\t\t// If the environment is not in the cached environments list, we\n\t\t// must fetch a fresh list and set the cache.\n\t\tconst { environments } = await this.prismicRepository.fetchEnvironments();\n\t\t// TODO: Remove the wrapping if statement when\n\t\t// `this.prismicRepository.fetchEnvironments()` is able to throw\n\t\t// normally. The method returns an object with an `error`\n\t\t// property at the time of this writing, which means we need to\n\t\t// check if the `environments` property exists.\n\t\tif (environments) {\n\t\t\tthis._cachedEnvironments = environments;\n\t\t}\n\n\t\tconst activeEnvironment = findEnvironment(\n\t\t\tactiveEnvironmentDomain,\n\t\t\tthis._cachedEnvironments || [],\n\t\t);\n\n\t\tif (!activeEnvironment) {\n\t\t\treturn {\n\t\t\t\ttype: \"error\",\n\t\t\t\terror: new InvalidActiveEnvironmentError(),\n\t\t\t};\n\t\t}\n\n\t\treturn { type: \"ok\", activeEnvironment: activeEnvironment };\n\t}\n\n\tasync detectVersionControlSystem(): Promise<string | \"_unknown\"> {\n\t\ttry {\n\t\t\tconst projectRoot = await this.getRoot();\n\n\t\t\tif (existsSync(path.join(projectRoot, \".git\"))) {\n\t\t\t\treturn \"Git\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \".svn\"))) {\n\t\t\t\treturn \"SVN\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \".hg\"))) {\n\t\t\t\treturn \"Mercurial\";\n\t\t\t}\n\n\t\t\tif (existsSync(path.join(projectRoot, \"CVS\"))) {\n\t\t\t\treturn \"CVS\";\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (import.meta.env.DEV) {\n\t\t\t\tconsole.error(\"Failed to detect Version Control System:\", error);\n\t\t\t}\n\t\t}\n\n\t\treturn \"_unknown\";\n\t}\n\n\tprivate async _assertAdapterSupportsEnvironments(): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst supportsEnvironments = this.checkSupportsEnvironments();\n\n\t\tif (!supportsEnvironments) {\n\t\t\tconst adapterName = await this.project.getAdapterName();\n\n\t\t\tthrow new PluginError(\n\t\t\t\t`${adapterName} does not support environments. Use an adapter that implements the \\`project:environment:read\\` and \\`project:environment:update\\` hooks to use environments.`,\n\t\t\t);\n\t\t}\n\t}\n}\n"],"names":["error","args","niDetect"],"mappings":"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"}
@@ -1,15 +1,12 @@
1
1
  "use strict";
2
2
  var __defProp = Object.defineProperty;
3
3
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => {
5
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- return value;
7
- };
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
5
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
6
  const t = require("io-ts");
10
7
  require("readable-web-to-node-stream");
11
8
  const core = require('./../../_node_modules/file-type/core.cjs');
12
- const index = require('./../../_node_modules/p-limit/index.cjs');
9
+ const index$1 = require('./../../_node_modules/p-limit/index.cjs');
13
10
  const fetch = require("../../lib/fetch.cjs");
14
11
  const createContentDigest = require("../../lib/createContentDigest.cjs");
15
12
  const decode = require("../../lib/decode.cjs");
@@ -22,10 +19,8 @@ require("node:https");
22
19
  require("node:zlib");
23
20
  require("node:stream");
24
21
  require("node:buffer");
25
- require("node:fs");
26
- require("node:path");
27
- require('./../../_node_modules/node-domexception/index.cjs');
28
- const index$1 = require('./../../_node_modules/fetch-blob/index.cjs');
22
+ require('./../../_node_modules/fetch-blob/from.cjs');
23
+ const index = require('./../../_node_modules/fetch-blob/index.cjs');
29
24
  function _interopNamespaceDefault(e) {
30
25
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
31
26
  if (e) {
@@ -48,7 +43,7 @@ function assertS3ACLInitialized(s3ACL) {
48
43
  throw new Error("An S3 ACL has not been initialized. Run `SliceMachineManager.screenshots.prototype.initS3ACL()` before re-calling this method.");
49
44
  }
50
45
  }
51
- const uploadScreenshotLimit = index(10);
46
+ const uploadScreenshotLimit = index$1(10);
52
47
  class ScreenshotsManager extends BaseManager.BaseManager {
53
48
  constructor() {
54
49
  super(...arguments);
@@ -111,7 +106,7 @@ class ScreenshotsManager extends BaseManager.BaseManager {
111
106
  if (fileType) {
112
107
  formData.set("Content-Type", fileType.mime);
113
108
  }
114
- formData.set("file", new index$1.default([args.data], { type: fileType == null ? void 0 : fileType.mime }));
109
+ formData.set("file", new index.Blob([args.data], { type: fileType == null ? void 0 : fileType.mime }));
115
110
  const s3ACLEndpoint = this._s3ACL.uploadEndpoint;
116
111
  const res = await uploadScreenshotLimit(() => fetch.default(s3ACLEndpoint, {
117
112
  method: "POST",