@agnostack/next-shopify 1.7.0-alpha.6 → 1.7.0-alpha.60
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/auth.d.ts +1 -0
- package/dist/handlers/auth.js +34 -0
- package/dist/handlers/auth.js.map +1 -0
- package/dist/handlers/callback.d.ts +1 -0
- package/dist/{helpers → handlers}/callback.js +25 -31
- package/dist/handlers/callback.js.map +1 -0
- package/dist/handlers/graph.d.ts +1 -0
- package/dist/handlers/graph.js +75 -0
- package/dist/handlers/graph.js.map +1 -0
- package/dist/handlers/index.d.ts +5 -1
- package/dist/handlers/index.js +5 -1
- package/dist/handlers/index.js.map +1 -1
- package/dist/handlers/rest.d.ts +1 -0
- package/dist/handlers/rest.js +83 -0
- package/dist/handlers/rest.js.map +1 -0
- package/dist/handlers/ssr.d.ts +1 -1
- package/dist/handlers/ssr.js +11 -17
- package/dist/handlers/ssr.js.map +1 -1
- package/dist/handlers/uninstall.d.ts +6 -0
- package/dist/handlers/uninstall.js +59 -0
- package/dist/handlers/uninstall.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/billing.d.ts +12 -17
- package/dist/utils/billing.js +44 -195
- package/dist/utils/billing.js.map +1 -1
- package/dist/utils/constants.d.ts +4 -5
- package/dist/utils/constants.js +4 -111
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/display.d.ts +5 -1
- package/dist/utils/display.js +28 -1
- package/dist/utils/display.js.map +1 -1
- package/dist/utils/firebase.d.ts +13 -6
- package/dist/utils/firebase.js +39 -39
- package/dist/utils/firebase.js.map +1 -1
- package/dist/utils/session.d.ts +16 -11
- package/dist/utils/session.js +53 -40
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/shopify.d.ts +1 -7
- package/dist/utils/shopify.js +34 -51
- package/dist/utils/shopify.js.map +1 -1
- package/dist/withShopify.js +15 -24
- package/dist/withShopify.js.map +1 -1
- package/package.json +2 -1
- package/CHANGELOG.md +0 -497
- package/dist/handlers/api.d.ts +0 -10
- package/dist/handlers/api.js +0 -98
- package/dist/handlers/api.js.map +0 -1
- package/dist/helpers/auth.d.ts +0 -14
- package/dist/helpers/auth.js +0 -23
- package/dist/helpers/auth.js.map +0 -1
- package/dist/helpers/callback.d.ts +0 -9
- package/dist/helpers/callback.js.map +0 -1
- package/dist/helpers/graph.d.ts +0 -22
- package/dist/helpers/graph.js +0 -77
- package/dist/helpers/graph.js.map +0 -1
- package/dist/helpers/index.d.ts +0 -5
- package/dist/helpers/index.js +0 -17
- package/dist/helpers/index.js.map +0 -1
- package/dist/helpers/rest.d.ts +0 -22
- package/dist/helpers/rest.js +0 -71
- package/dist/helpers/rest.js.map +0 -1
- package/dist/helpers/uninstall.d.ts +0 -7
- package/dist/helpers/uninstall.js +0 -43
- package/dist/helpers/uninstall.js.map +0 -1
- package/dist/utils/shopify-api-node/beginAuth.d.ts +0 -6
- package/dist/utils/shopify-api-node/beginAuth.js +0 -45
- package/dist/utils/shopify-api-node/beginAuth.js.map +0 -1
- package/dist/utils/shopify-api-node/index.d.ts +0 -1
- package/dist/utils/shopify-api-node/index.js +0 -15
- package/dist/utils/shopify-api-node/index.js.map +0 -1
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) {
|
|
25
|
-
this.type = 'FirebaseSessionHandler';
|
|
24
|
+
constructor(enforcer, { config, collection = constants_1.COLLECTION_ROOT }) {
|
|
26
25
|
if (enforcer !== singletonEnforcer) {
|
|
27
26
|
throw new Error('Cannot instantiate FirebaseSessionHandler directly, please use getInstance()');
|
|
28
27
|
}
|
|
28
|
+
this.type = 'FirebaseSessionHandler';
|
|
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,69 +68,68 @@ 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
|
-
const
|
|
79
|
+
const document = await instance.firestore
|
|
79
80
|
.collection(instance.collection)
|
|
80
|
-
.doc(
|
|
81
|
-
.collection(
|
|
82
|
-
.doc(sessionId)
|
|
83
|
-
|
|
81
|
+
.doc(instance.config.shop)
|
|
82
|
+
.collection(instance.config.configurationId)
|
|
83
|
+
.doc(sessionId)
|
|
84
|
+
.get();
|
|
84
85
|
if (document.exists) {
|
|
85
86
|
return document.data();
|
|
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
|
-
|
|
99
|
-
.collection(instance.collection)
|
|
100
|
-
.doc(data.shop)
|
|
101
|
-
.collection(data.app)
|
|
102
|
-
.doc(_sessionId);
|
|
103
|
-
await docRef.delete();
|
|
104
|
-
return true;
|
|
103
|
+
return collectionRef.doc(_sessionId).delete();
|
|
105
104
|
}
|
|
106
|
-
catch (
|
|
107
|
-
console.error('FirebaseSessionHandler.deleteSessionsCallback error',
|
|
108
|
-
throw
|
|
105
|
+
catch (error) {
|
|
106
|
+
console.error('FirebaseSessionHandler.deleteSessionsCallback error', error);
|
|
107
|
+
throw error;
|
|
109
108
|
}
|
|
110
109
|
};
|
|
111
110
|
await Promise.all(display_1.ensureArray(sessionIds).map((sessionId) => _deleteSessionCallback(sessionId)));
|
|
112
111
|
};
|
|
113
112
|
exports.deleteSessionsCallback = deleteSessionsCallback;
|
|
114
|
-
const findSessionsByShop = async (
|
|
115
|
-
if (display_1.stringEmpty(shop)) {
|
|
113
|
+
const findSessionsByShop = async (instance, shop) => {
|
|
114
|
+
if (display_1.stringEmpty(shop) || (shop !== instance.config.shop)) {
|
|
115
|
+
console.error('FirebaseSessionHandler.findSessionsByShop warn', shop);
|
|
116
116
|
return [];
|
|
117
117
|
}
|
|
118
118
|
try {
|
|
119
|
-
const
|
|
119
|
+
const collection = await instance.firestore
|
|
120
120
|
.collection(instance.collection)
|
|
121
121
|
.doc(shop)
|
|
122
|
-
.collection(
|
|
123
|
-
|
|
122
|
+
.collection(instance.config.configurationId)
|
|
123
|
+
.get();
|
|
124
124
|
const sessions = [];
|
|
125
|
-
|
|
125
|
+
collection.forEach((_doc) => {
|
|
126
126
|
sessions.push(_doc.data());
|
|
127
127
|
});
|
|
128
128
|
return sessions;
|
|
129
129
|
}
|
|
130
|
-
catch (
|
|
131
|
-
console.error('FirebaseSessionHandler.findSessionsByShop error',
|
|
132
|
-
throw
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.error('FirebaseSessionHandler.findSessionsByShop error', error);
|
|
132
|
+
throw error;
|
|
133
133
|
}
|
|
134
134
|
};
|
|
135
135
|
exports.findSessionsByShop = findSessionsByShop;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/utils/firebase.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oEAAkC;AAElC,
|
|
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,72 +1,85 @@
|
|
|
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
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
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
|
+
});
|
|
16
31
|
return {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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)),
|
|
22
37
|
};
|
|
23
38
|
};
|
|
24
|
-
exports.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
console.log(`>>> > isSessionActive > TODO: re-enable`, { session, config });
|
|
28
|
-
return true;
|
|
29
|
-
// const scopesUnchanged = true
|
|
30
|
-
// if (
|
|
31
|
-
// scopesUnchanged &&
|
|
32
|
-
// (!session.expires || session.expires >= new Date())
|
|
33
|
-
// ) {
|
|
34
|
-
// return true
|
|
35
|
-
// }
|
|
36
|
-
// return false
|
|
37
|
-
};
|
|
38
|
-
const getVerifiedSession = async ({ req, res, shop, shopify, serverRuntimeConfig }) => {
|
|
39
|
+
exports.getShopifyHelpers = getShopifyHelpers;
|
|
40
|
+
const getVerifiedClients = async (serverRuntimeConfig, { req, res, shop, apiVersion }) => {
|
|
41
|
+
var _a;
|
|
39
42
|
try {
|
|
40
|
-
const sessionStorage = exports.getSessionStorage(shopify, serverRuntimeConfig, shop);
|
|
41
|
-
console.log(`>>> > getVerifiedSession > sessionStorage:`, sessionStorage);
|
|
42
43
|
const { PAYMENT_CONFIG } = serverRuntimeConfig !== null && serverRuntimeConfig !== void 0 ? serverRuntimeConfig : {};
|
|
44
|
+
const { shopify, loadSession } = await exports.getShopifyHelpers(serverRuntimeConfig, { shop });
|
|
43
45
|
const sessionId = await shopify.session.getCurrentId({
|
|
44
46
|
isOnline: true,
|
|
45
47
|
rawRequest: req,
|
|
46
48
|
rawResponse: res,
|
|
47
49
|
});
|
|
48
|
-
const session = await
|
|
49
|
-
|
|
50
|
+
const session = await loadSession(sessionId);
|
|
51
|
+
const scopesUnchanged = display_1.arraysMatch(display_1.splitCommas((_a = shopify.config) === null || _a === void 0 ? void 0 : _a.scopes.toString()), display_1.splitCommas(session === null || session === void 0 ? void 0 : session.scope));
|
|
52
|
+
const sessionExpired = !(session === null || session === void 0 ? void 0 : session.expires) || (luxon_1.DateTime.fromISO(session.expires) < luxon_1.DateTime.now());
|
|
53
|
+
const sessionActive = (scopesUnchanged && !sessionExpired);
|
|
54
|
+
if (!sessionActive) {
|
|
50
55
|
throw new errors_1.ShopifyAuthenticationError('Inactive session');
|
|
51
56
|
}
|
|
52
57
|
if (shop && (session === null || session === void 0 ? void 0 : session.shop) !== shop) {
|
|
53
58
|
throw new errors_1.ShopifyAuthenticationError('Invalid shop');
|
|
54
59
|
}
|
|
60
|
+
const Graphql = new shopify.clients.Graphql(Object.assign({ session }, apiVersion && { apiVersion }));
|
|
55
61
|
if (PAYMENT_CONFIG === null || PAYMENT_CONFIG === void 0 ? void 0 : PAYMENT_CONFIG.required) {
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
const confirmationUrl = await billing_1.ensureBilling({
|
|
63
|
+
shopify,
|
|
64
|
+
session,
|
|
65
|
+
paymentConfig: PAYMENT_CONFIG,
|
|
66
|
+
});
|
|
60
67
|
if (display_1.stringNotEmpty(confirmationUrl)) {
|
|
68
|
+
// TODO does this need to just redirect here?
|
|
69
|
+
// HMMM is this the reason for the failed submission
|
|
61
70
|
throw new errors_1.ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
|
|
62
71
|
}
|
|
63
72
|
}
|
|
64
73
|
else {
|
|
65
74
|
// NOTE making a test call to ensure a valid session for free apps
|
|
66
|
-
|
|
67
|
-
await client.query({ data: constants_1.SHOP_QUERY });
|
|
75
|
+
await Graphql.query({ data: constants_1.SHOP_QUERY });
|
|
68
76
|
}
|
|
69
|
-
return
|
|
77
|
+
return {
|
|
78
|
+
Graphql,
|
|
79
|
+
Rest: new shopify.clients.Rest(Object.assign({ session }, apiVersion && { apiVersion })),
|
|
80
|
+
// TODO: add support for Storefront client (takes different params)
|
|
81
|
+
// Storefront: shopify.clients.Storefront({ ...apiVersion && { apiVersion } }),
|
|
82
|
+
};
|
|
70
83
|
}
|
|
71
84
|
catch (error) {
|
|
72
85
|
if (error instanceof shopify_api_1.HttpResponseError &&
|
|
@@ -76,5 +89,5 @@ const getVerifiedSession = async ({ req, res, shop, shopify, serverRuntimeConfig
|
|
|
76
89
|
throw error;
|
|
77
90
|
}
|
|
78
91
|
};
|
|
79
|
-
exports.
|
|
92
|
+
exports.getVerifiedClients = getVerifiedClients;
|
|
80
93
|
//# 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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"}
|
package/dist/utils/shopify.d.ts
CHANGED
|
@@ -1,7 +1 @@
|
|
|
1
|
-
export function getInitializedShopify(serverRuntimeConfig: any
|
|
2
|
-
export function initializeShopify(serverRuntimeConfig: any): Promise<import("@shopify/shopify-api").Shopify<import("@shopify/shopify-api").ShopifyRestResources>>;
|
|
3
|
-
export function getRedirectUrl(props: any, { req, res, query: _query, }: {
|
|
4
|
-
req: any;
|
|
5
|
-
res: any;
|
|
6
|
-
query: any;
|
|
7
|
-
}): Promise<string>;
|
|
1
|
+
export function getInitializedShopify(serverRuntimeConfig: any): Promise<any>;
|
package/dist/utils/shopify.js
CHANGED
|
@@ -1,60 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getInitializedShopify = void 0;
|
|
4
4
|
require("@shopify/shopify-api/adapters/node");
|
|
5
5
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
6
|
-
const shopify_api_node_1 = require("./shopify-api-node");
|
|
7
6
|
const display_1 = require("./display");
|
|
8
7
|
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
|
-
// TODO: clean up/confirm????
|
|
26
|
-
callback: async (topic, shop) => {
|
|
27
|
-
// NOTE our webhook logic is handled in each api route
|
|
28
|
-
console.log(`handleWebhook for ${shop}:${topic}`);
|
|
29
|
-
return true;
|
|
30
|
-
},
|
|
31
|
-
})) })), {}));
|
|
8
|
+
const getInitializedShopify = async (serverRuntimeConfig) => {
|
|
9
|
+
var _a, _b, _c;
|
|
10
|
+
const { APP_CONFIG, APP_WEBHOOKS, INITIALIZED_SHOPIFY } = serverRuntimeConfig;
|
|
11
|
+
let initializedShopify = INITIALIZED_SHOPIFY;
|
|
12
|
+
if (initializedShopify) {
|
|
13
|
+
const configurableWebhookTopics = Object.keys(APP_WEBHOOKS);
|
|
14
|
+
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 : [];
|
|
15
|
+
// TODO: check both directions??
|
|
16
|
+
const missingTopic = installedTopics.find((topic) => !configurableWebhookTopics.includes(topic));
|
|
17
|
+
if (!missingTopic && installedTopics.includes(constants_1.API_WEBHOOK_TOPICS.APP_UNINSTALLED)) {
|
|
18
|
+
return initializedShopify;
|
|
19
|
+
}
|
|
32
20
|
}
|
|
33
|
-
|
|
21
|
+
initializedShopify = shopify_api_1.shopifyApi(APP_CONFIG);
|
|
22
|
+
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 }) => {
|
|
23
|
+
const callbackUrl = path || url;
|
|
24
|
+
if (display_1.stringEmpty(callbackUrl)) {
|
|
25
|
+
return _topicWebhooks;
|
|
26
|
+
}
|
|
27
|
+
return [
|
|
28
|
+
..._topicWebhooks,
|
|
29
|
+
{
|
|
30
|
+
deliveryMethod: shopify_api_1.DeliveryMethod.Http,
|
|
31
|
+
callbackUrl,
|
|
32
|
+
callback: async (topic, shop) => {
|
|
33
|
+
// NOTE our webhook logic is handled in each api route
|
|
34
|
+
console.log(`handle webhook callback for ${shop}:${topic}`);
|
|
35
|
+
return true;
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
}, []) })), {}));
|
|
40
|
+
return initializedShopify;
|
|
34
41
|
};
|
|
35
|
-
exports.
|
|
36
|
-
const getRedirectUrl = async (props, { req, res, query: _query, }) => {
|
|
37
|
-
var _a;
|
|
38
|
-
const { API_URLS, PAGE_PATHS } = props;
|
|
39
|
-
const query = (_a = _query !== null && _query !== void 0 ? _query : req.query) !== null && _a !== void 0 ? _a : {};
|
|
40
|
-
const { embedded, host, shop: _shop } = query !== null && query !== void 0 ? query : {};
|
|
41
|
-
// TODO: do we need to pass along apiVersion here?
|
|
42
|
-
const shopify = exports.getInitializedShopify(props);
|
|
43
|
-
const shop = shopify.utils.sanitizeShop(_shop);
|
|
44
|
-
if (display_1.stringEmpty(shop)) {
|
|
45
|
-
return `${PAGE_PATHS[constants_1.PAGE_ROUTE_NAMES.ERROR]}?code=no_shop_provided&type=getRedirectUrl`;
|
|
46
|
-
}
|
|
47
|
-
if (embedded === '1') {
|
|
48
|
-
// TODO: explore objectToQuerystring
|
|
49
|
-
const redirectUriParams = new URLSearchParams({
|
|
50
|
-
shop,
|
|
51
|
-
host,
|
|
52
|
-
}).toString();
|
|
53
|
-
// TODO: explore objectToQuerystring
|
|
54
|
-
const queryParams = new URLSearchParams(Object.assign(Object.assign({}, query), { shop, redirectUri: `${API_URLS[constants_1.API_ROUTE_NAMES.AUTH_CALLBACK]}?${redirectUriParams}` })).toString();
|
|
55
|
-
return `${PAGE_PATHS[constants_1.PAGE_ROUTE_NAMES.EXIT]}?${queryParams}`;
|
|
56
|
-
}
|
|
57
|
-
return shopify_api_node_1.beginAuth(props, { req, res, shop });
|
|
58
|
-
};
|
|
59
|
-
exports.getRedirectUrl = getRedirectUrl;
|
|
42
|
+
exports.getInitializedShopify = getInitializedShopify;
|
|
60
43
|
//# 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":";;;AAAA,8CAA2C;AAC3C,sDAAiE;AAEjE,uCAAoD;AACpD,2CAAgD;AAEzC,MAAM,qBAAqB,GAAG,KAAK,EAAE,mBAAmB,EAAE,EAAE;;IACjE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,CAAA;IAE7E,IAAI,kBAAkB,GAAG,mBAAmB,CAAA;IAE5C,IAAI,kBAAkB,EAAE;QACtB,MAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC3D,MAAM,eAAe,GAAG,MAAA,MAAM,CAAA,MAAA,MAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,QAAQ,0CAAE,cAAc,kDAAI,CAAA,mCAAI,EAAE,CAAA;QACpF,gCAAgC;QAChC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAEhG,IAAI,CAAC,YAAY,IAAI,eAAe,CAAC,QAAQ,CAAC,8BAAkB,CAAC,eAAe,CAAC,EAAE;YACjF,OAAO,kBAAkB,CAAA;SAC1B;KACF;IAED,kBAAkB,GAAG,wBAAU,CAAC,UAAU,CAAC,CAAA;IAC3C,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAC1E,QAAQ,EACR,CAAC,YAAY,EAAE,QAAQ,CAAC,EACxB,EAAE,CAAC,iCACA,QAAQ,KACX,CAAC,YAAY,CAAC,EAAE,qBAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;YAC7E,MAAM,WAAW,GAAG,IAAI,IAAI,GAAG,CAAA;YAE/B,IAAI,qBAAW,CAAC,WAAW,CAAC,EAAE;gBAC5B,OAAO,cAAc,CAAA;aACtB;YAED,OAAO;gBACL,GAAG,cAAc;gBACjB;oBACE,cAAc,EAAE,4BAAc,CAAC,IAAI;oBACnC,WAAW;oBACX,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;wBAC9B,sDAAsD;wBACtD,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,IAAI,KAAK,EAAE,CAAC,CAAA;wBAE3D,OAAO,IAAI,CAAA;oBACb,CAAC;iBACF;aACF,CAAA;QACH,CAAC,EAAE,EAAE,CAAC,IACN,EAAE,EAAE,CAAC,CAAC,CAAA;IAER,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA;AA9CY,QAAA,qBAAqB,yBA8CjC"}
|
package/dist/withShopify.js
CHANGED
|
@@ -17,18 +17,16 @@ const next_plugins_1 = require("@agnostack/next-plugins");
|
|
|
17
17
|
const utils_1 = require("./utils");
|
|
18
18
|
const withShopify = async (nextPhase, _a) => {
|
|
19
19
|
var { nextConfig } = _a, config = __rest(_a, ["nextConfig"]);
|
|
20
|
-
const _b = nextConfig !== null && nextConfig !== void 0 ? nextConfig : {}, { basePath: _basePath, publicRuntimeConfig: _publicRuntimeConfig = {}, serverRuntimeConfig:
|
|
20
|
+
const _b = nextConfig !== null && nextConfig !== void 0 ? nextConfig : {}, { basePath: _basePath, publicRuntimeConfig: _publicRuntimeConfig = {}, serverRuntimeConfig: __serverRuntimeConfig = {} } = _b, _nextConfig = __rest(_b, ["basePath", "publicRuntimeConfig", "serverRuntimeConfig"]);
|
|
21
21
|
const _c = config !== null && config !== void 0 ? config : {}, {
|
|
22
22
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
23
23
|
defaultConfig } = _c, // NOTE: This is here in case we need anything from it
|
|
24
24
|
pluginConfig = __rest(_c, ["defaultConfig"]);
|
|
25
25
|
const basePath = utils_1.ensureString(_basePath);
|
|
26
26
|
const { data, interactive, paymentConfig, firebaseConfig, pageRoutes: { [utils_1.PAGE_ROUTE_NAMES.EXIT]: _pageRouteExit = '/exit', [utils_1.PAGE_ROUTE_NAMES.ERROR]: _pageRouteError = '/error', } = {}, apiRoutes: { [utils_1.API_ROUTE_NAMES.AUTH]: _apiRouteAuth = '/api/auth', [utils_1.API_ROUTE_NAMES.AUTH_CALLBACK]: _apiRouteAuthCallback = '/api/auth/callback', [utils_1.API_ROUTE_NAMES.APP_UNINSTALLED]: _apiRouteAppUninstalled = '/api/webhooks/app/uninstalled', } = {}, params: { APP_ID: _appId, URL: netlifyUrl, HOST: shopifyCLIUrl, NEXT_PUBLIC_APP_BASE_URL, NEXT_PUBLIC_SHOPIFY_API_ID, NEXT_PUBLIC_SHOPIFY_API_KEY, NEXT_PUBLIC_APP_ROUTE_PAGE_EXIT: _pageRouteParamExit, NEXT_PUBLIC_APP_ROUTE_PAGE_ERROR: _pageRouteParamError, NEXT_PUBLIC_APP_ROUTE_API_AUTH: _apiRouteParamAuth, NEXT_PUBLIC_APP_ROUTE_API_AUTH_CALLBACK: _apiRouteParamAuthCallback, NEXT_PUBLIC_APP_ROUTE_API_UNINSTALLED: _apiRouteParamAppUninstalled, NEXT_PUBLIC_FB_ROOT_COLLECTION: FB_ROOT_COLLECTION, SHOPIFY_API_PUBLIC_KEY: _shopifyPublicAPIKey, SHOPIFY_API_VERSION = shopify_api_1.LATEST_API_VERSION, SHOPIFY_API_SCOPES, SHOPIFY_API_KEY, SHOPIFY_RUN_MODE, } = {}, } = pluginConfig !== null && pluginConfig !== void 0 ? pluginConfig : {};
|
|
27
|
-
console.log(`>>> > withShopify > _appId:`, _appId);
|
|
28
27
|
const SHOPIFY_API_PUBLIC_KEY = NEXT_PUBLIC_SHOPIFY_API_KEY || _shopifyPublicAPIKey;
|
|
29
|
-
|
|
28
|
+
// NOTE APP_ID in shopify cli defaults to client id/SHOPIFY_API_PUBLIC_KEY
|
|
30
29
|
const APP_ID = NEXT_PUBLIC_SHOPIFY_API_ID || _appId || SHOPIFY_API_PUBLIC_KEY;
|
|
31
|
-
console.log(`>>> > withShopify > APP_ID:`, APP_ID);
|
|
32
30
|
const appBaseUrl = NEXT_PUBLIC_APP_BASE_URL || netlifyUrl || shopifyCLIUrl;
|
|
33
31
|
const APP_BASE_URL = `${appBaseUrl}${basePath}`;
|
|
34
32
|
const appUrl = new URL(appBaseUrl);
|
|
@@ -74,35 +72,28 @@ const withShopify = async (nextPhase, _a) => {
|
|
|
74
72
|
[utils_1.API_ROUTE_NAMES.AUTH_CALLBACK]: apiRouteAuthCallback,
|
|
75
73
|
[utils_1.API_ROUTE_NAMES.APP_UNINSTALLED]: apiRouteAppUninstalled,
|
|
76
74
|
};
|
|
77
|
-
console.log(`>>> > withShopify > API_ROUTES:`, API_ROUTES);
|
|
78
75
|
const API_PATHS = Object.entries(API_ROUTES).reduce((_apiPaths, [routeName, route]) => (Object.assign(Object.assign({}, _apiPaths), { [routeName]: `${basePath}${route}` })), {});
|
|
79
|
-
console.log(`>>> > withShopify > API_PATHS:`, API_PATHS);
|
|
80
76
|
const API_URLS = Object.entries(API_PATHS).reduce((_apiUrls, [routeName, routePath]) => (Object.assign(Object.assign({}, _apiUrls), { [routeName]: `${appBaseUrl}${routePath}` })), {});
|
|
81
|
-
console.log(`>>> > withShopify > API_URLS:`, API_URLS);
|
|
82
77
|
const APP_HOST_NAME = appUrl.hostname;
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
isEmbeddedApp: true,
|
|
91
|
-
};
|
|
78
|
+
const PAYMENT_CONFIG = utils_1.generatePaymentConfig(Object.assign(Object.assign({}, data), { paymentConfig, SHOPIFY_RUN_MODE }));
|
|
79
|
+
const { name: billingName, config: billingConfig } = utils_1.ensureObject(PAYMENT_CONFIG);
|
|
80
|
+
const APP_CONFIG = Object.assign({ apiVersion: SHOPIFY_API_VERSION, apiKey: SHOPIFY_API_PUBLIC_KEY, apiSecretKey: SHOPIFY_API_KEY, hostName: APP_HOST_NAME, hostScheme: appUrl.protocol.replace(':', ''), scopes: SHOPIFY_API_SCOPES.replace(/, /g, ',').split(','), isEmbeddedApp: true }, (utils_1.stringNotEmpty(billingName) && utils_1.objectNotEmpty(billingConfig)) && {
|
|
81
|
+
billing: {
|
|
82
|
+
[billingName]: billingConfig,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
92
85
|
const APP_WEBHOOKS = {
|
|
93
|
-
// TODO
|
|
94
|
-
APP_UNINSTALLED: [{
|
|
95
|
-
|
|
86
|
+
// TODO!!!: this should be adding in any extra stuff passed in from plugin config
|
|
87
|
+
[utils_1.API_WEBHOOK_TOPICS.APP_UNINSTALLED]: [{
|
|
88
|
+
url: API_URLS[utils_1.API_ROUTE_NAMES.APP_UNINSTALLED],
|
|
96
89
|
}],
|
|
97
90
|
};
|
|
98
|
-
console.log(`>>> > withShopify > APP_WEBHOOKS:`, APP_WEBHOOKS);
|
|
99
|
-
const PAYMENT_CONFIG = utils_1.generatePaymentConfig(paymentConfig, data);
|
|
100
91
|
const publicRuntimeConfig = Object.assign(Object.assign({}, _publicRuntimeConfig), { SHOPIFY_API_PUBLIC_KEY,
|
|
101
92
|
SHOPIFY_RUN_MODE,
|
|
102
93
|
APP_BASE_URL,
|
|
103
94
|
API_ROUTES,
|
|
104
95
|
API_PATHS });
|
|
105
|
-
const
|
|
96
|
+
const _serverRuntimeConfig = Object.assign(Object.assign({}, __serverRuntimeConfig), { SHOPIFY_RUN_MODE,
|
|
106
97
|
SHOPIFY_API_PUBLIC_KEY, FB_CONFIG: firebaseConfig, FB_ROOT_COLLECTION,
|
|
107
98
|
PAYMENT_CONFIG,
|
|
108
99
|
APP_CONFIG,
|
|
@@ -114,8 +105,8 @@ const withShopify = async (nextPhase, _a) => {
|
|
|
114
105
|
API_PATHS,
|
|
115
106
|
API_URLS,
|
|
116
107
|
API_ROUTES });
|
|
117
|
-
const
|
|
118
|
-
|
|
108
|
+
const INITIALIZED_SHOPIFY = await utils_1.getInitializedShopify(_serverRuntimeConfig);
|
|
109
|
+
const serverRuntimeConfig = Object.assign(Object.assign({}, _serverRuntimeConfig), { INITIALIZED_SHOPIFY });
|
|
119
110
|
return Object.assign(Object.assign({}, _nextConfig), { basePath: _basePath, publicRuntimeConfig,
|
|
120
111
|
serverRuntimeConfig });
|
|
121
112
|
};
|
package/dist/withShopify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withShopify.js","sourceRoot":"","sources":["../src/withShopify.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,sDAAyD;AAEzD,0DAAoD;AAEpD,
|
|
1
|
+
{"version":3,"file":"withShopify.js","sourceRoot":"","sources":["../src/withShopify.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agnostack/next-shopify",
|
|
3
|
-
"version": "1.7.0-alpha.
|
|
3
|
+
"version": "1.7.0-alpha.60",
|
|
4
4
|
"author": "agnoStack Dev <developers@agnostack.com> (https://agnostack.com)",
|
|
5
5
|
"owner": "agnoStack",
|
|
6
6
|
"description": "Please contact agnoStack via info@agnostack.com for any questions",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
"@shopify/shopify-api": "7.1.0",
|
|
52
52
|
"browser-monads": "1.0.0",
|
|
53
53
|
"cookies": "0.8.0",
|
|
54
|
+
"luxon": "3.2.1",
|
|
54
55
|
"nextjs-cors": "2.1.1",
|
|
55
56
|
"raw-body": "2.5.2"
|
|
56
57
|
},
|