@ledgerhq/live-env 4.0.1-nightly.20260924020607 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,345 +1,11 @@
1
1
  # @ledgerhq/live-env
2
2
 
3
- ## 4.0.1-nightly.20260924020607
4
-
5
- ### Patch Changes
6
-
7
- - [#22006](https://github.com/LedgerHQ/ledger-live/pull/22006) [`a62ad28`](https://github.com/LedgerHQ/ledger-live/commit/a62ad28e4900a887567fb61fb8f197af4fa5a23b) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Point the deprecation notices at `docs/configuration.md`, which is now the single guide for where a configuration value belongs and how to take one out of the env registry. `libs/env/MIGRATION.md` and `shared/env/MIGRATION.md` are removed — their content lives there, next to the app `.env` and build-secret mechanics it was already linking to. Comments and docs only.
8
-
9
- ## 4.0.0
10
-
11
- ### Major Changes
12
-
13
- - [#21409](https://github.com/LedgerHQ/ledger-live/pull/21409) [`b9e15ac`](https://github.com/LedgerHQ/ledger-live/commit/b9e15ac78e2b89919c605511f333282610e57225) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Remove the `EnvTypes` registry
14
-
15
- `injectDefinitions()` already moved every env-var default out of the framework, but `EnvTypes` stayed behind and kept the full list of env names and their types inside the library. It is gone, along with the `EnvName` / `EnvValue` exports and the typed `getEnv` / `setEnv` / `getEnvDefault` overloads built on it.
16
-
17
- `getEnv(name)` and `getEnvDefault(name)` now return `any`, so existing call sites keep compiling. A consumer that wants typing declares the vars it reads and wraps the accessor:
18
-
19
- ```ts
20
- import { getEnv as getEnvUnsafe } from "@ledgerhq/live-env";
21
-
22
- type Envs = { MY_TIMEOUT: number; MY_API_URL: string };
23
-
24
- export const getEnv = <K extends keyof Envs>(name: K): Envs[K] =>
25
- getEnvUnsafe(name);
26
- ```
27
-
28
- ### Minor Changes
29
-
30
- - [#21544](https://github.com/LedgerHQ/ledger-live/pull/21544) [`b7a8906`](https://github.com/LedgerHQ/ledger-live/commit/b7a89064587bbcd1f758f7b6205a616225ac2317) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Mark the whole public API deprecated and ship the migration guide. `getEnv`, `setEnv`, `setEnvUnsafe`, `getEnvDefault`, `getAllEnvs`, `injectDefinitions`, `changes`, the registry introspection helpers, the exported types and the `useEnv` hook now carry `@deprecated`. `libs/env/MIGRATION.md` documents the four exits every variable takes; `shared/env/MIGRATION.md` covers what that means inside ledger-live. No behaviour change.
31
-
32
- ## 4.0.0-next.0
33
-
34
- ### Major Changes
35
-
36
- - [#21409](https://github.com/LedgerHQ/ledger-live/pull/21409) [`b9e15ac`](https://github.com/LedgerHQ/ledger-live/commit/b9e15ac78e2b89919c605511f333282610e57225) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Remove the `EnvTypes` registry
37
-
38
- `injectDefinitions()` already moved every env-var default out of the framework, but `EnvTypes` stayed behind and kept the full list of env names and their types inside the library. It is gone, along with the `EnvName` / `EnvValue` exports and the typed `getEnv` / `setEnv` / `getEnvDefault` overloads built on it.
39
-
40
- `getEnv(name)` and `getEnvDefault(name)` now return `any`, so existing call sites keep compiling. A consumer that wants typing declares the vars it reads and wraps the accessor:
41
-
42
- ```ts
43
- import { getEnv as getEnvUnsafe } from "@ledgerhq/live-env";
44
-
45
- type Envs = { MY_TIMEOUT: number; MY_API_URL: string };
46
-
47
- export const getEnv = <K extends keyof Envs>(name: K): Envs[K] =>
48
- getEnvUnsafe(name);
49
- ```
50
-
51
- ### Minor Changes
52
-
53
- - [#21544](https://github.com/LedgerHQ/ledger-live/pull/21544) [`b7a8906`](https://github.com/LedgerHQ/ledger-live/commit/b7a89064587bbcd1f758f7b6205a616225ac2317) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Mark the whole public API deprecated and ship the migration guide. `getEnv`, `setEnv`, `setEnvUnsafe`, `getEnvDefault`, `getAllEnvs`, `injectDefinitions`, `changes`, the registry introspection helpers, the exported types and the `useEnv` hook now carry `@deprecated`. `libs/env/MIGRATION.md` documents the four exits every variable takes; `shared/env/MIGRATION.md` covers what that means inside ledger-live. No behaviour change.
54
-
55
- ## 3.2.0
56
-
57
- ### Minor Changes
58
-
59
- - [#21124](https://github.com/LedgerHQ/ledger-live/pull/21124) [`e21305a`](https://github.com/LedgerHQ/ledger-live/commit/e21305abce18f0a9408bf6c0e2bb47d5c992e06a) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Make getEnv and getEnvDefault throw when the name is not in injected definitions
60
-
61
- ## 3.2.0-next.0
62
-
63
- ### Minor Changes
64
-
65
- - [#21124](https://github.com/LedgerHQ/ledger-live/pull/21124) [`e21305a`](https://github.com/LedgerHQ/ledger-live/commit/e21305abce18f0a9408bf6c0e2bb47d5c992e06a) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Make getEnv and getEnvDefault throw when the name is not in injected definitions
66
-
67
- ## 3.1.0
68
-
69
- ### Minor Changes
70
-
71
- - [#20998](https://github.com/LedgerHQ/ledger-live/pull/20998) [`8161bac`](https://github.com/LedgerHQ/ledger-live/commit/8161bac542474212dfefc8519e714da345b03f71) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - chore: move hedera envs directly to config
72
-
73
- - [#20650](https://github.com/LedgerHQ/ledger-live/pull/20650) [`fbc8036`](https://github.com/LedgerHQ/ledger-live/commit/fbc8036d9bd4e1cc30eea4233f05e8b0498c0e5e) Thanks [@lysyi3m](https://github.com/lysyi3m)! - Add a gRPC-web transport to the Sui coin module
74
-
75
- - `coin-sui` gains a third transport on `sui.rpc.v2` over gRPC-web, covering every capability from
76
- checkpoints to device signing.
77
- - New tri-state `suiTransport` feature flag (`json` | `grpc` | `graphql`), defaulting to `json`,
78
- replaces the boolean `suiGraphqlTransport`, which is removed. An unrecognised value resolves to
79
- `json`.
80
- - New env vars `API_SUI_GRPC_PROXY` and `API_SUI_TESTNET_GRPC_PROXY`. `@mysten/sui` 2.9.0 → 2.23.1.
81
- - Operation `blockHash` carries the real checkpoint digest on gRPC.
82
- - Fix: account sync read a single page of history on GraphQL and gRPC, capping an account at its
83
- newest 50 operations for good — sync resumes from the newest stored operation and never re-reads
84
- what it skipped. Both arms now walk up to `TRANSACTIONS_LIMIT` (300), the depth JSON-RPC reached.
85
- - Fix: a resumed sync on GraphQL and gRPC read backwards from the tip, so when more than
86
- `TRANSACTIONS_LIMIT` transactions arrived between two syncs, the ones in the middle were skipped
87
- and the next sync resumed above them — a permanent hole. Both arms now walk forward from the
88
- cursor, as the JSON-RPC arm already did, leaving anything unread newer than the next resume point.
89
- - Fix: an account holding no operations resumed from its stored `syncHash`, so a cleared cache came
90
- back with only the transactions that arrived after it. Such an account now re-reads its history,
91
- which is also how one truncated by the bug above recovers. Token operations count as history: they
92
- live in the subaccounts, so a token-only account is no longer treated as empty.
93
- - Fix: on gRPC, any failure to resolve a cursor's digest — including a transient network error — was
94
- read as "unknown digest", which falls back to an unbounded page from the tip and made paging report
95
- the end of history. Only a `NOT_FOUND` does that now; everything else propagates and is retried.
96
- - Fix: reading history skipped transactions that shared a checkpoint with the resume point, in
97
- account sync (`getOperations`) as well as paging (`getListOperations`).
98
- - Fix: paging inferred "more to come" from how many operations survived client-side filtering, which
99
- ended the walk early. GraphQL now reads `pageInfo`, gRPC the stream's `QueryEnd` reason. A page
100
- whose transactions were all filtered out now resumes from the page's own boundary instead of
101
- reporting the end of history.
102
- - Fix: a gRPC history record with no timestamp became an operation dated 1970 that could not serve as
103
- a pagination cursor. Those records are now dropped, as the GraphQL arm already did.
104
- - Fix: ascending paging on GraphQL returned the newest slice of the range instead of walking forward
105
- from the oldest.
106
- - Fix: the Sui fetcher dropped `X-Ledger-Client-Version` and all gRPC-web headers when passed a
107
- `Headers` instance.
108
- - Fix: GraphQL resolved the latest checkpoint in two queries, so the second could answer null. It is
109
- now one query.
110
- - A checkpoint missing its `digest` or `timestamp` now raises on both GraphQL and gRPC, instead of
111
- reporting a block with an empty hash and a 1970 timestamp.
112
- - Known limitation: `getListOperations` resumes from a synthesised `timestamp:digest` cursor, so
113
- within one checkpoint a sibling whose digest sorts earlier can be skipped, and a checkpoint holding
114
- more than one page is stepped over rather than resumed inside. Account sync is unaffected: it
115
- resumes from the server's own watermark cursor.
116
-
117
- - [#20955](https://github.com/LedgerHQ/ledger-live/pull/20955) [`39a676d`](https://github.com/LedgerHQ/ledger-live/commit/39a676d2f861d04913264e61100205b4f6044cf9) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - fix: move hedera envs to config/constants
118
-
119
- ## 3.1.0-next.0
120
-
121
- ### Minor Changes
122
-
123
- - [#20998](https://github.com/LedgerHQ/ledger-live/pull/20998) [`8161bac`](https://github.com/LedgerHQ/ledger-live/commit/8161bac542474212dfefc8519e714da345b03f71) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - chore: move hedera envs directly to config
124
-
125
- - [#20650](https://github.com/LedgerHQ/ledger-live/pull/20650) [`fbc8036`](https://github.com/LedgerHQ/ledger-live/commit/fbc8036d9bd4e1cc30eea4233f05e8b0498c0e5e) Thanks [@lysyi3m](https://github.com/lysyi3m)! - Add a gRPC-web transport to the Sui coin module
126
-
127
- - `coin-sui` gains a third transport on `sui.rpc.v2` over gRPC-web, covering every capability from
128
- checkpoints to device signing.
129
- - New tri-state `suiTransport` feature flag (`json` | `grpc` | `graphql`), defaulting to `json`,
130
- replaces the boolean `suiGraphqlTransport`, which is removed. An unrecognised value resolves to
131
- `json`.
132
- - New env vars `API_SUI_GRPC_PROXY` and `API_SUI_TESTNET_GRPC_PROXY`. `@mysten/sui` 2.9.0 → 2.23.1.
133
- - Operation `blockHash` carries the real checkpoint digest on gRPC.
134
- - Fix: account sync read a single page of history on GraphQL and gRPC, capping an account at its
135
- newest 50 operations for good — sync resumes from the newest stored operation and never re-reads
136
- what it skipped. Both arms now walk up to `TRANSACTIONS_LIMIT` (300), the depth JSON-RPC reached.
137
- - Fix: a resumed sync on GraphQL and gRPC read backwards from the tip, so when more than
138
- `TRANSACTIONS_LIMIT` transactions arrived between two syncs, the ones in the middle were skipped
139
- and the next sync resumed above them — a permanent hole. Both arms now walk forward from the
140
- cursor, as the JSON-RPC arm already did, leaving anything unread newer than the next resume point.
141
- - Fix: an account holding no operations resumed from its stored `syncHash`, so a cleared cache came
142
- back with only the transactions that arrived after it. Such an account now re-reads its history,
143
- which is also how one truncated by the bug above recovers. Token operations count as history: they
144
- live in the subaccounts, so a token-only account is no longer treated as empty.
145
- - Fix: on gRPC, any failure to resolve a cursor's digest — including a transient network error — was
146
- read as "unknown digest", which falls back to an unbounded page from the tip and made paging report
147
- the end of history. Only a `NOT_FOUND` does that now; everything else propagates and is retried.
148
- - Fix: reading history skipped transactions that shared a checkpoint with the resume point, in
149
- account sync (`getOperations`) as well as paging (`getListOperations`).
150
- - Fix: paging inferred "more to come" from how many operations survived client-side filtering, which
151
- ended the walk early. GraphQL now reads `pageInfo`, gRPC the stream's `QueryEnd` reason. A page
152
- whose transactions were all filtered out now resumes from the page's own boundary instead of
153
- reporting the end of history.
154
- - Fix: a gRPC history record with no timestamp became an operation dated 1970 that could not serve as
155
- a pagination cursor. Those records are now dropped, as the GraphQL arm already did.
156
- - Fix: ascending paging on GraphQL returned the newest slice of the range instead of walking forward
157
- from the oldest.
158
- - Fix: the Sui fetcher dropped `X-Ledger-Client-Version` and all gRPC-web headers when passed a
159
- `Headers` instance.
160
- - Fix: GraphQL resolved the latest checkpoint in two queries, so the second could answer null. It is
161
- now one query.
162
- - A checkpoint missing its `digest` or `timestamp` now raises on both GraphQL and gRPC, instead of
163
- reporting a block with an empty hash and a 1970 timestamp.
164
- - Known limitation: `getListOperations` resumes from a synthesised `timestamp:digest` cursor, so
165
- within one checkpoint a sibling whose digest sorts earlier can be skipped, and a checkpoint holding
166
- more than one page is stepped over rather than resumed inside. Account sync is unaffected: it
167
- resumes from the server's own watermark cursor.
168
-
169
- - [#20955](https://github.com/LedgerHQ/ledger-live/pull/20955) [`39a676d`](https://github.com/LedgerHQ/ledger-live/commit/39a676d2f861d04913264e61100205b4f6044cf9) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - fix: move hedera envs to config/constants
170
-
171
- ## 3.0.0
172
-
173
- ### Major Changes
174
-
175
- - [#20076](https://github.com/LedgerHQ/ledger-live/pull/20076) [`c475d28`](https://github.com/LedgerHQ/ledger-live/commit/c475d288b4978aa3011c9e76f3e9a1e2f9733010) Thanks [@gre-ledger](https://github.com/gre-ledger)! - **Breaking change**: all env API functions (`getEnv`, `setEnv`, `setEnvUnsafe`, `getEnvDefault`, `getAllEnvs`, `getAllEnvNames`, `getDefinition`, `getEnvDesc`, `isEnvDefault`) now throw if called before `injectDefinitions()`.
176
-
177
- Previously, `@ledgerhq/live-env` bundled ~200 env var definitions and made them available on import. The definitions have been extracted into the new workspace-private `@shared/env` package. The framework layer (`@ledgerhq/live-env`) is now definition-free and requires an explicit bootstrap call.
178
-
179
- **Migration for app consumers** — switch to `@shared/env` (recommended):
180
-
181
- ```ts
182
- // before
183
- import { getEnv } from "@ledgerhq/live-env";
184
-
185
- // after
186
- import { getEnv } from "@shared/env"; // auto-calls injectDefinitions at import time
187
- ```
188
-
189
- **Migration for published libs** that need `@ledgerhq/live-env` directly (e.g. test setup):
190
-
191
- ```ts
192
- import { injectDefinitions, stringParser } from "@ledgerhq/live-env";
193
-
194
- injectDefinitions({
195
- MY_VAR: { def: "default", parser: stringParser, desc: "..." },
196
- });
197
- // now getEnv / setEnv work
198
- ```
199
-
200
- New exports: `injectDefinitions`, `EnvDef<T>`, `EnvDefs`, `EnvChange`, and all parser helpers (`intParser`, `floatParser`, `boolParser`, `stringParser`, `jsonParser`, `stringArrayParser`).
201
-
202
- ## 3.0.0-next.0
203
-
204
- ### Major Changes
205
-
206
- - [#20076](https://github.com/LedgerHQ/ledger-live/pull/20076) [`c475d28`](https://github.com/LedgerHQ/ledger-live/commit/c475d288b4978aa3011c9e76f3e9a1e2f9733010) Thanks [@gre-ledger](https://github.com/gre-ledger)! - **Breaking change**: all env API functions (`getEnv`, `setEnv`, `setEnvUnsafe`, `getEnvDefault`, `getAllEnvs`, `getAllEnvNames`, `getDefinition`, `getEnvDesc`, `isEnvDefault`) now throw if called before `injectDefinitions()`.
207
-
208
- Previously, `@ledgerhq/live-env` bundled ~200 env var definitions and made them available on import. The definitions have been extracted into the new workspace-private `@shared/env` package. The framework layer (`@ledgerhq/live-env`) is now definition-free and requires an explicit bootstrap call.
209
-
210
- **Migration for app consumers** — switch to `@shared/env` (recommended):
211
-
212
- ```ts
213
- // before
214
- import { getEnv } from "@ledgerhq/live-env";
215
-
216
- // after
217
- import { getEnv } from "@shared/env"; // auto-calls injectDefinitions at import time
218
- ```
219
-
220
- **Migration for published libs** that need `@ledgerhq/live-env` directly (e.g. test setup):
221
-
222
- ```ts
223
- import { injectDefinitions, stringParser } from "@ledgerhq/live-env";
224
-
225
- injectDefinitions({
226
- MY_VAR: { def: "default", parser: stringParser, desc: "..." },
227
- });
228
- // now getEnv / setEnv work
229
- ```
230
-
231
- New exports: `injectDefinitions`, `EnvDef<T>`, `EnvDefs`, `EnvChange`, and all parser helpers (`intParser`, `floatParser`, `boolParser`, `stringParser`, `jsonParser`, `stringArrayParser`).
232
-
233
- ## 2.42.0
234
-
235
- ### Minor Changes
236
-
237
- - [#19439](https://github.com/LedgerHQ/ledger-live/pull/19439) [`a15b864`](https://github.com/LedgerHQ/ledger-live/commit/a15b864576d901f15d480070b475314c3b23c1dd) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Update default values for `CAL_SERVICE_URL` and `CAL_SERVICE_URL_STAGING` to the Gravitee gateway URLs (`https://global.api.prd.ledger.com/cal` and `https://global.api.stg.ledger-test.com/cal`).
238
-
239
- - [#19507](https://github.com/LedgerHQ/ledger-live/pull/19507) [`fc44f1e`](https://github.com/LedgerHQ/ledger-live/commit/fc44f1e6ddcca939c117e0cb8bc49c404163b003) Thanks [@Moustafa-Koterba](https://github.com/Moustafa-Koterba)! - feat(solana): update default validators summary base url for prod
240
-
241
- ## 2.42.0-next.0
242
-
243
- ### Minor Changes
244
-
245
- - [#19439](https://github.com/LedgerHQ/ledger-live/pull/19439) [`a15b864`](https://github.com/LedgerHQ/ledger-live/commit/a15b864576d901f15d480070b475314c3b23c1dd) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Update default values for `CAL_SERVICE_URL` and `CAL_SERVICE_URL_STAGING` to the Gravitee gateway URLs (`https://global.api.prd.ledger.com/cal` and `https://global.api.stg.ledger-test.com/cal`).
246
-
247
- - [#19507](https://github.com/LedgerHQ/ledger-live/pull/19507) [`fc44f1e`](https://github.com/LedgerHQ/ledger-live/commit/fc44f1e6ddcca939c117e0cb8bc49c404163b003) Thanks [@Moustafa-Koterba](https://github.com/Moustafa-Koterba)! - feat(solana): update default validators summary base url for prod
248
-
249
- ## 2.41.0
250
-
251
- ### Minor Changes
252
-
253
- - [#19231](https://github.com/LedgerHQ/ledger-live/pull/19231) [`70a706e`](https://github.com/LedgerHQ/ledger-live/commit/70a706e4efe3a6fa176f9827a4a06949ba185f11) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Remove unused USE_LEARN_STAGING_URL env var
254
-
255
- ## 2.41.0-next.0
256
-
257
- ### Minor Changes
258
-
259
- - [#19231](https://github.com/LedgerHQ/ledger-live/pull/19231) [`70a706e`](https://github.com/LedgerHQ/ledger-live/commit/70a706e4efe3a6fa176f9827a4a06949ba185f11) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Remove unused USE_LEARN_STAGING_URL env var
260
-
261
- ## 2.40.0
262
-
263
- ### Minor Changes
264
-
265
- - [#18823](https://github.com/LedgerHQ/ledger-live/pull/18823) [`13aeeb6`](https://github.com/LedgerHQ/ledger-live/commit/13aeeb6186997b433785e542ed1dafa6afde2267) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - chore: remove unused thirdweb code
266
-
267
- - [#17970](https://github.com/LedgerHQ/ledger-live/pull/17970) [`798081d`](https://github.com/LedgerHQ/ledger-live/commit/798081db3e427c8d2d09930ceb836703146ca1ba) Thanks [@YazhuEth](https://github.com/YazhuEth)! - Migrate the Polkadot family (mainnet and Westend, relay chain and asset hub) to the new polkadot-rest-api endpoints, served under a `/v1` prefix (`/v1/rc` for the relay chain).
268
-
269
- Adapt the coin-polkadot client to the rest-api, which is not fully 1:1 with substrate-api-sidecar:
270
-
271
- - staking storage queries use `keys[]` only (drop the legacy `key1` query param, rejected by the rest-api);
272
- - tolerate a missing `ss58Format` in `/runtime/spec` (e.g. Westend Asset Hub) instead of producing `NaN`;
273
- - parse the new `/transaction/dry-run` response shape (`resultType` at the root, error under `result.error`, plus the `TransactionValidityError` case).
274
-
275
- ## 2.40.0-next.0
276
-
277
- ### Minor Changes
278
-
279
- - [#18823](https://github.com/LedgerHQ/ledger-live/pull/18823) [`13aeeb6`](https://github.com/LedgerHQ/ledger-live/commit/13aeeb6186997b433785e542ed1dafa6afde2267) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - chore: remove unused thirdweb code
280
-
281
- - [#17970](https://github.com/LedgerHQ/ledger-live/pull/17970) [`798081d`](https://github.com/LedgerHQ/ledger-live/commit/798081db3e427c8d2d09930ceb836703146ca1ba) Thanks [@YazhuEth](https://github.com/YazhuEth)! - Migrate the Polkadot family (mainnet and Westend, relay chain and asset hub) to the new polkadot-rest-api endpoints, served under a `/v1` prefix (`/v1/rc` for the relay chain).
282
-
283
- Adapt the coin-polkadot client to the rest-api, which is not fully 1:1 with substrate-api-sidecar:
284
-
285
- - staking storage queries use `keys[]` only (drop the legacy `key1` query param, rejected by the rest-api);
286
- - tolerate a missing `ss58Format` in `/runtime/spec` (e.g. Westend Asset Hub) instead of producing `NaN`;
287
- - parse the new `/transaction/dry-run` response shape (`resultType` at the root, error under `result.error`, plus the `TransactionValidityError` case).
288
-
289
- ## 2.39.0
290
-
291
- ### Minor Changes
292
-
293
- - [#18395](https://github.com/LedgerHQ/ledger-live/pull/18395) [`81ceb34`](https://github.com/LedgerHQ/ledger-live/commit/81ceb347c0b2167358c601a9922e2c7fa14a845b) Thanks [@pawell24](https://github.com/pawell24)! - fix: point aptos testnet endpoints to public aptos backend
294
-
295
- - [#18320](https://github.com/LedgerHQ/ledger-live/pull/18320) [`9ab3a61`](https://github.com/LedgerHQ/ledger-live/commit/9ab3a6157abb3a382c3157eb292ce9d9d2c6df93) Thanks [@ishaba](https://github.com/ishaba)! - fix: sui testnet node url update
296
-
297
- - [#18256](https://github.com/LedgerHQ/ledger-live/pull/18256) [`eb1dae8`](https://github.com/LedgerHQ/ledger-live/commit/eb1dae8fc14ff8e0bc1e1ce040712492a0328451) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Derive "supported currencies" from the coin-modules registry instead of `setSupportedCurrencies`.
298
-
299
- Each `CoinModuleLoader` now declares a `supportedCoins: CryptoCurrencyId[]` field, and a currency is supported when it appears in a registered loader's `supportedCoins`. The framework `setSupportedCurrencies` / `listSupportedCurrencies` / `isCurrencySupported` and the `EXPERIMENTAL_CURRENCIES` env are removed; `listSupportedCurrencies` / `isCurrencySupported` are now exported from `@ledgerhq/live-common/currencies` backed by the registry. Apps no longer maintain a supported-currencies list — registering the coin modules is what makes their currencies supported.
300
-
301
- ## 2.39.0-next.0
3
+ ## 4.1.0
302
4
 
303
5
  ### Minor Changes
304
6
 
305
- - [#18395](https://github.com/LedgerHQ/ledger-live/pull/18395) [`81ceb34`](https://github.com/LedgerHQ/ledger-live/commit/81ceb347c0b2167358c601a9922e2c7fa14a845b) Thanks [@pawell24](https://github.com/pawell24)! - fix: point aptos testnet endpoints to public aptos backend
306
-
307
- - [#18320](https://github.com/LedgerHQ/ledger-live/pull/18320) [`9ab3a61`](https://github.com/LedgerHQ/ledger-live/commit/9ab3a6157abb3a382c3157eb292ce9d9d2c6df93) Thanks [@ishaba](https://github.com/ishaba)! - fix: sui testnet node url update
308
-
309
- - [#18256](https://github.com/LedgerHQ/ledger-live/pull/18256) [`eb1dae8`](https://github.com/LedgerHQ/ledger-live/commit/eb1dae8fc14ff8e0bc1e1ce040712492a0328451) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Derive "supported currencies" from the coin-modules registry instead of `setSupportedCurrencies`.
310
-
311
- Each `CoinModuleLoader` now declares a `supportedCoins: CryptoCurrencyId[]` field, and a currency is supported when it appears in a registered loader's `supportedCoins`. The framework `setSupportedCurrencies` / `listSupportedCurrencies` / `isCurrencySupported` and the `EXPERIMENTAL_CURRENCIES` env are removed; `listSupportedCurrencies` / `isCurrencySupported` are now exported from `@ledgerhq/live-common/currencies` backed by the registry. Apps no longer maintain a supported-currencies list — registering the coin modules is what makes their currencies supported.
312
-
313
- ## 2.38.0
314
-
315
- ### Minor Changes
316
-
317
- - [#18030](https://github.com/LedgerHQ/ledger-live/pull/18030) [`b14d5cc`](https://github.com/LedgerHQ/ledger-live/commit/b14d5cc29cc75c6be2e565db3d4d0ab400cc56d9) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - refactor: unify aleo node endpoint env
318
-
319
- - [#18105](https://github.com/LedgerHQ/ledger-live/pull/18105) [`ec38133`](https://github.com/LedgerHQ/ledger-live/commit/ec38133ab6b2c18d329e1c78320b7c2a1f80fbfc) Thanks [@ishaba](https://github.com/ishaba)! - feat: cardano coin module api getValidators
320
-
321
- ## 2.38.0-next.0
322
-
323
- ### Minor Changes
324
-
325
- - [#18030](https://github.com/LedgerHQ/ledger-live/pull/18030) [`b14d5cc`](https://github.com/LedgerHQ/ledger-live/commit/b14d5cc29cc75c6be2e565db3d4d0ab400cc56d9) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - refactor: unify aleo node endpoint env
326
-
327
- - [#18105](https://github.com/LedgerHQ/ledger-live/pull/18105) [`ec38133`](https://github.com/LedgerHQ/ledger-live/commit/ec38133ab6b2c18d329e1c78320b7c2a1f80fbfc) Thanks [@ishaba](https://github.com/ishaba)! - feat: cardano coin module api getValidators
328
-
329
- ## 2.37.0
330
-
331
- ### Minor Changes
332
-
333
- - [#17648](https://github.com/LedgerHQ/ledger-live/pull/17648) [`5fc817a`](https://github.com/LedgerHQ/ledger-live/commit/5fc817a5ee316396a327e5b10eccd8314bfb2df5) Thanks [@hedi-edelbloute](https://github.com/hedi-edelbloute)! - Add Arc and Arc Testnet (Circle's USDC-native EVM L1, chainIds 5042 and 5042002)
334
-
335
- - [#17877](https://github.com/LedgerHQ/ledger-live/pull/17877) [`65f87d9`](https://github.com/LedgerHQ/ledger-live/commit/65f87d938ac4158e0ae706593d2a46561097f5a9) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - refactor: upgrade hedera utils with configOrCurrencyId param
336
-
337
- ## 2.37.0-next.0
338
-
339
- ### Minor Changes
340
-
341
- - [#17648](https://github.com/LedgerHQ/ledger-live/pull/17648) [`5fc817a`](https://github.com/LedgerHQ/ledger-live/commit/5fc817a5ee316396a327e5b10eccd8314bfb2df5) Thanks [@hedi-edelbloute](https://github.com/hedi-edelbloute)! - Add Arc and Arc Testnet (Circle's USDC-native EVM L1, chainIds 5042 and 5042002)
342
-
343
- - [#17877](https://github.com/LedgerHQ/ledger-live/pull/17877) [`65f87d9`](https://github.com/LedgerHQ/ledger-live/commit/65f87d938ac4158e0ae706593d2a46561097f5a9) Thanks [@mdomanski-ext-ledger](https://github.com/mdomanski-ext-ledger)! - refactor: upgrade hedera utils with configOrCurrencyId param
344
-
345
- <!-- changelog-pruned: older entries were removed to keep this file small. Full history is in `git log -p CHANGELOG.md` and in the GitHub release for each version. -->
7
+ - [#98](https://github.com/LedgerHQ/ts-libs/pull/98) [`461d059`](https://github.com/LedgerHQ/ts-libs/commit/461d059638e47c2f73b7f9c214e42f330e67a0d1) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Move the package from the ledger-live monorepo to ts-libs. No API change; the package stays
8
+ DEPRECATED and is still being sunset — see MIGRATION.md.
9
+
10
+ The `exports` map now lists `.`, `./index`, `./env`, `./state`, `./lib/*` and `./lib-es/*`
11
+ explicitly, in place of the previous `./*` wildcard.
package/MIGRATION.md ADDED
@@ -0,0 +1,148 @@
1
+ # Migrating off `@ledgerhq/live-env`
2
+
3
+ > [!WARNING]
4
+ > **`@ledgerhq/live-env` is deprecated.** Do not add definitions, do not add call sites.
5
+ > This guide is how you take an existing one out.
6
+
7
+ ## Why
8
+
9
+ The framework is fine; the injection is the problem. `injectDefinitions()` registers a global
10
+ mutable singleton, and everything downstream inherits it:
11
+
12
+ - every consumer of a shared library must inject, or `getEnv` throws
13
+ - a value read through a global is invisible in the dependency graph — nothing tells you a library
14
+ needs it until it fails at runtime
15
+ - it duplicates three mechanisms that already exist: feature flags, build-time constants, and
16
+ `process.env`
17
+
18
+ ## The four exits
19
+
20
+ Every variable leaves by exactly one of these. Pick by asking what the value actually does, not by
21
+ what is easiest to type.
22
+
23
+ | The value… | Replacement | Why |
24
+ | -------------------------- | --------------------------------- | -------------------------------- |
25
+ | is togglable remotely | **feature flag** | already remote, typed, audited |
26
+ | never varies at runtime | **inline constant** | the dependency leaves the graph |
27
+ | varies in CI / tests / dev | **`process.env` at the use site** | no registry, no injection |
28
+ | varies per app | **passed in as a parameter** | the app owns state, not the lib |
29
+
30
+ If two look plausible, prefer the one further down the table: it removes more machinery.
31
+ If none fit, that is a signal worth raising, not a blocker.
32
+
33
+ ---
34
+
35
+ ### 1. Togglable remotely → feature flag
36
+
37
+ A value someone wants to flip without a release is a feature flag. Often the flag already exists
38
+ and the env var is just the fallback nobody deleted — check before writing a new one.
39
+
40
+ ```diff
41
+ - import { getEnv } from "@ledgerhq/live-env";
42
+ -
43
+ - if (!feature?.enabled) return getEnv("ENABLE_THING").split(",");
44
+ - return feature?.params?.things ?? null;
45
+ + return feature?.params?.things ?? null;
46
+ ```
47
+
48
+ Outside React, the flag reaches you through the config your composition root already builds — not
49
+ through a second global.
50
+
51
+ ### 2. Never varies at runtime → inline constant
52
+
53
+ If nothing calls `setEnv` on it and no bootstrap overrides it, it is a constant that has been
54
+ paying registry rent for years.
55
+
56
+ ```diff
57
+ - import { getEnv } from "@ledgerhq/live-env";
58
+ - const version = () => getEnv("API_VERSION");
59
+ + const API_VERSION = 2;
60
+ ```
61
+
62
+ This is the exit that shrinks the dependency graph: the module stops importing the library at all.
63
+
64
+ Two things make *every* variable look overridable, and neither should stop you: a bootstrap that
65
+ loops `process.env` into `setEnvUnsafe`, and any debug UI that can set a variable by name. Those
66
+ are generic escape hatches, not evidence that a value varies. Ask whether a *product* path sets it.
67
+
68
+ ### 3. Varies in CI / tests / dev → `process.env` at the point of use
69
+
70
+ Read it where you need it and parse it there. No registry entry, no injection, no import ordering.
71
+
72
+ ```diff
73
+ - import { getEnv } from "@ledgerhq/live-env";
74
+ - setDecimalPlaces(getEnv("DECIMAL_PLACES"));
75
+ + const decimalPlaces = Number.parseInt(process.env.DECIMAL_PLACES ?? "", 10);
76
+ + setDecimalPlaces(Number.isNaN(decimalPlaces) ? 40 : decimalPlaces);
77
+ ```
78
+
79
+ Keep the default at the use site, as above.
80
+
81
+ > [!CAUTION]
82
+ > **Do not fall back with `||`.** `Number(process.env.X) || 40` looks equivalent and is not: it
83
+ > swallows a legitimate `0`, and `false` for booleans. `intParser` returns `0` for `X=0` today, so
84
+ > `||` silently changes behaviour for anyone who set it. Test against `Number.isNaN`, or `??` over
85
+ > an already-parsed value. This is the most likely way to introduce a bug while migrating.
86
+
87
+ Where `process.env` is not populated the way it is under Node — a React Native app, a bundler
88
+ target — use that platform's existing accessor. The point of the exit is unchanged: the value stops
89
+ travelling through a singleton.
90
+
91
+ ### 4. Varies per app → passed in as a parameter
92
+
93
+ The app knows things a library cannot. Take the value as an argument. Do not store it.
94
+
95
+ Replacing `getEnv` with a module-level `let` and a `configure()` is the same anti-pattern one size
96
+ down — still global, still mutable, still absent from the signature, still order-dependent at
97
+ import time. Runtime state is the end app's responsibility; a library receives what it needs.
98
+
99
+ ```diff
100
+ // library
101
+ - import { getEnv } from "@ledgerhq/live-env";
102
+ -
103
+ - export function fetchThing(id: string) {
104
+ - return request(`${getEnv("API_URL")}/things/${id}`);
105
+ - }
106
+ + export function fetchThing(ctx: { apiUrl: string }, id: string) {
107
+ + return request(`${ctx.apiUrl}/things/${id}`);
108
+ + }
109
+ ```
110
+
111
+ Where several values travel together, group them into one context object threaded as the first
112
+ argument rather than growing the parameter list.
113
+
114
+ The signature is the whole point. A caller cannot forget the value, a test supplies a different one
115
+ without touching global state, and two callers can use two different values at the same time —
116
+ none of which a singleton allows.
117
+
118
+ If the library already has a `setX()`/`configure()`, moving a variable into it is a shorter step
119
+ than staying, but it is not the destination. Prefer the parameter.
120
+
121
+ Two things to get right:
122
+
123
+ - **A value the user can change is app state.** The library does not subscribe to it; the app
124
+ re-reads its own store and passes the current value on the next call.
125
+ - **Migrate the whole bridge, not one key.** Where a setup function copies several variables into a
126
+ library, taking one of them out and leaving the call silently drops the rest.
127
+
128
+ **Backend URLs deserve extra care.** Do not inline an endpoint where the `getEnv` used to be — that
129
+ scatters one backend's address across every file that talks to it, which is the same mistake in a
130
+ new shape. Resolve it once, in the app, and pass it down with the rest of the context.
131
+ `_STAGING`/`_PROD` pairs are not two endpoints: they are one endpoint and an app-level choice of
132
+ which URL to pass.
133
+
134
+ ---
135
+
136
+ ## While the burn-down runs
137
+
138
+ - **Do not add a new definition.** A new value should be born in one of the four exits.
139
+ - **Do not add a new call site**, including in tests. In a test, set the value the way the
140
+ production code will read it after the migration, not through `setEnv`.
141
+ - Migrating a variable means removing its definition in the same PR. A definition with zero call
142
+ sites left is dead weight nobody will come back for.
143
+ - **Check for dead ones first.** A definition with no call sites anywhere is a deletion, not a
144
+ migration.
145
+
146
+ ## Done
147
+
148
+ `@ledgerhq/live-env` unpublished and deleted.
package/README.md CHANGED
@@ -2,11 +2,9 @@
2
2
 
3
3
  > [!WARNING]
4
4
  > **Status: DEPRECATED** — `@ledgerhq/live-env` is being sunset. Do not add env var definitions and
5
- > do not add call sites. To take an existing one out, read
6
- > **[docs/configuration.md](https://github.com/LedgerHQ/ledger-live/blob/develop/docs/configuration.md)**.
7
- > It maps every kind of value to its home — a feature flag, an inline constant, `process.env` at
8
- > the point of use, the app's `.env` file, a bundler define, the app's settings slice, or a
9
- > parameter the caller passes in.
5
+ > do not add call sites. To take an existing one out, read **[MIGRATION.md](./MIGRATION.md)**:
6
+ > every variable exits as a feature flag, an inline constant, `process.env` at the point of use,
7
+ > or a parameter the caller passes in.
10
8
  >
11
9
  > The package still works exactly as documented below until the last call site is gone.
12
10
 
package/lib/env.d.ts CHANGED
@@ -3,26 +3,22 @@ export type { EnvDef, EnvDefs, EnvChange } from "./state";
3
3
  import type { EnvDef as EnvDefRecord } from "./state";
4
4
  /**
5
5
  * @deprecated `@ledgerhq/live-env` is being sunset, and these parsers go with it. Parse and
6
- * default explicitly at the point of use instead — see
7
- * [docs/configuration.md](../../../docs/configuration.md).
6
+ * default explicitly at the point of use instead — see MIGRATION.md.
8
7
  */
9
8
  export declare const intParser: (v: any) => number | undefined;
10
9
  /**
11
10
  * @deprecated `@ledgerhq/live-env` is being sunset, and these parsers go with it. Parse and
12
- * default explicitly at the point of use instead — see
13
- * [docs/configuration.md](../../../docs/configuration.md).
11
+ * default explicitly at the point of use instead — see MIGRATION.md.
14
12
  */
15
13
  export declare const floatParser: (v: any) => number | undefined;
16
14
  /**
17
15
  * @deprecated `@ledgerhq/live-env` is being sunset, and these parsers go with it. Parse and
18
- * default explicitly at the point of use instead — see
19
- * [docs/configuration.md](../../../docs/configuration.md).
16
+ * default explicitly at the point of use instead — see MIGRATION.md.
20
17
  */
21
18
  export declare const boolParser: (v: unknown) => boolean | undefined;
22
19
  /**
23
20
  * @deprecated `@ledgerhq/live-env` is being sunset, and these parsers go with it. Parse and
24
- * default explicitly at the point of use instead — see
25
- * [docs/configuration.md](../../../docs/configuration.md).
21
+ * default explicitly at the point of use instead — see MIGRATION.md.
26
22
  */
27
23
  export declare const stringParser: (v: unknown) => string | undefined;
28
24
  type JSONValue = string | number | boolean | {
@@ -30,61 +26,57 @@ type JSONValue = string | number | boolean | {
30
26
  } | Array<JSONValue>;
31
27
  /**
32
28
  * @deprecated `@ledgerhq/live-env` is being sunset, and these parsers go with it. Parse and
33
- * default explicitly at the point of use instead — see
34
- * [docs/configuration.md](../../../docs/configuration.md).
29
+ * default explicitly at the point of use instead — see MIGRATION.md.
35
30
  */
36
31
  export declare const jsonParser: (v: unknown) => JSONValue | undefined;
37
32
  /**
38
33
  * @deprecated `@ledgerhq/live-env` is being sunset, and these parsers go with it. Parse and
39
- * default explicitly at the point of use instead — see
40
- * [docs/configuration.md](../../../docs/configuration.md).
34
+ * default explicitly at the point of use instead — see MIGRATION.md.
41
35
  */
42
36
  export declare const stringArrayParser: (v: unknown) => string[] | undefined;
43
37
  /**
44
38
  * @deprecated `@ledgerhq/live-env` is being sunset, and the registry it introspects goes with
45
- * it — see [docs/configuration.md](../../../docs/configuration.md).
39
+ * it — see MIGRATION.md.
46
40
  */
47
41
  export declare const getDefinition: (name: string) => EnvDefRecord<unknown> | undefined;
48
42
  /**
49
43
  * @deprecated `@ledgerhq/live-env` is being sunset, and the registry it introspects goes with
50
- * it — see [docs/configuration.md](../../../docs/configuration.md).
44
+ * it — see MIGRATION.md.
51
45
  */
52
46
  export declare const getAllEnvNames: () => string[];
53
47
  /**
54
- * @deprecated `@ledgerhq/live-env` is being sunset — see
55
- * [docs/configuration.md](../../../docs/configuration.md).
48
+ * @deprecated `@ledgerhq/live-env` is being sunset. See MIGRATION.md.
56
49
  */
57
50
  export declare const getAllEnvs: () => Record<string, unknown>;
58
51
  /**
59
52
  * @deprecated `@ledgerhq/live-env` is being sunset. Replace this read with a feature flag,
60
53
  * an inline constant, `process.env` at the point of use, or a value the caller passes in —
61
- * see [docs/configuration.md](../../../docs/configuration.md).
54
+ * see MIGRATION.md.
62
55
  */
63
56
  export declare function getEnv(name: string): any;
64
57
  /**
65
- * @deprecated `@ledgerhq/live-env` is being sunset — see
66
- * [docs/configuration.md](../../../docs/configuration.md).
58
+ * @deprecated `@ledgerhq/live-env` is being sunset. See MIGRATION.md.
67
59
  */
68
60
  export declare function getEnvDefault(name: string): any;
69
61
  /**
70
62
  * @deprecated `@ledgerhq/live-env` is being sunset, and the registry it introspects goes with
71
- * it — see [docs/configuration.md](../../../docs/configuration.md).
63
+ * it — see MIGRATION.md.
72
64
  */
73
65
  export declare const isEnvDefault: (name: string) => boolean;
74
66
  /**
75
67
  * @deprecated `@ledgerhq/live-env` is being sunset, and the registry it introspects goes with
76
- * it — see [docs/configuration.md](../../../docs/configuration.md).
68
+ * it — see MIGRATION.md.
77
69
  */
78
70
  export declare const getEnvDesc: (name: string) => string;
79
71
  /**
80
72
  * @deprecated `@ledgerhq/live-env` is being sunset. A value that has to change at runtime
81
73
  * belongs in a feature flag or in the app's own state, not in a global mutable singleton —
82
- * see [docs/configuration.md](../../../docs/configuration.md).
74
+ * see MIGRATION.md.
83
75
  */
84
76
  export declare function setEnv(name: string, value: unknown): void;
85
77
  /**
86
78
  * @deprecated `@ledgerhq/live-env` is being sunset. Read and parse the raw value where you
87
- * use it instead — see [docs/configuration.md](../../../docs/configuration.md).
79
+ * use it instead — see MIGRATION.md.
88
80
  */
89
81
  export declare const setEnvUnsafe: (name: string, unsafeValue: unknown) => boolean;
90
82
  //# sourceMappingURL=env.d.ts.map
package/lib/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACrD,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,SAAS,MAAO,GAAG,KAAG,MAAM,GAAG,SAG3C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,MAAO,GAAG,KAAG,MAAM,GAAG,SAG7C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,MAAO,OAAO,KAAG,OAAO,GAAG,SAGjD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,MAAO,OAAO,KAAG,MAAM,GAAG,SACZ,CAAC;AAExC,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3F;;;;GAIG;AACH,eAAO,MAAM,UAAU,MAAO,OAAO,KAAG,SAAS,GAAG,SAOnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,MAAO,OAAO,KAAG,MAAM,EAAE,GAAG,SAGzD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,SAAU,MAAM,KAAG,YAAY,CAAC,OAAO,CAAC,GAAG,SACA,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAO,MAAM,EAA2C,CAAC;AAEpF;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAA8B,CAAC;AAGnF;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAExC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAE/C;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,OAG3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,MACwC,CAAC;AAEnF;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAOzD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,eAAe,OAAO,KAAG,OAajE,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACrD,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,SAAS,MAAO,GAAG,KAAG,MAAM,GAAG,SAG3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,MAAO,GAAG,KAAG,MAAM,GAAG,SAG7C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,MAAO,OAAO,KAAG,OAAO,GAAG,SAGjD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,MAAO,OAAO,KAAG,MAAM,GAAG,SACZ,CAAC;AAExC,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3F;;;GAGG;AACH,eAAO,MAAM,UAAU,MAAO,OAAO,KAAG,SAAS,GAAG,SAOnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,MAAO,OAAO,KAAG,MAAM,EAAE,GAAG,SAGzD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,SAAU,MAAM,KAAG,YAAY,CAAC,OAAO,CAAC,GAAG,SACA,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAO,MAAM,EAA2C,CAAC;AAEpF;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAA8B,CAAC;AAGnF;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAExC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAE/C;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,KAAG,OAG3C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,SAAU,MAAM,KAAG,MACwC,CAAC;AAEnF;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAOzD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,SAAU,MAAM,eAAe,OAAO,KAAG,OAajE,CAAC"}