@plasmicapp/loader-core 1.0.138-beta.0 → 1.0.139

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/index.d.ts CHANGED
@@ -50,18 +50,26 @@ export { PageMetadata }
50
50
 
51
51
  export { PlasmicModulesFetcher }
52
52
 
53
+ /**
54
+ * @deprecated Built-in tracking is disabled. This class remains only for
55
+ * compatibility and will be removed in a future release.
56
+ *
57
+ * All methods are strict no-ops.
58
+ */
53
59
  export declare class PlasmicTracker {
54
- private opts;
55
- private eventQueue;
56
- private fetch;
57
- constructor(opts: TrackerOptions);
58
- trackRender(opts?: TrackRenderOptions): void;
60
+ constructor(_opts: TrackerOptions);
61
+ /**
62
+ * @deprecated No-op.
63
+ */
64
+ trackRender(_opts?: TrackRenderOptions): void;
65
+ /**
66
+ * @deprecated No-op.
67
+ */
59
68
  trackFetch(): void;
60
- trackConversion(value?: number): void;
61
- private getProperties;
62
- private enqueue;
63
- private getContextMeta;
64
- private sendEvents;
69
+ /**
70
+ * @deprecated No-op.
71
+ */
72
+ trackConversion(_value?: number): void;
65
73
  }
66
74
 
67
75
  export { ProjectMeta }
@@ -88,14 +96,21 @@ export { SegmentSlice }
88
96
 
89
97
  export { Split }
90
98
 
99
+ /**
100
+ * @deprecated Built-in tracking is disabled. This type remains only for
101
+ * compatibility and will be removed in a future release.
102
+ */
91
103
  declare interface TrackerOptions {
92
104
  projectIds: string[];
93
- host?: string;
94
105
  platform?: string;
95
106
  preview?: boolean;
96
107
  nativeFetch?: boolean;
97
108
  }
98
109
 
110
+ /**
111
+ * @deprecated Built-in tracking is disabled. This type remains only for
112
+ * compatibility and will be removed in a future release.
113
+ */
99
114
  declare interface TrackerRenderProperties {
100
115
  rootProjectId?: string;
101
116
  rootComponentId?: string;
@@ -104,6 +119,10 @@ declare interface TrackerRenderProperties {
104
119
  projectIds: string[];
105
120
  }
106
121
 
122
+ /**
123
+ * @deprecated Built-in tracking is disabled. This type remains only for
124
+ * compatibility and will be removed in a future release.
125
+ */
107
126
  export declare interface TrackRenderOptions {
108
127
  renderCtx?: TrackerRenderProperties;
109
128
  variation?: Record<string, string>;
package/dist/index.esm.js CHANGED
@@ -1,43 +1,3 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __async = (__this, __arguments, generator) => {
21
- return new Promise((resolve, reject) => {
22
- var fulfilled = (value) => {
23
- try {
24
- step(generator.next(value));
25
- } catch (e) {
26
- reject(e);
27
- }
28
- };
29
- var rejected = (value) => {
30
- try {
31
- step(generator.throw(value));
32
- } catch (e) {
33
- reject(e);
34
- }
35
- };
36
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
- step((generator = generator.apply(__this, __arguments)).next());
38
- });
39
- };
40
-
41
1
  // src/index.ts
42
2
  import { Api, PlasmicModulesFetcher } from "@plasmicapp/loader-fetcher";
43
3
 
@@ -275,257 +235,25 @@ function resolvePath(path, from) {
275
235
  }
276
236
 
277
237
  // src/tracker/index.ts
278
- import unfetch from "@plasmicapp/isomorphic-unfetch";
279
-
280
- // src/tracker/utils.ts
281
- var isBrowser2 = typeof window !== "undefined" && window != null && typeof window.document !== "undefined";
282
- function getPlasmicCookieValues() {
283
- if (!isBrowser2) {
284
- return {};
285
- }
286
- return Object.fromEntries(
287
- document.cookie.split("; ").filter((cookie) => cookie.includes("plasmic:")).map((cookie) => cookie.split("=")).map(([key, value]) => [key.split(":")[1], value])
288
- );
289
- }
290
- function getVariationCookieValues() {
291
- const cookies = getPlasmicCookieValues();
292
- return Object.fromEntries(
293
- Object.keys(cookies).map((key) => [key.split(".")[1], cookies[key]]).filter((val) => !!val[0])
294
- );
295
- }
296
- function getDistinctId() {
297
- if (!isBrowser2) {
298
- return "LOADER-SERVER";
299
- }
300
- return "LOADER-CLIENT";
301
- }
302
- function getCampaignParams() {
303
- const { location } = window;
304
- const params = {};
305
- try {
306
- const url = new URL(location.href);
307
- const CAMPAIGN_KEYWORDS = [
308
- "utm_source",
309
- "utm_medium",
310
- "utm_campaign",
311
- "utm_content",
312
- "utm_term",
313
- "gclid"
314
- ];
315
- CAMPAIGN_KEYWORDS.forEach((keyword) => {
316
- const value = url.searchParams.get(keyword);
317
- if (value) {
318
- params[keyword] = value;
319
- }
320
- });
321
- } catch (err2) {
322
- }
323
- return params;
324
- }
325
- function getLocationMeta() {
326
- const { location } = window;
327
- const { referrer } = document;
328
- return __spreadValues({
329
- url: location.href,
330
- host: location.host,
331
- pathname: location.pathname,
332
- referrer
333
- }, getCampaignParams());
334
- }
335
- function getScreenMeta() {
336
- const { screen } = window;
337
- return {
338
- screen_height: screen.height,
339
- screen_width: screen.width,
340
- viewport_height: window.innerHeight,
341
- viewport_width: window.innerWidth
342
- };
343
- }
344
- function getOS(userAgent) {
345
- if (/Windows/i.test(userAgent)) {
346
- if (/Phone/.test(userAgent) || /WPDesktop/.test(userAgent)) {
347
- return "Windows Phone";
348
- }
349
- return "Windows";
350
- } else if (/(iPhone|iPad|iPod)/.test(userAgent)) {
351
- return "iOS";
352
- } else if (/Android/.test(userAgent)) {
353
- return "Android";
354
- } else if (/(BlackBerry|PlayBook|BB10)/i.test(userAgent)) {
355
- return "BlackBerry";
356
- } else if (/Mac/i.test(userAgent)) {
357
- return "Mac OS X";
358
- } else if (/Linux/.test(userAgent)) {
359
- return "Linux";
360
- } else if (/CrOS/.test(userAgent)) {
361
- return "Chrome OS";
362
- } else {
363
- return "";
364
- }
365
- }
366
- function getDeviceInfo(userAgent) {
367
- const PATTERNS = [
368
- {
369
- device: "iPhone",
370
- patterns: [/iPhone/]
371
- },
372
- {
373
- device: "iPad",
374
- patterns: [/iPad/]
375
- },
376
- {
377
- device: "iPod Touch",
378
- patterns: [/iPod/]
379
- },
380
- {
381
- device: "Windows Phone",
382
- patterns: [/Windows Phone/i, /WPDesktop/]
383
- },
384
- {
385
- device: "Android",
386
- patterns: [/Android/]
387
- }
388
- ];
389
- const match = PATTERNS.find(
390
- (pattern) => pattern.patterns.some((expr) => expr.test(userAgent))
391
- );
392
- const device = match == null ? void 0 : match.device;
393
- return {
394
- device: device != null ? device : "",
395
- deviceType: device ? "Mobile" : "Desktop",
396
- os: getOS(userAgent)
397
- };
398
- }
399
- function getUserAgentMeta() {
400
- const { navigator } = window;
401
- const { userAgent } = navigator;
402
- return __spreadValues({}, getDeviceInfo(userAgent));
403
- }
404
- function getWindowMeta() {
405
- if (!isBrowser2) {
406
- return {};
407
- }
408
- return __spreadValues(__spreadValues(__spreadValues({}, getLocationMeta()), getScreenMeta()), getUserAgentMeta());
409
- }
410
- var isProduction = process.env.NODE_ENV === "production";
411
- function getEnvMeta() {
412
- return {
413
- isBrowser: isBrowser2,
414
- isProduction
415
- };
416
- }
417
- function rawSplitVariation(variation) {
418
- const rawVariations = {};
419
- Object.keys(variation).forEach((variationKey) => {
420
- const [, splitId] = variationKey.split(".");
421
- if (splitId) {
422
- rawVariations[splitId] = variation[variationKey];
423
- }
424
- });
425
- return rawVariations;
426
- }
427
- var POLL_TIME = 5e3;
428
- function throttled(func2) {
429
- let timerId = void 0;
430
- return (param) => {
431
- if (timerId) {
432
- return;
433
- }
434
- if (isBrowser2) {
435
- timerId = window.requestAnimationFrame(() => {
436
- timerId = void 0;
437
- func2(param);
438
- });
439
- } else {
440
- timerId = setTimeout(() => {
441
- timerId = void 0;
442
- func2(param);
443
- }, POLL_TIME);
444
- }
445
- };
446
- }
447
-
448
- // src/tracker/index.ts
449
- var API_ENDPOINT = "https://analytics.plasmic.app/capture";
450
- var API_PUBLIC_KEY = "phc_BRvYTAoMoam9fDHfrIneF67KdtMJagLVVCM6ELNYd4n";
451
- var TRACKER_VERSION = 4;
452
238
  var PlasmicTracker = class {
453
- constructor(opts2) {
454
- this.opts = opts2;
455
- this.eventQueue = [];
456
- this.sendEvents = throttled((transport) => __async(this, null, function* () {
457
- if (this.eventQueue.length === 0) {
458
- return;
459
- }
460
- const events = [...this.eventQueue];
461
- this.eventQueue.length = 0;
462
- const body = {
463
- api_key: API_PUBLIC_KEY,
464
- batch: events
465
- };
466
- try {
467
- const stringBody = JSON.stringify(body);
468
- if (transport === "beacon") {
469
- window.navigator.sendBeacon(API_ENDPOINT, stringBody);
470
- } else {
471
- this.fetch(API_ENDPOINT, {
472
- method: "POST",
473
- headers: {
474
- Accept: "application/json"
475
- },
476
- body: stringBody
477
- }).then(() => {
478
- }).catch(() => {
479
- });
480
- }
481
- } catch (err2) {
482
- }
483
- }));
484
- this.fetch = (opts2.nativeFetch && globalThis.fetch ? globalThis.fetch : unfetch).bind(globalThis);
239
+ // Preserve constructor signature for compatibility, but do not retain
240
+ // instance state to avoid unused-property diagnostics.
241
+ constructor(_opts) {
485
242
  }
486
- trackRender(opts2) {
487
- var _a, _b;
488
- this.enqueue({
489
- event: "$render",
490
- properties: __spreadValues(__spreadValues(__spreadValues({}, this.getProperties()), (_a = opts2 == null ? void 0 : opts2.renderCtx) != null ? _a : {}), rawSplitVariation((_b = opts2 == null ? void 0 : opts2.variation) != null ? _b : {}))
491
- });
243
+ /**
244
+ * @deprecated No-op.
245
+ */
246
+ trackRender(_opts) {
492
247
  }
248
+ /**
249
+ * @deprecated No-op.
250
+ */
493
251
  trackFetch() {
494
- this.enqueue({
495
- event: "$fetch",
496
- properties: this.getProperties()
497
- });
498
- }
499
- trackConversion(value = 0) {
500
- this.enqueue({
501
- event: "$conversion",
502
- properties: __spreadProps(__spreadValues({}, this.getProperties()), {
503
- value
504
- })
505
- });
506
252
  }
507
- getProperties() {
508
- var _a;
509
- return __spreadProps(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
510
- distinct_id: getDistinctId()
511
- }, getWindowMeta()), getEnvMeta()), this.getContextMeta()), getVariationCookieValues()), {
512
- timestamp: (_a = Date.now()) != null ? _a : +/* @__PURE__ */ new Date(),
513
- trackerVersion: TRACKER_VERSION
514
- });
515
- }
516
- enqueue(event) {
517
- if (this.opts.__plasmicTrackerDisabled) {
518
- return;
519
- }
520
- this.eventQueue.push(event);
521
- this.sendEvents("fetch");
522
- }
523
- getContextMeta() {
524
- return {
525
- platform: this.opts.platform,
526
- preview: this.opts.preview,
527
- projectIds: this.opts.projectIds
528
- };
253
+ /**
254
+ * @deprecated No-op.
255
+ */
256
+ trackConversion(_value = 0) {
529
257
  }
530
258
  };
531
259
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/deps-graph.ts", "../src/bundles.ts", "../src/registry.ts", "../src/tracker/index.ts", "../src/tracker/utils.ts"],
4
- "sourcesContent": ["export { Api, PlasmicModulesFetcher } from \"@plasmicapp/loader-fetcher\";\nexport type {\n AssetModule,\n CodeModule,\n ComponentMeta,\n ExperimentSlice,\n FontMeta,\n GlobalGroupMeta,\n LoaderBundleCache,\n LoaderBundleOutput,\n LoaderHtmlOutput,\n PageMeta,\n PageMetadata,\n ProjectMeta,\n SegmentSlice,\n Split,\n} from \"@plasmicapp/loader-fetcher\";\nexport { getBundleSubset } from \"./bundles\";\nexport { Registry } from \"./registry\";\nexport { PlasmicTracker } from \"./tracker\";\nexport type { TrackRenderOptions } from \"./tracker\";\n", "import { LoaderBundleOutput } from '@plasmicapp/loader-fetcher';\n\nexport class DepsGraph {\n private dependsOn: Record<string, string[]> = {};\n private dependedBy: Record<string, string[]> = {};\n constructor(\n private bundle: LoaderBundleOutput,\n private browserBuild: boolean\n ) {\n this.rebuildGraph();\n }\n\n getTransitiveDependers(name: string) {\n return this.transitiveCrawl(name, this.dependedBy);\n }\n\n getTransitiveDeps(name: string) {\n if (!(name in this.dependsOn)) {\n return [];\n }\n\n return this.transitiveCrawl(name, this.dependsOn);\n }\n\n private transitiveCrawl(name: string, edges: Record<string, string[]>) {\n const deps = new Set<string>();\n\n const crawl = (dep: string) => {\n if (deps.has(dep)) {\n return;\n }\n deps.add(dep);\n for (const subdep of edges[dep] ?? []) {\n crawl(subdep);\n }\n };\n\n for (const dep of edges[name]) {\n crawl(dep);\n }\n return Array.from(deps);\n }\n\n private rebuildGraph() {\n this.dependedBy = {};\n this.dependsOn = {};\n for (const mod of this.browserBuild\n ? this.bundle.modules.browser\n : this.bundle.modules.server) {\n if (mod.type === 'code') {\n for (const imported of mod.imports) {\n if (!(mod.fileName in this.dependsOn)) {\n this.dependsOn[mod.fileName] = [imported];\n } else {\n this.dependsOn[mod.fileName].push(imported);\n }\n\n if (!(imported in this.dependedBy)) {\n this.dependedBy[imported] = [mod.fileName];\n } else {\n this.dependedBy[imported].push(mod.fileName);\n }\n }\n }\n }\n }\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-fetcher\";\nimport { DepsGraph } from \"./deps-graph\";\n\n/**\n * Get sub-bundle including only modules that are reachable from `names`.\n * @param opts.target by default, will target the browser modules. Can request\n * the server modules instead.\n */\nexport function getBundleSubset(\n bundle: LoaderBundleOutput,\n names: string[],\n opts?: {\n target?: \"browser\" | \"server\";\n }\n): LoaderBundleOutput {\n const namesSet = new Set(names);\n const target = opts?.target ?? \"browser\";\n\n const forBrowser = target === \"browser\";\n const graph = new DepsGraph(bundle, forBrowser);\n const deps = new Set(names.flatMap((name) => graph.getTransitiveDeps(name)));\n const isSubModule = (fileName: string) =>\n deps.has(fileName) || namesSet.has(fileName);\n const modules = bundle.modules[target];\n const filteredModules = modules.filter((mod) => isSubModule(mod.fileName));\n const filteredComponents = bundle.components.filter((c) =>\n isSubModule(c.entry)\n );\n\n const filteredComponentsIds = new Set(filteredComponents.map((c) => c.id));\n\n // Make deep copy of filteredIds to avoid mutating original bundle\n const filteredIds = Object.fromEntries(\n Object.entries(bundle.filteredIds).map(([k, v]) => [k, [...v]])\n );\n bundle.components\n .filter((c) => !filteredComponentsIds.has(c.id))\n .forEach((component) => {\n filteredIds[component.projectId] = filteredIds[component.projectId] ?? [];\n if (!filteredIds[component.projectId].includes(component.id)) {\n filteredIds[component.projectId].push(component.id);\n }\n });\n\n return {\n modules: {\n browser: forBrowser ? filteredModules : [],\n server: forBrowser ? [] : filteredModules,\n },\n components: filteredComponents,\n globalGroups: bundle.globalGroups,\n projects: bundle.projects,\n activeSplits: bundle.activeSplits,\n bundleKey: bundle.bundleKey ?? null,\n deferChunksByDefault: bundle.deferChunksByDefault,\n disableRootLoadingBoundaryByDefault:\n bundle.disableRootLoadingBoundaryByDefault,\n filteredIds,\n };\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-fetcher\";\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n window != null &&\n typeof window.document !== \"undefined\";\n\nfunction isModuleBundlePromiseSet(name: string) {\n return (\n (globalThis as any).__PlasmicBundlePromises &&\n !!(globalThis as any).__PlasmicBundlePromises[name] &&\n !!(globalThis as any).__PlasmicBundlePromises[name].then\n );\n}\n\nexport class Registry {\n private loadedModules: Record<string, any> = {};\n private registeredModules: Record<string, any> = {};\n private modules: Record<string, string> = {};\n\n constructor() {}\n\n register(name: string, module: any) {\n this.registeredModules[name] = module;\n }\n\n isEmpty() {\n return Object.keys(this.loadedModules).length === 0;\n }\n\n clear() {\n this.loadedModules = {};\n }\n\n getRegisteredModule(name: string) {\n return this.registeredModules[name];\n }\n\n hasModule(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return true;\n }\n\n if (name in this.modules) {\n return true;\n }\n\n if (\n (globalThis as any).__PLASMIC_CHUNKS &&\n !!(globalThis as any).__PLASMIC_CHUNKS[name]\n ) {\n return true;\n }\n\n if (isModuleBundlePromiseSet(name)) {\n return true;\n }\n\n return false;\n }\n\n load(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return this.registeredModules[name];\n }\n\n if (name in this.loadedModules) {\n return this.loadedModules[name];\n }\n\n if (\n !this.modules[name] &&\n (globalThis as any).__PLASMIC_CHUNKS &&\n !!(globalThis as any).__PLASMIC_CHUNKS[name]\n ) {\n this.modules[name] = (globalThis as any).__PLASMIC_CHUNKS[name];\n }\n\n if (!this.modules[name] && isModuleBundlePromiseSet(name)) {\n throw (globalThis as any).__PlasmicBundlePromises[name];\n }\n\n if (!(name in this.modules)) {\n throw new Error(`Unknown module ${name}`);\n }\n\n const code = this.modules[name];\n\n const requireFn = isBrowser\n ? (dep: string) => {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n }\n : (dep: string) => {\n try {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n } catch (err) {\n try {\n // Might be a nodeJs module such as tty\n return eval(\"require\")(dep);\n } catch {\n throw err;\n }\n }\n };\n\n let func;\n try {\n func = new Function(\"require\", \"exports\", code);\n } catch (err) {\n throw new Error(`PLASMIC: Failed to create function for ${name}: ${err}`);\n }\n const exports = {};\n this.loadedModules[name] = exports;\n try {\n func(requireFn, exports);\n } catch (err: any) {\n // Delete exports from loadedModules, so subsequent uses don't incorrectly\n // believe that this module has been loaded.\n delete this.loadedModules[name];\n if (!(err instanceof Error) && !!err && !!err.then) {\n // Re-throw the Promise\n throw err;\n }\n throw new Error(`PLASMIC: Failed to load ${name}: ${err}`);\n }\n return exports;\n }\n\n updateModules(bundle: LoaderBundleOutput) {\n let updated = false;\n for (const mod of isBrowser\n ? bundle.modules.browser\n : bundle.modules.server) {\n if (\n mod.type === \"code\" &&\n !!mod.code &&\n mod.code !== this.modules[mod.fileName]\n ) {\n this.modules[mod.fileName] = mod.code;\n if (!(globalThis as any).__PLASMIC_CHUNKS) {\n (globalThis as any).__PLASMIC_CHUNKS = {};\n }\n (globalThis as any).__PLASMIC_CHUNKS[mod.fileName] = mod.code;\n updated = true;\n }\n }\n\n if (updated) {\n // TODO: do something more efficient than tearing everything down?\n this.clear();\n }\n }\n}\n\nfunction resolvePath(path: string, from: string) {\n const fromParts = from.split(\"/\");\n const pathParts = path.split(\"/\");\n if (pathParts.length === 0) {\n return path;\n }\n\n if (pathParts[0] === \".\") {\n return [\n ...fromParts.slice(0, fromParts.length - 1),\n ...pathParts.slice(1),\n ].join(\"/\");\n } else if (pathParts[0] === \"..\") {\n let count = 0;\n for (const part of pathParts) {\n if (part === \"..\") {\n count += 1;\n } else {\n break;\n }\n }\n return [\n ...fromParts.slice(0, fromParts.length - count - 1),\n ...pathParts.slice(count),\n ].join(\"/\");\n } else {\n return path;\n }\n}\n", "import unfetch from \"@plasmicapp/isomorphic-unfetch\";\nimport {\n getDistinctId,\n getEnvMeta,\n getVariationCookieValues,\n getWindowMeta,\n rawSplitVariation,\n throttled,\n} from \"./utils\";\n\nexport interface TrackerOptions {\n projectIds: string[];\n host?: string;\n platform?: string;\n preview?: boolean;\n nativeFetch?: boolean;\n}\n\ntype EventType = \"$render\" | \"$fetch\" | \"$conversion\";\n\ninterface Event {\n event: EventType;\n properties: Record<string, any>;\n}\n\nexport interface TrackerRenderProperties {\n rootProjectId?: string;\n rootComponentId?: string;\n rootComponentName?: string;\n teamIds: string[];\n projectIds: string[];\n}\n\nexport interface TrackRenderOptions {\n renderCtx?: TrackerRenderProperties;\n variation?: Record<string, string>;\n}\n\nconst API_ENDPOINT = \"https://analytics.plasmic.app/capture\";\nconst API_PUBLIC_KEY = \"phc_BRvYTAoMoam9fDHfrIneF67KdtMJagLVVCM6ELNYd4n\";\nconst TRACKER_VERSION = 4;\n\nexport class PlasmicTracker {\n private eventQueue: Event[] = [];\n private fetch: typeof globalThis.fetch;\n\n constructor(private opts: TrackerOptions) {\n this.fetch = (\n opts.nativeFetch && globalThis.fetch ? globalThis.fetch : unfetch\n ).bind(globalThis);\n }\n\n public trackRender(opts?: TrackRenderOptions) {\n this.enqueue({\n event: \"$render\",\n properties: {\n ...this.getProperties(),\n ...(opts?.renderCtx ?? {}),\n ...rawSplitVariation(opts?.variation ?? {}),\n },\n });\n }\n\n public trackFetch() {\n this.enqueue({\n event: \"$fetch\",\n properties: this.getProperties(),\n });\n }\n\n public trackConversion(value: number = 0) {\n this.enqueue({\n event: \"$conversion\",\n properties: {\n ...this.getProperties(),\n value,\n },\n });\n }\n\n private getProperties() {\n return {\n distinct_id: getDistinctId(),\n ...getWindowMeta(),\n ...getEnvMeta(),\n ...this.getContextMeta(),\n ...getVariationCookieValues(),\n timestamp: Date.now() ?? +new Date(),\n trackerVersion: TRACKER_VERSION,\n };\n }\n\n private enqueue(event: Event) {\n if ((this.opts as any).__plasmicTrackerDisabled) {\n return;\n }\n this.eventQueue.push(event);\n\n this.sendEvents(\"fetch\");\n }\n\n private getContextMeta() {\n return {\n platform: this.opts.platform,\n preview: this.opts.preview,\n projectIds: this.opts.projectIds,\n };\n }\n\n private sendEvents = throttled(async (transport: \"fetch\" | \"beacon\") => {\n if (this.eventQueue.length === 0) {\n return;\n }\n\n const events = [...this.eventQueue];\n this.eventQueue.length = 0;\n\n const body = {\n api_key: API_PUBLIC_KEY,\n batch: events,\n };\n\n try {\n const stringBody = JSON.stringify(body);\n if (transport === \"beacon\") {\n // Triggers warning: https://chromestatus.com/feature/5629709824032768\n window.navigator.sendBeacon(API_ENDPOINT, stringBody);\n } else {\n this.fetch(API_ENDPOINT, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n },\n body: stringBody,\n })\n .then(() => {})\n .catch(() => {});\n }\n } catch (err) {}\n });\n}\n", "const isBrowser =\n typeof window !== \"undefined\" &&\n window != null &&\n typeof window.document !== \"undefined\";\n\nexport function getPlasmicCookieValues() {\n if (!isBrowser) {\n return {};\n }\n return Object.fromEntries(\n document.cookie\n .split(\"; \")\n .filter((cookie) => cookie.includes(\"plasmic:\"))\n .map((cookie) => cookie.split(\"=\"))\n .map(([key, value]) => [key.split(\":\")[1], value])\n );\n}\n\nexport function getVariationCookieValues() {\n const cookies = getPlasmicCookieValues();\n return Object.fromEntries(\n Object.keys(cookies)\n .map((key) => [key.split(\".\")[1], cookies[key]])\n .filter((val) => !!val[0])\n );\n}\n\n// https://stackoverflow.com/a/8809472\nexport function generateUUID() {\n // Public Domain/MIT\n var d = new Date().getTime(); //Timestamp\n var d2 =\n (typeof performance !== \"undefined\" &&\n performance.now &&\n performance.now() * 1000) ||\n 0; //Time in microseconds since page-load or 0 if unsupported\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = Math.random() * 16; //random number between 0 and 16\n if (d > 0) {\n //Use timestamp until depleted\n r = (d + r) % 16 | 0;\n d = Math.floor(d / 16);\n } else {\n //Use microseconds since page-load if supported\n r = (d2 + r) % 16 | 0;\n d2 = Math.floor(d2 / 16);\n }\n return (c === \"x\" ? r : (r & 0x3) | 0x8).toString(16);\n });\n}\n\nexport function getDistinctId(): string {\n if (!isBrowser) {\n return \"LOADER-SERVER\";\n }\n // Don't generate a new UUID per event so that we don't consider\n // each event from a different person which uses more storage\n // return generateUUID();\n return \"LOADER-CLIENT\";\n}\n\nfunction getCampaignParams() {\n const { location } = window;\n const params: Record<string, string> = {};\n try {\n const url = new URL(location.href);\n const CAMPAIGN_KEYWORDS = [\n \"utm_source\",\n \"utm_medium\",\n \"utm_campaign\",\n \"utm_content\",\n \"utm_term\",\n \"gclid\",\n ];\n CAMPAIGN_KEYWORDS.forEach((keyword) => {\n const value = url.searchParams.get(keyword);\n if (value) {\n params[keyword] = value;\n }\n });\n } catch (err) {}\n return params;\n}\n\nfunction getLocationMeta() {\n const { location } = window;\n const { referrer } = document;\n return {\n url: location.href,\n host: location.host,\n pathname: location.pathname,\n referrer,\n ...getCampaignParams(),\n };\n}\n\nfunction getScreenMeta() {\n const { screen } = window;\n return {\n screen_height: screen.height,\n screen_width: screen.width,\n viewport_height: window.innerHeight,\n viewport_width: window.innerWidth,\n };\n}\n\nfunction getOS(userAgent: string) {\n if (/Windows/i.test(userAgent)) {\n if (/Phone/.test(userAgent) || /WPDesktop/.test(userAgent)) {\n return \"Windows Phone\";\n }\n return \"Windows\";\n } else if (/(iPhone|iPad|iPod)/.test(userAgent)) {\n return \"iOS\";\n } else if (/Android/.test(userAgent)) {\n return \"Android\";\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(userAgent)) {\n return \"BlackBerry\";\n } else if (/Mac/i.test(userAgent)) {\n return \"Mac OS X\";\n } else if (/Linux/.test(userAgent)) {\n return \"Linux\";\n } else if (/CrOS/.test(userAgent)) {\n return \"Chrome OS\";\n } else {\n return \"\";\n }\n}\n\nfunction getDeviceInfo(userAgent: string) {\n const PATTERNS = [\n {\n device: \"iPhone\",\n patterns: [/iPhone/],\n },\n {\n device: \"iPad\",\n patterns: [/iPad/],\n },\n {\n device: \"iPod Touch\",\n patterns: [/iPod/],\n },\n {\n device: \"Windows Phone\",\n patterns: [/Windows Phone/i, /WPDesktop/],\n },\n {\n device: \"Android\",\n patterns: [/Android/],\n },\n ];\n const match = PATTERNS.find((pattern) =>\n pattern.patterns.some((expr) => expr.test(userAgent))\n );\n const device = match?.device;\n return {\n device: device ?? \"\",\n deviceType: device ? \"Mobile\" : \"Desktop\",\n os: getOS(userAgent),\n };\n}\n\nfunction getUserAgentMeta() {\n const { navigator } = window;\n const { userAgent } = navigator;\n return {\n ...getDeviceInfo(userAgent),\n };\n}\n\nexport function getWindowMeta() {\n if (!isBrowser) {\n return {};\n }\n return {\n ...getLocationMeta(),\n ...getScreenMeta(),\n ...getUserAgentMeta(),\n };\n}\n\nconst isProduction = process.env.NODE_ENV === \"production\";\n\nexport function getEnvMeta() {\n return {\n isBrowser,\n isProduction,\n };\n}\n\nexport function rawSplitVariation(variation: Record<string, string>) {\n const rawVariations: Record<string, string> = {};\n Object.keys(variation).forEach((variationKey) => {\n const [, splitId] = variationKey.split(\".\");\n if (splitId) {\n rawVariations[splitId] = variation[variationKey];\n }\n });\n return rawVariations;\n}\n\nconst POLL_TIME = 5000;\n\nexport function throttled<T>(func: (param: T) => Promise<void>) {\n let timerId: number | undefined = undefined;\n return (param: T) => {\n if (timerId) {\n // will already be taken care of next time we run\n return;\n }\n\n if (isBrowser) {\n timerId = window.requestAnimationFrame(() => {\n timerId = undefined;\n func(param);\n });\n } else {\n timerId = setTimeout(() => {\n timerId = undefined;\n func(param);\n }, POLL_TIME) as any;\n }\n };\n}\n"],
5
- "mappings": "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",
6
- "names": ["name", "dep", "opts", "name", "_a", "name", "opts", "dep", "err", "isBrowser", "isBrowser", "err", "func", "opts", "err"]
3
+ "sources": ["../src/index.ts", "../src/deps-graph.ts", "../src/bundles.ts", "../src/registry.ts", "../src/tracker/index.ts"],
4
+ "sourcesContent": ["export { Api, PlasmicModulesFetcher } from \"@plasmicapp/loader-fetcher\";\nexport type {\n AssetModule,\n CodeModule,\n ComponentMeta,\n ExperimentSlice,\n FontMeta,\n GlobalGroupMeta,\n LoaderBundleCache,\n LoaderBundleOutput,\n LoaderHtmlOutput,\n PageMeta,\n PageMetadata,\n ProjectMeta,\n SegmentSlice,\n Split,\n} from \"@plasmicapp/loader-fetcher\";\nexport { getBundleSubset } from \"./bundles\";\nexport { Registry } from \"./registry\";\nexport { PlasmicTracker } from \"./tracker\";\nexport type { TrackRenderOptions } from \"./tracker\";\n", "import { LoaderBundleOutput } from '@plasmicapp/loader-fetcher';\n\nexport class DepsGraph {\n private dependsOn: Record<string, string[]> = {};\n private dependedBy: Record<string, string[]> = {};\n constructor(\n private bundle: LoaderBundleOutput,\n private browserBuild: boolean\n ) {\n this.rebuildGraph();\n }\n\n getTransitiveDependers(name: string) {\n return this.transitiveCrawl(name, this.dependedBy);\n }\n\n getTransitiveDeps(name: string) {\n if (!(name in this.dependsOn)) {\n return [];\n }\n\n return this.transitiveCrawl(name, this.dependsOn);\n }\n\n private transitiveCrawl(name: string, edges: Record<string, string[]>) {\n const deps = new Set<string>();\n\n const crawl = (dep: string) => {\n if (deps.has(dep)) {\n return;\n }\n deps.add(dep);\n for (const subdep of edges[dep] ?? []) {\n crawl(subdep);\n }\n };\n\n for (const dep of edges[name]) {\n crawl(dep);\n }\n return Array.from(deps);\n }\n\n private rebuildGraph() {\n this.dependedBy = {};\n this.dependsOn = {};\n for (const mod of this.browserBuild\n ? this.bundle.modules.browser\n : this.bundle.modules.server) {\n if (mod.type === 'code') {\n for (const imported of mod.imports) {\n if (!(mod.fileName in this.dependsOn)) {\n this.dependsOn[mod.fileName] = [imported];\n } else {\n this.dependsOn[mod.fileName].push(imported);\n }\n\n if (!(imported in this.dependedBy)) {\n this.dependedBy[imported] = [mod.fileName];\n } else {\n this.dependedBy[imported].push(mod.fileName);\n }\n }\n }\n }\n }\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-fetcher\";\nimport { DepsGraph } from \"./deps-graph\";\n\n/**\n * Get sub-bundle including only modules that are reachable from `names`.\n * @param opts.target by default, will target the browser modules. Can request\n * the server modules instead.\n */\nexport function getBundleSubset(\n bundle: LoaderBundleOutput,\n names: string[],\n opts?: {\n target?: \"browser\" | \"server\";\n }\n): LoaderBundleOutput {\n const namesSet = new Set(names);\n const target = opts?.target ?? \"browser\";\n\n const forBrowser = target === \"browser\";\n const graph = new DepsGraph(bundle, forBrowser);\n const deps = new Set(names.flatMap((name) => graph.getTransitiveDeps(name)));\n const isSubModule = (fileName: string) =>\n deps.has(fileName) || namesSet.has(fileName);\n const modules = bundle.modules[target];\n const filteredModules = modules.filter((mod) => isSubModule(mod.fileName));\n const filteredComponents = bundle.components.filter((c) =>\n isSubModule(c.entry)\n );\n\n const filteredComponentsIds = new Set(filteredComponents.map((c) => c.id));\n\n // Make deep copy of filteredIds to avoid mutating original bundle\n const filteredIds = Object.fromEntries(\n Object.entries(bundle.filteredIds).map(([k, v]) => [k, [...v]])\n );\n bundle.components\n .filter((c) => !filteredComponentsIds.has(c.id))\n .forEach((component) => {\n filteredIds[component.projectId] = filteredIds[component.projectId] ?? [];\n if (!filteredIds[component.projectId].includes(component.id)) {\n filteredIds[component.projectId].push(component.id);\n }\n });\n\n return {\n modules: {\n browser: forBrowser ? filteredModules : [],\n server: forBrowser ? [] : filteredModules,\n },\n components: filteredComponents,\n globalGroups: bundle.globalGroups,\n projects: bundle.projects,\n activeSplits: bundle.activeSplits,\n bundleKey: bundle.bundleKey ?? null,\n deferChunksByDefault: bundle.deferChunksByDefault,\n disableRootLoadingBoundaryByDefault:\n bundle.disableRootLoadingBoundaryByDefault,\n filteredIds,\n };\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-fetcher\";\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n window != null &&\n typeof window.document !== \"undefined\";\n\nfunction isModuleBundlePromiseSet(name: string) {\n return (\n (globalThis as any).__PlasmicBundlePromises &&\n !!(globalThis as any).__PlasmicBundlePromises[name] &&\n !!(globalThis as any).__PlasmicBundlePromises[name].then\n );\n}\n\nexport class Registry {\n private loadedModules: Record<string, any> = {};\n private registeredModules: Record<string, any> = {};\n private modules: Record<string, string> = {};\n\n constructor() {}\n\n register(name: string, module: any) {\n this.registeredModules[name] = module;\n }\n\n isEmpty() {\n return Object.keys(this.loadedModules).length === 0;\n }\n\n clear() {\n this.loadedModules = {};\n }\n\n getRegisteredModule(name: string) {\n return this.registeredModules[name];\n }\n\n hasModule(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return true;\n }\n\n if (name in this.modules) {\n return true;\n }\n\n if (\n (globalThis as any).__PLASMIC_CHUNKS &&\n !!(globalThis as any).__PLASMIC_CHUNKS[name]\n ) {\n return true;\n }\n\n if (isModuleBundlePromiseSet(name)) {\n return true;\n }\n\n return false;\n }\n\n load(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return this.registeredModules[name];\n }\n\n if (name in this.loadedModules) {\n return this.loadedModules[name];\n }\n\n if (\n !this.modules[name] &&\n (globalThis as any).__PLASMIC_CHUNKS &&\n !!(globalThis as any).__PLASMIC_CHUNKS[name]\n ) {\n this.modules[name] = (globalThis as any).__PLASMIC_CHUNKS[name];\n }\n\n if (!this.modules[name] && isModuleBundlePromiseSet(name)) {\n throw (globalThis as any).__PlasmicBundlePromises[name];\n }\n\n if (!(name in this.modules)) {\n throw new Error(`Unknown module ${name}`);\n }\n\n const code = this.modules[name];\n\n const requireFn = isBrowser\n ? (dep: string) => {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n }\n : (dep: string) => {\n try {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n } catch (err) {\n try {\n // Might be a nodeJs module such as tty\n return eval(\"require\")(dep);\n } catch {\n throw err;\n }\n }\n };\n\n let func;\n try {\n func = new Function(\"require\", \"exports\", code);\n } catch (err) {\n throw new Error(`PLASMIC: Failed to create function for ${name}: ${err}`);\n }\n const exports = {};\n this.loadedModules[name] = exports;\n try {\n func(requireFn, exports);\n } catch (err: any) {\n // Delete exports from loadedModules, so subsequent uses don't incorrectly\n // believe that this module has been loaded.\n delete this.loadedModules[name];\n if (!(err instanceof Error) && !!err && !!err.then) {\n // Re-throw the Promise\n throw err;\n }\n throw new Error(`PLASMIC: Failed to load ${name}: ${err}`);\n }\n return exports;\n }\n\n updateModules(bundle: LoaderBundleOutput) {\n let updated = false;\n for (const mod of isBrowser\n ? bundle.modules.browser\n : bundle.modules.server) {\n if (\n mod.type === \"code\" &&\n !!mod.code &&\n mod.code !== this.modules[mod.fileName]\n ) {\n this.modules[mod.fileName] = mod.code;\n if (!(globalThis as any).__PLASMIC_CHUNKS) {\n (globalThis as any).__PLASMIC_CHUNKS = {};\n }\n (globalThis as any).__PLASMIC_CHUNKS[mod.fileName] = mod.code;\n updated = true;\n }\n }\n\n if (updated) {\n // TODO: do something more efficient than tearing everything down?\n this.clear();\n }\n }\n}\n\nfunction resolvePath(path: string, from: string) {\n const fromParts = from.split(\"/\");\n const pathParts = path.split(\"/\");\n if (pathParts.length === 0) {\n return path;\n }\n\n if (pathParts[0] === \".\") {\n return [\n ...fromParts.slice(0, fromParts.length - 1),\n ...pathParts.slice(1),\n ].join(\"/\");\n } else if (pathParts[0] === \"..\") {\n let count = 0;\n for (const part of pathParts) {\n if (part === \"..\") {\n count += 1;\n } else {\n break;\n }\n }\n return [\n ...fromParts.slice(0, fromParts.length - count - 1),\n ...pathParts.slice(count),\n ].join(\"/\");\n } else {\n return path;\n }\n}\n", "// Intentionally no imports \u2013 this module is now a strict no-op while\n// preserving the public API surface.\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackerOptions {\n projectIds: string[];\n platform?: string;\n preview?: boolean;\n nativeFetch?: boolean;\n}\n\n// Internal event types removed along with implementation details.\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackerRenderProperties {\n rootProjectId?: string;\n rootComponentId?: string;\n rootComponentName?: string;\n teamIds: string[];\n projectIds: string[];\n}\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackRenderOptions {\n renderCtx?: TrackerRenderProperties;\n variation?: Record<string, string>;\n}\n\n/**\n * @deprecated Built-in tracking is disabled. This class remains only for\n * compatibility and will be removed in a future release.\n *\n * All methods are strict no-ops.\n */\nexport class PlasmicTracker {\n // Preserve constructor signature for compatibility, but do not retain\n // instance state to avoid unused-property diagnostics.\n constructor(_opts: TrackerOptions) {}\n\n /**\n * @deprecated No-op.\n */\n public trackRender(_opts?: TrackRenderOptions): void {}\n\n /**\n * @deprecated No-op.\n */\n public trackFetch(): void {}\n\n /**\n * @deprecated No-op.\n */\n public trackConversion(_value: number = 0): void {}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["name", "dep", "opts", "name", "_a", "name", "opts", "dep", "err"]
7
7
  }
package/dist/index.js CHANGED
@@ -1,27 +1,8 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
- var __defProps = Object.defineProperties;
5
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
- var __getProtoOf = Object.getPrototypeOf;
10
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
11
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
- var __spreadValues = (a, b) => {
14
- for (var prop in b || (b = {}))
15
- if (__hasOwnProp.call(b, prop))
16
- __defNormalProp(a, prop, b[prop]);
17
- if (__getOwnPropSymbols)
18
- for (var prop of __getOwnPropSymbols(b)) {
19
- if (__propIsEnum.call(b, prop))
20
- __defNormalProp(a, prop, b[prop]);
21
- }
22
- return a;
23
- };
24
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
6
  var __export = (target, all) => {
26
7
  for (var name2 in all)
27
8
  __defProp(target, name2, { get: all[name2], enumerable: true });
@@ -34,35 +15,7 @@ var __copyProps = (to, from, except, desc) => {
34
15
  }
35
16
  return to;
36
17
  };
37
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
38
- // If the importer is in node compatibility mode or this is not an ESM
39
- // file that has been converted to a CommonJS file using a Babel-
40
- // compatible transform (i.e. "__esModule" has not been set), then set
41
- // "default" to the CommonJS "module.exports" for node compatibility.
42
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
43
- mod
44
- ));
45
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
46
- var __async = (__this, __arguments, generator) => {
47
- return new Promise((resolve, reject) => {
48
- var fulfilled = (value) => {
49
- try {
50
- step(generator.next(value));
51
- } catch (e) {
52
- reject(e);
53
- }
54
- };
55
- var rejected = (value) => {
56
- try {
57
- step(generator.throw(value));
58
- } catch (e) {
59
- reject(e);
60
- }
61
- };
62
- var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
63
- step((generator = generator.apply(__this, __arguments)).next());
64
- });
65
- };
66
19
 
67
20
  // src/index.ts
68
21
  var src_exports = {};
@@ -310,257 +263,25 @@ function resolvePath(path, from) {
310
263
  }
311
264
 
312
265
  // src/tracker/index.ts
313
- var import_isomorphic_unfetch = __toESM(require("@plasmicapp/isomorphic-unfetch"));
314
-
315
- // src/tracker/utils.ts
316
- var isBrowser2 = typeof window !== "undefined" && window != null && typeof window.document !== "undefined";
317
- function getPlasmicCookieValues() {
318
- if (!isBrowser2) {
319
- return {};
320
- }
321
- return Object.fromEntries(
322
- document.cookie.split("; ").filter((cookie) => cookie.includes("plasmic:")).map((cookie) => cookie.split("=")).map(([key, value]) => [key.split(":")[1], value])
323
- );
324
- }
325
- function getVariationCookieValues() {
326
- const cookies = getPlasmicCookieValues();
327
- return Object.fromEntries(
328
- Object.keys(cookies).map((key) => [key.split(".")[1], cookies[key]]).filter((val) => !!val[0])
329
- );
330
- }
331
- function getDistinctId() {
332
- if (!isBrowser2) {
333
- return "LOADER-SERVER";
334
- }
335
- return "LOADER-CLIENT";
336
- }
337
- function getCampaignParams() {
338
- const { location } = window;
339
- const params = {};
340
- try {
341
- const url = new URL(location.href);
342
- const CAMPAIGN_KEYWORDS = [
343
- "utm_source",
344
- "utm_medium",
345
- "utm_campaign",
346
- "utm_content",
347
- "utm_term",
348
- "gclid"
349
- ];
350
- CAMPAIGN_KEYWORDS.forEach((keyword) => {
351
- const value = url.searchParams.get(keyword);
352
- if (value) {
353
- params[keyword] = value;
354
- }
355
- });
356
- } catch (err2) {
357
- }
358
- return params;
359
- }
360
- function getLocationMeta() {
361
- const { location } = window;
362
- const { referrer } = document;
363
- return __spreadValues({
364
- url: location.href,
365
- host: location.host,
366
- pathname: location.pathname,
367
- referrer
368
- }, getCampaignParams());
369
- }
370
- function getScreenMeta() {
371
- const { screen } = window;
372
- return {
373
- screen_height: screen.height,
374
- screen_width: screen.width,
375
- viewport_height: window.innerHeight,
376
- viewport_width: window.innerWidth
377
- };
378
- }
379
- function getOS(userAgent) {
380
- if (/Windows/i.test(userAgent)) {
381
- if (/Phone/.test(userAgent) || /WPDesktop/.test(userAgent)) {
382
- return "Windows Phone";
383
- }
384
- return "Windows";
385
- } else if (/(iPhone|iPad|iPod)/.test(userAgent)) {
386
- return "iOS";
387
- } else if (/Android/.test(userAgent)) {
388
- return "Android";
389
- } else if (/(BlackBerry|PlayBook|BB10)/i.test(userAgent)) {
390
- return "BlackBerry";
391
- } else if (/Mac/i.test(userAgent)) {
392
- return "Mac OS X";
393
- } else if (/Linux/.test(userAgent)) {
394
- return "Linux";
395
- } else if (/CrOS/.test(userAgent)) {
396
- return "Chrome OS";
397
- } else {
398
- return "";
399
- }
400
- }
401
- function getDeviceInfo(userAgent) {
402
- const PATTERNS = [
403
- {
404
- device: "iPhone",
405
- patterns: [/iPhone/]
406
- },
407
- {
408
- device: "iPad",
409
- patterns: [/iPad/]
410
- },
411
- {
412
- device: "iPod Touch",
413
- patterns: [/iPod/]
414
- },
415
- {
416
- device: "Windows Phone",
417
- patterns: [/Windows Phone/i, /WPDesktop/]
418
- },
419
- {
420
- device: "Android",
421
- patterns: [/Android/]
422
- }
423
- ];
424
- const match = PATTERNS.find(
425
- (pattern) => pattern.patterns.some((expr) => expr.test(userAgent))
426
- );
427
- const device = match == null ? void 0 : match.device;
428
- return {
429
- device: device != null ? device : "",
430
- deviceType: device ? "Mobile" : "Desktop",
431
- os: getOS(userAgent)
432
- };
433
- }
434
- function getUserAgentMeta() {
435
- const { navigator } = window;
436
- const { userAgent } = navigator;
437
- return __spreadValues({}, getDeviceInfo(userAgent));
438
- }
439
- function getWindowMeta() {
440
- if (!isBrowser2) {
441
- return {};
442
- }
443
- return __spreadValues(__spreadValues(__spreadValues({}, getLocationMeta()), getScreenMeta()), getUserAgentMeta());
444
- }
445
- var isProduction = process.env.NODE_ENV === "production";
446
- function getEnvMeta() {
447
- return {
448
- isBrowser: isBrowser2,
449
- isProduction
450
- };
451
- }
452
- function rawSplitVariation(variation) {
453
- const rawVariations = {};
454
- Object.keys(variation).forEach((variationKey) => {
455
- const [, splitId] = variationKey.split(".");
456
- if (splitId) {
457
- rawVariations[splitId] = variation[variationKey];
458
- }
459
- });
460
- return rawVariations;
461
- }
462
- var POLL_TIME = 5e3;
463
- function throttled(func2) {
464
- let timerId = void 0;
465
- return (param) => {
466
- if (timerId) {
467
- return;
468
- }
469
- if (isBrowser2) {
470
- timerId = window.requestAnimationFrame(() => {
471
- timerId = void 0;
472
- func2(param);
473
- });
474
- } else {
475
- timerId = setTimeout(() => {
476
- timerId = void 0;
477
- func2(param);
478
- }, POLL_TIME);
479
- }
480
- };
481
- }
482
-
483
- // src/tracker/index.ts
484
- var API_ENDPOINT = "https://analytics.plasmic.app/capture";
485
- var API_PUBLIC_KEY = "phc_BRvYTAoMoam9fDHfrIneF67KdtMJagLVVCM6ELNYd4n";
486
- var TRACKER_VERSION = 4;
487
266
  var PlasmicTracker = class {
488
- constructor(opts2) {
489
- this.opts = opts2;
490
- this.eventQueue = [];
491
- this.sendEvents = throttled((transport) => __async(this, null, function* () {
492
- if (this.eventQueue.length === 0) {
493
- return;
494
- }
495
- const events = [...this.eventQueue];
496
- this.eventQueue.length = 0;
497
- const body = {
498
- api_key: API_PUBLIC_KEY,
499
- batch: events
500
- };
501
- try {
502
- const stringBody = JSON.stringify(body);
503
- if (transport === "beacon") {
504
- window.navigator.sendBeacon(API_ENDPOINT, stringBody);
505
- } else {
506
- this.fetch(API_ENDPOINT, {
507
- method: "POST",
508
- headers: {
509
- Accept: "application/json"
510
- },
511
- body: stringBody
512
- }).then(() => {
513
- }).catch(() => {
514
- });
515
- }
516
- } catch (err2) {
517
- }
518
- }));
519
- this.fetch = (opts2.nativeFetch && globalThis.fetch ? globalThis.fetch : import_isomorphic_unfetch.default).bind(globalThis);
267
+ // Preserve constructor signature for compatibility, but do not retain
268
+ // instance state to avoid unused-property diagnostics.
269
+ constructor(_opts) {
520
270
  }
521
- trackRender(opts2) {
522
- var _a, _b;
523
- this.enqueue({
524
- event: "$render",
525
- properties: __spreadValues(__spreadValues(__spreadValues({}, this.getProperties()), (_a = opts2 == null ? void 0 : opts2.renderCtx) != null ? _a : {}), rawSplitVariation((_b = opts2 == null ? void 0 : opts2.variation) != null ? _b : {}))
526
- });
271
+ /**
272
+ * @deprecated No-op.
273
+ */
274
+ trackRender(_opts) {
527
275
  }
276
+ /**
277
+ * @deprecated No-op.
278
+ */
528
279
  trackFetch() {
529
- this.enqueue({
530
- event: "$fetch",
531
- properties: this.getProperties()
532
- });
533
- }
534
- trackConversion(value = 0) {
535
- this.enqueue({
536
- event: "$conversion",
537
- properties: __spreadProps(__spreadValues({}, this.getProperties()), {
538
- value
539
- })
540
- });
541
- }
542
- getProperties() {
543
- var _a;
544
- return __spreadProps(__spreadValues(__spreadValues(__spreadValues(__spreadValues({
545
- distinct_id: getDistinctId()
546
- }, getWindowMeta()), getEnvMeta()), this.getContextMeta()), getVariationCookieValues()), {
547
- timestamp: (_a = Date.now()) != null ? _a : +/* @__PURE__ */ new Date(),
548
- trackerVersion: TRACKER_VERSION
549
- });
550
280
  }
551
- enqueue(event) {
552
- if (this.opts.__plasmicTrackerDisabled) {
553
- return;
554
- }
555
- this.eventQueue.push(event);
556
- this.sendEvents("fetch");
557
- }
558
- getContextMeta() {
559
- return {
560
- platform: this.opts.platform,
561
- preview: this.opts.preview,
562
- projectIds: this.opts.projectIds
563
- };
281
+ /**
282
+ * @deprecated No-op.
283
+ */
284
+ trackConversion(_value = 0) {
564
285
  }
565
286
  };
566
287
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/deps-graph.ts", "../src/bundles.ts", "../src/registry.ts", "../src/tracker/index.ts", "../src/tracker/utils.ts"],
4
- "sourcesContent": ["export { Api, PlasmicModulesFetcher } from \"@plasmicapp/loader-fetcher\";\nexport type {\n AssetModule,\n CodeModule,\n ComponentMeta,\n ExperimentSlice,\n FontMeta,\n GlobalGroupMeta,\n LoaderBundleCache,\n LoaderBundleOutput,\n LoaderHtmlOutput,\n PageMeta,\n PageMetadata,\n ProjectMeta,\n SegmentSlice,\n Split,\n} from \"@plasmicapp/loader-fetcher\";\nexport { getBundleSubset } from \"./bundles\";\nexport { Registry } from \"./registry\";\nexport { PlasmicTracker } from \"./tracker\";\nexport type { TrackRenderOptions } from \"./tracker\";\n", "import { LoaderBundleOutput } from '@plasmicapp/loader-fetcher';\n\nexport class DepsGraph {\n private dependsOn: Record<string, string[]> = {};\n private dependedBy: Record<string, string[]> = {};\n constructor(\n private bundle: LoaderBundleOutput,\n private browserBuild: boolean\n ) {\n this.rebuildGraph();\n }\n\n getTransitiveDependers(name: string) {\n return this.transitiveCrawl(name, this.dependedBy);\n }\n\n getTransitiveDeps(name: string) {\n if (!(name in this.dependsOn)) {\n return [];\n }\n\n return this.transitiveCrawl(name, this.dependsOn);\n }\n\n private transitiveCrawl(name: string, edges: Record<string, string[]>) {\n const deps = new Set<string>();\n\n const crawl = (dep: string) => {\n if (deps.has(dep)) {\n return;\n }\n deps.add(dep);\n for (const subdep of edges[dep] ?? []) {\n crawl(subdep);\n }\n };\n\n for (const dep of edges[name]) {\n crawl(dep);\n }\n return Array.from(deps);\n }\n\n private rebuildGraph() {\n this.dependedBy = {};\n this.dependsOn = {};\n for (const mod of this.browserBuild\n ? this.bundle.modules.browser\n : this.bundle.modules.server) {\n if (mod.type === 'code') {\n for (const imported of mod.imports) {\n if (!(mod.fileName in this.dependsOn)) {\n this.dependsOn[mod.fileName] = [imported];\n } else {\n this.dependsOn[mod.fileName].push(imported);\n }\n\n if (!(imported in this.dependedBy)) {\n this.dependedBy[imported] = [mod.fileName];\n } else {\n this.dependedBy[imported].push(mod.fileName);\n }\n }\n }\n }\n }\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-fetcher\";\nimport { DepsGraph } from \"./deps-graph\";\n\n/**\n * Get sub-bundle including only modules that are reachable from `names`.\n * @param opts.target by default, will target the browser modules. Can request\n * the server modules instead.\n */\nexport function getBundleSubset(\n bundle: LoaderBundleOutput,\n names: string[],\n opts?: {\n target?: \"browser\" | \"server\";\n }\n): LoaderBundleOutput {\n const namesSet = new Set(names);\n const target = opts?.target ?? \"browser\";\n\n const forBrowser = target === \"browser\";\n const graph = new DepsGraph(bundle, forBrowser);\n const deps = new Set(names.flatMap((name) => graph.getTransitiveDeps(name)));\n const isSubModule = (fileName: string) =>\n deps.has(fileName) || namesSet.has(fileName);\n const modules = bundle.modules[target];\n const filteredModules = modules.filter((mod) => isSubModule(mod.fileName));\n const filteredComponents = bundle.components.filter((c) =>\n isSubModule(c.entry)\n );\n\n const filteredComponentsIds = new Set(filteredComponents.map((c) => c.id));\n\n // Make deep copy of filteredIds to avoid mutating original bundle\n const filteredIds = Object.fromEntries(\n Object.entries(bundle.filteredIds).map(([k, v]) => [k, [...v]])\n );\n bundle.components\n .filter((c) => !filteredComponentsIds.has(c.id))\n .forEach((component) => {\n filteredIds[component.projectId] = filteredIds[component.projectId] ?? [];\n if (!filteredIds[component.projectId].includes(component.id)) {\n filteredIds[component.projectId].push(component.id);\n }\n });\n\n return {\n modules: {\n browser: forBrowser ? filteredModules : [],\n server: forBrowser ? [] : filteredModules,\n },\n components: filteredComponents,\n globalGroups: bundle.globalGroups,\n projects: bundle.projects,\n activeSplits: bundle.activeSplits,\n bundleKey: bundle.bundleKey ?? null,\n deferChunksByDefault: bundle.deferChunksByDefault,\n disableRootLoadingBoundaryByDefault:\n bundle.disableRootLoadingBoundaryByDefault,\n filteredIds,\n };\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-fetcher\";\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n window != null &&\n typeof window.document !== \"undefined\";\n\nfunction isModuleBundlePromiseSet(name: string) {\n return (\n (globalThis as any).__PlasmicBundlePromises &&\n !!(globalThis as any).__PlasmicBundlePromises[name] &&\n !!(globalThis as any).__PlasmicBundlePromises[name].then\n );\n}\n\nexport class Registry {\n private loadedModules: Record<string, any> = {};\n private registeredModules: Record<string, any> = {};\n private modules: Record<string, string> = {};\n\n constructor() {}\n\n register(name: string, module: any) {\n this.registeredModules[name] = module;\n }\n\n isEmpty() {\n return Object.keys(this.loadedModules).length === 0;\n }\n\n clear() {\n this.loadedModules = {};\n }\n\n getRegisteredModule(name: string) {\n return this.registeredModules[name];\n }\n\n hasModule(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return true;\n }\n\n if (name in this.modules) {\n return true;\n }\n\n if (\n (globalThis as any).__PLASMIC_CHUNKS &&\n !!(globalThis as any).__PLASMIC_CHUNKS[name]\n ) {\n return true;\n }\n\n if (isModuleBundlePromiseSet(name)) {\n return true;\n }\n\n return false;\n }\n\n load(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return this.registeredModules[name];\n }\n\n if (name in this.loadedModules) {\n return this.loadedModules[name];\n }\n\n if (\n !this.modules[name] &&\n (globalThis as any).__PLASMIC_CHUNKS &&\n !!(globalThis as any).__PLASMIC_CHUNKS[name]\n ) {\n this.modules[name] = (globalThis as any).__PLASMIC_CHUNKS[name];\n }\n\n if (!this.modules[name] && isModuleBundlePromiseSet(name)) {\n throw (globalThis as any).__PlasmicBundlePromises[name];\n }\n\n if (!(name in this.modules)) {\n throw new Error(`Unknown module ${name}`);\n }\n\n const code = this.modules[name];\n\n const requireFn = isBrowser\n ? (dep: string) => {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n }\n : (dep: string) => {\n try {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n } catch (err) {\n try {\n // Might be a nodeJs module such as tty\n return eval(\"require\")(dep);\n } catch {\n throw err;\n }\n }\n };\n\n let func;\n try {\n func = new Function(\"require\", \"exports\", code);\n } catch (err) {\n throw new Error(`PLASMIC: Failed to create function for ${name}: ${err}`);\n }\n const exports = {};\n this.loadedModules[name] = exports;\n try {\n func(requireFn, exports);\n } catch (err: any) {\n // Delete exports from loadedModules, so subsequent uses don't incorrectly\n // believe that this module has been loaded.\n delete this.loadedModules[name];\n if (!(err instanceof Error) && !!err && !!err.then) {\n // Re-throw the Promise\n throw err;\n }\n throw new Error(`PLASMIC: Failed to load ${name}: ${err}`);\n }\n return exports;\n }\n\n updateModules(bundle: LoaderBundleOutput) {\n let updated = false;\n for (const mod of isBrowser\n ? bundle.modules.browser\n : bundle.modules.server) {\n if (\n mod.type === \"code\" &&\n !!mod.code &&\n mod.code !== this.modules[mod.fileName]\n ) {\n this.modules[mod.fileName] = mod.code;\n if (!(globalThis as any).__PLASMIC_CHUNKS) {\n (globalThis as any).__PLASMIC_CHUNKS = {};\n }\n (globalThis as any).__PLASMIC_CHUNKS[mod.fileName] = mod.code;\n updated = true;\n }\n }\n\n if (updated) {\n // TODO: do something more efficient than tearing everything down?\n this.clear();\n }\n }\n}\n\nfunction resolvePath(path: string, from: string) {\n const fromParts = from.split(\"/\");\n const pathParts = path.split(\"/\");\n if (pathParts.length === 0) {\n return path;\n }\n\n if (pathParts[0] === \".\") {\n return [\n ...fromParts.slice(0, fromParts.length - 1),\n ...pathParts.slice(1),\n ].join(\"/\");\n } else if (pathParts[0] === \"..\") {\n let count = 0;\n for (const part of pathParts) {\n if (part === \"..\") {\n count += 1;\n } else {\n break;\n }\n }\n return [\n ...fromParts.slice(0, fromParts.length - count - 1),\n ...pathParts.slice(count),\n ].join(\"/\");\n } else {\n return path;\n }\n}\n", "import unfetch from \"@plasmicapp/isomorphic-unfetch\";\nimport {\n getDistinctId,\n getEnvMeta,\n getVariationCookieValues,\n getWindowMeta,\n rawSplitVariation,\n throttled,\n} from \"./utils\";\n\nexport interface TrackerOptions {\n projectIds: string[];\n host?: string;\n platform?: string;\n preview?: boolean;\n nativeFetch?: boolean;\n}\n\ntype EventType = \"$render\" | \"$fetch\" | \"$conversion\";\n\ninterface Event {\n event: EventType;\n properties: Record<string, any>;\n}\n\nexport interface TrackerRenderProperties {\n rootProjectId?: string;\n rootComponentId?: string;\n rootComponentName?: string;\n teamIds: string[];\n projectIds: string[];\n}\n\nexport interface TrackRenderOptions {\n renderCtx?: TrackerRenderProperties;\n variation?: Record<string, string>;\n}\n\nconst API_ENDPOINT = \"https://analytics.plasmic.app/capture\";\nconst API_PUBLIC_KEY = \"phc_BRvYTAoMoam9fDHfrIneF67KdtMJagLVVCM6ELNYd4n\";\nconst TRACKER_VERSION = 4;\n\nexport class PlasmicTracker {\n private eventQueue: Event[] = [];\n private fetch: typeof globalThis.fetch;\n\n constructor(private opts: TrackerOptions) {\n this.fetch = (\n opts.nativeFetch && globalThis.fetch ? globalThis.fetch : unfetch\n ).bind(globalThis);\n }\n\n public trackRender(opts?: TrackRenderOptions) {\n this.enqueue({\n event: \"$render\",\n properties: {\n ...this.getProperties(),\n ...(opts?.renderCtx ?? {}),\n ...rawSplitVariation(opts?.variation ?? {}),\n },\n });\n }\n\n public trackFetch() {\n this.enqueue({\n event: \"$fetch\",\n properties: this.getProperties(),\n });\n }\n\n public trackConversion(value: number = 0) {\n this.enqueue({\n event: \"$conversion\",\n properties: {\n ...this.getProperties(),\n value,\n },\n });\n }\n\n private getProperties() {\n return {\n distinct_id: getDistinctId(),\n ...getWindowMeta(),\n ...getEnvMeta(),\n ...this.getContextMeta(),\n ...getVariationCookieValues(),\n timestamp: Date.now() ?? +new Date(),\n trackerVersion: TRACKER_VERSION,\n };\n }\n\n private enqueue(event: Event) {\n if ((this.opts as any).__plasmicTrackerDisabled) {\n return;\n }\n this.eventQueue.push(event);\n\n this.sendEvents(\"fetch\");\n }\n\n private getContextMeta() {\n return {\n platform: this.opts.platform,\n preview: this.opts.preview,\n projectIds: this.opts.projectIds,\n };\n }\n\n private sendEvents = throttled(async (transport: \"fetch\" | \"beacon\") => {\n if (this.eventQueue.length === 0) {\n return;\n }\n\n const events = [...this.eventQueue];\n this.eventQueue.length = 0;\n\n const body = {\n api_key: API_PUBLIC_KEY,\n batch: events,\n };\n\n try {\n const stringBody = JSON.stringify(body);\n if (transport === \"beacon\") {\n // Triggers warning: https://chromestatus.com/feature/5629709824032768\n window.navigator.sendBeacon(API_ENDPOINT, stringBody);\n } else {\n this.fetch(API_ENDPOINT, {\n method: \"POST\",\n headers: {\n Accept: \"application/json\",\n },\n body: stringBody,\n })\n .then(() => {})\n .catch(() => {});\n }\n } catch (err) {}\n });\n}\n", "const isBrowser =\n typeof window !== \"undefined\" &&\n window != null &&\n typeof window.document !== \"undefined\";\n\nexport function getPlasmicCookieValues() {\n if (!isBrowser) {\n return {};\n }\n return Object.fromEntries(\n document.cookie\n .split(\"; \")\n .filter((cookie) => cookie.includes(\"plasmic:\"))\n .map((cookie) => cookie.split(\"=\"))\n .map(([key, value]) => [key.split(\":\")[1], value])\n );\n}\n\nexport function getVariationCookieValues() {\n const cookies = getPlasmicCookieValues();\n return Object.fromEntries(\n Object.keys(cookies)\n .map((key) => [key.split(\".\")[1], cookies[key]])\n .filter((val) => !!val[0])\n );\n}\n\n// https://stackoverflow.com/a/8809472\nexport function generateUUID() {\n // Public Domain/MIT\n var d = new Date().getTime(); //Timestamp\n var d2 =\n (typeof performance !== \"undefined\" &&\n performance.now &&\n performance.now() * 1000) ||\n 0; //Time in microseconds since page-load or 0 if unsupported\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = Math.random() * 16; //random number between 0 and 16\n if (d > 0) {\n //Use timestamp until depleted\n r = (d + r) % 16 | 0;\n d = Math.floor(d / 16);\n } else {\n //Use microseconds since page-load if supported\n r = (d2 + r) % 16 | 0;\n d2 = Math.floor(d2 / 16);\n }\n return (c === \"x\" ? r : (r & 0x3) | 0x8).toString(16);\n });\n}\n\nexport function getDistinctId(): string {\n if (!isBrowser) {\n return \"LOADER-SERVER\";\n }\n // Don't generate a new UUID per event so that we don't consider\n // each event from a different person which uses more storage\n // return generateUUID();\n return \"LOADER-CLIENT\";\n}\n\nfunction getCampaignParams() {\n const { location } = window;\n const params: Record<string, string> = {};\n try {\n const url = new URL(location.href);\n const CAMPAIGN_KEYWORDS = [\n \"utm_source\",\n \"utm_medium\",\n \"utm_campaign\",\n \"utm_content\",\n \"utm_term\",\n \"gclid\",\n ];\n CAMPAIGN_KEYWORDS.forEach((keyword) => {\n const value = url.searchParams.get(keyword);\n if (value) {\n params[keyword] = value;\n }\n });\n } catch (err) {}\n return params;\n}\n\nfunction getLocationMeta() {\n const { location } = window;\n const { referrer } = document;\n return {\n url: location.href,\n host: location.host,\n pathname: location.pathname,\n referrer,\n ...getCampaignParams(),\n };\n}\n\nfunction getScreenMeta() {\n const { screen } = window;\n return {\n screen_height: screen.height,\n screen_width: screen.width,\n viewport_height: window.innerHeight,\n viewport_width: window.innerWidth,\n };\n}\n\nfunction getOS(userAgent: string) {\n if (/Windows/i.test(userAgent)) {\n if (/Phone/.test(userAgent) || /WPDesktop/.test(userAgent)) {\n return \"Windows Phone\";\n }\n return \"Windows\";\n } else if (/(iPhone|iPad|iPod)/.test(userAgent)) {\n return \"iOS\";\n } else if (/Android/.test(userAgent)) {\n return \"Android\";\n } else if (/(BlackBerry|PlayBook|BB10)/i.test(userAgent)) {\n return \"BlackBerry\";\n } else if (/Mac/i.test(userAgent)) {\n return \"Mac OS X\";\n } else if (/Linux/.test(userAgent)) {\n return \"Linux\";\n } else if (/CrOS/.test(userAgent)) {\n return \"Chrome OS\";\n } else {\n return \"\";\n }\n}\n\nfunction getDeviceInfo(userAgent: string) {\n const PATTERNS = [\n {\n device: \"iPhone\",\n patterns: [/iPhone/],\n },\n {\n device: \"iPad\",\n patterns: [/iPad/],\n },\n {\n device: \"iPod Touch\",\n patterns: [/iPod/],\n },\n {\n device: \"Windows Phone\",\n patterns: [/Windows Phone/i, /WPDesktop/],\n },\n {\n device: \"Android\",\n patterns: [/Android/],\n },\n ];\n const match = PATTERNS.find((pattern) =>\n pattern.patterns.some((expr) => expr.test(userAgent))\n );\n const device = match?.device;\n return {\n device: device ?? \"\",\n deviceType: device ? \"Mobile\" : \"Desktop\",\n os: getOS(userAgent),\n };\n}\n\nfunction getUserAgentMeta() {\n const { navigator } = window;\n const { userAgent } = navigator;\n return {\n ...getDeviceInfo(userAgent),\n };\n}\n\nexport function getWindowMeta() {\n if (!isBrowser) {\n return {};\n }\n return {\n ...getLocationMeta(),\n ...getScreenMeta(),\n ...getUserAgentMeta(),\n };\n}\n\nconst isProduction = process.env.NODE_ENV === \"production\";\n\nexport function getEnvMeta() {\n return {\n isBrowser,\n isProduction,\n };\n}\n\nexport function rawSplitVariation(variation: Record<string, string>) {\n const rawVariations: Record<string, string> = {};\n Object.keys(variation).forEach((variationKey) => {\n const [, splitId] = variationKey.split(\".\");\n if (splitId) {\n rawVariations[splitId] = variation[variationKey];\n }\n });\n return rawVariations;\n}\n\nconst POLL_TIME = 5000;\n\nexport function throttled<T>(func: (param: T) => Promise<void>) {\n let timerId: number | undefined = undefined;\n return (param: T) => {\n if (timerId) {\n // will already be taken care of next time we run\n return;\n }\n\n if (isBrowser) {\n timerId = window.requestAnimationFrame(() => {\n timerId = undefined;\n func(param);\n });\n } else {\n timerId = setTimeout(() => {\n timerId = undefined;\n func(param);\n }, POLL_TIME) as any;\n }\n };\n}\n"],
5
- "mappings": "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",
6
- "names": ["name", "dep", "opts", "name", "_a", "name", "module", "opts", "dep", "err", "isBrowser", "isBrowser", "err", "func", "opts", "err", "unfetch"]
3
+ "sources": ["../src/index.ts", "../src/deps-graph.ts", "../src/bundles.ts", "../src/registry.ts", "../src/tracker/index.ts"],
4
+ "sourcesContent": ["export { Api, PlasmicModulesFetcher } from \"@plasmicapp/loader-fetcher\";\nexport type {\n AssetModule,\n CodeModule,\n ComponentMeta,\n ExperimentSlice,\n FontMeta,\n GlobalGroupMeta,\n LoaderBundleCache,\n LoaderBundleOutput,\n LoaderHtmlOutput,\n PageMeta,\n PageMetadata,\n ProjectMeta,\n SegmentSlice,\n Split,\n} from \"@plasmicapp/loader-fetcher\";\nexport { getBundleSubset } from \"./bundles\";\nexport { Registry } from \"./registry\";\nexport { PlasmicTracker } from \"./tracker\";\nexport type { TrackRenderOptions } from \"./tracker\";\n", "import { LoaderBundleOutput } from '@plasmicapp/loader-fetcher';\n\nexport class DepsGraph {\n private dependsOn: Record<string, string[]> = {};\n private dependedBy: Record<string, string[]> = {};\n constructor(\n private bundle: LoaderBundleOutput,\n private browserBuild: boolean\n ) {\n this.rebuildGraph();\n }\n\n getTransitiveDependers(name: string) {\n return this.transitiveCrawl(name, this.dependedBy);\n }\n\n getTransitiveDeps(name: string) {\n if (!(name in this.dependsOn)) {\n return [];\n }\n\n return this.transitiveCrawl(name, this.dependsOn);\n }\n\n private transitiveCrawl(name: string, edges: Record<string, string[]>) {\n const deps = new Set<string>();\n\n const crawl = (dep: string) => {\n if (deps.has(dep)) {\n return;\n }\n deps.add(dep);\n for (const subdep of edges[dep] ?? []) {\n crawl(subdep);\n }\n };\n\n for (const dep of edges[name]) {\n crawl(dep);\n }\n return Array.from(deps);\n }\n\n private rebuildGraph() {\n this.dependedBy = {};\n this.dependsOn = {};\n for (const mod of this.browserBuild\n ? this.bundle.modules.browser\n : this.bundle.modules.server) {\n if (mod.type === 'code') {\n for (const imported of mod.imports) {\n if (!(mod.fileName in this.dependsOn)) {\n this.dependsOn[mod.fileName] = [imported];\n } else {\n this.dependsOn[mod.fileName].push(imported);\n }\n\n if (!(imported in this.dependedBy)) {\n this.dependedBy[imported] = [mod.fileName];\n } else {\n this.dependedBy[imported].push(mod.fileName);\n }\n }\n }\n }\n }\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-fetcher\";\nimport { DepsGraph } from \"./deps-graph\";\n\n/**\n * Get sub-bundle including only modules that are reachable from `names`.\n * @param opts.target by default, will target the browser modules. Can request\n * the server modules instead.\n */\nexport function getBundleSubset(\n bundle: LoaderBundleOutput,\n names: string[],\n opts?: {\n target?: \"browser\" | \"server\";\n }\n): LoaderBundleOutput {\n const namesSet = new Set(names);\n const target = opts?.target ?? \"browser\";\n\n const forBrowser = target === \"browser\";\n const graph = new DepsGraph(bundle, forBrowser);\n const deps = new Set(names.flatMap((name) => graph.getTransitiveDeps(name)));\n const isSubModule = (fileName: string) =>\n deps.has(fileName) || namesSet.has(fileName);\n const modules = bundle.modules[target];\n const filteredModules = modules.filter((mod) => isSubModule(mod.fileName));\n const filteredComponents = bundle.components.filter((c) =>\n isSubModule(c.entry)\n );\n\n const filteredComponentsIds = new Set(filteredComponents.map((c) => c.id));\n\n // Make deep copy of filteredIds to avoid mutating original bundle\n const filteredIds = Object.fromEntries(\n Object.entries(bundle.filteredIds).map(([k, v]) => [k, [...v]])\n );\n bundle.components\n .filter((c) => !filteredComponentsIds.has(c.id))\n .forEach((component) => {\n filteredIds[component.projectId] = filteredIds[component.projectId] ?? [];\n if (!filteredIds[component.projectId].includes(component.id)) {\n filteredIds[component.projectId].push(component.id);\n }\n });\n\n return {\n modules: {\n browser: forBrowser ? filteredModules : [],\n server: forBrowser ? [] : filteredModules,\n },\n components: filteredComponents,\n globalGroups: bundle.globalGroups,\n projects: bundle.projects,\n activeSplits: bundle.activeSplits,\n bundleKey: bundle.bundleKey ?? null,\n deferChunksByDefault: bundle.deferChunksByDefault,\n disableRootLoadingBoundaryByDefault:\n bundle.disableRootLoadingBoundaryByDefault,\n filteredIds,\n };\n}\n", "import { LoaderBundleOutput } from \"@plasmicapp/loader-fetcher\";\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n window != null &&\n typeof window.document !== \"undefined\";\n\nfunction isModuleBundlePromiseSet(name: string) {\n return (\n (globalThis as any).__PlasmicBundlePromises &&\n !!(globalThis as any).__PlasmicBundlePromises[name] &&\n !!(globalThis as any).__PlasmicBundlePromises[name].then\n );\n}\n\nexport class Registry {\n private loadedModules: Record<string, any> = {};\n private registeredModules: Record<string, any> = {};\n private modules: Record<string, string> = {};\n\n constructor() {}\n\n register(name: string, module: any) {\n this.registeredModules[name] = module;\n }\n\n isEmpty() {\n return Object.keys(this.loadedModules).length === 0;\n }\n\n clear() {\n this.loadedModules = {};\n }\n\n getRegisteredModule(name: string) {\n return this.registeredModules[name];\n }\n\n hasModule(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return true;\n }\n\n if (name in this.modules) {\n return true;\n }\n\n if (\n (globalThis as any).__PLASMIC_CHUNKS &&\n !!(globalThis as any).__PLASMIC_CHUNKS[name]\n ) {\n return true;\n }\n\n if (isModuleBundlePromiseSet(name)) {\n return true;\n }\n\n return false;\n }\n\n load(name: string, opts: { forceOriginal?: boolean } = {}) {\n if (name in this.registeredModules && !opts.forceOriginal) {\n return this.registeredModules[name];\n }\n\n if (name in this.loadedModules) {\n return this.loadedModules[name];\n }\n\n if (\n !this.modules[name] &&\n (globalThis as any).__PLASMIC_CHUNKS &&\n !!(globalThis as any).__PLASMIC_CHUNKS[name]\n ) {\n this.modules[name] = (globalThis as any).__PLASMIC_CHUNKS[name];\n }\n\n if (!this.modules[name] && isModuleBundlePromiseSet(name)) {\n throw (globalThis as any).__PlasmicBundlePromises[name];\n }\n\n if (!(name in this.modules)) {\n throw new Error(`Unknown module ${name}`);\n }\n\n const code = this.modules[name];\n\n const requireFn = isBrowser\n ? (dep: string) => {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n }\n : (dep: string) => {\n try {\n const normalizedDep = resolvePath(dep, name);\n return this.load(normalizedDep);\n } catch (err) {\n try {\n // Might be a nodeJs module such as tty\n return eval(\"require\")(dep);\n } catch {\n throw err;\n }\n }\n };\n\n let func;\n try {\n func = new Function(\"require\", \"exports\", code);\n } catch (err) {\n throw new Error(`PLASMIC: Failed to create function for ${name}: ${err}`);\n }\n const exports = {};\n this.loadedModules[name] = exports;\n try {\n func(requireFn, exports);\n } catch (err: any) {\n // Delete exports from loadedModules, so subsequent uses don't incorrectly\n // believe that this module has been loaded.\n delete this.loadedModules[name];\n if (!(err instanceof Error) && !!err && !!err.then) {\n // Re-throw the Promise\n throw err;\n }\n throw new Error(`PLASMIC: Failed to load ${name}: ${err}`);\n }\n return exports;\n }\n\n updateModules(bundle: LoaderBundleOutput) {\n let updated = false;\n for (const mod of isBrowser\n ? bundle.modules.browser\n : bundle.modules.server) {\n if (\n mod.type === \"code\" &&\n !!mod.code &&\n mod.code !== this.modules[mod.fileName]\n ) {\n this.modules[mod.fileName] = mod.code;\n if (!(globalThis as any).__PLASMIC_CHUNKS) {\n (globalThis as any).__PLASMIC_CHUNKS = {};\n }\n (globalThis as any).__PLASMIC_CHUNKS[mod.fileName] = mod.code;\n updated = true;\n }\n }\n\n if (updated) {\n // TODO: do something more efficient than tearing everything down?\n this.clear();\n }\n }\n}\n\nfunction resolvePath(path: string, from: string) {\n const fromParts = from.split(\"/\");\n const pathParts = path.split(\"/\");\n if (pathParts.length === 0) {\n return path;\n }\n\n if (pathParts[0] === \".\") {\n return [\n ...fromParts.slice(0, fromParts.length - 1),\n ...pathParts.slice(1),\n ].join(\"/\");\n } else if (pathParts[0] === \"..\") {\n let count = 0;\n for (const part of pathParts) {\n if (part === \"..\") {\n count += 1;\n } else {\n break;\n }\n }\n return [\n ...fromParts.slice(0, fromParts.length - count - 1),\n ...pathParts.slice(count),\n ].join(\"/\");\n } else {\n return path;\n }\n}\n", "// Intentionally no imports \u2013 this module is now a strict no-op while\n// preserving the public API surface.\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackerOptions {\n projectIds: string[];\n platform?: string;\n preview?: boolean;\n nativeFetch?: boolean;\n}\n\n// Internal event types removed along with implementation details.\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackerRenderProperties {\n rootProjectId?: string;\n rootComponentId?: string;\n rootComponentName?: string;\n teamIds: string[];\n projectIds: string[];\n}\n\n/**\n * @deprecated Built-in tracking is disabled. This type remains only for\n * compatibility and will be removed in a future release.\n */\nexport interface TrackRenderOptions {\n renderCtx?: TrackerRenderProperties;\n variation?: Record<string, string>;\n}\n\n/**\n * @deprecated Built-in tracking is disabled. This class remains only for\n * compatibility and will be removed in a future release.\n *\n * All methods are strict no-ops.\n */\nexport class PlasmicTracker {\n // Preserve constructor signature for compatibility, but do not retain\n // instance state to avoid unused-property diagnostics.\n constructor(_opts: TrackerOptions) {}\n\n /**\n * @deprecated No-op.\n */\n public trackRender(_opts?: TrackRenderOptions): void {}\n\n /**\n * @deprecated No-op.\n */\n public trackFetch(): void {}\n\n /**\n * @deprecated No-op.\n */\n public trackConversion(_value: number = 0): void {}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["name", "dep", "opts", "name", "_a", "name", "module", "opts", "dep", "err"]
7
7
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.138-beta.0",
2
+ "version": "1.0.139",
3
3
  "license": "MIT",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.js",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@plasmicapp/isomorphic-unfetch": "1.0.3",
45
- "@plasmicapp/loader-fetcher": "1.0.56-beta.0"
45
+ "@plasmicapp/loader-fetcher": "1.0.56"
46
46
  },
47
- "gitHead": "fa53f7d79f0e26d8b061102fda0c06788da6f8a7"
47
+ "gitHead": "29e4c19d549d9be1ad2908858d5afd06fdefa10e"
48
48
  }