rimecms 0.30.2 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/README.md +2 -40
  2. package/dist/.rime-modules.d.ts +23 -0
  3. package/dist/.rime-modules.json +1 -0
  4. package/dist/adapter-sqlite/generate-schema/column.server.js +1 -4
  5. package/dist/adapter-sqlite/generate-schema/write.server.js +7 -9
  6. package/dist/core/areas/config/builder.server.d.ts +0 -1
  7. package/dist/core/collections/auth/hooks/before-upsert/augment-fields-password.server.d.ts +1 -1
  8. package/dist/core/collections/config/builder.server.d.ts +0 -1
  9. package/dist/core/collections/upload/hooks/convert-base64.server.d.ts +1 -1
  10. package/dist/core/collections/upload/hooks/extract-path.server.d.ts +1 -1
  11. package/dist/core/collections/upload/hooks/handle-path-creation.server.d.ts +1 -1
  12. package/dist/core/collections/upload/hooks/process-file-upload.server.d.ts +1 -1
  13. package/dist/core/config/auth/better-auth-hooks.server.js +6 -3
  14. package/dist/core/config/auth/better-auth.server.d.ts +3 -3
  15. package/dist/core/config/client/augment-plugins.d.ts +1 -5
  16. package/dist/core/config/client/augment-plugins.js +3 -3
  17. package/dist/core/config/client/build-config.d.ts +1 -5
  18. package/dist/core/config/config-context.server.d.ts +1 -1
  19. package/dist/core/config/server/augment-plugins.server.d.ts +2 -42
  20. package/dist/core/config/server/augment-plugins.server.js +11 -6
  21. package/dist/core/config/server/build-config.server.d.ts +9 -4007
  22. package/dist/core/config/types.d.ts +12 -11
  23. package/dist/core/dev/cache/index.server.js +1 -1
  24. package/dist/core/dev/cli/build/index.d.ts +1 -0
  25. package/dist/core/dev/cli/build/index.js +10 -5
  26. package/dist/core/dev/cli/build/templates.d.ts +1 -1
  27. package/dist/core/dev/cli/build/templates.js +10 -7
  28. package/dist/core/dev/cli/clear/index.server.js +2 -0
  29. package/dist/core/dev/cli/generate-manifest/index.server.d.ts +17 -0
  30. package/dist/core/dev/cli/generate-manifest/index.server.js +221 -0
  31. package/dist/core/dev/cli/index.js +43 -0
  32. package/dist/core/dev/cli/init/index.server.js +13 -6
  33. package/dist/core/dev/cli/init/templates.d.ts +1 -1
  34. package/dist/core/dev/cli/init/templates.js +13 -4
  35. package/dist/core/dev/cli/util/package-manager.server.js +29 -26
  36. package/dist/core/dev/constants.d.ts +21 -2
  37. package/dist/core/dev/constants.js +26 -0
  38. package/dist/core/dev/generate/routes/common.server.js +4 -7
  39. package/dist/core/dev/generate/routes/index.server.js +25 -4
  40. package/dist/core/dev/generate/runtime/index.server.d.ts +40 -0
  41. package/dist/core/dev/generate/runtime/index.server.js +85 -0
  42. package/dist/core/dev/generate/runtime/parse-exports.server.d.ts +7 -0
  43. package/dist/core/dev/generate/runtime/parse-exports.server.js +40 -0
  44. package/dist/core/dev/generate/sanitize/index.server.d.ts +0 -7
  45. package/dist/core/dev/generate/sanitize/index.server.js +57 -5
  46. package/dist/core/dev/generate/types/index.server.js +21 -20
  47. package/dist/core/dev/vite/index.server.js +227 -33
  48. package/dist/core/ensure.server.d.ts +4 -3
  49. package/dist/core/ensure.server.js +8 -8
  50. package/dist/core/fields/builders/boolean-builder.d.ts +1 -2
  51. package/dist/core/fields/builders/field-builder.d.ts +11 -6
  52. package/dist/core/fields/builders/field-builder.js +12 -5
  53. package/dist/core/fields/builders/form-field-builder.d.ts +11 -14
  54. package/dist/core/fields/builders/form-field-builder.js +17 -15
  55. package/dist/core/fields/util.js +1 -1
  56. package/dist/core/handlers/index.js +2 -2
  57. package/dist/core/operations/blocks/extract.server.js +1 -1
  58. package/dist/core/operations/hooks/before-read/process-document-fields.server.js +3 -3
  59. package/dist/core/operations/hooks/before-upsert/data-config-map.server.d.ts +1 -1
  60. package/dist/core/operations/hooks/before-upsert/handle-new-version.server.d.ts +1 -1
  61. package/dist/core/operations/hooks/before-upsert/original-config-map.server.d.ts +1 -1
  62. package/dist/core/operations/hooks/before-upsert/set-default-values.server.d.ts +1 -1
  63. package/dist/core/operations/hooks/before-upsert/set-default-values.server.js +3 -3
  64. package/dist/core/operations/hooks/before-upsert/validate-fields.server.d.ts +1 -1
  65. package/dist/core/operations/hooks/before-upsert/validate-fields.server.js +7 -7
  66. package/dist/core/operations/hooks/index.server.d.ts +0 -4
  67. package/dist/core/operations/hooks/index.server.js +0 -4
  68. package/dist/core/operations/shared/fallback-data-from-original.js +1 -1
  69. package/dist/core/operations/tree/extract.server.js +1 -1
  70. package/dist/core/plugins/api-init/index.d.ts +2 -0
  71. package/dist/core/plugins/api-init/index.js +1 -0
  72. package/dist/core/plugins/api-init/{index.server.d.ts → module.server.d.ts} +0 -1
  73. package/dist/core/plugins/api-init/{index.server.js → module.server.js} +2 -3
  74. package/dist/core/plugins/cache/index.d.ts +2 -5
  75. package/dist/core/plugins/cache/index.js +1 -21
  76. package/dist/core/plugins/cache/module.d.ts +4 -0
  77. package/dist/core/plugins/cache/module.js +22 -0
  78. package/dist/core/plugins/cache/{index.server.d.ts → module.server.d.ts} +1 -2
  79. package/dist/core/plugins/cache/{index.server.js → module.server.js} +0 -1
  80. package/dist/core/plugins/index.d.ts +1 -8
  81. package/dist/core/plugins/index.js +0 -3
  82. package/dist/core/plugins/mailer/index.d.ts +2 -0
  83. package/dist/core/plugins/mailer/index.js +1 -0
  84. package/dist/core/plugins/mailer/{index.server.d.ts → module.server.d.ts} +0 -1
  85. package/dist/core/plugins/mailer/{index.server.js → module.server.js} +0 -1
  86. package/dist/core/plugins/sse/index.d.ts +2 -0
  87. package/dist/core/plugins/sse/index.js +1 -0
  88. package/dist/core/plugins/sse/{index.server.d.ts → module.server.d.ts} +0 -1
  89. package/dist/core/plugins/sse/{index.server.js → module.server.js} +0 -1
  90. package/dist/core/rime.server.d.ts +16 -16
  91. package/dist/fields/blocks/index.d.ts +1 -1
  92. package/dist/fields/blocks/index.js +5 -2
  93. package/dist/fields/checkbox/index.d.ts +1 -1
  94. package/dist/fields/checkbox/index.js +3 -2
  95. package/dist/fields/combobox/index.d.ts +1 -1
  96. package/dist/fields/combobox/index.js +4 -2
  97. package/dist/fields/date/index.d.ts +2 -2
  98. package/dist/fields/date/index.js +7 -5
  99. package/dist/fields/email/index.d.ts +3 -3
  100. package/dist/fields/email/index.js +9 -8
  101. package/dist/fields/group/component/Group.svelte +1 -1
  102. package/dist/fields/group/index.d.ts +1 -1
  103. package/dist/fields/group/index.js +4 -2
  104. package/dist/fields/link/index.d.ts +1 -1
  105. package/dist/fields/link/index.js +63 -56
  106. package/dist/fields/link/module.server.d.ts +2 -0
  107. package/dist/fields/link/{runtime.server.js → module.server.js} +0 -8
  108. package/dist/fields/number/index.d.ts +1 -1
  109. package/dist/fields/number/index.js +3 -2
  110. package/dist/fields/radio/index.d.ts +1 -1
  111. package/dist/fields/radio/index.js +4 -2
  112. package/dist/fields/relation/index.d.ts +2 -6
  113. package/dist/fields/relation/index.js +64 -75
  114. package/dist/fields/relation/{runtime.d.ts → module.d.ts} +2 -2
  115. package/dist/fields/relation/module.js +4 -0
  116. package/dist/fields/relation/module.server.d.ts +5 -0
  117. package/dist/fields/relation/{runtime.server.js → module.server.js} +3 -6
  118. package/dist/fields/rich-text/index.d.ts +1 -1
  119. package/dist/fields/rich-text/index.js +3 -2
  120. package/dist/fields/select/index.d.ts +1 -1
  121. package/dist/fields/select/index.js +4 -1
  122. package/dist/fields/slug/index.d.ts +1 -1
  123. package/dist/fields/slug/index.js +3 -2
  124. package/dist/fields/tabs/index.d.ts +1 -1
  125. package/dist/fields/tabs/index.js +10 -2
  126. package/dist/fields/text/index.d.ts +1 -1
  127. package/dist/fields/text/index.js +3 -2
  128. package/dist/fields/textarea/index.d.ts +1 -1
  129. package/dist/fields/textarea/index.js +3 -2
  130. package/dist/fields/time/index.d.ts +1 -1
  131. package/dist/fields/time/index.js +3 -2
  132. package/dist/fields/toggle/index.d.ts +1 -1
  133. package/dist/fields/toggle/index.js +3 -3
  134. package/dist/fields/tree/index.d.ts +1 -1
  135. package/dist/fields/tree/index.js +4 -2
  136. package/dist/index.d.ts +3 -3
  137. package/dist/index.js +3 -3
  138. package/dist/panel/components/fields/RenderFields.svelte +1 -1
  139. package/dist/panel/context/collection.svelte.js +5 -3
  140. package/dist/panel/context/config.svelte.d.ts +2 -2
  141. package/dist/panel/context/documentForm.svelte.d.ts +2 -2
  142. package/dist/panel/context/documentForm.svelte.js +47 -28
  143. package/dist/panel/context/form.svelte.js +3 -3
  144. package/dist/panel/context/live.svelte.js +1 -1
  145. package/dist/panel/pages/auth/sign-in/SignIn.svelte +6 -1
  146. package/dist/server.d.ts +4 -4
  147. package/dist/server.js +4 -4
  148. package/dist/types.d.ts +1 -1
  149. package/dist/util/doc.js +1 -1
  150. package/package.json +2 -9
  151. package/dist/fields/blocks/index.server.d.ts +0 -3
  152. package/dist/fields/blocks/index.server.js +0 -5
  153. package/dist/fields/checkbox/index.server.d.ts +0 -3
  154. package/dist/fields/checkbox/index.server.js +0 -3
  155. package/dist/fields/combobox/index.server.d.ts +0 -3
  156. package/dist/fields/combobox/index.server.js +0 -4
  157. package/dist/fields/date/index.server.d.ts +0 -3
  158. package/dist/fields/date/index.server.js +0 -3
  159. package/dist/fields/email/index.server.d.ts +0 -4
  160. package/dist/fields/email/index.server.js +0 -3
  161. package/dist/fields/group/index.server.d.ts +0 -2
  162. package/dist/fields/group/index.server.js +0 -12
  163. package/dist/fields/index.server.d.ts +0 -14
  164. package/dist/fields/index.server.js +0 -65
  165. package/dist/fields/link/runtime.server.d.ts +0 -5
  166. package/dist/fields/number/index.server.d.ts +0 -3
  167. package/dist/fields/number/index.server.js +0 -3
  168. package/dist/fields/radio/index.server.d.ts +0 -3
  169. package/dist/fields/radio/index.server.js +0 -4
  170. package/dist/fields/relation/runtime.js +0 -4
  171. package/dist/fields/relation/runtime.server.d.ts +0 -8
  172. package/dist/fields/rich-text/index.server.d.ts +0 -3
  173. package/dist/fields/rich-text/index.server.js +0 -3
  174. package/dist/fields/select/index.server.d.ts +0 -3
  175. package/dist/fields/select/index.server.js +0 -4
  176. package/dist/fields/slug/index.server.d.ts +0 -3
  177. package/dist/fields/slug/index.server.js +0 -3
  178. package/dist/fields/tabs/index.server.d.ts +0 -3
  179. package/dist/fields/tabs/index.server.js +0 -18
  180. package/dist/fields/text/index.server.d.ts +0 -3
  181. package/dist/fields/text/index.server.js +0 -3
  182. package/dist/fields/textarea/index.server.d.ts +0 -3
  183. package/dist/fields/textarea/index.server.js +0 -3
  184. package/dist/fields/time/index.server.d.ts +0 -3
  185. package/dist/fields/time/index.server.js +0 -3
  186. package/dist/fields/toggle/index.server.d.ts +0 -3
  187. package/dist/fields/toggle/index.server.js +0 -3
  188. package/dist/fields/tree/index.server.d.ts +0 -3
  189. package/dist/fields/tree/index.server.js +0 -4
  190. /package/dist/fields/link/{runtime.d.ts → module.d.ts} +0 -0
  191. /package/dist/fields/link/{runtime.js → module.js} +0 -0
@@ -10,7 +10,7 @@ export default async function (rime) {
10
10
  createCMSHandler(await rime),
11
11
  handleAuth,
12
12
  handleCORS,
13
- handleRoutes,
14
- ...createPluginsHandler(await rime)
13
+ ...createPluginsHandler(await rime),
14
+ handleRoutes
15
15
  ];
16
16
  }
@@ -5,7 +5,7 @@ export function extractBlocks({ data, configMap }) {
5
5
  Object.entries(configMap).forEach(([path, config]) => {
6
6
  if (config.type === 'blocks') {
7
7
  const value = getValueAtPath(path, data);
8
- const isEmptyValue = config.run.isEmpty(value);
8
+ const isEmptyValue = config.use.isEmpty(value);
9
9
  if (value && !isEmptyValue) {
10
10
  value.forEach((block, index) => {
11
11
  if (block.type) {
@@ -10,12 +10,12 @@ export const processDocumentFields = Hooks.beforeRead(async (args) => {
10
10
  for (const [key, config] of Object.entries(configMap)) {
11
11
  let value = getValueAtPath(key, doc);
12
12
  let isEmpty;
13
- if (!config.run.canRead(event.locals.user)) {
13
+ if (!config.use.accessRead(event.locals.user)) {
14
14
  doc = deleteValueAtPath(doc, key);
15
15
  continue;
16
16
  }
17
17
  if (value !== undefined && value !== null) {
18
- value = await config.run.beforeRead(value, {
18
+ value = await config.use.beforeRead(value, {
19
19
  event,
20
20
  operation: args.context,
21
21
  documentId: doc.id
@@ -23,7 +23,7 @@ export const processDocumentFields = Hooks.beforeRead(async (args) => {
23
23
  doc = setValueAtPath(key, doc, value);
24
24
  }
25
25
  try {
26
- isEmpty = config.run.isEmpty(value);
26
+ isEmpty = config.use.isEmpty(value);
27
27
  }
28
28
  catch {
29
29
  isEmpty = false;
@@ -1 +1 @@
1
- export declare const buildDataConfigMap: import("../index.server.js").Hook<"raw", "update" | "create", "before">;
1
+ export declare const buildDataConfigMap: import("../index.server.js").Hook<"raw", "create" | "update", "before">;
@@ -2,4 +2,4 @@
2
2
  * Handles version-related operations for document updates
3
3
  * Manages specific version updates and new version creation
4
4
  */
5
- export declare const handleNewVersion: import("../index.server.js").Hook<"raw", "update" | "create", "before">;
5
+ export declare const handleNewVersion: import("../index.server.js").Hook<"raw", "create" | "update", "before">;
@@ -1 +1 @@
1
- export declare const buildOriginalDocConfigMap: import("../index.server.js").Hook<"raw", "update" | "create", "before">;
1
+ export declare const buildOriginalDocConfigMap: import("../index.server.js").Hook<"raw", "create" | "update", "before">;
@@ -1,6 +1,6 @@
1
1
  import type { Adapter } from '../../../../adapter-sqlite/index.server.js';
2
2
  import type { FormFieldBuilder } from '../../../fields/builders/form-field-builder.js';
3
- export declare const setDefaultValues: import("../index.server.js").Hook<"raw", "update" | "create", "before">;
3
+ export declare const setDefaultValues: import("../index.server.js").Hook<"raw", "create" | "update", "before">;
4
4
  type GetDefaultValue = (args: {
5
5
  key: string;
6
6
  config: FormFieldBuilder;
@@ -17,7 +17,7 @@ export const setDefaultValues = Hooks.beforeUpsert(async (args) => {
17
17
  let isEmpty;
18
18
  const shouldAddDefault = operation === 'create' || (operation === 'update' && config.get.required);
19
19
  try {
20
- isEmpty = config.run.isEmpty(value);
20
+ isEmpty = config.use.isEmpty(value);
21
21
  }
22
22
  catch {
23
23
  isEmpty = false;
@@ -60,11 +60,11 @@ const defaultRelationValue = async (config, key, adapter) => {
60
60
  documentId: documentId
61
61
  }));
62
62
  };
63
- return await buildRelation(config.run.defaultValue({ event: getRequestEvent() }));
63
+ return await buildRelation(config.use.defaultValue({ event: getRequestEvent() }));
64
64
  };
65
65
  export const getDefaultValue = async ({ key, config, adapter }) => {
66
66
  if (config instanceof RelationFieldBuilder) {
67
67
  return await defaultRelationValue(config, key, adapter);
68
68
  }
69
- return config.run.defaultValue({ event: getRequestEvent() });
69
+ return config.use.defaultValue({ event: getRequestEvent() });
70
70
  };
@@ -1 +1 @@
1
- export declare const validateFields: import("../index.server.js").Hook<"raw", "update" | "create", "before">;
1
+ export declare const validateFields: import("../index.server.js").Hook<"raw", "create" | "update", "before">;
@@ -63,7 +63,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
63
63
  /* Field hook before validate
64
64
  /****************************************************/
65
65
  if (value !== undefined && value !== null && !skipHooks) {
66
- value = await config.run.beforeValidate(value, { config, data: args.data });
66
+ value = await config.use.beforeValidate(value, { config, data: args.data });
67
67
  output = setValueAtPath(key, output, value);
68
68
  }
69
69
  /****************************************************/
@@ -71,7 +71,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
71
71
  /****************************************************/
72
72
  if (config.get.validate && value !== undefined && value !== null && !skipHooks) {
73
73
  try {
74
- const valid = config.run.validate(value, {
74
+ const valid = config.use.validate(value, {
75
75
  data: output,
76
76
  operation,
77
77
  id: operation === 'update' ? args.context.originalDoc?.id : undefined,
@@ -93,7 +93,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
93
93
  /* Field hook before Save
94
94
  */
95
95
  if (value !== undefined && value !== null && !skipHooks) {
96
- value = await config.run.beforeSave(value, {
96
+ value = await config.use.beforeSave(value, {
97
97
  config: config.get,
98
98
  event,
99
99
  operation: args.context
@@ -104,7 +104,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
104
104
  /* Access
105
105
  /****************************************************/
106
106
  if (operation === 'update' && !skipAccess) {
107
- const authorizedFieldUpdate = config.run.canUpdate(user, {
107
+ const authorizedFieldUpdate = config.use.accessUpdate(user, {
108
108
  id: args.context.originalDoc?.id
109
109
  });
110
110
  if (!authorizedFieldUpdate) {
@@ -114,7 +114,7 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
114
114
  }
115
115
  }
116
116
  if (operation === 'create' && !skipAccess) {
117
- const authorizedFieldCreate = config.run.canCreate(user, {
117
+ const authorizedFieldCreate = config.use.accessCreate(user, {
118
118
  id: undefined
119
119
  });
120
120
  if (!authorizedFieldCreate) {
@@ -124,12 +124,12 @@ export const validateFields = Hooks.beforeUpsert(async (args) => {
124
124
  }
125
125
  }
126
126
  // Required
127
- if (config.get.required && config.run.isEmpty(value)) {
127
+ if (config.get.required && config.use.isEmpty(value)) {
128
128
  if (skipRequired) {
129
129
  // The field's own type-correct default (falling back to '' only
130
130
  // when none is set) — a hardcoded '' here was wrong for every
131
131
  // non-string required field (number, checkbox, date, ...).
132
- output = setValueAtPath(key, output, config.run.defaultValue({ event }) ?? '');
132
+ output = setValueAtPath(key, output, config.use.defaultValue({ event }) ?? '');
133
133
  }
134
134
  else {
135
135
  errors[key] = RimeFormError.REQUIRED_FIELD;
@@ -81,10 +81,6 @@ export declare const Hooks: {
81
81
  * Creates a before delete hook
82
82
  */
83
83
  beforeDelete: <S extends DocType = "raw">(handler: Hook<S, "delete", "before">) => Hook<S, "delete", "before">;
84
- /**
85
- * Creates an after read hook
86
- */
87
- afterRead: <S extends DocType = "raw">(handler: Hook<S, "read", "after">) => Hook<S, "read", "after">;
88
84
  /**
89
85
  * Creates an after create hook
90
86
  */
@@ -26,10 +26,6 @@ export const Hooks = {
26
26
  * Creates a before delete hook
27
27
  */
28
28
  beforeDelete: (handler) => handler,
29
- /**
30
- * Creates an after read hook
31
- */
32
- afterRead: (handler) => handler,
33
29
  /**
34
30
  * Creates an after create hook
35
31
  */
@@ -16,7 +16,7 @@ export const fallbackDataFromOriginal = async (args) => {
16
16
  let value = getValueAtPath(key, output);
17
17
  let isEmpty;
18
18
  try {
19
- isEmpty = config.run.isEmpty(value);
19
+ isEmpty = config.use.isEmpty(value);
20
20
  }
21
21
  catch {
22
22
  isEmpty = false;
@@ -22,7 +22,7 @@ export function extractTreeBlocks({ data, configMap }) {
22
22
  Object.entries(configMap).forEach(([path, config]) => {
23
23
  if (config.type === 'tree') {
24
24
  const value = getValueAtPath(path, data);
25
- const isEmptyValue = config.run.isEmpty(value);
25
+ const isEmptyValue = config.use.isEmpty(value);
26
26
  if (value && !isEmptyValue) {
27
27
  value.forEach((item, index) => {
28
28
  processTreeItem(item, index, path, undefined);
@@ -0,0 +1,2 @@
1
+ /// <reference path="../../../.rime-modules.d.ts" />
2
+ export { apiInit } from "$rime/modules/rimecms/core/plugins/api-init";
@@ -0,0 +1 @@
1
+ export { apiInit } from "$rime/modules/rimecms/core/plugins/api-init";
@@ -1,7 +1,6 @@
1
1
  import { type RequestHandler } from '@sveltejs/kit';
2
2
  export declare const apiInit: () => {
3
3
  readonly name: "apiInit";
4
- readonly type: "server";
5
4
  readonly routes: {
6
5
  readonly '/api/init': {
7
6
  readonly POST: RequestHandler;
@@ -28,7 +28,7 @@ export const apiInit = definePlugin(() => {
28
28
  });
29
29
  }
30
30
  event.locals.isInit = true;
31
- const [signUpError] = await trycatch(() => event.locals.rime.auth.api.signUpEmail({
31
+ const [signUpError, response] = await trycatch(() => event.locals.rime.auth.api.signUpEmail({
32
32
  body: {
33
33
  email: data.email,
34
34
  name: data.name,
@@ -42,11 +42,10 @@ export const apiInit = definePlugin(() => {
42
42
  formData: { email: data.email }
43
43
  });
44
44
  }
45
- return json({ initialized: true });
45
+ return json({ initialized: true, user: response.user });
46
46
  };
47
47
  return {
48
48
  name: 'apiInit',
49
- type: 'server',
50
49
  routes: {
51
50
  '/api/init': {
52
51
  POST: requestHandler
@@ -1,5 +1,2 @@
1
- export declare const cacheClient: () => {
2
- readonly name: "cache/client";
3
- readonly type: "client";
4
- readonly configure: <const C extends import("../../config/types.js").SanitizedConfigClient>(config: C) => C;
5
- };
1
+ /// <reference path="../../../.rime-modules.d.ts" />
2
+ export { cache } from "$rime/modules/rimecms/core/plugins/cache";
@@ -1,21 +1 @@
1
- import { definePluginClient } from '../index.js';
2
- import HeaderButton from './HeaderButton.svelte';
3
- export const cacheClient = definePluginClient(() => {
4
- return {
5
- name: 'cache/client',
6
- type: 'client',
7
- configure: (config) => {
8
- config = {
9
- ...config,
10
- panel: {
11
- ...(config.panel || {}),
12
- components: {
13
- ...(config.panel?.components || { header: [], collectionHeader: [] }),
14
- header: [...(config.panel?.components?.header || []), HeaderButton]
15
- }
16
- }
17
- };
18
- return config;
19
- }
20
- };
21
- });
1
+ export { cache } from "$rime/modules/rimecms/core/plugins/cache";
@@ -0,0 +1,4 @@
1
+ export declare const cache: () => {
2
+ readonly name: "cache";
3
+ readonly configure: <const C extends import("../../config/types.js").Config | import("../../config/types.js").SanitizedConfigClient>(config: C) => C;
4
+ };
@@ -0,0 +1,22 @@
1
+ import { definePlugin } from '../index.js';
2
+ import HeaderButton from './HeaderButton.svelte';
3
+ // Signature has to match module.server.ts's — the same call site (whatever the consumer
4
+ // wrote in rime.config.ts) compiles against both, whichever one this build resolves to.
5
+ export const cache = definePlugin(() => {
6
+ return {
7
+ name: 'cache',
8
+ configure: (config) => {
9
+ config = {
10
+ ...config,
11
+ panel: {
12
+ ...(config.panel || {}),
13
+ components: {
14
+ ...(config.panel?.components || { header: [], collectionHeader: [] }),
15
+ header: [...(config.panel?.components?.header || []), HeaderButton]
16
+ }
17
+ }
18
+ };
19
+ return config;
20
+ }
21
+ };
22
+ });
@@ -26,8 +26,7 @@ type CacheOptions = {
26
26
  export declare const toHash: (str: string) => string;
27
27
  export declare const cache: (options?: CacheOptions) => {
28
28
  readonly name: "cache";
29
- readonly type: "server";
30
- readonly configure: <const C extends import("../../config/types.js").Config>(config: C) => C;
29
+ readonly configure: <const C extends import("../../config/types.js").Config | import("../../config/types.js").SanitizedConfigClient>(config: C) => C;
31
30
  readonly routes: {
32
31
  readonly '/api/clear-cache': {
33
32
  readonly POST: () => Response;
@@ -45,7 +45,6 @@ export const cache = definePlugin((options) => {
45
45
  };
46
46
  return {
47
47
  name: 'cache',
48
- type: 'server',
49
48
  configure: (config) => {
50
49
  config = {
51
50
  ...config,
@@ -2,19 +2,12 @@ import type { Config, RouteConfig } from '../../types.js';
2
2
  import type { Handle } from '@sveltejs/kit';
3
3
  import type { SanitizedConfigClient } from '../config/types.js';
4
4
  type MaybeAsyncFunction = (...args: any[]) => any | Promise<any>;
5
- export type PluginClient = {
6
- name: string;
7
- type: 'client';
8
- configure?: <const C extends SanitizedConfigClient>(config: C) => C;
9
- };
10
5
  export type Plugin = {
11
6
  name: string;
12
- type: 'server';
13
- configure?: <const C extends Config>(config: C) => C;
7
+ configure?: <const C extends Config | SanitizedConfigClient>(config: C) => C;
14
8
  actions?: Record<string, MaybeAsyncFunction>;
15
9
  routes?: Record<string, RouteConfig>;
16
10
  handler?: Handle;
17
11
  };
18
12
  export declare function definePlugin<const F extends (options?: any) => Plugin>(factory: F): F;
19
- export declare function definePluginClient<const F extends (options?: any) => PluginClient>(factory: F): F;
20
13
  export {};
@@ -1,6 +1,3 @@
1
1
  export function definePlugin(factory) {
2
2
  return factory;
3
3
  }
4
- export function definePluginClient(factory) {
5
- return factory;
6
- }
@@ -0,0 +1,2 @@
1
+ /// <reference path="../../../.rime-modules.d.ts" />
2
+ export { mailer } from "$rime/modules/rimecms/core/plugins/mailer";
@@ -0,0 +1 @@
1
+ export { mailer } from "$rime/modules/rimecms/core/plugins/mailer";
@@ -1,7 +1,6 @@
1
1
  import type SMTPTransport from 'nodemailer/lib/smtp-transport';
2
2
  export declare const mailer: (smtpConfig: SMTPConfig) => {
3
3
  readonly name: "mailer";
4
- readonly type: "server";
5
4
  readonly actions: {
6
5
  readonly sendMail: (args: {
7
6
  to: string;
@@ -25,7 +25,6 @@ export const mailer = definePlugin((smtpConfig) => {
25
25
  };
26
26
  return {
27
27
  name: 'mailer',
28
- type: 'server',
29
28
  actions: {
30
29
  sendMail
31
30
  }
@@ -0,0 +1,2 @@
1
+ /// <reference path="../../../.rime-modules.d.ts" />
2
+ export { sse } from "$rime/modules/rimecms/core/plugins/sse";
@@ -0,0 +1 @@
1
+ export { sse } from "$rime/modules/rimecms/core/plugins/sse";
@@ -2,7 +2,6 @@ import { type RequestHandler } from '@sveltejs/kit';
2
2
  import { broadcast } from './broadcast.js';
3
3
  export declare const sse: () => {
4
4
  readonly name: "sse";
5
- readonly type: "server";
6
5
  readonly actions: {
7
6
  readonly broadcast: (data: import("./types.js").ContentUpdatePayload) => void;
8
7
  };
@@ -40,7 +40,6 @@ export const sse = definePlugin(() => {
40
40
  };
41
41
  return {
42
42
  name: 'sse',
43
- type: 'server',
44
43
  actions: {
45
44
  broadcast
46
45
  },
@@ -1761,13 +1761,13 @@ export declare function createRime<const C extends Config>(config: BuildConfig<C
1761
1761
  $Infer: {
1762
1762
  body: ({
1763
1763
  permission: {
1764
- readonly user?: ("update" | "create" | "delete" | "list" | "get" | "set-role" | "ban" | "impersonate" | "set-password")[] | undefined;
1764
+ readonly user?: ("create" | "update" | "delete" | "list" | "get" | "set-role" | "ban" | "impersonate" | "set-password")[] | undefined;
1765
1765
  readonly session?: ("delete" | "list" | "revoke")[] | undefined;
1766
1766
  };
1767
1767
  permissions?: never | undefined;
1768
1768
  } | {
1769
1769
  permissions: {
1770
- readonly user?: ("update" | "create" | "delete" | "list" | "get" | "set-role" | "ban" | "impersonate" | "set-password")[] | undefined;
1770
+ readonly user?: ("create" | "update" | "delete" | "list" | "get" | "set-role" | "ban" | "impersonate" | "set-password")[] | undefined;
1771
1771
  readonly session?: ("delete" | "list" | "revoke")[] | undefined;
1772
1772
  };
1773
1773
  permission?: never | undefined;
@@ -1982,18 +1982,18 @@ export declare function createRime<const C extends Config>(config: BuildConfig<C
1982
1982
  isValidLocale: (locale: string) => boolean;
1983
1983
  getArea: (slug: string) => import("./config/types.js").BuiltArea;
1984
1984
  getCollection: (slug: string) => import("./config/types.js").BuiltCollection;
1985
- getBySlug: (slug: string) => import("./config/types.js").BuiltArea | import("./config/types.js").BuiltCollection;
1985
+ getBySlug: (slug: string) => import("./config/types.js").BuiltCollection | import("./config/types.js").BuiltArea;
1986
1986
  isCollection: (slug?: string) => slug is import("./types/doc.js").CollectionSlug;
1987
1987
  isArea: (slug?: string) => slug is import("./types/doc.js").AreaSlug;
1988
1988
  getDocumentPrototype(slug: import("./types/doc.js").PrototypeSlug): "area" | "collection";
1989
1989
  };
1990
1990
  readonly plugins: {
1991
- cache: import("./plugins/cache/index.server.js").CacheActions;
1992
- sse: import("./plugins/sse/index.server.js").SSEActions;
1993
- } & (C["$smtp"] extends import("./plugins/mailer/index.server.js").SMTPConfig ? {
1994
- mailer: import("./plugins/mailer/index.server.js").MailerActions;
1991
+ cache: import("./plugins/cache/module.server.js").CacheActions;
1992
+ sse: import("./plugins/sse/module.server.js").SSEActions;
1993
+ } & (C["$smtp"] extends import("./plugins/mailer/module.server.js").SMTPConfig ? {
1994
+ mailer: import("./plugins/mailer/module.server.js").MailerActions;
1995
1995
  } : Record<string, never>) & (C extends {
1996
- $plugins: readonly (infer P)[];
1996
+ plugins: readonly (infer P)[];
1997
1997
  } ? P extends {
1998
1998
  name: infer N;
1999
1999
  actions?: infer A;
@@ -2009,12 +2009,12 @@ export declare function createRime<const C extends Config>(config: BuildConfig<C
2009
2009
  error: (...args: any[]) => void;
2010
2010
  };
2011
2011
  } & {
2012
- cache: import("./plugins/cache/index.server.js").CacheActions;
2013
- sse: import("./plugins/sse/index.server.js").SSEActions;
2014
- } & (C["$smtp"] extends import("./plugins/mailer/index.server.js").SMTPConfig ? {
2015
- mailer: import("./plugins/mailer/index.server.js").MailerActions;
2012
+ cache: import("./plugins/cache/module.server.js").CacheActions;
2013
+ sse: import("./plugins/sse/module.server.js").SSEActions;
2014
+ } & (C["$smtp"] extends import("./plugins/mailer/module.server.js").SMTPConfig ? {
2015
+ mailer: import("./plugins/mailer/module.server.js").MailerActions;
2016
2016
  } : Record<string, never>) & (C extends {
2017
- $plugins: readonly (infer P)[];
2017
+ plugins: readonly (infer P)[];
2018
2018
  } ? P extends {
2019
2019
  name: infer N;
2020
2020
  actions?: infer A;
@@ -3767,13 +3767,13 @@ export declare function createRime<const C extends Config>(config: BuildConfig<C
3767
3767
  $Infer: {
3768
3768
  body: ({
3769
3769
  permission: {
3770
- readonly user?: ("update" | "create" | "delete" | "list" | "get" | "set-role" | "ban" | "impersonate" | "set-password")[] | undefined;
3770
+ readonly user?: ("create" | "update" | "delete" | "list" | "get" | "set-role" | "ban" | "impersonate" | "set-password")[] | undefined;
3771
3771
  readonly session?: ("delete" | "list" | "revoke")[] | undefined;
3772
3772
  };
3773
3773
  permissions?: never | undefined;
3774
3774
  } | {
3775
3775
  permissions: {
3776
- readonly user?: ("update" | "create" | "delete" | "list" | "get" | "set-role" | "ban" | "impersonate" | "set-password")[] | undefined;
3776
+ readonly user?: ("create" | "update" | "delete" | "list" | "get" | "set-role" | "ban" | "impersonate" | "set-password")[] | undefined;
3777
3777
  readonly session?: ("delete" | "list" | "revoke")[] | undefined;
3778
3778
  };
3779
3779
  permission?: never | undefined;
@@ -4004,7 +4004,7 @@ export declare function createRime<const C extends Config>(config: BuildConfig<C
4004
4004
  isValidLocale: (locale: string) => boolean;
4005
4005
  getArea: (slug: string) => import("./config/types.js").BuiltArea;
4006
4006
  getCollection: (slug: string) => import("./config/types.js").BuiltCollection;
4007
- getBySlug: (slug: string) => import("./config/types.js").BuiltArea | import("./config/types.js").BuiltCollection;
4007
+ getBySlug: (slug: string) => import("./config/types.js").BuiltCollection | import("./config/types.js").BuiltArea;
4008
4008
  isCollection: (slug?: string) => slug is import("./types/doc.js").CollectionSlug;
4009
4009
  isArea: (slug?: string) => slug is import("./types/doc.js").AreaSlug;
4010
4010
  getDocumentPrototype(slug: import("./types/doc.js").PrototypeSlug): "area" | "collection";
@@ -7,7 +7,6 @@ import type { Component } from 'svelte';
7
7
  export declare const blocks: (name: string, blocks: BlockBuilder[]) => BlocksBuilder;
8
8
  export declare const block: (name: string) => BlockBuilder;
9
9
  export declare class BlocksBuilder extends FormFieldBuilder<BlocksField> {
10
- _metaUrl: string;
11
10
  constructor(name: string, blocks: BlockBuilder[]);
12
11
  get component(): Component<import("./component/props.js").BlocksProps, {}, "">;
13
12
  get cell(): Component<{
@@ -17,6 +16,7 @@ export declare class BlocksBuilder extends FormFieldBuilder<BlocksField> {
17
16
  }, {}, "">;
18
17
  localized(): this;
19
18
  compile(): any;
19
+ protected generateType(): string;
20
20
  }
21
21
  /**
22
22
  * Checks if a field is a blocks field.
@@ -1,4 +1,5 @@
1
1
  import { FormFieldBuilder } from '../../core/fields/builders/form-field-builder.js';
2
+ import { toPascalCase } from '../../util/string.js';
2
3
  import { number } from '../number/index.js';
3
4
  import { text } from '../text/index.js';
4
5
  import Blocks from './component/Blocks.svelte';
@@ -6,8 +7,6 @@ import Cell from './component/Cell.svelte';
6
7
  export const blocks = (name, blocks) => new BlocksBuilder(name, blocks);
7
8
  export const block = (name) => new BlockBuilder(name);
8
9
  export class BlocksBuilder extends FormFieldBuilder {
9
- //
10
- _metaUrl = import.meta.url;
11
10
  constructor(name, blocks) {
12
11
  super(name, 'blocks');
13
12
  this.field.blocks = blocks;
@@ -67,6 +66,10 @@ export class BlocksBuilder extends FormFieldBuilder {
67
66
  cell: this.cell || undefined
68
67
  };
69
68
  }
69
+ generateType() {
70
+ const blockNames = this.field.blocks.map((block) => `Block${toPascalCase(block.name)}`);
71
+ return `${this.name}: Array<${blockNames.join(' | ')}>,`;
72
+ }
70
73
  }
71
74
  /**
72
75
  * Checks if a field is a blocks field.
@@ -1,8 +1,8 @@
1
1
  import type { FormField } from '../types.js';
2
2
  import { BooleanFieldBuilder } from '../../core/fields/builders/boolean-builder.js';
3
3
  export declare class CheckboxFieldBuilder extends BooleanFieldBuilder<CheckboxField> {
4
- _metaUrl: string;
5
4
  get component(): import("svelte").Component<import("./component/props.js").CheckboxProps, {}, "">;
5
+ protected generateType(): string;
6
6
  }
7
7
  export declare const checkbox: (name: string) => CheckboxFieldBuilder;
8
8
  /****************************************************/
@@ -1,10 +1,11 @@
1
1
  import { BooleanFieldBuilder } from '../../core/fields/builders/boolean-builder.js';
2
2
  import Checkbox from './component/Checkbox.svelte';
3
3
  export class CheckboxFieldBuilder extends BooleanFieldBuilder {
4
- //
5
- _metaUrl = import.meta.url;
6
4
  get component() {
7
5
  return Checkbox;
8
6
  }
7
+ generateType() {
8
+ return `${this.name}: boolean`;
9
+ }
9
10
  }
10
11
  export const checkbox = (name) => new CheckboxFieldBuilder(name, 'checkbox');
@@ -1,10 +1,10 @@
1
1
  import type { DefaultValueFn, FormField, OptionWithIcon } from '../types.js';
2
2
  import { PickOneFieldBuilder } from '../../core/fields/builders/select-builder.js';
3
3
  export declare class ComboBoxFieldBuilder extends PickOneFieldBuilder<ComboBoxField> {
4
- _metaUrl: string;
5
4
  get component(): import("svelte").Component<import("./component/props.js").ComboBoxProps, {}, "">;
6
5
  options(...options: OptionWithIcon[] | string[]): this;
7
6
  defaultValue(value: string | DefaultValueFn<string>): this;
7
+ protected generateType(): string;
8
8
  }
9
9
  export declare const combobox: (name: string) => ComboBoxFieldBuilder;
10
10
  /****************************************************/
@@ -1,8 +1,6 @@
1
1
  import { PickOneFieldBuilder } from '../../core/fields/builders/select-builder.js';
2
2
  import Combobox from './component/ComboBox.svelte';
3
3
  export class ComboBoxFieldBuilder extends PickOneFieldBuilder {
4
- //
5
- _metaUrl = import.meta.url;
6
4
  get component() {
7
5
  return Combobox;
8
6
  }
@@ -13,5 +11,9 @@ export class ComboBoxFieldBuilder extends PickOneFieldBuilder {
13
11
  this.field.defaultValue = value;
14
12
  return this;
15
13
  }
14
+ generateType() {
15
+ const optionsJoinedType = this.get.options.map((o) => `'${o.value}'`).join(' | ');
16
+ return `${this.name}${this.get.required ? '' : '?'}: ${optionsJoinedType}`;
17
+ }
16
18
  }
17
19
  export const combobox = (name) => new ComboBoxFieldBuilder(name, 'combobox');
@@ -3,8 +3,8 @@ import { FormFieldBuilder } from '../../core/fields/builders/form-field-builder.
3
3
  import type { DefaultValueFn, FormField } from '../types.js';
4
4
  export declare const date: (name: string) => DateFieldBuilder;
5
5
  export declare class DateFieldBuilder extends FormFieldBuilder<DateField> {
6
- _metaUrl: string;
7
6
  constructor(name: string);
7
+ get dataType(): DataType;
8
8
  get component(): import("svelte").Component<{
9
9
  path: string;
10
10
  config: DateFieldBuilder;
@@ -14,8 +14,8 @@ export declare class DateFieldBuilder extends FormFieldBuilder<DateField> {
14
14
  value: Date | undefined;
15
15
  }, {}, "">;
16
16
  defaultValue(value: Date | DefaultValueFn<Date>): this;
17
- get dataType(): DataType;
18
17
  isTitle(): this;
18
+ protected generateType(): string;
19
19
  }
20
20
  /****************************************************/
21
21
  export type DateField = FormField & {