@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":"CustomTypesManager.js","sources":["../../../../src/managers/customTypes/CustomTypesManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as prismicCustomTypesClient from \"@prismicio/custom-types-client\";\nimport {\n\tCustomType,\n\tGroup,\n\tLinkConfig,\n\tNestableWidget,\n\tNestedGroup,\n\tSharedSlice,\n\tUID,\n\ttraverseCustomType,\n\ttraverseSharedSlice,\n} from \"@prismicio/types-internal/lib/customtypes\";\nimport {\n\tCallHookReturnType,\n\tCustomTypeCreateHook,\n\tCustomTypeCreateHookData,\n\tCustomTypeReadHookData,\n\tCustomTypeRenameHook,\n\tCustomTypeRenameHookData,\n\tCustomTypeUpdateHook,\n\tCustomTypeUpdateHookData,\n\tHookError,\n} from \"@slicemachine/plugin-kit\";\nimport { z } from \"zod\";\n\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\nimport fetch from \"../../lib/fetch\";\n\nimport { OnlyHookErrors } from \"../../types\";\nimport { API_ENDPOINTS } from \"../../constants/API_ENDPOINTS\";\nimport { SLICE_MACHINE_USER_AGENT } from \"../../constants/SLICE_MACHINE_USER_AGENT\";\nimport { UnauthorizedError } from \"../../errors\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { CustomTypeFormat } from \"./types\";\n\ntype SliceMachineManagerReadCustomTypeLibraryReturnType = {\n\tids: string[];\n\terrors: (DecodeError | HookError)[];\n};\n\ntype CustomTypesManagerReadAllCustomTypesArgs = {\n\tformat: CustomTypeFormat;\n};\n\ntype SliceMachineManagerReadAllCustomTypeReturnType = {\n\tmodels: { model: CustomType }[];\n\terrors: (DecodeError | HookError)[];\n};\n\ntype SliceMachineManagerReadCustomTypeReturnType = {\n\tmodel: CustomType | undefined;\n\terrors: (DecodeError | HookError)[];\n};\n\ntype SliceMachineManagerPushCustomTypeArgs = {\n\tid: string;\n\tuserAgent?: string;\n};\n\ntype SliceMachineManagerReadCustomTypeMocksConfigArgs = {\n\tcustomTypeID: string;\n};\n\ntype SliceMachineManagerReadCustomTypeMocksConfigArgsReturnType = {\n\t// TODO\n\tmocksConfig?: Record<string, unknown>;\n\terrors: HookError[];\n};\n\ntype SliceMachineManagerUpdateCustomTypeMocksConfigArgs = {\n\tcustomTypeID: string;\n\t// TODO\n\tmocksConfig: Record<string, unknown>;\n};\n\n/** `[field]` or `[group, field]` – path **inside** the Custom Type */\ntype PathWithoutCustomType = [string] | [string, string];\n\ntype SliceMachineManagerUpdateCustomTypeFieldIdChanged = {\n\t/**\n\t * Previous path of the changed field, excluding the custom type id. Can be\n\t * used to identify the field that had an API ID rename (e.g. [\"fieldA\"] or\n\t * [\"groupA\", \"fieldA\"])\n\t */\n\tpreviousPath: PathWithoutCustomType;\n\t/**\n\t * New path of the changed field, excluding the custom type id. Can be used to\n\t * identify the field that had an API ID rename (e.g. [\"fieldB\"] or [\"groupA\",\n\t * \"fieldB\"])\n\t */\n\tnewPath: PathWithoutCustomType;\n};\n\ntype SliceMachineManagerUpdateCustomTypeArgs = CustomTypeUpdateHookData & {\n\tupdateMeta?: {\n\t\tfieldIdChanged?: SliceMachineManagerUpdateCustomTypeFieldIdChanged;\n\t};\n};\n\ntype SliceMachineManagerUpdateCustomTypeMocksConfigArgsReturnType = {\n\terrors: HookError[];\n};\n\ntype CustomTypesMachineManagerDeleteCustomTypeArgs = {\n\tid: string;\n};\n\ntype CustomTypesMachineManagerDeleteCustomTypeReturnType = {\n\terrors: (DecodeError | HookError)[];\n};\n\ntype CustomTypesMachineManagerUpdateCustomTypeReturnType = {\n\terrors: (DecodeError | HookError)[];\n};\n\n/** `[ct, field]` or `[ct, group, field]` – path **with** Custom Type ID */\ntype PathWithCustomType = [string, string] | [string, string, string];\n\ntype CustomTypeFieldIdChangedMeta = {\n\tpreviousPath: PathWithCustomType;\n\tnewPath: PathWithCustomType;\n};\n\ntype LinkCustomType = NonNullable<LinkConfig[\"customtypes\"]>[number];\n\nexport class CustomTypesManager extends BaseManager {\n\tasync readCustomTypeLibrary(): Promise<SliceMachineManagerReadCustomTypeLibraryReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type-library:read\",\n\t\t\tundefined,\n\t\t);\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.type({\n\t\t\t\tids: t.array(t.string),\n\t\t\t}),\n\t\t\thookResult,\n\t\t);\n\n\t\treturn {\n\t\t\tids: data[0]?.ids || [],\n\t\t\terrors,\n\t\t};\n\t}\n\n\tasync readAllCustomTypes(\n\t\targs?: CustomTypesManagerReadAllCustomTypesArgs,\n\t): Promise<SliceMachineManagerReadAllCustomTypeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst res: SliceMachineManagerReadAllCustomTypeReturnType = {\n\t\t\tmodels: [],\n\t\t\terrors: [],\n\t\t};\n\n\t\tconst { ids, errors } = await this.readCustomTypeLibrary();\n\t\tres.errors = [...res.errors, ...errors];\n\n\t\tif (ids) {\n\t\t\tfor (const id of ids) {\n\t\t\t\tconst { model, errors } = await this.readCustomType({ id });\n\t\t\t\tres.errors = [...res.errors, ...errors];\n\n\t\t\t\tif (model && (!args || args.format === model.format)) {\n\t\t\t\t\tres.models.push({ model });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tasync createCustomType(\n\t\targs: CustomTypeCreateHookData,\n\t): Promise<OnlyHookErrors<CallHookReturnType<CustomTypeCreateHook>>> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:create\",\n\t\t\targs,\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync readCustomType(\n\t\targs: CustomTypeReadHookData,\n\t): Promise<SliceMachineManagerReadCustomTypeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:read\",\n\t\t\targs,\n\t\t);\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.type({\n\t\t\t\tmodel: CustomType,\n\t\t\t}),\n\t\t\thookResult,\n\t\t);\n\n\t\treturn {\n\t\t\tmodel: data[0]?.model,\n\t\t\terrors,\n\t\t};\n\t}\n\n\t/**\n\t * Update the Content Relationship API IDs for all existing custom types and\n\t * slices. The change is determined by properties inside the `updateMeta`\n\t * property.\n\t */\n\tprivate async updateContentRelationships(\n\t\targs: {\n\t\t\tmodel: CustomType;\n\t\t} & SliceMachineManagerUpdateCustomTypeFieldIdChanged,\n\t): Promise<\n\t\tOnlyHookErrors<CallHookReturnType<CustomTypeUpdateHook>> & {\n\t\t\trollback?: () => Promise<void>;\n\t\t}\n\t> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst {\n\t\t\tmodel,\n\t\t\tpreviousPath: previousFieldPath,\n\t\t\tnewPath: newFieldPath,\n\t\t} = args;\n\n\t\tif (previousFieldPath.join(\".\") !== newFieldPath.join(\".\")) {\n\t\t\tconst { id: ctId } = model;\n\t\t\tconst previousPath: PathWithCustomType = [ctId, ...previousFieldPath];\n\t\t\tconst newPath: PathWithCustomType = [ctId, ...newFieldPath];\n\n\t\t\tconst crUpdates: {\n\t\t\t\tupdatePromise: Promise<{ errors: HookError[] }>;\n\t\t\t\trollback: () => void;\n\t\t\t}[] = [];\n\n\t\t\t// Find existing content relationships that link to the renamed field id in\n\t\t\t// any custom type and update them to use the new one.\n\t\t\tconst customTypes = await this.readAllCustomTypes();\n\n\t\t\tupdateCustomTypeContentRelationships({\n\t\t\t\tmodels: customTypes.models,\n\t\t\t\tonUpdate: ({ previousModel, model: updatedModel }) => {\n\t\t\t\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\t\t\t\tcrUpdates.push({\n\t\t\t\t\t\tupdatePromise: this.sliceMachinePluginRunner?.callHook(\n\t\t\t\t\t\t\t\"custom-type:update\",\n\t\t\t\t\t\t\t{ model: updatedModel },\n\t\t\t\t\t\t),\n\t\t\t\t\t\trollback: () => {\n\t\t\t\t\t\t\tthis.sliceMachinePluginRunner?.callHook(\"custom-type:update\", {\n\t\t\t\t\t\t\t\tmodel: previousModel,\n\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\tpreviousPath,\n\t\t\t\tnewPath,\n\t\t\t});\n\n\t\t\t// Find existing slice with content relationships that link to the renamed\n\t\t\t// field id in all libraries and update them to use the new one.\n\t\t\tconst { libraries } = await this.slices.readAllSliceLibraries();\n\n\t\t\tfor (const library of libraries) {\n\t\t\t\tconst slices = await this.slices.readAllSlicesForLibrary({\n\t\t\t\t\tlibraryID: library.libraryID,\n\t\t\t\t});\n\n\t\t\t\tupdateSharedSliceContentRelationships({\n\t\t\t\t\tmodels: slices.models,\n\t\t\t\t\tonUpdate: ({ previousModel, model: updatedModel }) => {\n\t\t\t\t\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\t\t\t\t\tcrUpdates.push({\n\t\t\t\t\t\t\tupdatePromise: this.sliceMachinePluginRunner?.callHook(\n\t\t\t\t\t\t\t\t\"slice:update\",\n\t\t\t\t\t\t\t\t{ libraryID: library.libraryID, model: updatedModel },\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\trollback: () => {\n\t\t\t\t\t\t\t\tthis.sliceMachinePluginRunner?.callHook(\"slice:update\", {\n\t\t\t\t\t\t\t\t\tlibraryID: library.libraryID,\n\t\t\t\t\t\t\t\t\tmodel: previousModel,\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\t\t\t\t\tpreviousPath,\n\t\t\t\t\tnewPath,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Process all the Content Relationship updates at once.\n\t\t\tconst crUpdatesResult = await Promise.all(\n\t\t\t\tcrUpdates.map((update) => update.updatePromise),\n\t\t\t);\n\n\t\t\tif (crUpdatesResult.some((result) => result.errors.length > 0)) {\n\t\t\t\treturn {\n\t\t\t\t\terrors: crUpdatesResult.flatMap((result) => result.errors),\n\t\t\t\t\trollback: async () => {\n\t\t\t\t\t\tawait Promise.all(crUpdates.map((update) => update.rollback()));\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn { errors: [] };\n\t}\n\n\tasync updateCustomType(\n\t\targs: SliceMachineManagerUpdateCustomTypeArgs,\n\t): Promise<CustomTypesMachineManagerUpdateCustomTypeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\t\tconst { model } = args;\n\t\tconst { fieldIdChanged } = args.updateMeta ?? {};\n\n\t\tlet previousCustomType: CustomType | undefined;\n\n\t\tif (fieldIdChanged) {\n\t\t\tconst customTypeRead = await this.readCustomType({ id: model.id });\n\n\t\t\tif (customTypeRead.errors.length > 0) {\n\t\t\t\treturn { errors: customTypeRead.errors };\n\t\t\t}\n\t\t\tif (!customTypeRead.model) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`readCustomType succeeded reading custom type ${model.id} but model is undefined.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tpreviousCustomType = customTypeRead.model;\n\t\t}\n\n\t\tconst customTypeUpdateResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:update\",\n\t\t\t{ model },\n\t\t);\n\n\t\tif (customTypeUpdateResult.errors.length > 0) {\n\t\t\treturn { errors: customTypeUpdateResult.errors };\n\t\t}\n\n\t\tif (previousCustomType && fieldIdChanged) {\n\t\t\tconst crUpdateResult = await this.updateContentRelationships({\n\t\t\t\t...fieldIdChanged,\n\t\t\t\tmodel: previousCustomType,\n\t\t\t});\n\n\t\t\tif (crUpdateResult.errors.length > 0) {\n\t\t\t\t// put the previous custom type back\n\t\t\t\tawait this.sliceMachinePluginRunner?.callHook(\"custom-type:update\", {\n\t\t\t\t\tmodel: previousCustomType,\n\t\t\t\t});\n\t\t\t\t// revert the content relationships updates\n\t\t\t\tawait crUpdateResult.rollback?.();\n\n\t\t\t\treturn { errors: crUpdateResult.errors };\n\t\t\t}\n\t\t}\n\n\t\treturn { errors: [] };\n\t}\n\n\tasync renameCustomType(\n\t\targs: CustomTypeRenameHookData,\n\t): Promise<OnlyHookErrors<CallHookReturnType<CustomTypeRenameHook>>> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:rename\",\n\t\t\targs,\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync deleteCustomType(\n\t\targs: CustomTypesMachineManagerDeleteCustomTypeArgs,\n\t): Promise<CustomTypesMachineManagerDeleteCustomTypeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst { model, errors: readCustomTypeErrors } = await this.readCustomType({\n\t\t\tid: args.id,\n\t\t});\n\n\t\tif (model) {\n\t\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\t\"custom-type:delete\",\n\t\t\t\t{ model },\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\terrors: hookResult.errors,\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\terrors: readCustomTypeErrors,\n\t\t\t};\n\t\t}\n\t}\n\n\tasync pushCustomType(\n\t\targs: SliceMachineManagerPushCustomTypeArgs,\n\t): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst authenticationToken = await this.user.getAuthenticationToken();\n\t\tconst repositoryName = await this.project.getResolvedRepositoryName();\n\n\t\t// TODO: Handle errors\n\t\tconst { model } = await this.readCustomType({ id: args.id });\n\n\t\tif (model) {\n\t\t\t// TODO: Create a single shared client.\n\t\t\tconst client = prismicCustomTypesClient.createClient({\n\t\t\t\tendpoint: API_ENDPOINTS.PrismicModels,\n\t\t\t\trepositoryName,\n\t\t\t\ttoken: authenticationToken,\n\t\t\t\tfetch,\n\t\t\t\tfetchOptions: {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"User-Agent\": args.userAgent || SLICE_MACHINE_USER_AGENT,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\ttry {\n\t\t\t\t// Check if Custom Type already exists on the repository.\n\t\t\t\tawait client.getCustomTypeByID(args.id);\n\n\t\t\t\t// If it exists on the repository, update it.\n\t\t\t\tawait client.updateCustomType(model);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof prismicCustomTypesClient.NotFoundError) {\n\t\t\t\t\t// If it doesn't exist on the repository, insert it.\n\t\t\t\t\tawait client.insertCustomType(model);\n\t\t\t\t} else if (error instanceof prismicCustomTypesClient.ForbiddenError) {\n\t\t\t\t\tthrow new UnauthorizedError(\n\t\t\t\t\t\t\"You do not have access to push types to this Prismic repository.\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: Remove\n\tasync readCustomTypeMocksConfig(\n\t\targs: SliceMachineManagerReadCustomTypeMocksConfigArgs,\n\t): Promise<SliceMachineManagerReadCustomTypeMocksConfigArgsReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:asset:read\",\n\t\t\t{\n\t\t\t\tcustomTypeID: args.customTypeID,\n\t\t\t\tassetID: \"mocks.config.json\",\n\t\t\t},\n\t\t);\n\t\tconst data = hookResult.data[0]?.data;\n\n\t\t// TODO: Validate the returned data.\n\n\t\tif (data) {\n\t\t\treturn {\n\t\t\t\tmocksConfig: JSON.parse(data.toString()),\n\t\t\t\terrors: hookResult.errors,\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tmocksConfig: undefined,\n\t\t\t\terrors: hookResult.errors,\n\t\t\t};\n\t\t}\n\t}\n\n\t// TODO: Remove\n\tasync updateCustomTypeMocksConfig(\n\t\targs: SliceMachineManagerUpdateCustomTypeMocksConfigArgs,\n\t): Promise<SliceMachineManagerUpdateCustomTypeMocksConfigArgsReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:asset:update\",\n\t\t\t{\n\t\t\t\tcustomTypeID: args.customTypeID,\n\t\t\t\tasset: {\n\t\t\t\t\tid: \"mocks.config.json\",\n\t\t\t\t\tdata: Buffer.from(JSON.stringify(args.mocksConfig, null, \"\\t\")),\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync fetchRemoteCustomTypes(): Promise<CustomType[]> {\n\t\tconst authenticationToken = await this.user.getAuthenticationToken();\n\t\tconst repositoryName = await this.project.getResolvedRepositoryName();\n\n\t\tconst client = prismicCustomTypesClient.createClient({\n\t\t\tendpoint: API_ENDPOINTS.PrismicModels,\n\t\t\trepositoryName,\n\t\t\ttoken: authenticationToken,\n\t\t\tfetch,\n\t\t\tfetchOptions: {\n\t\t\t\theaders: {\n\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\treturn await client.getAllCustomTypes();\n\t}\n\n\tasync inferSlice({\n\t\timageUrl,\n\t}: {\n\t\timageUrl: string;\n\t}): Promise<InferSliceResponse> {\n\t\tconst authToken = await this.user.getAuthenticationToken();\n\t\tconst headers = {\n\t\t\tAuthorization: `Bearer ${authToken}`,\n\t\t};\n\n\t\tconst repository = await this.project.getResolvedRepositoryName();\n\t\tconst searchParams = new URLSearchParams({\n\t\t\trepository,\n\t\t});\n\n\t\tconst url = new URL(\"./slices/infer\", API_ENDPOINTS.CustomTypeService);\n\t\turl.search = searchParams.toString();\n\n\t\tconst response = await fetch(url.toString(), {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: JSON.stringify({ imageUrl }),\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to infer slice: ${response.statusText}`);\n\t\t}\n\n\t\tconst json = await response.json();\n\n\t\treturn InferSliceResponse.parse(json);\n\t}\n}\n\ntype InferSliceResponse = z.infer<typeof InferSliceResponse>;\n\nconst InferSliceResponse = z.object({\n\tslice: z.custom().transform((value, ctx) => {\n\t\tconst result = SharedSlice.decode(value);\n\t\tif (result._tag === \"Right\") {\n\t\t\treturn result.right;\n\t\t}\n\t\tctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: `Invalid shared slice: ${JSON.stringify(value, null, 2)}`,\n\t\t});\n\n\t\treturn z.NEVER;\n\t}),\n\tlangSmithUrl: z.string().url().optional(),\n});\n\nfunction updateCRCustomType(\n\targs: { customType: LinkCustomType } & CustomTypeFieldIdChangedMeta,\n): LinkCustomType {\n\tconst previousPath = getPathIds(args.previousPath);\n\tconst newPath = getPathIds(args.newPath);\n\n\tif (!previousPath.customTypeId || !newPath.customTypeId) {\n\t\tthrow new Error(\n\t\t\t`Could not find a customtype id in previousPath (${args.previousPath.join(\n\t\t\t\t\".\",\n\t\t\t)}) and/or newPath (${args.newPath.join(\n\t\t\t\t\".\",\n\t\t\t)}), which should not be possible.`,\n\t\t);\n\t}\n\n\tif (!previousPath.fieldId || !newPath.fieldId) {\n\t\tthrow new Error(\n\t\t\t`Could not find a field id in previousPath (${args.previousPath.join(\n\t\t\t\t\".\",\n\t\t\t)}) and/or newPath (${args.newPath.join(\n\t\t\t\t\".\",\n\t\t\t)}), which should not be possible.`,\n\t\t);\n\t}\n\n\tconst customType = shallowCloneIfObject(args.customType);\n\n\tif (typeof customType === \"string\") {\n\t\t// Legacy format support, we don't have anything to update here.\n\t\treturn customType;\n\t}\n\n\tconst matchedCustomTypeId = customType.id === previousPath.customTypeId;\n\n\treturn {\n\t\t...customType,\n\t\tfields: customType.fields.map((fieldArg) => {\n\t\t\tconst customTypeField = shallowCloneIfObject(fieldArg);\n\n\t\t\t// Regular field\n\t\t\tif (typeof customTypeField === \"string\") {\n\t\t\t\tif (\n\t\t\t\t\tmatchedCustomTypeId &&\n\t\t\t\t\tcustomTypeField === previousPath.fieldId &&\n\t\t\t\t\tcustomTypeField !== newPath.fieldId\n\t\t\t\t) {\n\t\t\t\t\t// The id of the field has changed.\n\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t}\n\n\t\t\t\treturn customTypeField;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tmatchedCustomTypeId &&\n\t\t\t\tcustomTypeField.id === previousPath.fieldId &&\n\t\t\t\tcustomTypeField.id !== newPath.fieldId\n\t\t\t) {\n\t\t\t\t// The id of the field has changed. We don't exit return because there\n\t\t\t\t// might be other fields further down in nested custom types or groups\n\t\t\t\t// that need to be updated.\n\t\t\t\tcustomTypeField.id = newPath.fieldId;\n\t\t\t}\n\n\t\t\t// Group field\n\t\t\tif (\"fields\" in customTypeField) {\n\t\t\t\tif (\n\t\t\t\t\t!previousPath.groupId &&\n\t\t\t\t\t!newPath.groupId &&\n\t\t\t\t\tcustomTypeField.id === previousPath.fieldId &&\n\t\t\t\t\tcustomTypeField.id !== newPath.fieldId\n\t\t\t\t) {\n\t\t\t\t\t// Only the id of the group has changed. Group id is not defined, so\n\t\t\t\t\t// we can return early.\n\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t}\n\n\t\t\t\tconst matchedGroupId = customTypeField.id === previousPath.groupId;\n\n\t\t\t\tif (\n\t\t\t\t\tpreviousPath.groupId &&\n\t\t\t\t\tnewPath.groupId &&\n\t\t\t\t\tmatchedGroupId &&\n\t\t\t\t\tcustomTypeField.id !== newPath.groupId\n\t\t\t\t) {\n\t\t\t\t\t// The id of the group field has changed, so we update it. We don't\n\t\t\t\t\t// return because there are group fields that may need to be updated.\n\t\t\t\t\tcustomTypeField.id = newPath.groupId;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...customTypeField,\n\t\t\t\t\tfields: customTypeField.fields.map((groupFieldArg) => {\n\t\t\t\t\t\tconst groupField = shallowCloneIfObject(groupFieldArg);\n\n\t\t\t\t\t\t// Regular field inside a group field\n\t\t\t\t\t\tif (typeof groupField === \"string\") {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmatchedGroupId &&\n\t\t\t\t\t\t\t\tgroupField === previousPath.fieldId &&\n\t\t\t\t\t\t\t\tgroupField !== newPath.fieldId\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// The id of the field inside the group has changed.\n\t\t\t\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn groupField;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Content relationship field inside a group field\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...groupField,\n\t\t\t\t\t\t\tfields: updateContentRelationshipFields({\n\t\t\t\t\t\t\t\tcustomtypes: groupField.customtypes,\n\t\t\t\t\t\t\t\tpreviousPath,\n\t\t\t\t\t\t\t\tnewPath,\n\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// Content relationship field\n\t\t\treturn {\n\t\t\t\t...customTypeField,\n\t\t\t\tcustomtypes: updateContentRelationshipFields({\n\t\t\t\t\tcustomtypes: customTypeField.customtypes,\n\t\t\t\t\tpreviousPath,\n\t\t\t\t\tnewPath,\n\t\t\t\t}),\n\t\t\t};\n\t\t}),\n\t};\n}\n\nfunction updateContentRelationshipFields(args: {\n\tcustomtypes: readonly (\n\t\t| string\n\t\t| {\n\t\t\t\tid: string;\n\t\t\t\tfields: readonly (string | { id: string; fields: readonly string[] })[];\n\t\t }\n\t)[];\n\tpreviousPath: CrUpdatePathIds;\n\tnewPath: CrUpdatePathIds;\n}) {\n\tconst { customtypes, previousPath, newPath } = args;\n\n\treturn customtypes.map((nestedCtArg) => {\n\t\tconst nestedCt = shallowCloneIfObject(nestedCtArg);\n\n\t\tif (\n\t\t\ttypeof nestedCt === \"string\" ||\n\t\t\t// Since we are entering a new custom type, if the previous id\n\t\t\t// doesn't match, we can return early, because it's not the\n\t\t\t// custom type we are looking for.\n\t\t\tnestedCt.id !== previousPath.customTypeId\n\t\t) {\n\t\t\treturn nestedCt;\n\t\t}\n\n\t\treturn {\n\t\t\t...nestedCt,\n\t\t\tfields: nestedCt.fields.map((nestedCtFieldArg) => {\n\t\t\t\tconst nestedCtField = shallowCloneIfObject(nestedCtFieldArg);\n\n\t\t\t\t// Regular field\n\t\t\t\tif (typeof nestedCtField === \"string\") {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnestedCtField === previousPath.fieldId &&\n\t\t\t\t\t\tnestedCtField !== newPath.fieldId\n\t\t\t\t\t) {\n\t\t\t\t\t\t// The id of the field has changed.\n\t\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn nestedCtField;\n\t\t\t\t}\n\n\t\t\t\t// Group field\n\n\t\t\t\tif (\n\t\t\t\t\tnestedCtField.id === previousPath.fieldId &&\n\t\t\t\t\tnestedCtField.id !== newPath.fieldId\n\t\t\t\t) {\n\t\t\t\t\t// The id of the field has changed.\n\t\t\t\t\tnestedCtField.id = newPath.fieldId;\n\t\t\t\t}\n\n\t\t\t\t// Further down the path, the field can only be a group field. So if we have\n\t\t\t\t// no group id defined, no need to continue.\n\t\t\t\tif (\n\t\t\t\t\t!previousPath.groupId ||\n\t\t\t\t\t!newPath.groupId ||\n\t\t\t\t\tnestedCtField.id !== previousPath.groupId\n\t\t\t\t) {\n\t\t\t\t\treturn nestedCtField;\n\t\t\t\t}\n\n\t\t\t\tif (nestedCtField.id !== newPath.groupId) {\n\t\t\t\t\t// The id of the group has changed.\n\t\t\t\t\tnestedCtField.id = newPath.groupId;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...nestedCtField,\n\t\t\t\t\tfields: nestedCtField.fields.map((nestedCtGroupFieldId) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnestedCtGroupFieldId === previousPath.fieldId &&\n\t\t\t\t\t\t\tnestedCtGroupFieldId !== newPath.fieldId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// The id of the field inside the group has changed.\n\t\t\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn nestedCtGroupFieldId;\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t});\n}\n\n/**\n * Update the Content Relationship API IDs of a single field. The change is\n * determined by the `previousPath` and `newPath` properties.\n */\nfunction updateFieldContentRelationships<\n\tT extends UID | NestableWidget | Group | NestedGroup,\n>(args: { field: T } & CustomTypeFieldIdChangedMeta): T {\n\tconst { field, ...updateMeta } = args;\n\tif (\n\t\tfield.type !== \"Link\" ||\n\t\tfield.config?.select !== \"document\" ||\n\t\t!field.config?.customtypes\n\t) {\n\t\t// not a content relationship field\n\t\treturn field;\n\t}\n\n\tconst newCustomTypes = field.config.customtypes.map((customType) => {\n\t\treturn updateCRCustomType({ ...updateMeta, customType });\n\t});\n\n\treturn {\n\t\t...field,\n\t\tconfig: { ...field.config, customtypes: newCustomTypes },\n\t};\n}\n\nexport function updateCustomTypeContentRelationships(\n\targs: {\n\t\tmodels: { model: CustomType }[];\n\t\tonUpdate: (model: { previousModel: CustomType; model: CustomType }) => void;\n\t} & CustomTypeFieldIdChangedMeta,\n): void {\n\tconst { models, previousPath, newPath, onUpdate } = args;\n\n\tfor (const { model: customType } of models) {\n\t\tconst updatedCustomType = traverseCustomType({\n\t\t\tcustomType,\n\t\t\tonField: ({ field }) => {\n\t\t\t\treturn updateFieldContentRelationships({\n\t\t\t\t\tfield,\n\t\t\t\t\tpreviousPath,\n\t\t\t\t\tnewPath,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\n\t\tif (!isEqualModel(customType, updatedCustomType)) {\n\t\t\tonUpdate({ model: updatedCustomType, previousModel: customType });\n\t\t}\n\t}\n}\n\nexport function updateSharedSliceContentRelationships(\n\targs: {\n\t\tmodels: { model: SharedSlice }[];\n\t\tonUpdate: (model: {\n\t\t\tpreviousModel: SharedSlice;\n\t\t\tmodel: SharedSlice;\n\t\t}) => void;\n\t} & CustomTypeFieldIdChangedMeta,\n): void {\n\tconst { models, previousPath, newPath, onUpdate } = args;\n\n\tfor (const { model: slice } of models) {\n\t\tconst updateSlice = traverseSharedSlice({\n\t\t\tpath: [],\n\t\t\tslice,\n\t\t\tonField: ({ field }) => {\n\t\t\t\treturn updateFieldContentRelationships({\n\t\t\t\t\tfield,\n\t\t\t\t\tpreviousPath,\n\t\t\t\t\tnewPath,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\n\t\tif (!isEqualModel(slice, updateSlice)) {\n\t\t\tonUpdate({ model: updateSlice, previousModel: slice });\n\t\t}\n\t}\n}\n\ninterface CrUpdatePathIds {\n\tcustomTypeId: string;\n\tgroupId: string | undefined;\n\tfieldId: string;\n}\n\nfunction getPathIds(path: PathWithCustomType): CrUpdatePathIds {\n\tif (path.length < 2) {\n\t\tthrow new Error(\n\t\t\t`Unexpected path length ${\n\t\t\t\tpath.length\n\t\t\t}. Expected at least 2 segments (got: ${path.join(\".\")}).`,\n\t\t);\n\t}\n\n\tconst [customTypeId, groupOrFieldId, fieldId] = path;\n\n\treturn {\n\t\tcustomTypeId,\n\t\t/**\n\t\t * Id of a changed group. If it's defined, it means that a group or a field\n\t\t * inside a group had its API ID renamed. It's defined when the path has a\n\t\t * third element (e.g. `[\"customtypeA\", \"groupA\", \"fieldA\"]`).\n\t\t */\n\t\tgroupId: fieldId ? groupOrFieldId : undefined,\n\t\tfieldId: fieldId || groupOrFieldId,\n\t};\n}\n\nfunction isEqualModel<T extends CustomType | SharedSlice>(\n\tmodelA: T,\n\tmodelB: T,\n): boolean {\n\treturn JSON.stringify(modelA) === JSON.stringify(modelB);\n}\n\nfunction shallowCloneIfObject<T>(value: T): T {\n\tif (typeof value === \"object\") {\n\t\treturn { ...value };\n\t}\n\n\treturn value;\n}\n"],"names":["errors","_a"],"mappings":"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"}
1
+ {"version":3,"file":"CustomTypesManager.js","sources":["../../../../src/managers/customTypes/CustomTypesManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport * as prismicCustomTypesClient from \"@prismicio/custom-types-client\";\nimport {\n\tCustomType,\n\tGroup,\n\tLinkConfig,\n\tNestableWidget,\n\tNestedGroup,\n\tSharedSlice,\n\tUID,\n\ttraverseCustomType,\n\ttraverseSharedSlice,\n} from \"@prismicio/types-internal/lib/customtypes\";\nimport {\n\tCallHookReturnType,\n\tCustomTypeCreateHook,\n\tCustomTypeCreateHookData,\n\tCustomTypeReadHookData,\n\tCustomTypeRenameHook,\n\tCustomTypeRenameHookData,\n\tCustomTypeUpdateHook,\n\tCustomTypeUpdateHookData,\n\tHookError,\n} from \"@slicemachine/plugin-kit\";\nimport { z } from \"zod\";\n\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\nimport fetch from \"../../lib/fetch\";\n\nimport { OnlyHookErrors } from \"../../types\";\nimport { API_ENDPOINTS } from \"../../constants/API_ENDPOINTS\";\nimport { SLICE_MACHINE_USER_AGENT } from \"../../constants/SLICE_MACHINE_USER_AGENT\";\nimport { UnauthorizedError } from \"../../errors\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { CustomTypeFormat } from \"./types\";\n\ntype SliceMachineManagerReadCustomTypeLibraryReturnType = {\n\tids: string[];\n\terrors: (DecodeError | HookError)[];\n};\n\ntype CustomTypesManagerReadAllCustomTypesArgs = {\n\tformat: CustomTypeFormat;\n};\n\ntype SliceMachineManagerReadAllCustomTypeReturnType = {\n\tmodels: { model: CustomType }[];\n\terrors: (DecodeError | HookError)[];\n};\n\ntype SliceMachineManagerReadCustomTypeReturnType = {\n\tmodel: CustomType | undefined;\n\terrors: (DecodeError | HookError)[];\n};\n\ntype SliceMachineManagerPushCustomTypeArgs = {\n\tid: string;\n\tuserAgent?: string;\n};\n\ntype SliceMachineManagerReadCustomTypeMocksConfigArgs = {\n\tcustomTypeID: string;\n};\n\ntype SliceMachineManagerReadCustomTypeMocksConfigArgsReturnType = {\n\t// TODO\n\tmocksConfig?: Record<string, unknown>;\n\terrors: HookError[];\n};\n\ntype SliceMachineManagerUpdateCustomTypeMocksConfigArgs = {\n\tcustomTypeID: string;\n\t// TODO\n\tmocksConfig: Record<string, unknown>;\n};\n\n/** `[field]` or `[group, field]` – path **inside** the Custom Type */\ntype PathWithoutCustomType = [string] | [string, string];\n\ntype SliceMachineManagerUpdateCustomTypeFieldIdChanged = {\n\t/**\n\t * Previous path of the changed field, excluding the custom type id. Can be\n\t * used to identify the field that had an API ID rename (e.g. [\"fieldA\"] or\n\t * [\"groupA\", \"fieldA\"])\n\t */\n\tpreviousPath: PathWithoutCustomType;\n\t/**\n\t * New path of the changed field, excluding the custom type id. Can be used to\n\t * identify the field that had an API ID rename (e.g. [\"fieldB\"] or [\"groupA\",\n\t * \"fieldB\"])\n\t */\n\tnewPath: PathWithoutCustomType;\n};\n\ntype SliceMachineManagerUpdateCustomTypeArgs = CustomTypeUpdateHookData & {\n\tupdateMeta?: {\n\t\tfieldIdChanged?: SliceMachineManagerUpdateCustomTypeFieldIdChanged;\n\t};\n};\n\ntype SliceMachineManagerUpdateCustomTypeMocksConfigArgsReturnType = {\n\terrors: HookError[];\n};\n\ntype CustomTypesMachineManagerDeleteCustomTypeArgs = {\n\tid: string;\n};\n\ntype CustomTypesMachineManagerDeleteCustomTypeReturnType = {\n\terrors: (DecodeError | HookError)[];\n};\n\ntype CustomTypesMachineManagerUpdateCustomTypeReturnType = {\n\terrors: (DecodeError | HookError)[];\n};\n\n/** `[ct, field]` or `[ct, group, field]` – path **with** Custom Type ID */\ntype PathWithCustomType = [string, string] | [string, string, string];\n\ntype CustomTypeFieldIdChangedMeta = {\n\tpreviousPath: PathWithCustomType;\n\tnewPath: PathWithCustomType;\n};\n\ntype LinkCustomType = NonNullable<LinkConfig[\"customtypes\"]>[number];\n\nexport class CustomTypesManager extends BaseManager {\n\tasync readCustomTypeLibrary(): Promise<SliceMachineManagerReadCustomTypeLibraryReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type-library:read\",\n\t\t\tundefined,\n\t\t);\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.type({\n\t\t\t\tids: t.array(t.string),\n\t\t\t}),\n\t\t\thookResult,\n\t\t);\n\n\t\treturn {\n\t\t\tids: data[0]?.ids || [],\n\t\t\terrors,\n\t\t};\n\t}\n\n\tasync readAllCustomTypes(\n\t\targs?: CustomTypesManagerReadAllCustomTypesArgs,\n\t): Promise<SliceMachineManagerReadAllCustomTypeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst res: SliceMachineManagerReadAllCustomTypeReturnType = {\n\t\t\tmodels: [],\n\t\t\terrors: [],\n\t\t};\n\n\t\tconst { ids, errors } = await this.readCustomTypeLibrary();\n\t\tres.errors = [...res.errors, ...errors];\n\n\t\tif (ids) {\n\t\t\tfor (const id of ids) {\n\t\t\t\tconst { model, errors } = await this.readCustomType({ id });\n\t\t\t\tres.errors = [...res.errors, ...errors];\n\n\t\t\t\tif (model && (!args || args.format === model.format)) {\n\t\t\t\t\tres.models.push({ model });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn res;\n\t}\n\n\tasync createCustomType(\n\t\targs: CustomTypeCreateHookData,\n\t): Promise<OnlyHookErrors<CallHookReturnType<CustomTypeCreateHook>>> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:create\",\n\t\t\targs,\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync readCustomType(\n\t\targs: CustomTypeReadHookData,\n\t): Promise<SliceMachineManagerReadCustomTypeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:read\",\n\t\t\targs,\n\t\t);\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.type({\n\t\t\t\tmodel: CustomType,\n\t\t\t}),\n\t\t\thookResult,\n\t\t);\n\n\t\treturn {\n\t\t\tmodel: data[0]?.model,\n\t\t\terrors,\n\t\t};\n\t}\n\n\t/**\n\t * Update the Content Relationship API IDs for all existing custom types and\n\t * slices. The change is determined by properties inside the `updateMeta`\n\t * property.\n\t */\n\tprivate async updateContentRelationships(\n\t\targs: {\n\t\t\tmodel: CustomType;\n\t\t} & SliceMachineManagerUpdateCustomTypeFieldIdChanged,\n\t): Promise<\n\t\tOnlyHookErrors<CallHookReturnType<CustomTypeUpdateHook>> & {\n\t\t\trollback?: () => Promise<void>;\n\t\t}\n\t> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst {\n\t\t\tmodel,\n\t\t\tpreviousPath: previousFieldPath,\n\t\t\tnewPath: newFieldPath,\n\t\t} = args;\n\n\t\tif (previousFieldPath.join(\".\") !== newFieldPath.join(\".\")) {\n\t\t\tconst { id: ctId } = model;\n\t\t\tconst previousPath: PathWithCustomType = [ctId, ...previousFieldPath];\n\t\t\tconst newPath: PathWithCustomType = [ctId, ...newFieldPath];\n\n\t\t\tconst crUpdates: {\n\t\t\t\tupdatePromise: Promise<{ errors: HookError[] }>;\n\t\t\t\trollback: () => void;\n\t\t\t}[] = [];\n\n\t\t\t// Find existing content relationships that link to the renamed field id in\n\t\t\t// any custom type and update them to use the new one.\n\t\t\tconst customTypes = await this.readAllCustomTypes();\n\n\t\t\tupdateCustomTypeContentRelationships({\n\t\t\t\tmodels: customTypes.models,\n\t\t\t\tonUpdate: ({ previousModel, model: updatedModel }) => {\n\t\t\t\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\t\t\t\tcrUpdates.push({\n\t\t\t\t\t\tupdatePromise: this.sliceMachinePluginRunner?.callHook(\n\t\t\t\t\t\t\t\"custom-type:update\",\n\t\t\t\t\t\t\t{ model: updatedModel },\n\t\t\t\t\t\t),\n\t\t\t\t\t\trollback: () => {\n\t\t\t\t\t\t\tthis.sliceMachinePluginRunner?.callHook(\"custom-type:update\", {\n\t\t\t\t\t\t\t\tmodel: previousModel,\n\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\tpreviousPath,\n\t\t\t\tnewPath,\n\t\t\t});\n\n\t\t\t// Find existing slice with content relationships that link to the renamed\n\t\t\t// field id in all libraries and update them to use the new one.\n\t\t\tconst { libraries } = await this.slices.readAllSliceLibraries();\n\n\t\t\tfor (const library of libraries) {\n\t\t\t\tconst slices = await this.slices.readAllSlicesForLibrary({\n\t\t\t\t\tlibraryID: library.libraryID,\n\t\t\t\t});\n\n\t\t\t\tupdateSharedSliceContentRelationships({\n\t\t\t\t\tmodels: slices.models,\n\t\t\t\t\tonUpdate: ({ previousModel, model: updatedModel }) => {\n\t\t\t\t\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\t\t\t\t\tcrUpdates.push({\n\t\t\t\t\t\t\tupdatePromise: this.sliceMachinePluginRunner?.callHook(\n\t\t\t\t\t\t\t\t\"slice:update\",\n\t\t\t\t\t\t\t\t{ libraryID: library.libraryID, model: updatedModel },\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\trollback: () => {\n\t\t\t\t\t\t\t\tthis.sliceMachinePluginRunner?.callHook(\"slice:update\", {\n\t\t\t\t\t\t\t\t\tlibraryID: library.libraryID,\n\t\t\t\t\t\t\t\t\tmodel: previousModel,\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\t\t\t\t\tpreviousPath,\n\t\t\t\t\tnewPath,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Process all the Content Relationship updates at once.\n\t\t\tconst crUpdatesResult = await Promise.all(\n\t\t\t\tcrUpdates.map((update) => update.updatePromise),\n\t\t\t);\n\n\t\t\tif (crUpdatesResult.some((result) => result.errors.length > 0)) {\n\t\t\t\treturn {\n\t\t\t\t\terrors: crUpdatesResult.flatMap((result) => result.errors),\n\t\t\t\t\trollback: async () => {\n\t\t\t\t\t\tawait Promise.all(crUpdates.map((update) => update.rollback()));\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn { errors: [] };\n\t}\n\n\tasync updateCustomType(\n\t\targs: SliceMachineManagerUpdateCustomTypeArgs,\n\t): Promise<CustomTypesMachineManagerUpdateCustomTypeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\t\tconst { model } = args;\n\t\tconst { fieldIdChanged } = args.updateMeta ?? {};\n\n\t\tlet previousCustomType: CustomType | undefined;\n\n\t\tif (fieldIdChanged) {\n\t\t\tconst customTypeRead = await this.readCustomType({ id: model.id });\n\n\t\t\tif (customTypeRead.errors.length > 0) {\n\t\t\t\treturn { errors: customTypeRead.errors };\n\t\t\t}\n\t\t\tif (!customTypeRead.model) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`readCustomType succeeded reading custom type ${model.id} but model is undefined.`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tpreviousCustomType = customTypeRead.model;\n\t\t}\n\n\t\tconst customTypeUpdateResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:update\",\n\t\t\t{ model },\n\t\t);\n\n\t\tif (customTypeUpdateResult.errors.length > 0) {\n\t\t\treturn { errors: customTypeUpdateResult.errors };\n\t\t}\n\n\t\tif (previousCustomType && fieldIdChanged) {\n\t\t\tconst crUpdateResult = await this.updateContentRelationships({\n\t\t\t\t...fieldIdChanged,\n\t\t\t\tmodel: previousCustomType,\n\t\t\t});\n\n\t\t\tif (crUpdateResult.errors.length > 0) {\n\t\t\t\t// put the previous custom type back\n\t\t\t\tawait this.sliceMachinePluginRunner?.callHook(\"custom-type:update\", {\n\t\t\t\t\tmodel: previousCustomType,\n\t\t\t\t});\n\t\t\t\t// revert the content relationships updates\n\t\t\t\tawait crUpdateResult.rollback?.();\n\n\t\t\t\treturn { errors: crUpdateResult.errors };\n\t\t\t}\n\t\t}\n\n\t\treturn { errors: [] };\n\t}\n\n\tasync renameCustomType(\n\t\targs: CustomTypeRenameHookData,\n\t): Promise<OnlyHookErrors<CallHookReturnType<CustomTypeRenameHook>>> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:rename\",\n\t\t\targs,\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync deleteCustomType(\n\t\targs: CustomTypesMachineManagerDeleteCustomTypeArgs,\n\t): Promise<CustomTypesMachineManagerDeleteCustomTypeReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst { model, errors: readCustomTypeErrors } = await this.readCustomType({\n\t\t\tid: args.id,\n\t\t});\n\n\t\tif (model) {\n\t\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\t\"custom-type:delete\",\n\t\t\t\t{ model },\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\terrors: hookResult.errors,\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\terrors: readCustomTypeErrors,\n\t\t\t};\n\t\t}\n\t}\n\n\tasync pushCustomType(\n\t\targs: SliceMachineManagerPushCustomTypeArgs,\n\t): Promise<void> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst authenticationToken = await this.user.getAuthenticationToken();\n\t\tconst repositoryName = await this.project.getResolvedRepositoryName();\n\n\t\t// TODO: Handle errors\n\t\tconst { model } = await this.readCustomType({ id: args.id });\n\n\t\tif (model) {\n\t\t\t// TODO: Create a single shared client.\n\t\t\tconst client = prismicCustomTypesClient.createClient({\n\t\t\t\tendpoint: API_ENDPOINTS.PrismicModels,\n\t\t\t\trepositoryName,\n\t\t\t\ttoken: authenticationToken,\n\t\t\t\tfetch,\n\t\t\t\tfetchOptions: {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t\"User-Agent\": args.userAgent || SLICE_MACHINE_USER_AGENT,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\n\t\t\ttry {\n\t\t\t\t// Check if Custom Type already exists on the repository.\n\t\t\t\tawait client.getCustomTypeByID(args.id);\n\n\t\t\t\t// If it exists on the repository, update it.\n\t\t\t\tawait client.updateCustomType(model);\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof prismicCustomTypesClient.NotFoundError) {\n\t\t\t\t\t// If it doesn't exist on the repository, insert it.\n\t\t\t\t\tawait client.insertCustomType(model);\n\t\t\t\t} else if (error instanceof prismicCustomTypesClient.ForbiddenError) {\n\t\t\t\t\tthrow new UnauthorizedError(\n\t\t\t\t\t\t\"You do not have access to push types to this Prismic repository.\",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: Remove\n\tasync readCustomTypeMocksConfig(\n\t\targs: SliceMachineManagerReadCustomTypeMocksConfigArgs,\n\t): Promise<SliceMachineManagerReadCustomTypeMocksConfigArgsReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:asset:read\",\n\t\t\t{\n\t\t\t\tcustomTypeID: args.customTypeID,\n\t\t\t\tassetID: \"mocks.config.json\",\n\t\t\t},\n\t\t);\n\t\tconst data = hookResult.data[0]?.data;\n\n\t\t// TODO: Validate the returned data.\n\n\t\tif (data) {\n\t\t\treturn {\n\t\t\t\tmocksConfig: JSON.parse(data.toString()),\n\t\t\t\terrors: hookResult.errors,\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tmocksConfig: undefined,\n\t\t\t\terrors: hookResult.errors,\n\t\t\t};\n\t\t}\n\t}\n\n\t// TODO: Remove\n\tasync updateCustomTypeMocksConfig(\n\t\targs: SliceMachineManagerUpdateCustomTypeMocksConfigArgs,\n\t): Promise<SliceMachineManagerUpdateCustomTypeMocksConfigArgsReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"custom-type:asset:update\",\n\t\t\t{\n\t\t\t\tcustomTypeID: args.customTypeID,\n\t\t\t\tasset: {\n\t\t\t\t\tid: \"mocks.config.json\",\n\t\t\t\t\tdata: Buffer.from(JSON.stringify(args.mocksConfig, null, \"\\t\")),\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\n\t\treturn {\n\t\t\terrors: hookResult.errors,\n\t\t};\n\t}\n\n\tasync fetchRemoteCustomTypes(): Promise<CustomType[]> {\n\t\tconst authenticationToken = await this.user.getAuthenticationToken();\n\t\tconst repositoryName = await this.project.getResolvedRepositoryName();\n\n\t\tconst client = prismicCustomTypesClient.createClient({\n\t\t\tendpoint: API_ENDPOINTS.PrismicModels,\n\t\t\trepositoryName,\n\t\t\ttoken: authenticationToken,\n\t\t\tfetch,\n\t\t\tfetchOptions: {\n\t\t\t\theaders: {\n\t\t\t\t\t\"User-Agent\": SLICE_MACHINE_USER_AGENT,\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\n\t\treturn await client.getAllCustomTypes();\n\t}\n\n\tasync inferSlice({\n\t\timageUrl,\n\t}: {\n\t\timageUrl: string;\n\t}): Promise<InferSliceResponse> {\n\t\tconst authToken = await this.user.getAuthenticationToken();\n\t\tconst headers = {\n\t\t\tAuthorization: `Bearer ${authToken}`,\n\t\t};\n\n\t\tconst repository = await this.project.getResolvedRepositoryName();\n\t\tconst searchParams = new URLSearchParams({\n\t\t\trepository,\n\t\t});\n\n\t\tconst url = new URL(\"./slices/infer\", API_ENDPOINTS.CustomTypeService);\n\t\turl.search = searchParams.toString();\n\n\t\tconst response = await fetch(url.toString(), {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: headers,\n\t\t\tbody: JSON.stringify({ imageUrl }),\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to infer slice: ${response.statusText}`);\n\t\t}\n\n\t\tconst json = await response.json();\n\n\t\treturn InferSliceResponse.parse(json);\n\t}\n}\n\ntype InferSliceResponse = z.infer<typeof InferSliceResponse>;\n\nconst InferSliceResponse = z.object({\n\tslice: z.custom().transform((value, ctx) => {\n\t\tconst result = SharedSlice.decode(value);\n\t\tif (result._tag === \"Right\") {\n\t\t\treturn result.right;\n\t\t}\n\t\tctx.addIssue({\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tmessage: `Invalid shared slice: ${JSON.stringify(value, null, 2)}`,\n\t\t});\n\n\t\treturn z.NEVER;\n\t}),\n\tlangSmithUrl: z.string().url().optional(),\n});\n\nfunction updateCRCustomType(\n\targs: { customType: LinkCustomType } & CustomTypeFieldIdChangedMeta,\n): LinkCustomType {\n\tconst previousPath = getPathIds(args.previousPath);\n\tconst newPath = getPathIds(args.newPath);\n\n\tif (!previousPath.customTypeId || !newPath.customTypeId) {\n\t\tthrow new Error(\n\t\t\t`Could not find a customtype id in previousPath (${args.previousPath.join(\n\t\t\t\t\".\",\n\t\t\t)}) and/or newPath (${args.newPath.join(\n\t\t\t\t\".\",\n\t\t\t)}), which should not be possible.`,\n\t\t);\n\t}\n\n\tif (!previousPath.fieldId || !newPath.fieldId) {\n\t\tthrow new Error(\n\t\t\t`Could not find a field id in previousPath (${args.previousPath.join(\n\t\t\t\t\".\",\n\t\t\t)}) and/or newPath (${args.newPath.join(\n\t\t\t\t\".\",\n\t\t\t)}), which should not be possible.`,\n\t\t);\n\t}\n\n\tconst customType = shallowCloneIfObject(args.customType);\n\n\tif (typeof customType === \"string\") {\n\t\t// Legacy format support, we don't have anything to update here.\n\t\treturn customType;\n\t}\n\n\tconst matchedCustomTypeId = customType.id === previousPath.customTypeId;\n\n\treturn {\n\t\t...customType,\n\t\tfields: customType.fields.map((fieldArg) => {\n\t\t\tconst customTypeField = shallowCloneIfObject(fieldArg);\n\n\t\t\t// Regular field\n\t\t\tif (typeof customTypeField === \"string\") {\n\t\t\t\tif (\n\t\t\t\t\tmatchedCustomTypeId &&\n\t\t\t\t\tcustomTypeField === previousPath.fieldId &&\n\t\t\t\t\tcustomTypeField !== newPath.fieldId\n\t\t\t\t) {\n\t\t\t\t\t// The id of the field has changed.\n\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t}\n\n\t\t\t\treturn customTypeField;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tmatchedCustomTypeId &&\n\t\t\t\tcustomTypeField.id === previousPath.fieldId &&\n\t\t\t\tcustomTypeField.id !== newPath.fieldId\n\t\t\t) {\n\t\t\t\t// The id of the field has changed. We don't exit return because there\n\t\t\t\t// might be other fields further down in nested custom types or groups\n\t\t\t\t// that need to be updated.\n\t\t\t\tcustomTypeField.id = newPath.fieldId;\n\t\t\t}\n\n\t\t\t// Group field\n\t\t\tif (\"fields\" in customTypeField) {\n\t\t\t\tif (\n\t\t\t\t\t!previousPath.groupId &&\n\t\t\t\t\t!newPath.groupId &&\n\t\t\t\t\tcustomTypeField.id === previousPath.fieldId &&\n\t\t\t\t\tcustomTypeField.id !== newPath.fieldId\n\t\t\t\t) {\n\t\t\t\t\t// Only the id of the group has changed. Group id is not defined, so\n\t\t\t\t\t// we can return early.\n\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t}\n\n\t\t\t\tconst matchedGroupId = customTypeField.id === previousPath.groupId;\n\n\t\t\t\tif (\n\t\t\t\t\tpreviousPath.groupId &&\n\t\t\t\t\tnewPath.groupId &&\n\t\t\t\t\tmatchedGroupId &&\n\t\t\t\t\tcustomTypeField.id !== newPath.groupId\n\t\t\t\t) {\n\t\t\t\t\t// The id of the group field has changed, so we update it. We don't\n\t\t\t\t\t// return because there are group fields that may need to be updated.\n\t\t\t\t\tcustomTypeField.id = newPath.groupId;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...customTypeField,\n\t\t\t\t\tfields: customTypeField.fields.map((groupFieldArg) => {\n\t\t\t\t\t\tconst groupField = shallowCloneIfObject(groupFieldArg);\n\n\t\t\t\t\t\t// Regular field inside a group field\n\t\t\t\t\t\tif (typeof groupField === \"string\") {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tmatchedGroupId &&\n\t\t\t\t\t\t\t\tgroupField === previousPath.fieldId &&\n\t\t\t\t\t\t\t\tgroupField !== newPath.fieldId\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// The id of the field inside the group has changed.\n\t\t\t\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn groupField;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Content relationship field inside a group field\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...groupField,\n\t\t\t\t\t\t\tfields: updateContentRelationshipFields({\n\t\t\t\t\t\t\t\tcustomtypes: groupField.customtypes,\n\t\t\t\t\t\t\t\tpreviousPath,\n\t\t\t\t\t\t\t\tnewPath,\n\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// Content relationship field\n\t\t\treturn {\n\t\t\t\t...customTypeField,\n\t\t\t\tcustomtypes: updateContentRelationshipFields({\n\t\t\t\t\tcustomtypes: customTypeField.customtypes,\n\t\t\t\t\tpreviousPath,\n\t\t\t\t\tnewPath,\n\t\t\t\t}),\n\t\t\t};\n\t\t}),\n\t};\n}\n\nfunction updateContentRelationshipFields(args: {\n\tcustomtypes: readonly (\n\t\t| string\n\t\t| {\n\t\t\t\tid: string;\n\t\t\t\tfields: readonly (string | { id: string; fields: readonly string[] })[];\n\t\t }\n\t)[];\n\tpreviousPath: CrUpdatePathIds;\n\tnewPath: CrUpdatePathIds;\n}) {\n\tconst { customtypes, previousPath, newPath } = args;\n\n\treturn customtypes.map((nestedCtArg) => {\n\t\tconst nestedCt = shallowCloneIfObject(nestedCtArg);\n\n\t\tif (\n\t\t\ttypeof nestedCt === \"string\" ||\n\t\t\t// Since we are entering a new custom type, if the previous id\n\t\t\t// doesn't match, we can return early, because it's not the\n\t\t\t// custom type we are looking for.\n\t\t\tnestedCt.id !== previousPath.customTypeId\n\t\t) {\n\t\t\treturn nestedCt;\n\t\t}\n\n\t\treturn {\n\t\t\t...nestedCt,\n\t\t\tfields: nestedCt.fields.map((nestedCtFieldArg) => {\n\t\t\t\tconst nestedCtField = shallowCloneIfObject(nestedCtFieldArg);\n\n\t\t\t\t// Regular field\n\t\t\t\tif (typeof nestedCtField === \"string\") {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnestedCtField === previousPath.fieldId &&\n\t\t\t\t\t\tnestedCtField !== newPath.fieldId\n\t\t\t\t\t) {\n\t\t\t\t\t\t// The id of the field has changed.\n\t\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn nestedCtField;\n\t\t\t\t}\n\n\t\t\t\t// Group field\n\n\t\t\t\tif (\n\t\t\t\t\tnestedCtField.id === previousPath.fieldId &&\n\t\t\t\t\tnestedCtField.id !== newPath.fieldId\n\t\t\t\t) {\n\t\t\t\t\t// The id of the field has changed.\n\t\t\t\t\tnestedCtField.id = newPath.fieldId;\n\t\t\t\t}\n\n\t\t\t\t// Further down the path, the field can only be a group field. So if we have\n\t\t\t\t// no group id defined, no need to continue.\n\t\t\t\tif (\n\t\t\t\t\t!previousPath.groupId ||\n\t\t\t\t\t!newPath.groupId ||\n\t\t\t\t\tnestedCtField.id !== previousPath.groupId\n\t\t\t\t) {\n\t\t\t\t\treturn nestedCtField;\n\t\t\t\t}\n\n\t\t\t\tif (nestedCtField.id !== newPath.groupId) {\n\t\t\t\t\t// The id of the group has changed.\n\t\t\t\t\tnestedCtField.id = newPath.groupId;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...nestedCtField,\n\t\t\t\t\tfields: nestedCtField.fields.map((nestedCtGroupFieldId) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnestedCtGroupFieldId === previousPath.fieldId &&\n\t\t\t\t\t\t\tnestedCtGroupFieldId !== newPath.fieldId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// The id of the field inside the group has changed.\n\t\t\t\t\t\t\treturn newPath.fieldId;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn nestedCtGroupFieldId;\n\t\t\t\t\t}),\n\t\t\t\t};\n\t\t\t}),\n\t\t};\n\t});\n}\n\n/**\n * Update the Content Relationship API IDs of a single field. The change is\n * determined by the `previousPath` and `newPath` properties.\n */\nfunction updateFieldContentRelationships<\n\tT extends UID | NestableWidget | Group | NestedGroup,\n>(args: { field: T } & CustomTypeFieldIdChangedMeta): T {\n\tconst { field, ...updateMeta } = args;\n\tif (\n\t\tfield.type !== \"Link\" ||\n\t\tfield.config?.select !== \"document\" ||\n\t\t!field.config?.customtypes\n\t) {\n\t\t// not a content relationship field\n\t\treturn field;\n\t}\n\n\tconst newCustomTypes = field.config.customtypes.map((customType) => {\n\t\treturn updateCRCustomType({ ...updateMeta, customType });\n\t});\n\n\treturn {\n\t\t...field,\n\t\tconfig: { ...field.config, customtypes: newCustomTypes },\n\t};\n}\n\nexport function updateCustomTypeContentRelationships(\n\targs: {\n\t\tmodels: { model: CustomType }[];\n\t\tonUpdate: (model: { previousModel: CustomType; model: CustomType }) => void;\n\t} & CustomTypeFieldIdChangedMeta,\n): void {\n\tconst { models, previousPath, newPath, onUpdate } = args;\n\n\tfor (const { model: customType } of models) {\n\t\tconst updatedCustomType = traverseCustomType({\n\t\t\tcustomType,\n\t\t\tonField: ({ field }) => {\n\t\t\t\treturn updateFieldContentRelationships({\n\t\t\t\t\tfield,\n\t\t\t\t\tpreviousPath,\n\t\t\t\t\tnewPath,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\n\t\tif (!isEqualModel(customType, updatedCustomType)) {\n\t\t\tonUpdate({ model: updatedCustomType, previousModel: customType });\n\t\t}\n\t}\n}\n\nexport function updateSharedSliceContentRelationships(\n\targs: {\n\t\tmodels: { model: SharedSlice }[];\n\t\tonUpdate: (model: {\n\t\t\tpreviousModel: SharedSlice;\n\t\t\tmodel: SharedSlice;\n\t\t}) => void;\n\t} & CustomTypeFieldIdChangedMeta,\n): void {\n\tconst { models, previousPath, newPath, onUpdate } = args;\n\n\tfor (const { model: slice } of models) {\n\t\tconst updateSlice = traverseSharedSlice({\n\t\t\tpath: [],\n\t\t\tslice,\n\t\t\tonField: ({ field }) => {\n\t\t\t\treturn updateFieldContentRelationships({\n\t\t\t\t\tfield,\n\t\t\t\t\tpreviousPath,\n\t\t\t\t\tnewPath,\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\n\t\tif (!isEqualModel(slice, updateSlice)) {\n\t\t\tonUpdate({ model: updateSlice, previousModel: slice });\n\t\t}\n\t}\n}\n\ninterface CrUpdatePathIds {\n\tcustomTypeId: string;\n\tgroupId: string | undefined;\n\tfieldId: string;\n}\n\nfunction getPathIds(path: PathWithCustomType): CrUpdatePathIds {\n\tif (path.length < 2) {\n\t\tthrow new Error(\n\t\t\t`Unexpected path length ${\n\t\t\t\tpath.length\n\t\t\t}. Expected at least 2 segments (got: ${path.join(\".\")}).`,\n\t\t);\n\t}\n\n\tconst [customTypeId, groupOrFieldId, fieldId] = path;\n\n\treturn {\n\t\tcustomTypeId,\n\t\t/**\n\t\t * Id of a changed group. If it's defined, it means that a group or a field\n\t\t * inside a group had its API ID renamed. It's defined when the path has a\n\t\t * third element (e.g. `[\"customtypeA\", \"groupA\", \"fieldA\"]`).\n\t\t */\n\t\tgroupId: fieldId ? groupOrFieldId : undefined,\n\t\tfieldId: fieldId || groupOrFieldId,\n\t};\n}\n\nfunction isEqualModel<T extends CustomType | SharedSlice>(\n\tmodelA: T,\n\tmodelB: T,\n): boolean {\n\treturn JSON.stringify(modelA) === JSON.stringify(modelB);\n}\n\nfunction shallowCloneIfObject<T>(value: T): T {\n\tif (typeof value === \"object\") {\n\t\treturn { ...value };\n\t}\n\n\treturn value;\n}\n"],"names":["errors","_a"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentationManager.cjs","sources":["../../../../src/managers/documentation/DocumentationManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport {\n\tHookError,\n\tDocumentationReadHookData,\n\tDocumentation,\n} from \"@slicemachine/plugin-kit\";\nimport { BaseManager } from \"../BaseManager\";\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\n\ntype DocumentationManagerReadReturnType = {\n\tdocumentation: Documentation[];\n\terrors: (DecodeError | HookError)[];\n};\n\nconst documentationCodec = t.intersection([\n\tt.type({ content: t.string }),\n\tt.partial({\n\t\tlabel: t.string,\n\t}),\n]);\n\nexport class DocumentationManager extends BaseManager {\n\tasync read(\n\t\targs: DocumentationReadHookData,\n\t): Promise<DocumentationManagerReadReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"documentation:read\",\n\t\t\targs,\n\t\t);\n\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.array(documentationCodec),\n\t\t\thookResult,\n\t\t);\n\n\t\treturn {\n\t\t\tdocumentation: data.flat(),\n\t\t\terrors,\n\t\t};\n\t}\n}\n"],"names":["t","BaseManager","assertPluginsInitialized","decodeHookResult"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,qBAAqBA,aAAE,aAAa;AAAA,EACzCA,aAAE,KAAK,EAAE,SAASA,aAAE,QAAQ;AAAA,EAC5BA,aAAE,QAAQ;AAAA,IACT,OAAOA,aAAE;AAAA,EAAA,CACT;AACD,CAAA;AAEK,MAAO,6BAA6BC,YAAAA,YAAW;AAAA,EACpD,MAAM,KACL,MAA+B;AAE/BC,sDAAyB,KAAK,wBAAwB;AACtD,UAAM,aAAa,MAAM,KAAK,yBAAyB,SACtD,sBACA,IAAI;AAGC,UAAA,EAAE,MAAM,OAAM,IAAKC,kCACxBH,aAAE,MAAM,kBAAkB,GAC1B,UAAU;AAGJ,WAAA;AAAA,MACN,eAAe,KAAK,KAAM;AAAA,MAC1B;AAAA,IAAA;AAAA,EAEF;AACA;;"}
1
+ {"version":3,"file":"DocumentationManager.cjs","sources":["../../../../src/managers/documentation/DocumentationManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport {\n\tHookError,\n\tDocumentationReadHookData,\n\tDocumentation,\n} from \"@slicemachine/plugin-kit\";\nimport { BaseManager } from \"../BaseManager\";\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\n\ntype DocumentationManagerReadReturnType = {\n\tdocumentation: Documentation[];\n\terrors: (DecodeError | HookError)[];\n};\n\nconst documentationCodec = t.intersection([\n\tt.type({ content: t.string }),\n\tt.partial({\n\t\tlabel: t.string,\n\t}),\n]);\n\nexport class DocumentationManager extends BaseManager {\n\tasync read(\n\t\targs: DocumentationReadHookData,\n\t): Promise<DocumentationManagerReadReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"documentation:read\",\n\t\t\targs,\n\t\t);\n\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.array(documentationCodec),\n\t\t\thookResult,\n\t\t);\n\n\t\treturn {\n\t\t\tdocumentation: data.flat(),\n\t\t\terrors,\n\t\t};\n\t}\n}\n"],"names":["t","BaseManager","assertPluginsInitialized","decodeHookResult"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,qBAAqBA,aAAE,aAAa;AAAA,EACzCA,aAAE,KAAK,EAAE,SAASA,aAAE,QAAQ;AAAA,EAC5BA,aAAE,QAAQ;AAAA,IACT,OAAOA,aAAE;AAAA,EAAA,CACT;AACD,CAAA;AAEK,MAAO,6BAA6BC,YAAAA,YAAW;AAAA,EACpD,MAAM,KACL,MAA+B;AAE/BC,6BAAAA,yBAAyB,KAAK,wBAAwB;AACtD,UAAM,aAAa,MAAM,KAAK,yBAAyB,SACtD,sBACA,IAAI;AAGL,UAAM,EAAE,MAAM,WAAWC,iBAAAA,iBACxBH,aAAE,MAAM,kBAAkB,GAC1B,UAAU;AAGX,WAAO;AAAA,MACN,eAAe,KAAK,KAAA;AAAA,MACpB;AAAA,IAAA;AAAA,EAEF;AACA;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentationManager.js","sources":["../../../../src/managers/documentation/DocumentationManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport {\n\tHookError,\n\tDocumentationReadHookData,\n\tDocumentation,\n} from \"@slicemachine/plugin-kit\";\nimport { BaseManager } from \"../BaseManager\";\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\n\ntype DocumentationManagerReadReturnType = {\n\tdocumentation: Documentation[];\n\terrors: (DecodeError | HookError)[];\n};\n\nconst documentationCodec = t.intersection([\n\tt.type({ content: t.string }),\n\tt.partial({\n\t\tlabel: t.string,\n\t}),\n]);\n\nexport class DocumentationManager extends BaseManager {\n\tasync read(\n\t\targs: DocumentationReadHookData,\n\t): Promise<DocumentationManagerReadReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"documentation:read\",\n\t\t\targs,\n\t\t);\n\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.array(documentationCodec),\n\t\t\thookResult,\n\t\t);\n\n\t\treturn {\n\t\t\tdocumentation: data.flat(),\n\t\t\terrors,\n\t\t};\n\t}\n}\n"],"names":[],"mappings":";;;;AAgBA,MAAM,qBAAqB,EAAE,aAAa;AAAA,EACzC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ;AAAA,EAC5B,EAAE,QAAQ;AAAA,IACT,OAAO,EAAE;AAAA,EAAA,CACT;AACD,CAAA;AAEK,MAAO,6BAA6B,YAAW;AAAA,EACpD,MAAM,KACL,MAA+B;AAE/B,6BAAyB,KAAK,wBAAwB;AACtD,UAAM,aAAa,MAAM,KAAK,yBAAyB,SACtD,sBACA,IAAI;AAGC,UAAA,EAAE,MAAM,OAAM,IAAK,iBACxB,EAAE,MAAM,kBAAkB,GAC1B,UAAU;AAGJ,WAAA;AAAA,MACN,eAAe,KAAK,KAAM;AAAA,MAC1B;AAAA,IAAA;AAAA,EAEF;AACA;"}
1
+ {"version":3,"file":"DocumentationManager.js","sources":["../../../../src/managers/documentation/DocumentationManager.ts"],"sourcesContent":["import * as t from \"io-ts\";\nimport {\n\tHookError,\n\tDocumentationReadHookData,\n\tDocumentation,\n} from \"@slicemachine/plugin-kit\";\nimport { BaseManager } from \"../BaseManager\";\nimport { DecodeError } from \"../../lib/DecodeError\";\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\nimport { decodeHookResult } from \"../../lib/decodeHookResult\";\n\ntype DocumentationManagerReadReturnType = {\n\tdocumentation: Documentation[];\n\terrors: (DecodeError | HookError)[];\n};\n\nconst documentationCodec = t.intersection([\n\tt.type({ content: t.string }),\n\tt.partial({\n\t\tlabel: t.string,\n\t}),\n]);\n\nexport class DocumentationManager extends BaseManager {\n\tasync read(\n\t\targs: DocumentationReadHookData,\n\t): Promise<DocumentationManagerReadReturnType> {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\t\tconst hookResult = await this.sliceMachinePluginRunner.callHook(\n\t\t\t\"documentation:read\",\n\t\t\targs,\n\t\t);\n\n\t\tconst { data, errors } = decodeHookResult(\n\t\t\tt.array(documentationCodec),\n\t\t\thookResult,\n\t\t);\n\n\t\treturn {\n\t\t\tdocumentation: data.flat(),\n\t\t\terrors,\n\t\t};\n\t}\n}\n"],"names":[],"mappings":";;;;AAgBA,MAAM,qBAAqB,EAAE,aAAa;AAAA,EACzC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ;AAAA,EAC5B,EAAE,QAAQ;AAAA,IACT,OAAO,EAAE;AAAA,EAAA,CACT;AACD,CAAA;AAEK,MAAO,6BAA6B,YAAW;AAAA,EACpD,MAAM,KACL,MAA+B;AAE/B,6BAAyB,KAAK,wBAAwB;AACtD,UAAM,aAAa,MAAM,KAAK,yBAAyB,SACtD,sBACA,IAAI;AAGL,UAAM,EAAE,MAAM,WAAW,iBACxB,EAAE,MAAM,kBAAkB,GAC1B,UAAU;AAGX,WAAO;AAAA,MACN,eAAe,KAAK,KAAA;AAAA,MACpB;AAAA,IAAA;AAAA,EAEF;AACA;"}
@@ -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 pluginKit = require("@slicemachine/plugin-kit");
10
7
  const assertPluginsInitialized = require("../../lib/assertPluginsInitialized.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"PluginsManager.cjs","sources":["../../../../src/managers/plugins/PluginsManager.ts"],"sourcesContent":["import {\n\tcreateSliceMachinePluginRunner,\n\tSliceMachinePlugin,\n\tSliceMachinePluginRunner,\n} from \"@slicemachine/plugin-kit\";\n\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { SliceMachineManager } from \"../SliceMachineManager\";\n\ntype PluginsManagerConfig = {\n\tnativePlugins?: Record<string, SliceMachinePlugin>;\n};\n\nexport class PluginsManager extends BaseManager {\n\tprivate _nativePlugins: Record<string, SliceMachinePlugin>;\n\n\tconstructor(\n\t\tsliceMachineManager: SliceMachineManager,\n\t\tconfig: PluginsManagerConfig,\n\t) {\n\t\tsuper(sliceMachineManager);\n\n\t\tthis._nativePlugins = config.nativePlugins ?? {};\n\t}\n\n\tasync initPlugins(): Promise<void> {\n\t\tconst projectRoot = await this.project.getRoot();\n\t\tconst sliceMachineConfig = await this.project.getSliceMachineConfig();\n\n\t\tthis.sliceMachinePluginRunner = createSliceMachinePluginRunner({\n\t\t\tproject: {\n\t\t\t\troot: projectRoot,\n\t\t\t\tconfig: sliceMachineConfig,\n\t\t\t},\n\t\t\tnativePlugins: this._nativePlugins,\n\t\t});\n\n\t\tawait this.sliceMachinePluginRunner.init();\n\t}\n\n\tdangerouslyCallHook: SliceMachinePluginRunner[\"callHook\"] = (...args) => {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\treturn this.sliceMachinePluginRunner.callHook(...args);\n\t};\n}\n"],"names":["BaseManager","assertPluginsInitialized","createSliceMachinePluginRunner"],"mappings":";;;;;;;;;;;AAeM,MAAO,uBAAuBA,YAAAA,YAAW;AAAA,EAG9C,YACC,qBACA,QAA4B;AAE5B,UAAM,mBAAmB;AANlB;AA0BR,+CAA4D,IAAI,SAAQ;AACvEC,wDAAyB,KAAK,wBAAwB;AAEtD,aAAO,KAAK,yBAAyB,SAAS,GAAG,IAAI;AAAA,IAAA;AArBhD,SAAA,iBAAiB,OAAO,iBAAiB,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,cAAW;AAChB,UAAM,cAAc,MAAM,KAAK,QAAQ,QAAO;AAC9C,UAAM,qBAAqB,MAAM,KAAK,QAAQ,sBAAqB;AAEnE,SAAK,2BAA2BC,yCAA+B;AAAA,MAC9D,SAAS;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,MACR;AAAA,MACD,eAAe,KAAK;AAAA,IAAA,CACpB;AAEK,UAAA,KAAK,yBAAyB;EACrC;AAOA;;"}
1
+ {"version":3,"file":"PluginsManager.cjs","sources":["../../../../src/managers/plugins/PluginsManager.ts"],"sourcesContent":["import {\n\tcreateSliceMachinePluginRunner,\n\tSliceMachinePlugin,\n\tSliceMachinePluginRunner,\n} from \"@slicemachine/plugin-kit\";\n\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { SliceMachineManager } from \"../SliceMachineManager\";\n\ntype PluginsManagerConfig = {\n\tnativePlugins?: Record<string, SliceMachinePlugin>;\n};\n\nexport class PluginsManager extends BaseManager {\n\tprivate _nativePlugins: Record<string, SliceMachinePlugin>;\n\n\tconstructor(\n\t\tsliceMachineManager: SliceMachineManager,\n\t\tconfig: PluginsManagerConfig,\n\t) {\n\t\tsuper(sliceMachineManager);\n\n\t\tthis._nativePlugins = config.nativePlugins ?? {};\n\t}\n\n\tasync initPlugins(): Promise<void> {\n\t\tconst projectRoot = await this.project.getRoot();\n\t\tconst sliceMachineConfig = await this.project.getSliceMachineConfig();\n\n\t\tthis.sliceMachinePluginRunner = createSliceMachinePluginRunner({\n\t\t\tproject: {\n\t\t\t\troot: projectRoot,\n\t\t\t\tconfig: sliceMachineConfig,\n\t\t\t},\n\t\t\tnativePlugins: this._nativePlugins,\n\t\t});\n\n\t\tawait this.sliceMachinePluginRunner.init();\n\t}\n\n\tdangerouslyCallHook: SliceMachinePluginRunner[\"callHook\"] = (...args) => {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\treturn this.sliceMachinePluginRunner.callHook(...args);\n\t};\n}\n"],"names":["BaseManager","assertPluginsInitialized","createSliceMachinePluginRunner"],"mappings":";;;;;;;;AAeM,MAAO,uBAAuBA,YAAAA,YAAW;AAAA,EAG9C,YACC,qBACA,QAA4B;AAE5B,UAAM,mBAAmB;AANlB;AA0BR,+CAA4D,IAAI,SAAQ;AACvEC,+BAAAA,yBAAyB,KAAK,wBAAwB;AAEtD,aAAO,KAAK,yBAAyB,SAAS,GAAG,IAAI;AAAA,IACtD;AAtBC,SAAK,iBAAiB,OAAO,iBAAiB,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,cAAW;AAChB,UAAM,cAAc,MAAM,KAAK,QAAQ,QAAA;AACvC,UAAM,qBAAqB,MAAM,KAAK,QAAQ,sBAAA;AAE9C,SAAK,2BAA2BC,yCAA+B;AAAA,MAC9D,SAAS;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA;AAAA,MAET,eAAe,KAAK;AAAA,IAAA,CACpB;AAED,UAAM,KAAK,yBAAyB,KAAA;AAAA,EACrC;AAOA;;"}
@@ -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 { createSliceMachinePluginRunner } from "@slicemachine/plugin-kit";
8
5
  import { assertPluginsInitialized } from "../../lib/assertPluginsInitialized.js";
9
6
  import { BaseManager } from "../BaseManager.js";
@@ -1 +1 @@
1
- {"version":3,"file":"PluginsManager.js","sources":["../../../../src/managers/plugins/PluginsManager.ts"],"sourcesContent":["import {\n\tcreateSliceMachinePluginRunner,\n\tSliceMachinePlugin,\n\tSliceMachinePluginRunner,\n} from \"@slicemachine/plugin-kit\";\n\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { SliceMachineManager } from \"../SliceMachineManager\";\n\ntype PluginsManagerConfig = {\n\tnativePlugins?: Record<string, SliceMachinePlugin>;\n};\n\nexport class PluginsManager extends BaseManager {\n\tprivate _nativePlugins: Record<string, SliceMachinePlugin>;\n\n\tconstructor(\n\t\tsliceMachineManager: SliceMachineManager,\n\t\tconfig: PluginsManagerConfig,\n\t) {\n\t\tsuper(sliceMachineManager);\n\n\t\tthis._nativePlugins = config.nativePlugins ?? {};\n\t}\n\n\tasync initPlugins(): Promise<void> {\n\t\tconst projectRoot = await this.project.getRoot();\n\t\tconst sliceMachineConfig = await this.project.getSliceMachineConfig();\n\n\t\tthis.sliceMachinePluginRunner = createSliceMachinePluginRunner({\n\t\t\tproject: {\n\t\t\t\troot: projectRoot,\n\t\t\t\tconfig: sliceMachineConfig,\n\t\t\t},\n\t\t\tnativePlugins: this._nativePlugins,\n\t\t});\n\n\t\tawait this.sliceMachinePluginRunner.init();\n\t}\n\n\tdangerouslyCallHook: SliceMachinePluginRunner[\"callHook\"] = (...args) => {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\treturn this.sliceMachinePluginRunner.callHook(...args);\n\t};\n}\n"],"names":[],"mappings":";;;;;;;;;AAeM,MAAO,uBAAuB,YAAW;AAAA,EAG9C,YACC,qBACA,QAA4B;AAE5B,UAAM,mBAAmB;AANlB;AA0BR,+CAA4D,IAAI,SAAQ;AACvE,+BAAyB,KAAK,wBAAwB;AAEtD,aAAO,KAAK,yBAAyB,SAAS,GAAG,IAAI;AAAA,IAAA;AArBhD,SAAA,iBAAiB,OAAO,iBAAiB,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,cAAW;AAChB,UAAM,cAAc,MAAM,KAAK,QAAQ,QAAO;AAC9C,UAAM,qBAAqB,MAAM,KAAK,QAAQ,sBAAqB;AAEnE,SAAK,2BAA2B,+BAA+B;AAAA,MAC9D,SAAS;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,MACR;AAAA,MACD,eAAe,KAAK;AAAA,IAAA,CACpB;AAEK,UAAA,KAAK,yBAAyB;EACrC;AAOA;"}
1
+ {"version":3,"file":"PluginsManager.js","sources":["../../../../src/managers/plugins/PluginsManager.ts"],"sourcesContent":["import {\n\tcreateSliceMachinePluginRunner,\n\tSliceMachinePlugin,\n\tSliceMachinePluginRunner,\n} from \"@slicemachine/plugin-kit\";\n\nimport { assertPluginsInitialized } from \"../../lib/assertPluginsInitialized\";\n\nimport { BaseManager } from \"../BaseManager\";\nimport { SliceMachineManager } from \"../SliceMachineManager\";\n\ntype PluginsManagerConfig = {\n\tnativePlugins?: Record<string, SliceMachinePlugin>;\n};\n\nexport class PluginsManager extends BaseManager {\n\tprivate _nativePlugins: Record<string, SliceMachinePlugin>;\n\n\tconstructor(\n\t\tsliceMachineManager: SliceMachineManager,\n\t\tconfig: PluginsManagerConfig,\n\t) {\n\t\tsuper(sliceMachineManager);\n\n\t\tthis._nativePlugins = config.nativePlugins ?? {};\n\t}\n\n\tasync initPlugins(): Promise<void> {\n\t\tconst projectRoot = await this.project.getRoot();\n\t\tconst sliceMachineConfig = await this.project.getSliceMachineConfig();\n\n\t\tthis.sliceMachinePluginRunner = createSliceMachinePluginRunner({\n\t\t\tproject: {\n\t\t\t\troot: projectRoot,\n\t\t\t\tconfig: sliceMachineConfig,\n\t\t\t},\n\t\t\tnativePlugins: this._nativePlugins,\n\t\t});\n\n\t\tawait this.sliceMachinePluginRunner.init();\n\t}\n\n\tdangerouslyCallHook: SliceMachinePluginRunner[\"callHook\"] = (...args) => {\n\t\tassertPluginsInitialized(this.sliceMachinePluginRunner);\n\n\t\treturn this.sliceMachinePluginRunner.callHook(...args);\n\t};\n}\n"],"names":[],"mappings":";;;;;;AAeM,MAAO,uBAAuB,YAAW;AAAA,EAG9C,YACC,qBACA,QAA4B;AAE5B,UAAM,mBAAmB;AANlB;AA0BR,+CAA4D,IAAI,SAAQ;AACvE,+BAAyB,KAAK,wBAAwB;AAEtD,aAAO,KAAK,yBAAyB,SAAS,GAAG,IAAI;AAAA,IACtD;AAtBC,SAAK,iBAAiB,OAAO,iBAAiB,CAAA;AAAA,EAC/C;AAAA,EAEA,MAAM,cAAW;AAChB,UAAM,cAAc,MAAM,KAAK,QAAQ,QAAA;AACvC,UAAM,qBAAqB,MAAM,KAAK,QAAQ,sBAAA;AAE9C,SAAK,2BAA2B,+BAA+B;AAAA,MAC9D,SAAS;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,MAAA;AAAA,MAET,eAAe,KAAK;AAAA,IAAA,CACpB;AAED,UAAM,KAAK,yBAAyB,KAAA;AAAA,EACrC;AAOA;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PrismicRepositoryManager.cjs","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":["BaseManager","API_ENDPOINTS","decode","t","PrismicRepository","PrismicRepositoryRole","PrismicRepositoryUserAgent","REPOSITORY_NAME_VALIDATION","assertPluginsInitialized","UnauthenticatedError","ChangeTypes","PushChangesLimitType","Environment","UnexpectedDataError","sortEnvironments","UnauthorizedError","OnboardingState","z","fold","PushChangesRawLimit","fetch","serializeCookies","SLICE_MACHINE_USER_AGENT"],"mappings":"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"}
1
+ {"version":3,"file":"PrismicRepositoryManager.cjs","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":["BaseManager","API_ENDPOINTS","decode","t","PrismicRepository","PrismicRepositoryRole","PrismicRepositoryUserAgent","REPOSITORY_NAME_VALIDATION","assertPluginsInitialized","UnauthenticatedError","ChangeTypes","PushChangesLimitType","Environment","UnexpectedDataError","sortEnvironments","UnauthorizedError","OnboardingState","z","fold","PushChangesRawLimit","fetch","serializeCookies","SLICE_MACHINE_USER_AGENT"],"mappings":"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"}