@plumile/router 0.1.32 → 0.1.34
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 +7 -0
- package/README.md +42 -21
- package/lib/esm/index.d.ts +1 -0
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +2 -1
- package/lib/esm/instrumentation/Instrumentation.d.ts +66 -0
- package/lib/esm/instrumentation/Instrumentation.d.ts.map +1 -0
- package/lib/esm/instrumentation/Instrumentation.js +59 -0
- package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts +14 -0
- package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -0
- package/lib/esm/instrumentation/adapters/devtoolsBridge.js +118 -0
- package/lib/esm/instrumentation/adapters/logger.d.ts +10 -0
- package/lib/esm/instrumentation/adapters/logger.d.ts.map +1 -0
- package/lib/esm/instrumentation/adapters/logger.js +19 -0
- package/lib/esm/instrumentation/index.d.ts +4 -0
- package/lib/esm/instrumentation/index.d.ts.map +1 -0
- package/lib/esm/instrumentation/index.js +4 -0
- package/lib/esm/routing/Link.d.ts.map +1 -1
- package/lib/esm/routing/Link.js +8 -17
- package/lib/esm/routing/createRouter.d.ts +2 -1
- package/lib/esm/routing/createRouter.d.ts.map +1 -1
- package/lib/esm/routing/createRouter.js +184 -261
- package/lib/esm/tools.d.ts +6 -5
- package/lib/esm/tools.d.ts.map +1 -1
- package/lib/esm/tools.js +17 -34
- package/lib/esm/types.d.ts +7 -49
- package/lib/esm/types.d.ts.map +1 -1
- package/lib/esm/types.js +2 -28
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/instrumentation/Instrumentation.d.ts +66 -0
- package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -0
- package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts +14 -0
- package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -0
- package/lib/types/instrumentation/adapters/logger.d.ts +10 -0
- package/lib/types/instrumentation/adapters/logger.d.ts.map +1 -0
- package/lib/types/instrumentation/index.d.ts +4 -0
- package/lib/types/instrumentation/index.d.ts.map +1 -0
- package/lib/types/routing/Link.d.ts.map +1 -1
- package/lib/types/routing/createRouter.d.ts +2 -1
- package/lib/types/routing/createRouter.d.ts.map +1 -1
- package/lib/types/tools.d.ts +6 -5
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/types.d.ts +7 -49
- package/lib/types/types.d.ts.map +1 -1
- package/package.json +33 -18
package/CHANGELOG.md
ADDED
package/README.md
CHANGED
|
@@ -21,10 +21,11 @@ npm install @plumile/router
|
|
|
21
21
|
|
|
22
22
|
## Peer Dependencies
|
|
23
23
|
|
|
24
|
-
This package
|
|
24
|
+
This package expects `react` and `react-dom` to be available in your project
|
|
25
|
+
(React 18 or 19).
|
|
25
26
|
|
|
26
27
|
```bash
|
|
27
|
-
npm install react react-dom
|
|
28
|
+
npm install react react-dom
|
|
28
29
|
```
|
|
29
30
|
|
|
30
31
|
## Module Entry Points
|
|
@@ -37,11 +38,11 @@ This package is ESM-only. If your tooling expects CommonJS, enable ESM support (
|
|
|
37
38
|
|
|
38
39
|
## Documentation & Guides
|
|
39
40
|
|
|
40
|
-
- Getting started: [
|
|
41
|
-
- Relay integration walkthrough: [
|
|
42
|
-
- Examples: [
|
|
43
|
-
- Migration strategies: [
|
|
44
|
-
- DevTools extension usage: [
|
|
41
|
+
- Getting started: [User guide](https://gitlab.com/plumile/js/-/blob/main/docs/index.md)
|
|
42
|
+
- Relay integration walkthrough: [Relay guide](https://gitlab.com/plumile/js/-/blob/main/docs/router-relay.md)
|
|
43
|
+
- Examples: [Examples](https://gitlab.com/plumile/js/-/blob/main/packages/router/EXAMPLES.md)
|
|
44
|
+
- Migration strategies: [Migration guide](https://gitlab.com/plumile/js/-/blob/main/packages/router/MIGRATION.md)
|
|
45
|
+
- DevTools extension usage: [DevTools documentation](https://gitlab.com/plumile/js/-/blob/main/docs/router-devtools-extension.md)
|
|
45
46
|
|
|
46
47
|
## Quick Start
|
|
47
48
|
|
|
@@ -130,14 +131,14 @@ function Navigation() {
|
|
|
130
131
|
|
|
131
132
|
## Hooks Overview
|
|
132
133
|
|
|
133
|
-
| Hook
|
|
134
|
-
|
|
|
135
|
-
| `useNavigate()`
|
|
136
|
-
| `useFilters(schema)`
|
|
137
|
-
| `useQuery()`
|
|
138
|
-
| `useQueryState(key,
|
|
139
|
-
| `useFilterDiagnostics()`
|
|
140
|
-
| `useAllQuery(
|
|
134
|
+
| Hook | Signature | Purpose | Example |
|
|
135
|
+
| ------------------------------ | ------------------------------------------ | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
136
|
+
| `useNavigate()` | `() => Navigate` | Imperative navigation with type-safe params and filters. | `const navigate = useNavigate(); navigate({ pathname: '/products', filters: { page: { eq: 2 } } });` |
|
|
137
|
+
| `useFilters(schema)` | `(schema) => [filters, actions]` | Read and mutate filters inferred from a schema. | `const [filters, actions] = useFilters(productFilters); actions.set('price', 'gt', 10);` |
|
|
138
|
+
| `useQuery()` | `() => Record<string, string \| string[]>` | Access the raw query aggregation (legacy/simple use). | `const query = useQuery();` |
|
|
139
|
+
| `useQueryState(key, options?)` | `(key, options?) => [value, setValue]` | Two-way binding for a single query parameter with default/replace options. | `const [page, setPage] = useQueryState('page', { defaultValue: 1 });` |
|
|
140
|
+
| `useFilterDiagnostics()` | `() => Diagnostic[]` | Surface parsing issues (unknown fields/operators) for UI or logging. | `const diagnostics = useFilterDiagnostics();` |
|
|
141
|
+
| `useAllQuery(options?)` | `(options?) => QueryLike` | Merge filters and raw query, helpful during migrations. | `const all = useAllQuery();` |
|
|
141
142
|
|
|
142
143
|
## API Reference
|
|
143
144
|
|
|
@@ -366,15 +367,35 @@ const search = buildCombinedSearch({
|
|
|
366
367
|
|
|
367
368
|
Guideline: If you need to derive lightweight projections (e.g. `const { page } = typed`), you can still destructure; but avoid spreading into a new object if you rely on reference equality downstream.
|
|
368
369
|
|
|
369
|
-
#### Inspection &
|
|
370
|
+
#### Inspection & Instrumentation
|
|
370
371
|
|
|
371
|
-
Activez
|
|
372
|
+
Activez l’instrumentation en développement pour exposer un bridge DevTools :
|
|
372
373
|
|
|
373
374
|
```ts
|
|
374
|
-
|
|
375
|
+
import {
|
|
376
|
+
createRouter,
|
|
377
|
+
createDevtoolsBridgeInstrumentation,
|
|
378
|
+
} from '@plumile/router';
|
|
379
|
+
|
|
380
|
+
const devtools = createDevtoolsBridgeInstrumentation();
|
|
381
|
+
const { context } = createRouter(routes, { instrumentations: [devtools] });
|
|
375
382
|
```
|
|
376
383
|
|
|
377
|
-
|
|
384
|
+
Aucun bridge n’est publié en production. Vous pouvez chaîner plusieurs instrumentations (par exemple la console) :
|
|
385
|
+
|
|
386
|
+
```ts
|
|
387
|
+
import {
|
|
388
|
+
createConsoleLoggerInstrumentation,
|
|
389
|
+
createDevtoolsBridgeInstrumentation,
|
|
390
|
+
} from '@plumile/router';
|
|
391
|
+
|
|
392
|
+
const instrumentations = [
|
|
393
|
+
createDevtoolsBridgeInstrumentation(),
|
|
394
|
+
createConsoleLoggerInstrumentation({ label: 'router' }),
|
|
395
|
+
];
|
|
396
|
+
|
|
397
|
+
createRouter(routes, { instrumentations });
|
|
398
|
+
```
|
|
378
399
|
|
|
379
400
|
Pour l’inspection visuelle (timeline, filtres, prepared data), installez la Plumile Router DevTools extension (voir [docs/router-devtools-extension.md](../../docs/router-devtools-extension.md)).
|
|
380
401
|
|
|
@@ -584,10 +605,10 @@ function MyComponent() {
|
|
|
584
605
|
|
|
585
606
|
const handleHover = () => {
|
|
586
607
|
// Preload code only
|
|
587
|
-
router.preloadCode('/users/123');
|
|
608
|
+
router.preloadCode({ pathname: '/users/123' });
|
|
588
609
|
|
|
589
610
|
// Preload code and data
|
|
590
|
-
router.preload('/users/123');
|
|
611
|
+
router.preload({ pathname: '/users/123' });
|
|
591
612
|
};
|
|
592
613
|
|
|
593
614
|
return (
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,YAAY,CAAC;AAG3B,mBAAmB,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,YAAY,CAAC;AAG3B,mBAAmB,YAAY,CAAC;AAGhC,cAAc,4BAA4B,CAAC"}
|
package/lib/esm/index.js
CHANGED
|
@@ -4,4 +4,5 @@ export * from './routing/index.js';
|
|
|
4
4
|
export * from './builder.js';
|
|
5
5
|
export * from './ResourcePage.js';
|
|
6
6
|
export * from './tools.js';
|
|
7
|
-
|
|
7
|
+
export * from './instrumentation/index.js';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLG9CQUFvQixDQUFDO0FBR25DLGNBQWMsb0JBQW9CLENBQUM7QUFHbkMsY0FBYyxjQUFjLENBQUM7QUFHN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLFlBQVksQ0FBQztBQU0zQixjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0IGVycm9yIGhhbmRsaW5nIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcnMvaW5kZXguanMnO1xuXG4vLyBFeHBvcnQgYnJvd3NlciBoaXN0b3J5IG1hbmFnZW1lbnRcbmV4cG9ydCAqIGZyb20gJy4vaGlzdG9yeS9pbmRleC5qcyc7XG5cbi8vIEV4cG9ydCByb3V0aW5nIGNvbXBvbmVudHMgYW5kIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nL2luZGV4LmpzJztcblxuLy8gRXhwb3J0IHJvdXRlIGJ1aWxkaW5nIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyLmpzJztcblxuLy8gRXhwb3J0IHJlc291cmNlIHBhZ2UgbWFuYWdlbWVudCBmb3IgbGF6eSBsb2FkaW5nXG5leHBvcnQgKiBmcm9tICcuL1Jlc291cmNlUGFnZS5qcyc7XG5cbi8vIEV4cG9ydCB1dGlsaXR5IGZ1bmN0aW9uc1xuZXhwb3J0ICogZnJvbSAnLi90b29scy5qcyc7XG5cbi8vIEV4cG9ydCBhbGwgVHlwZVNjcmlwdCB0eXBlc1xuZXhwb3J0IHR5cGUgKiBmcm9tICcuL3R5cGVzLmpzJztcblxuLy8gRXhwb3J0IGluc3RydW1lbnRhdGlvbiBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2luc3RydW1lbnRhdGlvbi9pbmRleC5qcyc7XG4iXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { RouteEntry } from '../types.js';
|
|
2
|
+
export type RouterNavigationSource = 'link-click' | 'link-hover' | 'preload-hover' | 'programmatic' | 'popstate-back' | 'popstate-forward' | 'popstate-unknown' | 'external' | 'normalize';
|
|
3
|
+
export type RouterLocationSnapshot = {
|
|
4
|
+
pathname: string;
|
|
5
|
+
search: string;
|
|
6
|
+
hash: string;
|
|
7
|
+
};
|
|
8
|
+
export type RouterEntrySnapshot = {
|
|
9
|
+
location: RouterLocationSnapshot;
|
|
10
|
+
routePath?: string;
|
|
11
|
+
preparedMatch?: RouteEntry<any>['preparedMatch'];
|
|
12
|
+
filters?: RouteEntry<any>['filters'];
|
|
13
|
+
filterDiagnostics?: RouteEntry<any>['filterDiagnostics'];
|
|
14
|
+
activeQuerySchema?: RouteEntry<any>['activeQuerySchema'];
|
|
15
|
+
};
|
|
16
|
+
export type RouterEventBase = {
|
|
17
|
+
timestamp: number;
|
|
18
|
+
location: RouterLocationSnapshot;
|
|
19
|
+
};
|
|
20
|
+
export type RouterSnapshotEvent = RouterEventBase & {
|
|
21
|
+
kind: 'snapshot';
|
|
22
|
+
source: RouterNavigationSource;
|
|
23
|
+
routePath?: string;
|
|
24
|
+
};
|
|
25
|
+
export type RouterPreloadEvent = RouterEventBase & {
|
|
26
|
+
kind: 'preload';
|
|
27
|
+
source: RouterNavigationSource;
|
|
28
|
+
targetPathname: string;
|
|
29
|
+
mode: 'code' | 'full';
|
|
30
|
+
};
|
|
31
|
+
export type RouterHistoryEvent = RouterEventBase & {
|
|
32
|
+
kind: 'history';
|
|
33
|
+
source: RouterNavigationSource;
|
|
34
|
+
action: 'push' | 'replace' | 'normalize';
|
|
35
|
+
details?: Record<string, unknown>;
|
|
36
|
+
};
|
|
37
|
+
export type RouterPopstateEvent = RouterEventBase & {
|
|
38
|
+
kind: 'popstate';
|
|
39
|
+
source: RouterNavigationSource;
|
|
40
|
+
direction: 'back' | 'forward' | 'unknown';
|
|
41
|
+
details?: Record<string, unknown>;
|
|
42
|
+
};
|
|
43
|
+
export type RouterPrepareEvent = RouterEventBase & {
|
|
44
|
+
kind: 'prepare-start' | 'prepare-end';
|
|
45
|
+
source: RouterNavigationSource;
|
|
46
|
+
routePath?: string;
|
|
47
|
+
moduleId?: string;
|
|
48
|
+
durationMs?: number;
|
|
49
|
+
hasPrepared?: boolean;
|
|
50
|
+
};
|
|
51
|
+
export type RouterEvent = RouterSnapshotEvent | RouterPreloadEvent | RouterHistoryEvent | RouterPopstateEvent | RouterPrepareEvent;
|
|
52
|
+
export type InstrumentationAPI = {
|
|
53
|
+
onEvent?: (event: RouterEvent) => void;
|
|
54
|
+
onEntryChange?: (entry: RouterEntrySnapshot) => void;
|
|
55
|
+
dispose?: () => void;
|
|
56
|
+
};
|
|
57
|
+
export type InstrumentationRegistry = {
|
|
58
|
+
register: (instrumentation: InstrumentationAPI) => void;
|
|
59
|
+
unregister: (instrumentation: InstrumentationAPI) => void;
|
|
60
|
+
emitEvent: (event: RouterEvent) => void;
|
|
61
|
+
notifyEntryChange: (entry: RouterEntrySnapshot) => void;
|
|
62
|
+
dispose: () => void;
|
|
63
|
+
readonly size: number;
|
|
64
|
+
};
|
|
65
|
+
export declare function createInstrumentationRegistry(initial?: InstrumentationAPI[]): InstrumentationRegistry;
|
|
66
|
+
//# sourceMappingURL=Instrumentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Instrumentation.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/Instrumentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export function createInstrumentationRegistry(initial = []) {
|
|
2
|
+
const listeners = new Set();
|
|
3
|
+
initial.forEach((instrumentation) => {
|
|
4
|
+
listeners.add(instrumentation);
|
|
5
|
+
});
|
|
6
|
+
let disposed = false;
|
|
7
|
+
function guard() {
|
|
8
|
+
if (disposed) {
|
|
9
|
+
throw new Error('Instrumentation registry was disposed');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function safeInvoke(instrumentation, method, payload) {
|
|
13
|
+
const handler = instrumentation[method];
|
|
14
|
+
if (typeof handler !== 'function') {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
handler(...payload);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
register(instrumentation) {
|
|
25
|
+
guard();
|
|
26
|
+
listeners.add(instrumentation);
|
|
27
|
+
},
|
|
28
|
+
unregister(instrumentation) {
|
|
29
|
+
guard();
|
|
30
|
+
listeners.delete(instrumentation);
|
|
31
|
+
},
|
|
32
|
+
emitEvent(event) {
|
|
33
|
+
guard();
|
|
34
|
+
listeners.forEach((instrumentation) => {
|
|
35
|
+
safeInvoke(instrumentation, 'onEvent', [event]);
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
notifyEntryChange(entry) {
|
|
39
|
+
guard();
|
|
40
|
+
listeners.forEach((instrumentation) => {
|
|
41
|
+
safeInvoke(instrumentation, 'onEntryChange', [entry]);
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
dispose() {
|
|
45
|
+
if (disposed) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
listeners.forEach((instrumentation) => {
|
|
49
|
+
safeInvoke(instrumentation, 'dispose', []);
|
|
50
|
+
});
|
|
51
|
+
listeners.clear();
|
|
52
|
+
disposed = true;
|
|
53
|
+
},
|
|
54
|
+
get size() {
|
|
55
|
+
return listeners.size;
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdHJ1bWVudGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2luc3RydW1lbnRhdGlvbi9JbnN0cnVtZW50YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0hBLE1BQU0sVUFBVSw2QkFBNkIsQ0FDM0MsVUFBZ0MsRUFBRTtJQUVsQyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztJQUNoRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7UUFDbEMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztJQUtyQixTQUFTLEtBQUs7UUFDWixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDO0lBTUQsU0FBUyxVQUFVLENBQ2pCLGVBQW1DLEVBQ25DLE1BQWdDLEVBQ2hDLE9BQWtCO1FBRWxCLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QyxJQUFJLE9BQU8sT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0YsT0FBd0MsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFBQyxNQUFNLENBQUM7UUFFVCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxRQUFRLENBQUMsZUFBZTtZQUN0QixLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELFVBQVUsQ0FBQyxlQUFlO1lBQ3hCLEtBQUssRUFBRSxDQUFDO1lBQ1IsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsU0FBUyxDQUFDLEtBQUs7WUFDYixLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDcEMsVUFBVSxDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELGlCQUFpQixDQUFDLEtBQUs7WUFDckIsS0FBSyxFQUFFLENBQUM7WUFDUixTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7Z0JBQ3BDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsZUFBZSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixPQUFPO1lBQ1QsQ0FBQztZQUNELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDcEMsVUFBVSxDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQyxDQUFDLENBQUM7WUFDSCxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNsQixDQUFDO1FBQ0QsSUFBSSxJQUFJO1lBQ04sT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ3hCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUm91dGVFbnRyeSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqXG4gKiBFbnVtZXJhdGVzIHRoZSBvcmlnaW4gb2YgbmF2aWdhdGlvbi1yZWxhdGVkIGV2ZW50cyBleHBvc2VkIHRvIGluc3RydW1lbnRhdGlvbnMuXG4gKlxuICogS2VwdCBhcyBzdHJpbmcgbGl0ZXJhbHMgdG8gYXZvaWQgbGVha2luZyBkZWJ1ZyBlbnVtcyBpbnRvIHRoZSBwcm9kdWN0aW9uIGJ1bmRsZS5cbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyTmF2aWdhdGlvblNvdXJjZSA9XG4gIHwgJ2xpbmstY2xpY2snXG4gIHwgJ2xpbmstaG92ZXInXG4gIHwgJ3ByZWxvYWQtaG92ZXInXG4gIHwgJ3Byb2dyYW1tYXRpYydcbiAgfCAncG9wc3RhdGUtYmFjaydcbiAgfCAncG9wc3RhdGUtZm9yd2FyZCdcbiAgfCAncG9wc3RhdGUtdW5rbm93bidcbiAgfCAnZXh0ZXJuYWwnXG4gIHwgJ25vcm1hbGl6ZSc7XG5cbi8qKlxuICogQ29tcGFjdCBsb2NhdGlvbiBzbmFwc2hvdCBzaGFyZWQgYnkgYWxsIGluc3RydW1lbnRhdGlvbiBldmVudHMuXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlckxvY2F0aW9uU25hcHNob3QgPSB7XG4gIHBhdGhuYW1lOiBzdHJpbmc7XG4gIHNlYXJjaDogc3RyaW5nO1xuICBoYXNoOiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIFN1bW1hcnkgb2YgdGhlIGN1cnJlbnQgcm91dGVyIGVudHJ5IHRoYXQgY2FuIGJlIGJyb2FkY2FzdCB0byBpbnN0cnVtZW50YXRpb25zLlxuICogVGhlIHNoYXBlIGludGVudGlvbmFsbHkgbWlycm9ycyBwdWJsaWMgZGF0YSBhbHJlYWR5IGF2YWlsYWJsZSB0byBhcHBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlckVudHJ5U25hcHNob3QgPSB7XG4gIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xuICByb3V0ZVBhdGg/OiBzdHJpbmc7XG4gIHByZXBhcmVkTWF0Y2g/OiBSb3V0ZUVudHJ5PGFueT5bJ3ByZXBhcmVkTWF0Y2gnXTtcbiAgZmlsdGVycz86IFJvdXRlRW50cnk8YW55PlsnZmlsdGVycyddO1xuICBmaWx0ZXJEaWFnbm9zdGljcz86IFJvdXRlRW50cnk8YW55PlsnZmlsdGVyRGlhZ25vc3RpY3MnXTtcbiAgYWN0aXZlUXVlcnlTY2hlbWE/OiBSb3V0ZUVudHJ5PGFueT5bJ2FjdGl2ZVF1ZXJ5U2NoZW1hJ107XG59O1xuXG4vKipcbiAqIEJhc2UgcGF5bG9hZCBzaGFyZWQgYnkgcm91dGVyIGV2ZW50cy4gRWFjaCBldmVudCBleHRlbmRzIHRoZSBiYXNlIHdpdGhcbiAqIHNwZWNpZmljIGRldGFpbHMgcmVsZXZhbnQgdG8gdGhlIGluc3RydW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVyRXZlbnRCYXNlID0ge1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgbG9jYXRpb246IFJvdXRlckxvY2F0aW9uU25hcHNob3Q7XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJTbmFwc2hvdEV2ZW50ID0gUm91dGVyRXZlbnRCYXNlICYge1xuICBraW5kOiAnc25hcHNob3QnO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIHJvdXRlUGF0aD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlclByZWxvYWRFdmVudCA9IFJvdXRlckV2ZW50QmFzZSAmIHtcbiAga2luZDogJ3ByZWxvYWQnO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIHRhcmdldFBhdGhuYW1lOiBzdHJpbmc7XG4gIG1vZGU6ICdjb2RlJyB8ICdmdWxsJztcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlckhpc3RvcnlFdmVudCA9IFJvdXRlckV2ZW50QmFzZSAmIHtcbiAga2luZDogJ2hpc3RvcnknO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIGFjdGlvbjogJ3B1c2gnIHwgJ3JlcGxhY2UnIHwgJ25vcm1hbGl6ZSc7XG4gIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlclBvcHN0YXRlRXZlbnQgPSBSb3V0ZXJFdmVudEJhc2UgJiB7XG4gIGtpbmQ6ICdwb3BzdGF0ZSc7XG4gIHNvdXJjZTogUm91dGVyTmF2aWdhdGlvblNvdXJjZTtcbiAgZGlyZWN0aW9uOiAnYmFjaycgfCAnZm9yd2FyZCcgfCAndW5rbm93bic7XG4gIGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJvdXRlclByZXBhcmVFdmVudCA9IFJvdXRlckV2ZW50QmFzZSAmIHtcbiAga2luZDogJ3ByZXBhcmUtc3RhcnQnIHwgJ3ByZXBhcmUtZW5kJztcbiAgc291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlO1xuICByb3V0ZVBhdGg/OiBzdHJpbmc7XG4gIG1vZHVsZUlkPzogc3RyaW5nO1xuICBkdXJhdGlvbk1zPzogbnVtYmVyO1xuICBoYXNQcmVwYXJlZD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJFdmVudCA9XG4gIHwgUm91dGVyU25hcHNob3RFdmVudFxuICB8IFJvdXRlclByZWxvYWRFdmVudFxuICB8IFJvdXRlckhpc3RvcnlFdmVudFxuICB8IFJvdXRlclBvcHN0YXRlRXZlbnRcbiAgfCBSb3V0ZXJQcmVwYXJlRXZlbnQ7XG5cbi8qKlxuICogSW5zdHJ1bWVudGF0aW9ucyBjYW4gb2JzZXJ2ZSByb3V0ZXIgZXZlbnRzLCBlbnRyeSBjaGFuZ2VzLCBhbmQgb3B0aW9uYWxseVxuICogZGlzcG9zZSByZXNvdXJjZXMgd2hlbiB0aGUgcmVnaXN0cnkgaXMgdG9ybiBkb3duLlxuICovXG5leHBvcnQgdHlwZSBJbnN0cnVtZW50YXRpb25BUEkgPSB7XG4gIG9uRXZlbnQ/OiAoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB2b2lkO1xuICBvbkVudHJ5Q2hhbmdlPzogKGVudHJ5OiBSb3V0ZXJFbnRyeVNuYXBzaG90KSA9PiB2b2lkO1xuICBkaXNwb3NlPzogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEluc3RydW1lbnRhdGlvblJlZ2lzdHJ5ID0ge1xuICByZWdpc3RlcjogKGluc3RydW1lbnRhdGlvbjogSW5zdHJ1bWVudGF0aW9uQVBJKSA9PiB2b2lkO1xuICB1bnJlZ2lzdGVyOiAoaW5zdHJ1bWVudGF0aW9uOiBJbnN0cnVtZW50YXRpb25BUEkpID0+IHZvaWQ7XG4gIGVtaXRFdmVudDogKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gdm9pZDtcbiAgbm90aWZ5RW50cnlDaGFuZ2U6IChlbnRyeTogUm91dGVyRW50cnlTbmFwc2hvdCkgPT4gdm9pZDtcbiAgZGlzcG9zZTogKCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgc2l6ZTogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVnaXN0cnkgY29vcmRpbmF0aW5nIGEgc2V0IG9mIGluc3RydW1lbnRhdGlvbnMuIFRoZSByZWdpc3RyeSBrZWVwc1xuICogY29uc3VtZXIgY29kZSBzaW1wbGU6IHJvdXRlciBpbnRlcm5hbHMgYnJvYWRjYXN0IGV2ZW50cyB3aXRob3V0IGNhcmluZyBhYm91dFxuICogdGhlIG51bWJlciBvciBuYXR1cmUgb2YgYXR0YWNoZWQgaW5zdHJ1bWVudGF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluc3RydW1lbnRhdGlvblJlZ2lzdHJ5KFxuICBpbml0aWFsOiBJbnN0cnVtZW50YXRpb25BUElbXSA9IFtdLFxuKTogSW5zdHJ1bWVudGF0aW9uUmVnaXN0cnkge1xuICBjb25zdCBsaXN0ZW5lcnMgPSBuZXcgU2V0PEluc3RydW1lbnRhdGlvbkFQST4oKTtcbiAgaW5pdGlhbC5mb3JFYWNoKChpbnN0cnVtZW50YXRpb24pID0+IHtcbiAgICBsaXN0ZW5lcnMuYWRkKGluc3RydW1lbnRhdGlvbik7XG4gIH0pO1xuXG4gIGxldCBkaXNwb3NlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaHJvd3Mgd2hlbiB0aGUgcmVnaXN0cnkgaGFzIGFscmVhZHkgYmVlbiBkaXNwb3NlZC4gR3VhcmRzIGV2ZW50IGVtaXNzaW9uLlxuICAgKi9cbiAgZnVuY3Rpb24gZ3VhcmQoKSB7XG4gICAgaWYgKGRpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc3RydW1lbnRhdGlvbiByZWdpc3RyeSB3YXMgZGlzcG9zZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2FmZWx5IGludm9rZXMgYW4gb3B0aW9uYWwgaGFuZGxlciBwcm92aWRlZCBieSBhbiBpbnN0cnVtZW50YXRpb24uXG4gICAqIEZhaWx1cmVzIGFyZSBzd2FsbG93ZWQgc28gcm91dGVyIGV4ZWN1dGlvbiBjb250aW51ZXMgdW5pbnRlcnJ1cHRlZC5cbiAgICovXG4gIGZ1bmN0aW9uIHNhZmVJbnZva2UoXG4gICAgaW5zdHJ1bWVudGF0aW9uOiBJbnN0cnVtZW50YXRpb25BUEksXG4gICAgbWV0aG9kOiBrZXlvZiBJbnN0cnVtZW50YXRpb25BUEksXG4gICAgcGF5bG9hZDogdW5rbm93bltdLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBoYW5kbGVyID0gaW5zdHJ1bWVudGF0aW9uW21ldGhvZF07XG4gICAgaWYgKHR5cGVvZiBoYW5kbGVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAoaGFuZGxlciBhcyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB2b2lkKSguLi5wYXlsb2FkKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEluc3RydW1lbnRhdGlvbnMgc2hvdWxkIG5ldmVyIGJyZWFrIHJvdXRlciBleGVjdXRpb24uIEVycm9ycyBhcmUgc3dhbGxvd2VkLlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcmVnaXN0ZXIoaW5zdHJ1bWVudGF0aW9uKSB7XG4gICAgICBndWFyZCgpO1xuICAgICAgbGlzdGVuZXJzLmFkZChpbnN0cnVtZW50YXRpb24pO1xuICAgIH0sXG4gICAgdW5yZWdpc3RlcihpbnN0cnVtZW50YXRpb24pIHtcbiAgICAgIGd1YXJkKCk7XG4gICAgICBsaXN0ZW5lcnMuZGVsZXRlKGluc3RydW1lbnRhdGlvbik7XG4gICAgfSxcbiAgICBlbWl0RXZlbnQoZXZlbnQpIHtcbiAgICAgIGd1YXJkKCk7XG4gICAgICBsaXN0ZW5lcnMuZm9yRWFjaCgoaW5zdHJ1bWVudGF0aW9uKSA9PiB7XG4gICAgICAgIHNhZmVJbnZva2UoaW5zdHJ1bWVudGF0aW9uLCAnb25FdmVudCcsIFtldmVudF0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBub3RpZnlFbnRyeUNoYW5nZShlbnRyeSkge1xuICAgICAgZ3VhcmQoKTtcbiAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChpbnN0cnVtZW50YXRpb24pID0+IHtcbiAgICAgICAgc2FmZUludm9rZShpbnN0cnVtZW50YXRpb24sICdvbkVudHJ5Q2hhbmdlJywgW2VudHJ5XSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGRpc3Bvc2UoKSB7XG4gICAgICBpZiAoZGlzcG9zZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbGlzdGVuZXJzLmZvckVhY2goKGluc3RydW1lbnRhdGlvbikgPT4ge1xuICAgICAgICBzYWZlSW52b2tlKGluc3RydW1lbnRhdGlvbiwgJ2Rpc3Bvc2UnLCBbXSk7XG4gICAgICB9KTtcbiAgICAgIGxpc3RlbmVycy5jbGVhcigpO1xuICAgICAgZGlzcG9zZWQgPSB0cnVlO1xuICAgIH0sXG4gICAgZ2V0IHNpemUoKSB7XG4gICAgICByZXR1cm4gbGlzdGVuZXJzLnNpemU7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { InstrumentationAPI, RouterEntrySnapshot, RouterEvent } from '../Instrumentation.js';
|
|
2
|
+
export type DevtoolsBridgeOptions = {
|
|
3
|
+
historyLimit?: number;
|
|
4
|
+
global?: Record<string, unknown>;
|
|
5
|
+
};
|
|
6
|
+
export type DevtoolsBridge = {
|
|
7
|
+
getEntry: () => RouterEntrySnapshot | null;
|
|
8
|
+
getEvents: () => RouterEvent[];
|
|
9
|
+
subscribeEntries: (callback: (entry: RouterEntrySnapshot) => void) => () => void;
|
|
10
|
+
subscribeEvents: (callback: (event: RouterEvent) => void) => () => void;
|
|
11
|
+
historyLimit: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function createDevtoolsBridgeInstrumentation(options?: DevtoolsBridgeOptions): InstrumentationAPI;
|
|
14
|
+
//# sourceMappingURL=devtoolsBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devtoolsBridge.d.ts","sourceRoot":"","sources":["../../../../src/instrumentation/adapters/devtoolsBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAK/B,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,MAAM,mBAAmB,GAAG,IAAI,CAAC;IAC3C,SAAS,EAAE,MAAM,WAAW,EAAE,CAAC;IAC/B,gBAAgB,EAAE,CAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,KAC3C,MAAM,IAAI,CAAC;IAChB,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;IACxE,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAYF,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,qBAA0B,GAClC,kBAAkB,CA8HpB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
const BRIDGE_KEY = '__PLUMILE_ROUTER__';
|
|
2
|
+
const DEFAULT_HISTORY_LIMIT = 200;
|
|
3
|
+
function isObject(value) {
|
|
4
|
+
return typeof value === 'object' && value !== null;
|
|
5
|
+
}
|
|
6
|
+
export function createDevtoolsBridgeInstrumentation(options = {}) {
|
|
7
|
+
const historyLimit = options.historyLimit ?? DEFAULT_HISTORY_LIMIT;
|
|
8
|
+
let globalObject;
|
|
9
|
+
if (options.global != null) {
|
|
10
|
+
globalObject = options.global;
|
|
11
|
+
}
|
|
12
|
+
else if (typeof window !== 'undefined') {
|
|
13
|
+
globalObject = window;
|
|
14
|
+
}
|
|
15
|
+
const eventSubscribers = new Set();
|
|
16
|
+
const entrySubscribers = new Set();
|
|
17
|
+
let disposed = false;
|
|
18
|
+
let bridgeInstalled = false;
|
|
19
|
+
let lastEntry = null;
|
|
20
|
+
let events = [];
|
|
21
|
+
const bridge = {
|
|
22
|
+
getEntry() {
|
|
23
|
+
return lastEntry;
|
|
24
|
+
},
|
|
25
|
+
getEvents() {
|
|
26
|
+
return events.slice();
|
|
27
|
+
},
|
|
28
|
+
subscribeEntries(callback) {
|
|
29
|
+
entrySubscribers.add(callback);
|
|
30
|
+
if (lastEntry != null) {
|
|
31
|
+
callback(lastEntry);
|
|
32
|
+
}
|
|
33
|
+
return () => {
|
|
34
|
+
entrySubscribers.delete(callback);
|
|
35
|
+
};
|
|
36
|
+
},
|
|
37
|
+
subscribeEvents(callback) {
|
|
38
|
+
eventSubscribers.add(callback);
|
|
39
|
+
return () => {
|
|
40
|
+
eventSubscribers.delete(callback);
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
historyLimit,
|
|
44
|
+
};
|
|
45
|
+
function installBridge() {
|
|
46
|
+
if (bridgeInstalled || globalObject == null) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
globalObject[BRIDGE_KEY] = bridge;
|
|
50
|
+
bridgeInstalled = true;
|
|
51
|
+
}
|
|
52
|
+
function removeBridge() {
|
|
53
|
+
if (!bridgeInstalled || globalObject == null) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (Object.prototype.hasOwnProperty.call(globalObject, BRIDGE_KEY) &&
|
|
57
|
+
globalObject[BRIDGE_KEY] === bridge) {
|
|
58
|
+
globalObject[BRIDGE_KEY] = undefined;
|
|
59
|
+
}
|
|
60
|
+
bridgeInstalled = false;
|
|
61
|
+
}
|
|
62
|
+
installBridge();
|
|
63
|
+
function publishEvent(event) {
|
|
64
|
+
events = [...events, event];
|
|
65
|
+
if (events.length > historyLimit) {
|
|
66
|
+
events = events.slice(-historyLimit);
|
|
67
|
+
}
|
|
68
|
+
eventSubscribers.forEach((subscriber) => {
|
|
69
|
+
try {
|
|
70
|
+
subscriber(event);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function publishEntry(entry) {
|
|
77
|
+
lastEntry = entry;
|
|
78
|
+
entrySubscribers.forEach((subscriber) => {
|
|
79
|
+
try {
|
|
80
|
+
subscriber(entry);
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
onEvent(event) {
|
|
88
|
+
if (disposed) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (!isObject(event)) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
publishEvent(event);
|
|
95
|
+
},
|
|
96
|
+
onEntryChange(entry) {
|
|
97
|
+
if (disposed) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (!isObject(entry)) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
publishEntry(entry);
|
|
104
|
+
},
|
|
105
|
+
dispose() {
|
|
106
|
+
if (disposed) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
disposed = true;
|
|
110
|
+
eventSubscribers.clear();
|
|
111
|
+
entrySubscribers.clear();
|
|
112
|
+
events = [];
|
|
113
|
+
lastEntry = null;
|
|
114
|
+
removeBridge();
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHNCcmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5zdHJ1bWVudGF0aW9uL2FkYXB0ZXJzL2RldnRvb2xzQnJpZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDO0FBQ3hDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBa0JsQyxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDckQsQ0FBQztBQU9ELE1BQU0sVUFBVSxtQ0FBbUMsQ0FDakQsVUFBaUMsRUFBRTtJQUVuQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLHFCQUFxQixDQUFDO0lBRW5FLElBQUksWUFBaUQsQ0FBQztJQUN0RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDM0IsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDaEMsQ0FBQztTQUFNLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDekMsWUFBWSxHQUFHLE1BQTRDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQWdDLENBQUM7SUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBd0MsQ0FBQztJQUV6RSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksU0FBUyxHQUErQixJQUFJLENBQUM7SUFDakQsSUFBSSxNQUFNLEdBQWtCLEVBQUUsQ0FBQztJQUUvQixNQUFNLE1BQU0sR0FBbUI7UUFDN0IsUUFBUTtZQUNOLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxTQUFTO1lBQ1AsT0FBTyxNQUFNLENB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QyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsT0FBTztZQUNMLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTztZQUNULENBQUM7WUFDRCxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDWixTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLFlBQVksRUFBRSxDQUFDO1FBQ2pCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgSW5zdHJ1bWVudGF0aW9uQVBJLFxuICBSb3V0ZXJFbnRyeVNuYXBzaG90LFxuICBSb3V0ZXJFdmVudCxcbn0gZnJvbSAnLi4vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuY29uc3QgQlJJREdFX0tFWSA9ICdfX1BMVU1JTEVfUk9VVEVSX18nO1xuY29uc3QgREVGQVVMVF9ISVNUT1JZX0xJTUlUID0gMjAwO1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc0JyaWRnZU9wdGlvbnMgPSB7XG4gIGhpc3RvcnlMaW1pdD86IG51bWJlcjtcbiAgZ2xvYmFsPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc0JyaWRnZSA9IHtcbiAgZ2V0RW50cnk6ICgpID0+IFJvdXRlckVudHJ5U25hcHNob3QgfCBudWxsO1xuICBnZXRFdmVudHM6ICgpID0+IFJvdXRlckV2ZW50W107XG4gIHN1YnNjcmliZUVudHJpZXM6IChcbiAgICBjYWxsYmFjazogKGVudHJ5OiBSb3V0ZXJFbnRyeVNuYXBzaG90KSA9PiB2b2lkLFxuICApID0+ICgpID0+IHZvaWQ7XG4gIHN1YnNjcmliZUV2ZW50czogKGNhbGxiYWNrOiAoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB2b2lkKSA9PiAoKSA9PiB2b2lkO1xuICBoaXN0b3J5TGltaXQ6IG51bWJlcjtcbn07XG5cbi8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSB2YWx1ZSBpcyBhIG5vbi1udWxsIG9iamVjdC4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbDtcbn1cblxuLyoqXG4gKiBEZXZUb29scy1vcmllbnRlZCBpbnN0cnVtZW50YXRpb24gdGhhdCBwdWJsaXNoZXMgYSBicmlkZ2Ugb24gdGhlIGdsb2JhbFxuICogb2JqZWN0IChieSBkZWZhdWx0IGB3aW5kb3cuX19QTFVNSUxFX1JPVVRFUl9fYCkuIENvbnN1bWVycyBzdWNoIGFzIHRoZSBDaHJvbWVcbiAqIGV4dGVuc2lvbiBjYW4gc3Vic2NyaWJlIHRvIGV2ZW50cyBvciBpbnNwZWN0IHRoZSBsYXRlc3Qgcm91dGVyIGVudHJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGV2dG9vbHNCcmlkZ2VJbnN0cnVtZW50YXRpb24oXG4gIG9wdGlvbnM6IERldnRvb2xzQnJpZGdlT3B0aW9ucyA9IHt9LFxuKTogSW5zdHJ1bWVudGF0aW9uQVBJIHtcbiAgY29uc3QgaGlzdG9yeUxpbWl0ID0gb3B0aW9ucy5oaXN0b3J5TGltaXQgPz8gREVGQVVMVF9ISVNUT1JZX0xJTUlUO1xuXG4gIGxldCBnbG9iYWxPYmplY3Q6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICBpZiAob3B0aW9ucy5nbG9iYWwgIT0gbnVsbCkge1xuICAgIGdsb2JhbE9iamVjdCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgZ2xvYmFsT2JqZWN0ID0gd2luZG93IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH1cblxuICBjb25zdCBldmVudFN1YnNjcmliZXJzID0gbmV3IFNldDwoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiB2b2lkPigpO1xuICBjb25zdCBlbnRyeVN1YnNjcmliZXJzID0gbmV3IFNldDwoZW50cnk6IFJvdXRlckVudHJ5U25hcHNob3QpID0+IHZvaWQ+KCk7XG5cbiAgbGV0IGRpc3Bvc2VkID0gZmFsc2U7XG4gIGxldCBicmlkZ2VJbnN0YWxsZWQgPSBmYWxzZTtcbiAgbGV0IGxhc3RFbnRyeTogUm91dGVyRW50cnlTbmFwc2hvdCB8IG51bGwgPSBudWxsO1xuICBsZXQgZXZlbnRzOiBSb3V0ZXJFdmVudFtdID0gW107XG5cbiAgY29uc3QgYnJpZGdlOiBEZXZ0b29sc0JyaWRnZSA9IHtcbiAgICBnZXRFbnRyeSgpIHtcbiAgICAgIHJldHVybiBsYXN0RW50cnk7XG4gICAgfSxcbiAgICBnZXRFdmVudHMoKSB7XG4gICAgICByZXR1cm4gZXZlbnRzLnNsaWNlKCk7XG4gICAgfSxcbiAgICBzdWJzY3JpYmVFbnRyaWVzKGNhbGxiYWNrKSB7XG4gICAgICBlbnRyeVN1YnNjcmliZXJzLmFkZChjYWxsYmFjayk7XG4gICAgICBpZiAobGFzdEVudHJ5ICE9IG51bGwpIHtcbiAgICAgICAgY2FsbGJhY2sobGFzdEVudHJ5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGVudHJ5U3Vic2NyaWJlcnMuZGVsZXRlKGNhbGxiYWNrKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBzdWJzY3JpYmVFdmVudHMoY2FsbGJhY2spIHtcbiAgICAgIGV2ZW50U3Vic2NyaWJlcnMuYWRkKGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGV2ZW50U3Vic2NyaWJlcnMuZGVsZXRlKGNhbGxiYWNrKTtcbiAgICAgIH07XG4gICAgfSxcbiAgICBoaXN0b3J5TGltaXQsXG4gIH07XG5cbiAgLyoqIFB1Ymxpc2hlcyB0aGUgYnJpZGdlIG9uIHRoZSBjaG9zZW4gZ2xvYmFsIG9iamVjdC4gKi9cbiAgZnVuY3Rpb24gaW5zdGFsbEJyaWRnZSgpOiB2b2lkIHtcbiAgICBpZiAoYnJpZGdlSW5zdGFsbGVkIHx8IGdsb2JhbE9iamVjdCA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGdsb2JhbE9iamVjdFtCUklER0VfS0VZXSA9IGJyaWRnZTtcbiAgICBicmlkZ2VJbnN0YWxsZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqIFJlbW92ZXMgdGhlIGJyaWRnZSBoYW5kbGUgZnJvbSB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNsZWFuaW5nIHVwLiAqL1xuICBmdW5jdGlvbiByZW1vdmVCcmlkZ2UoKTogdm9pZCB7XG4gICAgaWYgKCFicmlkZ2VJbnN0YWxsZWQgfHwgZ2xvYmFsT2JqZWN0ID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGdsb2JhbE9iamVjdCwgQlJJREdFX0tFWSkgJiZcbiAgICAgIGdsb2JhbE9iamVjdFtCUklER0VfS0VZXSA9PT0gYnJpZGdlXG4gICAgKSB7XG4gICAgICBnbG9iYWxPYmplY3RbQlJJREdFX0tFWV0gPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGJyaWRnZUluc3RhbGxlZCA9IGZhbHNlO1xuICB9XG5cbiAgaW5zdGFsbEJyaWRnZSgpO1xuXG4gIC8qKiBCcm9hZGNhc3RzIGFuIGluY29taW5nIHJvdXRlciBldmVudCB0byBEZXZUb29scyBzdWJzY3JpYmVycy4gKi9cbiAgZnVuY3Rpb24gcHVibGlzaEV2ZW50KGV2ZW50OiBSb3V0ZXJFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50cyA9IFsuLi5ldmVudHMsIGV2ZW50XTtcbiAgICBpZiAoZXZlbnRzLmxlbmd0aCA+IGhpc3RvcnlMaW1pdCkge1xuICAgICAgZXZlbnRzID0gZXZlbnRzLnNsaWNlKC1oaXN0b3J5TGltaXQpO1xuICAgIH1cbiAgICBldmVudFN1YnNjcmliZXJzLmZvckVhY2goKHN1YnNjcmliZXIpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN1YnNjcmliZXIoZXZlbnQpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIElnbm9yZSBzdWJzY3JpYmVyIGZhaWx1cmVzLlxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEJyb2FkY2FzdHMgdGhlIGxhdGVzdCByb3V0ZXIgZW50cnkgc25hcHNob3QuICovXG4gIGZ1bmN0aW9uIHB1Ymxpc2hFbnRyeShlbnRyeTogUm91dGVyRW50cnlTbmFwc2hvdCk6IHZvaWQge1xuICAgIGxhc3RFbnRyeSA9IGVudHJ5O1xuICAgIGVudHJ5U3Vic2NyaWJlcnMuZm9yRWFjaCgoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgc3Vic2NyaWJlcihlbnRyeSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gSWdub3JlIHN1YnNjcmliZXIgZmFpbHVyZXMuXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG9uRXZlbnQoZXZlbnQpIHtcbiAgICAgIGlmIChkaXNwb3NlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIWlzT2JqZWN0KGV2ZW50KSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwdWJsaXNoRXZlbnQoZXZlbnQpO1xuICAgIH0sXG4gICAgb25FbnRyeUNoYW5nZShlbnRyeSkge1xuICAgICAgaWYgKGRpc3Bvc2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghaXNPYmplY3QoZW50cnkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHB1Ymxpc2hFbnRyeShlbnRyeSk7XG4gICAgfSxcbiAgICBkaXNwb3NlKCkge1xuICAgICAgaWYgKGRpc3Bvc2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRpc3Bvc2VkID0gdHJ1ZTtcbiAgICAgIGV2ZW50U3Vic2NyaWJlcnMuY2xlYXIoKTtcbiAgICAgIGVudHJ5U3Vic2NyaWJlcnMuY2xlYXIoKTtcbiAgICAgIGV2ZW50cyA9IFtdO1xuICAgICAgbGFzdEVudHJ5ID0gbnVsbDtcbiAgICAgIHJlbW92ZUJyaWRnZSgpO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { InstrumentationAPI } from '../Instrumentation.js';
|
|
2
|
+
export type ConsoleLike = Pick<Console, 'log' | 'info' | 'warn' | 'error'>;
|
|
3
|
+
export type ConsoleLoggerOptions = {
|
|
4
|
+
level?: keyof ConsoleLike;
|
|
5
|
+
label?: string;
|
|
6
|
+
console?: ConsoleLike;
|
|
7
|
+
};
|
|
8
|
+
export declare function createConsoleLoggerInstrumentation(options?: ConsoleLoggerOptions): InstrumentationAPI;
|
|
9
|
+
export type { ConsoleLoggerOptions as LoggerOptions };
|
|
10
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../src/instrumentation/adapters/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AAE3E,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,WAAW,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,CAAC;AAMF,wBAAgB,kCAAkC,CAChD,OAAO,GAAE,oBAAyB,GACjC,kBAAkB,CA2BpB;AAED,YAAY,EAAE,oBAAoB,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export function createConsoleLoggerInstrumentation(options = {}) {
|
|
2
|
+
const { level = 'info', label = 'router', console: targetConsole = console, } = options;
|
|
3
|
+
const log = targetConsole[level];
|
|
4
|
+
function formatEvent(event) {
|
|
5
|
+
return [`[${label}] event:${event.kind}`, event];
|
|
6
|
+
}
|
|
7
|
+
function formatEntry(entry) {
|
|
8
|
+
return [`[${label}] entry`, entry];
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
onEvent(event) {
|
|
12
|
+
log.apply(targetConsole, formatEvent(event));
|
|
13
|
+
},
|
|
14
|
+
onEntryChange(entry) {
|
|
15
|
+
log.apply(targetConsole, formatEntry(entry));
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2luc3RydW1lbnRhdGlvbi9hZGFwdGVycy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JBLE1BQU0sVUFBVSxrQ0FBa0MsQ0FDaEQsVUFBZ0MsRUFBRTtJQUVsQyxNQUFNLEVBQ0osS0FBSyxHQUFHLE1BQU0sRUFDZCxLQUFLLEdBQUcsUUFBUSxFQUNoQixPQUFPLEVBQUUsYUFBYSxHQUFHLE9BQU8sR0FDakMsR0FBRyxPQUFPLENBQUM7SUFFWixNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFHakMsU0FBUyxXQUFXLENBQUMsS0FBa0I7UUFDckMsT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBR0QsU0FBUyxXQUFXLENBQUMsS0FBMEI7UUFDN0MsT0FBTyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLENBQUMsS0FBSztZQUNYLEdBQUcsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxhQUFhLENBQUMsS0FBSztZQUNqQixHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEluc3RydW1lbnRhdGlvbkFQSSxcbiAgUm91dGVyRW50cnlTbmFwc2hvdCxcbiAgUm91dGVyRXZlbnQsXG59IGZyb20gJy4uL0luc3RydW1lbnRhdGlvbi5qcyc7XG5cbmV4cG9ydCB0eXBlIENvbnNvbGVMaWtlID0gUGljazxDb25zb2xlLCAnbG9nJyB8ICdpbmZvJyB8ICd3YXJuJyB8ICdlcnJvcic+O1xuXG5leHBvcnQgdHlwZSBDb25zb2xlTG9nZ2VyT3B0aW9ucyA9IHtcbiAgbGV2ZWw/OiBrZXlvZiBDb25zb2xlTGlrZTtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGNvbnNvbGU/OiBDb25zb2xlTGlrZTtcbn07XG5cbi8qKlxuICogTGlnaHR3ZWlnaHQgaW5zdHJ1bWVudGF0aW9uIHRoYXQgbG9ncyByb3V0ZXIgZXZlbnRzIHRvIHRoZSBwcm92aWRlZCBjb25zb2xlLlxuICogVXNlZnVsIGR1cmluZyBkZXZlbG9wbWVudCBvciB3aGVuIGNvbXBvc2luZyBjdXN0b20gdG9vbGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGVMb2dnZXJJbnN0cnVtZW50YXRpb24oXG4gIG9wdGlvbnM6IENvbnNvbGVMb2dnZXJPcHRpb25zID0ge30sXG4pOiBJbnN0cnVtZW50YXRpb25BUEkge1xuICBjb25zdCB7XG4gICAgbGV2ZWwgPSAnaW5mbycsXG4gICAgbGFiZWwgPSAncm91dGVyJyxcbiAgICBjb25zb2xlOiB0YXJnZXRDb25zb2xlID0gY29uc29sZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgbG9nID0gdGFyZ2V0Q29uc29sZVtsZXZlbF07XG5cbiAgLyoqIEZvcm1hdHMgYW4gZXZlbnQgZW50cnkgZm9yIGxvZ2dpbmcuICovXG4gIGZ1bmN0aW9uIGZvcm1hdEV2ZW50KGV2ZW50OiBSb3V0ZXJFdmVudCk6IHVua25vd25bXSB7XG4gICAgcmV0dXJuIFtgWyR7bGFiZWx9XSBldmVudDoke2V2ZW50LmtpbmR9YCwgZXZlbnRdO1xuICB9XG5cbiAgLyoqIEZvcm1hdHMgdGhlIGxhdGVzdCByb3V0ZXIgZW50cnkgc25hcHNob3QgZm9yIGxvZ2dpbmcuICovXG4gIGZ1bmN0aW9uIGZvcm1hdEVudHJ5KGVudHJ5OiBSb3V0ZXJFbnRyeVNuYXBzaG90KTogdW5rbm93bltdIHtcbiAgICByZXR1cm4gW2BbJHtsYWJlbH1dIGVudHJ5YCwgZW50cnldO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbkV2ZW50KGV2ZW50KSB7XG4gICAgICBsb2cuYXBwbHkodGFyZ2V0Q29uc29sZSwgZm9ybWF0RXZlbnQoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uRW50cnlDaGFuZ2UoZW50cnkpIHtcbiAgICAgIGxvZy5hcHBseSh0YXJnZXRDb25zb2xlLCBmb3JtYXRFbnRyeShlbnRyeSkpO1xuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIHsgQ29uc29sZUxvZ2dlck9wdGlvbnMgYXMgTG9nZ2VyT3B0aW9ucyB9O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './Instrumentation.js';
|
|
2
|
+
export * from './adapters/logger.js';
|
|
3
|
+
export * from './adapters/devtoolsBridge.js';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5zdHJ1bWVudGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9JbnN0cnVtZW50YXRpb24uanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVycy9sb2dnZXIuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVycy9kZXZ0b29sc0JyaWRnZS5qcyc7XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/routing/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,yBAAyB,EAE9B,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/routing/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,yBAAyB,EAE9B,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAa3E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAmBT;AAKD,KAAK,KAAK,CAAC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IAE7E,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,EAAE,SAAS,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAEnC,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IAE9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAyBF,QAAA,MAAM,IAAI,0GA6JR,CAAC;AAEH,eAAe,IAAI,CAAC"}
|