@thewhateverapp/platform 0.12.3 → 0.12.5
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/env.d.ts +12 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +24 -1
- package/dist/env.js.map +1 -1
- package/dist/tile-context/index.d.ts.map +1 -1
- package/dist/tile-context/index.js +66 -3
- package/dist/tile-context/index.js.map +1 -1
- package/package.json +1 -1
package/dist/env.d.ts
CHANGED
|
@@ -87,6 +87,18 @@ export declare function resetPlatformEnv(): void;
|
|
|
87
87
|
export declare function configurePreviewMode(enabled: boolean): void;
|
|
88
88
|
/**
|
|
89
89
|
* Check if preview mode is enabled.
|
|
90
|
+
*
|
|
91
|
+
* Checks both the module-level flag and a global flag. The global flag
|
|
92
|
+
* (globalThis.__PLATFORM_PREVIEW_MODE__) allows preview environments to
|
|
93
|
+
* enable preview mode even when module scope isolation prevents the
|
|
94
|
+
* module-level flag from being shared.
|
|
95
|
+
*
|
|
96
|
+
* Preview environments can set the global flag before loading the SDK:
|
|
97
|
+
* ```javascript
|
|
98
|
+
* globalThis.__PLATFORM_PREVIEW_MODE__ = true;
|
|
99
|
+
* // or in browser:
|
|
100
|
+
* window.__PLATFORM_PREVIEW_MODE__ = true;
|
|
101
|
+
* ```
|
|
90
102
|
*/
|
|
91
103
|
export declare function isPreviewMode(): boolean;
|
|
92
104
|
export {};
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,WAAW,GAAG,MAAM,WAAW,CAAC;AAKrC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAEhE;AAaD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAqB5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,WAAW,GAAG,MAAM,WAAW,CAAC;AAKrC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAEhE;AAaD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAqB5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAUvC"}
|
package/dist/env.js
CHANGED
|
@@ -110,14 +110,37 @@ export function resetPlatformEnv() {
|
|
|
110
110
|
*/
|
|
111
111
|
export function configurePreviewMode(enabled) {
|
|
112
112
|
previewMode = enabled;
|
|
113
|
+
// Also set global flag for cross-module-scope detection
|
|
114
|
+
if (typeof globalThis !== 'undefined') {
|
|
115
|
+
globalThis.__PLATFORM_PREVIEW_MODE__ = enabled;
|
|
116
|
+
}
|
|
113
117
|
if (enabled) {
|
|
114
118
|
console.log('[PLATFORM-SDK] Preview mode enabled - using in-memory mock implementations');
|
|
115
119
|
}
|
|
116
120
|
}
|
|
117
121
|
/**
|
|
118
122
|
* Check if preview mode is enabled.
|
|
123
|
+
*
|
|
124
|
+
* Checks both the module-level flag and a global flag. The global flag
|
|
125
|
+
* (globalThis.__PLATFORM_PREVIEW_MODE__) allows preview environments to
|
|
126
|
+
* enable preview mode even when module scope isolation prevents the
|
|
127
|
+
* module-level flag from being shared.
|
|
128
|
+
*
|
|
129
|
+
* Preview environments can set the global flag before loading the SDK:
|
|
130
|
+
* ```javascript
|
|
131
|
+
* globalThis.__PLATFORM_PREVIEW_MODE__ = true;
|
|
132
|
+
* // or in browser:
|
|
133
|
+
* window.__PLATFORM_PREVIEW_MODE__ = true;
|
|
134
|
+
* ```
|
|
119
135
|
*/
|
|
120
136
|
export function isPreviewMode() {
|
|
121
|
-
|
|
137
|
+
// Check module-level flag first
|
|
138
|
+
if (previewMode)
|
|
139
|
+
return true;
|
|
140
|
+
// Check global flag (set by preview environments or configurePreviewMode)
|
|
141
|
+
if (typeof globalThis !== 'undefined' && globalThis.__PLATFORM_PREVIEW_MODE__) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
122
145
|
}
|
|
123
146
|
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAmBH,IAAI,WAAW,GAAuB,IAAI,CAAC;AAC3C,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAqB;IACxD,WAAW,GAAG,QAAQ,CAAC;AACzB,CAAC;AAED,wFAAwF;AACxF,SAAS,UAAU,CAAC,UAAkB;IACpC,IAAI,CAAC;QACH,mDAAmD;QACnD,8DAA8D;QAC9D,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,iDAAiD;QACjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,CAAC,wBAAwB,CAAkE,CAAC;YACvH,IAAI,QAAQ,EAAE,oBAAoB,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;gBAC5C,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;oBACb,OAAO,GAAG,CAAC,GAAG,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;QAED,MAAM,IAAI,KAAK,CACb,mCAAmC;YACjC,mGAAmG,CACtG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,WAAW,GAAG,IAAI,CAAC;IACnB,WAAW,GAAG,KAAK,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,WAAW,GAAG,OAAO,CAAC;IACtB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAmBH,IAAI,WAAW,GAAuB,IAAI,CAAC;AAC3C,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAqB;IACxD,WAAW,GAAG,QAAQ,CAAC;AACzB,CAAC;AAED,wFAAwF;AACxF,SAAS,UAAU,CAAC,UAAkB;IACpC,IAAI,CAAC;QACH,mDAAmD;QACnD,8DAA8D;QAC9D,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE,4BAA4B,CAAC,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,iDAAiD;QACjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,CAAC,wBAAwB,CAAkE,CAAC;YACvH,IAAI,QAAQ,EAAE,oBAAoB,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC;gBAC5C,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;oBACb,OAAO,GAAG,CAAC,GAAG,CAAC;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;QAED,MAAM,IAAI,KAAK,CACb,mCAAmC;YACjC,mGAAmG,CACtG,CAAC;IACJ,CAAC;IACD,OAAO,WAAW,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,WAAW,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,WAAW,GAAG,IAAI,CAAC;IACnB,WAAW,GAAG,KAAK,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,WAAW,GAAG,OAAO,CAAC;IACtB,wDAAwD;IACxD,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE,CAAC;QACrC,UAAsC,CAAC,yBAAyB,GAAG,OAAO,CAAC;IAC9E,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa;IAC3B,gCAAgC;IAChC,IAAI,WAAW;QAAE,OAAO,IAAI,CAAC;IAE7B,0EAA0E;IAC1E,IAAI,OAAO,UAAU,KAAK,WAAW,IAAK,UAAsC,CAAC,yBAAyB,EAAE,CAAC;QAC3G,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tile-context/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAEnB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tile-context/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAGjB,mBAAmB,SAAS,CAAC;AAmI7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACvC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAkHtB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
|
|
@@ -21,9 +21,12 @@
|
|
|
21
21
|
* }
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
+
import { isPreviewMode } from '../env';
|
|
24
25
|
// In-memory cache for validated tokens
|
|
25
26
|
// Key: token, Value: { context, expiresAt }
|
|
26
27
|
const tokenCache = new Map();
|
|
28
|
+
// Stable anonymous ID for preview mode (persists across requests in same session)
|
|
29
|
+
let previewAnonymousId = null;
|
|
27
30
|
// Default options
|
|
28
31
|
const DEFAULT_OPTIONS = {
|
|
29
32
|
tokenHeader: 'x-tile-token',
|
|
@@ -31,6 +34,37 @@ const DEFAULT_OPTIONS = {
|
|
|
31
34
|
cache: true,
|
|
32
35
|
cacheTtl: 60000, // 1 minute
|
|
33
36
|
};
|
|
37
|
+
/**
|
|
38
|
+
* Generate a stable anonymous ID for preview mode
|
|
39
|
+
* Uses session-stable ID instead of per-request generation
|
|
40
|
+
*/
|
|
41
|
+
function getPreviewAnonymousId() {
|
|
42
|
+
if (!previewAnonymousId) {
|
|
43
|
+
// Generate once per session using a stable seed
|
|
44
|
+
previewAnonymousId = `anon_preview_${Math.random().toString(36).substring(2, 10)}`;
|
|
45
|
+
console.log('[getTileContext] Generated preview anonymous ID:', previewAnonymousId);
|
|
46
|
+
}
|
|
47
|
+
return previewAnonymousId;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Decode a JWT payload without verification (for preview mode only)
|
|
51
|
+
* In preview mode, we trust the token from the parent window
|
|
52
|
+
*/
|
|
53
|
+
function decodeJwtPayload(token) {
|
|
54
|
+
try {
|
|
55
|
+
// JWT format: header.payload.signature
|
|
56
|
+
const parts = token.split('.');
|
|
57
|
+
if (parts.length !== 3)
|
|
58
|
+
return null;
|
|
59
|
+
// Decode base64url payload
|
|
60
|
+
const payload = parts[1];
|
|
61
|
+
const decoded = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));
|
|
62
|
+
return JSON.parse(decoded);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
34
68
|
/**
|
|
35
69
|
* Generate a consistent anonymous user ID from request characteristics
|
|
36
70
|
* Uses IP + User-Agent hash for anonymous tracking
|
|
@@ -143,9 +177,12 @@ export async function getTileContext(request, options) {
|
|
|
143
177
|
: headers.get('x-tile-id') || 'unknown';
|
|
144
178
|
// No token = anonymous context
|
|
145
179
|
if (!token) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
180
|
+
// In preview mode, use stable anonymous ID
|
|
181
|
+
const anonymousId = isPreviewMode()
|
|
182
|
+
? getPreviewAnonymousId()
|
|
183
|
+
: (request instanceof Request
|
|
184
|
+
? generateAnonymousId(request)
|
|
185
|
+
: `anon_${Date.now().toString(36)}`);
|
|
149
186
|
return {
|
|
150
187
|
authenticated: false,
|
|
151
188
|
userId: anonymousId,
|
|
@@ -153,6 +190,32 @@ export async function getTileContext(request, options) {
|
|
|
153
190
|
scopes: [],
|
|
154
191
|
};
|
|
155
192
|
}
|
|
193
|
+
// In preview mode, decode JWT locally without validation
|
|
194
|
+
// Preview tokens come from the trusted parent window
|
|
195
|
+
if (isPreviewMode()) {
|
|
196
|
+
const payload = decodeJwtPayload(token);
|
|
197
|
+
if (payload?.userId) {
|
|
198
|
+
console.log('[getTileContext] Preview mode - decoded token locally:', {
|
|
199
|
+
userId: payload.userId,
|
|
200
|
+
tileId: payload.tileId || tileId,
|
|
201
|
+
});
|
|
202
|
+
return {
|
|
203
|
+
authenticated: true,
|
|
204
|
+
userId: payload.userId,
|
|
205
|
+
tileId: payload.tileId || tileId,
|
|
206
|
+
scopes: payload.scopes || [],
|
|
207
|
+
expiresAt: payload.exp ? new Date(payload.exp * 1000) : undefined,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
// Token exists but couldn't decode - use stable preview anonymous ID
|
|
211
|
+
console.log('[getTileContext] Preview mode - token decode failed, using anonymous ID');
|
|
212
|
+
return {
|
|
213
|
+
authenticated: false,
|
|
214
|
+
userId: getPreviewAnonymousId(),
|
|
215
|
+
tileId,
|
|
216
|
+
scopes: [],
|
|
217
|
+
};
|
|
218
|
+
}
|
|
156
219
|
// Check cache first
|
|
157
220
|
if (opts.cache) {
|
|
158
221
|
const cached = tokenCache.get(token);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tile-context/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tile-context/index.ts"],"names":[],"mappings":"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"}
|