@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.
Files changed (143) hide show
  1. package/.eslintrc.js +10 -0
  2. package/CHANGELOG.md +35 -0
  3. package/LICENSE +14 -0
  4. package/README.md +327 -0
  5. package/auth/index.d.ts +220 -0
  6. package/auth/index.js +472 -0
  7. package/auth/storage.d.ts +48 -0
  8. package/auth/storage.js +122 -0
  9. package/components/ShopperExperience/Component/index.d.ts +17 -0
  10. package/components/ShopperExperience/Component/index.js +49 -0
  11. package/components/ShopperExperience/Page/index.d.ts +28 -0
  12. package/components/ShopperExperience/Page/index.js +97 -0
  13. package/components/ShopperExperience/Region/index.d.ts +41 -0
  14. package/components/ShopperExperience/Region/index.js +64 -0
  15. package/components/ShopperExperience/index.d.ts +5 -0
  16. package/components/ShopperExperience/index.js +49 -0
  17. package/components/ShopperExperience/prop-types.d.ts +39 -0
  18. package/components/ShopperExperience/prop-types.js +46 -0
  19. package/components/ShopperExperience/types.d.ts +8 -0
  20. package/components/ShopperExperience/types.js +5 -0
  21. package/components/index.d.ts +2 -0
  22. package/components/index.js +16 -0
  23. package/hooks/ShopperBaskets/cache.d.ts +5 -0
  24. package/hooks/ShopperBaskets/cache.js +351 -0
  25. package/hooks/ShopperBaskets/index.d.ts +3 -0
  26. package/hooks/ShopperBaskets/index.js +27 -0
  27. package/hooks/ShopperBaskets/mutation.d.ts +381 -0
  28. package/hooks/ShopperBaskets/mutation.js +380 -0
  29. package/hooks/ShopperBaskets/query.d.ts +55 -0
  30. package/hooks/ShopperBaskets/query.js +215 -0
  31. package/hooks/ShopperBaskets/queryKeyHelpers.d.ts +72 -0
  32. package/hooks/ShopperBaskets/queryKeyHelpers.js +49 -0
  33. package/hooks/ShopperContexts/cache.d.ts +5 -0
  34. package/hooks/ShopperContexts/cache.js +45 -0
  35. package/hooks/ShopperContexts/index.d.ts +3 -0
  36. package/hooks/ShopperContexts/index.js +27 -0
  37. package/hooks/ShopperContexts/mutation.d.ts +35 -0
  38. package/hooks/ShopperContexts/mutation.js +68 -0
  39. package/hooks/ShopperContexts/query.d.ts +15 -0
  40. package/hooks/ShopperContexts/query.js +59 -0
  41. package/hooks/ShopperContexts/queryKeyHelpers.d.ts +30 -0
  42. package/hooks/ShopperContexts/queryKeyHelpers.js +25 -0
  43. package/hooks/ShopperCustomers/cache.d.ts +5 -0
  44. package/hooks/ShopperCustomers/cache.js +387 -0
  45. package/hooks/ShopperCustomers/index.d.ts +3 -0
  46. package/hooks/ShopperCustomers/index.js +27 -0
  47. package/hooks/ShopperCustomers/mutation.d.ts +163 -0
  48. package/hooks/ShopperCustomers/mutation.js +203 -0
  49. package/hooks/ShopperCustomers/query.d.ts +115 -0
  50. package/hooks/ShopperCustomers/query.js +489 -0
  51. package/hooks/ShopperCustomers/queryKeyHelpers.d.ts +142 -0
  52. package/hooks/ShopperCustomers/queryKeyHelpers.js +91 -0
  53. package/hooks/ShopperExperience/index.d.ts +2 -0
  54. package/hooks/ShopperExperience/index.js +16 -0
  55. package/hooks/ShopperExperience/query.d.ts +31 -0
  56. package/hooks/ShopperExperience/query.js +104 -0
  57. package/hooks/ShopperExperience/queryKeyHelpers.d.ts +38 -0
  58. package/hooks/ShopperExperience/queryKeyHelpers.js +31 -0
  59. package/hooks/ShopperGiftCertificates/index.d.ts +2 -0
  60. package/hooks/ShopperGiftCertificates/index.js +16 -0
  61. package/hooks/ShopperGiftCertificates/query.d.ts +15 -0
  62. package/hooks/ShopperGiftCertificates/query.js +70 -0
  63. package/hooks/ShopperGiftCertificates/queryKeyHelpers.d.ts +29 -0
  64. package/hooks/ShopperGiftCertificates/queryKeyHelpers.js +25 -0
  65. package/hooks/ShopperLogin/cache.d.ts +3 -0
  66. package/hooks/ShopperLogin/cache.js +33 -0
  67. package/hooks/ShopperLogin/index.d.ts +3 -0
  68. package/hooks/ShopperLogin/index.js +27 -0
  69. package/hooks/ShopperLogin/mutation.d.ts +119 -0
  70. package/hooks/ShopperLogin/mutation.js +138 -0
  71. package/hooks/ShopperLogin/query.d.ts +45 -0
  72. package/hooks/ShopperLogin/query.js +176 -0
  73. package/hooks/ShopperLogin/queryKeyHelpers.d.ts +53 -0
  74. package/hooks/ShopperLogin/queryKeyHelpers.js +43 -0
  75. package/hooks/ShopperOrders/cache.d.ts +5 -0
  76. package/hooks/ShopperOrders/cache.js +54 -0
  77. package/hooks/ShopperOrders/index.d.ts +3 -0
  78. package/hooks/ShopperOrders/index.js +27 -0
  79. package/hooks/ShopperOrders/mutation.d.ts +54 -0
  80. package/hooks/ShopperOrders/mutation.js +83 -0
  81. package/hooks/ShopperOrders/query.d.ts +37 -0
  82. package/hooks/ShopperOrders/query.js +139 -0
  83. package/hooks/ShopperOrders/queryKeyHelpers.d.ts +50 -0
  84. package/hooks/ShopperOrders/queryKeyHelpers.js +37 -0
  85. package/hooks/ShopperProducts/index.d.ts +2 -0
  86. package/hooks/ShopperProducts/index.js +16 -0
  87. package/hooks/ShopperProducts/query.d.ts +47 -0
  88. package/hooks/ShopperProducts/query.js +178 -0
  89. package/hooks/ShopperProducts/queryKeyHelpers.d.ts +55 -0
  90. package/hooks/ShopperProducts/queryKeyHelpers.js +43 -0
  91. package/hooks/ShopperPromotions/index.d.ts +2 -0
  92. package/hooks/ShopperPromotions/index.js +16 -0
  93. package/hooks/ShopperPromotions/query.d.ts +29 -0
  94. package/hooks/ShopperPromotions/query.js +102 -0
  95. package/hooks/ShopperPromotions/queryKeyHelpers.d.ts +38 -0
  96. package/hooks/ShopperPromotions/queryKeyHelpers.js +31 -0
  97. package/hooks/ShopperSearch/index.d.ts +2 -0
  98. package/hooks/ShopperSearch/index.js +16 -0
  99. package/hooks/ShopperSearch/query.d.ts +26 -0
  100. package/hooks/ShopperSearch/query.js +99 -0
  101. package/hooks/ShopperSearch/queryKeyHelpers.d.ts +37 -0
  102. package/hooks/ShopperSearch/queryKeyHelpers.js +31 -0
  103. package/hooks/index.d.ts +18 -0
  104. package/hooks/index.js +188 -0
  105. package/hooks/types.d.ts +128 -0
  106. package/hooks/types.js +5 -0
  107. package/hooks/useAccessToken.d.ts +11 -0
  108. package/hooks/useAccessToken.js +43 -0
  109. package/hooks/useAuthContext.d.ts +9 -0
  110. package/hooks/useAuthContext.js +30 -0
  111. package/hooks/useAuthHelper.d.ts +23 -0
  112. package/hooks/useAuthHelper.js +66 -0
  113. package/hooks/useAuthorizationHeader.d.ts +9 -0
  114. package/hooks/useAuthorizationHeader.js +45 -0
  115. package/hooks/useCommerceApi.d.ts +9 -0
  116. package/hooks/useCommerceApi.js +26 -0
  117. package/hooks/useConfig.d.ts +7 -0
  118. package/hooks/useConfig.js +24 -0
  119. package/hooks/useCustomerId.d.ts +7 -0
  120. package/hooks/useCustomerId.js +38 -0
  121. package/hooks/useCustomerType.d.ts +21 -0
  122. package/hooks/useCustomerType.js +43 -0
  123. package/hooks/useEncUserId.d.ts +9 -0
  124. package/hooks/useEncUserId.js +36 -0
  125. package/hooks/useLocalStorage.d.ts +8 -0
  126. package/hooks/useLocalStorage.js +40 -0
  127. package/hooks/useMutation.d.ts +12 -0
  128. package/hooks/useMutation.js +38 -0
  129. package/hooks/useQuery.d.ts +15 -0
  130. package/hooks/useQuery.js +57 -0
  131. package/hooks/useUsid.d.ts +7 -0
  132. package/hooks/useUsid.js +34 -0
  133. package/hooks/utils.d.ts +32 -0
  134. package/hooks/utils.js +125 -0
  135. package/index.d.ts +5 -0
  136. package/index.js +40 -0
  137. package/package.json +88 -0
  138. package/provider.d.ts +36 -0
  139. package/provider.js +124 -0
  140. package/scripts/build-and-release-docs.js +48 -0
  141. package/scripts/version.js +22 -0
  142. package/utils.d.ts +5 -0
  143. 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
@@ -0,0 +1,5 @@
1
+ import CommerceApiProvider from './provider';
2
+ export * from './hooks/types';
3
+ export * from './hooks';
4
+ export { CommerceApiProvider };
5
+ //# sourceMappingURL=index.d.ts.map
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
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Utility to determine if you are on the browser (client) or not.
3
+ */
4
+ export declare const onClient: () => boolean;
5
+ //# sourceMappingURL=utils.d.ts.map
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;