@fjell/registry 4.4.30 → 4.4.31
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/build.js +12 -0
- package/dist/Coordinate.d.ts +8 -0
- package/dist/Coordinate.d.ts.map +1 -0
- package/dist/Instance.d.ts +26 -0
- package/dist/Instance.d.ts.map +1 -0
- package/dist/Registry.d.ts +4 -0
- package/dist/Registry.d.ts.map +1 -0
- package/dist/RegistryHub.d.ts +4 -0
- package/dist/RegistryHub.d.ts.map +1 -0
- package/dist/RegistryStats.d.ts +105 -0
- package/dist/RegistryStats.d.ts.map +1 -0
- package/dist/errors/CoordinateError.d.ts +29 -0
- package/dist/errors/CoordinateError.d.ts.map +1 -0
- package/dist/errors/InstanceError.d.ts +43 -0
- package/dist/errors/InstanceError.d.ts.map +1 -0
- package/dist/errors/RegistryError.d.ts +32 -0
- package/dist/errors/RegistryError.d.ts.map +1 -0
- package/dist/errors/RegistryHubError.d.ts +40 -0
- package/dist/errors/RegistryHubError.d.ts.map +1 -0
- package/dist/errors/index.d.ts +5 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/types.d.ts +114 -0
- package/dist/types.d.ts.map +1 -0
- package/docs/timing-range.svg +41 -41
- package/package.json +3 -3
package/build.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import { build } from 'esbuild';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
|
|
4
|
+
// Generate TypeScript declarations first
|
|
5
|
+
console.log('Generating TypeScript declarations...');
|
|
6
|
+
try {
|
|
7
|
+
execSync('npx tsc --emitDeclarationOnly', { stdio: 'inherit' });
|
|
8
|
+
console.log('TypeScript declarations generated successfully!');
|
|
9
|
+
} catch (error) {
|
|
10
|
+
console.error('Failed to generate TypeScript declarations:', error.message);
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
2
13
|
|
|
3
14
|
// Build cross-platform version that works in both Node.js and browser
|
|
4
15
|
console.log('Building cross-platform version...');
|
|
@@ -23,4 +34,5 @@ await build({
|
|
|
23
34
|
|
|
24
35
|
console.log('Build completed successfully!');
|
|
25
36
|
console.log(`- Cross-platform build: dist/index.js`);
|
|
37
|
+
console.log(`- TypeScript declarations: dist/index.d.ts`);
|
|
26
38
|
console.log('This build works in both Node.js and browser environments');
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ItemTypeArray } from "@fjell/core";
|
|
2
|
+
export interface Coordinate<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> {
|
|
3
|
+
kta: ItemTypeArray<S, L1, L2, L3, L4, L5>;
|
|
4
|
+
scopes: string[];
|
|
5
|
+
toString: () => string;
|
|
6
|
+
}
|
|
7
|
+
export declare const createCoordinate: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(kta: ItemTypeArray<S, L1, L2, L3, L4, L5> | S, scopes?: string[]) => Coordinate<S, L1, L2, L3, L4, L5>;
|
|
8
|
+
//# sourceMappingURL=Coordinate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Coordinate.d.ts","sourceRoot":"","sources":["../src/Coordinate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,WAAW,UAAU,CACzB,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK;IAEzB,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,GAC3B,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,KAAK,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAQ,MAAM,EAAO,KAAG,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAQxG,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Registry } from "./Registry";
|
|
2
|
+
import { Coordinate } from "./Coordinate";
|
|
3
|
+
/**
|
|
4
|
+
* The Instance interface represents a data model instance that provides access to both its structure
|
|
5
|
+
* and operations. It serves as the main interface for interacting with data models in the system.
|
|
6
|
+
*
|
|
7
|
+
* The interface consists of two main components:
|
|
8
|
+
* 1. definition: Defines the structure, keys, and relationships of the data model
|
|
9
|
+
* 2. operations: Provides methods for interacting with the data model (get, find, all, etc.)
|
|
10
|
+
* 3. registry: Manages the registration and lookup of Library instances
|
|
11
|
+
*
|
|
12
|
+
* The Instance interface is generic and supports up to 5 levels of location hierarchy (L1-L5)
|
|
13
|
+
* for contained instances, allowing for complex nested data structures.
|
|
14
|
+
*
|
|
15
|
+
* @template V - The type of the data model item, extending Item
|
|
16
|
+
* @template S - The string literal type representing the model's key type
|
|
17
|
+
* @template L1-L5 - Optional string literal types for location hierarchy levels
|
|
18
|
+
*/
|
|
19
|
+
export interface Instance<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> {
|
|
20
|
+
coordinate: Coordinate<S, L1, L2, L3, L4, L5>;
|
|
21
|
+
/** The registry object that manages the registration and lookup of model instances */
|
|
22
|
+
registry: Registry;
|
|
23
|
+
}
|
|
24
|
+
export declare const createInstance: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(registry: Registry, coordinate: Coordinate<S, L1, L2, L3, L4, L5>) => Instance<S, L1, L2, L3, L4, L5>;
|
|
25
|
+
export declare const isInstance: (instance: any) => instance is Instance<any, any, any, any, any, any>;
|
|
26
|
+
//# sourceMappingURL=Instance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Instance.d.ts","sourceRoot":"","sources":["../src/Instance.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,QAAQ,CACvB,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK;IAEzB,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAE9C,sFAAsF;IACtF,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,GACzB,CAAC,SAAS,MAAM,EAChB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EACzB,EAAE,SAAS,MAAM,GAAG,KAAK,EAEzB,UAAU,QAAQ,EAClB,YAAY,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,KAC5C,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAGhC,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,UAAU,GAAG,KAAG,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAK3F,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../src/Registry.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,QAAQ,EACR,WAAW,EAEZ,MAAM,SAAS,CAAC;AAIjB,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAiCvF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,cAAc,WAAW,KAAG,QAoNxE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegistryHub.d.ts","sourceRoot":"","sources":["../src/RegistryHub.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqD,WAAW,EAAE,MAAM,SAAS,CAAC;AAUzF,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAQ3C,eAAO,MAAM,iBAAiB,QAAO,WAmHpC,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { AllItemTypeArrays } from '@fjell/core';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a service client (another service making the request)
|
|
4
|
+
*/
|
|
5
|
+
export interface ServiceClient {
|
|
6
|
+
/** The type of registry where the calling service is registered */
|
|
7
|
+
registryType: string;
|
|
8
|
+
/** The coordinate of the calling service */
|
|
9
|
+
coordinate: {
|
|
10
|
+
kta: string[];
|
|
11
|
+
scopes: string[];
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Represents either a service or application client
|
|
16
|
+
*/
|
|
17
|
+
export type ClientIdentifier = ServiceClient | string;
|
|
18
|
+
/**
|
|
19
|
+
* Represents a specific coordinate call with both kta and scopes
|
|
20
|
+
*/
|
|
21
|
+
export interface CoordinateCallRecord {
|
|
22
|
+
/** The key type array that was requested */
|
|
23
|
+
kta: string[];
|
|
24
|
+
/** The scopes that were requested (empty array if no scopes) */
|
|
25
|
+
scopes: string[];
|
|
26
|
+
/** Number of times this exact combination was called */
|
|
27
|
+
count: number;
|
|
28
|
+
/** Breakdown of calls by client */
|
|
29
|
+
clientCalls: ClientCallRecord[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Represents calls from a specific client
|
|
33
|
+
*/
|
|
34
|
+
export interface ClientCallRecord {
|
|
35
|
+
/** The client that made the calls */
|
|
36
|
+
client: ClientIdentifier;
|
|
37
|
+
/** Number of calls from this client */
|
|
38
|
+
count: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Statistics about Registry get() method calls with detailed coordinate tracking
|
|
42
|
+
*/
|
|
43
|
+
export interface RegistryStatistics {
|
|
44
|
+
/** Total number of get() calls made on this registry */
|
|
45
|
+
totalGetCalls: number;
|
|
46
|
+
/** Detailed records of each unique coordinate combination and their call counts */
|
|
47
|
+
coordinateCallRecords: CoordinateCallRecord[];
|
|
48
|
+
/** Summary of calls by client type */
|
|
49
|
+
clientSummary: {
|
|
50
|
+
/** Total calls from services (service-to-service) */
|
|
51
|
+
serviceCalls: number;
|
|
52
|
+
/** Total calls from applications (direct application calls) */
|
|
53
|
+
applicationCalls: number;
|
|
54
|
+
/** Total calls with no client specified */
|
|
55
|
+
unidentifiedCalls: number;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Internal class for tracking Registry statistics with complex coordinate combinations and client tracking
|
|
60
|
+
*/
|
|
61
|
+
export declare class RegistryStats {
|
|
62
|
+
private totalCalls;
|
|
63
|
+
private coordinateCalls;
|
|
64
|
+
/**
|
|
65
|
+
* Records a get() call for the specified coordinate and client
|
|
66
|
+
*/
|
|
67
|
+
recordGetCall<S extends string = any, L1 extends string = any | never, L2 extends string = any | never, L3 extends string = any | never, L4 extends string = any | never, L5 extends string = any | never>(kta: AllItemTypeArrays<S, L1, L2, L3, L4, L5>, scopes?: string[], client?: ClientIdentifier): void;
|
|
68
|
+
/**
|
|
69
|
+
* Gets the current statistics snapshot
|
|
70
|
+
*/
|
|
71
|
+
getStatistics(): RegistryStatistics;
|
|
72
|
+
/**
|
|
73
|
+
* Gets call count for a specific coordinate combination
|
|
74
|
+
*/
|
|
75
|
+
getCallCount(kta: string[], scopes?: string[]): number;
|
|
76
|
+
/**
|
|
77
|
+
* Gets call count for a specific coordinate combination from a specific client
|
|
78
|
+
*/
|
|
79
|
+
getCallCountByClient(kta: string[], scopes?: string[], client?: ClientIdentifier): number;
|
|
80
|
+
/**
|
|
81
|
+
* Gets total calls for a specific kta (across all scopes)
|
|
82
|
+
*/
|
|
83
|
+
getTotalCallsForKta(kta: string[]): number;
|
|
84
|
+
/**
|
|
85
|
+
* Gets all unique kta paths that have been called
|
|
86
|
+
*/
|
|
87
|
+
getCalledKtaPaths(): string[][];
|
|
88
|
+
/**
|
|
89
|
+
* Creates a normalized scope key from scopes array
|
|
90
|
+
*/
|
|
91
|
+
private createScopeKey;
|
|
92
|
+
/**
|
|
93
|
+
* Parses a scope key back to scopes array
|
|
94
|
+
*/
|
|
95
|
+
private parseScopeKey;
|
|
96
|
+
/**
|
|
97
|
+
* Creates a normalized client key from client identifier
|
|
98
|
+
*/
|
|
99
|
+
private createClientKey;
|
|
100
|
+
/**
|
|
101
|
+
* Parses a client key back to client identifier
|
|
102
|
+
*/
|
|
103
|
+
private parseClientKey;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=RegistryStats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegistryStats.d.ts","sourceRoot":"","sources":["../src/RegistryStats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,UAAU,EAAE;QACV,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG,MAAM,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4CAA4C;IAC5C,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,MAAM,EAAE,gBAAgB,CAAC;IACzB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;IAC9C,sCAAsC;IACtC,aAAa,EAAE;QACb,qDAAqD;QACrD,YAAY,EAAE,MAAM,CAAC;QACrB,+DAA+D;QAC/D,gBAAgB,EAAE,MAAM,CAAC;QACzB,2CAA2C;QAC3C,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAK;IAEvB,OAAO,CAAC,eAAe,CAAuD;IAE9E;;OAEG;IACH,aAAa,CACX,CAAC,SAAS,MAAM,GAAG,GAAG,EACtB,EAAE,SAAS,MAAM,GAAG,GAAG,GAAG,KAAK,EAC/B,EAAE,SAAS,MAAM,GAAG,GAAG,GAAG,KAAK,EAC/B,EAAE,SAAS,MAAM,GAAG,GAAG,GAAG,KAAK,EAC/B,EAAE,SAAS,MAAM,GAAG,GAAG,GAAG,KAAK,EAC/B,EAAE,SAAS,MAAM,GAAG,GAAG,GAAG,KAAK,EAC/B,GAAG,EAAE,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,IAAI;IAqBpG;;OAEG;IACH,aAAa,IAAI,kBAAkB;IAgDnC;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAiBtD;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAczF;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM;IAc1C;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE,EAAE;IAQ/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAYvB;;OAEG;IACH,OAAO,CAAC,cAAc;CA0BvB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { RegistryError } from './RegistryError';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for coordinate-related errors
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class CoordinateError extends RegistryError {
|
|
6
|
+
readonly kta?: any;
|
|
7
|
+
readonly scopes?: string[];
|
|
8
|
+
constructor(message: string, kta?: any, scopes?: string[], context?: Record<string, any>);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Thrown when coordinate creation fails due to invalid parameters
|
|
12
|
+
*/
|
|
13
|
+
export declare class InvalidCoordinateError extends CoordinateError {
|
|
14
|
+
constructor(kta: any, scopes: string[], reason: string, context?: Record<string, any>);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Thrown when KTA (Key Type Array) is invalid
|
|
18
|
+
*/
|
|
19
|
+
export declare class InvalidKTAError extends CoordinateError {
|
|
20
|
+
constructor(kta: any, reason: string, context?: Record<string, any>);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Thrown when scopes array contains invalid values
|
|
24
|
+
*/
|
|
25
|
+
export declare class InvalidScopesError extends CoordinateError {
|
|
26
|
+
readonly invalidScopes: any[];
|
|
27
|
+
constructor(scopes: any[], invalidScopes: any[], reason: string, context?: Record<string, any>);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=CoordinateError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoordinateError.d.ts","sourceRoot":"","sources":["../../src/errors/CoordinateError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,8BAAsB,eAAgB,SAAQ,aAAa;IACzD,SAAgB,GAAG,CAAC,EAAE,GAAG,CAAC;IAC1B,SAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAKzF;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,eAAe;gBAC7C,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAStF;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,eAAe;gBACtC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CASpE;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,eAAe;IACrD,SAAgB,aAAa,EAAE,GAAG,EAAE,CAAC;gBAEzB,MAAM,EAAE,GAAG,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAU/F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { RegistryError } from './RegistryError';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for instance-related errors
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class InstanceError extends RegistryError {
|
|
6
|
+
readonly keyPath: string[];
|
|
7
|
+
constructor(message: string, keyPath: string[], registryType?: string, context?: Record<string, any>);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when an instance cannot be found for a given key path
|
|
11
|
+
*/
|
|
12
|
+
export declare class InstanceNotFoundError extends InstanceError {
|
|
13
|
+
readonly missingKey?: string;
|
|
14
|
+
constructor(keyPath: string[], missingKey?: string, registryType?: string, context?: Record<string, any>);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Thrown when no instances are registered for a key path that exists in the tree
|
|
18
|
+
*/
|
|
19
|
+
export declare class NoInstancesRegisteredError extends InstanceError {
|
|
20
|
+
constructor(keyPath: string[], registryType?: string, context?: Record<string, any>);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Thrown when no instances are available (empty instances array)
|
|
24
|
+
*/
|
|
25
|
+
export declare class NoInstancesAvailableError extends InstanceError {
|
|
26
|
+
constructor(keyPath: string[], registryType?: string, context?: Record<string, any>);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Thrown when no instance matches the requested scopes
|
|
30
|
+
*/
|
|
31
|
+
export declare class ScopeNotFoundError extends InstanceError {
|
|
32
|
+
readonly requestedScopes: string[];
|
|
33
|
+
readonly availableScopes: string[][];
|
|
34
|
+
constructor(keyPath: string[], requestedScopes: string[], availableScopes?: string[][], registryType?: string);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Thrown when a key path has no children but children are expected
|
|
38
|
+
*/
|
|
39
|
+
export declare class NoChildrenAvailableError extends InstanceError {
|
|
40
|
+
readonly parentKey: string;
|
|
41
|
+
constructor(keyPath: string[], parentKey: string, registryType?: string, context?: Record<string, any>);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=InstanceError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InstanceError.d.ts","sourceRoot":"","sources":["../../src/errors/InstanceError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,8BAAsB,aAAc,SAAQ,aAAa;IACvD,SAAgB,OAAO,EAAE,MAAM,EAAE,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAIrG;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAExB,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAWzG;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,aAAa;gBAC/C,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAUpF;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,aAAa;gBAC9C,OAAO,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAUpF;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,SAAgB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1C,SAAgB,eAAe,EAAE,MAAM,EAAE,EAAE,CAAC;gBAG1C,OAAO,EAAE,MAAM,EAAE,EACjB,eAAe,EAAE,MAAM,EAAE,EACzB,eAAe,GAAE,MAAM,EAAE,EAAO,EAChC,YAAY,CAAC,EAAE,MAAM;CAexB;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,aAAa;IACzD,SAAgB,SAAS,EAAE,MAAM,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAWvG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for all registry-related errors
|
|
3
|
+
*/
|
|
4
|
+
export declare abstract class RegistryError extends Error {
|
|
5
|
+
readonly registryType?: string;
|
|
6
|
+
readonly context?: Record<string, any>;
|
|
7
|
+
constructor(message: string, registryType?: string, context?: Record<string, any>);
|
|
8
|
+
getDetails(): string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Thrown when attempting to create a registry with invalid parameters
|
|
12
|
+
*/
|
|
13
|
+
export declare class RegistryCreationError extends RegistryError {
|
|
14
|
+
constructor(type: string, reason: string, context?: Record<string, any>);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Thrown when a factory function returns an invalid instance
|
|
18
|
+
*/
|
|
19
|
+
export declare class InvalidFactoryResultError extends RegistryError {
|
|
20
|
+
readonly keyPath: string[];
|
|
21
|
+
readonly factoryResult: any;
|
|
22
|
+
constructor(keyPath: string[], factoryResult: any, registryType?: string);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Thrown when attempting to register a non-instance object
|
|
26
|
+
*/
|
|
27
|
+
export declare class InvalidInstanceRegistrationError extends RegistryError {
|
|
28
|
+
readonly keyPath: string[];
|
|
29
|
+
readonly attemptedRegistration: any;
|
|
30
|
+
constructor(keyPath: string[], attemptedRegistration: any, registryType?: string);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=RegistryError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegistryError.d.ts","sourceRoot":"","sources":["../../src/errors/RegistryError.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,8BAAsB,aAAc,SAAQ,KAAK;IAC/C,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAElC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAa1E,UAAU,IAAI,MAAM;CAa5B;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGxE;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,aAAa;IAC1D,SAAgB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClC,SAAgB,aAAa,EAAE,GAAG,CAAC;gBAEvB,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM;CAWzE;AAED;;GAEG;AACH,qBAAa,gCAAiC,SAAQ,aAAa;IACjE,SAAgB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClC,SAAgB,qBAAqB,EAAE,GAAG,CAAC;gBAE/B,OAAO,EAAE,MAAM,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM;CAWjF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { RegistryError } from './RegistryError';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for registry hub-related errors
|
|
4
|
+
*/
|
|
5
|
+
export declare abstract class RegistryHubError extends RegistryError {
|
|
6
|
+
readonly hubType?: string;
|
|
7
|
+
constructor(message: string, hubType?: string, context?: Record<string, any>);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when attempting to register a registry with a type that already exists
|
|
11
|
+
*/
|
|
12
|
+
export declare class DuplicateRegistryTypeError extends RegistryHubError {
|
|
13
|
+
readonly duplicateType: string;
|
|
14
|
+
constructor(type: string, context?: Record<string, any>);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Thrown when attempting to access a registry type that doesn't exist
|
|
18
|
+
*/
|
|
19
|
+
export declare class RegistryTypeNotFoundError extends RegistryHubError {
|
|
20
|
+
readonly requestedType: string;
|
|
21
|
+
readonly availableTypes: string[];
|
|
22
|
+
constructor(requestedType: string, availableTypes?: string[], context?: Record<string, any>);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Thrown when a registry factory function fails to create a valid registry
|
|
26
|
+
*/
|
|
27
|
+
export declare class RegistryFactoryError extends RegistryHubError {
|
|
28
|
+
readonly factoryError: Error;
|
|
29
|
+
readonly attemptedType: string;
|
|
30
|
+
constructor(type: string, factoryError: Error, context?: Record<string, any>);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Thrown when a factory returns an invalid registry object
|
|
34
|
+
*/
|
|
35
|
+
export declare class InvalidRegistryFactoryResultError extends RegistryHubError {
|
|
36
|
+
readonly factoryResult: any;
|
|
37
|
+
readonly attemptedType: string;
|
|
38
|
+
constructor(type: string, factoryResult: any, context?: Record<string, any>);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=RegistryHubError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegistryHubError.d.ts","sourceRoot":"","sources":["../../src/errors/RegistryHubError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;GAEG;AACH,8BAAsB,gBAAiB,SAAQ,aAAa;IAC1D,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAK7E;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,SAAgB,aAAa,EAAE,MAAM,CAAC;gBAE1B,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CASxD;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,gBAAgB;IAC7D,SAAgB,aAAa,EAAE,MAAM,CAAC;IACtC,SAAgB,cAAc,EAAE,MAAM,EAAE,CAAC;gBAE7B,aAAa,EAAE,MAAM,EAAE,cAAc,GAAE,MAAM,EAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAUhG;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD,SAAgB,YAAY,EAAE,KAAK,CAAC;IACpC,SAAgB,aAAa,EAAE,MAAM,CAAC;gBAE1B,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAS7E;AAED;;GAEG;AACH,qBAAa,iCAAkC,SAAQ,gBAAgB;IACrE,SAAgB,aAAa,EAAE,GAAG,CAAC;IACnC,SAAgB,aAAa,EAAE,MAAM,CAAC;gBAE1B,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAW5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS,iCAAuC,CAAC;AAEvD,eAAe,SAAS,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Instance } from './Instance';
|
|
2
|
+
import { Coordinate } from './Coordinate';
|
|
3
|
+
import { ClientIdentifier, RegistryStatistics } from './RegistryStats';
|
|
4
|
+
import { AllItemTypeArrays } from '@fjell/core';
|
|
5
|
+
/**
|
|
6
|
+
* Represents a coordinate along with information about which registry contains it.
|
|
7
|
+
*/
|
|
8
|
+
export interface CoordinateWithRegistry {
|
|
9
|
+
coordinate: Coordinate<any, any | never, any | never, any | never, any | never, any | never>;
|
|
10
|
+
registryType: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The RegistryHub interface provides a higher-level registry that manages multiple Registry instances.
|
|
14
|
+
*/
|
|
15
|
+
export interface RegistryHub {
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new registry instance using a RegistryFactory and automatically registers it.
|
|
18
|
+
*/
|
|
19
|
+
readonly createRegistry: (type: string, factory: RegistryFactory) => Registry;
|
|
20
|
+
/**
|
|
21
|
+
* Registers a registry instance, using the registry's type property as the key.
|
|
22
|
+
*/
|
|
23
|
+
readonly registerRegistry: (registry: Registry) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Retrieves an instance by delegating to the appropriate registry.
|
|
26
|
+
*/
|
|
27
|
+
readonly get: (type: string, kta: string[], options?: {
|
|
28
|
+
scopes?: string[];
|
|
29
|
+
client?: ClientIdentifier;
|
|
30
|
+
}) => Instance<any, any | never, any | never, any | never, any | never, any | never> | null;
|
|
31
|
+
/**
|
|
32
|
+
* Retrieves a registry instance by its type key.
|
|
33
|
+
*/
|
|
34
|
+
readonly getRegistry: (type: string) => Registry | null;
|
|
35
|
+
/**
|
|
36
|
+
* Lists all registered type keys.
|
|
37
|
+
*/
|
|
38
|
+
readonly getRegisteredTypes: () => string[];
|
|
39
|
+
/**
|
|
40
|
+
* Retrieves all coordinates from all registered registries along with their registry type information.
|
|
41
|
+
*/
|
|
42
|
+
readonly getAllCoordinates: () => CoordinateWithRegistry[];
|
|
43
|
+
/**
|
|
44
|
+
* Removes a registry from the hub.
|
|
45
|
+
*/
|
|
46
|
+
readonly unregisterRegistry: (type: string) => boolean;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Factory function for creating instances. This function receives a coordinate and context
|
|
50
|
+
* and returns a fully initialized instance.
|
|
51
|
+
*/
|
|
52
|
+
export type InstanceFactory<S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never> = (coordinate: Coordinate<S, L1, L2, L3, L4, L5>, context: {
|
|
53
|
+
registry: Registry;
|
|
54
|
+
registryHub?: RegistryHub;
|
|
55
|
+
}) => Instance<S, L1, L2, L3, L4, L5>;
|
|
56
|
+
/**
|
|
57
|
+
* Factory function for creating a Registry instance. This function receives the type and hub
|
|
58
|
+
* and returns a fully initialized registry.
|
|
59
|
+
*/
|
|
60
|
+
export type RegistryFactory = (type: string, registryHub?: RegistryHub) => Registry;
|
|
61
|
+
/**
|
|
62
|
+
* Tree structure representing the hierarchy of instances
|
|
63
|
+
*/
|
|
64
|
+
export interface InstanceTree {
|
|
65
|
+
[keyType: string]: InstanceTreeNode;
|
|
66
|
+
}
|
|
67
|
+
export interface InstanceTreeNode {
|
|
68
|
+
instances: ScopedInstance[];
|
|
69
|
+
children: InstanceTree | null;
|
|
70
|
+
}
|
|
71
|
+
export interface ScopedInstance {
|
|
72
|
+
scopes?: string[];
|
|
73
|
+
instance: Instance<any, any | never, any | never, any | never, any | never, any | never>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The Registry interface provides a central registry for managing and accessing instances of services.
|
|
77
|
+
* It serves as a dependency injection container that allows libraries to reference and access
|
|
78
|
+
* other library instances they depend on.
|
|
79
|
+
*/
|
|
80
|
+
export interface Registry {
|
|
81
|
+
/** The type identifier for this registry (e.g., 'services', 'data', 'cache') */
|
|
82
|
+
readonly type: string;
|
|
83
|
+
/** Optional reference to the RegistryHub that created this registry */
|
|
84
|
+
readonly registryHub?: RegistryHub;
|
|
85
|
+
/**
|
|
86
|
+
* Creates and registers a new instance in the registry in one atomic operation.
|
|
87
|
+
*/
|
|
88
|
+
createInstance: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(kta: AllItemTypeArrays<S, L1, L2, L3, L4, L5>, scopes: string[], factory: InstanceFactory<S, L1, L2, L3, L4, L5>) => Instance<S, L1, L2, L3, L4, L5>;
|
|
89
|
+
/**
|
|
90
|
+
* Registers an existing instance in the registry (for migration/advanced use cases).
|
|
91
|
+
* @deprecated Use createInstance instead for new code
|
|
92
|
+
*/
|
|
93
|
+
register: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(kta: AllItemTypeArrays<S, L1, L2, L3, L4, L5>, instance: Instance<S, L1, L2, L3, L4, L5>, options?: {
|
|
94
|
+
scopes?: string[];
|
|
95
|
+
}) => void;
|
|
96
|
+
/**
|
|
97
|
+
* Retrieves an instance from the registry.
|
|
98
|
+
*/
|
|
99
|
+
get: <S extends string, L1 extends string = never, L2 extends string = never, L3 extends string = never, L4 extends string = never, L5 extends string = never>(kta: AllItemTypeArrays<S, L1, L2, L3, L4, L5>, options?: {
|
|
100
|
+
scopes?: string[];
|
|
101
|
+
client?: ClientIdentifier;
|
|
102
|
+
}) => Instance<S, L1, L2, L3, L4, L5> | null;
|
|
103
|
+
/** The tree structure representing the hierarchy of instances */
|
|
104
|
+
instanceTree: InstanceTree;
|
|
105
|
+
/**
|
|
106
|
+
* Retrieves all coordinates currently registered in the registry.
|
|
107
|
+
*/
|
|
108
|
+
getCoordinates: () => Coordinate<any, any | never, any | never, any | never, any | never, any | never>[];
|
|
109
|
+
/**
|
|
110
|
+
* Retrieves statistics about get() method calls, including total calls and per-coordinate call counts.
|
|
111
|
+
*/
|
|
112
|
+
getStatistics: () => RegistryStatistics;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/docs/timing-range.svg
CHANGED
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
<g transform="translate(110,60)">
|
|
32
32
|
|
|
33
33
|
<!-- Grid lines (logarithmic scale) -->
|
|
34
|
-
<line x1="0" y1="
|
|
35
|
-
<text x="-10" y="
|
|
36
|
-
<line x1="0" y1="
|
|
37
|
-
<text x="-10" y="
|
|
38
|
-
<line x1="0" y1="
|
|
39
|
-
<text x="-10" y="
|
|
40
|
-
<line x1="0" y1="
|
|
41
|
-
<text x="-10" y="
|
|
42
|
-
<line x1="0" y1="
|
|
43
|
-
<text x="-10" y="
|
|
44
|
-
<line x1="0" y1="
|
|
45
|
-
<text x="-10" y="
|
|
34
|
+
<line x1="0" y1="458.57870897416086" x2="1015" y2="458.57870897416086" class="grid"/>
|
|
35
|
+
<text x="-10" y="462.57870897416086" text-anchor="end" class="label">0.10µs</text>
|
|
36
|
+
<line x1="0" y1="401.74575051692926" x2="1015" y2="401.74575051692926" class="grid"/>
|
|
37
|
+
<text x="-10" y="405.74575051692926" text-anchor="end" class="label">0.20µs</text>
|
|
38
|
+
<line x1="0" y1="326.6166660167485" x2="1015" y2="326.6166660167485" class="grid"/>
|
|
39
|
+
<text x="-10" y="330.6166660167485" text-anchor="end" class="label">0.50µs</text>
|
|
40
|
+
<line x1="0" y1="269.783707559517" x2="1015" y2="269.783707559517" class="grid"/>
|
|
41
|
+
<text x="-10" y="273.783707559517" text-anchor="end" class="label">1.0µs</text>
|
|
42
|
+
<line x1="0" y1="212.95074910228539" x2="1015" y2="212.95074910228539" class="grid"/>
|
|
43
|
+
<text x="-10" y="216.95074910228539" text-anchor="end" class="label">2.0µs</text>
|
|
44
|
+
<line x1="0" y1="137.82166460210453" x2="1015" y2="137.82166460210453" class="grid"/>
|
|
45
|
+
<text x="-10" y="141.82166460210453" text-anchor="end" class="label">5.0µs</text>
|
|
46
46
|
<line x1="0" y1="0" x2="0" y2="460" class="grid"/>
|
|
47
47
|
<text x="0" y="480" text-anchor="middle" class="label">10</text>
|
|
48
48
|
<line x1="76.38636139973525" y1="0" x2="76.38636139973525" y2="460" class="grid"/>
|
|
@@ -78,34 +78,34 @@
|
|
|
78
78
|
<!-- Axis labels -->
|
|
79
79
|
<text x="507.5" y="510" text-anchor="middle" class="axis-title">Tree Size (items) - Log Scale</text>
|
|
80
80
|
<text transform="rotate(-90,-70,230)" x="-70" y="230" text-anchor="middle" class="axis-title">Execution Time (µs)</text>
|
|
81
|
-
<path d="M 0
|
|
82
|
-
<path d="M 0
|
|
83
|
-
<circle cx="0" cy="
|
|
84
|
-
<circle cx="76.38636139973525" cy="
|
|
85
|
-
<circle cx="177.36363860026475" cy="
|
|
86
|
-
<circle cx="253.75" cy="
|
|
87
|
-
<circle cx="330.1363613997352" cy="
|
|
88
|
-
<circle cx="431.1136386002648" cy="
|
|
89
|
-
<circle cx="507.5" cy="
|
|
90
|
-
<circle cx="583.8863613997353" cy="
|
|
91
|
-
<circle cx="684.8636386002647" cy="
|
|
92
|
-
<circle cx="761.25" cy="
|
|
93
|
-
<circle cx="837.6363613997353" cy="
|
|
94
|
-
<circle cx="938.6136386002647" cy="
|
|
95
|
-
<circle cx="1015" cy="
|
|
96
|
-
<circle cx="0" cy="
|
|
97
|
-
<circle cx="76.38636139973525" cy="
|
|
98
|
-
<circle cx="177.36363860026475" cy="
|
|
99
|
-
<circle cx="253.75" cy="
|
|
100
|
-
<circle cx="330.1363613997352" cy="
|
|
101
|
-
<circle cx="431.1136386002648" cy="
|
|
102
|
-
<circle cx="507.5" cy="
|
|
103
|
-
<circle cx="583.8863613997353" cy="
|
|
104
|
-
<circle cx="684.8636386002647" cy="
|
|
105
|
-
<circle cx="761.25" cy="
|
|
106
|
-
<circle cx="837.6363613997353" cy="
|
|
107
|
-
<circle cx="938.6136386002647" cy="
|
|
108
|
-
<circle cx="1015" cy="
|
|
81
|
+
<path d="M 0 239.1535109261035 L 76.38636139973525 241.35010137222713 L 177.36363860026475 211.6579677154121 L 253.75 233.60178771284308 L 330.1363613997352 249.76461645442487 L 431.1136386002648 170.0851215046049 L 507.5 56.8329584572316 L 583.8863613997353 132.00370327144822 L 684.8636386002647 201.65702141898555 L 761.25 244.29969538379217 L 837.6363613997353 176.42359219928989 L 938.6136386002647 201.1355833013193 L 1015 252.52924534742965" class="register-mean"/>
|
|
82
|
+
<path d="M 0 346.3716335219015 L 76.38636139973525 367.51255424262 L 177.36363860026475 381.640154985222 L 253.75 403.1670415427684 L 330.1363613997352 403.0976185394176 L 431.1136386002648 381.66999592400776 L 507.5 391.12205888330266 L 583.8863613997353 359.3936647747462 L 684.8636386002647 356.4680232318624 L 761.25 334.13636249961746 L 837.6363613997353 286.99247411109025 L 938.6136386002647 309.24510010121196 L 1015 331.8590369943432" class="lookup-mean"/>
|
|
83
|
+
<circle cx="0" cy="239.1535109261035" r="4" class="register-dot"/>
|
|
84
|
+
<circle cx="76.38636139973525" cy="241.35010137222713" r="4" class="register-dot"/>
|
|
85
|
+
<circle cx="177.36363860026475" cy="211.6579677154121" r="4" class="register-dot"/>
|
|
86
|
+
<circle cx="253.75" cy="233.60178771284308" r="4" class="register-dot"/>
|
|
87
|
+
<circle cx="330.1363613997352" cy="249.76461645442487" r="4" class="register-dot"/>
|
|
88
|
+
<circle cx="431.1136386002648" cy="170.0851215046049" r="4" class="register-dot"/>
|
|
89
|
+
<circle cx="507.5" cy="56.8329584572316" r="4" class="register-dot"/>
|
|
90
|
+
<circle cx="583.8863613997353" cy="132.00370327144822" r="4" class="register-dot"/>
|
|
91
|
+
<circle cx="684.8636386002647" cy="201.65702141898555" r="4" class="register-dot"/>
|
|
92
|
+
<circle cx="761.25" cy="244.29969538379217" r="4" class="register-dot"/>
|
|
93
|
+
<circle cx="837.6363613997353" cy="176.42359219928989" r="4" class="register-dot"/>
|
|
94
|
+
<circle cx="938.6136386002647" cy="201.1355833013193" r="4" class="register-dot"/>
|
|
95
|
+
<circle cx="1015" cy="252.52924534742965" r="4" class="register-dot"/>
|
|
96
|
+
<circle cx="0" cy="346.3716335219015" r="4" class="lookup-dot"/>
|
|
97
|
+
<circle cx="76.38636139973525" cy="367.51255424262" r="4" class="lookup-dot"/>
|
|
98
|
+
<circle cx="177.36363860026475" cy="381.640154985222" r="4" class="lookup-dot"/>
|
|
99
|
+
<circle cx="253.75" cy="403.1670415427684" r="4" class="lookup-dot"/>
|
|
100
|
+
<circle cx="330.1363613997352" cy="403.0976185394176" r="4" class="lookup-dot"/>
|
|
101
|
+
<circle cx="431.1136386002648" cy="381.66999592400776" r="4" class="lookup-dot"/>
|
|
102
|
+
<circle cx="507.5" cy="391.12205888330266" r="4" class="lookup-dot"/>
|
|
103
|
+
<circle cx="583.8863613997353" cy="359.3936647747462" r="4" class="lookup-dot"/>
|
|
104
|
+
<circle cx="684.8636386002647" cy="356.4680232318624" r="4" class="lookup-dot"/>
|
|
105
|
+
<circle cx="761.25" cy="334.13636249961746" r="4" class="lookup-dot"/>
|
|
106
|
+
<circle cx="837.6363613997353" cy="286.99247411109025" r="4" class="lookup-dot"/>
|
|
107
|
+
<circle cx="938.6136386002647" cy="309.24510010121196" r="4" class="lookup-dot"/>
|
|
108
|
+
<circle cx="1015" cy="331.8590369943432" r="4" class="lookup-dot"/>
|
|
109
109
|
<!-- Legend -->
|
|
110
110
|
<g transform="translate(20, 20)">
|
|
111
111
|
<rect x="0" y="0" width="190" height="80" fill="white" stroke="#ccc" stroke-width="1"/>
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
<text x="0" y="0" class="metadata-section">System Information</text>
|
|
133
133
|
|
|
134
134
|
<text x="0" y="25" class="metadata-label">Test Date:</text>
|
|
135
|
-
<text x="150" y="25" class="metadata-value">2025-08-
|
|
135
|
+
<text x="150" y="25" class="metadata-value">2025-08-16</text>
|
|
136
136
|
|
|
137
137
|
<text x="0" y="45" class="metadata-label">Package Version:</text>
|
|
138
138
|
<text x="150" y="45" class="metadata-value">@fjell/registry v4.4.5</text>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fjell/registry",
|
|
3
3
|
"description": "Dependency injection and service location system for the Fjell ecosystem",
|
|
4
|
-
"version": "4.4.
|
|
4
|
+
"version": "4.4.31",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"registry",
|
|
7
7
|
"dependency-injection",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"docs:test": "cd docs && npm run test"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@fjell/core": "^4.4.
|
|
42
|
-
"@fjell/logging": "^4.4.
|
|
41
|
+
"@fjell/core": "^4.4.37",
|
|
42
|
+
"@fjell/logging": "^4.4.43"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@eslint/eslintrc": "^3.3.1",
|