@glowlabs-org/utils 0.2.5 → 0.2.8
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/README.md +5 -5
- package/dist/cjs/browser.d.ts +2 -2
- package/dist/cjs/browser.js +12 -359
- package/dist/cjs/browser.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +33 -31
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/{hooks/use-control-api.d.ts → control-api/control-router.d.ts} +1 -1
- package/dist/{esm/lib/hooks/use-regions.d.ts → cjs/lib/control-api/region-router.d.ts} +1 -1
- package/dist/cjs/{use-forwarder-CVlJS4UY.js → region-router-6Tfi1vcZ.js} +350 -1
- package/dist/cjs/region-router-6Tfi1vcZ.js.map +1 -0
- package/dist/esm/browser.d.ts +2 -2
- package/dist/esm/browser.js +2 -349
- package/dist/esm/browser.js.map +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/lib/{hooks/use-control-api.d.ts → control-api/control-router.d.ts} +1 -1
- package/dist/{cjs/lib/hooks/use-regions.d.ts → esm/lib/control-api/region-router.d.ts} +1 -1
- package/dist/esm/{use-forwarder-DD_5ZFZg.js → region-router-ClCO6Pac.js} +349 -2
- package/dist/esm/region-router-ClCO6Pac.js.map +1 -0
- package/package.json +1 -1
- package/src/browser.ts +2 -2
- package/src/index.ts +2 -0
- package/src/lib/{hooks/use-control-api.ts → control-api/control-router.ts} +1 -1
- package/src/lib/{hooks/use-regions.ts → control-api/region-router.ts} +1 -1
- package/dist/cjs/use-forwarder-CVlJS4UY.js.map +0 -1
- package/dist/esm/use-forwarder-DD_5ZFZg.js.map +0 -1
package/README.md
CHANGED
@@ -71,13 +71,13 @@ See `src/lib/hooks/use-forwarder.ts` for all available helpers (`approveToken`,
|
|
71
71
|
|
72
72
|
### Control-API SDK (framework-agnostic)
|
73
73
|
|
74
|
-
All on-chain accounting and staking data can be accessed through the plain-TypeScript helper exported from `src/lib/
|
74
|
+
All on-chain accounting and staking data can be accessed through the plain-TypeScript helper exported from `src/lib/control-api/control-router.ts`.
|
75
75
|
|
76
76
|
```typescript
|
77
|
-
import {
|
77
|
+
import { ControlRouter } from "@glowlabs-org/utils";
|
78
78
|
|
79
79
|
// Base URL of your deployed Control-API instance (can be relative or absolute)
|
80
|
-
const controlApi =
|
80
|
+
const controlApi = ControlRouter("https://control-api.glowlabs.org");
|
81
81
|
|
82
82
|
// Read-only queries
|
83
83
|
const balance = await controlApi.fetchGctlBalance("0xYourWallet");
|
@@ -105,9 +105,9 @@ Refer to the source file for the full surface (`fetchMintedEvents`, `unstakeGctl
|
|
105
105
|
This tiny helper wraps region CRUD endpoints and provides in-memory caching.
|
106
106
|
|
107
107
|
```typescript
|
108
|
-
import {
|
108
|
+
import { RegionRouter } from "@glowlabs-org/utils";
|
109
109
|
|
110
|
-
const regionsApi =
|
110
|
+
const regionsApi = RegionRouter("https://control-api.glowlabs.org");
|
111
111
|
|
112
112
|
// Fetch & cache
|
113
113
|
await regionsApi.fetchRegions();
|
package/dist/cjs/browser.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
export * from "./lib/hooks/use-forwarder";
|
2
|
-
export * from "./lib/
|
3
|
-
export * from "./lib/
|
2
|
+
export * from "./lib/control-api/control-router";
|
3
|
+
export * from "./lib/control-api/region-router";
|
4
4
|
export * from "./lib/types";
|
5
5
|
export * from "./lib/region-metadata";
|
6
6
|
export * from "./constants/addresses";
|
package/dist/cjs/browser.js
CHANGED
@@ -1,355 +1,8 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
|
-
var
|
3
|
+
var regionRouter = require('./region-router-6Tfi1vcZ.js');
|
4
4
|
require('ethers');
|
5
5
|
|
6
|
-
// --------------------------------------------------------------------------
|
7
|
-
/**
|
8
|
-
* Extract a useful error message from an unknown error value.
|
9
|
-
*/
|
10
|
-
function parseApiError$1(error) {
|
11
|
-
if (!error)
|
12
|
-
return "Unknown error";
|
13
|
-
if (error instanceof Error)
|
14
|
-
return error.message;
|
15
|
-
const possible = error;
|
16
|
-
return possible?.error?.message ?? possible?.message ?? "Unknown error";
|
17
|
-
}
|
18
|
-
// --------------------------------------------------------------------------
|
19
|
-
// Public Factory
|
20
|
-
// --------------------------------------------------------------------------
|
21
|
-
function useControlApi(baseUrl) {
|
22
|
-
// ----------------------- Internal helpers --------------------------------
|
23
|
-
const request = async (path, init) => {
|
24
|
-
const res = await fetch(`${baseUrl}${path}`, init);
|
25
|
-
if (!res.ok) {
|
26
|
-
const errData = await res.json().catch(() => ({}));
|
27
|
-
throw new Error(errData?.error || `Request to ${path} failed`);
|
28
|
-
}
|
29
|
-
return (await res.json());
|
30
|
-
};
|
31
|
-
// ----------------------- GETters -----------------------------------------
|
32
|
-
const fetchGctlBalance = async (wallet) => {
|
33
|
-
try {
|
34
|
-
const data = await request(`/balance/${wallet}`);
|
35
|
-
return (data?.gctl_balance ?? "0").toString();
|
36
|
-
}
|
37
|
-
catch (error) {
|
38
|
-
throw new Error(parseApiError$1(error));
|
39
|
-
}
|
40
|
-
};
|
41
|
-
const fetchGctlPrice = async () => {
|
42
|
-
try {
|
43
|
-
const data = await request(`/price`);
|
44
|
-
return data.currentPriceUsdc;
|
45
|
-
}
|
46
|
-
catch (error) {
|
47
|
-
throw new Error(parseApiError$1(error));
|
48
|
-
}
|
49
|
-
};
|
50
|
-
const fetchMintedEvents = async () => {
|
51
|
-
try {
|
52
|
-
const data = await request(`/events/minted?page=1&limit=50`);
|
53
|
-
return data.events ?? [];
|
54
|
-
}
|
55
|
-
catch (error) {
|
56
|
-
throw new Error(parseApiError$1(error));
|
57
|
-
}
|
58
|
-
};
|
59
|
-
const fetchStakeEvents = async () => {
|
60
|
-
try {
|
61
|
-
const data = await request(`/events/stake?page=1&limit=50`);
|
62
|
-
return data.events ?? [];
|
63
|
-
}
|
64
|
-
catch (error) {
|
65
|
-
throw new Error(parseApiError$1(error));
|
66
|
-
}
|
67
|
-
};
|
68
|
-
const fetchPendingTransfers = async () => {
|
69
|
-
try {
|
70
|
-
const data = await request(`/transfers/pending?page=1&limit=50`);
|
71
|
-
return data.transfers ?? [];
|
72
|
-
}
|
73
|
-
catch (error) {
|
74
|
-
throw new Error(parseApiError$1(error));
|
75
|
-
}
|
76
|
-
};
|
77
|
-
const fetchTransferDetails = async (txId) => {
|
78
|
-
try {
|
79
|
-
return await request(`/transfer/${txId}`);
|
80
|
-
}
|
81
|
-
catch (error) {
|
82
|
-
throw new Error(parseApiError$1(error));
|
83
|
-
}
|
84
|
-
};
|
85
|
-
const fetchFailedOperations = async () => {
|
86
|
-
try {
|
87
|
-
const data = await request(`/operations/failed?page=1&limit=50`);
|
88
|
-
return data.operations ?? [];
|
89
|
-
}
|
90
|
-
catch (error) {
|
91
|
-
throw new Error(parseApiError$1(error));
|
92
|
-
}
|
93
|
-
};
|
94
|
-
// Exposed query with error parsing
|
95
|
-
const getTransferDetails = async (txId) => {
|
96
|
-
try {
|
97
|
-
return await fetchTransferDetails(txId);
|
98
|
-
}
|
99
|
-
catch (error) {
|
100
|
-
throw new Error(parseApiError$1(error));
|
101
|
-
}
|
102
|
-
};
|
103
|
-
const fetchRegions = async () => {
|
104
|
-
const data = await request(`/regions`);
|
105
|
-
return data.regions.filter((r) => r.id !== 998 && r.id !== 999) ?? [];
|
106
|
-
};
|
107
|
-
const fetchRegionStake = async (regionId) => {
|
108
|
-
try {
|
109
|
-
return await request(`/region/${regionId}/stake`);
|
110
|
-
}
|
111
|
-
catch (error) {
|
112
|
-
throw new Error(parseApiError$1(error));
|
113
|
-
}
|
114
|
-
};
|
115
|
-
const fetchWalletRegionStake = async (wallet, regionId) => {
|
116
|
-
try {
|
117
|
-
return await request(`/wallet/${wallet}/region/${regionId}/stake`);
|
118
|
-
}
|
119
|
-
catch (error) {
|
120
|
-
throw new Error(parseApiError$1(error));
|
121
|
-
}
|
122
|
-
};
|
123
|
-
const fetchWalletRegionUnlocked = async (wallet, regionId) => {
|
124
|
-
try {
|
125
|
-
return await request(`/wallet/${wallet}/region/${regionId}/unlocked`);
|
126
|
-
}
|
127
|
-
catch (error) {
|
128
|
-
throw new Error(parseApiError$1(error));
|
129
|
-
}
|
130
|
-
};
|
131
|
-
// ----------------------- Mutations ---------------------------------------
|
132
|
-
let isStaking = false;
|
133
|
-
let isUnstaking = false;
|
134
|
-
let isRetryingFailedOperation = false;
|
135
|
-
const stakeGctl = async (wallet, regionId, amount) => {
|
136
|
-
isStaking = true;
|
137
|
-
try {
|
138
|
-
const stakeRequest = { wallet, regionId, amount };
|
139
|
-
await request(`/stake`, {
|
140
|
-
method: "POST",
|
141
|
-
headers: { "Content-Type": "application/json" },
|
142
|
-
body: JSON.stringify(stakeRequest),
|
143
|
-
});
|
144
|
-
return true;
|
145
|
-
}
|
146
|
-
catch (error) {
|
147
|
-
throw new Error(parseApiError$1(error));
|
148
|
-
}
|
149
|
-
finally {
|
150
|
-
isStaking = false;
|
151
|
-
}
|
152
|
-
};
|
153
|
-
const unstakeGctl = async (wallet, regionId, amount) => {
|
154
|
-
isUnstaking = true;
|
155
|
-
try {
|
156
|
-
const unstakeRequest = { wallet, regionId, amount };
|
157
|
-
await request(`/unstake`, {
|
158
|
-
method: "POST",
|
159
|
-
headers: { "Content-Type": "application/json" },
|
160
|
-
body: JSON.stringify(unstakeRequest),
|
161
|
-
});
|
162
|
-
return true;
|
163
|
-
}
|
164
|
-
catch (error) {
|
165
|
-
throw new Error(parseApiError$1(error));
|
166
|
-
}
|
167
|
-
finally {
|
168
|
-
isUnstaking = false;
|
169
|
-
}
|
170
|
-
};
|
171
|
-
const retryFailedOperation = async (operationId) => {
|
172
|
-
isRetryingFailedOperation = true;
|
173
|
-
try {
|
174
|
-
await request(`/operations/failed/${operationId}/retry`, {
|
175
|
-
method: "POST",
|
176
|
-
headers: { "Content-Type": "application/json" },
|
177
|
-
});
|
178
|
-
return true;
|
179
|
-
}
|
180
|
-
catch (error) {
|
181
|
-
throw new Error(parseApiError$1(error));
|
182
|
-
}
|
183
|
-
finally {
|
184
|
-
isRetryingFailedOperation = false;
|
185
|
-
}
|
186
|
-
};
|
187
|
-
// --------------------------- Public API ----------------------------------
|
188
|
-
return {
|
189
|
-
// Queries
|
190
|
-
fetchGctlBalance,
|
191
|
-
fetchGctlPrice,
|
192
|
-
fetchMintedEvents,
|
193
|
-
fetchStakeEvents,
|
194
|
-
fetchPendingTransfers,
|
195
|
-
fetchFailedOperations,
|
196
|
-
fetchRegions,
|
197
|
-
fetchRegionStake,
|
198
|
-
fetchWalletRegionStake,
|
199
|
-
fetchWalletRegionUnlocked,
|
200
|
-
fetchTransferDetails: getTransferDetails,
|
201
|
-
// Mutations
|
202
|
-
stakeGctl,
|
203
|
-
unstakeGctl,
|
204
|
-
retryFailedOperation,
|
205
|
-
// Processing flags
|
206
|
-
get isStaking() {
|
207
|
-
return isStaking;
|
208
|
-
},
|
209
|
-
get isUnstaking() {
|
210
|
-
return isUnstaking;
|
211
|
-
},
|
212
|
-
get isRetryingFailedOperation() {
|
213
|
-
return isRetryingFailedOperation;
|
214
|
-
},
|
215
|
-
};
|
216
|
-
}
|
217
|
-
|
218
|
-
// ---------------------------------------------------------------------------
|
219
|
-
// Helpers
|
220
|
-
// ---------------------------------------------------------------------------
|
221
|
-
function parseApiError(error) {
|
222
|
-
if (!error)
|
223
|
-
return "Unknown error";
|
224
|
-
if (error instanceof Error)
|
225
|
-
return error.message;
|
226
|
-
const possible = error;
|
227
|
-
return possible?.error?.message ?? possible?.message ?? "Unknown error";
|
228
|
-
}
|
229
|
-
// ---------------------------------------------------------------------------
|
230
|
-
// Factory
|
231
|
-
// ---------------------------------------------------------------------------
|
232
|
-
function useRegionsApi(baseUrl) {
|
233
|
-
if (!baseUrl)
|
234
|
-
throw new Error("CONTROL API base URL is not set");
|
235
|
-
const request = async (path, init) => {
|
236
|
-
const res = await fetch(`${baseUrl}${path}`, init);
|
237
|
-
if (!res.ok) {
|
238
|
-
const errData = await res.json().catch(() => ({}));
|
239
|
-
throw new Error(errData?.error || `Request to ${path} failed`);
|
240
|
-
}
|
241
|
-
return (await res.json());
|
242
|
-
};
|
243
|
-
// -------------------------------------------------------------------------
|
244
|
-
// Local cache / state flags
|
245
|
-
// -------------------------------------------------------------------------
|
246
|
-
let cachedRegions = [];
|
247
|
-
let isLoading = false;
|
248
|
-
let isCreatingRegion = false;
|
249
|
-
// -------------------------------------------------------------------------
|
250
|
-
// Queries
|
251
|
-
// -------------------------------------------------------------------------
|
252
|
-
const fetchRegions = async () => {
|
253
|
-
isLoading = true;
|
254
|
-
try {
|
255
|
-
const data = await request(`/regions`);
|
256
|
-
cachedRegions = data.regions ?? [];
|
257
|
-
return cachedRegions;
|
258
|
-
}
|
259
|
-
catch (error) {
|
260
|
-
throw new Error(parseApiError(error));
|
261
|
-
}
|
262
|
-
finally {
|
263
|
-
isLoading = false;
|
264
|
-
}
|
265
|
-
};
|
266
|
-
const fetchActivationConfig = async (regionCode) => {
|
267
|
-
try {
|
268
|
-
return await request(`/regions/activation-config?code=${regionCode}`);
|
269
|
-
}
|
270
|
-
catch (error) {
|
271
|
-
throw new Error(parseApiError(error));
|
272
|
-
}
|
273
|
-
};
|
274
|
-
// -------------------------------------------------------------------------
|
275
|
-
// Mutations
|
276
|
-
// -------------------------------------------------------------------------
|
277
|
-
const createRegion = async (payload) => {
|
278
|
-
isCreatingRegion = true;
|
279
|
-
try {
|
280
|
-
await request(`/regions/create`, {
|
281
|
-
method: "POST",
|
282
|
-
headers: { "Content-Type": "application/json" },
|
283
|
-
body: JSON.stringify(payload),
|
284
|
-
});
|
285
|
-
// Refresh the local cache after successful creation
|
286
|
-
await fetchRegions();
|
287
|
-
}
|
288
|
-
catch (error) {
|
289
|
-
throw new Error(parseApiError(error));
|
290
|
-
}
|
291
|
-
finally {
|
292
|
-
isCreatingRegion = false;
|
293
|
-
}
|
294
|
-
};
|
295
|
-
// -------------------------------------------------------------------------
|
296
|
-
// Helpers (derived)
|
297
|
-
// -------------------------------------------------------------------------
|
298
|
-
// NOTE: regionMetadata is imported lazily to avoid circular deps at load time.
|
299
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
300
|
-
const { regionMetadata } = require("@/lib/region-metadata");
|
301
|
-
const getRegionByCode = (code) => {
|
302
|
-
const metadata = regionMetadata[code];
|
303
|
-
if (!metadata)
|
304
|
-
return null;
|
305
|
-
const existingRegion = cachedRegions.find((r) => r.name.toLowerCase() === metadata.name.toLowerCase());
|
306
|
-
if (existingRegion) {
|
307
|
-
return {
|
308
|
-
...existingRegion,
|
309
|
-
code: metadata.code,
|
310
|
-
description: metadata.description,
|
311
|
-
flag: metadata.flag,
|
312
|
-
};
|
313
|
-
}
|
314
|
-
// Placeholder if region does not yet exist in DB
|
315
|
-
return {
|
316
|
-
id: -1,
|
317
|
-
name: metadata.name,
|
318
|
-
code: metadata.code,
|
319
|
-
description: metadata.description,
|
320
|
-
flag: metadata.flag,
|
321
|
-
isUs: metadata.isUs,
|
322
|
-
isActive: false,
|
323
|
-
stake: "0",
|
324
|
-
stakeProgress: 0,
|
325
|
-
solarFarmCount: 0,
|
326
|
-
solarFarmProgress: 0,
|
327
|
-
installerCount: 0,
|
328
|
-
installerProgress: 0,
|
329
|
-
};
|
330
|
-
};
|
331
|
-
// -------------------------------------------------------------------------
|
332
|
-
// Public API
|
333
|
-
// -------------------------------------------------------------------------
|
334
|
-
return {
|
335
|
-
// Data access
|
336
|
-
fetchRegions,
|
337
|
-
fetchActivationConfig,
|
338
|
-
getRegionByCode,
|
339
|
-
createRegion,
|
340
|
-
// Cached data & flags
|
341
|
-
get regions() {
|
342
|
-
return cachedRegions;
|
343
|
-
},
|
344
|
-
get isLoading() {
|
345
|
-
return isLoading;
|
346
|
-
},
|
347
|
-
get isCreatingRegion() {
|
348
|
-
return isCreatingRegion;
|
349
|
-
},
|
350
|
-
};
|
351
|
-
}
|
352
|
-
|
353
6
|
// Region metadata for kickstarter campaigns
|
354
7
|
const regionMetadata = {
|
355
8
|
// US States
|
@@ -1020,22 +673,22 @@ const usStates = allRegions.filter((r) => r.isUs);
|
|
1020
673
|
// Helper to get countries
|
1021
674
|
const countries = allRegions.filter((r) => !r.isUs);
|
1022
675
|
|
1023
|
-
exports.
|
676
|
+
exports.ControlRouter = regionRouter.ControlRouter;
|
677
|
+
exports.DECIMALS_BY_TOKEN = regionRouter.DECIMALS_BY_TOKEN;
|
1024
678
|
Object.defineProperty(exports, "ForwarderError", {
|
1025
679
|
enumerable: true,
|
1026
|
-
get: function () { return
|
680
|
+
get: function () { return regionRouter.ForwarderError; }
|
1027
681
|
});
|
1028
|
-
exports.GCA_URLS =
|
1029
|
-
exports.GLOW_WEIGHT_DECIMAL_PRECISION =
|
1030
|
-
exports.HUB_URL =
|
1031
|
-
exports.MAX_WEIGHT =
|
1032
|
-
exports.
|
1033
|
-
exports.
|
1034
|
-
exports.
|
682
|
+
exports.GCA_URLS = regionRouter.GCA_URLS;
|
683
|
+
exports.GLOW_WEIGHT_DECIMAL_PRECISION = regionRouter.GLOW_WEIGHT_DECIMAL_PRECISION;
|
684
|
+
exports.HUB_URL = regionRouter.HUB_URL;
|
685
|
+
exports.MAX_WEIGHT = regionRouter.MAX_WEIGHT;
|
686
|
+
exports.RegionRouter = regionRouter.RegionRouter;
|
687
|
+
exports.USDG_WEIGHT_DECIMAL_PRECISION = regionRouter.USDG_WEIGHT_DECIMAL_PRECISION;
|
688
|
+
exports.getAddresses = regionRouter.getAddresses;
|
689
|
+
exports.useForwarder = regionRouter.useForwarder;
|
1035
690
|
exports.allRegions = allRegions;
|
1036
691
|
exports.countries = countries;
|
1037
692
|
exports.regionMetadata = regionMetadata;
|
1038
693
|
exports.usStates = usStates;
|
1039
|
-
exports.useControlApi = useControlApi;
|
1040
|
-
exports.useRegionsApi = useRegionsApi;
|
1041
694
|
//# sourceMappingURL=browser.js.map
|
package/dist/cjs/browser.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"browser.js","sources":["../../src/lib/hooks/use-control-api.ts","../../src/lib/hooks/use-regions.ts","../../src/lib/region-metadata.ts"],"sourcesContent":["\"use strict\";\n\nimport type {\n MintedEvent,\n StakedEvent,\n PendingTransfer,\n FailedOperation,\n GctlPrice,\n StakeRequest,\n RegionStake,\n WalletRegionStake,\n WalletRegionUnlocked,\n Region,\n TransferDetails,\n} from \"../types\";\n\n// --------------------------------------------------------------------------\n\n/**\n * Extract a useful error message from an unknown error value.\n */\nfunction parseApiError(error: unknown): string {\n if (!error) return \"Unknown error\";\n if (error instanceof Error) return error.message;\n const possible: any = error;\n return possible?.error?.message ?? possible?.message ?? \"Unknown error\";\n}\n\n// --------------------------------------------------------------------------\n// Public Factory\n// --------------------------------------------------------------------------\n\nexport function useControlApi(baseUrl: string) {\n // ----------------------- Internal helpers --------------------------------\n const request = async <T>(path: string, init?: RequestInit): Promise<T> => {\n const res = await fetch(`${baseUrl}${path}`, init);\n if (!res.ok) {\n const errData = await res.json().catch(() => ({}));\n throw new Error(errData?.error || `Request to ${path} failed`);\n }\n return (await res.json()) as T;\n };\n\n // ----------------------- GETters -----------------------------------------\n const fetchGctlBalance = async (wallet: string): Promise<string> => {\n try {\n const data = await request<{ gctl_balance: string }>(\n `/balance/${wallet}`\n );\n return (data?.gctl_balance ?? \"0\").toString();\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchGctlPrice = async (): Promise<number> => {\n try {\n const data = await request<GctlPrice>(`/price`);\n return data.currentPriceUsdc;\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchMintedEvents = async (): Promise<MintedEvent[]> => {\n try {\n const data = await request<{ events: MintedEvent[] }>(\n `/events/minted?page=1&limit=50`\n );\n return data.events ?? [];\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchStakeEvents = async (): Promise<StakedEvent[]> => {\n try {\n const data = await request<{ events: StakedEvent[] }>(\n `/events/stake?page=1&limit=50`\n );\n return data.events ?? [];\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchPendingTransfers = async (): Promise<PendingTransfer[]> => {\n try {\n const data = await request<{ transfers: PendingTransfer[] }>(\n `/transfers/pending?page=1&limit=50`\n );\n return data.transfers ?? [];\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchTransferDetails = async (\n txId: string\n ): Promise<TransferDetails> => {\n try {\n return await request<TransferDetails>(`/transfer/${txId}`);\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchFailedOperations = async (): Promise<FailedOperation[]> => {\n try {\n const data = await request<{ operations: FailedOperation[] }>(\n `/operations/failed?page=1&limit=50`\n );\n return data.operations ?? [];\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n // Exposed query with error parsing\n const getTransferDetails = async (txId: string): Promise<TransferDetails> => {\n try {\n return await fetchTransferDetails(txId);\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchRegions = async (): Promise<Region[]> => {\n const data = await request<{ regions: Region[] }>(`/regions`);\n return data.regions.filter((r) => r.id !== 998 && r.id !== 999) ?? [];\n };\n\n const fetchRegionStake = async (regionId: number): Promise<RegionStake> => {\n try {\n return await request<RegionStake>(`/region/${regionId}/stake`);\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchWalletRegionStake = async (\n wallet: string,\n regionId: number\n ): Promise<WalletRegionStake> => {\n try {\n return await request<WalletRegionStake>(\n `/wallet/${wallet}/region/${regionId}/stake`\n );\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n const fetchWalletRegionUnlocked = async (\n wallet: string,\n regionId: number\n ): Promise<WalletRegionUnlocked> => {\n try {\n return await request<WalletRegionUnlocked>(\n `/wallet/${wallet}/region/${regionId}/unlocked`\n );\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n // ----------------------- Mutations ---------------------------------------\n let isStaking = false;\n let isUnstaking = false;\n let isRetryingFailedOperation = false;\n\n const stakeGctl = async (\n wallet: string,\n regionId: number,\n amount: string\n ): Promise<boolean> => {\n isStaking = true;\n try {\n const stakeRequest: StakeRequest = { wallet, regionId, amount };\n await request(`/stake`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(stakeRequest),\n });\n return true;\n } catch (error) {\n throw new Error(parseApiError(error));\n } finally {\n isStaking = false;\n }\n };\n\n const unstakeGctl = async (\n wallet: string,\n regionId: number,\n amount: string\n ): Promise<boolean> => {\n isUnstaking = true;\n try {\n const unstakeRequest: StakeRequest = { wallet, regionId, amount };\n await request(`/unstake`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(unstakeRequest),\n });\n return true;\n } catch (error) {\n throw new Error(parseApiError(error));\n } finally {\n isUnstaking = false;\n }\n };\n\n const retryFailedOperation = async (\n operationId: string\n ): Promise<boolean> => {\n isRetryingFailedOperation = true;\n try {\n await request(`/operations/failed/${operationId}/retry`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n });\n return true;\n } catch (error) {\n throw new Error(parseApiError(error));\n } finally {\n isRetryingFailedOperation = false;\n }\n };\n\n // --------------------------- Public API ----------------------------------\n return {\n // Queries\n fetchGctlBalance,\n fetchGctlPrice,\n fetchMintedEvents,\n fetchStakeEvents,\n fetchPendingTransfers,\n fetchFailedOperations,\n fetchRegions,\n fetchRegionStake,\n fetchWalletRegionStake,\n fetchWalletRegionUnlocked,\n fetchTransferDetails: getTransferDetails,\n\n // Mutations\n stakeGctl,\n unstakeGctl,\n retryFailedOperation,\n\n // Processing flags\n get isStaking() {\n return isStaking;\n },\n get isUnstaking() {\n return isUnstaking;\n },\n get isRetryingFailedOperation() {\n return isRetryingFailedOperation;\n },\n } as const;\n}\n","\"use strict\";\n\nimport type {\n Region,\n RegionWithMetadata,\n ActivationConfig,\n CreateRegionPayload,\n} from \"../types\";\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction parseApiError(error: unknown): string {\n if (!error) return \"Unknown error\";\n if (error instanceof Error) return error.message;\n const possible: any = error;\n return possible?.error?.message ?? possible?.message ?? \"Unknown error\";\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport function useRegionsApi(baseUrl: string) {\n if (!baseUrl) throw new Error(\"CONTROL API base URL is not set\");\n\n const request = async <T>(path: string, init?: RequestInit): Promise<T> => {\n const res = await fetch(`${baseUrl}${path}`, init);\n if (!res.ok) {\n const errData = await res.json().catch(() => ({}));\n throw new Error(errData?.error || `Request to ${path} failed`);\n }\n return (await res.json()) as T;\n };\n\n // -------------------------------------------------------------------------\n // Local cache / state flags\n // -------------------------------------------------------------------------\n let cachedRegions: Region[] = [];\n let isLoading = false;\n let isCreatingRegion = false;\n\n // -------------------------------------------------------------------------\n // Queries\n // -------------------------------------------------------------------------\n const fetchRegions = async (): Promise<Region[]> => {\n isLoading = true;\n try {\n const data = await request<{ regions: Region[] }>(`/regions`);\n cachedRegions = data.regions ?? [];\n return cachedRegions;\n } catch (error) {\n throw new Error(parseApiError(error));\n } finally {\n isLoading = false;\n }\n };\n\n const fetchActivationConfig = async (\n regionCode: string\n ): Promise<ActivationConfig> => {\n try {\n return await request<ActivationConfig>(\n `/regions/activation-config?code=${regionCode}`\n );\n } catch (error) {\n throw new Error(parseApiError(error));\n }\n };\n\n // -------------------------------------------------------------------------\n // Mutations\n // -------------------------------------------------------------------------\n const createRegion = async (payload: CreateRegionPayload): Promise<void> => {\n isCreatingRegion = true;\n try {\n await request(`/regions/create`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(payload),\n });\n // Refresh the local cache after successful creation\n await fetchRegions();\n } catch (error) {\n throw new Error(parseApiError(error));\n } finally {\n isCreatingRegion = false;\n }\n };\n\n // -------------------------------------------------------------------------\n // Helpers (derived)\n // -------------------------------------------------------------------------\n // NOTE: regionMetadata is imported lazily to avoid circular deps at load time.\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { regionMetadata } = require(\"@/lib/region-metadata\");\n\n const getRegionByCode = (code: string): RegionWithMetadata | null => {\n const metadata = regionMetadata[code];\n if (!metadata) return null;\n\n const existingRegion = cachedRegions.find(\n (r) => r.name.toLowerCase() === metadata.name.toLowerCase()\n );\n\n if (existingRegion) {\n return {\n ...existingRegion,\n code: metadata.code,\n description: metadata.description,\n flag: metadata.flag,\n };\n }\n\n // Placeholder if region does not yet exist in DB\n return {\n id: -1,\n name: metadata.name,\n code: metadata.code,\n description: metadata.description,\n flag: metadata.flag,\n isUs: metadata.isUs,\n isActive: false,\n stake: \"0\",\n stakeProgress: 0,\n solarFarmCount: 0,\n solarFarmProgress: 0,\n installerCount: 0,\n installerProgress: 0,\n };\n };\n\n // -------------------------------------------------------------------------\n // Public API\n // -------------------------------------------------------------------------\n return {\n // Data access\n fetchRegions,\n fetchActivationConfig,\n getRegionByCode,\n createRegion,\n\n // Cached data & flags\n get regions() {\n return cachedRegions;\n },\n get isLoading() {\n return isLoading;\n },\n get isCreatingRegion() {\n return isCreatingRegion;\n },\n } as const;\n}\n","import type { RegionMetadata } from \"./types\";\n// Region metadata for kickstarter campaigns\n\nexport const regionMetadata: Record<string, RegionMetadata> = {\n // US States\n \"US-AL\": {\n code: \"US-AL\",\n name: \"Alabama\",\n description: \"The Heart of Dixie is ready for solar transformation\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-AK\": {\n code: \"US-AK\",\n name: \"Alaska\",\n description: \"The Last Frontier embracing renewable energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-AZ\": {\n code: \"US-AZ\",\n name: \"Arizona\",\n description: \"The Grand Canyon State with abundant sunshine\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-AR\": {\n code: \"US-AR\",\n name: \"Arkansas\",\n description: \"The Natural State going solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-CA\": {\n code: \"US-CA\",\n name: \"California\",\n description: \"The Golden State leading solar innovation\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-CO\": {\n code: \"US-CO\",\n name: \"Colorado\",\n description: \"The Centennial State with high-altitude solar potential\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-CT\": {\n code: \"US-CT\",\n name: \"Connecticut\",\n description: \"The Constitution State embracing clean energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-DE\": {\n code: \"US-DE\",\n name: \"Delaware\",\n description: \"The First State to go solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-FL\": {\n code: \"US-FL\",\n name: \"Florida\",\n description: \"The Sunshine State living up to its name\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-GA\": {\n code: \"US-GA\",\n name: \"Georgia\",\n description: \"The Peach State harvesting solar energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-HI\": {\n code: \"US-HI\",\n name: \"Hawaii\",\n description: \"The Aloha State with year-round solar potential\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-ID\": {\n code: \"US-ID\",\n name: \"Idaho\",\n description: \"The Gem State shining with solar power\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-IL\": {\n code: \"US-IL\",\n name: \"Illinois\",\n description: \"The Prairie State powering up with solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-IN\": {\n code: \"US-IN\",\n name: \"Indiana\",\n description: \"The Hoosier State joining the solar revolution\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-IA\": {\n code: \"US-IA\",\n name: \"Iowa\",\n description: \"The Hawkeye State expanding beyond wind to solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-KS\": {\n code: \"US-KS\",\n name: \"Kansas\",\n description: \"The Sunflower State growing solar energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-KY\": {\n code: \"US-KY\",\n name: \"Kentucky\",\n description: \"The Bluegrass State transitioning to clean energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-LA\": {\n code: \"US-LA\",\n name: \"Louisiana\",\n description: \"The Pelican State soaring with solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-ME\": {\n code: \"US-ME\",\n name: \"Maine\",\n description: \"The Pine Tree State branching into solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MD\": {\n code: \"US-MD\",\n name: \"Maryland\",\n description: \"The Old Line State drawing new energy lines\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MA\": {\n code: \"US-MA\",\n name: \"Massachusetts\",\n description: \"The Bay State leading in solar innovation\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MI\": {\n code: \"US-MI\",\n name: \"Michigan\",\n description: \"The Great Lakes State harnessing solar power\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MN\": {\n code: \"US-MN\",\n name: \"Minnesota\",\n description: \"The North Star State guiding solar adoption\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MS\": {\n code: \"US-MS\",\n name: \"Mississippi\",\n description: \"The Magnolia State blooming with solar energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MO\": {\n code: \"US-MO\",\n name: \"Missouri\",\n description: \"The Show-Me State showing solar leadership\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MT\": {\n code: \"US-MT\",\n name: \"Montana\",\n description: \"Big Sky Country with big solar potential\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NE\": {\n code: \"US-NE\",\n name: \"Nebraska\",\n description: \"The Cornhusker State cultivating solar power\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NV\": {\n code: \"US-NV\",\n name: \"Nevada\",\n description: \"The Silver State striking solar gold\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NH\": {\n code: \"US-NH\",\n name: \"New Hampshire\",\n description: \"The Granite State building solid solar foundation\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NJ\": {\n code: \"US-NJ\",\n name: \"New Jersey\",\n description: \"The Garden State growing solar gardens\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NM\": {\n code: \"US-NM\",\n name: \"New Mexico\",\n description: \"The Land of Enchantment enchanted by solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NY\": {\n code: \"US-NY\",\n name: \"New York\",\n description: \"The Empire State building a solar empire\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NC\": {\n code: \"US-NC\",\n name: \"North Carolina\",\n description: \"The Tar Heel State stepping into solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-ND\": {\n code: \"US-ND\",\n name: \"North Dakota\",\n description: \"The Peace Garden State cultivating solar peace\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-OH\": {\n code: \"US-OH\",\n name: \"Ohio\",\n description: \"The Buckeye State branching into solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-OK\": {\n code: \"US-OK\",\n name: \"Oklahoma\",\n description: \"The Sooner State adopting solar sooner\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-OR\": {\n code: \"US-OR\",\n name: \"Oregon\",\n description: \"The Beaver State building solar dams\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-PA\": {\n code: \"US-PA\",\n name: \"Pennsylvania\",\n description: \"The Keystone State unlocking solar potential\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-RI\": {\n code: \"US-RI\",\n name: \"Rhode Island\",\n description: \"The Ocean State riding the solar wave\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-SC\": {\n code: \"US-SC\",\n name: \"South Carolina\",\n description: \"The Palmetto State basking in solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-SD\": {\n code: \"US-SD\",\n name: \"South Dakota\",\n description: \"Mount Rushmore State carving out solar future\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-TN\": {\n code: \"US-TN\",\n name: \"Tennessee\",\n description: \"The Volunteer State volunteering for solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-TX\": {\n code: \"US-TX\",\n name: \"Texas\",\n description: \"The Lone Star State shining with solar power\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-UT\": {\n code: \"US-UT\",\n name: \"Utah\",\n description: \"The Beehive State buzzing with solar activity\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-VT\": {\n code: \"US-VT\",\n name: \"Vermont\",\n description: \"The Green Mountain State going greener\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-VA\": {\n code: \"US-VA\",\n name: \"Virginia\",\n description: \"The Old Dominion embracing new energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-WA\": {\n code: \"US-WA\",\n name: \"Washington\",\n description: \"The Evergreen State staying green with solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-WV\": {\n code: \"US-WV\",\n name: \"West Virginia\",\n description: \"The Mountain State reaching new heights\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-WI\": {\n code: \"US-WI\",\n name: \"Wisconsin\",\n description: \"The Badger State digging into solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-WY\": {\n code: \"US-WY\",\n name: \"Wyoming\",\n description: \"The Equality State equalizing energy access\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n\n // Countries\n CA: {\n code: \"CA\",\n name: \"Canada\",\n description: \"The Great White North embracing solar energy\",\n isUs: false,\n flag: \"🇨🇦\",\n },\n MX: {\n code: \"MX\",\n name: \"Mexico\",\n description: \"Abundant sunshine powering the future\",\n isUs: false,\n flag: \"🇲🇽\",\n },\n BR: {\n code: \"BR\",\n name: \"Brazil\",\n description: \"The largest South American market for solar\",\n isUs: false,\n flag: \"🇧🇷\",\n },\n AR: {\n code: \"AR\",\n name: \"Argentina\",\n description: \"Pampas and sunshine creating energy independence\",\n isUs: false,\n flag: \"🇦🇷\",\n },\n CL: {\n code: \"CL\",\n name: \"Chile\",\n description: \"The Atacama Desert's solar potential unleashed\",\n isUs: false,\n flag: \"🇨🇱\",\n },\n CO: {\n code: \"CO\",\n name: \"Colombia\",\n description: \"Equatorial sunshine year-round\",\n isUs: false,\n flag: \"🇨🇴\",\n },\n PE: {\n code: \"PE\",\n name: \"Peru\",\n description: \"From the Andes to the Amazon with solar\",\n isUs: false,\n flag: \"🇵🇪\",\n },\n GB: {\n code: \"GB\",\n name: \"United Kingdom\",\n description: \"Leading Europe's renewable transition\",\n isUs: false,\n flag: \"🇬🇧\",\n },\n FR: {\n code: \"FR\",\n name: \"France\",\n description: \"La République embracing solar liberté\",\n isUs: false,\n flag: \"🇫🇷\",\n },\n DE: {\n code: \"DE\",\n name: \"Germany\",\n description: \"Engineering excellence in solar deployment\",\n isUs: false,\n flag: \"🇩🇪\",\n },\n IT: {\n code: \"IT\",\n name: \"Italy\",\n description: \"Mediterranean sunshine powering the boot\",\n isUs: false,\n flag: \"🇮🇹\",\n },\n ES: {\n code: \"ES\",\n name: \"Spain\",\n description: \"Iberian peninsula's solar powerhouse\",\n isUs: false,\n flag: \"🇪🇸\",\n },\n PT: {\n code: \"PT\",\n name: \"Portugal\",\n description: \"Atlantic coast harnessing solar waves\",\n isUs: false,\n flag: \"🇵🇹\",\n },\n NL: {\n code: \"NL\",\n name: \"Netherlands\",\n description: \"Low lands, high solar ambitions\",\n isUs: false,\n flag: \"🇳🇱\",\n },\n BE: {\n code: \"BE\",\n name: \"Belgium\",\n description: \"The heart of Europe goes solar\",\n isUs: false,\n flag: \"🇧🇪\",\n },\n CH: {\n code: \"CH\",\n name: \"Switzerland\",\n description: \"Alpine heights capturing pure sunlight\",\n isUs: false,\n flag: \"🇨🇭\",\n },\n AT: {\n code: \"AT\",\n name: \"Austria\",\n description: \"Mountain valleys filled with solar panels\",\n isUs: false,\n flag: \"🇦🇹\",\n },\n SE: {\n code: \"SE\",\n name: \"Sweden\",\n description: \"Nordic innovation in solar technology\",\n isUs: false,\n flag: \"🇸🇪\",\n },\n NO: {\n code: \"NO\",\n name: \"Norway\",\n description: \"Fjords reflecting solar possibilities\",\n isUs: false,\n flag: \"🇳🇴\",\n },\n DK: {\n code: \"DK\",\n name: \"Denmark\",\n description: \"Viking spirit conquering solar frontiers\",\n isUs: false,\n flag: \"🇩🇰\",\n },\n FI: {\n code: \"FI\",\n name: \"Finland\",\n description: \"Land of midnight sun going solar\",\n isUs: false,\n flag: \"🇫🇮\",\n },\n PL: {\n code: \"PL\",\n name: \"Poland\",\n description: \"Central Europe's emerging solar market\",\n isUs: false,\n flag: \"🇵🇱\",\n },\n CZ: {\n code: \"CZ\",\n name: \"Czech Republic\",\n description: \"Bohemian innovation in renewable energy\",\n isUs: false,\n flag: \"🇨🇿\",\n },\n GR: {\n code: \"GR\",\n name: \"Greece\",\n description: \"Aegean sunshine powering ancient lands\",\n isUs: false,\n flag: \"🇬🇷\",\n },\n TR: {\n code: \"TR\",\n name: \"Turkey\",\n description: \"Bridge between continents powered by sun\",\n isUs: false,\n flag: \"🇹🇷\",\n },\n IN: {\n code: \"IN\",\n name: \"India\",\n description: \"World's fastest growing solar market\",\n isUs: false,\n flag: \"🇮🇳\",\n },\n CN: {\n code: \"CN\",\n name: \"China\",\n description: \"Global solar manufacturing leader\",\n isUs: false,\n flag: \"🇨🇳\",\n },\n JP: {\n code: \"JP\",\n name: \"Japan\",\n description: \"Rising sun powering technological innovation\",\n isUs: false,\n flag: \"🇯🇵\",\n },\n KR: {\n code: \"KR\",\n name: \"South Korea\",\n description: \"High-tech nation embracing green energy\",\n isUs: false,\n flag: \"🇰🇷\",\n },\n AU: {\n code: \"AU\",\n name: \"Australia\",\n description: \"Outback sunshine creating energy abundance\",\n isUs: false,\n flag: \"🇦🇺\",\n },\n NZ: {\n code: \"NZ\",\n name: \"New Zealand\",\n description: \"Clean, green Aotearoa\",\n isUs: false,\n flag: \"🇳🇿\",\n },\n ZA: {\n code: \"ZA\",\n name: \"South Africa\",\n description: \"African sunshine lighting the continent\",\n isUs: false,\n flag: \"🇿🇦\",\n },\n EG: {\n code: \"EG\",\n name: \"Egypt\",\n description: \"Desert sun powering ancient civilizations\",\n isUs: false,\n flag: \"🇪🇬\",\n },\n NG: {\n code: \"NG\",\n name: \"Nigeria\",\n description: \"West Africa's solar giant awakening\",\n isUs: false,\n flag: \"🇳🇬\",\n },\n KE: {\n code: \"KE\",\n name: \"Kenya\",\n description: \"East African solar innovation hub\",\n isUs: false,\n flag: \"🇰🇪\",\n },\n MA: {\n code: \"MA\",\n name: \"Morocco\",\n description: \"Saharan edge harnessing desert power\",\n isUs: false,\n flag: \"🇲🇦\",\n },\n SA: {\n code: \"SA\",\n name: \"Saudi Arabia\",\n description: \"Oil kingdom transitioning to solar\",\n isUs: false,\n flag: \"🇸🇦\",\n },\n AE: {\n code: \"AE\",\n name: \"United Arab Emirates\",\n description: \"Desert emirates building solar oases\",\n isUs: false,\n flag: \"🇦🇪\",\n },\n IL: {\n code: \"IL\",\n name: \"Israel\",\n description: \"Innovation nation powered by sunshine\",\n isUs: false,\n flag: \"🇮🇱\",\n },\n SG: {\n code: \"SG\",\n name: \"Singapore\",\n description: \"City-state maximizing rooftop solar\",\n isUs: false,\n flag: \"🇸🇬\",\n },\n ID: {\n code: \"ID\",\n name: \"Indonesia\",\n description: \"Archipelago nation harnessing tropical sun\",\n isUs: false,\n flag: \"🇮🇩\",\n },\n TH: {\n code: \"TH\",\n name: \"Thailand\",\n description: \"Land of smiles powered by solar\",\n isUs: false,\n flag: \"🇹🇭\",\n },\n VN: {\n code: \"VN\",\n name: \"Vietnam\",\n description: \"Southeast Asian solar manufacturing hub\",\n isUs: false,\n flag: \"🇻🇳\",\n },\n PH: {\n code: \"PH\",\n name: \"Philippines\",\n description: \"7,000 islands unified by solar power\",\n isUs: false,\n flag: \"🇵🇭\",\n },\n};\n\n// Helper to get all regions as array\nexport const allRegions = Object.values(regionMetadata);\n\n// Helper to get US states\nexport const usStates = allRegions.filter((r) => r.isUs);\n\n// Helper to get countries\nexport const countries = allRegions.filter((r) => !r.isUs);\n"],"names":["parseApiError"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"browser.js","sources":["../../src/lib/region-metadata.ts"],"sourcesContent":["import type { RegionMetadata } from \"./types\";\n// Region metadata for kickstarter campaigns\n\nexport const regionMetadata: Record<string, RegionMetadata> = {\n // US States\n \"US-AL\": {\n code: \"US-AL\",\n name: \"Alabama\",\n description: \"The Heart of Dixie is ready for solar transformation\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-AK\": {\n code: \"US-AK\",\n name: \"Alaska\",\n description: \"The Last Frontier embracing renewable energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-AZ\": {\n code: \"US-AZ\",\n name: \"Arizona\",\n description: \"The Grand Canyon State with abundant sunshine\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-AR\": {\n code: \"US-AR\",\n name: \"Arkansas\",\n description: \"The Natural State going solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-CA\": {\n code: \"US-CA\",\n name: \"California\",\n description: \"The Golden State leading solar innovation\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-CO\": {\n code: \"US-CO\",\n name: \"Colorado\",\n description: \"The Centennial State with high-altitude solar potential\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-CT\": {\n code: \"US-CT\",\n name: \"Connecticut\",\n description: \"The Constitution State embracing clean energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-DE\": {\n code: \"US-DE\",\n name: \"Delaware\",\n description: \"The First State to go solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-FL\": {\n code: \"US-FL\",\n name: \"Florida\",\n description: \"The Sunshine State living up to its name\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-GA\": {\n code: \"US-GA\",\n name: \"Georgia\",\n description: \"The Peach State harvesting solar energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-HI\": {\n code: \"US-HI\",\n name: \"Hawaii\",\n description: \"The Aloha State with year-round solar potential\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-ID\": {\n code: \"US-ID\",\n name: \"Idaho\",\n description: \"The Gem State shining with solar power\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-IL\": {\n code: \"US-IL\",\n name: \"Illinois\",\n description: \"The Prairie State powering up with solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-IN\": {\n code: \"US-IN\",\n name: \"Indiana\",\n description: \"The Hoosier State joining the solar revolution\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-IA\": {\n code: \"US-IA\",\n name: \"Iowa\",\n description: \"The Hawkeye State expanding beyond wind to solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-KS\": {\n code: \"US-KS\",\n name: \"Kansas\",\n description: \"The Sunflower State growing solar energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-KY\": {\n code: \"US-KY\",\n name: \"Kentucky\",\n description: \"The Bluegrass State transitioning to clean energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-LA\": {\n code: \"US-LA\",\n name: \"Louisiana\",\n description: \"The Pelican State soaring with solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-ME\": {\n code: \"US-ME\",\n name: \"Maine\",\n description: \"The Pine Tree State branching into solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MD\": {\n code: \"US-MD\",\n name: \"Maryland\",\n description: \"The Old Line State drawing new energy lines\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MA\": {\n code: \"US-MA\",\n name: \"Massachusetts\",\n description: \"The Bay State leading in solar innovation\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MI\": {\n code: \"US-MI\",\n name: \"Michigan\",\n description: \"The Great Lakes State harnessing solar power\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MN\": {\n code: \"US-MN\",\n name: \"Minnesota\",\n description: \"The North Star State guiding solar adoption\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MS\": {\n code: \"US-MS\",\n name: \"Mississippi\",\n description: \"The Magnolia State blooming with solar energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MO\": {\n code: \"US-MO\",\n name: \"Missouri\",\n description: \"The Show-Me State showing solar leadership\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-MT\": {\n code: \"US-MT\",\n name: \"Montana\",\n description: \"Big Sky Country with big solar potential\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NE\": {\n code: \"US-NE\",\n name: \"Nebraska\",\n description: \"The Cornhusker State cultivating solar power\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NV\": {\n code: \"US-NV\",\n name: \"Nevada\",\n description: \"The Silver State striking solar gold\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NH\": {\n code: \"US-NH\",\n name: \"New Hampshire\",\n description: \"The Granite State building solid solar foundation\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NJ\": {\n code: \"US-NJ\",\n name: \"New Jersey\",\n description: \"The Garden State growing solar gardens\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NM\": {\n code: \"US-NM\",\n name: \"New Mexico\",\n description: \"The Land of Enchantment enchanted by solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NY\": {\n code: \"US-NY\",\n name: \"New York\",\n description: \"The Empire State building a solar empire\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-NC\": {\n code: \"US-NC\",\n name: \"North Carolina\",\n description: \"The Tar Heel State stepping into solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-ND\": {\n code: \"US-ND\",\n name: \"North Dakota\",\n description: \"The Peace Garden State cultivating solar peace\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-OH\": {\n code: \"US-OH\",\n name: \"Ohio\",\n description: \"The Buckeye State branching into solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-OK\": {\n code: \"US-OK\",\n name: \"Oklahoma\",\n description: \"The Sooner State adopting solar sooner\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-OR\": {\n code: \"US-OR\",\n name: \"Oregon\",\n description: \"The Beaver State building solar dams\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-PA\": {\n code: \"US-PA\",\n name: \"Pennsylvania\",\n description: \"The Keystone State unlocking solar potential\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-RI\": {\n code: \"US-RI\",\n name: \"Rhode Island\",\n description: \"The Ocean State riding the solar wave\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-SC\": {\n code: \"US-SC\",\n name: \"South Carolina\",\n description: \"The Palmetto State basking in solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-SD\": {\n code: \"US-SD\",\n name: \"South Dakota\",\n description: \"Mount Rushmore State carving out solar future\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-TN\": {\n code: \"US-TN\",\n name: \"Tennessee\",\n description: \"The Volunteer State volunteering for solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-TX\": {\n code: \"US-TX\",\n name: \"Texas\",\n description: \"The Lone Star State shining with solar power\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-UT\": {\n code: \"US-UT\",\n name: \"Utah\",\n description: \"The Beehive State buzzing with solar activity\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-VT\": {\n code: \"US-VT\",\n name: \"Vermont\",\n description: \"The Green Mountain State going greener\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-VA\": {\n code: \"US-VA\",\n name: \"Virginia\",\n description: \"The Old Dominion embracing new energy\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-WA\": {\n code: \"US-WA\",\n name: \"Washington\",\n description: \"The Evergreen State staying green with solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-WV\": {\n code: \"US-WV\",\n name: \"West Virginia\",\n description: \"The Mountain State reaching new heights\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-WI\": {\n code: \"US-WI\",\n name: \"Wisconsin\",\n description: \"The Badger State digging into solar\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n \"US-WY\": {\n code: \"US-WY\",\n name: \"Wyoming\",\n description: \"The Equality State equalizing energy access\",\n isUs: true,\n flag: \"🇺🇸\",\n },\n\n // Countries\n CA: {\n code: \"CA\",\n name: \"Canada\",\n description: \"The Great White North embracing solar energy\",\n isUs: false,\n flag: \"🇨🇦\",\n },\n MX: {\n code: \"MX\",\n name: \"Mexico\",\n description: \"Abundant sunshine powering the future\",\n isUs: false,\n flag: \"🇲🇽\",\n },\n BR: {\n code: \"BR\",\n name: \"Brazil\",\n description: \"The largest South American market for solar\",\n isUs: false,\n flag: \"🇧🇷\",\n },\n AR: {\n code: \"AR\",\n name: \"Argentina\",\n description: \"Pampas and sunshine creating energy independence\",\n isUs: false,\n flag: \"🇦🇷\",\n },\n CL: {\n code: \"CL\",\n name: \"Chile\",\n description: \"The Atacama Desert's solar potential unleashed\",\n isUs: false,\n flag: \"🇨🇱\",\n },\n CO: {\n code: \"CO\",\n name: \"Colombia\",\n description: \"Equatorial sunshine year-round\",\n isUs: false,\n flag: \"🇨🇴\",\n },\n PE: {\n code: \"PE\",\n name: \"Peru\",\n description: \"From the Andes to the Amazon with solar\",\n isUs: false,\n flag: \"🇵🇪\",\n },\n GB: {\n code: \"GB\",\n name: \"United Kingdom\",\n description: \"Leading Europe's renewable transition\",\n isUs: false,\n flag: \"🇬🇧\",\n },\n FR: {\n code: \"FR\",\n name: \"France\",\n description: \"La République embracing solar liberté\",\n isUs: false,\n flag: \"🇫🇷\",\n },\n DE: {\n code: \"DE\",\n name: \"Germany\",\n description: \"Engineering excellence in solar deployment\",\n isUs: false,\n flag: \"🇩🇪\",\n },\n IT: {\n code: \"IT\",\n name: \"Italy\",\n description: \"Mediterranean sunshine powering the boot\",\n isUs: false,\n flag: \"🇮🇹\",\n },\n ES: {\n code: \"ES\",\n name: \"Spain\",\n description: \"Iberian peninsula's solar powerhouse\",\n isUs: false,\n flag: \"🇪🇸\",\n },\n PT: {\n code: \"PT\",\n name: \"Portugal\",\n description: \"Atlantic coast harnessing solar waves\",\n isUs: false,\n flag: \"🇵🇹\",\n },\n NL: {\n code: \"NL\",\n name: \"Netherlands\",\n description: \"Low lands, high solar ambitions\",\n isUs: false,\n flag: \"🇳🇱\",\n },\n BE: {\n code: \"BE\",\n name: \"Belgium\",\n description: \"The heart of Europe goes solar\",\n isUs: false,\n flag: \"🇧🇪\",\n },\n CH: {\n code: \"CH\",\n name: \"Switzerland\",\n description: \"Alpine heights capturing pure sunlight\",\n isUs: false,\n flag: \"🇨🇭\",\n },\n AT: {\n code: \"AT\",\n name: \"Austria\",\n description: \"Mountain valleys filled with solar panels\",\n isUs: false,\n flag: \"🇦🇹\",\n },\n SE: {\n code: \"SE\",\n name: \"Sweden\",\n description: \"Nordic innovation in solar technology\",\n isUs: false,\n flag: \"🇸🇪\",\n },\n NO: {\n code: \"NO\",\n name: \"Norway\",\n description: \"Fjords reflecting solar possibilities\",\n isUs: false,\n flag: \"🇳🇴\",\n },\n DK: {\n code: \"DK\",\n name: \"Denmark\",\n description: \"Viking spirit conquering solar frontiers\",\n isUs: false,\n flag: \"🇩🇰\",\n },\n FI: {\n code: \"FI\",\n name: \"Finland\",\n description: \"Land of midnight sun going solar\",\n isUs: false,\n flag: \"🇫🇮\",\n },\n PL: {\n code: \"PL\",\n name: \"Poland\",\n description: \"Central Europe's emerging solar market\",\n isUs: false,\n flag: \"🇵🇱\",\n },\n CZ: {\n code: \"CZ\",\n name: \"Czech Republic\",\n description: \"Bohemian innovation in renewable energy\",\n isUs: false,\n flag: \"🇨🇿\",\n },\n GR: {\n code: \"GR\",\n name: \"Greece\",\n description: \"Aegean sunshine powering ancient lands\",\n isUs: false,\n flag: \"🇬🇷\",\n },\n TR: {\n code: \"TR\",\n name: \"Turkey\",\n description: \"Bridge between continents powered by sun\",\n isUs: false,\n flag: \"🇹🇷\",\n },\n IN: {\n code: \"IN\",\n name: \"India\",\n description: \"World's fastest growing solar market\",\n isUs: false,\n flag: \"🇮🇳\",\n },\n CN: {\n code: \"CN\",\n name: \"China\",\n description: \"Global solar manufacturing leader\",\n isUs: false,\n flag: \"🇨🇳\",\n },\n JP: {\n code: \"JP\",\n name: \"Japan\",\n description: \"Rising sun powering technological innovation\",\n isUs: false,\n flag: \"🇯🇵\",\n },\n KR: {\n code: \"KR\",\n name: \"South Korea\",\n description: \"High-tech nation embracing green energy\",\n isUs: false,\n flag: \"🇰🇷\",\n },\n AU: {\n code: \"AU\",\n name: \"Australia\",\n description: \"Outback sunshine creating energy abundance\",\n isUs: false,\n flag: \"🇦🇺\",\n },\n NZ: {\n code: \"NZ\",\n name: \"New Zealand\",\n description: \"Clean, green Aotearoa\",\n isUs: false,\n flag: \"🇳🇿\",\n },\n ZA: {\n code: \"ZA\",\n name: \"South Africa\",\n description: \"African sunshine lighting the continent\",\n isUs: false,\n flag: \"🇿🇦\",\n },\n EG: {\n code: \"EG\",\n name: \"Egypt\",\n description: \"Desert sun powering ancient civilizations\",\n isUs: false,\n flag: \"🇪🇬\",\n },\n NG: {\n code: \"NG\",\n name: \"Nigeria\",\n description: \"West Africa's solar giant awakening\",\n isUs: false,\n flag: \"🇳🇬\",\n },\n KE: {\n code: \"KE\",\n name: \"Kenya\",\n description: \"East African solar innovation hub\",\n isUs: false,\n flag: \"🇰🇪\",\n },\n MA: {\n code: \"MA\",\n name: \"Morocco\",\n description: \"Saharan edge harnessing desert power\",\n isUs: false,\n flag: \"🇲🇦\",\n },\n SA: {\n code: \"SA\",\n name: \"Saudi Arabia\",\n description: \"Oil kingdom transitioning to solar\",\n isUs: false,\n flag: \"🇸🇦\",\n },\n AE: {\n code: \"AE\",\n name: \"United Arab Emirates\",\n description: \"Desert emirates building solar oases\",\n isUs: false,\n flag: \"🇦🇪\",\n },\n IL: {\n code: \"IL\",\n name: \"Israel\",\n description: \"Innovation nation powered by sunshine\",\n isUs: false,\n flag: \"🇮🇱\",\n },\n SG: {\n code: \"SG\",\n name: \"Singapore\",\n description: \"City-state maximizing rooftop solar\",\n isUs: false,\n flag: \"🇸🇬\",\n },\n ID: {\n code: \"ID\",\n name: \"Indonesia\",\n description: \"Archipelago nation harnessing tropical sun\",\n isUs: false,\n flag: \"🇮🇩\",\n },\n TH: {\n code: \"TH\",\n name: \"Thailand\",\n description: \"Land of smiles powered by solar\",\n isUs: false,\n flag: \"🇹🇭\",\n },\n VN: {\n code: \"VN\",\n name: \"Vietnam\",\n description: \"Southeast Asian solar manufacturing hub\",\n isUs: false,\n flag: \"🇻🇳\",\n },\n PH: {\n code: \"PH\",\n name: \"Philippines\",\n description: \"7,000 islands unified by solar power\",\n isUs: false,\n flag: \"🇵🇭\",\n },\n};\n\n// Helper to get all regions as array\nexport const allRegions = Object.values(regionMetadata);\n\n// Helper to get US states\nexport const usStates = allRegions.filter((r) => r.isUs);\n\n// Helper to get countries\nexport const countries = allRegions.filter((r) => !r.isUs);\n"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
@@ -2,3 +2,5 @@ export * from "./lib/create-weekly-report/types/index";
|
|
2
2
|
export * from "./constants/index";
|
3
3
|
export { createWeeklyReport, createWeeklyReportLegacy, } from "./lib/create-weekly-report/index";
|
4
4
|
export { useForwarder } from "./lib/hooks/use-forwarder";
|
5
|
+
export { ControlRouter } from "./lib/control-api/control-router";
|
6
|
+
export { RegionRouter } from "./lib/control-api/region-router";
|