dynim-react 1.0.40 → 1.0.41
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
CHANGED
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
import { type ReactNode } from 'react';
|
|
10
10
|
import type { CodeMessage } from 'dynim-core';
|
|
11
11
|
export interface DynimConfig {
|
|
12
|
+
/** JWT session token for authentication (avoids HTTP call on mount) */
|
|
13
|
+
sessionToken?: string;
|
|
12
14
|
/** Function to fetch a new session when current one expires */
|
|
13
15
|
getSession?: () => Promise<{
|
|
14
16
|
token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynimProvider.d.ts","sourceRoot":"","sources":["../src/DynimProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAc,EAQZ,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAKV,WAAW,EAEZ,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,WAAW;IAC1B,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,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,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,
|
|
1
|
+
{"version":3,"file":"DynimProvider.d.ts","sourceRoot":"","sources":["../src/DynimProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAc,EAQZ,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAKV,WAAW,EAEZ,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,WAAW;IAC1B,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,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,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,CAsYlC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C"}
|
package/dist/DynimProvider.js
CHANGED
|
@@ -88,11 +88,17 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
88
88
|
}, []);
|
|
89
89
|
// Get auth token
|
|
90
90
|
const getAuthToken = useCallback(async () => {
|
|
91
|
+
const { sessionToken, getSession } = configRef.current;
|
|
92
|
+
// Fast path: static token from config (avoids HTTP call)
|
|
93
|
+
if (sessionToken) {
|
|
94
|
+
return sessionToken;
|
|
95
|
+
}
|
|
96
|
+
// Fast path: return cached token
|
|
91
97
|
if (cachedTokenRef.current)
|
|
92
98
|
return cachedTokenRef.current;
|
|
99
|
+
// Reuse in-flight promise if one exists
|
|
93
100
|
if (tokenPromiseRef.current)
|
|
94
101
|
return tokenPromiseRef.current;
|
|
95
|
-
const { getSession } = configRef.current;
|
|
96
102
|
if (getSession) {
|
|
97
103
|
tokenPromiseRef.current = (async () => {
|
|
98
104
|
try {
|
|
@@ -236,14 +242,32 @@ export function DynimProvider({ children, config = {}, }) {
|
|
|
236
242
|
console.warn('[DynimProvider] Failed to fetch theme:', error);
|
|
237
243
|
}
|
|
238
244
|
}, [getAuthToken]);
|
|
239
|
-
//
|
|
240
|
-
//
|
|
241
|
-
// the consuming app explicitly triggers it
|
|
245
|
+
// Auto-load saved bundle on mount if sessionToken is provided
|
|
246
|
+
// This avoids HTTP calls (getSession) while still loading saved bundles
|
|
242
247
|
useEffect(() => {
|
|
243
|
-
if (
|
|
244
|
-
|
|
248
|
+
if (hasAttemptedInitialLoadRef.current)
|
|
249
|
+
return;
|
|
250
|
+
hasAttemptedInitialLoadRef.current = true;
|
|
251
|
+
const { sessionToken } = configRef.current;
|
|
252
|
+
// No token = user not logged in, skip bundle load
|
|
253
|
+
if (!sessionToken) {
|
|
245
254
|
setIsInitialLoadComplete(true);
|
|
255
|
+
return;
|
|
246
256
|
}
|
|
257
|
+
// Load bundle with the provided token
|
|
258
|
+
const doInitialLoad = async () => {
|
|
259
|
+
try {
|
|
260
|
+
await loadBundleRef.current?.('/api/code/bundle');
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
// Errors handled in loadBundle (404 = no bundle, etc.)
|
|
264
|
+
console.log('[DynimProvider] Initial bundle load:', error.message);
|
|
265
|
+
}
|
|
266
|
+
finally {
|
|
267
|
+
setIsInitialLoadComplete(true);
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
doInitialLoad();
|
|
247
271
|
}, []);
|
|
248
272
|
// Load saved bundle
|
|
249
273
|
const loadSavedBundle = useCallback(async () => {
|