nextjs-cms 0.5.95 → 0.5.96
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/core/config/loader-with-jiti.d.ts.map +1 -1
- package/dist/core/config/loader-with-jiti.js +11 -2
- package/dist/core/factories/section-factory-with-jiti.d.ts.map +1 -1
- package/dist/core/factories/section-factory-with-jiti.js +12 -2
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +11 -2
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-with-jiti.d.ts","sourceRoot":"","sources":["../../../src/core/config/loader-with-jiti.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader-with-jiti.d.ts","sourceRoot":"","sources":["../../../src/core/config/loader-with-jiti.ts"],"names":[],"mappings":"AA0CA,eAAO,MAAM,sBAAsB,cAAmC,CAAA;AA6GtE;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,OAAO,CAsCxD,CAAA"}
|
|
@@ -12,6 +12,7 @@ import chokidar from 'chokidar';
|
|
|
12
12
|
import chalk from 'chalk';
|
|
13
13
|
import fs from 'fs';
|
|
14
14
|
let jitiInstance = null;
|
|
15
|
+
let jitiInstanceVersion = -1;
|
|
15
16
|
const hotMarkerFile = resolve(process.cwd(), 'components/form/helpers/_section-hot-reload.js');
|
|
16
17
|
const configWatcherState = (() => {
|
|
17
18
|
const key = Symbol.for('nextjs-cms.configWatcher');
|
|
@@ -138,6 +139,12 @@ const findConfigFile = () => {
|
|
|
138
139
|
export const loadConfigModule = async () => {
|
|
139
140
|
startConfigWatcher();
|
|
140
141
|
const { found, ext } = findConfigFile();
|
|
142
|
+
const currentVersion = configWatcherState.version;
|
|
143
|
+
// In development, reset the jiti instance when the version changes
|
|
144
|
+
// This ensures we get a completely fresh instance with no stale cached data
|
|
145
|
+
if (jitiInstance && jitiInstanceVersion !== currentVersion && process.env.NODE_ENV !== 'production') {
|
|
146
|
+
jitiInstance = null;
|
|
147
|
+
}
|
|
141
148
|
if (!jitiInstance) {
|
|
142
149
|
const { createJiti } = await import('jiti');
|
|
143
150
|
jitiInstance = createJiti(import.meta.url, {
|
|
@@ -145,13 +152,15 @@ export const loadConfigModule = async () => {
|
|
|
145
152
|
// - return default export compatibly
|
|
146
153
|
interopDefault: true,
|
|
147
154
|
// Caching (new API uses fsCache/moduleCache)
|
|
148
|
-
//
|
|
149
|
-
fsCache
|
|
155
|
+
// Disable fsCache in development to ensure fresh reads when config files change.
|
|
156
|
+
// In production, keep fsCache enabled for better performance since files don't change.
|
|
157
|
+
fsCache: process.env.NODE_ENV === 'production',
|
|
150
158
|
moduleCache: true,
|
|
151
159
|
rebuildFsCache: true,
|
|
152
160
|
// Optional: nicer debugging in stack traces (off by default in jiti)
|
|
153
161
|
// sourceMaps: true,
|
|
154
162
|
});
|
|
163
|
+
jitiInstanceVersion = currentVersion;
|
|
155
164
|
}
|
|
156
165
|
/**
|
|
157
166
|
* We're using the deprecated synchronous API because
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section-factory-with-jiti.d.ts","sourceRoot":"","sources":["../../../src/core/factories/section-factory-with-jiti.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtF,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC7G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AA+BrD,eAAO,MAAM,uBAAuB,cAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"section-factory-with-jiti.d.ts","sourceRoot":"","sources":["../../../src/core/factories/section-factory-with-jiti.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,8 +36,10 @@ const loadJiti = () => {
|
|
|
36
36
|
/**
|
|
37
37
|
* Global jiti instance for loading section modules.
|
|
38
38
|
* We keep it global so we can clear its cache when files change.
|
|
39
|
+
* In development mode, we reset this when the version changes to ensure fresh reads.
|
|
39
40
|
*/
|
|
40
41
|
let jitiInstance = null;
|
|
42
|
+
let jitiInstanceVersion = -1;
|
|
41
43
|
let cachedCmsConfig = null;
|
|
42
44
|
let cachedCmsConfigVersion = -1;
|
|
43
45
|
const getCmsConfigCached = async (currentVersion = getConfigImportVersion()) => {
|
|
@@ -48,6 +50,12 @@ const getCmsConfigCached = async (currentVersion = getConfigImportVersion()) =>
|
|
|
48
50
|
return cachedCmsConfig;
|
|
49
51
|
};
|
|
50
52
|
const getJitiInstance = () => {
|
|
53
|
+
const currentVersion = sectionWatcherState.version;
|
|
54
|
+
// In development, reset the jiti instance when the version changes
|
|
55
|
+
// This ensures we get a completely fresh instance with no stale cached data
|
|
56
|
+
if (jitiInstance && jitiInstanceVersion !== currentVersion && process.env.NODE_ENV !== 'production') {
|
|
57
|
+
jitiInstance = null;
|
|
58
|
+
}
|
|
51
59
|
if (!jitiInstance) {
|
|
52
60
|
const createJiti = loadJiti();
|
|
53
61
|
jitiInstance = createJiti(import.meta.url, {
|
|
@@ -55,13 +63,15 @@ const getJitiInstance = () => {
|
|
|
55
63
|
// - return default export compatibly
|
|
56
64
|
interopDefault: true,
|
|
57
65
|
// Caching (new API uses fsCache/moduleCache)
|
|
58
|
-
//
|
|
59
|
-
fsCache
|
|
66
|
+
// Disable fsCache in development to ensure fresh reads when section files change.
|
|
67
|
+
// In production, keep fsCache enabled for better performance since files don't change.
|
|
68
|
+
fsCache: process.env.NODE_ENV === 'production',
|
|
60
69
|
moduleCache: true,
|
|
61
70
|
rebuildFsCache: true,
|
|
62
71
|
// Optional: nicer debugging in stack traces (off by default in jiti)
|
|
63
72
|
// sourceMaps: true,
|
|
64
73
|
});
|
|
74
|
+
jitiInstanceVersion = currentVersion;
|
|
65
75
|
}
|
|
66
76
|
return jitiInstance;
|
|
67
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAIxE,MAAM,WAAW,SAAS;IACtB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC1D;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,iBAAiB,CAAA;CAC5B;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,EAAE,SAAS,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAA;IAC/D,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAEhG,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1E,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;CACtB;AAED,KAAK,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;AAE9C,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IAC/C,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,2BAA2B,CAAC,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAC9C,MAAM,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,GAAG,wBAAwB,EAAE,CAAC,CAAA;CAC9F,CAAA;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAAA;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAIxE,MAAM,WAAW,SAAS;IACtB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CAC1D;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,iBAAiB,CAAA;CAC5B;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,iBAAiB,CAAA;IACzB,MAAM,EAAE,SAAS,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IACzB,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAA;IAC/D,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,CAAC,MAAM,SAAS,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,GAAG;IAAE,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAEhG,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAE1E,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,WAAW,EAAE,MAAM,CAAA;CACtB;AAED,KAAK,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;AAE9C,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IAC/C,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,2BAA2B,CAAC,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAC9C,MAAM,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,EAAE,GAAG,wBAAwB,EAAE,CAAC,CAAA;CAC9F,CAAA;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,oBAAoB,CAAA;AAChF,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,CAAA;AA4C9E,eAAO,MAAM,gBAAgB,GAAU,eAAe,MAAM,KAAG,OAAO,CAAC,OAAO,CAkC7E,CAAA;AA8BD,wBAAsB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAyE3D;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA8BpE;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAI3F"}
|
package/dist/plugins/loader.js
CHANGED
|
@@ -27,6 +27,7 @@ let cachedPlugins = null;
|
|
|
27
27
|
let cachedConfigVersion = -1;
|
|
28
28
|
let loadPromise = null;
|
|
29
29
|
let jitiInstance = null;
|
|
30
|
+
let jitiInstanceVersion = -1;
|
|
30
31
|
const appRequire = createRequire(path.join(process.cwd(), 'package.json'));
|
|
31
32
|
const pkgRequire = createRequire(import.meta.url);
|
|
32
33
|
const resolvePluginPath = (pluginPackage) => {
|
|
@@ -43,6 +44,12 @@ const resolvePluginPath = (pluginPackage) => {
|
|
|
43
44
|
}
|
|
44
45
|
};
|
|
45
46
|
export const loadPluginModule = async (pluginPackage) => {
|
|
47
|
+
const currentVersion = getConfigImportVersion();
|
|
48
|
+
// In development, reset the jiti instance when the version changes
|
|
49
|
+
// This ensures we get a completely fresh instance with no stale cached data
|
|
50
|
+
if (jitiInstance && jitiInstanceVersion !== currentVersion && process.env.NODE_ENV !== 'production') {
|
|
51
|
+
jitiInstance = null;
|
|
52
|
+
}
|
|
46
53
|
if (!jitiInstance) {
|
|
47
54
|
const { createJiti } = await import('jiti');
|
|
48
55
|
jitiInstance = createJiti(import.meta.url, {
|
|
@@ -50,13 +57,15 @@ export const loadPluginModule = async (pluginPackage) => {
|
|
|
50
57
|
// - return default export compatibly
|
|
51
58
|
interopDefault: true,
|
|
52
59
|
// Caching (new API uses fsCache/moduleCache)
|
|
53
|
-
//
|
|
54
|
-
fsCache
|
|
60
|
+
// Disable fsCache in development to ensure fresh reads when plugin files change.
|
|
61
|
+
// In production, keep fsCache enabled for better performance since files don't change.
|
|
62
|
+
fsCache: process.env.NODE_ENV === 'production',
|
|
55
63
|
moduleCache: true,
|
|
56
64
|
rebuildFsCache: true,
|
|
57
65
|
// Optional: nicer debugging in stack traces (off by default in jiti)
|
|
58
66
|
// sourceMaps: true,
|
|
59
67
|
});
|
|
68
|
+
jitiInstanceVersion = currentVersion;
|
|
60
69
|
}
|
|
61
70
|
const resolved = resolvePluginPath(pluginPackage) ?? pluginPackage;
|
|
62
71
|
// Synchronous API works with Turbopack.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nextjs-cms",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.96",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -183,8 +183,8 @@
|
|
|
183
183
|
"prettier": "^3.3.3",
|
|
184
184
|
"tsx": "^4.20.6",
|
|
185
185
|
"typescript": "^5.9.2",
|
|
186
|
-
"@lzcms/tsconfig": "0.1.0",
|
|
187
186
|
"@lzcms/eslint-config": "0.3.0",
|
|
187
|
+
"@lzcms/tsconfig": "0.1.0",
|
|
188
188
|
"@lzcms/prettier-config": "0.1.0"
|
|
189
189
|
},
|
|
190
190
|
"license": "MIT",
|