dynim-react 1.0.71 → 1.0.72
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/DynimProvider.d.ts +1 -0
- package/dist/DynimProvider.d.ts.map +1 -1
- package/dist/DynimProvider.js +39 -17
- package/package.json +2 -2
package/dist/DynimProvider.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynimProvider.d.ts","sourceRoot":"","sources":["../src/DynimProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAc,EASZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAKV,WAAW,EACX,UAAU,EACV,aAAa,EAGd,MAAM,YAAY,CAAC;AA2FpB,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DynimProvider.d.ts","sourceRoot":"","sources":["../src/DynimProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAc,EASZ,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAKV,WAAW,EACX,UAAU,EACV,aAAa,EAGd,MAAM,YAAY,CAAC;AA2FpB,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC,CAAC;IACH,kCAAkC;IAClC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC;IACzC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,qBAAqB;IACrB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,yBAAyB;IACzB,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,oCAAoC;IACpC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,6CAA6C;IAC7C,cAAc,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5C,mEAAmE;IACnE,iBAAiB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;IACpE,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,WAAW,EAAE,WAAW,CAAC;IACzB,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC;IACxB,gCAAgC;IAChC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAID,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAW,GACZ,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAggBlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
|
package/dist/DynimProvider.js
CHANGED
|
@@ -103,6 +103,8 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
103
103
|
// Cached auth token
|
|
104
104
|
const cachedTokenRef = useRef(null);
|
|
105
105
|
const tokenPromiseRef = useRef(null);
|
|
106
|
+
// CSS version for cache invalidation (null = no CSS exists)
|
|
107
|
+
const [cssVersion, setCSSVersion] = useState(null);
|
|
106
108
|
// Bundle load signal
|
|
107
109
|
const [bundleLoadSignal, setBundleLoadSignal] = useState(0);
|
|
108
110
|
const pendingBundleProjectIdRef = useRef(null);
|
|
@@ -152,6 +154,10 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
152
154
|
try {
|
|
153
155
|
const session = await getSession();
|
|
154
156
|
cachedTokenRef.current = session.token;
|
|
157
|
+
// Store CSS version for versioned URL building
|
|
158
|
+
if (session.cssVersion !== undefined) {
|
|
159
|
+
setCSSVersion(session.cssVersion ?? null);
|
|
160
|
+
}
|
|
155
161
|
return session.token;
|
|
156
162
|
}
|
|
157
163
|
catch {
|
|
@@ -250,6 +256,7 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
250
256
|
return cssLoaderRef.current;
|
|
251
257
|
}, []);
|
|
252
258
|
// Build CSS URL with project/customer IDs from cached token
|
|
259
|
+
// Returns null if no CSS exists (cssVersion is null)
|
|
253
260
|
const buildCSSUrl = useCallback((temp = false) => {
|
|
254
261
|
const token = cachedTokenRef.current;
|
|
255
262
|
if (!token)
|
|
@@ -257,9 +264,20 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
257
264
|
const claims = decodeJwtPayload(token);
|
|
258
265
|
if (!claims?.sub || !claims?.project)
|
|
259
266
|
return null;
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
267
|
+
const base = `/api/code/css?project_id=${claims.project}&customer_id=${claims.sub}`;
|
|
268
|
+
if (temp) {
|
|
269
|
+
// Temp/preview CSS - use cache busting
|
|
270
|
+
return `${base}&temp=true&_t=${Date.now()}`;
|
|
271
|
+
}
|
|
272
|
+
else if (cssVersion) {
|
|
273
|
+
// Versioned URL for saved CSS - enables immutable caching
|
|
274
|
+
return `${base}&v=${cssVersion}`;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
// No CSS exists for this customer
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
280
|
+
}, [cssVersion]);
|
|
263
281
|
// Load bundle (JS + CSS)
|
|
264
282
|
const loadBundle = useCallback(async (bundleUrl, loadCSS = true) => {
|
|
265
283
|
const loader = getBundleLoader();
|
|
@@ -279,14 +297,18 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
279
297
|
if (cssUrl) {
|
|
280
298
|
const cssLoader = getCSSLoader();
|
|
281
299
|
if (isTemp) {
|
|
282
|
-
// Temp/preview CSS -
|
|
283
|
-
cssLoader.
|
|
300
|
+
// Temp/preview CSS - cache busting already in URL
|
|
301
|
+
cssLoader.load(cssUrl);
|
|
284
302
|
}
|
|
285
303
|
else {
|
|
286
|
-
// Saved CSS -
|
|
304
|
+
// Saved CSS with version - browser can cache immutably
|
|
287
305
|
cssLoader.load(cssUrl);
|
|
288
306
|
}
|
|
289
307
|
}
|
|
308
|
+
else if (!isTemp) {
|
|
309
|
+
// No saved CSS exists - unload any existing CSS
|
|
310
|
+
getCSSLoader().unload();
|
|
311
|
+
}
|
|
290
312
|
}
|
|
291
313
|
}
|
|
292
314
|
catch (error) {
|
|
@@ -413,21 +435,21 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
413
435
|
await codeClientRef.current?.sendCode(query);
|
|
414
436
|
}, []);
|
|
415
437
|
const saveCode = useCallback(async () => {
|
|
416
|
-
|
|
438
|
+
if (codeClientRef.current) {
|
|
439
|
+
const result = await codeClientRef.current.saveCode();
|
|
440
|
+
// Update CSS version from save response
|
|
441
|
+
if (result && result.css_version) {
|
|
442
|
+
setCSSVersion(result.css_version);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
// Load saved bundle - CSS will use new version in URL
|
|
417
446
|
await loadSavedBundle();
|
|
418
|
-
|
|
419
|
-
const cssUrl = buildCSSUrl(false);
|
|
420
|
-
if (cssUrl)
|
|
421
|
-
await getCSSLoader().invalidateAndReload(cssUrl);
|
|
422
|
-
}, [loadSavedBundle, getCSSLoader, buildCSSUrl]);
|
|
447
|
+
}, [loadSavedBundle]);
|
|
423
448
|
const abandonCode = useCallback(async () => {
|
|
424
449
|
await codeClientRef.current?.abandonCode();
|
|
450
|
+
// Load saved bundle - cssVersion state unchanged, will use existing version
|
|
425
451
|
await loadSavedBundle();
|
|
426
|
-
|
|
427
|
-
const cssUrl = buildCSSUrl(false);
|
|
428
|
-
if (cssUrl)
|
|
429
|
-
await getCSSLoader().invalidateAndReload(cssUrl);
|
|
430
|
-
}, [loadSavedBundle, getCSSLoader, buildCSSUrl]);
|
|
452
|
+
}, [loadSavedBundle]);
|
|
431
453
|
const getCheckpoints = useCallback(async () => {
|
|
432
454
|
return codeClientRef.current?.getCheckpoints() ?? [];
|
|
433
455
|
}, []);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dynim-react",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.72",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"dev": "tsc --watch"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"dynim-core": "^1.0.
|
|
30
|
+
"dynim-core": "^1.0.46"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"react": ">=17.0.0",
|