@shopify/shopify-api 11.8.1 → 11.9.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/dist/cjs/adapters/mock/mock_test_requests.js +1 -18
- package/dist/cjs/adapters/mock/mock_test_requests.js.map +1 -1
- package/dist/cjs/lib/auth/index.js +2 -0
- package/dist/cjs/lib/auth/index.js.map +1 -1
- package/dist/cjs/lib/auth/oauth/client-credentials.js +43 -0
- package/dist/cjs/lib/auth/oauth/client-credentials.js.map +1 -0
- package/dist/cjs/lib/auth/oauth/create-session.js +25 -28
- package/dist/cjs/lib/auth/oauth/create-session.js.map +1 -1
- package/dist/cjs/lib/billing/check.js +4 -0
- package/dist/cjs/lib/billing/check.js.map +1 -1
- package/dist/cjs/lib/billing/create-usage-record.js +5 -1
- package/dist/cjs/lib/billing/create-usage-record.js.map +1 -1
- package/dist/cjs/lib/billing/subscriptions.js +13 -1
- package/dist/cjs/lib/billing/subscriptions.js.map +1 -1
- package/dist/cjs/lib/billing/update-usage-subscription-capped-amount.js +6 -1
- package/dist/cjs/lib/billing/update-usage-subscription-capped-amount.js.map +1 -1
- package/dist/cjs/lib/billing/utils.js +61 -0
- package/dist/cjs/lib/billing/utils.js.map +1 -0
- package/dist/cjs/lib/clients/index.js +4 -4
- package/dist/cjs/lib/clients/index.js.map +1 -1
- package/dist/cjs/lib/index.js +16 -16
- package/dist/cjs/lib/utils/fetch-request.js +4 -4
- package/dist/cjs/lib/utils/fetch-request.js.map +1 -1
- package/dist/cjs/lib/utils/hmac-validator.js +9 -9
- package/dist/cjs/lib/utils/hmac-validator.js.map +1 -1
- package/dist/cjs/lib/version.js +1 -1
- package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/adapters/mock/mock_test_requests.mjs +1 -18
- package/dist/esm/adapters/mock/mock_test_requests.mjs.map +1 -1
- package/dist/esm/lib/auth/index.mjs +4 -2
- package/dist/esm/lib/auth/index.mjs.map +1 -1
- package/dist/esm/lib/auth/oauth/client-credentials.mjs +41 -0
- package/dist/esm/lib/auth/oauth/client-credentials.mjs.map +1 -0
- package/dist/esm/lib/auth/oauth/create-session.mjs +25 -28
- package/dist/esm/lib/auth/oauth/create-session.mjs.map +1 -1
- package/dist/esm/lib/auth/oauth/oauth.mjs +1 -1
- package/dist/esm/lib/billing/check.mjs +4 -0
- package/dist/esm/lib/billing/check.mjs.map +1 -1
- package/dist/esm/lib/billing/create-usage-record.mjs +5 -1
- package/dist/esm/lib/billing/create-usage-record.mjs.map +1 -1
- package/dist/esm/lib/billing/subscriptions.mjs +13 -1
- package/dist/esm/lib/billing/subscriptions.mjs.map +1 -1
- package/dist/esm/lib/billing/update-usage-subscription-capped-amount.mjs +6 -1
- package/dist/esm/lib/billing/update-usage-subscription-capped-amount.mjs.map +1 -1
- package/dist/esm/lib/billing/utils.mjs +55 -0
- package/dist/esm/lib/billing/utils.mjs.map +1 -0
- package/dist/esm/lib/clients/admin/graphql/client.mjs +1 -1
- package/dist/esm/lib/clients/admin/rest/client.mjs +1 -1
- package/dist/esm/lib/clients/storefront/client.mjs +1 -1
- package/dist/esm/lib/config.mjs +1 -1
- package/dist/esm/lib/session/index.mjs +1 -1
- package/dist/esm/lib/utils/index.mjs +3 -3
- package/dist/esm/lib/utils/shop-validator.mjs +1 -1
- package/dist/esm/lib/version.mjs +1 -1
- package/dist/esm/lib/webhooks/index.mjs +1 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/ts/lib/auth/index.d.ts +2 -0
- package/dist/ts/lib/auth/index.d.ts.map +1 -1
- package/dist/ts/lib/auth/oauth/client-credentials.d.ts +10 -0
- package/dist/ts/lib/auth/oauth/client-credentials.d.ts.map +1 -0
- package/dist/ts/lib/auth/oauth/create-session.d.ts.map +1 -1
- package/dist/ts/lib/auth/oauth/types.d.ts +8 -0
- package/dist/ts/lib/auth/oauth/types.d.ts.map +1 -1
- package/dist/ts/lib/billing/check.d.ts.map +1 -1
- package/dist/ts/lib/billing/create-usage-record.d.ts.map +1 -1
- package/dist/ts/lib/billing/subscriptions.d.ts.map +1 -1
- package/dist/ts/lib/billing/types.d.ts +14 -0
- package/dist/ts/lib/billing/types.d.ts.map +1 -1
- package/dist/ts/lib/billing/update-usage-subscription-capped-amount.d.ts.map +1 -1
- package/dist/ts/lib/billing/utils.d.ts +13 -0
- package/dist/ts/lib/billing/utils.d.ts.map +1 -0
- package/dist/ts/lib/version.d.ts +1 -1
- package/dist/ts/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +10 -10
|
@@ -2,24 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const mockTestRequests = {
|
|
4
4
|
requestList: [],
|
|
5
|
-
responseList: []
|
|
6
|
-
queueResponse(response) {
|
|
7
|
-
this.responseList.push(response);
|
|
8
|
-
},
|
|
9
|
-
queueError(error) {
|
|
10
|
-
this.responseList.push(error);
|
|
11
|
-
},
|
|
12
|
-
getRequest() {
|
|
13
|
-
return this.requestList.shift();
|
|
14
|
-
},
|
|
15
|
-
getResponses() {
|
|
16
|
-
return this.responseList;
|
|
17
|
-
},
|
|
18
|
-
reset() {
|
|
19
|
-
this.requestList = [];
|
|
20
|
-
this.responseList = [];
|
|
21
|
-
},
|
|
22
|
-
};
|
|
5
|
+
responseList: []};
|
|
23
6
|
|
|
24
7
|
exports.mockTestRequests = mockTestRequests;
|
|
25
8
|
//# sourceMappingURL=mock_test_requests.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock_test_requests.js","sources":["../../../../../../adapters/mock/mock_test_requests.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAea,MAAA,gBAAgB,GAAkB;AAC7C,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,YAAY,EAAE
|
|
1
|
+
{"version":3,"file":"mock_test_requests.js","sources":["../../../../../../adapters/mock/mock_test_requests.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAea,MAAA,gBAAgB,GAAkB;AAC7C,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,YAAY,EAAE;;;;"}
|
|
@@ -5,6 +5,7 @@ var nonce = require('./oauth/nonce.js');
|
|
|
5
5
|
var safeCompare = require('./oauth/safe-compare.js');
|
|
6
6
|
var getEmbeddedAppUrl = require('./get-embedded-app-url.js');
|
|
7
7
|
var tokenExchange = require('./oauth/token-exchange.js');
|
|
8
|
+
var clientCredentials = require('./oauth/client-credentials.js');
|
|
8
9
|
|
|
9
10
|
function shopifyAuth(config) {
|
|
10
11
|
const shopify = {
|
|
@@ -15,6 +16,7 @@ function shopifyAuth(config) {
|
|
|
15
16
|
getEmbeddedAppUrl: getEmbeddedAppUrl.getEmbeddedAppUrl(config),
|
|
16
17
|
buildEmbeddedAppUrl: getEmbeddedAppUrl.buildEmbeddedAppUrl(config),
|
|
17
18
|
tokenExchange: tokenExchange.tokenExchange(config),
|
|
19
|
+
clientCredentials: clientCredentials.clientCredentials(config),
|
|
18
20
|
};
|
|
19
21
|
return shopify;
|
|
20
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../lib/auth/index.ts"],"sourcesContent":[null],"names":["begin","callback","nonce","safeCompare","getEmbeddedAppUrl","buildEmbeddedAppUrl","tokenExchange"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../lib/auth/index.ts"],"sourcesContent":[null],"names":["begin","callback","nonce","safeCompare","getEmbeddedAppUrl","buildEmbeddedAppUrl","tokenExchange","clientCredentials"],"mappings":";;;;;;;;;AAgBM,SAAU,WAAW,CACzB,MAAc,EAAA;AAEd,IAAA,MAAM,OAAO,GAAG;AACd,QAAA,KAAK,EAAEA,WAAK,CAAC,MAAM,CAAC;AACpB,QAAA,QAAQ,EAAEC,cAAQ,CAAC,MAAM,CAAC;eAC1BC,WAAK;qBACLC,uBAAW;AACX,QAAA,iBAAiB,EAAEC,mCAAiB,CAAC,MAAM,CAAC;AAC5C,QAAA,mBAAmB,EAAEC,qCAAmB,CAAC,MAAM,CAAC;AAChD,QAAA,aAAa,EAAEC,2BAAa,CAAC,MAAM,CAAC;AACpC,QAAA,iBAAiB,EAAEC,mCAAiB,CAAC,MAAM,CAAC;KAC9B;AAEhB,IAAA,OAAO,OAAO;AAChB;;;;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var common = require('../../clients/common.js');
|
|
4
|
+
var types = require('../../clients/types.js');
|
|
5
|
+
var fetchRequest = require('../../utils/fetch-request.js');
|
|
6
|
+
var shopValidator = require('../../utils/shop-validator.js');
|
|
7
|
+
var createSession = require('./create-session.js');
|
|
8
|
+
|
|
9
|
+
const ClientCredentialsGrantType = 'client_credentials';
|
|
10
|
+
function clientCredentials(config) {
|
|
11
|
+
return async ({ shop }) => {
|
|
12
|
+
const cleanShop = shopValidator.sanitizeShop(config)(shop, true);
|
|
13
|
+
const requestConfig = {
|
|
14
|
+
method: 'POST',
|
|
15
|
+
body: JSON.stringify({
|
|
16
|
+
client_id: config.apiKey,
|
|
17
|
+
client_secret: config.apiSecretKey,
|
|
18
|
+
grant_type: ClientCredentialsGrantType,
|
|
19
|
+
}),
|
|
20
|
+
headers: {
|
|
21
|
+
'Content-Type': types.DataType.JSON,
|
|
22
|
+
Accept: types.DataType.JSON,
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
const postResponse = await fetchRequest.fetchRequestFactory(config)(`https://${cleanShop}/admin/oauth/access_token`, requestConfig);
|
|
26
|
+
const responseData = (await postResponse.json());
|
|
27
|
+
if (!postResponse.ok) {
|
|
28
|
+
common.throwFailedRequest(responseData, false, postResponse);
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
session: createSession.createSession({
|
|
32
|
+
accessTokenResponse: responseData,
|
|
33
|
+
shop: cleanShop,
|
|
34
|
+
// We need to keep this as an empty string as our template DB schemas have this required
|
|
35
|
+
state: '',
|
|
36
|
+
config,
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
exports.clientCredentials = clientCredentials;
|
|
43
|
+
//# sourceMappingURL=client-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-credentials.js","sources":["../../../../../../../lib/auth/oauth/client-credentials.ts"],"sourcesContent":[null],"names":["sanitizeShop","DataType","fetchRequestFactory","throwFailedRequest","createSession"],"mappings":";;;;;;;;AAcA,MAAM,0BAA0B,GAAG,oBAAoB;AAMjD,SAAU,iBAAiB,CAAC,MAAuB,EAAA;AACvD,IAAA,OAAO,OAAO,EAAC,IAAI,EAA0B,KAAI;QAC/C,MAAM,SAAS,GAAGA,0BAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAE;AAEnD,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,SAAS,EAAE,MAAM,CAAC,MAAM;gBACxB,aAAa,EAAE,MAAM,CAAC,YAAY;AAClC,gBAAA,UAAU,EAAE,0BAA0B;aACvC,CAAC;AACF,YAAA,OAAO,EAAE;gBACP,cAAc,EAAEC,cAAQ,CAAC,IAAI;gBAC7B,MAAM,EAAEA,cAAQ,CAAC,IAAI;AACtB,aAAA;SACF;AAED,QAAA,MAAM,YAAY,GAAG,MAAMC,gCAAmB,CAAC,MAAM,CAAC,CACpD,CAAA,QAAA,EAAW,SAAS,CAAA,yBAAA,CAA2B,EAC/C,aAAa,CACd;QAED,MAAM,YAAY,IAAI,MAAM,YAAY,CAAC,IAAI,EAAE,CAAwB;AAEvE,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE;AACpB,YAAAC,yBAAkB,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC;;QAGvD,OAAO;YACL,OAAO,EAAEC,2BAAa,CAAC;AACrB,gBAAA,mBAAmB,EAAE,YAAY;AACjC,gBAAA,IAAI,EAAE,SAAS;;AAEf,gBAAA,KAAK,EAAE,EAAE;gBACT,MAAM;aACP,CAAC;SACH;AACH,KAAC;AACH;;;;"}
|
|
@@ -10,38 +10,35 @@ function createSession({ config, accessTokenResponse, shop, state, }) {
|
|
|
10
10
|
.associated_user;
|
|
11
11
|
const isOnline = Boolean(associatedUser);
|
|
12
12
|
index.logger(config).info('Creating new session', { shop, isOnline });
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const responseBody = accessTokenResponse;
|
|
13
|
+
const getSessionExpiration = (expires_in) => new Date(Date.now() + expires_in * 1000);
|
|
14
|
+
const getOnlineSessionProperties = (responseBody) => {
|
|
16
15
|
const { access_token, scope, ...rest } = responseBody;
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
else {
|
|
22
|
-
sessionId = uuid.v4();
|
|
23
|
-
}
|
|
24
|
-
return new session.Session({
|
|
16
|
+
const sessionId = config.isEmbeddedApp
|
|
17
|
+
? sessionUtils.getJwtSessionId(config)(shop, `${rest.associated_user.id}`)
|
|
18
|
+
: uuid.v4();
|
|
19
|
+
return {
|
|
25
20
|
id: sessionId,
|
|
26
|
-
shop,
|
|
27
|
-
state,
|
|
28
|
-
isOnline,
|
|
29
|
-
accessToken: access_token,
|
|
30
|
-
scope,
|
|
31
|
-
expires: sessionExpiration,
|
|
32
21
|
onlineAccessInfo: rest,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
expires: getSessionExpiration(rest.expires_in),
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
const getOfflineSessionProperties = (responseBody) => {
|
|
26
|
+
const { expires_in } = responseBody;
|
|
27
|
+
return {
|
|
37
28
|
id: sessionUtils.getOfflineId(config)(shop),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
29
|
+
...(expires_in && { expires: getSessionExpiration(expires_in) }),
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
return new session.Session({
|
|
33
|
+
shop,
|
|
34
|
+
state,
|
|
35
|
+
isOnline,
|
|
36
|
+
accessToken: accessTokenResponse.access_token,
|
|
37
|
+
scope: accessTokenResponse.scope,
|
|
38
|
+
...(isOnline
|
|
39
|
+
? getOnlineSessionProperties(accessTokenResponse)
|
|
40
|
+
: getOfflineSessionProperties(accessTokenResponse)),
|
|
41
|
+
});
|
|
45
42
|
}
|
|
46
43
|
|
|
47
44
|
exports.createSession = createSession;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-session.js","sources":["../../../../../../../lib/auth/oauth/create-session.ts"],"sourcesContent":[null],"names":["logger","getJwtSessionId","uuidv4","
|
|
1
|
+
{"version":3,"file":"create-session.js","sources":["../../../../../../../lib/auth/oauth/create-session.ts"],"sourcesContent":[null],"names":["logger","getJwtSessionId","uuidv4","getOfflineId","Session"],"mappings":";;;;;;;AAcM,SAAU,aAAa,CAAC,EAC5B,MAAM,EACN,mBAAmB,EACnB,IAAI,EACJ,KAAK,GAMN,EAAA;IACC,MAAM,cAAc,GAAI;AACrB,SAAA,eAAe;AAClB,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;AAExC,IAAAA,YAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC;AAE7D,IAAA,MAAM,oBAAoB,GAAG,CAAC,UAAkB,KAC9C,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC;AAE1C,IAAA,MAAM,0BAA0B,GAAG,CAAC,YAAkC,KAAI;QACxE,MAAM,EAAC,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,EAAC,GAAG,YAAY;AACnD,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC;AACvB,cAAEC,4BAAe,CAAC,MAAM,CAAC,CACrB,IAAI,EACJ,CAAA,EAAI,IAAyB,CAAC,eAAe,CAAC,EAAE,EAAE;cAEpDC,OAAM,EAAE;QAEZ,OAAO;AACL,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;SAC/C;AACH,KAAC;AAED,IAAA,MAAM,2BAA2B,GAAG,CAAC,YAAmC,KAAI;AAC1E,QAAA,MAAM,EAAC,UAAU,EAAC,GAAG,YAAY;QACjC,OAAO;AACL,YAAA,EAAE,EAAEC,yBAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC9B,IAAI,UAAU,IAAI,EAAC,OAAO,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAAC,CAAC;SAC/D;AACH,KAAC;IAED,OAAO,IAAIC,eAAO,CAAC;QACjB,IAAI;QACJ,KAAK;QACL,QAAQ;QACR,WAAW,EAAE,mBAAmB,CAAC,YAAY;QAC7C,KAAK,EAAE,mBAAmB,CAAC,KAAK;AAChC,QAAA,IAAI;AACF,cAAE,0BAA0B,CAAC,mBAA2C;AACxE,cAAE,2BAA2B,CACzB,mBAA4C,CAC7C,CAAC;AACP,KAAA,CAAC;AACJ;;;;"}
|
|
@@ -8,6 +8,7 @@ require('../types.js');
|
|
|
8
8
|
require('../../runtime/crypto/crypto.js');
|
|
9
9
|
require('../../runtime/crypto/types.js');
|
|
10
10
|
require('compare-versions');
|
|
11
|
+
var utils = require('./utils.js');
|
|
11
12
|
|
|
12
13
|
function check(config) {
|
|
13
14
|
return async function check(params) {
|
|
@@ -45,6 +46,9 @@ async function assessPayments({ client, isTest, plans, }) {
|
|
|
45
46
|
installation.activeSubscriptions.forEach((subscription) => {
|
|
46
47
|
if (subscriptionMeetsCriteria({ subscription, isTest, plans })) {
|
|
47
48
|
returnValue.hasActivePayment = true;
|
|
49
|
+
if (subscription.lineItems) {
|
|
50
|
+
subscription.lineItems = utils.convertLineItems(subscription.lineItems);
|
|
51
|
+
}
|
|
48
52
|
returnValue.appSubscriptions.push(subscription);
|
|
49
53
|
}
|
|
50
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sources":["../../../../../../lib/billing/check.ts"],"sourcesContent":[null],"names":["BillingError","graphqlClientClass","client"],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.js","sources":["../../../../../../lib/billing/check.ts"],"sourcesContent":[null],"names":["BillingError","graphqlClientClass","client","convertLineItems"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ require('../../runtime/crypto/crypto.js');
|
|
|
9
9
|
require('../../runtime/crypto/types.js');
|
|
10
10
|
require('compare-versions');
|
|
11
11
|
var check = require('./check.js');
|
|
12
|
+
var utils = require('./utils.js');
|
|
12
13
|
|
|
13
14
|
const CREATE_USAGE_RECORD_MUTATION = `
|
|
14
15
|
mutation appUsageRecordCreate($description: String!, $price: MoneyInput!, $subscriptionLineItemId: ID!) {
|
|
@@ -75,7 +76,10 @@ function createUsageRecord(config) {
|
|
|
75
76
|
errorData: response.data?.appUsageRecordCreate?.userErrors,
|
|
76
77
|
});
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
+
const appUsageRecord = response.data?.appUsageRecordCreate?.appUsageRecord;
|
|
80
|
+
utils.convertAppRecurringPricingMoney(appUsageRecord.price);
|
|
81
|
+
utils.convertAppUsagePricingMoney(appUsageRecord.subscriptionLineItem.plan.pricingDetails);
|
|
82
|
+
return appUsageRecord;
|
|
79
83
|
}
|
|
80
84
|
catch (error$1) {
|
|
81
85
|
if (error$1 instanceof error.GraphqlQueryError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-usage-record.js","sources":["../../../../../../lib/billing/create-usage-record.ts"],"sourcesContent":[null],"names":["graphqlClientClass","client","BillingError","error","GraphqlQueryError","assessPayments"],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-usage-record.js","sources":["../../../../../../lib/billing/create-usage-record.ts"],"sourcesContent":[null],"names":["graphqlClientClass","client","BillingError","convertAppRecurringPricingMoney","convertAppUsagePricingMoney","error","GraphqlQueryError","assessPayments"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ require('../types.js');
|
|
|
8
8
|
require('../../runtime/crypto/crypto.js');
|
|
9
9
|
require('../../runtime/crypto/types.js');
|
|
10
10
|
require('compare-versions');
|
|
11
|
+
var utils = require('./utils.js');
|
|
11
12
|
|
|
12
13
|
const SUBSCRIPTION_QUERY = `
|
|
13
14
|
query appSubscription {
|
|
@@ -74,7 +75,18 @@ function subscriptions(config) {
|
|
|
74
75
|
const GraphqlClient = client.graphqlClientClass({ config });
|
|
75
76
|
const client$1 = new GraphqlClient({ session });
|
|
76
77
|
const response = await client$1.request(SUBSCRIPTION_QUERY);
|
|
77
|
-
|
|
78
|
+
if (!response.data?.currentAppInstallation?.activeSubscriptions) {
|
|
79
|
+
return { activeSubscriptions: [] };
|
|
80
|
+
}
|
|
81
|
+
const activeSubscriptions = response.data.currentAppInstallation.activeSubscriptions;
|
|
82
|
+
activeSubscriptions.forEach((subscription) => {
|
|
83
|
+
if (subscription.lineItems) {
|
|
84
|
+
subscription.lineItems = utils.convertLineItems(subscription.lineItems);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return {
|
|
88
|
+
activeSubscriptions,
|
|
89
|
+
};
|
|
78
90
|
};
|
|
79
91
|
}
|
|
80
92
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.js","sources":["../../../../../../lib/billing/subscriptions.ts"],"sourcesContent":[null],"names":["BillingError","graphqlClientClass","client"],"mappings":"
|
|
1
|
+
{"version":3,"file":"subscriptions.js","sources":["../../../../../../lib/billing/subscriptions.ts"],"sourcesContent":[null],"names":["BillingError","graphqlClientClass","client","convertLineItems"],"mappings":";;;;;;;;;;;;AAYA,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqD1B;AAEK,SAAU,aAAa,CAAC,MAAuB,EAAA;AACnD,IAAA,OAAO,gBAAgB,EACrB,OAAO,GACmB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,8BAA8B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACrE,MAAM,IAAIA,kBAAY,CAAC;AACrB,gBAAA,OAAO,EAAE,yDAAyD;AAClE,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA,CAAC;;QAGJ,MAAM,aAAa,GAAGC,yBAAkB,CAAC,EAAC,MAAM,EAAC,CAAC;QAClD,MAAMC,QAAM,GAAG,IAAI,aAAa,CAAC,EAAC,OAAO,EAAC,CAAC;QAE3C,MAAM,QAAQ,GACZ,MAAMA,QAAM,CAAC,OAAO,CAAuB,kBAAkB,CAAC;QAEhE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,sBAAsB,EAAE,mBAAmB,EAAE;AAC/D,YAAA,OAAO,EAAC,mBAAmB,EAAE,EAAE,EAAC;;QAGlC,MAAM,mBAAmB,GACvB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,mBAAmB;AAC1D,QAAA,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AAC3C,YAAA,IAAI,YAAY,CAAC,SAAS,EAAE;gBAC1B,YAAY,CAAC,SAAS,GAAGC,sBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC;;AAErE,SAAC,CAAC;QAEF,OAAO;YACL,mBAAmB;SACpB;AACH,KAAC;AACH;;;;"}
|
|
@@ -8,6 +8,7 @@ require('../types.js');
|
|
|
8
8
|
require('../../runtime/crypto/crypto.js');
|
|
9
9
|
require('../../runtime/crypto/types.js');
|
|
10
10
|
require('compare-versions');
|
|
11
|
+
var utils = require('./utils.js');
|
|
11
12
|
|
|
12
13
|
const UPDATE_USAGE_CAPPED_AMOUNT_MUTATION = `
|
|
13
14
|
mutation appSubscriptionLineItemUpdate($cappedAmount: MoneyInput!, $id: ID!) {
|
|
@@ -70,9 +71,13 @@ function updateUsageCappedAmount(config) {
|
|
|
70
71
|
errorData: response.data?.appSubscriptionLineItemUpdate?.userErrors,
|
|
71
72
|
});
|
|
72
73
|
}
|
|
74
|
+
const appSubscription = response.data?.appSubscriptionLineItemUpdate?.appSubscription;
|
|
75
|
+
if (appSubscription && appSubscription.lineItems) {
|
|
76
|
+
appSubscription.lineItems = utils.convertLineItems(appSubscription.lineItems);
|
|
77
|
+
}
|
|
73
78
|
return {
|
|
74
79
|
confirmationUrl: response.data?.appSubscriptionLineItemUpdate?.confirmationUrl,
|
|
75
|
-
appSubscription
|
|
80
|
+
appSubscription,
|
|
76
81
|
};
|
|
77
82
|
}
|
|
78
83
|
catch (error$1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-usage-subscription-capped-amount.js","sources":["../../../../../../lib/billing/update-usage-subscription-capped-amount.ts"],"sourcesContent":[null],"names":["BillingError","graphqlClientClass","client","error","GraphqlQueryError"],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-usage-subscription-capped-amount.js","sources":["../../../../../../lib/billing/update-usage-subscription-capped-amount.ts"],"sourcesContent":[null],"names":["BillingError","graphqlClientClass","client","convertLineItems","error","GraphqlQueryError"],"mappings":";;;;;;;;;;;;AAYA,MAAM,mCAAmC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC3C;AAEK,SAAU,uBAAuB,CACrC,MAAuB,EAAA;AAEvB,IAAA,OAAO,eAAe,uBAAuB,CAC3C,MAA4C,EAAA;AAE5C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,MAAM,IAAIA,kBAAY,CAAC;AACrB,gBAAA,OAAO,EAAE,uDAAuD;AAChE,gBAAA,SAAS,EAAE,EAAE;AACd,aAAA,CAAC;;AAGJ,QAAA,MAAM,EACJ,OAAO,EACP,sBAAsB,EACtB,YAAY,EAAE,EAAC,MAAM,EAAE,YAAY,EAAC,GACrC,GAAG,MAAM;QAEV,MAAM,aAAa,GAAGC,yBAAkB,CAAC,EAAC,MAAM,EAAC,CAAC;QAClD,MAAMC,QAAM,GAAG,IAAI,aAAa,CAAC,EAAC,OAAO,EAAC,CAAC;AAE3C,QAAA,IAAI;YACF,MAAM,QAAQ,GACZ,MAAMA,QAAM,CAAC,OAAO,CAClB,mCAAmC,EACnC;AACE,gBAAA,SAAS,EAAE;AACT,oBAAA,EAAE,EAAE,sBAAsB;AAC1B,oBAAA,YAAY,EAAE;wBACZ,MAAM;wBACN,YAAY;AACb,qBAAA;AACF,iBAAA;AACF,aAAA,CACF;YAEH,IAAI,QAAQ,CAAC,IAAI,EAAE,6BAA6B,EAAE,UAAU,CAAC,MAAM,EAAE;gBACnE,MAAM,IAAIF,kBAAY,CAAC;AACrB,oBAAA,OAAO,EAAE,uDAAuD;AAChE,oBAAA,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,6BAA6B,EAAE,UAAU;AACpE,iBAAA,CAAC;;YAGJ,MAAM,eAAe,GACnB,QAAQ,CAAC,IAAI,EAAE,6BAA6B,EAAE,eAAgB;AAChE,YAAA,IAAI,eAAe,IAAI,eAAe,CAAC,SAAS,EAAE;gBAChD,eAAe,CAAC,SAAS,GAAGG,sBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC;;YAGzE,OAAO;AACL,gBAAA,eAAe,EACb,QAAQ,CAAC,IAAI,EAAE,6BAA6B,EAAE,eAAgB;gBAChE,eAAe;aAChB;;QACD,OAAOC,OAAK,EAAE;AACd,YAAA,IAAIA,OAAK,YAAYC,uBAAiB,EAAE;gBACtC,MAAM,IAAIL,kBAAY,CAAC;oBACrB,OAAO,EAAEI,OAAK,CAAC,OAAO;AACtB,oBAAA,SAAS,EAAEA,OAAK,CAAC,QAAQ,EAAE,MAAM;AAClC,iBAAA,CAAC;;AAGJ,YAAA,MAAMA,OAAK;;AAEf,KAAC;AACH;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Converts string amounts to numbers in Money type objects
|
|
5
|
+
*/
|
|
6
|
+
function convertMoneyAmount(data) {
|
|
7
|
+
if (!data)
|
|
8
|
+
return data;
|
|
9
|
+
convertAppUsagePricingMoney(data);
|
|
10
|
+
convertAppRecurringPricingMoney(data);
|
|
11
|
+
convertAppDiscountMoney(data);
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function convertAppRecurringPricingMoney(data) {
|
|
15
|
+
if (!data)
|
|
16
|
+
return;
|
|
17
|
+
if (data.price?.amount && typeof data.price.amount === 'string') {
|
|
18
|
+
data.price.amount = parseFloat(data.price.amount);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function convertAppDiscountMoney(data) {
|
|
22
|
+
if (!data)
|
|
23
|
+
return;
|
|
24
|
+
if (data.discount?.priceAfterDiscount?.amount &&
|
|
25
|
+
typeof data.discount.priceAfterDiscount.amount === 'string') {
|
|
26
|
+
data.discount.priceAfterDiscount.amount = parseFloat(data.discount.priceAfterDiscount.amount);
|
|
27
|
+
}
|
|
28
|
+
if (data.discount?.value?.amount?.amount &&
|
|
29
|
+
typeof data.discount.value.amount.amount === 'string') {
|
|
30
|
+
data.discount.value.amount.amount = parseFloat(data.discount.value.amount.amount);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function convertAppUsagePricingMoney(data) {
|
|
34
|
+
if (!data)
|
|
35
|
+
return;
|
|
36
|
+
if (data.balanceUsed?.amount && typeof data.balanceUsed.amount === 'string') {
|
|
37
|
+
data.balanceUsed.amount = parseFloat(data.balanceUsed.amount);
|
|
38
|
+
}
|
|
39
|
+
if (data.cappedAmount?.amount &&
|
|
40
|
+
typeof data.cappedAmount.amount === 'string') {
|
|
41
|
+
data.cappedAmount.amount = parseFloat(data.cappedAmount.amount);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Converts Money amounts in line items
|
|
46
|
+
*/
|
|
47
|
+
function convertLineItems(lineItems) {
|
|
48
|
+
return lineItems.map((item) => {
|
|
49
|
+
if (item.plan?.pricingDetails) {
|
|
50
|
+
item.plan.pricingDetails = convertMoneyAmount(item.plan.pricingDetails);
|
|
51
|
+
}
|
|
52
|
+
return item;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
exports.convertAppDiscountMoney = convertAppDiscountMoney;
|
|
57
|
+
exports.convertAppRecurringPricingMoney = convertAppRecurringPricingMoney;
|
|
58
|
+
exports.convertAppUsagePricingMoney = convertAppUsagePricingMoney;
|
|
59
|
+
exports.convertLineItems = convertLineItems;
|
|
60
|
+
exports.convertMoneyAmount = convertMoneyAmount;
|
|
61
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../lib/billing/utils.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;AAEG;AACG,SAAU,kBAAkB,CAAC,IAAS,EAAA;AAC1C,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IAEtB,2BAA2B,CAAC,IAAI,CAAC;IACjC,+BAA+B,CAAC,IAAI,CAAC;IACrC,uBAAuB,CAAC,IAAI,CAAC;AAE7B,IAAA,OAAO,IAAI;AACb;AAEM,SAAU,+BAA+B,CAAC,IAAS,EAAA;AACvD,IAAA,IAAI,CAAC,IAAI;QAAE;AAEX,IAAA,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC/D,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;;AAErD;AAEM,SAAU,uBAAuB,CAAC,IAAS,EAAA;AAC/C,IAAA,IAAI,CAAC,IAAI;QAAE;AAEX,IAAA,IACE,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,KAAK,QAAQ,EAC3D;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,GAAG,UAAU,CAClD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CACxC;;IAGH,IACE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;AACpC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EACrD;QACA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAClC;;AAEL;AAEM,SAAU,2BAA2B,CAAC,IAAS,EAAA;AACnD,IAAA,IAAI,CAAC,IAAI;QAAE;AAEX,IAAA,IAAI,IAAI,CAAC,WAAW,EAAE,MAAM,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE;AAC3E,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;;AAG/D,IAAA,IACE,IAAI,CAAC,YAAY,EAAE,MAAM;QACzB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,QAAQ,EAC5C;AACA,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;;AAEnE;AAEA;;AAEG;AACG,SAAU,gBAAgB,CAAC,SAAuC,EAAA;AACtE,IAAA,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC5B,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;;AAEzE,QAAA,OAAO,IAAI;AACb,KAAC,CAAC;AACJ;;;;;;;;"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var client$1 = require('./admin/graphql/client.js');
|
|
4
|
-
var client = require('./admin/rest/client.js');
|
|
5
|
-
var client
|
|
4
|
+
var client$2 = require('./admin/rest/client.js');
|
|
5
|
+
var client = require('./storefront/client.js');
|
|
6
6
|
var graphql_proxy = require('./graphql_proxy/graphql_proxy.js');
|
|
7
7
|
|
|
8
8
|
function clientClasses(config) {
|
|
9
9
|
return {
|
|
10
10
|
// We don't pass in the HttpClient because the RestClient inherits from it, and goes through the same setup process
|
|
11
|
-
Rest: client.restClientClass({ config }),
|
|
11
|
+
Rest: client$2.restClientClass({ config }),
|
|
12
12
|
Graphql: client$1.graphqlClientClass({ config }),
|
|
13
|
-
Storefront: client
|
|
13
|
+
Storefront: client.storefrontClientClass({ config }),
|
|
14
14
|
graphqlProxy: graphql_proxy.graphqlProxy(config),
|
|
15
15
|
};
|
|
16
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../lib/clients/index.ts"],"sourcesContent":[null],"names":["restClientClass","graphqlClientClass","storefrontClientClass","graphqlProxy"],"mappings":";;;;;;;AASM,SAAU,aAAa,CAAC,MAAuB,EAAA;IACnD,OAAO;;AAEL,QAAA,IAAI,EAAEA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../../lib/clients/index.ts"],"sourcesContent":[null],"names":["restClientClass","graphqlClientClass","storefrontClientClass","graphqlProxy"],"mappings":";;;;;;;AASM,SAAU,aAAa,CAAC,MAAuB,EAAA;IACnD,OAAO;;AAEL,QAAA,IAAI,EAAEA,wBAAe,CAAC,EAAC,MAAM,EAAC,CAAC;AAC/B,QAAA,OAAO,EAAEC,2BAAkB,CAAC,EAAC,MAAM,EAAC,CAAC;AACrC,QAAA,UAAU,EAAEC,4BAAqB,CAAC,EAAC,MAAM,EAAC,CAAC;AAC3C,QAAA,YAAY,EAAEC,0BAAY,CAAC,MAAM,CAAC;KACnC;AACH;;;;"}
|
package/dist/cjs/lib/index.js
CHANGED
|
@@ -5,16 +5,16 @@ var runtimeString = require('../runtime/platform/runtime-string.js');
|
|
|
5
5
|
var flags = require('../future/flags.js');
|
|
6
6
|
var config = require('./config.js');
|
|
7
7
|
var index$1 = require('./clients/index.js');
|
|
8
|
-
var index$
|
|
9
|
-
var index$
|
|
10
|
-
var index$
|
|
11
|
-
var index$
|
|
12
|
-
var index$
|
|
13
|
-
var index$
|
|
8
|
+
var index$9 = require('./auth/index.js');
|
|
9
|
+
var index$8 = require('./session/index.js');
|
|
10
|
+
var index$7 = require('./utils/index.js');
|
|
11
|
+
var index$6 = require('./webhooks/index.js');
|
|
12
|
+
var index$5 = require('./billing/index.js');
|
|
13
|
+
var index$2 = require('./logger/index.js');
|
|
14
14
|
var version = require('./version.js');
|
|
15
15
|
var client$1 = require('./clients/admin/rest/client.js');
|
|
16
|
-
var index$
|
|
17
|
-
var index$
|
|
16
|
+
var index$4 = require('./flow/index.js');
|
|
17
|
+
var index$3 = require('./fulfillment-service/index.js');
|
|
18
18
|
var error = require('./error.js');
|
|
19
19
|
var session = require('./session/session.js');
|
|
20
20
|
var types = require('./types.js');
|
|
@@ -32,14 +32,14 @@ function shopifyApi({ future, restResources, ...config$1 }) {
|
|
|
32
32
|
const shopify = {
|
|
33
33
|
config: validatedConfig,
|
|
34
34
|
clients: index$1.clientClasses(validatedConfig),
|
|
35
|
-
auth: index$
|
|
36
|
-
session: index$
|
|
37
|
-
utils: index$
|
|
38
|
-
webhooks: index$
|
|
39
|
-
billing: index$
|
|
40
|
-
flow: index$
|
|
41
|
-
fulfillmentService: index$
|
|
42
|
-
logger: index$
|
|
35
|
+
auth: index$9.shopifyAuth(validatedConfig),
|
|
36
|
+
session: index$8.shopifySession(validatedConfig),
|
|
37
|
+
utils: index$7.shopifyUtils(validatedConfig),
|
|
38
|
+
webhooks: index$6.shopifyWebhooks(validatedConfig),
|
|
39
|
+
billing: index$5.shopifyBilling(validatedConfig),
|
|
40
|
+
flow: index$4.shopifyFlow(validatedConfig),
|
|
41
|
+
fulfillmentService: index$3.fulfillmentService(validatedConfig),
|
|
42
|
+
logger: index$2.logger(validatedConfig),
|
|
43
43
|
rest: {},
|
|
44
44
|
};
|
|
45
45
|
if (restResources) {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index
|
|
3
|
+
var index = require('../logger/index.js');
|
|
4
4
|
var types = require('../types.js');
|
|
5
|
-
var index = require('../../runtime/http/index.js');
|
|
5
|
+
var index$1 = require('../../runtime/http/index.js');
|
|
6
6
|
require('../../runtime/crypto/types.js');
|
|
7
7
|
require('../../runtime/crypto/crypto.js');
|
|
8
8
|
|
|
9
9
|
function fetchRequestFactory(config) {
|
|
10
10
|
return async function fetchRequest(url, options) {
|
|
11
|
-
const log = index
|
|
11
|
+
const log = index.logger(config);
|
|
12
12
|
const doLog = config.logger.httpRequests && config.logger.level === types.LogSeverity.Debug;
|
|
13
13
|
if (doLog) {
|
|
14
14
|
log.debug('Making HTTP request', {
|
|
@@ -17,7 +17,7 @@ function fetchRequestFactory(config) {
|
|
|
17
17
|
...(options?.body && { body: options?.body }),
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
const response = await index.abstractFetch(url, options);
|
|
20
|
+
const response = await index$1.abstractFetch(url, options);
|
|
21
21
|
if (doLog) {
|
|
22
22
|
log.debug('HTTP request completed', {
|
|
23
23
|
method: options?.method || 'GET',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-request.js","sources":["../../../../../../lib/utils/fetch-request.ts"],"sourcesContent":[null],"names":["logger","LogSeverity","abstractFetch"],"mappings":";;;;;;;;AAKM,SAAU,mBAAmB,CAAC,MAAuB,EAAA;AACzD,IAAA,OAAO,eAAe,YAAY,CAChC,GAAW,EACX,OAAqB,EAAA;AAErB,QAAA,MAAM,GAAG,GAAGA,
|
|
1
|
+
{"version":3,"file":"fetch-request.js","sources":["../../../../../../lib/utils/fetch-request.ts"],"sourcesContent":[null],"names":["logger","LogSeverity","abstractFetch"],"mappings":";;;;;;;;AAKM,SAAU,mBAAmB,CAAC,MAAuB,EAAA;AACzD,IAAA,OAAO,eAAe,YAAY,CAChC,GAAW,EACX,OAAqB,EAAA;AAErB,QAAA,MAAM,GAAG,GAAGA,YAAM,CAAC,MAAM,CAAC;AAC1B,QAAA,MAAM,KAAK,GACT,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,KAAKC,iBAAW,CAAC,KAAK;QAEzE,IAAI,KAAK,EAAE;AACT,YAAA,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE;AAC/B,gBAAA,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK;gBAChC,GAAG;AACH,gBAAA,IAAI,OAAO,EAAE,IAAI,IAAI,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;AAC5C,aAAA,CAAC;;QAGJ,MAAM,QAAQ,GAAG,MAAMC,qBAAa,CAAC,GAAG,EAAE,OAAO,CAAC;QAElD,IAAI,KAAK,EAAE;AACT,YAAA,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE;AAClC,gBAAA,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK;gBAChC,GAAG;gBACH,MAAM,EAAE,QAAQ,CAAC,MAAM;AACxB,aAAA,CAAC;;AAGJ,QAAA,OAAO,QAAQ;AACjB,KAAC;AACH;;;;"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var index$1 = require('../logger/index.js');
|
|
4
|
-
var types$
|
|
4
|
+
var types$1 = require('../types.js');
|
|
5
5
|
var index = require('../../runtime/http/index.js');
|
|
6
|
-
var types = require('../../runtime/crypto/types.js');
|
|
6
|
+
var types$2 = require('../../runtime/crypto/types.js');
|
|
7
7
|
require('../../runtime/crypto/crypto.js');
|
|
8
8
|
var utils = require('../../runtime/crypto/utils.js');
|
|
9
9
|
var error = require('../error.js');
|
|
10
10
|
var safeCompare = require('../auth/oauth/safe-compare.js');
|
|
11
11
|
var processedQuery = require('./processed-query.js');
|
|
12
|
-
var types
|
|
12
|
+
var types = require('./types.js');
|
|
13
13
|
var headers = require('../../runtime/http/headers.js');
|
|
14
14
|
|
|
15
15
|
const HMAC_TIMESTAMP_PERMITTED_CLOCK_TOLERANCE_SEC = 90;
|
|
@@ -33,7 +33,7 @@ function generateLocalHmac(config) {
|
|
|
33
33
|
const queryString = signator === 'admin'
|
|
34
34
|
? stringifyQueryForAdmin(query)
|
|
35
35
|
: stringifyQueryForAppProxy(query);
|
|
36
|
-
return utils.createSHA256HMAC(config.apiSecretKey, queryString, types.HashFormat.Hex);
|
|
36
|
+
return utils.createSHA256HMAC(config.apiSecretKey, queryString, types$2.HashFormat.Hex);
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
function validateHmac(config) {
|
|
@@ -61,15 +61,15 @@ function validateHmacFromRequestFactory(config) {
|
|
|
61
61
|
return async function validateHmacFromRequest({ type, rawBody, ...adapterArgs }) {
|
|
62
62
|
const request = await index.abstractConvertRequest(adapterArgs);
|
|
63
63
|
if (!rawBody.length) {
|
|
64
|
-
return fail(types
|
|
64
|
+
return fail(types.ValidationErrorReason.MissingBody, type, config);
|
|
65
65
|
}
|
|
66
|
-
const hmac = headers.getHeader(request.headers, types$
|
|
66
|
+
const hmac = headers.getHeader(request.headers, types$1.ShopifyHeader.Hmac);
|
|
67
67
|
if (!hmac) {
|
|
68
|
-
return fail(types
|
|
68
|
+
return fail(types.ValidationErrorReason.MissingHmac, type, config);
|
|
69
69
|
}
|
|
70
|
-
const validHmac = await validateHmacString(config, rawBody, hmac, types.HashFormat.Base64);
|
|
70
|
+
const validHmac = await validateHmacString(config, rawBody, hmac, types$2.HashFormat.Base64);
|
|
71
71
|
if (!validHmac) {
|
|
72
|
-
return fail(types
|
|
72
|
+
return fail(types.ValidationErrorReason.InvalidHmac, type, config);
|
|
73
73
|
}
|
|
74
74
|
return succeed(type, config);
|
|
75
75
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmac-validator.js","sources":["../../../../../../lib/utils/hmac-validator.ts"],"sourcesContent":[null],"names":["processedQuery","ProcessedQuery","createSHA256HMAC","HashFormat","ShopifyErrors.InvalidHmacError","safeCompare","abstractConvertRequest","ValidationErrorReason","getHeader","ShopifyHeader","logger"],"mappings":";;;;;;;;;;;;;;AAuBA,MAAM,4CAA4C,GAAG,EAAE;AAevD,SAAS,sBAAsB,CAAC,KAAgB,EAAA;AAC9C,IAAA,MAAMA,gBAAc,GAAG,IAAIC,sBAAc,EAAE;AAC3C,IAAA,MAAM,CAAC,IAAI,CAAC,KAAK;AACd,SAAA,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAC7C,SAAA,OAAO,CAAC,CAAC,GAAW,KAAKD,gBAAc,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEhE,IAAA,OAAOA,gBAAc,CAAC,SAAS,CAAC,IAAI,CAAC;AACvC;AAEA,SAAS,yBAAyB,CAAC,KAAgB,EAAA;AACjD,IAAA,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK;AACxB,SAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;SACjD,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;QAC5B,OAAO,CAAA,EAAG,GAAG,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA,CAAE;KACxE,EAAE,EAAE,CAAC;AACV;AAEM,SAAU,iBAAiB,CAAC,MAAuB,EAAA;AACvD,IAAA,OAAO,OACL,MAAiB,EACjB,QAAyB,GAAA,OAAO,KACb;QACnB,MAAM,EAAC,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAC,GAAG,MAAM;AAE1C,QAAA,MAAM,WAAW,GACf,QAAQ,KAAK;AACX,cAAE,sBAAsB,CAAC,KAAK;AAC9B,cAAE,yBAAyB,CAAC,KAAK,CAAC;AAEtC,QAAA,OAAOE,sBAAgB,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,EAAEC,
|
|
1
|
+
{"version":3,"file":"hmac-validator.js","sources":["../../../../../../lib/utils/hmac-validator.ts"],"sourcesContent":[null],"names":["processedQuery","ProcessedQuery","createSHA256HMAC","HashFormat","ShopifyErrors.InvalidHmacError","safeCompare","abstractConvertRequest","ValidationErrorReason","getHeader","ShopifyHeader","logger"],"mappings":"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"}
|