@shopify/shopify-api 7.5.1 → 7.6.0
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/lib/clients/graphql/storefront_client.d.ts.map +1 -1
- package/lib/clients/graphql/storefront_client.js +10 -9
- package/lib/clients/graphql/storefront_client.js.map +1 -1
- package/lib/types.d.ts +1 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +1 -0
- package/lib/types.js.map +1 -1
- package/lib/utils/hmac-validator.d.ts +5 -2
- package/lib/utils/hmac-validator.d.ts.map +1 -1
- package/lib/utils/hmac-validator.js +19 -8
- package/lib/utils/hmac-validator.js.map +1 -1
- package/lib/utils/index.d.ts +3 -1
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storefront_client.d.ts","sourceRoot":"","sources":["storefront_client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAC,aAAa,EAAE,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAC,sBAAsB,EAAC,MAAM,SAAS,CAAC;AAE/C,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,WAAW,SAAU;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;gBAE3B,MAAM,EAAE,sBAAsB;IA0B1C,SAAS,CAAC,aAAa,IAAI,YAAY;
|
|
1
|
+
{"version":3,"file":"storefront_client.d.ts","sourceRoot":"","sources":["storefront_client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAC,aAAa,EAAE,wBAAwB,EAAC,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAC,sBAAsB,EAAC,MAAM,SAAS,CAAC;AAE/C,qBAAa,gBAAiB,SAAQ,aAAa;IACjD,WAAW,SAAU;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;gBAE3B,MAAM,EAAE,sBAAsB;IA0B1C,SAAS,CAAC,aAAa,IAAI,YAAY;IAyBvC,OAAO,CAAC,eAAe;CAGxB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,wBAAwB,2BAgBrE"}
|
|
@@ -30,15 +30,16 @@ class StorefrontClient extends graphql_client_1.GraphqlClient {
|
|
|
30
30
|
}
|
|
31
31
|
getApiHeaders() {
|
|
32
32
|
const sdkVariant = types_1.LIBRARY_NAME.toLowerCase().split(' ').join('-');
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
const privateToken = this.storefrontClass().config.privateAppStorefrontAccessToken;
|
|
34
|
+
if (this.storefrontAccessToken && privateToken) {
|
|
35
|
+
(0, logger_1.logger)(this.storefrontClass().config).warning('You have both private and public storefront access tokens. The private token will be used.');
|
|
36
|
+
}
|
|
37
|
+
const tokenHeaderParam = privateToken === undefined
|
|
38
|
+
? { [types_1.ShopifyHeader.StorefrontAccessToken]: this.storefrontAccessToken }
|
|
39
|
+
: {
|
|
40
|
+
[types_1.ShopifyHeader.StorefrontPrivateToken]: privateToken,
|
|
41
|
+
};
|
|
42
|
+
return Object.assign(Object.assign({}, tokenHeaderParam), { [types_1.ShopifyHeader.StorefrontSDKVariant]: sdkVariant, [types_1.ShopifyHeader.StorefrontSDKVersion]: version_1.SHOPIFY_API_LIBRARY_VERSION });
|
|
42
43
|
}
|
|
43
44
|
storefrontClass() {
|
|
44
45
|
return this.constructor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storefront_client.js","sourceRoot":"","sources":["storefront_client.ts"],"names":[],"mappings":";;;AAAA,2CAA0D;AAC1D,uCAAwD;AACxD,4DAA2D;AAC3D,mDAA8C;AAE9C,yCAAoC;AAEpC,qDAAyE;AAGzE,MAAa,gBAAiB,SAAQ,8BAAa;IAKjD,YAAY,MAA8B;QACxC,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,MAAM,CAAC,qBAAqB;SAC1C,CAAC,CAAC;QAEH,KAAK,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAC,CAAC,CAAC;QAblD,gBAAW,GAAG,MAAM,CAAC;QAenB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;QAE7C,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM,OAAO,GACX,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;gBACrC,CAAC,CAAC,yEAAyE,MAAM,CAAC,UAAU,EAAE;gBAC9F,CAAC,CAAC,oDAAoD,MAAM,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,EAAE,CAAC;YAExG,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAC5D,CAAC;IAES,aAAa;QACrB,MAAM,UAAU,GAAG,oBAAY,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"storefront_client.js","sourceRoot":"","sources":["storefront_client.ts"],"names":[],"mappings":";;;AAAA,2CAA0D;AAC1D,uCAAwD;AACxD,4DAA2D;AAC3D,mDAA8C;AAE9C,yCAAoC;AAEpC,qDAAyE;AAGzE,MAAa,gBAAiB,SAAQ,8BAAa;IAKjD,YAAY,MAA8B;QACxC,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC,MAAM;YACnB,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,MAAM,CAAC,qBAAqB;SAC1C,CAAC,CAAC;QAEH,KAAK,CAAC,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAC,CAAC,CAAC;QAblD,gBAAW,GAAG,MAAM,CAAC;QAenB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC;QAE7C,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,MAAM,OAAO,GACX,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,UAAU;gBACrC,CAAC,CAAC,yEAAyE,MAAM,CAAC,UAAU,EAAE;gBAC9F,CAAC,CAAC,oDAAoD,MAAM,CAAC,UAAU,SAAS,MAAM,CAAC,UAAU,EAAE,CAAC;YAExG,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC/B;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAC5D,CAAC;IAES,aAAa;QACrB,MAAM,UAAU,GAAG,oBAAY,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnE,MAAM,YAAY,GAChB,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,+BAA+B,CAAC;QAEhE,IAAI,IAAI,CAAC,qBAAqB,IAAI,YAAY,EAAE;YAC9C,IAAA,eAAM,EAAC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAC3C,4FAA4F,CAC7F,CAAC;SACH;QAED,MAAM,gBAAgB,GACpB,YAAY,KAAK,SAAS;YACxB,CAAC,CAAC,EAAC,CAAC,qBAAa,CAAC,qBAAqB,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAC;YACrE,CAAC,CAAE;gBACC,CAAC,qBAAa,CAAC,sBAAsB,CAAC,EAAE,YAAY;aACpC,CAAC;QAEzB,uCACK,gBAAgB,KACnB,CAAC,qBAAa,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAChD,CAAC,qBAAa,CAAC,oBAAoB,CAAC,EAAE,qCAA2B,IACjE;IACJ,CAAC;IAEO,eAAe;QACrB,OAAO,IAAI,CAAC,WAAsC,CAAC;IACrD,CAAC;CACF;AA3DD,4CA2DC;AAED,SAAgB,qBAAqB,CAAC,MAAgC;IACpE,MAAM,EAAC,MAAM,EAAC,GAAG,MAAM,CAAC;IACxB,IAAI,EAAC,UAAU,EAAC,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,IAAA,6BAAe,EAAC,MAAM,CAAC,CAAC;KACtC;IACD,MAAM,mBAAoB,SAAQ,gBAAgB;;IAClC,0BAAM,GAAG,MAAM,CAAC;IAChB,8BAAU,GAAG,UAAW,CAAC;IAGzC,OAAO,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE;QAClD,KAAK,EAAE,kBAAkB;KAC1B,CAAC,CAAC;IAEH,OAAO,mBAA8C,CAAC;AACxD,CAAC;AAhBD,sDAgBC"}
|
package/lib/types.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export declare enum ShopifyHeader {
|
|
|
23
23
|
Topic = "X-Shopify-Topic",
|
|
24
24
|
WebhookId = "X-Shopify-Webhook-Id",
|
|
25
25
|
StorefrontAccessToken = "X-Shopify-Storefront-Access-Token",
|
|
26
|
+
StorefrontPrivateToken = "Shopify-Storefront-Private-Token",
|
|
26
27
|
StorefrontSDKVariant = "X-SDK-Variant",
|
|
27
28
|
StorefrontSDKVersion = "X-SDK-Version"
|
|
28
29
|
}
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,MAAM,YAAY;IAClB,SAAS,YAAY;IACrB,SAAS,YAAY;IACrB,OAAO,YAAY;IACnB,MAAM,YAAY;IAClB,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,YAAY,wBAAwB,CAAC;AAClD,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAGpD,oBAAY,aAAa;IACvB,WAAW,2BAA2B;IACtC,UAAU,0BAA0B;IACpC,MAAM,0BAA0B;IAChC,IAAI,0BAA0B;IAC9B,KAAK,oBAAoB;IACzB,SAAS,yBAAyB;IAClC,qBAAqB,sCAAsC;IAC3D,oBAAoB,kBAAkB;IACtC,oBAAoB,kBAAkB;CACvC;AAGD,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,EAI9B,CAAC;AAEF,oBAAY,eAAe;IACzB,OAAO,aAAa;IACpB,WAAW,kBAAkB;IAC7B,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,oBAAY,yBAAyB,GAAG,OAAO,CAC7C,eAAe,EACf,eAAe,CAAC,OAAO,CACxB,CAAC;AAEF,oBAAY,0BAA0B;IACpC,gBAAgB,sBAAsB;IACtC,uBAAuB,gCAAgC;IACvD,QAAQ,aAAa;CACtB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,KAAK,IAAA;IACL,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,KAAK,IAAA;CACN;AAED,oBAAY,UAAU;IACpB,OAAO,YAAY;IACnB,MAAM,YAAY;IAClB,SAAS,YAAY;IACrB,SAAS,YAAY;IACrB,OAAO,YAAY;IACnB,MAAM,YAAY;IAClB,QAAQ,aAAa;CACtB;AAED,eAAO,MAAM,YAAY,wBAAwB,CAAC;AAClD,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AAGpD,oBAAY,aAAa;IACvB,WAAW,2BAA2B;IACtC,UAAU,0BAA0B;IACpC,MAAM,0BAA0B;IAChC,IAAI,0BAA0B;IAC9B,KAAK,oBAAoB;IACzB,SAAS,yBAAyB;IAClC,qBAAqB,sCAAsC;IAC3D,sBAAsB,qCAAqC;IAC3D,oBAAoB,kBAAkB;IACtC,oBAAoB,kBAAkB;CACvC;AAGD,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,EAI9B,CAAC;AAEF,oBAAY,eAAe;IACzB,OAAO,aAAa;IACpB,WAAW,kBAAkB;IAC7B,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,oBAAY,yBAAyB,GAAG,OAAO,CAC7C,eAAe,EACf,eAAe,CAAC,OAAO,CACxB,CAAC;AAEF,oBAAY,0BAA0B;IACpC,gBAAgB,sBAAsB;IACtC,uBAAuB,gCAAgC;IACvD,QAAQ,aAAa;CACtB"}
|
package/lib/types.js
CHANGED
|
@@ -30,6 +30,7 @@ var ShopifyHeader;
|
|
|
30
30
|
ShopifyHeader["Topic"] = "X-Shopify-Topic";
|
|
31
31
|
ShopifyHeader["WebhookId"] = "X-Shopify-Webhook-Id";
|
|
32
32
|
ShopifyHeader["StorefrontAccessToken"] = "X-Shopify-Storefront-Access-Token";
|
|
33
|
+
ShopifyHeader["StorefrontPrivateToken"] = "Shopify-Storefront-Private-Token";
|
|
33
34
|
ShopifyHeader["StorefrontSDKVariant"] = "X-SDK-Variant";
|
|
34
35
|
ShopifyHeader["StorefrontSDKVersion"] = "X-SDK-Version";
|
|
35
36
|
})(ShopifyHeader = exports.ShopifyHeader || (exports.ShopifyHeader = {}));
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,+CAAK,CAAA;IACL,mDAAO,CAAA;IACP,6CAAI,CAAA;IACJ,+CAAK,CAAA;AACP,CAAC,EALW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAKtB;AAED,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,gCAAkB,CAAA;IAClB,mCAAqB,CAAA;IACrB,mCAAqB,CAAA;IACrB,iCAAmB,CAAA;IACnB,gCAAkB,CAAA;IAClB,mCAAqB,CAAA;AACvB,CAAC,EARW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAQrB;AAEY,QAAA,YAAY,GAAG,qBAAqB,CAAC;AACrC,QAAA,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC;AAEpD,iEAAiE;AACjE,IAAY,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["types.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,+CAAK,CAAA;IACL,mDAAO,CAAA;IACP,6CAAI,CAAA;IACJ,+CAAK,CAAA;AACP,CAAC,EALW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAKtB;AAED,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,gCAAkB,CAAA;IAClB,mCAAqB,CAAA;IACrB,mCAAqB,CAAA;IACrB,iCAAmB,CAAA;IACnB,gCAAkB,CAAA;IAClB,mCAAqB,CAAA;AACvB,CAAC,EARW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAQrB;AAEY,QAAA,YAAY,GAAG,qBAAqB,CAAC;AACrC,QAAA,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC;AAEpD,iEAAiE;AACjE,IAAY,aAWX;AAXD,WAAY,aAAa;IACvB,uDAAsC,CAAA;IACtC,qDAAoC,CAAA;IACpC,iDAAgC,CAAA;IAChC,+CAA8B,CAAA;IAC9B,0CAAyB,CAAA;IACzB,mDAAkC,CAAA;IAClC,4EAA2D,CAAA;IAC3D,4EAA2D,CAAA;IAC3D,uDAAsC,CAAA;IACtC,uDAAsC,CAAA;AACxC,CAAC,EAXW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAWxB;AACD,gEAAgE;AAEhE,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,2BAAa,CAAA;IACb,iCAAmB,CAAA;AACrB,CAAC,EAHW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAGrB;AAEY,QAAA,UAAU,GAAa;IAClC,wBAAwB;IACxB,kBAAkB;IAClB,aAAa;CACd,CAAC;AAEF,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,uCAAoB,CAAA;IACpB,gDAA6B,CAAA;IAC7B,oCAAiB,CAAA;IACjB,kCAAe,CAAA;AACjB,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AAOD,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IACpC,oEAAsC,CAAA;IACtC,qFAAuD,CAAA;IACvD,mDAAqB,CAAA;AACvB,CAAC,EAJW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAIrC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ConfigInterface } from '../base-types';
|
|
2
2
|
import { AuthQuery } from '../auth/oauth/types';
|
|
3
|
-
export declare
|
|
4
|
-
export declare function
|
|
3
|
+
export declare type HMACSignator = 'admin' | 'appProxy';
|
|
4
|
+
export declare function generateLocalHmac(config: ConfigInterface): (params: AuthQuery, signator?: HMACSignator) => Promise<string>;
|
|
5
|
+
export declare function validateHmac(config: ConfigInterface): (query: AuthQuery, { signator }?: {
|
|
6
|
+
signator: HMACSignator;
|
|
7
|
+
}) => Promise<boolean>;
|
|
5
8
|
export declare function getCurrentTimeInSec(): number;
|
|
6
9
|
//# sourceMappingURL=hmac-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmac-validator.d.ts","sourceRoot":"","sources":["hmac-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"hmac-validator.d.ts","sourceRoot":"","sources":["hmac-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAG9C,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAQ9C,oBAAY,YAAY,GAAG,OAAO,GAAG,UAAU,CAAC;AAmBhD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,YAE7C,SAAS,aACP,YAAY,KACrB,QAAQ,MAAM,CAAC,CAUnB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,WAEzC,SAAS;cACO,YAAY;MAClC,QAAQ,OAAO,CAAC,CAoBpB;AAED,wBAAgB,mBAAmB,WAElC"}
|
|
@@ -8,30 +8,41 @@ const ShopifyErrors = tslib_1.__importStar(require("../error"));
|
|
|
8
8
|
const safe_compare_1 = require("../auth/oauth/safe-compare");
|
|
9
9
|
const processed_query_1 = tslib_1.__importDefault(require("./processed-query"));
|
|
10
10
|
const HMAC_TIMESTAMP_PERMITTED_CLOCK_TOLERANCE_SEC = 90;
|
|
11
|
-
function
|
|
11
|
+
function stringifyQueryForAdmin(query) {
|
|
12
12
|
const processedQuery = new processed_query_1.default();
|
|
13
13
|
Object.keys(query)
|
|
14
14
|
.sort((val1, val2) => val1.localeCompare(val2))
|
|
15
15
|
.forEach((key) => processedQuery.put(key, query[key]));
|
|
16
16
|
return processedQuery.stringify(true);
|
|
17
17
|
}
|
|
18
|
+
function stringifyQueryForAppProxy(query) {
|
|
19
|
+
return Object.entries(query)
|
|
20
|
+
.sort(([val1], [val2]) => val1.localeCompare(val2))
|
|
21
|
+
.reduce((acc, [key, value]) => {
|
|
22
|
+
return `${acc}${key}=${Array.isArray(value) ? value.join(',') : value}`;
|
|
23
|
+
}, '');
|
|
24
|
+
}
|
|
18
25
|
function generateLocalHmac(config) {
|
|
19
|
-
return (params) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
|
-
// assumes that 'signature' (from Shopify) will only ever be a hmac value
|
|
26
|
+
return (params, signator = 'admin') => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
21
27
|
const { hmac, signature } = params, query = tslib_1.__rest(params, ["hmac", "signature"]);
|
|
22
|
-
const queryString =
|
|
28
|
+
const queryString = signator === 'admin'
|
|
29
|
+
? stringifyQueryForAdmin(query)
|
|
30
|
+
: stringifyQueryForAppProxy(query);
|
|
23
31
|
return (0, crypto_1.createSHA256HMAC)(config.apiSecretKey, queryString, types_1.HashFormat.Hex);
|
|
24
32
|
});
|
|
25
33
|
}
|
|
26
34
|
exports.generateLocalHmac = generateLocalHmac;
|
|
27
35
|
function validateHmac(config) {
|
|
28
|
-
return (query) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
29
|
-
if (
|
|
36
|
+
return (query, { signator } = { signator: 'admin' }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
if (signator === 'admin' && !query.hmac) {
|
|
30
38
|
throw new ShopifyErrors.InvalidHmacError('Query does not contain an HMAC value.');
|
|
31
39
|
}
|
|
40
|
+
if (signator === 'appProxy' && !query.signature) {
|
|
41
|
+
throw new ShopifyErrors.InvalidHmacError('Query does not contain a signature value.');
|
|
42
|
+
}
|
|
32
43
|
validateHmacTimestamp(query);
|
|
33
|
-
const hmac = query.signature
|
|
34
|
-
const localHmac = yield generateLocalHmac(config)(query);
|
|
44
|
+
const hmac = signator === 'appProxy' ? query.signature : query.hmac;
|
|
45
|
+
const localHmac = yield generateLocalHmac(config)(query, signator);
|
|
35
46
|
return (0, safe_compare_1.safeCompare)(hmac, localHmac);
|
|
36
47
|
});
|
|
37
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmac-validator.js","sourceRoot":"","sources":["hmac-validator.ts"],"names":[],"mappings":";;;;AACA,iDAAsD;AACtD,sDAAsD;AAEtD,gEAA0C;AAC1C,6DAAuD;AAEvD,gFAA+C;AAE/C,MAAM,4CAA4C,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"hmac-validator.js","sourceRoot":"","sources":["hmac-validator.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { ConfigInterface } from '../base-types';
|
|
|
2
2
|
export declare function shopifyUtils(config: ConfigInterface): {
|
|
3
3
|
sanitizeShop: (shop: string, throwOnInvalid?: boolean) => string | null;
|
|
4
4
|
sanitizeHost: (host: string, throwOnInvalid?: boolean) => string | null;
|
|
5
|
-
validateHmac: (query: import("..").AuthQuery
|
|
5
|
+
validateHmac: (query: import("..").AuthQuery, { signator }?: {
|
|
6
|
+
signator: import("./hmac-validator").HMACSignator;
|
|
7
|
+
}) => Promise<boolean>;
|
|
6
8
|
versionCompatible: (referenceVersion: import("..").ApiVersion, currentVersion?: import("..").ApiVersion) => boolean;
|
|
7
9
|
versionPriorTo: (referenceVersion: import("..").ApiVersion, currentVersion?: import("..").ApiVersion) => boolean;
|
|
8
10
|
};
|
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAM9C,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAM9C,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe;;;;;;;;EAQnD;AAED,oBAAY,YAAY,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC"}
|
package/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SHOPIFY_API_LIBRARY_VERSION = "7.
|
|
1
|
+
export declare const SHOPIFY_API_LIBRARY_VERSION = "7.6.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shopify/shopify-api",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.6.0",
|
|
4
4
|
"description": "Shopify API Library for Node - accelerate development with support for authentication, graphql proxy, webhooks",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|