@plasmicapp/loader-edge 1.0.7 → 1.0.10

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
@@ -1 +1 @@
1
- export { generateAllPaths, getActiveSplits, getMiddlewareResponse, rewriteWithoutVariation, rewriteWithVariation, } from './variation';
1
+ export { generateAllPaths, getActiveVariation, getMiddlewareResponse, rewriteWithoutTraits, rewriteWithTraits, } from './variation';
@@ -2,111 +2,135 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var loaderFetcher = require('@plasmicapp/loader-fetcher');
6
5
  var loaderSplits = require('@plasmicapp/loader-splits');
7
6
 
7
+ const getSeededRandomFunction = strSeed => {
8
+ // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript
9
+ function cyrb128(str) {
10
+ let h1 = 1779033703,
11
+ h2 = 3144134277,
12
+ h3 = 1013904242,
13
+ h4 = 2773480762;
14
+
15
+ for (let i = 0, k; i < str.length; i++) {
16
+ k = str.charCodeAt(i);
17
+ h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
18
+ h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
19
+ h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
20
+ h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
21
+ }
22
+
23
+ h1 = Math.imul(h3 ^ h1 >>> 18, 597399067);
24
+ h2 = Math.imul(h4 ^ h2 >>> 22, 2869860233);
25
+ h3 = Math.imul(h1 ^ h3 >>> 17, 951274213);
26
+ h4 = Math.imul(h2 ^ h4 >>> 19, 2716044179);
27
+ return [(h1 ^ h2 ^ h3 ^ h4) >>> 0, (h2 ^ h1) >>> 0, (h3 ^ h1) >>> 0, (h4 ^ h1) >>> 0];
28
+ }
29
+
30
+ function sfc32(a, b, c, d) {
31
+ return function () {
32
+ a >>>= 0;
33
+ b >>>= 0;
34
+ c >>>= 0;
35
+ d >>>= 0;
36
+ var t = a + b | 0;
37
+ a = b ^ b >>> 9;
38
+ b = c + (c << 3) | 0;
39
+ c = c << 21 | c >>> 11;
40
+ d = d + 1 | 0;
41
+ t = t + d | 0;
42
+ c = c + t | 0;
43
+ return (t >>> 0) / 4294967296;
44
+ };
45
+ }
46
+
47
+ const seed = cyrb128(strSeed);
48
+ const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);
49
+ return rand;
50
+ };
51
+
8
52
  const DELIMITER = '__pm__';
9
- const rewriteWithoutVariation = url => {
10
- const [path, ...variationsArr] = url.split(DELIMITER);
11
- const variation = variationsArr.reduce((acc, elem) => {
53
+ const PLASMIC_SEED = 'plasmic_seed';
54
+ const SEED_RANGE = 16;
55
+
56
+ const getSeed = () => {
57
+ return `${Math.floor(Math.random() * SEED_RANGE)}`;
58
+ };
59
+
60
+ const rewriteWithoutTraits = url => {
61
+ const [path, ...traitssArr] = url.split(DELIMITER);
62
+ const traits = traitssArr.reduce((acc, elem) => {
12
63
  const [key, value] = elem.split('=');
13
64
  return { ...acc,
14
65
  [key]: value
15
66
  };
16
67
  }, {});
17
68
  return {
18
- path,
19
- variation
69
+ path: path === '/' ? path : path.endsWith('/') ? path.substring(0, path.length - 1) : path,
70
+ traits
20
71
  };
21
72
  };
22
73
 
23
- const expandVariation = variation => {
74
+ const expandTraits = traits => {
24
75
  const cmp = (a, b) => {
25
- const idA = a.split('.')[1];
26
- const idB = b.split('.')[1];
27
- return idA < idB ? -1 : idA > idB ? 1 : 0;
76
+ return a < b ? -1 : a > b ? 1 : 0;
28
77
  };
29
78
 
30
- return Object.keys(variation).filter(key => !key.startsWith('ext')) // remove external variations
31
- .sort(cmp).map(key => `${DELIMITER}${key}=${variation[key]}`).join('');
79
+ return Object.keys(traits).sort(cmp).map(key => `${DELIMITER}${key}=${traits[key]}`).join('');
32
80
  };
33
81
 
34
- const rewriteWithVariation = (url, variation) => {
35
- return `${url}${url.endsWith('/') ? '' : '/'}${expandVariation(variation)}`;
82
+ const rewriteWithTraits = (path, traits) => {
83
+ return `${path}${path.endsWith('/') ? '' : '/'}${expandTraits(traits)}`;
36
84
  };
37
-
38
- const generateAllSplitPaths = splits => {
39
- if (splits.length === 0) {
40
- return [''];
41
- }
42
-
43
- const [curSplit, ...tail] = splits;
44
- const tailPaths = generateAllSplitPaths(tail);
45
- const curPaths = ['', ...curSplit.slices.map(slice => expandVariation({
46
- [loaderSplits.getSplitKey(curSplit)]: slice.id
47
- }))];
48
- const paths = [];
49
-
50
- for (let i = 0; i < curPaths.length; i++) {
51
- for (let j = 0; j < tailPaths.length; j++) {
52
- paths.push(curPaths[i] + tailPaths[j]);
53
- }
54
- }
55
-
85
+ const generateAllPaths = path => {
86
+ const paths = [path, ...Array(SEED_RANGE).fill(0).map((_, idx) => `${path}${path.endsWith('/') ? '' : '/'}__pm__${PLASMIC_SEED}=${idx}`)];
56
87
  return paths;
57
88
  };
89
+ const getMiddlewareResponse = opts => {
90
+ const newCookies = [];
91
+ const seed = opts.cookies[PLASMIC_SEED] || getSeed();
92
+
93
+ if (!opts.cookies[PLASMIC_SEED]) {
94
+ newCookies.push({
95
+ key: PLASMIC_SEED,
96
+ value: seed
97
+ });
98
+ }
58
99
 
59
- const generateAllPaths = (path, splits) => {
60
- return generateAllSplitPaths(splits.sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0)).map(meta => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);
61
- };
62
- const getActiveSplits = async opts => {
63
- const fetcher = new loaderFetcher.PlasmicModulesFetcher(opts);
64
- const all = await fetcher.fetchAllData();
65
- const splits = all.activeSplits;
66
- const paths = all.components.filter(comp => comp.isPage && comp.path).map(comp => comp.path);
67
100
  return {
68
- splits,
69
- paths
101
+ pathname: rewriteWithTraits(opts.path, {
102
+ [PLASMIC_SEED]: seed,
103
+ ...opts.traits
104
+ }),
105
+ cookies: newCookies
70
106
  };
71
107
  };
72
- const getMiddlewareResponse = async ({
73
- opts,
74
- cookies,
75
- traits,
76
- url
77
- }) => {
108
+ const getActiveVariation = opts => {
78
109
  const {
79
- splits
80
- } = await getActiveSplits(opts);
81
- const newCookies = [];
82
- const variation = loaderSplits.getActiveVariation({
83
110
  splits,
84
111
  traits,
85
- getKnownValue: key => {
86
- return cookies[`plasmic:${key}`];
112
+ path
113
+ } = opts;
114
+ return loaderSplits.getActiveVariation({
115
+ splits,
116
+ traits: {
117
+ pageUrl: path,
118
+ ...traits
87
119
  },
88
- updateKnownValue: (key, value) => {
89
- newCookies.push({
90
- key: `plasmic:${key}`,
91
- value
92
- });
120
+ getKnownValue: () => undefined,
121
+ updateKnownValue: () => null,
122
+ getRandomValue: key => {
123
+ var _traits$PLASMIC_SEED;
124
+
125
+ const rand = getSeededRandomFunction(((_traits$PLASMIC_SEED = traits[PLASMIC_SEED]) != null ? _traits$PLASMIC_SEED : '') + key);
126
+ return rand();
93
127
  }
94
128
  });
95
- let newUrl = url;
96
-
97
- if (Object.keys(variation).length) {
98
- newUrl = rewriteWithVariation(url, variation);
99
- }
100
-
101
- return {
102
- url: newUrl,
103
- cookies: newCookies
104
- };
105
129
  };
106
130
 
107
131
  exports.generateAllPaths = generateAllPaths;
108
- exports.getActiveSplits = getActiveSplits;
132
+ exports.getActiveVariation = getActiveVariation;
109
133
  exports.getMiddlewareResponse = getMiddlewareResponse;
110
- exports.rewriteWithVariation = rewriteWithVariation;
111
- exports.rewriteWithoutVariation = rewriteWithoutVariation;
134
+ exports.rewriteWithTraits = rewriteWithTraits;
135
+ exports.rewriteWithoutTraits = rewriteWithoutTraits;
112
136
  //# sourceMappingURL=loader-edge.cjs.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-edge.cjs.development.js","sources":["../src/variation.ts"],"sourcesContent":["import {\n FetcherOptions,\n PlasmicModulesFetcher,\n Split,\n} from '@plasmicapp/loader-fetcher';\nimport { getActiveVariation, getSplitKey } from '@plasmicapp/loader-splits';\n\nexport const DELIMITER = '__pm__';\n\nexport const rewriteWithoutVariation = (url: string) => {\n const [path, ...variationsArr] = url.split(DELIMITER);\n const variation = variationsArr.reduce((acc, elem) => {\n const [key, value] = elem.split('=');\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n return {\n path,\n variation,\n };\n};\n\nconst expandVariation = (variation: Record<string, string>) => {\n const cmp = (a: string, b: string) => {\n const idA = a.split('.')[1];\n const idB = b.split('.')[1];\n return idA < idB ? -1 : idA > idB ? 1 : 0;\n };\n return Object.keys(variation)\n .filter((key) => !key.startsWith('ext')) // remove external variations\n .sort(cmp)\n .map((key) => `${DELIMITER}${key}=${variation[key]}`)\n .join('');\n};\n\nexport const rewriteWithVariation = (\n url: string,\n variation: Record<string, string>\n) => {\n return `${url}${url.endsWith('/') ? '' : '/'}${expandVariation(variation)}`;\n};\n\nconst generateAllSplitPaths = (splits: Split[]): string[] => {\n if (splits.length === 0) {\n return [''];\n }\n const [curSplit, ...tail] = splits;\n const tailPaths = generateAllSplitPaths(tail);\n const curPaths = [\n '',\n ...(curSplit.slices as Array<{ id: string }>).map((slice) =>\n expandVariation({\n [getSplitKey(curSplit)]: slice.id,\n })\n ),\n ];\n const paths: string[] = [];\n for (let i = 0; i < curPaths.length; i++) {\n for (let j = 0; j < tailPaths.length; j++) {\n paths.push(curPaths[i] + tailPaths[j]);\n }\n }\n return paths;\n};\n\nexport const generateAllPaths = (path: string, splits: Split[]) => {\n return generateAllSplitPaths(\n splits.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))\n ).map((meta) => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);\n};\n\nexport type MiddlewareOptions = Pick<\n FetcherOptions,\n 'projects' | 'host' | 'preview'\n>;\n\nexport const getActiveSplits = async (opts: MiddlewareOptions) => {\n const fetcher = new PlasmicModulesFetcher(opts);\n const all = await fetcher.fetchAllData();\n const splits = all.activeSplits;\n const paths = all.components\n .filter((comp) => comp.isPage && comp.path)\n .map((comp) => comp.path);\n return {\n splits,\n paths,\n };\n};\n\nexport const getMiddlewareResponse = async ({\n opts,\n cookies,\n traits,\n url,\n}: {\n opts: MiddlewareOptions;\n cookies: Record<string, string>;\n traits: Record<string, string>;\n url: string;\n}) => {\n const { splits } = await getActiveSplits(opts);\n\n const newCookies: { key: string; value: string }[] = [];\n\n const variation = getActiveVariation({\n splits,\n traits,\n getKnownValue: (key) => {\n return cookies[`plasmic:${key}`];\n },\n updateKnownValue: (key, value) => {\n newCookies.push({ key: `plasmic:${key}`, value });\n },\n });\n\n let newUrl = url;\n if (Object.keys(variation).length) {\n newUrl = rewriteWithVariation(url, variation);\n }\n\n return {\n url: newUrl,\n cookies: newCookies,\n };\n};\n"],"names":["DELIMITER","rewriteWithoutVariation","url","path","variationsArr","split","variation","reduce","acc","elem","key","value","expandVariation","cmp","a","b","idA","idB","Object","keys","filter","startsWith","sort","map","join","rewriteWithVariation","endsWith","generateAllSplitPaths","splits","length","curSplit","tail","tailPaths","curPaths","slices","slice","getSplitKey","id","paths","i","j","push","generateAllPaths","meta","getActiveSplits","opts","fetcher","PlasmicModulesFetcher","all","fetchAllData","activeSplits","components","comp","isPage","getMiddlewareResponse","cookies","traits","newCookies","getActiveVariation","getKnownValue","updateKnownValue","newUrl"],"mappings":"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"}
1
+ {"version":3,"file":"loader-edge.cjs.development.js","sources":["../src/random.ts","../src/variation.ts"],"sourcesContent":["export const getSeededRandomFunction = (strSeed: string) => {\n // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript\n function cyrb128(str) {\n let h1 = 1779033703,\n h2 = 3144134277,\n h3 = 1013904242,\n h4 = 2773480762;\n for (let i = 0, k; i < str.length; i++) {\n k = str.charCodeAt(i);\n h1 = h2 ^ Math.imul(h1 ^ k, 597399067);\n h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);\n h3 = h4 ^ Math.imul(h3 ^ k, 951274213);\n h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);\n }\n h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);\n h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);\n h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);\n h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);\n return [\n (h1 ^ h2 ^ h3 ^ h4) >>> 0,\n (h2 ^ h1) >>> 0,\n (h3 ^ h1) >>> 0,\n (h4 ^ h1) >>> 0,\n ];\n }\n function sfc32(a, b, c, d) {\n return function () {\n a >>>= 0;\n b >>>= 0;\n c >>>= 0;\n d >>>= 0;\n var t = (a + b) | 0;\n a = b ^ (b >>> 9);\n b = (c + (c << 3)) | 0;\n c = (c << 21) | (c >>> 11);\n d = (d + 1) | 0;\n t = (t + d) | 0;\n c = (c + t) | 0;\n return (t >>> 0) / 4294967296;\n };\n }\n const seed = cyrb128(strSeed);\n const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);\n return rand;\n};\n","import { Split } from '@plasmicapp/loader-fetcher';\nimport { getActiveVariation as getActiveVariationSplits } from '@plasmicapp/loader-splits';\nimport { getSeededRandomFunction } from './random';\n\nconst DELIMITER = '__pm__';\nconst PLASMIC_SEED = 'plasmic_seed';\nconst SEED_RANGE = 16;\n\ntype Traits = Record<string, string | number | boolean>;\n\nconst getSeed = () => {\n return `${Math.floor(Math.random() * SEED_RANGE)}`;\n};\n\nexport const rewriteWithoutTraits = (url: string) => {\n const [path, ...traitssArr] = url.split(DELIMITER);\n const traits = traitssArr.reduce((acc, elem) => {\n const [key, value] = elem.split('=');\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n return {\n path:\n path === '/'\n ? path\n : path.endsWith('/')\n ? path.substring(0, path.length - 1)\n : path,\n traits,\n };\n};\n\nconst expandTraits = (traits: Traits) => {\n const cmp = (a: string, b: string) => {\n return a < b ? -1 : a > b ? 1 : 0;\n };\n return Object.keys(traits)\n .sort(cmp)\n .map((key) => `${DELIMITER}${key}=${traits[key]}`)\n .join('');\n};\n\nexport const rewriteWithTraits = (path: string, traits: Traits) => {\n return `${path}${path.endsWith('/') ? '' : '/'}${expandTraits(traits)}`;\n};\n\nexport const generateAllPaths = (path: string) => {\n const paths = [\n path,\n ...Array(SEED_RANGE)\n .fill(0)\n .map(\n (_, idx) =>\n `${path}${path.endsWith('/') ? '' : '/'}__pm__${PLASMIC_SEED}=${idx}`\n ),\n ];\n return paths;\n};\n\nexport const getMiddlewareResponse = (opts: {\n path: string;\n traits: Traits;\n cookies: Record<string, string>;\n}) => {\n const newCookies: { key: string; value: string }[] = [];\n const seed = opts.cookies[PLASMIC_SEED] || getSeed();\n if (!opts.cookies[PLASMIC_SEED]) {\n newCookies.push({\n key: PLASMIC_SEED,\n value: seed,\n });\n }\n return {\n pathname: rewriteWithTraits(opts.path, {\n [PLASMIC_SEED]: seed,\n ...opts.traits,\n }),\n cookies: newCookies,\n };\n};\n\nexport const getActiveVariation = (opts: {\n splits: Split[];\n traits: Record<string, string | number | boolean>;\n path: string;\n}) => {\n const { splits, traits, path } = opts;\n return getActiveVariationSplits({\n splits,\n traits: {\n pageUrl: path,\n ...traits,\n },\n getKnownValue: () => undefined,\n updateKnownValue: () => null,\n getRandomValue: (key) => {\n const rand = getSeededRandomFunction((traits[PLASMIC_SEED] ?? '') + key);\n return rand();\n },\n });\n};\n"],"names":["getSeededRandomFunction","strSeed","cyrb128","str","h1","h2","h3","h4","i","k","length","charCodeAt","Math","imul","sfc32","a","b","c","d","t","seed","rand","DELIMITER","PLASMIC_SEED","SEED_RANGE","getSeed","floor","random","rewriteWithoutTraits","url","path","traitssArr","split","traits","reduce","acc","elem","key","value","endsWith","substring","expandTraits","cmp","Object","keys","sort","map","join","rewriteWithTraits","generateAllPaths","paths","Array","fill","_","idx","getMiddlewareResponse","opts","newCookies","cookies","push","pathname","getActiveVariation","splits","getActiveVariationSplits","pageUrl","getKnownValue","undefined","updateKnownValue","getRandomValue"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@plasmicapp/loader-fetcher"),e=require("@plasmicapp/loader-splits");const s=t=>Object.keys(t).filter(t=>!t.startsWith("ext")).sort((t,e)=>{const s=t.split(".")[1],i=e.split(".")[1];return s<i?-1:s>i?1:0}).map(e=>`__pm__${e}=${t[e]}`).join(""),i=(t,e)=>`${t}${t.endsWith("/")?"":"/"}${s(e)}`,r=t=>{if(0===t.length)return[""];const[i,...a]=t,p=r(a),l=["",...i.slices.map(t=>s({[e.getSplitKey(i)]:t.id}))],o=[];for(let t=0;t<l.length;t++)for(let e=0;e<p.length;e++)o.push(l[t]+p[e]);return o},a=async e=>{const s=new t.PlasmicModulesFetcher(e),i=await s.fetchAllData();return{splits:i.activeSplits,paths:i.components.filter(t=>t.isPage&&t.path).map(t=>t.path)}};exports.generateAllPaths=(t,e)=>r(e.sort((t,e)=>t.id<e.id?-1:t.id>e.id?1:0)).map(e=>`${t}${t.endsWith("/")?"":"/"}${e}`),exports.getActiveSplits=a,exports.getMiddlewareResponse=async({opts:t,cookies:s,traits:r,url:p})=>{const{splits:l}=await a(t),o=[],n=e.getActiveVariation({splits:l,traits:r,getKnownValue:t=>s["plasmic:"+t],updateKnownValue:(t,e)=>{o.push({key:"plasmic:"+t,value:e})}});let c=p;return Object.keys(n).length&&(c=i(p,n)),{url:c,cookies:o}},exports.rewriteWithVariation=i,exports.rewriteWithoutVariation=t=>{const[e,...s]=t.split("__pm__");return{path:e,variation:s.reduce((t,e)=>{const[s,i]=e.split("=");return{...t,[s]:i}},{})}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@plasmicapp/loader-splits");const e=(t,e)=>`${t}${t.endsWith("/")?"":"/"}${(t=>Object.keys(t).sort((t,e)=>t<e?-1:t>e?1:0).map(e=>`__pm__${e}=${t[e]}`).join(""))(e)}`;exports.generateAllPaths=t=>[t,...Array(16).fill(0).map((e,r)=>`${t}${t.endsWith("/")?"":"/"}__pm__plasmic_seed=${r}`)],exports.getActiveVariation=e=>{const{splits:r,traits:s,path:a}=e;return t.getActiveVariation({splits:r,traits:{pageUrl:a,...s},getKnownValue:()=>{},updateKnownValue:()=>null,getRandomValue:t=>{var e;return(t=>{const e=function(t){let e=1779033703,r=3144134277,s=1013904242,a=2773480762;for(let i,l=0;l<t.length;l++)i=t.charCodeAt(l),e=r^Math.imul(e^i,597399067),r=s^Math.imul(r^i,2869860233),s=a^Math.imul(s^i,951274213),a=e^Math.imul(a^i,2716044179);return e=Math.imul(s^e>>>18,597399067),r=Math.imul(a^r>>>22,2869860233),s=Math.imul(e^s>>>17,951274213),a=Math.imul(r^a>>>19,2716044179),[(e^r^s^a)>>>0,(r^e)>>>0,(s^e)>>>0,(a^e)>>>0]}(t);var r,s,a,i;return r=e[0],s=e[1],a=e[2],i=e[3],function(){var t=(r>>>=0)+(s>>>=0)|0;return r=s^s>>>9,s=(a>>>=0)+(a<<3)|0,a=(a=a<<21|a>>>11)+(t=t+(i=1+(i>>>=0)|0)|0)|0,(t>>>0)/4294967296}})((null!=(e=s.plasmic_seed)?e:"")+t)()}})},exports.getMiddlewareResponse=t=>{const r=[],s=t.cookies.plasmic_seed||""+Math.floor(16*Math.random());return t.cookies.plasmic_seed||r.push({key:"plasmic_seed",value:s}),{pathname:e(t.path,{plasmic_seed:s,...t.traits}),cookies:r}},exports.rewriteWithTraits=e,exports.rewriteWithoutTraits=t=>{const[e,...r]=t.split("__pm__"),s=r.reduce((t,e)=>{const[r,s]=e.split("=");return{...t,[r]:s}},{});return{path:"/"===e?e:e.endsWith("/")?e.substring(0,e.length-1):e,traits:s}};
2
2
  //# sourceMappingURL=loader-edge.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-edge.cjs.production.min.js","sources":["../src/variation.ts"],"sourcesContent":["import {\n FetcherOptions,\n PlasmicModulesFetcher,\n Split,\n} from '@plasmicapp/loader-fetcher';\nimport { getActiveVariation, getSplitKey } from '@plasmicapp/loader-splits';\n\nexport const DELIMITER = '__pm__';\n\nexport const rewriteWithoutVariation = (url: string) => {\n const [path, ...variationsArr] = url.split(DELIMITER);\n const variation = variationsArr.reduce((acc, elem) => {\n const [key, value] = elem.split('=');\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n return {\n path,\n variation,\n };\n};\n\nconst expandVariation = (variation: Record<string, string>) => {\n const cmp = (a: string, b: string) => {\n const idA = a.split('.')[1];\n const idB = b.split('.')[1];\n return idA < idB ? -1 : idA > idB ? 1 : 0;\n };\n return Object.keys(variation)\n .filter((key) => !key.startsWith('ext')) // remove external variations\n .sort(cmp)\n .map((key) => `${DELIMITER}${key}=${variation[key]}`)\n .join('');\n};\n\nexport const rewriteWithVariation = (\n url: string,\n variation: Record<string, string>\n) => {\n return `${url}${url.endsWith('/') ? '' : '/'}${expandVariation(variation)}`;\n};\n\nconst generateAllSplitPaths = (splits: Split[]): string[] => {\n if (splits.length === 0) {\n return [''];\n }\n const [curSplit, ...tail] = splits;\n const tailPaths = generateAllSplitPaths(tail);\n const curPaths = [\n '',\n ...(curSplit.slices as Array<{ id: string }>).map((slice) =>\n expandVariation({\n [getSplitKey(curSplit)]: slice.id,\n })\n ),\n ];\n const paths: string[] = [];\n for (let i = 0; i < curPaths.length; i++) {\n for (let j = 0; j < tailPaths.length; j++) {\n paths.push(curPaths[i] + tailPaths[j]);\n }\n }\n return paths;\n};\n\nexport const generateAllPaths = (path: string, splits: Split[]) => {\n return generateAllSplitPaths(\n splits.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))\n ).map((meta) => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);\n};\n\nexport type MiddlewareOptions = Pick<\n FetcherOptions,\n 'projects' | 'host' | 'preview'\n>;\n\nexport const getActiveSplits = async (opts: MiddlewareOptions) => {\n const fetcher = new PlasmicModulesFetcher(opts);\n const all = await fetcher.fetchAllData();\n const splits = all.activeSplits;\n const paths = all.components\n .filter((comp) => comp.isPage && comp.path)\n .map((comp) => comp.path);\n return {\n splits,\n paths,\n };\n};\n\nexport const getMiddlewareResponse = async ({\n opts,\n cookies,\n traits,\n url,\n}: {\n opts: MiddlewareOptions;\n cookies: Record<string, string>;\n traits: Record<string, string>;\n url: string;\n}) => {\n const { splits } = await getActiveSplits(opts);\n\n const newCookies: { key: string; value: string }[] = [];\n\n const variation = getActiveVariation({\n splits,\n traits,\n getKnownValue: (key) => {\n return cookies[`plasmic:${key}`];\n },\n updateKnownValue: (key, value) => {\n newCookies.push({ key: `plasmic:${key}`, value });\n },\n });\n\n let newUrl = url;\n if (Object.keys(variation).length) {\n newUrl = rewriteWithVariation(url, variation);\n }\n\n return {\n url: newUrl,\n cookies: newCookies,\n };\n};\n"],"names":["expandVariation","variation","Object","keys","filter","key","startsWith","sort","a","b","idA","split","idB","map","join","rewriteWithVariation","url","endsWith","generateAllSplitPaths","splits","length","curSplit","tail","tailPaths","curPaths","slices","slice","getSplitKey","id","paths","i","j","push","getActiveSplits","async","fetcher","PlasmicModulesFetcher","opts","all","fetchAllData","activeSplits","components","comp","isPage","path","meta","cookies","traits","newCookies","getActiveVariation","getKnownValue","updateKnownValue","value","newUrl","variationsArr","reduce","acc","elem"],"mappings":"uJAOO,MAiBDA,EAAmBC,GAMhBC,OAAOC,KAAKF,GAChBG,OAAQC,IAASA,EAAIC,WAAW,QAChCC,KAPS,CAACC,EAAWC,WAChBC,EAAMF,EAAEG,MAAM,KAAK,GACnBC,EAAMH,EAAEE,MAAM,KAAK,UAClBD,EAAME,GAAO,EAAIF,EAAME,EAAM,EAAI,IAKvCC,IAAKR,YAAuBA,KAAOJ,EAAUI,MAC7CS,KAAK,IAGGC,EAAuB,CAClCC,EACAf,OAEUe,IAAMA,EAAIC,SAAS,KAAO,GAAK,MAAMjB,EAAgBC,KAG3DiB,EAAyBC,OACP,IAAlBA,EAAOC,aACF,CAAC,UAEHC,KAAaC,GAAQH,EACtBI,EAAYL,EAAsBI,GAClCE,EAAW,CACf,MACIH,EAASI,OAAiCZ,IAAKa,GACjD1B,EAAgB,EACb2B,cAAYN,IAAYK,EAAME,OAI/BC,EAAkB,OACnB,IAAIC,EAAI,EAAGA,EAAIN,EAASJ,OAAQU,QAC9B,IAAIC,EAAI,EAAGA,EAAIR,EAAUH,OAAQW,IACpCF,EAAMG,KAAKR,EAASM,GAAKP,EAAUQ,WAGhCF,GAcII,EAAkBC,MAAAA,UACvBC,EAAU,IAAIC,wBAAsBC,GACpCC,QAAYH,EAAQI,qBAKnB,CACLpB,OALamB,EAAIE,aAMjBX,MALYS,EAAIG,WACfrC,OAAQsC,GAASA,EAAKC,QAAUD,EAAKE,MACrC/B,IAAK6B,GAASA,EAAKE,iCAjBQ,CAACA,EAAczB,IACtCD,EACLC,EAAOZ,KAAK,CAACC,EAAGC,IAAOD,EAAEoB,GAAKnB,EAAEmB,IAAM,EAAIpB,EAAEoB,GAAKnB,EAAEmB,GAAK,EAAI,IAC5Df,IAAKgC,MAAYD,IAAOA,EAAK3B,SAAS,KAAO,GAAK,MAAM4B,6DAqBvBX,OACnCG,KAAAA,EACAS,QAAAA,EACAC,OAAAA,EACA/B,IAAAA,YAOMG,OAAEA,SAAiBc,EAAgBI,GAEnCW,EAA+C,GAE/C/C,EAAYgD,qBAAmB,CACnC9B,OAAAA,EACA4B,OAAAA,EACAG,cAAgB7C,GACPyC,aAAmBzC,GAE5B8C,iBAAkB,CAAC9C,EAAK+C,KACtBJ,EAAWhB,KAAK,CAAE3B,eAAgBA,EAAO+C,MAAAA,WAIzCC,EAASrC,SACTd,OAAOC,KAAKF,GAAWmB,SACzBiC,EAAStC,EAAqBC,EAAKf,IAG9B,CACLe,IAAKqC,EACLP,QAASE,mEAnH2BhC,UAC/B4B,KAASU,GAAiBtC,EAAIL,MAHd,gBAWhB,CACLiC,KAAAA,EACA3C,UATgBqD,EAAcC,OAAO,CAACC,EAAKC,WACpCpD,EAAK+C,GAASK,EAAK9C,MAAM,WACzB,IACF6C,GACFnD,GAAM+C,IAER"}
1
+ {"version":3,"file":"loader-edge.cjs.production.min.js","sources":["../src/random.ts","../src/variation.ts"],"sourcesContent":["export const getSeededRandomFunction = (strSeed: string) => {\n // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript\n function cyrb128(str) {\n let h1 = 1779033703,\n h2 = 3144134277,\n h3 = 1013904242,\n h4 = 2773480762;\n for (let i = 0, k; i < str.length; i++) {\n k = str.charCodeAt(i);\n h1 = h2 ^ Math.imul(h1 ^ k, 597399067);\n h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);\n h3 = h4 ^ Math.imul(h3 ^ k, 951274213);\n h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);\n }\n h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);\n h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);\n h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);\n h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);\n return [\n (h1 ^ h2 ^ h3 ^ h4) >>> 0,\n (h2 ^ h1) >>> 0,\n (h3 ^ h1) >>> 0,\n (h4 ^ h1) >>> 0,\n ];\n }\n function sfc32(a, b, c, d) {\n return function () {\n a >>>= 0;\n b >>>= 0;\n c >>>= 0;\n d >>>= 0;\n var t = (a + b) | 0;\n a = b ^ (b >>> 9);\n b = (c + (c << 3)) | 0;\n c = (c << 21) | (c >>> 11);\n d = (d + 1) | 0;\n t = (t + d) | 0;\n c = (c + t) | 0;\n return (t >>> 0) / 4294967296;\n };\n }\n const seed = cyrb128(strSeed);\n const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);\n return rand;\n};\n","import { Split } from '@plasmicapp/loader-fetcher';\nimport { getActiveVariation as getActiveVariationSplits } from '@plasmicapp/loader-splits';\nimport { getSeededRandomFunction } from './random';\n\nconst DELIMITER = '__pm__';\nconst PLASMIC_SEED = 'plasmic_seed';\nconst SEED_RANGE = 16;\n\ntype Traits = Record<string, string | number | boolean>;\n\nconst getSeed = () => {\n return `${Math.floor(Math.random() * SEED_RANGE)}`;\n};\n\nexport const rewriteWithoutTraits = (url: string) => {\n const [path, ...traitssArr] = url.split(DELIMITER);\n const traits = traitssArr.reduce((acc, elem) => {\n const [key, value] = elem.split('=');\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n return {\n path:\n path === '/'\n ? path\n : path.endsWith('/')\n ? path.substring(0, path.length - 1)\n : path,\n traits,\n };\n};\n\nconst expandTraits = (traits: Traits) => {\n const cmp = (a: string, b: string) => {\n return a < b ? -1 : a > b ? 1 : 0;\n };\n return Object.keys(traits)\n .sort(cmp)\n .map((key) => `${DELIMITER}${key}=${traits[key]}`)\n .join('');\n};\n\nexport const rewriteWithTraits = (path: string, traits: Traits) => {\n return `${path}${path.endsWith('/') ? '' : '/'}${expandTraits(traits)}`;\n};\n\nexport const generateAllPaths = (path: string) => {\n const paths = [\n path,\n ...Array(SEED_RANGE)\n .fill(0)\n .map(\n (_, idx) =>\n `${path}${path.endsWith('/') ? '' : '/'}__pm__${PLASMIC_SEED}=${idx}`\n ),\n ];\n return paths;\n};\n\nexport const getMiddlewareResponse = (opts: {\n path: string;\n traits: Traits;\n cookies: Record<string, string>;\n}) => {\n const newCookies: { key: string; value: string }[] = [];\n const seed = opts.cookies[PLASMIC_SEED] || getSeed();\n if (!opts.cookies[PLASMIC_SEED]) {\n newCookies.push({\n key: PLASMIC_SEED,\n value: seed,\n });\n }\n return {\n pathname: rewriteWithTraits(opts.path, {\n [PLASMIC_SEED]: seed,\n ...opts.traits,\n }),\n cookies: newCookies,\n };\n};\n\nexport const getActiveVariation = (opts: {\n splits: Split[];\n traits: Record<string, string | number | boolean>;\n path: string;\n}) => {\n const { splits, traits, path } = opts;\n return getActiveVariationSplits({\n splits,\n traits: {\n pageUrl: path,\n ...traits,\n },\n getKnownValue: () => undefined,\n updateKnownValue: () => null,\n getRandomValue: (key) => {\n const rand = getSeededRandomFunction((traits[PLASMIC_SEED] ?? '') + key);\n return rand();\n },\n });\n};\n"],"names":["rewriteWithTraits","path","traits","endsWith","Object","keys","sort","a","b","map","key","join","expandTraits","Array","fill","_","idx","opts","splits","getActiveVariationSplits","pageUrl","getKnownValue","updateKnownValue","getRandomValue","strSeed","seed","str","h1","h2","h3","h4","k","i","length","charCodeAt","Math","imul","cyrb128","c","d","t","getSeededRandomFunction","rand","newCookies","cookies","floor","random","push","value","pathname","url","traitssArr","split","reduce","acc","elem","substring"],"mappings":"+GAAO,MC4CMA,EAAoB,CAACC,EAAcC,OACpCD,IAAOA,EAAKE,SAAS,KAAO,GAAK,MAXvBD,CAAAA,GAIbE,OAAOC,KAAKH,GAChBI,KAJS,CAACC,EAAWC,IACfD,EAAIC,GAAK,EAAID,EAAIC,EAAI,EAAI,GAI/BC,IAAKC,YAAuBA,KAAOR,EAAOQ,MAC1CC,KAAK,IAIyCC,CAAaV,8BAG/BD,GACjB,CACZA,KACGY,MA7CY,IA8CZC,KAAK,GACLL,IACC,CAACM,EAAGC,OACCf,IAAOA,EAAKE,SAAS,KAAO,GAAK,yBAA4Ba,iCA4BvCC,UAK3BC,OAAEA,EAAFhB,OAAUA,EAAVD,KAAkBA,GAASgB,SAC1BE,qBAAyB,CAC9BD,OAAAA,EACAhB,OAAQ,CACNkB,QAASnB,KACNC,GAELmB,cAAe,OACfC,iBAAkB,IAAM,KACxBC,eAAiBb,gBDjGmBc,CAAAA,UAyChCC,WAvCWC,OACXC,EAAK,WACPC,EAAK,WACLC,EAAK,WACLC,EAAK,eACF,IAAWC,EAAPC,EAAI,EAAMA,EAAIN,EAAIO,OAAQD,IACjCD,EAAIL,EAAIQ,WAAWF,GACnBL,EAAKC,EAAKO,KAAKC,KAAKT,EAAKI,EAAG,WAC5BH,EAAKC,EAAKM,KAAKC,KAAKR,EAAKG,EAAG,YAC5BF,EAAKC,EAAKK,KAAKC,KAAKP,EAAKE,EAAG,WAC5BD,EAAKH,EAAKQ,KAAKC,KAAKN,EAAKC,EAAG,mBAE9BJ,EAAKQ,KAAKC,KAAKP,EAAMF,IAAO,GAAK,WACjCC,EAAKO,KAAKC,KAAKN,EAAMF,IAAO,GAAK,YACjCC,EAAKM,KAAKC,KAAKT,EAAME,IAAO,GAAK,WACjCC,EAAKK,KAAKC,KAAKR,EAAME,IAAO,GAAK,YAC1B,EACJH,EAAKC,EAAKC,EAAKC,KAAQ,GACvBF,EAAKD,KAAQ,GACbE,EAAKF,KAAQ,GACbG,EAAKH,KAAQ,GAmBLU,CAAQb,OAhBNjB,EAAGC,EAAG8B,EAAGC,SAAThC,EAiBIkB,EAAK,GAjBNjB,EAiBUiB,EAAK,GAjBZa,EAiBgBb,EAAK,GAjBlBc,EAiBsBd,EAAK,GAhB1C,eAKDe,GAJJjC,KAAO,IACPC,KAAO,GAGW,SAClBD,EAAIC,EAAKA,IAAM,EACfA,GAJA8B,KAAO,IAIGA,GAAK,GAAM,EAIrBA,GAHAA,EAAKA,GAAK,GAAOA,IAAM,KAEvBE,EAAKA,GADLD,EAAS,GALTA,KAAO,GAKO,GACA,GACA,GACNC,IAAM,GAAK,aC4DNC,WAAyBvC,EAAM,gBAAkB,IAAMQ,EAC7DgC,qCAtCyBzB,UAK9B0B,EAA+C,GAC/ClB,EAAOR,EAAK2B,QAAL,iBAxDHT,KAAKU,MALE,GAKIV,KAAKW,iBAyDrB7B,EAAK2B,QAAL,cACHD,EAAWI,KAAK,CACdrC,IAjEe,eAkEfsC,MAAOvB,IAGJ,CACLwB,SAAUjD,EAAkBiB,EAAKhB,KAAM,cACrBwB,KACbR,EAAKf,SAEV0C,QAASD,6DAjEwBO,UAC5BjD,KAASkD,GAAcD,EAAIE,MAXlB,UAYVlD,EAASiD,EAAWE,OAAO,CAACC,EAAKC,WAC9B7C,EAAKsC,GAASO,EAAKH,MAAM,WACzB,IACFE,GACF5C,GAAMsC,IAER,UACI,CACL/C,KACW,MAATA,EACIA,EACAA,EAAKE,SAAS,KACdF,EAAKuD,UAAU,EAAGvD,EAAKgC,OAAS,GAChChC,EACNC,OAAAA"}
@@ -1,104 +1,128 @@
1
- import { PlasmicModulesFetcher } from '@plasmicapp/loader-fetcher';
2
- import { getActiveVariation, getSplitKey } from '@plasmicapp/loader-splits';
1
+ import { getActiveVariation as getActiveVariation$1 } from '@plasmicapp/loader-splits';
2
+
3
+ const getSeededRandomFunction = strSeed => {
4
+ // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript
5
+ function cyrb128(str) {
6
+ let h1 = 1779033703,
7
+ h2 = 3144134277,
8
+ h3 = 1013904242,
9
+ h4 = 2773480762;
10
+
11
+ for (let i = 0, k; i < str.length; i++) {
12
+ k = str.charCodeAt(i);
13
+ h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
14
+ h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
15
+ h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
16
+ h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
17
+ }
18
+
19
+ h1 = Math.imul(h3 ^ h1 >>> 18, 597399067);
20
+ h2 = Math.imul(h4 ^ h2 >>> 22, 2869860233);
21
+ h3 = Math.imul(h1 ^ h3 >>> 17, 951274213);
22
+ h4 = Math.imul(h2 ^ h4 >>> 19, 2716044179);
23
+ return [(h1 ^ h2 ^ h3 ^ h4) >>> 0, (h2 ^ h1) >>> 0, (h3 ^ h1) >>> 0, (h4 ^ h1) >>> 0];
24
+ }
25
+
26
+ function sfc32(a, b, c, d) {
27
+ return function () {
28
+ a >>>= 0;
29
+ b >>>= 0;
30
+ c >>>= 0;
31
+ d >>>= 0;
32
+ var t = a + b | 0;
33
+ a = b ^ b >>> 9;
34
+ b = c + (c << 3) | 0;
35
+ c = c << 21 | c >>> 11;
36
+ d = d + 1 | 0;
37
+ t = t + d | 0;
38
+ c = c + t | 0;
39
+ return (t >>> 0) / 4294967296;
40
+ };
41
+ }
42
+
43
+ const seed = cyrb128(strSeed);
44
+ const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);
45
+ return rand;
46
+ };
3
47
 
4
48
  const DELIMITER = '__pm__';
5
- const rewriteWithoutVariation = url => {
6
- const [path, ...variationsArr] = url.split(DELIMITER);
7
- const variation = variationsArr.reduce((acc, elem) => {
49
+ const PLASMIC_SEED = 'plasmic_seed';
50
+ const SEED_RANGE = 16;
51
+
52
+ const getSeed = () => {
53
+ return `${Math.floor(Math.random() * SEED_RANGE)}`;
54
+ };
55
+
56
+ const rewriteWithoutTraits = url => {
57
+ const [path, ...traitssArr] = url.split(DELIMITER);
58
+ const traits = traitssArr.reduce((acc, elem) => {
8
59
  const [key, value] = elem.split('=');
9
60
  return { ...acc,
10
61
  [key]: value
11
62
  };
12
63
  }, {});
13
64
  return {
14
- path,
15
- variation
65
+ path: path === '/' ? path : path.endsWith('/') ? path.substring(0, path.length - 1) : path,
66
+ traits
16
67
  };
17
68
  };
18
69
 
19
- const expandVariation = variation => {
70
+ const expandTraits = traits => {
20
71
  const cmp = (a, b) => {
21
- const idA = a.split('.')[1];
22
- const idB = b.split('.')[1];
23
- return idA < idB ? -1 : idA > idB ? 1 : 0;
72
+ return a < b ? -1 : a > b ? 1 : 0;
24
73
  };
25
74
 
26
- return Object.keys(variation).filter(key => !key.startsWith('ext')) // remove external variations
27
- .sort(cmp).map(key => `${DELIMITER}${key}=${variation[key]}`).join('');
75
+ return Object.keys(traits).sort(cmp).map(key => `${DELIMITER}${key}=${traits[key]}`).join('');
28
76
  };
29
77
 
30
- const rewriteWithVariation = (url, variation) => {
31
- return `${url}${url.endsWith('/') ? '' : '/'}${expandVariation(variation)}`;
78
+ const rewriteWithTraits = (path, traits) => {
79
+ return `${path}${path.endsWith('/') ? '' : '/'}${expandTraits(traits)}`;
32
80
  };
33
-
34
- const generateAllSplitPaths = splits => {
35
- if (splits.length === 0) {
36
- return [''];
37
- }
38
-
39
- const [curSplit, ...tail] = splits;
40
- const tailPaths = generateAllSplitPaths(tail);
41
- const curPaths = ['', ...curSplit.slices.map(slice => expandVariation({
42
- [getSplitKey(curSplit)]: slice.id
43
- }))];
44
- const paths = [];
45
-
46
- for (let i = 0; i < curPaths.length; i++) {
47
- for (let j = 0; j < tailPaths.length; j++) {
48
- paths.push(curPaths[i] + tailPaths[j]);
49
- }
50
- }
51
-
81
+ const generateAllPaths = path => {
82
+ const paths = [path, ...Array(SEED_RANGE).fill(0).map((_, idx) => `${path}${path.endsWith('/') ? '' : '/'}__pm__${PLASMIC_SEED}=${idx}`)];
52
83
  return paths;
53
84
  };
85
+ const getMiddlewareResponse = opts => {
86
+ const newCookies = [];
87
+ const seed = opts.cookies[PLASMIC_SEED] || getSeed();
88
+
89
+ if (!opts.cookies[PLASMIC_SEED]) {
90
+ newCookies.push({
91
+ key: PLASMIC_SEED,
92
+ value: seed
93
+ });
94
+ }
54
95
 
55
- const generateAllPaths = (path, splits) => {
56
- return generateAllSplitPaths(splits.sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0)).map(meta => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);
57
- };
58
- const getActiveSplits = async opts => {
59
- const fetcher = new PlasmicModulesFetcher(opts);
60
- const all = await fetcher.fetchAllData();
61
- const splits = all.activeSplits;
62
- const paths = all.components.filter(comp => comp.isPage && comp.path).map(comp => comp.path);
63
96
  return {
64
- splits,
65
- paths
97
+ pathname: rewriteWithTraits(opts.path, {
98
+ [PLASMIC_SEED]: seed,
99
+ ...opts.traits
100
+ }),
101
+ cookies: newCookies
66
102
  };
67
103
  };
68
- const getMiddlewareResponse = async ({
69
- opts,
70
- cookies,
71
- traits,
72
- url
73
- }) => {
104
+ const getActiveVariation = opts => {
74
105
  const {
75
- splits
76
- } = await getActiveSplits(opts);
77
- const newCookies = [];
78
- const variation = getActiveVariation({
79
106
  splits,
80
107
  traits,
81
- getKnownValue: key => {
82
- return cookies[`plasmic:${key}`];
108
+ path
109
+ } = opts;
110
+ return getActiveVariation$1({
111
+ splits,
112
+ traits: {
113
+ pageUrl: path,
114
+ ...traits
83
115
  },
84
- updateKnownValue: (key, value) => {
85
- newCookies.push({
86
- key: `plasmic:${key}`,
87
- value
88
- });
116
+ getKnownValue: () => undefined,
117
+ updateKnownValue: () => null,
118
+ getRandomValue: key => {
119
+ var _traits$PLASMIC_SEED;
120
+
121
+ const rand = getSeededRandomFunction(((_traits$PLASMIC_SEED = traits[PLASMIC_SEED]) != null ? _traits$PLASMIC_SEED : '') + key);
122
+ return rand();
89
123
  }
90
124
  });
91
- let newUrl = url;
92
-
93
- if (Object.keys(variation).length) {
94
- newUrl = rewriteWithVariation(url, variation);
95
- }
96
-
97
- return {
98
- url: newUrl,
99
- cookies: newCookies
100
- };
101
125
  };
102
126
 
103
- export { generateAllPaths, getActiveSplits, getMiddlewareResponse, rewriteWithVariation, rewriteWithoutVariation };
127
+ export { generateAllPaths, getActiveVariation, getMiddlewareResponse, rewriteWithTraits, rewriteWithoutTraits };
104
128
  //# sourceMappingURL=loader-edge.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loader-edge.esm.js","sources":["../src/variation.ts"],"sourcesContent":["import {\n FetcherOptions,\n PlasmicModulesFetcher,\n Split,\n} from '@plasmicapp/loader-fetcher';\nimport { getActiveVariation, getSplitKey } from '@plasmicapp/loader-splits';\n\nexport const DELIMITER = '__pm__';\n\nexport const rewriteWithoutVariation = (url: string) => {\n const [path, ...variationsArr] = url.split(DELIMITER);\n const variation = variationsArr.reduce((acc, elem) => {\n const [key, value] = elem.split('=');\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n return {\n path,\n variation,\n };\n};\n\nconst expandVariation = (variation: Record<string, string>) => {\n const cmp = (a: string, b: string) => {\n const idA = a.split('.')[1];\n const idB = b.split('.')[1];\n return idA < idB ? -1 : idA > idB ? 1 : 0;\n };\n return Object.keys(variation)\n .filter((key) => !key.startsWith('ext')) // remove external variations\n .sort(cmp)\n .map((key) => `${DELIMITER}${key}=${variation[key]}`)\n .join('');\n};\n\nexport const rewriteWithVariation = (\n url: string,\n variation: Record<string, string>\n) => {\n return `${url}${url.endsWith('/') ? '' : '/'}${expandVariation(variation)}`;\n};\n\nconst generateAllSplitPaths = (splits: Split[]): string[] => {\n if (splits.length === 0) {\n return [''];\n }\n const [curSplit, ...tail] = splits;\n const tailPaths = generateAllSplitPaths(tail);\n const curPaths = [\n '',\n ...(curSplit.slices as Array<{ id: string }>).map((slice) =>\n expandVariation({\n [getSplitKey(curSplit)]: slice.id,\n })\n ),\n ];\n const paths: string[] = [];\n for (let i = 0; i < curPaths.length; i++) {\n for (let j = 0; j < tailPaths.length; j++) {\n paths.push(curPaths[i] + tailPaths[j]);\n }\n }\n return paths;\n};\n\nexport const generateAllPaths = (path: string, splits: Split[]) => {\n return generateAllSplitPaths(\n splits.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0))\n ).map((meta) => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);\n};\n\nexport type MiddlewareOptions = Pick<\n FetcherOptions,\n 'projects' | 'host' | 'preview'\n>;\n\nexport const getActiveSplits = async (opts: MiddlewareOptions) => {\n const fetcher = new PlasmicModulesFetcher(opts);\n const all = await fetcher.fetchAllData();\n const splits = all.activeSplits;\n const paths = all.components\n .filter((comp) => comp.isPage && comp.path)\n .map((comp) => comp.path);\n return {\n splits,\n paths,\n };\n};\n\nexport const getMiddlewareResponse = async ({\n opts,\n cookies,\n traits,\n url,\n}: {\n opts: MiddlewareOptions;\n cookies: Record<string, string>;\n traits: Record<string, string>;\n url: string;\n}) => {\n const { splits } = await getActiveSplits(opts);\n\n const newCookies: { key: string; value: string }[] = [];\n\n const variation = getActiveVariation({\n splits,\n traits,\n getKnownValue: (key) => {\n return cookies[`plasmic:${key}`];\n },\n updateKnownValue: (key, value) => {\n newCookies.push({ key: `plasmic:${key}`, value });\n },\n });\n\n let newUrl = url;\n if (Object.keys(variation).length) {\n newUrl = rewriteWithVariation(url, variation);\n }\n\n return {\n url: newUrl,\n cookies: newCookies,\n };\n};\n"],"names":["DELIMITER","rewriteWithoutVariation","url","path","variationsArr","split","variation","reduce","acc","elem","key","value","expandVariation","cmp","a","b","idA","idB","Object","keys","filter","startsWith","sort","map","join","rewriteWithVariation","endsWith","generateAllSplitPaths","splits","length","curSplit","tail","tailPaths","curPaths","slices","slice","getSplitKey","id","paths","i","j","push","generateAllPaths","meta","getActiveSplits","opts","fetcher","PlasmicModulesFetcher","all","fetchAllData","activeSplits","components","comp","isPage","getMiddlewareResponse","cookies","traits","newCookies","getActiveVariation","getKnownValue","updateKnownValue","newUrl"],"mappings":"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"}
1
+ {"version":3,"file":"loader-edge.esm.js","sources":["../src/random.ts","../src/variation.ts"],"sourcesContent":["export const getSeededRandomFunction = (strSeed: string) => {\n // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript\n function cyrb128(str) {\n let h1 = 1779033703,\n h2 = 3144134277,\n h3 = 1013904242,\n h4 = 2773480762;\n for (let i = 0, k; i < str.length; i++) {\n k = str.charCodeAt(i);\n h1 = h2 ^ Math.imul(h1 ^ k, 597399067);\n h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);\n h3 = h4 ^ Math.imul(h3 ^ k, 951274213);\n h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);\n }\n h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);\n h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);\n h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);\n h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);\n return [\n (h1 ^ h2 ^ h3 ^ h4) >>> 0,\n (h2 ^ h1) >>> 0,\n (h3 ^ h1) >>> 0,\n (h4 ^ h1) >>> 0,\n ];\n }\n function sfc32(a, b, c, d) {\n return function () {\n a >>>= 0;\n b >>>= 0;\n c >>>= 0;\n d >>>= 0;\n var t = (a + b) | 0;\n a = b ^ (b >>> 9);\n b = (c + (c << 3)) | 0;\n c = (c << 21) | (c >>> 11);\n d = (d + 1) | 0;\n t = (t + d) | 0;\n c = (c + t) | 0;\n return (t >>> 0) / 4294967296;\n };\n }\n const seed = cyrb128(strSeed);\n const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);\n return rand;\n};\n","import { Split } from '@plasmicapp/loader-fetcher';\nimport { getActiveVariation as getActiveVariationSplits } from '@plasmicapp/loader-splits';\nimport { getSeededRandomFunction } from './random';\n\nconst DELIMITER = '__pm__';\nconst PLASMIC_SEED = 'plasmic_seed';\nconst SEED_RANGE = 16;\n\ntype Traits = Record<string, string | number | boolean>;\n\nconst getSeed = () => {\n return `${Math.floor(Math.random() * SEED_RANGE)}`;\n};\n\nexport const rewriteWithoutTraits = (url: string) => {\n const [path, ...traitssArr] = url.split(DELIMITER);\n const traits = traitssArr.reduce((acc, elem) => {\n const [key, value] = elem.split('=');\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n return {\n path:\n path === '/'\n ? path\n : path.endsWith('/')\n ? path.substring(0, path.length - 1)\n : path,\n traits,\n };\n};\n\nconst expandTraits = (traits: Traits) => {\n const cmp = (a: string, b: string) => {\n return a < b ? -1 : a > b ? 1 : 0;\n };\n return Object.keys(traits)\n .sort(cmp)\n .map((key) => `${DELIMITER}${key}=${traits[key]}`)\n .join('');\n};\n\nexport const rewriteWithTraits = (path: string, traits: Traits) => {\n return `${path}${path.endsWith('/') ? '' : '/'}${expandTraits(traits)}`;\n};\n\nexport const generateAllPaths = (path: string) => {\n const paths = [\n path,\n ...Array(SEED_RANGE)\n .fill(0)\n .map(\n (_, idx) =>\n `${path}${path.endsWith('/') ? '' : '/'}__pm__${PLASMIC_SEED}=${idx}`\n ),\n ];\n return paths;\n};\n\nexport const getMiddlewareResponse = (opts: {\n path: string;\n traits: Traits;\n cookies: Record<string, string>;\n}) => {\n const newCookies: { key: string; value: string }[] = [];\n const seed = opts.cookies[PLASMIC_SEED] || getSeed();\n if (!opts.cookies[PLASMIC_SEED]) {\n newCookies.push({\n key: PLASMIC_SEED,\n value: seed,\n });\n }\n return {\n pathname: rewriteWithTraits(opts.path, {\n [PLASMIC_SEED]: seed,\n ...opts.traits,\n }),\n cookies: newCookies,\n };\n};\n\nexport const getActiveVariation = (opts: {\n splits: Split[];\n traits: Record<string, string | number | boolean>;\n path: string;\n}) => {\n const { splits, traits, path } = opts;\n return getActiveVariationSplits({\n splits,\n traits: {\n pageUrl: path,\n ...traits,\n },\n getKnownValue: () => undefined,\n updateKnownValue: () => null,\n getRandomValue: (key) => {\n const rand = getSeededRandomFunction((traits[PLASMIC_SEED] ?? '') + key);\n return rand();\n },\n });\n};\n"],"names":["getSeededRandomFunction","strSeed","cyrb128","str","h1","h2","h3","h4","i","k","length","charCodeAt","Math","imul","sfc32","a","b","c","d","t","seed","rand","DELIMITER","PLASMIC_SEED","SEED_RANGE","getSeed","floor","random","rewriteWithoutTraits","url","path","traitssArr","split","traits","reduce","acc","elem","key","value","endsWith","substring","expandTraits","cmp","Object","keys","sort","map","join","rewriteWithTraits","generateAllPaths","paths","Array","fill","_","idx","getMiddlewareResponse","opts","newCookies","cookies","push","pathname","getActiveVariation","splits","getActiveVariationSplits","pageUrl","getKnownValue","undefined","updateKnownValue","getRandomValue"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const getSeededRandomFunction: (strSeed: string) => () => number;
@@ -1,25 +1,25 @@
1
- import { FetcherOptions, Split } from '@plasmicapp/loader-fetcher';
2
- export declare const DELIMITER = "__pm__";
3
- export declare const rewriteWithoutVariation: (url: string) => {
1
+ import { Split } from '@plasmicapp/loader-fetcher';
2
+ declare type Traits = Record<string, string | number | boolean>;
3
+ export declare const rewriteWithoutTraits: (url: string) => {
4
4
  path: string;
5
- variation: {};
5
+ traits: {};
6
6
  };
7
- export declare const rewriteWithVariation: (url: string, variation: Record<string, string>) => string;
8
- export declare const generateAllPaths: (path: string, splits: Split[]) => string[];
9
- export declare type MiddlewareOptions = Pick<FetcherOptions, 'projects' | 'host' | 'preview'>;
10
- export declare const getActiveSplits: (opts: MiddlewareOptions) => Promise<{
11
- splits: Split[];
12
- paths: string[];
13
- }>;
14
- export declare const getMiddlewareResponse: ({ opts, cookies, traits, url, }: {
15
- opts: MiddlewareOptions;
7
+ export declare const rewriteWithTraits: (path: string, traits: Traits) => string;
8
+ export declare const generateAllPaths: (path: string) => string[];
9
+ export declare const getMiddlewareResponse: (opts: {
10
+ path: string;
11
+ traits: Traits;
16
12
  cookies: Record<string, string>;
17
- traits: Record<string, string>;
18
- url: string;
19
- }) => Promise<{
20
- url: string;
13
+ }) => {
14
+ pathname: string;
21
15
  cookies: {
22
16
  key: string;
23
17
  value: string;
24
18
  }[];
25
- }>;
19
+ };
20
+ export declare const getActiveVariation: (opts: {
21
+ splits: Split[];
22
+ traits: Record<string, string | number | boolean>;
23
+ path: string;
24
+ }) => Record<string, string>;
25
+ export {};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.7",
2
+ "version": "1.0.10",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -53,11 +53,11 @@
53
53
  "typescript": "^4.3.2"
54
54
  },
55
55
  "dependencies": {
56
- "@plasmicapp/loader-fetcher": "1.0.3",
57
- "@plasmicapp/loader-splits": "1.0.6"
56
+ "@plasmicapp/loader-fetcher": "1.0.4",
57
+ "@plasmicapp/loader-splits": "1.0.9"
58
58
  },
59
59
  "publishConfig": {
60
60
  "access": "public"
61
61
  },
62
- "gitHead": "bf8ca88e4d71e07b368eb012bddf69c67532ead7"
62
+ "gitHead": "60d0bc3282e04ff66c3cb78a5137d3a44d5a408d"
63
63
  }