rimecms 0.28.10 → 0.30.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 +3 -3
- package/dist/adapter-sqlite/area.server.js +8 -8
- package/dist/adapter-sqlite/generate-schema/column.server.d.ts +13 -0
- package/dist/adapter-sqlite/generate-schema/column.server.js +77 -0
- package/dist/adapter-sqlite/generate-schema/index.server.js +7 -12
- package/dist/adapter-sqlite/generate-schema/root.server.js +35 -39
- package/dist/adapter-sqlite/generate-schema/templates.server.d.ts +12 -0
- package/dist/adapter-sqlite/generate-schema/templates.server.js +19 -0
- package/dist/adapter-sqlite/generate-schema/{util.d.ts → util.server.d.ts} +2 -2
- package/dist/adapter-sqlite/generate-schema/{util.js → util.server.js} +2 -2
- package/dist/adapter-sqlite/generate-schema/write.server.js +1 -1
- package/dist/adapter-sqlite/relations.server.js +6 -1
- package/dist/adapter-sqlite/transform.server.js +1 -1
- package/dist/adapter-sqlite/util.server.d.ts +1 -6
- package/dist/adapter-sqlite/util.server.js +6 -0
- package/dist/adapter-sqlite/where.server.js +17 -16
- package/dist/adapter-sqlite/with.server.js +10 -10
- package/dist/core/areas/{api → rest}/get.server.d.ts +4 -2
- package/dist/core/areas/rest/get.server.js +45 -0
- package/dist/core/areas/rest/index.server.d.ts +6 -0
- package/dist/core/areas/rest/index.server.js +3 -0
- package/dist/core/areas/{api → rest}/update.server.d.ts +4 -2
- package/dist/core/areas/rest/update.server.js +43 -0
- package/dist/core/collections/auth/fields.d.ts +2 -182
- package/dist/core/collections/auth/hooks/before-upsert/augment-fields-password.server.d.ts +1 -1
- package/dist/core/collections/config/augment-auth.server.js +1 -1
- package/dist/core/collections/config/augment-nested.server.js +1 -1
- package/dist/core/collections/config/augment-panel.d.ts +1 -1
- package/dist/core/collections/config/augment-upload.js +2 -2
- package/dist/core/collections/config/augment-upload.server.js +4 -1
- package/dist/core/collections/operations/duplicate.js +31 -12
- package/dist/core/collections/operations/updateById.js +6 -5
- package/dist/core/collections/{api → rest}/create.server.d.ts +4 -2
- package/dist/core/collections/rest/create.server.js +37 -0
- package/dist/core/collections/{api → rest}/delete.server.d.ts +4 -2
- package/dist/core/collections/rest/delete.server.js +37 -0
- package/dist/core/collections/{api → rest}/deleteById.server.d.ts +4 -2
- package/dist/core/collections/rest/deleteById.server.js +21 -0
- package/dist/core/collections/{api → rest}/duplicate.server.d.ts +1 -1
- package/dist/core/collections/rest/duplicate.server.js +20 -0
- package/dist/core/collections/{api → rest}/get.server.d.ts +4 -2
- package/dist/core/collections/rest/get.server.js +50 -0
- package/dist/core/collections/{api → rest}/getById.server.d.ts +4 -2
- package/dist/core/collections/rest/getById.server.js +35 -0
- package/dist/core/collections/rest/index.server.d.ts +16 -0
- package/dist/core/collections/rest/index.server.js +16 -0
- package/dist/core/collections/{api → rest}/updateById.server.d.ts +4 -2
- package/dist/core/collections/rest/updateById.server.js +44 -0
- package/dist/core/collections/upload/disk/delete.server.d.ts +1 -1
- package/dist/core/collections/upload/disk/delete.server.js +48 -1
- package/dist/core/collections/upload/hooks/clean-up-files.server.js +2 -2
- package/dist/core/collections/upload/hooks/convert-base64.server.d.ts +1 -1
- package/dist/core/collections/upload/hooks/extract-path.server.d.ts +2 -2
- package/dist/core/collections/upload/hooks/extract-path.server.js +1 -1
- package/dist/core/collections/upload/hooks/handle-path-creation.server.d.ts +1 -1
- package/dist/core/collections/upload/hooks/process-file-upload.server.d.ts +1 -1
- package/dist/core/collections/upload/hooks/process-file-upload.server.js +3 -3
- package/dist/core/config/auth/better-auth.server.d.ts +2 -2
- package/dist/core/config/client/augment-directories.js +1 -1
- package/dist/core/config/config-context.server.d.ts +3 -3
- package/dist/core/config/server/augment-directories.server.js +1 -1
- package/dist/core/config/server/augment-panel-access.server.d.ts +1 -1
- package/dist/core/config/server/build-config.server.d.ts +11 -11
- package/dist/core/config/server/validate.server.js +51 -31
- package/dist/core/config/shared/find-thumbnail.js +13 -13
- package/dist/core/config/shared/find-title.js +13 -13
- package/dist/core/config/shared/upload-directories.js +1 -1
- package/dist/core/constant.d.ts +1 -1
- package/dist/core/constant.js +1 -1
- package/dist/core/constant.server.d.ts +1 -0
- package/dist/core/constant.server.js +2 -0
- package/dist/core/dev/cache/index.server.js +9 -9
- package/dist/core/dev/cli/build/index.d.ts +1 -0
- package/dist/core/dev/cli/build/index.js +37 -8
- package/dist/core/dev/cli/build/templates.d.ts +1 -0
- package/dist/core/dev/cli/build/templates.js +24 -0
- package/dist/core/dev/cli/clear/index.server.js +3 -2
- package/dist/core/dev/cli/generate/index.server.js +3 -2
- package/dist/core/dev/cli/index.js +20 -0
- package/dist/core/dev/cli/init/index.server.js +4 -4
- package/dist/core/dev/cli/init/templates.d.ts +1 -1
- package/dist/core/dev/cli/init/templates.js +2 -2
- package/dist/core/dev/cli/util/log.server.d.ts +1 -0
- package/dist/core/dev/cli/util/log.server.js +4 -0
- package/dist/core/dev/cli/util/package-manager.server.d.ts +9 -0
- package/dist/core/dev/cli/{init/package-manager-util.server.js → util/package-manager.server.js} +15 -0
- package/dist/core/dev/cli/util/package.server.d.ts +9 -0
- package/dist/core/dev/cli/{init/get-package-info.server.js → util/package.server.js} +10 -0
- package/dist/core/dev/generate/routes/common.server.d.ts +10 -1
- package/dist/core/dev/generate/routes/common.server.js +248 -29
- package/dist/core/dev/generate/routes/index.server.d.ts +7 -1
- package/dist/core/dev/generate/routes/index.server.js +16 -55
- package/dist/core/dev/generate/routes/util.server.d.ts +6 -16
- package/dist/core/dev/generate/routes/util.server.js +8 -21
- package/dist/core/dev/generate/types/index.server.js +22 -20
- package/dist/core/dev/vite/index.server.js +22 -6
- package/dist/core/errors/handler.server.d.ts +22 -1
- package/dist/core/errors/handler.server.js +25 -2
- package/dist/core/errors/index.d.ts +0 -1
- package/dist/core/errors/index.js +0 -1
- package/dist/core/fields/builders/boolean-builder.d.ts +3 -1
- package/dist/core/fields/builders/boolean-builder.js +3 -0
- package/dist/core/fields/builders/field-builder.d.ts +35 -2
- package/dist/core/fields/builders/field-builder.js +33 -2
- package/dist/core/fields/builders/form-field-builder.d.ts +71 -12
- package/dist/core/fields/builders/form-field-builder.js +96 -6
- package/dist/core/fields/builders/select-builder.d.ts +4 -1
- package/dist/core/fields/builders/select-builder.js +3 -0
- package/dist/core/fields/util.d.ts +9 -17
- package/dist/core/fields/util.js +49 -83
- package/dist/core/handlers/routes.server.d.ts +70 -1
- package/dist/core/handlers/routes.server.js +71 -4
- package/dist/core/naming.d.ts +34 -0
- package/dist/core/naming.js +39 -0
- package/dist/core/operations/blocks/diff.server.js +1 -1
- package/dist/core/operations/blocks/extract.server.js +1 -1
- package/dist/core/operations/configMap/buildTreeMap.d.ts +3 -2
- package/dist/core/operations/configMap/buildTreeMap.js +1 -1
- package/dist/core/operations/configMap/index.d.ts +2 -1
- package/dist/core/operations/configMap/index.js +13 -13
- package/dist/core/operations/configMap/types.d.ts +2 -2
- package/dist/core/operations/hooks/before-read/process-document-fields.server.js +14 -17
- package/dist/core/operations/hooks/before-upsert/data-config-map.server.d.ts +1 -1
- package/dist/core/operations/hooks/before-upsert/data-config-map.server.js +1 -1
- package/dist/core/operations/hooks/before-upsert/handle-new-version.server.d.ts +1 -1
- package/dist/core/operations/hooks/before-upsert/original-config-map.server.d.ts +1 -1
- package/dist/core/operations/hooks/before-upsert/original-config-map.server.js +1 -1
- package/dist/core/operations/hooks/before-upsert/set-default-values.server.d.ts +3 -5
- package/dist/core/operations/hooks/before-upsert/set-default-values.server.js +10 -15
- package/dist/core/operations/hooks/before-upsert/validate-fields.server.d.ts +1 -1
- package/dist/core/operations/hooks/before-upsert/validate-fields.server.js +49 -31
- package/dist/core/operations/relations/extract.server.js +5 -5
- package/dist/core/operations/shared/fallback-data-from-original.js +2 -2
- package/dist/core/operations/tree/diff.server.js +1 -1
- package/dist/core/operations/tree/extract.server.js +1 -1
- package/dist/core/plugins/api-init/index.server.js +10 -5
- package/dist/core/plugins/cache/cache.server.js +4 -4
- package/dist/core/rime.server.d.ts +10 -10
- package/dist/core/rime.server.js +5 -1
- package/dist/fields/blocks/component/AddBlockButton.svelte +7 -7
- package/dist/fields/blocks/component/AddBlockButton.svelte.d.ts +2 -2
- package/dist/fields/blocks/component/Blocks.svelte +6 -7
- package/dist/fields/blocks/component/props.d.ts +2 -2
- package/dist/fields/blocks/index.d.ts +1 -1
- package/dist/fields/blocks/index.js +3 -3
- package/dist/fields/blocks/index.server.js +1 -1
- package/dist/fields/checkbox/component/Checkbox.svelte +2 -2
- package/dist/fields/checkbox/component/props.d.ts +2 -2
- package/dist/fields/checkbox/index.server.d.ts +1 -2
- package/dist/fields/checkbox/index.server.js +1 -10
- package/dist/fields/combobox/component/ComboBox.svelte +3 -3
- package/dist/fields/combobox/component/props.d.ts +2 -2
- package/dist/fields/combobox/index.server.d.ts +1 -2
- package/dist/fields/combobox/index.server.js +2 -11
- package/dist/fields/component/index.d.ts +1 -1
- package/dist/fields/date/component/Date.svelte +4 -4
- package/dist/fields/date/component/Date.svelte.d.ts +2 -2
- package/dist/fields/date/index.d.ts +3 -1
- package/dist/fields/date/index.js +3 -0
- package/dist/fields/date/index.server.d.ts +1 -2
- package/dist/fields/date/index.server.js +1 -10
- package/dist/fields/email/component/Email.svelte +5 -6
- package/dist/fields/email/component/props.d.ts +2 -3
- package/dist/fields/email/index.d.ts +3 -2
- package/dist/fields/email/index.js +5 -2
- package/dist/fields/email/index.server.d.ts +0 -3
- package/dist/fields/email/index.server.js +0 -9
- package/dist/fields/group/component/Group.svelte +9 -15
- package/dist/fields/group/component/Group.svelte.d.ts +2 -2
- package/dist/fields/group/index.d.ts +4 -2
- package/dist/fields/group/index.server.js +2 -2
- package/dist/fields/index.server.d.ts +1 -4
- package/dist/fields/index.server.js +17 -13
- package/dist/fields/link/component/Link.svelte +5 -5
- package/dist/fields/link/component/RessourceInput.svelte +1 -1
- package/dist/fields/link/component/props.d.ts +2 -2
- package/dist/fields/link/index.d.ts +5 -2
- package/dist/fields/link/index.js +10 -11
- package/dist/fields/link/runtime.d.ts +2 -0
- package/dist/fields/link/runtime.js +1 -0
- package/dist/fields/link/{index.server.d.ts → runtime.server.d.ts} +1 -2
- package/dist/fields/link/{index.server.js → runtime.server.js} +2 -11
- package/dist/fields/number/component/Number.svelte +6 -6
- package/dist/fields/number/component/props.d.ts +2 -2
- package/dist/fields/number/index.d.ts +4 -10
- package/dist/fields/number/index.js +3 -4
- package/dist/fields/number/index.server.d.ts +1 -2
- package/dist/fields/number/index.server.js +1 -10
- package/dist/fields/radio/component/Radio.svelte +6 -7
- package/dist/fields/radio/component/props.d.ts +2 -2
- package/dist/fields/radio/index.server.d.ts +1 -2
- package/dist/fields/radio/index.server.js +2 -11
- package/dist/fields/relation/client.d.ts +1 -1
- package/dist/fields/relation/client.js +1 -1
- package/dist/fields/relation/component/Cell.svelte +1 -1
- package/dist/fields/relation/component/Relation.svelte +19 -15
- package/dist/fields/relation/component/Relation.svelte.d.ts +2 -2
- package/dist/fields/relation/component/upload/Browse.svelte +1 -1
- package/dist/fields/relation/index.d.ts +8 -5
- package/dist/fields/relation/index.js +8 -47
- package/dist/fields/relation/runtime.d.ts +5 -0
- package/dist/fields/relation/runtime.js +4 -0
- package/dist/fields/relation/runtime.server.d.ts +8 -0
- package/dist/fields/relation/runtime.server.js +49 -0
- package/dist/fields/rich-text/component/RichText.svelte +5 -5
- package/dist/fields/rich-text/component/props.d.ts +2 -2
- package/dist/fields/rich-text/core/features/fields/extension.d.ts +2 -2
- package/dist/fields/rich-text/core/features/fields/fields.svelte +2 -2
- package/dist/fields/rich-text/core/features/link/component/link-selector.svelte +1 -1
- package/dist/fields/rich-text/core/features/resource/resource-extension.d.ts +1 -1
- package/dist/fields/rich-text/core/features/resource/resource.svelte +1 -1
- package/dist/fields/rich-text/core/features/upload/upload-extension.d.ts +1 -1
- package/dist/fields/rich-text/core/features/upload/upload.svelte +1 -1
- package/dist/fields/rich-text/index.d.ts +2 -0
- package/dist/fields/rich-text/index.js +7 -2
- package/dist/fields/rich-text/index.server.d.ts +1 -2
- package/dist/fields/rich-text/index.server.js +1 -10
- package/dist/fields/select/component/Select.svelte +16 -16
- package/dist/fields/select/component/props.d.ts +2 -2
- package/dist/fields/select/index.d.ts +2 -0
- package/dist/fields/select/index.js +3 -0
- package/dist/fields/select/index.server.d.ts +1 -2
- package/dist/fields/select/index.server.js +2 -17
- package/dist/fields/slug/component/Slug.svelte +14 -10
- package/dist/fields/slug/component/Slug.svelte.d.ts +2 -2
- package/dist/fields/slug/index.d.ts +5 -2
- package/dist/fields/slug/index.js +3 -0
- package/dist/fields/slug/index.server.d.ts +1 -2
- package/dist/fields/slug/index.server.js +1 -10
- package/dist/fields/tabs/component/Tabs.svelte +15 -15
- package/dist/fields/tabs/component/Tabs.svelte.d.ts +2 -2
- package/dist/fields/tabs/index.d.ts +4 -16
- package/dist/fields/tabs/index.js +1 -8
- package/dist/fields/tabs/index.server.js +3 -3
- package/dist/fields/text/component/Text.svelte +5 -5
- package/dist/fields/text/component/props.d.ts +2 -3
- package/dist/fields/text/index.d.ts +4 -10
- package/dist/fields/text/index.js +3 -4
- package/dist/fields/text/index.server.d.ts +1 -2
- package/dist/fields/text/index.server.js +1 -10
- package/dist/fields/textarea/component/TextArea.svelte +3 -3
- package/dist/fields/textarea/component/props.d.ts +2 -2
- package/dist/fields/textarea/index.d.ts +4 -1
- package/dist/fields/textarea/index.js +3 -0
- package/dist/fields/textarea/index.server.d.ts +1 -2
- package/dist/fields/textarea/index.server.js +1 -10
- package/dist/fields/time/component/Time.svelte +5 -5
- package/dist/fields/time/component/Time.svelte.d.ts +1 -1
- package/dist/fields/time/component/props.d.ts +2 -2
- package/dist/fields/time/index.d.ts +2 -0
- package/dist/fields/time/index.js +3 -0
- package/dist/fields/time/index.server.d.ts +1 -2
- package/dist/fields/time/index.server.js +1 -10
- package/dist/fields/toggle/component/Toggle.svelte +3 -3
- package/dist/fields/toggle/component/Toggle.svelte.d.ts +1 -1
- package/dist/fields/toggle/component/props.d.ts +2 -2
- package/dist/fields/toggle/index.d.ts +2 -1
- package/dist/fields/toggle/index.server.d.ts +1 -2
- package/dist/fields/toggle/index.server.js +1 -10
- package/dist/fields/tree/component/AddItemButton.svelte +1 -2
- package/dist/fields/tree/component/Tree.svelte +6 -6
- package/dist/fields/tree/component/TreeBlock.svelte +5 -12
- package/dist/fields/tree/component/props.d.ts +3 -3
- package/dist/fields/tree/index.d.ts +3 -1
- package/dist/fields/tree/index.js +2 -2
- package/dist/fields/types.d.ts +11 -5
- package/dist/index.d.ts +8 -3
- package/dist/index.js +7 -3
- package/dist/panel/components/fields/FieldsPreview.svelte +4 -5
- package/dist/panel/components/fields/Hint.svelte +5 -4
- package/dist/panel/components/fields/Hint.svelte.d.ts +3 -2
- package/dist/panel/components/fields/Label.svelte +6 -11
- package/dist/panel/components/fields/Label.svelte.d.ts +3 -2
- package/dist/panel/components/fields/LabelFor.svelte +4 -4
- package/dist/panel/components/fields/LabelFor.svelte.d.ts +2 -1
- package/dist/panel/components/fields/RenderFields.svelte +11 -16
- package/dist/panel/components/fields/{root.svelte.d.ts → fieldset.svelte.d.ts} +1 -1
- package/dist/panel/components/fields/{root.svelte.js → fieldset.svelte.js} +1 -1
- package/dist/panel/components/fields/index.d.ts +5 -5
- package/dist/panel/components/fields/index.js +2 -2
- package/dist/panel/components/sections/collection/folder/FolderWithActions.svelte +1 -1
- package/dist/panel/components/sections/document/AuthFooter.svelte +2 -7
- package/dist/panel/components/sections/document/ButtonStatus.svelte +1 -1
- package/dist/panel/components/sections/document/CurrentlyEdited.svelte +1 -1
- package/dist/panel/components/sections/document/Settings.svelte +1 -1
- package/dist/panel/components/sections/live/LiveEditPanel.svelte +2 -2
- package/dist/panel/context/collection.svelte.js +10 -10
- package/dist/panel/context/documentForm.svelte.d.ts +8 -21
- package/dist/panel/context/documentForm.svelte.js +46 -54
- package/dist/panel/context/form.svelte.d.ts +6 -3
- package/dist/panel/context/form.svelte.js +22 -18
- package/dist/panel/context/live.svelte.js +1 -1
- package/dist/panel/index.d.ts +9 -1
- package/dist/panel/index.js +7 -1
- package/dist/panel/pages/area/actions.server.d.ts +2 -21
- package/dist/panel/pages/area/actions.server.js +28 -27
- package/dist/panel/pages/area/load.server.d.ts +2 -17
- package/dist/panel/pages/area/load.server.js +37 -46
- package/dist/panel/pages/auth/fields.d.ts +4 -4
- package/dist/panel/pages/auth/fields.js +6 -22
- package/dist/panel/pages/auth/reset-password/ResetPassword.svelte +3 -10
- package/dist/panel/pages/auth/sign-in/SignIn.svelte +7 -1
- package/dist/panel/pages/collection/load.server.d.ts +6 -6
- package/dist/panel/pages/collection/load.server.js +70 -72
- package/dist/panel/pages/collection-document/actions.server.d.ts +1 -1
- package/dist/panel/pages/collection-document/actions.server.js +78 -70
- package/dist/panel/pages/collection-document/load.server.d.ts +5 -20
- package/dist/panel/pages/collection-document/load.server.js +80 -82
- package/dist/server.d.ts +7 -0
- package/dist/server.js +7 -0
- package/dist/types.d.ts +1 -0
- package/dist/util/doc.js +15 -17
- package/dist/util/index.d.ts +9 -1
- package/dist/util/index.js +12 -1
- package/package.json +8 -50
- package/dist/core/api/index.d.ts +0 -7
- package/dist/core/api/index.js +0 -10
- package/dist/core/api/index.server.d.ts +0 -3
- package/dist/core/api/index.server.js +0 -3
- package/dist/core/areas/api/get.server.js +0 -36
- package/dist/core/areas/api/index.server.d.ts +0 -7
- package/dist/core/areas/api/index.server.js +0 -4
- package/dist/core/areas/api/update.server.js +0 -33
- package/dist/core/collections/api/create.server.js +0 -29
- package/dist/core/collections/api/delete.server.js +0 -32
- package/dist/core/collections/api/deleteById.server.js +0 -16
- package/dist/core/collections/api/duplicate.server.js +0 -18
- package/dist/core/collections/api/get.server.js +0 -45
- package/dist/core/collections/api/getById.server.js +0 -30
- package/dist/core/collections/api/index.server.d.ts +0 -17
- package/dist/core/collections/api/index.server.js +0 -9
- package/dist/core/collections/api/updateById.server.js +0 -38
- package/dist/core/dev/cli/init/get-package-info.server.d.ts +0 -1
- package/dist/core/dev/cli/init/package-manager-util.server.d.ts +0 -3
- package/dist/core/dev/generate/routes/area.server.d.ts +0 -7
- package/dist/core/dev/generate/routes/area.server.js +0 -69
- package/dist/core/dev/generate/routes/collection.server.d.ts +0 -14
- package/dist/core/dev/generate/routes/collection.server.js +0 -129
- package/dist/fields/relation/index.server.d.ts +0 -4
- package/dist/fields/relation/index.server.js +0 -13
- package/dist/live.d.ts +0 -4
- package/dist/live.js +0 -4
- package/dist/panel/index.server.d.ts +0 -4
- package/dist/panel/index.server.js +0 -4
- package/dist/panel/pages/auth/index.d.ts +0 -4
- package/dist/panel/pages/auth/index.js +0 -4
- package/dist/panel/pages/auth/index.server.d.ts +0 -18
- package/dist/panel/pages/auth/index.server.js +0 -12
- package/dist/panel/pages/index.actions.server.d.ts +0 -13
- package/dist/panel/pages/index.actions.server.js +0 -10
- package/dist/panel/pages/index.load.server.d.ts +0 -23
- package/dist/panel/pages/index.load.server.js +0 -16
- package/dist/panel/ui.d.ts +0 -4
- package/dist/panel/ui.js +0 -5
- /package/dist/core/dev/cli/{util.server.d.ts → util/prompt.server.d.ts} +0 -0
- /package/dist/core/dev/cli/{util.server.js → util/prompt.server.js} +0 -0
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { isAuthConfig } from '../../collections/auth/util.js';
|
|
2
2
|
import cache from '../../dev/cache/index.server.js';
|
|
3
3
|
import { isFormField } from '../../fields/util.js';
|
|
4
|
-
import { logger } from '../../logger/index.server';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
4
|
+
import { logger } from '../../logger/index.server.js';
|
|
5
|
+
import { withoutDirectoriesSuffix, withoutVersionsSuffix } from '../../naming.js';
|
|
6
|
+
import { BlocksBuilder } from '../../../fields/blocks/index.js';
|
|
7
|
+
import { GroupFieldBuilder } from '../../../fields/group/index.js';
|
|
8
|
+
import { RelationFieldBuilder } from '../../../fields/relation/index.js';
|
|
9
|
+
import { SelectFieldBuilder } from '../../../fields/select/index.js';
|
|
10
|
+
import { TabsBuilder } from '../../../fields/tabs/index.js';
|
|
11
|
+
import { TreeBuilder } from '../../../fields/tree/index.js';
|
|
12
|
+
import { isCamelCase } from '../../../util/string.js';
|
|
11
13
|
function hasDuplicates(arr) {
|
|
12
14
|
return [...new Set(arr.filter((e, i, a) => a.indexOf(e) !== i))];
|
|
13
15
|
}
|
|
@@ -29,6 +31,24 @@ function hasDuplicateSlug(config) {
|
|
|
29
31
|
}
|
|
30
32
|
return [];
|
|
31
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Check that all area/collection slugs are camelCase
|
|
36
|
+
*/
|
|
37
|
+
function validateSlugs(config) {
|
|
38
|
+
const errors = [];
|
|
39
|
+
const slugs = [
|
|
40
|
+
...(config.collections || []).map((c) => c.slug),
|
|
41
|
+
...(config.areas || []).map((a) => a.slug)
|
|
42
|
+
]
|
|
43
|
+
.map(withoutVersionsSuffix)
|
|
44
|
+
.map(withoutDirectoriesSuffix);
|
|
45
|
+
for (const slug of slugs) {
|
|
46
|
+
if (!isCamelCase(slug)) {
|
|
47
|
+
errors.push(`Slug ${slug} is not a valid prototype slug`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return errors;
|
|
51
|
+
}
|
|
32
52
|
/**
|
|
33
53
|
* Prevent the panel user collection slug
|
|
34
54
|
* to be used elsewhere
|
|
@@ -64,14 +84,14 @@ const validateDocumentFields = (documentConfig, config) => {
|
|
|
64
84
|
const isCollection = (documentConfig) => documentConfig.type === 'collection';
|
|
65
85
|
const isAuth = isCollection(documentConfig) && isAuthConfig(documentConfig);
|
|
66
86
|
const registeredBlocks = {};
|
|
67
|
-
const fieldsCompiled = documentConfig.fields.map((f) => f.compile());
|
|
87
|
+
// const fieldsCompiled = documentConfig.fields.map((f) => f.compile());
|
|
68
88
|
if (isAuth) {
|
|
69
|
-
const rolesField =
|
|
89
|
+
const rolesField = documentConfig.fields
|
|
70
90
|
.filter(isFormField)
|
|
71
91
|
.filter((f) => f.name === 'roles')
|
|
72
|
-
.filter((f) =>
|
|
73
|
-
const nameField =
|
|
74
|
-
const emailField =
|
|
92
|
+
.filter((f) => f instanceof SelectFieldBuilder)[0];
|
|
93
|
+
const nameField = documentConfig.fields.filter(isFormField).filter((f) => f.name === 'name')[0];
|
|
94
|
+
const emailField = documentConfig.fields
|
|
75
95
|
.filter(isFormField)
|
|
76
96
|
.find((f) => f.name === 'email' && f.type === 'email');
|
|
77
97
|
if (!rolesField)
|
|
@@ -80,7 +100,7 @@ const validateDocumentFields = (documentConfig, config) => {
|
|
|
80
100
|
errors.push(`Field email is missing in collection ${documentConfig.slug}`);
|
|
81
101
|
if (!nameField)
|
|
82
102
|
errors.push(`Field name is missing in collection ${documentConfig.slug}`);
|
|
83
|
-
if (!rolesField.many)
|
|
103
|
+
if (!rolesField.get.many)
|
|
84
104
|
errors.push(`Field roles must have "many" enabled : select('roles').options(...).many(), even with a single option`);
|
|
85
105
|
}
|
|
86
106
|
const validateBlockField = (fields, blockType) => {
|
|
@@ -96,8 +116,8 @@ const validateDocumentFields = (documentConfig, config) => {
|
|
|
96
116
|
};
|
|
97
117
|
const validateRelationField = (field) => {
|
|
98
118
|
const collectionsSlugs = (config.collections || []).map((c) => c.slug);
|
|
99
|
-
if (!collectionsSlugs.includes(field.relationTo)) {
|
|
100
|
-
errors.push(`Relation field ${field.name} references unknown collection ${field.relationTo}, in ${documentConfig.type} ${documentConfig.slug}`);
|
|
119
|
+
if (!collectionsSlugs.includes(field.get.relationTo)) {
|
|
120
|
+
errors.push(`Relation field ${field.name} references unknown collection ${field.get.relationTo}, in ${documentConfig.type} ${documentConfig.slug}`);
|
|
101
121
|
}
|
|
102
122
|
};
|
|
103
123
|
const validateFields = (fields) => {
|
|
@@ -116,17 +136,17 @@ const validateDocumentFields = (documentConfig, config) => {
|
|
|
116
136
|
return pattern.test(name) && !name.includes('-') && !name.includes(' ');
|
|
117
137
|
}
|
|
118
138
|
function validateTabs(field) {
|
|
119
|
-
const duplicates = hasDuplicates(field.tabs.map((t) => t.name));
|
|
139
|
+
const duplicates = hasDuplicates(field.get.tabs.map((t) => t.name));
|
|
120
140
|
if (duplicates.length) {
|
|
121
141
|
errors.push(`Dupplicate tab name ${duplicates} in ${documentConfig.slug}`);
|
|
122
142
|
}
|
|
123
143
|
}
|
|
124
144
|
for (const field of fields) {
|
|
125
145
|
// Recursive check first into Tabs since tabs are not Formfields
|
|
126
|
-
if (
|
|
146
|
+
if (field instanceof TabsBuilder) {
|
|
127
147
|
validateTabs(field);
|
|
128
|
-
for (const tab of field.tabs) {
|
|
129
|
-
validateFields(tab.fields);
|
|
148
|
+
for (const tab of field.get.tabs) {
|
|
149
|
+
validateFields(tab.get.fields);
|
|
130
150
|
}
|
|
131
151
|
}
|
|
132
152
|
// If field is not a Formfield eg. Separator then continue
|
|
@@ -134,7 +154,7 @@ const validateDocumentFields = (documentConfig, config) => {
|
|
|
134
154
|
continue;
|
|
135
155
|
}
|
|
136
156
|
// Check that a field wich has field._root = true is not localized
|
|
137
|
-
if (
|
|
157
|
+
if (field.get.root && field.get.localized) {
|
|
138
158
|
errors.push(`Field ${field.name} of ${documentConfig.type} ${documentConfig.slug} with _root = true, can't be localized`);
|
|
139
159
|
}
|
|
140
160
|
// Check for malformed field.name
|
|
@@ -142,8 +162,8 @@ const validateDocumentFields = (documentConfig, config) => {
|
|
|
142
162
|
errors.push(`Field ${field.name} of ${documentConfig.type} ${documentConfig.slug} should be camelCase`);
|
|
143
163
|
}
|
|
144
164
|
// Recursive check into Blocks
|
|
145
|
-
if (
|
|
146
|
-
for (const block of field.blocks) {
|
|
165
|
+
if (field instanceof BlocksBuilder) {
|
|
166
|
+
for (const block of field.get.blocks) {
|
|
147
167
|
if (block.name in registeredBlocks) {
|
|
148
168
|
const blockDefinedButDiffer = JSON.stringify(registeredBlocks[block.name]) !== JSON.stringify(block);
|
|
149
169
|
if (blockDefinedButDiffer) {
|
|
@@ -153,25 +173,25 @@ const validateDocumentFields = (documentConfig, config) => {
|
|
|
153
173
|
else {
|
|
154
174
|
registeredBlocks[block.name] = block;
|
|
155
175
|
}
|
|
156
|
-
validateFields(block.fields.filter(isFormField));
|
|
157
|
-
validateBlockField(block.fields.filter(isFormField), block.name);
|
|
176
|
+
validateFields(block.get.fields.filter(isFormField));
|
|
177
|
+
validateBlockField(block.get.fields.filter(isFormField), block.name);
|
|
158
178
|
}
|
|
159
179
|
// Recursive check into Tree
|
|
160
180
|
}
|
|
161
|
-
else if (
|
|
162
|
-
validateFields(field.fields.filter(isFormField));
|
|
181
|
+
else if (field instanceof TreeBuilder) {
|
|
182
|
+
validateFields(field.get.fields.filter(isFormField));
|
|
163
183
|
// Recursive check into Tabs
|
|
164
184
|
}
|
|
165
|
-
else if (
|
|
166
|
-
validateFields(field.fields.filter(isFormField));
|
|
185
|
+
else if (field instanceof GroupFieldBuilder) {
|
|
186
|
+
validateFields(field.get.fields.filter(isFormField));
|
|
167
187
|
// Check relation field
|
|
168
188
|
}
|
|
169
|
-
else if (
|
|
189
|
+
else if (field instanceof RelationFieldBuilder) {
|
|
170
190
|
validateRelationField(field);
|
|
171
191
|
}
|
|
172
192
|
}
|
|
173
193
|
};
|
|
174
|
-
validateFields(documentConfig.fields
|
|
194
|
+
validateFields(documentConfig.fields);
|
|
175
195
|
return errors;
|
|
176
196
|
};
|
|
177
197
|
const hasDatabase = (config) => {
|
|
@@ -192,9 +212,9 @@ function validateAuthCollections(config) {
|
|
|
192
212
|
return errors;
|
|
193
213
|
}
|
|
194
214
|
function validate(config) {
|
|
195
|
-
logger.debug('Validating config...');
|
|
196
215
|
const validateFunctions = [
|
|
197
216
|
hasDuplicateSlug,
|
|
217
|
+
validateSlugs,
|
|
198
218
|
hasUsersSlug,
|
|
199
219
|
validateFields,
|
|
200
220
|
hasDatabase,
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import { FormFieldBuilder } from '../../fields/builders/form-field-builder.js';
|
|
2
|
-
import {
|
|
3
|
-
import { RelationFieldBuilder } from '../../../fields/relation';
|
|
2
|
+
import { GroupFieldBuilder } from '../../../fields/group/index.js';
|
|
3
|
+
import { RelationFieldBuilder } from '../../../fields/relation/index.js';
|
|
4
4
|
import { TabsBuilder } from '../../../fields/tabs/index.js';
|
|
5
5
|
export function findThumbnailField(fields = [], basePath = '') {
|
|
6
6
|
for (const field of fields) {
|
|
7
7
|
// Direct check for isThumbnail
|
|
8
8
|
if (field instanceof RelationFieldBuilder &&
|
|
9
|
-
'isThumbnail' in field.
|
|
10
|
-
field.
|
|
11
|
-
const path = basePath ? `${basePath}.${field.
|
|
9
|
+
'isThumbnail' in field.get &&
|
|
10
|
+
field.get.isThumbnail === true) {
|
|
11
|
+
const path = basePath ? `${basePath}.${field.name}` : field.name;
|
|
12
12
|
return { field, path };
|
|
13
13
|
}
|
|
14
14
|
// Check in group
|
|
15
|
-
if (
|
|
16
|
-
const groupPath = basePath ? `${basePath}.${field.
|
|
17
|
-
const found = findThumbnailField(field.
|
|
15
|
+
if (field instanceof GroupFieldBuilder && field.get.fields) {
|
|
16
|
+
const groupPath = basePath ? `${basePath}.${field.name}` : field.name;
|
|
17
|
+
const found = findThumbnailField(field.get.fields, groupPath);
|
|
18
18
|
if (found)
|
|
19
19
|
return found;
|
|
20
20
|
}
|
|
21
21
|
// Check in tabs
|
|
22
|
-
if (field instanceof TabsBuilder && field.
|
|
23
|
-
for (const tab of field.
|
|
24
|
-
if (tab.
|
|
25
|
-
const tabPath = basePath ? `${basePath}.${tab.
|
|
26
|
-
const found = findThumbnailField(tab.
|
|
22
|
+
if (field instanceof TabsBuilder && field.get.tabs) {
|
|
23
|
+
for (const tab of field.get.tabs) {
|
|
24
|
+
if (tab.get.fields) {
|
|
25
|
+
const tabPath = basePath ? `${basePath}.${tab.name}` : tab.name;
|
|
26
|
+
const found = findThumbnailField(tab.get.fields, tabPath);
|
|
27
27
|
if (found)
|
|
28
28
|
return found;
|
|
29
29
|
}
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { FormFieldBuilder } from '../../fields/builders/form-field-builder.js';
|
|
2
|
-
import {
|
|
2
|
+
import { GroupFieldBuilder } from '../../../fields/group/index.js';
|
|
3
3
|
import { TabsBuilder } from '../../../fields/tabs/index.js';
|
|
4
4
|
export const hasMaybeTitle = (field) => ['text', 'date', 'slug', 'email', 'richText'].includes(field.type);
|
|
5
5
|
export function findTitleField(fields = [], basePath = '') {
|
|
6
6
|
for (const field of fields) {
|
|
7
7
|
// Direct check for isTitle
|
|
8
8
|
if (field instanceof FormFieldBuilder &&
|
|
9
|
-
hasMaybeTitle(field.
|
|
10
|
-
'isTitle' in field.
|
|
11
|
-
field.
|
|
12
|
-
const path = basePath ? `${basePath}.${field.
|
|
9
|
+
hasMaybeTitle(field.get) &&
|
|
10
|
+
'isTitle' in field.get &&
|
|
11
|
+
field.get.isTitle === true) {
|
|
12
|
+
const path = basePath ? `${basePath}.${field.name}` : field.name;
|
|
13
13
|
return { field, path };
|
|
14
14
|
}
|
|
15
15
|
// Check in group
|
|
16
|
-
if (
|
|
17
|
-
const groupPath = basePath ? `${basePath}.${field.
|
|
18
|
-
const found = findTitleField(field.
|
|
16
|
+
if (field instanceof GroupFieldBuilder && field.get.fields) {
|
|
17
|
+
const groupPath = basePath ? `${basePath}.${field.name}` : field.name;
|
|
18
|
+
const found = findTitleField(field.get.fields, groupPath);
|
|
19
19
|
if (found)
|
|
20
20
|
return found;
|
|
21
21
|
}
|
|
22
22
|
// Check in tabs
|
|
23
|
-
if (field instanceof TabsBuilder && field.
|
|
24
|
-
for (const tab of field.
|
|
25
|
-
if (tab.
|
|
26
|
-
const tabPath = basePath ? `${basePath}.${tab.
|
|
27
|
-
const found = findTitleField(tab.
|
|
23
|
+
if (field instanceof TabsBuilder && field.get.tabs) {
|
|
24
|
+
for (const tab of field.get.tabs) {
|
|
25
|
+
if (tab.get.fields) {
|
|
26
|
+
const tabPath = basePath ? `${basePath}.${tab.name}` : tab.name;
|
|
27
|
+
const found = findTitleField(tab.get.fields, tabPath);
|
|
28
28
|
if (found)
|
|
29
29
|
return found;
|
|
30
30
|
}
|
|
@@ -10,7 +10,7 @@ export function makeUploadDirectoriesCollectionClient(collection) {
|
|
|
10
10
|
const slug = withDirectoriesSuffix(collection.slug);
|
|
11
11
|
const directoriesConfig = collection.upload.directories;
|
|
12
12
|
// else create the directory collection
|
|
13
|
-
|
|
13
|
+
const directoriesCollection = {
|
|
14
14
|
slug: slug,
|
|
15
15
|
kebab: withDirectoriesSuffix(collection.kebab),
|
|
16
16
|
versions: undefined,
|
package/dist/core/constant.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export declare const PARAMS: {
|
|
|
37
37
|
readonly SORT: "sort";
|
|
38
38
|
/** GET / UPDATE a specific version*/
|
|
39
39
|
readonly VERSION_ID: "versionId";
|
|
40
|
-
/**
|
|
40
|
+
/** On fetch (upload) list operation filter out documents from a specific uploadPath */
|
|
41
41
|
readonly UPLOAD_PATH: "uploadPath";
|
|
42
42
|
/**
|
|
43
43
|
* Disable validation on CREATE / UPDATE operations
|
package/dist/core/constant.js
CHANGED
|
@@ -37,7 +37,7 @@ export const PARAMS = {
|
|
|
37
37
|
SORT: 'sort',
|
|
38
38
|
/** GET / UPDATE a specific version*/
|
|
39
39
|
VERSION_ID: 'versionId',
|
|
40
|
-
/**
|
|
40
|
+
/** On fetch (upload) list operation filter out documents from a specific uploadPath */
|
|
41
41
|
UPLOAD_PATH: 'uploadPath',
|
|
42
42
|
/**
|
|
43
43
|
* Disable validation on CREATE / UPDATE operations
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import { RIME_DEV_CACHE_DIR } from '../../constant.server';
|
|
1
2
|
import fs from 'fs';
|
|
2
3
|
import path from 'path';
|
|
3
4
|
const dev = process.env.NODE_ENV === 'development';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
fs.mkdirSync(cachePath);
|
|
5
|
+
if (!fs.existsSync(RIME_DEV_CACHE_DIR) && dev) {
|
|
6
|
+
fs.mkdirSync(RIME_DEV_CACHE_DIR);
|
|
7
7
|
}
|
|
8
8
|
function get(key) {
|
|
9
|
-
const keyPath = path.join(
|
|
9
|
+
const keyPath = path.join(RIME_DEV_CACHE_DIR, key + '.txt');
|
|
10
10
|
const exist = fs.existsSync(keyPath);
|
|
11
11
|
if (exist) {
|
|
12
12
|
return fs.readFileSync(keyPath).toString();
|
|
@@ -14,20 +14,20 @@ function get(key) {
|
|
|
14
14
|
return false;
|
|
15
15
|
}
|
|
16
16
|
function set(key, value) {
|
|
17
|
-
if (!fs.existsSync(
|
|
18
|
-
fs.mkdirSync(
|
|
17
|
+
if (!fs.existsSync(RIME_DEV_CACHE_DIR)) {
|
|
18
|
+
fs.mkdirSync(RIME_DEV_CACHE_DIR);
|
|
19
19
|
}
|
|
20
|
-
const keyPath = path.join(
|
|
20
|
+
const keyPath = path.join(RIME_DEV_CACHE_DIR, key + '.txt');
|
|
21
21
|
fs.writeFileSync(keyPath, value);
|
|
22
22
|
}
|
|
23
23
|
function del(key) {
|
|
24
|
-
const keyPath = path.join(
|
|
24
|
+
const keyPath = path.join(RIME_DEV_CACHE_DIR, key + '.txt');
|
|
25
25
|
if (fs.existsSync(keyPath)) {
|
|
26
26
|
fs.rmSync(keyPath, { force: true });
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
function clear() {
|
|
30
|
-
fs.rmSync(
|
|
30
|
+
fs.rmSync(RIME_DEV_CACHE_DIR, { recursive: true });
|
|
31
31
|
}
|
|
32
32
|
export default {
|
|
33
33
|
get,
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { logger } from '../../../logger/index.server.js';
|
|
3
|
+
import chalk from 'chalk';
|
|
2
4
|
import { spawnSync } from 'child_process';
|
|
3
5
|
import { copyFileSync, cpSync, existsSync, mkdirSync, renameSync, rmSync, writeFileSync } from 'fs';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
+
import { getInvokingPackageManager } from '../util/package-manager.server.js';
|
|
7
|
+
import { envProduction, polkaServer } from './templates.js';
|
|
8
|
+
const installCommands = {
|
|
9
|
+
pnpm: {
|
|
10
|
+
addDeps: 'pnpm install polka sharp serve-static',
|
|
11
|
+
prodInstall: 'pnpm install --prod',
|
|
12
|
+
runEnv: 'pnpm rime env'
|
|
13
|
+
},
|
|
14
|
+
npm: {
|
|
15
|
+
addDeps: 'npm install polka sharp serve-static',
|
|
16
|
+
prodInstall: 'npm install --omit=dev',
|
|
17
|
+
runEnv: 'npx rime env'
|
|
18
|
+
}
|
|
19
|
+
};
|
|
6
20
|
export const build = (args) => {
|
|
7
21
|
// Delete app folder if it exists
|
|
8
22
|
if (existsSync('./app')) {
|
|
@@ -24,13 +38,28 @@ export const build = (args) => {
|
|
|
24
38
|
cpSync('./db', './app/db', { recursive: true });
|
|
25
39
|
logger.info('[✓] database copied');
|
|
26
40
|
}
|
|
41
|
+
// Create main entry server file
|
|
27
42
|
writeFileSync('./app/index.js', polkaServer);
|
|
28
43
|
logger.info('[✓] polka server created at app/index.js');
|
|
44
|
+
// Create .env file if flag is set
|
|
45
|
+
const envContent = envProduction();
|
|
46
|
+
if (args.withEnv) {
|
|
47
|
+
writeFileSync('./app/.env', envContent);
|
|
48
|
+
logger.info('[✓] .env file created at app/.env');
|
|
49
|
+
}
|
|
50
|
+
console.log('----------------------------------------------------------------\n');
|
|
51
|
+
console.log('## Next steps :');
|
|
52
|
+
console.log('');
|
|
53
|
+
console.log(' cd ./app');
|
|
54
|
+
const pm = getInvokingPackageManager() === 'pnpm' ? 'pnpm' : 'npm';
|
|
55
|
+
if (!args.withEnv) {
|
|
56
|
+
console.log(' ' +
|
|
57
|
+
installCommands[pm].runEnv +
|
|
58
|
+
' ' +
|
|
59
|
+
chalk.dim(`# next time run \`${pm === 'pnpm' ? 'pnpm' : 'npx'} rime build -e\` to generate the .env file automatically`));
|
|
60
|
+
}
|
|
61
|
+
console.log(' ' + installCommands[pm].addDeps);
|
|
62
|
+
console.log(' ' + installCommands[pm].prodInstall);
|
|
29
63
|
console.log('');
|
|
30
|
-
|
|
31
|
-
logger.info('create a /app/.env file with ORIGIN HOST and PORT variables');
|
|
32
|
-
logger.info('cd ./app');
|
|
33
|
-
logger.info('pnpm install --prod');
|
|
34
|
-
logger.info('pnpm install polka sharp serve-static');
|
|
35
|
-
logger.info('node --env-file=.env index.js');
|
|
64
|
+
console.log(' node --env-file=.env index.js');
|
|
36
65
|
};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
+
export declare const envProduction: () => string;
|
|
1
2
|
export declare const polkaServer = "import polka from 'polka';\nimport serveStatic from 'serve-static';\nimport { handler } from './build/handler.js';\n\nconst serve = serveStatic('./static');\n\nconst port = process.env.PORT || 3000;\nconst host = process.env.HOST || '127.0.0.1';\n\npolka()\n\t.use(serve)\n\t.use(handler)\n\t.listen(port, host, () => {\n\t\tconsole.log(`server running on ${host}:${port}`);\n\t});\n";
|
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
import { randomId } from '../../../../util/random.js';
|
|
2
|
+
export const envProduction = () => `# BETTER-AUTH
|
|
3
|
+
BETTER_AUTH_SECRET=${randomId(32)}
|
|
4
|
+
|
|
5
|
+
# RIME
|
|
6
|
+
PUBLIC_RIME_URL=http://localhost:3000
|
|
7
|
+
RIME_LOG_LEVEL=ERROR
|
|
8
|
+
RIME_LOG_TO_FILE=true
|
|
9
|
+
RIME_CACHE_ENABLED=true
|
|
10
|
+
RIME_CACHE_STRATEGY=memory
|
|
11
|
+
|
|
12
|
+
# RIME_SMTP_USER=user@host.org
|
|
13
|
+
# RIME_SMTP_PASSWORD=somepassword
|
|
14
|
+
# RIME_SMTP_HOST=smtp.host
|
|
15
|
+
# RIME_SMTP_PORT=465
|
|
16
|
+
|
|
17
|
+
# SVELTEKIT ADAPTER-NODE
|
|
18
|
+
ORIGIN=http://localhost:3000
|
|
19
|
+
PORT=3000
|
|
20
|
+
HOST=localhost
|
|
21
|
+
|
|
22
|
+
# MISC
|
|
23
|
+
BODY_SIZE_LIMIT=10485760 # 10(MB) * 1024 * 1024 = 10485760 bytes
|
|
24
|
+
`;
|
|
1
25
|
export const polkaServer = `import polka from 'polka';
|
|
2
26
|
import serveStatic from 'serve-static';
|
|
3
27
|
import { handler } from './build/handler.js';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { RIME_DEV_CACHE_DIR } from '../../../constant.server.js';
|
|
1
2
|
import { logger } from '../../../logger/index.server.js';
|
|
2
3
|
import { rmSync } from 'node:fs';
|
|
3
4
|
import path from 'node:path';
|
|
4
5
|
import { INPUT_DIR, OUTPUT_DIR } from '../../constants.js';
|
|
5
|
-
import { prompt } from '../util.server.js';
|
|
6
|
+
import { prompt } from '../util/prompt.server.js';
|
|
6
7
|
const clearMessage = `Are you sure you want to delete all related rime files (Y/n):
|
|
7
8
|
- ./static/medias
|
|
8
9
|
- ./db
|
|
@@ -24,7 +25,7 @@ export const clear = async (args) => {
|
|
|
24
25
|
return logger.info('Operation cancelled. Great!');
|
|
25
26
|
}
|
|
26
27
|
// Remove directories
|
|
27
|
-
rmSync(
|
|
28
|
+
rmSync(RIME_DEV_CACHE_DIR, { recursive: true, force: true });
|
|
28
29
|
rmSync(path.join('src', 'routes', '(rime)'), { recursive: true, force: true });
|
|
29
30
|
rmSync(path.join('src', 'lib', INPUT_DIR), { recursive: true, force: true });
|
|
30
31
|
rmSync(path.join('src', 'lib', OUTPUT_DIR), { recursive: true, force: true });
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RIME_DEV_CACHE_DIR } from '../../../constant.server';
|
|
1
2
|
import cache from '../../cache/index.server.js';
|
|
2
3
|
import { sanitize } from '../../generate/sanitize/index.server.js';
|
|
3
4
|
import { ensureGeneratedConfig, ensureUserConfigExist } from '../../../ensure.server.js';
|
|
@@ -12,8 +13,8 @@ export const generate = async (args) => {
|
|
|
12
13
|
*/
|
|
13
14
|
function clearConfigCache() {
|
|
14
15
|
try {
|
|
15
|
-
rmSync(
|
|
16
|
-
mkdirSync(
|
|
16
|
+
rmSync(RIME_DEV_CACHE_DIR, { recursive: true, force: true });
|
|
17
|
+
mkdirSync(RIME_DEV_CACHE_DIR);
|
|
17
18
|
}
|
|
18
19
|
catch (err) {
|
|
19
20
|
logger.error(err.message);
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { logger } from '../../logger/index.server.js';
|
|
2
3
|
import { program } from 'commander';
|
|
4
|
+
import { existsSync, writeFileSync } from 'fs';
|
|
5
|
+
import { envProduction } from './build/templates.js';
|
|
3
6
|
program.version('0.1').description('CMS utilities');
|
|
4
7
|
program.description('Rime utilities');
|
|
5
8
|
program
|
|
@@ -14,6 +17,7 @@ program
|
|
|
14
17
|
program
|
|
15
18
|
.command('build')
|
|
16
19
|
.option('-d, --with-database', 'Include database', false)
|
|
20
|
+
.option('-e, --with-env', 'Create the /app/.env file from the production template', false)
|
|
17
21
|
.action(async (args) => {
|
|
18
22
|
const build = await import('./build/index.js').then((m) => m.build);
|
|
19
23
|
build(args);
|
|
@@ -39,4 +43,20 @@ program
|
|
|
39
43
|
process.exitCode = 1;
|
|
40
44
|
}
|
|
41
45
|
});
|
|
46
|
+
program
|
|
47
|
+
.command('env')
|
|
48
|
+
.option('-f, --force', 'Force generation, overwrite current', false)
|
|
49
|
+
.action(async (args) => {
|
|
50
|
+
try {
|
|
51
|
+
if (existsSync('./.env') && !args.force) {
|
|
52
|
+
logger.info('.env file already exists. Use --force to overwrite.');
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
writeFileSync('./.env', envProduction());
|
|
56
|
+
logger.info('[✓] .env file created');
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
process.exitCode = 1;
|
|
60
|
+
}
|
|
61
|
+
});
|
|
42
62
|
program.parse(process.argv);
|
|
@@ -11,9 +11,9 @@ import path from 'path';
|
|
|
11
11
|
import { fileURLToPath } from 'url';
|
|
12
12
|
import { INPUT_DIR } from '../../constants.js';
|
|
13
13
|
import { generate } from '../generate/index.server.js';
|
|
14
|
-
import {
|
|
15
|
-
import { getPackageInfoByKey } from '
|
|
16
|
-
import {
|
|
14
|
+
import { installDependencies } from '../util/package-manager.server.js';
|
|
15
|
+
import { getPackageInfoByKey } from '../util/package.server.js';
|
|
16
|
+
import { prompt } from '../util/prompt.server.js';
|
|
17
17
|
import * as templates from './templates.js';
|
|
18
18
|
const PACKAGE = 'rimecms';
|
|
19
19
|
const root = process.cwd();
|
|
@@ -83,7 +83,7 @@ export const init = async ({ force, name: incomingName, skipInstall }) => {
|
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
85
|
let gitignoreContent = readFileSync(gitignorePath, 'utf-8');
|
|
86
|
-
const updates = ['\\.
|
|
86
|
+
const updates = ['\\.cache', '/logs', '/db', '\\+rime.generated'];
|
|
87
87
|
if (!gitignoreContent.includes('# rime'))
|
|
88
88
|
gitignoreContent += '\n# rime';
|
|
89
89
|
for (const line of updates) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare const env: () => string;
|
|
2
2
|
export declare const defaultConfig: (name: string) => string;
|
|
3
3
|
export declare const drizzleConfig: (name: string) => string;
|
|
4
|
-
export declare const hooks = "import { sequence } from '@sveltejs/kit/hooks';\nimport { handlers } from 'rimecms';\nimport config from './lib/+rime.generated/rime.config.server.js';\n\nexport const handle = sequence(...(await handlers(config)));\n";
|
|
4
|
+
export declare const hooks = "import { sequence } from '@sveltejs/kit/hooks';\nimport { handlers } from 'rimecms/server';\nimport config from './lib/+rime.generated/rime.config.server.js';\n\nexport const handle = sequence(...(await handlers(config)));\n";
|
|
@@ -18,7 +18,7 @@ RIME_LOG_TO_FILE_MAX_DAYS=1
|
|
|
18
18
|
export const defaultConfig = (name) => `
|
|
19
19
|
import { Collection, rime } from '$rime/config';
|
|
20
20
|
import { text } from '${PACKAGE}/fields';
|
|
21
|
-
import { adapterSqlite } from '${PACKAGE}/sqlite';
|
|
21
|
+
import { adapterSqlite } from '${PACKAGE}/adapter-sqlite';
|
|
22
22
|
|
|
23
23
|
const Pages = Collection.create('pages', {
|
|
24
24
|
fields: [text('title').isTitle()]
|
|
@@ -45,7 +45,7 @@ export const config: Config = {
|
|
|
45
45
|
export default defineConfig(config);
|
|
46
46
|
`;
|
|
47
47
|
export const hooks = `import { sequence } from '@sveltejs/kit/hooks';
|
|
48
|
-
import { handlers } from '${PACKAGE}';
|
|
48
|
+
import { handlers } from '${PACKAGE}/server';
|
|
49
49
|
import config from './lib/${OUTPUT_DIR}/rime.config.server.js';
|
|
50
50
|
|
|
51
51
|
export const handle = sequence(...(await handlers(config)));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const dim: (text: string) => void;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type PackageManagerName = 'yarn' | 'pnpm' | 'bun' | 'npm' | 'deno';
|
|
2
|
+
export declare function getPackageManager(): PackageManagerName;
|
|
3
|
+
/**
|
|
4
|
+
* Detects the package manager used to invoke the currently running command
|
|
5
|
+
* (e.g. `pnpm rime build` vs `npx rime build`), based on the user agent npm/pnpm/yarn/bun
|
|
6
|
+
* set on the child process. Falls back to npm, which is also what npx reports.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getInvokingPackageManager(): PackageManagerName;
|
|
9
|
+
export declare function installDependencies(): void;
|
package/dist/core/dev/cli/{init/package-manager-util.server.js → util/package-manager.server.js}
RENAMED
|
@@ -39,6 +39,21 @@ export function getPackageManager() {
|
|
|
39
39
|
}
|
|
40
40
|
return 'npm';
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Detects the package manager used to invoke the currently running command
|
|
44
|
+
* (e.g. `pnpm rime build` vs `npx rime build`), based on the user agent npm/pnpm/yarn/bun
|
|
45
|
+
* set on the child process. Falls back to npm, which is also what npx reports.
|
|
46
|
+
*/
|
|
47
|
+
export function getInvokingPackageManager() {
|
|
48
|
+
const userAgent = process.env.npm_config_user_agent;
|
|
49
|
+
if (!userAgent)
|
|
50
|
+
return 'npm';
|
|
51
|
+
const name = userAgent.split('/')[0];
|
|
52
|
+
if (name === 'pnpm' || name === 'yarn' || name === 'bun' || name === 'npm' || name === 'deno') {
|
|
53
|
+
return name;
|
|
54
|
+
}
|
|
55
|
+
return 'npm';
|
|
56
|
+
}
|
|
42
57
|
export function installDependencies() {
|
|
43
58
|
const pm = getPackageManager();
|
|
44
59
|
if (pm === 'deno' || pm === 'yarn') {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vite (and every other rime command) resolves everything relative to cwd and
|
|
3
|
+
* fails when run from elsewhere (e.g. `vite build` from ./app errors with
|
|
4
|
+
* "Cannot resolve entry module index.html"). package.json alone isn't a
|
|
5
|
+
* reliable root marker since the build command copies one into ./app too;
|
|
6
|
+
* src/ is only ever present at the real project root.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isProjectRoot(cwd?: string): boolean;
|
|
9
|
+
export declare function getPackageInfoByKey(key: string): string;
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import fs from 'fs';
|
|
3
|
+
/**
|
|
4
|
+
* Vite (and every other rime command) resolves everything relative to cwd and
|
|
5
|
+
* fails when run from elsewhere (e.g. `vite build` from ./app errors with
|
|
6
|
+
* "Cannot resolve entry module index.html"). package.json alone isn't a
|
|
7
|
+
* reliable root marker since the build command copies one into ./app too;
|
|
8
|
+
* src/ is only ever present at the real project root.
|
|
9
|
+
*/
|
|
10
|
+
export function isProjectRoot(cwd = process.cwd()) {
|
|
11
|
+
return fs.existsSync(path.join(cwd, 'package.json')) && fs.existsSync(path.join(cwd, 'src'));
|
|
12
|
+
}
|
|
3
13
|
export function getPackageInfoByKey(key) {
|
|
4
14
|
try {
|
|
5
15
|
// Read the package.json file
|