@agnostack/next-shopify 1.7.0-alpha.4 → 1.7.0-alpha.41
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/handlers/api.js +21 -8
- package/dist/handlers/api.js.map +1 -1
- package/dist/handlers/ssr.d.ts +1 -1
- package/dist/handlers/ssr.js +14 -15
- package/dist/handlers/ssr.js.map +1 -1
- package/dist/helpers/auth.d.ts +1 -9
- package/dist/helpers/auth.js +11 -11
- package/dist/helpers/auth.js.map +1 -1
- package/dist/helpers/callback.d.ts +1 -1
- package/dist/helpers/callback.js +29 -19
- package/dist/helpers/callback.js.map +1 -1
- package/dist/helpers/graph.d.ts +1 -1
- package/dist/helpers/graph.js +3 -6
- package/dist/helpers/graph.js.map +1 -1
- package/dist/helpers/rest.js +6 -9
- package/dist/helpers/rest.js.map +1 -1
- package/dist/helpers/uninstall.js +10 -17
- package/dist/helpers/uninstall.js.map +1 -1
- package/dist/utils/billing.d.ts +11 -20
- package/dist/utils/billing.js +54 -192
- package/dist/utils/billing.js.map +1 -1
- package/dist/utils/constants.d.ts +4 -5
- package/dist/utils/constants.js +4 -72
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/display.d.ts +4 -1
- package/dist/utils/display.js +25 -1
- package/dist/utils/display.js.map +1 -1
- package/dist/utils/firebase.d.ts +13 -6
- package/dist/utils/firebase.js +70 -41
- package/dist/utils/firebase.js.map +1 -1
- package/dist/utils/session.d.ts +16 -11
- package/dist/utils/session.js +52 -43
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/shopify-api-node/beginAuth.js +3 -3
- package/dist/utils/shopify-api-node/beginAuth.js.map +1 -1
- package/dist/utils/shopify.d.ts +2 -3
- package/dist/utils/shopify.js +49 -32
- package/dist/utils/shopify.js.map +1 -1
- package/dist/withShopify.js +15 -22
- package/dist/withShopify.js.map +1 -1
- package/package.json +2 -1
- package/CHANGELOG.md +0 -483
package/dist/utils/firebase.js
CHANGED
|
@@ -21,11 +21,12 @@ const constants_1 = require("./constants");
|
|
|
21
21
|
const singleton = Symbol('singleton');
|
|
22
22
|
const singletonEnforcer = Symbol('singletonEnforcer');
|
|
23
23
|
class FirebaseSessionHandler {
|
|
24
|
-
constructor(enforcer, collection = constants_1.COLLECTION_ROOT) {
|
|
24
|
+
constructor(enforcer, { config, collection = constants_1.COLLECTION_ROOT }) {
|
|
25
25
|
this.type = 'FirebaseSessionHandler';
|
|
26
26
|
if (enforcer !== singletonEnforcer) {
|
|
27
27
|
throw new Error('Cannot instantiate FirebaseSessionHandler directly, please use getInstance()');
|
|
28
28
|
}
|
|
29
|
+
this.config = config;
|
|
29
30
|
this.collection = collection;
|
|
30
31
|
}
|
|
31
32
|
get isInitialized() {
|
|
@@ -41,9 +42,9 @@ class FirebaseSessionHandler {
|
|
|
41
42
|
this.firestore = project.firestore();
|
|
42
43
|
}
|
|
43
44
|
}
|
|
44
|
-
static getInstance(firebaseConfig, collection) {
|
|
45
|
+
static getInstance(firebaseConfig, { collection, config }) {
|
|
45
46
|
if (!this[singleton]) {
|
|
46
|
-
this[singleton] = new FirebaseSessionHandler(singletonEnforcer, collection);
|
|
47
|
+
this[singleton] = new FirebaseSessionHandler(singletonEnforcer, { collection, config });
|
|
47
48
|
}
|
|
48
49
|
if (!this[singleton].isInitialized) {
|
|
49
50
|
this[singleton].initializeFireStore(firebaseConfig);
|
|
@@ -52,12 +53,12 @@ class FirebaseSessionHandler {
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
exports.FirebaseSessionHandler = FirebaseSessionHandler;
|
|
55
|
-
const storeCallback = async (
|
|
56
|
+
const storeCallback = async (instance, session) => {
|
|
56
57
|
try {
|
|
57
58
|
const docRef = instance.firestore
|
|
58
59
|
.collection(instance.collection)
|
|
59
|
-
.doc(
|
|
60
|
-
.collection(
|
|
60
|
+
.doc(instance.config.shop)
|
|
61
|
+
.collection(instance.config.configurationId)
|
|
61
62
|
.doc(session.id);
|
|
62
63
|
const _a = JSON.parse(JSON.stringify(session)), { onlineAccessInfo: _onlineAccessInfo } = _a, docData = __rest(_a, ["onlineAccessInfo"]);
|
|
63
64
|
// NOTE: destructuring out associated_user for DPA compliance
|
|
@@ -67,18 +68,18 @@ const storeCallback = async (session, data, instance) => {
|
|
|
67
68
|
await docRef.set(payload);
|
|
68
69
|
return true;
|
|
69
70
|
}
|
|
70
|
-
catch (
|
|
71
|
-
console.error('FirebaseSessionHandler.storeCallback error',
|
|
72
|
-
throw
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error('FirebaseSessionHandler.storeCallback error', error);
|
|
73
|
+
throw error;
|
|
73
74
|
}
|
|
74
75
|
};
|
|
75
76
|
exports.storeCallback = storeCallback;
|
|
76
|
-
const loadCallback = async (
|
|
77
|
+
const loadCallback = async (instance, sessionId) => {
|
|
77
78
|
try {
|
|
78
79
|
const docRef = instance.firestore
|
|
79
80
|
.collection(instance.collection)
|
|
80
|
-
.doc(
|
|
81
|
-
.collection(
|
|
81
|
+
.doc(instance.config.shop)
|
|
82
|
+
.collection(instance.config.configurationId)
|
|
82
83
|
.doc(sessionId);
|
|
83
84
|
const document = await docRef.get();
|
|
84
85
|
if (document.exists) {
|
|
@@ -86,56 +87,84 @@ const loadCallback = async (sessionId, data, instance) => {
|
|
|
86
87
|
}
|
|
87
88
|
return undefined;
|
|
88
89
|
}
|
|
89
|
-
catch (
|
|
90
|
-
console.error('FirebaseSessionHandler.loadCallback error',
|
|
91
|
-
throw
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error('FirebaseSessionHandler.loadCallback error', error);
|
|
92
|
+
throw error;
|
|
92
93
|
}
|
|
93
94
|
};
|
|
94
95
|
exports.loadCallback = loadCallback;
|
|
95
|
-
const deleteSessionsCallback = async (
|
|
96
|
+
const deleteSessionsCallback = async (instance, sessionIds) => {
|
|
97
|
+
const collectionRef = instance.firestore
|
|
98
|
+
.collection(instance.collection)
|
|
99
|
+
.doc(instance.config.shop)
|
|
100
|
+
.collection(instance.config.configurationId);
|
|
96
101
|
const _deleteSessionCallback = async (_sessionId) => {
|
|
97
102
|
try {
|
|
98
|
-
const docRef =
|
|
99
|
-
.collection(instance.collection)
|
|
100
|
-
.doc(data.shop)
|
|
101
|
-
.collection(data.app)
|
|
102
|
-
.doc(_sessionId);
|
|
103
|
+
const docRef = collectionRef.doc(_sessionId);
|
|
103
104
|
await docRef.delete();
|
|
104
105
|
return true;
|
|
105
106
|
}
|
|
106
|
-
catch (
|
|
107
|
-
console.error('FirebaseSessionHandler.deleteSessionsCallback error',
|
|
108
|
-
throw
|
|
107
|
+
catch (error) {
|
|
108
|
+
console.error('FirebaseSessionHandler.deleteSessionsCallback error', error);
|
|
109
|
+
throw error;
|
|
109
110
|
}
|
|
110
111
|
};
|
|
111
112
|
await Promise.all(display_1.ensureArray(sessionIds).map((sessionId) => _deleteSessionCallback(sessionId)));
|
|
112
113
|
};
|
|
113
114
|
exports.deleteSessionsCallback = deleteSessionsCallback;
|
|
114
|
-
const
|
|
115
|
-
console.log('
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
const asyncFoo = async (foo) => {
|
|
116
|
+
console.log('asyncFoo');
|
|
117
|
+
return foo;
|
|
118
|
+
};
|
|
119
|
+
const findSessionsByShop = async (instance, shop) => {
|
|
120
|
+
console.log(`>>> ~~ instance`, instance);
|
|
121
|
+
console.log(`>>> ~~ shop`, shop);
|
|
122
|
+
if (display_1.stringEmpty(shop) || (shop !== instance.config.shop)) {
|
|
123
|
+
console.log('FirebaseSessionHandler.findSessionsByShop warn', shop);
|
|
118
124
|
return [];
|
|
119
125
|
}
|
|
120
126
|
try {
|
|
121
|
-
console.log(
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
.collection(
|
|
126
|
-
console.log(
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
console.log(`>>> ~~~!!!~ try`);
|
|
128
|
+
const foo = await asyncFoo('foo');
|
|
129
|
+
console.log(`>>> ~ foo`, foo);
|
|
130
|
+
const instanceRef = instance.firestore
|
|
131
|
+
.collection(instance.collection);
|
|
132
|
+
console.log(`>>> ~ instanceRef`, instanceRef);
|
|
133
|
+
console.log(`>>> ~ instanceRef.path`, instanceRef.path);
|
|
134
|
+
const docRef = instanceRef
|
|
135
|
+
.doc(shop);
|
|
136
|
+
console.log(`>>> ~ docRef`, docRef);
|
|
137
|
+
console.log(`>>> ~ docRef.path`, docRef.path);
|
|
138
|
+
const collectionRef = docRef
|
|
139
|
+
.collection(instance.config.configurationId);
|
|
140
|
+
console.log(`>>> ~ collectionRef`, collectionRef);
|
|
141
|
+
console.log(`>>> ~ collectionRef.path`, collectionRef.path);
|
|
142
|
+
const collection = await collectionRef.get();
|
|
143
|
+
console.log(`>>> ~ collection`, collection);
|
|
144
|
+
console.log(`>>> ~ collection.size`, collection.size);
|
|
145
|
+
console.log(`>>> ~ collection.empty`, collection.empty);
|
|
129
146
|
const sessions = [];
|
|
130
|
-
|
|
147
|
+
console.log(`>>> ~ sessions`, sessions);
|
|
148
|
+
collection.forEach((_doc) => {
|
|
149
|
+
console.log(`>>> ~ _doc`, _doc);
|
|
131
150
|
sessions.push(_doc.data());
|
|
132
151
|
});
|
|
133
|
-
|
|
152
|
+
//
|
|
153
|
+
// const collectionRef = instance.firestore
|
|
154
|
+
// .collection(instance.collection)
|
|
155
|
+
// .doc(shop)
|
|
156
|
+
// .collection(data.app)
|
|
157
|
+
// const querySnapshot = await collectionRef.get()
|
|
158
|
+
// const sessions = []
|
|
159
|
+
// querySnapshot.forEach((_doc) => {
|
|
160
|
+
// sessions.push(_doc.data())
|
|
161
|
+
// })
|
|
162
|
+
//
|
|
134
163
|
return sessions;
|
|
135
164
|
}
|
|
136
|
-
catch (
|
|
137
|
-
console.
|
|
138
|
-
throw
|
|
165
|
+
catch (error) {
|
|
166
|
+
console.log('FirebaseSessionHandler.findSessionsByShop error', error);
|
|
167
|
+
throw error;
|
|
139
168
|
}
|
|
140
169
|
};
|
|
141
170
|
exports.findSessionsByShop = findSessionsByShop;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/utils/firebase.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oEAAkC;AAElC,uCAIkB;AAClB,2CAA6C;AAE7C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAA;AACrC,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAErD,MAAa,sBAAsB;IACjC,YAAY,QAAQ,EAAE,UAAU,GAAG,2BAAe;
|
|
1
|
+
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/utils/firebase.js"],"names":[],"mappings":"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"}
|
package/dist/utils/session.d.ts
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
export function
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
export function getShopifyHelpers(serverRuntimeConfig: any, { shop, ...overrides }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
shop: any;
|
|
4
|
+
}): Promise<{
|
|
5
|
+
shopify: any;
|
|
6
|
+
storeSession: (session: any) => Promise<boolean>;
|
|
7
|
+
loadSession: (sessionId: any) => Promise<any>;
|
|
8
|
+
deleteSessions: (sessionIds: any) => Promise<void>;
|
|
9
|
+
findSession: (_shop: any) => Promise<any[]>;
|
|
10
|
+
}>;
|
|
11
|
+
export function getVerifiedClients(serverRuntimeConfig: any, { req, res, shop, apiVersion }: {
|
|
9
12
|
req: any;
|
|
10
13
|
res: any;
|
|
11
14
|
shop: any;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
apiVersion: any;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
Graphql: any;
|
|
18
|
+
Rest: any;
|
|
19
|
+
}>;
|
package/dist/utils/session.js
CHANGED
|
@@ -1,78 +1,87 @@
|
|
|
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
|
+
};
|
|
2
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
14
|
+
exports.getVerifiedClients = exports.getShopifyHelpers = void 0;
|
|
4
15
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
5
|
-
const
|
|
16
|
+
const luxon_1 = require("luxon");
|
|
6
17
|
const billing_1 = require("./billing");
|
|
18
|
+
const display_1 = require("./display");
|
|
19
|
+
const shopify_1 = require("./shopify");
|
|
20
|
+
const firebase_1 = require("./firebase");
|
|
7
21
|
const errors_1 = require("./errors");
|
|
8
22
|
const constants_1 = require("./constants");
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
const
|
|
23
|
+
const getShopifyHelpers = async (serverRuntimeConfig, _a) => {
|
|
24
|
+
var { shop } = _a, overrides = __rest(_a, ["shop"]);
|
|
25
|
+
const shopify = await shopify_1.getInitializedShopify(serverRuntimeConfig, overrides);
|
|
12
26
|
const { FB_CONFIG, FB_ROOT_COLLECTION, APP_ID } = serverRuntimeConfig;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const sessionHandler = firebase_1.FirebaseSessionHandler.getInstance(FB_CONFIG, FB_ROOT_COLLECTION);
|
|
27
|
+
const sessionHandler = firebase_1.FirebaseSessionHandler.getInstance(FB_CONFIG, {
|
|
28
|
+
collection: FB_ROOT_COLLECTION,
|
|
29
|
+
config: { configurationId: APP_ID, shop: shopify.utils.sanitizeShop(shop) },
|
|
30
|
+
});
|
|
18
31
|
return {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
shopify,
|
|
33
|
+
storeSession: async (session) => firebase_1.storeCallback(sessionHandler, session),
|
|
34
|
+
loadSession: async (sessionId) => firebase_1.loadCallback(sessionHandler, sessionId),
|
|
35
|
+
deleteSessions: async (sessionIds) => firebase_1.deleteSessionsCallback(sessionHandler, sessionIds),
|
|
36
|
+
findSession: async (_shop) => firebase_1.findSessionsByShop(sessionHandler, shopify.utils.sanitizeShop(_shop)),
|
|
24
37
|
};
|
|
25
38
|
};
|
|
26
|
-
exports.
|
|
27
|
-
// TODO re-enable (check scopes and expiration)
|
|
39
|
+
exports.getShopifyHelpers = getShopifyHelpers;
|
|
28
40
|
const isSessionActive = (session, config) => {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// return false
|
|
41
|
+
const scopes1 = display_1.splitCommas(config === null || config === void 0 ? void 0 : config.scopes.toString());
|
|
42
|
+
console.log(`>>> ~ scopes1`, scopes1);
|
|
43
|
+
const scopes2 = display_1.splitCommas(session.scope);
|
|
44
|
+
console.log(`>>> ~ scopes2`, scopes2);
|
|
45
|
+
const scopesUnchanged = display_1.arrayIncludesAll(scopes1, scopes2) && display_1.arrayIncludesAll(scopes2, scopes1);
|
|
46
|
+
console.log(`>>> ~ scopesUnchanged`, scopesUnchanged);
|
|
47
|
+
const sessionExpired = !(session === null || session === void 0 ? void 0 : session.expires) || (luxon_1.DateTime.fromISO(session.expires) < luxon_1.DateTime.now());
|
|
48
|
+
console.log(`>>> ~ sessionExpired`, sessionExpired);
|
|
49
|
+
return (scopesUnchanged && !sessionExpired);
|
|
39
50
|
};
|
|
40
|
-
const
|
|
51
|
+
const getVerifiedClients = async (serverRuntimeConfig, { req, res, shop, apiVersion }) => {
|
|
41
52
|
try {
|
|
42
|
-
const
|
|
43
|
-
if (sessionStorage) {
|
|
44
|
-
console.log('have sessionStorage');
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
console.log('have NO sessionStorage');
|
|
48
|
-
}
|
|
53
|
+
const { shopify, loadSession } = await exports.getShopifyHelpers(serverRuntimeConfig, { shop });
|
|
49
54
|
const { PAYMENT_CONFIG } = serverRuntimeConfig !== null && serverRuntimeConfig !== void 0 ? serverRuntimeConfig : {};
|
|
50
55
|
const sessionId = await shopify.session.getCurrentId({
|
|
51
56
|
isOnline: true,
|
|
52
57
|
rawRequest: req,
|
|
53
58
|
rawResponse: res,
|
|
54
59
|
});
|
|
55
|
-
const session = await
|
|
60
|
+
const session = await loadSession(sessionId);
|
|
56
61
|
if (!isSessionActive(session, shopify.config)) {
|
|
57
62
|
throw new errors_1.ShopifyAuthenticationError('Inactive session');
|
|
58
63
|
}
|
|
59
64
|
if (shop && (session === null || session === void 0 ? void 0 : session.shop) !== shop) {
|
|
60
65
|
throw new errors_1.ShopifyAuthenticationError('Invalid shop');
|
|
61
66
|
}
|
|
67
|
+
const Graphql = new shopify.clients.Graphql(Object.assign({ session }, apiVersion && { apiVersion }));
|
|
62
68
|
if (PAYMENT_CONFIG === null || PAYMENT_CONFIG === void 0 ? void 0 : PAYMENT_CONFIG.required) {
|
|
63
|
-
|
|
64
|
-
const confirmationUrl = await
|
|
65
|
-
console.log(
|
|
69
|
+
// HMMM: order of params/method sig??
|
|
70
|
+
const confirmationUrl = await billing_1.ensureBilling(shopify, session, PAYMENT_CONFIG);
|
|
71
|
+
console.log(`>>> > getVerifiedClients > confirmationUrl:`, confirmationUrl);
|
|
66
72
|
if (display_1.stringNotEmpty(confirmationUrl)) {
|
|
67
73
|
throw new errors_1.ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
|
|
68
74
|
}
|
|
69
75
|
}
|
|
70
76
|
else {
|
|
71
77
|
// NOTE making a test call to ensure a valid session for free apps
|
|
72
|
-
|
|
73
|
-
await client.query({ data: constants_1.SHOP_QUERY });
|
|
78
|
+
await Graphql.query({ data: constants_1.SHOP_QUERY });
|
|
74
79
|
}
|
|
75
|
-
return
|
|
80
|
+
return {
|
|
81
|
+
Graphql,
|
|
82
|
+
Rest: new shopify.clients.Rest(Object.assign({ session }, apiVersion && { apiVersion })),
|
|
83
|
+
// Storefront: shopify.clients.Storefront({ ...apiVersion && { apiVersion } }), TODO: add support for Storefront client (takes different params)
|
|
84
|
+
};
|
|
76
85
|
}
|
|
77
86
|
catch (error) {
|
|
78
87
|
if (error instanceof shopify_api_1.HttpResponseError &&
|
|
@@ -82,5 +91,5 @@ const getVerifiedSession = async ({ req, res, shop, shopify, serverRuntimeConfig
|
|
|
82
91
|
throw error;
|
|
83
92
|
}
|
|
84
93
|
};
|
|
85
|
-
exports.
|
|
94
|
+
exports.getVerifiedClients = getVerifiedClients;
|
|
86
95
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.js"],"names":[],"mappings":"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"}
|
|
@@ -8,15 +8,14 @@ const crypto_1 = __importDefault(require("crypto"));
|
|
|
8
8
|
const cookies_1 = __importDefault(require("cookies"));
|
|
9
9
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
10
10
|
const display_1 = require("../display");
|
|
11
|
-
const constants_1 = require("../constants");
|
|
12
11
|
const shopify_1 = require("../shopify");
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
13
|
// NOTE this is a custom implementation of the @shopify/shopify-api beginAuth method... see NOTE below
|
|
14
14
|
const beginAuth = async (props, { req, res, shop: shopProp, isOnline = true, }) => {
|
|
15
15
|
var _a;
|
|
16
16
|
const { APP_CONFIG, API_URLS } = props;
|
|
17
17
|
const _shop = shopProp || ((_a = req.query) === null || _a === void 0 ? void 0 : _a.shop);
|
|
18
|
-
|
|
19
|
-
const shopify = shopify_1.getInitializedShopify(props);
|
|
18
|
+
const shopify = await shopify_1.getInitializedShopify(props);
|
|
20
19
|
const shop = shopify.utils.sanitizeShop(_shop);
|
|
21
20
|
const state = `${isOnline ? 'online' : 'offline'}_${display_1.getGUID()}`;
|
|
22
21
|
const keys = [APP_CONFIG.apiSecretKey];
|
|
@@ -29,6 +28,7 @@ const beginAuth = async (props, { req, res, shop: shopProp, isOnline = true, })
|
|
|
29
28
|
};
|
|
30
29
|
const sigName = `${shopify_api_1.STATE_COOKIE_NAME}.sig`;
|
|
31
30
|
const signature = await crypto_1.default.createHmac('sha256', keys[0]).update(state).digest('base64');
|
|
31
|
+
// TODO investigate Error handling callback route. Cookie Error CookieNotFound [Error]: Cannot complete OAuth process. Could not find an OAuth cookie for shop url:
|
|
32
32
|
cookies.set(shopify_api_1.STATE_COOKIE_NAME, state, cookieOptions);
|
|
33
33
|
cookies.set(sigName, signature, cookieOptions);
|
|
34
34
|
// TODO: explore objectToQuerystring
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beginAuth.js","sourceRoot":"","sources":["../../../src/utils/shopify-api-node/beginAuth.js"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAC3B,sDAA6B;AAC7B,sDAAwD;AAExD,wCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"beginAuth.js","sourceRoot":"","sources":["../../../src/utils/shopify-api-node/beginAuth.js"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAC3B,sDAA6B;AAC7B,sDAAwD;AAExD,wCAAoC;AACpC,wCAAkD;AAClD,4CAA8C;AAE9C,sGAAsG;AAC/F,MAAM,SAAS,GAAG,KAAK,EAAE,KAAK,EAAE,EACrC,GAAG,EACH,GAAG,EACH,IAAI,EAAE,QAAQ,EACd,QAAQ,GAAG,IAAI,GAChB,EAAE,EAAE;;IACH,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IACtC,MAAM,KAAK,GAAG,QAAQ,KAAI,MAAA,GAAG,CAAC,KAAK,0CAAE,IAAI,CAAA,CAAA;IAEzC,MAAM,OAAO,GAAG,MAAM,+BAAqB,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,IAAI,iBAAO,EAAE,EAAE,CAAA;IAC/D,MAAM,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAE7D,MAAM,aAAa,GAAG;QACpB,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QACrC,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;KACb,CAAA;IACD,MAAM,OAAO,GAAG,GAAG,+BAAiB,MAAM,CAAA;IAC1C,MAAM,SAAS,GAAG,MAAM,gBAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAE3F,mKAAmK;IACnK,OAAO,CAAC,GAAG,CAAC,+BAAiB,EAAE,KAAK,EAAE,aAAa,CAAC,CAAA;IACpD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAA;IAE9C,oCAAoC;IACpC,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC;QACtC,SAAS,EAAE,UAAU,CAAC,MAAM;QAC5B,KAAK,EAAE,UAAU,CAAC,MAAM;QACxB,YAAY,EAAE,QAAQ,CAAC,2BAAe,CAAC,aAAa,CAAC;QACrD,KAAK;QACL,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;KAC9C,CAAC,CAAC,QAAQ,EAAE,CAAA;IAEb,OAAO,WAAW,IAAI,0BAA0B,WAAW,EAAE,CAAA;AAC/D,CAAC,CAAA;AAtCY,QAAA,SAAS,aAsCrB"}
|
package/dist/utils/shopify.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
export function getInitializedShopify(serverRuntimeConfig: any
|
|
2
|
-
export function initializeShopify(serverRuntimeConfig: any): Promise<import("@shopify/shopify-api").Shopify<import("@shopify/shopify-api").ShopifyRestResources>>;
|
|
1
|
+
export function getInitializedShopify(serverRuntimeConfig: any): Promise<any>;
|
|
3
2
|
export function getRedirectUrl(props: any, { req, res, query: _query, }: {
|
|
4
3
|
req: any;
|
|
5
4
|
res: any;
|
|
6
5
|
query: any;
|
|
7
|
-
}): Promise<
|
|
6
|
+
}): Promise<any>;
|
package/dist/utils/shopify.js
CHANGED
|
@@ -1,47 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getRedirectUrl = exports.
|
|
3
|
+
exports.getRedirectUrl = exports.getInitializedShopify = void 0;
|
|
4
4
|
require("@shopify/shopify-api/adapters/node");
|
|
5
5
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
6
|
-
|
|
6
|
+
// import { beginAuth } from './shopify-api-node'
|
|
7
7
|
const display_1 = require("./display");
|
|
8
8
|
const constants_1 = require("./constants");
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
if (existingHandlers.length === 0) {
|
|
22
|
-
shopify.webhooks.addHandlers(Object.entries(APP_WEBHOOKS).reduce((__payload, [topic, webhooks]) => (Object.assign(Object.assign({}, __payload), { [topic]: display_1.ensureArray(webhooks).map((webhook) => ({
|
|
23
|
-
deliveryMethod: shopify_api_1.DeliveryMethod.Http,
|
|
24
|
-
callbackUrl: webhook.path,
|
|
25
|
-
callback: async (topic, shop) => {
|
|
26
|
-
// NOTE our webhook logic is handled in each api route
|
|
27
|
-
console.log(`handleWebhook for ${shop}:${topic}`);
|
|
28
|
-
return true;
|
|
29
|
-
},
|
|
30
|
-
})) })), {}));
|
|
9
|
+
const getInitializedShopify = async (serverRuntimeConfig) => {
|
|
10
|
+
var _a, _b, _c;
|
|
11
|
+
const { APP_CONFIG, APP_WEBHOOKS, INITIALIZED_SHOPIFY } = serverRuntimeConfig;
|
|
12
|
+
let initializedShopify = INITIALIZED_SHOPIFY;
|
|
13
|
+
if (initializedShopify) {
|
|
14
|
+
const configurableWebhookTopics = Object.keys(APP_WEBHOOKS);
|
|
15
|
+
const installedTopics = (_c = await ((_b = (_a = initializedShopify === null || initializedShopify === void 0 ? void 0 : initializedShopify.webhooks) === null || _a === void 0 ? void 0 : _a.getTopicsAdded) === null || _b === void 0 ? void 0 : _b.call(_a))) !== null && _c !== void 0 ? _c : [];
|
|
16
|
+
// TODO: check both directions??
|
|
17
|
+
const missingTopic = installedTopics.find((topic) => !configurableWebhookTopics.includes(topic));
|
|
18
|
+
if (!missingTopic && installedTopics.includes(constants_1.API_WEBHOOK_TOPICS.APP_UNINSTALLED)) {
|
|
19
|
+
return initializedShopify;
|
|
20
|
+
}
|
|
31
21
|
}
|
|
32
|
-
|
|
22
|
+
initializedShopify = shopify_api_1.shopifyApi(APP_CONFIG);
|
|
23
|
+
initializedShopify.webhooks.addHandlers(Object.entries(APP_WEBHOOKS).reduce((_payload, [webhookTopic, webhooks]) => (Object.assign(Object.assign({}, _payload), { [webhookTopic]: display_1.ensureArray(webhooks).reduce((_topicWebhooks, { path, url }) => {
|
|
24
|
+
const callbackUrl = path || url;
|
|
25
|
+
if (display_1.stringEmpty(callbackUrl)) {
|
|
26
|
+
return _topicWebhooks;
|
|
27
|
+
}
|
|
28
|
+
return [
|
|
29
|
+
..._topicWebhooks,
|
|
30
|
+
{
|
|
31
|
+
deliveryMethod: shopify_api_1.DeliveryMethod.Http,
|
|
32
|
+
callbackUrl,
|
|
33
|
+
// TODO: clean up/confirm????
|
|
34
|
+
callback: async (topic, shop) => {
|
|
35
|
+
// NOTE our webhook logic is handled in each api route
|
|
36
|
+
console.log(`handle webhook callback for ${shop}:${topic}`);
|
|
37
|
+
return true;
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
];
|
|
41
|
+
}, []) })), {}));
|
|
42
|
+
return initializedShopify;
|
|
33
43
|
};
|
|
34
|
-
exports.
|
|
44
|
+
exports.getInitializedShopify = getInitializedShopify;
|
|
35
45
|
const getRedirectUrl = async (props, { req, res, query: _query, }) => {
|
|
36
46
|
var _a;
|
|
37
|
-
const { API_URLS, PAGE_PATHS } = props;
|
|
47
|
+
const { API_URLS, API_PATHS, PAGE_PATHS } = props;
|
|
38
48
|
const query = (_a = _query !== null && _query !== void 0 ? _query : req.query) !== null && _a !== void 0 ? _a : {};
|
|
39
49
|
const { embedded, host, shop: _shop } = query !== null && query !== void 0 ? query : {};
|
|
40
|
-
|
|
41
|
-
const shopify = exports.getInitializedShopify(props);
|
|
50
|
+
const shopify = await exports.getInitializedShopify(props);
|
|
42
51
|
const shop = shopify.utils.sanitizeShop(_shop);
|
|
43
52
|
if (display_1.stringEmpty(shop)) {
|
|
44
|
-
return `${PAGE_PATHS[constants_1.PAGE_ROUTE_NAMES.ERROR]}?code=no_shop_provided&type=getRedirectUrl
|
|
53
|
+
return res.redirect(`${PAGE_PATHS[constants_1.PAGE_ROUTE_NAMES.ERROR]}?code=no_shop_provided&type=getRedirectUrl`);
|
|
54
|
+
// return `${PAGE_PATHS[PAGE_ROUTE_NAMES.ERROR]}?code=no_shop_provided&type=getRedirectUrl`
|
|
45
55
|
}
|
|
46
56
|
if (embedded === '1') {
|
|
47
57
|
// TODO: explore objectToQuerystring
|
|
@@ -51,9 +61,16 @@ const getRedirectUrl = async (props, { req, res, query: _query, }) => {
|
|
|
51
61
|
}).toString();
|
|
52
62
|
// TODO: explore objectToQuerystring
|
|
53
63
|
const queryParams = new URLSearchParams(Object.assign(Object.assign({}, query), { shop, redirectUri: `${API_URLS[constants_1.API_ROUTE_NAMES.AUTH_CALLBACK]}?${redirectUriParams}` })).toString();
|
|
54
|
-
return `${PAGE_PATHS[constants_1.PAGE_ROUTE_NAMES.EXIT]}?${queryParams}
|
|
64
|
+
return res.redirect(`${PAGE_PATHS[constants_1.PAGE_ROUTE_NAMES.EXIT]}?${queryParams}`);
|
|
65
|
+
// return `${PAGE_PATHS[PAGE_ROUTE_NAMES.EXIT]}?${queryParams}`
|
|
55
66
|
}
|
|
56
|
-
return
|
|
67
|
+
return shopify.auth.begin({
|
|
68
|
+
shop,
|
|
69
|
+
callbackPath: API_PATHS[constants_1.API_ROUTE_NAMES.AUTH_CALLBACK],
|
|
70
|
+
isOnline: true,
|
|
71
|
+
rawRequest: req,
|
|
72
|
+
rawResponse: res,
|
|
73
|
+
});
|
|
57
74
|
};
|
|
58
75
|
exports.getRedirectUrl = getRedirectUrl;
|
|
59
76
|
//# sourceMappingURL=shopify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../src/utils/shopify.js"],"names":[],"mappings":";;;AAAA,8CAA2C;AAC3C,sDAAiE;AAEjE,
|
|
1
|
+
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../src/utils/shopify.js"],"names":[],"mappings":"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"}
|