@agnostack/next-shopify 1.2.1-alpha.1 → 1.2.1-alpha.3
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/CHANGELOG.md +20 -0
- package/dist/apiHandlers.js +8 -2
- package/dist/apiHandlers.js.map +1 -1
- package/dist/apiHelpers.d.ts +14 -14
- package/dist/apiHelpers.js +39 -73
- package/dist/apiHelpers.js.map +1 -1
- package/dist/utils/billing.d.ts +4 -21
- package/dist/utils/billing.js +42 -64
- package/dist/utils/billing.js.map +1 -1
- package/dist/utils/display.d.ts +1 -0
- package/dist/utils/display.js +3 -1
- package/dist/utils/display.js.map +1 -1
- package/dist/utils/errors.d.ts +8 -0
- package/dist/utils/errors.js +23 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/shopify.d.ts +18 -13
- package/dist/utils/shopify.js +49 -29
- package/dist/utils/shopify.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
## [1.2.1-alpha.3](https://github.com/agnostack/next-shopify/compare/v1.2.1-alpha.2...v1.2.1-alpha.3) (2022-11-13)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* add headers to response ([ab79594](https://github.com/agnostack/next-shopify/commit/ab795947e7db5e2da00a9cb47762b0280fbf7cb3))
|
|
7
|
+
* add headers to response ([43f8911](https://github.com/agnostack/next-shopify/commit/43f8911511fc2aaeed40526f1ec6b8177beb7c99))
|
|
8
|
+
* add verification error handling ([f995b88](https://github.com/agnostack/next-shopify/commit/f995b88ec113a22c142fc0d36815cb690ae000fe))
|
|
9
|
+
* move to appBaseUrl ([bf6ce79](https://github.com/agnostack/next-shopify/commit/bf6ce791254502f27b2158c12a7837ea6c14bd82))
|
|
10
|
+
* updated auth helper ([8b3af3e](https://github.com/agnostack/next-shopify/commit/8b3af3e38cad63596ee0d5ca19b622899d1695ad))
|
|
11
|
+
* work in progress ([5472aa1](https://github.com/agnostack/next-shopify/commit/5472aa1e8eeddf6febbe7cca988bdc0303251147))
|
|
12
|
+
|
|
13
|
+
## [1.2.1-alpha.2](https://github.com/agnostack/next-shopify/compare/v1.2.1-alpha.1...v1.2.1-alpha.2) (2022-11-13)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* testing logs ([49e9467](https://github.com/agnostack/next-shopify/commit/49e9467397f403726d0b98d18630b2ac1e7bb47c))
|
|
19
|
+
* testing logs ([7555045](https://github.com/agnostack/next-shopify/commit/7555045e0d0524ba448108202aa8510b14ae0e8c))
|
|
20
|
+
|
|
1
21
|
## [1.2.1-alpha.1](https://github.com/agnostack/next-shopify/compare/v1.2.0...v1.2.1-alpha.1) (2022-11-13)
|
|
2
22
|
|
|
3
23
|
|
package/dist/apiHandlers.js
CHANGED
|
@@ -7,12 +7,15 @@ const apiHelpers_1 = require("./apiHelpers");
|
|
|
7
7
|
const utils_1 = require("./utils");
|
|
8
8
|
const handleRest = (serverRuntimeConfig) => async (req, res, params) => {
|
|
9
9
|
const { PAGE_PATHS } = serverRuntimeConfig;
|
|
10
|
-
const { message, response, statusCode = 302, redirectUrl = `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?invalid_rest_response`, } = await apiHelpers_1.restHelper({
|
|
10
|
+
const { message, response, headers, statusCode = 302, redirectUrl = `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?invalid_rest_response`, } = await apiHelpers_1.restHelper({
|
|
11
11
|
req,
|
|
12
12
|
res,
|
|
13
13
|
params,
|
|
14
14
|
serverRuntimeConfig,
|
|
15
15
|
});
|
|
16
|
+
Object.entries(utils_1.ensureObject(headers)).forEach(([key, value]) => {
|
|
17
|
+
res.setHeader(key, value);
|
|
18
|
+
});
|
|
16
19
|
// TODO: move these to helper
|
|
17
20
|
if (statusCode >= 300 && statusCode < 400) {
|
|
18
21
|
return res.redirect(statusCode, redirectUrl);
|
|
@@ -32,12 +35,15 @@ exports.handleRest = handleRest;
|
|
|
32
35
|
const handleGraph = (serverRuntimeConfig) => async (req, res, params) => {
|
|
33
36
|
var _a, _b;
|
|
34
37
|
const { PAGE_PATHS } = serverRuntimeConfig;
|
|
35
|
-
const { message, response, statusCode = 302, redirectUrl = `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?invalid_query_response`, } = await apiHelpers_1.graphHelper({
|
|
38
|
+
const { message, response, headers, statusCode = 302, redirectUrl = `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?invalid_query_response`, } = await apiHelpers_1.graphHelper({
|
|
36
39
|
req,
|
|
37
40
|
res,
|
|
38
41
|
params,
|
|
39
42
|
serverRuntimeConfig,
|
|
40
43
|
});
|
|
44
|
+
Object.entries(utils_1.ensureObject(headers)).forEach(([key, value]) => {
|
|
45
|
+
res.setHeader(key, value);
|
|
46
|
+
});
|
|
41
47
|
if (statusCode >= 300 && statusCode < 400) {
|
|
42
48
|
return res.redirect(statusCode, redirectUrl);
|
|
43
49
|
}
|
package/dist/apiHandlers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiHandlers.js","sourceRoot":"","sources":["../src/apiHandlers.js"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,sDAA+C;AAE/C,6CAMqB;AACrB,
|
|
1
|
+
{"version":3,"file":"apiHandlers.js","sourceRoot":"","sources":["../src/apiHandlers.js"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,sDAA+C;AAE/C,6CAMqB;AACrB,mCAAwD;AAEjD,MAAM,UAAU,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;IAC5E,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAA;IAC1C,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,WAAW,GAAG,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,wBAAwB,GAC5E,GAAG,MAAM,uBAAU,CAAC;QACnB,GAAG;QACH,GAAG;QACH,MAAM;QACN,mBAAmB;KACpB,CAAC,CAAA;IAEF,MAAM,CAAC,OAAO,CAAC,oBAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC7D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,6BAA6B;IAC7B,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE;QACzC,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;KAC7C;IAED,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC5C;IAED,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,KAAI,CAAC,CAAC,sBAAQ,CAAC,OAAO,EAAE,sBAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;QAC5E,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;KAC7C;IAED,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAA,EAAE;QACnB,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC5C;IAED,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AACnD,CAAC,CAAA;AArCY,QAAA,UAAU,cAqCtB;AAEM,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;;IAC7E,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAA;IAC1C,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,WAAW,GAAG,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,yBAAyB,GAC7E,GAAG,MAAM,wBAAW,CAAC;QACpB,GAAG;QACH,GAAG;QACH,MAAM;QACN,mBAAmB;KACpB,CAAC,CAAA;IAEF,MAAM,CAAC,OAAO,CAAC,oBAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC7D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;IAEF,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE;QACzC,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;KAC7C;IAED,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAA,EAAE;QACnB,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC5C;IAED,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAA,MAAA,QAAQ,CAAC,IAAI,0CAAE,IAAI,mCAAI,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC1E,CAAC,CAAA;AA5BY,QAAA,WAAW,eA4BvB;AAED,wCAAwC;AACjC,MAAM,UAAU,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACpE,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAA;IAC1C,MAAM,EACJ,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,WAAW,GAAG,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,wBAAwB,GAC5E,GAAG,MAAM,uBAAU,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAEvD,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE;QACzC,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;KAC7C;IAED,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC,CAAA;AAbY,QAAA,UAAU,cAatB;AAED,iDAAiD;AAC1C,MAAM,cAAc,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACxE,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAA;IAC1C,MAAM,EACJ,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,WAAW,GAAG,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,4BAA4B,GAChF,GAAG,MAAM,2BAAc,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAE3D,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE;QACzC,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;KAC7C;IAED,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC,CAAA;AAbY,QAAA,cAAc,kBAa1B;AAED,4DAA4D;AACrD,MAAM,oBAAoB,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9E,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAA;IAC1C,MAAM,EACJ,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,WAAW,GAAG,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,6BAA6B,GACjF,GAAG,MAAM,4BAAe,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAEvD,IAAI,UAAU,IAAI,GAAG,IAAI,UAAU,GAAG,GAAG,EAAE;QACzC,OAAO,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;KAC7C;IAED,OAAO,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC,CAAA;AAbY,QAAA,oBAAoB,wBAahC"}
|
package/dist/apiHelpers.d.ts
CHANGED
|
@@ -4,20 +4,20 @@ export function restHelper({ req, res, params: _params, serverRuntimeConfig }: {
|
|
|
4
4
|
params: any;
|
|
5
5
|
serverRuntimeConfig: any;
|
|
6
6
|
}): Promise<{
|
|
7
|
+
statusCode: number;
|
|
8
|
+
message: any;
|
|
9
|
+
headers: {
|
|
10
|
+
'X-Shopify-API-Request-Failure-Reauthorize': string;
|
|
11
|
+
'X-Shopify-API-Request-Failure-Reauthorize-Url': any;
|
|
12
|
+
};
|
|
13
|
+
} | {
|
|
7
14
|
statusCode: number;
|
|
8
15
|
message: string;
|
|
9
16
|
response?: undefined;
|
|
10
|
-
redirectUrl?: undefined;
|
|
11
17
|
} | {
|
|
12
18
|
statusCode: number;
|
|
13
19
|
response: any;
|
|
14
20
|
message?: undefined;
|
|
15
|
-
redirectUrl?: undefined;
|
|
16
|
-
} | {
|
|
17
|
-
statusCode: number;
|
|
18
|
-
redirectUrl: string;
|
|
19
|
-
message?: undefined;
|
|
20
|
-
response?: undefined;
|
|
21
21
|
}>;
|
|
22
22
|
export function graphHelper({ req, res, params: _params, serverRuntimeConfig }: {
|
|
23
23
|
req: any;
|
|
@@ -25,20 +25,20 @@ export function graphHelper({ req, res, params: _params, serverRuntimeConfig }:
|
|
|
25
25
|
params: any;
|
|
26
26
|
serverRuntimeConfig: any;
|
|
27
27
|
}): Promise<{
|
|
28
|
+
statusCode: number;
|
|
29
|
+
message: any;
|
|
30
|
+
headers: {
|
|
31
|
+
'X-Shopify-API-Request-Failure-Reauthorize': string;
|
|
32
|
+
'X-Shopify-API-Request-Failure-Reauthorize-Url': any;
|
|
33
|
+
};
|
|
34
|
+
} | {
|
|
28
35
|
statusCode: number;
|
|
29
36
|
message: string;
|
|
30
37
|
response?: undefined;
|
|
31
|
-
redirectUrl?: undefined;
|
|
32
38
|
} | {
|
|
33
39
|
statusCode: number;
|
|
34
40
|
response: import("@shopify/shopify-api").RequestReturn<unknown>;
|
|
35
41
|
message?: undefined;
|
|
36
|
-
redirectUrl?: undefined;
|
|
37
|
-
} | {
|
|
38
|
-
statusCode: number;
|
|
39
|
-
redirectUrl: string;
|
|
40
|
-
message?: undefined;
|
|
41
|
-
response?: undefined;
|
|
42
42
|
}>;
|
|
43
43
|
export function authHelper({ req, res, serverRuntimeConfig }: {
|
|
44
44
|
req: any;
|
package/dist/apiHelpers.js
CHANGED
|
@@ -14,6 +14,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14
14
|
exports.uninstallHelper = exports.callbackHelper = exports.authHelper = exports.graphHelper = exports.restHelper = void 0;
|
|
15
15
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
16
16
|
const utils_1 = require("./utils");
|
|
17
|
+
const authenticationErrorHelper = ({ error, shop, serverRuntimeConfig }) => {
|
|
18
|
+
const { message, data } = error;
|
|
19
|
+
const { API_PATHS } = serverRuntimeConfig;
|
|
20
|
+
const reauthorizationUrl = (data === null || data === void 0 ? void 0 : data.redirectUrl) || `${API_PATHS[utils_1.API_ROUTE_NAMES.AUTH]}?shop=${shop}`;
|
|
21
|
+
return {
|
|
22
|
+
statusCode: 403,
|
|
23
|
+
message,
|
|
24
|
+
headers: {
|
|
25
|
+
'X-Shopify-API-Request-Failure-Reauthorize': '1',
|
|
26
|
+
'X-Shopify-API-Request-Failure-Reauthorize-Url': reauthorizationUrl,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
};
|
|
17
30
|
const restHelper = async ({ req, res, params: _params, serverRuntimeConfig }) => {
|
|
18
31
|
const { query: _query, method: _method, body: _body } = req;
|
|
19
32
|
const { shop } = _query !== null && _query !== void 0 ? _query : {};
|
|
@@ -30,13 +43,9 @@ const restHelper = async ({ req, res, params: _params, serverRuntimeConfig }) =>
|
|
|
30
43
|
message: 'Invalid arguments',
|
|
31
44
|
};
|
|
32
45
|
}
|
|
33
|
-
const shopify = utils_1.getInitializedShopify(serverRuntimeConfig, shop);
|
|
34
46
|
try {
|
|
35
|
-
const session = await
|
|
36
|
-
|
|
37
|
-
// TODO refactor
|
|
38
|
-
// await verifyRequest(shopify, shop, session)
|
|
39
|
-
const client = new shopify.Clients.Rest(shop, session === null || session === void 0 ? void 0 : session.accessToken);
|
|
47
|
+
const session = await utils_1.getVerifiedSession({ req, res, shop, serverRuntimeConfig });
|
|
48
|
+
const client = new shopify_api_1.Shopify.Clients.Rest(shop, session === null || session === void 0 ? void 0 : session.accessToken);
|
|
40
49
|
const response = await client[method](Object.assign({ path,
|
|
41
50
|
query,
|
|
42
51
|
body, type: shopify_api_1.DataType.JSON }, params));
|
|
@@ -46,33 +55,15 @@ const restHelper = async ({ req, res, params: _params, serverRuntimeConfig }) =>
|
|
|
46
55
|
};
|
|
47
56
|
}
|
|
48
57
|
catch (error) {
|
|
49
|
-
|
|
58
|
+
if (error instanceof utils_1.ShopifyAuthenticationError) {
|
|
59
|
+
return authenticationErrorHelper({ error, shop, serverRuntimeConfig });
|
|
60
|
+
}
|
|
50
61
|
const errorMessage = 'Error handling rest call';
|
|
51
62
|
console.error(errorMessage, error);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
message: errorMessage,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
case error instanceof shopify.Errors.CookieNotFound:
|
|
60
|
-
case error instanceof shopify.Errors.SessionNotFound: {
|
|
61
|
-
return {
|
|
62
|
-
statusCode: 302,
|
|
63
|
-
redirectUrl: utils_1.getRedirectUrl(serverRuntimeConfig, {
|
|
64
|
-
req,
|
|
65
|
-
res,
|
|
66
|
-
}),
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
default: {
|
|
70
|
-
return {
|
|
71
|
-
statusCode: 500,
|
|
72
|
-
message: errorMessage,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
63
|
+
return {
|
|
64
|
+
statusCode: 500,
|
|
65
|
+
message: errorMessage,
|
|
66
|
+
};
|
|
76
67
|
}
|
|
77
68
|
};
|
|
78
69
|
exports.restHelper = restHelper;
|
|
@@ -91,13 +82,9 @@ const graphHelper = async ({ req, res, params: _params, serverRuntimeConfig }) =
|
|
|
91
82
|
message: 'Invalid arguments',
|
|
92
83
|
};
|
|
93
84
|
}
|
|
94
|
-
const shopify = utils_1.getInitializedShopify(serverRuntimeConfig, shop);
|
|
95
85
|
try {
|
|
96
|
-
const session = await
|
|
97
|
-
|
|
98
|
-
// TODO refactor
|
|
99
|
-
// await verifyRequest(shopify, shop, session)
|
|
100
|
-
const client = new shopify.Clients.Graphql(shop, session === null || session === void 0 ? void 0 : session.accessToken);
|
|
86
|
+
const session = await utils_1.getVerifiedSession({ req, res, shop, serverRuntimeConfig });
|
|
87
|
+
const client = new shopify_api_1.Shopify.Clients.Graphql(shop, session === null || session === void 0 ? void 0 : session.accessToken);
|
|
101
88
|
const response = await client.query(Object.assign({ data,
|
|
102
89
|
query }, params));
|
|
103
90
|
// TODO: check for repsonse.errors/response.body?.errors and throw??
|
|
@@ -107,33 +94,16 @@ const graphHelper = async ({ req, res, params: _params, serverRuntimeConfig }) =
|
|
|
107
94
|
};
|
|
108
95
|
}
|
|
109
96
|
catch (error) {
|
|
97
|
+
if (error instanceof utils_1.ShopifyAuthenticationError) {
|
|
98
|
+
return authenticationErrorHelper({ error, shop, serverRuntimeConfig });
|
|
99
|
+
}
|
|
110
100
|
// TODO determine proper catch checks
|
|
111
101
|
const errorMessage = 'Error handling query call';
|
|
112
102
|
console.error(errorMessage, error);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
message: errorMessage,
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
case error instanceof shopify.Errors.CookieNotFound:
|
|
121
|
-
case error instanceof shopify.Errors.SessionNotFound: {
|
|
122
|
-
return {
|
|
123
|
-
statusCode: 302,
|
|
124
|
-
redirectUrl: utils_1.getRedirectUrl(serverRuntimeConfig, {
|
|
125
|
-
req,
|
|
126
|
-
res,
|
|
127
|
-
}),
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
default: {
|
|
131
|
-
return {
|
|
132
|
-
statusCode: 500,
|
|
133
|
-
message: errorMessage,
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
}
|
|
103
|
+
return {
|
|
104
|
+
statusCode: 500,
|
|
105
|
+
message: errorMessage,
|
|
106
|
+
};
|
|
137
107
|
}
|
|
138
108
|
};
|
|
139
109
|
exports.graphHelper = graphHelper;
|
|
@@ -166,19 +136,15 @@ const callbackHelper = async ({ req, res, serverRuntimeConfig }) => {
|
|
|
166
136
|
redirectUrl: `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?code=invalid_callback`,
|
|
167
137
|
};
|
|
168
138
|
}
|
|
169
|
-
const shopify = utils_1.getInitializedShopify(serverRuntimeConfig, shop);
|
|
170
139
|
try {
|
|
171
|
-
const session = await
|
|
140
|
+
const session = await shopify_api_1.Shopify.Auth.validateAuthCallback(req, res, req.query);
|
|
172
141
|
await utils_1.registerWebhooks(serverRuntimeConfig, APP_WEBHOOKS, session);
|
|
173
142
|
// TODO: explore objectToQuerystring
|
|
174
|
-
let redirectUrl = `${
|
|
143
|
+
let redirectUrl = `${shopify_api_1.Shopify.Utils.getEmbeddedAppUrl(req)}?${new URLSearchParams(req.query).toString()}`;
|
|
175
144
|
if (PAYMENT_CONFIG === null || PAYMENT_CONFIG === void 0 ? void 0 : PAYMENT_CONFIG.required) {
|
|
176
|
-
const billingManager = new utils_1.BillingManager(
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
});
|
|
180
|
-
const { hasPayment, confirmationUrl } = await billingManager.ensureBilling();
|
|
181
|
-
if (!hasPayment && utils_1.stringNotEmpty(confirmationUrl)) {
|
|
145
|
+
const billingManager = new utils_1.BillingManager(session, serverRuntimeConfig);
|
|
146
|
+
const confirmationUrl = await billingManager.ensureBilling();
|
|
147
|
+
if (utils_1.stringNotEmpty(confirmationUrl)) {
|
|
182
148
|
redirectUrl = confirmationUrl;
|
|
183
149
|
}
|
|
184
150
|
}
|
|
@@ -191,14 +157,14 @@ const callbackHelper = async ({ req, res, serverRuntimeConfig }) => {
|
|
|
191
157
|
const errorMessage = 'Error handling callback route';
|
|
192
158
|
console.error(errorMessage, error);
|
|
193
159
|
switch (true) {
|
|
194
|
-
case error instanceof
|
|
160
|
+
case error instanceof shopify_api_1.Shopify.Errors.InvalidOAuthError: {
|
|
195
161
|
return {
|
|
196
162
|
statusCode: 400,
|
|
197
163
|
message: errorMessage,
|
|
198
164
|
};
|
|
199
165
|
}
|
|
200
|
-
case error instanceof
|
|
201
|
-
case error instanceof
|
|
166
|
+
case error instanceof shopify_api_1.Shopify.Errors.CookieNotFound:
|
|
167
|
+
case error instanceof shopify_api_1.Shopify.Errors.SessionNotFound: {
|
|
202
168
|
return {
|
|
203
169
|
statusCode: 302,
|
|
204
170
|
redirectUrl: utils_1.getRedirectUrl(serverRuntimeConfig, {
|
package/dist/apiHelpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiHelpers.js","sourceRoot":"","sources":["../src/apiHelpers.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"apiHelpers.js","sourceRoot":"","sources":["../src/apiHelpers.js"],"names":[],"mappings":"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"}
|
package/dist/utils/billing.d.ts
CHANGED
|
@@ -1,33 +1,16 @@
|
|
|
1
|
-
export function ShopifyBillingError(message: any, errorData: any): void;
|
|
2
|
-
export class ShopifyBillingError {
|
|
3
|
-
constructor(message: any, errorData: any);
|
|
4
|
-
name: string;
|
|
5
|
-
stack: string;
|
|
6
|
-
message: any;
|
|
7
|
-
errorData: any;
|
|
8
|
-
}
|
|
9
1
|
export namespace BILLING_INTERVALS {
|
|
10
2
|
const ONE_TIME: string;
|
|
11
3
|
const EVERY_30_DAYS: string;
|
|
12
4
|
const ANNUAL: string;
|
|
13
5
|
}
|
|
14
6
|
export class BillingManager {
|
|
15
|
-
constructor(
|
|
16
|
-
session: any;
|
|
17
|
-
payment: any;
|
|
18
|
-
});
|
|
19
|
-
shopify: any;
|
|
7
|
+
constructor(session: any, serverRuntimeConfig: any);
|
|
20
8
|
shop: any;
|
|
21
9
|
accessToken: any;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
testMode: any;
|
|
25
|
-
billingType: any;
|
|
10
|
+
appBaseUrl: any;
|
|
11
|
+
paymentConfig: any;
|
|
26
12
|
isRecurring: boolean;
|
|
27
|
-
ensureBilling(): Promise<
|
|
28
|
-
hasPayment: boolean;
|
|
29
|
-
confirmationUrl: any;
|
|
30
|
-
}>;
|
|
13
|
+
ensureBilling(): Promise<any>;
|
|
31
14
|
hasActivePayment(): Promise<boolean>;
|
|
32
15
|
requestPayment(): Promise<any>;
|
|
33
16
|
requestSinglePayment(client: any, returnUrl: any): Promise<any>;
|
package/dist/utils/billing.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BillingManager = exports.
|
|
3
|
+
exports.BillingManager = exports.BILLING_INTERVALS = void 0;
|
|
4
4
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
5
5
|
const display_1 = require("./display");
|
|
6
|
+
const errors_1 = require("./errors");
|
|
6
7
|
exports.BILLING_INTERVALS = {
|
|
7
8
|
ONE_TIME: 'ONE_TIME',
|
|
8
9
|
EVERY_30_DAYS: 'EVERY_30_DAYS',
|
|
@@ -54,46 +55,30 @@ const ONE_TIME_PURCHASE_MUTATION = `
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
`;
|
|
57
|
-
// TODO match existing patterns for custom error types
|
|
58
|
-
function ShopifyBillingError(message, errorData) {
|
|
59
|
-
this.name = 'ShopifyBillingError';
|
|
60
|
-
this.stack = new Error().stack;
|
|
61
|
-
this.message = message;
|
|
62
|
-
this.errorData = errorData;
|
|
63
|
-
}
|
|
64
|
-
exports.ShopifyBillingError = ShopifyBillingError;
|
|
65
|
-
ShopifyBillingError.prototype = new Error();
|
|
66
58
|
class BillingManager {
|
|
67
|
-
constructor(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
59
|
+
constructor(session, serverRuntimeConfig) {
|
|
60
|
+
var _a;
|
|
61
|
+
if (display_1.stringEmpty(session === null || session === void 0 ? void 0 : session.shop) ||
|
|
62
|
+
display_1.stringEmpty(session === null || session === void 0 ? void 0 : session.accessToken) ||
|
|
63
|
+
!Object.values(exports.BILLING_INTERVALS).includes((_a = serverRuntimeConfig.PAYMENT_CONFIG) === null || _a === void 0 ? void 0 : _a.type)) {
|
|
64
|
+
throw new errors_1.ShopifyBillingError('Invalid billing configuration');
|
|
72
65
|
}
|
|
73
|
-
this.shopify = shopify;
|
|
74
66
|
this.shop = session.shop;
|
|
75
67
|
this.accessToken = session.accessToken;
|
|
76
|
-
this.
|
|
77
|
-
this.
|
|
78
|
-
this.
|
|
79
|
-
this.billingType = payment.type;
|
|
80
|
-
this.isRecurring = RECURRING_INTERVALS.includes(payment.type);
|
|
68
|
+
this.appBaseUrl = serverRuntimeConfig.APP_BASE_URL;
|
|
69
|
+
this.paymentConfig = display_1.ensureObject(serverRuntimeConfig.PAYMENT_CONFIG);
|
|
70
|
+
this.isRecurring = RECURRING_INTERVALS.includes(this.paymentConfig.type);
|
|
81
71
|
}
|
|
82
72
|
async ensureBilling() {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
hasPayment = true;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
hasPayment = false;
|
|
90
|
-
confirmationUrl = await this.requestPayment();
|
|
73
|
+
const hasPayment = await this.hasActivePayment();
|
|
74
|
+
if (!hasPayment) {
|
|
75
|
+
return undefined;
|
|
91
76
|
}
|
|
92
|
-
return
|
|
77
|
+
return this.requestPayment();
|
|
93
78
|
}
|
|
94
79
|
// TODO ensure this logic works for recurring payments
|
|
95
80
|
async hasActivePayment() {
|
|
96
|
-
const client = new
|
|
81
|
+
const client = new shopify_api_1.Shopify.Clients.Rest(this.shop, this.accessToken);
|
|
97
82
|
const { application_charges } = display_1.ensureObject(await client.get({
|
|
98
83
|
path: 'application_charges',
|
|
99
84
|
type: shopify_api_1.DataType.JSON,
|
|
@@ -112,75 +97,68 @@ class BillingManager {
|
|
|
112
97
|
return display_1.objectNotEmpty(existingCharge);
|
|
113
98
|
}
|
|
114
99
|
async requestPayment() {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
// TODO explore using objectToQueryString
|
|
100
|
+
const client = new shopify_api_1.Shopify.Clients.Graphql(this.shop, this.accessToken);
|
|
101
|
+
// TODO: explore objectToQuerystring
|
|
118
102
|
const queryParams = [
|
|
119
103
|
`shop=${this.shop}`,
|
|
120
104
|
`host=${Buffer.from(`${this.shop}/admin`).toString('base64')}`
|
|
121
105
|
];
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
data = (_b = (_a = mutationResponse === null || mutationResponse === void 0 ? void 0 : mutationResponse.body) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.appSubscriptionCreate;
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
const mutationResponse = await this.requestSinglePayment(client, returnUrl);
|
|
131
|
-
data = (_d = (_c = mutationResponse === null || mutationResponse === void 0 ? void 0 : mutationResponse.body) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.appPurchaseOneTimeCreate;
|
|
132
|
-
}
|
|
106
|
+
const returnUrl = `${this.appBaseUrl}?${queryParams.join('&')}`;
|
|
107
|
+
const _requestPayment = this.isRecurring
|
|
108
|
+
? this.requestRecurringPayment
|
|
109
|
+
: this.requestSinglePayment;
|
|
110
|
+
const data = await _requestPayment(client, returnUrl);
|
|
133
111
|
if (display_1.arrayNotEmpty(data === null || data === void 0 ? void 0 : data.userErrors)) {
|
|
134
|
-
throw new ShopifyBillingError('
|
|
112
|
+
throw new errors_1.ShopifyBillingError('User error requesting payment');
|
|
135
113
|
}
|
|
136
114
|
return data === null || data === void 0 ? void 0 : data.confirmationUrl;
|
|
137
115
|
}
|
|
138
116
|
async requestSinglePayment(client, returnUrl) {
|
|
139
|
-
var _a, _b;
|
|
117
|
+
var _a, _b, _c, _d;
|
|
118
|
+
const { price, appName: name, testMode: test, } = this.paymentConfig;
|
|
140
119
|
const payload = {
|
|
141
120
|
data: {
|
|
142
121
|
query: ONE_TIME_PURCHASE_MUTATION,
|
|
143
122
|
variables: {
|
|
144
|
-
|
|
145
|
-
|
|
123
|
+
test,
|
|
124
|
+
name,
|
|
125
|
+
price,
|
|
146
126
|
returnUrl,
|
|
147
|
-
test: this.testMode,
|
|
148
127
|
},
|
|
149
128
|
},
|
|
150
129
|
};
|
|
151
130
|
const mutationResponse = await client.query(payload);
|
|
152
131
|
if (((_a = mutationResponse === null || mutationResponse === void 0 ? void 0 : mutationResponse.body) === null || _a === void 0 ? void 0 : _a.errors) && display_1.arrayNotEmpty((_b = mutationResponse === null || mutationResponse === void 0 ? void 0 : mutationResponse.body) === null || _b === void 0 ? void 0 : _b.errors)) {
|
|
153
|
-
throw new ShopifyBillingError('Error
|
|
132
|
+
throw new errors_1.ShopifyBillingError('Error executing one-time purchase');
|
|
154
133
|
}
|
|
155
|
-
return mutationResponse;
|
|
134
|
+
return (_d = (_c = mutationResponse === null || mutationResponse === void 0 ? void 0 : mutationResponse.body) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.appPurchaseOneTimeCreate;
|
|
156
135
|
}
|
|
157
136
|
async requestRecurringPayment(client, returnUrl) {
|
|
158
|
-
var _a, _b;
|
|
137
|
+
var _a, _b, _c, _d;
|
|
138
|
+
const { price, appName: name, testMode: test, type: interval, } = this.paymentConfig;
|
|
159
139
|
const payload = {
|
|
160
140
|
data: {
|
|
161
141
|
query: RECURRING_PURCHASE_MUTATION,
|
|
162
142
|
variables: {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
143
|
+
test,
|
|
144
|
+
name,
|
|
145
|
+
returnUrl,
|
|
146
|
+
lineItems: [{
|
|
166
147
|
plan: {
|
|
167
148
|
appRecurringPricingDetails: {
|
|
168
|
-
interval
|
|
169
|
-
price
|
|
149
|
+
interval,
|
|
150
|
+
price,
|
|
170
151
|
},
|
|
171
152
|
},
|
|
172
|
-
}
|
|
173
|
-
],
|
|
174
|
-
returnUrl,
|
|
175
|
-
test: this.testMode,
|
|
153
|
+
}],
|
|
176
154
|
},
|
|
177
155
|
},
|
|
178
156
|
};
|
|
179
157
|
const mutationResponse = await client.query(payload);
|
|
180
158
|
if (((_a = mutationResponse === null || mutationResponse === void 0 ? void 0 : mutationResponse.body) === null || _a === void 0 ? void 0 : _a.errors) && display_1.arrayNotEmpty((_b = mutationResponse === null || mutationResponse === void 0 ? void 0 : mutationResponse.body) === null || _b === void 0 ? void 0 : _b.errors)) {
|
|
181
|
-
throw new ShopifyBillingError('Error
|
|
159
|
+
throw new errors_1.ShopifyBillingError('Error executing recurring purchase');
|
|
182
160
|
}
|
|
183
|
-
return mutationResponse;
|
|
161
|
+
return (_d = (_c = mutationResponse === null || mutationResponse === void 0 ? void 0 : mutationResponse.body) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.appSubscriptionCreate;
|
|
184
162
|
}
|
|
185
163
|
}
|
|
186
164
|
exports.BillingManager = BillingManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/utils/billing.js"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"billing.js","sourceRoot":"","sources":["../../src/utils/billing.js"],"names":[],"mappings":"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"}
|
package/dist/utils/display.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export function isType(value: any, type: any): boolean;
|
|
|
5
5
|
export function ensureObject(object: any): any;
|
|
6
6
|
export function ensureString(string: any): string;
|
|
7
7
|
export function ensureArray(array?: any[]): any[];
|
|
8
|
+
export function ensureNumeric(string: any): number;
|
|
8
9
|
export function objectEmpty(object: any): boolean;
|
|
9
10
|
export function objectNotEmpty(object: any): boolean;
|
|
10
11
|
export function stringNotEmpty(stringable: any): boolean;
|
package/dist/utils/display.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isTrue = exports.arrayNotEmpty = exports.arrayEmpty = exports.stringEmpty = exports.stringNotEmpty = exports.objectNotEmpty = exports.objectEmpty = exports.ensureArray = exports.ensureString = exports.ensureObject = exports.isType = exports.querystringToObject = exports.getInteger = exports.getGUID = void 0;
|
|
3
|
+
exports.isTrue = exports.arrayNotEmpty = exports.arrayEmpty = exports.stringEmpty = exports.stringNotEmpty = exports.objectNotEmpty = exports.objectEmpty = exports.ensureNumeric = exports.ensureArray = exports.ensureString = exports.ensureObject = exports.isType = exports.querystringToObject = exports.getInteger = exports.getGUID = void 0;
|
|
4
4
|
/* eslint-disable no-use-before-define */
|
|
5
5
|
const uuid_1 = require("uuid");
|
|
6
6
|
const getGUID = () => (uuid_1.v4());
|
|
@@ -28,6 +28,8 @@ const ensureArray = (array = []) => (
|
|
|
28
28
|
// eslint-disable-next-line no-nested-ternary
|
|
29
29
|
!array ? [] : Array.isArray(array) ? array : [array]);
|
|
30
30
|
exports.ensureArray = ensureArray;
|
|
31
|
+
const ensureNumeric = (string) => (Number(exports.ensureString(string).replace(/[^0-9.]/gi, '')));
|
|
32
|
+
exports.ensureNumeric = ensureNumeric;
|
|
31
33
|
const objectEmpty = (object) => (!object || !Object.keys(object).length);
|
|
32
34
|
exports.objectEmpty = objectEmpty;
|
|
33
35
|
const objectNotEmpty = (object) => (!exports.objectEmpty(object));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/utils/display.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/utils/display.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ShopifyAuthenticationError = exports.ShopifyBillingError = void 0;
|
|
4
|
+
const display_1 = require("./display");
|
|
5
|
+
class ShopifyBillingError extends Error {
|
|
6
|
+
constructor(message, code = 400) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.code = display_1.ensureNumeric(code);
|
|
9
|
+
this.name = 'ShopifyBillingError';
|
|
10
|
+
Object.setPrototypeOf(this, ShopifyBillingError.prototype);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.ShopifyBillingError = ShopifyBillingError;
|
|
14
|
+
class ShopifyAuthenticationError extends Error {
|
|
15
|
+
constructor(message, data) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.data = data;
|
|
18
|
+
this.name = 'ShopifyAuthenticationError';
|
|
19
|
+
Object.setPrototypeOf(this, ShopifyAuthenticationError.prototype);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.ShopifyAuthenticationError = ShopifyAuthenticationError;
|
|
23
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.js"],"names":[],"mappings":";;;AAAA,uCAAyC;AAEzC,MAAa,mBAAoB,SAAQ,KAAK;IAC5C,YAAY,OAAO,EAAE,IAAI,GAAG,GAAG;QAC7B,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,uBAAa,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAA;IAC5D,CAAC;CACF;AAPD,kDAOC;AAED,MAAa,0BAA2B,SAAQ,KAAK;IACnD,YAAY,OAAO,EAAE,IAAI;QACvB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;QACxC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAA;IACnE,CAAC;CACF;AAPD,gEAOC"}
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -12,6 +12,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./billing"), exports);
|
|
14
14
|
__exportStar(require("./display"), exports);
|
|
15
|
+
__exportStar(require("./errors"), exports);
|
|
15
16
|
__exportStar(require("./firebase"), exports);
|
|
16
17
|
__exportStar(require("./shopify"), exports);
|
|
17
18
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.js"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAyB;AACzB,4CAAyB;AACzB,6CAA0B;AAC1B,4CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.js"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAyB;AACzB,4CAAyB;AACzB,2CAAwB;AACxB,6CAA0B;AAC1B,4CAAyB"}
|
package/dist/utils/shopify.d.ts
CHANGED
|
@@ -8,18 +8,7 @@ export namespace API_ROUTE_NAMES {
|
|
|
8
8
|
const AUTH_CALLBACK: string;
|
|
9
9
|
const APP_UNINSTALLED: string;
|
|
10
10
|
}
|
|
11
|
-
export function
|
|
12
|
-
required: boolean;
|
|
13
|
-
test: any;
|
|
14
|
-
type: any;
|
|
15
|
-
name: string;
|
|
16
|
-
price: {
|
|
17
|
-
amount: any;
|
|
18
|
-
currencyCode: any;
|
|
19
|
-
};
|
|
20
|
-
};
|
|
21
|
-
export function verifyRequest(shopify: any, shop: any, session: any): Promise<never>;
|
|
22
|
-
export function getInitializedShopify(props: any, _shop: any): {
|
|
11
|
+
export function getInitializedShopify(serverRuntimeConfig: any, _shop: any): {
|
|
23
12
|
Context: import("@shopify/shopify-api/dist/context").ContextInterface;
|
|
24
13
|
Auth: {
|
|
25
14
|
SESSION_COOKIE_NAME: string;
|
|
@@ -71,7 +60,23 @@ export function getInitializedShopify(props: any, _shop: any): {
|
|
|
71
60
|
};
|
|
72
61
|
Errors: typeof import("@shopify/shopify-api/dist/error");
|
|
73
62
|
};
|
|
74
|
-
export function
|
|
63
|
+
export function generatePaymentConfig(paymentConfig: any, data: any): {
|
|
64
|
+
type: any;
|
|
65
|
+
required: boolean;
|
|
66
|
+
test: any;
|
|
67
|
+
name: string;
|
|
68
|
+
price: {
|
|
69
|
+
amount: any;
|
|
70
|
+
currencyCode: any;
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export function getVerifiedSession({ req, res, shop, serverRuntimeConfig }: {
|
|
74
|
+
req: any;
|
|
75
|
+
res: any;
|
|
76
|
+
shop: any;
|
|
77
|
+
serverRuntimeConfig: any;
|
|
78
|
+
}): Promise<import("@shopify/shopify-api/dist/auth/session/session").Session>;
|
|
79
|
+
export function registerWebhooks(serverRuntimeConfig: any, webhookRegistry: any, session: any): Promise<[any, any, any, any, any, any, any, any, any, any][]>;
|
|
75
80
|
export function getRedirectUrl(props: any, { req, res, query: _query, }: {
|
|
76
81
|
req: any;
|
|
77
82
|
res: any;
|
package/dist/utils/shopify.js
CHANGED
|
@@ -3,9 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getRedirectUrl = exports.registerWebhooks = exports.
|
|
6
|
+
exports.getRedirectUrl = exports.registerWebhooks = exports.getVerifiedSession = exports.generatePaymentConfig = exports.getInitializedShopify = exports.API_ROUTE_NAMES = exports.PAGE_ROUTE_NAMES = void 0;
|
|
7
7
|
const cookies_1 = __importDefault(require("cookies"));
|
|
8
8
|
const shopify_api_1 = require("@shopify/shopify-api");
|
|
9
|
+
const errors_1 = require("./errors");
|
|
9
10
|
const display_1 = require("./display");
|
|
10
11
|
const firebase_1 = require("./firebase");
|
|
11
12
|
const billing_1 = require("./billing");
|
|
@@ -24,6 +25,19 @@ const TEST_GRAPHQL_QUERY = `
|
|
|
24
25
|
name
|
|
25
26
|
}
|
|
26
27
|
}`;
|
|
28
|
+
// TODO!!!!: explore moving into FirebaseSessionHandler.getInstance and/or another singleton here??
|
|
29
|
+
const getInitializedShopify = (serverRuntimeConfig, _shop) => {
|
|
30
|
+
const { FB_CONFIG, FB_ROOT_COLLECTION, APP_ID, APP_CONFIG } = serverRuntimeConfig;
|
|
31
|
+
const shop = shopify_api_1.Shopify.Utils.sanitizeShop(_shop);
|
|
32
|
+
const sessionHandler = firebase_1.FirebaseSessionHandler.getInstance(FB_CONFIG, {
|
|
33
|
+
shop,
|
|
34
|
+
app: APP_ID,
|
|
35
|
+
collection: FB_ROOT_COLLECTION,
|
|
36
|
+
});
|
|
37
|
+
shopify_api_1.Shopify.Context.initialize(Object.assign(Object.assign({}, APP_CONFIG), { SESSION_STORAGE: new shopify_api_1.Shopify.Session.CustomSessionStorage((session) => firebase_1.storeCallback(session, sessionHandler), (id) => firebase_1.loadCallback(id, sessionHandler), (id) => firebase_1.deleteSessionsCallback(id, sessionHandler), (ids) => firebase_1.deleteSessionsCallback(ids, sessionHandler), (__shop) => firebase_1.findSessionsByShop(shopify_api_1.Shopify.Utils.sanitizeShop(__shop), sessionHandler)) }));
|
|
38
|
+
return shopify_api_1.Shopify;
|
|
39
|
+
};
|
|
40
|
+
exports.getInitializedShopify = getInitializedShopify;
|
|
27
41
|
const generatePaymentConfig = (paymentConfig, data) => {
|
|
28
42
|
const { name, price, currency = 'USD', type = billing_1.BILLING_INTERVALS.ONE_TIME, } = display_1.ensureObject(paymentConfig);
|
|
29
43
|
const { debugMode, environment } = display_1.ensureObject(data);
|
|
@@ -32,9 +46,9 @@ const generatePaymentConfig = (paymentConfig, data) => {
|
|
|
32
46
|
}
|
|
33
47
|
const notProduction = (environment !== 'production');
|
|
34
48
|
return {
|
|
49
|
+
type,
|
|
35
50
|
required: (environment !== 'development'),
|
|
36
51
|
test: debugMode || (environment !== 'production'),
|
|
37
|
-
type,
|
|
38
52
|
name: `${name}${notProduction ? ` - ${environment}` : ''}`,
|
|
39
53
|
price: {
|
|
40
54
|
amount: price,
|
|
@@ -43,35 +57,41 @@ const generatePaymentConfig = (paymentConfig, data) => {
|
|
|
43
57
|
};
|
|
44
58
|
};
|
|
45
59
|
exports.generatePaymentConfig = generatePaymentConfig;
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
60
|
+
const getVerifiedSession = async ({ req, res, shop, serverRuntimeConfig }) => {
|
|
61
|
+
try {
|
|
62
|
+
const shopify = exports.getInitializedShopify(serverRuntimeConfig, shop);
|
|
63
|
+
const { PAYMENT_CONFIG } = serverRuntimeConfig !== null && serverRuntimeConfig !== void 0 ? serverRuntimeConfig : {};
|
|
64
|
+
const session = await shopify.Utils.loadCurrentSession(req, res);
|
|
65
|
+
if (shop && (session === null || session === void 0 ? void 0 : session.shop) !== shop) {
|
|
66
|
+
throw new errors_1.ShopifyAuthenticationError('Invalid shop');
|
|
67
|
+
}
|
|
68
|
+
if (session === null || session === void 0 ? void 0 : session.isActive()) {
|
|
69
|
+
if (PAYMENT_CONFIG === null || PAYMENT_CONFIG === void 0 ? void 0 : PAYMENT_CONFIG.required) {
|
|
70
|
+
const billingManager = new billing_1.BillingManager(session, serverRuntimeConfig);
|
|
71
|
+
const confirmationUrl = await billingManager.ensureBilling();
|
|
72
|
+
if (display_1.stringNotEmpty(confirmationUrl)) {
|
|
73
|
+
throw new errors_1.ShopifyAuthenticationError('Invalid payment status', { redirectUrl: confirmationUrl });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const client = new shopify_api_1.Shopify.Clients.Graphql(shop, session.accessToken);
|
|
78
|
+
await client.query({ data: TEST_GRAPHQL_QUERY });
|
|
79
|
+
}
|
|
80
|
+
return session;
|
|
81
|
+
}
|
|
82
|
+
throw new errors_1.ShopifyAuthenticationError('Inactive session');
|
|
49
83
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (error instanceof shopify_api_1.Shopify.Errors.HttpResponseError &&
|
|
86
|
+
error.response.code === 401) {
|
|
87
|
+
throw new errors_1.ShopifyAuthenticationError('Not authenticated');
|
|
88
|
+
}
|
|
89
|
+
throw error;
|
|
54
90
|
}
|
|
55
|
-
// TODO: update this to use custom Error class (or one of the built in Shopify Errors)
|
|
56
|
-
throw new Error('Inactive');
|
|
57
91
|
};
|
|
58
|
-
exports.
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
const { FB_CONFIG, FB_ROOT_COLLECTION, APP_ID, APP_CONFIG } = props;
|
|
62
|
-
const shop = shopify_api_1.Shopify.Utils.sanitizeShop(_shop);
|
|
63
|
-
const sessionHandler = firebase_1.FirebaseSessionHandler.getInstance(FB_CONFIG, {
|
|
64
|
-
shop,
|
|
65
|
-
app: APP_ID,
|
|
66
|
-
collection: FB_ROOT_COLLECTION,
|
|
67
|
-
});
|
|
68
|
-
shopify_api_1.Shopify.Context.initialize(Object.assign(Object.assign({}, APP_CONFIG), { SESSION_STORAGE: new shopify_api_1.Shopify.Session.CustomSessionStorage((session) => firebase_1.storeCallback(session, sessionHandler), (id) => firebase_1.loadCallback(id, sessionHandler), (id) => firebase_1.deleteSessionsCallback(id, sessionHandler), (ids) => firebase_1.deleteSessionsCallback(ids, sessionHandler), (__shop) => firebase_1.findSessionsByShop(shopify_api_1.Shopify.Utils.sanitizeShop(__shop), sessionHandler)) }));
|
|
69
|
-
console.log(`>>> > getInitializedShopify > Shopify.Context.HOST_NAME`, shopify_api_1.Shopify.Context.HOST_NAME);
|
|
70
|
-
return shopify_api_1.Shopify;
|
|
71
|
-
};
|
|
72
|
-
exports.getInitializedShopify = getInitializedShopify;
|
|
73
|
-
const registerTopicWebhook = async (props, webhook, topic, { accessToken, shop }) => {
|
|
74
|
-
const shopify = exports.getInitializedShopify(props, shop);
|
|
92
|
+
exports.getVerifiedSession = getVerifiedSession;
|
|
93
|
+
const registerTopicWebhook = async (serverRuntimeConfig, webhook, topic, { accessToken, shop }) => {
|
|
94
|
+
const shopify = exports.getInitializedShopify(serverRuntimeConfig, shop);
|
|
75
95
|
const webhookResponse = await shopify.Webhooks.Registry.register(Object.assign(Object.assign({ topic }, webhook), { accessToken,
|
|
76
96
|
shop }));
|
|
77
97
|
if (!webhookResponse[topic].success) {
|
|
@@ -79,7 +99,7 @@ const registerTopicWebhook = async (props, webhook, topic, { accessToken, shop }
|
|
|
79
99
|
}
|
|
80
100
|
return webhookResponse[topic].success;
|
|
81
101
|
};
|
|
82
|
-
const registerWebhooks = async (
|
|
102
|
+
const registerWebhooks = async (serverRuntimeConfig, webhookRegistry, session) => (Promise.all(Object.entries(webhookRegistry).map(async ([topic, webhooks]) => (Promise.all(webhooks.map(async (webhook) => registerTopicWebhook(serverRuntimeConfig, webhook, topic, session)))))));
|
|
83
103
|
exports.registerWebhooks = registerWebhooks;
|
|
84
104
|
// NOTE this is a custom implementation of the @shopify/shopify-api beginAuth method... see NOTE below
|
|
85
105
|
const beginAuth = ({ APP_CONFIG, APP_CALLBACK_URI, }, { req, res, shop: _shop, isOnline = true, }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../src/utils/shopify.js"],"names":[],"mappings":";;;;;;AAAA,sDAA6B;AAC7B,sDAA8C;AAE9C,
|
|
1
|
+
{"version":3,"file":"shopify.js","sourceRoot":"","sources":["../../src/utils/shopify.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.2.1-alpha.
|
|
3
|
+
"version": "1.2.1-alpha.3",
|
|
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",
|