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
- 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,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
- const changed = writeMemo(config);
31
- const valid = validate(config);
32
- if (!valid) {
33
- throw new RimeError('Config not valid');
34
- }
35
- if (changed) {
36
- generateRoutes(config);
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
- logger.debug('Nothing to generate');
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rimecms",
3
- "version": "0.28.1",
3
+ "version": "0.28.3",
4
4
  "homepage": "https://github.com/bienbiendev/rime",
5
5
  "scripts": {
6
6
  "dev": "vite dev",