@strapi/data-transfer 0.0.0-experimental.62ce06180fe9a772eaeb3d43d238b26644f39f7c → 0.0.0-experimental.6340da17068c3bed7fb006e7bcc554c71129e282

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 (395) hide show
  1. package/LICENSE +19 -4
  2. package/dist/directory/index.d.ts +2 -0
  3. package/dist/directory/index.d.ts.map +1 -0
  4. package/dist/directory/index.js +8 -0
  5. package/dist/directory/index.js.map +1 -0
  6. package/dist/directory/index.mjs +3 -0
  7. package/dist/directory/index.mjs.map +1 -0
  8. package/dist/directory/providers/destination/index.d.ts +38 -0
  9. package/dist/directory/providers/destination/index.d.ts.map +1 -0
  10. package/dist/directory/providers/destination/index.js +184 -0
  11. package/dist/directory/providers/destination/index.js.map +1 -0
  12. package/dist/directory/providers/destination/index.mjs +177 -0
  13. package/dist/directory/providers/destination/index.mjs.map +1 -0
  14. package/dist/directory/providers/destination/utils.d.ts +8 -0
  15. package/dist/directory/providers/destination/utils.d.ts.map +1 -0
  16. package/dist/directory/providers/destination/utils.js +62 -0
  17. package/dist/directory/providers/destination/utils.js.map +1 -0
  18. package/dist/directory/providers/destination/utils.mjs +56 -0
  19. package/dist/directory/providers/destination/utils.mjs.map +1 -0
  20. package/dist/directory/providers/index.d.ts +3 -0
  21. package/dist/directory/providers/index.d.ts.map +1 -0
  22. package/dist/directory/providers/index.js +10 -0
  23. package/dist/directory/providers/index.js.map +1 -0
  24. package/dist/directory/providers/index.mjs +3 -0
  25. package/dist/directory/providers/index.mjs.map +1 -0
  26. package/dist/directory/providers/source/index.d.ts +27 -0
  27. package/dist/directory/providers/source/index.d.ts.map +1 -0
  28. package/dist/directory/providers/source/index.js +266 -0
  29. package/dist/directory/providers/source/index.js.map +1 -0
  30. package/dist/directory/providers/source/index.mjs +259 -0
  31. package/dist/directory/providers/source/index.mjs.map +1 -0
  32. package/dist/engine/errors.js +39 -0
  33. package/dist/engine/errors.js.map +1 -0
  34. package/dist/engine/errors.mjs +34 -0
  35. package/dist/engine/errors.mjs.map +1 -0
  36. package/dist/engine/index.d.ts +2 -3
  37. package/dist/engine/index.d.ts.map +1 -1
  38. package/dist/engine/index.js +922 -0
  39. package/dist/engine/index.js.map +1 -0
  40. package/dist/engine/index.mjs +917 -0
  41. package/dist/engine/index.mjs.map +1 -0
  42. package/dist/engine/validation/provider.d.ts +2 -2
  43. package/dist/engine/validation/provider.d.ts.map +1 -1
  44. package/dist/engine/validation/provider.js +19 -0
  45. package/dist/engine/validation/provider.js.map +1 -0
  46. package/dist/engine/validation/provider.mjs +17 -0
  47. package/dist/engine/validation/provider.mjs.map +1 -0
  48. package/dist/engine/validation/schemas/index.d.ts.map +1 -1
  49. package/dist/engine/validation/schemas/index.js +59 -0
  50. package/dist/engine/validation/schemas/index.js.map +1 -0
  51. package/dist/engine/validation/schemas/index.mjs +57 -0
  52. package/dist/engine/validation/schemas/index.mjs.map +1 -0
  53. package/dist/errors/base.js +13 -0
  54. package/dist/errors/base.js.map +1 -0
  55. package/dist/errors/base.mjs +11 -0
  56. package/dist/errors/base.mjs.map +1 -0
  57. package/dist/errors/constants.d.ts +1 -1
  58. package/dist/errors/constants.d.ts.map +1 -1
  59. package/dist/errors/constants.js +9 -0
  60. package/dist/errors/constants.js.map +1 -0
  61. package/dist/errors/constants.mjs +7 -0
  62. package/dist/errors/constants.mjs.map +1 -0
  63. package/dist/errors/providers.d.ts +1 -1
  64. package/dist/errors/providers.d.ts.map +1 -1
  65. package/dist/errors/providers.js +41 -0
  66. package/dist/errors/providers.js.map +1 -0
  67. package/dist/errors/providers.mjs +36 -0
  68. package/dist/errors/providers.mjs.map +1 -0
  69. package/dist/file/index.js +8 -0
  70. package/dist/file/index.js.map +1 -0
  71. package/dist/file/index.mjs +3 -0
  72. package/dist/file/index.mjs.map +1 -0
  73. package/dist/file/providers/destination/index.d.ts +3 -5
  74. package/dist/file/providers/destination/index.d.ts.map +1 -1
  75. package/dist/file/providers/destination/index.js +254 -0
  76. package/dist/file/providers/destination/index.js.map +1 -0
  77. package/dist/file/providers/destination/index.mjs +246 -0
  78. package/dist/file/providers/destination/index.mjs.map +1 -0
  79. package/dist/file/providers/destination/utils.d.ts +0 -1
  80. package/dist/file/providers/destination/utils.d.ts.map +1 -1
  81. package/dist/file/providers/destination/utils.js +63 -0
  82. package/dist/file/providers/destination/utils.js.map +1 -0
  83. package/dist/file/providers/destination/utils.mjs +60 -0
  84. package/dist/file/providers/destination/utils.mjs.map +1 -0
  85. package/dist/file/providers/index.js +10 -0
  86. package/dist/file/providers/index.js.map +1 -0
  87. package/dist/file/providers/index.mjs +3 -0
  88. package/dist/file/providers/index.mjs.map +1 -0
  89. package/dist/file/providers/source/index.d.ts +3 -3
  90. package/dist/file/providers/source/index.d.ts.map +1 -1
  91. package/dist/file/providers/source/index.js +336 -0
  92. package/dist/file/providers/source/index.js.map +1 -0
  93. package/dist/file/providers/source/index.mjs +328 -0
  94. package/dist/file/providers/source/index.mjs.map +1 -0
  95. package/dist/file/providers/source/utils.d.ts.map +1 -1
  96. package/dist/file/providers/source/utils.js +60 -0
  97. package/dist/file/providers/source/utils.js.map +1 -0
  98. package/dist/file/providers/source/utils.mjs +52 -0
  99. package/dist/file/providers/source/utils.mjs.map +1 -0
  100. package/dist/index.d.ts +1 -0
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +15 -4408
  103. package/dist/index.js.map +1 -1
  104. package/dist/index.mjs +10 -4382
  105. package/dist/index.mjs.map +1 -1
  106. package/dist/strapi/index.js +12 -0
  107. package/dist/strapi/index.js.map +1 -0
  108. package/dist/strapi/index.mjs +7 -0
  109. package/dist/strapi/index.mjs.map +1 -0
  110. package/dist/strapi/providers/index.js +18 -0
  111. package/dist/strapi/providers/index.js.map +1 -0
  112. package/dist/strapi/providers/index.mjs +8 -0
  113. package/dist/strapi/providers/index.mjs.map +1 -0
  114. package/dist/strapi/providers/local-destination/assets-destination-writable.d.ts +26 -0
  115. package/dist/strapi/providers/local-destination/assets-destination-writable.d.ts.map +1 -0
  116. package/dist/strapi/providers/local-destination/assets-destination-writable.js +125 -0
  117. package/dist/strapi/providers/local-destination/assets-destination-writable.js.map +1 -0
  118. package/dist/strapi/providers/local-destination/assets-destination-writable.mjs +123 -0
  119. package/dist/strapi/providers/local-destination/assets-destination-writable.mjs.map +1 -0
  120. package/dist/strapi/providers/local-destination/index.d.ts +5 -3
  121. package/dist/strapi/providers/local-destination/index.d.ts.map +1 -1
  122. package/dist/strapi/providers/local-destination/index.js +362 -0
  123. package/dist/strapi/providers/local-destination/index.js.map +1 -0
  124. package/dist/strapi/providers/local-destination/index.mjs +335 -0
  125. package/dist/strapi/providers/local-destination/index.mjs.map +1 -0
  126. package/dist/strapi/providers/local-destination/strategies/restore/configuration.d.ts +1 -2
  127. package/dist/strapi/providers/local-destination/strategies/restore/configuration.d.ts.map +1 -1
  128. package/dist/strapi/providers/local-destination/strategies/restore/configuration.js +58 -0
  129. package/dist/strapi/providers/local-destination/strategies/restore/configuration.js.map +1 -0
  130. package/dist/strapi/providers/local-destination/strategies/restore/configuration.mjs +51 -0
  131. package/dist/strapi/providers/local-destination/strategies/restore/configuration.mjs.map +1 -0
  132. package/dist/strapi/providers/local-destination/strategies/restore/entities.d.ts +1 -2
  133. package/dist/strapi/providers/local-destination/strategies/restore/entities.d.ts.map +1 -1
  134. package/dist/strapi/providers/local-destination/strategies/restore/entities.js +54 -0
  135. package/dist/strapi/providers/local-destination/strategies/restore/entities.js.map +1 -0
  136. package/dist/strapi/providers/local-destination/strategies/restore/entities.mjs +52 -0
  137. package/dist/strapi/providers/local-destination/strategies/restore/entities.mjs.map +1 -0
  138. package/dist/strapi/providers/local-destination/strategies/restore/index.d.ts.map +1 -1
  139. package/dist/strapi/providers/local-destination/strategies/restore/index.js +124 -0
  140. package/dist/strapi/providers/local-destination/strategies/restore/index.js.map +1 -0
  141. package/dist/strapi/providers/local-destination/strategies/restore/index.mjs +120 -0
  142. package/dist/strapi/providers/local-destination/strategies/restore/index.mjs.map +1 -0
  143. package/dist/strapi/providers/local-destination/strategies/restore/links.d.ts +1 -2
  144. package/dist/strapi/providers/local-destination/strategies/restore/links.d.ts.map +1 -1
  145. package/dist/strapi/providers/local-destination/strategies/restore/links.js +79 -0
  146. package/dist/strapi/providers/local-destination/strategies/restore/links.js.map +1 -0
  147. package/dist/strapi/providers/local-destination/strategies/restore/links.mjs +77 -0
  148. package/dist/strapi/providers/local-destination/strategies/restore/links.mjs.map +1 -0
  149. package/dist/strapi/providers/local-source/assets.d.ts +8 -2
  150. package/dist/strapi/providers/local-source/assets.d.ts.map +1 -1
  151. package/dist/strapi/providers/local-source/assets.js +151 -0
  152. package/dist/strapi/providers/local-source/assets.js.map +1 -0
  153. package/dist/strapi/providers/local-source/assets.mjs +147 -0
  154. package/dist/strapi/providers/local-source/assets.mjs.map +1 -0
  155. package/dist/strapi/providers/local-source/configuration.d.ts +0 -1
  156. package/dist/strapi/providers/local-source/configuration.d.ts.map +1 -1
  157. package/dist/strapi/providers/local-source/configuration.js +47 -0
  158. package/dist/strapi/providers/local-source/configuration.js.map +1 -0
  159. package/dist/strapi/providers/local-source/configuration.mjs +45 -0
  160. package/dist/strapi/providers/local-source/configuration.mjs.map +1 -0
  161. package/dist/strapi/providers/local-source/entities.d.ts +3 -2
  162. package/dist/strapi/providers/local-source/entities.d.ts.map +1 -1
  163. package/dist/strapi/providers/local-source/entities.js +66 -0
  164. package/dist/strapi/providers/local-source/entities.js.map +1 -0
  165. package/dist/strapi/providers/local-source/entities.mjs +63 -0
  166. package/dist/strapi/providers/local-source/entities.mjs.map +1 -0
  167. package/dist/strapi/providers/local-source/estimate-asset-totals.d.ts +11 -0
  168. package/dist/strapi/providers/local-source/estimate-asset-totals.d.ts.map +1 -0
  169. package/dist/strapi/providers/local-source/estimate-asset-totals.js +130 -0
  170. package/dist/strapi/providers/local-source/estimate-asset-totals.js.map +1 -0
  171. package/dist/strapi/providers/local-source/estimate-asset-totals.mjs +128 -0
  172. package/dist/strapi/providers/local-source/estimate-asset-totals.mjs.map +1 -0
  173. package/dist/strapi/providers/local-source/index.d.ts +6 -4
  174. package/dist/strapi/providers/local-source/index.d.ts.map +1 -1
  175. package/dist/strapi/providers/local-source/index.js +186 -0
  176. package/dist/strapi/providers/local-source/index.js.map +1 -0
  177. package/dist/strapi/providers/local-source/index.mjs +183 -0
  178. package/dist/strapi/providers/local-source/index.mjs.map +1 -0
  179. package/dist/strapi/providers/local-source/links.d.ts +0 -1
  180. package/dist/strapi/providers/local-source/links.d.ts.map +1 -1
  181. package/dist/strapi/providers/local-source/links.js +26 -0
  182. package/dist/strapi/providers/local-source/links.js.map +1 -0
  183. package/dist/strapi/providers/local-source/links.mjs +24 -0
  184. package/dist/strapi/providers/local-source/links.mjs.map +1 -0
  185. package/dist/strapi/providers/remote-destination/index.d.ts +13 -5
  186. package/dist/strapi/providers/remote-destination/index.d.ts.map +1 -1
  187. package/dist/strapi/providers/remote-destination/index.js +482 -0
  188. package/dist/strapi/providers/remote-destination/index.js.map +1 -0
  189. package/dist/strapi/providers/remote-destination/index.mjs +480 -0
  190. package/dist/strapi/providers/remote-destination/index.mjs.map +1 -0
  191. package/dist/strapi/providers/remote-source/index.d.ts +11 -6
  192. package/dist/strapi/providers/remote-source/index.d.ts.map +1 -1
  193. package/dist/strapi/providers/remote-source/index.js +538 -0
  194. package/dist/strapi/providers/remote-source/index.js.map +1 -0
  195. package/dist/strapi/providers/remote-source/index.mjs +536 -0
  196. package/dist/strapi/providers/remote-source/index.mjs.map +1 -0
  197. package/dist/strapi/providers/utils.d.ts +22 -16
  198. package/dist/strapi/providers/utils.d.ts.map +1 -1
  199. package/dist/strapi/providers/utils.js +178 -0
  200. package/dist/strapi/providers/utils.js.map +1 -0
  201. package/dist/strapi/providers/utils.mjs +174 -0
  202. package/dist/strapi/providers/utils.mjs.map +1 -0
  203. package/dist/strapi/queries/entity.d.ts.map +1 -1
  204. package/dist/strapi/queries/entity.js +125 -0
  205. package/dist/strapi/queries/entity.js.map +1 -0
  206. package/dist/strapi/queries/entity.mjs +123 -0
  207. package/dist/strapi/queries/entity.mjs.map +1 -0
  208. package/dist/strapi/queries/index.js +10 -0
  209. package/dist/strapi/queries/index.js.map +1 -0
  210. package/dist/strapi/queries/index.mjs +5 -0
  211. package/dist/strapi/queries/index.mjs.map +1 -0
  212. package/dist/strapi/queries/link.d.ts +1 -1
  213. package/dist/strapi/queries/link.d.ts.map +1 -1
  214. package/dist/strapi/queries/link.js +298 -0
  215. package/dist/strapi/queries/link.js.map +1 -0
  216. package/dist/strapi/queries/link.mjs +295 -0
  217. package/dist/strapi/queries/link.mjs.map +1 -0
  218. package/dist/strapi/remote/constants.d.ts.map +1 -1
  219. package/dist/strapi/remote/constants.js +11 -0
  220. package/dist/strapi/remote/constants.js.map +1 -0
  221. package/dist/strapi/remote/constants.mjs +8 -0
  222. package/dist/strapi/remote/constants.mjs.map +1 -0
  223. package/dist/strapi/remote/flows/default.d.ts.map +1 -1
  224. package/dist/strapi/remote/flows/default.js +43 -0
  225. package/dist/strapi/remote/flows/default.js.map +1 -0
  226. package/dist/strapi/remote/flows/default.mjs +41 -0
  227. package/dist/strapi/remote/flows/default.mjs.map +1 -0
  228. package/dist/strapi/remote/flows/index.d.ts +1 -1
  229. package/dist/strapi/remote/flows/index.d.ts.map +1 -1
  230. package/dist/strapi/remote/flows/index.js +54 -0
  231. package/dist/strapi/remote/flows/index.js.map +1 -0
  232. package/dist/strapi/remote/flows/index.mjs +52 -0
  233. package/dist/strapi/remote/flows/index.mjs.map +1 -0
  234. package/dist/strapi/remote/handlers/abstract.d.ts +4 -1
  235. package/dist/strapi/remote/handlers/abstract.d.ts.map +1 -1
  236. package/dist/strapi/remote/handlers/constants.js +10 -0
  237. package/dist/strapi/remote/handlers/constants.js.map +1 -0
  238. package/dist/strapi/remote/handlers/constants.mjs +8 -0
  239. package/dist/strapi/remote/handlers/constants.mjs.map +1 -0
  240. package/dist/strapi/remote/handlers/index.js +12 -0
  241. package/dist/strapi/remote/handlers/index.js.map +1 -0
  242. package/dist/strapi/remote/handlers/index.mjs +4 -0
  243. package/dist/strapi/remote/handlers/index.mjs.map +1 -0
  244. package/dist/strapi/remote/handlers/pull.d.ts +2 -3
  245. package/dist/strapi/remote/handlers/pull.d.ts.map +1 -1
  246. package/dist/strapi/remote/handlers/pull.js +369 -0
  247. package/dist/strapi/remote/handlers/pull.js.map +1 -0
  248. package/dist/strapi/remote/handlers/pull.mjs +367 -0
  249. package/dist/strapi/remote/handlers/pull.mjs.map +1 -0
  250. package/dist/strapi/remote/handlers/push.d.ts +16 -5
  251. package/dist/strapi/remote/handlers/push.d.ts.map +1 -1
  252. package/dist/strapi/remote/handlers/push.js +454 -0
  253. package/dist/strapi/remote/handlers/push.js.map +1 -0
  254. package/dist/strapi/remote/handlers/push.mjs +452 -0
  255. package/dist/strapi/remote/handlers/push.mjs.map +1 -0
  256. package/dist/strapi/remote/handlers/utils.d.ts +1 -2
  257. package/dist/strapi/remote/handlers/utils.d.ts.map +1 -1
  258. package/dist/strapi/remote/handlers/utils.js +318 -0
  259. package/dist/strapi/remote/handlers/utils.js.map +1 -0
  260. package/dist/strapi/remote/handlers/utils.mjs +312 -0
  261. package/dist/strapi/remote/handlers/utils.mjs.map +1 -0
  262. package/dist/strapi/remote/index.js +10 -0
  263. package/dist/strapi/remote/index.js.map +1 -0
  264. package/dist/strapi/remote/index.mjs +5 -0
  265. package/dist/strapi/remote/index.mjs.map +1 -0
  266. package/dist/strapi/utils/project-settings-logos.d.ts +29 -0
  267. package/dist/strapi/utils/project-settings-logos.d.ts.map +1 -0
  268. package/dist/strapi/utils/project-settings-logos.js +174 -0
  269. package/dist/strapi/utils/project-settings-logos.js.map +1 -0
  270. package/dist/strapi/utils/project-settings-logos.mjs +169 -0
  271. package/dist/strapi/utils/project-settings-logos.mjs.map +1 -0
  272. package/dist/types/common-entities.d.ts +149 -0
  273. package/dist/types/common-entities.d.ts.map +1 -0
  274. package/dist/types/encryption.d.ts +13 -0
  275. package/dist/types/encryption.d.ts.map +1 -0
  276. package/dist/types/index.d.ts +7 -0
  277. package/dist/types/index.d.ts.map +1 -0
  278. package/dist/types/providers.d.ts +49 -0
  279. package/dist/types/providers.d.ts.map +1 -0
  280. package/dist/types/remote/index.d.ts +2 -0
  281. package/dist/types/remote/index.d.ts.map +1 -0
  282. package/dist/types/remote/protocol/auth.d.ts +5 -0
  283. package/dist/types/remote/protocol/auth.d.ts.map +1 -0
  284. package/dist/types/remote/protocol/client/commands.d.ts +37 -0
  285. package/dist/types/remote/protocol/client/commands.d.ts.map +1 -0
  286. package/dist/types/remote/protocol/client/index.d.ts +9 -0
  287. package/dist/types/remote/protocol/client/index.d.ts.map +1 -0
  288. package/dist/types/remote/protocol/client/transfer/action.d.ts +5 -0
  289. package/dist/types/remote/protocol/client/transfer/action.d.ts.map +1 -0
  290. package/dist/types/remote/protocol/client/transfer/index.d.ts +12 -0
  291. package/dist/types/remote/protocol/client/transfer/index.d.ts.map +1 -0
  292. package/dist/types/remote/protocol/client/transfer/pull.d.ts +25 -0
  293. package/dist/types/remote/protocol/client/transfer/pull.d.ts.map +1 -0
  294. package/dist/types/remote/protocol/client/transfer/push.d.ts +29 -0
  295. package/dist/types/remote/protocol/client/transfer/push.d.ts.map +1 -0
  296. package/dist/types/remote/protocol/client/transfer/utils.d.ts +47 -0
  297. package/dist/types/remote/protocol/client/transfer/utils.d.ts.map +1 -0
  298. package/dist/types/remote/protocol/index.d.ts +4 -0
  299. package/dist/types/remote/protocol/index.d.ts.map +1 -0
  300. package/dist/types/remote/protocol/server/error.d.ts +18 -0
  301. package/dist/types/remote/protocol/server/error.d.ts.map +1 -0
  302. package/dist/types/remote/protocol/server/index.d.ts +3 -0
  303. package/dist/types/remote/protocol/server/index.d.ts.map +1 -0
  304. package/dist/types/remote/protocol/server/messaging.d.ts +37 -0
  305. package/dist/types/remote/protocol/server/messaging.d.ts.map +1 -0
  306. package/dist/types/transfer-engine.d.ts +148 -0
  307. package/dist/types/transfer-engine.d.ts.map +1 -0
  308. package/dist/types/utils.d.ts +82 -0
  309. package/dist/types/utils.d.ts.map +1 -0
  310. package/dist/utils/components.d.ts +23 -3
  311. package/dist/utils/components.d.ts.map +1 -1
  312. package/dist/utils/components.js +230 -0
  313. package/dist/utils/components.js.map +1 -0
  314. package/dist/utils/components.mjs +219 -0
  315. package/dist/utils/components.mjs.map +1 -0
  316. package/dist/{engine → utils}/diagnostic.d.ts +1 -0
  317. package/dist/utils/diagnostic.d.ts.map +1 -0
  318. package/dist/utils/diagnostic.js +51 -0
  319. package/dist/utils/diagnostic.js.map +1 -0
  320. package/dist/utils/diagnostic.mjs +49 -0
  321. package/dist/utils/diagnostic.mjs.map +1 -0
  322. package/dist/utils/encryption/decrypt.d.ts +6 -5
  323. package/dist/utils/encryption/decrypt.d.ts.map +1 -1
  324. package/dist/utils/encryption/decrypt.js +47 -0
  325. package/dist/utils/encryption/decrypt.js.map +1 -0
  326. package/dist/utils/encryption/decrypt.mjs +45 -0
  327. package/dist/utils/encryption/decrypt.mjs.map +1 -0
  328. package/dist/utils/encryption/encrypt.d.ts +6 -5
  329. package/dist/utils/encryption/encrypt.d.ts.map +1 -1
  330. package/dist/utils/encryption/encrypt.js +47 -0
  331. package/dist/utils/encryption/encrypt.js.map +1 -0
  332. package/dist/utils/encryption/encrypt.mjs +45 -0
  333. package/dist/utils/encryption/encrypt.mjs.map +1 -0
  334. package/dist/utils/encryption/index.js +10 -0
  335. package/dist/utils/encryption/index.js.map +1 -0
  336. package/dist/utils/encryption/index.mjs +3 -0
  337. package/dist/utils/encryption/index.mjs.map +1 -0
  338. package/dist/utils/index.d.ts +3 -0
  339. package/dist/utils/index.d.ts.map +1 -1
  340. package/dist/utils/index.js +28 -0
  341. package/dist/utils/index.js.map +1 -0
  342. package/dist/utils/index.mjs +17 -0
  343. package/dist/utils/index.mjs.map +1 -0
  344. package/dist/utils/json.d.ts.map +1 -1
  345. package/dist/utils/json.js +96 -0
  346. package/dist/utils/json.js.map +1 -0
  347. package/dist/utils/json.mjs +94 -0
  348. package/dist/utils/json.mjs.map +1 -0
  349. package/dist/utils/middleware.d.ts +1 -1
  350. package/dist/utils/middleware.d.ts.map +1 -1
  351. package/dist/utils/middleware.js +14 -0
  352. package/dist/utils/middleware.js.map +1 -0
  353. package/dist/utils/middleware.mjs +12 -0
  354. package/dist/utils/middleware.mjs.map +1 -0
  355. package/dist/utils/providers.js +12 -0
  356. package/dist/utils/providers.js.map +1 -0
  357. package/dist/utils/providers.mjs +10 -0
  358. package/dist/utils/providers.mjs.map +1 -0
  359. package/dist/utils/schema.d.ts.map +1 -1
  360. package/dist/utils/schema.js +32 -0
  361. package/dist/utils/schema.js.map +1 -0
  362. package/dist/utils/schema.mjs +29 -0
  363. package/dist/utils/schema.mjs.map +1 -0
  364. package/dist/utils/stream.d.ts +0 -1
  365. package/dist/utils/stream.d.ts.map +1 -1
  366. package/dist/utils/stream.js +96 -0
  367. package/dist/utils/stream.js.map +1 -0
  368. package/dist/utils/stream.mjs +92 -0
  369. package/dist/utils/stream.mjs.map +1 -0
  370. package/dist/utils/transaction.d.ts +1 -1
  371. package/dist/utils/transaction.d.ts.map +1 -1
  372. package/dist/utils/transaction.js +93 -0
  373. package/dist/utils/transaction.js.map +1 -0
  374. package/dist/utils/transaction.mjs +91 -0
  375. package/dist/utils/transaction.mjs.map +1 -0
  376. package/dist/utils/transfer-asset-chunk.d.ts +61 -0
  377. package/dist/utils/transfer-asset-chunk.d.ts.map +1 -0
  378. package/dist/utils/transfer-asset-chunk.js +118 -0
  379. package/dist/utils/transfer-asset-chunk.js.map +1 -0
  380. package/dist/utils/transfer-asset-chunk.mjs +112 -0
  381. package/dist/utils/transfer-asset-chunk.mjs.map +1 -0
  382. package/dist/utils/transfer-websocket-json.d.ts +24 -0
  383. package/dist/utils/transfer-websocket-json.d.ts.map +1 -0
  384. package/dist/utils/transfer-websocket-json.js +67 -0
  385. package/dist/utils/transfer-websocket-json.js.map +1 -0
  386. package/dist/utils/transfer-websocket-json.mjs +63 -0
  387. package/dist/utils/transfer-websocket-json.mjs.map +1 -0
  388. package/dist/utils/writable-async-write.d.ts +16 -0
  389. package/dist/utils/writable-async-write.d.ts.map +1 -0
  390. package/dist/utils/writable-async-write.js +61 -0
  391. package/dist/utils/writable-async-write.js.map +1 -0
  392. package/dist/utils/writable-async-write.mjs +59 -0
  393. package/dist/utils/writable-async-write.mjs.map +1 -0
  394. package/package.json +40 -26
  395. package/dist/engine/diagnostic.d.ts.map +0 -1
@@ -0,0 +1,56 @@
1
+ import { promises } from 'fs';
2
+ import path from 'path';
3
+ import { Writable } from 'stream';
4
+
5
+ /**
6
+ * JSONL writer that mirrors {@link createTarEntryStream} but writes files under a root directory.
7
+ */ const createDirectoryJsonlWriter = (rootDir, pathFactory, maxSize = 2.56e8)=>{
8
+ let fileIndex = 0;
9
+ let buffer = '';
10
+ const resolvePath = (posixName)=>path.join(rootDir, ...posixName.split('/'));
11
+ const flush = async ()=>{
12
+ if (!buffer) {
13
+ return;
14
+ }
15
+ fileIndex += 1;
16
+ const name = pathFactory(fileIndex);
17
+ const targetPath = resolvePath(name);
18
+ await promises.mkdir(path.dirname(targetPath), {
19
+ recursive: true
20
+ });
21
+ await promises.writeFile(targetPath, buffer, 'utf8');
22
+ buffer = '';
23
+ };
24
+ const push = (chunk)=>{
25
+ buffer += chunk;
26
+ };
27
+ return new Writable({
28
+ async final (callback) {
29
+ try {
30
+ await flush();
31
+ callback();
32
+ } catch (err) {
33
+ callback(err instanceof Error ? err : new Error(String(err)));
34
+ }
35
+ },
36
+ async destroy (err, callback) {
37
+ await flush();
38
+ callback(err);
39
+ },
40
+ async write (chunk, _encoding, callback) {
41
+ const size = chunk.length;
42
+ if (chunk.length > maxSize) {
43
+ callback(new Error(`payload too large: ${chunk.length}>${maxSize}`));
44
+ return;
45
+ }
46
+ if (buffer.length + size > maxSize) {
47
+ await flush();
48
+ }
49
+ push(chunk);
50
+ callback(null);
51
+ }
52
+ });
53
+ };
54
+
55
+ export { createDirectoryJsonlWriter };
56
+ //# sourceMappingURL=utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../src/directory/providers/destination/utils.ts"],"sourcesContent":["import { promises as fsp } from 'fs';\nimport path from 'path';\nimport { Writable } from 'stream';\n\nimport { createFilePathFactory } from '../../../file/providers/destination/utils';\n\nexport { createFilePathFactory };\n\n/**\n * JSONL writer that mirrors {@link createTarEntryStream} but writes files under a root directory.\n */\nexport const createDirectoryJsonlWriter = (\n rootDir: string,\n pathFactory: (index?: number) => string,\n maxSize = 2.56e8\n) => {\n let fileIndex = 0;\n let buffer = '';\n\n const resolvePath = (posixName: string) => path.join(rootDir, ...posixName.split('/'));\n\n const flush = async () => {\n if (!buffer) {\n return;\n }\n\n fileIndex += 1;\n const name = pathFactory(fileIndex);\n const targetPath = resolvePath(name);\n await fsp.mkdir(path.dirname(targetPath), { recursive: true });\n await fsp.writeFile(targetPath, buffer, 'utf8');\n buffer = '';\n };\n\n const push = (chunk: string | Buffer) => {\n buffer += chunk;\n };\n\n return new Writable({\n async final(callback) {\n try {\n await flush();\n callback();\n } catch (err: unknown) {\n callback(err instanceof Error ? err : new Error(String(err)));\n }\n },\n\n async destroy(err, callback) {\n await flush();\n callback(err);\n },\n\n async write(chunk, _encoding, callback) {\n const size = chunk.length;\n\n if (chunk.length > maxSize) {\n callback(new Error(`payload too large: ${chunk.length}>${maxSize}`));\n return;\n }\n\n if (buffer.length + size > maxSize) {\n await flush();\n }\n\n push(chunk);\n\n callback(null);\n },\n });\n};\n"],"names":["createDirectoryJsonlWriter","rootDir","pathFactory","maxSize","fileIndex","buffer","resolvePath","posixName","path","join","split","flush","name","targetPath","fsp","mkdir","dirname","recursive","writeFile","push","chunk","Writable","final","callback","err","Error","String","destroy","write","_encoding","size","length"],"mappings":";;;;AAQA;;AAEC,IACM,MAAMA,0BAAAA,GAA6B,CACxCC,OAAAA,EACAC,WAAAA,EACAC,UAAU,MAAM,GAAA;AAEhB,IAAA,IAAIC,SAAAA,GAAY,CAAA;AAChB,IAAA,IAAIC,MAAAA,GAAS,EAAA;IAEb,MAAMC,WAAAA,GAAc,CAACC,SAAAA,GAAsBC,IAAAA,CAAKC,IAAI,CAACR,OAAAA,EAAAA,GAAYM,SAAAA,CAAUG,KAAK,CAAC,GAAA,CAAA,CAAA;AAEjF,IAAA,MAAMC,KAAAA,GAAQ,UAAA;AACZ,QAAA,IAAI,CAACN,MAAAA,EAAQ;AACX,YAAA;AACF,QAAA;QAEAD,SAAAA,IAAa,CAAA;AACb,QAAA,MAAMQ,OAAOV,WAAAA,CAAYE,SAAAA,CAAAA;AACzB,QAAA,MAAMS,aAAaP,WAAAA,CAAYM,IAAAA,CAAAA;AAC/B,QAAA,MAAME,SAAIC,KAAK,CAACP,IAAAA,CAAKQ,OAAO,CAACH,UAAAA,CAAAA,EAAa;YAAEI,SAAAA,EAAW;AAAK,SAAA,CAAA;AAC5D,QAAA,MAAMH,QAAAA,CAAII,SAAS,CAACL,UAAAA,EAAYR,MAAAA,EAAQ,MAAA,CAAA;QACxCA,MAAAA,GAAS,EAAA;AACX,IAAA,CAAA;AAEA,IAAA,MAAMc,OAAO,CAACC,KAAAA,GAAAA;QACZf,MAAAA,IAAUe,KAAAA;AACZ,IAAA,CAAA;AAEA,IAAA,OAAO,IAAIC,QAAAA,CAAS;AAClB,QAAA,MAAMC,OAAMC,QAAQ,EAAA;YAClB,IAAI;gBACF,MAAMZ,KAAAA,EAAAA;AACNY,gBAAAA,QAAAA,EAAAA;AACF,YAAA,CAAA,CAAE,OAAOC,GAAAA,EAAc;AACrBD,gBAAAA,QAAAA,CAASC,GAAAA,YAAeC,KAAAA,GAAQD,GAAAA,GAAM,IAAIC,MAAMC,MAAAA,CAAOF,GAAAA,CAAAA,CAAAA,CAAAA;AACzD,YAAA;AACF,QAAA,CAAA;QAEA,MAAMG,OAAAA,CAAAA,CAAQH,GAAG,EAAED,QAAQ,EAAA;YACzB,MAAMZ,KAAAA,EAAAA;YACNY,QAAAA,CAASC,GAAAA,CAAAA;AACX,QAAA,CAAA;AAEA,QAAA,MAAMI,KAAAA,CAAAA,CAAMR,KAAK,EAAES,SAAS,EAAEN,QAAQ,EAAA;YACpC,MAAMO,IAAAA,GAAOV,MAAMW,MAAM;YAEzB,IAAIX,KAAAA,CAAMW,MAAM,GAAG5B,OAAAA,EAAS;gBAC1BoB,QAAAA,CAAS,IAAIE,KAAAA,CAAM,CAAC,mBAAmB,EAAEL,MAAMW,MAAM,CAAC,CAAC,EAAE5B,OAAAA,CAAAA,CAAS,CAAA,CAAA;AAClE,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIE,MAAAA,CAAO0B,MAAM,GAAGD,IAAAA,GAAO3B,OAAAA,EAAS;gBAClC,MAAMQ,KAAAA,EAAAA;AACR,YAAA;YAEAQ,IAAAA,CAAKC,KAAAA,CAAAA;YAELG,QAAAA,CAAS,IAAA,CAAA;AACX,QAAA;AACF,KAAA,CAAA;AACF;;;;"}
@@ -0,0 +1,3 @@
1
+ export * from './destination';
2
+ export * from './source';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/directory/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var index = require('./destination/index.js');
4
+ var index$1 = require('./source/index.js');
5
+
6
+
7
+
8
+ exports.createLocalDirectoryDestinationProvider = index.createLocalDirectoryDestinationProvider;
9
+ exports.createLocalDirectorySourceProvider = index$1.createLocalDirectorySourceProvider;
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ export { createLocalDirectoryDestinationProvider } from './destination/index.mjs';
2
+ export { createLocalDirectorySourceProvider } from './source/index.mjs';
3
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,27 @@
1
+ import type { Readable } from 'stream';
2
+ import type { IMetadata, ISourceProvider, ProviderType } from '../../../types';
3
+ import type { IDiagnosticReporter } from '../../../utils/diagnostic';
4
+ export interface ILocalDirectorySourceProviderOptions {
5
+ directory: {
6
+ /** Absolute or relative path to the root of an unpacked Strapi data-transfer export */
7
+ path: string;
8
+ };
9
+ }
10
+ export declare const createLocalDirectorySourceProvider: (options: ILocalDirectorySourceProviderOptions) => LocalDirectorySourceProvider;
11
+ declare class LocalDirectorySourceProvider implements ISourceProvider {
12
+ #private;
13
+ type: ProviderType;
14
+ name: string;
15
+ options: ILocalDirectorySourceProviderOptions;
16
+ constructor(options: ILocalDirectorySourceProviderOptions);
17
+ bootstrap(diagnostics: IDiagnosticReporter): Promise<void>;
18
+ getMetadata(): Promise<IMetadata | null>;
19
+ getSchemas(): Promise<any>;
20
+ createEntitiesReadStream(): Readable;
21
+ createSchemasReadStream(): Readable;
22
+ createLinksReadStream(): Readable;
23
+ createConfigurationReadStream(): Readable;
24
+ createAssetsReadStream(): Readable;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/directory/providers/source/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AASvC,OAAO,KAAK,EAAU,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AASrE,MAAM,WAAW,oCAAoC;IACnD,SAAS,EAAE;QACT,uFAAuF;QACvF,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,eAAO,MAAM,kCAAkC,GAC7C,SAAS,oCAAoC,iCAG9C,CAAC;AAOF,cAAM,4BAA6B,YAAW,eAAe;;IAC3D,IAAI,EAAE,YAAY,CAAY;IAE9B,IAAI,SAA6B;IAEjC,OAAO,EAAE,oCAAoC,CAAC;gBAQlC,OAAO,EAAE,oCAAoC;IA2BnD,SAAS,CAAC,WAAW,EAAE,mBAAmB;IAkC1C,WAAW;IAQX,UAAU;IAchB,wBAAwB,IAAI,QAAQ;IAKpC,uBAAuB,IAAI,QAAQ;IAKnC,qBAAqB,IAAI,QAAQ;IAKjC,6BAA6B,IAAI,QAAQ;IAKzC,sBAAsB,IAAI,QAAQ;CA8GnC"}
@@ -0,0 +1,266 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+ var stream$1 = require('stream');
5
+ var fs = require('fs-extra');
6
+ var fp = require('lodash/fp');
7
+ var streamChain = require('stream-chain');
8
+ var Parser = require('stream-json/jsonl/Parser');
9
+ require('crypto');
10
+ var writableAsyncWrite = require('../../../utils/writable-async-write.js');
11
+ var stream = require('../../../utils/stream.js');
12
+ var schema = require('../../../utils/schema.js');
13
+ require('events');
14
+ var providers = require('../../../errors/providers.js');
15
+ var utils = require('../../../file/providers/source/utils.js');
16
+
17
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
+
19
+ var path__default = /*#__PURE__*/_interopDefault(path);
20
+ var fs__default = /*#__PURE__*/_interopDefault(fs);
21
+
22
+ function _class_private_field_loose_base(receiver, privateKey) {
23
+ if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
24
+ throw new TypeError("attempted to use private field on non-instance");
25
+ }
26
+ return receiver;
27
+ }
28
+ var id = 0;
29
+ function _class_private_field_loose_key(name) {
30
+ return "__private_" + id++ + "_" + name;
31
+ }
32
+ const METADATA_FILE_PATH = 'metadata.json';
33
+ const createLocalDirectorySourceProvider = (options)=>{
34
+ return new LocalDirectorySourceProvider(options);
35
+ };
36
+ const isPathInsideRoot = (root, candidate)=>{
37
+ const relative = path__default.default.relative(root, candidate);
38
+ return relative === '' || !relative.startsWith(`..${path__default.default.sep}`) && !path__default.default.isAbsolute(relative);
39
+ };
40
+ var _rootResolved = /*#__PURE__*/ _class_private_field_loose_key("_rootResolved"), _metadata = /*#__PURE__*/ _class_private_field_loose_key("_metadata"), _diagnostics = /*#__PURE__*/ _class_private_field_loose_key("_diagnostics"), _reportInfo = /*#__PURE__*/ _class_private_field_loose_key("_reportInfo"), /** Resolve a posix-style relative path under the export root; rejects escapes. */ _safePath = /*#__PURE__*/ _class_private_field_loose_key("_safePath"), _loadMetadata = /*#__PURE__*/ _class_private_field_loose_key("_loadMetadata"), _pipeAssetsToStream = /*#__PURE__*/ _class_private_field_loose_key("_pipeAssetsToStream"), _readAssetMetadata = /*#__PURE__*/ _class_private_field_loose_key("_readAssetMetadata"), _listJsonlFiles = /*#__PURE__*/ _class_private_field_loose_key("_listJsonlFiles"), _streamJsonlDirectory = /*#__PURE__*/ _class_private_field_loose_key("_streamJsonlDirectory"), _pipeJsonlDirectoryToStream = /*#__PURE__*/ _class_private_field_loose_key("_pipeJsonlDirectoryToStream");
41
+ class LocalDirectorySourceProvider {
42
+ async bootstrap(diagnostics) {
43
+ _class_private_field_loose_base(this, _diagnostics)[_diagnostics] = diagnostics;
44
+ const root = _class_private_field_loose_base(this, _rootResolved)[_rootResolved];
45
+ try {
46
+ const stat = await fs__default.default.stat(root);
47
+ if (!stat.isDirectory()) {
48
+ throw new providers.ProviderInitializationError(`Path '${root}' is not a directory.`);
49
+ }
50
+ await _class_private_field_loose_base(this, _loadMetadata)[_loadMetadata]();
51
+ } catch (e) {
52
+ if (e instanceof providers.ProviderInitializationError) {
53
+ throw e;
54
+ }
55
+ throw new providers.ProviderInitializationError(`Directory '${root}' is not a valid Strapi data export.`);
56
+ }
57
+ if (!_class_private_field_loose_base(this, _metadata)[_metadata]) {
58
+ throw new providers.ProviderInitializationError('Could not load metadata from Strapi data export.');
59
+ }
60
+ }
61
+ async getMetadata() {
62
+ _class_private_field_loose_base(this, _reportInfo)[_reportInfo]('getting metadata');
63
+ if (!_class_private_field_loose_base(this, _metadata)[_metadata]) {
64
+ await _class_private_field_loose_base(this, _loadMetadata)[_loadMetadata]();
65
+ }
66
+ return _class_private_field_loose_base(this, _metadata)[_metadata] ?? null;
67
+ }
68
+ async getSchemas() {
69
+ _class_private_field_loose_base(this, _reportInfo)[_reportInfo]('getting schemas');
70
+ const schemaCollection = await stream.collect(this.createSchemasReadStream());
71
+ if (fp.isEmpty(schemaCollection)) {
72
+ throw new providers.ProviderInitializationError('Could not load schemas from Strapi data export.');
73
+ }
74
+ const schemas = fp.keyBy('uid', schemaCollection);
75
+ return schema.schemasToValidJSON(schemas);
76
+ }
77
+ createEntitiesReadStream() {
78
+ _class_private_field_loose_base(this, _reportInfo)[_reportInfo]('creating entities read stream');
79
+ return _class_private_field_loose_base(this, _streamJsonlDirectory)[_streamJsonlDirectory]('entities');
80
+ }
81
+ createSchemasReadStream() {
82
+ _class_private_field_loose_base(this, _reportInfo)[_reportInfo]('creating schemas read stream');
83
+ return _class_private_field_loose_base(this, _streamJsonlDirectory)[_streamJsonlDirectory]('schemas');
84
+ }
85
+ createLinksReadStream() {
86
+ _class_private_field_loose_base(this, _reportInfo)[_reportInfo]('creating links read stream');
87
+ return _class_private_field_loose_base(this, _streamJsonlDirectory)[_streamJsonlDirectory]('links');
88
+ }
89
+ createConfigurationReadStream() {
90
+ _class_private_field_loose_base(this, _reportInfo)[_reportInfo]('creating configuration read stream');
91
+ return _class_private_field_loose_base(this, _streamJsonlDirectory)[_streamJsonlDirectory]('configuration');
92
+ }
93
+ createAssetsReadStream() {
94
+ const outStream = new stream$1.PassThrough({
95
+ objectMode: true
96
+ });
97
+ const uploadsDir = _class_private_field_loose_base(this, _safePath)[_safePath]('assets', 'uploads');
98
+ _class_private_field_loose_base(this, _reportInfo)[_reportInfo]('creating assets read stream');
99
+ _class_private_field_loose_base(this, _pipeAssetsToStream)[_pipeAssetsToStream](outStream, uploadsDir).catch((e)=>{
100
+ outStream.destroy(e instanceof Error ? e : new providers.ProviderTransferError(String(e), {
101
+ details: {
102
+ error: e
103
+ }
104
+ }));
105
+ });
106
+ return outStream;
107
+ }
108
+ constructor(options){
109
+ Object.defineProperty(this, _reportInfo, {
110
+ value: reportInfo
111
+ });
112
+ Object.defineProperty(this, _safePath, {
113
+ value: safePath
114
+ });
115
+ Object.defineProperty(this, _loadMetadata, {
116
+ value: loadMetadata
117
+ });
118
+ Object.defineProperty(this, _pipeAssetsToStream, {
119
+ value: pipeAssetsToStream
120
+ });
121
+ Object.defineProperty(this, _readAssetMetadata, {
122
+ value: readAssetMetadata
123
+ });
124
+ Object.defineProperty(this, _listJsonlFiles, {
125
+ value: listJsonlFiles
126
+ });
127
+ Object.defineProperty(this, _streamJsonlDirectory, {
128
+ value: streamJsonlDirectory
129
+ });
130
+ Object.defineProperty(this, _pipeJsonlDirectoryToStream, {
131
+ value: pipeJsonlDirectoryToStream
132
+ });
133
+ Object.defineProperty(this, _rootResolved, {
134
+ writable: true,
135
+ value: void 0
136
+ });
137
+ Object.defineProperty(this, _metadata, {
138
+ writable: true,
139
+ value: void 0
140
+ });
141
+ Object.defineProperty(this, _diagnostics, {
142
+ writable: true,
143
+ value: void 0
144
+ });
145
+ this.type = 'source';
146
+ this.name = 'source::local-directory';
147
+ this.options = options;
148
+ _class_private_field_loose_base(this, _rootResolved)[_rootResolved] = path__default.default.resolve(options.directory.path);
149
+ }
150
+ }
151
+ function reportInfo(message) {
152
+ _class_private_field_loose_base(this, _diagnostics)[_diagnostics]?.report({
153
+ details: {
154
+ createdAt: new Date(),
155
+ message,
156
+ origin: 'directory-source-provider'
157
+ },
158
+ kind: 'info'
159
+ });
160
+ }
161
+ function safePath(...posixSegments) {
162
+ const joined = path__default.default.posix.join(...posixSegments);
163
+ const segments = joined.split(path__default.default.posix.sep).filter(Boolean);
164
+ const resolved = path__default.default.resolve(_class_private_field_loose_base(this, _rootResolved)[_rootResolved], ...segments);
165
+ if (!isPathInsideRoot(_class_private_field_loose_base(this, _rootResolved)[_rootResolved], resolved)) {
166
+ throw new providers.ProviderInitializationError(`Invalid path "${joined}" — escapes backup directory`);
167
+ }
168
+ return resolved;
169
+ }
170
+ async function loadMetadata() {
171
+ const metadataPath = _class_private_field_loose_base(this, _safePath)[_safePath](METADATA_FILE_PATH);
172
+ if (!await fs__default.default.pathExists(metadataPath)) {
173
+ throw new providers.ProviderInitializationError(`Missing ${METADATA_FILE_PATH} in export directory '${_class_private_field_loose_base(this, _rootResolved)[_rootResolved]}'.`);
174
+ }
175
+ _class_private_field_loose_base(this, _metadata)[_metadata] = await fs__default.default.readJson(metadataPath);
176
+ }
177
+ async function pipeAssetsToStream(outStream, uploadsDir) {
178
+ if (!await fs__default.default.pathExists(uploadsDir)) {
179
+ outStream.end();
180
+ return;
181
+ }
182
+ const names = (await fs__default.default.readdir(uploadsDir)).sort();
183
+ for (const name of names){
184
+ const absUpload = path__default.default.join(uploadsDir, name);
185
+ const stat = await fs__default.default.stat(absUpload);
186
+ if (stat.isFile()) {
187
+ let metadata;
188
+ try {
189
+ metadata = await _class_private_field_loose_base(this, _readAssetMetadata)[_readAssetMetadata](name);
190
+ } catch (error) {
191
+ outStream.destroy(new providers.ProviderTransferError(`Failed to read metadata for ${name}`, {
192
+ details: {
193
+ error
194
+ }
195
+ }));
196
+ return;
197
+ }
198
+ const normalizedPath = utils.unknownPathToPosix(path__default.default.posix.join('assets', 'uploads', name));
199
+ const asset = {
200
+ metadata,
201
+ filename: name,
202
+ filepath: normalizedPath,
203
+ stats: {
204
+ size: stat.size
205
+ },
206
+ stream: fs__default.default.createReadStream(absUpload)
207
+ };
208
+ await writableAsyncWrite.write(outStream, asset);
209
+ }
210
+ }
211
+ outStream.end();
212
+ }
213
+ async function readAssetMetadata(filename) {
214
+ const metadataPath = _class_private_field_loose_base(this, _safePath)[_safePath]('assets', 'metadata', `${filename}.json`);
215
+ return fs__default.default.readJson(metadataPath);
216
+ }
217
+ async function listJsonlFiles(posixSubdir) {
218
+ const dirAbs = _class_private_field_loose_base(this, _safePath)[_safePath](...posixSubdir.split('/').filter(Boolean));
219
+ if (!await fs__default.default.pathExists(dirAbs)) {
220
+ return [];
221
+ }
222
+ const names = await fs__default.default.readdir(dirAbs);
223
+ return names.filter((n)=>n.endsWith('.jsonl')).sort().map((n)=>path__default.default.join(dirAbs, n));
224
+ }
225
+ function streamJsonlDirectory(posixSubdir) {
226
+ const outStream = new stream$1.PassThrough({
227
+ objectMode: true
228
+ });
229
+ _class_private_field_loose_base(this, _reportInfo)[_reportInfo](`streaming jsonl from ${posixSubdir}`);
230
+ _class_private_field_loose_base(this, _pipeJsonlDirectoryToStream)[_pipeJsonlDirectoryToStream](outStream, posixSubdir).catch((e)=>{
231
+ outStream.destroy(e instanceof Error ? e : new providers.ProviderTransferError(String(e), {
232
+ details: {
233
+ error: e
234
+ }
235
+ }));
236
+ });
237
+ return outStream;
238
+ }
239
+ async function pipeJsonlDirectoryToStream(outStream, posixSubdir) {
240
+ const files = await _class_private_field_loose_base(this, _listJsonlFiles)[_listJsonlFiles](posixSubdir);
241
+ for (const absPath of files){
242
+ const transforms = [
243
+ Parser.parser({
244
+ checkErrors: true
245
+ }),
246
+ (line)=>line.value
247
+ ];
248
+ const stream = fs__default.default.createReadStream(absPath).pipe(streamChain.chain(transforms));
249
+ try {
250
+ for await (const chunk of stream){
251
+ await writableAsyncWrite.write(outStream, chunk);
252
+ }
253
+ } catch (e) {
254
+ outStream.destroy(new providers.ProviderTransferError(`Error parsing JSONL in ${absPath}: ${e.message}`, {
255
+ details: {
256
+ error: e
257
+ }
258
+ }));
259
+ return;
260
+ }
261
+ }
262
+ outStream.end();
263
+ }
264
+
265
+ exports.createLocalDirectorySourceProvider = createLocalDirectorySourceProvider;
266
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/directory/providers/source/index.ts"],"sourcesContent":["import path from 'path';\nimport type { Readable } from 'stream';\nimport { PassThrough } from 'stream';\n\nimport fs from 'fs-extra';\nimport { isEmpty, keyBy } from 'lodash/fp';\nimport { chain } from 'stream-chain';\nimport { parser } from 'stream-json/jsonl/Parser';\nimport type { Struct } from '@strapi/types';\n\nimport type { IAsset, IMetadata, ISourceProvider, ProviderType } from '../../../types';\nimport type { IDiagnosticReporter } from '../../../utils/diagnostic';\n\nimport * as utils from '../../../utils';\nimport { write } from '../../../utils/writable-async-write';\nimport { ProviderInitializationError, ProviderTransferError } from '../../../errors/providers';\nimport { unknownPathToPosix } from '../../../file/providers/source/utils';\n\nconst METADATA_FILE_PATH = 'metadata.json';\n\nexport interface ILocalDirectorySourceProviderOptions {\n directory: {\n /** Absolute or relative path to the root of an unpacked Strapi data-transfer export */\n path: string;\n };\n}\n\nexport const createLocalDirectorySourceProvider = (\n options: ILocalDirectorySourceProviderOptions\n) => {\n return new LocalDirectorySourceProvider(options);\n};\n\nconst isPathInsideRoot = (root: string, candidate: string): boolean => {\n const relative = path.relative(root, candidate);\n return relative === '' || (!relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative));\n};\n\nclass LocalDirectorySourceProvider implements ISourceProvider {\n type: ProviderType = 'source';\n\n name = 'source::local-directory';\n\n options: ILocalDirectorySourceProviderOptions;\n\n #rootResolved: string;\n\n #metadata?: IMetadata;\n\n #diagnostics?: IDiagnosticReporter;\n\n constructor(options: ILocalDirectorySourceProviderOptions) {\n this.options = options;\n this.#rootResolved = path.resolve(options.directory.path);\n }\n\n #reportInfo(message: string) {\n this.#diagnostics?.report({\n details: {\n createdAt: new Date(),\n message,\n origin: 'directory-source-provider',\n },\n kind: 'info',\n });\n }\n\n /** Resolve a posix-style relative path under the export root; rejects escapes. */\n #safePath(...posixSegments: string[]): string {\n const joined = path.posix.join(...posixSegments);\n const segments = joined.split(path.posix.sep).filter(Boolean);\n const resolved = path.resolve(this.#rootResolved, ...segments);\n if (!isPathInsideRoot(this.#rootResolved, resolved)) {\n throw new ProviderInitializationError(`Invalid path \"${joined}\" — escapes backup directory`);\n }\n return resolved;\n }\n\n async bootstrap(diagnostics: IDiagnosticReporter) {\n this.#diagnostics = diagnostics;\n const root = this.#rootResolved;\n\n try {\n const stat = await fs.stat(root);\n if (!stat.isDirectory()) {\n throw new ProviderInitializationError(`Path '${root}' is not a directory.`);\n }\n await this.#loadMetadata();\n } catch (e) {\n if (e instanceof ProviderInitializationError) {\n throw e;\n }\n throw new ProviderInitializationError(\n `Directory '${root}' is not a valid Strapi data export.`\n );\n }\n\n if (!this.#metadata) {\n throw new ProviderInitializationError('Could not load metadata from Strapi data export.');\n }\n }\n\n async #loadMetadata() {\n const metadataPath = this.#safePath(METADATA_FILE_PATH);\n if (!(await fs.pathExists(metadataPath))) {\n throw new ProviderInitializationError(\n `Missing ${METADATA_FILE_PATH} in export directory '${this.#rootResolved}'.`\n );\n }\n this.#metadata = await fs.readJson(metadataPath);\n }\n\n async getMetadata() {\n this.#reportInfo('getting metadata');\n if (!this.#metadata) {\n await this.#loadMetadata();\n }\n return this.#metadata ?? null;\n }\n\n async getSchemas() {\n this.#reportInfo('getting schemas');\n const schemaCollection = await utils.stream.collect<Struct.Schema>(\n this.createSchemasReadStream()\n );\n\n if (isEmpty(schemaCollection)) {\n throw new ProviderInitializationError('Could not load schemas from Strapi data export.');\n }\n\n const schemas = keyBy('uid', schemaCollection);\n return utils.schema.schemasToValidJSON(schemas);\n }\n\n createEntitiesReadStream(): Readable {\n this.#reportInfo('creating entities read stream');\n return this.#streamJsonlDirectory('entities');\n }\n\n createSchemasReadStream(): Readable {\n this.#reportInfo('creating schemas read stream');\n return this.#streamJsonlDirectory('schemas');\n }\n\n createLinksReadStream(): Readable {\n this.#reportInfo('creating links read stream');\n return this.#streamJsonlDirectory('links');\n }\n\n createConfigurationReadStream(): Readable {\n this.#reportInfo('creating configuration read stream');\n return this.#streamJsonlDirectory('configuration');\n }\n\n createAssetsReadStream(): Readable {\n const outStream = new PassThrough({ objectMode: true });\n const uploadsDir = this.#safePath('assets', 'uploads');\n this.#reportInfo('creating assets read stream');\n\n this.#pipeAssetsToStream(outStream, uploadsDir).catch((e: unknown) => {\n outStream.destroy(\n e instanceof Error ? e : new ProviderTransferError(String(e), { details: { error: e } })\n );\n });\n\n return outStream;\n }\n\n async #pipeAssetsToStream(outStream: PassThrough, uploadsDir: string): Promise<void> {\n if (!(await fs.pathExists(uploadsDir))) {\n outStream.end();\n return;\n }\n\n const names = (await fs.readdir(uploadsDir)).sort();\n for (const name of names) {\n const absUpload = path.join(uploadsDir, name);\n const stat = await fs.stat(absUpload);\n if (stat.isFile()) {\n let metadata: IAsset['metadata'];\n try {\n metadata = await this.#readAssetMetadata(name);\n } catch (error) {\n outStream.destroy(\n new ProviderTransferError(`Failed to read metadata for ${name}`, {\n details: { error },\n })\n );\n return;\n }\n\n const normalizedPath = unknownPathToPosix(path.posix.join('assets', 'uploads', name));\n const asset: IAsset = {\n metadata,\n filename: name,\n filepath: normalizedPath,\n stats: { size: stat.size },\n stream: fs.createReadStream(absUpload),\n };\n await write(outStream, asset);\n }\n }\n outStream.end();\n }\n\n async #readAssetMetadata(filename: string): Promise<IAsset['metadata']> {\n const metadataPath = this.#safePath('assets', 'metadata', `${filename}.json`);\n return fs.readJson(metadataPath);\n }\n\n async #listJsonlFiles(posixSubdir: string): Promise<string[]> {\n const dirAbs = this.#safePath(...posixSubdir.split('/').filter(Boolean));\n if (!(await fs.pathExists(dirAbs))) {\n return [];\n }\n const names = await fs.readdir(dirAbs);\n return names\n .filter((n) => n.endsWith('.jsonl'))\n .sort()\n .map((n) => path.join(dirAbs, n));\n }\n\n #streamJsonlDirectory(posixSubdir: string): Readable {\n const outStream = new PassThrough({ objectMode: true });\n this.#reportInfo(`streaming jsonl from ${posixSubdir}`);\n\n this.#pipeJsonlDirectoryToStream(outStream, posixSubdir).catch((e: unknown) => {\n outStream.destroy(\n e instanceof Error ? e : new ProviderTransferError(String(e), { details: { error: e } })\n );\n });\n\n return outStream;\n }\n\n async #pipeJsonlDirectoryToStream(outStream: PassThrough, posixSubdir: string): Promise<void> {\n const files = await this.#listJsonlFiles(posixSubdir);\n for (const absPath of files) {\n const transforms = [\n parser({\n checkErrors: true,\n }),\n (line: { key: string; value: object }) => line.value,\n ];\n\n const stream = fs.createReadStream(absPath).pipe(chain(transforms));\n\n try {\n for await (const chunk of stream) {\n await write(outStream, chunk);\n }\n } catch (e: unknown) {\n outStream.destroy(\n new ProviderTransferError(`Error parsing JSONL in ${absPath}: ${(e as Error).message}`, {\n details: {\n error: e,\n },\n })\n );\n return;\n }\n }\n outStream.end();\n }\n}\n"],"names":["METADATA_FILE_PATH","createLocalDirectorySourceProvider","options","LocalDirectorySourceProvider","isPathInsideRoot","root","candidate","relative","path","startsWith","sep","isAbsolute","bootstrap","diagnostics","stat","fs","isDirectory","ProviderInitializationError","e","getMetadata","getSchemas","schemaCollection","utils","createSchemasReadStream","isEmpty","schemas","keyBy","createEntitiesReadStream","createLinksReadStream","createConfigurationReadStream","createAssetsReadStream","outStream","PassThrough","objectMode","uploadsDir","catch","destroy","Error","ProviderTransferError","String","details","error","type","name","resolve","directory","message","report","createdAt","Date","origin","kind","posixSegments","joined","posix","join","segments","split","filter","Boolean","resolved","metadataPath","pathExists","readJson","end","names","readdir","sort","absUpload","isFile","metadata","normalizedPath","unknownPathToPosix","asset","filename","filepath","stats","size","stream","createReadStream","write","posixSubdir","dirAbs","n","endsWith","map","files","absPath","transforms","parser","checkErrors","line","value","pipe","chain","chunk"],"mappings":"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"}