@shopify/shopify-api 6.0.0-rc6 → 6.0.0-rc7

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/adapters/cf-worker/adapter.d.ts.map +1 -1
  3. package/adapters/cf-worker/adapter.js +3 -2
  4. package/adapters/cf-worker/adapter.js.map +1 -1
  5. package/adapters/mock/adapter.d.ts.map +1 -1
  6. package/adapters/mock/adapter.js +3 -0
  7. package/adapters/mock/adapter.js.map +1 -1
  8. package/adapters/node/adapter.d.ts.map +1 -1
  9. package/adapters/node/adapter.js +2 -1
  10. package/adapters/node/adapter.js.map +1 -1
  11. package/docs/migrating-to-v6.md +72 -77
  12. package/docs/usage/webhooks.md +113 -103
  13. package/lib/error.d.ts +2 -0
  14. package/lib/error.d.ts.map +1 -1
  15. package/lib/error.js +9 -1
  16. package/lib/error.js.map +1 -1
  17. package/lib/version.d.ts +1 -1
  18. package/lib/version.js +1 -1
  19. package/lib/webhooks/index.d.ts +3 -5
  20. package/lib/webhooks/index.d.ts.map +1 -1
  21. package/lib/webhooks/index.js +8 -8
  22. package/lib/webhooks/index.js.map +1 -1
  23. package/lib/webhooks/process.d.ts +5 -0
  24. package/lib/webhooks/process.d.ts.map +1 -0
  25. package/lib/webhooks/process.js +171 -0
  26. package/lib/webhooks/process.js.map +1 -0
  27. package/lib/webhooks/query-template.d.ts +4 -0
  28. package/lib/webhooks/query-template.d.ts.map +1 -0
  29. package/lib/webhooks/query-template.js +14 -0
  30. package/lib/webhooks/query-template.js.map +1 -0
  31. package/lib/webhooks/register.d.ts +6 -0
  32. package/lib/webhooks/register.d.ts.map +1 -0
  33. package/lib/webhooks/register.js +391 -0
  34. package/lib/webhooks/register.js.map +1 -0
  35. package/lib/webhooks/registry.d.ts +8 -11
  36. package/lib/webhooks/registry.d.ts.map +1 -1
  37. package/lib/webhooks/registry.js +85 -340
  38. package/lib/webhooks/registry.js.map +1 -1
  39. package/lib/webhooks/types.d.ts +45 -24
  40. package/lib/webhooks/types.d.ts.map +1 -1
  41. package/lib/webhooks/types.js +7 -1
  42. package/lib/webhooks/types.js.map +1 -1
  43. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -7,9 +7,9 @@ and adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
7
7
 
8
8
  ## Unreleased
9
9
 
10
- ## [6.0.0-rc2] - 2022-10-04
10
+ ## [6.0.0-rc7] - 2022-10-25
11
11
 
12
- - ⚠️ [Breaking] Final release candidate for `6.0.0` release, which is a complete breaking change across all surfaces of the library
12
+ - ⚠️ [Breaking] Latest release candidate for `6.0.0` release, which is a complete breaking change across all surfaces of the library
13
13
 
14
14
  ## [5.1.0] - 2022-09-19
15
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EAER,MAAM,oBAAoB,CAAC;AAE5B,UAAU,iBAAkB,SAAQ,WAAW;IAC7C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,aAAK,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AAExC,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAW5B;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAMnB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,wBAAsB,WAAW,CAAC,EAChC,GAAG,EACH,MAAM,EACN,OAAY,EACZ,IAAI,GACL,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CASjD;AAED,wBAAgB,0BAA0B,IAAI,KAAK,CAIlD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,OAAO,EAER,MAAM,oBAAoB,CAAC;AAE5B,UAAU,iBAAkB,SAAQ,WAAW;IAC7C,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,aAAK,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AAExC,wBAAsB,oBAAoB,CACxC,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CAa5B;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,kBAAkB,EACxB,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,QAAQ,CAAC,CAMnB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,aAAa,CAAC,CAExB;AAED,wBAAsB,WAAW,CAAC,EAChC,GAAG,EACH,MAAM,EACN,OAAY,EACZ,IAAI,GACL,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CASjD;AAED,wBAAgB,0BAA0B,IAAI,KAAK,CAIlD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C"}
@@ -7,7 +7,7 @@ var http_1 = require("../../runtime/http");
7
7
  function workerConvertRequest(adapterArgs) {
8
8
  var _a;
9
9
  return tslib_1.__awaiter(this, void 0, void 0, function () {
10
- var request, headers, _b, _c, _d, key, value;
10
+ var request, headers, _b, _c, _d, key, value, url;
11
11
  var e_1, _e;
12
12
  return tslib_1.__generator(this, function (_f) {
13
13
  request = adapterArgs.rawRequest;
@@ -25,10 +25,11 @@ function workerConvertRequest(adapterArgs) {
25
25
  }
26
26
  finally { if (e_1) throw e_1.error; }
27
27
  }
28
+ url = new URL(request.url);
28
29
  return [2 /*return*/, {
29
30
  headers: headers,
30
31
  method: (_a = request.method) !== null && _a !== void 0 ? _a : 'GET',
31
- url: request.url,
32
+ url: "".concat(url.pathname).concat(url.search).concat(url.hash),
32
33
  }];
33
34
  });
34
35
  });
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":";;;;AAAA,yCAA6C;AAC7C,2CAQ4B;AAQ5B,SAAsB,oBAAoB,CACxC,WAA8B;;;;;;YAExB,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC;YACjC,OAAO,GAAG,EAAE,CAAC;;gBACnB,KAA2B,KAAA,iBAAA,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA,4CAAE;oBAA3C,KAAA,2BAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;oBACpB,IAAA,gBAAS,EAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;iBAChC;;;;;;;;;YACD,sBAAO;oBACL,OAAO,SAAA;oBACP,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK;oBAC/B,GAAG,EAAE,OAAO,CAAC,GAAI;iBAClB,EAAC;;;CACH;AAbD,oDAaC;AAED,SAAsB,qBAAqB,CACzC,IAAwB,EACxB,WAA8B;;;;;;;;yBAEnB,QAAQ;kCAAC,IAAI,CAAC,IAAI;;wBAC3B,MAAM,EAAE,IAAI,CAAC,UAAU;wBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;;oBAClB,qBAAM,oBAAoB,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE,EAAE,WAAW,CAAC,EAAA;wBAHtE,sBAAO,cAAI,QAAQ,cAGjB,UAAO,GAAE,SAA2D;qCACpE,EAAC;;;;CACJ;AATD,sDASC;AAED,SAAsB,oBAAoB,CACxC,OAAgB,EAChB,YAA+B;;;YAE/B,sBAAO,OAAO,CAAC,OAAO,CAAC,IAAA,kBAAW,EAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC,EAAC;;;CACpD;AALD,oDAKC;AAED,SAAsB,WAAW,CAAC,EAKd;QAJlB,GAAG,SAAA,EACH,MAAM,YAAA,EACN,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EACZ,IAAI,UAAA;;;;;wBAES,qBAAM,KAAK,CAAC,GAAG,EAAE,EAAC,MAAM,QAAA,EAAE,OAAO,EAAE,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE,IAAI,MAAA,EAAC,CAAC,EAAA;;oBAAtE,IAAI,GAAG,SAA+D;oBAC3D,qBAAM,IAAI,CAAC,IAAI,EAAE,EAAA;;oBAA5B,QAAQ,GAAG,SAAiB;oBAClC,sBAAO;4BACL,UAAU,EAAE,IAAI,CAAC,MAAM;4BACvB,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAA,0BAAmB,EAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;yBACzE,EAAC;;;;CACH;AAdD,kCAcC;AAED,SAAgB,0BAA0B;IACxC,MAAM,IAAI,oBAAY,CACpB,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAJD,gEAIC;AAED,SAAgB,mBAAmB;IACjC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAFD,kDAEC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":";;;;AAAA,yCAA6C;AAC7C,2CAQ4B;AAQ5B,SAAsB,oBAAoB,CACxC,WAA8B;;;;;;YAExB,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC;YACjC,OAAO,GAAG,EAAE,CAAC;;gBACnB,KAA2B,KAAA,iBAAA,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA,4CAAE;oBAA3C,KAAA,2BAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;oBACpB,IAAA,gBAAS,EAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;iBAChC;;;;;;;;;YAEK,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC;YAClC,sBAAO;oBACL,OAAO,SAAA;oBACP,MAAM,EAAE,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK;oBAC/B,GAAG,EAAE,UAAG,GAAG,CAAC,QAAQ,SAAG,GAAG,CAAC,MAAM,SAAG,GAAG,CAAC,IAAI,CAAE;iBAC/C,EAAC;;;CACH;AAfD,oDAeC;AAED,SAAsB,qBAAqB,CACzC,IAAwB,EACxB,WAA8B;;;;;;;;yBAEnB,QAAQ;kCAAC,IAAI,CAAC,IAAI;;wBAC3B,MAAM,EAAE,IAAI,CAAC,UAAU;wBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;;oBAClB,qBAAM,oBAAoB,CAAC,MAAA,IAAI,CAAC,OAAO,mCAAI,EAAE,EAAE,WAAW,CAAC,EAAA;wBAHtE,sBAAO,cAAI,QAAQ,cAGjB,UAAO,GAAE,SAA2D;qCACpE,EAAC;;;;CACJ;AATD,sDASC;AAED,SAAsB,oBAAoB,CACxC,OAAgB,EAChB,YAA+B;;;YAE/B,sBAAO,OAAO,CAAC,OAAO,CAAC,IAAA,kBAAW,EAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC,CAAC,EAAC;;;CACpD;AALD,oDAKC;AAED,SAAsB,WAAW,CAAC,EAKd;QAJlB,GAAG,SAAA,EACH,MAAM,YAAA,EACN,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EACZ,IAAI,UAAA;;;;;wBAES,qBAAM,KAAK,CAAC,GAAG,EAAE,EAAC,MAAM,QAAA,EAAE,OAAO,EAAE,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE,IAAI,MAAA,EAAC,CAAC,EAAA;;oBAAtE,IAAI,GAAG,SAA+D;oBAC3D,qBAAM,IAAI,CAAC,IAAI,EAAE,EAAA;;oBAA5B,QAAQ,GAAG,SAAiB;oBAClC,sBAAO;4BACL,UAAU,EAAE,IAAI,CAAC,MAAM;4BACvB,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAA,0BAAmB,EAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;yBACzE,EAAC;;;;CACH;AAdD,kCAcC;AAED,SAAgB,0BAA0B;IACxC,MAAM,IAAI,oBAAY,CACpB,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAJD,gEAIC;AAED,SAAgB,mBAAmB;IACjC,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAFD,kDAEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,WAAW,EACX,cAAc,EAEd,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAI5B,UAAU,eAAgB,SAAQ,WAAW;IAC3C,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAE5B;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED,wBAAsB,SAAS,CAAC,EAC9B,GAAG,EACH,MAAM,EACN,OAAY,EACZ,IAAI,GACL,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAajD;AAED,wBAAgB,wBAAwB,yBAEvC;AAED,wBAAgB,iBAAiB,WAEhC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,WAAW,EACX,cAAc,EAEd,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAI5B,UAAU,eAAgB,SAAQ,WAAW;IAC3C,UAAU,EAAE,iBAAiB,CAAC;CAC/B;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAE5B;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAE7B;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED,wBAAsB,SAAS,CAAC,EAC9B,GAAG,EACH,MAAM,EACN,OAAY,EACZ,IAAI,GACL,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkBjD;AAED,wBAAgB,wBAAwB,yBAEvC;AAED,wBAAgB,iBAAiB,WAEhC"}
@@ -41,6 +41,9 @@ function mockFetch(_a) {
41
41
  body: body,
42
42
  });
43
43
  next = mock_test_requests_1.mockTestRequests.responseList.shift();
44
+ if (!next) {
45
+ throw new Error("Missing mock for ".concat(method, " to ").concat(url, ", have you queued all required responses?"));
46
+ }
44
47
  if (next instanceof Error) {
45
48
  throw next;
46
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":";;;;AAAA,uDAAkE;AAClE,2CAO4B;AAE5B,2DAAsD;AAMtD,SAAsB,kBAAkB,CACtC,WAA4B;;;YAE5B,sBAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAC;;;CAChD;AAJD,gDAIC;AAED,SAAsB,mBAAmB,CACvC,QAA4B,EAC5B,YAA6B;;;YAE7B,sBAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAC;;;CAClC;AALD,kDAKC;AAED,SAAsB,kBAAkB,CACtC,OAAgB,EAChB,YAA6B;;;YAE7B,sBAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC;;;CACjC;AALD,gDAKC;AAED,SAAsB,SAAS,CAAC,EAKZ;QAJlB,GAAG,SAAA,EACH,MAAM,YAAA,EACN,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EACZ,IAAI,UAAA;;;;YAEJ,qCAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC,GAAG,KAAA;gBACH,MAAM,QAAA;gBACN,OAAO,EAAE,IAAA,0BAAmB,EAAC,OAAO,CAAC;gBACrC,IAAI,MAAA;aACL,CAAC,CAAC;YAEG,IAAI,GAAG,qCAAgB,CAAC,YAAY,CAAC,KAAK,EAAG,CAAC;YACpD,IAAI,IAAI,YAAY,KAAK,EAAE;gBACzB,MAAM,IAAI,CAAC;aACZ;YACD,sBAAO,IAAI,EAAC;;;CACb;AAlBD,8BAkBC;AAED,SAAgB,wBAAwB;IACtC,OAAO,IAAI,6BAAoB,EAAE,CAAC;AACpC,CAAC;AAFD,4DAEC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAFD,8CAEC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":";;;;AAAA,uDAAkE;AAClE,2CAO4B;AAE5B,2DAAsD;AAMtD,SAAsB,kBAAkB,CACtC,WAA4B;;;YAE5B,sBAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,EAAC;;;CAChD;AAJD,gDAIC;AAED,SAAsB,mBAAmB,CACvC,QAA4B,EAC5B,YAA6B;;;YAE7B,sBAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAC;;;CAClC;AALD,kDAKC;AAED,SAAsB,kBAAkB,CACtC,OAAgB,EAChB,YAA6B;;;YAE7B,sBAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC;;;CACjC;AALD,gDAKC;AAED,SAAsB,SAAS,CAAC,EAKZ;QAJlB,GAAG,SAAA,EACH,MAAM,YAAA,EACN,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EACZ,IAAI,UAAA;;;;YAEJ,qCAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;gBAChC,GAAG,KAAA;gBACH,MAAM,QAAA;gBACN,OAAO,EAAE,IAAA,0BAAmB,EAAC,OAAO,CAAC;gBACrC,IAAI,MAAA;aACL,CAAC,CAAC;YAEG,IAAI,GAAG,qCAAgB,CAAC,YAAY,CAAC,KAAK,EAAG,CAAC;YACpD,IAAI,CAAC,IAAI,EAAE;gBACT,MAAM,IAAI,KAAK,CACb,2BAAoB,MAAM,iBAAO,GAAG,8CAA2C,CAChF,CAAC;aACH;YACD,IAAI,IAAI,YAAY,KAAK,EAAE;gBACzB,MAAM,IAAI,CAAC;aACZ;YACD,sBAAO,IAAI,EAAC;;;CACb;AAvBD,8BAuBC;AAED,SAAgB,wBAAwB;IACtC,OAAO,IAAI,6BAAoB,EAAE,CAAC;AACpC,CAAC;AAFD,4DAEC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAFD,8CAEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,MAAM,CAAC;AAK1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,WAAW,EAGX,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,eAAgB,SAAQ,WAAW;IAC3C,UAAU,EAAE,eAAe,CAAC;IAC5B,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAO5B;AAED,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,SAAS,CAAC,EAC9B,GAAG,EACH,MAAM,EACN,OAAY,EACZ,IAAI,GACL,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CASjD;AAED,wBAAgB,wBAAwB,yBAOvC;AAED,wBAAgB,iBAAiB,WAEhC"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,MAAM,CAAC;AAK1D,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,WAAW,EAGX,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,UAAU,eAAgB,SAAQ,WAAW;IAC3C,UAAU,EAAE,eAAe,CAAC;IAC5B,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAS5B;AAED,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,kBAAkB,EAC5B,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,eAAe,GAC3B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,SAAS,CAAC,EAC9B,GAAG,EACH,MAAM,EACN,OAAY,EACZ,IAAI,GACL,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CASjD;AAED,wBAAgB,wBAAwB,yBAOvC;AAED,wBAAgB,iBAAiB,WAEhC"}
@@ -15,7 +15,8 @@ function nodeConvertRequest(adapterArgs) {
15
15
  return [2 /*return*/, {
16
16
  headers: (0, http_1.canonicalizeHeaders)(tslib_1.__assign({}, req.headers)),
17
17
  method: (_a = req.method) !== null && _a !== void 0 ? _a : 'GET',
18
- url: req.url,
18
+ // Express.js overrides the url property, so we want to use originalUrl for it
19
+ url: req.originalUrl || req.url,
19
20
  }];
20
21
  });
21
22
  });
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":";;;;AACA,sDAAwB;AAExB,kEAA+B;AAE/B,uDAAkE;AAClE,2CAO4B;AAO5B,SAAsB,kBAAkB,CACtC,WAA4B;;;;;YAEtB,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC;YACnC,sBAAO;oBACL,OAAO,EAAE,IAAA,0BAAmB,EAAC,qBAAI,GAAG,CAAC,OAAO,CAAQ,CAAC;oBACrD,MAAM,EAAE,MAAA,GAAG,CAAC,MAAM,mCAAI,KAAK;oBAC3B,GAAG,EAAE,GAAG,CAAC,GAAI;iBACd,EAAC;;;CACH;AATD,gDASC;AAED,SAAsB,0BAA0B,CAC9C,QAA4B,EAC5B,WAA4B;;;;;;oBAEtB,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC;yBAEhC,QAAQ,CAAC,OAAO,EAAhB,wBAAgB;oBAClB,qBAAM,wBAAwB,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,EAAA;;oBAA7D,SAA6D,CAAC;;;oBAGhE,IAAI,QAAQ,CAAC,IAAI,EAAE;wBACjB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBAC1B;oBAED,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;oBACrC,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC;oBAExC,GAAG,CAAC,GAAG,EAAE,CAAC;;;;;CACX;AAlBD,gEAkBC;AAED,SAAsB,wBAAwB,CAC5C,OAAgB,EAChB,WAA4B;;;;YAEtB,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC;YAEpC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,EAAe;oBAAf,KAAA,qBAAe,EAAd,MAAM,QAAA,EAAE,KAAK,QAAA;gBAC7C,OAAA,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;YAA5B,CAA4B,CAC7B,CAAC;;;;CACH;AATD,4DASC;AAED,SAAsB,SAAS,CAAC,EAKZ;QAJlB,GAAG,SAAA,EACH,MAAM,YAAA,EACN,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EACZ,IAAI,UAAA;;;;;wBAES,qBAAM,IAAA,oBAAK,EAAC,GAAG,EAAE,EAAC,MAAM,QAAA,EAAE,OAAO,EAAE,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE,IAAI,MAAA,EAAC,CAAC,EAAA;;oBAAtE,IAAI,GAAG,SAA+D;oBAC3D,qBAAM,IAAI,CAAC,IAAI,EAAE,EAAA;;oBAA5B,QAAQ,GAAG,SAAiB;oBAClC,sBAAO;4BACL,UAAU,EAAE,IAAI,CAAC,MAAM;4BACvB,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAA,0BAAmB,EAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;yBACzE,EAAC;;;;CACH;AAdD,8BAcC;AAED,SAAgB,wBAAwB;IACtC,IAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAClE,iBAAiB,CAClB,CAAC;IAEF,OAAO,IAAI,6BAAoB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAPD,4DAOC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,eAAQ,OAAO,CAAC,OAAO,CAAE,CAAC;AACnC,CAAC;AAFD,8CAEC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["adapter.ts"],"names":[],"mappings":";;;;AACA,sDAAwB;AAExB,kEAA+B;AAE/B,uDAAkE;AAClE,2CAO4B;AAO5B,SAAsB,kBAAkB,CACtC,WAA4B;;;;;YAEtB,GAAG,GAAG,WAAW,CAAC,UAAU,CAAC;YAEnC,sBAAO;oBACL,OAAO,EAAE,IAAA,0BAAmB,EAAC,qBAAI,GAAG,CAAC,OAAO,CAAQ,CAAC;oBACrD,MAAM,EAAE,MAAA,GAAG,CAAC,MAAM,mCAAI,KAAK;oBAC3B,8EAA8E;oBAC9E,GAAG,EAAG,GAAW,CAAC,WAAW,IAAI,GAAG,CAAC,GAAI;iBAC1C,EAAC;;;CACH;AAXD,gDAWC;AAED,SAAsB,0BAA0B,CAC9C,QAA4B,EAC5B,WAA4B;;;;;;oBAEtB,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC;yBAEhC,QAAQ,CAAC,OAAO,EAAhB,wBAAgB;oBAClB,qBAAM,wBAAwB,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,EAAA;;oBAA7D,SAA6D,CAAC;;;oBAGhE,IAAI,QAAQ,CAAC,IAAI,EAAE;wBACjB,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBAC1B;oBAED,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;oBACrC,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC;oBAExC,GAAG,CAAC,GAAG,EAAE,CAAC;;;;;CACX;AAlBD,gEAkBC;AAED,SAAsB,wBAAwB,CAC5C,OAAgB,EAChB,WAA4B;;;;YAEtB,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC;YAEpC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAC,EAAe;oBAAf,KAAA,qBAAe,EAAd,MAAM,QAAA,EAAE,KAAK,QAAA;gBAC7C,OAAA,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC;YAA5B,CAA4B,CAC7B,CAAC;;;;CACH;AATD,4DASC;AAED,SAAsB,SAAS,CAAC,EAKZ;QAJlB,GAAG,SAAA,EACH,MAAM,YAAA,EACN,eAAY,EAAZ,OAAO,mBAAG,EAAE,KAAA,EACZ,IAAI,UAAA;;;;;wBAES,qBAAM,IAAA,oBAAK,EAAC,GAAG,EAAE,EAAC,MAAM,QAAA,EAAE,OAAO,EAAE,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE,IAAI,MAAA,EAAC,CAAC,EAAA;;oBAAtE,IAAI,GAAG,SAA+D;oBAC3D,qBAAM,IAAI,CAAC,IAAI,EAAE,EAAA;;oBAA5B,QAAQ,GAAG,SAAiB;oBAClC,sBAAO;4BACL,UAAU,EAAE,IAAI,CAAC,MAAM;4BACvB,UAAU,EAAE,IAAI,CAAC,UAAU;4BAC3B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAA,0BAAmB,EAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;yBACzE,EAAC;;;;CACH;AAdD,8BAcC;AAED,SAAgB,wBAAwB;IACtC,IAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAClE,iBAAiB,CAClB,CAAC;IAEF,OAAO,IAAI,6BAAoB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAPD,4DAOC;AAED,SAAgB,iBAAiB;IAC/B,OAAO,eAAQ,OAAO,CAAC,OAAO,CAAE,CAAC;AACnC,CAAC;AAFD,8CAEC"}
@@ -156,7 +156,9 @@ app.post('/webhooks', async (req, res) => {
156
156
  });
157
157
  } catch (error) {
158
158
  if (error instanceof InvalidWebhookError) {
159
- console.log(`Webhook processing error:\n\tmessage = ${error.message}\n\tresponse = ${error.response}`);
159
+ console.log(
160
+ `Webhook processing error:\n\tmessage = ${error.message}\n\tresponse = ${error.response}`,
161
+ );
160
162
  } else {
161
163
  console.log('Other error:\n\t', error);
162
164
  }
@@ -235,14 +237,14 @@ app.post('/webhooks', async (req, res) => {
235
237
 
236
238
  </div>
237
239
 
238
- 1. The `isActive()` method of `Session` now takes a `scopes` parameter. If the scopes of the session don't match the scopes of the application (e.g., app has been restarted with new scopes), the session is deemed to be inactive and OAuth should be initiated again.
240
+ 1. The `isActive()` method of `Session` now takes a `scopes` parameter. If the scopes of the session don't match the scopes of the application (e.g., app has been restarted with new scopes), the session is deemed to be inactive and OAuth should be initiated again.
239
241
  <div>Before
240
242
 
241
243
  ```ts
242
244
  const session = await Shopify.Utils.loadCurrentSession(req, res);
243
245
 
244
246
  if (!session.isActive()) {
245
- // current session is not active - either expired or scopes have changed
247
+ // current session is not active - either expired or scopes have changed
246
248
  }
247
249
  ```
248
250
 
@@ -256,7 +258,7 @@ app.post('/webhooks', async (req, res) => {
256
258
  });
257
259
 
258
260
  if (!session.isActive(shopify.config.scopes)) {
259
- // current session is not active - either expired or scopes have changed
261
+ // current session is not active - either expired or scopes have changed
260
262
  }
261
263
  ```
262
264
 
@@ -716,54 +718,58 @@ Here are all the specific changes that we made to the `Utils` object:
716
718
 
717
719
  ## Changes to webhook functions
718
720
 
719
- 1. `Shopify.Webhooks.Registry.addHandler` is now `shopify.webhooks.addHttpHandler`, and the parameters are now in a single object parameter. It also no longer takes a `path` in the parameter object.
720
- <div>Before
721
+ In v6, apps can now set up multiple handlers per webhook topic, and we simplified the library's interface to reduce the number of methods needed.
721
722
 
722
- ```ts
723
- Shopify.Webhooks.Registry.addHandler("PRODUCTS_CREATE", {
724
- path: "/webhooks",
725
- webhookHandler: handleWebhookRequest,
726
- });
727
- ```
723
+ The following methods are now available:
728
724
 
729
- </div><div>:warning: After
725
+ - `addHandlers`
726
+ - `register`
727
+ - `process`
728
+ - `getHandlers`
729
+ - `getTopicsAdded` replaces the previous `getTopics`
730
730
 
731
- ```ts
732
- shopify.webhooks.addHttpHandler({
733
- topic: "PRODUCTS_CREATE",
734
- handler: handleWebhookRequest,
735
- });
736
- ```
731
+ And the following methods are no longer supported:
737
732
 
738
- </div>
733
+ - `addHandler`
734
+ - `registerAll`
735
+ - `getHandler`
736
+ - `isWebhookPath`
737
+
738
+ For more details on the updated webhook functions, see the [documentation](./usage/webhooks.md).
739
+
740
+ Below are instructions on how webhooks work now:
741
+
742
+ 1. You can call `shopify.webhooks.addHandlers` with a list of handlers, indexed by topic. Note that you must now use delivery method-specific fields instead of `path`, like `callbackUrl` and `arn`, to match the GrahpQL API behavior.
739
743
 
740
- 1. `Shopify.Webhooks.Registry.addHandlers` is now `shopify.webhooks.addHttpHandlers`, and now takes an array of `addHttpHandler` params.
741
744
  <div>Before
742
745
 
743
746
  ```ts
744
- Shopify.Webhooks.Registry.addHandlers({
745
- PRODUCTS_CREATE: {
746
- path: '/webhooks',
747
- webhookHandler: productCreateWebhookHandler,
748
- },
749
- PRODUCTS_DELETE: {
750
- path: '/webhooks',
751
- webhookHandler: productDeleteWebhookHandler},
747
+ Shopify.Webhooks.Registry.addHandler('PRODUCTS_CREATE', {
748
+ path: '/webhooks',
749
+ webhookHandler: handleWebhookRequest,
752
750
  });
753
751
  ```
754
752
 
755
753
  </div><div>:warning: After
756
754
 
757
755
  ```ts
758
- shopify.webhooks.addHttpHandlers([
759
- {topic: 'PRODUCTS_CREATE', handler: productCreateWebhookHandler},
760
- {topic: 'PRODUCTS_DELETE', handler: productDeleteWebhookHandler},
761
- ]);
756
+ shopify.webhooks.addHandlers({
757
+ PRODUCTS_CREATE: {
758
+ deliveryMethod: DeliveryMethod.Http,
759
+ callbackUrl: '/webhooks',
760
+ callback: handleWebhookRequest,
761
+ },
762
+ TOPIC_1: [handler, handler2],
763
+ TOPIC_2: handler3,
764
+ });
762
765
  ```
763
766
 
764
767
  </div>
765
768
 
766
- 1. `Shopify.Webhooks.Registry.register` is now `shopify.webhooks.register`.
769
+ > **Note**: if you're using TypeScript, the handlers are typed based on the `deliveryMethod` you select.
770
+
771
+ 1. `Shopify.Webhooks.Registry.register` is now `shopify.webhooks.register`, and it now only takes in the session fields. It will register any handlers you added, and delete registrations that don't match the new configuration. That means the final webhooks registered for a shop will always match your configuration.
772
+
767
773
  <div>Before
768
774
 
769
775
  ```ts
@@ -779,39 +785,16 @@ Here are all the specific changes that we made to the `Utils` object:
779
785
 
780
786
  ```ts
781
787
  const response = await shopify.webhooks.register({
782
- path: '/webhooks',
783
- topic: 'PRODUCTS_CREATE',
784
- accessToken: session.accessToken,
785
- shop: session.shop,
786
- });
787
- ```
788
-
789
- </div>
790
-
791
- 1. `Shopify.Webhooks.Registry.registerAll` is now `shopify.webhooks.registerAllHttp`, and now accepts a `path` in its parameter object with which to register all topic handlers added to the HTTP registry.
792
- <div>Before
793
-
794
- ```ts
795
- const response = await Shopify.Webhooks.Registry.registerAll({
796
788
  accessToken: session.accessToken,
797
789
  shop: session.shop,
798
790
  });
799
- ```
800
-
801
- </div><div>:warning: After
802
791
 
803
- ```ts
804
- const response = await shopify.webhooks.registerAllHttp({
805
- path: '/webhooks',
806
- accessToken: session.accessToken,
807
- shop: session.shop,
808
- });
792
+ // Response will be a list indexed by topic:
793
+ console.log(response[topic][0].success, response[topic][0].result);
809
794
  ```
810
795
 
811
796
  </div>
812
797
 
813
- 1. `Shopify.Webhooks.Registry.isWebhookPath` has been deprecated.
814
-
815
798
  1. `Shopify.Webhooks.Registry.process` is now `shopify.webhooks.process`, and it takes the body as an argument instead of parsing it from the request. This will make it easier for apps to use a body parser with this function.
816
799
  <div>Before
817
800
 
@@ -846,7 +829,7 @@ Here are all the specific changes that we made to the `Utils` object:
846
829
 
847
830
  </div>
848
831
 
849
- 1. `Shopify.Webhooks.Registry.getHandler` is now `shopify.webhooks.getHttpHandler`, and simply returns the handler function for the given topic.
832
+ 1. `Shopify.Webhooks.Registry.getHandler` is now `shopify.webhooks.getHandlers`, and returns all handler configurations for that topic.
850
833
  <div>Before
851
834
 
852
835
  ```ts
@@ -863,13 +846,16 @@ Here are all the specific changes that we made to the `Utils` object:
863
846
  </div><div>:warning: After
864
847
 
865
848
  ```ts
866
- shopify.webhooks.addHttpHandler({
867
- topic: 'PRODUCTS',
868
- handler: productsWebhookHandler,
849
+ shopify.webhooks.addHandlers({
850
+ PRODUCTS: {
851
+ deliveryMethod: DeliveryMethod.Http,
852
+ callbackUrl: '/webhooks',
853
+ callback: productsWebhookHandler,
854
+ },
869
855
  });
870
856
 
871
- const productsHandler = shopify.webhooks.getHttpHandler('PRODUCTS');
872
- // productsHandler = productsWebhookHandler
857
+ // Is an array of handler configurations
858
+ const handlers = shopify.webhooks.getHandlers('PRODUCTS');
873
859
  ```
874
860
 
875
861
  </div>
@@ -885,7 +871,8 @@ Here are all the specific changes that we made to the `Utils` object:
885
871
  },
886
872
  PRODUCTS_DELETE: {
887
873
  path: '/webhooks',
888
- webhookHandler: productDeleteWebhookHandler},
874
+ webhookHandler: productDeleteWebhookHandler,
875
+ },
889
876
  });
890
877
 
891
878
  const topics = Shopify.Webhooks.Registry.getTopics();
@@ -895,10 +882,18 @@ Here are all the specific changes that we made to the `Utils` object:
895
882
  </div><div>:warning: After
896
883
 
897
884
  ```ts
898
- shopify.webhooks.addHttpHandlers([
899
- {topic: 'PRODUCTS_CREATE', handler: productCreateWebhookHandler},
900
- {topic: 'PRODUCTS_DELETE', handler: productDeleteWebhookHandler},
901
- ]);
885
+ shopify.webhooks.addHandlers({
886
+ PRODUCTS_CREATE: {
887
+ deliveryMethod: DeliveryMethod.Http,
888
+ callbackUrl: '/webhooks',
889
+ callback: productCreateWebhookHandler,
890
+ },
891
+ PRODUCTS_DELETE: {
892
+ deliveryMethod: DeliveryMethod.Http,
893
+ callbackUrl: '/webhooks',
894
+ callback: productDeleteWebhookHandler,
895
+ },
896
+ });
902
897
 
903
898
  const topics = shopify.webhooks.getTopicsAdded();
904
899
  // topics = ['PRODUCTS_CREATE', 'PRODUCTS_DELETE']
@@ -917,13 +912,13 @@ Starting with v6, they can now be accessed via the shopify API directly.
917
912
  <div>Before
918
913
 
919
914
  ```ts
920
- app.get("/api/products/count", async (req, res) => {
915
+ app.get('/api/products/count', async (req, res) => {
921
916
  const session = await Shopify.Utils.loadCurrentSession(req, res, false);
922
- const { Product } = await import(
917
+ const {Product} = await import(
923
918
  `@shopify/shopify-api/dist/rest-resources/${Shopify.Context.API_VERSION}/index.js`
924
919
  );
925
920
 
926
- const countData = await Product.count({ session });
921
+ const countData = await Product.count({session});
927
922
  res.status(200).send(countData);
928
923
  });
929
924
  ```
@@ -931,8 +926,8 @@ app.get("/api/products/count", async (req, res) => {
931
926
  </div><div>:warning: After
932
927
 
933
928
  ```ts
934
- import {shopifyApi, ApiVersion} from "@shopify/shopify-api";
935
- import {restResources} from '@shopify/shopify-api/rest/admin/2022-10'; // must match apiVersion used for shopifyApi()
929
+ import {shopifyApi, ApiVersion} from '@shopify/shopify-api';
930
+ import {restResources} from '@shopify/shopify-api/rest/admin/2022-10'; // must match apiVersion used for shopifyApi()
936
931
 
937
932
  const shopify = shopifyApi({
938
933
  // ...
@@ -942,14 +937,14 @@ const shopify = shopifyApi({
942
937
 
943
938
  // ...
944
939
 
945
- app.get("/api/products/count", async (req, res) => {
940
+ app.get('/api/products/count', async (req, res) => {
946
941
  const session = await shopify.session.getCurrent({
947
942
  isOnline: false,
948
943
  rawRequest: req,
949
944
  rawResponse: res,
950
945
  });
951
946
 
952
- const countData = await shopify.rest.Product.count({ session });
947
+ const countData = await shopify.rest.Product.count({session});
953
948
  res.status(200).send(countData);
954
949
  });
955
950
  ```