@picked/client 0.0.75-next.1 → 0.0.76-next.1
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/.tsbuildinfo +1 -1
- package/dist/{api-CUlZaK-b.cjs → api-BSaiU2_6.cjs} +1 -1
- package/dist/{api-ITpKqiED.js → api-Ck8lmzse.js} +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
- package/dist/cjs/server/index.js +1 -1
- package/dist/docs/reference/sdk/features.md +7 -0
- package/dist/esm/index.js +226 -461
- package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
- package/dist/esm/server/index.js +1 -1
- package/dist/{plugin-BNLWb4FA.js → plugin-lN21f9R_.js} +73 -52
- package/dist/plugin-lSsl6IEd.cjs +1 -0
- package/dist/{provider-DCjzwNWK.cjs → provider-DtspNGzA.cjs} +1 -1
- package/dist/{provider-Da1D5BIA.js → provider-So2by8pt.js} +1 -1
- package/dist/types/entities/feature/feature.d.ts +43 -2
- package/dist/types/entities/feature/feature.d.ts.map +1 -1
- package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
- package/dist/version-OPJEe34i.cjs +1 -0
- package/dist/version-u9kKN2Ti.js +256 -0
- package/package.json +2 -2
- package/dist/plugin-xFCAKJuO.cjs +0 -1
- package/dist/version-BsVuRkHH.js +0 -4
- package/dist/version-DYoxIopP.cjs +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as e } from "../../../plugin-
|
|
2
|
-
import { n as t, t as n } from "../../../api-
|
|
1
|
+
import { t as e } from "../../../plugin-lN21f9R_.js";
|
|
2
|
+
import { n as t, t as n } from "../../../api-Ck8lmzse.js";
|
|
3
3
|
import { n as r } from "../../../registry-CXZv0uLg.js";
|
|
4
4
|
import { createClientHeaders as i, fetchSchema as a } from "@picked/delivery-api-client";
|
|
5
5
|
export { i as createClientHeaders, e as dynamicExperiencesPlugin, n as fetchExperienceContent, t as fetchProject, a as fetchSchema, r as registerPickedBundle };
|
package/dist/esm/server/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as e, c as t, i as n, o as r, s as i, t as a, u as o } from "../../experience-instance-DGk11d8a.js";
|
|
2
|
-
import { n as s } from "../../plugin-
|
|
2
|
+
import { n as s } from "../../plugin-lN21f9R_.js";
|
|
3
3
|
import { attach as c, createEffect as l, createEvent as u, createStore as d, sample as f } from "effector";
|
|
4
4
|
//#region src/server/serialize.ts
|
|
5
5
|
var p = 1e4;
|
|
@@ -1,43 +1,44 @@
|
|
|
1
1
|
import "./logger-DMN6TxJJ.js";
|
|
2
|
-
import "./
|
|
3
|
-
import
|
|
2
|
+
import { r as e } from "./version-u9kKN2Ti.js";
|
|
3
|
+
import "./api-Ck8lmzse.js";
|
|
4
|
+
import { attach as t } from "effector";
|
|
4
5
|
//#region src/plugins/dynamic-experiences/hash.ts
|
|
5
|
-
function
|
|
6
|
+
function n(e) {
|
|
6
7
|
let t = 2166136261;
|
|
7
8
|
for (let n of e) t ^= n.codePointAt(0) ?? 0, t = Math.imul(t, 16777619);
|
|
8
9
|
return t >>> 0;
|
|
9
10
|
}
|
|
10
|
-
function
|
|
11
|
+
function r(e) {
|
|
11
12
|
let t = e;
|
|
12
13
|
return t ^= t >>> 16, t = Math.imul(t, 2246822507), t ^= t >>> 13, t = Math.imul(t, 3266489909), t ^= t >>> 16, t >>> 0;
|
|
13
14
|
}
|
|
14
|
-
function r(e, r) {
|
|
15
|
-
return n(t(`${e}:${r}`)) % 100;
|
|
16
|
-
}
|
|
17
15
|
function i(e, t) {
|
|
18
|
-
return t
|
|
16
|
+
return r(n(`${e}:${t}`)) % 100;
|
|
19
17
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return (n(t(`${e}:${r}:${i}`)) + .5) / a;
|
|
18
|
+
function a(e, t) {
|
|
19
|
+
return t <= 0 ? !1 : t >= 100 || e < t;
|
|
23
20
|
}
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
var o = 4294967296;
|
|
22
|
+
function s(e, t, i) {
|
|
23
|
+
return (r(n(`${e}:${t}:${i}`)) + .5) / o;
|
|
26
24
|
}
|
|
27
25
|
function c(e, t, n) {
|
|
26
|
+
return n.weight <= 0 ? 0 : n.weight / -Math.log(s(e, t, n.key));
|
|
27
|
+
}
|
|
28
|
+
function l(e, t, n) {
|
|
28
29
|
let r = null, i = 0;
|
|
29
30
|
for (let a of n) {
|
|
30
|
-
let n =
|
|
31
|
+
let n = c(e, t, a);
|
|
31
32
|
n <= 0 || (n > i || n === i && r !== null && a.key < r.key) && (i = n, r = a);
|
|
32
33
|
}
|
|
33
34
|
return r;
|
|
34
35
|
}
|
|
35
36
|
//#endregion
|
|
36
37
|
//#region src/plugins/dynamic-experiences/plugin.ts
|
|
37
|
-
function
|
|
38
|
+
function u(e, t) {
|
|
38
39
|
if (Array.isArray(t.conditions)) for (let n of t.conditions) e.registerCondition(n);
|
|
39
40
|
}
|
|
40
|
-
function
|
|
41
|
+
function d(e, t) {
|
|
41
42
|
e.registerExperience({
|
|
42
43
|
id: t.id,
|
|
43
44
|
key: t.key,
|
|
@@ -50,13 +51,13 @@ function u(e, t) {
|
|
|
50
51
|
componentName: t.componentName
|
|
51
52
|
});
|
|
52
53
|
}
|
|
53
|
-
function
|
|
54
|
+
function f(e) {
|
|
54
55
|
return typeof e != "object" || !e ? !1 : "id" in e && "key" in e && "type" in e && "name" in e;
|
|
55
56
|
}
|
|
56
|
-
function f(e, t) {
|
|
57
|
-
if (Array.isArray(t.fields)) for (let n of t.fields) d(n) && e.registerField(n);
|
|
58
|
-
}
|
|
59
57
|
function p(e, t) {
|
|
58
|
+
if (Array.isArray(t.fields)) for (let n of t.fields) f(n) && e.registerField(n);
|
|
59
|
+
}
|
|
60
|
+
function m(e, t) {
|
|
60
61
|
if (!Array.isArray(t.steps)) return;
|
|
61
62
|
let n = new Map(t.fields.map((e) => [e.id, e.key]));
|
|
62
63
|
for (let r of t.steps) {
|
|
@@ -83,30 +84,48 @@ function p(e, t) {
|
|
|
83
84
|
});
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
|
-
function
|
|
87
|
-
if (Array.isArray(t.experiences)) for (let n of t.experiences)
|
|
87
|
+
function h(e, t) {
|
|
88
|
+
if (Array.isArray(t.experiences)) for (let n of t.experiences) d(e, n);
|
|
88
89
|
}
|
|
89
|
-
function
|
|
90
|
-
|
|
90
|
+
function g(e, t, n) {
|
|
91
|
+
y(e, t, n.isPreview, n.sessionId), u(e, t), p(e, t), m(e, t), h(e, t);
|
|
91
92
|
}
|
|
92
|
-
function
|
|
93
|
+
function _(e) {
|
|
93
94
|
let t = e.searchParams["preview-token"];
|
|
94
95
|
if (t && t.length > 0) return t[0];
|
|
95
96
|
}
|
|
96
|
-
function
|
|
97
|
-
let
|
|
98
|
-
if (!
|
|
99
|
-
for (let
|
|
100
|
-
let
|
|
101
|
-
|
|
97
|
+
function v(t) {
|
|
98
|
+
let n = /* @__PURE__ */ new Map(), r = t.searchParams.feature;
|
|
99
|
+
if (!r) return n;
|
|
100
|
+
for (let t of r) {
|
|
101
|
+
let r = e(t);
|
|
102
|
+
r && n.set(r.id, r.bucket);
|
|
103
|
+
}
|
|
104
|
+
return n;
|
|
105
|
+
}
|
|
106
|
+
function y(e, t, n, r) {
|
|
107
|
+
let i = v(e);
|
|
108
|
+
for (let a of t.features) {
|
|
109
|
+
let t = i.get(a.id);
|
|
110
|
+
if (t !== void 0) {
|
|
111
|
+
b(e, a, t);
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
x(e, a, n, r);
|
|
102
115
|
}
|
|
103
|
-
return t;
|
|
104
116
|
}
|
|
105
|
-
function
|
|
106
|
-
|
|
107
|
-
|
|
117
|
+
function b(e, t, n) {
|
|
118
|
+
e.registerFeature(t.id, {
|
|
119
|
+
key: `${n}`,
|
|
120
|
+
name: t.name,
|
|
121
|
+
weight: t.weight,
|
|
122
|
+
...t.valueType !== void 0 && { valueType: t.valueType },
|
|
123
|
+
...t.variants !== void 0 && { variants: t.variants },
|
|
124
|
+
storage: "session",
|
|
125
|
+
decide: () => n
|
|
126
|
+
});
|
|
108
127
|
}
|
|
109
|
-
function
|
|
128
|
+
function x(e, t, n, r) {
|
|
110
129
|
let o = t.id, s = t.variants;
|
|
111
130
|
e.registerFeature(o, {
|
|
112
131
|
key: `v${t.version}`,
|
|
@@ -114,17 +133,19 @@ function y(e, t, n, a) {
|
|
|
114
133
|
enabled: t.enabled,
|
|
115
134
|
weight: t.weight,
|
|
116
135
|
storage: n ? "session" : "local",
|
|
117
|
-
|
|
136
|
+
valueType: t.valueType,
|
|
137
|
+
variants: s,
|
|
138
|
+
decide: () => t.valueType === "text" ? !s || s.length === 0 ? (`${o}`, !1) : l(r, o, s)?.value ?? !1 : a(i(r, o), t.weight)
|
|
118
139
|
});
|
|
119
140
|
}
|
|
120
|
-
function
|
|
141
|
+
function S(e, t) {
|
|
121
142
|
for (let n of [...t.references ?? [], ...t.content]) e.registerContent({
|
|
122
143
|
id: n.id,
|
|
123
144
|
contentModelKey: n.contentModelKey,
|
|
124
145
|
data: n.data
|
|
125
146
|
});
|
|
126
147
|
}
|
|
127
|
-
function
|
|
148
|
+
function C(e, t) {
|
|
128
149
|
let n = /* @__PURE__ */ new Map();
|
|
129
150
|
return (r, i) => {
|
|
130
151
|
let a = n.get(r.id);
|
|
@@ -132,7 +153,7 @@ function x(e, t) {
|
|
|
132
153
|
let o = (async () => {
|
|
133
154
|
try {
|
|
134
155
|
let n = await t(r, i);
|
|
135
|
-
return n &&
|
|
156
|
+
return n && S(e, n), n;
|
|
136
157
|
} finally {
|
|
137
158
|
n.delete(r.id);
|
|
138
159
|
}
|
|
@@ -140,33 +161,33 @@ function x(e, t) {
|
|
|
140
161
|
return n.set(r.id, o), o;
|
|
141
162
|
};
|
|
142
163
|
}
|
|
143
|
-
function
|
|
164
|
+
function w(e, t) {
|
|
144
165
|
let n = new Set(t && Array.isArray(t.experiences) ? t.experiences.map((e) => e.id) : []);
|
|
145
166
|
return (t, r) => n.has(t.id) ? e(t, r) : Promise.resolve(null);
|
|
146
167
|
}
|
|
147
|
-
function
|
|
168
|
+
function T() {
|
|
148
169
|
return {
|
|
149
170
|
name: "dynamic-experiences",
|
|
150
|
-
setup: (
|
|
151
|
-
source:
|
|
152
|
-
effect: async (
|
|
153
|
-
let n =
|
|
154
|
-
if (
|
|
155
|
-
let o =
|
|
171
|
+
setup: (e) => ({ onStart: t({
|
|
172
|
+
source: e.session.store.map((e) => e.id),
|
|
173
|
+
effect: async (t) => {
|
|
174
|
+
let n = _(e), r = n !== void 0, i = n === void 0 ? void 0 : { previewToken: n }, a = await e.getProjectConfig(n === void 0 ? void 0 : { previewToken: n }).catch((e) => null);
|
|
175
|
+
if (e.contentLoader = C(e, w((t) => e.getExperienceContent(t, i), a)), !a) return;
|
|
176
|
+
let o = e.seededVersionId;
|
|
156
177
|
if (o !== null && o !== a.versionId) {
|
|
157
|
-
|
|
178
|
+
e.versionSkew = {
|
|
158
179
|
seeded: o,
|
|
159
180
|
resolved: a.versionId
|
|
160
181
|
}, `${a.versionId}${o}`;
|
|
161
182
|
return;
|
|
162
183
|
}
|
|
163
|
-
|
|
184
|
+
e.previewEmbedderOrigins = a.previewEmbedderOrigins ?? null, g(e, a, {
|
|
164
185
|
isPreview: r,
|
|
165
|
-
sessionId:
|
|
186
|
+
sessionId: t
|
|
166
187
|
});
|
|
167
188
|
}
|
|
168
189
|
}) })
|
|
169
190
|
};
|
|
170
191
|
}
|
|
171
192
|
//#endregion
|
|
172
|
-
export {
|
|
193
|
+
export { g as n, T as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require("./logger-CSTvAyyB.cjs");const e=require("./version-OPJEe34i.cjs");require("./api-BSaiU2_6.cjs");let t=require("effector");function n(e){let t=2166136261;for(let n of e)t^=n.codePointAt(0)??0,t=Math.imul(t,16777619);return t>>>0}function r(e){let t=e;return t^=t>>>16,t=Math.imul(t,2246822507),t^=t>>>13,t=Math.imul(t,3266489909),t^=t>>>16,t>>>0}function i(e,t){return r(n(`${e}:${t}`))%100}function a(e,t){return t<=0?!1:t>=100||e<t}var o=4294967296;function s(e,t,i){return(r(n(`${e}:${t}:${i}`))+.5)/o}function c(e,t,n){return n.weight<=0?0:n.weight/-Math.log(s(e,t,n.key))}function l(e,t,n){let r=null,i=0;for(let a of n){let n=c(e,t,a);n<=0||(n>i||n===i&&r!==null&&a.key<r.key)&&(i=n,r=a)}return r}function u(e,t){if(Array.isArray(t.conditions))for(let n of t.conditions)e.registerCondition(n)}function d(e,t){e.registerExperience({id:t.id,key:t.key,name:t.name,targets:t.targets,nodes:t.nodes,edges:t.edges,condition:t.condition,initializeOpen:t.initializeOpen,componentName:t.componentName})}function f(e){return typeof e!=`object`||!e?!1:`id`in e&&`key`in e&&`type`in e&&`name`in e}function p(e,t){if(Array.isArray(t.fields))for(let n of t.fields)f(n)&&e.registerField(n)}function m(e,t){if(!Array.isArray(t.steps))return;let n=new Map(t.fields.map(e=>[e.id,e.key]));for(let r of t.steps){let t=[];for(let e of r.fieldIds??[]){let i=n.get(e);if(i===void 0){`${r.key}${e}`;continue}t.push(i)}let i=r.layoutContentId?e.contents.getById(r.layoutContentId):null;e.registerStep({id:r.id,key:r.key,name:r.name,fieldKeys:t,layoutName:r.layoutName,...r.layoutContentId!==void 0&&{layoutContentId:r.layoutContentId,layoutContentStore:i}})}}function h(e,t){if(Array.isArray(t.experiences))for(let n of t.experiences)d(e,n)}function g(e,t,n){y(e,t,n.isPreview,n.sessionId),u(e,t),p(e,t),m(e,t),h(e,t)}function _(e){let t=e.searchParams[`preview-token`];if(t&&t.length>0)return t[0]}function v(t){let n=new Map,r=t.searchParams.feature;if(!r)return n;for(let t of r){let r=e.r(t);r&&n.set(r.id,r.bucket)}return n}function y(e,t,n,r){let i=v(e);for(let a of t.features){let t=i.get(a.id);if(t!==void 0){b(e,a,t);continue}x(e,a,n,r)}}function b(e,t,n){e.registerFeature(t.id,{key:`${n}`,name:t.name,weight:t.weight,...t.valueType!==void 0&&{valueType:t.valueType},...t.variants!==void 0&&{variants:t.variants},storage:`session`,decide:()=>n})}function x(e,t,n,r){let o=t.id,s=t.variants;e.registerFeature(o,{key:`v${t.version}`,name:t.name,enabled:t.enabled,weight:t.weight,storage:n?`session`:`local`,valueType:t.valueType,variants:s,decide:()=>t.valueType===`text`?!s||s.length===0?(`${o}`,!1):l(r,o,s)?.value??!1:a(i(r,o),t.weight)})}function S(e,t){for(let n of[...t.references??[],...t.content])e.registerContent({id:n.id,contentModelKey:n.contentModelKey,data:n.data})}function C(e,t){let n=new Map;return(r,i)=>{let a=n.get(r.id);if(a)return a;let o=(async()=>{try{let n=await t(r,i);return n&&S(e,n),n}finally{n.delete(r.id)}})();return n.set(r.id,o),o}}function w(e,t){let n=new Set(t&&Array.isArray(t.experiences)?t.experiences.map(e=>e.id):[]);return(t,r)=>n.has(t.id)?e(t,r):Promise.resolve(null)}function T(){return{name:`dynamic-experiences`,setup:e=>({onStart:(0,t.attach)({source:e.session.store.map(e=>e.id),effect:async t=>{let n=_(e),r=n!==void 0,i=n===void 0?void 0:{previewToken:n},a=await e.getProjectConfig(n===void 0?void 0:{previewToken:n}).catch(e=>null);if(e.contentLoader=C(e,w(t=>e.getExperienceContent(t,i),a)),!a)return;let o=e.seededVersionId;if(o!==null&&o!==a.versionId){e.versionSkew={seeded:o,resolved:a.versionId},`${a.versionId}${o}`;return}e.previewEmbedderOrigins=a.previewEmbedderOrigins??null,g(e,a,{isPreview:r,sessionId:t})}})})}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return T}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require("./logger-CSTvAyyB.cjs");const e=require("./api-
|
|
1
|
+
require("./logger-CSTvAyyB.cjs");const e=require("./api-BSaiU2_6.cjs"),t=require("./registry-C1t8l3t9.cjs");var n=`bundle`,r=`api`;async function i(){try{let e=await import(`virtual:picked/data`);return t.r(e)?e:null}catch{return null}}function a(e){if(e===void 0||t.r(e))return e}function o(o){let{apiUrl:s,projectId:c,previewToken:l,signal:u}=o,d=!!l,f=d?r:o.mode,p=a(d?void 0:o.bundle),m=d?void 0:o.projectConfig,h=o.getContent,g={mode:f??r,manifest:null},_,v,y=new Map;function b(){if(f===r)return Promise.resolve(null);if(p)return Promise.resolve(p);let e=t.t();return e?Promise.resolve(e):(_??=i(),_)}function x(e){g.mode=e?n:r,g.manifest=e?e.manifestMetadata:null}async function S(){if(m)return x(await b()),m;let t=await b();return x(t),t?t.projectConfig:f===n?null:e.n(s,c,{...l!==void 0&&{previewToken:l},...u!==void 0&&{signal:u}})}async function C(t,r){let i=l===void 0?void 0:{previewToken:l};if(h)return h(t,i);let a=await b();if(x(a),a)try{return await a.experienceContent(t,i)}catch{return`${t.id}`,null}if(f===n)return null;let o=r??u;return e.t(s,c,t.id,{...l!==void 0&&{previewToken:l},...o!==void 0&&{signal:o}})}return{meta:g,getProjectConfig:()=>(v??=S(),v),getContent:(e,t)=>{let n=y.get(e.id);if(n)return n;let r=C(e,t?.signal).finally(()=>{y.delete(e.id)});return y.set(e.id,r),r}}}exports.createPickedDataProvider=o;
|
|
@@ -2,7 +2,26 @@
|
|
|
2
2
|
import { type EventCallable, type Store } from 'effector';
|
|
3
3
|
import type { Picked } from '../../picked';
|
|
4
4
|
import type { FeatureValueFor } from '../../schema-registry';
|
|
5
|
-
|
|
5
|
+
/** One arm of a feature, as published in the project config. */
|
|
6
|
+
export interface FeatureVariant {
|
|
7
|
+
/** Stable identity. `true` and `false` name the structural arms. */
|
|
8
|
+
key: string;
|
|
9
|
+
/** What the site receives when a visitor lands in this arm. */
|
|
10
|
+
value: boolean | string;
|
|
11
|
+
/** Share of traffic relative to the other arms, reduced by their greatest common divisor. */
|
|
12
|
+
weight: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* What a feature's arms serve, as published in the project config. A feature registered
|
|
16
|
+
* from SDK code carries neither field, so an absent pair means the shape is unknown.
|
|
17
|
+
*/
|
|
18
|
+
export interface FeatureShape {
|
|
19
|
+
/** What the feature's arms serve. */
|
|
20
|
+
valueType?: 'boolean' | 'text';
|
|
21
|
+
/** The arms a text feature serves. A boolean feature splits on `weight`. */
|
|
22
|
+
variants?: readonly FeatureVariant[];
|
|
23
|
+
}
|
|
24
|
+
export interface Feature extends FeatureShape {
|
|
6
25
|
key: string;
|
|
7
26
|
name: string;
|
|
8
27
|
decide: () => boolean | Promise<boolean> | string | Promise<string>;
|
|
@@ -25,7 +44,7 @@ export interface ResolvedFeature {
|
|
|
25
44
|
key: string;
|
|
26
45
|
storage?: 'local' | 'session';
|
|
27
46
|
}
|
|
28
|
-
export interface FeatureBaseBucket {
|
|
47
|
+
export interface FeatureBaseBucket extends FeatureShape {
|
|
29
48
|
name: string;
|
|
30
49
|
key: string;
|
|
31
50
|
id: string;
|
|
@@ -77,6 +96,28 @@ export type FeatureBucketValue = boolean | string | undefined;
|
|
|
77
96
|
* ```
|
|
78
97
|
*/
|
|
79
98
|
export declare function parseBucket(value: string): boolean | string;
|
|
99
|
+
/** A `?picked-feature=` override, split into the feature it names and the bucket it forces. */
|
|
100
|
+
export interface FeatureOverride {
|
|
101
|
+
id: string;
|
|
102
|
+
bucket: boolean | string;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Reads one `?picked-feature=<id>:<value>` parameter.
|
|
106
|
+
*
|
|
107
|
+
* Splits on the first colon: the text before it names the feature, and all the text
|
|
108
|
+
* after it is the bucket, colons included. `opening-hours:09:00-17:00` forces
|
|
109
|
+
* `09:00-17:00`. Feature and variant keys are lowercase letters, numbers and hyphens,
|
|
110
|
+
* which is what makes the first colon the boundary.
|
|
111
|
+
*
|
|
112
|
+
* @param {string} param - One `picked-feature` parameter value, without its key.
|
|
113
|
+
* @returns {FeatureOverride | null} The override, or null when the parameter names no feature or forces no value.
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* parseFeatureOverride('hero-layout:video-hero') // { id: 'hero-layout', bucket: 'video-hero' }
|
|
117
|
+
* parseFeatureOverride('opening-hours:09:00-17:00') // { id: 'opening-hours', bucket: '09:00-17:00' }
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function parseFeatureOverride(param: string): FeatureOverride | null;
|
|
80
121
|
declare const createFeatureIndexFactory: ({ client }: {
|
|
81
122
|
client: Picked;
|
|
82
123
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../src/entities/feature/feature.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,OAAO,EAQL,KAAK,aAAa,EAElB,KAAK,KAAK,EACX,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAI5D,MAAM,WAAW,OAAO;
|
|
1
|
+
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../../../src/entities/feature/feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/dynamic-experiences/plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,aAAa,EAGd,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/dynamic-experiences/plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,aAAa,EAGd,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAG1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAK1C,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AA+J5E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CAMN;AA2QD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CA4DjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./logger-CSTvAyyB.cjs"),t=require("./storage-DUw9UJ2h.cjs");let n=require("effector"),r=require("@withease/factories");var i=(0,n.createDomain)(`feature`);function a(e){return e?.enabled===!1}function o(e){return e===`true`||e!==`false`&&e}function s(e){let t=e.indexOf(`:`);if(t<=0)return null;let n=e.substring(0,t),r=e.substring(t+1);return r.length===0?null:{id:n,bucket:o(r)}}var c=(0,r.createFactory)(({client:r})=>{let s=i.store({}),c=i.store([]),l=(0,n.createApi)(s,{register(e,t){return{...e,[t.id]:t.feature}}}),u=(0,n.createEvent)();(0,n.sample)({clock:u,source:s,filter:(e,{id:t})=>e[t]!==void 0,fn:(e,{id:t})=>`Feature '${t}' already registered. Registering again will override the previous registration.`}).watch(t=>e.t(`warn`,t)),(0,n.sample)({clock:u,fn:({id:e,feature:t})=>Object.freeze({id:e,feature:{id:e,feature:{...t,id:e}}}),target:l.register});let d=(0,n.createEffect)(async({id:e,key:n,storage:r=`local`,enabled:i})=>{if(i===!1)return null;let a=t.t(`feature:${e}:${n}`,`global`),s=(r===`session`?t.r:t.n).get(a).text();return s?{id:e,key:n,bucket:o(s),storage:r}:null}),f=(0,n.createEffect)(e=>{if(!e)return null;let n=t.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?t.r:t.n).set(n,e.bucket)}),p=new Map,m=(0,n.attach)({source:{allFeaturesStore:s,resolvedFeaturesStore:c},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let o=t.find(e=>e.id===n&&e.key===i);if(o)return o;let s=e[n];if(!s)throw Error(`Feature with id '${n}' not found`);if(a(s.feature))return{id:s.id,bucket:!1,key:i,storage:s.feature.storage};let c=p.get(`${n}:${i}`);if(c!==void 0){let e=await c;return{id:s.id,bucket:e,key:i,storage:s.feature.storage}}let l=r();p.set(`${n}:${i}`,l);let u=await l;return{id:s.id,bucket:u,key:i,storage:s.feature.storage}}});(0,n.sample)({clock:l.register,fn:e=>{let{id:t,feature:n}=e;return{id:t,key:n.feature.key,storage:n.feature.storage,enabled:n.feature.enabled}},target:d}),(0,n.sample)({source:s,clock:m.doneData,filter:(e,t)=>!a(e[t.id]?.feature),fn:(e,t)=>{let{id:n,bucket:r,storage:i}=t,a=e[n]?.feature.key;return a?{key:a,id:n,bucket:r,storage:i}:null},target:f});let h=(0,n.combine)({allFeaturesStore:s,resolvedFeaturesStore:c}).map(({allFeaturesStore:e,resolvedFeaturesStore:t})=>Object.values(e).map(e=>{let n=t.find(t=>t.id===e.id&&t.key===e.feature.key);return n?{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,valueType:e.feature.valueType,variants:e.feature.variants,getBucket:()=>({id:e.id,bucket:n.bucket}),isResolved:!0}:{id:e.id,name:e.feature.name,key:e.feature.key,enabled:e.feature.enabled,weight:e.feature.weight,valueType:e.feature.valueType,variants:e.feature.variants,getBucket:async()=>await m(e.feature),isResolved:!1}}));(0,n.sample)({clock:m.doneData,source:{resolvedFeatures:c,allFeatures:s},filter:({resolvedFeatures:e,allFeatures:t},{id:n,key:r})=>!a(t[n]?.feature)&&!e.some(e=>e.id===n&&e.key===r),fn:(e,t)=>t,target:r.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,n.sample)({clock:[d.doneData,m.doneData],source:{resolvedFeatures:c,allFeatures:s},fn:({resolvedFeatures:e,allFeatures:t},n)=>!n||a(t[n.id]?.feature)||e.some(e=>e.id===n.id&&e.key===n.key)?e:[...e,n],target:c});function g(e){return h.map(t=>t.find(t=>t.id===e))}let _=new Map,v=new Map,y=new Map;function b(e){let t=_.get(e);if(t)return t;let n=g(e);return _.set(e,n),n}function x(e){return s.map(t=>t[e],{skipVoid:!1})}function S(e){let t=(0,n.createStore)(async()=>void 0,{skipVoid:!1}),r=b(e),i=(0,n.attach)({source:r,effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,n.sample)({clock:r,target:i}),(0,n.sample)({clock:i.doneData,filter:e=>e!==void 0,target:t}),i(),t}function C(e){let t=v.get(e);if(t)return t;let n=S(e);return v.set(e,n),n}function w(e){let t=C(e),r=(0,n.createStore)(void 0,{skipVoid:!1}),i=(0,n.attach)({source:t,mapParams:(e,t)=>t,effect:(0,n.createEffect)(async e=>await e())});return(0,n.sample)({clock:i.doneData,fn:t=>{if(t!==void 0)return{id:e,bucket:t}},target:r}),(0,n.sample)({clock:t,target:i}),i(),r}function T(e){let t=y.get(e);if(t)return t;let n=w(e);return y.set(e,n),n}return{register:u,getById:b,getByName:x,listStore:h,getEvokableFeature:C,getFeatureResult:T}});function l(e){return(0,r.invoke)(c,e)}var u=(e,t,n)=>{n.register({id:e,feature:t})},d=()=>`0.0.76-next.1`;Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return d}});
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { t as e } from "./logger-DMN6TxJJ.js";
|
|
2
|
+
import { n as t, r as n, t as r } from "./storage-1MW3-_As.js";
|
|
3
|
+
import { attach as i, combine as a, createApi as o, createDomain as s, createEffect as c, createEvent as l, createStore as u, sample as d } from "effector";
|
|
4
|
+
import { createFactory as f, invoke as p } from "@withease/factories";
|
|
5
|
+
//#region src/entities/feature/feature.ts
|
|
6
|
+
var m = s("feature");
|
|
7
|
+
function h(e) {
|
|
8
|
+
return e?.enabled === !1;
|
|
9
|
+
}
|
|
10
|
+
function g(e) {
|
|
11
|
+
return e === "true" || e !== "false" && e;
|
|
12
|
+
}
|
|
13
|
+
function _(e) {
|
|
14
|
+
let t = e.indexOf(":");
|
|
15
|
+
if (t <= 0) return null;
|
|
16
|
+
let n = e.substring(0, t), r = e.substring(t + 1);
|
|
17
|
+
return r.length === 0 ? null : {
|
|
18
|
+
id: n,
|
|
19
|
+
bucket: g(r)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
var v = f(({ client: s }) => {
|
|
23
|
+
let f = m.store({}), p = m.store([]), _ = o(f, { register(e, t) {
|
|
24
|
+
return {
|
|
25
|
+
...e,
|
|
26
|
+
[t.id]: t.feature
|
|
27
|
+
};
|
|
28
|
+
} }), v = l();
|
|
29
|
+
d({
|
|
30
|
+
clock: v,
|
|
31
|
+
source: f,
|
|
32
|
+
filter: (e, { id: t }) => e[t] !== void 0,
|
|
33
|
+
fn: (e, { id: t }) => `Feature '${t}' already registered. Registering again will override the previous registration.`
|
|
34
|
+
}).watch((t) => /* @__PURE__ */ e("warn", t)), d({
|
|
35
|
+
clock: v,
|
|
36
|
+
fn: ({ id: e, feature: t }) => Object.freeze({
|
|
37
|
+
id: e,
|
|
38
|
+
feature: {
|
|
39
|
+
id: e,
|
|
40
|
+
feature: {
|
|
41
|
+
...t,
|
|
42
|
+
id: e
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}),
|
|
46
|
+
target: _.register
|
|
47
|
+
});
|
|
48
|
+
let y = c(async ({ id: e, key: i, storage: a = "local", enabled: o }) => {
|
|
49
|
+
if (o === !1) return null;
|
|
50
|
+
let s = r(`feature:${e}:${i}`, "global"), c = (a === "session" ? n : t).get(s).text();
|
|
51
|
+
return c ? {
|
|
52
|
+
id: e,
|
|
53
|
+
key: i,
|
|
54
|
+
bucket: g(c),
|
|
55
|
+
storage: a
|
|
56
|
+
} : null;
|
|
57
|
+
}), b = c((e) => {
|
|
58
|
+
if (!e) return null;
|
|
59
|
+
let i = r(`feature:${e.id}:${e.key}`, "global");
|
|
60
|
+
(e.storage === "session" ? n : t).set(i, e.bucket);
|
|
61
|
+
}), x = /* @__PURE__ */ new Map(), S = i({
|
|
62
|
+
source: {
|
|
63
|
+
allFeaturesStore: f,
|
|
64
|
+
resolvedFeaturesStore: p
|
|
65
|
+
},
|
|
66
|
+
effect: async ({ allFeaturesStore: e, resolvedFeaturesStore: t }, { id: n, decide: r, key: i }) => {
|
|
67
|
+
let a = t.find((e) => e.id === n && e.key === i);
|
|
68
|
+
if (a) return a;
|
|
69
|
+
let o = e[n];
|
|
70
|
+
if (!o) throw Error(`Feature with id '${n}' not found`);
|
|
71
|
+
if (h(o.feature)) return {
|
|
72
|
+
id: o.id,
|
|
73
|
+
bucket: !1,
|
|
74
|
+
key: i,
|
|
75
|
+
storage: o.feature.storage
|
|
76
|
+
};
|
|
77
|
+
let s = x.get(`${n}:${i}`);
|
|
78
|
+
if (s !== void 0) {
|
|
79
|
+
let e = await s;
|
|
80
|
+
return {
|
|
81
|
+
id: o.id,
|
|
82
|
+
bucket: e,
|
|
83
|
+
key: i,
|
|
84
|
+
storage: o.feature.storage
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
let c = r();
|
|
88
|
+
x.set(`${n}:${i}`, c);
|
|
89
|
+
let l = await c;
|
|
90
|
+
return {
|
|
91
|
+
id: o.id,
|
|
92
|
+
bucket: l,
|
|
93
|
+
key: i,
|
|
94
|
+
storage: o.feature.storage
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
d({
|
|
99
|
+
clock: _.register,
|
|
100
|
+
fn: (e) => {
|
|
101
|
+
let { id: t, feature: n } = e;
|
|
102
|
+
return {
|
|
103
|
+
id: t,
|
|
104
|
+
key: n.feature.key,
|
|
105
|
+
storage: n.feature.storage,
|
|
106
|
+
enabled: n.feature.enabled
|
|
107
|
+
};
|
|
108
|
+
},
|
|
109
|
+
target: y
|
|
110
|
+
}), d({
|
|
111
|
+
source: f,
|
|
112
|
+
clock: S.doneData,
|
|
113
|
+
filter: (e, t) => !h(e[t.id]?.feature),
|
|
114
|
+
fn: (e, t) => {
|
|
115
|
+
let { id: n, bucket: r, storage: i } = t, a = e[n]?.feature.key;
|
|
116
|
+
return a ? {
|
|
117
|
+
key: a,
|
|
118
|
+
id: n,
|
|
119
|
+
bucket: r,
|
|
120
|
+
storage: i
|
|
121
|
+
} : null;
|
|
122
|
+
},
|
|
123
|
+
target: b
|
|
124
|
+
});
|
|
125
|
+
let C = a({
|
|
126
|
+
allFeaturesStore: f,
|
|
127
|
+
resolvedFeaturesStore: p
|
|
128
|
+
}).map(({ allFeaturesStore: e, resolvedFeaturesStore: t }) => Object.values(e).map((e) => {
|
|
129
|
+
let n = t.find((t) => t.id === e.id && t.key === e.feature.key);
|
|
130
|
+
return n ? {
|
|
131
|
+
id: e.id,
|
|
132
|
+
name: e.feature.name,
|
|
133
|
+
key: e.feature.key,
|
|
134
|
+
enabled: e.feature.enabled,
|
|
135
|
+
weight: e.feature.weight,
|
|
136
|
+
valueType: e.feature.valueType,
|
|
137
|
+
variants: e.feature.variants,
|
|
138
|
+
getBucket: () => ({
|
|
139
|
+
id: e.id,
|
|
140
|
+
bucket: n.bucket
|
|
141
|
+
}),
|
|
142
|
+
isResolved: !0
|
|
143
|
+
} : {
|
|
144
|
+
id: e.id,
|
|
145
|
+
name: e.feature.name,
|
|
146
|
+
key: e.feature.key,
|
|
147
|
+
enabled: e.feature.enabled,
|
|
148
|
+
weight: e.feature.weight,
|
|
149
|
+
valueType: e.feature.valueType,
|
|
150
|
+
variants: e.feature.variants,
|
|
151
|
+
getBucket: async () => await S(e.feature),
|
|
152
|
+
isResolved: !1
|
|
153
|
+
};
|
|
154
|
+
}));
|
|
155
|
+
d({
|
|
156
|
+
clock: S.doneData,
|
|
157
|
+
source: {
|
|
158
|
+
resolvedFeatures: p,
|
|
159
|
+
allFeatures: f
|
|
160
|
+
},
|
|
161
|
+
filter: ({ resolvedFeatures: e, allFeatures: t }, { id: n, key: r }) => !h(t[n]?.feature) && !e.some((e) => e.id === n && e.key === r),
|
|
162
|
+
fn: (e, t) => t,
|
|
163
|
+
target: s.eventBus.prepend((e) => ({
|
|
164
|
+
type: "feature_decide",
|
|
165
|
+
feature: e
|
|
166
|
+
}))
|
|
167
|
+
}), d({
|
|
168
|
+
clock: [y.doneData, S.doneData],
|
|
169
|
+
source: {
|
|
170
|
+
resolvedFeatures: p,
|
|
171
|
+
allFeatures: f
|
|
172
|
+
},
|
|
173
|
+
fn: ({ resolvedFeatures: e, allFeatures: t }, n) => !n || h(t[n.id]?.feature) || e.some((e) => e.id === n.id && e.key === n.key) ? e : [...e, n],
|
|
174
|
+
target: p
|
|
175
|
+
});
|
|
176
|
+
function w(e) {
|
|
177
|
+
return C.map((t) => t.find((t) => t.id === e));
|
|
178
|
+
}
|
|
179
|
+
let T = /* @__PURE__ */ new Map(), E = /* @__PURE__ */ new Map(), D = /* @__PURE__ */ new Map();
|
|
180
|
+
function O(e) {
|
|
181
|
+
let t = T.get(e);
|
|
182
|
+
if (t) return t;
|
|
183
|
+
let n = w(e);
|
|
184
|
+
return T.set(e, n), n;
|
|
185
|
+
}
|
|
186
|
+
function k(e) {
|
|
187
|
+
return f.map((t) => t[e], { skipVoid: !1 });
|
|
188
|
+
}
|
|
189
|
+
function A(e) {
|
|
190
|
+
let t = u(async () => void 0, { skipVoid: !1 }), n = O(e), r = i({
|
|
191
|
+
source: n,
|
|
192
|
+
effect: async (e) => {
|
|
193
|
+
if (e) return async () => (await e.getBucket()).bucket;
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
return d({
|
|
197
|
+
clock: n,
|
|
198
|
+
target: r
|
|
199
|
+
}), d({
|
|
200
|
+
clock: r.doneData,
|
|
201
|
+
filter: (e) => e !== void 0,
|
|
202
|
+
target: t
|
|
203
|
+
}), r(), t;
|
|
204
|
+
}
|
|
205
|
+
function j(e) {
|
|
206
|
+
let t = E.get(e);
|
|
207
|
+
if (t) return t;
|
|
208
|
+
let n = A(e);
|
|
209
|
+
return E.set(e, n), n;
|
|
210
|
+
}
|
|
211
|
+
function M(e) {
|
|
212
|
+
let t = j(e), n = u(void 0, { skipVoid: !1 }), r = i({
|
|
213
|
+
source: t,
|
|
214
|
+
mapParams: (e, t) => t,
|
|
215
|
+
effect: c(async (e) => await e())
|
|
216
|
+
});
|
|
217
|
+
return d({
|
|
218
|
+
clock: r.doneData,
|
|
219
|
+
fn: (t) => {
|
|
220
|
+
if (t !== void 0) return {
|
|
221
|
+
id: e,
|
|
222
|
+
bucket: t
|
|
223
|
+
};
|
|
224
|
+
},
|
|
225
|
+
target: n
|
|
226
|
+
}), d({
|
|
227
|
+
clock: t,
|
|
228
|
+
target: r
|
|
229
|
+
}), r(), n;
|
|
230
|
+
}
|
|
231
|
+
function N(e) {
|
|
232
|
+
let t = D.get(e);
|
|
233
|
+
if (t) return t;
|
|
234
|
+
let n = M(e);
|
|
235
|
+
return D.set(e, n), n;
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
register: v,
|
|
239
|
+
getById: O,
|
|
240
|
+
getByName: k,
|
|
241
|
+
listStore: C,
|
|
242
|
+
getEvokableFeature: j,
|
|
243
|
+
getFeatureResult: N
|
|
244
|
+
};
|
|
245
|
+
});
|
|
246
|
+
function y(e) {
|
|
247
|
+
return p(v, e);
|
|
248
|
+
}
|
|
249
|
+
var b = (e, t, n) => {
|
|
250
|
+
n.register({
|
|
251
|
+
id: e,
|
|
252
|
+
feature: t
|
|
253
|
+
});
|
|
254
|
+
}, x = () => "0.0.76-next.1";
|
|
255
|
+
//#endregion
|
|
256
|
+
export { b as i, y as n, _ as r, x as t };
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@picked/client",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.76-next.1",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@picked/delivery-api-client": "0.0.
|
|
5
|
+
"@picked/delivery-api-client": "0.0.76-next.1",
|
|
6
6
|
"@withease/factories": "^1.0.5"
|
|
7
7
|
},
|
|
8
8
|
"devDependencies": {
|
package/dist/plugin-xFCAKJuO.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
require("./logger-CSTvAyyB.cjs"),require("./api-CUlZaK-b.cjs");let e=require("effector");function t(e){let t=2166136261;for(let n of e)t^=n.codePointAt(0)??0,t=Math.imul(t,16777619);return t>>>0}function n(e){let t=e;return t^=t>>>16,t=Math.imul(t,2246822507),t^=t>>>13,t=Math.imul(t,3266489909),t^=t>>>16,t>>>0}function r(e,r){return n(t(`${e}:${r}`))%100}function i(e,t){return t<=0?!1:t>=100||e<t}var a=4294967296;function o(e,r,i){return(n(t(`${e}:${r}:${i}`))+.5)/a}function s(e,t,n){return n.weight<=0?0:n.weight/-Math.log(o(e,t,n.key))}function c(e,t,n){let r=null,i=0;for(let a of n){let n=s(e,t,a);n<=0||(n>i||n===i&&r!==null&&a.key<r.key)&&(i=n,r=a)}return r}function l(e,t){if(Array.isArray(t.conditions))for(let n of t.conditions)e.registerCondition(n)}function u(e,t){e.registerExperience({id:t.id,key:t.key,name:t.name,targets:t.targets,nodes:t.nodes,edges:t.edges,condition:t.condition,initializeOpen:t.initializeOpen,componentName:t.componentName})}function d(e){return typeof e!=`object`||!e?!1:`id`in e&&`key`in e&&`type`in e&&`name`in e}function f(e,t){if(Array.isArray(t.fields))for(let n of t.fields)d(n)&&e.registerField(n)}function p(e,t){if(!Array.isArray(t.steps))return;let n=new Map(t.fields.map(e=>[e.id,e.key]));for(let r of t.steps){let t=[];for(let e of r.fieldIds??[]){let i=n.get(e);if(i===void 0){`${r.key}${e}`;continue}t.push(i)}let i=r.layoutContentId?e.contents.getById(r.layoutContentId):null;e.registerStep({id:r.id,key:r.key,name:r.name,fieldKeys:t,layoutName:r.layoutName,...r.layoutContentId!==void 0&&{layoutContentId:r.layoutContentId,layoutContentStore:i}})}}function m(e,t){if(Array.isArray(t.experiences))for(let n of t.experiences)u(e,n)}function h(e,t,n){v(e,t,n.isPreview,n.sessionId),l(e,t),f(e,t),p(e,t),m(e,t)}function g(e){let t=e.searchParams[`preview-token`];if(t&&t.length>0)return t[0]}function _(e){let t=new Set,n=e.searchParams.feature;if(!n)return t;for(let e of n){let n=e.indexOf(`:`);n>0&&t.add(e.substring(0,n))}return t}function v(e,t,n,r){let i=_(e);for(let a of t.features)i.has(a.id)||y(e,a,n,r)}function y(e,t,n,a){let o=t.id,s=t.variants;e.registerFeature(o,{key:`v${t.version}`,name:t.name,enabled:t.enabled,weight:t.weight,storage:n?`session`:`local`,decide:()=>t.valueType===`text`?!s||s.length===0?(`${o}`,!1):c(a,o,s)?.value??!1:i(r(a,o),t.weight)})}function b(e,t){for(let n of[...t.references??[],...t.content])e.registerContent({id:n.id,contentModelKey:n.contentModelKey,data:n.data})}function x(e,t){let n=new Map;return(r,i)=>{let a=n.get(r.id);if(a)return a;let o=(async()=>{try{let n=await t(r,i);return n&&b(e,n),n}finally{n.delete(r.id)}})();return n.set(r.id,o),o}}function S(e,t){let n=new Set(t&&Array.isArray(t.experiences)?t.experiences.map(e=>e.id):[]);return(t,r)=>n.has(t.id)?e(t,r):Promise.resolve(null)}function C(){return{name:`dynamic-experiences`,setup:t=>({onStart:(0,e.attach)({source:t.session.store.map(e=>e.id),effect:async e=>{let n=g(t),r=n!==void 0,i=n===void 0?void 0:{previewToken:n},a=await t.getProjectConfig(n===void 0?void 0:{previewToken:n}).catch(e=>null);if(t.contentLoader=x(t,S(e=>t.getExperienceContent(e,i),a)),!a)return;let o=t.seededVersionId;if(o!==null&&o!==a.versionId){t.versionSkew={seeded:o,resolved:a.versionId},`${a.versionId}${o}`;return}t.previewEmbedderOrigins=a.previewEmbedderOrigins??null,h(t,a,{isPreview:r,sessionId:e})}})})}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return C}});
|
package/dist/version-BsVuRkHH.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=()=>`0.0.75-next.1`;Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return e}});
|