@aphexcms/cms-core 5.0.5 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AdminApp.svelte +3 -9
- package/dist/components/AdminApp.svelte.d.ts.map +1 -1
- package/dist/components/admin/AssetBrowserModal.svelte +2 -1
- package/dist/components/admin/DocumentEditor.svelte +7 -3
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
- package/dist/components/admin/MediaBrowser.svelte +3 -2
- package/dist/components/admin/ObjectModal.svelte +1 -1
- package/dist/components/admin/fields/ArrayField.svelte +23 -14
- package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/FileField.svelte +17 -6
- package/dist/components/admin/fields/FileField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ImageField.svelte +21 -6
- package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ReferenceField.svelte +26 -9
- package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
- package/dist/hooks.d.ts +11 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +39 -22
- package/dist/lib/hooks.d.ts +11 -0
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +39 -22
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/schema-utils/validator.d.ts.map +1 -1
- package/dist/lib/schema-utils/validator.js +10 -7
- package/dist/lib/schema-utils/validator.js.map +1 -1
- package/dist/lib/server/index.d.ts +1 -1
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +1 -1
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/types/schemas.d.ts +2 -0
- package/dist/lib/types/schemas.d.ts.map +1 -1
- package/dist/lib/utils/preview.d.ts +20 -0
- package/dist/lib/utils/preview.d.ts.map +1 -0
- package/dist/lib/utils/preview.js +68 -0
- package/dist/lib/utils/preview.js.map +1 -0
- package/dist/lib/vite/index.d.ts +86 -0
- package/dist/lib/vite/index.d.ts.map +1 -0
- package/dist/lib/vite/index.js +274 -0
- package/dist/lib/vite/index.js.map +1 -0
- package/dist/schema-utils/validator.d.ts.map +1 -1
- package/dist/schema-utils/validator.js +10 -7
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/types/schemas.d.ts +2 -0
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/utils/preview.d.ts +20 -0
- package/dist/utils/preview.d.ts.map +1 -0
- package/dist/utils/preview.js +67 -0
- package/dist/vite/index.d.ts +86 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +273 -0
- package/package.json +6 -2
|
@@ -0,0 +1,274 @@
|
|
|
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/customParseFormat.js',
|
|
170
|
+
'dayjs/plugin/utc',
|
|
171
|
+
'dayjs/plugin/utc.js',
|
|
172
|
+
'@lucide/svelte',
|
|
173
|
+
'@lucide/svelte/icons/panel-left',
|
|
174
|
+
'@lucide/svelte/icons/minus',
|
|
175
|
+
'@lucide/svelte/icons/circle',
|
|
176
|
+
'@lucide/svelte/icons/chevron-right',
|
|
177
|
+
'@lucide/svelte/icons/search',
|
|
178
|
+
'@lucide/svelte/icons/bot',
|
|
179
|
+
'@lucide/svelte/icons/calendar',
|
|
180
|
+
'@lucide/svelte/icons/check',
|
|
181
|
+
'@lucide/svelte/icons/chevron-down',
|
|
182
|
+
'@lucide/svelte/icons/chevron-left',
|
|
183
|
+
'@lucide/svelte/icons/chevron-up',
|
|
184
|
+
'@lucide/svelte/icons/chevrons-up-down',
|
|
185
|
+
'@lucide/svelte/icons/circle-check',
|
|
186
|
+
'@lucide/svelte/icons/info',
|
|
187
|
+
'@lucide/svelte/icons/loader-2',
|
|
188
|
+
'@lucide/svelte/icons/octagon-x',
|
|
189
|
+
'@lucide/svelte/icons/plus',
|
|
190
|
+
'@lucide/svelte/icons/triangle-alert',
|
|
191
|
+
'@lucide/svelte/icons/x',
|
|
192
|
+
'better-auth/client/plugins',
|
|
193
|
+
'better-auth/svelte',
|
|
194
|
+
'mode-watcher',
|
|
195
|
+
'svelte-sonner',
|
|
196
|
+
'@aphexcms/cms-core > @dnd-kit/helpers',
|
|
197
|
+
'@aphexcms/cms-core > @dnd-kit/svelte',
|
|
198
|
+
'@aphexcms/cms-core > @dnd-kit/svelte/sortable',
|
|
199
|
+
'@aphexcms/cms-core > dayjs',
|
|
200
|
+
'@aphexcms/cms-core > dayjs/plugin/customParseFormat',
|
|
201
|
+
'@aphexcms/cms-core > dayjs/plugin/customParseFormat.js',
|
|
202
|
+
'@aphexcms/cms-core > dayjs/plugin/utc',
|
|
203
|
+
'@aphexcms/cms-core > dayjs/plugin/utc.js'
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Vite's default watcher ignores `node_modules`. In a workspace setup where
|
|
212
|
+
* Aphex packages are linked from `node_modules/@aphexcms/*`, edits to those
|
|
213
|
+
* source files won't trigger HMR unless we explicitly un-ignore them.
|
|
214
|
+
*/
|
|
215
|
+
function aphexWatchUnfilter() {
|
|
216
|
+
return {
|
|
217
|
+
name: 'aphex:watch-unfilter',
|
|
218
|
+
config() {
|
|
219
|
+
return {
|
|
220
|
+
server: {
|
|
221
|
+
watch: {
|
|
222
|
+
ignored: [
|
|
223
|
+
'!**/node_modules/@aphexcms/cms-core/**',
|
|
224
|
+
'!**/node_modules/@aphexcms/ui/**'
|
|
225
|
+
]
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* One-stop Vite plugin for AphexCMS apps. Bundles:
|
|
234
|
+
*
|
|
235
|
+
* - schema HMR (restart-on-change)
|
|
236
|
+
* - dayjs ESM alias redirect
|
|
237
|
+
* - SSR noExternal/external defaults for cms-core/ui packages
|
|
238
|
+
* - optimizeDeps tuning so first-render isn't slowed by lazy dep discovery
|
|
239
|
+
* - watcher un-ignore for in-monorepo Aphex package edits
|
|
240
|
+
*
|
|
241
|
+
* Each piece can be opted out individually. Returns an array of plugins so
|
|
242
|
+
* Vite can attach each one separately and keep diagnostics readable.
|
|
243
|
+
*
|
|
244
|
+
* Usage:
|
|
245
|
+
*
|
|
246
|
+
* ```ts
|
|
247
|
+
* // vite.config.ts
|
|
248
|
+
* import { aphex } from '@aphexcms/cms-core/vite';
|
|
249
|
+
*
|
|
250
|
+
* export default defineConfig({
|
|
251
|
+
* plugins: [tailwindcss(), sveltekit(), aphex()]
|
|
252
|
+
* });
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
export function aphex(options = {}) {
|
|
256
|
+
const plugins = [];
|
|
257
|
+
if (options.hmr !== false) {
|
|
258
|
+
plugins.push(aphexHMR(options.hmr ?? {}));
|
|
259
|
+
}
|
|
260
|
+
if (options.dayjs !== false) {
|
|
261
|
+
plugins.push(aphexDayjsAlias());
|
|
262
|
+
}
|
|
263
|
+
if (options.ssr !== false) {
|
|
264
|
+
plugins.push(aphexSSR());
|
|
265
|
+
}
|
|
266
|
+
if (options.optimizeDeps !== false) {
|
|
267
|
+
plugins.push(aphexOptimizeDeps());
|
|
268
|
+
}
|
|
269
|
+
if (options.watch !== false) {
|
|
270
|
+
plugins.push(aphexWatchUnfilter());
|
|
271
|
+
}
|
|
272
|
+
return plugins;
|
|
273
|
+
}
|
|
274
|
+
//# 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,
|
|
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
|
-
|
|
124
|
-
if (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
|
-
|
|
128
|
-
|
|
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
|
-
|
|
132
|
-
|
|
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
|
}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/server/index.js
CHANGED
|
@@ -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
|
package/dist/types/schemas.d.ts
CHANGED
|
@@ -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;AAiJD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,MAAM,EAAE,CAoB1D"}
|