@plasmicapp/loader-edge 1.0.29 → 1.0.30
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.js +162 -6
- package/dist/index.js.map +7 -0
- package/dist/random.d.ts +1 -1
- package/dist/variation.d.ts +25 -25
- package/package.json +17 -33
- package/dist/loader-edge.cjs.development.js +0 -125
- package/dist/loader-edge.cjs.development.js.map +0 -1
- package/dist/loader-edge.cjs.production.min.js +0 -2
- package/dist/loader-edge.cjs.production.min.js.map +0 -1
- package/dist/loader-edge.esm.js +0 -117
- package/dist/loader-edge.esm.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { generateAllPaths, getActiveVariation, getMiddlewareResponse, rewriteWithoutTraits, rewriteWithTraits, } from './variation';
|
|
1
|
+
export { generateAllPaths, getActiveVariation, getMiddlewareResponse, rewriteWithoutTraits, rewriteWithTraits, } from './variation';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __defProps = Object.defineProperties;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
|
+
var __export = (target, all) => {
|
|
24
|
+
for (var name in all)
|
|
25
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
26
|
+
};
|
|
27
|
+
var __copyProps = (to, from, except, desc) => {
|
|
28
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
29
|
+
for (let key of __getOwnPropNames(from))
|
|
30
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
31
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
32
|
+
}
|
|
33
|
+
return to;
|
|
34
|
+
};
|
|
35
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
1
36
|
|
|
2
|
-
|
|
37
|
+
// src/index.ts
|
|
38
|
+
var src_exports = {};
|
|
39
|
+
__export(src_exports, {
|
|
40
|
+
generateAllPaths: () => generateAllPaths,
|
|
41
|
+
getActiveVariation: () => getActiveVariation,
|
|
42
|
+
getMiddlewareResponse: () => getMiddlewareResponse,
|
|
43
|
+
rewriteWithTraits: () => rewriteWithTraits,
|
|
44
|
+
rewriteWithoutTraits: () => rewriteWithoutTraits
|
|
45
|
+
});
|
|
46
|
+
module.exports = __toCommonJS(src_exports);
|
|
3
47
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
48
|
+
// src/variation.ts
|
|
49
|
+
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
|
+
var DELIMITER = "__pm__";
|
|
96
|
+
var PLASMIC_SEED = "plasmic_seed";
|
|
97
|
+
var SEED_RANGE = 16;
|
|
98
|
+
var getSeed = () => {
|
|
99
|
+
return `${Math.floor(Math.random() * SEED_RANGE)}`;
|
|
100
|
+
};
|
|
101
|
+
var rewriteWithoutTraits = (url) => {
|
|
102
|
+
const [path, ...traitssArr] = url.split(DELIMITER);
|
|
103
|
+
const traits = traitssArr.reduce((acc, elem) => {
|
|
104
|
+
const [key, value] = elem.split("=");
|
|
105
|
+
return __spreadProps(__spreadValues({}, acc), {
|
|
106
|
+
[key]: value
|
|
107
|
+
});
|
|
108
|
+
}, {});
|
|
109
|
+
return {
|
|
110
|
+
path: path === "/" ? path : path.endsWith("/") ? path.substring(0, path.length - 1) : path,
|
|
111
|
+
traits
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
var expandTraits = (traits) => {
|
|
115
|
+
const cmp = (a, b) => {
|
|
116
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
117
|
+
};
|
|
118
|
+
return Object.keys(traits).sort(cmp).map((key) => `${DELIMITER}${key}=${traits[key]}`).join("");
|
|
119
|
+
};
|
|
120
|
+
var rewriteWithTraits = (path, traits) => {
|
|
121
|
+
return `${path}${path.endsWith("/") ? "" : "/"}${expandTraits(traits)}`;
|
|
122
|
+
};
|
|
123
|
+
var generateAllPaths = (path) => {
|
|
124
|
+
const paths = [
|
|
125
|
+
path,
|
|
126
|
+
...Array(SEED_RANGE).fill(0).map(
|
|
127
|
+
(_, idx) => `${path}${path.endsWith("/") ? "" : "/"}__pm__${PLASMIC_SEED}=${idx}`
|
|
128
|
+
)
|
|
129
|
+
];
|
|
130
|
+
return paths;
|
|
131
|
+
};
|
|
132
|
+
var getMiddlewareResponse = (opts) => {
|
|
133
|
+
const newCookies = [];
|
|
134
|
+
const seed = opts.cookies[PLASMIC_SEED] || getSeed();
|
|
135
|
+
if (!opts.cookies[PLASMIC_SEED]) {
|
|
136
|
+
newCookies.push({
|
|
137
|
+
key: PLASMIC_SEED,
|
|
138
|
+
value: seed
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
pathname: rewriteWithTraits(opts.path, __spreadValues({
|
|
143
|
+
[PLASMIC_SEED]: seed
|
|
144
|
+
}, opts.traits)),
|
|
145
|
+
cookies: newCookies
|
|
146
|
+
};
|
|
147
|
+
};
|
|
148
|
+
var getActiveVariation = (opts) => {
|
|
149
|
+
const { splits, traits, path } = opts;
|
|
150
|
+
return (0, import_loader_splits.getActiveVariation)({
|
|
151
|
+
splits,
|
|
152
|
+
traits: __spreadValues({
|
|
153
|
+
pageUrl: path
|
|
154
|
+
}, traits),
|
|
155
|
+
getKnownValue: () => void 0,
|
|
156
|
+
updateKnownValue: () => null,
|
|
157
|
+
getRandomValue: (key) => {
|
|
158
|
+
var _a;
|
|
159
|
+
const rand = getSeededRandomFunction(((_a = traits[PLASMIC_SEED]) != null ? _a : "") + key);
|
|
160
|
+
return rand();
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/variation.ts", "../src/random.ts"],
|
|
4
|
+
"sourcesContent": ["export {\n generateAllPaths,\n getActiveVariation,\n getMiddlewareResponse,\n rewriteWithoutTraits,\n rewriteWithTraits,\n} from './variation';\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", "export const getSeededRandomFunction = (strSeed: string) => {\n // https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript\n function cyrb128(str: string) {\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: number, b: number, c: number, d: number) {\n return function () {\n a >>>= 0;\n b >>>= 0;\n c >>>= 0;\n d >>>= 0;\n let 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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["getActiveVariationSplits"]
|
|
7
|
+
}
|
package/dist/random.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getSeededRandomFunction: (strSeed: string) => () => number;
|
|
1
|
+
export declare const getSeededRandomFunction: (strSeed: string) => () => number;
|
package/dist/variation.d.ts
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { Split } from '@plasmicapp/loader-fetcher';
|
|
2
|
-
|
|
3
|
-
export declare const rewriteWithoutTraits: (url: string) => {
|
|
4
|
-
path: string;
|
|
5
|
-
traits: {};
|
|
6
|
-
};
|
|
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;
|
|
12
|
-
cookies: Record<string, string>;
|
|
13
|
-
}) => {
|
|
14
|
-
pathname: string;
|
|
15
|
-
cookies: {
|
|
16
|
-
key: string;
|
|
17
|
-
value: string;
|
|
18
|
-
}[];
|
|
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 {};
|
|
1
|
+
import { Split } from '@plasmicapp/loader-fetcher';
|
|
2
|
+
type Traits = Record<string, string | number | boolean>;
|
|
3
|
+
export declare const rewriteWithoutTraits: (url: string) => {
|
|
4
|
+
path: string;
|
|
5
|
+
traits: {};
|
|
6
|
+
};
|
|
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;
|
|
12
|
+
cookies: Record<string, string>;
|
|
13
|
+
}) => {
|
|
14
|
+
pathname: string;
|
|
15
|
+
cookies: {
|
|
16
|
+
key: string;
|
|
17
|
+
value: string;
|
|
18
|
+
}[];
|
|
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,8 +1,14 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.0.
|
|
2
|
+
"version": "1.0.30",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"
|
|
5
|
-
"
|
|
4
|
+
"types": "./dist/index.d.ts",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": {
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"default": "./dist/index.js"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
6
12
|
"files": [
|
|
7
13
|
"dist"
|
|
8
14
|
],
|
|
@@ -10,53 +16,31 @@
|
|
|
10
16
|
"node": ">=10"
|
|
11
17
|
},
|
|
12
18
|
"scripts": {
|
|
13
|
-
"
|
|
14
|
-
"build": "
|
|
19
|
+
"build": "yarn build:types && yarn build:index",
|
|
20
|
+
"build:types": "yarn tsc",
|
|
21
|
+
"build:index": "node ../../build.mjs ./src/index.ts",
|
|
15
22
|
"yalcp": "yalc publish --push",
|
|
16
23
|
"test": "yarn --cwd=../.. test --passWithNoTests",
|
|
17
24
|
"coverage": "yarn --cwd=../.. test --coverage --passWithNoTests",
|
|
18
|
-
"lint": "
|
|
25
|
+
"lint": "eslint",
|
|
19
26
|
"prepare": "if-env PREPARE_NO_BUILD=true || yarn build",
|
|
20
27
|
"size": "size-limit",
|
|
21
28
|
"analyze": "size-limit --why"
|
|
22
29
|
},
|
|
23
|
-
"husky": {
|
|
24
|
-
"hooks": {
|
|
25
|
-
"pre-commit": "tsdx lint"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"prettier": {
|
|
29
|
-
"printWidth": 80,
|
|
30
|
-
"semi": true,
|
|
31
|
-
"singleQuote": true,
|
|
32
|
-
"trailingComma": "es5"
|
|
33
|
-
},
|
|
34
30
|
"name": "@plasmicapp/loader-edge",
|
|
35
31
|
"author": "Chung Wu",
|
|
36
|
-
"module": "dist/loader-edge.esm.js",
|
|
37
32
|
"size-limit": [
|
|
38
33
|
{
|
|
39
|
-
"path": "dist/
|
|
40
|
-
"limit": "10 KB"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"path": "dist/loader-edge.esm.js",
|
|
34
|
+
"path": "./dist/index.js",
|
|
44
35
|
"limit": "10 KB"
|
|
45
36
|
}
|
|
46
37
|
],
|
|
47
|
-
"devDependencies": {
|
|
48
|
-
"@size-limit/preset-small-lib": "^4.11.0",
|
|
49
|
-
"husky": "^6.0.0",
|
|
50
|
-
"size-limit": "^4.11.0",
|
|
51
|
-
"tsdx": "^0.14.1",
|
|
52
|
-
"tslib": "^2.2.0"
|
|
53
|
-
},
|
|
54
38
|
"dependencies": {
|
|
55
|
-
"@plasmicapp/loader-fetcher": "1.0.
|
|
56
|
-
"@plasmicapp/loader-splits": "1.0.
|
|
39
|
+
"@plasmicapp/loader-fetcher": "1.0.24",
|
|
40
|
+
"@plasmicapp/loader-splits": "1.0.29"
|
|
57
41
|
},
|
|
58
42
|
"publishConfig": {
|
|
59
43
|
"access": "public"
|
|
60
44
|
},
|
|
61
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "1d6d699a0dfb9781ecac5e8df1dfc3a690c43559"
|
|
62
46
|
}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var loaderSplits = require('@plasmicapp/loader-splits');
|
|
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
|
-
for (let i = 0, k; i < str.length; i++) {
|
|
15
|
-
k = str.charCodeAt(i);
|
|
16
|
-
h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
|
|
17
|
-
h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
|
|
18
|
-
h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
|
|
19
|
-
h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
|
|
20
|
-
}
|
|
21
|
-
h1 = Math.imul(h3 ^ h1 >>> 18, 597399067);
|
|
22
|
-
h2 = Math.imul(h4 ^ h2 >>> 22, 2869860233);
|
|
23
|
-
h3 = Math.imul(h1 ^ h3 >>> 17, 951274213);
|
|
24
|
-
h4 = Math.imul(h2 ^ h4 >>> 19, 2716044179);
|
|
25
|
-
return [(h1 ^ h2 ^ h3 ^ h4) >>> 0, (h2 ^ h1) >>> 0, (h3 ^ h1) >>> 0, (h4 ^ h1) >>> 0];
|
|
26
|
-
}
|
|
27
|
-
function sfc32(a, b, c, d) {
|
|
28
|
-
return function () {
|
|
29
|
-
a >>>= 0;
|
|
30
|
-
b >>>= 0;
|
|
31
|
-
c >>>= 0;
|
|
32
|
-
d >>>= 0;
|
|
33
|
-
var t = a + b | 0;
|
|
34
|
-
a = b ^ b >>> 9;
|
|
35
|
-
b = c + (c << 3) | 0;
|
|
36
|
-
c = c << 21 | c >>> 11;
|
|
37
|
-
d = d + 1 | 0;
|
|
38
|
-
t = t + d | 0;
|
|
39
|
-
c = c + t | 0;
|
|
40
|
-
return (t >>> 0) / 4294967296;
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
const seed = cyrb128(strSeed);
|
|
44
|
-
const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);
|
|
45
|
-
return rand;
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
const DELIMITER = '__pm__';
|
|
49
|
-
const PLASMIC_SEED = 'plasmic_seed';
|
|
50
|
-
const SEED_RANGE = 16;
|
|
51
|
-
const getSeed = () => {
|
|
52
|
-
return `${Math.floor(Math.random() * SEED_RANGE)}`;
|
|
53
|
-
};
|
|
54
|
-
const rewriteWithoutTraits = url => {
|
|
55
|
-
const [path, ...traitssArr] = url.split(DELIMITER);
|
|
56
|
-
const traits = traitssArr.reduce((acc, elem) => {
|
|
57
|
-
const [key, value] = elem.split('=');
|
|
58
|
-
return {
|
|
59
|
-
...acc,
|
|
60
|
-
[key]: value
|
|
61
|
-
};
|
|
62
|
-
}, {});
|
|
63
|
-
return {
|
|
64
|
-
path: path === '/' ? path : path.endsWith('/') ? path.substring(0, path.length - 1) : path,
|
|
65
|
-
traits
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
const expandTraits = traits => {
|
|
69
|
-
const cmp = (a, b) => {
|
|
70
|
-
return a < b ? -1 : a > b ? 1 : 0;
|
|
71
|
-
};
|
|
72
|
-
return Object.keys(traits).sort(cmp).map(key => `${DELIMITER}${key}=${traits[key]}`).join('');
|
|
73
|
-
};
|
|
74
|
-
const rewriteWithTraits = (path, traits) => {
|
|
75
|
-
return `${path}${path.endsWith('/') ? '' : '/'}${expandTraits(traits)}`;
|
|
76
|
-
};
|
|
77
|
-
const generateAllPaths = path => {
|
|
78
|
-
const paths = [path, ...Array(SEED_RANGE).fill(0).map((_, idx) => `${path}${path.endsWith('/') ? '' : '/'}__pm__${PLASMIC_SEED}=${idx}`)];
|
|
79
|
-
return paths;
|
|
80
|
-
};
|
|
81
|
-
const getMiddlewareResponse = opts => {
|
|
82
|
-
const newCookies = [];
|
|
83
|
-
const seed = opts.cookies[PLASMIC_SEED] || getSeed();
|
|
84
|
-
if (!opts.cookies[PLASMIC_SEED]) {
|
|
85
|
-
newCookies.push({
|
|
86
|
-
key: PLASMIC_SEED,
|
|
87
|
-
value: seed
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
return {
|
|
91
|
-
pathname: rewriteWithTraits(opts.path, {
|
|
92
|
-
[PLASMIC_SEED]: seed,
|
|
93
|
-
...opts.traits
|
|
94
|
-
}),
|
|
95
|
-
cookies: newCookies
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
const getActiveVariation = opts => {
|
|
99
|
-
const {
|
|
100
|
-
splits,
|
|
101
|
-
traits,
|
|
102
|
-
path
|
|
103
|
-
} = opts;
|
|
104
|
-
return loaderSplits.getActiveVariation({
|
|
105
|
-
splits,
|
|
106
|
-
traits: {
|
|
107
|
-
pageUrl: path,
|
|
108
|
-
...traits
|
|
109
|
-
},
|
|
110
|
-
getKnownValue: () => undefined,
|
|
111
|
-
updateKnownValue: () => null,
|
|
112
|
-
getRandomValue: key => {
|
|
113
|
-
var _traits$PLASMIC_SEED;
|
|
114
|
-
const rand = getSeededRandomFunction(((_traits$PLASMIC_SEED = traits[PLASMIC_SEED]) != null ? _traits$PLASMIC_SEED : '') + key);
|
|
115
|
-
return rand();
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
exports.generateAllPaths = generateAllPaths;
|
|
121
|
-
exports.getActiveVariation = getActiveVariation;
|
|
122
|
-
exports.getMiddlewareResponse = getMiddlewareResponse;
|
|
123
|
-
exports.rewriteWithTraits = rewriteWithTraits;
|
|
124
|
-
exports.rewriteWithoutTraits = rewriteWithoutTraits;
|
|
125
|
-
//# sourceMappingURL=loader-edge.cjs.development.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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
|
-
//# sourceMappingURL=loader-edge.cjs.production.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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","plasmic_seed","url","traitssArr","split","reduce","acc","elem","[object Object]","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,IAKjC,MAAMC,OAAEA,EAAMhB,OAAEA,EAAMD,KAAEA,GAASgB,EACjC,OAAOE,qBAAyB,CAC9BD,OAAAA,EACAhB,OAAQ,CACNkB,QAASnB,KACNC,GAELmB,cAAe,OACfC,iBAAkB,IAAM,KACxBC,eAAiBb,UAEf,MDnGkCc,CAAAA,IAyCtC,MAAMC,EAvCN,SAAiBC,GACf,IAAIC,EAAK,WACPC,EAAK,WACLC,EAAK,WACLC,EAAK,WACP,IAAK,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,YAM9B,OAJAJ,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,GAhBrB,IAAejB,EAAGC,EAAG8B,EAAGC,EAkBxB,OAlBehC,EAiBIkB,EAAK,GAjBNjB,EAiBUiB,EAAK,GAjBZa,EAiBgBb,EAAK,GAjBlBc,EAiBsBd,EAAK,GAhB1C,WAKL,IAAIe,GAJJjC,KAAO,IACPC,KAAO,GAGW,EAOlB,OANAD,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,EAAmB,gBAAK,IAAMQ,EAC7DgC,qCAtCyBzB,IAKpC,MAAM0B,EAA+C,GAC/ClB,EAAOR,EAAK2B,QAAoB,iBAxD5BT,KAAKU,MALE,GAKIV,KAAKW,UA+D1B,OANK7B,EAAK2B,QAAoB,cAC5BD,EAAWI,KAAK,CACdrC,IAjEe,eAkEfsC,MAAOvB,IAGJ,CACLwB,SAAUjD,EAAkBiB,EAAKhB,KAAM,CACrCiD,aAAgBzB,KACbR,EAAKf,SAEV0C,QAASD,6DAjEwBQ,IACnC,MAAOlD,KAASmD,GAAcD,EAAIE,MAXlB,UAYVnD,EAASkD,EAAWE,OAAO,CAACC,EAAKC,KACrC,MAAO9C,EAAKsC,GAASQ,EAAKH,MAAM,KAChC,MAAO,IACFE,EACHE,CAAC/C,GAAMsC,IAER,IACH,MAAO,CACL/C,KACW,MAATA,EACIA,EACAA,EAAKE,SAAS,KACdF,EAAKyD,UAAU,EAAGzD,EAAKgC,OAAS,GAChChC,EACNC,OAAAA"}
|
package/dist/loader-edge.esm.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
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
|
-
for (let i = 0, k; i < str.length; i++) {
|
|
11
|
-
k = str.charCodeAt(i);
|
|
12
|
-
h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
|
|
13
|
-
h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
|
|
14
|
-
h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
|
|
15
|
-
h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
|
|
16
|
-
}
|
|
17
|
-
h1 = Math.imul(h3 ^ h1 >>> 18, 597399067);
|
|
18
|
-
h2 = Math.imul(h4 ^ h2 >>> 22, 2869860233);
|
|
19
|
-
h3 = Math.imul(h1 ^ h3 >>> 17, 951274213);
|
|
20
|
-
h4 = Math.imul(h2 ^ h4 >>> 19, 2716044179);
|
|
21
|
-
return [(h1 ^ h2 ^ h3 ^ h4) >>> 0, (h2 ^ h1) >>> 0, (h3 ^ h1) >>> 0, (h4 ^ h1) >>> 0];
|
|
22
|
-
}
|
|
23
|
-
function sfc32(a, b, c, d) {
|
|
24
|
-
return function () {
|
|
25
|
-
a >>>= 0;
|
|
26
|
-
b >>>= 0;
|
|
27
|
-
c >>>= 0;
|
|
28
|
-
d >>>= 0;
|
|
29
|
-
var t = a + b | 0;
|
|
30
|
-
a = b ^ b >>> 9;
|
|
31
|
-
b = c + (c << 3) | 0;
|
|
32
|
-
c = c << 21 | c >>> 11;
|
|
33
|
-
d = d + 1 | 0;
|
|
34
|
-
t = t + d | 0;
|
|
35
|
-
c = c + t | 0;
|
|
36
|
-
return (t >>> 0) / 4294967296;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
const seed = cyrb128(strSeed);
|
|
40
|
-
const rand = sfc32(seed[0], seed[1], seed[2], seed[3]);
|
|
41
|
-
return rand;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
const DELIMITER = '__pm__';
|
|
45
|
-
const PLASMIC_SEED = 'plasmic_seed';
|
|
46
|
-
const SEED_RANGE = 16;
|
|
47
|
-
const getSeed = () => {
|
|
48
|
-
return `${Math.floor(Math.random() * SEED_RANGE)}`;
|
|
49
|
-
};
|
|
50
|
-
const rewriteWithoutTraits = url => {
|
|
51
|
-
const [path, ...traitssArr] = url.split(DELIMITER);
|
|
52
|
-
const traits = traitssArr.reduce((acc, elem) => {
|
|
53
|
-
const [key, value] = elem.split('=');
|
|
54
|
-
return {
|
|
55
|
-
...acc,
|
|
56
|
-
[key]: value
|
|
57
|
-
};
|
|
58
|
-
}, {});
|
|
59
|
-
return {
|
|
60
|
-
path: path === '/' ? path : path.endsWith('/') ? path.substring(0, path.length - 1) : path,
|
|
61
|
-
traits
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
const expandTraits = traits => {
|
|
65
|
-
const cmp = (a, b) => {
|
|
66
|
-
return a < b ? -1 : a > b ? 1 : 0;
|
|
67
|
-
};
|
|
68
|
-
return Object.keys(traits).sort(cmp).map(key => `${DELIMITER}${key}=${traits[key]}`).join('');
|
|
69
|
-
};
|
|
70
|
-
const rewriteWithTraits = (path, traits) => {
|
|
71
|
-
return `${path}${path.endsWith('/') ? '' : '/'}${expandTraits(traits)}`;
|
|
72
|
-
};
|
|
73
|
-
const generateAllPaths = path => {
|
|
74
|
-
const paths = [path, ...Array(SEED_RANGE).fill(0).map((_, idx) => `${path}${path.endsWith('/') ? '' : '/'}__pm__${PLASMIC_SEED}=${idx}`)];
|
|
75
|
-
return paths;
|
|
76
|
-
};
|
|
77
|
-
const getMiddlewareResponse = opts => {
|
|
78
|
-
const newCookies = [];
|
|
79
|
-
const seed = opts.cookies[PLASMIC_SEED] || getSeed();
|
|
80
|
-
if (!opts.cookies[PLASMIC_SEED]) {
|
|
81
|
-
newCookies.push({
|
|
82
|
-
key: PLASMIC_SEED,
|
|
83
|
-
value: seed
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
return {
|
|
87
|
-
pathname: rewriteWithTraits(opts.path, {
|
|
88
|
-
[PLASMIC_SEED]: seed,
|
|
89
|
-
...opts.traits
|
|
90
|
-
}),
|
|
91
|
-
cookies: newCookies
|
|
92
|
-
};
|
|
93
|
-
};
|
|
94
|
-
const getActiveVariation = opts => {
|
|
95
|
-
const {
|
|
96
|
-
splits,
|
|
97
|
-
traits,
|
|
98
|
-
path
|
|
99
|
-
} = opts;
|
|
100
|
-
return getActiveVariation$1({
|
|
101
|
-
splits,
|
|
102
|
-
traits: {
|
|
103
|
-
pageUrl: path,
|
|
104
|
-
...traits
|
|
105
|
-
},
|
|
106
|
-
getKnownValue: () => undefined,
|
|
107
|
-
updateKnownValue: () => null,
|
|
108
|
-
getRandomValue: key => {
|
|
109
|
-
var _traits$PLASMIC_SEED;
|
|
110
|
-
const rand = getSeededRandomFunction(((_traits$PLASMIC_SEED = traits[PLASMIC_SEED]) != null ? _traits$PLASMIC_SEED : '') + key);
|
|
111
|
-
return rand();
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
export { generateAllPaths, getActiveVariation, getMiddlewareResponse, rewriteWithTraits, rewriteWithoutTraits };
|
|
117
|
-
//# sourceMappingURL=loader-edge.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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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"}
|