@picked/client 0.0.83 → 0.0.84-next.2

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.
Files changed (46) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/api-BpE3VU63.cjs +1 -0
  3. package/dist/{api-C7k-sqTX.js → api-Cur_xnAf.js} +1 -1
  4. package/dist/cjs/index.js +2 -2
  5. package/dist/cjs/plugins/dynamic-experiences/index.js +1 -1
  6. package/dist/cjs/plugins/experience-browser-storage/index.js +1 -1
  7. package/dist/cjs/server/index.js +1 -1
  8. package/dist/docs/reference/sdk/analytics-events.md +11 -2
  9. package/dist/docs/reference/sdk/ssr/slots-and-placements.md +54 -0
  10. package/dist/docs/reference/tools/mcp.md +38 -31
  11. package/dist/esm/index.js +377 -399
  12. package/dist/esm/plugins/dynamic-experiences/index.js +2 -2
  13. package/dist/esm/plugins/experience-browser-storage/index.js +12 -10
  14. package/dist/esm/server/index.js +40 -36
  15. package/dist/experience-instance-DifOgdCW.cjs +1 -0
  16. package/dist/{experience-instance-BibCf-8y.js → experience-instance-VZQBpVEW.js} +265 -239
  17. package/dist/{plugin-Ch3nd-iX.js → plugin-BuyAO6JE.js} +68 -52
  18. package/dist/plugin-Yf4me2Nm.cjs +1 -0
  19. package/dist/preview-unavailable-CY23cDO-.cjs +1 -0
  20. package/dist/{version-COZoqJaS.js → preview-unavailable-EL7XtSOv.js} +104 -61
  21. package/dist/{provider-URanKqBl.js → provider-CVGDO2eV.js} +6 -3
  22. package/dist/provider-DRB8eke6.cjs +1 -0
  23. package/dist/types/data-source/preview-unavailable.d.ts +18 -0
  24. package/dist/types/data-source/preview-unavailable.d.ts.map +1 -0
  25. package/dist/types/data-source/provider.d.ts +5 -0
  26. package/dist/types/data-source/provider.d.ts.map +1 -1
  27. package/dist/types/entities/experience-instance/experience-instance.d.ts +14 -1
  28. package/dist/types/entities/experience-instance/experience-instance.d.ts.map +1 -1
  29. package/dist/types/exports.d.ts +1 -0
  30. package/dist/types/exports.d.ts.map +1 -1
  31. package/dist/types/picked.d.ts +7 -0
  32. package/dist/types/picked.d.ts.map +1 -1
  33. package/dist/types/plugins/dynamic-experiences/plugin.d.ts.map +1 -1
  34. package/dist/types/plugins/experience-browser-storage/plugin.d.ts.map +1 -1
  35. package/dist/types/server/serialize.d.ts +1 -0
  36. package/dist/types/server/serialize.d.ts.map +1 -1
  37. package/dist/types/utils/events.d.ts +4 -0
  38. package/dist/types/utils/events.d.ts.map +1 -1
  39. package/dist/types/utils/search-params.d.ts +20 -0
  40. package/dist/types/utils/search-params.d.ts.map +1 -1
  41. package/package.json +3 -3
  42. package/dist/api-CSANsJg3.cjs +0 -1
  43. package/dist/experience-instance-CMfjyLaI.cjs +0 -1
  44. package/dist/plugin-ByOn3B0I.cjs +0 -1
  45. package/dist/provider-CxjhDODz.cjs +0 -1
  46. package/dist/version-BlPyWs4m.cjs +0 -1
@@ -1,44 +1,44 @@
1
1
  import "./logger-DMN6TxJJ.js";
2
- import { r as e } from "./version-COZoqJaS.js";
3
- import "./api-C7k-sqTX.js";
4
- import { attach as t } from "effector";
2
+ import { c as e, i as t, n, t as r } from "./preview-unavailable-EL7XtSOv.js";
3
+ import "./api-Cur_xnAf.js";
4
+ import { attach as i } from "effector";
5
5
  //#region src/plugins/dynamic-experiences/hash.ts
6
- function n(e) {
6
+ function a(e) {
7
7
  let t = 2166136261;
8
8
  for (let n of e) t ^= n.codePointAt(0) ?? 0, t = Math.imul(t, 16777619);
9
9
  return t >>> 0;
10
10
  }
11
- function r(e) {
11
+ function o(e) {
12
12
  let t = e;
13
13
  return t ^= t >>> 16, t = Math.imul(t, 2246822507), t ^= t >>> 13, t = Math.imul(t, 3266489909), t ^= t >>> 16, t >>> 0;
14
14
  }
15
- function i(e, t) {
16
- return r(n(`${e}:${t}`)) % 100;
15
+ function s(e, t) {
16
+ return o(a(`${e}:${t}`)) % 100;
17
17
  }
18
- function a(e, t) {
18
+ function c(e, t) {
19
19
  return t <= 0 ? !1 : t >= 100 || e < t;
20
20
  }
21
- var o = 4294967296;
22
- function s(e, t, i) {
23
- return (r(n(`${e}:${t}:${i}`)) + .5) / o;
21
+ var l = 4294967296;
22
+ function u(e, t, n) {
23
+ return (o(a(`${e}:${t}:${n}`)) + .5) / l;
24
24
  }
25
- function c(e, t, n) {
26
- return n.weight <= 0 ? 0 : n.weight / -Math.log(s(e, t, n.key));
25
+ function d(e, t, n) {
26
+ return n.weight <= 0 ? 0 : n.weight / -Math.log(u(e, t, n.key));
27
27
  }
28
- function l(e, t, n) {
28
+ function f(e, t, n) {
29
29
  let r = null, i = 0;
30
30
  for (let a of n) {
31
- let n = c(e, t, a);
31
+ let n = d(e, t, a);
32
32
  n <= 0 || (n > i || n === i && r !== null && a.key < r.key) && (i = n, r = a);
33
33
  }
34
34
  return r;
35
35
  }
36
36
  //#endregion
37
37
  //#region src/plugins/dynamic-experiences/plugin.ts
38
- function u(e, t) {
38
+ function p(e, t) {
39
39
  if (Array.isArray(t.conditions)) for (let n of t.conditions) e.registerCondition(n);
40
40
  }
41
- function d(e, t) {
41
+ function m(e, t) {
42
42
  e.registerExperience({
43
43
  id: t.id,
44
44
  key: t.key,
@@ -51,13 +51,13 @@ function d(e, t) {
51
51
  componentName: t.componentName
52
52
  });
53
53
  }
54
- function f(e) {
54
+ function h(e) {
55
55
  return typeof e != "object" || !e ? !1 : "id" in e && "key" in e && "type" in e && "name" in e;
56
56
  }
57
- function p(e, t) {
58
- if (Array.isArray(t.fields)) for (let n of t.fields) f(n) && e.registerField(n);
57
+ function g(e, t) {
58
+ if (Array.isArray(t.fields)) for (let n of t.fields) h(n) && e.registerField(n);
59
59
  }
60
- function m(e, t) {
60
+ function _(e, t) {
61
61
  if (!Array.isArray(t.steps)) return;
62
62
  let n = new Map(t.fields.map((e) => [e.id, e.key]));
63
63
  for (let r of t.steps) {
@@ -84,17 +84,33 @@ function m(e, t) {
84
84
  });
85
85
  }
86
86
  }
87
- function h(e, t) {
88
- if (Array.isArray(t.experiences)) for (let n of t.experiences) d(e, n);
87
+ function v(e, t) {
88
+ if (Array.isArray(t.experiences)) for (let n of t.experiences) m(e, n);
89
89
  }
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);
90
+ function y(e, t, n) {
91
+ w(e, t, n.isPreview, n.sessionId), p(e, t), g(e, t), _(e, t), v(e, t);
92
92
  }
93
- function _(e) {
94
- let t = e.searchParams["preview-token"];
93
+ function b(e) {
94
+ let t = e.searchParams[n];
95
95
  if (t && t.length > 0) return t[0];
96
96
  }
97
- function v(t) {
97
+ function x(e, t) {
98
+ return e.getProjectConfig(t === void 0 ? void 0 : { previewToken: t }).catch((e) => e instanceof r ? e : null);
99
+ }
100
+ async function S(e) {
101
+ let i = b(e), a = await x(e, i);
102
+ if (!(a instanceof r)) return {
103
+ config: a,
104
+ previewToken: i
105
+ };
106
+ t(e.searchParams, n), e.previewUnavailable = !0, `${a.message}`;
107
+ let o = await x(e, void 0);
108
+ return {
109
+ config: o instanceof r ? null : o,
110
+ previewToken: void 0
111
+ };
112
+ }
113
+ function C(t) {
98
114
  let n = /* @__PURE__ */ new Map(), r = t.searchParams.feature;
99
115
  if (!r) return n;
100
116
  for (let t of r) {
@@ -103,18 +119,18 @@ function v(t) {
103
119
  }
104
120
  return n;
105
121
  }
106
- function y(e, t, n, r) {
107
- let i = v(e);
122
+ function w(e, t, n, r) {
123
+ let i = C(e);
108
124
  for (let a of t.features) {
109
125
  let t = i.get(a.id);
110
126
  if (t !== void 0) {
111
- b(e, a, t);
127
+ T(e, a, t);
112
128
  continue;
113
129
  }
114
- x(e, a, n, r);
130
+ E(e, a, n, r);
115
131
  }
116
132
  }
117
- function b(e, t, n) {
133
+ function T(e, t, n) {
118
134
  e.registerFeature(t.id, {
119
135
  key: `${n}`,
120
136
  name: t.name,
@@ -126,27 +142,27 @@ function b(e, t, n) {
126
142
  decide: () => n
127
143
  });
128
144
  }
129
- function x(e, t, n, r) {
130
- let o = t.id, s = t.variants;
131
- e.registerFeature(o, {
145
+ function E(e, t, n, r) {
146
+ let i = t.id, a = t.variants;
147
+ e.registerFeature(i, {
132
148
  key: `v${t.version}`,
133
149
  name: t.name,
134
150
  enabled: t.enabled,
135
151
  weight: t.weight,
136
152
  storage: n ? "session" : "local",
137
153
  valueType: t.valueType,
138
- variants: s,
139
- decide: () => t.valueType === "text" ? !s || s.length === 0 ? (`${o}`, !1) : l(r, o, s)?.value ?? !1 : a(i(r, o), t.weight)
154
+ variants: a,
155
+ decide: () => t.valueType === "text" ? !a || a.length === 0 ? (`${i}`, !1) : f(r, i, a)?.value ?? !1 : c(s(r, i), t.weight)
140
156
  });
141
157
  }
142
- function S(e, t) {
158
+ function D(e, t) {
143
159
  for (let n of [...t.references ?? [], ...t.content]) e.registerContent({
144
160
  id: n.id,
145
161
  contentModelKey: n.contentModelKey,
146
162
  data: n.data
147
163
  });
148
164
  }
149
- function C(e, t) {
165
+ function O(e, t) {
150
166
  let n = /* @__PURE__ */ new Map();
151
167
  return (r, i) => {
152
168
  let a = n.get(r.id);
@@ -154,7 +170,7 @@ function C(e, t) {
154
170
  let o = (async () => {
155
171
  try {
156
172
  let n = await t(r, i);
157
- return n && S(e, n), n;
173
+ return n && D(e, n), n;
158
174
  } finally {
159
175
  n.delete(r.id);
160
176
  }
@@ -162,28 +178,28 @@ function C(e, t) {
162
178
  return n.set(r.id, o), o;
163
179
  };
164
180
  }
165
- function w(e, t) {
181
+ function k(e, t) {
166
182
  let n = new Set(t && Array.isArray(t.experiences) ? t.experiences.map((e) => e.id) : []);
167
183
  return (t, r) => n.has(t.id) ? e(t, r) : Promise.resolve(null);
168
184
  }
169
- function T() {
185
+ function A() {
170
186
  return {
171
187
  name: "dynamic-experiences",
172
- setup: (e) => ({ onStart: t({
188
+ setup: (e) => ({ onStart: i({
173
189
  source: e.session.store.map((e) => e.id),
174
190
  effect: async (t) => {
175
- 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);
176
- if (e.contentLoader = C(e, w((t) => e.getExperienceContent(t, i), a)), !a) return;
191
+ let { config: n, previewToken: r } = await S(e), i = r !== void 0, a = r === void 0 ? void 0 : { previewToken: r };
192
+ if (e.contentLoader = O(e, k((t) => e.getExperienceContent(t, a), n)), !n) return;
177
193
  let o = e.seededVersionId;
178
- if (o !== null && o !== a.versionId) {
194
+ if (o !== null && o !== n.versionId) {
179
195
  e.versionSkew = {
180
196
  seeded: o,
181
- resolved: a.versionId
182
- }, `${a.versionId}${o}`;
197
+ resolved: n.versionId
198
+ }, `${n.versionId}${o}`;
183
199
  return;
184
200
  }
185
- e.previewEmbedderOrigins = a.previewEmbedderOrigins ?? null, g(e, a, {
186
- isPreview: r,
201
+ e.previewEmbedderOrigins = n.previewEmbedderOrigins ?? null, y(e, n, {
202
+ isPreview: i,
187
203
  sessionId: t
188
204
  });
189
205
  }
@@ -191,4 +207,4 @@ function T() {
191
207
  };
192
208
  }
193
209
  //#endregion
194
- export { g as n, T as t };
210
+ export { y as n, A as t };
@@ -0,0 +1 @@
1
+ require("./logger-CSTvAyyB.cjs");const e=require("./preview-unavailable-CY23cDO-.cjs");require("./api-BpE3VU63.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){x(e,t,n.isPreview,n.sessionId),u(e,t),p(e,t),m(e,t),h(e,t)}function _(t){let n=t.searchParams[e.n];if(n&&n.length>0)return n[0]}function v(t,n){return t.getProjectConfig(n===void 0?void 0:{previewToken:n}).catch(t=>t instanceof e.t?t:null)}async function y(t){let n=_(t),r=await v(t,n);if(!(r instanceof e.t))return{config:r,previewToken:n};e.i(t.searchParams,e.n),t.previewUnavailable=!0,`${r.message}`;let i=await v(t,void 0);return{config:i instanceof e.t?null:i,previewToken:void 0}}function b(t){let n=new Map,r=t.searchParams.feature;if(!r)return n;for(let t of r){let r=e.c(t);r&&n.set(r.id,r.bucket)}return n}function x(e,t,n,r){let i=b(e);for(let a of t.features){let t=i.get(a.id);if(t!==void 0){S(e,a,t);continue}C(e,a,n,r)}}function S(e,t,n){e.registerFeature(t.id,{key:`${n}`,name:t.name,enabled:!0,weight:t.weight,...t.valueType!==void 0&&{valueType:t.valueType},...t.variants!==void 0&&{variants:t.variants},storage:`session`,decide:()=>n})}function C(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 w(e,t){for(let n of[...t.references??[],...t.content])e.registerContent({id:n.id,contentModelKey:n.contentModelKey,data:n.data})}function T(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&&w(e,n),n}finally{n.delete(r.id)}})();return n.set(r.id,o),o}}function E(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 D(){return{name:`dynamic-experiences`,setup:e=>({onStart:(0,t.attach)({source:e.session.store.map(e=>e.id),effect:async t=>{let{config:n,previewToken:r}=await y(e),i=r!==void 0,a=r===void 0?void 0:{previewToken:r};if(e.contentLoader=T(e,E(t=>e.getExperienceContent(t,a),n)),!n)return;let o=e.seededVersionId;if(o!==null&&o!==n.versionId){e.versionSkew={seeded:o,resolved:n.versionId},`${n.versionId}${o}`;return}e.previewEmbedderOrigins=n.previewEmbedderOrigins??null,g(e,n,{isPreview:i,sessionId:t})}})})}}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return D}});
@@ -0,0 +1 @@
1
+ const e=require("./logger-CSTvAyyB.cjs"),t=require("./supports-DBzjGaWD.cjs"),n=require("./storage-DUw9UJ2h.cjs");let r=require("effector"),i=require("@withease/factories");var a=(0,r.createDomain)(`feature`);function o(e){return e?.enabled===!1}function s(e){return e===`true`||e!==`false`&&e}function c(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:s(r)}}var l=(0,i.createFactory)(({client:t})=>{let i=a.store({}),c=a.store([]),l=(0,r.createApi)(i,{register(e,t){return{...e,[t.id]:t.feature}}}),u=(0,r.createEvent)();(0,r.sample)({clock:u,source:i,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,r.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,r.createEffect)(async({id:e,key:t,storage:r=`local`,enabled:i})=>{if(i===!1)return null;let a=n.t(`feature:${e}:${t}`,`global`),o=(r===`session`?n.r:n.n).get(a).text();return o?{id:e,key:t,bucket:s(o),storage:r}:null}),f=(0,r.createEffect)(e=>{if(!e)return null;let t=n.t(`feature:${e.id}:${e.key}`,`global`);(e.storage===`session`?n.r:n.n).set(t,e.bucket)}),p=new Map,m=(0,r.attach)({source:{allFeaturesStore:i,resolvedFeaturesStore:c},effect:async({allFeaturesStore:e,resolvedFeaturesStore:t},{id:n,decide:r,key:i})=>{let a=t.find(e=>e.id===n&&e.key===i);if(a)return a;let s=e[n];if(!s)throw Error(`Feature with id '${n}' not found`);if(o(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,r.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,r.sample)({source:i,clock:m.doneData,filter:(e,t)=>!o(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,r.combine)({allFeaturesStore:i,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,r.sample)({clock:m.doneData,source:{resolvedFeatures:c,allFeatures:i},filter:({resolvedFeatures:e,allFeatures:t},{id:n,key:r})=>!o(t[n]?.feature)&&!e.some(e=>e.id===n&&e.key===r),fn:(e,t)=>t,target:t.eventBus.prepend(e=>({type:`feature_decide`,feature:e}))}),(0,r.sample)({clock:[d.doneData,m.doneData],source:{resolvedFeatures:c,allFeatures:i},fn:({resolvedFeatures:e,allFeatures:t},n)=>!n||o(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),{skipVoid:!1})}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 i.map(t=>t[e],{skipVoid:!1})}function S(e){let t=(0,r.createStore)(async()=>void 0,{skipVoid:!1}),n=b(e),i=(0,r.attach)({source:n,effect:async e=>{if(e)return async()=>(await e.getBucket()).bucket}});return(0,r.sample)({clock:n,target:i}),(0,r.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),n=(0,r.createStore)(void 0,{skipVoid:!1}),i=(0,r.attach)({source:t,mapParams:(e,t)=>t,effect:(0,r.createEffect)(async e=>await e())});return(0,r.sample)({clock:i.doneData,fn:t=>{if(t!==void 0)return{id:e,bucket:t}},target:n}),(0,r.sample)({clock:t,target:i}),i(),n}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 u(e){return(0,i.invoke)(l,e)}var d=(e,t,n)=>{n.register({id:e,feature:t})},f=()=>`0.0.84-next.2`;function p(){if(!t.f())return{};let e=new URLSearchParams(window.location.search),r={},i=new Set;for(let[t]of e.entries())t.startsWith(`picked-`)&&i.add(t);for(let t of i){let n=t.replace(`picked-`,``);r[n]=e.getAll(t)}let a=n.t(`s`);if(i.size>0)n.r.set(a,r);else{let e=n.r.get(a);if(e)return e.json()||{}}return r}function m(e,r){if(delete e[r],!t.f())return;let i=n.t(`s`),a=n.r.get(i).json();if(!a)return;let o=Object.fromEntries(Object.entries(a).filter(([e])=>e!==r));if(Object.keys(o).length===0){n.r.remove(i);return}n.r.set(i,o)}var h=`preview-token`;function g(){return!t.f()||!t.t()?!1:!!p()[h]?.[0]}var _=class extends Error{constructor(e){super(`The preview workspace for project "${e}" no longer exists; its published configuration is still available.`),this.name=`PreviewUnavailableError`}};Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return _}});
@@ -1,38 +1,39 @@
1
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";
2
+ import { f as t, t as n } from "./supports-CO9bJGNl.js";
3
+ import { n as r, r as i, t as a } from "./storage-1MW3-_As.js";
4
+ import { attach as o, combine as s, createApi as c, createDomain as l, createEffect as u, createEvent as d, createStore as f, sample as p } from "effector";
5
+ import { createFactory as m, invoke as h } from "@withease/factories";
5
6
  //#region src/entities/feature/feature.ts
6
- var m = s("feature");
7
- function h(e) {
7
+ var g = l("feature");
8
+ function _(e) {
8
9
  return e?.enabled === !1;
9
10
  }
10
- function g(e) {
11
+ function v(e) {
11
12
  return e === "true" || e !== "false" && e;
12
13
  }
13
- function _(e) {
14
+ function y(e) {
14
15
  let t = e.indexOf(":");
15
16
  if (t <= 0) return null;
16
17
  let n = e.substring(0, t), r = e.substring(t + 1);
17
18
  return r.length === 0 ? null : {
18
19
  id: n,
19
- bucket: g(r)
20
+ bucket: v(r)
20
21
  };
21
22
  }
22
- var v = f(({ client: s }) => {
23
- let f = m.store({}), p = m.store([]), _ = o(f, { register(e, t) {
23
+ var b = m(({ client: t }) => {
24
+ let n = g.store({}), l = g.store([]), m = c(n, { register(e, t) {
24
25
  return {
25
26
  ...e,
26
27
  [t.id]: t.feature
27
28
  };
28
- } }), v = l();
29
- d({
30
- clock: v,
31
- source: f,
29
+ } }), h = d();
30
+ p({
31
+ clock: h,
32
+ source: n,
32
33
  filter: (e, { id: t }) => e[t] !== void 0,
33
34
  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,
35
+ }).watch((t) => /* @__PURE__ */ e("warn", t)), p({
36
+ clock: h,
36
37
  fn: ({ id: e, feature: t }) => Object.freeze({
37
38
  id: e,
38
39
  feature: {
@@ -43,32 +44,32 @@ var v = f(({ client: s }) => {
43
44
  }
44
45
  }
45
46
  }),
46
- target: _.register
47
+ target: m.register
47
48
  });
48
- let y = c(async ({ id: e, key: i, storage: a = "local", enabled: o }) => {
49
+ let y = u(async ({ id: e, key: t, storage: n = "local", enabled: o }) => {
49
50
  if (o === !1) return null;
50
- let s = r(`feature:${e}:${i}`, "global"), c = (a === "session" ? n : t).get(s).text();
51
+ let s = a(`feature:${e}:${t}`, "global"), c = (n === "session" ? i : r).get(s).text();
51
52
  return c ? {
52
53
  id: e,
53
- key: i,
54
- bucket: g(c),
55
- storage: a
54
+ key: t,
55
+ bucket: v(c),
56
+ storage: n
56
57
  } : null;
57
- }), b = c((e) => {
58
+ }), b = u((e) => {
58
59
  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({
60
+ let t = a(`feature:${e.id}:${e.key}`, "global");
61
+ (e.storage === "session" ? i : r).set(t, e.bucket);
62
+ }), x = /* @__PURE__ */ new Map(), S = o({
62
63
  source: {
63
- allFeaturesStore: f,
64
- resolvedFeaturesStore: p
64
+ allFeaturesStore: n,
65
+ resolvedFeaturesStore: l
65
66
  },
66
67
  effect: async ({ allFeaturesStore: e, resolvedFeaturesStore: t }, { id: n, decide: r, key: i }) => {
67
68
  let a = t.find((e) => e.id === n && e.key === i);
68
69
  if (a) return a;
69
70
  let o = e[n];
70
71
  if (!o) throw Error(`Feature with id '${n}' not found`);
71
- if (h(o.feature)) return {
72
+ if (_(o.feature)) return {
72
73
  id: o.id,
73
74
  bucket: !1,
74
75
  key: i,
@@ -95,8 +96,8 @@ var v = f(({ client: s }) => {
95
96
  };
96
97
  }
97
98
  });
98
- d({
99
- clock: _.register,
99
+ p({
100
+ clock: m.register,
100
101
  fn: (e) => {
101
102
  let { id: t, feature: n } = e;
102
103
  return {
@@ -107,10 +108,10 @@ var v = f(({ client: s }) => {
107
108
  };
108
109
  },
109
110
  target: y
110
- }), d({
111
- source: f,
111
+ }), p({
112
+ source: n,
112
113
  clock: S.doneData,
113
- filter: (e, t) => !h(e[t.id]?.feature),
114
+ filter: (e, t) => !_(e[t.id]?.feature),
114
115
  fn: (e, t) => {
115
116
  let { id: n, bucket: r, storage: i } = t, a = e[n]?.feature.key;
116
117
  return a ? {
@@ -122,9 +123,9 @@ var v = f(({ client: s }) => {
122
123
  },
123
124
  target: b
124
125
  });
125
- let C = a({
126
- allFeaturesStore: f,
127
- resolvedFeaturesStore: p
126
+ let C = s({
127
+ allFeaturesStore: n,
128
+ resolvedFeaturesStore: l
128
129
  }).map(({ allFeaturesStore: e, resolvedFeaturesStore: t }) => Object.values(e).map((e) => {
129
130
  let n = t.find((t) => t.id === e.id && t.key === e.feature.key);
130
131
  return n ? {
@@ -152,26 +153,26 @@ var v = f(({ client: s }) => {
152
153
  isResolved: !1
153
154
  };
154
155
  }));
155
- d({
156
+ p({
156
157
  clock: S.doneData,
157
158
  source: {
158
- resolvedFeatures: p,
159
- allFeatures: f
159
+ resolvedFeatures: l,
160
+ allFeatures: n
160
161
  },
161
- filter: ({ resolvedFeatures: e, allFeatures: t }, { id: n, key: r }) => !h(t[n]?.feature) && !e.some((e) => e.id === n && e.key === r),
162
+ filter: ({ resolvedFeatures: e, allFeatures: t }, { id: n, key: r }) => !_(t[n]?.feature) && !e.some((e) => e.id === n && e.key === r),
162
163
  fn: (e, t) => t,
163
- target: s.eventBus.prepend((e) => ({
164
+ target: t.eventBus.prepend((e) => ({
164
165
  type: "feature_decide",
165
166
  feature: e
166
167
  }))
167
- }), d({
168
+ }), p({
168
169
  clock: [y.doneData, S.doneData],
169
170
  source: {
170
- resolvedFeatures: p,
171
- allFeatures: f
171
+ resolvedFeatures: l,
172
+ allFeatures: n
172
173
  },
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
174
+ fn: ({ resolvedFeatures: e, allFeatures: t }, n) => !n || _(t[n.id]?.feature) || e.some((e) => e.id === n.id && e.key === n.key) ? e : [...e, n],
175
+ target: l
175
176
  });
176
177
  function w(e) {
177
178
  return C.map((t) => t.find((t) => t.id === e), { skipVoid: !1 });
@@ -184,19 +185,19 @@ var v = f(({ client: s }) => {
184
185
  return T.set(e, n), n;
185
186
  }
186
187
  function k(e) {
187
- return f.map((t) => t[e], { skipVoid: !1 });
188
+ return n.map((t) => t[e], { skipVoid: !1 });
188
189
  }
189
190
  function A(e) {
190
- let t = u(async () => void 0, { skipVoid: !1 }), n = O(e), r = i({
191
+ let t = f(async () => void 0, { skipVoid: !1 }), n = O(e), r = o({
191
192
  source: n,
192
193
  effect: async (e) => {
193
194
  if (e) return async () => (await e.getBucket()).bucket;
194
195
  }
195
196
  });
196
- return d({
197
+ return p({
197
198
  clock: n,
198
199
  target: r
199
- }), d({
200
+ }), p({
200
201
  clock: r.doneData,
201
202
  filter: (e) => e !== void 0,
202
203
  target: t
@@ -209,12 +210,12 @@ var v = f(({ client: s }) => {
209
210
  return E.set(e, n), n;
210
211
  }
211
212
  function M(e) {
212
- let t = j(e), n = u(void 0, { skipVoid: !1 }), r = i({
213
+ let t = j(e), n = f(void 0, { skipVoid: !1 }), r = o({
213
214
  source: t,
214
215
  mapParams: (e, t) => t,
215
- effect: c(async (e) => await e())
216
+ effect: u(async (e) => await e())
216
217
  });
217
- return d({
218
+ return p({
218
219
  clock: r.doneData,
219
220
  fn: (t) => {
220
221
  if (t !== void 0) return {
@@ -223,7 +224,7 @@ var v = f(({ client: s }) => {
223
224
  };
224
225
  },
225
226
  target: n
226
- }), d({
227
+ }), p({
227
228
  clock: t,
228
229
  target: r
229
230
  }), r(), n;
@@ -235,7 +236,7 @@ var v = f(({ client: s }) => {
235
236
  return D.set(e, n), n;
236
237
  }
237
238
  return {
238
- register: v,
239
+ register: h,
239
240
  getById: O,
240
241
  getByName: k,
241
242
  listStore: C,
@@ -243,14 +244,56 @@ var v = f(({ client: s }) => {
243
244
  getFeatureResult: N
244
245
  };
245
246
  });
246
- function y(e) {
247
- return p(v, e);
247
+ function x(e) {
248
+ return h(b, e);
248
249
  }
249
- var b = (e, t, n) => {
250
+ var S = (e, t, n) => {
250
251
  n.register({
251
252
  id: e,
252
253
  feature: t
253
254
  });
254
- }, x = () => "0.0.83";
255
+ }, C = () => "0.0.84-next.2";
256
+ //#endregion
257
+ //#region src/utils/search-params.ts
258
+ function w() {
259
+ if (!t()) return {};
260
+ let e = new URLSearchParams(window.location.search), n = {}, r = /* @__PURE__ */ new Set();
261
+ for (let [t] of e.entries()) t.startsWith("picked-") && r.add(t);
262
+ for (let t of r) {
263
+ let r = t.replace("picked-", "");
264
+ n[r] = e.getAll(t);
265
+ }
266
+ let o = a("s");
267
+ if (r.size > 0) i.set(o, n);
268
+ else {
269
+ let e = i.get(o);
270
+ if (e) return e.json() || {};
271
+ }
272
+ return n;
273
+ }
274
+ function T(e, n) {
275
+ if (delete e[n], !t()) return;
276
+ let r = a("s"), o = i.get(r).json();
277
+ if (!o) return;
278
+ let s = Object.fromEntries(Object.entries(o).filter(([e]) => e !== n));
279
+ if (Object.keys(s).length === 0) {
280
+ i.remove(r);
281
+ return;
282
+ }
283
+ i.set(r, s);
284
+ }
285
+ //#endregion
286
+ //#region src/utils/preview-session.ts
287
+ var E = "preview-token";
288
+ function D() {
289
+ return !t() || !n() ? !1 : !!w()[E]?.[0];
290
+ }
291
+ //#endregion
292
+ //#region src/data-source/preview-unavailable.ts
293
+ var O = class extends Error {
294
+ constructor(e) {
295
+ super(`The preview workspace for project "${e}" no longer exists; its published configuration is still available.`), this.name = "PreviewUnavailableError";
296
+ }
297
+ };
255
298
  //#endregion
256
- export { b as i, y as n, _ as r, x as t };
299
+ export { w as a, y as c, T as i, S as l, E as n, C as o, D as r, x as s, O as t };
@@ -1,5 +1,5 @@
1
1
  import "./logger-DMN6TxJJ.js";
2
- import { n as e, t } from "./api-C7k-sqTX.js";
2
+ import { n as e, t } from "./api-Cur_xnAf.js";
3
3
  import { r as n, t as r } from "./registry-CXZv0uLg.js";
4
4
  //#region src/data-source/request-observer.ts
5
5
  function i(e, t) {
@@ -42,7 +42,8 @@ function u(e) {
42
42
  function d(n) {
43
43
  let { apiUrl: i, projectId: a, previewToken: d, signal: f, getRequestObserver: p } = n, m = !!d, h = m ? c : n.mode, g = u(m ? void 0 : n.bundle), _ = m ? void 0 : n.projectConfig, v = n.getContent, y = {
44
44
  mode: h ?? c,
45
- manifest: null
45
+ manifest: null,
46
+ previewUnavailable: !1
46
47
  }, b, x, S = /* @__PURE__ */ new Map();
47
48
  function C() {
48
49
  if (h === c) return Promise.resolve(null);
@@ -60,7 +61,9 @@ function d(n) {
60
61
  ...d !== void 0 && { previewToken: d },
61
62
  ...f !== void 0 && { signal: f },
62
63
  ...t !== void 0 && { headers: t },
63
- ...n !== void 0 && { onResponse: n }
64
+ onResponse: (e) => {
65
+ y.previewUnavailable = m && e === 404, n?.(e);
66
+ }
64
67
  }));
65
68
  }
66
69
  async function E(e, n) {
@@ -0,0 +1 @@
1
+ require("./logger-CSTvAyyB.cjs");const e=require("./api-BpE3VU63.cjs"),t=require("./registry-C1t8l3t9.cjs");function n(e,t){try{return e?.onRequest(t)??{}}catch{return{}}}function r(e,t,n){try{e.onSettled?.(t,n)}catch{}}async function i(e,t,i){let a=n(e?.(),t),o;try{let e=await i(a.headers,e=>{o=e});return r(a,e!==null,o),e}catch(e){throw r(a,!1,o),e}}var a=`bundle`,o=`api`;async function s(){try{let e=await import(`virtual:picked/data`);return t.r(e)?e:null}catch{return null}}function c(e){if(e===void 0||t.r(e))return e}function l(n){let{apiUrl:r,projectId:l,previewToken:u,signal:d,getRequestObserver:f}=n,p=!!u,m=p?o:n.mode,h=c(p?void 0:n.bundle),g=p?void 0:n.projectConfig,_=n.getContent,v={mode:m??o,manifest:null,previewUnavailable:!1},y,b,x=new Map;function S(){if(m===o)return Promise.resolve(null);if(h)return Promise.resolve(h);let e=t.t();return e?Promise.resolve(e):(y??=s(),y)}function C(e){v.mode=e?a:o,v.manifest=e?e.manifestMetadata:null}async function w(){if(g)return C(await S()),g;let t=await S();return C(t),t?t.projectConfig:m===a?null:i(f,`project-config`,(t,n)=>e.n(r,l,{...u!==void 0&&{previewToken:u},...d!==void 0&&{signal:d},...t!==void 0&&{headers:t},onResponse:e=>{v.previewUnavailable=p&&e===404,n?.(e)}}))}async function T(t,n){let o=u===void 0?void 0:{previewToken:u};if(_)return _(t,o);let s=await S();if(C(s),s)try{return await s.experienceContent(t,o)}catch{return`${t.id}`,null}if(m===a)return null;let c=n??d;return i(f,`experience-content`,(n,i)=>e.t(r,l,t.id,{...u!==void 0&&{previewToken:u},...c!==void 0&&{signal:c},...n!==void 0&&{headers:n},...i!==void 0&&{onResponse:i}}))}return{meta:v,getProjectConfig:()=>(b??=w(),b),getContent:(e,t)=>{let n=x.get(e.id);if(n)return n;let r=T(e,t?.signal).finally(()=>{x.delete(e.id)});return x.set(e.id,r),r}}}exports.createPickedDataProvider=l;
@@ -0,0 +1,18 @@
1
+ /** @file The error a preview read raises when its token names a workspace that no longer exists. */
2
+ /**
3
+ * Raised when a preview token's project config answers 404: the token still verifies, but the
4
+ * workspace it names has been deleted. The published configuration is still available.
5
+ *
6
+ * @example
7
+ * if (error instanceof PreviewUnavailableError) readPublishedConfig()
8
+ */
9
+ export declare class PreviewUnavailableError extends Error {
10
+ /**
11
+ * Builds the error for one project's preview.
12
+ *
13
+ * @param {string} projectId - The project whose preview was requested.
14
+ * @example new PreviewUnavailableError('proj_1')
15
+ */
16
+ constructor(projectId: string);
17
+ }
18
+ //# sourceMappingURL=preview-unavailable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-unavailable.d.ts","sourceRoot":"","sources":["../../../src/data-source/preview-unavailable.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAEpG;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD;;;;;OAKG;IACH,YAAY,SAAS,EAAE,MAAM,EAK5B;CACF"}
@@ -51,6 +51,11 @@ export interface PickedDataProviderMeta {
51
51
  mode: PickedDataMode;
52
52
  /** The bundle's manifest metadata, or `null` when not reading from a bundle. */
53
53
  manifest: PickedManifestMetadata | null;
54
+ /**
55
+ * `true` once a preview token's project config has answered 404: the token verifies but the
56
+ * workspace it names no longer exists.
57
+ */
58
+ previewUnavailable: boolean;
54
59
  }
55
60
  /** Resolves this session's project config and per-experience CMS content. */
56
61
  export interface PickedDataProvider {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/data-source/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3F,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,sCAAsC,CAAA;AAE7C,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAA;AAQ7C,oDAAoD;AACpD,MAAM,WAAW,yBAAyB;IACxC,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,sFAAsF;IACtF,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,sFAAsF;IACtF,UAAU,CAAC,EAAE,aAAa,CAAA;IAC1B,sFAAsF;IACtF,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,gCAAgC,CAAA;CACtD;AAED,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,yDAAyD;IACzD,IAAI,EAAE,cAAc,CAAA;IACpB,gFAAgF;IAChF,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAA;CACxC;AAED,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,4FAA4F;IAC5F,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IACrD,oGAAoG;IACpG,UAAU,EAAE,CACV,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EACvC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC/B,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAA;CAC/C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAYlF;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAyB9B;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAkL/F"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/data-source/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3F,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,sCAAsC,CAAA;AAE7C,OAAO,EAEL,KAAK,gCAAgC,EACtC,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEpD,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAA;AAQ7C,oDAAoD;AACpD,MAAM,WAAW,yBAAyB;IACxC,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,cAAc,CAAA;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,sFAAsF;IACtF,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,sFAAsF;IACtF,UAAU,CAAC,EAAE,aAAa,CAAA;IAC1B,sFAAsF;IACtF,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,gCAAgC,CAAA;CACtD;AAED,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,yDAAyD;IACzD,IAAI,EAAE,cAAc,CAAA;IACpB,gFAAgF;IAChF,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAA;IACvC;;;OAGG;IACH,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,6EAA6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;IACrC,4FAA4F;IAC5F,gBAAgB,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAA;IACrD,oGAAoG;IACpG,UAAU,EAAE,CACV,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EACvC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,KAC/B,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAA;CAC/C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAYlF;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAyB9B;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAsL/F"}
@@ -59,11 +59,23 @@ export interface ExperienceInstanceTarget {
59
59
  selector: HTMLElement[];
60
60
  placement: ExperienceTarget['placement'];
61
61
  }
62
- declare const createExperienceInstanceFactory: ({ client, experience, target, options, }: {
62
+ /**
63
+ * How a slot-rendered instance reads an `initializeOpen` of `null` or `undefined`: `'rule'` leaves
64
+ * it closed and `'rendered'` opens it. A boolean or a rule decides the same way under both.
65
+ */
66
+ export type SlotOpenPolicy = 'rule' | 'rendered';
67
+ declare const createExperienceInstanceFactory: ({ client, experience, target, options, deferOpen, slotOpen, }: {
63
68
  client: Picked;
64
69
  experience: ExperienceStore;
65
70
  target?: HTMLElement;
66
71
  options?: LaunchExperienceOptions;
72
+ /**
73
+ * Leaves the instance to `experienceInstances.adopt`: creation emits nothing, and the instance
74
+ * evaluates its open state and runs its flow only while it is adopted.
75
+ */
76
+ deferOpen?: boolean;
77
+ /** How a missing `initializeOpen` reads for a slot-rendered instance. */
78
+ slotOpen?: SlotOpenPolicy;
67
79
  }) => ExperienceInstance;
68
80
  /**
69
81
  * Creates an experience instance with lifecycle stores and navigation logic.
@@ -80,6 +92,7 @@ declare const createExperienceInstanceIndexFactory: ({ client }: {
80
92
  client: Picked;
81
93
  }) => {
82
94
  spawn: (experience: ExperienceStore, target: HTMLElement, options?: LaunchExperienceOptions) => void;
95
+ adopt: (instance: ExperienceInstance) => () => void;
83
96
  getByExperienceKey: (key: Experience['key']) => Store<ExperienceInstance[]>;
84
97
  getByExperienceId: (id: Experience['id']) => Store<ExperienceInstance[]>;
85
98
  listStore: Store<ExperienceInstance[]>;