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.
- package/README.md +5 -2
- package/dist/commands/apply.d.ts +1 -1
- package/dist/commands/apply.js +80 -50
- package/dist/commands/extract.d.ts +1 -2
- package/dist/commands/extract.js +13 -18
- package/dist/lib/extract/extract-assets.d.ts +182 -2
- package/dist/lib/extract/extract-assets.js +25 -32
- package/dist/lib/extract/extract-collections.d.ts +4 -0
- package/dist/lib/extract/extract-collections.js +24 -0
- package/dist/lib/extract/extract-content.d.ts +1 -1
- package/dist/lib/extract/extract-content.js +18 -18
- package/dist/lib/extract/extract-dashboards.d.ts +8 -0
- package/dist/lib/extract/extract-dashboards.js +42 -0
- package/dist/lib/extract/extract-fields.d.ts +4 -0
- package/dist/lib/extract/extract-fields.js +30 -0
- package/dist/lib/extract/extract-files.js +11 -34
- package/dist/lib/extract/extract-flows.d.ts +8 -0
- package/dist/lib/extract/extract-flows.js +42 -0
- package/dist/lib/extract/extract-folders.d.ts +1 -1
- package/dist/lib/extract/extract-folders.js +12 -13
- package/dist/lib/extract/extract-permissions.d.ts +1 -1
- package/dist/lib/extract/extract-permissions.js +13 -13
- package/dist/lib/extract/extract-presets.js +15 -11
- package/dist/lib/extract/extract-relations.d.ts +4 -0
- package/dist/lib/extract/extract-relations.js +33 -0
- package/dist/lib/extract/extract-roles.js +11 -22
- package/dist/lib/extract/extract-schema.js +14 -14
- package/dist/lib/extract/extract-settings.d.ts +4 -0
- package/dist/lib/extract/extract-settings.js +22 -0
- package/dist/lib/extract/extract-translations.d.ts +4 -0
- package/dist/lib/extract/extract-translations.js +24 -0
- package/dist/lib/extract/extract-users.d.ts +1 -1
- package/dist/lib/extract/extract-users.js +14 -36
- package/dist/lib/extract/index.d.ts +1 -1
- package/dist/lib/extract/index.js +27 -32
- package/dist/lib/interfaces.d.ts +1 -1
- package/dist/lib/load/index.d.ts +1 -1
- package/dist/lib/load/index.js +33 -44
- package/dist/lib/load/load-collections.d.ts +4 -0
- package/dist/lib/load/load-collections.js +66 -0
- package/dist/lib/load/load-dashboards.d.ts +2 -1
- package/dist/lib/load/load-dashboards.js +33 -3
- package/dist/lib/load/load-data.d.ts +1 -1
- package/dist/lib/load/load-data.js +87 -60
- package/dist/lib/load/load-files.d.ts +1 -1
- package/dist/lib/load/load-files.js +23 -20
- package/dist/lib/load/load-flows.d.ts +2 -2
- package/dist/lib/load/load-flows.js +43 -9
- package/dist/lib/load/load-folders.js +15 -11
- package/dist/lib/load/load-permissions.d.ts +1 -1
- package/dist/lib/load/load-permissions.js +22 -21
- package/dist/lib/load/load-presets.d.ts +1 -2
- package/dist/lib/load/load-presets.js +16 -19
- package/dist/lib/load/load-relations.d.ts +4 -0
- package/dist/lib/load/load-relations.js +33 -0
- package/dist/lib/load/load-roles.d.ts +1 -1
- package/dist/lib/load/load-roles.js +20 -10
- package/dist/lib/load/load-schema.d.ts +14 -2
- package/dist/lib/load/load-schema.js +85 -10
- package/dist/lib/load/load-settings.d.ts +1 -1
- package/dist/lib/load/load-settings.js +10 -4
- package/dist/lib/load/load-translations.d.ts +1 -0
- package/dist/lib/load/load-translations.js +21 -0
- package/dist/lib/load/load-users.d.ts +1 -2
- package/dist/lib/load/load-users.js +19 -8
- package/dist/lib/sdk.d.ts +13 -0
- package/dist/lib/sdk.js +26 -0
- package/dist/lib/utils/auth.d.ts +2 -2
- package/dist/lib/utils/auth.js +12 -11
- package/dist/lib/utils/check-template.d.ts +1 -0
- package/dist/lib/utils/check-template.js +32 -0
- package/dist/lib/utils/filter-fields.js +5 -5
- package/dist/lib/utils/get-role-ids.d.ts +55 -0
- package/dist/lib/utils/get-role-ids.js +14 -0
- package/dist/lib/utils/log-error.d.ts +14 -0
- package/dist/lib/utils/log-error.js +25 -0
- package/dist/lib/utils/path.d.ts +7 -0
- package/dist/lib/utils/path.js +20 -0
- package/dist/lib/utils/read-file.d.ts +0 -1
- package/dist/lib/utils/read-file.js +7 -9
- package/dist/lib/utils/read-templates.js +2 -2
- package/dist/lib/utils/system-fields.d.ts +20 -0
- package/dist/lib/utils/system-fields.js +159 -0
- package/dist/lib/utils/template-defaults.js +8 -11
- package/dist/lib/utils/transform-github-url.d.ts +1 -0
- package/dist/lib/utils/transform-github-url.js +15 -0
- package/dist/lib/utils/validate-url.js +1 -1
- package/dist/lib/utils/write-to-file.js +4 -4
- package/oclif.manifest.json +34 -16
- package/package.json +25 -23
- package/dist/lib/api.d.ts +0 -15
- package/dist/lib/api.js +0 -37
- package/dist/lib/extract/extract-from-endpoint.d.ts +0 -4
- package/dist/lib/extract/extract-from-endpoint.js +0 -23
- package/dist/lib/load/load-operations.d.ts +0 -1
- package/dist/lib/load/load-operations.js +0 -29
- package/dist/lib/load/load-panels.d.ts +0 -0
- package/dist/lib/load/load-panels.js +0 -0
- package/dist/lib/utils/delete-items.d.ts +0 -1
- package/dist/lib/utils/delete-items.js +0 -15
- package/dist/lib/utils/load-to-destination.d.ts +0 -1
- package/dist/lib/utils/load-to-destination.js +0 -14
- package/templates/agencyos/README.md +0 -11
- package/templates/agencyos/package.json +0 -11
- package/templates/agencyos/src/assets/08177527-b867-47e9-b5d5-eab146b3cdba.jpg +0 -0
- package/templates/agencyos/src/assets/08242513-ca8f-471f-b69b-82703a19d1e5.svg +0 -14
- package/templates/agencyos/src/assets/0dfe66dd-ceba-4dca-8907-03b2dda49443.svg +0 -1
- package/templates/agencyos/src/assets/12e02b82-b4a4-4aaf-8ca4-e73c20a41c26.jpeg +0 -0
- package/templates/agencyos/src/assets/1f19dd72-a433-481d-9b51-e3cc8e4f33d3.svg +0 -1
- package/templates/agencyos/src/assets/1f69c0b8-19b7-49d7-b420-bedad577a079.png +0 -0
- package/templates/agencyos/src/assets/21e179ab-72c3-4350-b46a-fadd16f5652e.svg +0 -1
- package/templates/agencyos/src/assets/270fa8d1-45a3-4fcb-87d2-27a0248f1daf.jpg +0 -0
- package/templates/agencyos/src/assets/27f55be1-7ef5-47c4-87ba-ab9a060ab270.jpeg +0 -0
- package/templates/agencyos/src/assets/2b4a0ba0-52c7-4e10-b191-c803d8da6a36.png +0 -0
- package/templates/agencyos/src/assets/35a67f1b-d401-4300-a503-b8e583186f2a.svg +0 -11
- package/templates/agencyos/src/assets/3eff7dc2-445a-47c5-9503-3f600ecdb5c6.jpeg +0 -0
- package/templates/agencyos/src/assets/44a4e780-d59b-4fa5-9b26-1c4b447474d2.jpg +0 -0
- package/templates/agencyos/src/assets/4b31c98e-ec03-4b91-bb18-ef55dd199638.jpg +0 -0
- package/templates/agencyos/src/assets/5419bf05-9ab2-484b-a69d-d09b18602cf1.svg +0 -1
- package/templates/agencyos/src/assets/5a6dfe1e-7e5b-4a5f-9f6c-983777a67c05.svg +0 -1
- package/templates/agencyos/src/assets/643faffb-d41d-48ad-9050-881cf495cbb6.jpg +0 -0
- package/templates/agencyos/src/assets/6464e61f-455a-4b47-b623-bb12e5251dfe.jpeg +0 -0
- package/templates/agencyos/src/assets/6789bc72-ab83-40bf-8152-d6f2bafbc2a8.png +0 -0
- package/templates/agencyos/src/assets/68103296-6634-4d66-918a-04b09afe6621.jpeg +0 -0
- package/templates/agencyos/src/assets/690c2042-e3ad-46f4-9cd8-095a7b3a1df7.svg +0 -3
- package/templates/agencyos/src/assets/6a1ca349-d7ab-4f43-9284-c61671e145f2.svg +0 -22
- package/templates/agencyos/src/assets/6dad2008-3af5-407e-827e-da5744223181.svg +0 -1
- package/templates/agencyos/src/assets/6ff389c5-3ecb-4219-8f72-f10326aab421.jpg +0 -0
- package/templates/agencyos/src/assets/7647f4c2-9880-433a-bb8e-69b0c30ae31e.svg +0 -1
- package/templates/agencyos/src/assets/7775c53a-6c2c-453d-8c22-8b5445121d10.jpeg +0 -0
- package/templates/agencyos/src/assets/793e9bf7-c646-4588-8865-fe22556070ff.svg +0 -1
- package/templates/agencyos/src/assets/87fc0e81-45e4-4c05-8e9a-8e5c759d7aae.png +0 -0
- package/templates/agencyos/src/assets/88b95737-7ff4-4a09-8523-362d42caa9f9.jpg +0 -0
- package/templates/agencyos/src/assets/8f748634-d77b-4985-b27e-7e1f3559881a.jpeg +0 -0
- package/templates/agencyos/src/assets/a104c031-6ad2-4148-ace6-052e28cfda0b.svg +0 -1
- package/templates/agencyos/src/assets/ac905071-0643-4337-8f53-48ed45b1ccf2.jpg +0 -0
- package/templates/agencyos/src/assets/b1a3fd77-8e62-4678-9d44-333a30eec13b.jpg +0 -0
- package/templates/agencyos/src/assets/b210ecec-860f-4057-bab9-18c044b6e129.jpg +0 -0
- package/templates/agencyos/src/assets/b9db00d9-535f-4e24-8a46-5f7e5fc65bf2.jpg +0 -0
- package/templates/agencyos/src/assets/c0253924-38cd-4ca0-9989-9c0a57ec076a.png +0 -0
- package/templates/agencyos/src/assets/ce0b845f-f8d8-4856-b0af-1df4e3a838cc.jpg +0 -0
- package/templates/agencyos/src/assets/d0130348-9ead-49d0-b8e7-871cd43921a0.svg +0 -1
- package/templates/agencyos/src/assets/d4fd6edc-4cc5-48c1-8bc7-e646924bbdca.jpeg +0 -0
- package/templates/agencyos/src/assets/d598a4c0-4e9a-44a3-a72e-49564e34a432.jpg +0 -0
- package/templates/agencyos/src/assets/d94c9355-d89e-4229-941a-62b8525fd69a.png +0 -0
- package/templates/agencyos/src/assets/df0745c2-b6e3-4b37-b64d-55a4eb0033ab.avif +0 -0
- package/templates/agencyos/src/assets/df979753-946b-4d93-954e-e24367388d2c.svg +0 -1
- package/templates/agencyos/src/assets/dfa90758-9700-49e4-8fa2-b6cd074811b7.png +0 -0
- package/templates/agencyos/src/assets/e15ca910-1567-4f15-b5a0-b802da67f228.jpg +0 -0
- package/templates/agencyos/src/assets/eef7d7b1-3bf9-4647-90c1-a16c24161335.svg +0 -4
- package/templates/agencyos/src/assets/f1693c44-52e4-4fae-a7d2-b3153a34eb72.jpg +0 -0
- package/templates/agencyos/src/assets/f81e1a85-5a9c-41ef-9ef3-6a9349722daa.jpg +0 -0
- package/templates/agencyos/src/assets/fbae19f3-8739-4048-a20f-89ebbf59b032.jpg +0 -0
- package/templates/agencyos/src/collections.json +0 -3007
- package/templates/agencyos/src/content/block_button.json +0 -50
- package/templates/agencyos/src/content/block_button_group.json +0 -27
- package/templates/agencyos/src/content/block_columns.json +0 -18
- package/templates/agencyos/src/content/block_columns_rows.json +0 -47
- package/templates/agencyos/src/content/block_cta.json +0 -9
- package/templates/agencyos/src/content/block_divider.json +0 -14
- package/templates/agencyos/src/content/block_faqs.json +0 -90
- package/templates/agencyos/src/content/block_form.json +0 -26
- package/templates/agencyos/src/content/block_gallery.json +0 -19
- package/templates/agencyos/src/content/block_gallery_files.json +0 -102
- package/templates/agencyos/src/content/block_hero.json +0 -20
- package/templates/agencyos/src/content/block_html.json +0 -1
- package/templates/agencyos/src/content/block_logocloud.json +0 -24
- package/templates/agencyos/src/content/block_logocloud_logos.json +0 -50
- package/templates/agencyos/src/content/block_quote.json +0 -14
- package/templates/agencyos/src/content/block_richtext.json +0 -58
- package/templates/agencyos/src/content/block_step_items.json +0 -47
- package/templates/agencyos/src/content/block_steps.json +0 -24
- package/templates/agencyos/src/content/block_team.json +0 -14
- package/templates/agencyos/src/content/block_testimonial_slider_items.json +0 -42
- package/templates/agencyos/src/content/block_testimonials.json +0 -13
- package/templates/agencyos/src/content/block_video.json +0 -10
- package/templates/agencyos/src/content/categories.json +0 -38
- package/templates/agencyos/src/content/contacts.json +0 -46
- package/templates/agencyos/src/content/conversations.json +0 -1
- package/templates/agencyos/src/content/forms.json +0 -129
- package/templates/agencyos/src/content/globals.json +0 -52
- package/templates/agencyos/src/content/help_articles.json +0 -1
- package/templates/agencyos/src/content/help_collections.json +0 -20
- package/templates/agencyos/src/content/help_feedback.json +0 -122
- package/templates/agencyos/src/content/inbox.json +0 -15
- package/templates/agencyos/src/content/messages.json +0 -1
- package/templates/agencyos/src/content/navigation.json +0 -34
- package/templates/agencyos/src/content/navigation_items.json +0 -185
- package/templates/agencyos/src/content/organization_addresses.json +0 -18
- package/templates/agencyos/src/content/organizations.json +0 -50
- package/templates/agencyos/src/content/organizations_contacts.json +0 -14
- package/templates/agencyos/src/content/os_activities.json +0 -23
- package/templates/agencyos/src/content/os_activity_contacts.json +0 -7
- package/templates/agencyos/src/content/os_deal_contacts.json +0 -9
- package/templates/agencyos/src/content/os_deal_stages.json +0 -68
- package/templates/agencyos/src/content/os_deals.json +0 -27
- package/templates/agencyos/src/content/os_email_templates.json +0 -13
- package/templates/agencyos/src/content/os_expenses.json +0 -22
- package/templates/agencyos/src/content/os_invoice_items.json +0 -65
- package/templates/agencyos/src/content/os_invoices.json +0 -29
- package/templates/agencyos/src/content/os_items.json +0 -17
- package/templates/agencyos/src/content/os_payment_terms.json +0 -18
- package/templates/agencyos/src/content/os_payments.json +0 -291
- package/templates/agencyos/src/content/os_project_contacts.json +0 -8
- package/templates/agencyos/src/content/os_project_files.json +0 -1
- package/templates/agencyos/src/content/os_project_templates.json +0 -467
- package/templates/agencyos/src/content/os_project_updates.json +0 -1
- package/templates/agencyos/src/content/os_projects.json +0 -50
- package/templates/agencyos/src/content/os_proposal_approvals.json +0 -1
- package/templates/agencyos/src/content/os_proposal_blocks.json +0 -134
- package/templates/agencyos/src/content/os_proposal_contacts.json +0 -8
- package/templates/agencyos/src/content/os_proposals.json +0 -33
- package/templates/agencyos/src/content/os_settings.json +0 -6
- package/templates/agencyos/src/content/os_task_files.json +0 -1
- package/templates/agencyos/src/content/os_tasks.json +0 -464
- package/templates/agencyos/src/content/os_tax_rates.json +0 -24
- package/templates/agencyos/src/content/page_blocks.json +0 -170
- package/templates/agencyos/src/content/pages.json +0 -96
- package/templates/agencyos/src/content/pages_blog.json +0 -7
- package/templates/agencyos/src/content/pages_projects.json +0 -6
- package/templates/agencyos/src/content/post_gallery_items.json +0 -32
- package/templates/agencyos/src/content/posts.json +0 -235
- package/templates/agencyos/src/content/redirects.json +0 -12
- package/templates/agencyos/src/content/seo.json +0 -52
- package/templates/agencyos/src/content/team.json +0 -128
- package/templates/agencyos/src/content/testimonials.json +0 -66
- package/templates/agencyos/src/dashboards.json +0 -64
- package/templates/agencyos/src/files.json +0 -1129
- package/templates/agencyos/src/flows.json +0 -451
- package/templates/agencyos/src/folders.json +0 -104
- package/templates/agencyos/src/operations.json +0 -717
- package/templates/agencyos/src/panels.json +0 -1019
- package/templates/agencyos/src/permissions.json +0 -5533
- package/templates/agencyos/src/presets.json +0 -2421
- package/templates/agencyos/src/public-permissions.json +0 -629
- package/templates/agencyos/src/roles.json +0 -46
- package/templates/agencyos/src/schema/snapshot.json +0 -39415
- package/templates/agencyos/src/settings.json +0 -99
- package/templates/agencyos/src/users.json +0 -147
- package/templates/website/README.md +0 -15
- package/templates/website/package.json +0 -11
- package/templates/website/src/assets/004e37f7-765e-4339-8d44-987729e47898.png +0 -0
- package/templates/website/src/assets/008b1c0e-bdd3-4c5f-a029-b9c07582a42d.jpg +0 -0
- package/templates/website/src/assets/08177527-b867-47e9-b5d5-eab146b3cdba.jpg +0 -0
- package/templates/website/src/assets/0dfe66dd-ceba-4dca-8907-03b2dda49443.svg +0 -1
- package/templates/website/src/assets/12e02b82-b4a4-4aaf-8ca4-e73c20a41c26.jpeg +0 -0
- package/templates/website/src/assets/18bf5269-9986-48c7-b607-01b77283df3b.png +0 -0
- package/templates/website/src/assets/1f19dd72-a433-481d-9b51-e3cc8e4f33d3.svg +0 -1
- package/templates/website/src/assets/270fa8d1-45a3-4fcb-87d2-27a0248f1daf.jpg +0 -0
- package/templates/website/src/assets/27f55be1-7ef5-47c4-87ba-ab9a060ab270.jpeg +0 -0
- package/templates/website/src/assets/284c190b-0ebb-4b3e-847d-c260b793b77c.png +0 -0
- package/templates/website/src/assets/35a67f1b-d401-4300-a503-b8e583186f2a.svg +0 -11
- package/templates/website/src/assets/3ac899c4-4bf9-4733-b2c4-b259c69faf46.png +0 -0
- package/templates/website/src/assets/3eff7dc2-445a-47c5-9503-3f600ecdb5c6.jpeg +0 -0
- package/templates/website/src/assets/40a0a417-231e-4819-86bf-66e96ec64852.svg +0 -3
- package/templates/website/src/assets/45140116-7656-4226-99b6-fd750722a083.svg +0 -3
- package/templates/website/src/assets/4b31c98e-ec03-4b91-bb18-ef55dd199638.jpg +0 -0
- package/templates/website/src/assets/57c6e801-9ba1-46eb-beb7-96cf7c497c92.svg +0 -1
- package/templates/website/src/assets/643faffb-d41d-48ad-9050-881cf495cbb6.jpg +0 -0
- package/templates/website/src/assets/6464e61f-455a-4b47-b623-bb12e5251dfe.jpeg +0 -0
- package/templates/website/src/assets/68103296-6634-4d66-918a-04b09afe6621.jpeg +0 -0
- package/templates/website/src/assets/68ee3ce3-bc8e-4901-b3a6-8a23afda0fa0.jpg +0 -0
- package/templates/website/src/assets/6dad2008-3af5-407e-827e-da5744223181.svg +0 -1
- package/templates/website/src/assets/72eea8c7-72fe-4ef2-9e57-524f7cb886a4.jpg +0 -0
- package/templates/website/src/assets/72f6f5a0-9a07-422f-b82f-b9e295ce5afa.svg +0 -4
- package/templates/website/src/assets/7775c53a-6c2c-453d-8c22-8b5445121d10.jpeg +0 -0
- package/templates/website/src/assets/7834aacc-d78c-4a55-ba92-d7b5d74188c1.png +0 -0
- package/templates/website/src/assets/7a5b47f6-d648-48f9-bf93-4bfafda48940.png +0 -0
- package/templates/website/src/assets/7c04cbdd-4b48-41aa-94d7-fc7c17373b1a.png +0 -0
- package/templates/website/src/assets/82b872b1-ff96-4af6-b7f1-878e60c3c448.png +0 -0
- package/templates/website/src/assets/840ec616-acad-412e-be79-485a702f9a55.svg +0 -1
- package/templates/website/src/assets/87fc0e81-45e4-4c05-8e9a-8e5c759d7aae.png +0 -0
- package/templates/website/src/assets/8bc1e7b3-b795-46af-bac4-34f7d90b902f.JPG +0 -0
- package/templates/website/src/assets/8f748634-d77b-4985-b27e-7e1f3559881a.jpeg +0 -0
- package/templates/website/src/assets/9778a2b4-27de-4035-af5a-f58897578787.png +0 -0
- package/templates/website/src/assets/a104c031-6ad2-4148-ace6-052e28cfda0b.svg +0 -1
- package/templates/website/src/assets/b626a403-5f09-4463-9715-44b2bd34eb26.jpg +0 -0
- package/templates/website/src/assets/c38f6e9e-7bb5-46c7-8266-b27ab96a1282.png +0 -0
- package/templates/website/src/assets/c983bd13-da09-4c90-8e65-ae6a92093df8.png +0 -0
- package/templates/website/src/assets/d0130348-9ead-49d0-b8e7-871cd43921a0.svg +0 -1
- package/templates/website/src/assets/d304528e-9000-4530-92cf-bb04891e8d5d.jpg +0 -0
- package/templates/website/src/assets/d4fd6edc-4cc5-48c1-8bc7-e646924bbdca.jpeg +0 -0
- package/templates/website/src/assets/d598a4c0-4e9a-44a3-a72e-49564e34a432.jpg +0 -0
- package/templates/website/src/assets/dfa90758-9700-49e4-8fa2-b6cd074811b7.png +0 -0
- package/templates/website/src/assets/e15ca910-1567-4f15-b5a0-b802da67f228.jpg +0 -0
- package/templates/website/src/assets/ea18cbf2-3c4f-488b-a68c-2d3a64cc9137.png +0 -0
- package/templates/website/src/assets/eb8e4c86-92ac-4697-9634-2e376f5d6015.png +0 -0
- package/templates/website/src/assets/f1693c44-52e4-4fae-a7d2-b3153a34eb72.jpg +0 -0
- package/templates/website/src/collections.json +0 -1788
- package/templates/website/src/content/block_cardgroup.json +0 -26
- package/templates/website/src/content/block_cardgroup_cards.json +0 -1
- package/templates/website/src/content/block_cardgroup_posts.json +0 -32
- package/templates/website/src/content/block_columns.json +0 -21
- package/templates/website/src/content/block_columns_rows.json +0 -47
- package/templates/website/src/content/block_cta.json +0 -15
- package/templates/website/src/content/block_faqs.json +0 -45
- package/templates/website/src/content/block_form.json +0 -26
- package/templates/website/src/content/block_gallery.json +0 -15
- package/templates/website/src/content/block_gallery_files.json +0 -38
- package/templates/website/src/content/block_hero.json +0 -145
- package/templates/website/src/content/block_html.json +0 -1
- package/templates/website/src/content/block_logocloud.json +0 -16
- package/templates/website/src/content/block_logocloud_files.json +0 -44
- package/templates/website/src/content/block_quote.json +0 -11
- package/templates/website/src/content/block_richtext.json +0 -32
- package/templates/website/src/content/block_steps.json +0 -14
- package/templates/website/src/content/block_steps_items.json +0 -26
- package/templates/website/src/content/block_team.json +0 -8
- package/templates/website/src/content/block_testimonials.json +0 -13
- package/templates/website/src/content/block_testimonials_items.json +0 -26
- package/templates/website/src/content/block_video.json +0 -10
- package/templates/website/src/content/blog_settings.json +0 -8
- package/templates/website/src/content/categories.json +0 -38
- package/templates/website/src/content/events.json +0 -1
- package/templates/website/src/content/forms.json +0 -92
- package/templates/website/src/content/globals.json +0 -57
- package/templates/website/src/content/inbox.json +0 -21
- package/templates/website/src/content/metrics.json +0 -1
- package/templates/website/src/content/navigation.json +0 -30
- package/templates/website/src/content/navigation_items.json +0 -140
- package/templates/website/src/content/pages.json +0 -123
- package/templates/website/src/content/pages_blocks.json +0 -310
- package/templates/website/src/content/posts.json +0 -120
- package/templates/website/src/content/projects.json +0 -48
- package/templates/website/src/content/projects_files.json +0 -44
- package/templates/website/src/content/projects_settings.json +0 -6
- package/templates/website/src/content/redirects.json +0 -12
- package/templates/website/src/content/seo.json +0 -278
- package/templates/website/src/content/team.json +0 -132
- package/templates/website/src/content/testimonials.json +0 -66
- package/templates/website/src/dashboards.json +0 -38
- package/templates/website/src/fields.json +0 -27761
- package/templates/website/src/files.json +0 -1100
- package/templates/website/src/flows.json +0 -131
- package/templates/website/src/folders.json +0 -52
- package/templates/website/src/operations.json +0 -214
- package/templates/website/src/panels.json +0 -433
- package/templates/website/src/permissions.json +0 -1556
- package/templates/website/src/presets.json +0 -1254
- package/templates/website/src/public-permissions.json +0 -511
- package/templates/website/src/roles.json +0 -70
- package/templates/website/src/schema/snapshot.json +0 -17018
- package/templates/website/src/settings.json +0 -66
- 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
|
|
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
|
|
11
|
-
const
|
|
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
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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 +
|
|
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
|
-
|
|
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,
|
|
38
|
+
await (0, extract_permissions_1.default)(destination);
|
|
43
39
|
await (0, extract_presets_1.default)(destination);
|
|
44
|
-
await (0,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
}
|
package/dist/lib/interfaces.d.ts
CHANGED
package/dist/lib/load/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function apply(dir: string
|
|
1
|
+
export default function apply(dir: string): Promise<{}>;
|
package/dist/lib/load/index.js
CHANGED
|
@@ -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
|
|
5
|
-
const
|
|
6
|
-
const
|
|
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
|
|
15
|
-
const
|
|
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
|
|
19
|
-
|
|
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 +
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
await (0,
|
|
31
|
-
|
|
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
|
-
|
|
34
|
-
await (0,
|
|
35
|
-
|
|
36
|
-
await (0,
|
|
37
|
-
|
|
38
|
-
await (0,
|
|
39
|
-
|
|
40
|
-
await (0,
|
|
41
|
-
|
|
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,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(
|
|
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
|
|
5
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
-
|
|
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)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
67
|
+
(0, log_error_1.default)(error);
|
|
44
68
|
}
|
|
45
69
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
|
80
|
+
const sourceDir = node_path_1.default.resolve(dir, 'content');
|
|
81
|
+
const data = (0, read_file_1.default)(name, sourceDir);
|
|
52
82
|
try {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
90
|
+
(0, log_error_1.default)(error);
|
|
64
91
|
}
|
|
65
92
|
}
|
|
66
|
-
|
|
67
|
-
|
|
93
|
+
core_1.ux.log('Loaded data for singleton collections');
|
|
94
|
+
}
|
|
95
|
+
async function getCollectionPrimaryKeys(dir) {
|
|
68
96
|
var _a;
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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: (
|
|
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
|
|
5
|
-
const
|
|
6
|
-
const
|
|
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
|
-
|
|
9
|
-
|
|
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,
|
|
12
|
-
const fileStream = node_fs_1.
|
|
13
|
-
const form = new
|
|
14
|
-
form.append(
|
|
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(
|
|
22
|
+
form.append('title', asset.title);
|
|
17
23
|
if (asset.description)
|
|
18
|
-
form.append(
|
|
24
|
+
form.append('description', asset.description);
|
|
19
25
|
if (asset.folder)
|
|
20
|
-
form.append(
|
|
21
|
-
form.append(
|
|
26
|
+
form.append('folder', asset.folder);
|
|
27
|
+
form.append('file', fileStream, fileName);
|
|
22
28
|
try {
|
|
23
|
-
|
|
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
|
-
|
|
32
|
+
(0, log_error_1.default)(error);
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
|
-
|
|
35
|
+
core_1.ux.action.stop();
|
|
36
|
+
core_1.ux.log('Loaded Files');
|
|
34
37
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
48
|
+
(0, log_error_1.default)(error);
|
|
16
49
|
}
|
|
17
50
|
}
|
|
18
|
-
}
|
|
51
|
+
}
|
|
52
|
+
exports.loadOperations = loadOperations;
|