@imtbl/sdk 0.1.7 → 0.1.8-alpha.1

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.
@@ -10493,6 +10493,7 @@ declare class Passport {
10493
10493
  private readonly magicAdapter;
10494
10494
  private readonly config;
10495
10495
  private readonly immutableXClient;
10496
+ private readonly confirmationScreen;
10496
10497
  constructor(passportModuleConfiguration: PassportModuleConfiguration);
10497
10498
  private getImxProvider;
10498
10499
  connectImxSilent(): Promise<IMXProvider | null>;
package/dist/passport.js CHANGED
@@ -13,24 +13,33 @@ var Environment;
13
13
  })(Environment || (Environment = {}));
14
14
 
15
15
  /**
16
- * Set `sdkVersion` on config
16
+ * createImmutableXConfiguration to create a custom ImmutableXConfiguration
17
+ * other than the production and sandbox defined below.
17
18
  */
18
- const production = () => Config.createConfig({
19
+ const createImmutableXConfiguration = ({ basePath, chainID, coreContractAddress, registrationContractAddress, }) => Config.createConfig({
20
+ basePath,
21
+ chainID,
22
+ coreContractAddress,
23
+ registrationContractAddress,
24
+ sdkVersion: 'ts-immutable-sdk-0.1.8-alpha.1',
25
+ });
26
+ /**
27
+ * Sets `sdkVersion` at the time of build
28
+ */
29
+ const production = () => createImmutableXConfiguration({
19
30
  basePath: 'https://api.x.immutable.com',
20
31
  chainID: 1,
21
32
  coreContractAddress: '0x5FDCCA53617f4d2b9134B29090C87D01058e27e9',
22
33
  registrationContractAddress: '0x72a06bf2a1CE5e39cBA06c0CAb824960B587d64c',
23
- sdkVersion: 'ts-immutable-sdk-0.0.0',
24
34
  });
25
35
  /**
26
- * Set `sdkVersion` on config
36
+ * Sets `sdkVersion` at the time of build
27
37
  */
28
- const sandbox = () => Config.createConfig({
38
+ const sandbox = () => createImmutableXConfiguration({
29
39
  basePath: 'https://api.sandbox.x.immutable.com',
30
40
  chainID: 5,
31
41
  coreContractAddress: '0x7917eDb51ecD6CdB3F9854c3cc593F33de10c623',
32
42
  registrationContractAddress: '0x1C97Ada273C9A52253f463042f29117090Cd7D83',
33
- sdkVersion: 'ts-immutable-sdk-0.0.0',
34
43
  });
35
44
  class ImxConfiguration {
36
45
  immutableXConfig;
@@ -770,25 +779,13 @@ var SendMessage;
770
779
  })(SendMessage || (SendMessage = {}));
771
780
  var TransactionTypes;
772
781
  (function (TransactionTypes) {
773
- // TODO: remove this once the naming has been fixed
774
- // eslint-disable-next-line @typescript-eslint/naming-convention
775
- TransactionTypes["CancelOrder"] = "delete:v1/orders";
776
- // TODO: remove this once the naming has been fixed
777
- // eslint-disable-next-line @typescript-eslint/naming-convention
778
- TransactionTypes["CreateOrder"] = "post:v1/orders";
779
- // TODO: remove this once the naming has been fixed
780
- // eslint-disable-next-line @typescript-eslint/naming-convention
781
- TransactionTypes["CreateTrade"] = "post:v1/trades";
782
- // TODO: remove this once the naming has been fixed
783
- // eslint-disable-next-line @typescript-eslint/naming-convention
784
- TransactionTypes["CreateTransfer"] = "post:v1/transfers";
785
- // TODO: remove this once the naming has been fixed
786
- // eslint-disable-next-line @typescript-eslint/naming-convention
787
- TransactionTypes["CreateBatchTransfer"] = "post:v2/transfers";
782
+ TransactionTypes["cancelOrder"] = "delete:v1/orders";
783
+ TransactionTypes["createOrder"] = "post:v1/orders";
784
+ TransactionTypes["createTrade"] = "post:v1/trades";
785
+ TransactionTypes["createTransfer"] = "post:v1/transfers";
786
+ TransactionTypes["createBatchTransfer"] = "post:v2/transfers";
788
787
  })(TransactionTypes || (TransactionTypes = {}));
789
- // TODO: remove this once the naming has been fixed
790
- // eslint-disable-next-line @typescript-eslint/naming-convention
791
- const PassportEventType = 'imx_passport_confirmation';
788
+ const PASSPORT_EVENT_TYPE = 'imx_passport_confirmation';
792
789
 
793
790
  const openPopupCenter = ({ url, title, width, height, }) => {
794
791
  const left = Math.max(0, Math.round(window.screenX + (window.outerWidth - width) / 2));
@@ -818,7 +815,7 @@ class ConfirmationScreen {
818
815
  }
819
816
  postMessage(destinationWindow, accessToken, message) {
820
817
  destinationWindow.postMessage({
821
- eventType: PassportEventType,
818
+ eventType: PASSPORT_EVENT_TYPE,
822
819
  accessToken,
823
820
  ...message,
824
821
  }, this.config.passportDomain);
@@ -827,7 +824,7 @@ class ConfirmationScreen {
827
824
  return new Promise((resolve, reject) => {
828
825
  const messageHandler = ({ data, origin }) => {
829
826
  if (origin !== this.config.passportDomain
830
- || data.eventType !== PassportEventType) {
827
+ || data.eventType !== PASSPORT_EVENT_TYPE) {
831
828
  return;
832
829
  }
833
830
  switch (data.messageType) {
@@ -872,59 +869,57 @@ class ConfirmationScreen {
872
869
  }
873
870
 
874
871
  const ERC721$1 = 'ERC721';
875
- const transfer = ({ request, transfersApi, starkSigner, user, passportConfig,
876
- // TODO: remove this eslint disable once we have a better solution
877
- // eslint-disable-next-line max-len
878
- }) => withPassportError(async () => {
879
- const transferAmount = request.type === ERC721$1 ? '1' : request.amount;
880
- const getSignableTransferRequest = {
881
- sender: user.etherKey,
882
- token: convertToSignableToken(request),
883
- amount: transferAmount,
884
- receiver: request.receiver,
885
- };
886
- const signableResult = await transfersApi.getSignableTransferV1({
887
- getSignableTransferRequest,
888
- });
889
- const confirmationScreen = new ConfirmationScreen(passportConfig);
890
- const confirmationResult = await confirmationScreen.startTransaction(user.accessToken, {
891
- transactionType: TransactionTypes.CreateTransfer,
892
- transactionData: getSignableTransferRequest,
893
- });
894
- if (!confirmationResult.confirmed) {
895
- throw new Error('Transaction rejected by user');
896
- }
897
- const signableResultData = signableResult.data;
898
- const { payload_hash: payloadHash } = signableResultData;
899
- const starkSignature = await starkSigner.signMessage(payloadHash);
900
- const senderStarkKey = await starkSigner.getAddress();
901
- const transferSigningParams = {
902
- sender_stark_key: signableResultData.sender_stark_key || senderStarkKey,
903
- sender_vault_id: signableResultData.sender_vault_id,
904
- receiver_stark_key: signableResultData.receiver_stark_key,
905
- receiver_vault_id: signableResultData.receiver_vault_id,
906
- asset_id: signableResultData.asset_id,
907
- amount: signableResultData.amount,
908
- nonce: signableResultData.nonce,
909
- expiration_timestamp: signableResultData.expiration_timestamp,
910
- stark_signature: starkSignature,
911
- };
912
- const createTransferRequest = {
913
- createTransferRequest: transferSigningParams,
914
- };
915
- const headers = {
916
- // eslint-disable-next-line @typescript-eslint/naming-convention
917
- Authorization: `Bearer ${user.accessToken}`,
918
- };
919
- const { data: responseData } = await transfersApi.createTransferV1(createTransferRequest, { headers });
920
- return {
921
- sent_signature: responseData.sent_signature,
922
- status: responseData.status?.toString(),
923
- time: responseData.time,
924
- transfer_id: responseData.transfer_id,
925
- };
926
- }, PassportErrorType.TRANSFER_ERROR);
927
- async function batchNftTransfer({ user, starkSigner, request, transfersApi, passportConfig, }) {
872
+ async function transfer({ request, transfersApi, starkSigner, user, confirmationScreen, }) {
873
+ return withPassportError(async () => {
874
+ const transferAmount = request.type === ERC721$1 ? '1' : request.amount;
875
+ const getSignableTransferRequest = {
876
+ sender: user.etherKey,
877
+ token: convertToSignableToken(request),
878
+ amount: transferAmount,
879
+ receiver: request.receiver,
880
+ };
881
+ const signableResult = await transfersApi.getSignableTransferV1({
882
+ getSignableTransferRequest,
883
+ });
884
+ const confirmationResult = await confirmationScreen.startTransaction(user.accessToken, {
885
+ transactionType: TransactionTypes.createTransfer,
886
+ transactionData: getSignableTransferRequest,
887
+ });
888
+ if (!confirmationResult.confirmed) {
889
+ throw new Error('Transaction rejected by user');
890
+ }
891
+ const signableResultData = signableResult.data;
892
+ const { payload_hash: payloadHash } = signableResultData;
893
+ const starkSignature = await starkSigner.signMessage(payloadHash);
894
+ const senderStarkKey = await starkSigner.getAddress();
895
+ const transferSigningParams = {
896
+ sender_stark_key: signableResultData.sender_stark_key || senderStarkKey,
897
+ sender_vault_id: signableResultData.sender_vault_id,
898
+ receiver_stark_key: signableResultData.receiver_stark_key,
899
+ receiver_vault_id: signableResultData.receiver_vault_id,
900
+ asset_id: signableResultData.asset_id,
901
+ amount: signableResultData.amount,
902
+ nonce: signableResultData.nonce,
903
+ expiration_timestamp: signableResultData.expiration_timestamp,
904
+ stark_signature: starkSignature,
905
+ };
906
+ const createTransferRequest = {
907
+ createTransferRequest: transferSigningParams,
908
+ };
909
+ const headers = {
910
+ // eslint-disable-next-line @typescript-eslint/naming-convention
911
+ Authorization: `Bearer ${user.accessToken}`,
912
+ };
913
+ const { data: responseData } = await transfersApi.createTransferV1(createTransferRequest, { headers });
914
+ return {
915
+ sent_signature: responseData.sent_signature,
916
+ status: responseData.status?.toString(),
917
+ time: responseData.time,
918
+ transfer_id: responseData.transfer_id,
919
+ };
920
+ }, PassportErrorType.TRANSFER_ERROR);
921
+ }
922
+ async function batchNftTransfer({ user, starkSigner, request, transfersApi, confirmationScreen, }) {
928
923
  return withPassportError(async () => {
929
924
  const ethAddress = user.etherKey;
930
925
  const signableRequests = request.map((nftTransfer) => ({
@@ -943,10 +938,9 @@ async function batchNftTransfer({ user, starkSigner, request, transfersApi, pass
943
938
  const signableResult = await transfersApi.getSignableTransfer({
944
939
  getSignableTransferRequestV2,
945
940
  });
946
- const confirmationScreen = new ConfirmationScreen(passportConfig);
947
941
  const popupWindowSize = { width: 480, height: 784 };
948
942
  const confirmationResult = await confirmationScreen.startTransaction(user.accessToken, {
949
- transactionType: TransactionTypes.CreateBatchTransfer,
943
+ transactionType: TransactionTypes.createBatchTransfer,
950
944
  transactionData: getSignableTransferRequestV2,
951
945
  }, popupWindowSize);
952
946
  if (!confirmationResult.confirmed) {
@@ -983,7 +977,7 @@ async function batchNftTransfer({ user, starkSigner, request, transfersApi, pass
983
977
  }
984
978
 
985
979
  const ERC721 = 'ERC721';
986
- async function createOrder({ starkSigner, user, request, ordersApi, passportConfig, }) {
980
+ async function createOrder({ starkSigner, user, request, ordersApi, confirmationScreen, }) {
987
981
  return withPassportError(async () => {
988
982
  const ethAddress = user.etherKey;
989
983
  const amountSell = request.sell.type === ERC721 ? '1' : request.sell.amount;
@@ -1000,9 +994,8 @@ async function createOrder({ starkSigner, user, request, ordersApi, passportConf
1000
994
  const getSignableOrderResponse = await ordersApi.getSignableOrder({
1001
995
  getSignableOrderRequestV3,
1002
996
  });
1003
- const confirmationScreen = new ConfirmationScreen(passportConfig);
1004
997
  const confirmationResult = await confirmationScreen.startTransaction(user.accessToken, {
1005
- transactionType: TransactionTypes.CreateOrder,
998
+ transactionType: TransactionTypes.createOrder,
1006
999
  transactionData: getSignableOrderRequestV3,
1007
1000
  });
1008
1001
  if (!confirmationResult.confirmed) {
@@ -1039,7 +1032,7 @@ async function createOrder({ starkSigner, user, request, ordersApi, passportConf
1039
1032
  };
1040
1033
  }, PassportErrorType.CREATE_ORDER_ERROR);
1041
1034
  }
1042
- async function cancelOrder({ user, starkSigner, request, ordersApi, passportConfig, }) {
1035
+ async function cancelOrder({ user, starkSigner, request, ordersApi, confirmationScreen, }) {
1043
1036
  return withPassportError(async () => {
1044
1037
  const getSignableCancelOrderRequest = {
1045
1038
  order_id: request.order_id,
@@ -1047,9 +1040,8 @@ async function cancelOrder({ user, starkSigner, request, ordersApi, passportConf
1047
1040
  const getSignableCancelOrderResponse = await ordersApi.getSignableCancelOrder({
1048
1041
  getSignableCancelOrderRequest,
1049
1042
  });
1050
- const confirmationScreen = new ConfirmationScreen(passportConfig);
1051
1043
  const confirmationResult = await confirmationScreen.startTransaction(user.accessToken, {
1052
- transactionType: TransactionTypes.CancelOrder,
1044
+ transactionType: TransactionTypes.cancelOrder,
1053
1045
  transactionData: getSignableCancelOrderRequest,
1054
1046
  });
1055
1047
  if (!confirmationResult.confirmed) {
@@ -1119,7 +1111,7 @@ async function exchangeTransfer({ user, starkSigner, request, exchangesApi, }) {
1119
1111
  }, PassportErrorType.EXCHANGE_TRANSFER_ERROR);
1120
1112
  }
1121
1113
 
1122
- async function createTrade({ request, tradesApi, user, starkSigner, passportConfig, }) {
1114
+ async function createTrade({ request, tradesApi, user, starkSigner, confirmationScreen, }) {
1123
1115
  return withPassportError(async () => {
1124
1116
  const ethAddress = user.etherKey;
1125
1117
  const getSignableTradeRequest = {
@@ -1131,9 +1123,8 @@ async function createTrade({ request, tradesApi, user, starkSigner, passportConf
1131
1123
  const getSignableTradeResponse = await tradesApi.getSignableTrade({
1132
1124
  getSignableTradeRequest,
1133
1125
  });
1134
- const confirmationScreen = new ConfirmationScreen(passportConfig);
1135
1126
  const confirmationResult = await confirmationScreen.startTransaction(user.accessToken, {
1136
- transactionType: TransactionTypes.CreateTrade,
1127
+ transactionType: TransactionTypes.createTrade,
1137
1128
  transactionData: getSignableTradeRequest,
1138
1129
  });
1139
1130
  if (!confirmationResult.confirmed) {
@@ -1172,13 +1163,13 @@ async function createTrade({ request, tradesApi, user, starkSigner, passportConf
1172
1163
  class PassportImxProvider {
1173
1164
  user;
1174
1165
  starkSigner;
1175
- passportConfig;
1176
1166
  immutableXClient;
1177
- constructor({ user, starkSigner, passportConfig, immutableXClient, }) {
1167
+ confirmationScreen;
1168
+ constructor({ user, starkSigner, immutableXClient, confirmationScreen, }) {
1178
1169
  this.user = user;
1179
1170
  this.starkSigner = starkSigner;
1180
- this.passportConfig = passportConfig;
1181
1171
  this.immutableXClient = immutableXClient;
1172
+ this.confirmationScreen = confirmationScreen;
1182
1173
  }
1183
1174
  async transfer(request) {
1184
1175
  return transfer({
@@ -1186,7 +1177,7 @@ class PassportImxProvider {
1186
1177
  user: this.user,
1187
1178
  starkSigner: this.starkSigner,
1188
1179
  transfersApi: this.immutableXClient.transfersApi,
1189
- passportConfig: this.passportConfig,
1180
+ confirmationScreen: this.confirmationScreen,
1190
1181
  });
1191
1182
  }
1192
1183
  // TODO: Remove once implemented
@@ -1205,7 +1196,7 @@ class PassportImxProvider {
1205
1196
  user: this.user,
1206
1197
  starkSigner: this.starkSigner,
1207
1198
  ordersApi: this.immutableXClient.ordersApi,
1208
- passportConfig: this.passportConfig,
1199
+ confirmationScreen: this.confirmationScreen,
1209
1200
  });
1210
1201
  }
1211
1202
  cancelOrder(request) {
@@ -1214,7 +1205,7 @@ class PassportImxProvider {
1214
1205
  user: this.user,
1215
1206
  starkSigner: this.starkSigner,
1216
1207
  ordersApi: this.immutableXClient.ordersApi,
1217
- passportConfig: this.passportConfig,
1208
+ confirmationScreen: this.confirmationScreen,
1218
1209
  });
1219
1210
  }
1220
1211
  createTrade(request) {
@@ -1223,7 +1214,7 @@ class PassportImxProvider {
1223
1214
  user: this.user,
1224
1215
  starkSigner: this.starkSigner,
1225
1216
  tradesApi: this.immutableXClient.tradesApi,
1226
- passportConfig: this.passportConfig,
1217
+ confirmationScreen: this.confirmationScreen,
1227
1218
  });
1228
1219
  }
1229
1220
  batchNftTransfer(request) {
@@ -1232,7 +1223,7 @@ class PassportImxProvider {
1232
1223
  user: this.user,
1233
1224
  starkSigner: this.starkSigner,
1234
1225
  transfersApi: this.immutableXClient.transfersApi,
1235
- passportConfig: this.passportConfig,
1226
+ confirmationScreen: this.confirmationScreen,
1236
1227
  });
1237
1228
  }
1238
1229
  exchangeTransfer(request) {
@@ -1372,17 +1363,17 @@ async function registerPassport({ ethSigner, starkSigner, usersApi }, authorizat
1372
1363
  }, PassportErrorType.USER_REGISTRATION_ERROR);
1373
1364
  }
1374
1365
 
1375
- // TODO: Remove this once the dependency has been added
1376
- // eslint-disable-next-line import/no-extraneous-dependencies
1377
1366
  class Passport {
1378
1367
  authManager;
1379
1368
  magicAdapter;
1380
1369
  config;
1381
1370
  immutableXClient;
1371
+ confirmationScreen;
1382
1372
  constructor(passportModuleConfiguration) {
1383
1373
  this.config = new PassportConfiguration(passportModuleConfiguration);
1384
1374
  this.authManager = new AuthManager(this.config);
1385
1375
  this.magicAdapter = new MagicAdapter(this.config);
1376
+ this.confirmationScreen = new ConfirmationScreen(this.config);
1386
1377
  this.immutableXClient = passportModuleConfiguration.overrides?.immutableXClient
1387
1378
  || new ImmutableXClient({
1388
1379
  baseConfig: passportModuleConfiguration.baseConfig,
@@ -1400,16 +1391,16 @@ class Passport {
1400
1391
  return new PassportImxProvider({
1401
1392
  user: updatedUser,
1402
1393
  starkSigner,
1403
- passportConfig: this.config,
1404
1394
  immutableXClient: this.immutableXClient,
1395
+ confirmationScreen: this.confirmationScreen,
1405
1396
  });
1406
1397
  }
1407
1398
  const userWithEtherKey = user;
1408
1399
  return new PassportImxProvider({
1409
1400
  user: userWithEtherKey,
1410
1401
  starkSigner,
1411
- passportConfig: this.config,
1412
1402
  immutableXClient: this.immutableXClient,
1403
+ confirmationScreen: this.confirmationScreen,
1413
1404
  });
1414
1405
  }
1415
1406
  async connectImxSilent() {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@imtbl/sdk",
3
3
  "description": "Immutable Unified SDK",
4
- "version": "0.1.7",
4
+ "version": "0.1.8-alpha.1",
5
5
  "author": "Immutable",
6
6
  "bugs": "https://github.com/immutable/ts-immutable-sdk/issues",
7
7
  "dependencies": {
@@ -11,6 +11,7 @@
11
11
  "@imtbl/core-sdk": "^1.1.1-alpha.1",
12
12
  "@magic-ext/oidc": "^1.0.1",
13
13
  "@metamask/detect-provider": "^2.0.0",
14
+ "@opensea/seaport-js": "^1.3.0",
14
15
  "axios": "^1.3.5",
15
16
  "bn.js": "^5.2.1",
16
17
  "enc-utils": "^3.0.0",
@@ -19,11 +20,16 @@
19
20
  "oidc-client-ts": "^2.2.1"
20
21
  },
21
22
  "devDependencies": {
23
+ "@imtbl/blockchain-data": "0.0.0",
22
24
  "@imtbl/checkout-sdk": "0.0.0",
23
25
  "@imtbl/checkout-widgets": "0.0.0",
24
26
  "@imtbl/config": "0.0.0",
25
27
  "@imtbl/cryptofiat": "0.0.0",
28
+ "@imtbl/erc20": "0.0.0",
29
+ "@imtbl/erc721-permissioned-mintable": "0.0.0",
30
+ "@imtbl/guardian": "0.0.0",
26
31
  "@imtbl/immutablex-client": "0.0.0",
32
+ "@imtbl/orderbook": "0.0.0",
27
33
  "@imtbl/passport": "0.0.0",
28
34
  "@imtbl/provider": "0.0.0",
29
35
  "@rollup/plugin-commonjs": "^24.0.1",
@@ -33,7 +39,8 @@
33
39
  "@rollup/plugin-typescript": "^11.0.0",
34
40
  "@yarnpkg/cli": "3.5.0",
35
41
  "@yarnpkg/core": "3.5.0",
36
- "eslint": "^8.37.0",
42
+ "eslint": "^8.40.0",
43
+ "glob": "^10.2.3",
37
44
  "rollup": "^3.17.2",
38
45
  "rollup-plugin-dts": "^5.3.0",
39
46
  "semver": "^7.4.0",
@@ -53,6 +60,10 @@
53
60
  "types": "./dist/config.d.ts",
54
61
  "import": "./dist/config.js"
55
62
  },
63
+ "./blockchain-data": {
64
+ "types": "./dist/blockchain-data.d.ts",
65
+ "import": "./dist/blockchain-data.js"
66
+ },
56
67
  "./immutablex_client": {
57
68
  "types": "./dist/immutablex_client.d.ts",
58
69
  "import": "./dist/immutablex_client.js"
@@ -61,9 +72,29 @@
61
72
  "types": "./dist/passport.d.ts",
62
73
  "import": "./dist/passport.js"
63
74
  },
75
+ "./orderbook": {
76
+ "types": "./dist/orderbook.d.ts",
77
+ "import": "./dist/orderbook.js"
78
+ },
64
79
  "./provider": {
65
80
  "types": "./dist/provider.d.ts",
66
81
  "import": "./dist/provider.js"
82
+ },
83
+ "./checkout_sdk": {
84
+ "types": "./dist/checkout_sdk.d.ts",
85
+ "import": "./dist/checkout_sdk.js"
86
+ },
87
+ "./checkout_widgets": {
88
+ "types": "./dist/checkout_widgets.d.ts",
89
+ "import": "./dist/checkout_widgets.js"
90
+ },
91
+ "./erc20": {
92
+ "types": "./dist/erc20.d.ts",
93
+ "import": "./dist/erc20.js"
94
+ },
95
+ "./erc721-permissioned-mintable": {
96
+ "types": "./dist/erc721-permissioned-mintable.d.ts",
97
+ "import": "./dist/erc721-permissioned-mintable.js"
67
98
  }
68
99
  },
69
100
  "files": [
@@ -81,6 +112,7 @@
81
112
  "scripts": {
82
113
  "build": "yarn packageList && yarn updateDependencies && yarn regenModules && rm -rf dist && NODE_ENV=production rollup --config rollup.config.js && rm -rf dist/types",
83
114
  "build:only": "rm -rf dist && NODE_ENV=production rollup --config rollup.config.js && rm -rf dist/types",
115
+ "copyBrowserBundles": "node scripts/copyBrowserBundles.js",
84
116
  "generateIndex": "node scripts/generateIndex.js",
85
117
  "lint": "eslint ./src --ext .ts,.jsx,.tsx --max-warnings=0",
86
118
  "packageList": "./scripts/generate-package-list.sh",