@plasmicapp/loader-edge 1.0.69 → 1.0.70

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
@@ -14,6 +14,7 @@ export declare const getActiveVariation: (opts: {
14
14
  splits: Split[];
15
15
  traits: Record<string, string | number | boolean>;
16
16
  path: string;
17
+ enableUnseededExperiments?: boolean;
17
18
  }) => Record<string, string>;
18
19
 
19
20
  export declare const getMiddlewareResponse: (opts: {
package/dist/index.esm.js CHANGED
@@ -102,12 +102,13 @@ var getMiddlewareResponse = (opts) => {
102
102
  };
103
103
  };
104
104
  var getActiveVariation = (opts) => {
105
- const { splits, traits, path } = opts;
105
+ const { splits, traits, path, enableUnseededExperiments } = opts;
106
106
  return getActiveVariationSplits({
107
107
  splits,
108
108
  traits: __spreadValues({
109
109
  pageUrl: path
110
110
  }, traits),
111
+ enableUnseededExperiments,
111
112
  getKnownValue: () => void 0,
112
113
  updateKnownValue: () => null,
113
114
  getRandomValue: (key) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/variation.ts"],
4
- "sourcesContent": ["export { describeVariation } from \"@plasmicapp/loader-splits\";\nexport {\n generateAllPaths,\n generateAllPathsWithTraits,\n getActiveVariation,\n getMiddlewareResponse,\n rewriteWithoutTraits,\n rewriteWithTraits,\n} from \"./variation\";\n", "import type { Split } from \"@plasmicapp/loader-fetcher\";\nimport {\n getActiveVariation as getActiveVariationSplits,\n getSeededRandomFunction,\n} from \"@plasmicapp/loader-splits\";\n\nexport const DELIMITER = \"__pm__\";\nexport const PLASMIC_SEED = \"plasmic_seed\";\nconst DEFAULT_PLASMIC_SEED_RANGE = 16;\n\ntype Traits = Record<string, string | number | boolean>;\n\nconst getSeed = (seedRange: number = DEFAULT_PLASMIC_SEED_RANGE) => {\n return `${Math.floor(Math.random() * seedRange)}`;\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 if (Object.keys(traits).length === 0) {\n return path;\n }\n\n return `${path}${path.endsWith(\"/\") ? \"\" : \"/\"}${expandTraits(traits)}`;\n};\n\nexport const generateAllPaths = (\n path: string,\n seedRange: number = DEFAULT_PLASMIC_SEED_RANGE\n) => {\n return generateAllPathsWithTraits(path, {}, seedRange);\n};\n\n/**\n * Generates all possible paths with the given traits. Should be used to enable fallback false\n */\nexport function generateAllPathsWithTraits(\n path: string,\n traitValues: Record<string, string[]> = {},\n seedRange = DEFAULT_PLASMIC_SEED_RANGE\n) {\n const traitsCombinations = [{}];\n traitsCombinations.push(\n ...Array(seedRange)\n .fill(0)\n .map((_, idx) => ({\n [PLASMIC_SEED]: idx,\n }))\n );\n for (const [trait, possibleValues] of Object.entries(traitValues)) {\n const newCombinations = [];\n for (const traitValue of possibleValues) {\n for (const combination of traitsCombinations) {\n newCombinations.push({\n ...combination,\n [trait]: traitValue,\n });\n }\n }\n traitsCombinations.push(...newCombinations);\n }\n return traitsCombinations.map((traits) => rewriteWithTraits(path, traits));\n}\n\nexport const getMiddlewareResponse = (opts: {\n path: string;\n traits: Traits;\n cookies: Record<string, string>;\n seedRange?: number;\n}) => {\n const newCookies: { key: string; value: string }[] = [];\n\n const seedRange = Number.isInteger(opts.seedRange)\n ? opts.seedRange\n : DEFAULT_PLASMIC_SEED_RANGE;\n const seed = opts.cookies[PLASMIC_SEED] || getSeed(seedRange);\n\n let traits = opts.traits;\n if (seedRange && seedRange > 0) {\n traits = {\n ...traits,\n [PLASMIC_SEED]: seed,\n };\n\n if (!opts.cookies[PLASMIC_SEED]) {\n newCookies.push({\n key: PLASMIC_SEED,\n value: seed,\n });\n }\n }\n return {\n pathname: rewriteWithTraits(opts.path, traits),\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"],
5
- "mappings": "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",
4
+ "sourcesContent": ["export { describeVariation } from \"@plasmicapp/loader-splits\";\nexport {\n generateAllPaths,\n generateAllPathsWithTraits,\n getActiveVariation,\n getMiddlewareResponse,\n rewriteWithoutTraits,\n rewriteWithTraits,\n} from \"./variation\";\n", "import type { Split } from \"@plasmicapp/loader-fetcher\";\nimport {\n getActiveVariation as getActiveVariationSplits,\n getSeededRandomFunction,\n} from \"@plasmicapp/loader-splits\";\n\nexport const DELIMITER = \"__pm__\";\nexport const PLASMIC_SEED = \"plasmic_seed\";\nconst DEFAULT_PLASMIC_SEED_RANGE = 16;\n\ntype Traits = Record<string, string | number | boolean>;\n\nconst getSeed = (seedRange: number = DEFAULT_PLASMIC_SEED_RANGE) => {\n return `${Math.floor(Math.random() * seedRange)}`;\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 if (Object.keys(traits).length === 0) {\n return path;\n }\n\n return `${path}${path.endsWith(\"/\") ? \"\" : \"/\"}${expandTraits(traits)}`;\n};\n\nexport const generateAllPaths = (\n path: string,\n seedRange: number = DEFAULT_PLASMIC_SEED_RANGE\n) => {\n return generateAllPathsWithTraits(path, {}, seedRange);\n};\n\n/**\n * Generates all possible paths with the given traits. Should be used to enable fallback false\n */\nexport function generateAllPathsWithTraits(\n path: string,\n traitValues: Record<string, string[]> = {},\n seedRange = DEFAULT_PLASMIC_SEED_RANGE\n) {\n const traitsCombinations = [{}];\n traitsCombinations.push(\n ...Array(seedRange)\n .fill(0)\n .map((_, idx) => ({\n [PLASMIC_SEED]: idx,\n }))\n );\n for (const [trait, possibleValues] of Object.entries(traitValues)) {\n const newCombinations = [];\n for (const traitValue of possibleValues) {\n for (const combination of traitsCombinations) {\n newCombinations.push({\n ...combination,\n [trait]: traitValue,\n });\n }\n }\n traitsCombinations.push(...newCombinations);\n }\n return traitsCombinations.map((traits) => rewriteWithTraits(path, traits));\n}\n\nexport const getMiddlewareResponse = (opts: {\n path: string;\n traits: Traits;\n cookies: Record<string, string>;\n seedRange?: number;\n}) => {\n const newCookies: { key: string; value: string }[] = [];\n\n const seedRange = Number.isInteger(opts.seedRange)\n ? opts.seedRange\n : DEFAULT_PLASMIC_SEED_RANGE;\n const seed = opts.cookies[PLASMIC_SEED] || getSeed(seedRange);\n\n let traits = opts.traits;\n if (seedRange && seedRange > 0) {\n traits = {\n ...traits,\n [PLASMIC_SEED]: seed,\n };\n\n if (!opts.cookies[PLASMIC_SEED]) {\n newCookies.push({\n key: PLASMIC_SEED,\n value: seed,\n });\n }\n }\n return {\n pathname: rewriteWithTraits(opts.path, traits),\n cookies: newCookies,\n };\n};\n\nexport const getActiveVariation = (opts: {\n splits: Split[];\n traits: Record<string, string | number | boolean>;\n path: string;\n enableUnseededExperiments?: boolean;\n}) => {\n const { splits, traits, path, enableUnseededExperiments } = opts;\n return getActiveVariationSplits({\n splits,\n traits: {\n pageUrl: path,\n ...traits,\n },\n enableUnseededExperiments,\n getKnownValue: () => undefined,\n updateKnownValue: () => null,\n getRandomValue: (key: string) => {\n const rand = getSeededRandomFunction((traits[PLASMIC_SEED] ?? \"\") + key);\n return rand();\n },\n });\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/index.js CHANGED
@@ -126,12 +126,13 @@ var getMiddlewareResponse = (opts) => {
126
126
  };
127
127
  };
128
128
  var getActiveVariation = (opts) => {
129
- const { splits, traits, path } = opts;
129
+ const { splits, traits, path, enableUnseededExperiments } = opts;
130
130
  return (0, import_loader_splits.getActiveVariation)({
131
131
  splits,
132
132
  traits: __spreadValues({
133
133
  pageUrl: path
134
134
  }, traits),
135
+ enableUnseededExperiments,
135
136
  getKnownValue: () => void 0,
136
137
  updateKnownValue: () => null,
137
138
  getRandomValue: (key) => {
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/variation.ts"],
4
- "sourcesContent": ["export { describeVariation } from \"@plasmicapp/loader-splits\";\nexport {\n generateAllPaths,\n generateAllPathsWithTraits,\n getActiveVariation,\n getMiddlewareResponse,\n rewriteWithoutTraits,\n rewriteWithTraits,\n} from \"./variation\";\n", "import type { Split } from \"@plasmicapp/loader-fetcher\";\nimport {\n getActiveVariation as getActiveVariationSplits,\n getSeededRandomFunction,\n} from \"@plasmicapp/loader-splits\";\n\nexport const DELIMITER = \"__pm__\";\nexport const PLASMIC_SEED = \"plasmic_seed\";\nconst DEFAULT_PLASMIC_SEED_RANGE = 16;\n\ntype Traits = Record<string, string | number | boolean>;\n\nconst getSeed = (seedRange: number = DEFAULT_PLASMIC_SEED_RANGE) => {\n return `${Math.floor(Math.random() * seedRange)}`;\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 if (Object.keys(traits).length === 0) {\n return path;\n }\n\n return `${path}${path.endsWith(\"/\") ? \"\" : \"/\"}${expandTraits(traits)}`;\n};\n\nexport const generateAllPaths = (\n path: string,\n seedRange: number = DEFAULT_PLASMIC_SEED_RANGE\n) => {\n return generateAllPathsWithTraits(path, {}, seedRange);\n};\n\n/**\n * Generates all possible paths with the given traits. Should be used to enable fallback false\n */\nexport function generateAllPathsWithTraits(\n path: string,\n traitValues: Record<string, string[]> = {},\n seedRange = DEFAULT_PLASMIC_SEED_RANGE\n) {\n const traitsCombinations = [{}];\n traitsCombinations.push(\n ...Array(seedRange)\n .fill(0)\n .map((_, idx) => ({\n [PLASMIC_SEED]: idx,\n }))\n );\n for (const [trait, possibleValues] of Object.entries(traitValues)) {\n const newCombinations = [];\n for (const traitValue of possibleValues) {\n for (const combination of traitsCombinations) {\n newCombinations.push({\n ...combination,\n [trait]: traitValue,\n });\n }\n }\n traitsCombinations.push(...newCombinations);\n }\n return traitsCombinations.map((traits) => rewriteWithTraits(path, traits));\n}\n\nexport const getMiddlewareResponse = (opts: {\n path: string;\n traits: Traits;\n cookies: Record<string, string>;\n seedRange?: number;\n}) => {\n const newCookies: { key: string; value: string }[] = [];\n\n const seedRange = Number.isInteger(opts.seedRange)\n ? opts.seedRange\n : DEFAULT_PLASMIC_SEED_RANGE;\n const seed = opts.cookies[PLASMIC_SEED] || getSeed(seedRange);\n\n let traits = opts.traits;\n if (seedRange && seedRange > 0) {\n traits = {\n ...traits,\n [PLASMIC_SEED]: seed,\n };\n\n if (!opts.cookies[PLASMIC_SEED]) {\n newCookies.push({\n key: PLASMIC_SEED,\n value: seed,\n });\n }\n }\n return {\n pathname: rewriteWithTraits(opts.path, traits),\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"],
5
- "mappings": "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",
4
+ "sourcesContent": ["export { describeVariation } from \"@plasmicapp/loader-splits\";\nexport {\n generateAllPaths,\n generateAllPathsWithTraits,\n getActiveVariation,\n getMiddlewareResponse,\n rewriteWithoutTraits,\n rewriteWithTraits,\n} from \"./variation\";\n", "import type { Split } from \"@plasmicapp/loader-fetcher\";\nimport {\n getActiveVariation as getActiveVariationSplits,\n getSeededRandomFunction,\n} from \"@plasmicapp/loader-splits\";\n\nexport const DELIMITER = \"__pm__\";\nexport const PLASMIC_SEED = \"plasmic_seed\";\nconst DEFAULT_PLASMIC_SEED_RANGE = 16;\n\ntype Traits = Record<string, string | number | boolean>;\n\nconst getSeed = (seedRange: number = DEFAULT_PLASMIC_SEED_RANGE) => {\n return `${Math.floor(Math.random() * seedRange)}`;\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 if (Object.keys(traits).length === 0) {\n return path;\n }\n\n return `${path}${path.endsWith(\"/\") ? \"\" : \"/\"}${expandTraits(traits)}`;\n};\n\nexport const generateAllPaths = (\n path: string,\n seedRange: number = DEFAULT_PLASMIC_SEED_RANGE\n) => {\n return generateAllPathsWithTraits(path, {}, seedRange);\n};\n\n/**\n * Generates all possible paths with the given traits. Should be used to enable fallback false\n */\nexport function generateAllPathsWithTraits(\n path: string,\n traitValues: Record<string, string[]> = {},\n seedRange = DEFAULT_PLASMIC_SEED_RANGE\n) {\n const traitsCombinations = [{}];\n traitsCombinations.push(\n ...Array(seedRange)\n .fill(0)\n .map((_, idx) => ({\n [PLASMIC_SEED]: idx,\n }))\n );\n for (const [trait, possibleValues] of Object.entries(traitValues)) {\n const newCombinations = [];\n for (const traitValue of possibleValues) {\n for (const combination of traitsCombinations) {\n newCombinations.push({\n ...combination,\n [trait]: traitValue,\n });\n }\n }\n traitsCombinations.push(...newCombinations);\n }\n return traitsCombinations.map((traits) => rewriteWithTraits(path, traits));\n}\n\nexport const getMiddlewareResponse = (opts: {\n path: string;\n traits: Traits;\n cookies: Record<string, string>;\n seedRange?: number;\n}) => {\n const newCookies: { key: string; value: string }[] = [];\n\n const seedRange = Number.isInteger(opts.seedRange)\n ? opts.seedRange\n : DEFAULT_PLASMIC_SEED_RANGE;\n const seed = opts.cookies[PLASMIC_SEED] || getSeed(seedRange);\n\n let traits = opts.traits;\n if (seedRange && seedRange > 0) {\n traits = {\n ...traits,\n [PLASMIC_SEED]: seed,\n };\n\n if (!opts.cookies[PLASMIC_SEED]) {\n newCookies.push({\n key: PLASMIC_SEED,\n value: seed,\n });\n }\n }\n return {\n pathname: rewriteWithTraits(opts.path, traits),\n cookies: newCookies,\n };\n};\n\nexport const getActiveVariation = (opts: {\n splits: Split[];\n traits: Record<string, string | number | boolean>;\n path: string;\n enableUnseededExperiments?: boolean;\n}) => {\n const { splits, traits, path, enableUnseededExperiments } = opts;\n return getActiveVariationSplits({\n splits,\n traits: {\n pageUrl: path,\n ...traits,\n },\n enableUnseededExperiments,\n getKnownValue: () => undefined,\n updateKnownValue: () => null,\n getRandomValue: (key: string) => {\n const rand = getSeededRandomFunction((traits[PLASMIC_SEED] ?? \"\") + key);\n return rand();\n },\n });\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_loader_splits", "getActiveVariationSplits"]
7
7
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.69",
2
+ "version": "1.0.70",
3
3
  "license": "MIT",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.js",
@@ -47,5 +47,5 @@
47
47
  "publishConfig": {
48
48
  "access": "public"
49
49
  },
50
- "gitHead": "e98a63a4ed9c25c0de979d20194d889432f8b449"
50
+ "gitHead": "37a24687d1fa3163a96582525f54cc0ffd849792"
51
51
  }