@plasmicapp/loader-edge 1.0.42 → 1.0.44
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 +1 -1
- package/dist/index.esm.js +46 -65
- package/dist/index.esm.js.map +3 -3
- package/dist/index.js +43 -65
- package/dist/index.js.map +3 -3
- package/dist/variation.d.ts +9 -2
- package/package.json +6 -4
- package/dist/random.d.ts +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { generateAllPaths, getActiveVariation, getMiddlewareResponse, rewriteWithoutTraits, rewriteWithTraits, } from
|
|
1
|
+
export { generateAllPaths, generateAllPathsWithTraits, getActiveVariation, getMiddlewareResponse, rewriteWithoutTraits, rewriteWithTraits, } from "./variation";
|
package/dist/index.esm.js
CHANGED
|
@@ -19,57 +19,15 @@ var __spreadValues = (a, b) => {
|
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
20
|
|
|
21
21
|
// src/variation.ts
|
|
22
|
-
import {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
function cyrb128(str) {
|
|
27
|
-
let h1 = 1779033703, h2 = 3144134277, h3 = 1013904242, h4 = 2773480762;
|
|
28
|
-
for (let i = 0, k; i < str.length; i++) {
|
|
29
|
-
k = str.charCodeAt(i);
|
|
30
|
-
h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
|
|
31
|
-
h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
|
|
32
|
-
h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
|
|
33
|
-
h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
|
|
34
|
-
}
|
|
35
|
-
h1 = Math.imul(h3 ^ h1 >>> 18, 597399067);
|
|
36
|
-
h2 = Math.imul(h4 ^ h2 >>> 22, 2869860233);
|
|
37
|
-
h3 = Math.imul(h1 ^ h3 >>> 17, 951274213);
|
|
38
|
-
h4 = Math.imul(h2 ^ h4 >>> 19, 2716044179);
|
|
39
|
-
return [
|
|
40
|
-
(h1 ^ h2 ^ h3 ^ h4) >>> 0,
|
|
41
|
-
(h2 ^ h1) >>> 0,
|
|
42
|
-
(h3 ^ h1) >>> 0,
|
|
43
|
-
(h4 ^ h1) >>> 0
|
|
44
|
-
];
|
|
45
|
-
}
|
|
46
|
-
function sfc32(a, b, c, d) {
|
|
47
|
-
return function() {
|
|
48
|
-
a >>>= 0;
|
|
49
|
-
b >>>= 0;
|
|
50
|
-
c >>>= 0;
|
|
51
|
-
d >>>= 0;
|
|
52
|
-
let t = a + b | 0;
|
|
53
|
-
a = b ^ b >>> 9;
|
|
54
|
-
b = c + (c << 3) | 0;
|
|
55
|
-
c = c << 21 | c >>> 11;
|
|
56
|
-
d = d + 1 | 0;
|
|
57
|
-
t = t + d | 0;
|
|
58
|
-
c = c + t | 0;
|
|
59
|
-
return (t >>> 0) / 4294967296;
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
const seed = cyrb128(strSeed);
|
|
63
|
-
const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);
|
|
64
|
-
return rand;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
// src/variation.ts
|
|
22
|
+
import {
|
|
23
|
+
getActiveVariation as getActiveVariationSplits,
|
|
24
|
+
getSeededRandomFunction
|
|
25
|
+
} from "@plasmicapp/loader-splits";
|
|
68
26
|
var DELIMITER = "__pm__";
|
|
69
27
|
var PLASMIC_SEED = "plasmic_seed";
|
|
70
|
-
var
|
|
71
|
-
var getSeed = () => {
|
|
72
|
-
return `${Math.floor(Math.random() *
|
|
28
|
+
var DEFAULT_PLASMIC_SEED_RANGE = 16;
|
|
29
|
+
var getSeed = (seedRange = DEFAULT_PLASMIC_SEED_RANGE) => {
|
|
30
|
+
return `${Math.floor(Math.random() * seedRange)}`;
|
|
73
31
|
};
|
|
74
32
|
var rewriteWithoutTraits = (url) => {
|
|
75
33
|
const [path, ...traitssArr] = url.split(DELIMITER);
|
|
@@ -91,30 +49,52 @@ var expandTraits = (traits) => {
|
|
|
91
49
|
return Object.keys(traits).sort(cmp).map((key) => `${DELIMITER}${key}=${traits[key]}`).join("");
|
|
92
50
|
};
|
|
93
51
|
var rewriteWithTraits = (path, traits) => {
|
|
52
|
+
if (Object.keys(traits).length === 0) {
|
|
53
|
+
return path;
|
|
54
|
+
}
|
|
94
55
|
return `${path}${path.endsWith("/") ? "" : "/"}${expandTraits(traits)}`;
|
|
95
56
|
};
|
|
96
|
-
var generateAllPaths = (path) => {
|
|
97
|
-
|
|
98
|
-
path,
|
|
99
|
-
...Array(SEED_RANGE).fill(0).map(
|
|
100
|
-
(_, idx) => `${path}${path.endsWith("/") ? "" : "/"}__pm__${PLASMIC_SEED}=${idx}`
|
|
101
|
-
)
|
|
102
|
-
];
|
|
103
|
-
return paths;
|
|
57
|
+
var generateAllPaths = (path, seedRange = DEFAULT_PLASMIC_SEED_RANGE) => {
|
|
58
|
+
return generateAllPathsWithTraits(path, seedRange);
|
|
104
59
|
};
|
|
60
|
+
function generateAllPathsWithTraits(path, seedRange = DEFAULT_PLASMIC_SEED_RANGE, traitValues = {}) {
|
|
61
|
+
const traitsCombinations = [{}];
|
|
62
|
+
traitsCombinations.push(
|
|
63
|
+
...Array(seedRange).fill(0).map((_, idx) => ({
|
|
64
|
+
[PLASMIC_SEED]: idx
|
|
65
|
+
}))
|
|
66
|
+
);
|
|
67
|
+
for (const [trait, possibleValues] of Object.entries(traitValues)) {
|
|
68
|
+
const newCombinations = [];
|
|
69
|
+
for (const traitValue of possibleValues) {
|
|
70
|
+
for (const combination of traitsCombinations) {
|
|
71
|
+
newCombinations.push(__spreadProps(__spreadValues({}, combination), {
|
|
72
|
+
[trait]: traitValue
|
|
73
|
+
}));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
traitsCombinations.push(...newCombinations);
|
|
77
|
+
}
|
|
78
|
+
return traitsCombinations.map((traits) => rewriteWithTraits(path, traits));
|
|
79
|
+
}
|
|
105
80
|
var getMiddlewareResponse = (opts) => {
|
|
106
81
|
const newCookies = [];
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
82
|
+
const seedRange = Number.isInteger(opts.seedRange) ? opts.seedRange : DEFAULT_PLASMIC_SEED_RANGE;
|
|
83
|
+
const seed = opts.cookies[PLASMIC_SEED] || getSeed(seedRange);
|
|
84
|
+
let traits = opts.traits;
|
|
85
|
+
if (seedRange && seedRange > 0) {
|
|
86
|
+
traits = __spreadProps(__spreadValues({}, traits), {
|
|
87
|
+
[PLASMIC_SEED]: seed
|
|
112
88
|
});
|
|
89
|
+
if (!opts.cookies[PLASMIC_SEED]) {
|
|
90
|
+
newCookies.push({
|
|
91
|
+
key: PLASMIC_SEED,
|
|
92
|
+
value: seed
|
|
93
|
+
});
|
|
94
|
+
}
|
|
113
95
|
}
|
|
114
96
|
return {
|
|
115
|
-
pathname: rewriteWithTraits(opts.path,
|
|
116
|
-
[PLASMIC_SEED]: seed
|
|
117
|
-
}, opts.traits)),
|
|
97
|
+
pathname: rewriteWithTraits(opts.path, traits),
|
|
118
98
|
cookies: newCookies
|
|
119
99
|
};
|
|
120
100
|
};
|
|
@@ -136,6 +116,7 @@ var getActiveVariation = (opts) => {
|
|
|
136
116
|
};
|
|
137
117
|
export {
|
|
138
118
|
generateAllPaths,
|
|
119
|
+
generateAllPathsWithTraits,
|
|
139
120
|
getActiveVariation,
|
|
140
121
|
getMiddlewareResponse,
|
|
141
122
|
rewriteWithTraits,
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/variation.ts"
|
|
4
|
-
"sourcesContent": ["import { Split } from
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;AACA
|
|
3
|
+
"sources": ["../src/variation.ts"],
|
|
4
|
+
"sourcesContent": ["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 seedRange = DEFAULT_PLASMIC_SEED_RANGE,\n traitValues: Record<string, string[]> = {}\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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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/index.js
CHANGED
|
@@ -38,6 +38,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
38
38
|
var src_exports = {};
|
|
39
39
|
__export(src_exports, {
|
|
40
40
|
generateAllPaths: () => generateAllPaths,
|
|
41
|
+
generateAllPathsWithTraits: () => generateAllPathsWithTraits,
|
|
41
42
|
getActiveVariation: () => getActiveVariation,
|
|
42
43
|
getMiddlewareResponse: () => getMiddlewareResponse,
|
|
43
44
|
rewriteWithTraits: () => rewriteWithTraits,
|
|
@@ -47,56 +48,11 @@ module.exports = __toCommonJS(src_exports);
|
|
|
47
48
|
|
|
48
49
|
// src/variation.ts
|
|
49
50
|
var import_loader_splits = require("@plasmicapp/loader-splits");
|
|
50
|
-
|
|
51
|
-
// src/random.ts
|
|
52
|
-
var getSeededRandomFunction = (strSeed) => {
|
|
53
|
-
function cyrb128(str) {
|
|
54
|
-
let h1 = 1779033703, h2 = 3144134277, h3 = 1013904242, h4 = 2773480762;
|
|
55
|
-
for (let i = 0, k; i < str.length; i++) {
|
|
56
|
-
k = str.charCodeAt(i);
|
|
57
|
-
h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
|
|
58
|
-
h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
|
|
59
|
-
h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
|
|
60
|
-
h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
|
|
61
|
-
}
|
|
62
|
-
h1 = Math.imul(h3 ^ h1 >>> 18, 597399067);
|
|
63
|
-
h2 = Math.imul(h4 ^ h2 >>> 22, 2869860233);
|
|
64
|
-
h3 = Math.imul(h1 ^ h3 >>> 17, 951274213);
|
|
65
|
-
h4 = Math.imul(h2 ^ h4 >>> 19, 2716044179);
|
|
66
|
-
return [
|
|
67
|
-
(h1 ^ h2 ^ h3 ^ h4) >>> 0,
|
|
68
|
-
(h2 ^ h1) >>> 0,
|
|
69
|
-
(h3 ^ h1) >>> 0,
|
|
70
|
-
(h4 ^ h1) >>> 0
|
|
71
|
-
];
|
|
72
|
-
}
|
|
73
|
-
function sfc32(a, b, c, d) {
|
|
74
|
-
return function() {
|
|
75
|
-
a >>>= 0;
|
|
76
|
-
b >>>= 0;
|
|
77
|
-
c >>>= 0;
|
|
78
|
-
d >>>= 0;
|
|
79
|
-
let t = a + b | 0;
|
|
80
|
-
a = b ^ b >>> 9;
|
|
81
|
-
b = c + (c << 3) | 0;
|
|
82
|
-
c = c << 21 | c >>> 11;
|
|
83
|
-
d = d + 1 | 0;
|
|
84
|
-
t = t + d | 0;
|
|
85
|
-
c = c + t | 0;
|
|
86
|
-
return (t >>> 0) / 4294967296;
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
const seed = cyrb128(strSeed);
|
|
90
|
-
const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);
|
|
91
|
-
return rand;
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
// src/variation.ts
|
|
95
51
|
var DELIMITER = "__pm__";
|
|
96
52
|
var PLASMIC_SEED = "plasmic_seed";
|
|
97
|
-
var
|
|
98
|
-
var getSeed = () => {
|
|
99
|
-
return `${Math.floor(Math.random() *
|
|
53
|
+
var DEFAULT_PLASMIC_SEED_RANGE = 16;
|
|
54
|
+
var getSeed = (seedRange = DEFAULT_PLASMIC_SEED_RANGE) => {
|
|
55
|
+
return `${Math.floor(Math.random() * seedRange)}`;
|
|
100
56
|
};
|
|
101
57
|
var rewriteWithoutTraits = (url) => {
|
|
102
58
|
const [path, ...traitssArr] = url.split(DELIMITER);
|
|
@@ -118,30 +74,52 @@ var expandTraits = (traits) => {
|
|
|
118
74
|
return Object.keys(traits).sort(cmp).map((key) => `${DELIMITER}${key}=${traits[key]}`).join("");
|
|
119
75
|
};
|
|
120
76
|
var rewriteWithTraits = (path, traits) => {
|
|
77
|
+
if (Object.keys(traits).length === 0) {
|
|
78
|
+
return path;
|
|
79
|
+
}
|
|
121
80
|
return `${path}${path.endsWith("/") ? "" : "/"}${expandTraits(traits)}`;
|
|
122
81
|
};
|
|
123
|
-
var generateAllPaths = (path) => {
|
|
124
|
-
|
|
125
|
-
path,
|
|
126
|
-
...Array(SEED_RANGE).fill(0).map(
|
|
127
|
-
(_, idx) => `${path}${path.endsWith("/") ? "" : "/"}__pm__${PLASMIC_SEED}=${idx}`
|
|
128
|
-
)
|
|
129
|
-
];
|
|
130
|
-
return paths;
|
|
82
|
+
var generateAllPaths = (path, seedRange = DEFAULT_PLASMIC_SEED_RANGE) => {
|
|
83
|
+
return generateAllPathsWithTraits(path, seedRange);
|
|
131
84
|
};
|
|
85
|
+
function generateAllPathsWithTraits(path, seedRange = DEFAULT_PLASMIC_SEED_RANGE, traitValues = {}) {
|
|
86
|
+
const traitsCombinations = [{}];
|
|
87
|
+
traitsCombinations.push(
|
|
88
|
+
...Array(seedRange).fill(0).map((_, idx) => ({
|
|
89
|
+
[PLASMIC_SEED]: idx
|
|
90
|
+
}))
|
|
91
|
+
);
|
|
92
|
+
for (const [trait, possibleValues] of Object.entries(traitValues)) {
|
|
93
|
+
const newCombinations = [];
|
|
94
|
+
for (const traitValue of possibleValues) {
|
|
95
|
+
for (const combination of traitsCombinations) {
|
|
96
|
+
newCombinations.push(__spreadProps(__spreadValues({}, combination), {
|
|
97
|
+
[trait]: traitValue
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
traitsCombinations.push(...newCombinations);
|
|
102
|
+
}
|
|
103
|
+
return traitsCombinations.map((traits) => rewriteWithTraits(path, traits));
|
|
104
|
+
}
|
|
132
105
|
var getMiddlewareResponse = (opts) => {
|
|
133
106
|
const newCookies = [];
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
107
|
+
const seedRange = Number.isInteger(opts.seedRange) ? opts.seedRange : DEFAULT_PLASMIC_SEED_RANGE;
|
|
108
|
+
const seed = opts.cookies[PLASMIC_SEED] || getSeed(seedRange);
|
|
109
|
+
let traits = opts.traits;
|
|
110
|
+
if (seedRange && seedRange > 0) {
|
|
111
|
+
traits = __spreadProps(__spreadValues({}, traits), {
|
|
112
|
+
[PLASMIC_SEED]: seed
|
|
139
113
|
});
|
|
114
|
+
if (!opts.cookies[PLASMIC_SEED]) {
|
|
115
|
+
newCookies.push({
|
|
116
|
+
key: PLASMIC_SEED,
|
|
117
|
+
value: seed
|
|
118
|
+
});
|
|
119
|
+
}
|
|
140
120
|
}
|
|
141
121
|
return {
|
|
142
|
-
pathname: rewriteWithTraits(opts.path,
|
|
143
|
-
[PLASMIC_SEED]: seed
|
|
144
|
-
}, opts.traits)),
|
|
122
|
+
pathname: rewriteWithTraits(opts.path, traits),
|
|
145
123
|
cookies: newCookies
|
|
146
124
|
};
|
|
147
125
|
};
|
|
@@ -156,7 +134,7 @@ var getActiveVariation = (opts) => {
|
|
|
156
134
|
updateKnownValue: () => null,
|
|
157
135
|
getRandomValue: (key) => {
|
|
158
136
|
var _a;
|
|
159
|
-
const rand = getSeededRandomFunction(((_a = traits[PLASMIC_SEED]) != null ? _a : "") + key);
|
|
137
|
+
const rand = (0, import_loader_splits.getSeededRandomFunction)(((_a = traits[PLASMIC_SEED]) != null ? _a : "") + key);
|
|
160
138
|
return rand();
|
|
161
139
|
}
|
|
162
140
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/variation.ts"
|
|
4
|
-
"sourcesContent": ["export {\n generateAllPaths,\n getActiveVariation,\n getMiddlewareResponse,\n rewriteWithoutTraits,\n rewriteWithTraits,\n} from
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/variation.ts"],
|
|
4
|
+
"sourcesContent": ["export {\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 seedRange = DEFAULT_PLASMIC_SEED_RANGE,\n traitValues: Record<string, string[]> = {}\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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",
|
|
6
6
|
"names": ["getActiveVariationSplits"]
|
|
7
7
|
}
|
package/dist/variation.d.ts
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
|
-
import { Split } from
|
|
1
|
+
import type { Split } from "@plasmicapp/loader-fetcher";
|
|
2
|
+
export declare const DELIMITER = "__pm__";
|
|
3
|
+
export declare const PLASMIC_SEED = "plasmic_seed";
|
|
2
4
|
type Traits = Record<string, string | number | boolean>;
|
|
3
5
|
export declare const rewriteWithoutTraits: (url: string) => {
|
|
4
6
|
path: string;
|
|
5
7
|
traits: {};
|
|
6
8
|
};
|
|
7
9
|
export declare const rewriteWithTraits: (path: string, traits: Traits) => string;
|
|
8
|
-
export declare const generateAllPaths: (path: string) => string[];
|
|
10
|
+
export declare const generateAllPaths: (path: string, seedRange?: number) => string[];
|
|
11
|
+
/**
|
|
12
|
+
* Generates all possible paths with the given traits. Should be used to enable fallback false
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateAllPathsWithTraits(path: string, seedRange?: number, traitValues?: Record<string, string[]>): string[];
|
|
9
15
|
export declare const getMiddlewareResponse: (opts: {
|
|
10
16
|
path: string;
|
|
11
17
|
traits: Traits;
|
|
12
18
|
cookies: Record<string, string>;
|
|
19
|
+
seedRange?: number;
|
|
13
20
|
}) => {
|
|
14
21
|
pathname: string;
|
|
15
22
|
cookies: {
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.44",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"types": "./dist/index.d.ts",
|
|
5
5
|
"main": "./dist/index.js",
|
|
@@ -38,11 +38,13 @@
|
|
|
38
38
|
}
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@plasmicapp/loader-
|
|
42
|
-
|
|
41
|
+
"@plasmicapp/loader-splits": "1.0.43"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@plasmicapp/loader-fetcher": "1.0.37"
|
|
43
45
|
},
|
|
44
46
|
"publishConfig": {
|
|
45
47
|
"access": "public"
|
|
46
48
|
},
|
|
47
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "f9ffe94b022627f4677d77f8d953e27a4076dc39"
|
|
48
50
|
}
|
package/dist/random.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const getSeededRandomFunction: (strSeed: string) => () => number;
|