@pack/hydrogen 0.1.3-ab-beta.3.0 → 0.1.3-ab-beta.5.0
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/create-pack-client.d.ts +1 -7
- package/dist/create-pack-client.d.ts.map +1 -1
- package/dist/create-pack-client.js +28 -29
- package/dist/handle-request.d.ts.map +1 -1
- package/dist/handle-request.js +1 -1
- package/dist/session/cookies-utils.d.ts.map +1 -1
- package/dist/session/cookies-utils.js +5 -9
- package/dist/tests/test.d.ts +5 -10
- package/dist/tests/test.d.ts.map +1 -1
- package/dist/tests/test.js +31 -28
- package/dist/tests/testHooks.js +2 -2
- package/package.json +3 -3
|
@@ -22,9 +22,6 @@ interface CreatePackClientOptions extends EnvironmentOptions {
|
|
|
22
22
|
token?: string;
|
|
23
23
|
storeId?: string;
|
|
24
24
|
session: PackSession;
|
|
25
|
-
preview?: {
|
|
26
|
-
session: PackSession;
|
|
27
|
-
};
|
|
28
25
|
contentEnvironment?: string;
|
|
29
26
|
/** Default theme data to use when no token is provided */
|
|
30
27
|
defaultThemeData?: DefaultThemeData;
|
|
@@ -48,11 +45,8 @@ interface QueryResponse<T> {
|
|
|
48
45
|
export interface Pack {
|
|
49
46
|
isPreviewModeEnabled: () => boolean;
|
|
50
47
|
session: PackSession;
|
|
51
|
-
preview?: {
|
|
52
|
-
session: PackSession;
|
|
53
|
-
};
|
|
54
48
|
abTest: Test | null | undefined;
|
|
55
|
-
|
|
49
|
+
setTestFromQueryParams: (request: Request) => void;
|
|
56
50
|
query: <T = any>(query: string, options?: QueryOptions) => Promise<QueryResponse<T>>;
|
|
57
51
|
isValidEditToken: PackClient["isValidEditToken"];
|
|
58
52
|
getPackSessionData(): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pack-client.d.ts","sourceRoot":"","sources":["../src/create-pack-client.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAKL,IAAI,EACJ,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,uGAAuG;AACvG,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,UAAU,kBAAkB;IAC1B;;;OAGG;IACH,KAAK,EAAE,KAAK,CAAC;IACb;;;OAGG;IACH,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CAC1C;AAED,UAAU,uBAAwB,SAAQ,kBAAkB;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"create-pack-client.d.ts","sourceRoot":"","sources":["../src/create-pack-client.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAKL,IAAI,EACJ,SAAS,EACV,MAAM,cAAc,CAAC;AAEtB,uGAAuG;AACvG,KAAK,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,UAAU,kBAAkB;IAC1B;;;OAGG;IACH,KAAK,EAAE,KAAK,CAAC;IACb;;;OAGG;IACH,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CAC1C;AAED,UAAU,uBAAwB,SAAQ,kBAAkB;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAErC,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,UAAU,UAAU;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,aAAa,CAAC,CAAC;IACvB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,IAAI;IACnB,oBAAoB,EAAE,MAAM,OAAO,CAAC;IACpC,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,EACb,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,KACnB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,gBAAgB,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACjD,kBAAkB,IAAI;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC;QAChC,oBAAoB,EAAE,OAAO,CAAC;QAC9B,cAAc,EAAE,GAAG,CAAC;KACrB,CAAC;CACH;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B;AA2FD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAmKvE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PackClient } from "@pack/client";
|
|
2
2
|
import { CacheCustom, createWithCache } from "@shopify/hydrogen";
|
|
3
|
-
import { getTestInfo, getTestSession,
|
|
3
|
+
import { getTestInfo, getTestSession, getTestFromQueryParams, setTestHeaders, } from "./tests/test";
|
|
4
4
|
/**
|
|
5
5
|
* Create an SHA-256 hash as a hex string
|
|
6
6
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string
|
|
@@ -73,11 +73,11 @@ function extractTopLevelField(query) {
|
|
|
73
73
|
return "";
|
|
74
74
|
}
|
|
75
75
|
export function createPackClient(options) {
|
|
76
|
-
const { cache, waitUntil, session,
|
|
77
|
-
const previewEnabled = !!
|
|
78
|
-
const previewEnvironment =
|
|
76
|
+
const { cache, waitUntil, session, contentEnvironment, storeId, token, apiUrl, defaultThemeData, } = options;
|
|
77
|
+
const previewEnabled = !!session.get("enabled");
|
|
78
|
+
const previewEnvironment = session.get("environment");
|
|
79
79
|
const clientContentEnvironment = previewEnvironment || contentEnvironment;
|
|
80
|
-
let
|
|
80
|
+
let testFromQueryParams = null;
|
|
81
81
|
if (!token && !defaultThemeData) {
|
|
82
82
|
throw new Error("The Pack client token is missing or empty. Please provide a valid token or default theme data.");
|
|
83
83
|
}
|
|
@@ -87,10 +87,9 @@ export function createPackClient(options) {
|
|
|
87
87
|
if (!token) {
|
|
88
88
|
return {
|
|
89
89
|
session,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
requestAbTest = setRequestAbTest(request);
|
|
90
|
+
abTest: getTestSession(session, testFromQueryParams, previewEnabled),
|
|
91
|
+
setTestFromQueryParams: (request) => {
|
|
92
|
+
testFromQueryParams = getTestFromQueryParams(request);
|
|
94
93
|
},
|
|
95
94
|
isPreviewModeEnabled: () => previewEnabled,
|
|
96
95
|
async query(query, { variables } = {}) {
|
|
@@ -106,9 +105,9 @@ export function createPackClient(options) {
|
|
|
106
105
|
return {
|
|
107
106
|
storeId: storeId,
|
|
108
107
|
sessionId: session.id,
|
|
109
|
-
abTest: getTestSession(session,
|
|
108
|
+
abTest: getTestSession(session, testFromQueryParams, previewEnabled),
|
|
110
109
|
isPreviewModeEnabled: previewEnabled,
|
|
111
|
-
customizerMeta:
|
|
110
|
+
customizerMeta: session.get("customizerMeta"),
|
|
112
111
|
};
|
|
113
112
|
},
|
|
114
113
|
};
|
|
@@ -127,16 +126,15 @@ export function createPackClient(options) {
|
|
|
127
126
|
contentEnvironment: clientContentEnvironment,
|
|
128
127
|
sessionId: session.id,
|
|
129
128
|
});
|
|
130
|
-
const
|
|
129
|
+
const getTestInfoPromise = getTestInfo({
|
|
131
130
|
packClient,
|
|
132
131
|
session,
|
|
133
132
|
});
|
|
134
133
|
return {
|
|
135
134
|
session,
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
requestAbTest = setRequestAbTest(request);
|
|
135
|
+
abTest: getTestSession(session, testFromQueryParams, previewEnabled),
|
|
136
|
+
setTestFromQueryParams: (request) => {
|
|
137
|
+
testFromQueryParams = getTestFromQueryParams(request);
|
|
140
138
|
},
|
|
141
139
|
isPreviewModeEnabled: () => previewEnabled,
|
|
142
140
|
async query(query, { variables, cache: strategy = cacheCustom, test } = {}) {
|
|
@@ -144,19 +142,20 @@ export function createPackClient(options) {
|
|
|
144
142
|
cache,
|
|
145
143
|
waitUntil,
|
|
146
144
|
});
|
|
145
|
+
const testFromSession = await (async () => {
|
|
146
|
+
try {
|
|
147
|
+
return await getTestInfoPromise;
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
console.error(e);
|
|
151
|
+
}
|
|
152
|
+
return undefined;
|
|
153
|
+
})();
|
|
147
154
|
let headers = {};
|
|
148
|
-
headers =
|
|
149
|
-
test: requestAbTest || test,
|
|
155
|
+
headers = setTestHeaders(headers, {
|
|
150
156
|
previewEnabled,
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
return await getTestVariantPromise;
|
|
154
|
-
}
|
|
155
|
-
catch (e) {
|
|
156
|
-
console.error(e);
|
|
157
|
-
}
|
|
158
|
-
return undefined;
|
|
159
|
-
})(),
|
|
157
|
+
testFromSession,
|
|
158
|
+
testFromQueryParams: testFromQueryParams || test,
|
|
160
159
|
});
|
|
161
160
|
const queryHash = await hashQuery(query, variables, headers);
|
|
162
161
|
const queryVariables = variables ? { ...variables } : {};
|
|
@@ -195,9 +194,9 @@ export function createPackClient(options) {
|
|
|
195
194
|
return {
|
|
196
195
|
storeId: storeId,
|
|
197
196
|
sessionId: session.id,
|
|
198
|
-
abTest: getTestSession(session,
|
|
197
|
+
abTest: getTestSession(session, testFromQueryParams, previewEnabled),
|
|
199
198
|
isPreviewModeEnabled: previewEnabled,
|
|
200
|
-
customizerMeta:
|
|
199
|
+
customizerMeta: session.get("customizerMeta"),
|
|
201
200
|
};
|
|
202
201
|
},
|
|
203
202
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-request.d.ts","sourceRoot":"","sources":["../src/handle-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"handle-request.d.ts","sourceRoot":"","sources":["../src/handle-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,GACrD,OAAO,CAAC,QAAQ,CAAC,CAenB"}
|
package/dist/handle-request.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { packlytics } from "@pack/packlytics";
|
|
2
2
|
export async function handleRequest(pack, request, handleRequest) {
|
|
3
|
-
pack.
|
|
3
|
+
pack.setTestFromQueryParams(request);
|
|
4
4
|
const [response, _] = await Promise.all([
|
|
5
5
|
handleRequest(request),
|
|
6
6
|
packlytics(request, pack.session, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookies-utils.d.ts","sourceRoot":"","sources":["../../src/session/cookies-utils.tsx"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,WAM9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"cookies-utils.d.ts","sourceRoot":"","sources":["../../src/session/cookies-utils.tsx"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,WAM9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,MAAM,CA0BxC"}
|
|
@@ -25,24 +25,20 @@ export function buildRandomUUID() {
|
|
|
25
25
|
crypto.getRandomValues(randomValuesArray);
|
|
26
26
|
// Generate a strong UUID
|
|
27
27
|
let i = 0;
|
|
28
|
-
hash = tokenHash
|
|
29
|
-
.replace(/[x]/g, (c) => {
|
|
28
|
+
hash = tokenHash.replace(/[x]/g, (c) => {
|
|
30
29
|
const r = randomValuesArray[i] % 16;
|
|
31
30
|
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
32
31
|
i++;
|
|
33
32
|
return v.toString(16);
|
|
34
|
-
})
|
|
35
|
-
.toUpperCase();
|
|
33
|
+
});
|
|
36
34
|
}
|
|
37
35
|
catch (err) {
|
|
38
36
|
// crypto not available, generate weak UUID
|
|
39
|
-
hash = tokenHash
|
|
40
|
-
.replace(/[x]/g, (c) => {
|
|
37
|
+
hash = tokenHash.replace(/[x]/g, (c) => {
|
|
41
38
|
const r = (Math.random() * 16) | 0;
|
|
42
39
|
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
43
40
|
return v.toString(16);
|
|
44
|
-
})
|
|
45
|
-
.toUpperCase();
|
|
41
|
+
});
|
|
46
42
|
}
|
|
47
43
|
return `${hexTime()}-${hash}`;
|
|
48
44
|
}
|
|
@@ -62,5 +58,5 @@ function hexTime() {
|
|
|
62
58
|
.toString(16)
|
|
63
59
|
.toLowerCase();
|
|
64
60
|
// Ensure the output is exactly 8 characters
|
|
65
|
-
return output.padStart(8, "0");
|
|
61
|
+
return output?.substring(0, 8).padStart(8, "0");
|
|
66
62
|
}
|
package/dist/tests/test.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export interface TestInput {
|
|
|
9
9
|
export interface Test {
|
|
10
10
|
id: string;
|
|
11
11
|
handle: string;
|
|
12
|
-
|
|
12
|
+
testVariant: {
|
|
13
13
|
id: string;
|
|
14
14
|
handle: string;
|
|
15
15
|
};
|
|
@@ -18,16 +18,11 @@ export declare function getTestInfo({ packClient, session, }: {
|
|
|
18
18
|
packClient: PackClient;
|
|
19
19
|
session: PackSession | undefined;
|
|
20
20
|
}): Promise<Test | undefined>;
|
|
21
|
-
export declare function getTestSession(session: PackSession | undefined,
|
|
22
|
-
export declare function
|
|
23
|
-
testId: string;
|
|
24
|
-
testHandle: string;
|
|
25
|
-
testVariantId: string;
|
|
26
|
-
testVariantHandle: string;
|
|
27
|
-
} | null;
|
|
21
|
+
export declare function getTestSession(session: PackSession | undefined, testFromQueryParams: TestInput | null, previewEnabled: boolean): Test | null | undefined;
|
|
22
|
+
export declare function getTestFromQueryParams(request: Request): TestInput | null;
|
|
28
23
|
export declare function setTestHeaders(headers: any, options: {
|
|
29
|
-
test: TestInput | null | undefined;
|
|
30
24
|
previewEnabled: boolean;
|
|
31
|
-
|
|
25
|
+
testFromSession?: Test;
|
|
26
|
+
testFromQueryParams?: TestInput;
|
|
32
27
|
}): any;
|
|
33
28
|
//# sourceMappingURL=test.d.ts.map
|
package/dist/tests/test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/tests/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAeD,wBAAsB,WAAW,CAAC,EAChC,UAAU,EACV,OAAO,GACR,EAAE;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;CAClC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CA2C5B;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/tests/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE;QACX,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAeD,wBAAsB,WAAW,CAAC,EAChC,UAAU,EACV,OAAO,GACR,EAAE;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;CAClC,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CA2C5B;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,mBAAmB,EAAE,SAAS,GAAG,IAAI,EACrC,cAAc,EAAE,OAAO,GACtB,IAAI,GAAG,IAAI,GAAG,SAAS,CA8BzB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CA2CzE;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE;IACP,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC,OAmCF"}
|
package/dist/tests/test.js
CHANGED
|
@@ -3,7 +3,7 @@ query TestCurrent {
|
|
|
3
3
|
testCurrent {
|
|
4
4
|
id
|
|
5
5
|
handle
|
|
6
|
-
TestVariant {
|
|
6
|
+
testVariant: TestVariant {
|
|
7
7
|
id
|
|
8
8
|
handle
|
|
9
9
|
}
|
|
@@ -21,7 +21,7 @@ export async function getTestInfo({ packClient, session, }) {
|
|
|
21
21
|
// Request directly to API if it is using CDN to reduce latency
|
|
22
22
|
let usingCdn = false;
|
|
23
23
|
if (packClient.apiUrl === "https://apicdn.packdigital.com/graphql") {
|
|
24
|
-
packClient.apiUrl = "https://
|
|
24
|
+
packClient.apiUrl = "https://app.packdigital.com/graphql";
|
|
25
25
|
usingCdn = true;
|
|
26
26
|
}
|
|
27
27
|
const packClientFetch = packClient.fetch(QUERY_TEST, {});
|
|
@@ -41,14 +41,14 @@ export async function getTestInfo({ packClient, session, }) {
|
|
|
41
41
|
}
|
|
42
42
|
return test;
|
|
43
43
|
}
|
|
44
|
-
export function getTestSession(session,
|
|
45
|
-
if (
|
|
44
|
+
export function getTestSession(session, testFromQueryParams, previewEnabled) {
|
|
45
|
+
if (testFromQueryParams) {
|
|
46
46
|
return {
|
|
47
|
-
id:
|
|
48
|
-
handle:
|
|
49
|
-
|
|
50
|
-
id:
|
|
51
|
-
handle:
|
|
47
|
+
id: testFromQueryParams.testId || "",
|
|
48
|
+
handle: testFromQueryParams.testHandle || "",
|
|
49
|
+
testVariant: {
|
|
50
|
+
id: testFromQueryParams.testVariantId || "",
|
|
51
|
+
handle: testFromQueryParams.testVariantHandle || "",
|
|
52
52
|
},
|
|
53
53
|
};
|
|
54
54
|
}
|
|
@@ -56,7 +56,7 @@ export function getTestSession(session, requestAbTest, previewEnabled) {
|
|
|
56
56
|
return {
|
|
57
57
|
id: "",
|
|
58
58
|
handle: "isPreview",
|
|
59
|
-
|
|
59
|
+
testVariant: {
|
|
60
60
|
id: "",
|
|
61
61
|
handle: "isPreview",
|
|
62
62
|
},
|
|
@@ -68,7 +68,7 @@ export function getTestSession(session, requestAbTest, previewEnabled) {
|
|
|
68
68
|
const testSession = session.get("test");
|
|
69
69
|
return testSession?.data || null;
|
|
70
70
|
}
|
|
71
|
-
export function
|
|
71
|
+
export function getTestFromQueryParams(request) {
|
|
72
72
|
const requestUrl = new URL(request.url);
|
|
73
73
|
const params = requestUrl.searchParams;
|
|
74
74
|
if (params.has("testId") ||
|
|
@@ -105,28 +105,31 @@ export function setRequestAbTest(request) {
|
|
|
105
105
|
return null;
|
|
106
106
|
}
|
|
107
107
|
export function setTestHeaders(headers, options) {
|
|
108
|
-
const {
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
const { previewEnabled, testFromQueryParams, testFromSession } = options;
|
|
109
|
+
if (previewEnabled) {
|
|
110
|
+
return headers;
|
|
111
|
+
}
|
|
112
|
+
if (testFromQueryParams) {
|
|
113
|
+
headers["X-Pack-Test-Ignore-Test-Status"] = true;
|
|
114
|
+
if (testFromQueryParams.testId) {
|
|
115
|
+
headers["X-Pack-Test-Id"] = testFromQueryParams.testId;
|
|
112
116
|
}
|
|
113
|
-
if (
|
|
114
|
-
headers["X-Test-Handle"] =
|
|
117
|
+
if (testFromQueryParams.testHandle) {
|
|
118
|
+
headers["X-Pack-Test-Handle"] = testFromQueryParams.testHandle;
|
|
115
119
|
}
|
|
116
|
-
if (
|
|
117
|
-
headers["X-Test-Variant-Id"] =
|
|
120
|
+
if (testFromQueryParams.testVariantId) {
|
|
121
|
+
headers["X-Pack-Test-Variant-Id"] = testFromQueryParams.testVariantId;
|
|
118
122
|
}
|
|
119
|
-
if (
|
|
120
|
-
headers["X-Test-Variant-Handle"] =
|
|
123
|
+
if (testFromQueryParams.testVariantHandle) {
|
|
124
|
+
headers["X-Pack-Test-Variant-Handle"] =
|
|
125
|
+
testFromQueryParams.testVariantHandle;
|
|
121
126
|
}
|
|
122
127
|
}
|
|
123
|
-
else {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
};
|
|
129
|
-
}
|
|
128
|
+
else if (testFromSession) {
|
|
129
|
+
headers = {
|
|
130
|
+
"X-Pack-Test-Id": testFromSession?.id,
|
|
131
|
+
"X-Pack-Test-Variant-Id": testFromSession?.testVariant?.id,
|
|
132
|
+
};
|
|
130
133
|
}
|
|
131
134
|
return headers;
|
|
132
135
|
}
|
package/dist/tests/testHooks.js
CHANGED
|
@@ -25,9 +25,9 @@ export function useAbTestHandle() {
|
|
|
25
25
|
}
|
|
26
26
|
export function useAbTestVariantId() {
|
|
27
27
|
const test = useAbTest();
|
|
28
|
-
return test?.
|
|
28
|
+
return test?.testVariant?.id;
|
|
29
29
|
}
|
|
30
30
|
export function useAbTestVariantHandle() {
|
|
31
31
|
const test = useAbTest();
|
|
32
|
-
return test?.
|
|
32
|
+
return test?.testVariant?.handle;
|
|
33
33
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pack/hydrogen",
|
|
3
3
|
"description": "Pack Hydrogen",
|
|
4
|
-
"version": "0.1.3-ab-beta.
|
|
4
|
+
"version": "0.1.3-ab-beta.5.0",
|
|
5
5
|
"exports": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"engines": {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"dist"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@pack/client": "^0.0.
|
|
26
|
-
"@pack/packlytics": "^0.0.1-ab-beta.
|
|
25
|
+
"@pack/client": "^0.0.7",
|
|
26
|
+
"@pack/packlytics": "^0.0.1-ab-beta.5.0",
|
|
27
27
|
"@shopify/hydrogen": "^2023.10.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|