@orb-labs/orby-core 0.0.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.
Files changed (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/actions/account_cluster.d.ts +24 -0
  4. package/dist/actions/account_cluster.js +147 -0
  5. package/dist/actions/admin.d.ts +17 -0
  6. package/dist/actions/admin.js +42 -0
  7. package/dist/actions/application.d.ts +6 -0
  8. package/dist/actions/application.js +25 -0
  9. package/dist/actions/instance.d.ts +16 -0
  10. package/dist/actions/instance.js +94 -0
  11. package/dist/actions/operation.d.ts +78 -0
  12. package/dist/actions/operation.js +113 -0
  13. package/dist/actions/token.d.ts +15 -0
  14. package/dist/actions/token.js +46 -0
  15. package/dist/constants.d.ts +4 -0
  16. package/dist/constants.js +36 -0
  17. package/dist/entities/account.d.ts +14 -0
  18. package/dist/entities/account.js +52 -0
  19. package/dist/entities/financial/account_balance.d.ts +12 -0
  20. package/dist/entities/financial/account_balance.js +35 -0
  21. package/dist/entities/financial/asset.d.ts +31 -0
  22. package/dist/entities/financial/asset.js +42 -0
  23. package/dist/entities/financial/currency.d.ts +41 -0
  24. package/dist/entities/financial/currency.js +56 -0
  25. package/dist/entities/financial/currency_amount.d.ts +31 -0
  26. package/dist/entities/financial/currency_amount.js +81 -0
  27. package/dist/entities/financial/fungible_token.d.ts +41 -0
  28. package/dist/entities/financial/fungible_token.js +70 -0
  29. package/dist/entities/financial/fungible_token_amount.d.ts +33 -0
  30. package/dist/entities/financial/fungible_token_amount.js +84 -0
  31. package/dist/entities/financial/non_fungible_token.d.ts +39 -0
  32. package/dist/entities/financial/non_fungible_token.js +66 -0
  33. package/dist/entities/financial/semi_fungible_token.d.ts +41 -0
  34. package/dist/entities/financial/semi_fungible_token.js +68 -0
  35. package/dist/entities/library_request.d.ts +8 -0
  36. package/dist/entities/library_request.js +37 -0
  37. package/dist/entities/state.d.ts +22 -0
  38. package/dist/entities/state.js +105 -0
  39. package/dist/enums.d.ts +115 -0
  40. package/dist/enums.js +137 -0
  41. package/dist/index.d.ts +26 -0
  42. package/dist/index.js +47 -0
  43. package/dist/interfaces/account_cluster.d.ts +22 -0
  44. package/dist/interfaces/account_cluster.js +2 -0
  45. package/dist/interfaces/admin.d.ts +14 -0
  46. package/dist/interfaces/admin.js +2 -0
  47. package/dist/interfaces/application.d.ts +3 -0
  48. package/dist/interfaces/application.js +2 -0
  49. package/dist/interfaces/instance.d.ts +13 -0
  50. package/dist/interfaces/instance.js +2 -0
  51. package/dist/interfaces/operation.d.ts +76 -0
  52. package/dist/interfaces/operation.js +2 -0
  53. package/dist/interfaces/orby.d.ts +8 -0
  54. package/dist/interfaces/orby.js +2 -0
  55. package/dist/interfaces/token.d.ts +12 -0
  56. package/dist/interfaces/token.js +2 -0
  57. package/dist/types.d.ts +143 -0
  58. package/dist/types.js +2 -0
  59. package/dist/utils/utils.d.ts +26 -0
  60. package/dist/utils/utils.js +319 -0
  61. package/dist/utils/validateAndParseAddress.d.ts +10 -0
  62. package/dist/utils/validateAndParseAddress.js +29 -0
  63. package/package.json +25 -0
@@ -0,0 +1,319 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBlockchainFromName = exports.getBlockchainIdFromBlockchain = exports.getChainIdFromOrbyChainId = exports.extractGasSponsorshipData = exports.extractGasSponsorshipInformation = exports.extractGasSpendForInstance = exports.extractGasSpendForInstances = exports.extractGasSponsorshipPolicy = exports.extractAllowlistWithOpenFallback = exports.extractMaxAmountPerInterval = exports.extractBlockchainInformation = exports.extractBlockchainInformations = exports.extractStandardizedToken = exports.extractStandardizedTokens = exports.extractStandardizedBalance = exports.extractStandardizedBalances = exports.extractFungibleTokenOverview = exports.extractActivities = exports.extractOperationStatus = exports.extractOperationStatuses = exports.extractIntent = exports.extractOnchainOperation = exports.extractOperationSet = exports.extractAccountCluster = void 0;
4
+ const enums_1 = require("../enums");
5
+ const constants_1 = require("../constants");
6
+ const currency_amount_1 = require("../entities/financial/currency_amount");
7
+ const state_1 = require("../entities/state");
8
+ const currency_1 = require("../entities/financial/currency");
9
+ const fungible_token_amount_1 = require("../entities/financial/fungible_token_amount");
10
+ const fungible_token_1 = require("../entities/financial/fungible_token");
11
+ const account_1 = require("../entities/account");
12
+ const extractAccountCluster = (accountCluster) => {
13
+ var _a;
14
+ if (!accountCluster) {
15
+ return undefined;
16
+ }
17
+ return {
18
+ accountClusterId: accountCluster.accountClusterId,
19
+ accounts: (_a = accountCluster === null || accountCluster === void 0 ? void 0 : accountCluster.accounts) === null || _a === void 0 ? void 0 : _a.map((account) => account_1.Account.toAccount(account)),
20
+ };
21
+ };
22
+ exports.extractAccountCluster = extractAccountCluster;
23
+ const extractOperationSet = (operations) => {
24
+ if (!operations) {
25
+ return undefined;
26
+ }
27
+ return operations.map((operation) => {
28
+ var _a;
29
+ return {
30
+ status: operation.status,
31
+ primaryOperation: (0, exports.extractOnchainOperation)(operation.primaryOperation),
32
+ primaryOperationPreconditions: state_1.State.toState(operation.primaryOperationPreconditions),
33
+ inputState: state_1.State.toState(operation.inputState),
34
+ outputState: state_1.State.toState(operation.outputState),
35
+ intents: (_a = operation.intents) === null || _a === void 0 ? void 0 : _a.map((intent) => (0, exports.extractIntent)(intent)),
36
+ aggregateNetworkFeeInFiatCurrency: currency_amount_1.CurrencyAmount.toCurrencyAmount(operation.aggregateNetworkFeeInFiatCurrency),
37
+ aggregateOperationFeeInFiatCurrency: currency_amount_1.CurrencyAmount.toCurrencyAmount(operation.aggregateOperationFeeInFiatCurrency),
38
+ aggregateEstimatedTimeInMs: operation.aggregateEstimatedTimeInMs,
39
+ };
40
+ });
41
+ };
42
+ exports.extractOperationSet = extractOperationSet;
43
+ const extractOnchainOperation = (onchainOperation) => {
44
+ if (!onchainOperation) {
45
+ return undefined;
46
+ }
47
+ return {
48
+ chainId: (0, exports.getChainIdFromOrbyChainId)(onchainOperation.chainId),
49
+ data: onchainOperation.data,
50
+ estimatedNetworkFees: currency_amount_1.CurrencyAmount.toCurrencyAmount(onchainOperation.estimatedNetworkFees),
51
+ estimatedNetworkFeesInFiatCurrency: currency_amount_1.CurrencyAmount.toCurrencyAmount(onchainOperation.estimatedNetworkFeesInFiatCurrency),
52
+ estimatedTimeInMs: onchainOperation.estimatedTimeInMs
53
+ ? BigInt(onchainOperation.estimatedTimeInMs)
54
+ : undefined,
55
+ format: onchainOperation.format,
56
+ from: onchainOperation.from,
57
+ gasLimit: onchainOperation.gasLimit
58
+ ? BigInt(onchainOperation.gasLimit)
59
+ : undefined,
60
+ gasPrice: onchainOperation.gasPrice
61
+ ? BigInt(onchainOperation.gasPrice)
62
+ : undefined,
63
+ inputState: state_1.State.toState(onchainOperation.inputState),
64
+ maxFeePerGas: onchainOperation.maxFeePerGas
65
+ ? BigInt(onchainOperation.maxFeePerGas)
66
+ : undefined,
67
+ maxPriorityFeePerGas: onchainOperation.maxPriorityFeePerGas
68
+ ? BigInt(onchainOperation.maxPriorityFeePerGas)
69
+ : undefined,
70
+ nativeCurrency: currency_1.Currency.toCurrency(onchainOperation.nativeCurrency),
71
+ nonce: onchainOperation.nonce ? BigInt(onchainOperation.nonce) : undefined,
72
+ outputState: state_1.State.toState(onchainOperation.outputState),
73
+ to: onchainOperation.to,
74
+ txRpcUrl: onchainOperation.txRpcUrl,
75
+ type: onchainOperation.type,
76
+ value: onchainOperation.value ? BigInt(onchainOperation.value) : undefined,
77
+ };
78
+ };
79
+ exports.extractOnchainOperation = extractOnchainOperation;
80
+ const extractIntent = (intent) => {
81
+ if (!intent) {
82
+ return undefined;
83
+ }
84
+ return {
85
+ estimatedProtocolFees: fungible_token_amount_1.FungibleTokenAmount.toFungibleTokenAmount(intent.estimatedProtocolFees),
86
+ estimatedProtocolFeesInFiatCurrency: currency_amount_1.CurrencyAmount.toCurrencyAmount(intent.estimatedProtocolFeesInFiatCurrency),
87
+ inputState: state_1.State.toState(intent.inputState),
88
+ intentOperations: intent.intentOperations.map((operation) => (0, exports.extractOnchainOperation)(operation)),
89
+ outputState: state_1.State.toState(intent.outputState),
90
+ };
91
+ };
92
+ exports.extractIntent = extractIntent;
93
+ const extractOperationStatuses = (operationStatus) => {
94
+ return operationStatus === null || operationStatus === void 0 ? void 0 : operationStatus.map((status) => (0, exports.extractOperationStatus)(status));
95
+ };
96
+ exports.extractOperationStatuses = extractOperationStatuses;
97
+ const extractOperationStatus = (status) => {
98
+ if (!status) {
99
+ return undefined;
100
+ }
101
+ return {
102
+ blockHash: status.blockHash,
103
+ blockNumber: status.blockNumber ? BigInt(status.blockNumber) : undefined,
104
+ chainId: status.chainId
105
+ ? (0, exports.getChainIdFromOrbyChainId)(status.chainId)
106
+ : undefined,
107
+ errorReason: status.errorReason,
108
+ hash: status.hash,
109
+ id: status.id,
110
+ status: status.status,
111
+ type: status.type,
112
+ };
113
+ };
114
+ exports.extractOperationStatus = extractOperationStatus;
115
+ const extractActivities = (activities) => {
116
+ if (!activities) {
117
+ return undefined;
118
+ }
119
+ return activities.map((activity) => {
120
+ return {
121
+ aggregateFiatValueOfInputState: currency_amount_1.CurrencyAmount.toCurrencyAmount(activity.aggregateFiatValueOfInputState),
122
+ aggregateFiatValueOfOutputState: currency_amount_1.CurrencyAmount.toCurrencyAmount(activity.aggregateFiatValueOfOutputState),
123
+ aggregateNetworkFeesInFiatCurrency: currency_amount_1.CurrencyAmount.toCurrencyAmount(activity.aggregateNetworkFeesInFiatCurrency),
124
+ aggregateProtocolFeesInFiatCurrency: currency_amount_1.CurrencyAmount.toCurrencyAmount(activity.aggregateProtocolFeesInFiatCurrency),
125
+ category: activity.category,
126
+ initiateAt: activity.initiateAt,
127
+ inputState: state_1.State.toState(activity.inputState),
128
+ operationStatuses: (0, exports.extractOperationStatus)(activity.operationStatuses),
129
+ outputState: state_1.State.toState(activity.outputState),
130
+ overallStatus: activity.overallStatus,
131
+ };
132
+ });
133
+ };
134
+ exports.extractActivities = extractActivities;
135
+ const extractFungibleTokenOverview = (overview) => {
136
+ if (!overview) {
137
+ return undefined;
138
+ }
139
+ return {
140
+ tokenCount: overview.tokenCount,
141
+ hiddenTokenCount: overview.hiddenTokenCount,
142
+ totalValueInFiat: currency_amount_1.CurrencyAmount.toCurrencyAmount(overview.totalValueInFiat),
143
+ };
144
+ };
145
+ exports.extractFungibleTokenOverview = extractFungibleTokenOverview;
146
+ const extractStandardizedBalances = (balances) => {
147
+ return balances === null || balances === void 0 ? void 0 : balances.map((balance) => (0, exports.extractStandardizedBalance)(balance));
148
+ };
149
+ exports.extractStandardizedBalances = extractStandardizedBalances;
150
+ const extractStandardizedBalance = (balance) => {
151
+ if (!balance) {
152
+ return undefined;
153
+ }
154
+ return {
155
+ standardizedTokenId: balance.standardizedTokenId,
156
+ tokenBalances: balance.tokenBalances.map((ft) => fungible_token_amount_1.FungibleTokenAmount.toFungibleTokenAmount(ft)),
157
+ tokenBalancesOnChains: balance.tokenBalancesOnChains.map((ft) => fungible_token_amount_1.FungibleTokenAmount.toFungibleTokenAmount(ft)),
158
+ total: currency_amount_1.CurrencyAmount.toCurrencyAmount(balance.total),
159
+ totalValueInFiat: currency_amount_1.CurrencyAmount.toCurrencyAmount(balance.totalValueInFiat),
160
+ };
161
+ };
162
+ exports.extractStandardizedBalance = extractStandardizedBalance;
163
+ const extractStandardizedTokens = (tokens) => {
164
+ return tokens === null || tokens === void 0 ? void 0 : tokens.map((token) => (0, exports.extractStandardizedToken)(token));
165
+ };
166
+ exports.extractStandardizedTokens = extractStandardizedTokens;
167
+ const extractStandardizedToken = (token) => {
168
+ if (!token) {
169
+ return undefined;
170
+ }
171
+ return {
172
+ stardardizedTokenId: token.stardardizedTokenId,
173
+ currency: currency_1.Currency.toCurrency(token.currency),
174
+ priceInFiat: currency_amount_1.CurrencyAmount.toCurrencyAmount(token.priceInFiat),
175
+ tokens: token.tokens.map((ft) => fungible_token_1.FungibleToken.toFungibleToken(ft)),
176
+ };
177
+ };
178
+ exports.extractStandardizedToken = extractStandardizedToken;
179
+ const extractBlockchainInformations = (blockchainInformation) => {
180
+ return blockchainInformation === null || blockchainInformation === void 0 ? void 0 : blockchainInformation.map((info) => (0, exports.extractBlockchainInformation)(info));
181
+ };
182
+ exports.extractBlockchainInformations = extractBlockchainInformations;
183
+ const extractBlockchainInformation = (blockchainInformation) => {
184
+ if (!blockchainInformation) {
185
+ return undefined;
186
+ }
187
+ return {
188
+ chainId: (0, exports.getChainIdFromOrbyChainId)(blockchainInformation.chainId),
189
+ environment: blockchainInformation.environment,
190
+ logoUrl: blockchainInformation.logoUrl,
191
+ name: blockchainInformation.name,
192
+ };
193
+ };
194
+ exports.extractBlockchainInformation = extractBlockchainInformation;
195
+ const extractMaxAmountPerInterval = (maxAmountPerInterval) => {
196
+ if (!maxAmountPerInterval) {
197
+ return undefined;
198
+ }
199
+ return {
200
+ amount: maxAmountPerInterval.amount,
201
+ interval: {
202
+ amount: maxAmountPerInterval.interval.amount,
203
+ unit: maxAmountPerInterval.interval.unit,
204
+ },
205
+ };
206
+ };
207
+ exports.extractMaxAmountPerInterval = extractMaxAmountPerInterval;
208
+ const extractAllowlistWithOpenFallback = (allowlist) => {
209
+ if (!allowlist) {
210
+ return undefined;
211
+ }
212
+ return {
213
+ tokenAllowlist: {
214
+ tokenAllowlistType: allowlist.tokenAllowlist.tokenAllowlistType,
215
+ sponsoredFunctions: allowlist.tokenAllowlist.sponsoredFunctions,
216
+ },
217
+ arbitraryContractAllowlist: allowlist.arbitraryContractAllowlist,
218
+ };
219
+ };
220
+ exports.extractAllowlistWithOpenFallback = extractAllowlistWithOpenFallback;
221
+ const extractGasSponsorshipPolicy = (gasSponsorshipPolicy) => {
222
+ if (!gasSponsorshipPolicy) {
223
+ return undefined;
224
+ }
225
+ return {
226
+ maxTotalGasSpendForInstance: (0, exports.extractMaxAmountPerInterval)(gasSponsorshipPolicy.maxTotalGasSpendForInstance),
227
+ maxGasSpendPerTransaction: gasSponsorshipPolicy.maxGasSpendPerTransaction,
228
+ allowlistWithOpenFallback: (0, exports.extractAllowlistWithOpenFallback)(gasSponsorshipPolicy.allowlistWithOpenFallback),
229
+ maxTotalTransactionCountForInstance: (0, exports.extractMaxAmountPerInterval)(gasSponsorshipPolicy.maxTotalTransactionCountForInstance),
230
+ maxTotalGasSpendPerUser: (0, exports.extractMaxAmountPerInterval)(gasSponsorshipPolicy.maxTotalGasSpendPerUser),
231
+ maxTotalTransactionCountPerUser: (0, exports.extractMaxAmountPerInterval)(gasSponsorshipPolicy.maxTotalTransactionCountPerUser),
232
+ };
233
+ };
234
+ exports.extractGasSponsorshipPolicy = extractGasSponsorshipPolicy;
235
+ const extractGasSpendForInstances = (gasSpendForInstances) => {
236
+ return gasSpendForInstances === null || gasSpendForInstances === void 0 ? void 0 : gasSpendForInstances.map((data) => (0, exports.extractGasSpendForInstance)(data));
237
+ };
238
+ exports.extractGasSpendForInstances = extractGasSpendForInstances;
239
+ const extractGasSpendForInstance = (gasSpendForInstance) => {
240
+ if (!gasSpendForInstance) {
241
+ return;
242
+ }
243
+ return {
244
+ instanceName: gasSpendForInstance.instanceName,
245
+ gasSpentForInstance: (0, exports.extractGasSponsorshipData)(gasSpendForInstance.gasSpentForInstance),
246
+ };
247
+ };
248
+ exports.extractGasSpendForInstance = extractGasSpendForInstance;
249
+ const extractGasSponsorshipInformation = (gasSponsorshipData) => {
250
+ return gasSponsorshipData === null || gasSponsorshipData === void 0 ? void 0 : gasSponsorshipData.map((data) => (0, exports.extractGasSponsorshipData)(data));
251
+ };
252
+ exports.extractGasSponsorshipInformation = extractGasSponsorshipInformation;
253
+ const extractGasSponsorshipData = (gasSponsorshipData) => {
254
+ if (!gasSponsorshipData) {
255
+ return undefined;
256
+ }
257
+ return {
258
+ totalGasSpent: currency_amount_1.CurrencyAmount.toCurrencyAmount(gasSponsorshipData.totalGasSpent),
259
+ totalTransactionCount: gasSponsorshipData.totalTransactionCount,
260
+ };
261
+ };
262
+ exports.extractGasSponsorshipData = extractGasSponsorshipData;
263
+ const getChainIdFromOrbyChainId = (value) => {
264
+ var _a;
265
+ let chainId = undefined;
266
+ const formattedValue = (_a = value === null || value === void 0 ? void 0 : value.trim()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
267
+ if (formattedValue === null || formattedValue === void 0 ? void 0 : formattedValue.includes("eip155")) {
268
+ const publicIdElements = formattedValue.split("eip155-");
269
+ const potentialId = (publicIdElements === null || publicIdElements === void 0 ? void 0 : publicIdElements.length) > 1 ? publicIdElements[1] : undefined;
270
+ chainId = !Number.isNaN(Number(potentialId))
271
+ ? BigInt(potentialId)
272
+ : undefined;
273
+ }
274
+ else {
275
+ const blockchain = (0, exports.getBlockchainFromName)(formattedValue);
276
+ const potentialId = blockchain
277
+ ? (0, exports.getBlockchainIdFromBlockchain)(blockchain)
278
+ : undefined;
279
+ chainId = potentialId ? BigInt(potentialId) : undefined;
280
+ }
281
+ return chainId;
282
+ };
283
+ exports.getChainIdFromOrbyChainId = getChainIdFromOrbyChainId;
284
+ const getBlockchainIdFromBlockchain = (blockchain) => {
285
+ return constants_1.BLOCKCHAIN_ID[blockchain];
286
+ };
287
+ exports.getBlockchainIdFromBlockchain = getBlockchainIdFromBlockchain;
288
+ const getBlockchainFromName = (chainName) => {
289
+ var _a;
290
+ const formattedChainName = (_a = chainName === null || chainName === void 0 ? void 0 : chainName.toLowerCase()) === null || _a === void 0 ? void 0 : _a.replace("-", "_");
291
+ switch (formattedChainName) {
292
+ case "bnbt": {
293
+ return enums_1.Blockchain.BINANCE_TESTNET;
294
+ }
295
+ case "matic_amoy": {
296
+ return enums_1.Blockchain.POLYGON_AMOY;
297
+ }
298
+ case "matic": {
299
+ return enums_1.Blockchain.POLYGON;
300
+ }
301
+ case "mainnet": {
302
+ return enums_1.Blockchain.ETHEREUM;
303
+ }
304
+ case "holesky": {
305
+ return enums_1.Blockchain.ETHEREUM_HOLESKY;
306
+ }
307
+ case "sepolia": {
308
+ return enums_1.Blockchain.ETHEREUM_SEPOLIA;
309
+ }
310
+ case "unknown": {
311
+ return undefined;
312
+ }
313
+ default: {
314
+ //statements;
315
+ return formattedChainName;
316
+ }
317
+ }
318
+ };
319
+ exports.getBlockchainFromName = getBlockchainFromName;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Validates an address and returns the parsed (checksummed) version of that address
3
+ * @param address the unchecksummed hex address
4
+ */
5
+ export declare function validateAndParseAddress(address: string): string;
6
+ /**
7
+ * Checks if an address is valid by checking 0x prefix, length === 42 and hex encoding.
8
+ * @param address the unchecksummed hex address
9
+ */
10
+ export declare function checkValidAddress(address: string): string;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateAndParseAddress = validateAndParseAddress;
4
+ exports.checkValidAddress = checkValidAddress;
5
+ const address_1 = require("@ethersproject/address");
6
+ /**
7
+ * Validates an address and returns the parsed (checksummed) version of that address
8
+ * @param address the unchecksummed hex address
9
+ */
10
+ function validateAndParseAddress(address) {
11
+ try {
12
+ return (0, address_1.getAddress)(address);
13
+ }
14
+ catch (error) {
15
+ throw new Error(`${address} is not a valid address.`);
16
+ }
17
+ }
18
+ // Checks a string starts with 0x, is 42 characters long and contains only hex characters after 0x
19
+ const startsWith0xLen42HexRegex = /^0x[0-9a-fA-F]{40}$/;
20
+ /**
21
+ * Checks if an address is valid by checking 0x prefix, length === 42 and hex encoding.
22
+ * @param address the unchecksummed hex address
23
+ */
24
+ function checkValidAddress(address) {
25
+ if (startsWith0xLen42HexRegex.test(address)) {
26
+ return address;
27
+ }
28
+ throw new Error(`${address} is not a valid address.`);
29
+ }
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@orb-labs/orby-core",
3
+ "version": "0.0.1",
4
+ "exports": {
5
+ ".": "./dist/index.js"
6
+ },
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc && tsc-alias",
13
+ "dev": "concurrently \"yarn:watch:tsc\" \"yarn:watch:alias\"",
14
+ "watch:tsc": "tsc -w",
15
+ "watch:alias": "nodemon --watch dist --exec \"tsc-alias -p tsconfig.json\""
16
+ },
17
+ "devDependencies": {
18
+ "@types/lodash": "^4.17.13",
19
+ "eslint": "^8",
20
+ "javascript-obfuscator": "^4.1.1",
21
+ "nodemon": "^3.0.3",
22
+ "tsc-alias": "^1.8.10",
23
+ "typescript": "^5.6.3"
24
+ }
25
+ }