directus-template-cli 0.3.6 → 0.4.0

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 (344) hide show
  1. package/README.md +5 -2
  2. package/dist/commands/apply.d.ts +1 -1
  3. package/dist/commands/apply.js +80 -50
  4. package/dist/commands/extract.d.ts +1 -2
  5. package/dist/commands/extract.js +13 -18
  6. package/dist/lib/extract/extract-assets.d.ts +182 -2
  7. package/dist/lib/extract/extract-assets.js +25 -32
  8. package/dist/lib/extract/extract-collections.d.ts +4 -0
  9. package/dist/lib/extract/extract-collections.js +24 -0
  10. package/dist/lib/extract/extract-content.d.ts +1 -1
  11. package/dist/lib/extract/extract-content.js +18 -18
  12. package/dist/lib/extract/extract-dashboards.d.ts +8 -0
  13. package/dist/lib/extract/extract-dashboards.js +42 -0
  14. package/dist/lib/extract/extract-fields.d.ts +4 -0
  15. package/dist/lib/extract/extract-fields.js +30 -0
  16. package/dist/lib/extract/extract-files.js +11 -34
  17. package/dist/lib/extract/extract-flows.d.ts +8 -0
  18. package/dist/lib/extract/extract-flows.js +42 -0
  19. package/dist/lib/extract/extract-folders.d.ts +1 -1
  20. package/dist/lib/extract/extract-folders.js +12 -13
  21. package/dist/lib/extract/extract-permissions.d.ts +1 -1
  22. package/dist/lib/extract/extract-permissions.js +13 -13
  23. package/dist/lib/extract/extract-presets.js +15 -11
  24. package/dist/lib/extract/extract-relations.d.ts +4 -0
  25. package/dist/lib/extract/extract-relations.js +33 -0
  26. package/dist/lib/extract/extract-roles.js +11 -22
  27. package/dist/lib/extract/extract-schema.js +14 -14
  28. package/dist/lib/extract/extract-settings.d.ts +4 -0
  29. package/dist/lib/extract/extract-settings.js +22 -0
  30. package/dist/lib/extract/extract-translations.d.ts +4 -0
  31. package/dist/lib/extract/extract-translations.js +24 -0
  32. package/dist/lib/extract/extract-users.d.ts +1 -1
  33. package/dist/lib/extract/extract-users.js +14 -36
  34. package/dist/lib/extract/index.d.ts +1 -1
  35. package/dist/lib/extract/index.js +27 -32
  36. package/dist/lib/interfaces.d.ts +1 -1
  37. package/dist/lib/load/index.d.ts +1 -1
  38. package/dist/lib/load/index.js +33 -44
  39. package/dist/lib/load/load-collections.d.ts +4 -0
  40. package/dist/lib/load/load-collections.js +66 -0
  41. package/dist/lib/load/load-dashboards.d.ts +2 -1
  42. package/dist/lib/load/load-dashboards.js +33 -3
  43. package/dist/lib/load/load-data.d.ts +1 -1
  44. package/dist/lib/load/load-data.js +87 -60
  45. package/dist/lib/load/load-files.d.ts +1 -1
  46. package/dist/lib/load/load-files.js +23 -20
  47. package/dist/lib/load/load-flows.d.ts +2 -2
  48. package/dist/lib/load/load-flows.js +43 -9
  49. package/dist/lib/load/load-folders.js +15 -11
  50. package/dist/lib/load/load-permissions.d.ts +1 -1
  51. package/dist/lib/load/load-permissions.js +22 -21
  52. package/dist/lib/load/load-presets.d.ts +1 -2
  53. package/dist/lib/load/load-presets.js +16 -19
  54. package/dist/lib/load/load-relations.d.ts +4 -0
  55. package/dist/lib/load/load-relations.js +33 -0
  56. package/dist/lib/load/load-roles.d.ts +1 -1
  57. package/dist/lib/load/load-roles.js +20 -10
  58. package/dist/lib/load/load-schema.d.ts +14 -2
  59. package/dist/lib/load/load-schema.js +85 -10
  60. package/dist/lib/load/load-settings.d.ts +1 -1
  61. package/dist/lib/load/load-settings.js +10 -4
  62. package/dist/lib/load/load-translations.d.ts +1 -0
  63. package/dist/lib/load/load-translations.js +21 -0
  64. package/dist/lib/load/load-users.d.ts +1 -2
  65. package/dist/lib/load/load-users.js +19 -8
  66. package/dist/lib/sdk.d.ts +13 -0
  67. package/dist/lib/sdk.js +26 -0
  68. package/dist/lib/utils/auth.d.ts +2 -2
  69. package/dist/lib/utils/auth.js +12 -11
  70. package/dist/lib/utils/check-template.d.ts +1 -0
  71. package/dist/lib/utils/check-template.js +32 -0
  72. package/dist/lib/utils/filter-fields.js +5 -5
  73. package/dist/lib/utils/get-role-ids.d.ts +55 -0
  74. package/dist/lib/utils/get-role-ids.js +14 -0
  75. package/dist/lib/utils/log-error.d.ts +14 -0
  76. package/dist/lib/utils/log-error.js +25 -0
  77. package/dist/lib/utils/path.d.ts +7 -0
  78. package/dist/lib/utils/path.js +20 -0
  79. package/dist/lib/utils/read-file.d.ts +0 -1
  80. package/dist/lib/utils/read-file.js +7 -9
  81. package/dist/lib/utils/read-templates.js +2 -2
  82. package/dist/lib/utils/system-fields.d.ts +20 -0
  83. package/dist/lib/utils/system-fields.js +159 -0
  84. package/dist/lib/utils/template-defaults.js +8 -11
  85. package/dist/lib/utils/transform-github-url.d.ts +1 -0
  86. package/dist/lib/utils/transform-github-url.js +15 -0
  87. package/dist/lib/utils/validate-url.js +1 -1
  88. package/dist/lib/utils/write-to-file.js +4 -4
  89. package/oclif.manifest.json +34 -16
  90. package/package.json +25 -23
  91. package/dist/lib/api.d.ts +0 -15
  92. package/dist/lib/api.js +0 -37
  93. package/dist/lib/extract/extract-from-endpoint.d.ts +0 -4
  94. package/dist/lib/extract/extract-from-endpoint.js +0 -23
  95. package/dist/lib/load/load-operations.d.ts +0 -1
  96. package/dist/lib/load/load-operations.js +0 -29
  97. package/dist/lib/load/load-panels.d.ts +0 -0
  98. package/dist/lib/load/load-panels.js +0 -0
  99. package/dist/lib/utils/delete-items.d.ts +0 -1
  100. package/dist/lib/utils/delete-items.js +0 -15
  101. package/dist/lib/utils/load-to-destination.d.ts +0 -1
  102. package/dist/lib/utils/load-to-destination.js +0 -14
  103. package/templates/agencyos/README.md +0 -11
  104. package/templates/agencyos/package.json +0 -11
  105. package/templates/agencyos/src/assets/08177527-b867-47e9-b5d5-eab146b3cdba.jpg +0 -0
  106. package/templates/agencyos/src/assets/08242513-ca8f-471f-b69b-82703a19d1e5.svg +0 -14
  107. package/templates/agencyos/src/assets/0dfe66dd-ceba-4dca-8907-03b2dda49443.svg +0 -1
  108. package/templates/agencyos/src/assets/12e02b82-b4a4-4aaf-8ca4-e73c20a41c26.jpeg +0 -0
  109. package/templates/agencyos/src/assets/1f19dd72-a433-481d-9b51-e3cc8e4f33d3.svg +0 -1
  110. package/templates/agencyos/src/assets/1f69c0b8-19b7-49d7-b420-bedad577a079.png +0 -0
  111. package/templates/agencyos/src/assets/21e179ab-72c3-4350-b46a-fadd16f5652e.svg +0 -1
  112. package/templates/agencyos/src/assets/270fa8d1-45a3-4fcb-87d2-27a0248f1daf.jpg +0 -0
  113. package/templates/agencyos/src/assets/27f55be1-7ef5-47c4-87ba-ab9a060ab270.jpeg +0 -0
  114. package/templates/agencyos/src/assets/2b4a0ba0-52c7-4e10-b191-c803d8da6a36.png +0 -0
  115. package/templates/agencyos/src/assets/35a67f1b-d401-4300-a503-b8e583186f2a.svg +0 -11
  116. package/templates/agencyos/src/assets/3eff7dc2-445a-47c5-9503-3f600ecdb5c6.jpeg +0 -0
  117. package/templates/agencyos/src/assets/44a4e780-d59b-4fa5-9b26-1c4b447474d2.jpg +0 -0
  118. package/templates/agencyos/src/assets/4b31c98e-ec03-4b91-bb18-ef55dd199638.jpg +0 -0
  119. package/templates/agencyos/src/assets/5419bf05-9ab2-484b-a69d-d09b18602cf1.svg +0 -1
  120. package/templates/agencyos/src/assets/5a6dfe1e-7e5b-4a5f-9f6c-983777a67c05.svg +0 -1
  121. package/templates/agencyos/src/assets/643faffb-d41d-48ad-9050-881cf495cbb6.jpg +0 -0
  122. package/templates/agencyos/src/assets/6464e61f-455a-4b47-b623-bb12e5251dfe.jpeg +0 -0
  123. package/templates/agencyos/src/assets/6789bc72-ab83-40bf-8152-d6f2bafbc2a8.png +0 -0
  124. package/templates/agencyos/src/assets/68103296-6634-4d66-918a-04b09afe6621.jpeg +0 -0
  125. package/templates/agencyos/src/assets/690c2042-e3ad-46f4-9cd8-095a7b3a1df7.svg +0 -3
  126. package/templates/agencyos/src/assets/6a1ca349-d7ab-4f43-9284-c61671e145f2.svg +0 -22
  127. package/templates/agencyos/src/assets/6dad2008-3af5-407e-827e-da5744223181.svg +0 -1
  128. package/templates/agencyos/src/assets/6ff389c5-3ecb-4219-8f72-f10326aab421.jpg +0 -0
  129. package/templates/agencyos/src/assets/7647f4c2-9880-433a-bb8e-69b0c30ae31e.svg +0 -1
  130. package/templates/agencyos/src/assets/7775c53a-6c2c-453d-8c22-8b5445121d10.jpeg +0 -0
  131. package/templates/agencyos/src/assets/793e9bf7-c646-4588-8865-fe22556070ff.svg +0 -1
  132. package/templates/agencyos/src/assets/87fc0e81-45e4-4c05-8e9a-8e5c759d7aae.png +0 -0
  133. package/templates/agencyos/src/assets/88b95737-7ff4-4a09-8523-362d42caa9f9.jpg +0 -0
  134. package/templates/agencyos/src/assets/8f748634-d77b-4985-b27e-7e1f3559881a.jpeg +0 -0
  135. package/templates/agencyos/src/assets/a104c031-6ad2-4148-ace6-052e28cfda0b.svg +0 -1
  136. package/templates/agencyos/src/assets/ac905071-0643-4337-8f53-48ed45b1ccf2.jpg +0 -0
  137. package/templates/agencyos/src/assets/b1a3fd77-8e62-4678-9d44-333a30eec13b.jpg +0 -0
  138. package/templates/agencyos/src/assets/b210ecec-860f-4057-bab9-18c044b6e129.jpg +0 -0
  139. package/templates/agencyos/src/assets/b9db00d9-535f-4e24-8a46-5f7e5fc65bf2.jpg +0 -0
  140. package/templates/agencyos/src/assets/c0253924-38cd-4ca0-9989-9c0a57ec076a.png +0 -0
  141. package/templates/agencyos/src/assets/ce0b845f-f8d8-4856-b0af-1df4e3a838cc.jpg +0 -0
  142. package/templates/agencyos/src/assets/d0130348-9ead-49d0-b8e7-871cd43921a0.svg +0 -1
  143. package/templates/agencyos/src/assets/d4fd6edc-4cc5-48c1-8bc7-e646924bbdca.jpeg +0 -0
  144. package/templates/agencyos/src/assets/d598a4c0-4e9a-44a3-a72e-49564e34a432.jpg +0 -0
  145. package/templates/agencyos/src/assets/d94c9355-d89e-4229-941a-62b8525fd69a.png +0 -0
  146. package/templates/agencyos/src/assets/df0745c2-b6e3-4b37-b64d-55a4eb0033ab.avif +0 -0
  147. package/templates/agencyos/src/assets/df979753-946b-4d93-954e-e24367388d2c.svg +0 -1
  148. package/templates/agencyos/src/assets/dfa90758-9700-49e4-8fa2-b6cd074811b7.png +0 -0
  149. package/templates/agencyos/src/assets/e15ca910-1567-4f15-b5a0-b802da67f228.jpg +0 -0
  150. package/templates/agencyos/src/assets/eef7d7b1-3bf9-4647-90c1-a16c24161335.svg +0 -4
  151. package/templates/agencyos/src/assets/f1693c44-52e4-4fae-a7d2-b3153a34eb72.jpg +0 -0
  152. package/templates/agencyos/src/assets/f81e1a85-5a9c-41ef-9ef3-6a9349722daa.jpg +0 -0
  153. package/templates/agencyos/src/assets/fbae19f3-8739-4048-a20f-89ebbf59b032.jpg +0 -0
  154. package/templates/agencyos/src/collections.json +0 -3007
  155. package/templates/agencyos/src/content/block_button.json +0 -50
  156. package/templates/agencyos/src/content/block_button_group.json +0 -27
  157. package/templates/agencyos/src/content/block_columns.json +0 -18
  158. package/templates/agencyos/src/content/block_columns_rows.json +0 -47
  159. package/templates/agencyos/src/content/block_cta.json +0 -9
  160. package/templates/agencyos/src/content/block_divider.json +0 -14
  161. package/templates/agencyos/src/content/block_faqs.json +0 -90
  162. package/templates/agencyos/src/content/block_form.json +0 -26
  163. package/templates/agencyos/src/content/block_gallery.json +0 -19
  164. package/templates/agencyos/src/content/block_gallery_files.json +0 -102
  165. package/templates/agencyos/src/content/block_hero.json +0 -20
  166. package/templates/agencyos/src/content/block_html.json +0 -1
  167. package/templates/agencyos/src/content/block_logocloud.json +0 -24
  168. package/templates/agencyos/src/content/block_logocloud_logos.json +0 -50
  169. package/templates/agencyos/src/content/block_quote.json +0 -14
  170. package/templates/agencyos/src/content/block_richtext.json +0 -58
  171. package/templates/agencyos/src/content/block_step_items.json +0 -47
  172. package/templates/agencyos/src/content/block_steps.json +0 -24
  173. package/templates/agencyos/src/content/block_team.json +0 -14
  174. package/templates/agencyos/src/content/block_testimonial_slider_items.json +0 -42
  175. package/templates/agencyos/src/content/block_testimonials.json +0 -13
  176. package/templates/agencyos/src/content/block_video.json +0 -10
  177. package/templates/agencyos/src/content/categories.json +0 -38
  178. package/templates/agencyos/src/content/contacts.json +0 -46
  179. package/templates/agencyos/src/content/conversations.json +0 -1
  180. package/templates/agencyos/src/content/forms.json +0 -129
  181. package/templates/agencyos/src/content/globals.json +0 -52
  182. package/templates/agencyos/src/content/help_articles.json +0 -1
  183. package/templates/agencyos/src/content/help_collections.json +0 -20
  184. package/templates/agencyos/src/content/help_feedback.json +0 -122
  185. package/templates/agencyos/src/content/inbox.json +0 -15
  186. package/templates/agencyos/src/content/messages.json +0 -1
  187. package/templates/agencyos/src/content/navigation.json +0 -34
  188. package/templates/agencyos/src/content/navigation_items.json +0 -185
  189. package/templates/agencyos/src/content/organization_addresses.json +0 -18
  190. package/templates/agencyos/src/content/organizations.json +0 -50
  191. package/templates/agencyos/src/content/organizations_contacts.json +0 -14
  192. package/templates/agencyos/src/content/os_activities.json +0 -23
  193. package/templates/agencyos/src/content/os_activity_contacts.json +0 -7
  194. package/templates/agencyos/src/content/os_deal_contacts.json +0 -9
  195. package/templates/agencyos/src/content/os_deal_stages.json +0 -68
  196. package/templates/agencyos/src/content/os_deals.json +0 -27
  197. package/templates/agencyos/src/content/os_email_templates.json +0 -13
  198. package/templates/agencyos/src/content/os_expenses.json +0 -22
  199. package/templates/agencyos/src/content/os_invoice_items.json +0 -65
  200. package/templates/agencyos/src/content/os_invoices.json +0 -29
  201. package/templates/agencyos/src/content/os_items.json +0 -17
  202. package/templates/agencyos/src/content/os_payment_terms.json +0 -18
  203. package/templates/agencyos/src/content/os_payments.json +0 -291
  204. package/templates/agencyos/src/content/os_project_contacts.json +0 -8
  205. package/templates/agencyos/src/content/os_project_files.json +0 -1
  206. package/templates/agencyos/src/content/os_project_templates.json +0 -467
  207. package/templates/agencyos/src/content/os_project_updates.json +0 -1
  208. package/templates/agencyos/src/content/os_projects.json +0 -50
  209. package/templates/agencyos/src/content/os_proposal_approvals.json +0 -1
  210. package/templates/agencyos/src/content/os_proposal_blocks.json +0 -134
  211. package/templates/agencyos/src/content/os_proposal_contacts.json +0 -8
  212. package/templates/agencyos/src/content/os_proposals.json +0 -33
  213. package/templates/agencyos/src/content/os_settings.json +0 -6
  214. package/templates/agencyos/src/content/os_task_files.json +0 -1
  215. package/templates/agencyos/src/content/os_tasks.json +0 -464
  216. package/templates/agencyos/src/content/os_tax_rates.json +0 -24
  217. package/templates/agencyos/src/content/page_blocks.json +0 -170
  218. package/templates/agencyos/src/content/pages.json +0 -96
  219. package/templates/agencyos/src/content/pages_blog.json +0 -7
  220. package/templates/agencyos/src/content/pages_projects.json +0 -6
  221. package/templates/agencyos/src/content/post_gallery_items.json +0 -32
  222. package/templates/agencyos/src/content/posts.json +0 -235
  223. package/templates/agencyos/src/content/redirects.json +0 -12
  224. package/templates/agencyos/src/content/seo.json +0 -52
  225. package/templates/agencyos/src/content/team.json +0 -128
  226. package/templates/agencyos/src/content/testimonials.json +0 -66
  227. package/templates/agencyos/src/dashboards.json +0 -64
  228. package/templates/agencyos/src/files.json +0 -1129
  229. package/templates/agencyos/src/flows.json +0 -451
  230. package/templates/agencyos/src/folders.json +0 -104
  231. package/templates/agencyos/src/operations.json +0 -717
  232. package/templates/agencyos/src/panels.json +0 -1019
  233. package/templates/agencyos/src/permissions.json +0 -5533
  234. package/templates/agencyos/src/presets.json +0 -2421
  235. package/templates/agencyos/src/public-permissions.json +0 -629
  236. package/templates/agencyos/src/roles.json +0 -46
  237. package/templates/agencyos/src/schema/snapshot.json +0 -39415
  238. package/templates/agencyos/src/settings.json +0 -99
  239. package/templates/agencyos/src/users.json +0 -147
  240. package/templates/website/README.md +0 -15
  241. package/templates/website/package.json +0 -11
  242. package/templates/website/src/assets/004e37f7-765e-4339-8d44-987729e47898.png +0 -0
  243. package/templates/website/src/assets/008b1c0e-bdd3-4c5f-a029-b9c07582a42d.jpg +0 -0
  244. package/templates/website/src/assets/08177527-b867-47e9-b5d5-eab146b3cdba.jpg +0 -0
  245. package/templates/website/src/assets/0dfe66dd-ceba-4dca-8907-03b2dda49443.svg +0 -1
  246. package/templates/website/src/assets/12e02b82-b4a4-4aaf-8ca4-e73c20a41c26.jpeg +0 -0
  247. package/templates/website/src/assets/18bf5269-9986-48c7-b607-01b77283df3b.png +0 -0
  248. package/templates/website/src/assets/1f19dd72-a433-481d-9b51-e3cc8e4f33d3.svg +0 -1
  249. package/templates/website/src/assets/270fa8d1-45a3-4fcb-87d2-27a0248f1daf.jpg +0 -0
  250. package/templates/website/src/assets/27f55be1-7ef5-47c4-87ba-ab9a060ab270.jpeg +0 -0
  251. package/templates/website/src/assets/284c190b-0ebb-4b3e-847d-c260b793b77c.png +0 -0
  252. package/templates/website/src/assets/35a67f1b-d401-4300-a503-b8e583186f2a.svg +0 -11
  253. package/templates/website/src/assets/3ac899c4-4bf9-4733-b2c4-b259c69faf46.png +0 -0
  254. package/templates/website/src/assets/3eff7dc2-445a-47c5-9503-3f600ecdb5c6.jpeg +0 -0
  255. package/templates/website/src/assets/40a0a417-231e-4819-86bf-66e96ec64852.svg +0 -3
  256. package/templates/website/src/assets/45140116-7656-4226-99b6-fd750722a083.svg +0 -3
  257. package/templates/website/src/assets/4b31c98e-ec03-4b91-bb18-ef55dd199638.jpg +0 -0
  258. package/templates/website/src/assets/57c6e801-9ba1-46eb-beb7-96cf7c497c92.svg +0 -1
  259. package/templates/website/src/assets/643faffb-d41d-48ad-9050-881cf495cbb6.jpg +0 -0
  260. package/templates/website/src/assets/6464e61f-455a-4b47-b623-bb12e5251dfe.jpeg +0 -0
  261. package/templates/website/src/assets/68103296-6634-4d66-918a-04b09afe6621.jpeg +0 -0
  262. package/templates/website/src/assets/68ee3ce3-bc8e-4901-b3a6-8a23afda0fa0.jpg +0 -0
  263. package/templates/website/src/assets/6dad2008-3af5-407e-827e-da5744223181.svg +0 -1
  264. package/templates/website/src/assets/72eea8c7-72fe-4ef2-9e57-524f7cb886a4.jpg +0 -0
  265. package/templates/website/src/assets/72f6f5a0-9a07-422f-b82f-b9e295ce5afa.svg +0 -4
  266. package/templates/website/src/assets/7775c53a-6c2c-453d-8c22-8b5445121d10.jpeg +0 -0
  267. package/templates/website/src/assets/7834aacc-d78c-4a55-ba92-d7b5d74188c1.png +0 -0
  268. package/templates/website/src/assets/7a5b47f6-d648-48f9-bf93-4bfafda48940.png +0 -0
  269. package/templates/website/src/assets/7c04cbdd-4b48-41aa-94d7-fc7c17373b1a.png +0 -0
  270. package/templates/website/src/assets/82b872b1-ff96-4af6-b7f1-878e60c3c448.png +0 -0
  271. package/templates/website/src/assets/840ec616-acad-412e-be79-485a702f9a55.svg +0 -1
  272. package/templates/website/src/assets/87fc0e81-45e4-4c05-8e9a-8e5c759d7aae.png +0 -0
  273. package/templates/website/src/assets/8bc1e7b3-b795-46af-bac4-34f7d90b902f.JPG +0 -0
  274. package/templates/website/src/assets/8f748634-d77b-4985-b27e-7e1f3559881a.jpeg +0 -0
  275. package/templates/website/src/assets/9778a2b4-27de-4035-af5a-f58897578787.png +0 -0
  276. package/templates/website/src/assets/a104c031-6ad2-4148-ace6-052e28cfda0b.svg +0 -1
  277. package/templates/website/src/assets/b626a403-5f09-4463-9715-44b2bd34eb26.jpg +0 -0
  278. package/templates/website/src/assets/c38f6e9e-7bb5-46c7-8266-b27ab96a1282.png +0 -0
  279. package/templates/website/src/assets/c983bd13-da09-4c90-8e65-ae6a92093df8.png +0 -0
  280. package/templates/website/src/assets/d0130348-9ead-49d0-b8e7-871cd43921a0.svg +0 -1
  281. package/templates/website/src/assets/d304528e-9000-4530-92cf-bb04891e8d5d.jpg +0 -0
  282. package/templates/website/src/assets/d4fd6edc-4cc5-48c1-8bc7-e646924bbdca.jpeg +0 -0
  283. package/templates/website/src/assets/d598a4c0-4e9a-44a3-a72e-49564e34a432.jpg +0 -0
  284. package/templates/website/src/assets/dfa90758-9700-49e4-8fa2-b6cd074811b7.png +0 -0
  285. package/templates/website/src/assets/e15ca910-1567-4f15-b5a0-b802da67f228.jpg +0 -0
  286. package/templates/website/src/assets/ea18cbf2-3c4f-488b-a68c-2d3a64cc9137.png +0 -0
  287. package/templates/website/src/assets/eb8e4c86-92ac-4697-9634-2e376f5d6015.png +0 -0
  288. package/templates/website/src/assets/f1693c44-52e4-4fae-a7d2-b3153a34eb72.jpg +0 -0
  289. package/templates/website/src/collections.json +0 -1788
  290. package/templates/website/src/content/block_cardgroup.json +0 -26
  291. package/templates/website/src/content/block_cardgroup_cards.json +0 -1
  292. package/templates/website/src/content/block_cardgroup_posts.json +0 -32
  293. package/templates/website/src/content/block_columns.json +0 -21
  294. package/templates/website/src/content/block_columns_rows.json +0 -47
  295. package/templates/website/src/content/block_cta.json +0 -15
  296. package/templates/website/src/content/block_faqs.json +0 -45
  297. package/templates/website/src/content/block_form.json +0 -26
  298. package/templates/website/src/content/block_gallery.json +0 -15
  299. package/templates/website/src/content/block_gallery_files.json +0 -38
  300. package/templates/website/src/content/block_hero.json +0 -145
  301. package/templates/website/src/content/block_html.json +0 -1
  302. package/templates/website/src/content/block_logocloud.json +0 -16
  303. package/templates/website/src/content/block_logocloud_files.json +0 -44
  304. package/templates/website/src/content/block_quote.json +0 -11
  305. package/templates/website/src/content/block_richtext.json +0 -32
  306. package/templates/website/src/content/block_steps.json +0 -14
  307. package/templates/website/src/content/block_steps_items.json +0 -26
  308. package/templates/website/src/content/block_team.json +0 -8
  309. package/templates/website/src/content/block_testimonials.json +0 -13
  310. package/templates/website/src/content/block_testimonials_items.json +0 -26
  311. package/templates/website/src/content/block_video.json +0 -10
  312. package/templates/website/src/content/blog_settings.json +0 -8
  313. package/templates/website/src/content/categories.json +0 -38
  314. package/templates/website/src/content/events.json +0 -1
  315. package/templates/website/src/content/forms.json +0 -92
  316. package/templates/website/src/content/globals.json +0 -57
  317. package/templates/website/src/content/inbox.json +0 -21
  318. package/templates/website/src/content/metrics.json +0 -1
  319. package/templates/website/src/content/navigation.json +0 -30
  320. package/templates/website/src/content/navigation_items.json +0 -140
  321. package/templates/website/src/content/pages.json +0 -123
  322. package/templates/website/src/content/pages_blocks.json +0 -310
  323. package/templates/website/src/content/posts.json +0 -120
  324. package/templates/website/src/content/projects.json +0 -48
  325. package/templates/website/src/content/projects_files.json +0 -44
  326. package/templates/website/src/content/projects_settings.json +0 -6
  327. package/templates/website/src/content/redirects.json +0 -12
  328. package/templates/website/src/content/seo.json +0 -278
  329. package/templates/website/src/content/team.json +0 -132
  330. package/templates/website/src/content/testimonials.json +0 -66
  331. package/templates/website/src/dashboards.json +0 -38
  332. package/templates/website/src/fields.json +0 -27761
  333. package/templates/website/src/files.json +0 -1100
  334. package/templates/website/src/flows.json +0 -131
  335. package/templates/website/src/folders.json +0 -52
  336. package/templates/website/src/operations.json +0 -214
  337. package/templates/website/src/panels.json +0 -433
  338. package/templates/website/src/permissions.json +0 -1556
  339. package/templates/website/src/presets.json +0 -1254
  340. package/templates/website/src/public-permissions.json +0 -511
  341. package/templates/website/src/roles.json +0 -70
  342. package/templates/website/src/schema/snapshot.json +0 -17018
  343. package/templates/website/src/settings.json +0 -66
  344. package/templates/website/src/users.json +0 -194
@@ -1,54 +1,49 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const core_1 = require("@oclif/core");
4
5
  const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
5
6
  const extract_assets_1 = require("./extract-assets");
6
- const extract_schema_1 = tslib_1.__importDefault(require("./extract-schema"));
7
- const extract_from_endpoint_1 = tslib_1.__importDefault(require("./extract-from-endpoint"));
8
- const extract_permissions_1 = require("./extract-permissions");
7
+ const extract_collections_1 = tslib_1.__importDefault(require("./extract-collections"));
9
8
  const extract_content_1 = require("./extract-content");
10
- const extract_folders_1 = tslib_1.__importDefault(require("./extract-folders"));
11
- const extract_users_1 = tslib_1.__importDefault(require("./extract-users"));
12
- const extract_roles_1 = tslib_1.__importDefault(require("./extract-roles"));
9
+ const extract_dashboards_1 = require("./extract-dashboards");
10
+ const extract_fields_1 = tslib_1.__importDefault(require("./extract-fields"));
13
11
  const extract_files_1 = tslib_1.__importDefault(require("./extract-files"));
12
+ const extract_flows_1 = require("./extract-flows");
13
+ const extract_folders_1 = tslib_1.__importDefault(require("./extract-folders"));
14
+ const extract_permissions_1 = tslib_1.__importDefault(require("./extract-permissions"));
14
15
  const extract_presets_1 = tslib_1.__importDefault(require("./extract-presets"));
15
- const endpoints = [
16
- // "folders",
17
- // "fields",
18
- // "users",
19
- // "roles",
20
- // "files",
21
- "operations",
22
- // "permissions",
23
- "collections",
24
- "flows",
25
- "dashboards",
26
- "panels",
27
- // "presets",
28
- "settings",
29
- ];
30
- async function extract(dir, cli) {
16
+ const extract_relations_1 = tslib_1.__importDefault(require("./extract-relations"));
17
+ const extract_roles_1 = tslib_1.__importDefault(require("./extract-roles"));
18
+ const extract_schema_1 = tslib_1.__importDefault(require("./extract-schema"));
19
+ const extract_settings_1 = tslib_1.__importDefault(require("./extract-settings"));
20
+ const extract_translations_1 = tslib_1.__importDefault(require("./extract-translations"));
21
+ const extract_users_1 = tslib_1.__importDefault(require("./extract-users"));
22
+ async function extract(dir) {
31
23
  // Get the destination directory for the actual files
32
- const destination = dir + "/src";
24
+ const destination = dir + '/src';
33
25
  // Check if directory exists, if not, then create it.
34
26
  if (!node_fs_1.default.existsSync(destination)) {
35
- console.log(`Attempting to create directory at: ${destination}`);
27
+ core_1.ux.log(`Attempting to create directory at: ${destination}`);
36
28
  node_fs_1.default.mkdirSync(destination, { recursive: true });
37
29
  }
38
30
  await (0, extract_schema_1.default)(destination);
31
+ await (0, extract_collections_1.default)(destination);
32
+ await (0, extract_fields_1.default)(destination);
33
+ await (0, extract_relations_1.default)(destination);
39
34
  await (0, extract_folders_1.default)(destination);
35
+ await (0, extract_files_1.default)(destination);
40
36
  await (0, extract_users_1.default)(destination);
41
37
  await (0, extract_roles_1.default)(destination);
42
- await (0, extract_files_1.default)(destination);
38
+ await (0, extract_permissions_1.default)(destination);
43
39
  await (0, extract_presets_1.default)(destination);
44
- await (0, extract_permissions_1.extractPermissions)(destination);
45
- // Iterate through the endpoints
46
- for (const endpoint of endpoints) {
47
- await (0, extract_from_endpoint_1.default)(endpoint, destination);
48
- }
49
- // Extract content
40
+ await (0, extract_translations_1.default)(destination);
41
+ await (0, extract_flows_1.extractFlows)(destination);
42
+ await (0, extract_flows_1.extractOperations)(destination);
43
+ await (0, extract_dashboards_1.extractDashboards)(destination);
44
+ await (0, extract_dashboards_1.extractPanels)(destination);
45
+ await (0, extract_settings_1.default)(destination);
50
46
  await (0, extract_content_1.extractContent)(destination);
51
- // Extract assets
52
47
  await (0, extract_assets_1.downloadAllFiles)(destination);
53
48
  return {};
54
49
  }
@@ -1,8 +1,8 @@
1
1
  export interface Diff {
2
- hash: string;
3
2
  diff: {
4
3
  collections: any[];
5
4
  fields: any[];
6
5
  relations: any[];
7
6
  };
7
+ hash: string;
8
8
  }
@@ -1 +1 @@
1
- export default function apply(dir: string, cli: any): Promise<{}>;
1
+ export default function apply(dir: string): Promise<{}>;
@@ -1,57 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- const api_1 = require("../api");
5
- const read_file_1 = tslib_1.__importDefault(require("../utils/read-file"));
6
- const load_to_destination_1 = tslib_1.__importDefault(require("../utils/load-to-destination"));
7
- const load_schema_1 = tslib_1.__importDefault(require("./load-schema"));
8
- const load_roles_1 = tslib_1.__importDefault(require("./load-roles"));
4
+ const core_1 = require("@oclif/core");
5
+ const check_template_1 = tslib_1.__importDefault(require("../utils/check-template"));
6
+ const load_collections_1 = tslib_1.__importDefault(require("./load-collections"));
9
7
  const load_dashboards_1 = tslib_1.__importDefault(require("./load-dashboards"));
8
+ const load_data_1 = tslib_1.__importDefault(require("./load-data"));
10
9
  const load_files_1 = tslib_1.__importDefault(require("./load-files"));
11
- const load_folders_1 = tslib_1.__importDefault(require("./load-folders"));
12
- const load_users_1 = tslib_1.__importDefault(require("./load-users"));
13
10
  const load_flows_1 = tslib_1.__importDefault(require("./load-flows"));
14
- const load_operations_1 = tslib_1.__importDefault(require("./load-operations"));
15
- const load_data_1 = tslib_1.__importDefault(require("./load-data"));
11
+ const load_folders_1 = tslib_1.__importDefault(require("./load-folders"));
12
+ const load_permissions_1 = tslib_1.__importDefault(require("./load-permissions"));
16
13
  const load_presets_1 = tslib_1.__importDefault(require("./load-presets"));
14
+ const load_relations_1 = tslib_1.__importDefault(require("./load-relations"));
15
+ const load_roles_1 = tslib_1.__importDefault(require("./load-roles"));
16
+ // import loadSchema from './load-schema'
17
17
  const load_settings_1 = tslib_1.__importDefault(require("./load-settings"));
18
- const load_permissions_1 = require("./load-permissions");
19
- async function apply(dir, cli) {
18
+ const load_translations_1 = tslib_1.__importDefault(require("./load-translations"));
19
+ const load_users_1 = tslib_1.__importDefault(require("./load-users"));
20
+ async function apply(dir) {
20
21
  // Get the source directory for the actual files
21
- const source = dir + "/src";
22
- // Load the template files into the destination
23
- await (0, load_schema_1.default)(source + "/schema");
24
- cli.log("Loaded Schema");
25
- // Role Loading Logic
26
- const roles = (0, read_file_1.default)("roles", source);
27
- const legacyAdminRoleId = roles.find((role) => role.name === "Administrator").id;
28
- const currentUser = await api_1.api.get("users/me");
29
- const newAdminRoleId = currentUser.data.data.role;
30
- await (0, load_roles_1.default)(roles);
31
- cli.log("Loaded Roles");
22
+ const source = dir + '/src';
23
+ const isTemplateOk = await (0, check_template_1.default)(source);
24
+ if (!isTemplateOk) {
25
+ core_1.ux.error('The template is missing the collections, fields, or relations files. Older templates are not supported in v0.4 of directus-template-cli. Try using v0.3 to load older templates npx directus-template-cli@0.3 apply or extract the template using latest version before applying. Exiting...');
26
+ }
27
+ // @TODO: Possibly add schema snapshot diff in the future but for now we only want to load the schema
28
+ // If overwriting schema
29
+ // await loadSchema(source)
30
+ // If adding schema instead of overwriting
31
+ await (0, load_collections_1.default)(source);
32
+ await (0, load_relations_1.default)(source);
33
+ await (0, load_roles_1.default)(source);
32
34
  await (0, load_folders_1.default)(source);
33
- cli.log("Loaded Folders");
34
- await (0, load_files_1.default)((0, read_file_1.default)("files", source), source); // Comes after folders
35
- cli.log("Loaded Files");
36
- await (0, load_users_1.default)((0, read_file_1.default)("users", source), legacyAdminRoleId, newAdminRoleId); // Comes after roles, files
37
- cli.log("Loaded Users");
38
- await (0, load_dashboards_1.default)((0, read_file_1.default)("dashboards", source));
39
- cli.log("Loaded Dashboards");
40
- await (0, load_to_destination_1.default)("panels", (0, read_file_1.default)("panels", source)); // Comes after dashboards
41
- cli.log("Loaded Panels");
42
- await (0, load_data_1.default)((0, read_file_1.default)("collections", source), source);
43
- cli.log("Loaded Data");
44
- // Loading Flows and Operations after data so we don't trigger the flows on the data we're loading
45
- await (0, load_flows_1.default)((0, read_file_1.default)("flows", source));
46
- cli.log("Loaded Flows");
47
- await (0, load_operations_1.default)((0, read_file_1.default)("operations", source)); // Comes after flows
48
- cli.log("Loaded Operations");
49
- await (0, load_presets_1.default)((0, read_file_1.default)("presets", source));
50
- cli.log("Loaded Presets");
51
- await (0, load_settings_1.default)((0, read_file_1.default)("settings", source));
52
- cli.log("Loaded Settings");
53
- await (0, load_permissions_1.loadPermissions)((0, read_file_1.default)("permissions", source), legacyAdminRoleId, newAdminRoleId);
54
- cli.log("Loaded Permissions");
35
+ await (0, load_files_1.default)(source);
36
+ await (0, load_users_1.default)(source);
37
+ await (0, load_dashboards_1.default)(source);
38
+ await (0, load_data_1.default)(source);
39
+ await (0, load_flows_1.default)(source);
40
+ await (0, load_presets_1.default)(source);
41
+ await (0, load_translations_1.default)(source);
42
+ await (0, load_settings_1.default)(source);
43
+ await (0, load_permissions_1.default)(source);
55
44
  return {};
56
45
  }
57
46
  exports.default = apply;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Load collections into the Directus instance
3
+ */
4
+ export default function loadCollections(dir: string): Promise<void>;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const sdk_1 = require("@directus/sdk");
5
+ const core_1 = require("@oclif/core");
6
+ const sdk_2 = require("../sdk");
7
+ const log_error_1 = tslib_1.__importDefault(require("../utils/log-error"));
8
+ const read_file_1 = tslib_1.__importDefault(require("../utils/read-file"));
9
+ /**
10
+ * Load collections into the Directus instance
11
+ */
12
+ async function loadCollections(dir) {
13
+ const collections = (0, read_file_1.default)('collections', dir);
14
+ const fields = (0, read_file_1.default)('fields', dir);
15
+ core_1.ux.action.start(`Loading ${collections.length} collections and ${fields.length} fields.`);
16
+ // Remove the group so that we can create the collections
17
+ const removedGroupKey = structuredClone(collections).map(col => {
18
+ delete col.meta.group;
19
+ return col;
20
+ });
21
+ await addCollections(removedGroupKey, fields);
22
+ await updateCollections(collections);
23
+ await addCustomFieldsOnSystemCollections(fields);
24
+ core_1.ux.action.stop();
25
+ core_1.ux.log('Loaded collections and fields.');
26
+ }
27
+ exports.default = loadCollections;
28
+ async function addCollections(collections, fields) {
29
+ for await (const collection of collections) {
30
+ try {
31
+ collection.fields = fields.filter((field) => field.collection === collection.collection);
32
+ await sdk_2.api.client.request((0, sdk_1.createCollection)(collection));
33
+ }
34
+ catch (error) {
35
+ (0, log_error_1.default)(error);
36
+ }
37
+ }
38
+ }
39
+ async function updateCollections(collections) {
40
+ for await (const collection of collections) {
41
+ try {
42
+ if (collection.meta.group) {
43
+ const pl = {
44
+ meta: {
45
+ group: collection.meta.group,
46
+ },
47
+ };
48
+ await sdk_2.api.client.request((0, sdk_1.updateCollection)(collection.collection, pl));
49
+ }
50
+ }
51
+ catch (error) {
52
+ (0, log_error_1.default)(error);
53
+ }
54
+ }
55
+ }
56
+ async function addCustomFieldsOnSystemCollections(fields) {
57
+ const customFields = fields.filter((field) => field.collection.startsWith('directus_'));
58
+ for await (const field of customFields) {
59
+ try {
60
+ await sdk_2.api.client.request((0, sdk_1.createField)(field.collection, field));
61
+ }
62
+ catch (error) {
63
+ (0, log_error_1.default)(error);
64
+ }
65
+ }
66
+ }
@@ -1 +1,2 @@
1
- export default function loadDashboards(dashboards: any): Promise<void>;
1
+ export default function loadDashboards(dir: string): Promise<void>;
2
+ export declare function loadPanels(dir: string): Promise<void>;
@@ -1,13 +1,43 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadPanels = void 0;
3
4
  const tslib_1 = require("tslib");
4
- const load_to_destination_1 = tslib_1.__importDefault(require("../utils/load-to-destination"));
5
- async function loadDashboards(dashboards) {
5
+ const sdk_1 = require("@directus/sdk");
6
+ const core_1 = require("@oclif/core");
7
+ const sdk_2 = require("../sdk");
8
+ const log_error_1 = tslib_1.__importDefault(require("../utils/log-error"));
9
+ const read_file_1 = tslib_1.__importDefault(require("../utils/read-file"));
10
+ async function loadDashboards(dir) {
11
+ const dashboards = (0, read_file_1.default)('dashboards', dir);
12
+ core_1.ux.action.start(`Loading ${dashboards.length} dashboards`);
6
13
  const filteredDashboards = dashboards.map(dash => {
7
14
  const newDash = { ...dash };
8
15
  delete newDash.panels;
9
16
  return newDash;
10
17
  });
11
- await (0, load_to_destination_1.default)('dashboards', filteredDashboards);
18
+ for (const dashboard of filteredDashboards) {
19
+ try {
20
+ await sdk_2.api.client.request((0, sdk_1.createDashboard)(dashboard));
21
+ }
22
+ catch (error) {
23
+ (0, log_error_1.default)(error);
24
+ }
25
+ }
26
+ await loadPanels(dir);
27
+ core_1.ux.action.stop();
28
+ core_1.ux.log('Loaded dashboards');
12
29
  }
13
30
  exports.default = loadDashboards;
31
+ async function loadPanels(dir) {
32
+ const panels = (0, read_file_1.default)('panels', dir);
33
+ core_1.ux.log(`Loading ${panels.length} panels`);
34
+ for (const panel of panels) {
35
+ try {
36
+ await sdk_2.api.client.request((0, sdk_1.createPanel)(panel));
37
+ }
38
+ catch (error) {
39
+ (0, log_error_1.default)(error);
40
+ }
41
+ }
42
+ }
43
+ exports.loadPanels = loadPanels;
@@ -1 +1 @@
1
- export default function loadData(collections: any, dir: string): Promise<void>;
1
+ export default function loadData(dir: string): Promise<void>;
@@ -1,84 +1,111 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- const api_1 = require("../api");
4
+ const sdk_1 = require("@directus/sdk");
5
+ const core_1 = require("@oclif/core");
5
6
  const node_path_1 = tslib_1.__importDefault(require("node:path"));
6
- async function loadData(collections, dir) {
7
+ const sdk_2 = require("../sdk");
8
+ const log_error_1 = tslib_1.__importDefault(require("../utils/log-error"));
9
+ const read_file_1 = tslib_1.__importDefault(require("../utils/read-file"));
10
+ async function loadData(dir) {
11
+ const collections = (0, read_file_1.default)('collections', dir);
12
+ core_1.ux.action.start(`Loading data for ${collections.length} collections`);
13
+ await loadSkeletonRecords(dir);
14
+ await loadFullData(dir);
15
+ await loadSingletons(dir);
16
+ core_1.ux.action.stop();
17
+ core_1.ux.log('Loaded data.');
18
+ }
19
+ exports.default = loadData;
20
+ async function loadSkeletonRecords(dir) {
21
+ core_1.ux.log('Loading skeleton records');
22
+ const collections = (0, read_file_1.default)('collections', dir);
23
+ const primaryKeyMap = await getCollectionPrimaryKeys(dir);
7
24
  const userCollections = collections
8
25
  .filter(item => !item.collection.startsWith('directus_', 0))
9
- .filter(item => item.schema !== null); // Filter our any "folders"
10
- await loadSkeletonRecords(userCollections, dir); // Empty Records with IDs only
11
- await loadFullData(userCollections, dir); // Updates all skeleton records with their other values
12
- await loadSingletons(userCollections, dir);
26
+ .filter(item => item.schema !== null) // Filter our any "folders"
27
+ .filter(item => !item.meta.singleton); // Filter out any singletons
28
+ for (const collection of userCollections) {
29
+ const name = collection.collection;
30
+ const primaryKeyField = getPrimaryKey(primaryKeyMap, name);
31
+ const sourceDir = node_path_1.default.resolve(dir, 'content');
32
+ const data = (0, read_file_1.default)(name, sourceDir);
33
+ for (const entry of data) {
34
+ try {
35
+ await sdk_2.api.client.request((0, sdk_1.createItem)(name, {
36
+ [primaryKeyField]: entry[primaryKeyField],
37
+ }));
38
+ }
39
+ catch (error) {
40
+ (0, log_error_1.default)(error);
41
+ }
42
+ }
43
+ }
44
+ core_1.ux.log('Loaded skeleton records');
13
45
  }
14
- exports.default = loadData;
15
- // Handle mandatory fields properly
16
- // Upload record id.
17
- // SQL reset indexes once everything is loaded. - This is required for
18
- // Project Settings - ?
19
- const loadSkeletonRecords = async (userCollections, dir) => {
20
- var _a;
46
+ async function loadFullData(dir) {
47
+ core_1.ux.log('Updating records with full data');
48
+ const collections = (0, read_file_1.default)('collections', dir);
49
+ const primaryKeyMap = await getCollectionPrimaryKeys(dir);
50
+ const userCollections = collections
51
+ .filter(item => !item.collection.startsWith('directus_', 0))
52
+ .filter(item => item.schema !== null) // Filter our any "folders"
53
+ .filter(item => !item.meta.singleton); // Filter out any singletons
21
54
  for (const collection of userCollections) {
22
55
  const name = collection.collection;
23
- const url = node_path_1.default.resolve(dir, 'content', `${name}.json`);
56
+ const primaryKeyField = getPrimaryKey(primaryKeyMap, name);
57
+ const sourceDir = node_path_1.default.resolve(dir, 'content');
58
+ const data = (0, read_file_1.default)(name, sourceDir);
24
59
  try {
25
- const sourceData = (await (_a = url, Promise.resolve().then(() => tslib_1.__importStar(require(_a))))).default;
26
- if (!collection.meta.singleton) {
27
- for (const entry of sourceData) {
28
- try {
29
- const { data } = await api_1.api.post(`items/${name}`, {
30
- id: entry.id,
31
- });
32
- }
33
- catch (error) {
34
- if (error.response.data.errors[0].extensions.code !==
35
- 'RECORD_NOT_UNIQUE') {
36
- console.log('error creating skeleton record', error.response.data.errors);
37
- }
38
- }
39
- }
60
+ for (const row of data) {
61
+ delete row.user_created;
62
+ delete row.user_updated;
63
+ await sdk_2.api.client.request((0, sdk_1.updateItem)(name, row[primaryKeyField], row));
40
64
  }
41
65
  }
42
66
  catch (error) {
43
- console.log(error.response.data.errors);
67
+ (0, log_error_1.default)(error);
44
68
  }
45
69
  }
46
- };
47
- const loadFullData = async (userCollections, dir) => {
48
- var _a;
49
- for (const collection of userCollections) {
70
+ core_1.ux.log('Updated records with full data');
71
+ }
72
+ async function loadSingletons(dir) {
73
+ core_1.ux.log('Loading data for singleton collections');
74
+ const collections = (0, read_file_1.default)('collections', dir);
75
+ const singletonCollections = collections
76
+ .filter(item => !item.collection.startsWith('directus_', 0))
77
+ .filter(item => item.meta.singleton);
78
+ for (const collection of singletonCollections) {
50
79
  const name = collection.collection;
51
- const url = node_path_1.default.resolve(dir, 'content', `${name}.json`);
80
+ const sourceDir = node_path_1.default.resolve(dir, 'content');
81
+ const data = (0, read_file_1.default)(name, sourceDir);
52
82
  try {
53
- const sourceData = (await (_a = url, Promise.resolve().then(() => tslib_1.__importStar(require(_a))))).default;
54
- if (!collection.meta.singleton) {
55
- for (const row of sourceData) {
56
- delete row.user_created;
57
- delete row.user_updated;
58
- const { data } = await api_1.api.patch(`items/${name}/${row.id}`, row);
59
- }
60
- }
83
+ // @ts-ignore
84
+ delete data.user_created;
85
+ // @ts-ignore
86
+ delete data.user_updated;
87
+ await sdk_2.api.client.request((0, sdk_1.updateSingleton)(name, data));
61
88
  }
62
89
  catch (error) {
63
- console.log(`Error updating ${name}`, error.response.data.errors);
90
+ (0, log_error_1.default)(error);
64
91
  }
65
92
  }
66
- };
67
- const loadSingletons = async (userCollections, dir) => {
93
+ core_1.ux.log('Loaded data for singleton collections');
94
+ }
95
+ async function getCollectionPrimaryKeys(dir) {
68
96
  var _a;
69
- for (const collection of userCollections) {
70
- if (collection.meta.singleton) {
71
- const name = collection.collection;
72
- const url = node_path_1.default.resolve(dir, 'content', `${name}.json`);
73
- try {
74
- const sourceData = (await (_a = url, Promise.resolve().then(() => tslib_1.__importStar(require(_a))))).default;
75
- delete sourceData.user_created;
76
- delete sourceData.user_updated;
77
- const { data } = await api_1.api.patch(`items/${name}`, sourceData);
78
- }
79
- catch (error) {
80
- console.log(`Error loading singleton ${name}`, error.response.data.errors);
81
- }
97
+ const fields = (0, read_file_1.default)('fields', dir);
98
+ const primaryKeys = {};
99
+ for (const field of fields) {
100
+ if (field.schema && ((_a = field.schema) === null || _a === void 0 ? void 0 : _a.is_primary_key)) {
101
+ primaryKeys[field.collection] = field.field;
82
102
  }
83
103
  }
84
- };
104
+ return primaryKeys;
105
+ }
106
+ function getPrimaryKey(collectionsMap, collection) {
107
+ if (!collectionsMap[collection]) {
108
+ throw new Error(`Collection ${collection} not found in collections map`);
109
+ }
110
+ return collectionsMap[collection];
111
+ }
@@ -1,2 +1,2 @@
1
- declare const _default: (assets: any, dir: string) => Promise<void>;
1
+ declare const _default: (dir: string) => Promise<void>;
2
2
  export default _default;
@@ -1,34 +1,37 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- const form_data_1 = tslib_1.__importDefault(require("form-data"));
5
- const api_1 = require("../api");
6
- const node_fs_1 = tslib_1.__importDefault(require("node:fs"));
4
+ const sdk_1 = require("@directus/sdk");
5
+ const core_1 = require("@oclif/core");
6
+ const formdata_node_1 = require("formdata-node");
7
+ const node_fs_1 = require("node:fs");
7
8
  const node_path_1 = tslib_1.__importDefault(require("node:path"));
8
- exports.default = async (assets, dir) => {
9
- for (const asset of assets) {
9
+ const sdk_2 = require("../sdk");
10
+ const log_error_1 = tslib_1.__importDefault(require("../utils/log-error"));
11
+ const read_file_1 = tslib_1.__importDefault(require("../utils/read-file"));
12
+ exports.default = async (dir) => {
13
+ const files = (0, read_file_1.default)('files', dir);
14
+ core_1.ux.action.start(`Loading ${files.length} files`);
15
+ for (const asset of files) {
10
16
  const fileName = asset.filename_disk;
11
- const assetPath = node_path_1.default.resolve(dir, "assets", fileName);
12
- const fileStream = node_fs_1.default.createReadStream(assetPath);
13
- const form = new form_data_1.default();
14
- form.append("id", asset.id);
17
+ const assetPath = node_path_1.default.resolve(dir, 'assets', fileName);
18
+ const fileStream = new Blob([(0, node_fs_1.readFileSync)(assetPath)], { type: asset.type });
19
+ const form = new formdata_node_1.FormData();
20
+ form.append('id', asset.id);
15
21
  if (asset.title)
16
- form.append("title", asset.title);
22
+ form.append('title', asset.title);
17
23
  if (asset.description)
18
- form.append("description", asset.description);
24
+ form.append('description', asset.description);
19
25
  if (asset.folder)
20
- form.append("folder", asset.folder);
21
- form.append("file", fileStream);
26
+ form.append('folder', asset.folder);
27
+ form.append('file', fileStream, fileName);
22
28
  try {
23
- const { data } = await api_1.api.post("files", form, {
24
- headers: {
25
- "Content-Type": "multipart/form-data",
26
- },
27
- });
29
+ await sdk_2.api.client.request((0, sdk_1.uploadFiles)(form));
28
30
  }
29
31
  catch (error) {
30
- console.log(error.response.data.errors);
32
+ (0, log_error_1.default)(error);
31
33
  }
32
34
  }
33
- // console.log('file', file);
35
+ core_1.ux.action.stop();
36
+ core_1.ux.log('Loaded Files');
34
37
  };
@@ -1,2 +1,2 @@
1
- declare const _default: (flows: any[]) => Promise<void>;
2
- export default _default;
1
+ export default function loadFlows(dir: string): Promise<void>;
2
+ export declare function loadOperations(dir: string): Promise<void>;
@@ -1,18 +1,52 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const api_1 = require("../api");
4
- exports.default = async (flows) => {
5
- const removeOps = flows.map(flow => {
3
+ exports.loadOperations = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const sdk_1 = require("@directus/sdk");
6
+ const core_1 = require("@oclif/core");
7
+ const sdk_2 = require("../sdk");
8
+ const log_error_1 = tslib_1.__importDefault(require("../utils/log-error"));
9
+ const read_file_1 = tslib_1.__importDefault(require("../utils/read-file"));
10
+ async function loadFlows(dir) {
11
+ const flows = (0, read_file_1.default)('flows', dir);
12
+ core_1.ux.action.start(`Loading ${flows.length} flows`);
13
+ for (const flow of flows) {
6
14
  delete flow.operations;
7
- return flow;
15
+ }
16
+ for (const flow of flows) {
17
+ try {
18
+ await sdk_2.api.client.request((0, sdk_1.createFlow)(flow));
19
+ }
20
+ catch (error) {
21
+ (0, log_error_1.default)(error);
22
+ }
23
+ }
24
+ await loadOperations(dir);
25
+ core_1.ux.action.stop();
26
+ core_1.ux.log('Loaded Flows');
27
+ }
28
+ exports.default = loadFlows;
29
+ async function loadOperations(dir) {
30
+ const operations = (0, read_file_1.default)('operations', dir);
31
+ core_1.ux.log(`Loading ${operations.length} operations`);
32
+ const opsIds = operations.map(i => {
33
+ const del = { ...i };
34
+ delete del.resolve;
35
+ delete del.reject;
36
+ return del;
8
37
  });
9
- for (const flow of removeOps) {
38
+ await sdk_2.api.client.request((0, sdk_1.createOperations)(opsIds));
39
+ for (const operation of operations) {
40
+ const pl = {
41
+ reject: operation.reject,
42
+ resolve: operation.resolve,
43
+ };
10
44
  try {
11
- await api_1.api.post('flows', flow);
12
- // console.log('Uploaded Flow')
45
+ await sdk_2.api.client.request((0, sdk_1.updateOperation)(operation.id, pl));
13
46
  }
14
47
  catch (error) {
15
- console.log('Error uploading flow.', error.response.data.errors);
48
+ (0, log_error_1.default)(error);
16
49
  }
17
50
  }
18
- };
51
+ }
52
+ exports.loadOperations = loadOperations;