@agnostack/next-shopify 1.7.0-alpha.14 → 1.7.0-alpha.16
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/ssr.js +2 -4
- package/dist/handlers/ssr.js.map +1 -1
- package/dist/helpers/callback.d.ts +1 -1
- package/dist/helpers/callback.js +11 -15
- package/dist/helpers/callback.js.map +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 +4 -6
- package/dist/helpers/uninstall.js.map +1 -1
- package/dist/utils/billing.d.ts +11 -20
- package/dist/utils/billing.js +49 -187
- package/dist/utils/billing.js.map +1 -1
- package/dist/utils/constants.d.ts +0 -5
- package/dist/utils/constants.js +1 -72
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/display.d.ts +1 -1
- package/dist/utils/firebase.d.ts +13 -6
- package/dist/utils/firebase.js +35 -33
- package/dist/utils/firebase.js.map +1 -1
- package/dist/utils/session.d.ts +16 -11
- package/dist/utils/session.js +43 -26
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/shopify-api-node/beginAuth.js +1 -2
- package/dist/utils/shopify-api-node/beginAuth.js.map +1 -1
- package/dist/utils/shopify.d.ts +1 -1
- package/dist/utils/shopify.js +7 -15
- package/dist/utils/shopify.js.map +1 -1
- package/dist/withShopify.js +8 -15
- package/dist/withShopify.js.map +1 -1
- package/package.json +1 -1
- package/CHANGELOG.md +0 -553
package/dist/utils/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SHOP_QUERY = exports.BILLING_INTERVALS = exports.API_WEBHOOK_TOPICS = exports.API_ROUTE_NAMES = exports.PAGE_ROUTE_NAMES = exports.COLLECTION_ROOT = void 0;
|
|
4
4
|
exports.COLLECTION_ROOT = 'oauth-data';
|
|
5
5
|
exports.PAGE_ROUTE_NAMES = {
|
|
6
6
|
EXIT: 'pageRouteExit',
|
|
@@ -19,10 +19,6 @@ exports.BILLING_INTERVALS = {
|
|
|
19
19
|
EVERY_30_DAYS: 'EVERY_30_DAYS',
|
|
20
20
|
ANNUAL: 'ANNUAL',
|
|
21
21
|
};
|
|
22
|
-
exports.RECURRING_INTERVALS = [
|
|
23
|
-
exports.BILLING_INTERVALS.EVERY_30_DAYS,
|
|
24
|
-
exports.BILLING_INTERVALS.ANNUAL
|
|
25
|
-
];
|
|
26
22
|
// TODO can we remove?
|
|
27
23
|
/*
|
|
28
24
|
export const SHOP_DATA_QUERY = `
|
|
@@ -69,71 +65,4 @@ exports.SHOP_QUERY = `
|
|
|
69
65
|
}
|
|
70
66
|
}
|
|
71
67
|
`;
|
|
72
|
-
exports.RECURRING_PURCHASES_QUERY = `
|
|
73
|
-
query appSubscription {
|
|
74
|
-
currentAppInstallation {
|
|
75
|
-
activeSubscriptions {
|
|
76
|
-
name, test
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
`;
|
|
81
|
-
exports.ONE_TIME_PURCHASES_QUERY = `
|
|
82
|
-
query appPurchases($endCursor: String) {
|
|
83
|
-
currentAppInstallation {
|
|
84
|
-
oneTimePurchases(first: 250, sortKey: CREATED_AT, after: $endCursor) {
|
|
85
|
-
edges {
|
|
86
|
-
node {
|
|
87
|
-
name, test, status
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
pageInfo {
|
|
91
|
-
hasNextPage, endCursor
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
`;
|
|
97
|
-
exports.RECURRING_PURCHASE_MUTATION = `
|
|
98
|
-
mutation test(
|
|
99
|
-
$name: String!
|
|
100
|
-
$lineItems: [AppSubscriptionLineItemInput!]!
|
|
101
|
-
$returnUrl: URL!
|
|
102
|
-
$test: Boolean
|
|
103
|
-
) {
|
|
104
|
-
appSubscriptionCreate(
|
|
105
|
-
name: $name
|
|
106
|
-
lineItems: $lineItems
|
|
107
|
-
returnUrl: $returnUrl
|
|
108
|
-
test: $test
|
|
109
|
-
) {
|
|
110
|
-
confirmationUrl
|
|
111
|
-
userErrors {
|
|
112
|
-
field
|
|
113
|
-
message
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
`;
|
|
118
|
-
exports.ONE_TIME_PURCHASE_MUTATION = `
|
|
119
|
-
mutation test(
|
|
120
|
-
$name: String!
|
|
121
|
-
$price: MoneyInput!
|
|
122
|
-
$returnUrl: URL!
|
|
123
|
-
$test: Boolean
|
|
124
|
-
) {
|
|
125
|
-
appPurchaseOneTimeCreate(
|
|
126
|
-
name: $name
|
|
127
|
-
price: $price
|
|
128
|
-
returnUrl: $returnUrl
|
|
129
|
-
test: $test
|
|
130
|
-
) {
|
|
131
|
-
confirmationUrl
|
|
132
|
-
userErrors {
|
|
133
|
-
field
|
|
134
|
-
message
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
`;
|
|
139
68
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.js"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,YAAY,CAAA;AAE9B,QAAA,gBAAgB,GAAG;IAC9B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,gBAAgB;CACxB,CAAA;AAEY,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,cAAc;IACpB,aAAa,EAAE,sBAAsB;IACrC,eAAe,EAAE,wBAAwB;CAC1C,CAAA;AAEY,QAAA,kBAAkB,GAAG;IAChC,eAAe,EAAE,iBAAiB;CACnC,CAAA;AAEY,QAAA,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,QAAQ;CACjB,CAAA;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.js"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,YAAY,CAAA;AAE9B,QAAA,gBAAgB,GAAG;IAC9B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,gBAAgB;CACxB,CAAA;AAEY,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,cAAc;IACpB,aAAa,EAAE,sBAAsB;IACrC,eAAe,EAAE,wBAAwB;CAC1C,CAAA;AAEY,QAAA,kBAAkB,GAAG;IAChC,eAAe,EAAE,iBAAiB;CACnC,CAAA;AAEY,QAAA,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,MAAM,EAAE,QAAQ;CACjB,CAAA;AAED,sBAAsB;AACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCE;AAEW,QAAA,UAAU,GAAG;;;;;;CAMzB,CAAA"}
|
package/dist/utils/display.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export function getGUID(): any;
|
|
2
2
|
export function getInteger(): any;
|
|
3
3
|
export function querystringToObject(queryString: any): {
|
|
4
|
-
[k: string]:
|
|
4
|
+
[k: string]: string;
|
|
5
5
|
};
|
|
6
6
|
export function isType(value: any, type: any): boolean;
|
|
7
7
|
export function ensureObject(object: any): any;
|
package/dist/utils/firebase.d.ts
CHANGED
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
export class FirebaseSessionHandler {
|
|
2
|
-
static getInstance(firebaseConfig: any, collection
|
|
3
|
-
|
|
2
|
+
static getInstance(firebaseConfig: any, { collection, config }: {
|
|
3
|
+
collection: any;
|
|
4
|
+
config: any;
|
|
5
|
+
}): any;
|
|
6
|
+
constructor(enforcer: any, { config, collection }: {
|
|
7
|
+
config: any;
|
|
8
|
+
collection?: string;
|
|
9
|
+
});
|
|
4
10
|
type: string;
|
|
11
|
+
config: any;
|
|
5
12
|
collection: string;
|
|
6
13
|
get isInitialized(): boolean;
|
|
7
14
|
initializeFireStore(firebaseConfig: any): void;
|
|
8
15
|
firestore: any;
|
|
9
16
|
[singleton]: FirebaseSessionHandler;
|
|
10
17
|
}
|
|
11
|
-
export function storeCallback(
|
|
12
|
-
export function loadCallback(
|
|
13
|
-
export function deleteSessionsCallback(
|
|
14
|
-
export function findSessionsByShop(
|
|
18
|
+
export function storeCallback(instance: any, session: any): Promise<boolean>;
|
|
19
|
+
export function loadCallback(instance: any, sessionId: any): Promise<any>;
|
|
20
|
+
export function deleteSessionsCallback(instance: any, sessionIds: any): Promise<void>;
|
|
21
|
+
export function findSessionsByShop(instance: any, shop: any): Promise<any[]>;
|
|
15
22
|
declare const singleton: unique symbol;
|
|
16
23
|
export {};
|
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,50 +87,51 @@ 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 findSessionsByShop = async (
|
|
115
|
-
if (display_1.stringEmpty(shop)) {
|
|
115
|
+
const findSessionsByShop = async (instance, shop) => {
|
|
116
|
+
if (display_1.stringEmpty(shop) || (shop !== instance.config.shop)) {
|
|
117
|
+
console.warn('FirebaseSessionHandler.findSessionsByShop warn', shop);
|
|
116
118
|
return [];
|
|
117
119
|
}
|
|
118
120
|
try {
|
|
119
|
-
const
|
|
121
|
+
const collection = await instance.firestore
|
|
120
122
|
.collection(instance.collection)
|
|
121
123
|
.doc(shop)
|
|
122
|
-
.collection(
|
|
123
|
-
|
|
124
|
+
.collection(instance.config.configurationId)
|
|
125
|
+
.get();
|
|
124
126
|
const sessions = [];
|
|
125
|
-
|
|
127
|
+
collection.forEach((_doc) => {
|
|
126
128
|
sessions.push(_doc.data());
|
|
127
129
|
});
|
|
128
130
|
return sessions;
|
|
129
131
|
}
|
|
130
|
-
catch (
|
|
131
|
-
console.error('FirebaseSessionHandler.findSessionsByShop error',
|
|
132
|
-
throw
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.error('FirebaseSessionHandler.findSessionsByShop error', error);
|
|
134
|
+
throw error;
|
|
133
135
|
}
|
|
134
136
|
};
|
|
135
137
|
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,28 +1,41 @@
|
|
|
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 display_1 = require("./display");
|
|
6
16
|
const billing_1 = require("./billing");
|
|
17
|
+
const display_1 = require("./display");
|
|
18
|
+
const shopify_1 = require("./shopify");
|
|
19
|
+
const firebase_1 = require("./firebase");
|
|
7
20
|
const errors_1 = require("./errors");
|
|
8
21
|
const constants_1 = require("./constants");
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
const
|
|
22
|
+
const getShopifyHelpers = async (serverRuntimeConfig, _a) => {
|
|
23
|
+
var { shop } = _a, overrides = __rest(_a, ["shop"]);
|
|
24
|
+
const shopify = await shopify_1.getInitializedShopify(serverRuntimeConfig, overrides);
|
|
12
25
|
const { FB_CONFIG, FB_ROOT_COLLECTION, APP_ID } = serverRuntimeConfig;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
26
|
+
const sessionHandler = firebase_1.FirebaseSessionHandler.getInstance(FB_CONFIG, {
|
|
27
|
+
collection: FB_ROOT_COLLECTION,
|
|
28
|
+
config: { configurationId: APP_ID, shop: shopify.utils.sanitizeShop(shop) },
|
|
29
|
+
});
|
|
16
30
|
return {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
find: async (__shop) => firebase_1.findSessionsByShop(shopify.utils.sanitizeShop(__shop), data, sessionHandler),
|
|
31
|
+
shopify,
|
|
32
|
+
storeSession: async (session) => firebase_1.storeCallback(sessionHandler, session),
|
|
33
|
+
loadSession: async (sessionId) => firebase_1.loadCallback(sessionHandler, sessionId),
|
|
34
|
+
deleteSessions: async (sessionIds) => firebase_1.deleteSessionsCallback(sessionHandler, sessionIds),
|
|
35
|
+
findSession: async (_shop) => firebase_1.findSessionsByShop(sessionHandler, shopify.utils.sanitizeShop(_shop)),
|
|
23
36
|
};
|
|
24
37
|
};
|
|
25
|
-
exports.
|
|
38
|
+
exports.getShopifyHelpers = getShopifyHelpers;
|
|
26
39
|
// TODO re-enable (check scopes and expiration)
|
|
27
40
|
const isSessionActive = (session, config) => {
|
|
28
41
|
console.log(`>>> > isSessionActive > TODO: re-enable`, { session, config });
|
|
@@ -36,37 +49,41 @@ const isSessionActive = (session, config) => {
|
|
|
36
49
|
// }
|
|
37
50
|
// return false
|
|
38
51
|
};
|
|
39
|
-
const
|
|
52
|
+
const getVerifiedClients = async (serverRuntimeConfig, { req, res, shop, apiVersion }) => {
|
|
40
53
|
try {
|
|
41
|
-
const
|
|
54
|
+
const { shopify, loadSession } = await exports.getShopifyHelpers(serverRuntimeConfig, { shop });
|
|
42
55
|
const { PAYMENT_CONFIG } = serverRuntimeConfig !== null && serverRuntimeConfig !== void 0 ? serverRuntimeConfig : {};
|
|
43
56
|
const sessionId = await shopify.session.getCurrentId({
|
|
44
57
|
isOnline: true,
|
|
45
58
|
rawRequest: req,
|
|
46
59
|
rawResponse: res,
|
|
47
60
|
});
|
|
48
|
-
const session = await
|
|
61
|
+
const session = await loadSession(sessionId);
|
|
49
62
|
if (!isSessionActive(session, shopify.config)) {
|
|
50
63
|
throw new errors_1.ShopifyAuthenticationError('Inactive session');
|
|
51
64
|
}
|
|
52
65
|
if (shop && (session === null || session === void 0 ? void 0 : session.shop) !== shop) {
|
|
53
66
|
throw new errors_1.ShopifyAuthenticationError('Invalid shop');
|
|
54
67
|
}
|
|
68
|
+
let Graphql;
|
|
55
69
|
if (PAYMENT_CONFIG === null || PAYMENT_CONFIG === void 0 ? void 0 : PAYMENT_CONFIG.required) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
console.log(`>>> > getVerifiedSession > confirmationUrl:`, confirmationUrl);
|
|
70
|
+
// HMMM: order of params/method sig??
|
|
71
|
+
const confirmationUrl = await billing_1.ensureBilling(shopify, session, PAYMENT_CONFIG);
|
|
72
|
+
console.log(`>>> > getVerifiedClients > confirmationUrl:`, confirmationUrl);
|
|
60
73
|
if (display_1.stringNotEmpty(confirmationUrl)) {
|
|
61
74
|
throw new errors_1.ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
|
|
62
75
|
}
|
|
63
76
|
}
|
|
64
77
|
else {
|
|
65
78
|
// NOTE making a test call to ensure a valid session for free apps
|
|
66
|
-
|
|
67
|
-
await
|
|
79
|
+
Graphql = new shopify.clients.Graphql(Object.assign({ session }, apiVersion && { apiVersion }));
|
|
80
|
+
await Graphql.query({ data: constants_1.SHOP_QUERY });
|
|
68
81
|
}
|
|
69
|
-
return
|
|
82
|
+
return {
|
|
83
|
+
Graphql,
|
|
84
|
+
Rest: new shopify.clients.Rest(Object.assign({ session }, apiVersion && { apiVersion })),
|
|
85
|
+
// Storefront: shopify.clients.Storefront({ ...apiVersion && { apiVersion } }), TODO: add support for Storefront client (takes different params)
|
|
86
|
+
};
|
|
70
87
|
}
|
|
71
88
|
catch (error) {
|
|
72
89
|
if (error instanceof shopify_api_1.HttpResponseError &&
|
|
@@ -76,5 +93,5 @@ const getVerifiedSession = async ({ req, res, shop, shopify, serverRuntimeConfig
|
|
|
76
93
|
throw error;
|
|
77
94
|
}
|
|
78
95
|
};
|
|
79
|
-
exports.
|
|
96
|
+
exports.getVerifiedClients = getVerifiedClients;
|
|
80
97
|
//# 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,14 +8,13 @@ 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
|
-
// TODO: do we need to pass along apiVersion here?
|
|
19
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()}`;
|
|
@@ -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,4 +1,4 @@
|
|
|
1
|
-
export function getInitializedShopify(serverRuntimeConfig: any
|
|
1
|
+
export function getInitializedShopify(serverRuntimeConfig: any): Promise<any>;
|
|
2
2
|
export function getRedirectUrl(props: any, { req, res, query: _query, }: {
|
|
3
3
|
req: any;
|
|
4
4
|
res: any;
|
package/dist/utils/shopify.js
CHANGED
|
@@ -6,28 +6,21 @@ const shopify_api_1 = require("@shopify/shopify-api");
|
|
|
6
6
|
const shopify_api_node_1 = require("./shopify-api-node");
|
|
7
7
|
const display_1 = require("./display");
|
|
8
8
|
const constants_1 = require("./constants");
|
|
9
|
-
|
|
10
|
-
// TODO cleanup/consolidate getSessionStorage and getInitializedShopify
|
|
11
|
-
// TODO: do we need to pass along apiVersion here?
|
|
12
|
-
const _getInitializableShopify = (serverRuntimeConfig, version) => (shopify_api_1.shopifyApi(Object.assign(Object.assign({}, serverRuntimeConfig === null || serverRuntimeConfig === void 0 ? void 0 : serverRuntimeConfig.APP_CONFIG), (display_1.stringNotEmpty(version)) && {
|
|
13
|
-
apiVersion: version,
|
|
14
|
-
})));
|
|
15
|
-
// TODO: do we need to pass along apiVersion here?
|
|
16
|
-
const getInitializedShopify = async (serverRuntimeConfig, version) => {
|
|
9
|
+
const getInitializedShopify = async (serverRuntimeConfig) => {
|
|
17
10
|
var _a, _b, _c;
|
|
18
|
-
const { APP_WEBHOOKS, INITIALIZED_SHOPIFY } = serverRuntimeConfig;
|
|
19
|
-
|
|
20
|
-
const initializedShopify = INITIALIZED_SHOPIFY;
|
|
11
|
+
const { APP_CONFIG, APP_WEBHOOKS, INITIALIZED_SHOPIFY } = serverRuntimeConfig;
|
|
12
|
+
let initializedShopify = INITIALIZED_SHOPIFY;
|
|
21
13
|
if (initializedShopify) {
|
|
22
14
|
const configurableWebhookTopics = Object.keys(APP_WEBHOOKS);
|
|
23
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??
|
|
24
17
|
const missingTopic = installedTopics.find((topic) => !configurableWebhookTopics.includes(topic));
|
|
25
18
|
if (!missingTopic && installedTopics.includes(constants_1.API_WEBHOOK_TOPICS.APP_UNINSTALLED)) {
|
|
26
19
|
return initializedShopify;
|
|
27
20
|
}
|
|
28
21
|
}
|
|
29
|
-
|
|
30
|
-
|
|
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 }) => {
|
|
31
24
|
const callbackUrl = path || url;
|
|
32
25
|
if (display_1.stringEmpty(callbackUrl)) {
|
|
33
26
|
return _topicWebhooks;
|
|
@@ -46,7 +39,7 @@ const getInitializedShopify = async (serverRuntimeConfig, version) => {
|
|
|
46
39
|
}
|
|
47
40
|
];
|
|
48
41
|
}, []) })), {}));
|
|
49
|
-
return
|
|
42
|
+
return initializedShopify;
|
|
50
43
|
};
|
|
51
44
|
exports.getInitializedShopify = getInitializedShopify;
|
|
52
45
|
const getRedirectUrl = async (props, { req, res, query: _query, }) => {
|
|
@@ -54,7 +47,6 @@ const getRedirectUrl = async (props, { req, res, query: _query, }) => {
|
|
|
54
47
|
const { API_URLS, PAGE_PATHS } = props;
|
|
55
48
|
const query = (_a = _query !== null && _query !== void 0 ? _query : req.query) !== null && _a !== void 0 ? _a : {};
|
|
56
49
|
const { embedded, host, shop: _shop } = query !== null && query !== void 0 ? query : {};
|
|
57
|
-
// TODO: do we need to pass along apiVersion here?
|
|
58
50
|
const shopify = await exports.getInitializedShopify(props);
|
|
59
51
|
const shop = shopify.utils.sanitizeShop(_shop);
|
|
60
52
|
if (display_1.stringEmpty(shop)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../src/utils/shopify.js"],"names":[],"mappings":";;;AAAA,8CAA2C;AAC3C,sDAAiE;AAEjE,yDAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../src/utils/shopify.js"],"names":[],"mappings":"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"}
|
package/dist/withShopify.js
CHANGED
|
@@ -24,11 +24,9 @@ const withShopify = async (nextPhase, _a) => {
|
|
|
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);
|
|
@@ -77,22 +75,19 @@ const withShopify = async (nextPhase, _a) => {
|
|
|
77
75
|
const API_PATHS = Object.entries(API_ROUTES).reduce((_apiPaths, [routeName, route]) => (Object.assign(Object.assign({}, _apiPaths), { [routeName]: `${basePath}${route}` })), {});
|
|
78
76
|
const API_URLS = Object.entries(API_PATHS).reduce((_apiUrls, [routeName, routePath]) => (Object.assign(Object.assign({}, _apiUrls), { [routeName]: `${appBaseUrl}${routePath}` })), {});
|
|
79
77
|
const APP_HOST_NAME = appUrl.hostname;
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
isEmbeddedApp: true,
|
|
88
|
-
};
|
|
78
|
+
const PAYMENT_CONFIG = utils_1.generatePaymentConfig(paymentConfig, data);
|
|
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
|
+
});
|
|
89
85
|
const APP_WEBHOOKS = {
|
|
90
86
|
// TODO!!!: this should be adding in any extra stuff passed in from plugin config
|
|
91
87
|
[utils_1.API_WEBHOOK_TOPICS.APP_UNINSTALLED]: [{
|
|
92
88
|
url: API_URLS[utils_1.API_ROUTE_NAMES.APP_UNINSTALLED],
|
|
93
89
|
}],
|
|
94
90
|
};
|
|
95
|
-
const PAYMENT_CONFIG = utils_1.generatePaymentConfig(paymentConfig, data);
|
|
96
91
|
const publicRuntimeConfig = Object.assign(Object.assign({}, _publicRuntimeConfig), { SHOPIFY_API_PUBLIC_KEY,
|
|
97
92
|
SHOPIFY_RUN_MODE,
|
|
98
93
|
APP_BASE_URL,
|
|
@@ -110,8 +105,6 @@ const withShopify = async (nextPhase, _a) => {
|
|
|
110
105
|
API_PATHS,
|
|
111
106
|
API_URLS,
|
|
112
107
|
API_ROUTES });
|
|
113
|
-
// TODO cleanup/consolidate getSessionStorage and getInitializedShopify (add sessionHandler to serverRuntimeConfig??)
|
|
114
|
-
// TODO: do we need to pass along apiVersion here?
|
|
115
108
|
const INITIALIZED_SHOPIFY = await utils_1.getInitializedShopify(_serverRuntimeConfig);
|
|
116
109
|
const serverRuntimeConfig = Object.assign(Object.assign({}, _serverRuntimeConfig), { INITIALIZED_SHOPIFY });
|
|
117
110
|
return Object.assign(Object.assign({}, _nextConfig), { basePath: _basePath, publicRuntimeConfig,
|