rimecms 0.28.1 → 0.28.3
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.
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import cache from '../../cache/index.server.js';
|
|
1
2
|
import { sanitize } from '../../generate/sanitize/index.server.js';
|
|
2
3
|
import { ensureGeneratedConfig, ensureUserConfigExist } from '../../../ensure.server.js';
|
|
3
4
|
import { logger } from '../../../logger/index.server.js';
|
|
@@ -58,21 +59,30 @@ export const generate = async (args) => {
|
|
|
58
59
|
clearConfigCache();
|
|
59
60
|
clearRoutes();
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const vite = await createServer();
|
|
62
|
+
// Mark that a CLI generation is in flight, so a concurrently running dev
|
|
63
|
+
// server doesn't race us on the shared .rime cache (see rime.server.ts).
|
|
64
|
+
process.env.RIME_CLI = 'true';
|
|
65
|
+
cache.set('.cli', new Date().toISOString());
|
|
66
66
|
try {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
await
|
|
72
|
-
|
|
67
|
+
ensureUserConfigExist();
|
|
68
|
+
await sanitizeConfig();
|
|
69
|
+
const importPathJS = ensureGeneratedConfig();
|
|
70
|
+
logger.info('Starting vite server...');
|
|
71
|
+
const vite = await createServer();
|
|
72
|
+
try {
|
|
73
|
+
const mod = await vite.ssrLoadModule(importPathJS);
|
|
74
|
+
// The generated config's default export is the createRime() promise;
|
|
75
|
+
// ssrLoadModule only awaits the module's synchronous evaluation, so we
|
|
76
|
+
// must await it directly to observe init failures (e.g. config validation).
|
|
77
|
+
await mod.default;
|
|
78
|
+
logger.info('[✓] Generation completed successfully');
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
await vite.close();
|
|
82
|
+
}
|
|
73
83
|
}
|
|
74
84
|
finally {
|
|
75
|
-
|
|
85
|
+
cache.delete('.cli');
|
|
76
86
|
}
|
|
77
87
|
}
|
|
78
88
|
const [error] = await trycatch(run);
|
package/dist/core/rime.server.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// import type { Adapter } from '../adapter-sqlite/index.server.js';
|
|
2
2
|
import { dev } from '$app/environment';
|
|
3
|
+
import devCache from './dev/cache/index.server.js';
|
|
3
4
|
import { betterAuth } from 'better-auth';
|
|
4
5
|
import { AreaAPI } from './areas/local-api.server.js';
|
|
5
6
|
import { CollectionAPI } from './collections/local-api.server.js';
|
|
@@ -27,18 +28,28 @@ export async function createRime(config) {
|
|
|
27
28
|
const { createAdapter, generateSchema } = config.$adapter;
|
|
28
29
|
// Generate schema, types, routes
|
|
29
30
|
if (dev) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
await generateSchema(config);
|
|
38
|
-
await generateTypes(config);
|
|
31
|
+
// A `rime generate` CLI run may be regenerating the same .rime cache
|
|
32
|
+
// concurrently (e.g. a running dev server reloading off the CLI's file
|
|
33
|
+
// writes). Skip our own generation this cycle instead of racing it or
|
|
34
|
+
// blocking this request on it — the next natural reload will pick up
|
|
35
|
+
// what the CLI produced.
|
|
36
|
+
if (process.env.RIME_CLI !== 'true' && devCache.get('.cli')) {
|
|
37
|
+
logger.debug('Skipping generation, `rime generate` is already running');
|
|
39
38
|
}
|
|
40
39
|
else {
|
|
41
|
-
|
|
40
|
+
const changed = writeMemo(config);
|
|
41
|
+
const valid = validate(config);
|
|
42
|
+
if (!valid) {
|
|
43
|
+
throw new RimeError('Config not valid');
|
|
44
|
+
}
|
|
45
|
+
if (changed) {
|
|
46
|
+
generateRoutes(config);
|
|
47
|
+
await generateSchema(config);
|
|
48
|
+
await generateTypes(config);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
logger.debug('Nothing to generate');
|
|
52
|
+
}
|
|
42
53
|
}
|
|
43
54
|
}
|
|
44
55
|
// Create adapter, consume the generated schema
|