@plasmicapp/loader-edge 1.0.2 → 1.0.5

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.
@@ -21,7 +21,14 @@ const rewriteWithoutVariation = url => {
21
21
  };
22
22
 
23
23
  const expandVariation = variation => {
24
- return Object.keys(variation).map(key => `${DELIMITER}${key}=${variation[key]}`).join('');
24
+ 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;
28
+ };
29
+
30
+ return Object.keys(variation).filter(key => !key.startsWith('ext')) // remove external variations
31
+ .sort(cmp).map(key => `${DELIMITER}${key}=${variation[key]}`).join('');
25
32
  };
26
33
 
27
34
  const rewriteWithVariation = (url, variation) => {
@@ -50,7 +57,7 @@ const generateAllSplitPaths = splits => {
50
57
  };
51
58
 
52
59
  const generateAllPaths = (path, splits) => {
53
- return generateAllSplitPaths(splits).map(meta => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);
60
+ return generateAllSplitPaths(splits.sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0)).map(meta => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);
54
61
  };
55
62
  const getActiveSplits = async opts => {
56
63
  const fetcher = new loaderFetcher.PlasmicModulesFetcher(opts);
@@ -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\nconst 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 return Object.keys(variation)\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(splits).map(\n (meta) => `${path}${path.endsWith('/') ? '' : '/'}${meta}`\n );\n};\n\ntype MiddlewareOptions = Pick<FetcherOptions, 'projects' | 'host' | 'preview'>;\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","Object","keys","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","filter","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/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,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@plasmicapp/loader-fetcher"),t=require("@plasmicapp/loader-splits");const s=e=>Object.keys(e).map(t=>`__pm__${t}=${e[t]}`).join(""),i=(e,t)=>`${e}${e.endsWith("/")?"":"/"}${s(t)}`,r=e=>{if(0===e.length)return[""];const[i,...a]=e,p=r(a),l=["",...i.slices.map(e=>s({[t.getSplitKey(i)]:e.id}))],n=[];for(let e=0;e<l.length;e++)for(let t=0;t<p.length;t++)n.push(l[e]+p[t]);return n},a=async t=>{const s=new e.PlasmicModulesFetcher(t),i=await s.fetchAllData();return{splits:i.activeSplits,paths:i.components.filter(e=>e.isPage&&e.path).map(e=>e.path)}};exports.generateAllPaths=(e,t)=>r(t).map(t=>`${e}${e.endsWith("/")?"":"/"}${t}`),exports.getActiveSplits=a,exports.getMiddlewareResponse=async({opts:e,cookies:s,traits:r,url:p})=>{const{splits:l}=await a(e),n=[],o=t.getActiveVariation({splits:l,traits:r,getKnownValue:e=>s["plasmic:"+e],updateKnownValue:(e,t)=>{n.push({key:"plasmic:"+e,value:t})}});let c=p;return Object.keys(o).length&&(c=i(p,o)),{url:c,cookies:n}},exports.rewriteWithVariation=i,exports.rewriteWithoutVariation=e=>{const[t,...s]=e.split("__pm__");return{path:t,variation:s.reduce((e,t)=>{const[s,i]=t.split("=");return{...e,[s]:i}},{})}};
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}},{})}};
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\nconst 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 return Object.keys(variation)\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(splits).map(\n (meta) => `${path}${path.endsWith('/') ? '' : '/'}${meta}`\n );\n};\n\ntype MiddlewareOptions = Pick<FetcherOptions, 'projects' | 'host' | 'preview'>;\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","map","key","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","filter","comp","isPage","path","meta","cookies","traits","newCookies","getActiveVariation","getKnownValue","updateKnownValue","value","newUrl","variationsArr","split","reduce","acc","elem"],"mappings":"uJAOA,MAiBMA,EAAmBC,GAChBC,OAAOC,KAAKF,GAChBG,IAAKC,YAAuBA,KAAOJ,EAAUI,MAC7CC,KAAK,IAGGC,EAAuB,CAClCC,EACAP,OAEUO,IAAMA,EAAIC,SAAS,KAAO,GAAK,MAAMT,EAAgBC,KAG3DS,EAAyBC,OACP,IAAlBA,EAAOC,aACF,CAAC,UAEHC,KAAaC,GAAQH,EACtBI,EAAYL,EAAsBI,GAClCE,EAAW,CACf,MACIH,EAASI,OAAiCb,IAAKc,GACjDlB,EAAgB,EACbmB,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,GAWII,EAAkBC,MAAAA,UACvBC,EAAU,IAAIC,wBAAsBC,GACpCC,QAAYH,EAAQI,qBAKnB,CACLpB,OALamB,EAAIE,aAMjBX,MALYS,EAAIG,WACfC,OAAQC,GAASA,EAAKC,QAAUD,EAAKE,MACrCjC,IAAK+B,GAASA,EAAKE,iCAdQ,CAACA,EAAc1B,IACtCD,EAAsBC,GAAQP,IAClCkC,MAAYD,IAAOA,EAAK5B,SAAS,KAAO,GAAK,MAAM6B,6DAmBnBZ,OACnCG,KAAAA,EACAU,QAAAA,EACAC,OAAAA,EACAhC,IAAAA,YAOMG,OAAEA,SAAiBc,EAAgBI,GAEnCY,EAA+C,GAE/CxC,EAAYyC,qBAAmB,CACnC/B,OAAAA,EACA6B,OAAAA,EACAG,cAAgBtC,GACPkC,aAAmBlC,GAE5BuC,iBAAkB,CAACvC,EAAKwC,KACtBJ,EAAWjB,KAAK,CAAEnB,eAAgBA,EAAOwC,MAAAA,WAIzCC,EAAStC,SACTN,OAAOC,KAAKF,GAAWW,SACzBkC,EAASvC,EAAqBC,EAAKP,IAG9B,CACLO,IAAKsC,EACLP,QAASE,mEAzG2BjC,UAC/B6B,KAASU,GAAiBvC,EAAIwC,MAHrB,gBAWT,CACLX,KAAAA,EACApC,UATgB8C,EAAcE,OAAO,CAACC,EAAKC,WACpC9C,EAAKwC,GAASM,EAAKH,MAAM,WACzB,IACFE,GACF7C,GAAMwC,IAER"}
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"}
@@ -17,7 +17,14 @@ const rewriteWithoutVariation = url => {
17
17
  };
18
18
 
19
19
  const expandVariation = variation => {
20
- return Object.keys(variation).map(key => `${DELIMITER}${key}=${variation[key]}`).join('');
20
+ 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;
24
+ };
25
+
26
+ return Object.keys(variation).filter(key => !key.startsWith('ext')) // remove external variations
27
+ .sort(cmp).map(key => `${DELIMITER}${key}=${variation[key]}`).join('');
21
28
  };
22
29
 
23
30
  const rewriteWithVariation = (url, variation) => {
@@ -46,7 +53,7 @@ const generateAllSplitPaths = splits => {
46
53
  };
47
54
 
48
55
  const generateAllPaths = (path, splits) => {
49
- return generateAllSplitPaths(splits).map(meta => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);
56
+ return generateAllSplitPaths(splits.sort((a, b) => a.id < b.id ? -1 : a.id > b.id ? 1 : 0)).map(meta => `${path}${path.endsWith('/') ? '' : '/'}${meta}`);
50
57
  };
51
58
  const getActiveSplits = async opts => {
52
59
  const fetcher = new PlasmicModulesFetcher(opts);
@@ -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\nconst 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 return Object.keys(variation)\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(splits).map(\n (meta) => `${path}${path.endsWith('/') ? '' : '/'}${meta}`\n );\n};\n\ntype MiddlewareOptions = Pick<FetcherOptions, 'projects' | 'host' | 'preview'>;\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","Object","keys","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","filter","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/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,11 +1,12 @@
1
1
  import { FetcherOptions, Split } from '@plasmicapp/loader-fetcher';
2
+ export declare const DELIMITER = "__pm__";
2
3
  export declare const rewriteWithoutVariation: (url: string) => {
3
4
  path: string;
4
5
  variation: {};
5
6
  };
6
7
  export declare const rewriteWithVariation: (url: string, variation: Record<string, string>) => string;
7
8
  export declare const generateAllPaths: (path: string, splits: Split[]) => string[];
8
- declare type MiddlewareOptions = Pick<FetcherOptions, 'projects' | 'host' | 'preview'>;
9
+ export declare type MiddlewareOptions = Pick<FetcherOptions, 'projects' | 'host' | 'preview'>;
9
10
  export declare const getActiveSplits: (opts: MiddlewareOptions) => Promise<{
10
11
  splits: Split[];
11
12
  paths: string[];
@@ -22,4 +23,3 @@ export declare const getMiddlewareResponse: ({ opts, cookies, traits, url, }: {
22
23
  value: string;
23
24
  }[];
24
25
  }>;
25
- export {};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.2",
2
+ "version": "1.0.5",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -13,7 +13,8 @@
13
13
  "start": "tsdx watch",
14
14
  "build": "tsdx build --target node",
15
15
  "yalcp": "yalc publish --push",
16
- "test": "tsdx test",
16
+ "test": "tsdx test --passWithNoTests",
17
+ "coverage": "tsdx test --coverage --passWithNoTests",
17
18
  "lint": "tsdx lint",
18
19
  "prepare": "tsdx build --target node",
19
20
  "size": "size-limit",
@@ -53,10 +54,10 @@
53
54
  },
54
55
  "dependencies": {
55
56
  "@plasmicapp/loader-fetcher": "1.0.2",
56
- "@plasmicapp/loader-splits": "1.0.2"
57
+ "@plasmicapp/loader-splits": "1.0.4"
57
58
  },
58
59
  "publishConfig": {
59
60
  "access": "public"
60
61
  },
61
- "gitHead": "67150233c7ade71ce1ff0f9d5a246821740a8e6f"
62
+ "gitHead": "60c681f57913b78054fc33bd29266883799fe2d2"
62
63
  }