@agnostack/next-shopify 1.9.0-beta.1 → 1.9.0-beta.10
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/lib/handlers/api/appInstallation.d.ts +1 -0
- package/dist/lib/handlers/api/appInstallation.d.ts.map +1 -0
- package/dist/lib/handlers/api/appInstallation.js +9 -80
- package/dist/lib/handlers/api/appInstallation.js.map +1 -1
- package/dist/lib/handlers/api/auth.d.ts +1 -0
- package/dist/lib/handlers/api/auth.d.ts.map +1 -0
- package/dist/lib/handlers/api/auth.js +13 -22
- package/dist/lib/handlers/api/auth.js.map +1 -1
- package/dist/lib/handlers/api/billing.d.ts +1 -0
- package/dist/lib/handlers/api/billing.d.ts.map +1 -0
- package/dist/lib/handlers/api/billing.js +15 -27
- package/dist/lib/handlers/api/billing.js.map +1 -1
- package/dist/lib/handlers/api/callback.d.ts +1 -0
- package/dist/lib/handlers/api/callback.d.ts.map +1 -0
- package/dist/lib/handlers/api/callback.js +38 -47
- package/dist/lib/handlers/api/callback.js.map +1 -1
- package/dist/lib/handlers/api/graph.d.ts +1 -0
- package/dist/lib/handlers/api/graph.d.ts.map +1 -0
- package/dist/lib/handlers/api/graph.js +20 -28
- package/dist/lib/handlers/api/graph.js.map +1 -1
- package/dist/lib/handlers/api/index.d.ts +1 -0
- package/dist/lib/handlers/api/index.d.ts.map +1 -0
- package/dist/lib/handlers/api/index.js +10 -19
- package/dist/lib/handlers/api/index.js.map +1 -1
- package/dist/lib/handlers/api/proxy.d.ts +1 -0
- package/dist/lib/handlers/api/proxy.d.ts.map +1 -0
- package/dist/lib/handlers/api/proxy.js +25 -38
- package/dist/lib/handlers/api/proxy.js.map +1 -1
- package/dist/lib/handlers/api/rest.d.ts +1 -0
- package/dist/lib/handlers/api/rest.d.ts.map +1 -0
- package/dist/lib/handlers/api/rest.js +15 -23
- package/dist/lib/handlers/api/rest.js.map +1 -1
- package/dist/lib/handlers/api/types.d.ts +1 -0
- package/dist/lib/handlers/api/types.d.ts.map +1 -0
- package/dist/lib/handlers/api/types.js +1 -0
- package/dist/lib/handlers/api/types.js.map +1 -0
- package/dist/lib/handlers/api/uninstall.d.ts +1 -0
- package/dist/lib/handlers/api/uninstall.d.ts.map +1 -0
- package/dist/lib/handlers/api/uninstall.js +13 -25
- package/dist/lib/handlers/api/uninstall.js.map +1 -1
- package/dist/lib/handlers/api/webhook.d.ts +1 -0
- package/dist/lib/handlers/api/webhook.d.ts.map +1 -0
- package/dist/lib/handlers/api/webhook.js +13 -25
- package/dist/lib/handlers/api/webhook.js.map +1 -1
- package/dist/lib/handlers/index.d.ts +1 -0
- package/dist/lib/handlers/index.d.ts.map +1 -0
- package/dist/lib/handlers/index.js +3 -12
- package/dist/lib/handlers/index.js.map +1 -1
- package/dist/lib/handlers/ssr/index.d.ts +1 -0
- package/dist/lib/handlers/ssr/index.d.ts.map +1 -0
- package/dist/lib/handlers/ssr/index.js +3 -12
- package/dist/lib/handlers/ssr/index.js.map +1 -1
- package/dist/lib/handlers/ssr/protect.d.ts +2 -1
- package/dist/lib/handlers/ssr/protect.d.ts.map +1 -0
- package/dist/lib/handlers/ssr/protect.js +19 -17
- package/dist/lib/handlers/ssr/protect.js.map +1 -1
- package/dist/lib/handlers/ssr/types.d.ts +1 -0
- package/dist/lib/handlers/ssr/types.d.ts.map +1 -0
- package/dist/lib/handlers/ssr/types.js +1 -0
- package/dist/lib/handlers/ssr/types.js.map +1 -0
- package/dist/lib/handlers/ssr/wrap.d.ts +2 -1
- package/dist/lib/handlers/ssr/wrap.d.ts.map +1 -0
- package/dist/lib/handlers/ssr/wrap.js +7 -5
- package/dist/lib/handlers/ssr/wrap.js.map +1 -1
- package/dist/lib/handlers/types.d.ts +1 -0
- package/dist/lib/handlers/types.d.ts.map +1 -0
- package/dist/lib/handlers/types.js +1 -0
- package/dist/lib/handlers/types.js.map +1 -0
- package/dist/lib/index.d.ts +2 -1
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +4 -13
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils/billing.d.ts +3 -2
- package/dist/lib/utils/billing.d.ts.map +1 -0
- package/dist/lib/utils/billing.js +16 -15
- package/dist/lib/utils/billing.js.map +1 -1
- package/dist/lib/utils/crypto.d.ts +3 -2
- package/dist/lib/utils/crypto.d.ts.map +1 -0
- package/dist/lib/utils/crypto.js +5 -7
- package/dist/lib/utils/crypto.js.map +1 -1
- package/dist/lib/utils/firebase.d.ts +3 -2
- package/dist/lib/utils/firebase.d.ts.map +1 -0
- package/dist/lib/utils/firebase.js +30 -43
- package/dist/lib/utils/firebase.js.map +1 -1
- package/dist/lib/utils/graph.d.ts +13 -0
- package/dist/lib/utils/graph.d.ts.map +1 -0
- package/dist/lib/utils/graph.js +103 -0
- package/dist/lib/utils/graph.js.map +1 -0
- package/dist/lib/utils/index.d.ts +2 -1
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +8 -20
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/session.d.ts +18 -18
- package/dist/lib/utils/session.d.ts.map +1 -0
- package/dist/lib/utils/session.js +72 -77
- package/dist/lib/utils/session.js.map +1 -1
- package/dist/lib/utils/shopify-api-js/oauth.d.ts +1 -0
- package/dist/lib/utils/shopify-api-js/oauth.d.ts.map +1 -0
- package/dist/lib/utils/shopify-api-js/oauth.js +21 -31
- package/dist/lib/utils/shopify-api-js/oauth.js.map +1 -1
- package/dist/lib/utils/shopify.d.ts +13 -1
- package/dist/lib/utils/shopify.d.ts.map +1 -0
- package/dist/lib/utils/shopify.js +43 -38
- package/dist/lib/utils/shopify.js.map +1 -1
- package/dist/lib/utils/types.d.ts +1 -0
- package/dist/lib/utils/types.d.ts.map +1 -0
- package/dist/lib/utils/types.js +1 -0
- package/dist/lib/utils/types.js.map +1 -0
- package/dist/lib/withShopify.d.ts +1 -0
- package/dist/lib/withShopify.d.ts.map +1 -0
- package/dist/lib/withShopify.js +71 -81
- package/dist/lib/withShopify.js.map +1 -1
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +2 -11
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/types.d.ts +1 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +1 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/{runtime/utils → shared}/constants.d.ts +1 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/{runtime/utils → shared}/constants.js +0 -1
- package/dist/shared/constants.js.map +1 -0
- package/dist/{runtime/utils → shared}/display.d.ts +1 -0
- package/dist/shared/display.d.ts.map +1 -0
- package/dist/{runtime/utils → shared}/display.js +35 -37
- package/dist/shared/display.js.map +1 -0
- package/dist/{runtime/utils → shared}/errors.d.ts +1 -11
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/{runtime/utils → shared}/errors.js +1 -20
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/index.d.ts +4 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +7 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +1 -0
- package/dist/shared/types.js.map +1 -0
- package/package.json +18 -13
- package/dist/lib/utils/runtime.d.ts +0 -1
- package/dist/lib/utils/runtime.js +0 -14
- package/dist/lib/utils/runtime.js.map +0 -1
- package/dist/runtime/utils/constants.js.map +0 -1
- package/dist/runtime/utils/display.js.map +0 -1
- package/dist/runtime/utils/errors.js.map +0 -1
- package/dist/runtime/utils/index.d.ts +0 -3
- package/dist/runtime/utils/index.js +0 -16
- package/dist/runtime/utils/index.js.map +0 -1
|
@@ -1,26 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
-
var t = {};
|
|
4
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
-
t[p] = s[p];
|
|
6
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
-
t[p[i]] = s[p[i]];
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
3
|
exports.findSessionIdsByShop = exports.deleteSessionsCallback = exports.loadCallback = exports.updateCallback = exports.storeCallback = exports.FirebaseSessionHandler = void 0;
|
|
18
|
-
const
|
|
19
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const firebase_admin_1 = tslib_1.__importDefault(require("firebase-admin"));
|
|
6
|
+
const shared_1 = require("../../shared");
|
|
20
7
|
const singleton = Symbol('singleton');
|
|
21
8
|
const singletonEnforcer = Symbol('singletonEnforcer');
|
|
22
9
|
class FirebaseSessionHandler {
|
|
23
|
-
constructor(enforcer, { configurationId, collection =
|
|
10
|
+
constructor(enforcer, { configurationId, collection = shared_1.COLLECTION_ROOT }) {
|
|
24
11
|
if (enforcer !== singletonEnforcer) {
|
|
25
12
|
throw new Error('Cannot instantiate FirebaseSessionHandler directly, please use getInstance()');
|
|
26
13
|
}
|
|
@@ -32,7 +19,7 @@ class FirebaseSessionHandler {
|
|
|
32
19
|
return (this.firestore != undefined);
|
|
33
20
|
}
|
|
34
21
|
initializeFireStore(firebaseConfig) {
|
|
35
|
-
if (
|
|
22
|
+
if ((0, shared_1.objectNotEmpty)(firebaseConfig)) {
|
|
36
23
|
const project = !firebase_admin_1.default.apps.length
|
|
37
24
|
? firebase_admin_1.default.initializeApp({
|
|
38
25
|
credential: firebase_admin_1.default.credential.cert(firebaseConfig),
|
|
@@ -52,7 +39,7 @@ class FirebaseSessionHandler {
|
|
|
52
39
|
}
|
|
53
40
|
}
|
|
54
41
|
exports.FirebaseSessionHandler = FirebaseSessionHandler;
|
|
55
|
-
const storeCallback =
|
|
42
|
+
const storeCallback = (instance, shopId, session) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
56
43
|
try {
|
|
57
44
|
const docRef = instance.firestore
|
|
58
45
|
.collection(instance.collection)
|
|
@@ -60,21 +47,21 @@ const storeCallback = async (instance, shopId, session) => {
|
|
|
60
47
|
.collection(instance.configurationId)
|
|
61
48
|
.doc(session.id);
|
|
62
49
|
// TODO: do we need to remove/can we remove session.id here??
|
|
63
|
-
const _a = JSON.parse(JSON.stringify(session)), { onlineAccessInfo: _onlineAccessInfo } = _a, docData = __rest(_a, ["onlineAccessInfo"]);
|
|
50
|
+
const _a = JSON.parse(JSON.stringify(session)), { onlineAccessInfo: _onlineAccessInfo } = _a, docData = tslib_1.__rest(_a, ["onlineAccessInfo"]);
|
|
64
51
|
// NOTE: destructuring out associated_user for DPA compliance
|
|
65
52
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
66
|
-
const _b = _onlineAccessInfo !== null && _onlineAccessInfo !== void 0 ? _onlineAccessInfo : {}, { associated_user } = _b, onlineAccessInfo = __rest(_b, ["associated_user"]);
|
|
53
|
+
const _b = _onlineAccessInfo !== null && _onlineAccessInfo !== void 0 ? _onlineAccessInfo : {}, { associated_user } = _b, onlineAccessInfo = tslib_1.__rest(_b, ["associated_user"]);
|
|
67
54
|
const payload = Object.assign({ onlineAccessInfo }, docData);
|
|
68
|
-
|
|
69
|
-
return (
|
|
55
|
+
yield docRef.set(payload);
|
|
56
|
+
return (yield docRef.get()).data();
|
|
70
57
|
}
|
|
71
58
|
catch (error) {
|
|
72
59
|
console.error('FirebaseSessionHandler.storeCallback error', error);
|
|
73
60
|
throw error;
|
|
74
61
|
}
|
|
75
|
-
};
|
|
62
|
+
});
|
|
76
63
|
exports.storeCallback = storeCallback;
|
|
77
|
-
const updateCallback =
|
|
64
|
+
const updateCallback = (instance, shopId, session) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
78
65
|
try {
|
|
79
66
|
const docRef = instance.firestore
|
|
80
67
|
.collection(instance.collection)
|
|
@@ -82,26 +69,26 @@ const updateCallback = async (instance, shopId, session) => {
|
|
|
82
69
|
.collection(instance.configurationId)
|
|
83
70
|
.doc(session.id);
|
|
84
71
|
// TODO: do we need to remove/can we remove session.id here??
|
|
85
|
-
const
|
|
72
|
+
const _c = JSON.parse(JSON.stringify(session)), { onlineAccessInfo: _onlineAccessInfo } = _c, docData = tslib_1.__rest(_c, ["onlineAccessInfo"]);
|
|
86
73
|
// NOTE: destructuring out associated_user for DPA compliance
|
|
87
74
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
88
|
-
const
|
|
75
|
+
const _d = _onlineAccessInfo !== null && _onlineAccessInfo !== void 0 ? _onlineAccessInfo : {}, { associated_user } = _d, onlineAccessInfo = tslib_1.__rest(_d, ["associated_user"]);
|
|
89
76
|
const payload = Object.assign({ onlineAccessInfo }, docData);
|
|
90
|
-
|
|
91
|
-
return (
|
|
77
|
+
yield docRef.set(payload, { merge: true });
|
|
78
|
+
return (yield docRef.get()).data();
|
|
92
79
|
}
|
|
93
80
|
catch (error) {
|
|
94
81
|
console.error('FirebaseSessionHandler.updateCallback error', error);
|
|
95
82
|
throw error;
|
|
96
83
|
}
|
|
97
|
-
};
|
|
84
|
+
});
|
|
98
85
|
exports.updateCallback = updateCallback;
|
|
99
|
-
const loadCallback =
|
|
100
|
-
if (
|
|
86
|
+
const loadCallback = (instance, shopId, sessionId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
87
|
+
if ((0, shared_1.stringEmpty)(sessionId)) {
|
|
101
88
|
return undefined;
|
|
102
89
|
}
|
|
103
90
|
try {
|
|
104
|
-
const document =
|
|
91
|
+
const document = yield instance.firestore
|
|
105
92
|
.collection(instance.collection)
|
|
106
93
|
.doc(shopId)
|
|
107
94
|
.collection(instance.configurationId)
|
|
@@ -116,10 +103,10 @@ const loadCallback = async (instance, shopId, sessionId) => {
|
|
|
116
103
|
console.error('FirebaseSessionHandler.loadCallback error', error);
|
|
117
104
|
throw error;
|
|
118
105
|
}
|
|
119
|
-
};
|
|
106
|
+
});
|
|
120
107
|
exports.loadCallback = loadCallback;
|
|
121
|
-
const deleteSessionsCallback =
|
|
122
|
-
const deleteSessionCallback =
|
|
108
|
+
const deleteSessionsCallback = (instance, shopId, sessionIds) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
109
|
+
const deleteSessionCallback = (_collectionRef, _sessionId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
123
110
|
try {
|
|
124
111
|
return _collectionRef.doc(_sessionId).delete();
|
|
125
112
|
}
|
|
@@ -127,27 +114,27 @@ const deleteSessionsCallback = async (instance, shopId, sessionIds) => {
|
|
|
127
114
|
console.error('FirebaseSessionHandler.deleteSessionCallback error', error);
|
|
128
115
|
throw error;
|
|
129
116
|
}
|
|
130
|
-
};
|
|
117
|
+
});
|
|
131
118
|
try {
|
|
132
119
|
const collectionRef = instance.firestore
|
|
133
120
|
.collection(instance.collection)
|
|
134
121
|
.doc(shopId)
|
|
135
122
|
.collection(instance.configurationId);
|
|
136
|
-
return Promise.all(
|
|
123
|
+
return Promise.all((0, shared_1.ensureArray)(sessionIds).map((sessionId) => deleteSessionCallback(collectionRef, sessionId)));
|
|
137
124
|
}
|
|
138
125
|
catch (error) {
|
|
139
126
|
console.error('FirebaseSessionHandler.deleteSessionsCallback error', error);
|
|
140
127
|
throw error;
|
|
141
128
|
}
|
|
142
|
-
};
|
|
129
|
+
});
|
|
143
130
|
exports.deleteSessionsCallback = deleteSessionsCallback;
|
|
144
|
-
const findSessionIdsByShop =
|
|
145
|
-
if (
|
|
131
|
+
const findSessionIdsByShop = (instance, shopId) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
132
|
+
if ((0, shared_1.stringEmpty)(shopId)) {
|
|
146
133
|
// NOTE: this happens on initial install
|
|
147
134
|
return [];
|
|
148
135
|
}
|
|
149
136
|
try {
|
|
150
|
-
const collection =
|
|
137
|
+
const collection = yield instance.firestore
|
|
151
138
|
.collection(instance.collection)
|
|
152
139
|
.doc(shopId)
|
|
153
140
|
.collection(instance.configurationId)
|
|
@@ -162,6 +149,6 @@ const findSessionIdsByShop = async (instance, shopId) => {
|
|
|
162
149
|
console.error('FirebaseSessionHandler.findSessionIdsByShop error', error);
|
|
163
150
|
throw error;
|
|
164
151
|
}
|
|
165
|
-
};
|
|
152
|
+
});
|
|
166
153
|
exports.findSessionIdsByShop = findSessionIdsByShop;
|
|
167
154
|
//# sourceMappingURL=firebase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../../src/lib/utils/firebase.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../../src/lib/utils/firebase.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export namespace APP_QUERIES {
|
|
2
|
+
export { INSTALLATION_BASIC };
|
|
3
|
+
export { INSTALLATION };
|
|
4
|
+
}
|
|
5
|
+
export function APP_QUERY_TRANSFORM(data: any): {
|
|
6
|
+
appMetafields: any;
|
|
7
|
+
appInfo: any;
|
|
8
|
+
appInstallation: any;
|
|
9
|
+
};
|
|
10
|
+
declare const INSTALLATION_BASIC: string;
|
|
11
|
+
declare const INSTALLATION: string;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/graph.js"],"names":[],"mappings":";;;;AAoEO;;;;EA4DN;AA9FD,yCAMC;AAED,mCAmBC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.APP_QUERY_TRANSFORM = exports.APP_QUERIES = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const shared_1 = require("../../shared");
|
|
6
|
+
const FRAGMENTS = {
|
|
7
|
+
APP_INSTALLATION: `
|
|
8
|
+
id
|
|
9
|
+
launchUrl
|
|
10
|
+
uninstallUrl
|
|
11
|
+
app {
|
|
12
|
+
id
|
|
13
|
+
handle
|
|
14
|
+
installUrl
|
|
15
|
+
appStoreAppUrl
|
|
16
|
+
}
|
|
17
|
+
`,
|
|
18
|
+
APP_SUBSCRIPTION: `
|
|
19
|
+
id
|
|
20
|
+
name
|
|
21
|
+
test
|
|
22
|
+
`,
|
|
23
|
+
APP_PURCHASE: `
|
|
24
|
+
id
|
|
25
|
+
status
|
|
26
|
+
name
|
|
27
|
+
test
|
|
28
|
+
`,
|
|
29
|
+
APP_METAFIELD: `
|
|
30
|
+
id
|
|
31
|
+
key
|
|
32
|
+
type
|
|
33
|
+
value
|
|
34
|
+
namespace
|
|
35
|
+
`,
|
|
36
|
+
};
|
|
37
|
+
const INSTALLATION_BASIC = `
|
|
38
|
+
query getAppInstallationBasic {
|
|
39
|
+
currentAppInstallation {
|
|
40
|
+
${FRAGMENTS.APP_INSTALLATION}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
`;
|
|
44
|
+
const INSTALLATION = `
|
|
45
|
+
query getAppInstallation($namespace: String!) {
|
|
46
|
+
currentAppInstallation {
|
|
47
|
+
${FRAGMENTS.APP_INSTALLATION}
|
|
48
|
+
activeSubscriptions {
|
|
49
|
+
${FRAGMENTS.APP_SUBSCRIPTION}
|
|
50
|
+
}
|
|
51
|
+
oneTimePurchases(first: 250, reverse: true) {
|
|
52
|
+
nodes {
|
|
53
|
+
${FRAGMENTS.APP_PURCHASE}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
metafields(namespace: $namespace, first: 50, reverse: true) {
|
|
57
|
+
nodes {
|
|
58
|
+
${FRAGMENTS.APP_METAFIELD}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
`;
|
|
64
|
+
exports.APP_QUERIES = {
|
|
65
|
+
INSTALLATION_BASIC,
|
|
66
|
+
INSTALLATION,
|
|
67
|
+
};
|
|
68
|
+
const APP_QUERY_TRANSFORM = (data) => {
|
|
69
|
+
const { id: appInstallationId, launchUrl, uninstallUrl, activeSubscriptions, app: { id: appId, handle, installUrl, appStoreAppUrl, } = {}, oneTimePurchases: { nodes: oneTimePurchases, } = {}, metafields: { nodes: metafields, } = {}, } = data !== null && data !== void 0 ? data : {};
|
|
70
|
+
const activePurchases = (0, shared_1.ensureArray)(oneTimePurchases).reduce((_activePurchases, _a) => {
|
|
71
|
+
var { status } = _a, oneTimePurchase = tslib_1.__rest(_a, ["status"]);
|
|
72
|
+
return ([
|
|
73
|
+
..._activePurchases,
|
|
74
|
+
...(status === 'ACTIVE') ? [
|
|
75
|
+
oneTimePurchase
|
|
76
|
+
] : []
|
|
77
|
+
]);
|
|
78
|
+
}, []);
|
|
79
|
+
// NOTE: removing namespace for security
|
|
80
|
+
const appMetafields = (0, shared_1.ensureArray)(metafields).reduce((_appMetafields,
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
82
|
+
_a) => {
|
|
83
|
+
var
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
85
|
+
{ namespace: _namespace, key } = _a, metafield = tslib_1.__rest(_a,
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
87
|
+
["namespace", "key"]);
|
|
88
|
+
return (Object.assign(Object.assign({}, _appMetafields), { [key]: metafield }));
|
|
89
|
+
}, {});
|
|
90
|
+
return {
|
|
91
|
+
appMetafields,
|
|
92
|
+
appInfo: Object.assign(Object.assign(Object.assign({ id: appId }, handle && { handle }), installUrl && { installUrl }), appStoreAppUrl && { appStoreAppUrl }),
|
|
93
|
+
appInstallation: Object.assign(Object.assign({ id: appInstallationId, activeSubscriptions,
|
|
94
|
+
activePurchases }, launchUrl && {
|
|
95
|
+
launchURL: launchUrl,
|
|
96
|
+
}), uninstallUrl && {
|
|
97
|
+
uninstallURL: uninstallUrl,
|
|
98
|
+
}),
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
exports.APP_QUERY_TRANSFORM = APP_QUERY_TRANSFORM;
|
|
102
|
+
// TODO: move out of shared
|
|
103
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/lib/utils/graph.js"],"names":[],"mappings":";;;;AAAA,yCAA0C;AAE1C,MAAM,SAAS,GAAG;IAChB,gBAAgB,EAAE;;;;;;;;;;GAUjB;IACD,gBAAgB,EAAE;;;;GAIjB;IACD,YAAY,EAAE;;;;;GAKb;IACD,aAAa,EAAE;;;;;;GAMd;CACF,CAAA;AAED,MAAM,kBAAkB,GAAG;;;QAGnB,SAAS,CAAC,gBAAgB;;;CAGjC,CAAA;AAED,MAAM,YAAY,GAAG;;;QAGb,SAAS,CAAC,gBAAgB;;UAExB,SAAS,CAAC,gBAAgB;;;;YAIxB,SAAS,CAAC,YAAY;;;;;YAKtB,SAAS,CAAC,aAAa;;;;;CAKlC,CAAA;AAEY,QAAA,WAAW,GAAG;IACzB,kBAAkB;IAClB,YAAY;CACb,CAAA;AAEM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,EAAE;IAC1C,MAAM,EACJ,EAAE,EAAE,iBAAiB,EACrB,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,GAAG,EAAE,EACH,EAAE,EAAE,KAAK,EACT,MAAM,EACN,UAAU,EACV,cAAc,GACf,GAAG,EAAE,EACN,gBAAgB,EAAE,EAChB,KAAK,EAAE,gBAAgB,GACxB,GAAG,EAAE,EACN,UAAU,EAAE,EACV,KAAK,EAAE,UAAU,GAClB,GAAG,EAAE,GACP,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;IAEd,MAAM,eAAe,GAAG,IAAA,oBAAW,EAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAC3D,gBAAgB,EAChB,EAA8B,EAC9B,EAAE;YADF,EAAE,MAAM,OAAsB,EAAjB,eAAe,sBAA5B,UAA8B,CAAF;QACzB,OAAA,CAAC;YACJ,GAAG,gBAAgB;YACnB,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACzB,eAAe;aAChB,CAAC,CAAC,CAAC,EAAE;SACP,CAAC,CAAA;KAAA,EAAE,EAAE,CAAC,CAAA;IAEP,wCAAwC;IACxC,MAAM,aAAa,GAAG,IAAA,oBAAW,EAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CACnD,cAAc;IACd,6DAA6D;IAC7D,EAA4C,EAC5C,EAAE;;QAFF,6DAA6D;QAC7D,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,OAAgB,EAAX,SAAS;QAD1C,6DAA6D;QAC7D,oBAA4C,CAAF;QACvC,OAAA,iCACA,cAAc,KACjB,CAAC,GAAG,CAAC,EAAE,SAAS,IAChB,CAAA;KAAA,EAAE,EAAE,CAAC,CAAA;IAEP,OAAO;QACL,aAAa;QACb,OAAO,8CACL,EAAE,EAAE,KAAK,IACN,MAAM,IAAI,EAAE,MAAM,EAAE,GACpB,UAAU,IAAI,EAAE,UAAU,EAAE,GAC5B,cAAc,IAAI,EAAE,cAAc,EAAE,CACxC;QACD,eAAe,gCACb,EAAE,EAAE,iBAAiB,EACrB,mBAAmB;YACnB,eAAe,IACZ,SAAS,IAAI;YACd,SAAS,EAAE,SAAS;SACrB,GACE,YAAY,IAAI;YACjB,YAAY,EAAE,YAAY;SAC3B,CACF;KACF,CAAA;AACH,CAAC,CAAA;AA5DY,QAAA,mBAAmB,uBA4D/B;AAGD,2BAA2B"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export * from "./billing";
|
|
2
2
|
export * from "./crypto";
|
|
3
3
|
export * from "./firebase";
|
|
4
|
-
export * from "./
|
|
4
|
+
export * from "./graph";
|
|
5
5
|
export * from "./session";
|
|
6
6
|
export * from "./shopify";
|
|
7
7
|
export * from "./shopify-api-js/oauth";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.js"],"names":[],"mappings":""}
|
package/dist/lib/utils/index.js
CHANGED
|
@@ -1,23 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
|
|
14
|
-
__exportStar(require("./
|
|
15
|
-
__exportStar(require("./crypto"), exports);
|
|
16
|
-
__exportStar(require("./
|
|
17
|
-
__exportStar(require("./
|
|
18
|
-
__exportStar(require("./
|
|
19
|
-
__exportStar(require("./
|
|
20
|
-
__exportStar(require("./
|
|
21
|
-
__exportStar(require("./shopify"), exports);
|
|
22
|
-
__exportStar(require("./shopify-api-js/oauth"), exports);
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./billing"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./crypto"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./firebase"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./graph"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./session"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./shopify"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./shopify-api-js/oauth"), exports);
|
|
23
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.js"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,mDAAwB;AACxB,qDAA0B;AAC1B,kDAAuB;AACvB,oDAAyB;AACzB,oDAAyB;AACzB,iEAAsC"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
export function getShopifyHelpers(serverRuntimeConfig: any, { shop }: {
|
|
2
2
|
shop: any;
|
|
3
3
|
}): Promise<{
|
|
4
|
-
|
|
5
|
-
loadSession: ({ req, res }?: {
|
|
4
|
+
getVerifiedClients: (() => undefined) | (({ req, res, apiVersion }?: {
|
|
6
5
|
req: any;
|
|
7
6
|
res: any;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
7
|
+
apiVersion: any;
|
|
8
|
+
}) => Promise<{
|
|
9
|
+
Graphql: import("@shopify/shopify-api/lib/clients/graphql/graphql_client").GraphqlClient;
|
|
10
|
+
Rest: import("@shopify/shopify-api/lib/clients/rest/rest_client").RestClient;
|
|
11
|
+
} | undefined>);
|
|
12
|
+
getAppUrl: (() => undefined) | ((_appPath: any) => Promise<string | undefined>);
|
|
13
|
+
loadSession: (() => {}) | (({ req, res }?: {
|
|
14
|
+
req: any;
|
|
15
|
+
res: any;
|
|
16
|
+
}) => Promise<any>);
|
|
17
|
+
storeSession: (() => {}) | ((session: any) => Promise<any>);
|
|
18
|
+
updateSession: (() => {}) | ((sessionId: any, data: any) => Promise<any>);
|
|
19
|
+
deleteSessions: (() => undefined) | ((sessionIds: any) => Promise<any[]>);
|
|
20
|
+
findSessionIds: (() => never[]) | ((_shop: any) => Promise<any[]>);
|
|
21
|
+
ensureBilling: (() => undefined) | ((session: any, skipBillingCheck: any) => Promise<any>);
|
|
22
|
+
shopify: import("@shopify/shopify-api").Shopify<import("@shopify/shopify-api").ShopifyRestResources> | undefined;
|
|
24
23
|
}>;
|
|
24
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/session.js"],"names":[],"mappings":"AA2BO;;;;;;;;;;;;;;;;;;;;;;GA8JN"}
|
|
@@ -1,28 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
-
var t = {};
|
|
4
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
-
t[p] = s[p];
|
|
6
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
-
t[p[i]] = s[p[i]];
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
};
|
|
13
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.
|
|
3
|
+
exports.getShopifyHelpers = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
15
5
|
const js_base64_1 = require("js-base64");
|
|
16
6
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
17
7
|
const luxon_1 = require("luxon");
|
|
8
|
+
const shared_1 = require("../../shared");
|
|
18
9
|
const billing_1 = require("./billing");
|
|
19
10
|
const shopify_1 = require("./shopify");
|
|
20
11
|
const firebase_1 = require("./firebase");
|
|
21
12
|
const crypto_1 = require("./crypto");
|
|
22
|
-
const
|
|
23
|
-
const getShopifyHelpers = async (serverRuntimeConfig, { shop }) => {
|
|
13
|
+
const getShopifyHelpers = (serverRuntimeConfig, { shop }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
14
|
var _a, _b;
|
|
25
|
-
const shopify = shopify_1.getInitializedShopify(serverRuntimeConfig);
|
|
15
|
+
const shopify = (0, shopify_1.getInitializedShopify)(serverRuntimeConfig);
|
|
26
16
|
const { FB_CONFIG, FB_ROOT_COLLECTION, SESSION_CONFIG, APP_ID, PAYMENT_CONFIG } = serverRuntimeConfig;
|
|
27
17
|
const shopId = (_b = (_a = shopify === null || shopify === void 0 ? void 0 : shopify.utils) === null || _a === void 0 ? void 0 : _a.sanitizeShop) === null || _b === void 0 ? void 0 : _b.call(_a, shop);
|
|
28
18
|
const cryptoHandler = crypto_1.CryptoHandler.getInstance(SESSION_CONFIG);
|
|
@@ -31,101 +21,106 @@ const getShopifyHelpers = async (serverRuntimeConfig, { shop }) => {
|
|
|
31
21
|
configurationId: APP_ID,
|
|
32
22
|
});
|
|
33
23
|
//#region internal shopifyHelper implementations
|
|
34
|
-
const decryptVerifySession =
|
|
35
|
-
var
|
|
24
|
+
const decryptVerifySession = ({ req, res } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
25
|
+
var _c, _d, _e;
|
|
36
26
|
try {
|
|
37
27
|
const isOnline = ((req != undefined) && (res != undefined));
|
|
38
28
|
const sessionId = (isOnline)
|
|
39
|
-
? (
|
|
29
|
+
? (yield shopify.session.getCurrentId({
|
|
40
30
|
isOnline,
|
|
41
31
|
rawRequest: req,
|
|
42
32
|
rawResponse: res,
|
|
43
|
-
})) : (
|
|
33
|
+
})) : (yield shopify.session.getOfflineId(shop) // NOTE: not sure if this is working yet?
|
|
44
34
|
);
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
throw new
|
|
35
|
+
const _f = (_c = (yield (0, firebase_1.loadCallback)(sessionHandler, shopId, sessionId))) !== null && _c !== void 0 ? _c : {}, { accessToken: encryptedAccessToken } = _f, session = tslib_1.__rest(_f, ["accessToken"]);
|
|
36
|
+
if ((0, shared_1.stringEmpty)(encryptedAccessToken)) {
|
|
37
|
+
throw new shared_1.ShopifySessionMissingError('Missing session');
|
|
48
38
|
}
|
|
49
|
-
if (
|
|
39
|
+
if ((0, shared_1.stringNotEmpty)(session === null || session === void 0 ? void 0 : session.shop) && (session.shop !== shop)) {
|
|
50
40
|
throw new Error('Invalid shop');
|
|
51
41
|
}
|
|
52
42
|
// NOTE only online sessions have expirations
|
|
53
43
|
const sessionExpired = isOnline && (!(session === null || session === void 0 ? void 0 : session.expires) || (luxon_1.DateTime.fromISO(session.expires) < luxon_1.DateTime.now()));
|
|
54
|
-
const sessionActive = (!sessionExpired &&
|
|
44
|
+
const sessionActive = (!sessionExpired && (0, shared_1.arraysMatch)((0, shared_1.splitCommas)((_e = (_d = shopify.config) === null || _d === void 0 ? void 0 : _d.scopes) === null || _e === void 0 ? void 0 : _e.toString()), (0, shared_1.splitCommas)(session === null || session === void 0 ? void 0 : session.scope)));
|
|
55
45
|
if (!sessionActive) {
|
|
56
|
-
throw new
|
|
46
|
+
throw new shared_1.ShopifySessionAuthenticationError('Inactive session');
|
|
57
47
|
}
|
|
58
48
|
return Object.assign(Object.assign({}, session), { accessToken: cryptoHandler.decrypt(encryptedAccessToken) });
|
|
59
49
|
}
|
|
60
50
|
catch (error) {
|
|
61
|
-
if (error instanceof
|
|
51
|
+
if (error instanceof shared_1.ShopifySessionAuthenticationError) {
|
|
62
52
|
throw error;
|
|
63
53
|
}
|
|
64
|
-
throw new
|
|
54
|
+
throw new shared_1.ShopifyAuthenticationError(error === null || error === void 0 ? void 0 : error.message);
|
|
65
55
|
}
|
|
66
|
-
};
|
|
56
|
+
});
|
|
67
57
|
// TODO: handle encrypting other keys
|
|
68
58
|
const ensureEncryptedSession = (_session) => {
|
|
69
|
-
const { accessToken } = _session, session = __rest(_session, ["accessToken"]);
|
|
59
|
+
const { accessToken } = _session, session = tslib_1.__rest(_session, ["accessToken"]);
|
|
70
60
|
return Object.assign(Object.assign({}, session), accessToken && {
|
|
71
61
|
accessToken: cryptoHandler.encrypt(accessToken),
|
|
72
62
|
});
|
|
73
63
|
};
|
|
74
|
-
const encryptStoreSession =
|
|
64
|
+
const encryptStoreSession = (session) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
65
|
+
return ((0, firebase_1.storeCallback)(sessionHandler, shopId, ensureEncryptedSession(session)));
|
|
66
|
+
});
|
|
75
67
|
// TODO: handle encrypting other keys
|
|
76
|
-
const encryptUpdateSession =
|
|
77
|
-
|
|
78
|
-
|
|
68
|
+
const encryptUpdateSession = (session) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
69
|
+
return ((0, firebase_1.updateCallback)(sessionHandler, shopId, ensureEncryptedSession(session)));
|
|
70
|
+
});
|
|
71
|
+
const buildEmbeddedAppUrl = (_appPath) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
72
|
+
if ((0, shared_1.stringEmpty)(shop)) {
|
|
79
73
|
return undefined;
|
|
80
74
|
}
|
|
81
|
-
const embeddedAppBaseUrl =
|
|
82
|
-
const appPath =
|
|
83
|
-
return `${embeddedAppBaseUrl}${
|
|
84
|
-
};
|
|
75
|
+
const embeddedAppBaseUrl = yield shopify.auth.buildEmbeddedAppUrl((0, js_base64_1.encode)(`${shop}/admin`));
|
|
76
|
+
const appPath = (0, shared_1.removeLeadingSlash)(_appPath);
|
|
77
|
+
return `${embeddedAppBaseUrl}${(0, shared_1.stringNotEmpty)(appPath) ? `/${appPath}` : ''}`;
|
|
78
|
+
});
|
|
79
|
+
const getVerifiedClients = ({ req, res, apiVersion } = {}) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
80
|
+
var _g;
|
|
81
|
+
if ((0, shared_1.stringEmpty)(shop)) {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
const session = yield decryptVerifySession({ req, res });
|
|
86
|
+
const Graphql = new shopify.clients.Graphql(Object.assign({ session }, apiVersion && { apiVersion }));
|
|
87
|
+
const isOnline = (req != undefined) && (res != undefined);
|
|
88
|
+
if (isOnline && (0, shared_1.isTrue)((_g = serverRuntimeConfig.PAYMENT_CONFIG) === null || _g === void 0 ? void 0 : _g.required)) {
|
|
89
|
+
const confirmationUrl = yield (0, billing_1.ensureBilling)(session);
|
|
90
|
+
if ((0, shared_1.stringNotEmpty)(confirmationUrl)) {
|
|
91
|
+
throw new shared_1.ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// NOTE making a test call to ensure a valid session for free apps
|
|
96
|
+
yield Graphql.query({ data: shopify_1.SHOP_QUERY });
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
Graphql,
|
|
100
|
+
Rest: new shopify.clients.Rest(Object.assign({ session }, apiVersion && { apiVersion })),
|
|
101
|
+
// TODO: add support for Storefront client (takes different params)
|
|
102
|
+
// Storefront: shopify.clients.Storefront({ ...apiVersion && { apiVersion } }),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
if (error instanceof shopify_api_1.HttpResponseError &&
|
|
107
|
+
error.response.code === 401) {
|
|
108
|
+
throw new shared_1.ShopifyAuthenticationError('Not authenticated');
|
|
109
|
+
}
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
85
113
|
//#endregion internal shopifyHelper implementations
|
|
86
|
-
return Object.assign({ shopify, getAppUrl: () => undefined, loadSession: () => ({}), storeSession: () => ({}), updateSession: () => ({}), deleteSessions: () => undefined, findSessionIds: () => ([]), ensureBilling: () => undefined }, shopify && {
|
|
114
|
+
return Object.assign({ shopify, getAppUrl: () => undefined, getVerifiedClients: () => undefined, loadSession: () => ({}), storeSession: () => ({}), updateSession: () => ({}), deleteSessions: () => undefined, findSessionIds: () => ([]), ensureBilling: () => undefined }, shopify && {
|
|
115
|
+
getVerifiedClients,
|
|
87
116
|
getAppUrl: buildEmbeddedAppUrl,
|
|
88
117
|
loadSession: decryptVerifySession,
|
|
89
118
|
storeSession: encryptStoreSession,
|
|
90
|
-
updateSession:
|
|
91
|
-
deleteSessions:
|
|
92
|
-
findSessionIds:
|
|
93
|
-
ensureBilling:
|
|
94
|
-
// eslint-disable-next-line no-undef
|
|
119
|
+
updateSession: (sessionId, data) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return encryptUpdateSession(Object.assign(Object.assign({}, data), { id: sessionId })); }),
|
|
120
|
+
deleteSessions: (sessionIds) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, firebase_1.deleteSessionsCallback)(sessionHandler, shopId, sessionIds); }),
|
|
121
|
+
findSessionIds: (_shop) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { var _h, _j; return (0, firebase_1.findSessionIdsByShop)(sessionHandler, (_j = (_h = shopify === null || shopify === void 0 ? void 0 : shopify.utils) === null || _h === void 0 ? void 0 : _h.sanitizeShop) === null || _j === void 0 ? void 0 : _j.call(_h, _shop)); }),
|
|
122
|
+
ensureBilling: (session, skipBillingCheck) => tslib_1.__awaiter(void 0, void 0, void 0, function* () { return (0, billing_1.ensureBilling)(PAYMENT_CONFIG, { session, shopify, skipBillingCheck }); }),
|
|
95
123
|
});
|
|
96
|
-
};
|
|
124
|
+
});
|
|
97
125
|
exports.getShopifyHelpers = getShopifyHelpers;
|
|
98
|
-
const getVerifiedClients = async (serverRuntimeConfig, { req, res, shop, apiVersion }) => {
|
|
99
|
-
var _a;
|
|
100
|
-
try {
|
|
101
|
-
const isOnline = (req != undefined) && (res != undefined);
|
|
102
|
-
const { shopify, loadSession, ensureBilling } = await exports.getShopifyHelpers(serverRuntimeConfig, { shop });
|
|
103
|
-
const session = await loadSession({ req, res });
|
|
104
|
-
const Graphql = new shopify.clients.Graphql(Object.assign({ session }, apiVersion && { apiVersion }));
|
|
105
|
-
if (isOnline && runtime_1.isTrue((_a = serverRuntimeConfig.PAYMENT_CONFIG) === null || _a === void 0 ? void 0 : _a.required)) {
|
|
106
|
-
const confirmationUrl = await ensureBilling(session);
|
|
107
|
-
if (runtime_1.stringNotEmpty(confirmationUrl)) {
|
|
108
|
-
throw new runtime_1.ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
// NOTE making a test call to ensure a valid session for free apps
|
|
113
|
-
await Graphql.query({ data: shopify_1.SHOP_QUERY });
|
|
114
|
-
}
|
|
115
|
-
return {
|
|
116
|
-
Graphql,
|
|
117
|
-
Rest: new shopify.clients.Rest(Object.assign({ session }, apiVersion && { apiVersion })),
|
|
118
|
-
// TODO: add support for Storefront client (takes different params)
|
|
119
|
-
// Storefront: shopify.clients.Storefront({ ...apiVersion && { apiVersion } }),
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
if (error instanceof shopify_api_1.HttpResponseError &&
|
|
124
|
-
error.response.code === 401) {
|
|
125
|
-
throw new runtime_1.ShopifyAuthenticationError('Not authenticated');
|
|
126
|
-
}
|
|
127
|
-
throw error;
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
exports.getVerifiedClients = getVerifiedClients;
|
|
131
126
|
//# sourceMappingURL=session.js.map
|