@ledgerhq/vault-common 2.4.4 → 2.4.6

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @ledgerhq/vault-common@2.4.4 build /home/runner/work/vault-ts/vault-ts/packages/common
2
+ > @ledgerhq/vault-common@2.4.6 build /home/runner/work/vault-ts/vault-ts/packages/common
3
3
  > tsup
4
4
 
5
5
  CLI Building entry: src/createHSMBridge.ts, src/index.ts, src/recipeManifest.ts, src/reviewAPIRequest.ts, src/utils.ts, src/crypto/utils.ts, src/types/index.ts
@@ -9,39 +9,39 @@
9
9
  CLI Target: es2022
10
10
  CLI Cleaning output folder
11
11
  CJS Build start
12
- DTS Build start
13
- CJS lib/createHSMBridge.js 331.00 B
14
12
  CJS lib/crypto/utils.js 335.00 B
15
13
  CJS lib/types/index.js 329.00 B
16
- CJS lib/index.js 121.00 KB
17
- CJS lib/chunk-N6UGATIN.js 3.59 KB
14
+ CJS lib/createHSMBridge.js 331.00 B
15
+ CJS lib/index.js 119.40 KB
16
+ CJS lib/chunk-7PAZRU3A.js 3.59 KB
18
17
  CJS lib/recipeManifest.js 349.00 B
19
- CJS lib/chunk-OZIREBYO.js 17.80 KB
18
+ CJS lib/chunk-K3DKN3IC.js 17.80 KB
20
19
  CJS lib/reviewAPIRequest.js 365.00 B
21
- CJS lib/chunk-BLZRHILW.js 37.63 KB
22
- CJS lib/chunk-TZJ54LD2.js 3.39 KB
20
+ CJS lib/chunk-XQD62EIW.js 37.63 KB
21
+ CJS lib/chunk-OXEPL2GL.js 3.39 KB
23
22
  CJS lib/utils.js 1.20 KB
24
- CJS lib/chunk-TBOMCYUR.js 35.45 KB
23
+ CJS lib/chunk-MM46PB5T.js 35.45 KB
25
24
  CJS lib/chunk-3L2XDBZ2.js 8.65 KB
26
25
  CJS lib/chunk-IAJMQIH7.js 396.00 B
27
26
  CJS lib/chunk-PZ5AY32C.js 314.00 B
28
- CJS lib/createHSMBridge.js.map 293.00 B
29
- CJS lib/types/index.js.map 269.00 B
30
27
  CJS lib/crypto/utils.js.map 281.00 B
31
- CJS lib/index.js.map 179.10 KB
32
- CJS lib/chunk-N6UGATIN.js.map 7.09 KB
28
+ CJS lib/types/index.js.map 269.00 B
29
+ CJS lib/createHSMBridge.js.map 293.00 B
30
+ CJS lib/chunk-7PAZRU3A.js.map 7.09 KB
31
+ CJS lib/index.js.map 178.14 KB
33
32
  CJS lib/recipeManifest.js.map 288.00 B
34
- CJS lib/chunk-OZIREBYO.js.map 36.53 KB
33
+ CJS lib/chunk-K3DKN3IC.js.map 36.53 KB
35
34
  CJS lib/reviewAPIRequest.js.map 308.00 B
36
- CJS lib/chunk-BLZRHILW.js.map 71.66 KB
37
- CJS lib/chunk-TZJ54LD2.js.map 5.19 KB
35
+ CJS lib/chunk-XQD62EIW.js.map 71.66 KB
36
+ CJS lib/chunk-OXEPL2GL.js.map 5.19 KB
37
+ CJS lib/chunk-MM46PB5T.js.map 67.03 KB
38
38
  CJS lib/utils.js.map 398.00 B
39
- CJS lib/chunk-TBOMCYUR.js.map 67.04 KB
40
39
  CJS lib/chunk-3L2XDBZ2.js.map 20.30 KB
41
- CJS lib/chunk-PZ5AY32C.js.map 479.00 B
42
40
  CJS lib/chunk-IAJMQIH7.js.map 52.69 KB
43
- CJS ⚡️ Build success in 916ms
44
- DTS ⚡️ Build success in 11847ms
41
+ CJS lib/chunk-PZ5AY32C.js.map 479.00 B
42
+ CJS ⚡️ Build success in 893ms
43
+ DTS Build start
44
+ DTS ⚡️ Build success in 11276ms
45
45
  DTS lib/createHSMBridge.d.ts 984.00 B
46
46
  DTS lib/index.d.ts 12.96 KB
47
47
  DTS lib/reviewAPIRequest.d.ts 836.00 B
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ledgerhq/vault-common
2
2
 
3
+ ## 2.4.6
4
+
5
+ ### Patch Changes
6
+
7
+ - 34784c5f: Change shape currency to eth
8
+
9
+ ## 2.4.5
10
+
11
+ ### Patch Changes
12
+
13
+ - b480c1b7: refactor: remove deprecation notice
14
+
3
15
  ## 2.4.4
4
16
 
5
17
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkTZJ54LD2js = require('./chunk-TZJ54LD2.js');
3
+ var _chunkOXEPL2GLjs = require('./chunk-OXEPL2GL.js');
4
4
 
5
5
  // src/createHSMBridge.ts
6
6
  var _vaultutils = require('@ledgerhq/vault-utils');
@@ -17,7 +17,7 @@ function createHSMBridge(options) {
17
17
  baseURL: hsmEndpoint,
18
18
  httpsAgent
19
19
  };
20
- const hsmNetwork = _chunkTZJ54LD2js.createNetwork.call(void 0, hsmNetworkOptions);
20
+ const hsmNetwork = _chunkOXEPL2GLjs.createNetwork.call(void 0, hsmNetworkOptions);
21
21
  const raw = _axios2.default.create({ baseURL: hsmEndpoint, httpsAgent });
22
22
  return {
23
23
  backupCompartment: async (cid) => {
@@ -85,4 +85,4 @@ var createHSMBridge_default = createHSMBridge;
85
85
 
86
86
 
87
87
  exports.createHSMBridge_default = createHSMBridge_default;
88
- //# sourceMappingURL=chunk-N6UGATIN.js.map
88
+ //# sourceMappingURL=chunk-7PAZRU3A.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-N6UGATIN.js","../src/createHSMBridge.ts"],"names":[],"mappings":"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","file":"/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-N6UGATIN.js","sourcesContent":[null,"import { SILENT_LOGGER } from \"@ledgerhq/vault-utils\";\nimport axios from \"axios\";\nimport https from \"https\";\n\nimport createNetwork from \"./createNetwork\";\nimport { RunnableOptions } from \"./types\";\n\ntype HSMBridge = {\n backupCompartment: (cid: number) => Promise<HSMCompartmentBackup>;\n restoreCompartment: (\n cid: number,\n data: HSMCompartmentBackup,\n options?: RunnableOptions,\n ) => Promise<void>;\n initCompartment: (options?: RunnableOptions & { cid?: number }) => Promise<number>;\n resetCompartment: (compartmentID: number, options: RunnableOptions) => Promise<void>;\n};\n\ntype HSMSlot = {\n id: number;\n userId: number;\n lastUsed: string;\n};\n\ntype CreateHSMBridgeOptions = {\n hsmEndpoint: string;\n hsmCert: Buffer;\n hsmCertKey: Buffer;\n monotonicCountersSize?: number;\n fileSystemSize?: number;\n};\n\ntype HSMCompartmentBackup = {\n internalfs: string;\n counters: string;\n};\n\nfunction createHSMBridge(options: CreateHSMBridgeOptions): HSMBridge {\n const { monotonicCountersSize, fileSystemSize } = options;\n\n const httpsAgent = new https.Agent({\n cert: options.hsmCert,\n key: options.hsmCertKey,\n });\n\n // cf hsmaas code\n const hsmEndpoint = options.hsmEndpoint.replace(\"/process\", \"\");\n\n const hsmNetworkOptions = {\n baseURL: hsmEndpoint,\n httpsAgent,\n };\n\n const hsmNetwork = createNetwork(hsmNetworkOptions);\n const raw = axios.create({ baseURL: hsmEndpoint, httpsAgent });\n\n return {\n backupCompartment: async (cid: number): Promise<HSMCompartmentBackup> => {\n const [internalfs, counters] = await Promise.all([\n raw.get<Buffer>(`/compartments/${cid}/internalfs`, { responseType: \"arraybuffer\" }),\n raw.get<Buffer>(`/compartments/${cid}/counters`, { responseType: \"arraybuffer\" }),\n ]);\n return {\n internalfs: internalfs.data.toString(\"hex\"),\n counters: counters.data.toString(\"hex\"),\n };\n },\n restoreCompartment: async (\n cid: number,\n data: HSMCompartmentBackup,\n { logger = SILENT_LOGGER }: RunnableOptions = {},\n ): Promise<void> => {\n logger.info(\"Restoring internalfs...\");\n await raw.put(`/compartments/${cid}/internalfs`, Buffer.from(data.internalfs, \"hex\"));\n logger.info(\"Restoring counters...\");\n await raw.put(`/compartments/${cid}/counters`, Buffer.from(data.counters, \"hex\"));\n logger.success(\"Successfully restored compartment\");\n },\n initCompartment: async ({\n logger = SILENT_LOGGER,\n cid,\n }: RunnableOptions & { cid?: number } = {}) => {\n const res = (await hsmNetwork(\"POST\", \"/compartments\", {\n ...(cid !== undefined ? { id: cid } : {}),\n })) as { id: number };\n logger.info(`Created compartment ${res.id}`);\n return res.id;\n },\n resetCompartment: async (\n compartmentID: number,\n { logger = SILENT_LOGGER }: RunnableOptions,\n ) => {\n try {\n await hsmNetwork(\"DELETE\", `/compartments/${compartmentID}`);\n logger.info(`Removed compartment ${compartmentID}`);\n } catch (err) {\n /* istanbul ignore next */\n // @ts-expect-error\n logger.info(`Arf! Problem deleting compartment apparently: ${err.toString()}`);\n /* istanbul ignore next */\n logger.info(\"But let's pretend we don't care and let's continue\");\n }\n try {\n const slots: HSMSlot[] = await hsmNetwork(\"GET\", \"/slots\");\n const compartmentSlots = slots.filter((slot) => slot.userId === compartmentID);\n for (let i = 0; i < compartmentSlots.length; i++) {\n const slot = compartmentSlots[i];\n /* istanbul ignore if */\n if (!slot) throw new Error(\"Invalid slot\");\n await hsmNetwork(\"DELETE\", `/slots/${slot.id}`);\n logger.info(`Removed slot ${slot.id}`);\n }\n } catch (err) {\n /* istanbul ignore next */\n // @ts-expect-error\n logger.info(`Ouch! Little error there: ${err.toString()}`);\n /* istanbul ignore next */\n logger.info(\"There was a problem getting slots, but let's continue anyway, i mean.\");\n }\n const payload = { id: compartmentID };\n if (monotonicCountersSize) {\n Object.assign(payload, { monotonicCountersSize });\n }\n if (fileSystemSize) {\n Object.assign(payload, { fileSystemSize });\n }\n await hsmNetwork(\"POST\", \"/compartments\", payload);\n logger.info(`Created compartment ${compartmentID}`);\n },\n };\n}\n\nexport default createHSMBridge;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-7PAZRU3A.js","../src/createHSMBridge.ts"],"names":[],"mappings":"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","file":"/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-7PAZRU3A.js","sourcesContent":[null,"import { SILENT_LOGGER } from \"@ledgerhq/vault-utils\";\nimport axios from \"axios\";\nimport https from \"https\";\n\nimport createNetwork from \"./createNetwork\";\nimport { RunnableOptions } from \"./types\";\n\ntype HSMBridge = {\n backupCompartment: (cid: number) => Promise<HSMCompartmentBackup>;\n restoreCompartment: (\n cid: number,\n data: HSMCompartmentBackup,\n options?: RunnableOptions,\n ) => Promise<void>;\n initCompartment: (options?: RunnableOptions & { cid?: number }) => Promise<number>;\n resetCompartment: (compartmentID: number, options: RunnableOptions) => Promise<void>;\n};\n\ntype HSMSlot = {\n id: number;\n userId: number;\n lastUsed: string;\n};\n\ntype CreateHSMBridgeOptions = {\n hsmEndpoint: string;\n hsmCert: Buffer;\n hsmCertKey: Buffer;\n monotonicCountersSize?: number;\n fileSystemSize?: number;\n};\n\ntype HSMCompartmentBackup = {\n internalfs: string;\n counters: string;\n};\n\nfunction createHSMBridge(options: CreateHSMBridgeOptions): HSMBridge {\n const { monotonicCountersSize, fileSystemSize } = options;\n\n const httpsAgent = new https.Agent({\n cert: options.hsmCert,\n key: options.hsmCertKey,\n });\n\n // cf hsmaas code\n const hsmEndpoint = options.hsmEndpoint.replace(\"/process\", \"\");\n\n const hsmNetworkOptions = {\n baseURL: hsmEndpoint,\n httpsAgent,\n };\n\n const hsmNetwork = createNetwork(hsmNetworkOptions);\n const raw = axios.create({ baseURL: hsmEndpoint, httpsAgent });\n\n return {\n backupCompartment: async (cid: number): Promise<HSMCompartmentBackup> => {\n const [internalfs, counters] = await Promise.all([\n raw.get<Buffer>(`/compartments/${cid}/internalfs`, { responseType: \"arraybuffer\" }),\n raw.get<Buffer>(`/compartments/${cid}/counters`, { responseType: \"arraybuffer\" }),\n ]);\n return {\n internalfs: internalfs.data.toString(\"hex\"),\n counters: counters.data.toString(\"hex\"),\n };\n },\n restoreCompartment: async (\n cid: number,\n data: HSMCompartmentBackup,\n { logger = SILENT_LOGGER }: RunnableOptions = {},\n ): Promise<void> => {\n logger.info(\"Restoring internalfs...\");\n await raw.put(`/compartments/${cid}/internalfs`, Buffer.from(data.internalfs, \"hex\"));\n logger.info(\"Restoring counters...\");\n await raw.put(`/compartments/${cid}/counters`, Buffer.from(data.counters, \"hex\"));\n logger.success(\"Successfully restored compartment\");\n },\n initCompartment: async ({\n logger = SILENT_LOGGER,\n cid,\n }: RunnableOptions & { cid?: number } = {}) => {\n const res = (await hsmNetwork(\"POST\", \"/compartments\", {\n ...(cid !== undefined ? { id: cid } : {}),\n })) as { id: number };\n logger.info(`Created compartment ${res.id}`);\n return res.id;\n },\n resetCompartment: async (\n compartmentID: number,\n { logger = SILENT_LOGGER }: RunnableOptions,\n ) => {\n try {\n await hsmNetwork(\"DELETE\", `/compartments/${compartmentID}`);\n logger.info(`Removed compartment ${compartmentID}`);\n } catch (err) {\n /* istanbul ignore next */\n // @ts-expect-error\n logger.info(`Arf! Problem deleting compartment apparently: ${err.toString()}`);\n /* istanbul ignore next */\n logger.info(\"But let's pretend we don't care and let's continue\");\n }\n try {\n const slots: HSMSlot[] = await hsmNetwork(\"GET\", \"/slots\");\n const compartmentSlots = slots.filter((slot) => slot.userId === compartmentID);\n for (let i = 0; i < compartmentSlots.length; i++) {\n const slot = compartmentSlots[i];\n /* istanbul ignore if */\n if (!slot) throw new Error(\"Invalid slot\");\n await hsmNetwork(\"DELETE\", `/slots/${slot.id}`);\n logger.info(`Removed slot ${slot.id}`);\n }\n } catch (err) {\n /* istanbul ignore next */\n // @ts-expect-error\n logger.info(`Ouch! Little error there: ${err.toString()}`);\n /* istanbul ignore next */\n logger.info(\"There was a problem getting slots, but let's continue anyway, i mean.\");\n }\n const payload = { id: compartmentID };\n if (monotonicCountersSize) {\n Object.assign(payload, { monotonicCountersSize });\n }\n if (fileSystemSize) {\n Object.assign(payload, { fileSystemSize });\n }\n await hsmNetwork(\"POST\", \"/compartments\", payload);\n logger.info(`Created compartment ${compartmentID}`);\n },\n };\n}\n\nexport default createHSMBridge;\n"]}
@@ -3,7 +3,7 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkTBOMCYURjs = require('./chunk-TBOMCYUR.js');
6
+ var _chunkMM46PB5Tjs = require('./chunk-MM46PB5T.js');
7
7
 
8
8
  // src/recipeManifest.ts
9
9
  var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
@@ -148,31 +148,31 @@ async function recipeManifest(pool, options = {}) {
148
148
  })
149
149
  )
150
150
  ]);
151
- const pendingUserRequests = _chunkTBOMCYURjs.unwrapConnection.call(void 0, pendingUserRequestsConnection);
152
- const users = _sortBy2.default.call(void 0, _chunkTBOMCYURjs.unwrapConnection.call(void 0, usersConnection), "id");
153
- const groups = _chunkTBOMCYURjs.unwrapConnection.call(void 0, groupsConnection);
154
- const whitelists = _chunkTBOMCYURjs.unwrapConnection.call(void 0, whitelistsConnection);
155
- const accounts = _sortBy2.default.call(void 0, _chunkTBOMCYURjs.unwrapConnection.call(void 0, accountsConnection), "index");
156
- const vaultEntities = _chunkTBOMCYURjs.unwrapConnection.call(void 0, vaultEntitiesConnection);
157
- const exchanges = _chunkTBOMCYURjs.unwrapConnection.call(void 0, exchangesConnection);
158
- const policies = _chunkTBOMCYURjs.unwrapConnection.call(void 0, policiesConnection);
159
- const tradelinkCustodians = _chunkTBOMCYURjs.unwrapConnection.call(void 0,
151
+ const pendingUserRequests = _chunkMM46PB5Tjs.unwrapConnection.call(void 0, pendingUserRequestsConnection);
152
+ const users = _sortBy2.default.call(void 0, _chunkMM46PB5Tjs.unwrapConnection.call(void 0, usersConnection), "id");
153
+ const groups = _chunkMM46PB5Tjs.unwrapConnection.call(void 0, groupsConnection);
154
+ const whitelists = _chunkMM46PB5Tjs.unwrapConnection.call(void 0, whitelistsConnection);
155
+ const accounts = _sortBy2.default.call(void 0, _chunkMM46PB5Tjs.unwrapConnection.call(void 0, accountsConnection), "index");
156
+ const vaultEntities = _chunkMM46PB5Tjs.unwrapConnection.call(void 0, vaultEntitiesConnection);
157
+ const exchanges = _chunkMM46PB5Tjs.unwrapConnection.call(void 0, exchangesConnection);
158
+ const policies = _chunkMM46PB5Tjs.unwrapConnection.call(void 0, policiesConnection);
159
+ const tradelinkCustodians = _chunkMM46PB5Tjs.unwrapConnection.call(void 0,
160
160
  tradelinkCustodianConnection
161
161
  );
162
- const tradelinkHSMCustodians = _chunkTBOMCYURjs.unwrapConnection.call(void 0, tradelinkHSMCustodianConnection);
163
- const tradelinkExchanges = _chunkTBOMCYURjs.unwrapConnection.call(void 0,
162
+ const tradelinkHSMCustodians = _chunkMM46PB5Tjs.unwrapConnection.call(void 0, tradelinkHSMCustodianConnection);
163
+ const tradelinkExchanges = _chunkMM46PB5Tjs.unwrapConnection.call(void 0,
164
164
  tradelinkExchangeConnection
165
165
  );
166
- const tradelinkHSMExchanges = _chunkTBOMCYURjs.unwrapConnection.call(void 0,
166
+ const tradelinkHSMExchanges = _chunkMM46PB5Tjs.unwrapConnection.call(void 0,
167
167
  tradelinkHSMExchangeConnection
168
168
  );
169
- const tradelinkHSMAssetManagers = _chunkTBOMCYURjs.unwrapConnection.call(void 0,
169
+ const tradelinkHSMAssetManagers = _chunkMM46PB5Tjs.unwrapConnection.call(void 0,
170
170
  tradelinkHSMAssetManagerConnection
171
171
  );
172
- const tradelinkAssetManagers = _chunkTBOMCYURjs.unwrapConnection.call(void 0,
172
+ const tradelinkAssetManagers = _chunkMM46PB5Tjs.unwrapConnection.call(void 0,
173
173
  tradelinkAssetManagerConnection
174
174
  );
175
- const allWorkspaceRules = _chunkTBOMCYURjs.unwrapConnection.call(void 0, allWorkspaceRulesConnection);
175
+ const allWorkspaceRules = _chunkMM46PB5Tjs.unwrapConnection.call(void 0, allWorkspaceRulesConnection);
176
176
  const rootWorkspaceRule = _nullishCoalesce(allWorkspaceRules.find((r) => r.permission === "ROOT"), () => ( null));
177
177
  const apiAdminWorkspaceRules = allWorkspaceRules.filter((r) => r.permission !== "ROOT");
178
178
  const groupsByName = _keyBy2.default.call(void 0, groups, (group) => group.name);
@@ -230,7 +230,7 @@ async function recipeManifest(pool, options = {}) {
230
230
  return { ...acc, [curr.user.id]: curr.deviceIndex };
231
231
  }, {});
232
232
  const customUsernames = [..._admins, ...operators].reduce((acc, curr) => {
233
- if (_chunkTBOMCYURjs.getDefaultUsername.call(void 0, curr.user.role === "ADMIN" ? "admin" : "operator", curr.deviceIndex) === curr.user.username) {
233
+ if (_chunkMM46PB5Tjs.getDefaultUsername.call(void 0, curr.user.role === "ADMIN" ? "admin" : "operator", curr.deviceIndex) === curr.user.username) {
234
234
  return acc;
235
235
  }
236
236
  return { ...acc, [curr.deviceIndex]: curr.user.username };
@@ -402,7 +402,7 @@ function pickNonEmpty(obj) {
402
402
  return out;
403
403
  }
404
404
  function extractRules(gateGovRules, _currency, operatorsDevicesByID) {
405
- const currency = _currency ? _chunkTBOMCYURjs.getCryptoCurrencyById.call(void 0, _currency) : null;
405
+ const currency = _currency ? _chunkMM46PB5Tjs.getCryptoCurrencyById.call(void 0, _currency) : null;
406
406
  const unit = currency ? currency.units[0] : null;
407
407
  const governance_rules = gateGovRules || [];
408
408
  let rulesSets = governance_rules.map((r) => {
@@ -411,8 +411,8 @@ function extractRules(gateGovRules, _currency, operatorsDevicesByID) {
411
411
  _invariant2.default.call(void 0, unit, "Unit must be defined for THRESHOLD rule");
412
412
  const thresholdRule = {
413
413
  type: "THRESHOLD",
414
- ...rule.data[0].min ? { min: _chunkTBOMCYURjs.deserializeUnitValue.call(void 0, unit, rule.data[0].min) } : {},
415
- ...rule.data[0].max ? { max: _chunkTBOMCYURjs.deserializeUnitValue.call(void 0, unit, rule.data[0].max) } : {}
414
+ ...rule.data[0].min ? { min: _chunkMM46PB5Tjs.deserializeUnitValue.call(void 0, unit, rule.data[0].min) } : {},
415
+ ...rule.data[0].max ? { max: _chunkMM46PB5Tjs.deserializeUnitValue.call(void 0, unit, rule.data[0].max) } : {}
416
416
  };
417
417
  return thresholdRule;
418
418
  }
@@ -501,4 +501,4 @@ function countAPIUsersUntil(index, users) {
501
501
 
502
502
 
503
503
  exports.getDeviceIndex = getDeviceIndex; exports.recipeManifest = recipeManifest;
504
- //# sourceMappingURL=chunk-OZIREBYO.js.map
504
+ //# sourceMappingURL=chunk-K3DKN3IC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-OZIREBYO.js","../src/recipeManifest.ts"],"names":[],"mappings":"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","file":"/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-OZIREBYO.js","sourcesContent":[null,"import invariant from \"invariant\";\nimport keyBy from \"lodash/keyBy\";\nimport sortBy from \"lodash/sortBy\";\n\nimport { getCryptoCurrencyById } from \"./currencies\";\nimport {\n GateGovernanceRulesSet,\n GateTradelink,\n GateTradelinkAssetManager,\n GateTradelinkEntity,\n GateTradelinkExchange,\n GateTradelinkNetwork,\n GateTradelinkOnboardingStatus,\n GateWorkspacePermission,\n GateWorkspaceRule,\n ManifestAccountRuleCreateSplTokenAccount,\n ManifestAccountRuleTransferSplToken,\n ManifestWorkspaceRule,\n} from \"./types\";\nimport {\n Connection,\n DevicesPool,\n GateAccount,\n GateExchange,\n GateGroup,\n GatePolicy,\n GateUser,\n GateUserRequest,\n GateVaultEntity,\n GateWhitelist,\n Manifest,\n ManifestAccountConfig,\n ManifestAccountRule,\n ManifestAccountRuleCardanoStaking,\n ManifestAccountRuleDeployContract,\n ManifestAccountRuleMessageSigning,\n ManifestAccountRuleMultiAuth,\n ManifestAccountRulePolkadotStaking,\n ManifestAccountRuleRawSigning,\n ManifestAccountRuleSCI,\n ManifestAccountRuleSolanaStaking,\n ManifestAccountRuleStake,\n ManifestAccountRuleTezosDelegation,\n ManifestAccountRuleThreshold,\n ManifestAccountRuleWhitelist,\n ManifestExchange,\n ManifestPolicy,\n ManifestWhitelistAddress,\n Organization,\n UserWithDevice,\n UserWithoutDevice,\n} from \"./types\";\nimport { getDefaultUsername } from \"./utils\";\nimport { deserializeUnitValue, unwrapConnection } from \"./utils\";\n\nconst ADMIN_START_DEVICE_INDEX = 4;\nconst DEFAULT_ADMINS_COUNT = 3;\nconst NB_SHARED_OWNERS = 3;\n\nexport const getDeviceIndex = (index: number): number => {\n const n = ADMIN_START_DEVICE_INDEX + index;\n if (n < ADMIN_START_DEVICE_INDEX + NB_SHARED_OWNERS) {\n return n;\n }\n return n + NB_SHARED_OWNERS;\n};\n\nexport type GateGroupsByName = Record<string, GateGroup>;\nexport type GateWhitelistsByName = Record<string, GateWhitelist>;\nexport type GateAccountsByName = Record<string, GateAccount>;\nexport type GateVaultEntitiesByName = Record<string, GateVaultEntity>;\nexport type GateExchangesByName = Record<string, GateExchange>;\nexport type GatePoliciesByName = Record<string, GatePolicy>;\nexport type GateTradelinkCustodianByName = Record<string, GateTradelinkEntity<\"CUSTODIAN\">>;\nexport type GateTradelinkHSMCustodianByName = Record<string, GateTradelink>;\nexport type GateTradelinkExchangeByName = Record<string, GateTradelinkEntity<\"EXCHANGE\">>;\nexport type GateTradelinkHSMExchangeByName = Record<string, GateTradelinkExchange>;\nexport type GateTradelinkHSMAssetManagerByName = Record<string, GateTradelinkAssetManager>;\nexport type GateTradelinkAssetManagerByName = Record<string, GateTradelinkEntity<\"ASSET_MANAGER\">>;\n\nexport type RecipeRawData = {\n pendingUserRequests: GateUserRequest[];\n groupsByName: GateGroupsByName;\n whitelistsByName: GateWhitelistsByName;\n accountsByName: GateAccountsByName;\n vaultEntitiesByName: GateVaultEntitiesByName;\n exchangesByName: GateExchangesByName;\n policiesByName: GatePoliciesByName;\n usersWithDevice: UserWithDevice[];\n usersWithoutDevice: UserWithoutDevice[];\n tradelinkCustodiansByName: GateTradelinkCustodianByName;\n tradelinkHSMCustodiansByName: GateTradelinkHSMCustodianByName;\n tradelinkExchangesByName: GateTradelinkExchangeByName;\n tradelinkHSMExchangesByName: GateTradelinkHSMExchangeByName;\n tradelinkHSMAssetManagersByName: GateTradelinkHSMAssetManagerByName;\n tradelinkAssetManagersByName: GateTradelinkAssetManagerByName;\n tradelinkNetwork: GateTradelinkNetwork;\n tradelinkOnboardingStatus: GateTradelinkOnboardingStatus;\n};\n\nexport type RecipeManifestResult = {\n manifest: Manifest;\n rawData: RecipeRawData;\n};\n\nexport type RecipeManifestOptions = {\n saveAccountsIndexes?: boolean;\n saveAccountsTypes?: boolean;\n};\n\nexport default async function recipeManifest(\n pool: DevicesPool,\n options: RecipeManifestOptions = {},\n): Promise<RecipeManifestResult> {\n const adminDevices = await pool.getOnboardingAdminDevices();\n const admin = await pool.login(adminDevices[0]![1]);\n const [\n organization,\n pendingUserRequestsConnection,\n usersConnection,\n groupsConnection,\n accountsConnection,\n vaultEntitiesConnection,\n whitelistsConnection,\n exchangesConnection,\n policiesConnection,\n tradelinkCustodianConnection,\n tradelinkHSMCustodianConnection,\n tradelinkExchangeConnection,\n tradelinkHSMExchangeConnection,\n tradelinkHSMAssetManagerConnection,\n tradelinkAssetManagerConnection,\n tradelinkNetwork,\n tradelinkOnboardingStatus,\n allWorkspaceRulesConnection,\n ] = await Promise.all([\n admin.network<Organization>(\"GET\", \"/organization\"),\n admin\n .network<Connection<GateUserRequest>>(\n \"GET\",\n `/requests?type=CREATE_ADMIN&type=CREATE_OPERATOR&type=CREATE_API_USER&status=PENDING_REGISTRATION&status=PENDING_APPROVAL`,\n )\n // for some reason this particular one can fail when targeting prod (not sure why)\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin.network<Connection<GateUser>>(\n \"GET\",\n \"/people?status=ACTIVE&status=ACCESS_SUSPENDED&role=ADMIN&role=OPERATOR&pageSize=-1\",\n ),\n admin.network<Connection<GateGroup>>(\"GET\", \"/groups?pageSize=-1\"),\n admin.network<Connection<GateAccount>>(\n \"GET\",\n \"/accounts?status=ACTIVE&status=APPROVED&status=PENDING&status=VIEW_ONLY&pageSize=-1\",\n ),\n admin.network<Connection<GateVaultEntity>>(\"GET\", \"/entities?pageSize=-1\"),\n admin.network<Connection<GateWhitelist>>(\"GET\", \"/whitelists?pageSize=-1\"),\n admin\n .network<Connection<GateExchange>>(\"GET\", \"/exchanges?pageSize=-1\")\n // handle case where /exchanges is not supported by Gate\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin\n .network<Connection<GatePolicy>>(\"GET\", \"/policies?pageSize=-1\")\n // handle case where /policies is not supported by Gate\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin\n .network<Connection<GateTradelinkEntity<\"CUSTODIAN\">>>(\"GET\", \"/tradelink/custodians\")\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin.network<Connection<GateTradelink>>(\"GET\", \"/tradelink/hsm-custodians\").catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n\n admin.network<Connection<GateTradelinkEntity<\"EXCHANGE\">>>(\"GET\", \"/tradelink/exchanges\").catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin.network<Connection<GateTradelinkExchange>>(\"GET\", \"/tradelink/hsm-exchanges\").catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin\n .network<Connection<GateTradelinkAssetManager>>(\"GET\", \"/tradelink/hsm-asset-managers\")\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin\n .network<Connection<GateTradelinkEntity<\"ASSET_MANAGER\">>>(\"GET\", \"/tradelink/asset_managers\")\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin.network<GateTradelinkNetwork>(\"GET\", \"/tradelink/network\").catch(\n /* istanbul ignore next */ () => ({\n id: \"\",\n asset_managers: [],\n custodian: {\n approver_group_id: 0,\n code: \"\",\n id: \"\",\n logo_url: \"\",\n name: \"\",\n whitelist_id: 0,\n },\n exchanges: [],\n }),\n ),\n admin\n .network<GateTradelinkOnboardingStatus>(\"GET\", \"/tradelink/onboarding\")\n .catch(\n /* istanbul ignore next */ (): GateTradelinkOnboardingStatus => ({ status: \"NOT_READY\" }),\n ),\n admin.network<Connection<GateWorkspaceRule>>(\"GET\", \"/workspace-rules\").catch(\n /* istanbul ignore next */ (): Connection<GateWorkspaceRule> => ({\n edges: [],\n pageInfo: { count: 0, hasNextPage: false },\n }),\n ),\n ]);\n\n const pendingUserRequests: GateUserRequest[] = unwrapConnection(pendingUserRequestsConnection);\n const users: GateUser[] = sortBy(unwrapConnection(usersConnection), \"id\");\n const groups: GateGroup[] = unwrapConnection(groupsConnection);\n const whitelists: GateWhitelist[] = unwrapConnection(whitelistsConnection);\n const accounts: GateAccount[] = sortBy(unwrapConnection(accountsConnection), \"index\");\n const vaultEntities: GateVaultEntity[] = unwrapConnection(vaultEntitiesConnection);\n const exchanges: GateExchange[] = unwrapConnection(exchangesConnection);\n const policies: GatePolicy[] = unwrapConnection(policiesConnection);\n const tradelinkCustodians: GateTradelinkEntity<\"CUSTODIAN\">[] = unwrapConnection(\n tradelinkCustodianConnection,\n );\n const tradelinkHSMCustodians: GateTradelink[] = unwrapConnection(tradelinkHSMCustodianConnection);\n const tradelinkExchanges: GateTradelinkEntity<\"EXCHANGE\">[] = unwrapConnection(\n tradelinkExchangeConnection,\n );\n const tradelinkHSMExchanges: GateTradelinkExchange[] = unwrapConnection(\n tradelinkHSMExchangeConnection,\n );\n const tradelinkHSMAssetManagers: GateTradelinkAssetManager[] = unwrapConnection(\n tradelinkHSMAssetManagerConnection,\n );\n const tradelinkAssetManagers: GateTradelinkEntity<\"ASSET_MANAGER\">[] = unwrapConnection(\n tradelinkAssetManagerConnection,\n );\n const allWorkspaceRules = unwrapConnection(allWorkspaceRulesConnection);\n const rootWorkspaceRule = allWorkspaceRules.find((r) => r.permission === \"ROOT\") ?? null;\n const apiAdminWorkspaceRules = allWorkspaceRules.filter((r) => r.permission !== \"ROOT\");\n\n const groupsByName = keyBy(groups, (group) => group.name);\n const whitelistsByName = keyBy(whitelists, (w) => w.name);\n const accountsByName = keyBy(accounts, (a) => a.name);\n const vaultEntitiesByName = keyBy(vaultEntities, (e) => e.name);\n const exchangesByName = keyBy(exchanges, (e) => e.name);\n const policiesByName = keyBy(policies, (e) => e.name);\n const tradelinkCustodiansByName = keyBy(tradelinkCustodians, (e) => e.name);\n const tradelinkHSMCustodiansByName = keyBy(\n tradelinkHSMCustodians,\n (e) => e.network.custodian.name,\n );\n const tradelinkExchangesByName = keyBy(tradelinkExchanges, (e) => e.name);\n const tradelinkHSMExchangesByName = keyBy(tradelinkHSMExchanges, (e) => e.hsm_data.name);\n const tradelinkHSMAssetManagersByName = keyBy(tradelinkHSMAssetManagers, (e) => e.hsm_data.name);\n const tradelinkAssetManagersByName = keyBy(tradelinkAssetManagers, (e) => e.name);\n\n // gate is sending all active users by order of creation\n // we rely on index in the reduce() to get the device index assuming we take them in order\n //\n // FIXME there is something weird with the typing of this reduce :(\n // @ts-ignore\n const {\n admins: _admins,\n operators,\n apiUsers,\n apiV2Users,\n }: {\n admins: Array<{ deviceIndex: number; user: GateUser }>;\n operators: Array<{ deviceIndex: number; user: GateUser }>;\n apiUsers: Array<{ deviceIndex: number; user: GateUser }>;\n apiV2Users: Array<{ username: string; user: GateUser }>;\n } = users.reduce(\n (acc, curr, index) =>\n // @ts-ignore\n curr.device_type === \"API\"\n ? {\n ...acc,\n apiV2Users: [...acc.apiV2Users, { deviceIndex: curr.username, user: curr }],\n }\n : curr.role === \"ADMIN\"\n ? {\n ...acc,\n admins: [\n ...acc.admins,\n {\n deviceIndex: getDeviceIndex(index - countAPIUsersUntil(index, users)),\n user: curr,\n },\n ],\n }\n : curr.device_type === \"SOFT_PSD\"\n ? {\n ...acc,\n apiUsers: [...acc.apiUsers, { deviceIndex: curr.username, user: curr }],\n }\n : {\n ...acc,\n operators: [\n ...acc.operators,\n {\n deviceIndex: getDeviceIndex(index - countAPIUsersUntil(index, users)),\n user: curr,\n },\n ],\n },\n { admins: [], operators: [], apiUsers: [], apiV2Users: [] },\n );\n\n const operatorsDevicesByID: Record<string, number> = operators.reduce((acc, curr) => {\n return { ...acc, [curr.user.id]: curr.deviceIndex };\n }, {});\n\n const customUsernames = [..._admins, ...operators].reduce((acc, curr) => {\n // don't assign custom username if user has default name\n if (\n getDefaultUsername(curr.user.role === \"ADMIN\" ? \"admin\" : \"operator\", curr.deviceIndex) ===\n curr.user.username\n ) {\n return acc;\n }\n return { ...acc, [curr.deviceIndex]: curr.user.username };\n }, {});\n\n const admins = _admins\n // remove admins 4, 5, 6, they are implicitly created during onboarding\n // we still want to fetch them first to eventually collect custom usernames\n .filter((_, i) => i > DEFAULT_ADMINS_COUNT - 1);\n\n const usersManifest = {\n operators: operators.map((o) => o.deviceIndex),\n admins: admins.map((a) => a.deviceIndex),\n api: apiUsers.map((a) =>\n a.user.view_all_override\n ? {\n name: a.user.username,\n viewAll: true,\n }\n : a.user.username,\n ),\n apiV2: apiV2Users.map((a) => ({\n role: a.user.role,\n name: a.user.username,\n ...(a.user.pub_key ? { publicKey: a.user.pub_key } : {}),\n ...(a.user.view_all_override ? { viewAll: true } : {}),\n })),\n };\n\n // we assume that if ROOT workspace rule exist, we take the workspace quorum from there,\n // else, we take it from the legacy \"organization\" object\n const quorum = rootWorkspaceRule ? rootWorkspaceRule.steps[0]!.quorum : organization.quorum;\n\n const manifestWorkspaceRules: ManifestWorkspaceRule[] = apiAdminWorkspaceRules\n .map((rule) => ({\n permission: rule.permission as Exclude<GateWorkspacePermission, \"ROOT\">,\n steps: rule.steps.map((gateStep) => ({\n quorum: gateStep.quorum,\n users: gateStep.users.map((pubKey) => {\n const user = users.find((u) => u.pub_key === pubKey);\n invariant(\n user,\n `Can't find user with pub key ${pubKey} referenced in workspace rule ${rule.permission}`,\n );\n return user.username;\n }),\n })),\n }))\n .filter((rule) => {\n // only output the rules that have users defined\n return rule.steps.length > 0;\n });\n\n const fullManifest: Manifest = {\n quorum: quorum === 2 ? undefined : quorum,\n customUsernames,\n users: usersManifest,\n workspaceRules: manifestWorkspaceRules,\n groups: groups\n .filter((g) => g.status === \"ACTIVE\")\n .map((g) => ({\n name: g.name,\n description: g.description,\n users: g.members.map((m) => (m.is_api ? m.username : operatorsDevicesByID[m.id]!)),\n })),\n whitelists: whitelists\n .filter((w) => w.status === \"ACTIVE\")\n .map((w) => ({\n name: w.name,\n description: w.description,\n type: w.whitelist_type,\n addresses: w.addresses.map(\n (a): ManifestWhitelistAddress => ({\n name: a.name,\n address: a.address,\n currency: a.currency,\n destination_tags: a.destination_tags,\n }),\n ),\n })),\n accounts: accounts\n // we want to get rid of VIEW_ONLY account see #76\n .filter((a) => a.status === \"ACTIVE\")\n .map((a) => ({\n name: a.name,\n currency: a.currency,\n ...(options.saveAccountsTypes ? { accountType: a.account_type } : {}),\n derivationMode: a.derivation_mode === \"STANDARD\" ? undefined : a.derivation_mode,\n contractAddress: a.contract_address || undefined,\n ...(options.saveAccountsIndexes ? { index: a.index } : {}),\n ...(a.parent\n ? {\n parentAccount: (() => {\n const parentAccount = accounts.find((acc) => acc.id === a.parent);\n /* istanbul ignore if */\n if (!parentAccount) {\n throw new Error(`Can't find parent account with id ${a.parent}`);\n }\n if (parentAccount.status !== \"ACTIVE\") {\n return undefined;\n }\n return parentAccount.name;\n })(),\n }\n : {}),\n rules: extractRules(a.governance_rules, a.currency, operatorsDevicesByID),\n ...(() => {\n const config: ManifestAccountConfig = {};\n\n if (a.nfts_gallery_enabled) {\n config.nftGallery = true;\n }\n\n const hasConfig = Object.keys(config).length > 0;\n return hasConfig ? { config } : {};\n })(),\n })),\n entities: vaultEntities\n .filter((e) => e.status === \"ACTIVE\")\n .map((e) => ({\n name: e.name,\n accounts: e.accounts.map((a) => a.name),\n })),\n exchanges: exchanges\n .filter((e) => e.status === \"ACTIVE\")\n .map(\n (e): ManifestExchange => ({\n name: e.name,\n platform: e.platform,\n configuration: {\n apiKey: \"<not-retrievable>\",\n apiSecret: \"<not-retrievable>\",\n },\n }),\n ),\n policies: policies.map((p): ManifestPolicy => {\n return {\n name: p.name,\n ...(p.currency ? { currency: p.currency } : {}),\n rules: extractRules(p.governance_rules, p.currency, operatorsDevicesByID),\n status: p.status,\n };\n }),\n };\n\n // clean out un-necessary keys\n const manifest = pickNonEmpty(fullManifest);\n\n return {\n manifest,\n rawData: {\n pendingUserRequests,\n groupsByName,\n whitelistsByName,\n accountsByName,\n vaultEntitiesByName,\n usersWithDevice: [..._admins, ...operators, ...apiUsers],\n usersWithoutDevice: [...apiV2Users],\n exchangesByName,\n policiesByName,\n tradelinkCustodiansByName,\n tradelinkHSMCustodiansByName,\n tradelinkExchangesByName,\n tradelinkHSMExchangesByName,\n tradelinkHSMAssetManagersByName,\n tradelinkAssetManagersByName,\n tradelinkNetwork,\n tradelinkOnboardingStatus,\n },\n };\n}\n\n// recursively create a minimal object (removing empty arrays etc.)\n// yeah.. lot of @ts-ignore in the function!\nfunction pickNonEmpty<T extends Record<string, any>>(obj: T) {\n const out = {};\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n /* istanbul ignore if */\n if (!key) throw new Error(`Invalid key at index ${i}`);\n const val = obj[key];\n // @ts-ignore\n const getSanitized = (val: any) => {\n /* istanbul ignore if */\n if (val === null) {\n return;\n } else if (Array.isArray(val)) {\n // @ts-ignore\n const withoutEmpty = val.map(getSanitized).filter((v) => v !== undefined);\n if (withoutEmpty.length > 0) {\n return withoutEmpty;\n }\n } else if (typeof val === \"object\") {\n // @ts-ignore\n const subObj: Record<string, unknown> = val;\n const nonEmptyVal = pickNonEmpty(subObj);\n const nbKeys = Object.keys(nonEmptyVal).length;\n if (nbKeys > 0) {\n return nonEmptyVal;\n }\n } else if (val !== undefined) {\n return val;\n }\n };\n const sanitized = getSanitized(val);\n if (sanitized !== undefined) {\n // @ts-ignore\n out[key] = sanitized;\n }\n }\n return out;\n}\n\nfunction extractRules(\n gateGovRules: GateGovernanceRulesSet[] | null,\n _currency: string | null,\n operatorsDevicesByID: Record<string, number>,\n): ManifestAccountRule[][] {\n const currency = _currency ? getCryptoCurrencyById(_currency) : null;\n const unit = currency ? currency.units[0]! : null;\n const governance_rules = gateGovRules || [];\n let rulesSets = governance_rules.map((r) => {\n const rules = r.rules.map((rule) => {\n if (rule.type === \"THRESHOLD\") {\n invariant(unit, \"Unit must be defined for THRESHOLD rule\");\n const thresholdRule: ManifestAccountRuleThreshold = {\n type: \"THRESHOLD\",\n ...(rule.data[0].min ? { min: deserializeUnitValue(unit, rule.data[0].min) } : {}),\n ...(rule.data[0].max ? { max: deserializeUnitValue(unit, rule.data[0].max) } : {}),\n };\n return thresholdRule;\n }\n if (rule.type === \"WHITELIST\") {\n const whitelistRule: ManifestAccountRuleWhitelist = {\n type: \"WHITELIST\",\n whitelists: rule.data.map((d) => d.name),\n };\n return whitelistRule;\n }\n if (rule.type === \"MULTI_AUTHORIZATIONS\") {\n const multiAuthRule: ManifestAccountRuleMultiAuth = {\n type: \"MULTI_AUTHORIZATIONS\",\n steps: rule.data.map((s) => ({\n quorum: s.quorum,\n ...(s.group.is_internal\n ? {\n users: s.group.members.map((m) => {\n const u = m.is_api ? m.username : operatorsDevicesByID[m.id];\n /* istanbul ignore if */\n if (!u) throw new Error(`Invalid user ${m}`);\n return u;\n }),\n }\n : { group: s.group.name }),\n })),\n };\n return multiAuthRule;\n }\n if (rule.type === \"SMART_CONTRACT_INTERACTION\") {\n const sciRule: ManifestAccountRuleSCI = {\n type: \"SMART_CONTRACT_INTERACTION\",\n enabled: rule.data[0].enabled,\n };\n return sciRule;\n }\n if (rule.type === \"TRANSACTION_FILTER\") {\n switch (rule.data.preset) {\n case \"TEZOS_DELEGATION\":\n return { type: \"TEZOS_DELEGATION\" } as ManifestAccountRuleTezosDelegation;\n case \"POLKADOT_STAKING\":\n return { type: \"POLKADOT_STAKING\" } as ManifestAccountRulePolkadotStaking;\n case \"SOLANA_STAKING\":\n return { type: \"SOLANA_STAKING\" } as ManifestAccountRuleSolanaStaking;\n case \"CARDANO_STAKING\":\n return { type: \"CARDANO_STAKING\" } as ManifestAccountRuleCardanoStaking;\n case \"RAW_SIGNING\":\n return { type: \"RAW_SIGNING\" } as ManifestAccountRuleRawSigning;\n case \"CREATE_SPL_TOKEN_ACCOUNT\":\n return { type: \"CREATE_SPL_TOKEN_ACCOUNT\" } as ManifestAccountRuleCreateSplTokenAccount;\n case \"TRANSFER_SPL_TOKEN\":\n return {\n type: \"TRANSFER_SPL_TOKEN\",\n contractAddress: rule.data.contract_address,\n } as ManifestAccountRuleTransferSplToken;\n case \"SEND\":\n // VG-18271 don't recipe \"SEND\" rule as it's the default\n return null;\n case \"STAKE\":\n return { type: \"STAKE\" } as ManifestAccountRuleStake;\n case \"MESSAGE_SIGNING\":\n return { type: \"MESSAGE_SIGNING\" } as ManifestAccountRuleMessageSigning;\n case \"DEPLOY_CONTRACT\":\n return { type: \"DEPLOY_CONTRACT\" } as ManifestAccountRuleDeployContract;\n }\n }\n // @ts-ignore\n throw new Error(`Unknown rule type ${rule.type}`);\n });\n return rules.filter(Boolean) as ManifestAccountRule[];\n });\n\n // see VG-22141\n rulesSets = enforceSCIRuleIfNecessary(rulesSets);\n\n return rulesSets;\n}\n\n// Enforce that if a RulesSet have a SCI-enabled rule, all the other RulesSet should have\n// a SCI-disabled rule\n//\n// see VG-22141\n//\nfunction enforceSCIRuleIfNecessary(rulesSets: ManifestAccountRule[][]): ManifestAccountRule[][] {\n const hasSCIRulesSet = rulesSets.find((rulesSet) =>\n rulesSet.find((rule) => rule.type === \"SMART_CONTRACT_INTERACTION\" && rule.enabled),\n );\n if (!hasSCIRulesSet) return rulesSets;\n return rulesSets.map((rulesSet) => {\n const sciRule = rulesSet.find((r) => r.type === \"SMART_CONTRACT_INTERACTION\");\n if (sciRule) return rulesSet;\n return [...rulesSet, { type: \"SMART_CONTRACT_INTERACTION\", enabled: false }];\n });\n}\n\nfunction countAPIUsersUntil(index: number, users: GateUser[]) {\n return users.slice(0, index).filter((u) => u.is_api).length;\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-K3DKN3IC.js","../src/recipeManifest.ts"],"names":[],"mappings":"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","file":"/home/runner/work/vault-ts/vault-ts/packages/common/lib/chunk-K3DKN3IC.js","sourcesContent":[null,"import invariant from \"invariant\";\nimport keyBy from \"lodash/keyBy\";\nimport sortBy from \"lodash/sortBy\";\n\nimport { getCryptoCurrencyById } from \"./currencies\";\nimport {\n GateGovernanceRulesSet,\n GateTradelink,\n GateTradelinkAssetManager,\n GateTradelinkEntity,\n GateTradelinkExchange,\n GateTradelinkNetwork,\n GateTradelinkOnboardingStatus,\n GateWorkspacePermission,\n GateWorkspaceRule,\n ManifestAccountRuleCreateSplTokenAccount,\n ManifestAccountRuleTransferSplToken,\n ManifestWorkspaceRule,\n} from \"./types\";\nimport {\n Connection,\n DevicesPool,\n GateAccount,\n GateExchange,\n GateGroup,\n GatePolicy,\n GateUser,\n GateUserRequest,\n GateVaultEntity,\n GateWhitelist,\n Manifest,\n ManifestAccountConfig,\n ManifestAccountRule,\n ManifestAccountRuleCardanoStaking,\n ManifestAccountRuleDeployContract,\n ManifestAccountRuleMessageSigning,\n ManifestAccountRuleMultiAuth,\n ManifestAccountRulePolkadotStaking,\n ManifestAccountRuleRawSigning,\n ManifestAccountRuleSCI,\n ManifestAccountRuleSolanaStaking,\n ManifestAccountRuleStake,\n ManifestAccountRuleTezosDelegation,\n ManifestAccountRuleThreshold,\n ManifestAccountRuleWhitelist,\n ManifestExchange,\n ManifestPolicy,\n ManifestWhitelistAddress,\n Organization,\n UserWithDevice,\n UserWithoutDevice,\n} from \"./types\";\nimport { getDefaultUsername } from \"./utils\";\nimport { deserializeUnitValue, unwrapConnection } from \"./utils\";\n\nconst ADMIN_START_DEVICE_INDEX = 4;\nconst DEFAULT_ADMINS_COUNT = 3;\nconst NB_SHARED_OWNERS = 3;\n\nexport const getDeviceIndex = (index: number): number => {\n const n = ADMIN_START_DEVICE_INDEX + index;\n if (n < ADMIN_START_DEVICE_INDEX + NB_SHARED_OWNERS) {\n return n;\n }\n return n + NB_SHARED_OWNERS;\n};\n\nexport type GateGroupsByName = Record<string, GateGroup>;\nexport type GateWhitelistsByName = Record<string, GateWhitelist>;\nexport type GateAccountsByName = Record<string, GateAccount>;\nexport type GateVaultEntitiesByName = Record<string, GateVaultEntity>;\nexport type GateExchangesByName = Record<string, GateExchange>;\nexport type GatePoliciesByName = Record<string, GatePolicy>;\nexport type GateTradelinkCustodianByName = Record<string, GateTradelinkEntity<\"CUSTODIAN\">>;\nexport type GateTradelinkHSMCustodianByName = Record<string, GateTradelink>;\nexport type GateTradelinkExchangeByName = Record<string, GateTradelinkEntity<\"EXCHANGE\">>;\nexport type GateTradelinkHSMExchangeByName = Record<string, GateTradelinkExchange>;\nexport type GateTradelinkHSMAssetManagerByName = Record<string, GateTradelinkAssetManager>;\nexport type GateTradelinkAssetManagerByName = Record<string, GateTradelinkEntity<\"ASSET_MANAGER\">>;\n\nexport type RecipeRawData = {\n pendingUserRequests: GateUserRequest[];\n groupsByName: GateGroupsByName;\n whitelistsByName: GateWhitelistsByName;\n accountsByName: GateAccountsByName;\n vaultEntitiesByName: GateVaultEntitiesByName;\n exchangesByName: GateExchangesByName;\n policiesByName: GatePoliciesByName;\n usersWithDevice: UserWithDevice[];\n usersWithoutDevice: UserWithoutDevice[];\n tradelinkCustodiansByName: GateTradelinkCustodianByName;\n tradelinkHSMCustodiansByName: GateTradelinkHSMCustodianByName;\n tradelinkExchangesByName: GateTradelinkExchangeByName;\n tradelinkHSMExchangesByName: GateTradelinkHSMExchangeByName;\n tradelinkHSMAssetManagersByName: GateTradelinkHSMAssetManagerByName;\n tradelinkAssetManagersByName: GateTradelinkAssetManagerByName;\n tradelinkNetwork: GateTradelinkNetwork;\n tradelinkOnboardingStatus: GateTradelinkOnboardingStatus;\n};\n\nexport type RecipeManifestResult = {\n manifest: Manifest;\n rawData: RecipeRawData;\n};\n\nexport type RecipeManifestOptions = {\n saveAccountsIndexes?: boolean;\n saveAccountsTypes?: boolean;\n};\n\nexport default async function recipeManifest(\n pool: DevicesPool,\n options: RecipeManifestOptions = {},\n): Promise<RecipeManifestResult> {\n const adminDevices = await pool.getOnboardingAdminDevices();\n const admin = await pool.login(adminDevices[0]![1]);\n const [\n organization,\n pendingUserRequestsConnection,\n usersConnection,\n groupsConnection,\n accountsConnection,\n vaultEntitiesConnection,\n whitelistsConnection,\n exchangesConnection,\n policiesConnection,\n tradelinkCustodianConnection,\n tradelinkHSMCustodianConnection,\n tradelinkExchangeConnection,\n tradelinkHSMExchangeConnection,\n tradelinkHSMAssetManagerConnection,\n tradelinkAssetManagerConnection,\n tradelinkNetwork,\n tradelinkOnboardingStatus,\n allWorkspaceRulesConnection,\n ] = await Promise.all([\n admin.network<Organization>(\"GET\", \"/organization\"),\n admin\n .network<Connection<GateUserRequest>>(\n \"GET\",\n `/requests?type=CREATE_ADMIN&type=CREATE_OPERATOR&type=CREATE_API_USER&status=PENDING_REGISTRATION&status=PENDING_APPROVAL`,\n )\n // for some reason this particular one can fail when targeting prod (not sure why)\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin.network<Connection<GateUser>>(\n \"GET\",\n \"/people?status=ACTIVE&status=ACCESS_SUSPENDED&role=ADMIN&role=OPERATOR&pageSize=-1\",\n ),\n admin.network<Connection<GateGroup>>(\"GET\", \"/groups?pageSize=-1\"),\n admin.network<Connection<GateAccount>>(\n \"GET\",\n \"/accounts?status=ACTIVE&status=APPROVED&status=PENDING&status=VIEW_ONLY&pageSize=-1\",\n ),\n admin.network<Connection<GateVaultEntity>>(\"GET\", \"/entities?pageSize=-1\"),\n admin.network<Connection<GateWhitelist>>(\"GET\", \"/whitelists?pageSize=-1\"),\n admin\n .network<Connection<GateExchange>>(\"GET\", \"/exchanges?pageSize=-1\")\n // handle case where /exchanges is not supported by Gate\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin\n .network<Connection<GatePolicy>>(\"GET\", \"/policies?pageSize=-1\")\n // handle case where /policies is not supported by Gate\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin\n .network<Connection<GateTradelinkEntity<\"CUSTODIAN\">>>(\"GET\", \"/tradelink/custodians\")\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin.network<Connection<GateTradelink>>(\"GET\", \"/tradelink/hsm-custodians\").catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n\n admin.network<Connection<GateTradelinkEntity<\"EXCHANGE\">>>(\"GET\", \"/tradelink/exchanges\").catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin.network<Connection<GateTradelinkExchange>>(\"GET\", \"/tradelink/hsm-exchanges\").catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin\n .network<Connection<GateTradelinkAssetManager>>(\"GET\", \"/tradelink/hsm-asset-managers\")\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin\n .network<Connection<GateTradelinkEntity<\"ASSET_MANAGER\">>>(\"GET\", \"/tradelink/asset_managers\")\n .catch(\n /* istanbul ignore next */ () => ({\n edges: [],\n pageInfo: { hasNextPage: false, count: 0 },\n }),\n ),\n admin.network<GateTradelinkNetwork>(\"GET\", \"/tradelink/network\").catch(\n /* istanbul ignore next */ () => ({\n id: \"\",\n asset_managers: [],\n custodian: {\n approver_group_id: 0,\n code: \"\",\n id: \"\",\n logo_url: \"\",\n name: \"\",\n whitelist_id: 0,\n },\n exchanges: [],\n }),\n ),\n admin\n .network<GateTradelinkOnboardingStatus>(\"GET\", \"/tradelink/onboarding\")\n .catch(\n /* istanbul ignore next */ (): GateTradelinkOnboardingStatus => ({ status: \"NOT_READY\" }),\n ),\n admin.network<Connection<GateWorkspaceRule>>(\"GET\", \"/workspace-rules\").catch(\n /* istanbul ignore next */ (): Connection<GateWorkspaceRule> => ({\n edges: [],\n pageInfo: { count: 0, hasNextPage: false },\n }),\n ),\n ]);\n\n const pendingUserRequests: GateUserRequest[] = unwrapConnection(pendingUserRequestsConnection);\n const users: GateUser[] = sortBy(unwrapConnection(usersConnection), \"id\");\n const groups: GateGroup[] = unwrapConnection(groupsConnection);\n const whitelists: GateWhitelist[] = unwrapConnection(whitelistsConnection);\n const accounts: GateAccount[] = sortBy(unwrapConnection(accountsConnection), \"index\");\n const vaultEntities: GateVaultEntity[] = unwrapConnection(vaultEntitiesConnection);\n const exchanges: GateExchange[] = unwrapConnection(exchangesConnection);\n const policies: GatePolicy[] = unwrapConnection(policiesConnection);\n const tradelinkCustodians: GateTradelinkEntity<\"CUSTODIAN\">[] = unwrapConnection(\n tradelinkCustodianConnection,\n );\n const tradelinkHSMCustodians: GateTradelink[] = unwrapConnection(tradelinkHSMCustodianConnection);\n const tradelinkExchanges: GateTradelinkEntity<\"EXCHANGE\">[] = unwrapConnection(\n tradelinkExchangeConnection,\n );\n const tradelinkHSMExchanges: GateTradelinkExchange[] = unwrapConnection(\n tradelinkHSMExchangeConnection,\n );\n const tradelinkHSMAssetManagers: GateTradelinkAssetManager[] = unwrapConnection(\n tradelinkHSMAssetManagerConnection,\n );\n const tradelinkAssetManagers: GateTradelinkEntity<\"ASSET_MANAGER\">[] = unwrapConnection(\n tradelinkAssetManagerConnection,\n );\n const allWorkspaceRules = unwrapConnection(allWorkspaceRulesConnection);\n const rootWorkspaceRule = allWorkspaceRules.find((r) => r.permission === \"ROOT\") ?? null;\n const apiAdminWorkspaceRules = allWorkspaceRules.filter((r) => r.permission !== \"ROOT\");\n\n const groupsByName = keyBy(groups, (group) => group.name);\n const whitelistsByName = keyBy(whitelists, (w) => w.name);\n const accountsByName = keyBy(accounts, (a) => a.name);\n const vaultEntitiesByName = keyBy(vaultEntities, (e) => e.name);\n const exchangesByName = keyBy(exchanges, (e) => e.name);\n const policiesByName = keyBy(policies, (e) => e.name);\n const tradelinkCustodiansByName = keyBy(tradelinkCustodians, (e) => e.name);\n const tradelinkHSMCustodiansByName = keyBy(\n tradelinkHSMCustodians,\n (e) => e.network.custodian.name,\n );\n const tradelinkExchangesByName = keyBy(tradelinkExchanges, (e) => e.name);\n const tradelinkHSMExchangesByName = keyBy(tradelinkHSMExchanges, (e) => e.hsm_data.name);\n const tradelinkHSMAssetManagersByName = keyBy(tradelinkHSMAssetManagers, (e) => e.hsm_data.name);\n const tradelinkAssetManagersByName = keyBy(tradelinkAssetManagers, (e) => e.name);\n\n // gate is sending all active users by order of creation\n // we rely on index in the reduce() to get the device index assuming we take them in order\n //\n // FIXME there is something weird with the typing of this reduce :(\n // @ts-ignore\n const {\n admins: _admins,\n operators,\n apiUsers,\n apiV2Users,\n }: {\n admins: Array<{ deviceIndex: number; user: GateUser }>;\n operators: Array<{ deviceIndex: number; user: GateUser }>;\n apiUsers: Array<{ deviceIndex: number; user: GateUser }>;\n apiV2Users: Array<{ username: string; user: GateUser }>;\n } = users.reduce(\n (acc, curr, index) =>\n // @ts-ignore\n curr.device_type === \"API\"\n ? {\n ...acc,\n apiV2Users: [...acc.apiV2Users, { deviceIndex: curr.username, user: curr }],\n }\n : curr.role === \"ADMIN\"\n ? {\n ...acc,\n admins: [\n ...acc.admins,\n {\n deviceIndex: getDeviceIndex(index - countAPIUsersUntil(index, users)),\n user: curr,\n },\n ],\n }\n : curr.device_type === \"SOFT_PSD\"\n ? {\n ...acc,\n apiUsers: [...acc.apiUsers, { deviceIndex: curr.username, user: curr }],\n }\n : {\n ...acc,\n operators: [\n ...acc.operators,\n {\n deviceIndex: getDeviceIndex(index - countAPIUsersUntil(index, users)),\n user: curr,\n },\n ],\n },\n { admins: [], operators: [], apiUsers: [], apiV2Users: [] },\n );\n\n const operatorsDevicesByID: Record<string, number> = operators.reduce((acc, curr) => {\n return { ...acc, [curr.user.id]: curr.deviceIndex };\n }, {});\n\n const customUsernames = [..._admins, ...operators].reduce((acc, curr) => {\n // don't assign custom username if user has default name\n if (\n getDefaultUsername(curr.user.role === \"ADMIN\" ? \"admin\" : \"operator\", curr.deviceIndex) ===\n curr.user.username\n ) {\n return acc;\n }\n return { ...acc, [curr.deviceIndex]: curr.user.username };\n }, {});\n\n const admins = _admins\n // remove admins 4, 5, 6, they are implicitly created during onboarding\n // we still want to fetch them first to eventually collect custom usernames\n .filter((_, i) => i > DEFAULT_ADMINS_COUNT - 1);\n\n const usersManifest = {\n operators: operators.map((o) => o.deviceIndex),\n admins: admins.map((a) => a.deviceIndex),\n api: apiUsers.map((a) =>\n a.user.view_all_override\n ? {\n name: a.user.username,\n viewAll: true,\n }\n : a.user.username,\n ),\n apiV2: apiV2Users.map((a) => ({\n role: a.user.role,\n name: a.user.username,\n ...(a.user.pub_key ? { publicKey: a.user.pub_key } : {}),\n ...(a.user.view_all_override ? { viewAll: true } : {}),\n })),\n };\n\n // we assume that if ROOT workspace rule exist, we take the workspace quorum from there,\n // else, we take it from the legacy \"organization\" object\n const quorum = rootWorkspaceRule ? rootWorkspaceRule.steps[0]!.quorum : organization.quorum;\n\n const manifestWorkspaceRules: ManifestWorkspaceRule[] = apiAdminWorkspaceRules\n .map((rule) => ({\n permission: rule.permission as Exclude<GateWorkspacePermission, \"ROOT\">,\n steps: rule.steps.map((gateStep) => ({\n quorum: gateStep.quorum,\n users: gateStep.users.map((pubKey) => {\n const user = users.find((u) => u.pub_key === pubKey);\n invariant(\n user,\n `Can't find user with pub key ${pubKey} referenced in workspace rule ${rule.permission}`,\n );\n return user.username;\n }),\n })),\n }))\n .filter((rule) => {\n // only output the rules that have users defined\n return rule.steps.length > 0;\n });\n\n const fullManifest: Manifest = {\n quorum: quorum === 2 ? undefined : quorum,\n customUsernames,\n users: usersManifest,\n workspaceRules: manifestWorkspaceRules,\n groups: groups\n .filter((g) => g.status === \"ACTIVE\")\n .map((g) => ({\n name: g.name,\n description: g.description,\n users: g.members.map((m) => (m.is_api ? m.username : operatorsDevicesByID[m.id]!)),\n })),\n whitelists: whitelists\n .filter((w) => w.status === \"ACTIVE\")\n .map((w) => ({\n name: w.name,\n description: w.description,\n type: w.whitelist_type,\n addresses: w.addresses.map(\n (a): ManifestWhitelistAddress => ({\n name: a.name,\n address: a.address,\n currency: a.currency,\n destination_tags: a.destination_tags,\n }),\n ),\n })),\n accounts: accounts\n // we want to get rid of VIEW_ONLY account see #76\n .filter((a) => a.status === \"ACTIVE\")\n .map((a) => ({\n name: a.name,\n currency: a.currency,\n ...(options.saveAccountsTypes ? { accountType: a.account_type } : {}),\n derivationMode: a.derivation_mode === \"STANDARD\" ? undefined : a.derivation_mode,\n contractAddress: a.contract_address || undefined,\n ...(options.saveAccountsIndexes ? { index: a.index } : {}),\n ...(a.parent\n ? {\n parentAccount: (() => {\n const parentAccount = accounts.find((acc) => acc.id === a.parent);\n /* istanbul ignore if */\n if (!parentAccount) {\n throw new Error(`Can't find parent account with id ${a.parent}`);\n }\n if (parentAccount.status !== \"ACTIVE\") {\n return undefined;\n }\n return parentAccount.name;\n })(),\n }\n : {}),\n rules: extractRules(a.governance_rules, a.currency, operatorsDevicesByID),\n ...(() => {\n const config: ManifestAccountConfig = {};\n\n if (a.nfts_gallery_enabled) {\n config.nftGallery = true;\n }\n\n const hasConfig = Object.keys(config).length > 0;\n return hasConfig ? { config } : {};\n })(),\n })),\n entities: vaultEntities\n .filter((e) => e.status === \"ACTIVE\")\n .map((e) => ({\n name: e.name,\n accounts: e.accounts.map((a) => a.name),\n })),\n exchanges: exchanges\n .filter((e) => e.status === \"ACTIVE\")\n .map(\n (e): ManifestExchange => ({\n name: e.name,\n platform: e.platform,\n configuration: {\n apiKey: \"<not-retrievable>\",\n apiSecret: \"<not-retrievable>\",\n },\n }),\n ),\n policies: policies.map((p): ManifestPolicy => {\n return {\n name: p.name,\n ...(p.currency ? { currency: p.currency } : {}),\n rules: extractRules(p.governance_rules, p.currency, operatorsDevicesByID),\n status: p.status,\n };\n }),\n };\n\n // clean out un-necessary keys\n const manifest = pickNonEmpty(fullManifest);\n\n return {\n manifest,\n rawData: {\n pendingUserRequests,\n groupsByName,\n whitelistsByName,\n accountsByName,\n vaultEntitiesByName,\n usersWithDevice: [..._admins, ...operators, ...apiUsers],\n usersWithoutDevice: [...apiV2Users],\n exchangesByName,\n policiesByName,\n tradelinkCustodiansByName,\n tradelinkHSMCustodiansByName,\n tradelinkExchangesByName,\n tradelinkHSMExchangesByName,\n tradelinkHSMAssetManagersByName,\n tradelinkAssetManagersByName,\n tradelinkNetwork,\n tradelinkOnboardingStatus,\n },\n };\n}\n\n// recursively create a minimal object (removing empty arrays etc.)\n// yeah.. lot of @ts-ignore in the function!\nfunction pickNonEmpty<T extends Record<string, any>>(obj: T) {\n const out = {};\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n /* istanbul ignore if */\n if (!key) throw new Error(`Invalid key at index ${i}`);\n const val = obj[key];\n // @ts-ignore\n const getSanitized = (val: any) => {\n /* istanbul ignore if */\n if (val === null) {\n return;\n } else if (Array.isArray(val)) {\n // @ts-ignore\n const withoutEmpty = val.map(getSanitized).filter((v) => v !== undefined);\n if (withoutEmpty.length > 0) {\n return withoutEmpty;\n }\n } else if (typeof val === \"object\") {\n // @ts-ignore\n const subObj: Record<string, unknown> = val;\n const nonEmptyVal = pickNonEmpty(subObj);\n const nbKeys = Object.keys(nonEmptyVal).length;\n if (nbKeys > 0) {\n return nonEmptyVal;\n }\n } else if (val !== undefined) {\n return val;\n }\n };\n const sanitized = getSanitized(val);\n if (sanitized !== undefined) {\n // @ts-ignore\n out[key] = sanitized;\n }\n }\n return out;\n}\n\nfunction extractRules(\n gateGovRules: GateGovernanceRulesSet[] | null,\n _currency: string | null,\n operatorsDevicesByID: Record<string, number>,\n): ManifestAccountRule[][] {\n const currency = _currency ? getCryptoCurrencyById(_currency) : null;\n const unit = currency ? currency.units[0]! : null;\n const governance_rules = gateGovRules || [];\n let rulesSets = governance_rules.map((r) => {\n const rules = r.rules.map((rule) => {\n if (rule.type === \"THRESHOLD\") {\n invariant(unit, \"Unit must be defined for THRESHOLD rule\");\n const thresholdRule: ManifestAccountRuleThreshold = {\n type: \"THRESHOLD\",\n ...(rule.data[0].min ? { min: deserializeUnitValue(unit, rule.data[0].min) } : {}),\n ...(rule.data[0].max ? { max: deserializeUnitValue(unit, rule.data[0].max) } : {}),\n };\n return thresholdRule;\n }\n if (rule.type === \"WHITELIST\") {\n const whitelistRule: ManifestAccountRuleWhitelist = {\n type: \"WHITELIST\",\n whitelists: rule.data.map((d) => d.name),\n };\n return whitelistRule;\n }\n if (rule.type === \"MULTI_AUTHORIZATIONS\") {\n const multiAuthRule: ManifestAccountRuleMultiAuth = {\n type: \"MULTI_AUTHORIZATIONS\",\n steps: rule.data.map((s) => ({\n quorum: s.quorum,\n ...(s.group.is_internal\n ? {\n users: s.group.members.map((m) => {\n const u = m.is_api ? m.username : operatorsDevicesByID[m.id];\n /* istanbul ignore if */\n if (!u) throw new Error(`Invalid user ${m}`);\n return u;\n }),\n }\n : { group: s.group.name }),\n })),\n };\n return multiAuthRule;\n }\n if (rule.type === \"SMART_CONTRACT_INTERACTION\") {\n const sciRule: ManifestAccountRuleSCI = {\n type: \"SMART_CONTRACT_INTERACTION\",\n enabled: rule.data[0].enabled,\n };\n return sciRule;\n }\n if (rule.type === \"TRANSACTION_FILTER\") {\n switch (rule.data.preset) {\n case \"TEZOS_DELEGATION\":\n return { type: \"TEZOS_DELEGATION\" } as ManifestAccountRuleTezosDelegation;\n case \"POLKADOT_STAKING\":\n return { type: \"POLKADOT_STAKING\" } as ManifestAccountRulePolkadotStaking;\n case \"SOLANA_STAKING\":\n return { type: \"SOLANA_STAKING\" } as ManifestAccountRuleSolanaStaking;\n case \"CARDANO_STAKING\":\n return { type: \"CARDANO_STAKING\" } as ManifestAccountRuleCardanoStaking;\n case \"RAW_SIGNING\":\n return { type: \"RAW_SIGNING\" } as ManifestAccountRuleRawSigning;\n case \"CREATE_SPL_TOKEN_ACCOUNT\":\n return { type: \"CREATE_SPL_TOKEN_ACCOUNT\" } as ManifestAccountRuleCreateSplTokenAccount;\n case \"TRANSFER_SPL_TOKEN\":\n return {\n type: \"TRANSFER_SPL_TOKEN\",\n contractAddress: rule.data.contract_address,\n } as ManifestAccountRuleTransferSplToken;\n case \"SEND\":\n // VG-18271 don't recipe \"SEND\" rule as it's the default\n return null;\n case \"STAKE\":\n return { type: \"STAKE\" } as ManifestAccountRuleStake;\n case \"MESSAGE_SIGNING\":\n return { type: \"MESSAGE_SIGNING\" } as ManifestAccountRuleMessageSigning;\n case \"DEPLOY_CONTRACT\":\n return { type: \"DEPLOY_CONTRACT\" } as ManifestAccountRuleDeployContract;\n }\n }\n // @ts-ignore\n throw new Error(`Unknown rule type ${rule.type}`);\n });\n return rules.filter(Boolean) as ManifestAccountRule[];\n });\n\n // see VG-22141\n rulesSets = enforceSCIRuleIfNecessary(rulesSets);\n\n return rulesSets;\n}\n\n// Enforce that if a RulesSet have a SCI-enabled rule, all the other RulesSet should have\n// a SCI-disabled rule\n//\n// see VG-22141\n//\nfunction enforceSCIRuleIfNecessary(rulesSets: ManifestAccountRule[][]): ManifestAccountRule[][] {\n const hasSCIRulesSet = rulesSets.find((rulesSet) =>\n rulesSet.find((rule) => rule.type === \"SMART_CONTRACT_INTERACTION\" && rule.enabled),\n );\n if (!hasSCIRulesSet) return rulesSets;\n return rulesSets.map((rulesSet) => {\n const sciRule = rulesSet.find((r) => r.type === \"SMART_CONTRACT_INTERACTION\");\n if (sciRule) return rulesSet;\n return [...rulesSet, { type: \"SMART_CONTRACT_INTERACTION\", enabled: false }];\n });\n}\n\nfunction countAPIUsersUntil(index: number, users: GateUser[]) {\n return users.slice(0, index).filter((u) => u.is_api).length;\n}\n"]}
@@ -1383,8 +1383,8 @@ var vaultCoins = [
1383
1383
  },
1384
1384
  units: [
1385
1385
  {
1386
- name: "SHAPE",
1387
- code: "SHAPE",
1386
+ name: "ETH",
1387
+ code: "ETH",
1388
1388
  magnitude: 18
1389
1389
  }
1390
1390
  ],
@@ -1556,4 +1556,4 @@ var wait = (duration) => new Promise((resolve) => setTimeout(resolve, duration))
1556
1556
 
1557
1557
 
1558
1558
  exports.vaultCoins = vaultCoins; exports.getCryptoCurrencyById = getCryptoCurrencyById; exports.listCryptoCurrencies = listCryptoCurrencies; exports.getWorkspaceFromGate = getWorkspaceFromGate; exports.xpubToExtendedPubKey = xpubToExtendedPubKey; exports.queue = queue; exports.serializeUnitValue = serializeUnitValue; exports.getAccountUnit = getAccountUnit; exports.getGateAccountUnit = getGateAccountUnit; exports.getTokenUnit = getTokenUnit; exports.getCurrencyUnit = getCurrencyUnit; exports.deserializeUnitValue = deserializeUnitValue; exports.LIGHT_EVM_CURRENCIES = LIGHT_EVM_CURRENCIES; exports.getAccountTypeByCurrency = getAccountTypeByCurrency; exports.getCurrencyOrToken = getCurrencyOrToken; exports.getDefaultUsername = getDefaultUsername; exports.unwrapConnection = unwrapConnection; exports.extractSecureChannel = extractSecureChannel; exports.wait = wait;
1559
- //# sourceMappingURL=chunk-TBOMCYUR.js.map
1559
+ //# sourceMappingURL=chunk-MM46PB5T.js.map