@wealthfolio/addon-sdk 3.6.2 → 3.7.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 +27 -0
- package/README.md +109 -51
- package/dist/{chunk-K7KLLX42.js → chunk-5727GMVD.js} +1 -1
- package/dist/chunk-5727GMVD.js.map +1 -0
- package/dist/{chunk-BFZMXPHG.js → chunk-67V3WWT6.js} +3 -3
- package/dist/{chunk-BFZMXPHG.js.map → chunk-67V3WWT6.js.map} +1 -1
- package/dist/{chunk-AAIYUZY5.js → chunk-MKLA4V4J.js} +3 -3
- package/dist/{chunk-AAIYUZY5.js.map → chunk-MKLA4V4J.js.map} +1 -1
- package/dist/host-dependencies.js +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/manifest.js +1 -1
- package/dist/src/data-types.d.ts +1 -1
- package/dist/src/host-api.d.ts +4 -2
- package/dist/src/host-dependencies.d.ts +2 -2
- package/dist/src/index.d.ts +3 -3
- package/dist/src/manifest.d.ts +16 -1
- package/dist/src/types.d.ts +18 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-K7KLLX42.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,33 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
4
4
|
and this project adheres to
|
|
5
5
|
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [3.7.0] - 2026-08-10
|
|
8
|
+
|
|
9
|
+
Wealthfolio 3.7 adds private packaged assets while preserving the documented
|
|
10
|
+
v3.6 addon runtime contract. See the
|
|
11
|
+
[v3.6 → v3.7 migration guide](../../docs/addons/addon-migration-guide-v3.6-to-v3.7.md).
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- `AddonContext.assets` (`AddonAssets`) with `list()`, `has()`, `getBlob()`, and
|
|
16
|
+
lifecycle-scoped `getUrl()` methods.
|
|
17
|
+
- `AddonAsset` metadata and `ExtractedAddon.assets` for host/runtime package
|
|
18
|
+
integration.
|
|
19
|
+
- Automatic indexing of `assets/**` and `dist/assets/**`, including local CSS
|
|
20
|
+
`url(...)` rewriting for sandbox-safe Blob URLs.
|
|
21
|
+
|
|
22
|
+
### Changed
|
|
23
|
+
|
|
24
|
+
- Addon enable functions and returned disable callbacks may be asynchronous.
|
|
25
|
+
- Development loading uses coherent, generation-addressed runtime package
|
|
26
|
+
snapshots. Wealthfolio 3.7 requires `@wealthfolio/addon-dev-tools` 3.7 or
|
|
27
|
+
newer for live development.
|
|
28
|
+
|
|
29
|
+
### Compatibility
|
|
30
|
+
|
|
31
|
+
- Existing v3.6 bundles remain supported. Addons that use `ctx.assets` must set
|
|
32
|
+
`minWealthfolioVersion` to `3.7.0` or newer.
|
|
33
|
+
|
|
7
34
|
## [3.6.1] - 2026-07-06
|
|
8
35
|
|
|
9
36
|
Follow-up to the v3.6 sandbox release: sidebar icons are now a typed, curated
|
package/README.md
CHANGED
|
@@ -70,12 +70,15 @@ mkdir src && touch src/index.ts
|
|
|
70
70
|
|
|
71
71
|
```typescript
|
|
72
72
|
// src/index.ts
|
|
73
|
-
import {
|
|
74
|
-
import { getAddonContext, type AddonContext } from '@wealthfolio/addon-sdk';
|
|
73
|
+
import type { AddonContext } from '@wealthfolio/addon-sdk';
|
|
75
74
|
import { MyComponent } from './MyComponent';
|
|
76
75
|
|
|
76
|
+
let addonContext: AddonContext | undefined;
|
|
77
|
+
|
|
78
|
+
const MyAddonRoute = () => <MyComponent ctx={addonContext!} />;
|
|
79
|
+
|
|
77
80
|
export default function enable(context: AddonContext) {
|
|
78
|
-
|
|
81
|
+
addonContext = context;
|
|
79
82
|
|
|
80
83
|
// Add navigation item
|
|
81
84
|
const navItem = context.sidebar.addItem({
|
|
@@ -87,11 +90,9 @@ export default function enable(context: AddonContext) {
|
|
|
87
90
|
|
|
88
91
|
// Register route
|
|
89
92
|
context.router.add({
|
|
93
|
+
id: 'my-addon',
|
|
90
94
|
path: '/addons/my-addon',
|
|
91
|
-
|
|
92
|
-
root ??= createRoot(routeRoot);
|
|
93
|
-
root.render(<MyComponent ctx={context} />);
|
|
94
|
-
},
|
|
95
|
+
component: MyAddonRoute,
|
|
95
96
|
});
|
|
96
97
|
|
|
97
98
|
// Log activation
|
|
@@ -99,8 +100,7 @@ export default function enable(context: AddonContext) {
|
|
|
99
100
|
|
|
100
101
|
// Cleanup on disable
|
|
101
102
|
context.onDisable(() => {
|
|
102
|
-
|
|
103
|
-
root = null;
|
|
103
|
+
addonContext = undefined;
|
|
104
104
|
navItem.remove();
|
|
105
105
|
context.api.logger.info('My addon deactivated');
|
|
106
106
|
});
|
|
@@ -122,15 +122,15 @@ pnpm add @wealthfolio/addon-sdk @tanstack/react-query
|
|
|
122
122
|
|
|
123
123
|
### Requirements
|
|
124
124
|
|
|
125
|
-
- **Node.js**: >=
|
|
126
|
-
- **React**: ^
|
|
125
|
+
- **Node.js**: >= 20.0.0
|
|
126
|
+
- **React**: ^19.2.4 (peer dependency and host-provided version)
|
|
127
127
|
- **TypeScript**: ^5.0.0 (recommended for development)
|
|
128
128
|
- **React Query**: ^4.0.0 or ^5.0.0 (for data fetching)
|
|
129
129
|
|
|
130
130
|
### Package Information
|
|
131
131
|
|
|
132
132
|
- **Package Name**: `@wealthfolio/addon-sdk`
|
|
133
|
-
- **Current Version**:
|
|
133
|
+
- **Current Version**: 3.7.0
|
|
134
134
|
- **Bundle Format**: ESM (ECMAScript Modules)
|
|
135
135
|
- **Type Definitions**: Included (TypeScript ready)
|
|
136
136
|
- **License**: MIT
|
|
@@ -179,6 +179,46 @@ my-portfolio-addon/
|
|
|
179
179
|
└── vite.config.ts # Build configuration
|
|
180
180
|
```
|
|
181
181
|
|
|
182
|
+
### Packaged assets
|
|
183
|
+
|
|
184
|
+
Static files below `assets/` and generated files below `dist/assets/` are
|
|
185
|
+
indexed automatically; they do not need to be declared in `manifest.json`.
|
|
186
|
+
JavaScript chunks and CSS in those directories remain runtime code/styles. Load
|
|
187
|
+
other files through the add-on context so the host can keep the opaque iframe
|
|
188
|
+
offline:
|
|
189
|
+
|
|
190
|
+
This API requires Wealthfolio 3.7 or newer. Set `sdkVersion` and
|
|
191
|
+
`minWealthfolioVersion` to `3.7.0` when using it. No permission is required.
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
export default async function enable(context: AddonContext) {
|
|
195
|
+
const logoUrl = await context.assets.getUrl('assets/logo.png');
|
|
196
|
+
const configBlob = await context.assets.getBlob('assets/config.json');
|
|
197
|
+
const config = JSON.parse(await configBlob.text());
|
|
198
|
+
|
|
199
|
+
// Use logoUrl in an <img>, CSS-in-JS value, or component prop.
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
The registry also provides `list()` for public path/MIME/size metadata and
|
|
204
|
+
`has(path)` for feature checks. It never exposes host paths or opaque internal
|
|
205
|
+
identifiers. `context.assets` is unrelated to the financial-instrument API at
|
|
206
|
+
`context.api.assets`.
|
|
207
|
+
|
|
208
|
+
Packaged URLs in extracted CSS are resolved automatically and relative to the
|
|
209
|
+
CSS file. For example, `dist/addon.css` can use `url("./assets/background.png")`
|
|
210
|
+
for `dist/assets/background.png`. `data:` and `blob:` URLs remain unchanged. CSS
|
|
211
|
+
`@import` and remote URLs are not supported; bundle imported CSS and use the
|
|
212
|
+
brokered network API for remote data.
|
|
213
|
+
|
|
214
|
+
JavaScript image imports that compile to relative HTTP URLs cannot work in the
|
|
215
|
+
opaque Blob runtime. Use `context.assets.getUrl()` instead. Blob URLs are cached
|
|
216
|
+
for the add-on lifetime and revoked automatically when it is disabled. Package
|
|
217
|
+
limits remain 5 MiB per file, 25 MiB uncompressed in total, and 256 entries.
|
|
218
|
+
Asset roots must be directories; symlinks are rejected. See the
|
|
219
|
+
[v3.6 to v3.7 migration guide](../../docs/addons/addon-migration-guide-v3.6-to-v3.7.md)
|
|
220
|
+
for compatibility and troubleshooting.
|
|
221
|
+
|
|
182
222
|
## 📋 Manifest Configuration
|
|
183
223
|
|
|
184
224
|
Create a `manifest.json` file in your addon root:
|
|
@@ -193,8 +233,8 @@ Create a `manifest.json` file in your addon root:
|
|
|
193
233
|
"homepage": "https://github.com/yourname/investment-fees-tracker",
|
|
194
234
|
"license": "MIT",
|
|
195
235
|
"main": "dist/addon.js",
|
|
196
|
-
"sdkVersion": "
|
|
197
|
-
"minWealthfolioVersion": "
|
|
236
|
+
"sdkVersion": "3.7.0",
|
|
237
|
+
"minWealthfolioVersion": "3.7.0",
|
|
198
238
|
"keywords": ["portfolio", "fees", "tracking", "analytics"],
|
|
199
239
|
"icon": "data:image/svg+xml;base64,...",
|
|
200
240
|
"permissions": [
|
|
@@ -233,7 +273,7 @@ Create a `manifest.json` file in your addon root:
|
|
|
233
273
|
| `permissions` | `Permission[]` | Security permissions required |
|
|
234
274
|
| `minWealthfolioVersion` | `string` | Minimum Wealthfolio version required |
|
|
235
275
|
| `keywords` | `string[]` | Keywords for discoverability |
|
|
236
|
-
| `icon` | `string` | Addon icon
|
|
276
|
+
| `icon` | `string` | Addon icon value supported by the host |
|
|
237
277
|
|
|
238
278
|
## 🔨 Development Guide
|
|
239
279
|
|
|
@@ -244,7 +284,6 @@ example:
|
|
|
244
284
|
|
|
245
285
|
```typescript
|
|
246
286
|
// src/addon.tsx
|
|
247
|
-
import { createRoot, type Root } from 'react-dom/client';
|
|
248
287
|
import { QueryClientProvider } from '@tanstack/react-query';
|
|
249
288
|
import type { AddonContext, AddonEnableFunction } from '@wealthfolio/addon-sdk';
|
|
250
289
|
import FeesPage from './pages/fees-page';
|
|
@@ -264,7 +303,6 @@ const enable: AddonEnableFunction = (context) => {
|
|
|
264
303
|
|
|
265
304
|
// Store references to items for cleanup
|
|
266
305
|
const addedItems: Array<{ remove: () => void }> = [];
|
|
267
|
-
let root: Root | null = null;
|
|
268
306
|
|
|
269
307
|
try {
|
|
270
308
|
// Add sidebar navigation item with a host-supported icon token
|
|
@@ -279,11 +317,11 @@ const enable: AddonEnableFunction = (context) => {
|
|
|
279
317
|
|
|
280
318
|
context.api.logger.debug('Sidebar navigation item added successfully');
|
|
281
319
|
|
|
282
|
-
// Create wrapper component with
|
|
320
|
+
// Create wrapper component with this addon's QueryClient
|
|
283
321
|
const InvestmentFeesTrackerWrapper = () => {
|
|
284
|
-
const
|
|
322
|
+
const addonQueryClient = context.api.query.getClient();
|
|
285
323
|
return (
|
|
286
|
-
<QueryClientProvider client={
|
|
324
|
+
<QueryClientProvider client={addonQueryClient}>
|
|
287
325
|
<InvestmentFeesTrackerAddon ctx={context} />
|
|
288
326
|
</QueryClientProvider>
|
|
289
327
|
);
|
|
@@ -291,11 +329,9 @@ const enable: AddonEnableFunction = (context) => {
|
|
|
291
329
|
|
|
292
330
|
// Register route
|
|
293
331
|
context.router.add({
|
|
332
|
+
id: 'investment-fees-tracker',
|
|
294
333
|
path: '/addons/investment-fees-tracker',
|
|
295
|
-
|
|
296
|
-
root ??= createRoot(routeRoot);
|
|
297
|
-
root.render(<InvestmentFeesTrackerWrapper />);
|
|
298
|
-
},
|
|
334
|
+
component: InvestmentFeesTrackerWrapper,
|
|
299
335
|
});
|
|
300
336
|
|
|
301
337
|
context.api.logger.debug('Route registered successfully');
|
|
@@ -310,10 +346,6 @@ const enable: AddonEnableFunction = (context) => {
|
|
|
310
346
|
context.onDisable(() => {
|
|
311
347
|
context.api.logger.info('🛑 Investment Fees Tracker addon is being disabled');
|
|
312
348
|
|
|
313
|
-
// Unmount the addon's React root
|
|
314
|
-
root?.unmount();
|
|
315
|
-
root = null;
|
|
316
|
-
|
|
317
349
|
// Remove all sidebar items
|
|
318
350
|
addedItems.forEach(item => {
|
|
319
351
|
try {
|
|
@@ -333,16 +365,13 @@ export default enable;
|
|
|
333
365
|
|
|
334
366
|
### Key Features Demonstrated
|
|
335
367
|
|
|
336
|
-
1. **
|
|
337
|
-
|
|
368
|
+
1. **Addon Query Client**: Uses `context.api.query.getClient()` for local data
|
|
369
|
+
fetching with host invalidation bridging
|
|
338
370
|
2. **UI Icons**: Leverages `@wealthfolio/ui` for consistent iconography
|
|
339
371
|
3. **Error Handling**: Comprehensive error handling with logging
|
|
340
372
|
4. **Resource Management**: Proper cleanup of sidebar items and event listeners
|
|
341
373
|
5. **TypeScript**: Full type safety with proper imports
|
|
342
|
-
6. **Sandbox Rendering**:
|
|
343
|
-
unmounts on disable
|
|
344
|
-
|
|
345
|
-
````
|
|
374
|
+
6. **Sandbox Rendering**: Lets the sandbox host own and update the React root
|
|
346
375
|
|
|
347
376
|
### Advanced Component Example
|
|
348
377
|
|
|
@@ -358,7 +387,7 @@ interface FeesPageProps {
|
|
|
358
387
|
}
|
|
359
388
|
|
|
360
389
|
export function FeesPage({ ctx }: FeesPageProps) {
|
|
361
|
-
// Use React Query for data fetching with
|
|
390
|
+
// Use React Query for data fetching with this addon's client
|
|
362
391
|
const { data: accounts, isLoading: accountsLoading } = useQuery({
|
|
363
392
|
queryKey: ['accounts'],
|
|
364
393
|
queryFn: () => ctx.api.accounts.getAll()
|
|
@@ -499,7 +528,7 @@ export default FeesPage;
|
|
|
499
528
|
}
|
|
500
529
|
|
|
501
530
|
export default AnalyticsDashboard;
|
|
502
|
-
|
|
531
|
+
```
|
|
503
532
|
|
|
504
533
|
### Using Hooks and State Management
|
|
505
534
|
|
|
@@ -604,6 +633,20 @@ cash flows.
|
|
|
604
633
|
|
|
605
634
|
## 🛠️ Build Configuration
|
|
606
635
|
|
|
636
|
+
Wealthfolio 3.7 supports Chrome/Edge 107+, Firefox 104+, and Safari 16+. The
|
|
637
|
+
desktop app requires macOS 12+ and the native mobile app requires iOS/iPadOS
|
|
638
|
+
16+. On macOS 12, apply current macOS and Safari updates so the system WKWebView
|
|
639
|
+
meets the Safari 16 floor. Addons run inside the platform system WebView, so
|
|
640
|
+
build against this browser floor rather than relying on the browser used during
|
|
641
|
+
development.
|
|
642
|
+
|
|
643
|
+
Files below `assets/` and `dist/assets/` are private to the addon package. Use
|
|
644
|
+
`ctx.assets.list()`, `ctx.assets.getBlob(path)`, and `ctx.assets.getUrl(path)`
|
|
645
|
+
to access them. Packaged images, fonts, media, CSS, and WebAssembly are
|
|
646
|
+
supported; Worker and service-worker entry points, popups, direct network
|
|
647
|
+
requests, and remote CSS imports are not. Use the host's brokered APIs,
|
|
648
|
+
including `ctx.api.network.request()`, for declared external access.
|
|
649
|
+
|
|
607
650
|
### Vite Configuration
|
|
608
651
|
|
|
609
652
|
Create a `vite.config.ts` for optimal bundling:
|
|
@@ -616,6 +659,7 @@ import { resolve } from 'path';
|
|
|
616
659
|
export default defineConfig({
|
|
617
660
|
plugins: [react()],
|
|
618
661
|
build: {
|
|
662
|
+
target: ['chrome107', 'edge107', 'firefox104', 'safari16'],
|
|
619
663
|
lib: {
|
|
620
664
|
entry: resolve(__dirname, 'src/index.ts'),
|
|
621
665
|
name: 'MyPortfolioAddon',
|
|
@@ -819,7 +863,7 @@ ctx.api.logger.debug('Debug info:', debugData);
|
|
|
819
863
|
| `goals.getFunding(goalId)` | Get funding rules for a goal | `financial-planning` |
|
|
820
864
|
| `goals.saveFunding(goalId, rules)` | Save funding rules for a goal | `financial-planning` |
|
|
821
865
|
| `settings.get()` | Get app settings | `settings` |
|
|
822
|
-
| `query.getClient()` | Get
|
|
866
|
+
| `query.getClient()` | Get this addon's QueryClient | None |
|
|
823
867
|
|
|
824
868
|
> Tip: `activities.getAll` accepts an optional account ID string to scope
|
|
825
869
|
> results to a single account. The SDK normalizes this for both desktop (Tauri)
|
|
@@ -873,19 +917,20 @@ if (ctx.api.logger.isLevelEnabled('debug')) {
|
|
|
873
917
|
}
|
|
874
918
|
```
|
|
875
919
|
|
|
876
|
-
###
|
|
920
|
+
### Addon QueryClient Integration
|
|
877
921
|
|
|
878
|
-
The
|
|
879
|
-
|
|
922
|
+
The sandbox provides one React Query client per addon. Its cache is reused
|
|
923
|
+
across that addon's route renders, not shared with the host or other addons.
|
|
924
|
+
Invalidate/refetch operations are mirrored to the host:
|
|
880
925
|
|
|
881
926
|
```typescript
|
|
882
|
-
// Access
|
|
883
|
-
const
|
|
927
|
+
// Access this addon's QueryClient instance
|
|
928
|
+
const addonQueryClient = context.api.query.getClient();
|
|
884
929
|
|
|
885
930
|
// Wrap your components with QueryClientProvider
|
|
886
931
|
const MyAddonWrapper = () => {
|
|
887
932
|
return (
|
|
888
|
-
<QueryClientProvider client={
|
|
933
|
+
<QueryClientProvider client={addonQueryClient}>
|
|
889
934
|
<MyAddonComponent />
|
|
890
935
|
</QueryClientProvider>
|
|
891
936
|
);
|
|
@@ -908,15 +953,24 @@ function MyAddonComponent() {
|
|
|
908
953
|
}
|
|
909
954
|
```
|
|
910
955
|
|
|
911
|
-
**Benefits of
|
|
956
|
+
**Benefits of the sandbox-scoped QueryClient:**
|
|
912
957
|
|
|
913
|
-
- **
|
|
914
|
-
- **
|
|
915
|
-
- **
|
|
916
|
-
- **
|
|
958
|
+
- **Isolation**: Cached financial data and observers do not leak across addons
|
|
959
|
+
- **Route continuity**: One cache is retained across the addon's pages
|
|
960
|
+
- **Coordination**: Addon invalidations/refetches are also sent to the host
|
|
961
|
+
- **Lifecycle cleanup**: The cache is cleared with the addon sandbox
|
|
962
|
+
|
|
963
|
+
Host-originated invalidations do not mutate the addon cache automatically. Use
|
|
964
|
+
the relevant `ctx.api.events` subscription and invalidate locally when the addon
|
|
965
|
+
must react to changes initiated elsewhere.
|
|
917
966
|
|
|
918
967
|
## 🔄 Migration Guide
|
|
919
968
|
|
|
969
|
+
For Wealthfolio 3.7, see the
|
|
970
|
+
[v3.6 to v3.7 migration guide](../../docs/addons/addon-migration-guide-v3.6-to-v3.7.md).
|
|
971
|
+
It covers backward compatibility, the private asset registry, CSS behavior, and
|
|
972
|
+
the required development-tools upgrade.
|
|
973
|
+
|
|
920
974
|
### From v1.0.0 to v1.1.0
|
|
921
975
|
|
|
922
976
|
#### Context Access
|
|
@@ -1008,6 +1062,7 @@ import { resolve } from 'path';
|
|
|
1008
1062
|
export default defineConfig({
|
|
1009
1063
|
plugins: [react()],
|
|
1010
1064
|
build: {
|
|
1065
|
+
target: ['chrome107', 'edge107', 'firefox104', 'safari16'],
|
|
1011
1066
|
lib: {
|
|
1012
1067
|
entry: resolve(__dirname, 'src/index.ts'),
|
|
1013
1068
|
name: 'MyPortfolioAddon',
|
|
@@ -1290,6 +1345,7 @@ function usePortfolioData(accountId: string) {
|
|
|
1290
1345
|
// vite.config.ts - optimize chunks
|
|
1291
1346
|
export default defineConfig({
|
|
1292
1347
|
build: {
|
|
1348
|
+
target: ['chrome107', 'edge107', 'firefox104', 'safari16'],
|
|
1293
1349
|
rollupOptions: {
|
|
1294
1350
|
output: {
|
|
1295
1351
|
manualChunks: {
|
|
@@ -1382,7 +1438,7 @@ We follow [Semantic Versioning](https://semver.org/) (SemVer):
|
|
|
1382
1438
|
|
|
1383
1439
|
| SDK Version | Wealthfolio Version | Node.js | React |
|
|
1384
1440
|
| ----------- | ------------------- | --------- | ------- |
|
|
1385
|
-
|
|
|
1441
|
+
| 3.7.x | >= 3.7.0 | >= 20.0.0 | ^19.2.4 |
|
|
1386
1442
|
| 0.9.x | >= 0.9.0 | >= 16.0.0 | ^17.0.0 |
|
|
1387
1443
|
|
|
1388
1444
|
### Installation from Registry
|
|
@@ -1394,10 +1450,10 @@ We follow [Semantic Versioning](https://semver.org/) (SemVer):
|
|
|
1394
1450
|
npm install @wealthfolio/addon-sdk
|
|
1395
1451
|
|
|
1396
1452
|
# Specific version
|
|
1397
|
-
npm install @wealthfolio/addon-sdk@
|
|
1453
|
+
npm install @wealthfolio/addon-sdk@3.7.0
|
|
1398
1454
|
|
|
1399
1455
|
# Version range
|
|
1400
|
-
npm install @wealthfolio/addon-sdk@^
|
|
1456
|
+
npm install @wealthfolio/addon-sdk@^3.7.0
|
|
1401
1457
|
```
|
|
1402
1458
|
|
|
1403
1459
|
#### Beta/Preview Releases
|
|
@@ -1633,6 +1689,7 @@ npm list react react-dom
|
|
|
1633
1689
|
// vite.config.ts
|
|
1634
1690
|
export default defineConfig({
|
|
1635
1691
|
build: {
|
|
1692
|
+
target: ['chrome107', 'edge107', 'firefox104', 'safari16'],
|
|
1636
1693
|
rollupOptions: {
|
|
1637
1694
|
external: ['react', 'react-dom', '@wealthfolio/addon-sdk'],
|
|
1638
1695
|
},
|
|
@@ -1744,6 +1801,7 @@ const HeavyComponent = lazy(() => import('./HeavyComponent'));
|
|
|
1744
1801
|
// vite.config.ts
|
|
1745
1802
|
export default defineConfig({
|
|
1746
1803
|
build: {
|
|
1804
|
+
target: ['chrome107', 'edge107', 'firefox104', 'safari16'],
|
|
1747
1805
|
rollupOptions: {
|
|
1748
1806
|
output: {
|
|
1749
1807
|
manualChunks: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/manifest.ts"],"sourcesContent":["/**\n * Addon manifest and metadata types\n */\n\nimport type { AddonIconName } from './icons';\nimport type { Permission } from './permissions';\n\nexport interface AddonNetworkAccess {\n allowedHosts: string[];\n approvedHosts?: string[];\n}\n\nexport type AddonHostDependencies = Record<string, string>;\n\n/**\n * A durable addon page declared via `contributes.routes`. The host ingests\n * these at boot without executing addon code, so the route exists before (and\n * independently of) the addon's runtime activation — it is the lazy-activation\n * surface.\n */\nexport interface AddonContributedRoute {\n /** Stable route id. MUST equal the route id the addon registers at runtime. */\n id: string;\n /**\n * Optional path relative to the host-owned `/addons/<addon-id>` mount.\n * Omit for the addon root; use a suffix such as `reports/:year` for a\n * nested page. Absolute paths, traversal, query strings, and fragments are\n * rejected by the host.\n */\n path?: string;\n}\n\n/**\n * A placement in a host slot (e.g. `\"sidebar\"`) declared via\n * `contributes.links`, pointing at a route declared in `contributes.routes`\n * of the same addon.\n */\nexport interface AddonContributedLink {\n /** Optional stable link id; defaults to the referenced route id */\n id?: string;\n /** Id of a route declared in this addon's `contributes.routes` */\n route: string;\n /** Human-readable label shown in the host slot */\n label: string;\n /** Optional host-supported icon name (see {@link AddonIconName}) */\n icon?: AddonIconName;\n /** Optional sort order within the slot */\n order?: number;\n}\n\n/**\n * Declarative contributions an addon makes to the host: durable routes plus\n * links placed in host slots, keyed by slot id. Only the `\"sidebar\"` slot is\n * consumed today; unknown slot keys are preserved for future host surfaces.\n */\nexport interface AddonContributes {\n /** Durable addon pages, host-renderable before the addon boots */\n routes?: AddonContributedRoute[];\n /** Slot placements pointing at declared routes, keyed by slot id */\n links?: Record<string, AddonContributedLink[]>;\n}\n\n/**\n * Unified addon manifest structure that handles both development and runtime scenarios\n * This represents both what developers write in their manifest.json and installed addon metadata\n */\nexport interface AddonManifest {\n // Core manifest fields (always present)\n /** Unique addon identifier (lowercase, no spaces, hyphens allowed) */\n id: string;\n /** Human-readable addon name */\n name: string;\n /** Semantic version (e.g., \"1.0.0\") */\n version: string;\n /** Brief description of the addon's functionality */\n description?: string;\n /** Author name or organization */\n author?: string;\n /** Compatible SDK version */\n sdkVersion?: string;\n /** Main entry point file (relative to addon root) */\n main?: string;\n /** Whether the addon is enabled by default */\n enabled?: boolean;\n /** Permission declarations for security review */\n permissions?: Permission[];\n /** Addon homepage or documentation URL */\n homepage?: string;\n /** Support or issues URL */\n repository?: string;\n /** License identifier (e.g., \"MIT\", \"Apache-2.0\") */\n license?: string;\n /** Minimum Wealthfolio version required */\n minWealthfolioVersion?: string;\n /** Keywords for discoverability */\n keywords?: string[];\n /** Addon icon value supported by the consuming host surface */\n icon?: string;\n /** Network hosts this addon may reach through the host broker */\n network?: AddonNetworkAccess;\n /** Host-provided packages this addon imports instead of bundling */\n hostDependencies?: AddonHostDependencies;\n /** Declarative contributions to the host (routes + slot links) */\n contributes?: AddonContributes;\n\n // Runtime fields (only present after installation)\n /** Installation timestamp in ISO format */\n installedAt?: string;\n /** Last update timestamp */\n updatedAt?: string;\n /** Installation source */\n source?: 'local' | 'store' | 'sideload';\n /** File size in bytes */\n size?: number;\n}\n\n/**\n * Type guard to check if a manifest has been installed (has runtime fields)\n */\nexport function isInstalledManifest(\n manifest: AddonManifest,\n): manifest is Required<Pick<AddonManifest, 'main' | 'enabled' | 'installedAt'>> &\n AddonManifest {\n return !!(\n manifest.installedAt &&\n manifest.main !== undefined &&\n manifest.enabled !== undefined\n );\n}\n\n/**\n * Helper type for development manifests (without runtime fields)\n */\nexport type DevelopmentManifest = Omit<\n AddonManifest,\n 'installedAt' | 'updatedAt' | 'source' | 'size'\n>;\n\n/**\n * Helper type for installed manifests (with runtime fields)\n */\nexport type InstalledManifest = Required<\n Pick<AddonManifest, 'main' | 'enabled' | 'installedAt'>\n> &\n AddonManifest;\n\n/**\n * Addon file information\n */\nexport interface AddonFile {\n /** File name */\n name: string;\n /** File content */\n content: string;\n /** Whether this is the main entry point */\n is_main: boolean;\n /** File size in bytes */\n size?: number;\n}\n\n/** A packaged file available through {@link AddonContext.assets}. */\nexport interface AddonAsset {\n /** Logical package path, such as `assets/logo.png`. */\n path: string;\n /** Browser-compatible MIME type inferred by the host. */\n mimeType: string;\n /** File size in bytes. */\n size: number;\n}\n\n/**\n * Extracted addon package\n */\nexport interface ExtractedAddon {\n /** Addon metadata from manifest */\n metadata: AddonManifest;\n /** List of files in the addon package */\n files: AddonFile[];\n /**\n * Packaged static files under `assets/**` and `dist/assets/**` (metadata only).\n * Wealthfolio 3.7 hosts always return an array; optionality preserves source\n * compatibility with values constructed against earlier SDK versions.\n */\n assets?: AddonAsset[];\n}\n\n/**\n * Installed addon information\n */\nexport interface InstalledAddon {\n /** Addon metadata */\n metadata: AddonManifest;\n /** Installation path */\n path?: string;\n /** Whether the addon is currently active */\n active?: boolean;\n}\n\n/**\n * Addon installation result\n */\nexport interface AddonInstallResult {\n /** Whether installation was successful */\n success: boolean;\n /** Error message if installation failed */\n error?: string;\n /** Installed addon metadata */\n addon?: AddonManifest;\n}\n\n/**\n * Addon validation result\n */\nexport interface AddonValidationResult {\n /** Whether the addon is valid */\n valid: boolean;\n /** List of validation errors */\n errors: string[];\n /** List of validation warnings */\n warnings: string[];\n}\n\n/**\n * Addon update information\n */\nexport interface AddonUpdateInfo {\n /** Current installed version */\n currentVersion: string;\n /** Latest available version */\n latestVersion: string;\n /** Whether an update is available */\n updateAvailable: boolean;\n /** Download URL for the update */\n downloadUrl?: string;\n /** Optional SHA-256 digest for the update package bytes */\n sha256?: string;\n /** Release notes for the latest version */\n releaseNotes?: string;\n /** Release date of the latest version */\n releaseDate?: string;\n /** Changelog URL */\n changelogUrl?: string;\n /** Whether this is a critical security update */\n isCritical?: boolean;\n /** Breaking changes in this update */\n hasBreakingChanges?: boolean;\n /** Minimum Wealthfolio version required for this update */\n minWealthfolioVersion?: string;\n}\n\n/**\n * Addon update check result\n */\nexport interface AddonUpdateCheckResult {\n /** Addon ID */\n addonId: string;\n /** Update information */\n updateInfo: AddonUpdateInfo;\n /** Any errors during update check */\n error?: string;\n}\n\n/**\n * Addon store listing\n */\nexport interface AddonStoreListing {\n /** Addon metadata */\n metadata: AddonManifest;\n /** Download URL */\n downloadUrl: string;\n /** Optional SHA-256 digest for the package bytes */\n sha256?: string;\n /** Number of downloads */\n downloads?: number;\n /** Average rating */\n rating?: number;\n /** Number of reviews */\n reviewCount?: number;\n /** Whether it's verified by Wealthfolio team */\n verified?: boolean;\n /** Last update date */\n lastUpdated?: string;\n /** Screenshots or images */\n images?: string[];\n /** Release notes for the latest version */\n releaseNotes?: string;\n /** Changelog URL */\n changelogUrl?: string;\n}\n"],"mappings":";AAuHO,SAAS,oBACd,UAEc;AACd,SAAO,CAAC,EACN,SAAS,eACT,SAAS,SAAS,UAClB,SAAS,YAAY;AAEzB;","names":[]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
HOST_DEPENDENCIES
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MKLA4V4J.js";
|
|
4
4
|
|
|
5
5
|
// package.json
|
|
6
6
|
var package_default = {
|
|
7
7
|
name: "@wealthfolio/addon-sdk",
|
|
8
|
-
version: "3.
|
|
8
|
+
version: "3.7.0",
|
|
9
9
|
type: "module",
|
|
10
10
|
description: "TypeScript SDK for building Wealthfolio addons with enhanced functionality and type safety",
|
|
11
11
|
main: "dist/index.js",
|
|
@@ -190,4 +190,4 @@ export {
|
|
|
190
190
|
generateAddonId,
|
|
191
191
|
isAddonManifest
|
|
192
192
|
};
|
|
193
|
-
//# sourceMappingURL=chunk-
|
|
193
|
+
//# sourceMappingURL=chunk-67V3WWT6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../package.json","../src/version.ts","../src/utils.ts"],"sourcesContent":["{\n \"name\": \"@wealthfolio/addon-sdk\",\n \"version\": \"3.6.2\",\n \"type\": \"module\",\n \"description\": \"TypeScript SDK for building Wealthfolio addons with enhanced functionality and type safety\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/src/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"types\": \"./dist/src/index.d.ts\"\n },\n \"./types\": {\n \"import\": \"./dist/types.js\",\n \"types\": \"./dist/src/types.d.ts\"\n },\n \"./host-api\": {\n \"import\": \"./dist/host-api.js\",\n \"types\": \"./dist/src/host-api.d.ts\"\n },\n \"./host-dependencies\": {\n \"import\": \"./dist/host-dependencies.js\",\n \"types\": \"./dist/src/host-dependencies.d.ts\"\n },\n \"./manifest\": {\n \"import\": \"./dist/manifest.js\",\n \"types\": \"./dist/src/manifest.d.ts\"\n },\n \"./permissions\": {\n \"import\": \"./dist/permissions.js\",\n \"types\": \"./dist/src/permissions.d.ts\"\n },\n \"./query-keys\": {\n \"import\": \"./dist/query-keys.js\",\n \"types\": \"./dist/src/query-keys.d.ts\"\n },\n \"./utils\": {\n \"import\": \"./dist/utils.js\",\n \"types\": \"./dist/src/utils.d.ts\"\n },\n \"./goal-progress\": {\n \"import\": \"./dist/goal-progress.js\",\n \"types\": \"./dist/src/goal-progress.d.ts\"\n }\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"CHANGELOG.md\"\n ],\n \"keywords\": [\n \"wealthfolio\",\n \"addon\",\n \"plugin\",\n \"sdk\",\n \"typescript\",\n \"financial\",\n \"portfolio\"\n ],\n \"author\": \"Wealthfolio Team\",\n \"license\": \"MIT\",\n \"homepage\": \"https://wealthfolio.app/addons\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/wealthfolio/wealthfolio.git\",\n \"directory\": \"packages/addon-sdk\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/wealthfolio/wealthfolio/issues\"\n },\n \"scripts\": {\n \"build\": \"tsup && pnpm run build:types\",\n \"dev\": \"tsup --watch\",\n \"clean\": \"rm -rf dist\",\n \"lint\": \"eslint .\",\n \"lint:fix\": \"eslint . --fix\",\n \"lint:quiet\": \"eslint . --quiet\",\n \"format\": \"prettier --write .\",\n \"format:check\": \"prettier --check .\",\n \"type-check\": \"tsc --noEmit\",\n \"build:types\": \"tsc -p tsconfig.json\",\n \"prepack\": \"npm run build\"\n },\n \"peerDependencies\": {\n \"react\": \"^19.2.4\",\n \"react-dom\": \"^19.2.4\"\n },\n \"devDependencies\": {\n \"@tanstack/react-query\": \"^5.90.20\",\n \"@types/react\": \"^19.2.13\",\n \"@types/react-dom\": \"^19.2.3\",\n \"tsup\": \"^8.5.1\",\n \"typescript\": \"^5.9.3\"\n },\n \"engines\": {\n \"node\": \">=20.0.0\"\n }\n}\n","import packageJson from '../package.json';\n\n/**\n * Current SDK version from package.json\n */\nexport const SDK_VERSION = packageJson.version;\n","/**\n * Utility functions for addon development\n */\n\nimport type { AddonManifest, AddonValidationResult } from './manifest';\nimport { HOST_DEPENDENCIES } from './host-dependencies';\nimport { SDK_VERSION } from './version';\n\n/**\n * Validates an addon manifest\n */\nexport function validateManifest(manifest: AddonManifest): AddonValidationResult {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Required fields\n if (!manifest.id) {\n errors.push('Addon ID is required');\n } else if (!/^[a-z0-9-]+$/.test(manifest.id)) {\n errors.push('Addon ID must contain only lowercase letters, numbers, and hyphens');\n }\n\n if (!manifest.name) {\n errors.push('Addon name is required');\n }\n\n if (!manifest.version) {\n errors.push('Addon version is required');\n } else if (!/^\\d+\\.\\d+\\.\\d+/.test(manifest.version)) {\n warnings.push('Version should follow semantic versioning (e.g., 1.0.0)');\n }\n\n // Optional but recommended fields\n if (!manifest.description) {\n warnings.push('Description is recommended for better discoverability');\n }\n\n if (!manifest.author) {\n warnings.push('Author information is recommended');\n }\n\n if (!manifest.main) {\n warnings.push('Main entry point not specified, defaulting to \"addon.js\"');\n }\n\n if (manifest.hostDependencies) {\n Object.entries(manifest.hostDependencies).forEach(([name, version]) => {\n if (!version) {\n errors.push(`Host dependency ${name}: version range is required`);\n }\n if (!Object.prototype.hasOwnProperty.call(HOST_DEPENDENCIES, name)) {\n warnings.push(\n `Host dependency ${name} is not provided by Wealthfolio and should be bundled`,\n );\n }\n });\n }\n\n // Validate permissions if present\n if (manifest.permissions) {\n manifest.permissions.forEach((permission, index) => {\n if (!permission.category) {\n errors.push(`Permission ${index}: category is required`);\n }\n if (!permission.functions || permission.functions.length === 0) {\n errors.push(`Permission ${index}: at least one function must be specified`);\n }\n if (!permission.purpose) {\n warnings.push(`Permission ${index}: purpose explanation is recommended`);\n }\n });\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n };\n}\n\n/**\n * Checks if an addon version is compatible with the current SDK\n */\nexport function isCompatibleVersion(\n addonSdkVersion?: string,\n currentSdkVersion = SDK_VERSION,\n): boolean {\n if (!addonSdkVersion) return true; // Assume compatible if not specified\n\n const [addonMajor, addonMinor] = addonSdkVersion.split('.').map(Number);\n const [currentMajor, currentMinor] = currentSdkVersion.split('.').map(Number);\n\n // Same major version, and addon minor version <= current minor version\n return addonMajor === currentMajor && addonMinor <= currentMinor;\n}\n\n/**\n * Formats addon size in human-readable format\n */\nexport function formatAddonSize(bytes: number): string {\n const sizes = ['B', 'KB', 'MB', 'GB'];\n if (bytes === 0) return '0 B';\n\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n const size = bytes / Math.pow(1024, i);\n\n return `${size.toFixed(i === 0 ? 0 : 1)} ${sizes[i]}`;\n}\n\n/**\n * Generates a unique addon ID from a name\n */\nexport function generateAddonId(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with single\n .replace(/^-|-$/g, ''); // Remove leading/trailing hyphens\n}\n\n/**\n * Type guard to check if an object is a valid addon manifest\n */\nexport function isAddonManifest(obj: unknown): obj is AddonManifest {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n typeof (obj as Record<string, unknown>).id === 'string' &&\n typeof (obj as Record<string, unknown>).name === 'string' &&\n typeof (obj as Record<string, unknown>).version === 'string'\n );\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/version.ts","../src/utils.ts"],"sourcesContent":["{\n \"name\": \"@wealthfolio/addon-sdk\",\n \"version\": \"3.7.0\",\n \"type\": \"module\",\n \"description\": \"TypeScript SDK for building Wealthfolio addons with enhanced functionality and type safety\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/src/index.d.ts\",\n \"exports\": {\n \".\": {\n \"import\": \"./dist/index.js\",\n \"types\": \"./dist/src/index.d.ts\"\n },\n \"./types\": {\n \"import\": \"./dist/types.js\",\n \"types\": \"./dist/src/types.d.ts\"\n },\n \"./host-api\": {\n \"import\": \"./dist/host-api.js\",\n \"types\": \"./dist/src/host-api.d.ts\"\n },\n \"./host-dependencies\": {\n \"import\": \"./dist/host-dependencies.js\",\n \"types\": \"./dist/src/host-dependencies.d.ts\"\n },\n \"./manifest\": {\n \"import\": \"./dist/manifest.js\",\n \"types\": \"./dist/src/manifest.d.ts\"\n },\n \"./permissions\": {\n \"import\": \"./dist/permissions.js\",\n \"types\": \"./dist/src/permissions.d.ts\"\n },\n \"./query-keys\": {\n \"import\": \"./dist/query-keys.js\",\n \"types\": \"./dist/src/query-keys.d.ts\"\n },\n \"./utils\": {\n \"import\": \"./dist/utils.js\",\n \"types\": \"./dist/src/utils.d.ts\"\n },\n \"./goal-progress\": {\n \"import\": \"./dist/goal-progress.js\",\n \"types\": \"./dist/src/goal-progress.d.ts\"\n }\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"CHANGELOG.md\"\n ],\n \"keywords\": [\n \"wealthfolio\",\n \"addon\",\n \"plugin\",\n \"sdk\",\n \"typescript\",\n \"financial\",\n \"portfolio\"\n ],\n \"author\": \"Wealthfolio Team\",\n \"license\": \"MIT\",\n \"homepage\": \"https://wealthfolio.app/addons\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/wealthfolio/wealthfolio.git\",\n \"directory\": \"packages/addon-sdk\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/wealthfolio/wealthfolio/issues\"\n },\n \"scripts\": {\n \"build\": \"tsup && pnpm run build:types\",\n \"dev\": \"tsup --watch\",\n \"clean\": \"rm -rf dist\",\n \"lint\": \"eslint .\",\n \"lint:fix\": \"eslint . --fix\",\n \"lint:quiet\": \"eslint . --quiet\",\n \"format\": \"prettier --write .\",\n \"format:check\": \"prettier --check .\",\n \"type-check\": \"tsc --noEmit\",\n \"build:types\": \"tsc -p tsconfig.json\",\n \"prepack\": \"npm run build\"\n },\n \"peerDependencies\": {\n \"react\": \"^19.2.4\",\n \"react-dom\": \"^19.2.4\"\n },\n \"devDependencies\": {\n \"@tanstack/react-query\": \"^5.90.20\",\n \"@types/react\": \"^19.2.13\",\n \"@types/react-dom\": \"^19.2.3\",\n \"tsup\": \"^8.5.1\",\n \"typescript\": \"^5.9.3\"\n },\n \"engines\": {\n \"node\": \">=20.0.0\"\n }\n}\n","import packageJson from '../package.json';\n\n/**\n * Current SDK version from package.json\n */\nexport const SDK_VERSION = packageJson.version;\n","/**\n * Utility functions for addon development\n */\n\nimport type { AddonManifest, AddonValidationResult } from './manifest';\nimport { HOST_DEPENDENCIES } from './host-dependencies';\nimport { SDK_VERSION } from './version';\n\n/**\n * Validates an addon manifest\n */\nexport function validateManifest(manifest: AddonManifest): AddonValidationResult {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n // Required fields\n if (!manifest.id) {\n errors.push('Addon ID is required');\n } else if (!/^[a-z0-9-]+$/.test(manifest.id)) {\n errors.push('Addon ID must contain only lowercase letters, numbers, and hyphens');\n }\n\n if (!manifest.name) {\n errors.push('Addon name is required');\n }\n\n if (!manifest.version) {\n errors.push('Addon version is required');\n } else if (!/^\\d+\\.\\d+\\.\\d+/.test(manifest.version)) {\n warnings.push('Version should follow semantic versioning (e.g., 1.0.0)');\n }\n\n // Optional but recommended fields\n if (!manifest.description) {\n warnings.push('Description is recommended for better discoverability');\n }\n\n if (!manifest.author) {\n warnings.push('Author information is recommended');\n }\n\n if (!manifest.main) {\n warnings.push('Main entry point not specified, defaulting to \"addon.js\"');\n }\n\n if (manifest.hostDependencies) {\n Object.entries(manifest.hostDependencies).forEach(([name, version]) => {\n if (!version) {\n errors.push(`Host dependency ${name}: version range is required`);\n }\n if (!Object.prototype.hasOwnProperty.call(HOST_DEPENDENCIES, name)) {\n warnings.push(\n `Host dependency ${name} is not provided by Wealthfolio and should be bundled`,\n );\n }\n });\n }\n\n // Validate permissions if present\n if (manifest.permissions) {\n manifest.permissions.forEach((permission, index) => {\n if (!permission.category) {\n errors.push(`Permission ${index}: category is required`);\n }\n if (!permission.functions || permission.functions.length === 0) {\n errors.push(`Permission ${index}: at least one function must be specified`);\n }\n if (!permission.purpose) {\n warnings.push(`Permission ${index}: purpose explanation is recommended`);\n }\n });\n }\n\n return {\n valid: errors.length === 0,\n errors,\n warnings,\n };\n}\n\n/**\n * Checks if an addon version is compatible with the current SDK\n */\nexport function isCompatibleVersion(\n addonSdkVersion?: string,\n currentSdkVersion = SDK_VERSION,\n): boolean {\n if (!addonSdkVersion) return true; // Assume compatible if not specified\n\n const [addonMajor, addonMinor] = addonSdkVersion.split('.').map(Number);\n const [currentMajor, currentMinor] = currentSdkVersion.split('.').map(Number);\n\n // Same major version, and addon minor version <= current minor version\n return addonMajor === currentMajor && addonMinor <= currentMinor;\n}\n\n/**\n * Formats addon size in human-readable format\n */\nexport function formatAddonSize(bytes: number): string {\n const sizes = ['B', 'KB', 'MB', 'GB'];\n if (bytes === 0) return '0 B';\n\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n const size = bytes / Math.pow(1024, i);\n\n return `${size.toFixed(i === 0 ? 0 : 1)} ${sizes[i]}`;\n}\n\n/**\n * Generates a unique addon ID from a name\n */\nexport function generateAddonId(name: string): string {\n return name\n .toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, '') // Remove special characters\n .replace(/\\s+/g, '-') // Replace spaces with hyphens\n .replace(/-+/g, '-') // Replace multiple hyphens with single\n .replace(/^-|-$/g, ''); // Remove leading/trailing hyphens\n}\n\n/**\n * Type guard to check if an object is a valid addon manifest\n */\nexport function isAddonManifest(obj: unknown): obj is AddonManifest {\n return (\n typeof obj === 'object' &&\n obj !== null &&\n typeof (obj as Record<string, unknown>).id === 'string' &&\n typeof (obj as Record<string, unknown>).name === 'string' &&\n typeof (obj as Record<string, unknown>).version === 'string'\n );\n}\n"],"mappings":";;;;;AAAA;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,MAAQ;AAAA,EACR,aAAe;AAAA,EACf,MAAQ;AAAA,EACR,OAAS;AAAA,EACT,SAAW;AAAA,IACT,KAAK;AAAA,MACH,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,IACA,uBAAuB;AAAA,MACrB,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,IACA,cAAc;AAAA,MACZ,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,MACf,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,IACA,gBAAgB;AAAA,MACd,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,IACA,WAAW;AAAA,MACT,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,IACA,mBAAmB;AAAA,MACjB,QAAU;AAAA,MACV,OAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAU;AAAA,EACV,SAAW;AAAA,EACX,UAAY;AAAA,EACZ,YAAc;AAAA,IACZ,MAAQ;AAAA,IACR,KAAO;AAAA,IACP,WAAa;AAAA,EACf;AAAA,EACA,MAAQ;AAAA,IACN,KAAO;AAAA,EACT;AAAA,EACA,SAAW;AAAA,IACT,OAAS;AAAA,IACT,KAAO;AAAA,IACP,OAAS;AAAA,IACT,MAAQ;AAAA,IACR,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,QAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,eAAe;AAAA,IACf,SAAW;AAAA,EACb;AAAA,EACA,kBAAoB;AAAA,IAClB,OAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,iBAAmB;AAAA,IACjB,yBAAyB;AAAA,IACzB,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,IACpB,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AAAA,EACA,SAAW;AAAA,IACT,MAAQ;AAAA,EACV;AACF;;;AC5FO,IAAM,cAAc,gBAAY;;;ACMhC,SAAS,iBAAiB,UAAgD;AAC/E,QAAM,SAAmB,CAAC;AAC1B,QAAM,WAAqB,CAAC;AAG5B,MAAI,CAAC,SAAS,IAAI;AAChB,WAAO,KAAK,sBAAsB;AAAA,EACpC,WAAW,CAAC,eAAe,KAAK,SAAS,EAAE,GAAG;AAC5C,WAAO,KAAK,oEAAoE;AAAA,EAClF;AAEA,MAAI,CAAC,SAAS,MAAM;AAClB,WAAO,KAAK,wBAAwB;AAAA,EACtC;AAEA,MAAI,CAAC,SAAS,SAAS;AACrB,WAAO,KAAK,2BAA2B;AAAA,EACzC,WAAW,CAAC,iBAAiB,KAAK,SAAS,OAAO,GAAG;AACnD,aAAS,KAAK,yDAAyD;AAAA,EACzE;AAGA,MAAI,CAAC,SAAS,aAAa;AACzB,aAAS,KAAK,uDAAuD;AAAA,EACvE;AAEA,MAAI,CAAC,SAAS,QAAQ;AACpB,aAAS,KAAK,mCAAmC;AAAA,EACnD;AAEA,MAAI,CAAC,SAAS,MAAM;AAClB,aAAS,KAAK,0DAA0D;AAAA,EAC1E;AAEA,MAAI,SAAS,kBAAkB;AAC7B,WAAO,QAAQ,SAAS,gBAAgB,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM;AACrE,UAAI,CAAC,SAAS;AACZ,eAAO,KAAK,mBAAmB,IAAI,6BAA6B;AAAA,MAClE;AACA,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,mBAAmB,IAAI,GAAG;AAClE,iBAAS;AAAA,UACP,mBAAmB,IAAI;AAAA,QACzB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAGA,MAAI,SAAS,aAAa;AACxB,aAAS,YAAY,QAAQ,CAAC,YAAY,UAAU;AAClD,UAAI,CAAC,WAAW,UAAU;AACxB,eAAO,KAAK,cAAc,KAAK,wBAAwB;AAAA,MACzD;AACA,UAAI,CAAC,WAAW,aAAa,WAAW,UAAU,WAAW,GAAG;AAC9D,eAAO,KAAK,cAAc,KAAK,2CAA2C;AAAA,MAC5E;AACA,UAAI,CAAC,WAAW,SAAS;AACvB,iBAAS,KAAK,cAAc,KAAK,sCAAsC;AAAA,MACzE;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,OAAO,OAAO,WAAW;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACF;AAKO,SAAS,oBACd,iBACA,oBAAoB,aACX;AACT,MAAI,CAAC,gBAAiB,QAAO;AAE7B,QAAM,CAAC,YAAY,UAAU,IAAI,gBAAgB,MAAM,GAAG,EAAE,IAAI,MAAM;AACtE,QAAM,CAAC,cAAc,YAAY,IAAI,kBAAkB,MAAM,GAAG,EAAE,IAAI,MAAM;AAG5E,SAAO,eAAe,gBAAgB,cAAc;AACtD;AAKO,SAAS,gBAAgB,OAAuB;AACrD,QAAM,QAAQ,CAAC,KAAK,MAAM,MAAM,IAAI;AACpC,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC;AACrD,QAAM,OAAO,QAAQ,KAAK,IAAI,MAAM,CAAC;AAErC,SAAO,GAAG,KAAK,QAAQ,MAAM,IAAI,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AACrD;AAKO,SAAS,gBAAgB,MAAsB;AACpD,SAAO,KACJ,YAAY,EACZ,QAAQ,iBAAiB,EAAE,EAC3B,QAAQ,QAAQ,GAAG,EACnB,QAAQ,OAAO,GAAG,EAClB,QAAQ,UAAU,EAAE;AACzB;AAKO,SAAS,gBAAgB,KAAoC;AAClE,SACE,OAAO,QAAQ,YACf,QAAQ,QACR,OAAQ,IAAgC,OAAO,YAC/C,OAAQ,IAAgC,SAAS,YACjD,OAAQ,IAAgC,YAAY;AAExD;","names":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// src/host-dependencies.ts
|
|
2
2
|
var HOST_DEPENDENCIES = {
|
|
3
3
|
"@tanstack/react-query": "^5.90.0",
|
|
4
|
-
"@wealthfolio/addon-sdk": "^3.
|
|
5
|
-
"@wealthfolio/ui": "^3.
|
|
4
|
+
"@wealthfolio/addon-sdk": "^3.7.0",
|
|
5
|
+
"@wealthfolio/ui": "^3.7.0",
|
|
6
6
|
"date-fns": "^4.1.0",
|
|
7
7
|
"lucide-react": "^0.561.0",
|
|
8
8
|
react: "^19.2.0",
|
|
@@ -13,4 +13,4 @@ var HOST_DEPENDENCIES = {
|
|
|
13
13
|
export {
|
|
14
14
|
HOST_DEPENDENCIES
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
16
|
+
//# sourceMappingURL=chunk-MKLA4V4J.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/host-dependencies.ts"],"sourcesContent":["export const HOST_DEPENDENCIES = {\n '@tanstack/react-query': '^5.90.0',\n '@wealthfolio/addon-sdk': '^3.
|
|
1
|
+
{"version":3,"sources":["../src/host-dependencies.ts"],"sourcesContent":["export const HOST_DEPENDENCIES = {\n '@tanstack/react-query': '^5.90.0',\n '@wealthfolio/addon-sdk': '^3.7.0',\n '@wealthfolio/ui': '^3.7.0',\n 'date-fns': '^4.1.0',\n 'lucide-react': '^0.561.0',\n react: '^19.2.0',\n 'react-dom': '^19.2.0',\n recharts: '^3.7.0',\n} as const;\n"],"mappings":";AAAO,IAAM,oBAAoB;AAAA,EAC/B,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,mBAAmB;AAAA,EACnB,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,OAAO;AAAA,EACP,aAAa;AAAA,EACb,UAAU;AACZ;","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -5,16 +5,16 @@ import {
|
|
|
5
5
|
isAddonManifest,
|
|
6
6
|
isCompatibleVersion,
|
|
7
7
|
validateManifest
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-67V3WWT6.js";
|
|
9
9
|
import {
|
|
10
10
|
calculateGoalProgress
|
|
11
11
|
} from "./chunk-465MB7HT.js";
|
|
12
12
|
import {
|
|
13
13
|
HOST_DEPENDENCIES
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-MKLA4V4J.js";
|
|
15
15
|
import {
|
|
16
16
|
isInstalledManifest
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-5727GMVD.js";
|
|
18
18
|
import {
|
|
19
19
|
BASELINE_PERMISSION_CATEGORIES,
|
|
20
20
|
PERMISSION_CATEGORIES,
|
|
@@ -148,7 +148,7 @@ export {
|
|
|
148
148
|
* TypeScript SDK for building Wealthfolio addons with enhanced functionality,
|
|
149
149
|
* type safety, and comprehensive permission management.
|
|
150
150
|
*
|
|
151
|
-
* @version
|
|
151
|
+
* @version 3.7.0
|
|
152
152
|
* @author Wealthfolio Team
|
|
153
153
|
* @license MIT
|
|
154
154
|
*/
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/icons.ts","../src/index.ts"],"sourcesContent":["/**\n * Icon names an addon may use for its sidebar item.\n *\n * The sidebar is host chrome, so the host draws the icon from this fixed set of\n * duotone Phosphor icons — an addon can't ship its own sidebar icon across the\n * sandbox boundary. (Inside your own route/page you can render any icon you\n * like.) Matching at runtime is case- and separator-insensitive (`\"ChartLine\"`,\n * `\"chart-line\"`, and `\"chartline\"` all resolve the same), but this canonical\n * kebab-case list is what the type checker accepts. Unknown names render a\n * neutral fallback icon rather than erroring.\n */\nexport const ADDON_ICON_NAMES = [\n // Money\n 'wallet',\n 'coins',\n 'dollar',\n 'dollar-circle',\n 'bank',\n 'credit-card',\n 'piggy-bank',\n 'receipt',\n 'invoice',\n 'hand-coins',\n 'hand-deposit',\n 'vault',\n 'chart-line-up',\n 'chart-line',\n 'trend-up',\n 'trend-down',\n 'percent',\n 'scales',\n 'calculator',\n // Charts & analytics\n 'chart-bar',\n 'chart-pie',\n 'chart-pie-slice',\n 'chart-donut',\n 'gauge',\n 'target',\n 'presentation',\n // Assets\n 'house',\n 'buildings',\n 'car',\n 'airplane',\n 'bicycle',\n 'diamond',\n 'bitcoin',\n 'storefront',\n 'briefcase',\n 'package',\n 'cube',\n // General\n 'star',\n 'heart',\n 'gift',\n 'trophy',\n 'medal',\n 'lightning',\n 'sparkle',\n 'bell',\n 'tag',\n 'bookmark',\n 'flag',\n 'fire',\n 'rocket',\n 'lightbulb',\n 'graduation-cap',\n 'barbell',\n 'fork-knife',\n 'coffee',\n 'wine',\n 'shopping-cart',\n 'shopping-bag',\n 'basket',\n // Time & place\n 'calendar',\n 'calendar-dots',\n 'calendar-check',\n 'clock',\n 'hourglass',\n 'globe',\n 'map-pin',\n 'compass',\n // Productivity\n 'folder',\n 'files',\n 'notebook',\n 'clipboard-text',\n 'list-checks',\n 'sliders',\n 'wrench',\n 'toolbox',\n 'puzzle-piece',\n 'plugs-connected',\n 'app-window',\n 'squares-four',\n 'stack',\n 'kanban',\n] as const;\n\n/** Union of every valid addon sidebar icon name. */\nexport type AddonIconName = (typeof ADDON_ICON_NAMES)[number];\n","/**\n * @wealthfolio/addon-sdk\n *\n * TypeScript SDK for building Wealthfolio addons with enhanced functionality,\n * type safety, and comprehensive permission management.\n *\n * @version
|
|
1
|
+
{"version":3,"sources":["../src/icons.ts","../src/index.ts"],"sourcesContent":["/**\n * Icon names an addon may use for its sidebar item.\n *\n * The sidebar is host chrome, so the host draws the icon from this fixed set of\n * duotone Phosphor icons — an addon can't ship its own sidebar icon across the\n * sandbox boundary. (Inside your own route/page you can render any icon you\n * like.) Matching at runtime is case- and separator-insensitive (`\"ChartLine\"`,\n * `\"chart-line\"`, and `\"chartline\"` all resolve the same), but this canonical\n * kebab-case list is what the type checker accepts. Unknown names render a\n * neutral fallback icon rather than erroring.\n */\nexport const ADDON_ICON_NAMES = [\n // Money\n 'wallet',\n 'coins',\n 'dollar',\n 'dollar-circle',\n 'bank',\n 'credit-card',\n 'piggy-bank',\n 'receipt',\n 'invoice',\n 'hand-coins',\n 'hand-deposit',\n 'vault',\n 'chart-line-up',\n 'chart-line',\n 'trend-up',\n 'trend-down',\n 'percent',\n 'scales',\n 'calculator',\n // Charts & analytics\n 'chart-bar',\n 'chart-pie',\n 'chart-pie-slice',\n 'chart-donut',\n 'gauge',\n 'target',\n 'presentation',\n // Assets\n 'house',\n 'buildings',\n 'car',\n 'airplane',\n 'bicycle',\n 'diamond',\n 'bitcoin',\n 'storefront',\n 'briefcase',\n 'package',\n 'cube',\n // General\n 'star',\n 'heart',\n 'gift',\n 'trophy',\n 'medal',\n 'lightning',\n 'sparkle',\n 'bell',\n 'tag',\n 'bookmark',\n 'flag',\n 'fire',\n 'rocket',\n 'lightbulb',\n 'graduation-cap',\n 'barbell',\n 'fork-knife',\n 'coffee',\n 'wine',\n 'shopping-cart',\n 'shopping-bag',\n 'basket',\n // Time & place\n 'calendar',\n 'calendar-dots',\n 'calendar-check',\n 'clock',\n 'hourglass',\n 'globe',\n 'map-pin',\n 'compass',\n // Productivity\n 'folder',\n 'files',\n 'notebook',\n 'clipboard-text',\n 'list-checks',\n 'sliders',\n 'wrench',\n 'toolbox',\n 'puzzle-piece',\n 'plugs-connected',\n 'app-window',\n 'squares-four',\n 'stack',\n 'kanban',\n] as const;\n\n/** Union of every valid addon sidebar icon name. */\nexport type AddonIconName = (typeof ADDON_ICON_NAMES)[number];\n","/**\n * @wealthfolio/addon-sdk\n *\n * TypeScript SDK for building Wealthfolio addons with enhanced functionality,\n * type safety, and comprehensive permission management.\n *\n * @version 3.7.0\n * @author Wealthfolio Team\n * @license MIT\n */\n\n// Core types\nexport type {\n AddonContext,\n AddonAssets,\n AddonEnableFunction,\n AddonRouteLocation,\n AddonRouteRenderContext,\n AddonRouteRenderer,\n EventCallback,\n RouteConfig,\n RouterManager,\n SidebarItemConfig,\n SidebarItemHandle,\n SidebarManager,\n UnlistenFn,\n} from './types';\n\n// Host API interface\nexport type {\n ActivitySearchFilters,\n ActivitySort,\n HostAPI,\n NetworkAuth,\n NetworkAPI,\n NetworkRequest,\n NetworkResponse,\n SnapshotsAPI,\n StorageAPI,\n ToastAPI,\n DividendEvent,\n FetchDividendsOptions,\n} from './host-api';\n\n// Query Client and Keys exports\nexport type { QueryClient } from '@tanstack/react-query';\nexport { QueryKeys } from './query-keys';\n\n// Comprehensive data types\nexport type * from './data-types';\n\n// Manifest and metadata types\nexport type {\n AddonFile,\n AddonAsset,\n AddonContributedLink,\n AddonContributedRoute,\n AddonContributes,\n AddonHostDependencies,\n AddonInstallResult,\n AddonManifest,\n AddonStoreListing,\n AddonUpdateCheckResult,\n AddonUpdateInfo,\n AddonValidationResult,\n DevelopmentManifest,\n ExtractedAddon,\n InstalledAddon,\n InstalledManifest,\n} from './manifest';\n\nexport { isInstalledManifest } from './manifest';\n\n// Permission system\nexport type {\n FunctionPermission,\n Permission,\n PermissionCategory,\n RiskLevel,\n} from './permissions';\n\nexport {\n BASELINE_PERMISSION_CATEGORIES,\n getFunctionRiskLevel,\n getPermissionCategoriesByRisk,\n getPermissionCategory,\n isBaselineCategory,\n isPermissionRequired,\n PERMISSION_CATEGORIES,\n} from './permissions';\n\n// Utilities\nexport {\n formatAddonSize,\n generateAddonId,\n isAddonManifest,\n isCompatibleVersion,\n validateManifest,\n} from './utils';\n\n// Goal progress calculation\nexport { calculateGoalProgress } from './goal-progress';\n\n/**\n * React version provided by the Wealthfolio add-on sandbox for host-externalized\n * add-ons.\n */\nexport const ReactVersion = '19.2.4';\n\nexport { HOST_DEPENDENCIES } from './host-dependencies';\n\n// Sidebar icon names (see SidebarItemConfig.icon)\nexport { ADDON_ICON_NAMES } from './icons';\nexport type { AddonIconName } from './icons';\n\n/**\n * Addons receive their context as a parameter to the enable() function.\n * Each addon gets its own isolated iframe context with scoped host APIs.\n *\n * Example:\n * export default function enable(ctx: AddonContext) {\n * // Use ctx.api.secrets.set/get/delete for secure storage\n * // Use ctx.sidebar.addItem() to add navigation\n * // Use ctx.router.add() with a render callback to register routes\n * }\n */\n\n// Version\nexport { SDK_VERSION } from './version';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,IAAM,mBAAmB;AAAA;AAAA,EAE9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACQO,IAAM,eAAe;","names":[]}
|
package/dist/manifest.js
CHANGED
package/dist/src/data-types.d.ts
CHANGED
|
@@ -628,7 +628,7 @@ export interface AccountValuation {
|
|
|
628
628
|
netContributionBase: number;
|
|
629
629
|
externalInflowBase: number;
|
|
630
630
|
externalOutflowBase: number;
|
|
631
|
-
externalFlowSource: 'NO_FLOW' | 'UNKNOWN' | 'CASH_AMOUNT' | 'QUOTE_DERIVED_MARKET_VALUE' | 'COST_BASIS_FALLBACK' | 'REMOVED_LOT_BASIS_FALLBACK' | 'LEGACY_ACTIVITY_AMOUNT_FALLBACK' | 'UNKNOWN_BOUNDARY_TRANSFER' | 'ACTIVITY_DERIVED' | 'STORED_GROSS' | 'NET_CONTRIBUTION_FALLBACK' | 'MIXED';
|
|
631
|
+
externalFlowSource: 'NO_FLOW' | 'UNKNOWN' | 'CASH_AMOUNT' | 'QUOTE_DERIVED_MARKET_VALUE' | 'COST_BASIS_FALLBACK' | 'REMOVED_LOT_BASIS_FALLBACK' | 'LEGACY_ACTIVITY_AMOUNT_FALLBACK' | 'UNKNOWN_BOUNDARY_TRANSFER' | 'UNPRICED_HOLDINGS_TRANSITION' | 'ACTIVITY_DERIVED' | 'STORED_GROSS' | 'NET_CONTRIBUTION_FALLBACK' | 'MIXED';
|
|
632
632
|
performanceEligibleValueBase: number;
|
|
633
633
|
valueStatus: ValuationStatus;
|
|
634
634
|
basisStatus: BasisStatus;
|
package/dist/src/host-api.d.ts
CHANGED
|
@@ -605,8 +605,10 @@ export interface ToastAPI {
|
|
|
605
605
|
*/
|
|
606
606
|
export interface QueryAPI {
|
|
607
607
|
/**
|
|
608
|
-
* Get the
|
|
609
|
-
*
|
|
608
|
+
* Get the QueryClient scoped to this addon sandbox. Its invalidate/refetch
|
|
609
|
+
* operations are mirrored to the host, but its cache is not shared with the
|
|
610
|
+
* main application or other addons.
|
|
611
|
+
* @returns The addon-scoped QueryClient instance
|
|
610
612
|
*/
|
|
611
613
|
getClient(): unknown;
|
|
612
614
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const HOST_DEPENDENCIES: {
|
|
2
2
|
readonly '@tanstack/react-query': "^5.90.0";
|
|
3
|
-
readonly '@wealthfolio/addon-sdk': "^3.
|
|
4
|
-
readonly '@wealthfolio/ui': "^3.
|
|
3
|
+
readonly '@wealthfolio/addon-sdk': "^3.7.0";
|
|
4
|
+
readonly '@wealthfolio/ui': "^3.7.0";
|
|
5
5
|
readonly 'date-fns': "^4.1.0";
|
|
6
6
|
readonly 'lucide-react': "^0.561.0";
|
|
7
7
|
readonly react: "^19.2.0";
|
package/dist/src/index.d.ts
CHANGED
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
* TypeScript SDK for building Wealthfolio addons with enhanced functionality,
|
|
5
5
|
* type safety, and comprehensive permission management.
|
|
6
6
|
*
|
|
7
|
-
* @version
|
|
7
|
+
* @version 3.7.0
|
|
8
8
|
* @author Wealthfolio Team
|
|
9
9
|
* @license MIT
|
|
10
10
|
*/
|
|
11
|
-
export type { AddonContext, AddonEnableFunction, AddonRouteLocation, AddonRouteRenderContext, AddonRouteRenderer, EventCallback, RouteConfig, RouterManager, SidebarItemConfig, SidebarItemHandle, SidebarManager, UnlistenFn, } from './types';
|
|
11
|
+
export type { AddonContext, AddonAssets, AddonEnableFunction, AddonRouteLocation, AddonRouteRenderContext, AddonRouteRenderer, EventCallback, RouteConfig, RouterManager, SidebarItemConfig, SidebarItemHandle, SidebarManager, UnlistenFn, } from './types';
|
|
12
12
|
export type { ActivitySearchFilters, ActivitySort, HostAPI, NetworkAuth, NetworkAPI, NetworkRequest, NetworkResponse, SnapshotsAPI, StorageAPI, ToastAPI, DividendEvent, FetchDividendsOptions, } from './host-api';
|
|
13
13
|
export type { QueryClient } from '@tanstack/react-query';
|
|
14
14
|
export { QueryKeys } from './query-keys';
|
|
15
15
|
export type * from './data-types';
|
|
16
|
-
export type { AddonFile, AddonContributedLink, AddonContributedRoute, AddonContributes, AddonHostDependencies, AddonInstallResult, AddonManifest, AddonStoreListing, AddonUpdateCheckResult, AddonUpdateInfo, AddonValidationResult, DevelopmentManifest, ExtractedAddon, InstalledAddon, InstalledManifest, } from './manifest';
|
|
16
|
+
export type { AddonFile, AddonAsset, AddonContributedLink, AddonContributedRoute, AddonContributes, AddonHostDependencies, AddonInstallResult, AddonManifest, AddonStoreListing, AddonUpdateCheckResult, AddonUpdateInfo, AddonValidationResult, DevelopmentManifest, ExtractedAddon, InstalledAddon, InstalledManifest, } from './manifest';
|
|
17
17
|
export { isInstalledManifest } from './manifest';
|
|
18
18
|
export type { FunctionPermission, Permission, PermissionCategory, RiskLevel, } from './permissions';
|
|
19
19
|
export { BASELINE_PERMISSION_CATEGORIES, getFunctionRiskLevel, getPermissionCategoriesByRisk, getPermissionCategory, isBaselineCategory, isPermissionRequired, PERMISSION_CATEGORIES, } from './permissions';
|
package/dist/src/manifest.d.ts
CHANGED
|
@@ -86,7 +86,7 @@ export interface AddonManifest {
|
|
|
86
86
|
minWealthfolioVersion?: string;
|
|
87
87
|
/** Keywords for discoverability */
|
|
88
88
|
keywords?: string[];
|
|
89
|
-
/** Addon icon
|
|
89
|
+
/** Addon icon value supported by the consuming host surface */
|
|
90
90
|
icon?: string;
|
|
91
91
|
/** Network hosts this addon may reach through the host broker */
|
|
92
92
|
network?: AddonNetworkAccess;
|
|
@@ -128,6 +128,15 @@ export interface AddonFile {
|
|
|
128
128
|
/** File size in bytes */
|
|
129
129
|
size?: number;
|
|
130
130
|
}
|
|
131
|
+
/** A packaged file available through {@link AddonContext.assets}. */
|
|
132
|
+
export interface AddonAsset {
|
|
133
|
+
/** Logical package path, such as `assets/logo.png`. */
|
|
134
|
+
path: string;
|
|
135
|
+
/** Browser-compatible MIME type inferred by the host. */
|
|
136
|
+
mimeType: string;
|
|
137
|
+
/** File size in bytes. */
|
|
138
|
+
size: number;
|
|
139
|
+
}
|
|
131
140
|
/**
|
|
132
141
|
* Extracted addon package
|
|
133
142
|
*/
|
|
@@ -136,6 +145,12 @@ export interface ExtractedAddon {
|
|
|
136
145
|
metadata: AddonManifest;
|
|
137
146
|
/** List of files in the addon package */
|
|
138
147
|
files: AddonFile[];
|
|
148
|
+
/**
|
|
149
|
+
* Packaged static files under `assets/**` and `dist/assets/**` (metadata only).
|
|
150
|
+
* Wealthfolio 3.7 hosts always return an array; optionality preserves source
|
|
151
|
+
* compatibility with values constructed against earlier SDK versions.
|
|
152
|
+
*/
|
|
153
|
+
assets?: AddonAsset[];
|
|
139
154
|
}
|
|
140
155
|
/**
|
|
141
156
|
* Installed addon information
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ComponentType } from 'react';
|
|
2
2
|
import type { HostAPI } from './host-api';
|
|
3
3
|
import type { AddonIconName } from './icons';
|
|
4
|
+
import type { AddonAsset } from './manifest';
|
|
4
5
|
/**
|
|
5
6
|
* Core types for addon development
|
|
6
7
|
*/
|
|
@@ -106,6 +107,17 @@ export interface RouterManager {
|
|
|
106
107
|
*/
|
|
107
108
|
add(route: RouteConfig): void;
|
|
108
109
|
}
|
|
110
|
+
/** Access to files packaged below `assets/` or `dist/assets/`. */
|
|
111
|
+
export interface AddonAssets {
|
|
112
|
+
/** List the packaged assets registered for this add-on. */
|
|
113
|
+
list(): readonly AddonAsset[];
|
|
114
|
+
/** Check whether a logical package path is registered. */
|
|
115
|
+
has(path: string): boolean;
|
|
116
|
+
/** Load an asset as a Blob. The host caches it for the sandbox lifetime. */
|
|
117
|
+
getBlob(path: string): Promise<Blob>;
|
|
118
|
+
/** Return a sandbox-local Blob URL, revoked automatically when the add-on stops. */
|
|
119
|
+
getUrl(path: string): Promise<string>;
|
|
120
|
+
}
|
|
109
121
|
/**
|
|
110
122
|
* Event callback type for Tauri events
|
|
111
123
|
*/
|
|
@@ -129,6 +141,8 @@ export interface AddonContext {
|
|
|
129
141
|
sidebar: SidebarManager;
|
|
130
142
|
/** Router management */
|
|
131
143
|
router: RouterManager;
|
|
144
|
+
/** Packaged, add-on-private assets. */
|
|
145
|
+
assets: AddonAssets;
|
|
132
146
|
/** Register a callback for addon cleanup */
|
|
133
147
|
onDisable(callback: () => void): void;
|
|
134
148
|
/** Access to host application APIs */
|
|
@@ -138,5 +152,7 @@ export interface AddonContext {
|
|
|
138
152
|
* Addon enable function signature
|
|
139
153
|
*/
|
|
140
154
|
export type AddonEnableFunction = (context: AddonContext) => void | {
|
|
141
|
-
disable?: () => void
|
|
142
|
-
}
|
|
155
|
+
disable?: () => void | Promise<void>;
|
|
156
|
+
} | Promise<void | {
|
|
157
|
+
disable?: () => void | Promise<void>;
|
|
158
|
+
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/global.d.ts","../../../node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/index.d.ts","../../../node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/jsx-runtime.d.ts","../src/data-types.ts","../src/goal-progress.ts","../src/icons.ts","../src/types.ts","../src/host-api.ts","../src/host-dependencies.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/subscribable.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/focusmanager.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/removable.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/hydration-blevg2lp.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/infinitequeryobserver.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/notifymanager.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/onlinemanager.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/queriesobserver.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/timeoutmanager.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/streamedquery.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/index.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/types.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/usequeries.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/queryoptions.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/usequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/usesuspensequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/usesuspenseinfinitequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/usesuspensequeries.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/useprefetchquery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/useprefetchinfinitequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/infinitequeryoptions.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/queryclientprovider.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/queryerrorresetboundary.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/hydrationboundary.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/useisfetching.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/usemutationstate.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/usemutation.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/mutationoptions.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/useinfinitequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/isrestoringprovider.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.4/node_modules/@tanstack/react-query/build/modern/index.d.ts","../src/query-keys.ts","../src/permissions.ts","../src/manifest.ts","../package.json","../src/version.ts","../src/utils.ts","../src/index.ts","../../../node_modules/.pnpm/@types+react-dom@19.2.3_@types+react@19.2.14/node_modules/@types/react-dom/index.d.ts"],"fileIdsList":[[70],[70,72],[70,71,72,73,74,75,76,77,78,79],[70,72,73],[62,80],[62,63,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99],[80,81],[62],[62,63],[80],[80,81,90],[80,81,83],[60,61],[63],[63,64],[63,64,67],[63,64,65,66,67,68,69,100,101,102,103,105,106],[63,66,102],[62,63,66,68],[63,69,103,105],[63,104]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"d786a55234996ee5edaa372f83e479df449feb09e66daca870d17978b71dba3b","signature":"c37178cc151048cce739a59a5f246e385e91a82a658836aa73b56e496e8efb36"},{"version":"0f1c0d51e20ed91dfc283d9fb4d586632f8b27b90ea8b2b51a5403c7c5b52425","signature":"7457ae02c40c6b596825685b3646352ea7087a470b6abcca20a1e417876c8c52"},{"version":"f81d0c3ad3f7fceef2b0a66d4f70aa49e3883488dbf35a116acaa1ed79fd6c41","signature":"76020fd71b9484f11109cff6098cbfbecead997015aa9d18f40caab6ec05968e"},{"version":"bffcfb46facfd773eff52552d0e43c67e963cc2de019a6b69e27dbb39e9092ba","signature":"420f0123b2151de0a6173b4af35377eadbb8e01241eaff8f1ee54de75dd63cfb"},{"version":"7c64dd9aab5bec9b74ff8beba7364df4a4825c58ed58c4fb8039e15bb3a8c36b","signature":"335ac6deb64043bcaec5f4cdb0f05e0193cf4a85b73c349f1e11b6c5a1470568"},{"version":"6c128c25c27ac8640f27c308d2dfd848f849405018c0dce6ef0f9ad8ca6329cd","signature":"4b8a5b5b85999b749c4635138254ab118d08029953d092b7547fc109f51c2033"},{"version":"50cf7a23fc93928995caec8d7956206990f82113beeb6b3242dae8124edc3ca0","impliedFormat":99},{"version":"352031ac2e53031b69a09355e09ad7d95361edf32cc827cfe2417d80247a5a50","impliedFormat":99},{"version":"9971931daaf18158fc38266e838d56eb5d9d1f13360b1181bb4735a05f534c03","impliedFormat":99},{"version":"06d635a90365afe107c7e2daaa9851f5d3f062d78ebe4524b1b23b122469a1e2","impliedFormat":99},{"version":"aa103fbc4677b71d3deda20d37088cc2f39c3db8c2566ddf516b56ce7532d00a","impliedFormat":99},{"version":"0c5b705d31420477189618154d1b6a9bb62a34fa6055f56ade1a316f6adb6b3a","impliedFormat":99},{"version":"853b8bdb5da8c8e5d31e4d715a8057d8e96059d6774b13545c3616ed216b890c","impliedFormat":99},{"version":"430f4fa4e99e5e0a7ca2bbdde84abc8536bdfde4fd0de26009db508b8f571bb5","impliedFormat":99},{"version":"fe3c64bf61fcfec9b9861725c6d92de03f33748a01d982760ccfa798d777cf9d","impliedFormat":99},{"version":"1120a39f36c968298e2ca1d8cb1405389f9696f6b49e13b335626a94c16930bb","impliedFormat":99},{"version":"0a049adb920f3b42e1933c037052bcbc5e78b4704ad080bf078353c7f8ed6225","impliedFormat":99},{"version":"af9753433dec6dc41a2d3141804113a4d34f09fb19eb9eea063bd8800aa28db6","impliedFormat":99},{"version":"832f2fd6cf5eeaac22e2bdb0e3d7e2498cd8dd4058b853cd6b42033f126680ee","impliedFormat":99},{"version":"22fe66950a6308b2c6a0e11ed74930e90ba9d8a5fd2910666565007678875c13","impliedFormat":99},{"version":"084c09a35a9611e1777c02343c11ab8b1be48eb4895bbe6da90222979940b4a6","impliedFormat":99},{"version":"4b3049a2c849f0217ff4def308637931661461c329e4cf36aeb31db34c4c0c64","impliedFormat":99},{"version":"6245aa515481727f994d1cf7adfc71e36b5fc48216a92d7e932274cee3268000","impliedFormat":99},{"version":"3550708c55e4b79c5c13870f994461bcec97208e1d6758395a178913bbf05de3","impliedFormat":99},{"version":"660ce583eaa09bb39eef5ad7af9d1b5f027a9d1fbf9f76bf5b9dc9ef1be2830e","impliedFormat":99},{"version":"b7d9ca4e3248f643fa86ff11872623fdc8ed2c6009836bec0e38b163b6faed0c","impliedFormat":99},{"version":"904a01fef87360fa2fd0c2e934af92995b669565fe0bfb546ed0ff23769999cb","impliedFormat":99},{"version":"d4f7a7a5f66b9bc6fbfd53fa08dcf8007ff752064df816da05edfa35abd2c97c","impliedFormat":99},{"version":"1f38ecf63dead74c85180bf18376dc6bc152522ef3aedf7b588cadbbd5877506","impliedFormat":99},{"version":"82fb33c00b1300c19591105fc25ccf78acba220f58d162b120fe3f4292a5605f","impliedFormat":99},{"version":"facde2bec0f59cf92f4635ece51b2c3fa2d0a3bbb67458d24af61e7e6b8f003c","impliedFormat":99},{"version":"4669194e4ca5f7c160833bbb198f25681e629418a6326aba08cf0891821bfe8f","impliedFormat":99},{"version":"db185b403e30e91c5b90f3f2cfa062832d764c9d7df3ad7f5db7e17596344fe8","impliedFormat":99},{"version":"669b62a7169354658d4ae1e043ad8203728655492a8f70a940a11ca5ed4d5029","impliedFormat":99},{"version":"a95cd11c5c8bc03eab4011f8e339a48f9a87293e90c0bf3e9003d7a6f833f557","impliedFormat":99},{"version":"e9bc0db0144701fab1e98c4d595a293c7c840d209b389144142f0adbc36b5ec2","impliedFormat":99},{"version":"9d884b885c4b2d89286685406b45911dcaab03e08e948850e3e41e29af69561c","impliedFormat":99},{"version":"e00c380ed030cef03661334abb9fdbd174664e22f7597e64e92e85e22fbef6cf","signature":"ad1d85ddc03beaf6534fb0fcf5007e7edb4220b72927b2b7ff68f83ed2d891b3"},{"version":"4ca2d05cd96f5f82932fdc002eecce27f17215669beb92f6455f72a2a70a0b07","signature":"7f93d8a38daffd3069d48ff89283ab01cda60a8367e6289aa301ab850c4b8ec4"},{"version":"1d839dd864118b7bd4689cbe83829c7f1cc057380b7fb7ecb35334122244c224","signature":"835732854fae7968e218fa6fbf802c2d0ba03af85567fac9c6a395c0a5e6f249"},"292de5461adf58ac1bcd7da4aea86f8e1f7b36355cf2960316be98811b98ffa7",{"version":"0be1bb5ea4d9ea191a1318786bb0fae4fcb29632268479b5285b20930bb60355","signature":"eb63b664e3561a8888fbd9ec8b81bb6d3063e7be5cf2d2a155d0654273a6d4d7"},{"version":"11e2bd7e632e7373cf15f60e3341786598e0d32d97f74eec4e48716313a5afa7","signature":"a92f0554e1f858fc1d3671d255bd3b972767362047272f866c84767ed9423129"},{"version":"a4c59aef0f6a756cfc3f9df481cda5fe44dde6188d871988cd23939c0aca24fc","signature":"0e5dddba0f0f7afd2c4c35af2ede20472dab95826b5710e5e0e6f873506f27f7"},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1}],"root":[[64,69],[101,107]],"options":{"allowImportingTsExtensions":true,"allowSyntheticDefaultImports":true,"alwaysStrict":true,"composite":true,"declaration":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[71,1],[73,2],[80,3],[74,4],[76,1],[77,4],[79,4],[93,5],[100,6],[90,7],[99,8],[97,7],[91,5],[92,9],[83,7],[81,10],[98,11],[94,10],[96,7],[95,10],[89,10],[88,7],[82,7],[84,12],[86,7],[87,7],[85,7],[108,8],[62,13],[63,8],[104,14],[64,14],[65,15],[68,16],[69,14],[66,14],[107,17],[103,18],[102,14],[101,14],[67,19],[106,20],[105,21]],"latestChangedDtsFile":"./src/index.d.ts","version":"5.9.3"}
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/global.d.ts","../../../node_modules/.pnpm/csstype@3.2.3/node_modules/csstype/index.d.ts","../../../node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/index.d.ts","../../../node_modules/.pnpm/@types+react@19.2.14/node_modules/@types/react/jsx-runtime.d.ts","../src/data-types.ts","../src/goal-progress.ts","../src/icons.ts","../src/permissions.ts","../src/manifest.ts","../src/types.ts","../src/host-api.ts","../src/host-dependencies.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/subscribable.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/focusmanager.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/removable.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/hydration-blevg2lp.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/infinitequeryobserver.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/notifymanager.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/onlinemanager.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/queriesobserver.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/timeoutmanager.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/streamedquery.d.ts","../../../node_modules/.pnpm/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/index.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/types.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/usequeries.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/queryoptions.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/usequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/usesuspensequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/usesuspenseinfinitequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/usesuspensequeries.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/useprefetchquery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/useprefetchinfinitequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/infinitequeryoptions.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/queryclientprovider.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/queryerrorresetboundary.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/hydrationboundary.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/useisfetching.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/usemutationstate.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/usemutation.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/mutationoptions.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/useinfinitequery.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/isrestoringprovider.d.ts","../../../node_modules/.pnpm/@tanstack+react-query@5.90.21_react@19.2.8/node_modules/@tanstack/react-query/build/modern/index.d.ts","../src/query-keys.ts","../package.json","../src/version.ts","../src/utils.ts","../src/index.ts","../../../node_modules/.pnpm/@types+react-dom@19.2.3_@types+react@19.2.14/node_modules/@types/react-dom/index.d.ts"],"fileIdsList":[[72],[72,74],[72,73,74,75,76,77,78,79,80,81],[72,74,75],[62,82],[62,63,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101],[82,83],[62],[62,63],[82],[82,83,92],[82,83,85],[60,61],[63],[63,64],[63,64,69],[63,64,65,66,67,68,69,70,71,102,103,105,106],[63,66,67],[62,63,66,68,70],[63,68,71,105],[63,104]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"7e29f41b158de217f94cb9676bf9cbd0cd9b5a46e1985141ed36e075c52bf6ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac51dd7d31333793807a6abaa5ae168512b6131bd41d9c5b98477fc3b7800f9f","impliedFormat":1},{"version":"dc0a7f107690ee5cd8afc8dbf05c4df78085471ce16bdd9881642ec738bc81fe","impliedFormat":1},{"version":"42c169fb8c2d42f4f668c624a9a11e719d5d07dacbebb63cbcf7ef365b0a75b3","impliedFormat":1},{"version":"9eb2ab07e05aa9bfd2bb8784d831fe451b57240a7795965616f9b5942bf6c5da","signature":"a9f7770f8b7bd188f8f71b1f9d33b278c18d2c43e525f29ea2e966a0602226f8"},{"version":"0f1c0d51e20ed91dfc283d9fb4d586632f8b27b90ea8b2b51a5403c7c5b52425","signature":"7457ae02c40c6b596825685b3646352ea7087a470b6abcca20a1e417876c8c52"},{"version":"f81d0c3ad3f7fceef2b0a66d4f70aa49e3883488dbf35a116acaa1ed79fd6c41","signature":"76020fd71b9484f11109cff6098cbfbecead997015aa9d18f40caab6ec05968e"},{"version":"4ca2d05cd96f5f82932fdc002eecce27f17215669beb92f6455f72a2a70a0b07","signature":"7f93d8a38daffd3069d48ff89283ab01cda60a8367e6289aa301ab850c4b8ec4"},{"version":"86a7bd3bf3a47843c31e8ece3dd21fd07673093ba8f144d3bca3ef2e1d4f1833","signature":"bc1a80891bebde065d583c383c671c8cb55a7a3870b677f0305ae28cc1a26c14"},{"version":"29bf8d2a9d3b6610fe4c592ef5cf05cc9f0a52fa79e8ff12603ac5f03d17868c","signature":"1e8f9ef43941cebcf3fdc77c194abcca542b286408f1d4bae881259dcb828cd0"},{"version":"2ce6ef6d818bfa23add0b496237b21d2b916da4901e4d2c90ef9de5b59576ea3","signature":"9b289967b9828eff0932378415d9ee896fe366ea5a011ac6b4c892ed418954d3"},{"version":"38014d1c6b7454fa64ef6a0a01a3aaeb31504255119d8db6dc27ef6892aa53e1","signature":"92f45cfac527f03ae406aac157acd731f20b877b8e7ad313a84f35e4b37d79c5"},{"version":"50cf7a23fc93928995caec8d7956206990f82113beeb6b3242dae8124edc3ca0","impliedFormat":99},{"version":"352031ac2e53031b69a09355e09ad7d95361edf32cc827cfe2417d80247a5a50","impliedFormat":99},{"version":"9971931daaf18158fc38266e838d56eb5d9d1f13360b1181bb4735a05f534c03","impliedFormat":99},{"version":"06d635a90365afe107c7e2daaa9851f5d3f062d78ebe4524b1b23b122469a1e2","impliedFormat":99},{"version":"aa103fbc4677b71d3deda20d37088cc2f39c3db8c2566ddf516b56ce7532d00a","impliedFormat":99},{"version":"0c5b705d31420477189618154d1b6a9bb62a34fa6055f56ade1a316f6adb6b3a","impliedFormat":99},{"version":"853b8bdb5da8c8e5d31e4d715a8057d8e96059d6774b13545c3616ed216b890c","impliedFormat":99},{"version":"430f4fa4e99e5e0a7ca2bbdde84abc8536bdfde4fd0de26009db508b8f571bb5","impliedFormat":99},{"version":"fe3c64bf61fcfec9b9861725c6d92de03f33748a01d982760ccfa798d777cf9d","impliedFormat":99},{"version":"1120a39f36c968298e2ca1d8cb1405389f9696f6b49e13b335626a94c16930bb","impliedFormat":99},{"version":"0a049adb920f3b42e1933c037052bcbc5e78b4704ad080bf078353c7f8ed6225","impliedFormat":99},{"version":"af9753433dec6dc41a2d3141804113a4d34f09fb19eb9eea063bd8800aa28db6","impliedFormat":99},{"version":"832f2fd6cf5eeaac22e2bdb0e3d7e2498cd8dd4058b853cd6b42033f126680ee","impliedFormat":99},{"version":"22fe66950a6308b2c6a0e11ed74930e90ba9d8a5fd2910666565007678875c13","impliedFormat":99},{"version":"084c09a35a9611e1777c02343c11ab8b1be48eb4895bbe6da90222979940b4a6","impliedFormat":99},{"version":"4b3049a2c849f0217ff4def308637931661461c329e4cf36aeb31db34c4c0c64","impliedFormat":99},{"version":"6245aa515481727f994d1cf7adfc71e36b5fc48216a92d7e932274cee3268000","impliedFormat":99},{"version":"3550708c55e4b79c5c13870f994461bcec97208e1d6758395a178913bbf05de3","impliedFormat":99},{"version":"660ce583eaa09bb39eef5ad7af9d1b5f027a9d1fbf9f76bf5b9dc9ef1be2830e","impliedFormat":99},{"version":"b7d9ca4e3248f643fa86ff11872623fdc8ed2c6009836bec0e38b163b6faed0c","impliedFormat":99},{"version":"904a01fef87360fa2fd0c2e934af92995b669565fe0bfb546ed0ff23769999cb","impliedFormat":99},{"version":"d4f7a7a5f66b9bc6fbfd53fa08dcf8007ff752064df816da05edfa35abd2c97c","impliedFormat":99},{"version":"1f38ecf63dead74c85180bf18376dc6bc152522ef3aedf7b588cadbbd5877506","impliedFormat":99},{"version":"82fb33c00b1300c19591105fc25ccf78acba220f58d162b120fe3f4292a5605f","impliedFormat":99},{"version":"facde2bec0f59cf92f4635ece51b2c3fa2d0a3bbb67458d24af61e7e6b8f003c","impliedFormat":99},{"version":"4669194e4ca5f7c160833bbb198f25681e629418a6326aba08cf0891821bfe8f","impliedFormat":99},{"version":"db185b403e30e91c5b90f3f2cfa062832d764c9d7df3ad7f5db7e17596344fe8","impliedFormat":99},{"version":"669b62a7169354658d4ae1e043ad8203728655492a8f70a940a11ca5ed4d5029","impliedFormat":99},{"version":"a95cd11c5c8bc03eab4011f8e339a48f9a87293e90c0bf3e9003d7a6f833f557","impliedFormat":99},{"version":"e9bc0db0144701fab1e98c4d595a293c7c840d209b389144142f0adbc36b5ec2","impliedFormat":99},{"version":"9d884b885c4b2d89286685406b45911dcaab03e08e948850e3e41e29af69561c","impliedFormat":99},{"version":"e00c380ed030cef03661334abb9fdbd174664e22f7597e64e92e85e22fbef6cf","signature":"ad1d85ddc03beaf6534fb0fcf5007e7edb4220b72927b2b7ff68f83ed2d891b3"},"3607889b9de7107b7e823774f3669bc7a23977879f1d1e477ac9d641810abfd9",{"version":"0be1bb5ea4d9ea191a1318786bb0fae4fcb29632268479b5285b20930bb60355","signature":"eb63b664e3561a8888fbd9ec8b81bb6d3063e7be5cf2d2a155d0654273a6d4d7"},{"version":"11e2bd7e632e7373cf15f60e3341786598e0d32d97f74eec4e48716313a5afa7","signature":"a92f0554e1f858fc1d3671d255bd3b972767362047272f866c84767ed9423129"},{"version":"b0199c147ef7d2ad96cf9dc74e61b0d66b88c5049243a4e9dcf09129e616a0a1","signature":"ced1cdd78f72985d47d15e564f28b7b3da66b4b0586ffa9798080a7a4e6314f3"},{"version":"be1cc4d94ea60cbe567bc29ed479d42587bf1e6cba490f123d329976b0fe4ee5","impliedFormat":1}],"root":[[64,71],[103,107]],"options":{"allowImportingTsExtensions":true,"allowSyntheticDefaultImports":true,"alwaysStrict":true,"composite":true,"declaration":true,"emitDeclarationOnly":true,"esModuleInterop":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitOverride":true,"noImplicitReturns":true,"noImplicitThis":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":true,"strict":true,"strictBindCallApply":true,"strictFunctionTypes":true,"strictNullChecks":true,"strictPropertyInitialization":true,"target":9,"useDefineForClassFields":true},"referencedMap":[[73,1],[75,2],[82,3],[76,4],[78,1],[79,4],[81,4],[95,5],[102,6],[92,7],[101,8],[99,7],[93,5],[94,9],[85,7],[83,10],[100,11],[96,10],[98,7],[97,10],[91,10],[90,7],[84,7],[86,12],[88,7],[89,7],[87,7],[108,8],[62,13],[63,8],[104,14],[64,14],[65,15],[70,16],[71,14],[66,14],[107,17],[68,18],[67,14],[103,14],[69,19],[106,20],[105,21]],"latestChangedDtsFile":"./src/index.d.ts","version":"5.9.3"}
|
package/dist/utils.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/manifest.ts"],"sourcesContent":["/**\n * Addon manifest and metadata types\n */\n\nimport type { AddonIconName } from './icons';\nimport type { Permission } from './permissions';\n\nexport interface AddonNetworkAccess {\n allowedHosts: string[];\n approvedHosts?: string[];\n}\n\nexport type AddonHostDependencies = Record<string, string>;\n\n/**\n * A durable addon page declared via `contributes.routes`. The host ingests\n * these at boot without executing addon code, so the route exists before (and\n * independently of) the addon's runtime activation — it is the lazy-activation\n * surface.\n */\nexport interface AddonContributedRoute {\n /** Stable route id. MUST equal the route id the addon registers at runtime. */\n id: string;\n /**\n * Optional path relative to the host-owned `/addons/<addon-id>` mount.\n * Omit for the addon root; use a suffix such as `reports/:year` for a\n * nested page. Absolute paths, traversal, query strings, and fragments are\n * rejected by the host.\n */\n path?: string;\n}\n\n/**\n * A placement in a host slot (e.g. `\"sidebar\"`) declared via\n * `contributes.links`, pointing at a route declared in `contributes.routes`\n * of the same addon.\n */\nexport interface AddonContributedLink {\n /** Optional stable link id; defaults to the referenced route id */\n id?: string;\n /** Id of a route declared in this addon's `contributes.routes` */\n route: string;\n /** Human-readable label shown in the host slot */\n label: string;\n /** Optional host-supported icon name (see {@link AddonIconName}) */\n icon?: AddonIconName;\n /** Optional sort order within the slot */\n order?: number;\n}\n\n/**\n * Declarative contributions an addon makes to the host: durable routes plus\n * links placed in host slots, keyed by slot id. Only the `\"sidebar\"` slot is\n * consumed today; unknown slot keys are preserved for future host surfaces.\n */\nexport interface AddonContributes {\n /** Durable addon pages, host-renderable before the addon boots */\n routes?: AddonContributedRoute[];\n /** Slot placements pointing at declared routes, keyed by slot id */\n links?: Record<string, AddonContributedLink[]>;\n}\n\n/**\n * Unified addon manifest structure that handles both development and runtime scenarios\n * This represents both what developers write in their manifest.json and installed addon metadata\n */\nexport interface AddonManifest {\n // Core manifest fields (always present)\n /** Unique addon identifier (lowercase, no spaces, hyphens allowed) */\n id: string;\n /** Human-readable addon name */\n name: string;\n /** Semantic version (e.g., \"1.0.0\") */\n version: string;\n /** Brief description of the addon's functionality */\n description?: string;\n /** Author name or organization */\n author?: string;\n /** Compatible SDK version */\n sdkVersion?: string;\n /** Main entry point file (relative to addon root) */\n main?: string;\n /** Whether the addon is enabled by default */\n enabled?: boolean;\n /** Permission declarations for security review */\n permissions?: Permission[];\n /** Addon homepage or documentation URL */\n homepage?: string;\n /** Support or issues URL */\n repository?: string;\n /** License identifier (e.g., \"MIT\", \"Apache-2.0\") */\n license?: string;\n /** Minimum Wealthfolio version required */\n minWealthfolioVersion?: string;\n /** Keywords for discoverability */\n keywords?: string[];\n /** Addon icon (base64 or relative path) */\n icon?: string;\n /** Network hosts this addon may reach through the host broker */\n network?: AddonNetworkAccess;\n /** Host-provided packages this addon imports instead of bundling */\n hostDependencies?: AddonHostDependencies;\n /** Declarative contributions to the host (routes + slot links) */\n contributes?: AddonContributes;\n\n // Runtime fields (only present after installation)\n /** Installation timestamp in ISO format */\n installedAt?: string;\n /** Last update timestamp */\n updatedAt?: string;\n /** Installation source */\n source?: 'local' | 'store' | 'sideload';\n /** File size in bytes */\n size?: number;\n}\n\n/**\n * Type guard to check if a manifest has been installed (has runtime fields)\n */\nexport function isInstalledManifest(\n manifest: AddonManifest,\n): manifest is Required<Pick<AddonManifest, 'main' | 'enabled' | 'installedAt'>> &\n AddonManifest {\n return !!(\n manifest.installedAt &&\n manifest.main !== undefined &&\n manifest.enabled !== undefined\n );\n}\n\n/**\n * Helper type for development manifests (without runtime fields)\n */\nexport type DevelopmentManifest = Omit<\n AddonManifest,\n 'installedAt' | 'updatedAt' | 'source' | 'size'\n>;\n\n/**\n * Helper type for installed manifests (with runtime fields)\n */\nexport type InstalledManifest = Required<\n Pick<AddonManifest, 'main' | 'enabled' | 'installedAt'>\n> &\n AddonManifest;\n\n/**\n * Addon file information\n */\nexport interface AddonFile {\n /** File name */\n name: string;\n /** File content */\n content: string;\n /** Whether this is the main entry point */\n is_main: boolean;\n /** File size in bytes */\n size?: number;\n}\n\n/**\n * Extracted addon package\n */\nexport interface ExtractedAddon {\n /** Addon metadata from manifest */\n metadata: AddonManifest;\n /** List of files in the addon package */\n files: AddonFile[];\n}\n\n/**\n * Installed addon information\n */\nexport interface InstalledAddon {\n /** Addon metadata */\n metadata: AddonManifest;\n /** Installation path */\n path?: string;\n /** Whether the addon is currently active */\n active?: boolean;\n}\n\n/**\n * Addon installation result\n */\nexport interface AddonInstallResult {\n /** Whether installation was successful */\n success: boolean;\n /** Error message if installation failed */\n error?: string;\n /** Installed addon metadata */\n addon?: AddonManifest;\n}\n\n/**\n * Addon validation result\n */\nexport interface AddonValidationResult {\n /** Whether the addon is valid */\n valid: boolean;\n /** List of validation errors */\n errors: string[];\n /** List of validation warnings */\n warnings: string[];\n}\n\n/**\n * Addon update information\n */\nexport interface AddonUpdateInfo {\n /** Current installed version */\n currentVersion: string;\n /** Latest available version */\n latestVersion: string;\n /** Whether an update is available */\n updateAvailable: boolean;\n /** Download URL for the update */\n downloadUrl?: string;\n /** Optional SHA-256 digest for the update package bytes */\n sha256?: string;\n /** Release notes for the latest version */\n releaseNotes?: string;\n /** Release date of the latest version */\n releaseDate?: string;\n /** Changelog URL */\n changelogUrl?: string;\n /** Whether this is a critical security update */\n isCritical?: boolean;\n /** Breaking changes in this update */\n hasBreakingChanges?: boolean;\n /** Minimum Wealthfolio version required for this update */\n minWealthfolioVersion?: string;\n}\n\n/**\n * Addon update check result\n */\nexport interface AddonUpdateCheckResult {\n /** Addon ID */\n addonId: string;\n /** Update information */\n updateInfo: AddonUpdateInfo;\n /** Any errors during update check */\n error?: string;\n}\n\n/**\n * Addon store listing\n */\nexport interface AddonStoreListing {\n /** Addon metadata */\n metadata: AddonManifest;\n /** Download URL */\n downloadUrl: string;\n /** Optional SHA-256 digest for the package bytes */\n sha256?: string;\n /** Number of downloads */\n downloads?: number;\n /** Average rating */\n rating?: number;\n /** Number of reviews */\n reviewCount?: number;\n /** Whether it's verified by Wealthfolio team */\n verified?: boolean;\n /** Last update date */\n lastUpdated?: string;\n /** Screenshots or images */\n images?: string[];\n /** Release notes for the latest version */\n releaseNotes?: string;\n /** Changelog URL */\n changelogUrl?: string;\n}\n"],"mappings":";AAuHO,SAAS,oBACd,UAEc;AACd,SAAO,CAAC,EACN,SAAS,eACT,SAAS,SAAS,UAClB,SAAS,YAAY;AAEzB;","names":[]}
|