flowgrid-sdk 1.6.10 → 1.7.0

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/browser.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * @example
11
11
  * ```html
12
- * <script src="https://cdn.flowgrid.com/sdk/v1/flowgrid.min.js"></script>
12
+ * <script src="https://cdn.flow-grid.xyz/flowgrid.min.js"></script>
13
13
  * <script>
14
14
  * FlowGrid.init({ webId: 'your-web-id', apiKey: 'your-api-key' });
15
15
  * FlowGrid.track('button_click', { button: 'signup' });
@@ -46,6 +46,7 @@ type BrowserFacade = {
46
46
  identify: FlowGrid["identifyUser"];
47
47
  defineFeature: FlowGrid["defineFeature"];
48
48
  experiment: FlowGrid["experiment"];
49
+ wireExperiments(): void;
49
50
  productView(product: BrowserProduct, properties?: Record<string, unknown>): ReturnType<FlowGrid["products"]["view"]>;
50
51
  addToCart(product: BrowserProduct, quantity?: number, cartId?: string): ReturnType<FlowGrid["cart"]["add"]>;
51
52
  purchase(order: BrowserOrder): ReturnType<FlowGrid["purchases"]["complete"]>;
@@ -55,6 +56,13 @@ declare global {
55
56
  interface Window {
56
57
  FlowGrid: BrowserFacade;
57
58
  flowgrid: BrowserFacade;
59
+ /**
60
+ * Optional full config for the no-build auto-init path. Set this *before*
61
+ * the `<script>` tag to enable replay, autoTrack tuning, user identify,
62
+ * consent, custom endpoint/transport, etc. without writing an `init()` call.
63
+ * `webId` may be omitted here and supplied via `data-site` instead.
64
+ */
65
+ FlowGridConfig?: Partial<FlowGridInitConfig>;
58
66
  }
59
67
  }
60
68
  export { FlowGrid };
package/dist/browser.js CHANGED
@@ -10,7 +10,7 @@
10
10
  *
11
11
  * @example
12
12
  * ```html
13
- * <script src="https://cdn.flowgrid.com/sdk/v1/flowgrid.min.js"></script>
13
+ * <script src="https://cdn.flow-grid.xyz/flowgrid.min.js"></script>
14
14
  * <script>
15
15
  * FlowGrid.init({ webId: 'your-web-id', apiKey: 'your-api-key' });
16
16
  * FlowGrid.track('button_click', { button: 'signup' });
@@ -23,6 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.FlowGrid = void 0;
24
24
  const flowgrid_1 = require("./lib/flowgrid");
25
25
  Object.defineProperty(exports, "FlowGrid", { enumerable: true, get: function () { return flowgrid_1.FlowGrid; } });
26
+ const declarativeExperiments_1 = require("./lib/features/core/declarativeExperiments");
26
27
  function getInstance() {
27
28
  const instance = flowgrid_1.FlowGrid.instance();
28
29
  if (!instance) {
@@ -90,6 +91,13 @@ const browserFlowGrid = {
90
91
  experiment(experimentId, options) {
91
92
  return getInstance().experiment(experimentId, options);
92
93
  },
94
+ // Manually (re-)scan the DOM for `data-fg-*` experiment attributes. The
95
+ // no-build path wires this automatically; SPA/programmatic users call it
96
+ // after a client-side navigation re-renders the page.
97
+ wireExperiments() {
98
+ const wiring = (0, declarativeExperiments_1.wireDeclarativeExperiments)(getInstance());
99
+ wiring.flushLoad();
100
+ },
93
101
  productView(product, properties) {
94
102
  return getInstance().products.view(normalizeProduct(product), properties);
95
103
  },
@@ -100,9 +108,90 @@ const browserFlowGrid = {
100
108
  return getInstance().purchases.complete(normalizeOrder(order));
101
109
  },
102
110
  };
111
+ /**
112
+ * Read init config from the loading `<script>` tag's data attributes, so a
113
+ * no-build install can self-initialize:
114
+ *
115
+ * ```html
116
+ * <script src="https://cdn.flow-grid.xyz/flowgrid.min.js" data-site="YOUR_WEBSITE_ID"></script>
117
+ * ```
118
+ *
119
+ * Config sources, lowest → highest precedence:
120
+ * 1. `window.FlowGridConfig` — a full {@link FlowGridInitConfig} object set
121
+ * *before* the tag loads. This is how the no-build path enables replay,
122
+ * autoTrack tuning, user identify, consent, custom transport, etc. — every
123
+ * option, declaratively, with no imperative `init()` call.
124
+ * 2. `data-*` attributes on the tag (`data-site`/`data-website-id`/`data-web-id`,
125
+ * `data-api-key`, `data-endpoint`, `data-replay`).
126
+ *
127
+ * `data-manual` suppresses auto-init entirely (call `FlowGrid.init()` yourself).
128
+ * `apiKey` is optional (web_id-only mode) but recommended. Returns `null` when
129
+ * there's no resolvable web id or auto-init is suppressed, leaving the manual
130
+ * `FlowGrid.init({...})` path fully in control.
131
+ */
132
+ function readAutoInitConfig() {
133
+ const el = typeof document !== "undefined"
134
+ ? document.currentScript
135
+ : null;
136
+ const attr = (name) => el && typeof el.getAttribute === "function" ? el.getAttribute(name) : null;
137
+ // Programmatic users opt out of auto-init and configure everything in code.
138
+ if (attr("data-manual") != null)
139
+ return null;
140
+ const fromGlobal = typeof window !== "undefined" ? window.FlowGridConfig : undefined;
141
+ const webId = attr("data-site") ||
142
+ attr("data-website-id") ||
143
+ attr("data-web-id") ||
144
+ fromGlobal?.webId;
145
+ if (!webId)
146
+ return null;
147
+ // Spread the global config first so its replay/autoTrack/user/consent/transport
148
+ // survive; data-* attributes (and the resolved webId) win where present.
149
+ const config = {
150
+ ...fromGlobal,
151
+ webId,
152
+ apiKey: attr("data-api-key") ?? fromGlobal?.apiKey,
153
+ endpoint: attr("data-endpoint") ?? fromGlobal?.endpoint,
154
+ };
155
+ // Simple on/off replay via attribute (the options-object form goes through
156
+ // FlowGridConfig). Don't override an explicit FlowGridConfig.replay.
157
+ const replayAttr = attr("data-replay");
158
+ if (replayAttr != null && config.replay === undefined) {
159
+ config.replay = replayAttr !== "false";
160
+ }
161
+ return { config, runExperiments: attr("data-no-experiments") == null };
162
+ }
103
163
  if (typeof window !== "undefined") {
164
+ // `FlowGrid` is always the SDK facade. `flowgrid` (lowercase) may already be
165
+ // claimed by the core flowgrid.js snippet (a different API) — don't clobber it.
104
166
  window.FlowGrid = browserFlowGrid;
105
- window.flowgrid = browserFlowGrid;
167
+ if (typeof window.flowgrid === "undefined") {
168
+ window.flowgrid = browserFlowGrid;
169
+ }
170
+ // Auto-init from FlowGridConfig / data-* (no-build path). Skipped entirely if
171
+ // an instance already exists (a synchronous manual init won) or `data-manual`
172
+ // is set — so full programmatic configuration is never locked out.
173
+ const auto = readAutoInitConfig();
174
+ if (auto && !flowgrid_1.FlowGrid.instance()) {
175
+ try {
176
+ const fg = flowgrid_1.FlowGrid.init(auto.config);
177
+ // Zero-config experiments: assign + apply the site's dashboard-configured
178
+ // tests with no author JS. Opt out with `data-no-experiments` on the tag.
179
+ if (auto.runExperiments) {
180
+ // Wire the declarative `data-fg-*` attribute layer now (click/submit/view
181
+ // listeners + a MutationObserver for dynamically-injected DOM), then flush
182
+ // any page-level `load` goals once assignment settles — so a marketer needs
183
+ // only HTML attributes to record conversions, never JavaScript.
184
+ const wiring = (0, declarativeExperiments_1.wireDeclarativeExperiments)(fg);
185
+ fg.experiments
186
+ .initFromServer()
187
+ .catch(() => { })
188
+ .then(() => wiring.flushLoad());
189
+ }
190
+ }
191
+ catch {
192
+ /* init surfaces its own error; never throw from the bundle's top level */
193
+ }
194
+ }
106
195
  }
107
196
  exports.default = browserFlowGrid;
108
197
  //# sourceMappingURL=browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}