rimecms 0.28.1 → 0.28.2

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
- ensureUserConfigExist();
62
- await sanitizeConfig();
63
- const importPathJS = ensureGeneratedConfig();
64
- logger.info('Starting vite server...');
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
- const mod = await vite.ssrLoadModule(importPathJS);
68
- // The generated config's default export is the createRime() promise;
69
- // ssrLoadModule only awaits the module's synchronous evaluation, so we
70
- // must await it directly to observe init failures (e.g. config validation).
71
- await mod.default;
72
- logger.info('[✓] Generation completed successfully');
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
- await vite.close();
85
+ cache.delete('.cli');
76
86
  }
77
87
  }
78
88
  const [error] = await trycatch(run);
@@ -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,6 +28,16 @@ export async function createRime(config) {
27
28
  const { createAdapter, generateSchema } = config.$adapter;
28
29
  // Generate schema, types, routes
29
30
  if (dev) {
31
+ // A `rime generate` CLI run may be regenerating the same .rime cache
32
+ // concurrently (e.g. a running dev server picking up its file writes).
33
+ // Defer to it instead of racing on the shared config memo.
34
+ if (process.env.RIME_CLI !== 'true') {
35
+ let waited = 0;
36
+ while (devCache.get('.cli') && waited < 30_000) {
37
+ await new Promise((resolve) => setTimeout(resolve, 200));
38
+ waited += 200;
39
+ }
40
+ }
30
41
  const changed = writeMemo(config);
31
42
  const valid = validate(config);
32
43
  if (!valid) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rimecms",
3
- "version": "0.28.1",
3
+ "version": "0.28.2",
4
4
  "homepage": "https://github.com/bienbiendev/rime",
5
5
  "scripts": {
6
6
  "dev": "vite dev",