From f4924c5690d4fd876f4b54489bd1e292ea02d718 Mon Sep 17 00:00:00 2001 From: bry Date: Thu, 23 Jan 2025 15:59:13 -0600 Subject: [PATCH] add temp endpoint and backfill script for mobile deployment infos --- .../package.json | 3 +- .../src/utils/handleAccountWebhook.ts | 2 +- .../utils/integrityCheckProgramAccounts.ts | 2 +- .../yarn.deploy.lock | 332 +----------------- packages/helium-admin-cli/package.json | 2 + .../src/backfill-mobile-deployment-infos.ts | 245 +++++++++++++ packages/helium-admin-cli/yarn.deploy.lock | 9 + .../helium-entity-manager-sdk/src/index.ts | 3 +- .../src/fetchBackwardsCompatibleIdl.ts | 88 ++++- .../src/instructions/mod.rs | 2 + .../instructions/temp_backfill_mobile_info.rs | 44 +++ programs/helium-entity-manager/src/lib.rs | 7 + yarn.lock | 136 +------ 13 files changed, 405 insertions(+), 470 deletions(-) create mode 100644 packages/helium-admin-cli/src/backfill-mobile-deployment-infos.ts create mode 100644 programs/helium-entity-manager/src/instructions/temp_backfill_mobile_info.rs diff --git a/packages/account-postgres-sink-service/package.json b/packages/account-postgres-sink-service/package.json index 543b1d550..fa250a44e 100644 --- a/packages/account-postgres-sink-service/package.json +++ b/packages/account-postgres-sink-service/package.json @@ -51,8 +51,8 @@ "bn.js": "^5.2.0", "bs58": "^4.0.1", "cron": "^3.1.6", - "deep-equal": "^2.2.2", "dotenv": "^16.3.1", + "fast-deep-equal": "^3.1.3", "fastify": "^4.13.0", "fastify-cron": "^1.3.1", "fastify-metrics": "^10.3.0", @@ -72,7 +72,6 @@ "@types/async-retry": "^1.4.8", "@types/bn.js": "^5.1.1", "@types/cron": "^2.4.0", - "@types/deep-equal": "^1.0.1", "@types/lodash": "^4.14.195", "@types/node": "^18.11.11", "@types/pg": "^8.6.6", diff --git a/packages/account-postgres-sink-service/src/utils/handleAccountWebhook.ts b/packages/account-postgres-sink-service/src/utils/handleAccountWebhook.ts index 707d46af6..3aa52a846 100644 --- a/packages/account-postgres-sink-service/src/utils/handleAccountWebhook.ts +++ b/packages/account-postgres-sink-service/src/utils/handleAccountWebhook.ts @@ -1,6 +1,6 @@ import * as anchor from "@coral-xyz/anchor"; import { PublicKey } from "@solana/web3.js"; -import deepEqual from "deep-equal"; +import deepEqual from "fast-deep-equal"; import { FastifyInstance } from "fastify"; import _omit from "lodash/omit"; import { Sequelize, Transaction } from "sequelize"; diff --git a/packages/account-postgres-sink-service/src/utils/integrityCheckProgramAccounts.ts b/packages/account-postgres-sink-service/src/utils/integrityCheckProgramAccounts.ts index 72d39fe71..f08aafac4 100644 --- a/packages/account-postgres-sink-service/src/utils/integrityCheckProgramAccounts.ts +++ b/packages/account-postgres-sink-service/src/utils/integrityCheckProgramAccounts.ts @@ -1,7 +1,7 @@ import * as anchor from "@coral-xyz/anchor"; import { PublicKey } from "@solana/web3.js"; import retry, { Options as RetryOptions } from "async-retry"; -import deepEqual from "deep-equal"; +import deepEqual from "fast-deep-equal"; import { FastifyInstance } from "fastify"; import _omit from "lodash/omit"; import pLimit from "p-limit"; diff --git a/packages/account-postgres-sink-service/yarn.deploy.lock b/packages/account-postgres-sink-service/yarn.deploy.lock index 370fb6595..06a8deade 100644 --- a/packages/account-postgres-sink-service/yarn.deploy.lock +++ b/packages/account-postgres-sink-service/yarn.deploy.lock @@ -208,7 +208,6 @@ __metadata: "@types/async-retry": ^1.4.8 "@types/bn.js": ^5.1.1 "@types/cron": ^2.4.0 - "@types/deep-equal": ^1.0.1 "@types/lodash": ^4.14.195 "@types/node": ^18.11.11 "@types/pg": ^8.6.6 @@ -221,8 +220,8 @@ __metadata: bn.js: ^5.2.0 bs58: ^4.0.1 cron: ^3.1.6 - deep-equal: ^2.2.2 dotenv: ^16.3.1 + fast-deep-equal: ^3.1.3 fastify: ^4.13.0 fastify-cron: ^1.3.1 fastify-metrics: ^10.3.0 @@ -714,13 +713,6 @@ __metadata: languageName: node linkType: hard -"@types/deep-equal@npm:^1.0.1": - version: 1.0.1 - resolution: "@types/deep-equal@npm:1.0.1" - checksum: 689b5737dd0a37d173d9e1231c07f70a1a9a989087b757422e1d167ec3640fd7eb8a538bd6008b3df400c4c11ed07a6c2a92d9aafc1f98ffaa04731a9442c781 - languageName: node - linkType: hard - "@types/lodash@npm:^4.14.195": version: 4.14.197 resolution: "@types/lodash@npm:4.14.197" @@ -1026,16 +1018,6 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "array-buffer-byte-length@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - is-array-buffer: "npm:^3.0.1" - checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 - languageName: node - linkType: hard - "async-retry@npm:^1.3.3": version: 1.3.3 resolution: "async-retry@npm:1.3.3" @@ -1346,7 +1328,7 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": +"call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" dependencies: @@ -1552,42 +1534,6 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:^2.2.2": - version: 2.2.2 - resolution: "deep-equal@npm:2.2.2" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.2" - es-get-iterator: "npm:^1.1.3" - get-intrinsic: "npm:^1.2.1" - is-arguments: "npm:^1.1.1" - is-array-buffer: "npm:^3.0.2" - is-date-object: "npm:^1.0.5" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - isarray: "npm:^2.0.5" - object-is: "npm:^1.1.5" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.0" - side-channel: "npm:^1.0.4" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.9" - checksum: eb61c35157b6ecb96a5359b507b083fbff8ddb4c86a78a781ee38485f77a667465e45d63ee2ebd8a00e86d94c80e499906900cd82c2debb400237e1662cd5397 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": - version: 1.2.0 - resolution: "define-properties@npm:1.2.0" - dependencies: - has-property-descriptors: "npm:^1.0.0" - object-keys: "npm:^1.1.1" - checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 - languageName: node - linkType: hard - "delay@npm:^5.0.0": version: 5.0.0 resolution: "delay@npm:5.0.0" @@ -1703,23 +1649,6 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.1.3": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - is-arguments: "npm:^1.1.1" - is-map: "npm:^2.0.2" - is-set: "npm:^2.0.2" - is-string: "npm:^1.0.7" - isarray: "npm:^2.0.5" - stop-iteration-iterator: "npm:^1.0.0" - checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d - languageName: node - linkType: hard - "es6-promise@npm:^4.0.3": version: 4.2.8 resolution: "es6-promise@npm:4.2.8" @@ -2054,13 +1983,6 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.3": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - "gauge@npm:^4.0.3": version: 4.0.4 resolution: "gauge@npm:4.0.4" @@ -2084,7 +2006,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.3": version: 1.2.1 resolution: "get-intrinsic@npm:1.2.1" dependencies: @@ -2166,13 +2088,6 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b - languageName: node - linkType: hard - "has-flag@npm:^4.0.0": version: 4.0.0 resolution: "has-flag@npm:4.0.0" @@ -2180,15 +2095,6 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.1.1" - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - "has-proto@npm:^1.0.1": version: 1.0.1 resolution: "has-proto@npm:1.0.1" @@ -2340,17 +2246,6 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.4": - version: 1.0.5 - resolution: "internal-slot@npm:1.0.5" - dependencies: - get-intrinsic: "npm:^1.2.0" - has: "npm:^1.0.3" - side-channel: "npm:^1.0.4" - checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a - languageName: node - linkType: hard - "ip@npm:^2.0.0": version: 2.0.0 resolution: "ip@npm:2.0.0" @@ -2365,7 +2260,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": +"is-arguments@npm:^1.0.4": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -2375,26 +2270,6 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": - version: 3.0.2 - resolution: "is-array-buffer@npm:3.0.2" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.0" - is-typed-array: "npm:^1.1.10" - checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: "npm:^1.0.1" - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -2404,16 +2279,6 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - "is-buffer@npm:^2.0.5": version: 2.0.5 resolution: "is-buffer@npm:2.0.5" @@ -2437,15 +2302,6 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -2485,22 +2341,6 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.1, is-map@npm:^2.0.2": - version: 2.0.2 - resolution: "is-map@npm:2.0.2" - checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -2508,16 +2348,6 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - "is-retry-allowed@npm:^2.2.0": version: 2.2.0 resolution: "is-retry-allowed@npm:2.2.0" @@ -2525,41 +2355,7 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.1, is-set@npm:^2.0.2": - version: 2.0.2 - resolution: "is-set@npm:2.0.2" - checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3": +"is-typed-array@npm:^1.1.3": version: 1.1.12 resolution: "is-typed-array@npm:1.1.12" dependencies: @@ -2568,23 +2364,6 @@ __metadata: languageName: node linkType: hard -"is-weakmap@npm:^2.0.1": - version: 2.0.1 - resolution: "is-weakmap@npm:2.0.1" - checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 - languageName: node - linkType: hard - -"is-weakset@npm:^2.0.1": - version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.1" - checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 - languageName: node - linkType: hard - "isarray@npm:^1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" @@ -2592,13 +2371,6 @@ __metadata: languageName: node linkType: hard -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -3126,42 +2898,6 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.9.0": - version: 1.12.3 - resolution: "object-inspect@npm:1.12.3" - checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db - languageName: node - linkType: hard - -"object-is@npm:^1.1.5": - version: 1.1.5 - resolution: "object-is@npm:1.1.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.4" - has-symbols: "npm:^1.0.3" - object-keys: "npm:^1.1.1" - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 - languageName: node - linkType: hard - "obliterator@npm:^2.0.1": version: 2.0.4 resolution: "obliterator@npm:2.0.4" @@ -3624,17 +3360,6 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.0": - version: 1.5.0 - resolution: "regexp.prototype.flags@npm:1.5.0" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - functions-have-names: "npm:^1.2.3" - checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 - languageName: node - linkType: hard - "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -3929,17 +3654,6 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: "npm:^1.0.0" - get-intrinsic: "npm:^1.0.2" - object-inspect: "npm:^1.9.0" - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - "signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -4034,15 +3748,6 @@ __metadata: languageName: node linkType: hard -"stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" - dependencies: - internal-slot: "npm:^1.0.4" - checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 - languageName: node - linkType: hard - "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -4493,32 +4198,7 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" - dependencies: - is-map: "npm:^2.0.1" - is-set: "npm:^2.0.1" - is-weakmap: "npm:^2.0.1" - is-weakset: "npm:^2.0.1" - checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": +"which-typed-array@npm:^1.1.11, which-typed-array@npm:^1.1.2": version: 1.1.11 resolution: "which-typed-array@npm:1.1.11" dependencies: diff --git a/packages/helium-admin-cli/package.json b/packages/helium-admin-cli/package.json index 7c5012cf5..7945f819b 100644 --- a/packages/helium-admin-cli/package.json +++ b/packages/helium-admin-cli/package.json @@ -62,6 +62,8 @@ "axios": "^1.3.6", "bn.js": "^5.2.0", "bs58": "^4.0.1", + "fast-deep-equal": "^3.1.3", + "h3-js": "^4.1.0", "yargs": "^17.7.1" }, "devDependencies": { diff --git a/packages/helium-admin-cli/src/backfill-mobile-deployment-infos.ts b/packages/helium-admin-cli/src/backfill-mobile-deployment-infos.ts new file mode 100644 index 000000000..6cf054528 --- /dev/null +++ b/packages/helium-admin-cli/src/backfill-mobile-deployment-infos.ts @@ -0,0 +1,245 @@ +import * as anchor from "@coral-xyz/anchor"; +import { + MobileDeploymentInfoV0, + init as initHEM, + mobileInfoKey, + rewardableEntityConfigKey, +} from "@helium/helium-entity-manager-sdk"; +import { HeliumEntityManager } from "@helium/idls/lib/types/helium_entity_manager"; +import { + batchParallelInstructionsWithPriorityFee, + chunks, + MOBILE_MINT, + truthy, +} from "@helium/spl-utils"; +import AWS from "aws-sdk"; +import os from "os"; +import { Client } from "pg"; +import yargs from "yargs/yargs"; +import { loadKeypair } from "./utils"; +import { subDaoKey } from "@helium/helium-sub-daos-sdk"; +import deepEqual from "fast-deep-equal"; +import { latLngToCell } from "h3-js"; + +type WifiInfoRow = { + hs_pubkey: string; + antenna: number; + elevation: number; + azimuth: number; + mechanical_down_tilt: number; + electrical_down_tilt: number; + lat: string; + lng: string; +}; + +type WifiInfo = { + hs_pubkey: string; + location: anchor.BN; + deploymentInfo: { + antenna: number; + elevation: number; + azimuth: number; + mechanicalDownTilt: number; + electricalDownTilt: number; + }; +}; + +type MobileHotspotInfo = + anchor.IdlAccounts["mobileHotspotInfoV0"]; + +const hasDeploymentInfo = (wi: WifiInfo) => { + return !!( + wi.deploymentInfo.antenna || + wi.deploymentInfo.elevation || + wi.deploymentInfo.azimuth || + wi.deploymentInfo.mechanicalDownTilt || + wi.deploymentInfo.electricalDownTilt + ); +}; + +export const getH3Location = (lat: number, lng: number) => { + const h3Index = latLngToCell(lat, lng, 12); + return new anchor.BN(h3Index, 16); +}; + +export async function run(args: any = process.argv) { + const yarg = yargs(args).options({ + wallet: { + alias: "k", + describe: "Anchor wallet keypair", + default: `${os.homedir()}/.config/solana/id.json`, + }, + url: { + alias: "u", + default: "http://127.0.0.1:8899", + describe: "The solana url", + }, + pgUser: { + default: "postgres", + }, + pgPassword: { + type: "string", + }, + pgDatabase: { + type: "string", + }, + pgHost: { + default: "localhost", + }, + pgPort: { + default: "5432", + }, + awsRegion: { + default: "us-east-1", + }, + noSsl: { + type: "boolean", + default: false, + }, + commit: { + type: "boolean", + default: false, + }, + }); + + const argv = await yarg.argv; + const commit = argv.commit; + process.env.ANCHOR_WALLET = argv.wallet; + process.env.ANCHOR_PROVIDER_URL = argv.url; + anchor.setProvider(anchor.AnchorProvider.local(argv.url)); + const provider = anchor.getProvider() as anchor.AnchorProvider; + const conn = provider.connection; + const wallet = new anchor.Wallet(loadKeypair(argv.wallet)); + const hem = await initHEM(provider); + const isRds = argv.pgHost.includes("rds.amazon.com"); + let password = argv.pgPassword; + + if (isRds && !password) { + const signer = new AWS.RDS.Signer({ + region: argv.awsRegion, + hostname: argv.pgHost, + port: Number(argv.pgPort), + username: argv.pgUser, + }); + + password = await new Promise((resolve, reject) => + signer.getAuthToken({}, (err, token) => { + if (err) { + return reject(err); + } + resolve(token); + }) + ); + } + + const client = new Client({ + user: argv.pgUser, + password, + host: argv.pgHost, + database: argv.pgDatabase, + port: Number(argv.pgPort), + ssl: argv.noSsl + ? { + rejectUnauthorized: false, + } + : false, + }); + + await client.connect(); + const [subDao] = subDaoKey(MOBILE_MINT); + const [rewardableEntityconfig] = rewardableEntityConfigKey(subDao, "MOBILE"); + const wifiInfos = (await client.query(`SELECT * FROM wifi_infos`)).rows.map( + (wifiInfo: WifiInfoRow): WifiInfo => ({ + ...wifiInfo, + location: getH3Location(Number(wifiInfo.lat), Number(wifiInfo.lng)), + deploymentInfo: { + antenna: Number(wifiInfo.antenna), + elevation: Number(wifiInfo.elevation), + azimuth: Number(wifiInfo.azimuth), + mechanicalDownTilt: Number(wifiInfo.mechanical_down_tilt), + electricalDownTilt: Number(wifiInfo.electrical_down_tilt), + }, + }) + ); + + const mobileInfos = wifiInfos.map( + (wifiInfo) => mobileInfoKey(rewardableEntityconfig, wifiInfo.hs_pubkey)[0] + ); + + const accountInfosWithPk = ( + await Promise.all( + chunks(mobileInfos, 100).map((chunk) => + conn.getMultipleAccountsInfo(chunk) + ) + ) + ) + .flat() + .map((accountInfo, idx) => ({ + pubkey: mobileInfos[idx], + wifiInfo: wifiInfos[idx], + ...accountInfo, + })); + + const ixs = ( + await Promise.all( + accountInfosWithPk.map(async (acc) => { + let correction: { + location?: anchor.BN; + deploymentInfo?: MobileDeploymentInfoV0; + } = {}; + + const decodedAcc: MobileHotspotInfo = hem.coder.accounts.decode( + "MobileHotspotInfoV0", + acc.data as Buffer + ); + + const hasNewDeploymentInfo = + !decodedAcc.deploymentInfo && hasDeploymentInfo(acc.wifiInfo); + const deploymentInfoChanged = !deepEqual( + decodedAcc.deploymentInfo?.wifiInfoV0, + acc.wifiInfo.deploymentInfo + ); + + const locationMissing = !decodedAcc.location && acc.wifiInfo.location; + const locationChanged = + decodedAcc.location && !acc.wifiInfo.location.eq(decodedAcc.location); + + if (hasNewDeploymentInfo || deploymentInfoChanged) { + correction = { + ...correction, + deploymentInfo: { + wifiInfoV0: { + ...acc.wifiInfo.deploymentInfo, + }, + }, + }; + } + + if (locationMissing || locationChanged) { + correction = { + ...correction, + location: acc.wifiInfo.location, + }; + } + + if (Object.keys(correction).length > 0) { + return await hem.methods + .tempBackfillMobileInfo({ + location: correction.location || null, + deploymentInfo: correction.deploymentInfo || null, + }) + .accounts({ + payer: wallet.publicKey, + mobileInfo: acc.pubkey, + }) + .instruction(); + } + }) + ) + ).filter(truthy); + + console.log(`Total corrections needed: ${ixs.length}`); + if (commit) { + await batchParallelInstructionsWithPriorityFee(provider, ixs); + } +} diff --git a/packages/helium-admin-cli/yarn.deploy.lock b/packages/helium-admin-cli/yarn.deploy.lock index dde386b53..13a80e26e 100644 --- a/packages/helium-admin-cli/yarn.deploy.lock +++ b/packages/helium-admin-cli/yarn.deploy.lock @@ -342,7 +342,9 @@ __metadata: axios: ^1.3.6 bn.js: ^5.2.0 bs58: ^4.0.1 + fast-deep-equal: ^3.1.3 git-format-staged: ^2.1.3 + h3-js: ^4.1.0 ts-loader: ^9.2.3 ts-node: ^10.9.1 typescript: ^5.2.2 @@ -2404,6 +2406,13 @@ __metadata: languageName: node linkType: hard +"h3-js@npm:^4.1.0": + version: 4.1.0 + resolution: "h3-js@npm:4.1.0" + checksum: d36f28254c9a921c7fa49e24384f31c8ab9dd9af0a0ab5c3b8e048d78f5420fa3cf4766990e8d7aca4c86469ddd947b376a7dfdda37481d873107d3189e8426f + languageName: node + linkType: hard + "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" diff --git a/packages/helium-entity-manager-sdk/src/index.ts b/packages/helium-entity-manager-sdk/src/index.ts index 2027d79af..50b125219 100644 --- a/packages/helium-entity-manager-sdk/src/index.ts +++ b/packages/helium-entity-manager-sdk/src/index.ts @@ -16,4 +16,5 @@ export * from "./pdas"; export * from "./resolvers"; export { keyToAssetForAsset } from "./helpers"; -export type MobileDeploymentInfoV0 = IdlTypes["MobileDeploymentInfoV0"]; +export type MobileDeploymentInfoV0 = + IdlTypes["MobileDeploymentInfoV0"]; diff --git a/packages/spl-utils/src/fetchBackwardsCompatibleIdl.ts b/packages/spl-utils/src/fetchBackwardsCompatibleIdl.ts index 812fe633b..255a291cb 100644 --- a/packages/spl-utils/src/fetchBackwardsCompatibleIdl.ts +++ b/packages/spl-utils/src/fetchBackwardsCompatibleIdl.ts @@ -7541,10 +7541,38 @@ const IDLS_BY_PROGRAM: Record = { }, ], }, + { + name: "tempBackfillMobileInfo", + accounts: [ + { + name: "payer", + isMut: true, + isSigner: true, + }, + { + name: "mobileInfo", + isMut: true, + isSigner: false, + }, + { + name: "systemProgram", + isMut: false, + isSigner: false, + }, + ], + args: [ + { + name: "args", + type: { + defined: "TempBackfillMobileInfoArgs", + }, + }, + ], + }, ], accounts: [ { - name: "rewardableEntityConfigV0", + name: "RewardableEntityConfigV0", type: { kind: "struct", fields: [ @@ -7578,7 +7606,7 @@ const IDLS_BY_PROGRAM: Record = { }, }, { - name: "makerV0", + name: "MakerV0", type: { kind: "struct", fields: [ @@ -7618,7 +7646,7 @@ const IDLS_BY_PROGRAM: Record = { }, }, { - name: "makerApprovalV0", + name: "MakerApprovalV0", type: { kind: "struct", fields: [ @@ -7638,7 +7666,7 @@ const IDLS_BY_PROGRAM: Record = { }, }, { - name: "dataOnlyConfigV0", + name: "DataOnlyConfigV0", type: { kind: "struct", fields: [ @@ -7686,7 +7714,7 @@ const IDLS_BY_PROGRAM: Record = { }, }, { - name: "programApprovalV0", + name: "ProgramApprovalV0", type: { kind: "struct", fields: [ @@ -7706,7 +7734,7 @@ const IDLS_BY_PROGRAM: Record = { }, }, { - name: "keyToAssetV0", + name: "KeyToAssetV0", type: { kind: "struct", fields: [ @@ -7736,7 +7764,7 @@ const IDLS_BY_PROGRAM: Record = { }, }, { - name: "iotHotspotInfoV0", + name: "IotHotspotInfoV0", type: { kind: "struct", fields: [ @@ -7786,7 +7814,7 @@ const IDLS_BY_PROGRAM: Record = { }, }, { - name: "mobileHotspotInfoV0", + name: "MobileHotspotInfoV0", type: { kind: "struct", fields: [ @@ -8221,6 +8249,28 @@ const IDLS_BY_PROGRAM: Record = { ], }, }, + { + name: "TempBackfillMobileInfoArgs", + type: { + kind: "struct", + fields: [ + { + name: "location", + type: { + option: "u64", + }, + }, + { + name: "deploymentInfo", + type: { + option: { + defined: "MobileDeploymentInfoV0", + }, + }, + }, + ], + }, + }, { name: "MetadataArgs", type: { @@ -8551,19 +8601,19 @@ const IDLS_BY_PROGRAM: Record = { name: "IotConfig", fields: [ { - name: "min_gain", + name: "minGain", type: "i32", }, { - name: "max_gain", + name: "maxGain", type: "i32", }, { - name: "full_location_staking_fee", + name: "fullLocationStakingFee", type: "u64", }, { - name: "dataonly_location_staking_fee", + name: "dataonlyLocationStakingFee", type: "u64", }, ], @@ -8572,11 +8622,11 @@ const IDLS_BY_PROGRAM: Record = { name: "MobileConfig", fields: [ { - name: "full_location_staking_fee", + name: "fullLocationStakingFee", type: "u64", }, { - name: "dataonly_location_staking_fee", + name: "dataonlyLocationStakingFee", type: "u64", }, ], @@ -8585,7 +8635,7 @@ const IDLS_BY_PROGRAM: Record = { name: "MobileConfigV1", fields: [ { - name: "fees_by_device", + name: "feesByDevice", type: { vec: { defined: "DeviceFeesV0", @@ -8598,7 +8648,7 @@ const IDLS_BY_PROGRAM: Record = { name: "MobileConfigV2", fields: [ { - name: "fees_by_device", + name: "feesByDevice", type: { vec: { defined: "DeviceFeesV1", @@ -8645,11 +8695,11 @@ const IDLS_BY_PROGRAM: Record = { type: "u16", }, { - name: "mechanical_down_tilt", + name: "mechanicalDownTilt", type: "u16", }, { - name: "electrical_down_tilt", + name: "electricalDownTilt", type: "u16", }, ], @@ -8658,7 +8708,7 @@ const IDLS_BY_PROGRAM: Record = { name: "CbrsInfoV0", fields: [ { - name: "radio_infos", + name: "radioInfos", type: { vec: { defined: "RadioInfoV0", diff --git a/programs/helium-entity-manager/src/instructions/mod.rs b/programs/helium-entity-manager/src/instructions/mod.rs index 417285d6f..7ddb28fa4 100644 --- a/programs/helium-entity-manager/src/instructions/mod.rs +++ b/programs/helium-entity-manager/src/instructions/mod.rs @@ -16,6 +16,7 @@ pub mod revoke_maker_v0; pub mod revoke_program_v0; pub mod set_entity_active_v0; pub mod set_maker_tree_v0; +pub mod temp_backfill_mobile_info; pub mod temp_pay_mobile_onboarding_fee_v0; pub mod temp_standardize_entity; pub mod update_data_only_tree_v0; @@ -43,6 +44,7 @@ pub use revoke_maker_v0::*; pub use revoke_program_v0::*; pub use set_entity_active_v0::*; pub use set_maker_tree_v0::*; +pub use temp_backfill_mobile_info::*; pub use temp_pay_mobile_onboarding_fee_v0::*; pub use temp_standardize_entity::*; pub use update_data_only_tree_v0::*; diff --git a/programs/helium-entity-manager/src/instructions/temp_backfill_mobile_info.rs b/programs/helium-entity-manager/src/instructions/temp_backfill_mobile_info.rs new file mode 100644 index 000000000..bdd32bf1c --- /dev/null +++ b/programs/helium-entity-manager/src/instructions/temp_backfill_mobile_info.rs @@ -0,0 +1,44 @@ +use crate::state::*; +use anchor_lang::prelude::*; +use shared_utils::*; +use std::str::FromStr; + +#[derive(AnchorSerialize, AnchorDeserialize, Clone, Default)] +pub struct TempBackfillMobileInfoArgs { + pub location: Option, + pub deployment_info: Option, +} + +#[derive(Accounts)] +#[instruction(args: TempBackfillMobileInfoArgs)] +pub struct TempBackfillMobileInfo<'info> { + #[account( + mut, + address = Pubkey::from_str("hprdnjkbziK8NqhThmAn5Gu4XqrBbctX8du4PfJdgvW").unwrap() + )] + pub payer: Signer<'info>, + #[account(mut)] + pub mobile_info: Box>, + pub system_program: Program<'info, System>, +} + +pub fn handler<'info>( + ctx: Context<'_, '_, '_, 'info, TempBackfillMobileInfo<'info>>, + args: TempBackfillMobileInfoArgs, +) -> Result<()> { + if let Some(new_location) = args.location { + ctx.accounts.mobile_info.location = Some(new_location); + } + + if let Some(deployment_info) = args.deployment_info { + ctx.accounts.mobile_info.deployment_info = Some(deployment_info); + } + + resize_to_fit( + &ctx.accounts.payer, + &ctx.accounts.system_program.to_account_info(), + &ctx.accounts.mobile_info, + )?; + + Ok(()) +} diff --git a/programs/helium-entity-manager/src/lib.rs b/programs/helium-entity-manager/src/lib.rs index 34e7c5ac9..386f10447 100644 --- a/programs/helium-entity-manager/src/lib.rs +++ b/programs/helium-entity-manager/src/lib.rs @@ -187,4 +187,11 @@ pub mod helium_entity_manager { ) -> Result<()> { onboard_data_only_mobile_hotspot_v0::handler(ctx, args) } + + pub fn temp_backfill_mobile_info<'info>( + ctx: Context<'_, '_, '_, 'info, TempBackfillMobileInfo<'info>>, + args: TempBackfillMobileInfoArgs, + ) -> Result<()> { + temp_backfill_mobile_info::handler(ctx, args) + } } diff --git a/yarn.lock b/yarn.lock index b3d865918..2487fe8b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -556,7 +556,6 @@ __metadata: "@types/async-retry": ^1.4.8 "@types/bn.js": ^5.1.1 "@types/cron": ^2.4.0 - "@types/deep-equal": ^1.0.1 "@types/lodash": ^4.14.195 "@types/node": ^18.11.11 "@types/pg": ^8.6.6 @@ -569,8 +568,8 @@ __metadata: bn.js: ^5.2.0 bs58: ^4.0.1 cron: ^3.1.6 - deep-equal: ^2.2.2 dotenv: ^16.3.1 + fast-deep-equal: ^3.1.3 fastify: ^4.13.0 fastify-cron: ^1.3.1 fastify-metrics: ^10.3.0 @@ -938,7 +937,9 @@ __metadata: axios: ^1.3.6 bn.js: ^5.2.0 bs58: ^4.0.1 + fast-deep-equal: ^3.1.3 git-format-staged: ^2.1.3 + h3-js: ^4.1.0 ts-loader: ^9.2.3 ts-node: ^10.9.1 typescript: ^5.2.2 @@ -4874,16 +4875,6 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "array-buffer-byte-length@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.2" - is-array-buffer: "npm:^3.0.1" - checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 - languageName: node - linkType: hard - "array-buffer-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "array-buffer-byte-length@npm:1.0.1" @@ -6600,32 +6591,6 @@ __metadata: languageName: node linkType: hard -"deep-equal@npm:^2.2.2": - version: 2.2.2 - resolution: "deep-equal@npm:2.2.2" - dependencies: - array-buffer-byte-length: "npm:^1.0.0" - call-bind: "npm:^1.0.2" - es-get-iterator: "npm:^1.1.3" - get-intrinsic: "npm:^1.2.1" - is-arguments: "npm:^1.1.1" - is-array-buffer: "npm:^3.0.2" - is-date-object: "npm:^1.0.5" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.2" - isarray: "npm:^2.0.5" - object-is: "npm:^1.1.5" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.4" - regexp.prototype.flags: "npm:^1.5.0" - side-channel: "npm:^1.0.4" - which-boxed-primitive: "npm:^1.0.2" - which-collection: "npm:^1.0.1" - which-typed-array: "npm:^1.1.9" - checksum: eb61c35157b6ecb96a5359b507b083fbff8ddb4c86a78a781ee38485f77a667465e45d63ee2ebd8a00e86d94c80e499906900cd82c2debb400237e1662cd5397 - languageName: node - linkType: hard - "deep-extend@npm:^0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" @@ -7080,23 +7045,6 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.1.3": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.1.3" - has-symbols: "npm:^1.0.3" - is-arguments: "npm:^1.1.1" - is-map: "npm:^2.0.2" - is-set: "npm:^2.0.2" - is-string: "npm:^1.0.7" - isarray: "npm:^2.0.5" - stop-iteration-iterator: "npm:^1.0.0" - checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d - languageName: node - linkType: hard - "es-iterator-helpers@npm:^1.0.15, es-iterator-helpers@npm:^1.0.17": version: 1.0.18 resolution: "es-iterator-helpers@npm:1.0.18" @@ -8141,7 +8089,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1": +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1": version: 1.2.1 resolution: "get-intrinsic@npm:1.2.1" dependencies: @@ -8972,17 +8920,6 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.4": - version: 1.0.5 - resolution: "internal-slot@npm:1.0.5" - dependencies: - get-intrinsic: "npm:^1.2.0" - has: "npm:^1.0.3" - side-channel: "npm:^1.0.4" - checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a - languageName: node - linkType: hard - "internal-slot@npm:^1.0.7": version: 1.0.7 resolution: "internal-slot@npm:1.0.7" @@ -9022,7 +8959,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.0.4, is-arguments@npm:^1.1.1": +"is-arguments@npm:^1.0.4": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -9032,17 +8969,6 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": - version: 3.0.2 - resolution: "is-array-buffer@npm:3.0.2" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.0" - is-typed-array: "npm:^1.1.10" - checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 - languageName: node - linkType: hard - "is-array-buffer@npm:^3.0.4": version: 3.0.4 resolution: "is-array-buffer@npm:3.0.4" @@ -9245,7 +9171,7 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.1, is-map@npm:^2.0.2": +"is-map@npm:^2.0.1": version: 2.0.2 resolution: "is-map@npm:2.0.2" checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 @@ -9336,7 +9262,7 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.1, is-set@npm:^2.0.2": +"is-set@npm:^2.0.1": version: 2.0.2 resolution: "is-set@npm:2.0.2" checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 @@ -9404,15 +9330,6 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.3": - version: 1.1.12 - resolution: "is-typed-array@npm:1.1.12" - dependencies: - which-typed-array: "npm:^1.1.11" - checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc4771796 - languageName: node - linkType: hard - "is-typed-array@npm:^1.1.13": version: 1.1.13 resolution: "is-typed-array@npm:1.1.13" @@ -9422,6 +9339,15 @@ __metadata: languageName: node linkType: hard +"is-typed-array@npm:^1.1.3": + version: 1.1.12 + resolution: "is-typed-array@npm:1.1.12" + dependencies: + which-typed-array: "npm:^1.1.11" + checksum: 4c89c4a3be07186caddadf92197b17fda663a9d259ea0d44a85f171558270d36059d1c386d34a12cba22dfade5aba497ce22778e866adc9406098c8fc4771796 + languageName: node + linkType: hard + "is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -11332,16 +11258,6 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.1.5": - version: 1.1.5 - resolution: "object-is@npm:1.1.5" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.1.3" - checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe - languageName: node - linkType: hard - "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -12963,17 +12879,6 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.0": - version: 1.5.0 - resolution: "regexp.prototype.flags@npm:1.5.0" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - functions-have-names: "npm:^1.2.3" - checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 - languageName: node - linkType: hard - "regexp.prototype.flags@npm:^1.5.2": version: 1.5.2 resolution: "regexp.prototype.flags@npm:1.5.2" @@ -14040,15 +13945,6 @@ __metadata: languageName: node linkType: hard -"stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" - dependencies: - internal-slot: "npm:^1.0.4" - checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 - languageName: node - linkType: hard - "streamsearch@npm:^1.1.0": version: 1.1.0 resolution: "streamsearch@npm:1.1.0"