@aphexcms/cms-core 5.0.5 → 5.1.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 (51) hide show
  1. package/dist/components/AdminApp.svelte +3 -9
  2. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  3. package/dist/components/admin/DocumentEditor.svelte +7 -3
  4. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  5. package/dist/components/admin/ObjectModal.svelte +1 -1
  6. package/dist/components/admin/fields/ArrayField.svelte +23 -14
  7. package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
  8. package/dist/components/admin/fields/FileField.svelte +15 -4
  9. package/dist/components/admin/fields/FileField.svelte.d.ts.map +1 -1
  10. package/dist/components/admin/fields/ImageField.svelte +19 -4
  11. package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -1
  12. package/dist/components/admin/fields/ReferenceField.svelte +26 -9
  13. package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
  14. package/dist/hooks.d.ts +11 -0
  15. package/dist/hooks.d.ts.map +1 -1
  16. package/dist/hooks.js +39 -22
  17. package/dist/lib/hooks.d.ts +11 -0
  18. package/dist/lib/hooks.d.ts.map +1 -1
  19. package/dist/lib/hooks.js +39 -22
  20. package/dist/lib/hooks.js.map +1 -1
  21. package/dist/lib/schema-utils/validator.d.ts.map +1 -1
  22. package/dist/lib/schema-utils/validator.js +10 -7
  23. package/dist/lib/schema-utils/validator.js.map +1 -1
  24. package/dist/lib/server/index.d.ts +1 -1
  25. package/dist/lib/server/index.d.ts.map +1 -1
  26. package/dist/lib/server/index.js +1 -1
  27. package/dist/lib/server/index.js.map +1 -1
  28. package/dist/lib/types/schemas.d.ts +2 -0
  29. package/dist/lib/types/schemas.d.ts.map +1 -1
  30. package/dist/lib/utils/preview.d.ts +20 -0
  31. package/dist/lib/utils/preview.d.ts.map +1 -0
  32. package/dist/lib/utils/preview.js +68 -0
  33. package/dist/lib/utils/preview.js.map +1 -0
  34. package/dist/lib/vite/index.d.ts +86 -0
  35. package/dist/lib/vite/index.d.ts.map +1 -0
  36. package/dist/lib/vite/index.js +270 -0
  37. package/dist/lib/vite/index.js.map +1 -0
  38. package/dist/schema-utils/validator.d.ts.map +1 -1
  39. package/dist/schema-utils/validator.js +10 -7
  40. package/dist/server/index.d.ts +1 -1
  41. package/dist/server/index.d.ts.map +1 -1
  42. package/dist/server/index.js +1 -1
  43. package/dist/types/schemas.d.ts +2 -0
  44. package/dist/types/schemas.d.ts.map +1 -1
  45. package/dist/utils/preview.d.ts +20 -0
  46. package/dist/utils/preview.d.ts.map +1 -0
  47. package/dist/utils/preview.js +67 -0
  48. package/dist/vite/index.d.ts +86 -0
  49. package/dist/vite/index.d.ts.map +1 -0
  50. package/dist/vite/index.js +269 -0
  51. package/package.json +5 -1
@@ -0,0 +1,270 @@
1
+ import { createRequire } from 'node:module';
2
+ const require = createRequire(import.meta.url);
3
+ /**
4
+ * Watches the CMS config and schema files in dev. When any of them change,
5
+ * the plugin re-loads `aphex.config.ts` via Vite's SSR loader (so the fresh
6
+ * module re-runs the schema imports) and hands the new config to cms-core's
7
+ * `__notifyAphexConfigChanged()` setter — the engine then re-initializes on
8
+ * the next request without restarting the Vite dev server.
9
+ *
10
+ * Why this works without races:
11
+ * - `server.ssrLoadModule` is Vite's official re-eval path, no cache-bust hacks
12
+ * - The plugin and the running SvelteKit hook share the same cms-core module
13
+ * instance through Vite's module graph, so the setter mutates the same
14
+ * `activeConfig` the hook reads on each request
15
+ * - A single mutation point (`__notifyAphexConfigChanged`) replaces the old
16
+ * global dirty-flag protocol; no two-step set-then-read race window
17
+ *
18
+ * Falls back to `server.restart()` automatically if the swap throws (e.g.
19
+ * the user introduced a syntax error in their schema). `mode: 'restart'`
20
+ * forces the slower-but-most-correct path on every change.
21
+ */
22
+ export function aphexHMR(options = {}) {
23
+ const schemaDir = options.schemaDir ?? '/schemaTypes/';
24
+ const configFile = options.configFile ?? 'aphex.config.ts';
25
+ const debounceMs = options.debounceMs ?? 150;
26
+ const mode = options.mode ?? 'swap';
27
+ return {
28
+ name: 'aphex:hmr',
29
+ configureServer(server) {
30
+ const { watcher, ws } = server;
31
+ function isReloadTarget(file) {
32
+ const normalized = file.replace(/\\/g, '/');
33
+ return ((normalized.includes(schemaDir) && normalized.endsWith('.ts')) ||
34
+ normalized.endsWith(`/${configFile}`));
35
+ }
36
+ async function swapSchemas(file) {
37
+ const start = Date.now();
38
+ const configPath = `${server.config.root}/${configFile}`;
39
+ // Invalidate the changed file + the config + the schemaTypes barrel
40
+ // so ssrLoadModule re-evaluates with the new disk contents.
41
+ for (const path of [file, configPath]) {
42
+ const mods = server.moduleGraph.getModulesByFile(path);
43
+ mods?.forEach((mod) => server.moduleGraph.invalidateModule(mod));
44
+ }
45
+ const configMod = await server.ssrLoadModule(configPath);
46
+ const freshConfig = configMod.default;
47
+ if (!freshConfig) {
48
+ throw new Error(`${configFile} did not export a default config`);
49
+ }
50
+ const cmsCore = await server.ssrLoadModule('@aphexcms/cms-core/server');
51
+ if (typeof cmsCore.__notifyAphexConfigChanged !== 'function') {
52
+ throw new Error('cms-core does not expose __notifyAphexConfigChanged — upgrade @aphexcms/cms-core');
53
+ }
54
+ cmsCore.__notifyAphexConfigChanged(freshConfig);
55
+ ws.send({ type: 'full-reload' });
56
+ console.log(`🔄 CMS schemas hot-swapped (${Date.now() - start}ms): ${file}`);
57
+ }
58
+ let pending = null;
59
+ let lastFile = '';
60
+ function scheduleReload(file) {
61
+ lastFile = file;
62
+ if (pending)
63
+ clearTimeout(pending);
64
+ pending = setTimeout(async () => {
65
+ pending = null;
66
+ if (mode === 'restart') {
67
+ console.log(`🔄 CMS schema change → restarting dev server: ${lastFile}`);
68
+ server.restart().catch((err) => {
69
+ console.error('[aphex] dev server restart failed:', err);
70
+ });
71
+ return;
72
+ }
73
+ try {
74
+ await swapSchemas(lastFile);
75
+ }
76
+ catch (err) {
77
+ console.error('[aphex] hot-swap failed, falling back to restart:', err);
78
+ server.restart().catch((err) => {
79
+ console.error('[aphex] dev server restart failed:', err);
80
+ });
81
+ }
82
+ }, debounceMs);
83
+ }
84
+ for (const event of ['change', 'add', 'unlink']) {
85
+ watcher.on(event, (file) => {
86
+ if (isReloadTarget(file))
87
+ scheduleReload(file);
88
+ });
89
+ }
90
+ }
91
+ };
92
+ }
93
+ /**
94
+ * Redirects `dayjs` and `dayjs/plugin/*` imports to dayjs's ESM build.
95
+ *
96
+ * dayjs 1.x ships a UMD `main` (`dayjs.min.js`) with no `exports` map or
97
+ * `module` field. When imports originate inside a package excluded from
98
+ * Vite's pre-bundling (e.g. `@aphexcms/cms-core`), Vite serves the raw UMD
99
+ * — which has no ESM `default` export — and the browser blows up with
100
+ * "does not provide an export named 'default'". This alias guarantees every
101
+ * dayjs import resolves to the proper ESM build.
102
+ */
103
+ function aphexDayjsAlias() {
104
+ return {
105
+ name: 'aphex:dayjs-alias',
106
+ config() {
107
+ const dayjsEsm = require.resolve('dayjs/esm/index.js');
108
+ const dayjsEsmPluginDir = dayjsEsm.replace(/\/index\.js$/, '/plugin');
109
+ return {
110
+ resolve: {
111
+ alias: [
112
+ { find: /^dayjs$/, replacement: dayjsEsm },
113
+ {
114
+ find: /^dayjs\/plugin\/([^/]+?)(\.js)?$/,
115
+ replacement: `${dayjsEsmPluginDir}/$1/index.js`
116
+ }
117
+ ]
118
+ }
119
+ };
120
+ }
121
+ };
122
+ }
123
+ /**
124
+ * SSR config: cms-core and ui packages re-export `.svelte` components through
125
+ * their entry barrels — Vite must bundle them for SSR. If they are externalised,
126
+ * Node's native ESM loader tries to resolve the raw `.svelte` files directly
127
+ * and throws ERR_UNKNOWN_FILE_EXTENSION (the `svelte` export condition is only
128
+ * honoured by Vite, not by Node).
129
+ *
130
+ * sharp/graphql/graphql-yoga are native or large CJS deps that should stay
131
+ * external — bundling them breaks Node's native bindings or balloons the SSR
132
+ * bundle.
133
+ */
134
+ function aphexSSR() {
135
+ return {
136
+ name: 'aphex:ssr',
137
+ config() {
138
+ return {
139
+ ssr: {
140
+ noExternal: ['@aphexcms/ui', '@aphexcms/cms-core'],
141
+ external: ['sharp', 'graphql', 'graphql-yoga']
142
+ }
143
+ };
144
+ }
145
+ };
146
+ }
147
+ /**
148
+ * optimizeDeps tuning: exclude the Aphex Svelte packages from esbuild
149
+ * pre-bundling (esbuild can't transform `.svelte` files; vite-plugin-svelte
150
+ * handles them at transform time instead), and pre-bundle their transitive
151
+ * deps that Vite would otherwise discover lazily at runtime — which causes
152
+ * full-page reloads when the user first navigates to a route that triggers
153
+ * a new dep.
154
+ */
155
+ function aphexOptimizeDeps() {
156
+ return {
157
+ name: 'aphex:optimize-deps',
158
+ config() {
159
+ return {
160
+ optimizeDeps: {
161
+ exclude: ['sharp', '@aphexcms/ui', '@aphexcms/cms-core'],
162
+ include: [
163
+ 'tailwind-variants',
164
+ 'tailwind-merge',
165
+ '@internationalized/date',
166
+ 'bits-ui',
167
+ 'dayjs',
168
+ 'dayjs/plugin/customParseFormat',
169
+ 'dayjs/plugin/utc',
170
+ '@lucide/svelte',
171
+ '@lucide/svelte/icons/panel-left',
172
+ '@lucide/svelte/icons/minus',
173
+ '@lucide/svelte/icons/circle',
174
+ '@lucide/svelte/icons/chevron-right',
175
+ '@lucide/svelte/icons/search',
176
+ '@lucide/svelte/icons/bot',
177
+ '@lucide/svelte/icons/calendar',
178
+ '@lucide/svelte/icons/check',
179
+ '@lucide/svelte/icons/chevron-down',
180
+ '@lucide/svelte/icons/chevron-left',
181
+ '@lucide/svelte/icons/chevron-up',
182
+ '@lucide/svelte/icons/chevrons-up-down',
183
+ '@lucide/svelte/icons/circle-check',
184
+ '@lucide/svelte/icons/info',
185
+ '@lucide/svelte/icons/loader-2',
186
+ '@lucide/svelte/icons/octagon-x',
187
+ '@lucide/svelte/icons/plus',
188
+ '@lucide/svelte/icons/triangle-alert',
189
+ '@lucide/svelte/icons/x',
190
+ 'better-auth/client/plugins',
191
+ 'better-auth/svelte',
192
+ 'mode-watcher',
193
+ 'svelte-sonner',
194
+ '@aphexcms/cms-core > @dnd-kit/helpers',
195
+ '@aphexcms/cms-core > @dnd-kit/svelte',
196
+ '@aphexcms/cms-core > @dnd-kit/svelte/sortable',
197
+ '@aphexcms/cms-core > dayjs',
198
+ '@aphexcms/cms-core > dayjs/plugin/customParseFormat',
199
+ '@aphexcms/cms-core > dayjs/plugin/utc'
200
+ ]
201
+ }
202
+ };
203
+ }
204
+ };
205
+ }
206
+ /**
207
+ * Vite's default watcher ignores `node_modules`. In a workspace setup where
208
+ * Aphex packages are linked from `node_modules/@aphexcms/*`, edits to those
209
+ * source files won't trigger HMR unless we explicitly un-ignore them.
210
+ */
211
+ function aphexWatchUnfilter() {
212
+ return {
213
+ name: 'aphex:watch-unfilter',
214
+ config() {
215
+ return {
216
+ server: {
217
+ watch: {
218
+ ignored: [
219
+ '!**/node_modules/@aphexcms/cms-core/**',
220
+ '!**/node_modules/@aphexcms/ui/**'
221
+ ]
222
+ }
223
+ }
224
+ };
225
+ }
226
+ };
227
+ }
228
+ /**
229
+ * One-stop Vite plugin for AphexCMS apps. Bundles:
230
+ *
231
+ * - schema HMR (restart-on-change)
232
+ * - dayjs ESM alias redirect
233
+ * - SSR noExternal/external defaults for cms-core/ui packages
234
+ * - optimizeDeps tuning so first-render isn't slowed by lazy dep discovery
235
+ * - watcher un-ignore for in-monorepo Aphex package edits
236
+ *
237
+ * Each piece can be opted out individually. Returns an array of plugins so
238
+ * Vite can attach each one separately and keep diagnostics readable.
239
+ *
240
+ * Usage:
241
+ *
242
+ * ```ts
243
+ * // vite.config.ts
244
+ * import { aphex } from '@aphexcms/cms-core/vite';
245
+ *
246
+ * export default defineConfig({
247
+ * plugins: [tailwindcss(), sveltekit(), aphex()]
248
+ * });
249
+ * ```
250
+ */
251
+ export function aphex(options = {}) {
252
+ const plugins = [];
253
+ if (options.hmr !== false) {
254
+ plugins.push(aphexHMR(options.hmr ?? {}));
255
+ }
256
+ if (options.dayjs !== false) {
257
+ plugins.push(aphexDayjsAlias());
258
+ }
259
+ if (options.ssr !== false) {
260
+ plugins.push(aphexSSR());
261
+ }
262
+ if (options.optimizeDeps !== false) {
263
+ plugins.push(aphexOptimizeDeps());
264
+ }
265
+ if (options.watch !== false) {
266
+ plugins.push(aphexWatchUnfilter());
267
+ }
268
+ return plugins;
269
+ }
270
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/vite/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/lib/schema-utils/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,kBAAkB,CAAC;AAmB1D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAqNpE"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/lib/schema-utils/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,kBAAkB,CAAC;AAmB1D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CA8NpE"}
@@ -117,19 +117,22 @@ export function validateSchemaReferences(schemas) {
117
117
  }
118
118
  }
119
119
  }
120
- // Validate preview config references
120
+ // Validate preview config references. Dot-paths are allowed (e.g.
121
+ // `seo.title`) — validate only the first segment exists at the top
122
+ // level; we don't recurse into nested object types here.
121
123
  if (schema.preview?.select) {
122
124
  const fieldNames = new Set(schema.fields?.map((f) => f.name) || []);
123
- // Validate title field reference
124
- if (schema.preview.select.title && !fieldNames.has(schema.preview.select.title)) {
125
+ const rootOf = (path) => path.split('.', 1)[0] ?? path;
126
+ if (schema.preview.select.title &&
127
+ !fieldNames.has(rootOf(schema.preview.select.title))) {
125
128
  errors.push(`Schema "${schema.name}" preview.select.title references unknown field "${schema.preview.select.title}"`);
126
129
  }
127
- // Validate subtitle field reference
128
- if (schema.preview.select.subtitle && !fieldNames.has(schema.preview.select.subtitle)) {
130
+ if (schema.preview.select.subtitle &&
131
+ !fieldNames.has(rootOf(schema.preview.select.subtitle))) {
129
132
  errors.push(`Schema "${schema.name}" preview.select.subtitle references unknown field "${schema.preview.select.subtitle}"`);
130
133
  }
131
- // Validate media field reference
132
- if (schema.preview.select.media && !fieldNames.has(schema.preview.select.media)) {
134
+ if (schema.preview.select.media &&
135
+ !fieldNames.has(rootOf(schema.preview.select.media))) {
133
136
  errors.push(`Schema "${schema.name}" preview.select.media references unknown field "${schema.preview.select.media}"`);
134
137
  }
135
138
  }
@@ -5,7 +5,7 @@ export * from '../email/index.js';
5
5
  export { AuthError, type AuthErrorCode } from '../auth/auth-errors.js';
6
6
  export { createCMSConfig } from '../config.js';
7
7
  export { CMSEngine } from '../engine.js';
8
- export { createCMSHook, type CMSInstances } from '../hooks.js';
8
+ export { createCMSHook, __notifyAphexConfigChanged, type CMSInstances } from '../hooks.js';
9
9
  export * from '../db/interfaces/index.js';
10
10
  export * from '../storage/index.js';
11
11
  export * from '../storage/interfaces/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/server/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAG5D,cAAc,wBAAwB,CAAC;AAGvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKzD,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI5D,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,KAAK,QAAQ,EACb,MAAM,aAAa,CAAC;AAGrB,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EACN,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACN,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/server/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxF,cAAc,wBAAwB,CAAC;AAGvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKzD,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI5D,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,KAAK,QAAQ,EACb,MAAM,aAAa,CAAC;AAGrB,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EACN,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACN,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,MAAM,oBAAoB,CAAC"}
@@ -12,7 +12,7 @@ export { createCMSConfig } from '../config.js';
12
12
  // CMS Engine
13
13
  export { CMSEngine } from '../engine.js';
14
14
  // Hooks integration (SvelteKit server hooks)
15
- export { createCMSHook } from '../hooks.js';
15
+ export { createCMSHook, __notifyAphexConfigChanged } from '../hooks.js';
16
16
  // Database interfaces (no longer export registry or adapters - use adapter packages)
17
17
  export * from '../db/interfaces/index.js';
18
18
  // Storage adapters and interfaces
@@ -141,6 +141,8 @@ export interface TypeReference {
141
141
  title?: string;
142
142
  name?: string;
143
143
  fields?: Field[];
144
+ icon?: typeof LucideIcon;
145
+ preview?: PreviewConfig;
144
146
  }
145
147
  export interface ArrayField extends BaseField {
146
148
  type: 'array';
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/lib/types/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/lib/types/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { SchemaType } from '../types/schemas.js';
2
+ /**
3
+ * Walk a dot-path (e.g. `seo.title`) through an object. Returns the
4
+ * terminal value, or `undefined` if any segment along the way is missing.
5
+ */
6
+ export declare function readPath(item: any, path: string): unknown;
7
+ /**
8
+ * Resolve the title to display for an item (array row, document list row,
9
+ * reference picker row). Honors `schema.preview.select.title` first
10
+ * (with dot-path support), then falls back to the conventional field
11
+ * names, then the schema's own title, then the type name.
12
+ */
13
+ export declare function resolvePreviewTitle(item: any, schema: SchemaType | null | undefined, defaultTypeLabel?: string): string;
14
+ /**
15
+ * Resolve the subtitle to display for an item. Returns `null` when no
16
+ * subtitle is configured or the configured field is empty — callers
17
+ * should branch on the null and skip rendering the subtitle line.
18
+ */
19
+ export declare function resolvePreviewSubtitle(item: any, schema: SchemaType | null | undefined): string | null;
20
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/lib/utils/preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOzD;AAuBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EACrC,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,CAYR;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACnC,MAAM,GAAG,IAAI,CAIf"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Walk a dot-path (e.g. `seo.title`) through an object. Returns the
3
+ * terminal value, or `undefined` if any segment along the way is missing.
4
+ */
5
+ export function readPath(item, path) {
6
+ let current = item;
7
+ for (const segment of path.split('.')) {
8
+ if (current == null)
9
+ return undefined;
10
+ current = current[segment];
11
+ }
12
+ return current;
13
+ }
14
+ /**
15
+ * Coerce a value into a printable string for preview rows. Returns `null`
16
+ * when the value isn't worth rendering (empty, nullish, non-primitive).
17
+ */
18
+ function toPreviewString(value) {
19
+ if (typeof value === 'string') {
20
+ const trimmed = value.trim();
21
+ return trimmed ? trimmed : null;
22
+ }
23
+ if (typeof value === 'number' && Number.isFinite(value))
24
+ return String(value);
25
+ if (typeof value === 'boolean')
26
+ return value ? 'true' : 'false';
27
+ return null;
28
+ }
29
+ /**
30
+ * Conventional fallback field names for the title slot when a schema
31
+ * doesn't declare a `preview.select.title`. Mirrors Sanity's heuristic
32
+ * — the first non-empty string wins.
33
+ */
34
+ const DEFAULT_TITLE_FIELDS = ['title', 'heading', 'name', 'label'];
35
+ /**
36
+ * Resolve the title to display for an item (array row, document list row,
37
+ * reference picker row). Honors `schema.preview.select.title` first
38
+ * (with dot-path support), then falls back to the conventional field
39
+ * names, then the schema's own title, then the type name.
40
+ */
41
+ export function resolvePreviewTitle(item, schema, defaultTypeLabel) {
42
+ const configured = schema?.preview?.select?.title;
43
+ if (configured) {
44
+ const resolved = toPreviewString(readPath(item, configured));
45
+ if (resolved)
46
+ return resolved;
47
+ }
48
+ else {
49
+ for (const name of DEFAULT_TITLE_FIELDS) {
50
+ const resolved = toPreviewString(item?.[name]);
51
+ if (resolved)
52
+ return resolved;
53
+ }
54
+ }
55
+ return schema?.title ?? defaultTypeLabel ?? 'Untitled';
56
+ }
57
+ /**
58
+ * Resolve the subtitle to display for an item. Returns `null` when no
59
+ * subtitle is configured or the configured field is empty — callers
60
+ * should branch on the null and skip rendering the subtitle line.
61
+ */
62
+ export function resolvePreviewSubtitle(item, schema) {
63
+ const configured = schema?.preview?.select?.subtitle;
64
+ if (!configured)
65
+ return null;
66
+ return toPreviewString(readPath(item, configured));
67
+ }
@@ -0,0 +1,86 @@
1
+ import type { Plugin } from 'vite';
2
+ export interface AphexHMROptions {
3
+ /**
4
+ * Path segment that identifies schema files (matched against the file path).
5
+ * Defaults to `/schemaTypes/`.
6
+ */
7
+ schemaDir?: string;
8
+ /**
9
+ * Filename of the CMS config (matched as a suffix on the changed path).
10
+ * Defaults to `aphex.config.ts`.
11
+ */
12
+ configFile?: string;
13
+ /**
14
+ * Debounce window in ms before reacting to a schema change.
15
+ * Editors that do atomic saves fire multiple chokidar events in quick
16
+ * succession; debouncing collapses them into a single reload.
17
+ * Defaults to 150.
18
+ */
19
+ debounceMs?: number;
20
+ /**
21
+ * How to refresh the CMS engine on schema change.
22
+ * - `'swap'` (default): re-load `aphex.config.ts` via Vite's SSR loader and
23
+ * hand it to cms-core's HMR setter. The Vite dev server keeps running;
24
+ * only the engine's config is replaced. ~10x faster than restart.
25
+ * - `'restart'`: tear down and rebuild the Vite dev server. Slower but
26
+ * guarantees every server module re-evaluates from scratch.
27
+ */
28
+ mode?: 'swap' | 'restart';
29
+ }
30
+ export interface AphexOptions {
31
+ /** HMR plugin options. Pass `false` to disable schema HMR. */
32
+ hmr?: AphexHMROptions | false;
33
+ /** Disable the dayjs ESM alias redirect. */
34
+ dayjs?: boolean;
35
+ /** Disable the SSR noExternal/external defaults for cms-core/ui packages. */
36
+ ssr?: boolean;
37
+ /** Disable the optimizeDeps include/exclude defaults. */
38
+ optimizeDeps?: boolean;
39
+ /** Disable the watch unfilter for in-monorepo Aphex package edits. */
40
+ watch?: boolean;
41
+ }
42
+ /**
43
+ * Watches the CMS config and schema files in dev. When any of them change,
44
+ * the plugin re-loads `aphex.config.ts` via Vite's SSR loader (so the fresh
45
+ * module re-runs the schema imports) and hands the new config to cms-core's
46
+ * `__notifyAphexConfigChanged()` setter — the engine then re-initializes on
47
+ * the next request without restarting the Vite dev server.
48
+ *
49
+ * Why this works without races:
50
+ * - `server.ssrLoadModule` is Vite's official re-eval path, no cache-bust hacks
51
+ * - The plugin and the running SvelteKit hook share the same cms-core module
52
+ * instance through Vite's module graph, so the setter mutates the same
53
+ * `activeConfig` the hook reads on each request
54
+ * - A single mutation point (`__notifyAphexConfigChanged`) replaces the old
55
+ * global dirty-flag protocol; no two-step set-then-read race window
56
+ *
57
+ * Falls back to `server.restart()` automatically if the swap throws (e.g.
58
+ * the user introduced a syntax error in their schema). `mode: 'restart'`
59
+ * forces the slower-but-most-correct path on every change.
60
+ */
61
+ export declare function aphexHMR(options?: AphexHMROptions): Plugin;
62
+ /**
63
+ * One-stop Vite plugin for AphexCMS apps. Bundles:
64
+ *
65
+ * - schema HMR (restart-on-change)
66
+ * - dayjs ESM alias redirect
67
+ * - SSR noExternal/external defaults for cms-core/ui packages
68
+ * - optimizeDeps tuning so first-render isn't slowed by lazy dep discovery
69
+ * - watcher un-ignore for in-monorepo Aphex package edits
70
+ *
71
+ * Each piece can be opted out individually. Returns an array of plugins so
72
+ * Vite can attach each one separately and keep diagnostics readable.
73
+ *
74
+ * Usage:
75
+ *
76
+ * ```ts
77
+ * // vite.config.ts
78
+ * import { aphex } from '@aphexcms/cms-core/vite';
79
+ *
80
+ * export default defineConfig({
81
+ * plugins: [tailwindcss(), sveltekit(), aphex()]
82
+ * });
83
+ * ```
84
+ */
85
+ export declare function aphex(options?: AphexOptions): Plugin[];
86
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/vite/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAElD,MAAM,WAAW,eAAe;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC5B,8DAA8D;IAC9D,GAAG,CAAC,EAAE,eAAe,GAAG,KAAK,CAAC;IAC9B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,yDAAyD;IACzD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,MAAM,CAiF9D;AA6ID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,MAAM,EAAE,CAoB1D"}