@agnostack/next-shopify 1.14.0-beta.10 → 1.14.0-beta.12

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 CHANGED
@@ -1,3 +1,17 @@
1
+ # [1.14.0-beta.12](https://github.com/agnostack/next-shopify/compare/v1.14.0-beta.11...v1.14.0-beta.12) (2023-12-04)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * wip ([158d4ff](https://github.com/agnostack/next-shopify/commit/158d4ffc6e11d1394c8274039c7b8f0840894b9c))
7
+
8
+ # [1.14.0-beta.11](https://github.com/agnostack/next-shopify/compare/v1.14.0-beta.10...v1.14.0-beta.11) (2023-12-04)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * wip ([02e4858](https://github.com/agnostack/next-shopify/commit/02e485860157a650a9b6742c574382450387263c))
14
+
1
15
  # [1.14.0-beta.10](https://github.com/agnostack/next-shopify/compare/v1.14.0-beta.9...v1.14.0-beta.10) (2023-12-04)
2
16
 
3
17
 
@@ -1,5 +1,5 @@
1
1
  export * from '../shared';
2
2
  export * from './handlers';
3
3
  export * from './withShopify';
4
- export { getShopifyHelpers, prepareHeaders, getVerifiedBody } from './utils';
4
+ export { getShopifyHelpers, getVerifiedBody, ensureRawBody, prepareHeaders } from './utils';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,cAAc,EACf,MAAM,SAAS,CAAA"}
package/dist/lib/index.js CHANGED
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getVerifiedBody = exports.prepareHeaders = exports.getShopifyHelpers = void 0;
3
+ exports.prepareHeaders = exports.ensureRawBody = exports.getVerifiedBody = exports.getShopifyHelpers = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  tslib_1.__exportStar(require("../shared"), exports);
6
6
  tslib_1.__exportStar(require("./handlers"), exports);
7
7
  tslib_1.__exportStar(require("./withShopify"), exports);
8
8
  var utils_1 = require("./utils");
9
9
  Object.defineProperty(exports, "getShopifyHelpers", { enumerable: true, get: function () { return utils_1.getShopifyHelpers; } });
10
- Object.defineProperty(exports, "prepareHeaders", { enumerable: true, get: function () { return utils_1.prepareHeaders; } });
11
10
  Object.defineProperty(exports, "getVerifiedBody", { enumerable: true, get: function () { return utils_1.getVerifiedBody; } });
11
+ Object.defineProperty(exports, "ensureRawBody", { enumerable: true, get: function () { return utils_1.ensureRawBody; } });
12
+ Object.defineProperty(exports, "prepareHeaders", { enumerable: true, get: function () { return utils_1.prepareHeaders; } });
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;;AAAA,oDAAyB;AACzB,qDAA0B;AAC1B,wDAA6B;AAC7B,iCAA4E;AAAnE,0GAAA,iBAAiB,OAAA;AAAE,uGAAA,cAAc,OAAA;AAAE,wGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;;AAAA,oDAAyB;AACzB,qDAA0B;AAC1B,wDAA6B;AAC7B,iCAKgB;AAJd,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA;AACf,sGAAA,aAAa,OAAA;AACb,uGAAA,cAAc,OAAA"}
@@ -1,2 +1,3 @@
1
+ export function ensureRawBody(req: any): Promise<any>;
1
2
  export function getVerifiedBody(serverRuntimeConfig: any): (req: any, res: any, uri: any) => Promise<any>;
2
3
  //# sourceMappingURL=verification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/verification.js"],"names":[],"mappings":"AAwBO,0GA0FN"}
1
+ {"version":3,"file":"verification.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/verification.js"],"names":[],"mappings":"AAWO,sDAYN;AAEM,0GA0FN"}
@@ -1,22 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getVerifiedBody = void 0;
3
+ exports.getVerifiedBody = exports.ensureRawBody = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const raw_body_1 = tslib_1.__importDefault(require("raw-body"));
6
6
  const shared_1 = require("../../shared");
7
- const ensureRawBoxy = (req) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
7
+ const ensureRawBody = (req) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
8
8
  return (
9
9
  // NOTE raw request body is required for shopify's validation
10
10
  (0, raw_body_1.default)(req)
11
11
  .then((_rawBody) => _rawBody.toString())
12
12
  .catch((error) => {
13
- console.log(`>>> > ensureRawBoxy > error:`, error);
14
- if ((error === null || error === void 0 ? void 0 : error.type) === 'stream.not.readable') {
15
- return req === null || req === void 0 ? void 0 : req.body;
13
+ console.log(`>>> > ensureRawBoxy > error: '${error === null || error === void 0 ? void 0 : error.type}'`, { error, bdy: req === null || req === void 0 ? void 0 : req.body });
14
+ if (((error === null || error === void 0 ? void 0 : error.type) === 'stream.not.readable') && ((req === null || req === void 0 ? void 0 : req.body) != undefined)) {
15
+ console.log(`>>> > ensureRawBoxy > req?.body:`, req === null || req === void 0 ? void 0 : req.body);
16
+ return req.body;
16
17
  }
17
18
  throw error;
18
19
  }));
19
20
  });
21
+ exports.ensureRawBody = ensureRawBody;
20
22
  const getVerifiedBody = (serverRuntimeConfig) => {
21
23
  const { keyPairs } = serverRuntimeConfig;
22
24
  return (req, res, uri) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
@@ -31,7 +33,7 @@ const getVerifiedBody = (serverRuntimeConfig) => {
31
33
  authSignature &&
32
34
  (authProtocol === 'HMAC-SHA256'));
33
35
  let verificationKeys;
34
- const rawBody = yield ensureRawBoxy(req);
36
+ const rawBody = yield (0, exports.ensureRawBody)(req);
35
37
  const parsedBody = (0, shared_1.safeParse)(rawBody || '{}'); // NOTE: parsedBody should be encrypted when isVerifiable
36
38
  let decryptedBody = parsedBody;
37
39
  // TEMP!!! remove isVerifiable check once webwidget moved to react
@@ -1 +1 @@
1
- {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/lib/utils/verification.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification.js","sourceRoot":"","sources":["../../../src/lib/utils/verification.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.14.0-beta.10",
3
+ "version": "1.14.0-beta.12",
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",