@caretcms/core 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/README.md +195 -12
  2. package/dist/index.d.ts +26 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +113 -12
  5. package/dist/index.js.map +1 -1
  6. package/dist/loader.d.ts.map +1 -1
  7. package/dist/loader.js +35 -3
  8. package/dist/loader.js.map +1 -1
  9. package/dist/markdown/paragraphs.d.ts +14 -0
  10. package/dist/markdown/paragraphs.d.ts.map +1 -0
  11. package/dist/markdown/paragraphs.js +61 -0
  12. package/dist/markdown/paragraphs.js.map +1 -0
  13. package/dist/markdown/remark.d.ts.map +1 -1
  14. package/dist/markdown/remark.js +1 -0
  15. package/dist/markdown/remark.js.map +1 -1
  16. package/dist/markdown/satteri.d.ts.map +1 -1
  17. package/dist/markdown/satteri.js +35 -9
  18. package/dist/markdown/satteri.js.map +1 -1
  19. package/dist/markdown/stamp.d.ts +0 -9
  20. package/dist/markdown/stamp.d.ts.map +1 -1
  21. package/dist/markdown/stamp.js +6 -0
  22. package/dist/markdown/stamp.js.map +1 -1
  23. package/dist/providers/deployment/github.d.ts +27 -0
  24. package/dist/providers/deployment/github.d.ts.map +1 -0
  25. package/dist/providers/deployment/github.js +180 -0
  26. package/dist/providers/deployment/github.js.map +1 -0
  27. package/dist/providers/deployment/simulated.d.ts +10 -0
  28. package/dist/providers/deployment/simulated.d.ts.map +1 -0
  29. package/dist/providers/deployment/simulated.js +29 -0
  30. package/dist/providers/deployment/simulated.js.map +1 -0
  31. package/dist/runtime/auth/session.d.ts +1 -0
  32. package/dist/runtime/auth/session.d.ts.map +1 -1
  33. package/dist/runtime/auth/session.js +16 -0
  34. package/dist/runtime/auth/session.js.map +1 -1
  35. package/dist/runtime/authorization.d.ts +11 -0
  36. package/dist/runtime/authorization.d.ts.map +1 -0
  37. package/dist/runtime/authorization.js +29 -0
  38. package/dist/runtime/authorization.js.map +1 -0
  39. package/dist/runtime/collection-policy.d.ts +11 -0
  40. package/dist/runtime/collection-policy.d.ts.map +1 -0
  41. package/dist/runtime/collection-policy.js +44 -0
  42. package/dist/runtime/collection-policy.js.map +1 -0
  43. package/dist/runtime/config.d.ts +3 -0
  44. package/dist/runtime/config.d.ts.map +1 -1
  45. package/dist/runtime/config.js +4 -1
  46. package/dist/runtime/config.js.map +1 -1
  47. package/dist/runtime/content-errors.d.ts +9 -0
  48. package/dist/runtime/content-errors.d.ts.map +1 -0
  49. package/dist/runtime/content-errors.js +17 -0
  50. package/dist/runtime/content-errors.js.map +1 -0
  51. package/dist/runtime/content.d.ts.map +1 -1
  52. package/dist/runtime/content.js +13 -4
  53. package/dist/runtime/content.js.map +1 -1
  54. package/dist/runtime/deployment-status.d.ts +14 -0
  55. package/dist/runtime/deployment-status.d.ts.map +1 -0
  56. package/dist/runtime/deployment-status.js +57 -0
  57. package/dist/runtime/deployment-status.js.map +1 -0
  58. package/dist/runtime/draft-state.d.ts +16 -0
  59. package/dist/runtime/draft-state.d.ts.map +1 -0
  60. package/dist/runtime/draft-state.js +29 -0
  61. package/dist/runtime/draft-state.js.map +1 -0
  62. package/dist/runtime/i18n.d.ts +97 -0
  63. package/dist/runtime/i18n.d.ts.map +1 -0
  64. package/dist/runtime/i18n.js +190 -0
  65. package/dist/runtime/i18n.js.map +1 -0
  66. package/dist/runtime/index.d.ts +1 -0
  67. package/dist/runtime/index.d.ts.map +1 -1
  68. package/dist/runtime/index.js +1 -0
  69. package/dist/runtime/index.js.map +1 -1
  70. package/dist/runtime/middleware.d.ts.map +1 -1
  71. package/dist/runtime/middleware.js +61 -4
  72. package/dist/runtime/middleware.js.map +1 -1
  73. package/dist/runtime/mutations/contracts.d.ts +12 -0
  74. package/dist/runtime/mutations/contracts.d.ts.map +1 -1
  75. package/dist/runtime/mutations/contracts.js +54 -4
  76. package/dist/runtime/mutations/contracts.js.map +1 -1
  77. package/dist/runtime/mutations/engine.d.ts +2 -0
  78. package/dist/runtime/mutations/engine.d.ts.map +1 -1
  79. package/dist/runtime/mutations/engine.js +220 -57
  80. package/dist/runtime/mutations/engine.js.map +1 -1
  81. package/dist/runtime/providers.d.ts +4 -1
  82. package/dist/runtime/providers.d.ts.map +1 -1
  83. package/dist/runtime/providers.js +18 -1
  84. package/dist/runtime/providers.js.map +1 -1
  85. package/dist/runtime/publish-recovery.d.ts +32 -0
  86. package/dist/runtime/publish-recovery.d.ts.map +1 -0
  87. package/dist/runtime/publish-recovery.js +98 -0
  88. package/dist/runtime/publish-recovery.js.map +1 -0
  89. package/dist/runtime/publish.d.ts +10 -4
  90. package/dist/runtime/publish.d.ts.map +1 -1
  91. package/dist/runtime/publish.js +105 -63
  92. package/dist/runtime/publish.js.map +1 -1
  93. package/dist/runtime/rebuild-webhook.d.ts +4 -0
  94. package/dist/runtime/rebuild-webhook.d.ts.map +1 -1
  95. package/dist/runtime/rebuild-webhook.js +12 -2
  96. package/dist/runtime/rebuild-webhook.js.map +1 -1
  97. package/dist/runtime/request-context.d.ts +7 -1
  98. package/dist/runtime/request-context.d.ts.map +1 -1
  99. package/dist/runtime/request-context.js +7 -1
  100. package/dist/runtime/request-context.js.map +1 -1
  101. package/dist/runtime/rewrite.d.ts.map +1 -1
  102. package/dist/runtime/rewrite.js +28 -2
  103. package/dist/runtime/rewrite.js.map +1 -1
  104. package/dist/runtime/rich-allowlist.js +1 -1
  105. package/dist/runtime/rich-allowlist.js.map +1 -1
  106. package/dist/runtime/routes/admin-entry.d.ts.map +1 -1
  107. package/dist/runtime/routes/admin-entry.js +129 -21
  108. package/dist/runtime/routes/admin-entry.js.map +1 -1
  109. package/dist/runtime/routes/admin.d.ts.map +1 -1
  110. package/dist/runtime/routes/admin.js +28 -14
  111. package/dist/runtime/routes/admin.js.map +1 -1
  112. package/dist/runtime/routes/auth-login.d.ts.map +1 -1
  113. package/dist/runtime/routes/auth-login.js +4 -0
  114. package/dist/runtime/routes/auth-login.js.map +1 -1
  115. package/dist/runtime/routes/auth-logout.d.ts.map +1 -1
  116. package/dist/runtime/routes/auth-logout.js +7 -2
  117. package/dist/runtime/routes/auth-logout.js.map +1 -1
  118. package/dist/runtime/routes/auth-session.d.ts.map +1 -1
  119. package/dist/runtime/routes/auth-session.js +10 -2
  120. package/dist/runtime/routes/auth-session.js.map +1 -1
  121. package/dist/runtime/routes/collection-list.d.ts.map +1 -1
  122. package/dist/runtime/routes/collection-list.js +213 -66
  123. package/dist/runtime/routes/collection-list.js.map +1 -1
  124. package/dist/runtime/routes/deployment.d.ts +5 -0
  125. package/dist/runtime/routes/deployment.d.ts.map +1 -0
  126. package/dist/runtime/routes/deployment.js +38 -0
  127. package/dist/runtime/routes/deployment.js.map +1 -0
  128. package/dist/runtime/routes/draft.d.ts.map +1 -1
  129. package/dist/runtime/routes/draft.js +10 -3
  130. package/dist/runtime/routes/draft.js.map +1 -1
  131. package/dist/runtime/routes/entries.d.ts.map +1 -1
  132. package/dist/runtime/routes/entries.js +87 -43
  133. package/dist/runtime/routes/entries.js.map +1 -1
  134. package/dist/runtime/routes/history.d.ts.map +1 -1
  135. package/dist/runtime/routes/history.js +40 -21
  136. package/dist/runtime/routes/history.js.map +1 -1
  137. package/dist/runtime/routes/mutate.d.ts.map +1 -1
  138. package/dist/runtime/routes/mutate.js +4 -1
  139. package/dist/runtime/routes/mutate.js.map +1 -1
  140. package/dist/runtime/routes/publish.d.ts.map +1 -1
  141. package/dist/runtime/routes/publish.js +127 -33
  142. package/dist/runtime/routes/publish.js.map +1 -1
  143. package/dist/runtime/routes/schema.d.ts.map +1 -1
  144. package/dist/runtime/routes/schema.js +11 -2
  145. package/dist/runtime/routes/schema.js.map +1 -1
  146. package/dist/runtime/routes/studio-home.d.ts.map +1 -1
  147. package/dist/runtime/routes/studio-home.js +41 -20
  148. package/dist/runtime/routes/studio-home.js.map +1 -1
  149. package/dist/runtime/routes/upload.d.ts.map +1 -1
  150. package/dist/runtime/routes/upload.js +3 -0
  151. package/dist/runtime/routes/upload.js.map +1 -1
  152. package/dist/runtime/schema-registry.d.ts +8 -1
  153. package/dist/runtime/schema-registry.d.ts.map +1 -1
  154. package/dist/runtime/schema-registry.js +49 -3
  155. package/dist/runtime/schema-registry.js.map +1 -1
  156. package/dist/runtime/storage/entry-commit.d.ts +8 -0
  157. package/dist/runtime/storage/entry-commit.d.ts.map +1 -0
  158. package/dist/runtime/storage/entry-commit.js +45 -0
  159. package/dist/runtime/storage/entry-commit.js.map +1 -0
  160. package/dist/runtime/storage/filesystem-adapter.d.ts +5 -0
  161. package/dist/runtime/storage/filesystem-adapter.d.ts.map +1 -1
  162. package/dist/runtime/storage/filesystem-adapter.js +12 -3
  163. package/dist/runtime/storage/filesystem-adapter.js.map +1 -1
  164. package/dist/runtime/storage/frontmatter-codec.d.ts +5 -23
  165. package/dist/runtime/storage/frontmatter-codec.d.ts.map +1 -1
  166. package/dist/runtime/storage/frontmatter-codec.js +156 -13
  167. package/dist/runtime/storage/frontmatter-codec.js.map +1 -1
  168. package/dist/runtime/storage/in-memory-adapter.d.ts +7 -0
  169. package/dist/runtime/storage/in-memory-adapter.d.ts.map +1 -1
  170. package/dist/runtime/storage/in-memory-adapter.js +6 -0
  171. package/dist/runtime/storage/in-memory-adapter.js.map +1 -1
  172. package/dist/runtime/storage/markdown-adapter.d.ts.map +1 -1
  173. package/dist/runtime/storage/markdown-adapter.js +18 -20
  174. package/dist/runtime/storage/markdown-adapter.js.map +1 -1
  175. package/dist/runtime/storage/session-overlay-adapter.d.ts +12 -4
  176. package/dist/runtime/storage/session-overlay-adapter.d.ts.map +1 -1
  177. package/dist/runtime/storage/session-overlay-adapter.js +100 -13
  178. package/dist/runtime/storage/session-overlay-adapter.js.map +1 -1
  179. package/dist/runtime/storage/sidecar-meta-store.d.ts +5 -0
  180. package/dist/runtime/storage/sidecar-meta-store.d.ts.map +1 -1
  181. package/dist/runtime/storage/sidecar-meta-store.js +48 -5
  182. package/dist/runtime/storage/sidecar-meta-store.js.map +1 -1
  183. package/dist/runtime/themes/preset-tokens.js +4 -4
  184. package/dist/runtime/themes/preset-tokens.js.map +1 -1
  185. package/dist/runtime/utils.d.ts.map +1 -1
  186. package/dist/runtime/utils.js +3 -4
  187. package/dist/runtime/utils.js.map +1 -1
  188. package/dist/runtime/views/studio-layout.d.ts +3 -0
  189. package/dist/runtime/views/studio-layout.d.ts.map +1 -1
  190. package/dist/runtime/views/studio-layout.js +36 -13
  191. package/dist/runtime/views/studio-layout.js.map +1 -1
  192. package/dist/schema-utils.d.ts +7 -0
  193. package/dist/schema-utils.d.ts.map +1 -1
  194. package/dist/schema-utils.js +143 -0
  195. package/dist/schema-utils.js.map +1 -1
  196. package/dist/types.d.ts +165 -1
  197. package/dist/types.d.ts.map +1 -1
  198. package/package.json +12 -3
  199. package/static/cms/admin-entry.css +144 -13
  200. package/static/cms/admin-entry.js +539 -586
  201. package/static/cms/dev-toolbar/app.js +78 -19
  202. package/static/cms/editor/config.js +35 -15
  203. package/static/cms/editor/content-map.css +8 -1
  204. package/static/cms/editor/content-map.js +62 -23
  205. package/static/cms/editor/deployment-status.js +66 -0
  206. package/static/cms/editor/draft-client.js +87 -0
  207. package/static/cms/editor/guards.js +20 -0
  208. package/static/cms/editor/helpers.js +30 -1
  209. package/static/cms/editor/highlight.js +1 -0
  210. package/static/cms/editor/image-edit.js +44 -1
  211. package/static/cms/editor/image-utils.js +23 -7
  212. package/static/cms/editor/link-follow.js +122 -41
  213. package/static/cms/editor/link-ui.css +10 -1
  214. package/static/cms/editor/linkify.js +2 -0
  215. package/static/cms/editor/md-block-edit.js +140 -37
  216. package/static/cms/editor/md-paragraphs.js +98 -0
  217. package/static/cms/editor/md-serialize.js +1 -1
  218. package/static/cms/editor/panel.js +53 -7
  219. package/static/cms/editor/preview-mode.js +44 -0
  220. package/static/cms/editor/publish-result.js +100 -0
  221. package/static/cms/editor/rich-toolbar.js +58 -15
  222. package/static/cms/editor/sanitize.js +6 -2
  223. package/static/cms/editor/save-queue.js +75 -17
  224. package/static/cms/editor/section-controls/activation.js +3 -0
  225. package/static/cms/editor/section-controls/api.js +25 -7
  226. package/static/cms/editor/section-controls/index.js +60 -8
  227. package/static/cms/editor/section-controls/model.js +39 -4
  228. package/static/cms/editor/section-controls/mutations.js +15 -0
  229. package/static/cms/editor/section-controls/page-context.js +9 -0
  230. package/static/cms/editor/section-controls/pickers.js +53 -2
  231. package/static/cms/editor/section-controls/reorder.js +23 -0
  232. package/static/cms/editor/section-controls/selection.js +6 -0
  233. package/static/cms/editor/section-controls/spacing-drag.js +16 -0
  234. package/static/cms/editor/section-controls/ui-elements.js +7 -0
  235. package/static/cms/editor/section-controls/utils.js +7 -0
  236. package/static/cms/editor/section-controls.css +18 -3
  237. package/static/cms/editor/security.js +13 -2
  238. package/static/cms/editor/stega-hydrate.js +17 -4
  239. package/static/cms/editor/sync.js +475 -56
  240. package/static/cms/editor/text-edit.js +37 -3
  241. package/static/cms/editor/text-link-interactions.js +59 -17
  242. package/static/cms/editor/toast.js +23 -9
  243. package/static/cms/editor/tokens-and-text.css +9 -0
  244. package/static/cms/editor/toolbar.css +5 -0
  245. package/static/cms/editor/toolbar.js +91 -101
  246. package/static/cms/editor.css +1 -1
  247. package/static/cms/editor.js +1 -0
  248. package/static/cms/studio/entry-loader.js +102 -0
  249. package/static/cms/studio/field-model.js +110 -0
  250. package/static/cms/studio/fields.js +319 -0
  251. package/static/cms/studio/history-client.js +74 -0
  252. package/static/cms/studio/mutation-client.js +74 -0
  253. package/static/cms/studio/sync-client.js +107 -0
  254. package/static/cms/studio/upload-client.js +109 -0
  255. package/static/cms/studio-tokens.css +4 -4
  256. package/static/cms/studio.css +24 -0
@@ -2,6 +2,149 @@
2
2
  * Shared schema utility functions used by both the schema route and the
3
3
  * virtual schemas module to build default templates from JSON Schema.
4
4
  */
5
+ function valueType(value) {
6
+ if (value === null)
7
+ return "null";
8
+ if (Array.isArray(value))
9
+ return "array";
10
+ if (typeof value === "number" && Number.isInteger(value))
11
+ return "integer";
12
+ return typeof value;
13
+ }
14
+ function resolveLocalRef(root, ref) {
15
+ if (!ref.startsWith("#/"))
16
+ return null;
17
+ let current = root;
18
+ for (const raw of ref.slice(2).split("/")) {
19
+ const key = raw.replace(/~1/g, "/").replace(/~0/g, "~");
20
+ if (!current || typeof current !== "object" || Array.isArray(current))
21
+ return null;
22
+ current = current[key];
23
+ }
24
+ return current && typeof current === "object" && !Array.isArray(current)
25
+ ? current
26
+ : null;
27
+ }
28
+ /** Dependency-free validator for the JSON Schema subset Caret's Studio renders. */
29
+ export function validateJsonSchema(value, schema) {
30
+ const issues = [];
31
+ const visit = (current, node, path) => {
32
+ const ref = typeof node.$ref === "string" ? resolveLocalRef(schema, node.$ref) : null;
33
+ if (ref)
34
+ node = ref;
35
+ const allOf = Array.isArray(node.allOf) ? node.allOf : [];
36
+ for (const child of allOf) {
37
+ if (child && typeof child === "object" && !Array.isArray(child)) {
38
+ visit(current, child, path);
39
+ }
40
+ }
41
+ const alternatives = Array.isArray(node.anyOf)
42
+ ? node.anyOf
43
+ : Array.isArray(node.oneOf) ? node.oneOf : null;
44
+ if (alternatives) {
45
+ const valid = alternatives.some((candidate) => candidate && typeof candidate === "object" && !Array.isArray(candidate)
46
+ && validateAgainst(current, candidate, path).length === 0);
47
+ if (!valid)
48
+ issues.push({ path, code: "invalid_union", message: "Value does not match an allowed schema" });
49
+ return;
50
+ }
51
+ issues.push(...validateAgainst(current, node, path));
52
+ };
53
+ const validateAgainst = (current, node, path) => {
54
+ const local = [];
55
+ const allowedTypes = Array.isArray(node.type)
56
+ ? node.type.filter((type) => typeof type === "string")
57
+ : typeof node.type === "string" ? [node.type] : [];
58
+ const actual = valueType(current);
59
+ const typeMatches = allowedTypes.length === 0
60
+ || allowedTypes.includes(actual)
61
+ || (actual === "integer" && allowedTypes.includes("number"));
62
+ if (!typeMatches) {
63
+ return [{ path, code: "invalid_type", message: `Expected ${allowedTypes.join(" or ")}, received ${actual}` }];
64
+ }
65
+ if (Array.isArray(node.enum) && !node.enum.some((candidate) => Object.is(candidate, current))) {
66
+ local.push({ path, code: "invalid_enum_value", message: "Value is not one of the allowed options" });
67
+ }
68
+ if (Object.prototype.hasOwnProperty.call(node, "const") && !Object.is(node.const, current)) {
69
+ local.push({ path, code: "invalid_literal", message: "Value does not match the required value" });
70
+ }
71
+ if (typeof current === "string") {
72
+ if (typeof node.minLength === "number" && current.length < node.minLength) {
73
+ local.push({ path, code: "too_small", message: `Must contain at least ${node.minLength} characters` });
74
+ }
75
+ if (typeof node.maxLength === "number" && current.length > node.maxLength) {
76
+ local.push({ path, code: "too_big", message: `Must contain at most ${node.maxLength} characters` });
77
+ }
78
+ if (typeof node.pattern === "string") {
79
+ try {
80
+ if (!new RegExp(node.pattern).test(current)) {
81
+ local.push({ path, code: "invalid_string", message: "Value has an invalid format" });
82
+ }
83
+ }
84
+ catch { /* an invalid schema pattern is ignored rather than blocking writes */ }
85
+ }
86
+ }
87
+ if (typeof current === "number") {
88
+ if (node.type === "integer" && !Number.isInteger(current)) {
89
+ local.push({ path, code: "invalid_type", message: "Expected an integer" });
90
+ }
91
+ if (typeof node.minimum === "number" && current < node.minimum) {
92
+ local.push({ path, code: "too_small", message: `Must be at least ${node.minimum}` });
93
+ }
94
+ if (typeof node.maximum === "number" && current > node.maximum) {
95
+ local.push({ path, code: "too_big", message: `Must be at most ${node.maximum}` });
96
+ }
97
+ if (typeof node.exclusiveMinimum === "number" && current <= node.exclusiveMinimum) {
98
+ local.push({ path, code: "too_small", message: `Must be greater than ${node.exclusiveMinimum}` });
99
+ }
100
+ if (typeof node.exclusiveMaximum === "number" && current >= node.exclusiveMaximum) {
101
+ local.push({ path, code: "too_big", message: `Must be less than ${node.exclusiveMaximum}` });
102
+ }
103
+ }
104
+ if (Array.isArray(current)) {
105
+ if (typeof node.minItems === "number" && current.length < node.minItems) {
106
+ local.push({ path, code: "too_small", message: `Must contain at least ${node.minItems} items` });
107
+ }
108
+ if (typeof node.maxItems === "number" && current.length > node.maxItems) {
109
+ local.push({ path, code: "too_big", message: `Must contain at most ${node.maxItems} items` });
110
+ }
111
+ if (node.items && typeof node.items === "object" && !Array.isArray(node.items)) {
112
+ current.forEach((item, index) => visit(item, node.items, path ? `${path}.${index}` : String(index)));
113
+ }
114
+ }
115
+ if (current && typeof current === "object" && !Array.isArray(current)) {
116
+ const record = current;
117
+ for (const required of node.required ?? []) {
118
+ if (!Object.prototype.hasOwnProperty.call(record, required)) {
119
+ local.push({
120
+ path: path ? `${path}.${required}` : required,
121
+ code: "required",
122
+ message: "Required field is missing",
123
+ });
124
+ }
125
+ }
126
+ for (const [key, child] of Object.entries(node.properties ?? {})) {
127
+ if (Object.prototype.hasOwnProperty.call(record, key)) {
128
+ visit(record[key], child, path ? `${path}.${key}` : key);
129
+ }
130
+ }
131
+ if (node.additionalProperties === false) {
132
+ for (const key of Object.keys(record)) {
133
+ if (!Object.prototype.hasOwnProperty.call(node.properties ?? {}, key)) {
134
+ local.push({
135
+ path: path ? `${path}.${key}` : key,
136
+ code: "unrecognized_key",
137
+ message: "Unknown field",
138
+ });
139
+ }
140
+ }
141
+ }
142
+ }
143
+ return local;
144
+ };
145
+ visit(value, schema, "");
146
+ return issues;
147
+ }
5
148
  export function inferJsonSchema(value) {
6
149
  if (value === null || value === undefined) {
7
150
  return { type: "string", default: "" };
@@ -1 +1 @@
1
- {"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../src/schema-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-utils.js","sourceRoot":"","sources":["../src/schema-utils.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -3,6 +3,8 @@ export type EntryData = {
3
3
  data: Record<string, unknown>;
4
4
  };
5
5
  export type HistoryEntry = {
6
+ /** Idempotency key for a recoverable publication. */
7
+ operationId?: string;
6
8
  ts: number;
7
9
  data: unknown;
8
10
  action: string;
@@ -12,9 +14,11 @@ export type HistoryEntry = {
12
14
  * only covers frontmatter for source-file-backed adapters).
13
15
  */
14
16
  bodySource?: string;
17
+ /** Named editor/session responsible for the mutation, when available. */
18
+ editor?: EditorIdentity;
15
19
  };
16
20
  export type CaretMode = "embedded" | "cloud";
17
- export type CaretProviderKind = "storage" | "uploads";
21
+ export type CaretProviderKind = "storage" | "uploads" | "identity" | "deployment";
18
22
  export type RuntimeProviderReference<TKind extends CaretProviderKind = CaretProviderKind> = {
19
23
  kind: TKind;
20
24
  entrypoint: string;
@@ -23,6 +27,49 @@ export type RuntimeProviderReference<TKind extends CaretProviderKind = CaretProv
23
27
  };
24
28
  export type CaretStorageProvider = RuntimeProviderReference<"storage">;
25
29
  export type CaretUploadProvider = RuntimeProviderReference<"uploads">;
30
+ export type CaretIdentityProvider = RuntimeProviderReference<"identity">;
31
+ export type CaretDeploymentProvider = RuntimeProviderReference<"deployment">;
32
+ export type EditorIdentity = {
33
+ /** Stable, path-safe id matching /^[A-Za-z0-9_-]{1,64}$/. */
34
+ id: string;
35
+ name?: string;
36
+ email?: string;
37
+ roles?: string[];
38
+ };
39
+ /** Write permissions. Reading content is not restricted by this interface. */
40
+ export type AuthorizationAction = "edit" | "publish" | "delete" | "manageCollections" | "upload";
41
+ export interface AuthorizationRequest {
42
+ identity: EditorIdentity;
43
+ request: Request;
44
+ action: AuthorizationAction;
45
+ /** Omitted for global actions (uploads, or an empty publish request). */
46
+ collection?: string;
47
+ /** Omitted for collection-wide actions. */
48
+ id?: string;
49
+ }
50
+ export interface AuthorizationPolicy {
51
+ /** Only literal true grants access. Throws and other values deny access. */
52
+ authorize(input: AuthorizationRequest): boolean | Promise<boolean>;
53
+ }
54
+ /**
55
+ * Optional authoritative authentication adapter. Returning an identity grants
56
+ * editor access; returning null denies it. When configured, password mode is
57
+ * disabled rather than used as a fallback.
58
+ */
59
+ export interface IdentityAdapter {
60
+ /** Optional write policy. Without one authenticated editors retain full access.
61
+ * With one, content saves use private drafts even in server delivery. */
62
+ authorize?: AuthorizationPolicy["authorize"];
63
+ authenticate(request: Request): Promise<EditorIdentity | null>;
64
+ loginUrl(input: {
65
+ request: Request;
66
+ redirectTo: string;
67
+ }): string | Promise<string>;
68
+ logoutUrl?(input: {
69
+ request: Request;
70
+ redirectTo: string;
71
+ }): string | Promise<string>;
72
+ }
26
73
  export type CollectionSchema = {
27
74
  type: "object";
28
75
  properties: Record<string, unknown>;
@@ -30,6 +77,34 @@ export type CollectionSchema = {
30
77
  title?: string;
31
78
  description?: string;
32
79
  };
80
+ /** Studio presentation and mutation capabilities for a collection. */
81
+ export type CollectionStudioConfig = {
82
+ label?: string;
83
+ description?: string;
84
+ icon?: string;
85
+ /** Lower values appear first on the Studio home screen. */
86
+ order?: number;
87
+ creatable?: boolean;
88
+ orderable?: boolean;
89
+ deletable?: boolean;
90
+ /** Fixed entry id for a singleton collection. */
91
+ singletonId?: string;
92
+ /**
93
+ * Same-origin preview path for entries in this collection. A string may use
94
+ * `{id}` (for example `/journal/{id}`); an id-to-path map covers fixed pages
95
+ * such as `{ home: "/", about: "/about" }`.
96
+ */
97
+ previewPath?: string | Record<string, string>;
98
+ /**
99
+ * Make publication a managed collection capability. Public Caret reads only
100
+ * return entries whose configured field is exactly `true`; authenticated
101
+ * editor reads continue to include drafts. The field defaults to `published`
102
+ * and must be declared as a top-level boolean in this collection's schema.
103
+ */
104
+ publication?: {
105
+ field?: string;
106
+ };
107
+ };
33
108
  export type CollectionMetadata = {
34
109
  id: string;
35
110
  label: string;
@@ -37,11 +112,93 @@ export type CollectionMetadata = {
37
112
  icon?: string;
38
113
  creatable?: boolean;
39
114
  orderable?: boolean;
115
+ deletable?: boolean;
116
+ singletonId?: string;
117
+ previewPath?: string | Record<string, string>;
118
+ publication?: {
119
+ field?: string;
120
+ };
121
+ order?: number;
40
122
  schema: CollectionSchema;
41
123
  created_at: number;
42
124
  updated_at: number;
43
125
  };
126
+ export interface RebuildReceipt {
127
+ published: Array<{
128
+ collection: string;
129
+ id: string;
130
+ revision: number;
131
+ deleted: boolean;
132
+ }>;
133
+ commit: string | null;
134
+ }
135
+ /** The exact content transition associated with one accepted deployment request. */
136
+ export interface DeploymentTarget extends RebuildReceipt {
137
+ /** Correlation id also sent to the rebuild webhook. */
138
+ id: string;
139
+ requestedAt: number;
140
+ }
141
+ export type DeploymentState = "deploying" | "live" | "failed";
142
+ /** Provider evidence for the build associated with a deployment target. */
143
+ export interface DeploymentStatusEvidence {
144
+ state: DeploymentState;
145
+ /** Stable provider build/deployment identity, once the provider can resolve it. */
146
+ buildId: string | null;
147
+ /** Optional provider console or public deployment URL. */
148
+ buildUrl?: string;
149
+ /** Short provider-supplied detail suitable for an authenticated editor. */
150
+ message?: string;
151
+ /**
152
+ * Content proven to be included in the live build. Required when state is
153
+ * `live`; core checks it covers every revision in the target before showing
154
+ * the deployment as live.
155
+ */
156
+ deployed?: RebuildReceipt;
157
+ }
158
+ export interface DeploymentStatusProvider {
159
+ getDeploymentStatus(input: {
160
+ target: DeploymentTarget;
161
+ request: Request;
162
+ }): Promise<DeploymentStatusEvidence>;
163
+ }
164
+ /** One validated entry transition submitted to an adapter atomically. */
165
+ export interface EntryCommit {
166
+ collection: string;
167
+ id: string;
168
+ /** Revision observed while the mutation was prepared. */
169
+ expectedRevision: number;
170
+ /** Whether an entry was visible while the mutation was prepared. */
171
+ expectedExists: boolean;
172
+ /** Replacement data, or null to delete the entry. */
173
+ data: Record<string, unknown> | null;
174
+ /** Optional snapshot appended only when the data transition commits. */
175
+ history?: HistoryEntry;
176
+ /** Lets an overlay preserve body-only draft merge semantics. */
177
+ writeMode?: "entry" | "body";
178
+ }
179
+ export type EntryCommitResult = {
180
+ ok: true;
181
+ revisions: Array<{
182
+ collection: string;
183
+ id: string;
184
+ revision: number;
185
+ }>;
186
+ } | {
187
+ ok: false;
188
+ conflict: {
189
+ collection: string;
190
+ id: string;
191
+ currentRevision: number;
192
+ exists: boolean;
193
+ };
194
+ };
44
195
  export interface StorageAdapter {
196
+ /** Optional persistent deploy retry receipt, scoped to this editor overlay. */
197
+ getRebuildReceipt?(): Promise<RebuildReceipt | null>;
198
+ setRebuildReceipt?(receipt: RebuildReceipt | null): Promise<void>;
199
+ /** Latest accepted deployment request, scoped to this editor overlay. */
200
+ getDeploymentTarget?(): Promise<DeploymentTarget | null>;
201
+ setDeploymentTarget?(target: DeploymentTarget | null): Promise<void>;
45
202
  discoverCollections(): Promise<string[]>;
46
203
  isKnownCollection(collection: string): Promise<boolean>;
47
204
  getEntry(collection: string, id: string): Promise<EntryData | null>;
@@ -53,6 +210,13 @@ export interface StorageAdapter {
53
210
  bumpRevision(collection: string, id: string): Promise<number>;
54
211
  getHistory(collection: string, id: string): Promise<HistoryEntry[]>;
55
212
  appendHistory(collection: string, id: string, entry: HistoryEntry): Promise<void>;
213
+ /**
214
+ * Optional compare-and-commit primitive for distributed adapters. The adapter
215
+ * must compare every revision/existence precondition before changing anything,
216
+ * then atomically apply every entry, revision, history, and index transition.
217
+ * A conflict leaves the entire batch unchanged.
218
+ */
219
+ commitEntries?(changes: readonly EntryCommit[]): Promise<EntryCommitResult>;
56
220
  createCollection(metadata: CollectionMetadata): Promise<void>;
57
221
  deleteCollection(collection: string): Promise<void>;
58
222
  getCollectionMetadata(collection: string): Promise<CollectionMetadata | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caretcms/core",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "Platform-neutral core for CaretCMS: attribute-first inline editing, mutation engine, studio admin, StorageAdapter interface.",
6
6
  "license": "MIT",
@@ -49,6 +49,14 @@
49
49
  "types": "./dist/providers/uploads/local.d.ts",
50
50
  "import": "./dist/providers/uploads/local.js"
51
51
  },
52
+ "./providers/deployment/simulated": {
53
+ "types": "./dist/providers/deployment/simulated.d.ts",
54
+ "import": "./dist/providers/deployment/simulated.js"
55
+ },
56
+ "./providers/deployment/github": {
57
+ "types": "./dist/providers/deployment/github.d.ts",
58
+ "import": "./dist/providers/deployment/github.js"
59
+ },
52
60
  "./contracts": {
53
61
  "types": "./dist/contracts.d.ts",
54
62
  "import": "./dist/contracts.js"
@@ -78,9 +86,10 @@
78
86
  ],
79
87
  "scripts": {
80
88
  "build": "tsc -p tsconfig.build.json",
81
- "typecheck": "tsc -p tsconfig.json",
89
+ "typecheck": "tsc -p tsconfig.json && npm run typecheck:browser",
82
90
  "clean": "rm -rf dist",
83
- "prepublishOnly": "node scripts/check-version.mjs && npm run clean && npm run build"
91
+ "prepublishOnly": "node scripts/check-version.mjs && npm run clean && npm run build",
92
+ "typecheck:browser": "tsc -p tsconfig.browser.json"
84
93
  },
85
94
  "publishConfig": {
86
95
  "access": "public"
@@ -15,6 +15,32 @@
15
15
  .caret-field-group .studio-label { margin-bottom: 0.5rem; }
16
16
  .caret-field-inline .studio-label { margin-bottom: 0; }
17
17
 
18
+ .caret-field-with-help {
19
+ display: grid;
20
+ grid-template-columns: minmax(0, 1fr) auto;
21
+ gap: 0.25rem 1rem;
22
+ }
23
+ .caret-field-with-help .caret-field-help {
24
+ grid-column: 1 / -1;
25
+ }
26
+ .caret-field-help,
27
+ .caret-image-help {
28
+ margin: 0.5rem 0 0;
29
+ color: var(--studio-text-dim);
30
+ font-size: 0.7rem;
31
+ line-height: 1.5;
32
+ }
33
+ .caret-image-help.is-error { color: var(--studio-red); }
34
+
35
+ .studio-btn-danger-confirm,
36
+ .studio-btn-danger-confirm:hover {
37
+ background: #991b1b;
38
+ background: color-mix(in srgb, var(--studio-red) 35%, #000);
39
+ border-color: #991b1b;
40
+ border-color: color-mix(in srgb, var(--studio-red) 35%, #000);
41
+ color: #fff;
42
+ }
43
+
18
44
  .caret-nested {
19
45
  padding-left: 1rem;
20
46
  border-left: 1px solid var(--studio-border);
@@ -88,11 +114,16 @@
88
114
  /* Single image */
89
115
  .caret-single-image-preview {
90
116
  position: relative;
91
- width: 128px;
92
- height: 128px;
117
+ width: min(100%, 320px);
118
+ aspect-ratio: 4 / 3;
93
119
  margin-bottom: 0.75rem;
94
120
  border: 1px solid var(--studio-border);
121
+ border-radius: var(--radius-theme-sm);
122
+ padding: 0;
95
123
  overflow: hidden;
124
+ display: block;
125
+ cursor: pointer;
126
+ background: var(--studio-surface);
96
127
  }
97
128
  .caret-single-image-preview img {
98
129
  width: 100%;
@@ -100,6 +131,41 @@
100
131
  object-fit: cover;
101
132
  display: block;
102
133
  }
134
+ .caret-single-image-overlay {
135
+ position: absolute;
136
+ inset: auto 0 0;
137
+ padding: 0.65rem;
138
+ color: white;
139
+ background: linear-gradient(transparent, rgba(0, 0, 0, 0.78));
140
+ font-size: 0.7rem;
141
+ font-weight: 600;
142
+ letter-spacing: 0.04em;
143
+ opacity: 0;
144
+ transform: translateY(0.25rem);
145
+ transition: opacity 0.15s, transform 0.15s;
146
+ }
147
+ .caret-single-image-preview:hover .caret-single-image-overlay,
148
+ .caret-single-image-preview:focus-visible .caret-single-image-overlay {
149
+ opacity: 1;
150
+ transform: translateY(0);
151
+ }
152
+ .caret-single-image-empty {
153
+ width: min(100%, 320px);
154
+ aspect-ratio: 4 / 3;
155
+ margin-bottom: 0.75rem;
156
+ border: 2px dashed var(--studio-border-hover);
157
+ border-radius: var(--radius-theme-sm);
158
+ background: var(--studio-surface);
159
+ color: var(--studio-text-muted);
160
+ cursor: pointer;
161
+ transition: border-color 0.15s, color 0.15s, background 0.15s;
162
+ }
163
+ .caret-single-image-empty:hover,
164
+ .caret-single-image-empty:focus-visible {
165
+ border-color: var(--studio-accent);
166
+ color: var(--studio-accent);
167
+ background: var(--studio-accent-soft);
168
+ }
103
169
  .caret-single-image-row {
104
170
  display: flex;
105
171
  align-items: center;
@@ -126,14 +192,48 @@
126
192
  }
127
193
  .caret-object-array-item {
128
194
  position: relative;
129
- padding: 0.75rem;
195
+ padding: 1rem;
130
196
  border: 1px solid var(--studio-border);
197
+ border-radius: var(--radius-theme-sm);
131
198
  background: rgba(255, 255, 255, 0.02);
132
199
  }
200
+ .caret-object-array-item.caret-object-array-dragging {
201
+ opacity: 0.5;
202
+ }
203
+ .caret-object-array-item.caret-object-array-drag-over {
204
+ border-color: var(--studio-accent);
205
+ box-shadow: 0 0 0 2px var(--studio-accent-soft);
206
+ }
207
+ .caret-object-array-header {
208
+ display: flex;
209
+ align-items: center;
210
+ justify-content: space-between;
211
+ gap: 0.75rem;
212
+ margin-bottom: 0.25rem;
213
+ }
214
+ .caret-object-array-actions {
215
+ display: flex;
216
+ align-items: center;
217
+ gap: 0.25rem;
218
+ }
219
+ .caret-object-array-drag {
220
+ flex: 0 0 auto;
221
+ width: 26px;
222
+ height: 26px;
223
+ padding: 0;
224
+ border: 0;
225
+ background: transparent;
226
+ color: var(--studio-text-dim);
227
+ cursor: grab;
228
+ font-size: 18px;
229
+ line-height: 1;
230
+ }
231
+ .caret-object-array-drag:active { cursor: grabbing; }
232
+ .caret-object-array-drag:focus-visible {
233
+ outline: 2px solid var(--studio-accent);
234
+ outline-offset: 2px;
235
+ }
133
236
  .caret-object-array-remove {
134
- position: absolute;
135
- top: 6px;
136
- right: 6px;
137
237
  width: 22px;
138
238
  height: 22px;
139
239
  border: none;
@@ -142,20 +242,44 @@
142
242
  cursor: pointer;
143
243
  font-size: 16px;
144
244
  line-height: 1;
145
- opacity: 0;
146
- transition: opacity 0.15s;
245
+ transition: background 0.15s;
147
246
  }
148
- .caret-object-array-item:hover .caret-object-array-remove { opacity: 1; }
247
+ .caret-object-array-remove:hover { background: rgba(239, 68, 68, 0.12); }
248
+ .caret-object-array-move {
249
+ width: 26px;
250
+ height: 26px;
251
+ padding: 0;
252
+ border: 1px solid var(--studio-border);
253
+ border-radius: var(--radius-theme-xs);
254
+ background: transparent;
255
+ color: var(--studio-text-muted);
256
+ cursor: pointer;
257
+ }
258
+ .caret-object-array-move:hover:not(:disabled) {
259
+ border-color: var(--studio-accent);
260
+ color: var(--studio-accent);
261
+ }
262
+ .caret-object-array-move:disabled { opacity: 0.3; cursor: default; }
149
263
  .caret-object-array-index {
150
264
  display: block;
151
- font-size: 9px;
152
- color: var(--studio-text-dim);
153
- margin-bottom: 0.5rem;
265
+ flex: 1 1 auto;
266
+ min-width: 0;
267
+ overflow: hidden;
268
+ text-overflow: ellipsis;
269
+ white-space: nowrap;
270
+ font-size: 0.75rem;
271
+ font-weight: 600;
272
+ color: var(--studio-text-muted);
154
273
  }
155
274
  .caret-object-array-fields {
156
275
  display: flex;
157
276
  flex-direction: column;
158
- gap: 0.5rem;
277
+ }
278
+ .caret-object-array-fields > .caret-field-group {
279
+ padding: 0.75rem 0;
280
+ }
281
+ .caret-object-array-fields > .caret-field-group:last-child {
282
+ border-bottom: 0;
159
283
  }
160
284
  .caret-object-array-row {
161
285
  display: flex;
@@ -205,3 +329,10 @@
205
329
  .caret-history-action[data-action="put"] { background: rgba(59,130,246,0.15); color: var(--studio-blue); }
206
330
  .caret-history-action[data-action="delete"] { background: rgba(239,68,68,0.15); color: var(--studio-red); }
207
331
  .caret-history-action[data-action="restore"] { background: rgba(59,130,246,0.15); color: var(--studio-accent); }
332
+
333
+ /* Paired live-page/Studio selection. This is deliberately blue and temporary;
334
+ green remains reserved for confirmed save feedback. */
335
+ .caret-field-group.caret-field-selected {
336
+ background: color-mix(in srgb, var(--studio-accent) 8%, transparent);
337
+ box-shadow: inset 3px 0 0 var(--studio-accent);
338
+ }