@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.
Files changed (47) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +42 -21
  3. package/lib/esm/index.d.ts +1 -0
  4. package/lib/esm/index.d.ts.map +1 -1
  5. package/lib/esm/index.js +2 -1
  6. package/lib/esm/instrumentation/Instrumentation.d.ts +66 -0
  7. package/lib/esm/instrumentation/Instrumentation.d.ts.map +1 -0
  8. package/lib/esm/instrumentation/Instrumentation.js +59 -0
  9. package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts +14 -0
  10. package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -0
  11. package/lib/esm/instrumentation/adapters/devtoolsBridge.js +118 -0
  12. package/lib/esm/instrumentation/adapters/logger.d.ts +10 -0
  13. package/lib/esm/instrumentation/adapters/logger.d.ts.map +1 -0
  14. package/lib/esm/instrumentation/adapters/logger.js +19 -0
  15. package/lib/esm/instrumentation/index.d.ts +4 -0
  16. package/lib/esm/instrumentation/index.d.ts.map +1 -0
  17. package/lib/esm/instrumentation/index.js +4 -0
  18. package/lib/esm/routing/Link.d.ts.map +1 -1
  19. package/lib/esm/routing/Link.js +8 -17
  20. package/lib/esm/routing/createRouter.d.ts +2 -1
  21. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  22. package/lib/esm/routing/createRouter.js +184 -261
  23. package/lib/esm/tools.d.ts +6 -5
  24. package/lib/esm/tools.d.ts.map +1 -1
  25. package/lib/esm/tools.js +17 -34
  26. package/lib/esm/types.d.ts +7 -49
  27. package/lib/esm/types.d.ts.map +1 -1
  28. package/lib/esm/types.js +2 -28
  29. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  30. package/lib/types/index.d.ts +1 -0
  31. package/lib/types/index.d.ts.map +1 -1
  32. package/lib/types/instrumentation/Instrumentation.d.ts +66 -0
  33. package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -0
  34. package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts +14 -0
  35. package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -0
  36. package/lib/types/instrumentation/adapters/logger.d.ts +10 -0
  37. package/lib/types/instrumentation/adapters/logger.d.ts.map +1 -0
  38. package/lib/types/instrumentation/index.d.ts +4 -0
  39. package/lib/types/instrumentation/index.d.ts.map +1 -0
  40. package/lib/types/routing/Link.d.ts.map +1 -1
  41. package/lib/types/routing/createRouter.d.ts +2 -1
  42. package/lib/types/routing/createRouter.d.ts.map +1 -1
  43. package/lib/types/tools.d.ts +6 -5
  44. package/lib/types/tools.d.ts.map +1 -1
  45. package/lib/types/types.d.ts +7 -49
  46. package/lib/types/types.d.ts.map +1 -1
  47. package/package.json +33 -18
package/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ ## 1.0.0 - First stable version
6
+
7
+ - First public release of `@plumile/router`.
package/README.md CHANGED
@@ -21,10 +21,11 @@ npm install @plumile/router
21
21
 
22
22
  ## Peer Dependencies
23
23
 
24
- This package requires the following peer dependencies:
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 react-relay relay-runtime @types/react @types/react-dom @types/react-relay
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: [docs/index.md](../../docs/index.md)
41
- - Relay integration walkthrough: [docs/router-relay.md](../../docs/router-relay.md)
42
- - Examples: [EXAMPLES.md](./EXAMPLES.md)
43
- - Migration strategies: [MIGRATION.md](./MIGRATION.md)
44
- - DevTools extension usage: [docs/router-devtools-extension.md](../../docs/router-devtools-extension.md)
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 | Signature | Purpose | Example |
134
- | --------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | --------------------------- |
135
- | `useNavigate()` | `() => Navigate` | Imperative navigation with type-safe filters + params. | `const navigate = useNavigate(); navigate({ pathname: '/products', filters: { page: { eq: 2 } } });` |
136
- | `useFilters(schema)` | `(schema) => [filters, actions]` | Read/mutate filters derived from the given schema; actions include `set`, `remove`, `merge`, `clear`. | `const [filters, actions] = useFilters(productFilters); actions.set('price', 'gt', 10);` |
137
- | `useQuery()` | `() => Record<string, string | string[]>` | Raw query aggregation (legacy/simple use). | `const query = useQuery();` |
138
- | `useQueryState(key, opts?)` | `(key, options?) => [value, setValue]` | Two-way binding for a single query parameter with default/replace options. | `const [page, setPage] = useQueryState('page', { defaultValue: 1 });` |
139
- | `useFilterDiagnostics()` | `() => Diagnostic[]` | Surface parsing issues (unknown field/operator) for UI display or logging. | `const diagnostics = useFilterDiagnostics();` |
140
- | `useAllQuery(opts?)` | `(options?) => QueryLike` | Access filters + raw query merged together, useful for debugging or incremental migrations. | `const all = 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 & Debugging
370
+ #### Inspection & Instrumentation
370
371
 
371
- Activez le bridge de debug en développement avec l’option `debug` :
372
+ Activez l’instrumentation en développement pour exposer un bridge DevTools :
372
373
 
373
374
  ```ts
374
- createRouter(routes, { debug: true });
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
- Cela expose `window.__PLUMILE_ROUTER__` avec `get()` et `subscribe()` (non présent en production).
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 (
@@ -5,4 +5,5 @@ export * from './builder.js';
5
5
  export * from './ResourcePage.js';
6
6
  export * from './tools.js';
7
7
  export type * from './types.js';
8
+ export * from './instrumentation/index.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLG9CQUFvQixDQUFDO0FBR25DLGNBQWMsb0JBQW9CLENBQUM7QUFHbkMsY0FBYyxjQUFjLENBQUM7QUFHN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEV4cG9ydCBlcnJvciBoYW5kbGluZyB1dGlsaXRpZXNcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3JzL2luZGV4LmpzJztcblxuLy8gRXhwb3J0IGJyb3dzZXIgaGlzdG9yeSBtYW5hZ2VtZW50XG5leHBvcnQgKiBmcm9tICcuL2hpc3RvcnkvaW5kZXguanMnO1xuXG4vLyBFeHBvcnQgcm91dGluZyBjb21wb25lbnRzIGFuZCB1dGlsaXRpZXNcbmV4cG9ydCAqIGZyb20gJy4vcm91dGluZy9pbmRleC5qcyc7XG5cbi8vIEV4cG9ydCByb3V0ZSBidWlsZGluZyB1dGlsaXRpZXNcbmV4cG9ydCAqIGZyb20gJy4vYnVpbGRlci5qcyc7XG5cbi8vIEV4cG9ydCByZXNvdXJjZSBwYWdlIG1hbmFnZW1lbnQgZm9yIGxhenkgbG9hZGluZ1xuZXhwb3J0ICogZnJvbSAnLi9SZXNvdXJjZVBhZ2UuanMnO1xuXG4vLyBFeHBvcnQgdXRpbGl0eSBmdW5jdGlvbnNcbmV4cG9ydCAqIGZyb20gJy4vdG9vbHMuanMnO1xuXG4vLyBFeHBvcnQgYWxsIFR5cGVTY3JpcHQgdHlwZXNcbmV4cG9ydCB0eXBlICogZnJvbSAnLi90eXBlcy5qcyc7XG4iXX0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2dG9vbHNCcmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5zdHJ1bWVudGF0aW9uL2FkYXB0ZXJzL2RldnRvb2xzQnJpZGdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDO0FBQ3hDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBa0JsQyxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDckQsQ0FBQztBQU9ELE1BQU0sVUFBVSxtQ0FBbUMsQ0FDakQsVUFBaUMsRUFBRTtJQUVuQyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLHFCQUFxQixDQUFDO0lBRW5FLElBQUksWUFBaUQsQ0FBQztJQUN0RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDM0IsWUFBWSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDaEMsQ0FBQztTQUFNLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDekMsWUFBWSxHQUFHLE1BQTRDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQWdDLENBQUM7SUFDakUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBd0MsQ0FBQztJQUV6RSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksU0FBUyxHQUErQixJQUFJLENBQUM7SUFDakQsSUFBSSxNQUFNLEdBQWtCLEVBQUUsQ0FBQztJQUUvQixNQUFNLE1BQU0sR0FBbUI7UUFDN0IsUUFBUTtZQUNOLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxTQUFTO1lBQ1AsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDeEIsQ0FBQztRQUNELGdCQUFnQixDQUFDLFFBQVE7WUFDdkIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN0QixRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUNELE9BQU8sR0FBRyxFQUFFO2dCQUNWLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUM7UUFDSixDQUFDO1FBQ0QsZUFBZSxDQUFDLFFBQVE7WUFDdEIsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9CLE9BQU8sR0FBRyxFQUFFO2dCQUNWLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQUM7UUFDSixDQUFDO1FBQ0QsWUFBWTtLQUNiLENBQUM7SUFHRixTQUFTLGFBQWE7UUFDcEIsSUFBSSxlQUFlLElBQUksWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLE9BQU87UUFDVCxDQUFDO1FBQ0QsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNsQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFHRCxTQUFTLFlBQVk7UUFDbkIsSUFBSSxDQUFDLGVBQWUsSUFBSSxZQUFZLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0MsT0FBTztRQUNULENBQUM7UUFDRCxJQUNFLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO1lBQzlELFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNLEVBQ25DLENBQUM7WUFDRCxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxhQUFhLEVBQUUsQ0FBQztJQUdoQixTQUFTLFlBQVksQ0FBQyxLQUFrQjtRQUN0QyxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUM7WUFDakMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDO2dCQUNILFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQUMsTUFBTSxDQUFDO1lBRVQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELFNBQVMsWUFBWSxDQUFDLEtBQTBCO1FBQzlDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDO2dCQUNILFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwQixDQUFDO1lBQUMsTUFBTSxDQUFDO1lBRVQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLENBQUMsS0FBSztZQUNYLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU87WUFDVCxDQUFDO1lBQ0QsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxhQUFhLENBQUMsS0FBSztZQUNqQixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixPQUFPO1lBQ1QsQ0FBQztZQUNELFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsT0FBTztZQUNMLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTztZQUNULENBQUM7WUFDRCxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDWixTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLFlBQVksRUFBRSxDQUFDO1FBQ2pCLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgSW5zdHJ1bWVudGF0aW9uQVBJLFxuICBSb3V0ZXJFbnRyeVNuYXBzaG90LFxuICBSb3V0ZXJFdmVudCxcbn0gZnJvbSAnLi4vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuY29uc3QgQlJJREdFX0tFWSA9ICdfX1BMVU1JTEVfUk9VVEVSX18nO1xuY29uc3QgREVGQVVMVF9ISVNUT1JZX0xJTUlUID0gMjAwO1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc0JyaWRnZU9wdGlvbnMgPSB7XG4gIGhpc3RvcnlMaW1pdD86IG51bWJlcjtcbiAgZ2xvYmFsPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBEZXZ0b29sc0JyaWRnZSA9IHtcbiAgZ2V0RW50cnk6ICgpID0+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,4 @@
1
+ export * from './Instrumentation.js';
2
+ export * from './adapters/logger.js';
3
+ export * from './adapters/devtoolsBridge.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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;AAc3E,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,0GAsLR,CAAC;AAEH,eAAe,IAAI,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"}