@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.
- package/CHANGELOG.md +2 -2
- package/adapters/cf-worker/adapter.d.ts.map +1 -1
- package/adapters/cf-worker/adapter.js +3 -2
- package/adapters/cf-worker/adapter.js.map +1 -1
- package/adapters/mock/adapter.d.ts.map +1 -1
- package/adapters/mock/adapter.js +3 -0
- package/adapters/mock/adapter.js.map +1 -1
- package/adapters/node/adapter.d.ts.map +1 -1
- package/adapters/node/adapter.js +2 -1
- package/adapters/node/adapter.js.map +1 -1
- package/docs/migrating-to-v6.md +72 -77
- package/docs/usage/webhooks.md +113 -103
- package/lib/error.d.ts +2 -0
- package/lib/error.d.ts.map +1 -1
- package/lib/error.js +9 -1
- package/lib/error.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/webhooks/index.d.ts +3 -5
- package/lib/webhooks/index.d.ts.map +1 -1
- package/lib/webhooks/index.js +8 -8
- package/lib/webhooks/index.js.map +1 -1
- package/lib/webhooks/process.d.ts +5 -0
- package/lib/webhooks/process.d.ts.map +1 -0
- package/lib/webhooks/process.js +171 -0
- package/lib/webhooks/process.js.map +1 -0
- package/lib/webhooks/query-template.d.ts +4 -0
- package/lib/webhooks/query-template.d.ts.map +1 -0
- package/lib/webhooks/query-template.js +14 -0
- package/lib/webhooks/query-template.js.map +1 -0
- package/lib/webhooks/register.d.ts +6 -0
- package/lib/webhooks/register.d.ts.map +1 -0
- package/lib/webhooks/register.js +391 -0
- package/lib/webhooks/register.js.map +1 -0
- package/lib/webhooks/registry.d.ts +8 -11
- package/lib/webhooks/registry.d.ts.map +1 -1
- package/lib/webhooks/registry.js +85 -340
- package/lib/webhooks/registry.js.map +1 -1
- package/lib/webhooks/types.d.ts +45 -24
- package/lib/webhooks/types.d.ts.map +1 -1
- package/lib/webhooks/types.js +7 -1
- package/lib/webhooks/types.js.map +1 -1
- 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-
|
|
10
|
+
## [6.0.0-rc7] - 2022-10-25
|
|
11
11
|
|
|
12
|
-
- ⚠️ [Breaking]
|
|
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,
|
|
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:
|
|
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;;;;;;;;;
|
|
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,
|
|
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"}
|
package/adapters/mock/adapter.js
CHANGED
|
@@ -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;
|
|
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,
|
|
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"}
|
package/adapters/node/adapter.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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"}
|
package/docs/migrating-to-v6.md
CHANGED
|
@@ -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(
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
725
|
+
- `addHandlers`
|
|
726
|
+
- `register`
|
|
727
|
+
- `process`
|
|
728
|
+
- `getHandlers`
|
|
729
|
+
- `getTopicsAdded` replaces the previous `getTopics`
|
|
730
730
|
|
|
731
|
-
|
|
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
|
-
|
|
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.
|
|
745
|
-
|
|
746
|
-
|
|
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.
|
|
759
|
-
|
|
760
|
-
|
|
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
|
-
|
|
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
|
-
|
|
804
|
-
|
|
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.
|
|
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.
|
|
867
|
-
|
|
868
|
-
|
|
849
|
+
shopify.webhooks.addHandlers({
|
|
850
|
+
PRODUCTS: {
|
|
851
|
+
deliveryMethod: DeliveryMethod.Http,
|
|
852
|
+
callbackUrl: '/webhooks',
|
|
853
|
+
callback: productsWebhookHandler,
|
|
854
|
+
},
|
|
869
855
|
});
|
|
870
856
|
|
|
871
|
-
|
|
872
|
-
|
|
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.
|
|
899
|
-
|
|
900
|
-
|
|
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(
|
|
915
|
+
app.get('/api/products/count', async (req, res) => {
|
|
921
916
|
const session = await Shopify.Utils.loadCurrentSession(req, res, false);
|
|
922
|
-
const {
|
|
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({
|
|
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
|
|
935
|
-
import {restResources} from '@shopify/shopify-api/rest/admin/2022-10';
|
|
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(
|
|
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({
|
|
947
|
+
const countData = await shopify.rest.Product.count({session});
|
|
953
948
|
res.status(200).send(countData);
|
|
954
949
|
});
|
|
955
950
|
```
|