@salesforce/commerce-sdk-react 1.0.0-preview.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/.eslintrc.js +10 -0
- package/CHANGELOG.md +35 -0
- package/LICENSE +14 -0
- package/README.md +327 -0
- package/auth/index.d.ts +220 -0
- package/auth/index.js +472 -0
- package/auth/storage.d.ts +48 -0
- package/auth/storage.js +122 -0
- package/components/ShopperExperience/Component/index.d.ts +17 -0
- package/components/ShopperExperience/Component/index.js +49 -0
- package/components/ShopperExperience/Page/index.d.ts +28 -0
- package/components/ShopperExperience/Page/index.js +97 -0
- package/components/ShopperExperience/Region/index.d.ts +41 -0
- package/components/ShopperExperience/Region/index.js +64 -0
- package/components/ShopperExperience/index.d.ts +5 -0
- package/components/ShopperExperience/index.js +49 -0
- package/components/ShopperExperience/prop-types.d.ts +39 -0
- package/components/ShopperExperience/prop-types.js +46 -0
- package/components/ShopperExperience/types.d.ts +8 -0
- package/components/ShopperExperience/types.js +5 -0
- package/components/index.d.ts +2 -0
- package/components/index.js +16 -0
- package/hooks/ShopperBaskets/cache.d.ts +5 -0
- package/hooks/ShopperBaskets/cache.js +351 -0
- package/hooks/ShopperBaskets/index.d.ts +3 -0
- package/hooks/ShopperBaskets/index.js +27 -0
- package/hooks/ShopperBaskets/mutation.d.ts +381 -0
- package/hooks/ShopperBaskets/mutation.js +380 -0
- package/hooks/ShopperBaskets/query.d.ts +55 -0
- package/hooks/ShopperBaskets/query.js +215 -0
- package/hooks/ShopperBaskets/queryKeyHelpers.d.ts +72 -0
- package/hooks/ShopperBaskets/queryKeyHelpers.js +49 -0
- package/hooks/ShopperContexts/cache.d.ts +5 -0
- package/hooks/ShopperContexts/cache.js +45 -0
- package/hooks/ShopperContexts/index.d.ts +3 -0
- package/hooks/ShopperContexts/index.js +27 -0
- package/hooks/ShopperContexts/mutation.d.ts +35 -0
- package/hooks/ShopperContexts/mutation.js +68 -0
- package/hooks/ShopperContexts/query.d.ts +15 -0
- package/hooks/ShopperContexts/query.js +59 -0
- package/hooks/ShopperContexts/queryKeyHelpers.d.ts +30 -0
- package/hooks/ShopperContexts/queryKeyHelpers.js +25 -0
- package/hooks/ShopperCustomers/cache.d.ts +5 -0
- package/hooks/ShopperCustomers/cache.js +387 -0
- package/hooks/ShopperCustomers/index.d.ts +3 -0
- package/hooks/ShopperCustomers/index.js +27 -0
- package/hooks/ShopperCustomers/mutation.d.ts +163 -0
- package/hooks/ShopperCustomers/mutation.js +203 -0
- package/hooks/ShopperCustomers/query.d.ts +115 -0
- package/hooks/ShopperCustomers/query.js +489 -0
- package/hooks/ShopperCustomers/queryKeyHelpers.d.ts +142 -0
- package/hooks/ShopperCustomers/queryKeyHelpers.js +91 -0
- package/hooks/ShopperExperience/index.d.ts +2 -0
- package/hooks/ShopperExperience/index.js +16 -0
- package/hooks/ShopperExperience/query.d.ts +31 -0
- package/hooks/ShopperExperience/query.js +104 -0
- package/hooks/ShopperExperience/queryKeyHelpers.d.ts +38 -0
- package/hooks/ShopperExperience/queryKeyHelpers.js +31 -0
- package/hooks/ShopperGiftCertificates/index.d.ts +2 -0
- package/hooks/ShopperGiftCertificates/index.js +16 -0
- package/hooks/ShopperGiftCertificates/query.d.ts +15 -0
- package/hooks/ShopperGiftCertificates/query.js +70 -0
- package/hooks/ShopperGiftCertificates/queryKeyHelpers.d.ts +29 -0
- package/hooks/ShopperGiftCertificates/queryKeyHelpers.js +25 -0
- package/hooks/ShopperLogin/cache.d.ts +3 -0
- package/hooks/ShopperLogin/cache.js +33 -0
- package/hooks/ShopperLogin/index.d.ts +3 -0
- package/hooks/ShopperLogin/index.js +27 -0
- package/hooks/ShopperLogin/mutation.d.ts +119 -0
- package/hooks/ShopperLogin/mutation.js +138 -0
- package/hooks/ShopperLogin/query.d.ts +45 -0
- package/hooks/ShopperLogin/query.js +176 -0
- package/hooks/ShopperLogin/queryKeyHelpers.d.ts +53 -0
- package/hooks/ShopperLogin/queryKeyHelpers.js +43 -0
- package/hooks/ShopperOrders/cache.d.ts +5 -0
- package/hooks/ShopperOrders/cache.js +54 -0
- package/hooks/ShopperOrders/index.d.ts +3 -0
- package/hooks/ShopperOrders/index.js +27 -0
- package/hooks/ShopperOrders/mutation.d.ts +54 -0
- package/hooks/ShopperOrders/mutation.js +83 -0
- package/hooks/ShopperOrders/query.d.ts +37 -0
- package/hooks/ShopperOrders/query.js +139 -0
- package/hooks/ShopperOrders/queryKeyHelpers.d.ts +50 -0
- package/hooks/ShopperOrders/queryKeyHelpers.js +37 -0
- package/hooks/ShopperProducts/index.d.ts +2 -0
- package/hooks/ShopperProducts/index.js +16 -0
- package/hooks/ShopperProducts/query.d.ts +47 -0
- package/hooks/ShopperProducts/query.js +178 -0
- package/hooks/ShopperProducts/queryKeyHelpers.d.ts +55 -0
- package/hooks/ShopperProducts/queryKeyHelpers.js +43 -0
- package/hooks/ShopperPromotions/index.d.ts +2 -0
- package/hooks/ShopperPromotions/index.js +16 -0
- package/hooks/ShopperPromotions/query.d.ts +29 -0
- package/hooks/ShopperPromotions/query.js +102 -0
- package/hooks/ShopperPromotions/queryKeyHelpers.d.ts +38 -0
- package/hooks/ShopperPromotions/queryKeyHelpers.js +31 -0
- package/hooks/ShopperSearch/index.d.ts +2 -0
- package/hooks/ShopperSearch/index.js +16 -0
- package/hooks/ShopperSearch/query.d.ts +26 -0
- package/hooks/ShopperSearch/query.js +99 -0
- package/hooks/ShopperSearch/queryKeyHelpers.d.ts +37 -0
- package/hooks/ShopperSearch/queryKeyHelpers.js +31 -0
- package/hooks/index.d.ts +18 -0
- package/hooks/index.js +188 -0
- package/hooks/types.d.ts +128 -0
- package/hooks/types.js +5 -0
- package/hooks/useAccessToken.d.ts +11 -0
- package/hooks/useAccessToken.js +43 -0
- package/hooks/useAuthContext.d.ts +9 -0
- package/hooks/useAuthContext.js +30 -0
- package/hooks/useAuthHelper.d.ts +23 -0
- package/hooks/useAuthHelper.js +66 -0
- package/hooks/useAuthorizationHeader.d.ts +9 -0
- package/hooks/useAuthorizationHeader.js +45 -0
- package/hooks/useCommerceApi.d.ts +9 -0
- package/hooks/useCommerceApi.js +26 -0
- package/hooks/useConfig.d.ts +7 -0
- package/hooks/useConfig.js +24 -0
- package/hooks/useCustomerId.d.ts +7 -0
- package/hooks/useCustomerId.js +38 -0
- package/hooks/useCustomerType.d.ts +21 -0
- package/hooks/useCustomerType.js +43 -0
- package/hooks/useEncUserId.d.ts +9 -0
- package/hooks/useEncUserId.js +36 -0
- package/hooks/useLocalStorage.d.ts +8 -0
- package/hooks/useLocalStorage.js +40 -0
- package/hooks/useMutation.d.ts +12 -0
- package/hooks/useMutation.js +38 -0
- package/hooks/useQuery.d.ts +15 -0
- package/hooks/useQuery.js +57 -0
- package/hooks/useUsid.d.ts +7 -0
- package/hooks/useUsid.js +34 -0
- package/hooks/utils.d.ts +32 -0
- package/hooks/utils.js +125 -0
- package/index.d.ts +5 -0
- package/index.js +40 -0
- package/package.json +88 -0
- package/provider.d.ts +36 -0
- package/provider.js +124 -0
- package/scripts/build-and-release-docs.js +48 -0
- package/scripts/version.js +22 -0
- package/utils.d.ts +5 -0
- package/utils.js +18 -0
package/hooks/utils.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.updateCache = exports.pick = exports.pathStartsWith = exports.omitNullableParameters = exports.omitNullable = exports.mergeOptions = exports.isObject = exports.hasAllKeys = exports.clone = exports.and = exports.NotImplementedError = void 0;
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
11
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
12
|
+
/*
|
|
13
|
+
* Copyright (c) 2023, Salesforce, Inc.
|
|
14
|
+
* All rights reserved.
|
|
15
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
16
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** Applies the set of cache updates to the query client. */
|
|
20
|
+
const updateCache = (queryClient, cacheUpdates, data) => {
|
|
21
|
+
var _cacheUpdates$invalid, _cacheUpdates$remove, _cacheUpdates$update;
|
|
22
|
+
(_cacheUpdates$invalid = cacheUpdates.invalidate) === null || _cacheUpdates$invalid === void 0 ? void 0 : _cacheUpdates$invalid.forEach(invalidate => {
|
|
23
|
+
// TODO: Fix floating promises (convert updateCache to async)
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
25
|
+
queryClient.invalidateQueries(invalidate);
|
|
26
|
+
});
|
|
27
|
+
(_cacheUpdates$remove = cacheUpdates.remove) === null || _cacheUpdates$remove === void 0 ? void 0 : _cacheUpdates$remove.forEach(remove => {
|
|
28
|
+
queryClient.removeQueries(remove);
|
|
29
|
+
});
|
|
30
|
+
(_cacheUpdates$update = cacheUpdates.update) === null || _cacheUpdates$update === void 0 ? void 0 : _cacheUpdates$update.forEach(({
|
|
31
|
+
queryKey,
|
|
32
|
+
updater
|
|
33
|
+
}) =>
|
|
34
|
+
// If an updater isn't given, fall back to just setting the data
|
|
35
|
+
queryClient.setQueryData(queryKey, updater ?? data));
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/** Error thrown when a method is not implemented. */
|
|
39
|
+
exports.updateCache = updateCache;
|
|
40
|
+
class NotImplementedError extends Error {
|
|
41
|
+
constructor(method = 'This method') {
|
|
42
|
+
super(`${method} is not implemented.`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Determines whether a value is an object. */
|
|
47
|
+
exports.NotImplementedError = NotImplementedError;
|
|
48
|
+
const isObject = obj => typeof obj === 'object' && obj !== null;
|
|
49
|
+
|
|
50
|
+
/** Determines whether a value has all of the given keys. */
|
|
51
|
+
exports.isObject = isObject;
|
|
52
|
+
const hasAllKeys = (object, keys) => keys.every(key => object[key] !== undefined && object[key] !== null);
|
|
53
|
+
|
|
54
|
+
/** Creates a query predicate that determines whether a query key starts with the given path segments. */
|
|
55
|
+
exports.hasAllKeys = hasAllKeys;
|
|
56
|
+
const pathStartsWith = search => ({
|
|
57
|
+
queryKey
|
|
58
|
+
}) => queryKey.length >= search.length && search.every((lookup, idx) => queryKey[idx] === lookup);
|
|
59
|
+
|
|
60
|
+
/** Creates a query predicate that returns true if all of the given predicates return true. */
|
|
61
|
+
exports.pathStartsWith = pathStartsWith;
|
|
62
|
+
const and = (...funcs) => (...args) => funcs.every(fn => fn(...args));
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Merges headers and parameters from client config into the options, mimicking the behavior
|
|
66
|
+
* of commerce-sdk-isomorphic.
|
|
67
|
+
*/
|
|
68
|
+
exports.and = and;
|
|
69
|
+
const mergeOptions = (client, options) => {
|
|
70
|
+
const merged = _objectSpread(_objectSpread({}, 'body' in options ?
|
|
71
|
+
// I'm not entirely sure why these type assertions are necessary. It seems likely that
|
|
72
|
+
// the type definitions are more complex than they need to be.
|
|
73
|
+
{
|
|
74
|
+
body: options.body
|
|
75
|
+
} : {}), {}, {
|
|
76
|
+
parameters: _objectSpread(_objectSpread({}, client.clientConfig.parameters), options.parameters ? omitNullable(options.parameters) : {}),
|
|
77
|
+
headers: _objectSpread(_objectSpread({}, client.clientConfig.parameters), options.parameters)
|
|
78
|
+
});
|
|
79
|
+
return merged;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/** Constructs a subset of the given object containing only the given keys. */
|
|
83
|
+
exports.mergeOptions = mergeOptions;
|
|
84
|
+
const pick = (obj, keys) => {
|
|
85
|
+
// Assertion is not true, yet, but we make it so!
|
|
86
|
+
const picked = {};
|
|
87
|
+
keys.forEach(key => {
|
|
88
|
+
if (key in obj) {
|
|
89
|
+
// Skip assigning optional/missing parameters
|
|
90
|
+
picked[key] = obj[key];
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return picked;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/** Removes keys with `null` or `undefined` values from the given object. */
|
|
97
|
+
exports.pick = pick;
|
|
98
|
+
const omitNullable = obj => {
|
|
99
|
+
// Assertion is not true, yet, but we make it so!
|
|
100
|
+
const stripped = {};
|
|
101
|
+
// Assertion because `Object.entries` is limited :\
|
|
102
|
+
const entries = Object.entries(obj);
|
|
103
|
+
for (const [key, value] of entries) {
|
|
104
|
+
if (value !== null && value !== undefined) stripped[key] = value;
|
|
105
|
+
}
|
|
106
|
+
return stripped;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/** Removes keys with `null` or `undefined` values from the `parameters` of the given object. */
|
|
110
|
+
exports.omitNullable = omitNullable;
|
|
111
|
+
const omitNullableParameters = obj => _objectSpread(_objectSpread({}, obj), {}, {
|
|
112
|
+
// Without the explicit generic parameter, the generic is inferred as `object`,
|
|
113
|
+
// the connection to `T` is lost, and TypeScript complains.
|
|
114
|
+
parameters: omitNullable(obj.parameters)
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
/** Simple deep clone utility */
|
|
118
|
+
exports.omitNullableParameters = omitNullableParameters;
|
|
119
|
+
const clone = val => {
|
|
120
|
+
if (typeof val !== 'object' || val === null) return val;
|
|
121
|
+
if (Array.isArray(val)) return val.map(clone);
|
|
122
|
+
const entries = Object.entries(val).map(([k, v]) => [k, clone(v)]);
|
|
123
|
+
return Object.fromEntries(entries);
|
|
124
|
+
};
|
|
125
|
+
exports.clone = clone;
|
package/index.d.ts
ADDED
package/index.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
CommerceApiProvider: true
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "CommerceApiProvider", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return _provider.default;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
var _provider = _interopRequireDefault(require("./provider"));
|
|
16
|
+
var _types = require("./hooks/types");
|
|
17
|
+
Object.keys(_types).forEach(function (key) {
|
|
18
|
+
if (key === "default" || key === "__esModule") return;
|
|
19
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
20
|
+
if (key in exports && exports[key] === _types[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _types[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
var _hooks = require("./hooks");
|
|
29
|
+
Object.keys(_hooks).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
32
|
+
if (key in exports && exports[key] === _hooks[key]) return;
|
|
33
|
+
Object.defineProperty(exports, key, {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
get: function () {
|
|
36
|
+
return _hooks[key];
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
package/package.json
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@salesforce/commerce-sdk-react",
|
|
3
|
+
"version": "1.0.0-preview.0",
|
|
4
|
+
"description": "A library that provides react hooks for fetching data from Commerce Cloud",
|
|
5
|
+
"homepage": "https://github.com/SalesforceCommerceCloud/pwa-kit/tree/develop/packages/ecom-react-hooks#readme",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/SalesforceCommerceCloud/pwa-kit/issues"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/SalesforceCommerceCloud/pwa-kit.git"
|
|
12
|
+
},
|
|
13
|
+
"license": "See license in LICENSE",
|
|
14
|
+
"author": "cc-pwa-kit@salesforce.com",
|
|
15
|
+
"main": "dist/index.js",
|
|
16
|
+
"types": "dist/index.d.ts",
|
|
17
|
+
"files": [
|
|
18
|
+
"CHANGELOG.md",
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"+(auth|components|hooks|scripts)/**/!(*.test*).{ts,js}",
|
|
21
|
+
"*.{js,d.ts}",
|
|
22
|
+
"!*.test*.{js,d.ts}",
|
|
23
|
+
"!test*.*",
|
|
24
|
+
"!+(jest|babel).config.js",
|
|
25
|
+
"!setup-jest.js"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "cross-env NODE_ENV=production internal-lib-build build && tsc --emitDeclarationOnly",
|
|
29
|
+
"build:docs": "typedoc",
|
|
30
|
+
"build:watch": "nodemon --watch 'src/**' --ext 'tsx,ts' --exec 'npm run build'",
|
|
31
|
+
"format": "internal-lib-build format \"**/*.{js,jsx,ts,tsx}\"",
|
|
32
|
+
"lint": "npm run lint:js && tsc --noEmit",
|
|
33
|
+
"lint:fix": "npm run lint:js -- --fix",
|
|
34
|
+
"lint:js": "pwa-kit-dev lint \"**/*.{js,jsx,ts,tsx}\"",
|
|
35
|
+
"prepare": "npm run build",
|
|
36
|
+
"test": "internal-lib-build test",
|
|
37
|
+
"test:inspect": "node --inspect-brk jest --runInBand",
|
|
38
|
+
"test:watch": "npm test -- --watch",
|
|
39
|
+
"typecheck": "tsc --noEmit",
|
|
40
|
+
"version": "node ./scripts/version.js"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"commerce-sdk-isomorphic": "^1.10.1",
|
|
44
|
+
"js-cookie": "^3.0.1",
|
|
45
|
+
"jwt-decode": "^3.1.2"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@salesforce/pwa-kit-dev": "3.0.0-preview.0",
|
|
49
|
+
"@tanstack/react-query": "^4.28.0",
|
|
50
|
+
"@testing-library/jest-dom": "^5.16.5",
|
|
51
|
+
"@testing-library/react": "^14.0.0",
|
|
52
|
+
"@types/js-cookie": "^3.0.3",
|
|
53
|
+
"@types/jsonwebtoken": "^8.5.9",
|
|
54
|
+
"@types/jwt-decode": "^3.1.0",
|
|
55
|
+
"@types/node": "^14.18.40",
|
|
56
|
+
"@types/react": "^18.2.0",
|
|
57
|
+
"@types/react-dom": "^18.2.1",
|
|
58
|
+
"@types/react-helmet": "^6.1.6",
|
|
59
|
+
"cross-env": "^5.2.1",
|
|
60
|
+
"internal-lib-build": "3.0.0-preview.0",
|
|
61
|
+
"jsonwebtoken": "^8.5.1",
|
|
62
|
+
"nock": "^13.3.0",
|
|
63
|
+
"nodemon": "^2.0.22",
|
|
64
|
+
"react": "^18.2.0",
|
|
65
|
+
"react-dom": "^18.2.0",
|
|
66
|
+
"react-helmet": "^6.1.0",
|
|
67
|
+
"semver": "^7.3.8",
|
|
68
|
+
"shelljs": "^0.8.5",
|
|
69
|
+
"typedoc": "^0.23.28",
|
|
70
|
+
"typescript": "4.8.3"
|
|
71
|
+
},
|
|
72
|
+
"peerDependencies": {
|
|
73
|
+
"@tanstack/react-query": "^4",
|
|
74
|
+
"react": "^18",
|
|
75
|
+
"react-helmet": "6"
|
|
76
|
+
},
|
|
77
|
+
"optionalDependencies": {
|
|
78
|
+
"prop-types": "^15.8.1"
|
|
79
|
+
},
|
|
80
|
+
"engines": {
|
|
81
|
+
"node": "^16.11.0 || ^18.0.0",
|
|
82
|
+
"npm": "^8.0.0 || ^9.0.0"
|
|
83
|
+
},
|
|
84
|
+
"publishConfig": {
|
|
85
|
+
"directory": "dist"
|
|
86
|
+
},
|
|
87
|
+
"gitHead": "a9f820893b7714244a0af509a5aefecc1344153c"
|
|
88
|
+
}
|
package/provider.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import React, { ReactElement } from 'react';
|
|
2
|
+
import { ShopperBasketsTypes } from 'commerce-sdk-isomorphic';
|
|
3
|
+
import Auth from './auth';
|
|
4
|
+
import { ApiClientConfigParams, ApiClients } from './hooks/types';
|
|
5
|
+
export interface CommerceApiProviderProps extends ApiClientConfigParams {
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
proxy: string;
|
|
8
|
+
locale: string;
|
|
9
|
+
currency: string;
|
|
10
|
+
redirectURI: string;
|
|
11
|
+
fetchOptions?: ShopperBasketsTypes.FetchOptions;
|
|
12
|
+
headers?: Record<string, string>;
|
|
13
|
+
fetchedToken?: string;
|
|
14
|
+
OCAPISessionsURL?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* @internal
|
|
18
|
+
*/
|
|
19
|
+
export declare const CommerceApiContext: React.Context<ApiClients>;
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
export declare const ConfigContext: React.Context<Omit<CommerceApiProviderProps, "children">>;
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export declare const AuthContext: React.Context<Auth>;
|
|
28
|
+
/**
|
|
29
|
+
* Initialize a set of Commerce API clients and make it available to all of descendant components
|
|
30
|
+
*
|
|
31
|
+
* @param props
|
|
32
|
+
* @returns Provider to wrap your app with
|
|
33
|
+
*/
|
|
34
|
+
declare const CommerceApiProvider: (props: CommerceApiProviderProps) => ReactElement;
|
|
35
|
+
export default CommerceApiProvider;
|
|
36
|
+
//# sourceMappingURL=provider.d.ts.map
|
package/provider.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.ConfigContext = exports.CommerceApiContext = exports.AuthContext = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _commerceSdkIsomorphic = require("commerce-sdk-isomorphic");
|
|
9
|
+
var _auth = _interopRequireDefault(require("./auth"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
/*
|
|
14
|
+
* Copyright (c) 2022, salesforce.com, inc.
|
|
15
|
+
* All rights reserved.
|
|
16
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
17
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
const CommerceApiContext = /*#__PURE__*/_react.default.createContext({});
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
exports.CommerceApiContext = CommerceApiContext;
|
|
29
|
+
const ConfigContext = /*#__PURE__*/_react.default.createContext({});
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
exports.ConfigContext = ConfigContext;
|
|
35
|
+
const AuthContext = /*#__PURE__*/_react.default.createContext({});
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Initialize a set of Commerce API clients and make it available to all of descendant components
|
|
39
|
+
*
|
|
40
|
+
* @param props
|
|
41
|
+
* @returns Provider to wrap your app with
|
|
42
|
+
*/
|
|
43
|
+
exports.AuthContext = AuthContext;
|
|
44
|
+
const CommerceApiProvider = props => {
|
|
45
|
+
const {
|
|
46
|
+
children,
|
|
47
|
+
clientId,
|
|
48
|
+
headers = {},
|
|
49
|
+
organizationId,
|
|
50
|
+
proxy,
|
|
51
|
+
redirectURI,
|
|
52
|
+
fetchOptions,
|
|
53
|
+
siteId,
|
|
54
|
+
shortCode,
|
|
55
|
+
locale,
|
|
56
|
+
currency,
|
|
57
|
+
fetchedToken,
|
|
58
|
+
OCAPISessionsURL
|
|
59
|
+
} = props;
|
|
60
|
+
const config = {
|
|
61
|
+
proxy,
|
|
62
|
+
headers,
|
|
63
|
+
parameters: {
|
|
64
|
+
clientId,
|
|
65
|
+
organizationId,
|
|
66
|
+
shortCode,
|
|
67
|
+
siteId,
|
|
68
|
+
locale,
|
|
69
|
+
currency
|
|
70
|
+
},
|
|
71
|
+
throwOnBadResponse: true,
|
|
72
|
+
fetchOptions
|
|
73
|
+
};
|
|
74
|
+
const apiClients = (0, _react.useMemo)(() => {
|
|
75
|
+
return {
|
|
76
|
+
shopperBaskets: new _commerceSdkIsomorphic.ShopperBaskets(config),
|
|
77
|
+
shopperContexts: new _commerceSdkIsomorphic.ShopperContexts(config),
|
|
78
|
+
shopperCustomers: new _commerceSdkIsomorphic.ShopperCustomers(config),
|
|
79
|
+
shopperExperience: new _commerceSdkIsomorphic.ShopperExperience(config),
|
|
80
|
+
shopperGiftCertificates: new _commerceSdkIsomorphic.ShopperGiftCertificates(config),
|
|
81
|
+
shopperLogin: new _commerceSdkIsomorphic.ShopperLogin(config),
|
|
82
|
+
shopperOrders: new _commerceSdkIsomorphic.ShopperOrders(config),
|
|
83
|
+
shopperProducts: new _commerceSdkIsomorphic.ShopperProducts(config),
|
|
84
|
+
shopperPromotions: new _commerceSdkIsomorphic.ShopperPromotions(config),
|
|
85
|
+
shopperSearch: new _commerceSdkIsomorphic.ShopperSearch(config)
|
|
86
|
+
};
|
|
87
|
+
}, [clientId, organizationId, shortCode, siteId, proxy, fetchOptions, locale, currency, headers === null || headers === void 0 ? void 0 : headers['correlation-id']]);
|
|
88
|
+
const auth = (0, _react.useMemo)(() => {
|
|
89
|
+
return new _auth.default({
|
|
90
|
+
clientId,
|
|
91
|
+
organizationId,
|
|
92
|
+
shortCode,
|
|
93
|
+
siteId,
|
|
94
|
+
proxy,
|
|
95
|
+
redirectURI,
|
|
96
|
+
fetchOptions,
|
|
97
|
+
fetchedToken,
|
|
98
|
+
OCAPISessionsURL
|
|
99
|
+
});
|
|
100
|
+
}, [clientId, organizationId, shortCode, siteId, proxy, redirectURI, fetchOptions, fetchedToken, OCAPISessionsURL]);
|
|
101
|
+
|
|
102
|
+
// Initialize the session
|
|
103
|
+
(0, _react.useEffect)(() => void auth.ready(), [auth]);
|
|
104
|
+
return /*#__PURE__*/_react.default.createElement(ConfigContext.Provider, {
|
|
105
|
+
value: {
|
|
106
|
+
clientId,
|
|
107
|
+
headers,
|
|
108
|
+
organizationId,
|
|
109
|
+
proxy,
|
|
110
|
+
redirectURI,
|
|
111
|
+
fetchOptions,
|
|
112
|
+
siteId,
|
|
113
|
+
shortCode,
|
|
114
|
+
locale,
|
|
115
|
+
currency
|
|
116
|
+
}
|
|
117
|
+
}, /*#__PURE__*/_react.default.createElement(CommerceApiContext.Provider, {
|
|
118
|
+
value: apiClients
|
|
119
|
+
}, /*#__PURE__*/_react.default.createElement(AuthContext.Provider, {
|
|
120
|
+
value: auth
|
|
121
|
+
}, children)));
|
|
122
|
+
};
|
|
123
|
+
var _default = CommerceApiProvider;
|
|
124
|
+
exports.default = _default;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023, Salesforce, Inc.
|
|
3
|
+
* All rights reserved.
|
|
4
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
6
|
+
*/
|
|
7
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
8
|
+
const packageJSON = require('../package.json')
|
|
9
|
+
const sh = require('shelljs')
|
|
10
|
+
const semver = require('semver')
|
|
11
|
+
|
|
12
|
+
// this script is expected to run on release branch.
|
|
13
|
+
const main = () => {
|
|
14
|
+
// get the version number from package json
|
|
15
|
+
const currentVersion = packageJSON.version
|
|
16
|
+
const isPrerelease = semver.prerelease(currentVersion.trim())
|
|
17
|
+
// if it is a pre-release version, do nothing
|
|
18
|
+
if (isPrerelease) {
|
|
19
|
+
return
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let latestVersion
|
|
23
|
+
let isNewPackage
|
|
24
|
+
const {stdout, stderr} = sh.exec(`npm view ${packageJSON.name} version`, {silent: true})
|
|
25
|
+
if (stderr) {
|
|
26
|
+
isNewPackage = stderr.includes(`'${packageJSON.name}' is not in the npm registry`)
|
|
27
|
+
if (!isNewPackage) {
|
|
28
|
+
console.log('stderr', stderr)
|
|
29
|
+
process.exit(0)
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
latestVersion = stdout
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const isLatest = isNewPackage || semver.gt(currentVersion, latestVersion)
|
|
36
|
+
if (isLatest) {
|
|
37
|
+
console.log(`Publish docs for version ${currentVersion} to gh-pages branch`)
|
|
38
|
+
// build the docs
|
|
39
|
+
sh.exec('npm run build:docs')
|
|
40
|
+
|
|
41
|
+
// release the docs
|
|
42
|
+
sh.exec(
|
|
43
|
+
'npx gh-pages --dotfiles --message "[skip ci] Pushing docs to gh-pages" --dist docs'
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
main()
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2023, Salesforce, Inc.
|
|
4
|
+
* All rights reserved.
|
|
5
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
6
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
7
|
+
*/
|
|
8
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
9
|
+
// Update Change Log heading
|
|
10
|
+
const pkg = require('../package.json')
|
|
11
|
+
const path = require('path')
|
|
12
|
+
const os = require('os')
|
|
13
|
+
const fs = require('fs')
|
|
14
|
+
|
|
15
|
+
const date = new Date().toString().split(' ').slice(1, 4)
|
|
16
|
+
const heading = `## v${pkg.version} (${date[0]} ${date[1]}, ${date[2]})\n`
|
|
17
|
+
|
|
18
|
+
const changelog = path.resolve(os.tmpdir(), 'CHANGELOG.md')
|
|
19
|
+
|
|
20
|
+
fs.writeFileSync(changelog, heading, 'utf8')
|
|
21
|
+
fs.appendFileSync(changelog, fs.readFileSync('CHANGELOG.md'), 'utf8')
|
|
22
|
+
fs.copyFileSync(changelog, 'CHANGELOG.md')
|
package/utils.d.ts
ADDED
package/utils.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.onClient = void 0;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright (c) 2023, Salesforce, Inc.
|
|
9
|
+
* All rights reserved.
|
|
10
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
11
|
+
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Utility to determine if you are on the browser (client) or not.
|
|
16
|
+
*/
|
|
17
|
+
const onClient = () => typeof window !== 'undefined';
|
|
18
|
+
exports.onClient = onClient;
|