@agnostack/next-shopify 1.0.1-alpha.1 → 1.1.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +71 -0
- package/dist/apiHandlers.d.ts +3 -0
- package/dist/apiHandlers.js +36 -0
- package/dist/apiHandlers.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -8
- package/dist/index.js.map +1 -1
- package/dist/protectRoute.d.ts +15 -0
- package/dist/protectRoute.js +45 -0
- package/dist/protectRoute.js.map +1 -0
- package/dist/utils/display.d.ts +2 -8
- package/dist/utils/display.js +9 -32
- package/dist/utils/display.js.map +1 -1
- package/dist/utils/firebase.d.ts +15 -0
- package/dist/utils/firebase.js +94 -0
- package/dist/utils/firebase.js.map +1 -0
- package/dist/utils/helpers.d.ts +34 -0
- package/dist/utils/helpers.js +123 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/shopify.d.ts +69 -0
- package/dist/utils/shopify.js +90 -0
- package/dist/utils/shopify.js.map +1 -0
- package/dist/withShopify.d.ts +4 -0
- package/dist/withShopify.js +151 -0
- package/dist/withShopify.js.map +1 -0
- package/package.json +4 -3
- package/dist/utils/data.d.ts +0 -59
- package/dist/utils/data.js +0 -183
- package/dist/utils/data.js.map +0 -1
- package/dist/withZendeskCLI.d.ts +0 -4
- package/dist/withZendeskCLI.js +0 -154
- package/dist/withZendeskCLI.js.map +0 -1
- package/dist/zendeskCLIHandler.d.ts +0 -1
- package/dist/zendeskCLIHandler.js +0 -109
- package/dist/zendeskCLIHandler.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,74 @@
|
|
|
1
|
+
# [1.1.0-alpha.10](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.9...v1.1.0-alpha.10) (2022-11-08)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* reverted interactive prompt ([ab2a841](https://github.com/agnostack/next-shopify/commit/ab2a841ccd3bdb9cf659b2be02aa8ebadee627cd))
|
|
7
|
+
|
|
8
|
+
# [1.1.0-alpha.9](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.8...v1.1.0-alpha.9) (2022-11-08)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* temp set to test prompts ([0a97fd2](https://github.com/agnostack/next-shopify/commit/0a97fd2186b46b6362fd54c1dfdb7810211aee10))
|
|
14
|
+
|
|
15
|
+
# [1.1.0-alpha.8](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.7...v1.1.0-alpha.8) (2022-11-08)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* updated uninstall route ([6f8462a](https://github.com/agnostack/next-shopify/commit/6f8462a7012d18c5205f1f9f22a7940b6b335329))
|
|
21
|
+
|
|
22
|
+
# [1.1.0-alpha.7](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.6...v1.1.0-alpha.7) (2022-11-08)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* updated console logs ([e3450f2](https://github.com/agnostack/next-shopify/commit/e3450f28ccd29d7de3d78d1cb1857ff9e892ccf4))
|
|
28
|
+
|
|
29
|
+
# [1.1.0-alpha.6](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.5...v1.1.0-alpha.6) (2022-11-08)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Bug Fixes
|
|
33
|
+
|
|
34
|
+
* updated to grab from APP_CONFIG ([e5f4c13](https://github.com/agnostack/next-shopify/commit/e5f4c13d5592000ffbf9791fba12b3c236178997))
|
|
35
|
+
|
|
36
|
+
# [1.1.0-alpha.5](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.4...v1.1.0-alpha.5) (2022-11-08)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Bug Fixes
|
|
40
|
+
|
|
41
|
+
* added debug logs ([e6b9703](https://github.com/agnostack/next-shopify/commit/e6b97038580e5802319eb93fd272eb0c27ec4ad3))
|
|
42
|
+
|
|
43
|
+
# [1.1.0-alpha.4](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.3...v1.1.0-alpha.4) (2022-11-07)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### Bug Fixes
|
|
47
|
+
|
|
48
|
+
* added default destructure ([2f14c5c](https://github.com/agnostack/next-shopify/commit/2f14c5c972463df7130387e64b420bf4a56b45fa))
|
|
49
|
+
|
|
50
|
+
# [1.1.0-alpha.3](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.2...v1.1.0-alpha.3) (2022-11-07)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Bug Fixes
|
|
54
|
+
|
|
55
|
+
* split out helper methods ([8148682](https://github.com/agnostack/next-shopify/commit/8148682f3ee940948cf01521b1428a994880c515))
|
|
56
|
+
|
|
57
|
+
# [1.1.0-alpha.2](https://github.com/agnostack/next-shopify/compare/v1.1.0-alpha.1...v1.1.0-alpha.2) (2022-11-07)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Bug Fixes
|
|
61
|
+
|
|
62
|
+
* small refactor on apiHandlers ([fc9315d](https://github.com/agnostack/next-shopify/commit/fc9315d4de6c69096399ae1573f8bc2d4982dffe))
|
|
63
|
+
|
|
64
|
+
# [1.1.0-alpha.1](https://github.com/agnostack/next-shopify/compare/v1.0.1-alpha.1...v1.1.0-alpha.1) (2022-11-07)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
### Features
|
|
68
|
+
|
|
69
|
+
* initial implementation of withShopify > serverRuntimeConfig ([8a4771d](https://github.com/agnostack/next-shopify/commit/8a4771db503fa9fcbec15c5690f31f85b154c40e))
|
|
70
|
+
* initial test implementation ([b212bff](https://github.com/agnostack/next-shopify/commit/b212bffc7aa76e12686444a09d3b6af71294a1dc))
|
|
71
|
+
|
|
1
72
|
## [1.0.1-alpha.1](https://github.com/agnostack/next-shopify/compare/v1.0.0...v1.0.1-alpha.1) (2022-11-07)
|
|
2
73
|
|
|
3
74
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleAppUninstalled = exports.handleCallback = exports.handleAuth = void 0;
|
|
4
|
+
// NOTE: api routes do NOT work in `next export`
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
// NOTE: typically handling: "/api/auth"
|
|
7
|
+
const handleAuth = (props) => async (req, res) => {
|
|
8
|
+
const { PAGE_PATHS } = props;
|
|
9
|
+
const { message, statusCode = 302, redirectUrl = `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?invalid_auth_response`, } = await utils_1.authHelper(Object.assign({ req, res }, props));
|
|
10
|
+
if (statusCode >= 300 && statusCode < 400) {
|
|
11
|
+
return res.redirect(statusCode, redirectUrl);
|
|
12
|
+
}
|
|
13
|
+
return res.send(statusCode).send(message);
|
|
14
|
+
};
|
|
15
|
+
exports.handleAuth = handleAuth;
|
|
16
|
+
// NOTE: typically handling: "/api/auth/callback"
|
|
17
|
+
const handleCallback = (props) => async (req, res) => {
|
|
18
|
+
const { PAGE_PATHS } = props;
|
|
19
|
+
const { message, statusCode = 302, redirectUrl = `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?invalid_callback_response`, } = await utils_1.callbackHelper(Object.assign({ req, res }, props));
|
|
20
|
+
if (statusCode >= 300 && statusCode < 400) {
|
|
21
|
+
return res.redirect(statusCode, redirectUrl);
|
|
22
|
+
}
|
|
23
|
+
return res.send(statusCode).send(message);
|
|
24
|
+
};
|
|
25
|
+
exports.handleCallback = handleCallback;
|
|
26
|
+
// NOTE: typically handling: "/api/webhooks/app/uninstalled"
|
|
27
|
+
const handleAppUninstalled = (props) => async (req, res) => {
|
|
28
|
+
const { PAGE_PATHS } = props;
|
|
29
|
+
const { message, statusCode = 302, redirectUrl = `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?invalid_uninstall_response`, } = await utils_1.uninstallHelper(Object.assign({ req, res }, props));
|
|
30
|
+
if (statusCode >= 300 && statusCode < 400) {
|
|
31
|
+
return res.redirect(statusCode, redirectUrl);
|
|
32
|
+
}
|
|
33
|
+
return res.send(statusCode).send(message);
|
|
34
|
+
};
|
|
35
|
+
exports.handleAppUninstalled = handleAppUninstalled;
|
|
36
|
+
//# sourceMappingURL=apiHandlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiHandlers.js","sourceRoot":"","sources":["../src/apiHandlers.js"],"names":[],"mappings":";;;AAAA,gDAAgD;AAChD,mCAKgB;AAEhB,wCAAwC;AACjC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACtD,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAC5B,MAAM,EACJ,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,WAAW,GAAG,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,wBAAwB,GAC5E,GAAG,MAAM,kBAAU,iBAAG,GAAG,EAAE,GAAG,IAAK,KAAK,EAAG,CAAA;IAE5C,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,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC3C,CAAC,CAAA;AAbY,QAAA,UAAU,cAatB;AAED,iDAAiD;AAC1C,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1D,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAC5B,MAAM,EACJ,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,WAAW,GAAG,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,4BAA4B,GAChF,GAAG,MAAM,sBAAc,iBAAG,GAAG,EAAE,GAAG,IAAK,KAAK,EAAG,CAAA;IAEhD,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,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC3C,CAAC,CAAA;AAbY,QAAA,cAAc,kBAa1B;AAED,4DAA4D;AACrD,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAC5B,MAAM,EACJ,OAAO,EACP,UAAU,GAAG,GAAG,EAChB,WAAW,GAAG,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,6BAA6B,GACjF,GAAG,MAAM,uBAAe,iBAAG,GAAG,EAAE,GAAG,IAAK,KAAK,EAAG,CAAA;IAEjD,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,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC3C,CAAC,CAAA;AAbY,QAAA,oBAAoB,wBAahC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './
|
|
1
|
+
export * from './apiHandlers';
|
|
2
|
+
export * from './protectRoute';
|
|
3
|
+
export * from './withShopify';
|
package/dist/index.js
CHANGED
|
@@ -10,12 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Object.defineProperty(exports, "arrowsReplace", { enumerable: true, get: function () { return utils_1.arrowsReplace; } });
|
|
17
|
-
Object.defineProperty(exports, "getAppData", { enumerable: true, get: function () { return utils_1.getAppData; } });
|
|
18
|
-
Object.defineProperty(exports, "cleanURL", { enumerable: true, get: function () { return utils_1.cleanURL; } });
|
|
19
|
-
__exportStar(require("./withZendeskCLI"), exports);
|
|
20
|
-
__exportStar(require("./zendeskCLIHandler"), exports);
|
|
13
|
+
__exportStar(require("./apiHandlers"), exports);
|
|
14
|
+
__exportStar(require("./protectRoute"), exports);
|
|
15
|
+
__exportStar(require("./withShopify"), exports);
|
|
21
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA6B;AAC7B,iDAA8B;AAC9B,gDAA6B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function protectRoute(props: any): ({ req, res, query, locale }: {
|
|
2
|
+
req: any;
|
|
3
|
+
res: any;
|
|
4
|
+
query: any;
|
|
5
|
+
locale: any;
|
|
6
|
+
}, data: any) => Promise<{
|
|
7
|
+
redirect: {
|
|
8
|
+
destination: string;
|
|
9
|
+
permanent: boolean;
|
|
10
|
+
};
|
|
11
|
+
props?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
props: any;
|
|
14
|
+
redirect?: undefined;
|
|
15
|
+
}>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.protectRoute = void 0;
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
|
+
const protectRoute = (props) => async ({ req, res, query, locale } = {}, data) => {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
const { PAGE_PATHS } = props;
|
|
8
|
+
const { shop, embedded } = query !== null && query !== void 0 ? query : {};
|
|
9
|
+
if (!shop) {
|
|
10
|
+
return {
|
|
11
|
+
redirect: {
|
|
12
|
+
destination: `${PAGE_PATHS[utils_1.PAGE_ROUTE_NAMES.ERROR]}?code=no_shop_provided`,
|
|
13
|
+
permanent: false,
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
const shopify = utils_1.getInitializedShopify(props, shop);
|
|
18
|
+
const shopSessions = await ((_b = (_a = shopify.Context.SESSION_STORAGE) === null || _a === void 0 ? void 0 : _a.findSessionsByShop) === null || _b === void 0 ? void 0 : _b.call(_a, shop));
|
|
19
|
+
if (utils_1.arrayEmpty(shopSessions)) {
|
|
20
|
+
return {
|
|
21
|
+
redirect: {
|
|
22
|
+
destination: utils_1.getRedirectUrl(props, {
|
|
23
|
+
req,
|
|
24
|
+
res,
|
|
25
|
+
query,
|
|
26
|
+
shop,
|
|
27
|
+
}),
|
|
28
|
+
permanent: false,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (embedded !== '1') {
|
|
33
|
+
return {
|
|
34
|
+
redirect: {
|
|
35
|
+
destination: shopify.Utils.getEmbeddedAppUrl(req),
|
|
36
|
+
permanent: false,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
props: Object.assign({ locale }, data),
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
exports.protectRoute = protectRoute;
|
|
45
|
+
//# sourceMappingURL=protectRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protectRoute.js","sourceRoot":"","sources":["../src/protectRoute.js"],"names":[],"mappings":";;;AAAA,mCAKgB;AAET,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE;;IACtF,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAE5B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAA;IACtC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO;YACL,QAAQ,EAAE;gBACR,WAAW,EAAE,GAAG,UAAU,CAAC,wBAAgB,CAAC,KAAK,CAAC,wBAAwB;gBAC1E,SAAS,EAAE,KAAK;aACjB;SACF,CAAA;KACF;IAED,MAAM,OAAO,GAAG,6BAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAClD,MAAM,YAAY,GAAG,MAAM,CAAA,MAAA,MAAA,OAAO,CAAC,OAAO,CAAC,eAAe,0CAAE,kBAAkB,mDAAG,IAAI,CAAC,CAAA,CAAA;IAEtF,IAAI,kBAAU,CAAC,YAAY,CAAC,EAAE;QAC5B,OAAO;YACL,QAAQ,EAAE;gBACR,WAAW,EAAE,sBAAc,CAAC,KAAK,EAAE;oBACjC,GAAG;oBACH,GAAG;oBACH,KAAK;oBACL,IAAI;iBACL,CAAC;gBACF,SAAS,EAAE,KAAK;aACjB;SACF,CAAA;KACF;IAED,IAAI,QAAQ,KAAK,GAAG,EAAE;QACpB,OAAO;YACL,QAAQ,EAAE;gBACR,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC;gBACjD,SAAS,EAAE,KAAK;aACjB;SACF,CAAA;KACF;IAED,OAAO;QACL,KAAK,kBACH,MAAM,IACH,IAAI,CACR;KACF,CAAA;AACH,CAAC,CAAA;AA7CY,QAAA,YAAY,gBA6CxB"}
|
package/dist/utils/display.d.ts
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
export function getGUID(): any;
|
|
2
2
|
export function getInteger(): any;
|
|
3
|
-
export function isType(value: any, type: any): boolean;
|
|
4
3
|
export function ensureString(string: any): string;
|
|
5
4
|
export function ensureArray(array?: any[]): any[];
|
|
6
|
-
export function ensureObject(object: any): any;
|
|
7
|
-
export function objectEmpty(object: any): boolean;
|
|
8
|
-
export function objectNotEmpty(object: any): boolean;
|
|
9
|
-
export function cleanObject(object: any): any;
|
|
10
|
-
export function cleanURL(string: any): string;
|
|
11
|
-
export function removeLeadingSlash(string: any): string;
|
|
12
|
-
export function removeTrailingSlash(string: any): string;
|
|
13
5
|
export function stringNotEmpty(stringable: any): boolean;
|
|
14
6
|
export function stringEmpty(stringable: any): boolean;
|
|
7
|
+
export function arrayEmpty(array: any, disableEmptyString?: boolean): boolean;
|
|
8
|
+
export function arrayNotEmpty(array: any, disableEmptyString?: boolean): boolean;
|
|
15
9
|
export function isTrue(value: any, falsy: any): boolean;
|
package/dist/utils/display.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isTrue = exports.
|
|
3
|
+
exports.isTrue = exports.arrayNotEmpty = exports.arrayEmpty = exports.stringEmpty = exports.stringNotEmpty = exports.ensureArray = exports.ensureString = 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());
|
|
7
7
|
exports.getGUID = getGUID;
|
|
8
8
|
const getInteger = () => (exports.getGUID().replace(/\D/g, ''));
|
|
9
9
|
exports.getInteger = getInteger;
|
|
10
|
-
const isType = (value, type) => (
|
|
11
|
-
// eslint-disable-next-line eqeqeq, valid-typeof
|
|
12
|
-
value != undefined && typeof value === type);
|
|
13
|
-
exports.isType = isType;
|
|
14
10
|
// TODO: keep in sync w/ lib-core
|
|
15
11
|
const ensureString = (string) => (string ? `${string}` : '');
|
|
16
12
|
exports.ensureString = ensureString;
|
|
@@ -18,33 +14,6 @@ const ensureArray = (array = []) => (
|
|
|
18
14
|
// eslint-disable-next-line no-nested-ternary
|
|
19
15
|
!array ? [] : Array.isArray(array) ? array : [array]);
|
|
20
16
|
exports.ensureArray = ensureArray;
|
|
21
|
-
const ensureObject = (object) => (object !== null && object !== void 0 ? object : {});
|
|
22
|
-
exports.ensureObject = ensureObject;
|
|
23
|
-
const objectEmpty = (object) => (!object || !Object.keys(object).length);
|
|
24
|
-
exports.objectEmpty = objectEmpty;
|
|
25
|
-
const objectNotEmpty = (object) => (!exports.objectEmpty(object));
|
|
26
|
-
exports.objectNotEmpty = objectNotEmpty;
|
|
27
|
-
const cleanObject = (object) => (Object.entries(exports.ensureObject(object)).reduce((_cleanedObject, [key, _value]) => {
|
|
28
|
-
// eslint-disable-next-line eqeqeq
|
|
29
|
-
if (_value == undefined) {
|
|
30
|
-
return _cleanedObject; // skip key if null or undefined
|
|
31
|
-
}
|
|
32
|
-
const value = Array.isArray(_value)
|
|
33
|
-
? _value.reduce((_data, __value) => ([
|
|
34
|
-
..._data,
|
|
35
|
-
cleanObjectValue(__value)
|
|
36
|
-
]), [])
|
|
37
|
-
: cleanObjectValue(_value);
|
|
38
|
-
return Object.assign(Object.assign({}, _cleanedObject), { [key]: value });
|
|
39
|
-
}, {}));
|
|
40
|
-
exports.cleanObject = cleanObject;
|
|
41
|
-
const cleanObjectValue = (value) => (exports.isType(value, 'object') ? exports.cleanObject(value) : value);
|
|
42
|
-
const cleanURL = (string) => (exports.ensureString(string).replace(/(?<!:)\/+/gm, '/'));
|
|
43
|
-
exports.cleanURL = cleanURL;
|
|
44
|
-
const removeLeadingSlash = (string) => (exports.ensureString(string).replace(/^\//, ''));
|
|
45
|
-
exports.removeLeadingSlash = removeLeadingSlash;
|
|
46
|
-
const removeTrailingSlash = (string) => (exports.ensureString(string).replace(/\/+$/, ''));
|
|
47
|
-
exports.removeTrailingSlash = removeTrailingSlash;
|
|
48
17
|
const stringNotEmpty = (stringable) => {
|
|
49
18
|
const string = exports.ensureString(stringable);
|
|
50
19
|
return ((string.length > 0) && !['null', 'undefined'].includes(string));
|
|
@@ -52,6 +21,14 @@ const stringNotEmpty = (stringable) => {
|
|
|
52
21
|
exports.stringNotEmpty = stringNotEmpty;
|
|
53
22
|
const stringEmpty = (stringable) => (!exports.stringNotEmpty(stringable));
|
|
54
23
|
exports.stringEmpty = stringEmpty;
|
|
24
|
+
const arrayEmpty = (array, disableEmptyString = false) => (
|
|
25
|
+
// eslint-disable-next-line eqeqeq
|
|
26
|
+
!array || !array.length || (array.length === 1 && (array[0] == undefined || (disableEmptyString && exports.stringEmpty(array[0])))));
|
|
27
|
+
exports.arrayEmpty = arrayEmpty;
|
|
28
|
+
const arrayNotEmpty = (array, disableEmptyString = false) => (
|
|
29
|
+
// eslint-disable-next-line eqeqeq
|
|
30
|
+
!exports.arrayEmpty(array) && array[0] != undefined && (!disableEmptyString || exports.stringNotEmpty(array[0])));
|
|
31
|
+
exports.arrayNotEmpty = arrayNotEmpty;
|
|
55
32
|
const isTrue = (value, falsy) => {
|
|
56
33
|
const string = exports.ensureString(value);
|
|
57
34
|
return ![...exports.ensureArray(falsy), '', 'false'].includes(string);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/utils/display.js"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,+BAAmC;AAE5B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAC3B,SAAM,EAAE,CACT,CAAA;AAFY,QAAA,OAAO,WAEnB;AAEM,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CAC9B,eAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,CAAC,CAC5B,CAAA;AAFY,QAAA,UAAU,cAEtB;
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../src/utils/display.js"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,+BAAmC;AAE5B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,CAC3B,SAAM,EAAE,CACT,CAAA;AAFY,QAAA,OAAO,WAEnB;AAEM,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CAC9B,eAAO,EAAE,CAAC,OAAO,CAAC,KAAK,EAAC,EAAE,CAAC,CAC5B,CAAA;AAFY,QAAA,UAAU,cAEtB;AAED,iCAAiC;AAC1B,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CACtC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAC1B,CAAA;AAFY,QAAA,YAAY,gBAExB;AAEM,MAAM,WAAW,GAAG,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC;AACzC,6CAA6C;AAC7C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACrD,CAAA;AAHY,QAAA,WAAW,eAGvB;AAGM,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,EAAE;IAC3C,MAAM,MAAM,GAAG,oBAAY,CAAC,UAAU,CAAC,CAAA;IACvC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AACzE,CAAC,CAAA;AAHY,QAAA,cAAc,kBAG1B;AAEM,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CACzC,CAAC,sBAAc,CAAC,UAAU,CAAC,CAC5B,CAAA;AAFY,QAAA,WAAW,eAEvB;AAEM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK,EAAE,EAAE,CAAC;AAC/D,kCAAkC;AAClC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,CAAC,kBAAkB,IAAI,mBAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5H,CAAA;AAHY,QAAA,UAAU,cAGtB;AAEM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK,EAAE,EAAE,CAAC;AAClE,kCAAkC;AAClC,CAAC,kBAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,kBAAkB,IAAI,sBAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACjG,CAAA;AAHY,QAAA,aAAa,iBAGzB;AAEM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,oBAAY,CAAC,KAAK,CAAC,CAAA;IAClC,OAAO,CAAC,CAAC,GAAG,mBAAW,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAC/D,CAAC,CAAA;AAHY,QAAA,MAAM,UAGlB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class FirebaseSessionHandler {
|
|
2
|
+
constructor(config: any, { app, shop, collection }?: {
|
|
3
|
+
app: any;
|
|
4
|
+
shop: any;
|
|
5
|
+
collection?: string;
|
|
6
|
+
});
|
|
7
|
+
app: any;
|
|
8
|
+
shop: any;
|
|
9
|
+
collection: string;
|
|
10
|
+
firestore: import("firebase/firestore/lite").Firestore;
|
|
11
|
+
}
|
|
12
|
+
export function storeCallback(session: any, handler: any): Promise<boolean>;
|
|
13
|
+
export function loadCallback(sessionId: any, handler: any): Promise<import("firebase/firestore/lite").DocumentData>;
|
|
14
|
+
export function deleteSessionsCallback(sessionIds: any, handler: any): Promise<void>;
|
|
15
|
+
export function findSessionsByShop(shop: any, handler: any): Promise<any[]>;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.findSessionsByShop = exports.deleteSessionsCallback = exports.loadCallback = exports.storeCallback = exports.FirebaseSessionHandler = void 0;
|
|
15
|
+
const app_1 = require("firebase/app");
|
|
16
|
+
// import { initializeApp } from 'firebase-admin/app' // TODO!!!: move to firebase-admin
|
|
17
|
+
const lite_1 = require("firebase/firestore/lite");
|
|
18
|
+
const display_1 = require("./display");
|
|
19
|
+
const COLLECTION_ROOT = 'oauth-data';
|
|
20
|
+
class FirebaseSessionHandler {
|
|
21
|
+
constructor(config, { app, shop, collection = COLLECTION_ROOT } = {}) {
|
|
22
|
+
this.app = app;
|
|
23
|
+
this.shop = shop;
|
|
24
|
+
this.collection = collection;
|
|
25
|
+
this.firestore = lite_1.getFirestore(app_1.initializeApp(config));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.FirebaseSessionHandler = FirebaseSessionHandler;
|
|
29
|
+
const storeCallback = async (session, handler) => {
|
|
30
|
+
try {
|
|
31
|
+
const docRef = lite_1.doc(handler.firestore, handler.collection, handler.shop, handler.app, session.id);
|
|
32
|
+
const _a = JSON.parse(JSON.stringify(session)), { onlineAccessInfo: _onlineAccessInfo } = _a, docData = __rest(_a, ["onlineAccessInfo"]);
|
|
33
|
+
// NOTE: destructuring out associated_user for DPA compliance
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
35
|
+
const _b = _onlineAccessInfo !== null && _onlineAccessInfo !== void 0 ? _onlineAccessInfo : {}, { associated_user } = _b, onlineAccessInfo = __rest(_b, ["associated_user"]);
|
|
36
|
+
await lite_1.setDoc(docRef, Object.assign({ onlineAccessInfo }, docData));
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
console.error(`storeCallback error`, err);
|
|
41
|
+
throw err;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.storeCallback = storeCallback;
|
|
45
|
+
const loadCallback = async (sessionId, handler) => {
|
|
46
|
+
try {
|
|
47
|
+
const docRef = lite_1.doc(handler.firestore, handler.collection, handler.shop, handler.app, sessionId);
|
|
48
|
+
const document = await lite_1.getDoc(docRef);
|
|
49
|
+
if (document.exists()) {
|
|
50
|
+
return document.data();
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
console.error(`loadCallback error`, err);
|
|
56
|
+
throw err;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
exports.loadCallback = loadCallback;
|
|
60
|
+
const deleteSessionsCallback = async (sessionIds, handler) => {
|
|
61
|
+
const _deleteSessionCallback = async (_sessionId) => {
|
|
62
|
+
try {
|
|
63
|
+
const docRef = lite_1.doc(handler.firestore, handler.collection, handler.shop, handler.app, _sessionId);
|
|
64
|
+
await lite_1.deleteDoc(docRef);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
console.error(`deleteSessionsCallback error`, err);
|
|
69
|
+
throw err;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
await Promise.all(display_1.ensureArray(sessionIds).map((sessionId) => _deleteSessionCallback(sessionId)));
|
|
73
|
+
};
|
|
74
|
+
exports.deleteSessionsCallback = deleteSessionsCallback;
|
|
75
|
+
const findSessionsByShop = async (shop, handler) => {
|
|
76
|
+
if (!shop) {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const colRef = lite_1.collection(handler.firestore, handler.collection, shop, handler.app);
|
|
81
|
+
const querySnapshot = await lite_1.getDocs(colRef);
|
|
82
|
+
const data = [];
|
|
83
|
+
querySnapshot.forEach((_doc) => {
|
|
84
|
+
data.push(_doc.data());
|
|
85
|
+
});
|
|
86
|
+
return data;
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
console.error(`findSessionsByShop error`, err);
|
|
90
|
+
throw err;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
exports.findSessionsByShop = findSessionsByShop;
|
|
94
|
+
//# sourceMappingURL=firebase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/utils/firebase.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export function authHelper({ req, res, ...props }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
req: any;
|
|
4
|
+
res: any;
|
|
5
|
+
}): Promise<{
|
|
6
|
+
statusCode: number;
|
|
7
|
+
redirectUrl: string;
|
|
8
|
+
message?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
statusCode: number;
|
|
11
|
+
message: string;
|
|
12
|
+
redirectUrl?: undefined;
|
|
13
|
+
}>;
|
|
14
|
+
export function callbackHelper({ req, res, ...props }: {
|
|
15
|
+
[x: string]: any;
|
|
16
|
+
req: any;
|
|
17
|
+
res: any;
|
|
18
|
+
}): Promise<{
|
|
19
|
+
statusCode: number;
|
|
20
|
+
redirectUrl: string;
|
|
21
|
+
message?: undefined;
|
|
22
|
+
} | {
|
|
23
|
+
statusCode: number;
|
|
24
|
+
message: string;
|
|
25
|
+
redirectUrl?: undefined;
|
|
26
|
+
}>;
|
|
27
|
+
export function uninstallHelper({ req, res, ...props }: {
|
|
28
|
+
[x: string]: any;
|
|
29
|
+
req: any;
|
|
30
|
+
res: any;
|
|
31
|
+
}): Promise<{
|
|
32
|
+
statusCode: number;
|
|
33
|
+
message: string;
|
|
34
|
+
}>;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.uninstallHelper = exports.callbackHelper = exports.authHelper = void 0;
|
|
15
|
+
const display_1 = require("./display");
|
|
16
|
+
const shopify_1 = require("./shopify");
|
|
17
|
+
const authHelper = async (_a) => {
|
|
18
|
+
var { req, res } = _a, props = __rest(_a, ["req", "res"]);
|
|
19
|
+
const { query } = req;
|
|
20
|
+
const { shop } = query !== null && query !== void 0 ? query : {};
|
|
21
|
+
try {
|
|
22
|
+
return {
|
|
23
|
+
statusCode: 302,
|
|
24
|
+
redirectUrl: shopify_1.getRedirectUrl(props, {
|
|
25
|
+
req,
|
|
26
|
+
res,
|
|
27
|
+
query,
|
|
28
|
+
shop,
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const errorMessage = 'Error handling auth route';
|
|
34
|
+
console.error(errorMessage, error);
|
|
35
|
+
return {
|
|
36
|
+
statusCode: 500,
|
|
37
|
+
message: errorMessage,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.authHelper = authHelper;
|
|
42
|
+
const callbackHelper = async (_a) => {
|
|
43
|
+
var { req, res } = _a, props = __rest(_a, ["req", "res"]);
|
|
44
|
+
const { PAGE_PATHS, APP_WEBHOOKS } = props;
|
|
45
|
+
const { shop, host } = req.query;
|
|
46
|
+
if (!shop || !host) {
|
|
47
|
+
return {
|
|
48
|
+
statusCode: 303,
|
|
49
|
+
redirectUrl: `${PAGE_PATHS[shopify_1.PAGE_ROUTE_NAMES.ERROR]}?code=invalid_callback`,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const shopify = shopify_1.getInitializedShopify(props, shop);
|
|
53
|
+
try {
|
|
54
|
+
const session = await shopify.Auth.validateAuthCallback(req, res, req.query);
|
|
55
|
+
await shopify_1.registerWebhooks(props, APP_WEBHOOKS, session);
|
|
56
|
+
// TODO check for billing redirect
|
|
57
|
+
const redirectUrl = shopify.Utils.getEmbeddedAppUrl(req);
|
|
58
|
+
return {
|
|
59
|
+
statusCode: 302,
|
|
60
|
+
redirectUrl: `${redirectUrl}?${new URLSearchParams(req.query).toString()}`,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
const errorMessage = 'Error handling callback route';
|
|
65
|
+
console.error(errorMessage, error);
|
|
66
|
+
switch (true) {
|
|
67
|
+
case error instanceof shopify.Errors.InvalidOAuthError: {
|
|
68
|
+
return {
|
|
69
|
+
statusCode: 400,
|
|
70
|
+
message: errorMessage,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
case error instanceof shopify.Errors.CookieNotFound:
|
|
74
|
+
case error instanceof shopify.Errors.SessionNotFound: {
|
|
75
|
+
return {
|
|
76
|
+
statusCode: 302,
|
|
77
|
+
redirectUrl: shopify_1.getRedirectUrl(props, {
|
|
78
|
+
req,
|
|
79
|
+
res,
|
|
80
|
+
shop,
|
|
81
|
+
query: req.query,
|
|
82
|
+
}),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
default: {
|
|
86
|
+
return {
|
|
87
|
+
statusCode: 500,
|
|
88
|
+
message: errorMessage,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
exports.callbackHelper = callbackHelper;
|
|
95
|
+
const uninstallHelper = async (_a) => {
|
|
96
|
+
var _b, _c, _d, _e;
|
|
97
|
+
var { req, res } = _a, props = __rest(_a, ["req", "res"]);
|
|
98
|
+
try {
|
|
99
|
+
const { domain } = req.body;
|
|
100
|
+
console.warn(`>>> > handleAppUninstalled > props`, props);
|
|
101
|
+
console.warn(`>>> > handleAppUninstalled > domain`, domain);
|
|
102
|
+
const shopify = shopify_1.getInitializedShopify(props, domain);
|
|
103
|
+
const existingSessions = await ((_c = (_b = shopify.Context.SESSION_STORAGE) === null || _b === void 0 ? void 0 : _b.findSessionsByShop) === null || _c === void 0 ? void 0 : _c.call(_b, domain));
|
|
104
|
+
console.warn(`>>> > handleAppUninstalled > existingSessions`, existingSessions);
|
|
105
|
+
if (display_1.arrayNotEmpty(existingSessions)) {
|
|
106
|
+
await ((_e = (_d = shopify.Context.SESSION_STORAGE) === null || _d === void 0 ? void 0 : _d.deleteSessions) === null || _e === void 0 ? void 0 : _e.call(_d, existingSessions.map((session) => session.id)));
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
statusCode: 200,
|
|
110
|
+
message: 'true',
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
const errorMessage = 'Error handling uninstall route';
|
|
115
|
+
console.error(errorMessage, error);
|
|
116
|
+
return {
|
|
117
|
+
statusCode: 500,
|
|
118
|
+
message: errorMessage,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
exports.uninstallHelper = uninstallHelper;
|
|
123
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.js"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
package/dist/utils/index.js
CHANGED
|
@@ -10,6 +10,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./
|
|
13
|
+
__exportStar(require("./helpers"), exports);
|
|
14
14
|
__exportStar(require("./display"), exports);
|
|
15
|
+
__exportStar(require("./firebase"), exports);
|
|
16
|
+
__exportStar(require("./shopify"), exports);
|
|
15
17
|
//# 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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.js"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAAyB;AACzB,4CAAyB;AACzB,6CAA0B;AAC1B,4CAAyB"}
|