@solid-stack/agnos 1.0.7 → 1.0.10
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/dist/constants/flags.d.ts +4 -0
- package/dist/constants/flags.d.ts.map +1 -0
- package/dist/core/bootstrap/loadFeatures.d.ts.map +1 -1
- package/dist/core/errors/{AppError.d.ts → AgnosAppError.d.ts} +2 -2
- package/dist/core/errors/AgnosAppError.d.ts.map +1 -0
- package/dist/core/errors/{BootstrapError.d.ts → AgnosBootstrapError.d.ts} +2 -2
- package/dist/core/errors/AgnosBootstrapError.d.ts.map +1 -0
- package/dist/core/errors/{FeatureLoadError.d.ts → AgnosFeatureLoadError.d.ts} +3 -3
- package/dist/core/errors/AgnosFeatureLoadError.d.ts.map +1 -0
- package/dist/core/errors/{InputParsingError.d.ts → AgnosInputParsingError.d.ts} +5 -5
- package/dist/core/errors/AgnosInputParsingError.d.ts.map +1 -0
- package/dist/core/errors/{InternalError.d.ts → AgnosInternalError.d.ts} +3 -3
- package/dist/core/errors/AgnosInternalError.d.ts.map +1 -0
- package/dist/core/errors/AgnosInvalidDependencyError.d.ts +16 -0
- package/dist/core/errors/AgnosInvalidDependencyError.d.ts.map +1 -0
- package/dist/core/errors/AgnosMissingDependencyError.d.ts +16 -0
- package/dist/core/errors/AgnosMissingDependencyError.d.ts.map +1 -0
- package/dist/core/errors/{NotFoundError.d.ts → AgnosNotFoundError.d.ts} +5 -5
- package/dist/core/errors/AgnosNotFoundError.d.ts.map +1 -0
- package/dist/core/errors/{PresentationError.d.ts → AgnosPresentationError.d.ts} +2 -2
- package/dist/core/errors/AgnosPresentationError.d.ts.map +1 -0
- package/dist/core/errors/{ResourceConflictError.d.ts → AgnosResourceConflictError.d.ts} +5 -5
- package/dist/core/errors/AgnosResourceConflictError.d.ts.map +1 -0
- package/dist/core/errors/index.d.ts +10 -10
- package/dist/core/errors/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/index.cjs +42 -40
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +33 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/core/errors/AppError.d.ts.map +0 -1
- package/dist/core/errors/BootstrapError.d.ts.map +0 -1
- package/dist/core/errors/FeatureLoadError.d.ts.map +0 -1
- package/dist/core/errors/InputParsingError.d.ts.map +0 -1
- package/dist/core/errors/InternalError.d.ts.map +0 -1
- package/dist/core/errors/InvalidDependencyError.d.ts +0 -16
- package/dist/core/errors/InvalidDependencyError.d.ts.map +0 -1
- package/dist/core/errors/MissingDependencyError.d.ts +0 -16
- package/dist/core/errors/MissingDependencyError.d.ts.map +0 -1
- package/dist/core/errors/NotFoundError.d.ts.map +0 -1
- package/dist/core/errors/PresentationError.d.ts.map +0 -1
- package/dist/core/errors/ResourceConflictError.d.ts.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../src/constants/flags.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK;IAChB,oBAAoB;CACrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadFeatures.d.ts","sourceRoot":"","sources":["../../../src/core/bootstrap/loadFeatures.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"loadFeatures.d.ts","sourceRoot":"","sources":["../../../src/core/bootstrap/loadFeatures.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAKjD,wBAAsB,YAAY,CAChC,CAAC,EAAE,SAAS,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA6Df"}
|
|
@@ -2,7 +2,7 @@ import { AgnosError, type AgnosErrorOptions } from "./AgnosError.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Base application-level error class inheriting from AgnosError.
|
|
4
4
|
*/
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class AgnosAppError extends AgnosError {
|
|
6
6
|
constructor(name?: string, details?: string, options?: AgnosErrorOptions);
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=AgnosAppError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosAppError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosAppError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,YACE,IAAI,SAA0B,EAC9B,OAAO,SAAsC,EAC7C,OAAO,CAAC,EAAE,iBAAiB,EAO5B;CACF"}
|
|
@@ -2,7 +2,7 @@ import { AgnosError, type AgnosErrorOptions } from "./AgnosError.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Thrown when application bootstrap or infrastructure initialization fails.
|
|
4
4
|
*/
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class AgnosBootstrapError extends AgnosError {
|
|
6
6
|
constructor(details: string, options?: AgnosErrorOptions);
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=AgnosBootstrapError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosBootstrapError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosBootstrapError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAMvD;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgnosBootstrapError } from "./AgnosBootstrapError.js";
|
|
2
2
|
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
3
|
/**
|
|
4
4
|
* Options for constructing a FeatureLoadError.
|
|
@@ -10,9 +10,9 @@ export interface FeatureLoadErrorOptions extends AgnosErrorOptions {
|
|
|
10
10
|
/**
|
|
11
11
|
* Thrown when auto-loading a feature module or its DepsProvider fails.
|
|
12
12
|
*/
|
|
13
|
-
export declare class
|
|
13
|
+
export declare class AgnosFeatureLoadError extends AgnosBootstrapError {
|
|
14
14
|
readonly featureName?: string | undefined;
|
|
15
15
|
readonly providerPath?: string | undefined;
|
|
16
16
|
constructor(featureName: string, providerPath?: string | undefined, details?: string | undefined, options?: FeatureLoadErrorOptions);
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=AgnosFeatureLoadError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosFeatureLoadError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosFeatureLoadError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,mBAAmB;IAC5D,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAElD,YACE,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,uBAAuB,EAsBlC;CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgnosAppError } from "./AgnosAppError.js";
|
|
2
2
|
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
3
|
/**
|
|
4
4
|
* Options for InputParsingError, including field-level validation errors.
|
|
5
5
|
*/
|
|
6
|
-
export interface
|
|
6
|
+
export interface AgnosInputParsingErrorOptions extends AgnosErrorOptions {
|
|
7
7
|
issues?: Array<{
|
|
8
8
|
field?: string | undefined;
|
|
9
9
|
message: string;
|
|
@@ -13,12 +13,12 @@ export interface InputParsingErrorOptions extends AgnosErrorOptions {
|
|
|
13
13
|
/**
|
|
14
14
|
* Thrown when request payload or user input validation fails.
|
|
15
15
|
*/
|
|
16
|
-
export declare class
|
|
16
|
+
export declare class AgnosInputParsingError extends AgnosAppError {
|
|
17
17
|
readonly issues?: Array<{
|
|
18
18
|
field?: string | undefined;
|
|
19
19
|
message: string;
|
|
20
20
|
code?: string | undefined;
|
|
21
21
|
}> | undefined;
|
|
22
|
-
constructor(details: string, options?:
|
|
22
|
+
constructor(details: string, options?: AgnosInputParsingErrorOptions);
|
|
23
23
|
}
|
|
24
|
-
//# sourceMappingURL=
|
|
24
|
+
//# sourceMappingURL=AgnosInputParsingError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosInputParsingError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosInputParsingError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;IACtE,MAAM,CAAC,EACH,KAAK,CAAC;QACJ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,CAAC,GACF,SAAS,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,SAAgB,MAAM,CAAC,EACnB,KAAK,CAAC;QACJ,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC3B,CAAC,GACF,SAAS,CAAC;IAEd,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,6BAA6B,EAcnE;CACF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgnosAppError } from "./AgnosAppError.js";
|
|
2
2
|
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
3
|
/**
|
|
4
4
|
* Thrown when an unexpected internal framework or application error occurs.
|
|
5
5
|
*/
|
|
6
|
-
export declare class
|
|
6
|
+
export declare class AgnosInternalError extends AgnosAppError {
|
|
7
7
|
constructor(details?: string, options?: AgnosErrorOptions);
|
|
8
8
|
}
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=AgnosInternalError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosInternalError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosInternalError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,YACE,OAAO,SAAsC,EAC7C,OAAO,CAAC,EAAE,iBAAiB,EAO5B;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AgnosAppError } from "./AgnosAppError.js";
|
|
2
|
+
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
|
+
/**
|
|
4
|
+
* Options for InvalidDependencyError.
|
|
5
|
+
*/
|
|
6
|
+
export interface AgnosInvalidDependencyErrorOptions extends AgnosErrorOptions {
|
|
7
|
+
dependencyName?: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when an invalid or improperly configured dependency is encountered.
|
|
11
|
+
*/
|
|
12
|
+
export declare class AgnosInvalidDependencyError extends AgnosAppError {
|
|
13
|
+
readonly dependencyName?: string | undefined;
|
|
14
|
+
constructor(details: string, optionsOrCause?: AgnosInvalidDependencyErrorOptions | unknown);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=AgnosInvalidDependencyError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosInvalidDependencyError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosInvalidDependencyError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kCAAmC,SAAQ,iBAAiB;IAC3E,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,aAAa;IAC5D,SAAgB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpD,YACE,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,kCAAkC,GAAG,OAAO,EA6B9D;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AgnosAppError } from "./AgnosAppError.js";
|
|
2
|
+
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
|
+
/**
|
|
4
|
+
* Options for MissingDependencyError.
|
|
5
|
+
*/
|
|
6
|
+
export interface AgnosMissingDependencyErrorOptions extends AgnosErrorOptions {
|
|
7
|
+
dependencyName?: string | undefined;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when a required dependency or token cannot be resolved.
|
|
11
|
+
*/
|
|
12
|
+
export declare class AgnosMissingDependencyError extends AgnosAppError {
|
|
13
|
+
readonly dependencyName?: string | undefined;
|
|
14
|
+
constructor(details: string, optionsOrCause?: AgnosMissingDependencyErrorOptions | unknown);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=AgnosMissingDependencyError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosMissingDependencyError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosMissingDependencyError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kCAAmC,SAAQ,iBAAiB;IAC3E,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,aAAa;IAC5D,SAAgB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpD,YACE,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,kCAAkC,GAAG,OAAO,EA6B9D;CACF"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgnosAppError } from "./AgnosAppError.js";
|
|
2
2
|
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
3
|
/**
|
|
4
4
|
* Options for NotFoundError including resource identifier metadata.
|
|
5
5
|
*/
|
|
6
|
-
export interface
|
|
6
|
+
export interface AgnosNotFoundErrorOptions extends AgnosErrorOptions {
|
|
7
7
|
resource?: string | undefined;
|
|
8
8
|
resourceId?: string | number | undefined;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Thrown when a requested resource or entity cannot be found.
|
|
12
12
|
*/
|
|
13
|
-
export declare class
|
|
13
|
+
export declare class AgnosNotFoundError extends AgnosAppError {
|
|
14
14
|
readonly resource?: string | undefined;
|
|
15
15
|
readonly resourceId?: string | number | undefined;
|
|
16
|
-
constructor(details: string, options?:
|
|
16
|
+
constructor(details: string, options?: AgnosNotFoundErrorOptions);
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=AgnosNotFoundError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosNotFoundError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosNotFoundError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,aAAa;IACnD,SAAgB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,SAAgB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEzD,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,EAkB/D;CACF"}
|
|
@@ -2,10 +2,10 @@ import { AgnosError, type AgnosErrorOptions } from "./AgnosError.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Thrown when the presentation layer fails during init, run, or stop lifecycle hooks.
|
|
4
4
|
*/
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class AgnosPresentationError extends AgnosError {
|
|
6
6
|
readonly phase?: ("init" | "run" | "stop") | undefined;
|
|
7
7
|
constructor(details: string, options?: AgnosErrorOptions & {
|
|
8
8
|
phase?: ("init" | "run" | "stop") | undefined;
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=AgnosPresentationError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosPresentationError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosPresentationError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;IACpD,SAAgB,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IAE9D,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,GAAG;QAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;KAC/C,EAeF;CACF"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AgnosAppError } from "./AgnosAppError.js";
|
|
2
2
|
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
3
|
/**
|
|
4
4
|
* Options for ResourceConflictError.
|
|
5
5
|
*/
|
|
6
|
-
export interface
|
|
6
|
+
export interface AgnosResourceConflictErrorOptions extends AgnosErrorOptions {
|
|
7
7
|
conflictKey?: string | undefined;
|
|
8
8
|
conflictingValue?: unknown;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
11
|
* Thrown when an operation conflicts with existing state (e.g. duplicate key or concurrency collision).
|
|
12
12
|
*/
|
|
13
|
-
export declare class
|
|
13
|
+
export declare class AgnosResourceConflictError extends AgnosAppError {
|
|
14
14
|
readonly conflictKey?: string | undefined;
|
|
15
15
|
readonly conflictingValue?: unknown;
|
|
16
|
-
constructor(message: string, optionsOrCause?:
|
|
16
|
+
constructor(message: string, optionsOrCause?: AgnosResourceConflictErrorOptions | unknown);
|
|
17
17
|
}
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=AgnosResourceConflictError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgnosResourceConflictError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AgnosResourceConflictError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,iCAAkC,SAAQ,iBAAiB;IAC1E,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,aAAa;IAC3D,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3C,YACE,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,iCAAiC,GAAG,OAAO,EA+B7D;CACF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { AgnosError, type AgnosErrorOptions } from "./AgnosError.js";
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
2
|
+
export { AgnosAppError } from "./AgnosAppError.js";
|
|
3
|
+
export { AgnosBootstrapError } from "./AgnosBootstrapError.js";
|
|
4
|
+
export { AgnosFeatureLoadError, type FeatureLoadErrorOptions, } from "./AgnosFeatureLoadError.js";
|
|
5
|
+
export { AgnosPresentationError } from "./AgnosPresentationError.js";
|
|
6
|
+
export { AgnosInputParsingError, type AgnosInputParsingErrorOptions, } from "./AgnosInputParsingError.js";
|
|
7
|
+
export { AgnosInternalError } from "./AgnosInternalError.js";
|
|
8
|
+
export { AgnosInvalidDependencyError, type AgnosInvalidDependencyErrorOptions, } from "./AgnosInvalidDependencyError.js";
|
|
9
|
+
export { AgnosMissingDependencyError, type AgnosMissingDependencyErrorOptions, } from "./AgnosMissingDependencyError.js";
|
|
10
|
+
export { AgnosNotFoundError, type AgnosNotFoundErrorOptions, } from "./AgnosNotFoundError.js";
|
|
11
|
+
export { AgnosResourceConflictError, type AgnosResourceConflictErrorOptions, } from "./AgnosResourceConflictError.js";
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,GACxC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,2BAA2B,EAC3B,KAAK,kCAAkC,GACxC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,0BAA0B,EAC1B,KAAK,iCAAiC,GACvC,MAAM,iCAAiC,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export { start } from "./start.js";
|
|
|
2
2
|
export { loadOnly } from "./loadOnly.js";
|
|
3
3
|
export { startOnly } from "./startOnly.js";
|
|
4
4
|
export { SilentLogger } from "./logging/index.js";
|
|
5
|
-
export { AgnosError, type AgnosErrorOptions,
|
|
5
|
+
export { AgnosError, type AgnosErrorOptions, AgnosAppError, AgnosBootstrapError, AgnosFeatureLoadError, type FeatureLoadErrorOptions, AgnosPresentationError, AgnosInputParsingError, type AgnosInputParsingErrorOptions, AgnosInternalError, AgnosInvalidDependencyError, type AgnosInvalidDependencyErrorOptions, AgnosMissingDependencyError, type AgnosMissingDependencyErrorOptions, AgnosNotFoundError, type AgnosNotFoundErrorOptions, AgnosResourceConflictError, type AgnosResourceConflictErrorOptions, } from "./errors/index.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,uBAAuB,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,kBAAkB,EAClB,2BAA2B,EAC3B,KAAK,kCAAkC,EACvC,2BAA2B,EAC3B,KAAK,kCAAkC,EACvC,kBAAkB,EAClB,KAAK,yBAAyB,EAC9B,0BAA0B,EAC1B,KAAK,iCAAiC,GACvC,MAAM,mBAAmB,CAAC"}
|
package/dist/index.cjs
CHANGED
|
@@ -24,12 +24,12 @@ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "fi
|
|
|
24
24
|
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
25
25
|
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
26
26
|
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
27
|
-
var __runInitializers = (array,
|
|
28
|
-
for (var i = 0, fns = array[
|
|
27
|
+
var __runInitializers = (array, flags2, self, value) => {
|
|
28
|
+
for (var i = 0, fns = array[flags2 >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self) ;
|
|
29
29
|
return value;
|
|
30
30
|
};
|
|
31
|
-
var __decorateElement = (array,
|
|
32
|
-
var it, done, ctx, k =
|
|
31
|
+
var __decorateElement = (array, flags2, name, decorators, target, extra) => {
|
|
32
|
+
var it, done, ctx, k = flags2 & 7, p = false;
|
|
33
33
|
var j = 0;
|
|
34
34
|
var extraInitializers = array[j] || (array[j] = []);
|
|
35
35
|
var desc = k && ((target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(target , name));
|
|
@@ -146,8 +146,8 @@ Stack Trace: ${this.stack}`;
|
|
|
146
146
|
}
|
|
147
147
|
};
|
|
148
148
|
|
|
149
|
-
// src/core/errors/
|
|
150
|
-
var
|
|
149
|
+
// src/core/errors/AgnosAppError.ts
|
|
150
|
+
var AgnosAppError = class extends AgnosError {
|
|
151
151
|
constructor(name = "Internal Server Error", details = "An Internal Server Error occured.", options) {
|
|
152
152
|
super(name, details, {
|
|
153
153
|
code: options?.code || "AGNOS_APP_ERROR",
|
|
@@ -157,8 +157,8 @@ var AppError = class extends AgnosError {
|
|
|
157
157
|
}
|
|
158
158
|
};
|
|
159
159
|
|
|
160
|
-
// src/core/errors/
|
|
161
|
-
var
|
|
160
|
+
// src/core/errors/AgnosBootstrapError.ts
|
|
161
|
+
var AgnosBootstrapError = class extends AgnosError {
|
|
162
162
|
constructor(details, options) {
|
|
163
163
|
super("BootstrapError", details, {
|
|
164
164
|
code: options?.code || "AGNOS_BOOTSTRAP_ERROR",
|
|
@@ -168,8 +168,8 @@ var BootstrapError = class extends AgnosError {
|
|
|
168
168
|
}
|
|
169
169
|
};
|
|
170
170
|
|
|
171
|
-
// src/core/errors/
|
|
172
|
-
var
|
|
171
|
+
// src/core/errors/AgnosFeatureLoadError.ts
|
|
172
|
+
var AgnosFeatureLoadError = class extends AgnosBootstrapError {
|
|
173
173
|
featureName;
|
|
174
174
|
providerPath;
|
|
175
175
|
constructor(featureName, providerPath, details, options) {
|
|
@@ -191,8 +191,8 @@ var FeatureLoadError = class extends BootstrapError {
|
|
|
191
191
|
}
|
|
192
192
|
};
|
|
193
193
|
|
|
194
|
-
// src/core/errors/
|
|
195
|
-
var
|
|
194
|
+
// src/core/errors/AgnosPresentationError.ts
|
|
195
|
+
var AgnosPresentationError = class extends AgnosError {
|
|
196
196
|
phase;
|
|
197
197
|
constructor(details, options) {
|
|
198
198
|
const context = {
|
|
@@ -209,8 +209,8 @@ var PresentationError = class extends AgnosError {
|
|
|
209
209
|
}
|
|
210
210
|
};
|
|
211
211
|
|
|
212
|
-
// src/core/errors/
|
|
213
|
-
var
|
|
212
|
+
// src/core/errors/AgnosInputParsingError.ts
|
|
213
|
+
var AgnosInputParsingError = class extends AgnosAppError {
|
|
214
214
|
issues;
|
|
215
215
|
constructor(details, options) {
|
|
216
216
|
const context = {
|
|
@@ -227,8 +227,8 @@ var InputParsingError = class extends AppError {
|
|
|
227
227
|
}
|
|
228
228
|
};
|
|
229
229
|
|
|
230
|
-
// src/core/errors/
|
|
231
|
-
var
|
|
230
|
+
// src/core/errors/AgnosInternalError.ts
|
|
231
|
+
var AgnosInternalError = class extends AgnosAppError {
|
|
232
232
|
constructor(details = "An Internal Server Error occured.", options) {
|
|
233
233
|
super("InternalError", details, {
|
|
234
234
|
code: options?.code || "AGNOS_INTERNAL_ERROR",
|
|
@@ -238,8 +238,8 @@ var InternalError = class extends AppError {
|
|
|
238
238
|
}
|
|
239
239
|
};
|
|
240
240
|
|
|
241
|
-
// src/core/errors/
|
|
242
|
-
var
|
|
241
|
+
// src/core/errors/AgnosInvalidDependencyError.ts
|
|
242
|
+
var AgnosInvalidDependencyError = class extends AgnosAppError {
|
|
243
243
|
dependencyName;
|
|
244
244
|
constructor(details, optionsOrCause) {
|
|
245
245
|
const isOptionsObject = optionsOrCause !== null && typeof optionsOrCause === "object" && ("cause" in optionsOrCause || "code" in optionsOrCause || "context" in optionsOrCause || "dependencyName" in optionsOrCause);
|
|
@@ -258,8 +258,8 @@ var InvalidDependencyError = class extends AppError {
|
|
|
258
258
|
}
|
|
259
259
|
};
|
|
260
260
|
|
|
261
|
-
// src/core/errors/
|
|
262
|
-
var
|
|
261
|
+
// src/core/errors/AgnosMissingDependencyError.ts
|
|
262
|
+
var AgnosMissingDependencyError = class extends AgnosAppError {
|
|
263
263
|
dependencyName;
|
|
264
264
|
constructor(details, optionsOrCause) {
|
|
265
265
|
const isOptionsObject = optionsOrCause !== null && typeof optionsOrCause === "object" && ("cause" in optionsOrCause || "code" in optionsOrCause || "context" in optionsOrCause || "dependencyName" in optionsOrCause);
|
|
@@ -278,8 +278,8 @@ var MissingDependencyError = class extends AppError {
|
|
|
278
278
|
}
|
|
279
279
|
};
|
|
280
280
|
|
|
281
|
-
// src/core/errors/
|
|
282
|
-
var
|
|
281
|
+
// src/core/errors/AgnosNotFoundError.ts
|
|
282
|
+
var AgnosNotFoundError = class extends AgnosAppError {
|
|
283
283
|
resource;
|
|
284
284
|
resourceId;
|
|
285
285
|
constructor(details, options) {
|
|
@@ -299,8 +299,8 @@ var NotFoundError = class extends AppError {
|
|
|
299
299
|
}
|
|
300
300
|
};
|
|
301
301
|
|
|
302
|
-
// src/core/errors/
|
|
303
|
-
var
|
|
302
|
+
// src/core/errors/AgnosResourceConflictError.ts
|
|
303
|
+
var AgnosResourceConflictError = class extends AgnosAppError {
|
|
304
304
|
conflictKey;
|
|
305
305
|
conflictingValue;
|
|
306
306
|
constructor(message, optionsOrCause) {
|
|
@@ -352,10 +352,12 @@ async function loadFeatures(c, featuresDir) {
|
|
|
352
352
|
(f) => f === "DepsProvider.ts" || f === "DepsProvider.js"
|
|
353
353
|
);
|
|
354
354
|
if (oldVersion) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
355
|
+
{
|
|
356
|
+
console.warn(
|
|
357
|
+
`Feature "${featureName}" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to "diProvider.ts" or "diProvider.js"`
|
|
358
|
+
);
|
|
359
|
+
return oldVersion;
|
|
360
|
+
}
|
|
359
361
|
}
|
|
360
362
|
})();
|
|
361
363
|
if (providerFile) {
|
|
@@ -363,7 +365,7 @@ async function loadFeatures(c, featuresDir) {
|
|
|
363
365
|
const imported = await import(url.pathToFileURL(modulePath).href);
|
|
364
366
|
const infraProvider = imported.default;
|
|
365
367
|
if (!infraProvider) {
|
|
366
|
-
throw new
|
|
368
|
+
throw new AgnosFeatureLoadError(
|
|
367
369
|
featureName,
|
|
368
370
|
modulePath,
|
|
369
371
|
`Feature "${featureName}" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`
|
|
@@ -467,7 +469,7 @@ async function loadShared(c, sharedDir) {
|
|
|
467
469
|
const imported = await import(url.pathToFileURL(modulePath).href);
|
|
468
470
|
const infraProvider = imported.default;
|
|
469
471
|
if (!infraProvider) {
|
|
470
|
-
throw new
|
|
472
|
+
throw new AgnosFeatureLoadError(
|
|
471
473
|
featureName,
|
|
472
474
|
modulePath,
|
|
473
475
|
`Feature "${featureName}" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`
|
|
@@ -529,21 +531,21 @@ _init3 = __decoratorStart();
|
|
|
529
531
|
exports.SilentLogger = __decorateElement(_init3, 0, "SilentLogger", _SilentLogger_decorators, exports.SilentLogger);
|
|
530
532
|
__runInitializers(_init3, 1, exports.SilentLogger);
|
|
531
533
|
|
|
534
|
+
exports.AgnosAppError = AgnosAppError;
|
|
535
|
+
exports.AgnosBootstrapError = AgnosBootstrapError;
|
|
532
536
|
exports.AgnosError = AgnosError;
|
|
533
|
-
exports.
|
|
534
|
-
exports.
|
|
535
|
-
exports.
|
|
537
|
+
exports.AgnosFeatureLoadError = AgnosFeatureLoadError;
|
|
538
|
+
exports.AgnosInputParsingError = AgnosInputParsingError;
|
|
539
|
+
exports.AgnosInternalError = AgnosInternalError;
|
|
540
|
+
exports.AgnosInvalidDependencyError = AgnosInvalidDependencyError;
|
|
541
|
+
exports.AgnosMissingDependencyError = AgnosMissingDependencyError;
|
|
542
|
+
exports.AgnosNotFoundError = AgnosNotFoundError;
|
|
543
|
+
exports.AgnosPresentationError = AgnosPresentationError;
|
|
544
|
+
exports.AgnosResourceConflictError = AgnosResourceConflictError;
|
|
536
545
|
exports.ILogger = ILogger;
|
|
537
546
|
exports.ILoggerTransport = ILoggerTransport;
|
|
538
547
|
exports.IPresentation = IPresentation;
|
|
539
|
-
exports.InputParsingError = InputParsingError;
|
|
540
|
-
exports.InternalError = InternalError;
|
|
541
|
-
exports.InvalidDependencyError = InvalidDependencyError;
|
|
542
548
|
exports.LoggerTransportsToken = LoggerTransportsToken;
|
|
543
|
-
exports.MissingDependencyError = MissingDependencyError;
|
|
544
|
-
exports.NotFoundError = NotFoundError;
|
|
545
|
-
exports.PresentationError = PresentationError;
|
|
546
|
-
exports.ResourceConflictError = ResourceConflictError;
|
|
547
549
|
exports.UseCase = UseCase;
|
|
548
550
|
exports.loadOnly = loadOnly;
|
|
549
551
|
exports.start = start;
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/public.ts","../src/core/logging/Logger.ts","../src/core/bootstrap/loadInfra.ts","../src/core/errors/AgnosError.ts","../src/core/errors/AppError.ts","../src/core/errors/BootstrapError.ts","../src/core/errors/FeatureLoadError.ts","../src/core/errors/PresentationError.ts","../src/core/errors/InputParsingError.ts","../src/core/errors/InternalError.ts","../src/core/errors/InvalidDependencyError.ts","../src/core/errors/MissingDependencyError.ts","../src/core/errors/NotFoundError.ts","../src/core/errors/ResourceConflictError.ts","../src/utils/folderExists.ts","../src/core/bootstrap/loadFeatures.ts","../src/core/Program.ts","../src/core/start.ts","../src/core/bootstrap/loadShared.ts","../src/core/loadOnly.ts","../src/core/startOnly.ts","../src/core/logging/SilentLogger.ts"],"names":["MultiToken","MakeInjectable","stat","fs","path","pathToFileURL","_init","SilentLogger"],"mappings":"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","file":"index.cjs","sourcesContent":["import { MultiToken } from \"@solid-stack/di\";\n\n/**\n * Supported log levels for logger transports.\n */\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"log\";\n\n/**\n * Abstract logger transport contract.\n */\nexport abstract class ILoggerTransport {\n abstract push: (message: any[], level: LogLevel) => void;\n}\n\n/**\n * MultiToken for registering and resolving logger transports.\n */\nexport class LoggerTransportsToken extends MultiToken<ILoggerTransport> {}\n\n/**\n * Abstract logger interface for application logging.\n */\nexport abstract class ILogger {\n abstract log(...args: any[]): void;\n abstract info(...args: any[]): void;\n abstract warn(...args: any[]): void;\n abstract error(...args: any[]): void;\n abstract debug(...args: any[]): void;\n}\n\n/**\n * Abstract presentation layer contract.\n */\nexport abstract class IPresentation {\n abstract init(): Promise<void>;\n abstract run(): Promise<void>;\n abstract stop(): Promise<void>;\n}\n\n/**\n * Abstract use case contract for application business logic.\n */\nexport abstract class UseCase<IRequest = any, IResponse = any> {\n abstract execute(request: IRequest): Promise<IResponse>;\n}\n\n/**\n * Options for bootstrapping and starting the application via start().\n */\nexport interface StartOptions {\n /** Optional directory path containing feature modules with DepsProvider files */\n featuresDir?: string | undefined;\n sharedDir?: string | undefined;\n}\n\n/**\n * Backward-compatible alias for StartOptions.\n */\nexport type StartDeps = StartOptions;\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport {\n ILogger,\n LoggerTransportsToken,\n type LogLevel,\n} from \"../../types/index.js\";\n\n@MakeInjectable\nexport class Logger implements ILogger {\n public static deps = {\n transports: LoggerTransportsToken,\n };\n\n constructor(public deps: DepsType<typeof Logger.deps>) {}\n\n private broadcast(level: LogLevel, args: any[]): void {\n for (const transport of this.deps.transports) {\n try {\n transport.push(args, level);\n } catch (err) {\n // Prevent a failing remote transport (e.g. Datadog network timeout) from crashing the application\n console.error(\n \"[Logger Transport Error]: Failed to dispatch log entry\",\n err,\n );\n }\n }\n }\n\n log(...args: any[]): void {\n this.broadcast(\"log\", args);\n }\n info(...args: any[]): void {\n this.broadcast(\"info\", args);\n }\n warn(...args: any[]): void {\n this.broadcast(\"warn\", args);\n }\n error(...args: any[]): void {\n this.broadcast(\"error\", args);\n }\n debug(...args: any[]): void {\n this.broadcast(\"debug\", args);\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { ILogger } from \"../../types/index.js\";\nimport { Logger } from \"../logging/Logger.js\";\n\nexport const loadInfra = async (c: Container) => {\n c.provide(ILogger, Logger);\n};\n","/**\n * Options for constructing Agnos framework errors.\n */\nexport interface AgnosErrorOptions {\n /** Underlying cause of the error */\n cause?: unknown;\n /** Machine-readable error code */\n code?: string | undefined;\n /** HTTP status code equivalent */\n statusCode?: number | undefined;\n /** Additional diagnostic metadata */\n context?: Record<string, unknown> | undefined;\n}\n\n/**\n * Base error class for all Agnos framework and application errors.\n */\nexport class AgnosError extends Error {\n public readonly details: string;\n public readonly code: string;\n public readonly statusCode: number;\n public readonly context?: Record<string, unknown> | undefined;\n\n constructor(\n name = \"AgnosError\",\n details = \"An Agnos framework error occurred.\",\n options?: AgnosErrorOptions,\n ) {\n const resolvedDetails = details || \"An Agnos framework error occurred.\";\n super(resolvedDetails, { cause: options?.cause });\n this.name = name;\n this.details = resolvedDetails;\n this.code = options?.code || \"AGNOS_ERROR\";\n this.statusCode = options?.statusCode ?? 500;\n this.context = options?.context;\n\n // Ensure proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n /**\n * Formats the error into a human-readable diagnostic string with code, context, cause, and stack trace.\n */\n prettyDetails(): string {\n const contextStr = this.context\n ? `\\nContext: ${JSON.stringify(this.context, null, 2)}`\n : \"\";\n const causeStr = this.cause\n ? `\\nCaused by: ${\n this.cause instanceof Error\n ? this.cause.stack || this.cause.message\n : String(this.cause)\n }`\n : \"\";\n return `[${this.code}] ${this.name} (${this.statusCode}): ${this.details}${contextStr}${causeStr}\\nStack Trace: ${this.stack}`;\n }\n\n /**\n * Serializes the error to a JSON-safe object.\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n code: this.code,\n statusCode: this.statusCode,\n message: this.message,\n details: this.details,\n context: this.context,\n };\n }\n\n /**\n * Type guard to verify if an unknown error is an instance of AgnosError.\n */\n static isAgnosError(error: unknown): error is AgnosError {\n return error instanceof AgnosError;\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Base application-level error class inheriting from AgnosError.\n */\nexport class AppError extends AgnosError {\n constructor(\n name = \"Internal Server Error\",\n details = \"An Internal Server Error occured.\",\n options?: AgnosErrorOptions,\n ) {\n super(name, details, {\n code: options?.code || \"AGNOS_APP_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when application bootstrap or infrastructure initialization fails.\n */\nexport class BootstrapError extends AgnosError {\n constructor(details: string, options?: AgnosErrorOptions) {\n super(\"BootstrapError\", details, {\n code: options?.code || \"AGNOS_BOOTSTRAP_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { BootstrapError } from \"./BootstrapError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for constructing a FeatureLoadError.\n */\nexport interface FeatureLoadErrorOptions extends AgnosErrorOptions {\n featureName?: string | undefined;\n providerPath?: string | undefined;\n}\n\n/**\n * Thrown when auto-loading a feature module or its DepsProvider fails.\n */\nexport class FeatureLoadError extends BootstrapError {\n public readonly featureName?: string | undefined;\n public readonly providerPath?: string | undefined;\n\n constructor(\n featureName: string,\n providerPath?: string | undefined,\n details?: string | undefined,\n options?: FeatureLoadErrorOptions,\n ) {\n const resolvedDetails =\n details ||\n `Failed to load feature \"${featureName}\" from provider path \"${providerPath || \"unknown\"}\".`;\n\n const context: Record<string, unknown> = {\n featureName,\n ...(providerPath ? { providerPath } : {}),\n ...options?.context,\n };\n\n super(resolvedDetails, {\n code: options?.code || \"AGNOS_FEATURE_LOAD_ERROR\",\n statusCode: options?.statusCode ?? 500,\n context,\n cause: options?.cause,\n });\n\n this.name = \"FeatureLoadError\";\n this.featureName = featureName;\n this.providerPath = providerPath;\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when the presentation layer fails during init, run, or stop lifecycle hooks.\n */\nexport class PresentationError extends AgnosError {\n public readonly phase?: (\"init\" | \"run\" | \"stop\") | undefined;\n\n constructor(\n details: string,\n options?: AgnosErrorOptions & { phase?: (\"init\" | \"run\" | \"stop\") | undefined },\n ) {\n const context: Record<string, unknown> = {\n ...(options?.phase ? { phase: options.phase } : {}),\n ...options?.context,\n };\n\n super(\"PresentationError\", details, {\n code: options?.code || \"AGNOS_PRESENTATION_ERROR\",\n statusCode: options?.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.phase = options?.phase;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for InputParsingError, including field-level validation errors.\n */\nexport interface InputParsingErrorOptions extends AgnosErrorOptions {\n issues?: Array<{ field?: string | undefined; message: string; code?: string | undefined }> | undefined;\n}\n\n/**\n * Thrown when request payload or user input validation fails.\n */\nexport class InputParsingError extends AppError {\n public readonly issues?: Array<{ field?: string | undefined; message: string; code?: string | undefined }> | undefined;\n\n constructor(details: string, options?: InputParsingErrorOptions) {\n const context: Record<string, unknown> = {\n ...(options?.issues ? { issues: options.issues } : {}),\n ...options?.context,\n };\n\n super(\"InputParsingError\", details, {\n code: options?.code || \"AGNOS_INPUT_PARSING_ERROR\",\n statusCode: options?.statusCode ?? 400,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.issues = options?.issues;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when an unexpected internal framework or application error occurs.\n */\nexport class InternalError extends AppError {\n constructor(\n details = \"An Internal Server Error occured.\",\n options?: AgnosErrorOptions,\n ) {\n super(\"InternalError\", details, {\n code: options?.code || \"AGNOS_INTERNAL_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for InvalidDependencyError.\n */\nexport interface InvalidDependencyErrorOptions extends AgnosErrorOptions {\n dependencyName?: string | undefined;\n}\n\n/**\n * Thrown when an invalid or improperly configured dependency is encountered.\n */\nexport class InvalidDependencyError extends AppError {\n public readonly dependencyName?: string | undefined;\n\n constructor(\n details: string,\n optionsOrCause?: InvalidDependencyErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"dependencyName\" in optionsOrCause);\n\n const options: InvalidDependencyErrorOptions = isOptionsObject\n ? (optionsOrCause as InvalidDependencyErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.dependencyName ? { dependencyName: options.dependencyName } : {}),\n ...options.context,\n };\n\n super(\"InvalidDependencyError\", details, {\n code: options.code || \"AGNOS_INVALID_DEPENDENCY_ERROR\",\n statusCode: options.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.dependencyName = options.dependencyName;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for MissingDependencyError.\n */\nexport interface MissingDependencyErrorOptions extends AgnosErrorOptions {\n dependencyName?: string | undefined;\n}\n\n/**\n * Thrown when a required dependency or token cannot be resolved.\n */\nexport class MissingDependencyError extends AppError {\n public readonly dependencyName?: string | undefined;\n\n constructor(\n details: string,\n optionsOrCause?: MissingDependencyErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"dependencyName\" in optionsOrCause);\n\n const options: MissingDependencyErrorOptions = isOptionsObject\n ? (optionsOrCause as MissingDependencyErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.dependencyName ? { dependencyName: options.dependencyName } : {}),\n ...options.context,\n };\n\n super(\"MissingDependencyError\", details, {\n code: options.code || \"AGNOS_MISSING_DEPENDENCY_ERROR\",\n statusCode: options.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.dependencyName = options.dependencyName;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for NotFoundError including resource identifier metadata.\n */\nexport interface NotFoundErrorOptions extends AgnosErrorOptions {\n resource?: string | undefined;\n resourceId?: string | number | undefined;\n}\n\n/**\n * Thrown when a requested resource or entity cannot be found.\n */\nexport class NotFoundError extends AppError {\n public readonly resource?: string | undefined;\n public readonly resourceId?: string | number | undefined;\n\n constructor(details: string, options?: NotFoundErrorOptions) {\n const context: Record<string, unknown> = {\n ...(options?.resource ? { resource: options.resource } : {}),\n ...(options?.resourceId !== undefined ? { resourceId: options.resourceId } : {}),\n ...options?.context,\n };\n\n super(\"NotFoundError\", details, {\n code: options?.code || \"AGNOS_NOT_FOUND_ERROR\",\n statusCode: options?.statusCode ?? 404,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.resource = options?.resource;\n this.resourceId = options?.resourceId;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for ResourceConflictError.\n */\nexport interface ResourceConflictErrorOptions extends AgnosErrorOptions {\n conflictKey?: string | undefined;\n conflictingValue?: unknown;\n}\n\n/**\n * Thrown when an operation conflicts with existing state (e.g. duplicate key or concurrency collision).\n */\nexport class ResourceConflictError extends AppError {\n public readonly conflictKey?: string | undefined;\n public readonly conflictingValue?: unknown;\n\n constructor(\n message: string,\n optionsOrCause?: ResourceConflictErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"conflictKey\" in optionsOrCause);\n\n const options: ResourceConflictErrorOptions = isOptionsObject\n ? (optionsOrCause as ResourceConflictErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.conflictKey ? { conflictKey: options.conflictKey } : {}),\n ...(options.conflictingValue !== undefined\n ? { conflictingValue: options.conflictingValue }\n : {}),\n ...options.context,\n };\n\n super(\"ResourceConflictError\", message, {\n code: options.code || \"AGNOS_RESOURCE_CONFLICT_ERROR\",\n statusCode: options.statusCode ?? 409,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.conflictKey = options.conflictKey;\n this.conflictingValue = options.conflictingValue;\n }\n}\n","import { stat } from \"node:fs/promises\";\n\nexport async function folderExists(dir: string): Promise<boolean> {\n try {\n const stats = await stat(dir);\n return stats.isDirectory();\n } catch (error: any) {\n // 'ENOENT' means the directory or file does not exist\n if (error.code === \"ENOENT\") {\n return false;\n }\n // Re-throw if it is a different error (like permission issues)\n throw error;\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { Container } from \"@solid-stack/di\";\nimport { FeatureLoadError } from \"../errors/index.js\";\nimport { folderExists } from \"../../utils/index.js\";\n\nexport async function loadFeatures(\n c: Container,\n featuresDir: string,\n): Promise<void> {\n if (!(await folderExists(featuresDir))) {\n return;\n }\n\n const entries = await fs.readdir(featuresDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const featureName = entry.name;\n\n const files = await fs.readdir(path.join(featuresDir, featureName));\n\n // provider file should be called \"diProvider.ts\" or \"diProvider.js\"\n const providerFile = (() => {\n const newVersion = files.find(\n (f) => f === \"diProvider.ts\" || f === \"diProvider.js\",\n );\n\n if (newVersion) return newVersion;\n\n const oldVersion = files.find(\n (f) => f === \"DepsProvider.ts\" || f === \"DepsProvider.js\",\n );\n\n if (oldVersion) {\n console.warn(\n `Feature \"${featureName}\" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to \"diProvider.ts\" or \"diProvider.js\"`,\n );\n return oldVersion;\n }\n })();\n\n if (providerFile) {\n const modulePath = path.join(featuresDir, featureName, providerFile);\n const imported = await import(pathToFileURL(modulePath).href);\n\n const infraProvider = imported.default;\n\n if (!infraProvider) {\n throw new FeatureLoadError(\n featureName,\n modulePath,\n `Feature \"${featureName}\" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`,\n );\n }\n\n if (infraProvider && typeof infraProvider === \"function\") {\n c.load(infraProvider);\n }\n }\n }\n }\n}\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport { IPresentation, ILogger } from \"../types/index.js\";\n\n@MakeInjectable\nexport class Program {\n public static deps = {\n presentation: IPresentation,\n logger: ILogger,\n };\n\n constructor(public deps: DepsType<typeof Program.deps>) {}\n\n async start() {\n try {\n const presentation: IPresentation = this.deps.presentation;\n const logger: ILogger = this.deps.logger;\n await presentation.init();\n await presentation.run();\n\n let isShuttingDown = false;\n\n const handleOnStop = async (error?: Error | unknown) => {\n // Prevent multiple shutdown signals from overlapping\n if (isShuttingDown) return;\n isShuttingDown = true;\n\n if (error) {\n logger.error(\n \"Fatal Error: Shutting down due to unhandled exception...\",\n error,\n );\n } else {\n logger.info(\"Terminating process gracefully...\");\n }\n\n try {\n await presentation.stop();\n } catch (shutdownError) {\n logger.error(\n \"Error occurred while stopping the presentation layer:\",\n shutdownError,\n );\n } finally {\n // Exit with 1 if there was an error, otherwise 0\n process.exit(error ? 1 : 0);\n }\n };\n\n // OS Termination Signals\n process.on(\"SIGTERM\", () => handleOnStop());\n process.on(\"SIGINT\", () => handleOnStop()); // Fixed duplicate SIGTERM\n\n // Unhandled Errors\n process.on(\"uncaughtException\", (error) => handleOnStop(error));\n process.on(\"unhandledRejection\", (reason) => handleOnStop(reason));\n } catch (err) {\n this.deps.logger.error(\n \"An Uncaught/Unknown error has been encountered while Starting/Running the Application\",\n err,\n );\n }\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { loadInfra } from \"./bootstrap/loadInfra.js\";\nimport { loadFeatures } from \"./bootstrap/loadFeatures.js\";\nimport { Program } from \"./Program.js\";\nimport { ILogger, type StartOptions } from \"../types/index.js\";\n\n/**\n * Boots up and executes the Agnos application lifecycle.\n *\n * Automatically:\n * 1. Initializes core infrastructure (ILogger, etc.).\n * 2. Auto-discovers and loads feature modules if a features directory is specified.\n * 3. Resolves the Program lifecycle coordinator and runs the presentation layer.\n *\n * @param container - The @solid-stack/di Container instance.\n * @param options - Optional configuration including feature directory path.\n */\nexport const start = async (\n container: Container,\n options?: StartOptions,\n): Promise<void> => {\n // 1. Initialize core framework infrastructure\n await loadInfra(container);\n\n // 2. Discover and load feature providers if directory configured\n if (options?.featuresDir) {\n await loadFeatures(container, options.featuresDir);\n }\n\n // 3. Resolve Program and run presentation lifecycle\n const program = container.resolve(Program);\n const logger = container.resolve(ILogger);\n\n try {\n await program.start();\n } catch (err: unknown) {\n logger.error(\n \"An unhandled error occurred while starting the presentation layer:\",\n err,\n );\n throw err;\n }\n};\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { Container } from \"@solid-stack/di\";\nimport { FeatureLoadError } from \"../errors/index.js\";\nimport { folderExists } from \"../../utils/index.js\";\n\nexport async function loadShared(\n c: Container,\n sharedDir: string,\n): Promise<void> {\n if (!(await folderExists(sharedDir))) {\n return;\n }\n\n const entries = await fs.readdir(sharedDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const featureName = entry.name;\n\n const files = await fs.readdir(path.join(sharedDir, featureName));\n const providerFile = files.find(\n (f) => f === \"diProvider.ts\" || f === \"diProvider.js\",\n );\n\n if (providerFile) {\n const modulePath = path.join(sharedDir, featureName, providerFile);\n const imported = await import(pathToFileURL(modulePath).href);\n\n const infraProvider = imported.default;\n\n if (!infraProvider) {\n throw new FeatureLoadError(\n featureName,\n modulePath,\n `Feature \"${featureName}\" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`,\n );\n }\n\n if (infraProvider && typeof infraProvider === \"function\") {\n c.load(infraProvider);\n }\n }\n }\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { loadInfra } from \"./bootstrap/loadInfra.js\";\nimport { loadFeatures } from \"./bootstrap/loadFeatures.js\";\nimport { type StartOptions } from \"../types/index.js\";\nimport { loadShared } from \"./bootstrap/loadShared.js\";\n\n/**\n * Initializes the Agnos application.\n *\n * Automatically:\n * 1. Initializes core infrastructure (ILogger, etc.).\n * 2. Auto-discovers and loads feature modules if a features directory is specified.\n *\n * @param container - The @solid-stack/di Container instance.\n * @param options - Optional configuration including feature directory path.\n */\nexport const loadOnly = async (\n container: Container,\n options?: StartOptions,\n): Promise<void> => {\n // 1. Initialize core framework infrastructure\n await loadInfra(container);\n\n // 1.1 Load shared modules\n if (options?.sharedDir) {\n await loadShared(container, options.sharedDir);\n }\n\n // 2. Discover and load feature providers if directory configured\n if (options?.featuresDir) {\n await loadFeatures(container, options.featuresDir);\n }\n};\n","import type { Container } from \"@solid-stack/di\";\nimport { ILogger, type StartOptions } from \"../types/index.js\";\nimport { Program } from \"./Program.js\";\n\n/**\n * Starts the Agnos application.\n *\n * Automatically:\n * 1. Resolves the Program lifecycle coordinator and runs the presentation layer.\n *\n * @param container - The @solid-stack/di Container instance.\n */\nexport const startOnly = async (container: Container): Promise<void> => {\n const program = container.resolve(Program);\n const logger = container.resolve(ILogger);\n\n try {\n await program.start();\n } catch (err: unknown) {\n logger.error(\n \"An unhandled error occurred while starting the presentation layer:\",\n err,\n );\n throw err;\n }\n};\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport type { ILogger } from \"../../types/index.js\";\n\n@MakeInjectable\nexport class SilentLogger implements ILogger {\n public static deps = {};\n constructor(public deps: DepsType<typeof SilentLogger.deps>) {}\n log(..._args: any[]): void {}\n info(..._args: any[]): void {}\n warn(..._args: any[]): void {}\n error(..._args: any[]): void {}\n debug(..._args: any[]): void {}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/public.ts","../src/core/logging/Logger.ts","../src/core/bootstrap/loadInfra.ts","../src/core/errors/AgnosError.ts","../src/core/errors/AgnosAppError.ts","../src/core/errors/AgnosBootstrapError.ts","../src/core/errors/AgnosFeatureLoadError.ts","../src/core/errors/AgnosPresentationError.ts","../src/core/errors/AgnosInputParsingError.ts","../src/core/errors/AgnosInternalError.ts","../src/core/errors/AgnosInvalidDependencyError.ts","../src/core/errors/AgnosMissingDependencyError.ts","../src/core/errors/AgnosNotFoundError.ts","../src/core/errors/AgnosResourceConflictError.ts","../src/utils/folderExists.ts","../src/core/bootstrap/loadFeatures.ts","../src/core/Program.ts","../src/core/start.ts","../src/core/bootstrap/loadShared.ts","../src/core/loadOnly.ts","../src/core/startOnly.ts","../src/core/logging/SilentLogger.ts"],"names":["MultiToken","MakeInjectable","stat","fs","path","pathToFileURL","_init","SilentLogger"],"mappings":"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","file":"index.cjs","sourcesContent":["import { MultiToken } from \"@solid-stack/di\";\n\n/**\n * Supported log levels for logger transports.\n */\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"log\";\n\n/**\n * Abstract logger transport contract.\n */\nexport abstract class ILoggerTransport {\n abstract push: (message: any[], level: LogLevel) => void;\n}\n\n/**\n * MultiToken for registering and resolving logger transports.\n */\nexport class LoggerTransportsToken extends MultiToken<ILoggerTransport> {}\n\n/**\n * Abstract logger interface for application logging.\n */\nexport abstract class ILogger {\n abstract log(...args: any[]): void;\n abstract info(...args: any[]): void;\n abstract warn(...args: any[]): void;\n abstract error(...args: any[]): void;\n abstract debug(...args: any[]): void;\n}\n\n/**\n * Abstract presentation layer contract.\n */\nexport abstract class IPresentation {\n abstract init(): Promise<void>;\n abstract run(): Promise<void>;\n abstract stop(): Promise<void>;\n}\n\n/**\n * Abstract use case contract for application business logic.\n */\nexport abstract class UseCase<IRequest = any, IResponse = any> {\n abstract execute(request: IRequest): Promise<IResponse>;\n}\n\n/**\n * Options for bootstrapping and starting the application via start().\n */\nexport interface StartOptions {\n /** Optional directory path containing feature modules with DepsProvider files */\n featuresDir?: string | undefined;\n sharedDir?: string | undefined;\n}\n\n/**\n * Backward-compatible alias for StartOptions.\n */\nexport type StartDeps = StartOptions;\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport {\n ILogger,\n LoggerTransportsToken,\n type LogLevel,\n} from \"../../types/index.js\";\n\n@MakeInjectable\nexport class Logger implements ILogger {\n public static deps = {\n transports: LoggerTransportsToken,\n };\n\n constructor(public deps: DepsType<typeof Logger.deps>) {}\n\n private broadcast(level: LogLevel, args: any[]): void {\n for (const transport of this.deps.transports) {\n try {\n transport.push(args, level);\n } catch (err) {\n // Prevent a failing remote transport (e.g. Datadog network timeout) from crashing the application\n console.error(\n \"[Logger Transport Error]: Failed to dispatch log entry\",\n err,\n );\n }\n }\n }\n\n log(...args: any[]): void {\n this.broadcast(\"log\", args);\n }\n info(...args: any[]): void {\n this.broadcast(\"info\", args);\n }\n warn(...args: any[]): void {\n this.broadcast(\"warn\", args);\n }\n error(...args: any[]): void {\n this.broadcast(\"error\", args);\n }\n debug(...args: any[]): void {\n this.broadcast(\"debug\", args);\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { ILogger } from \"../../types/index.js\";\nimport { Logger } from \"../logging/Logger.js\";\n\nexport const loadInfra = async (c: Container) => {\n c.provide(ILogger, Logger);\n};\n","/**\n * Options for constructing Agnos framework errors.\n */\nexport interface AgnosErrorOptions {\n /** Underlying cause of the error */\n cause?: unknown;\n /** Machine-readable error code */\n code?: string | undefined;\n /** HTTP status code equivalent */\n statusCode?: number | undefined;\n /** Additional diagnostic metadata */\n context?: Record<string, unknown> | undefined;\n}\n\n/**\n * Base error class for all Agnos framework and application errors.\n */\nexport class AgnosError extends Error {\n public readonly details: string;\n public readonly code: string;\n public readonly statusCode: number;\n public readonly context?: Record<string, unknown> | undefined;\n\n constructor(\n name = \"AgnosError\",\n details = \"An Agnos framework error occurred.\",\n options?: AgnosErrorOptions,\n ) {\n const resolvedDetails = details || \"An Agnos framework error occurred.\";\n super(resolvedDetails, { cause: options?.cause });\n this.name = name;\n this.details = resolvedDetails;\n this.code = options?.code || \"AGNOS_ERROR\";\n this.statusCode = options?.statusCode ?? 500;\n this.context = options?.context;\n\n // Ensure proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n /**\n * Formats the error into a human-readable diagnostic string with code, context, cause, and stack trace.\n */\n prettyDetails(): string {\n const contextStr = this.context\n ? `\\nContext: ${JSON.stringify(this.context, null, 2)}`\n : \"\";\n const causeStr = this.cause\n ? `\\nCaused by: ${\n this.cause instanceof Error\n ? this.cause.stack || this.cause.message\n : String(this.cause)\n }`\n : \"\";\n return `[${this.code}] ${this.name} (${this.statusCode}): ${this.details}${contextStr}${causeStr}\\nStack Trace: ${this.stack}`;\n }\n\n /**\n * Serializes the error to a JSON-safe object.\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n code: this.code,\n statusCode: this.statusCode,\n message: this.message,\n details: this.details,\n context: this.context,\n };\n }\n\n /**\n * Type guard to verify if an unknown error is an instance of AgnosError.\n */\n static isAgnosError(error: unknown): error is AgnosError {\n return error instanceof AgnosError;\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Base application-level error class inheriting from AgnosError.\n */\nexport class AgnosAppError extends AgnosError {\n constructor(\n name = \"Internal Server Error\",\n details = \"An Internal Server Error occured.\",\n options?: AgnosErrorOptions,\n ) {\n super(name, details, {\n code: options?.code || \"AGNOS_APP_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when application bootstrap or infrastructure initialization fails.\n */\nexport class AgnosBootstrapError extends AgnosError {\n constructor(details: string, options?: AgnosErrorOptions) {\n super(\"BootstrapError\", details, {\n code: options?.code || \"AGNOS_BOOTSTRAP_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AgnosBootstrapError } from \"./AgnosBootstrapError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for constructing a FeatureLoadError.\n */\nexport interface FeatureLoadErrorOptions extends AgnosErrorOptions {\n featureName?: string | undefined;\n providerPath?: string | undefined;\n}\n\n/**\n * Thrown when auto-loading a feature module or its DepsProvider fails.\n */\nexport class AgnosFeatureLoadError extends AgnosBootstrapError {\n public readonly featureName?: string | undefined;\n public readonly providerPath?: string | undefined;\n\n constructor(\n featureName: string,\n providerPath?: string | undefined,\n details?: string | undefined,\n options?: FeatureLoadErrorOptions,\n ) {\n const resolvedDetails =\n details ||\n `Failed to load feature \"${featureName}\" from provider path \"${providerPath || \"unknown\"}\".`;\n\n const context: Record<string, unknown> = {\n featureName,\n ...(providerPath ? { providerPath } : {}),\n ...options?.context,\n };\n\n super(resolvedDetails, {\n code: options?.code || \"AGNOS_FEATURE_LOAD_ERROR\",\n statusCode: options?.statusCode ?? 500,\n context,\n cause: options?.cause,\n });\n\n this.name = \"FeatureLoadError\";\n this.featureName = featureName;\n this.providerPath = providerPath;\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when the presentation layer fails during init, run, or stop lifecycle hooks.\n */\nexport class AgnosPresentationError extends AgnosError {\n public readonly phase?: (\"init\" | \"run\" | \"stop\") | undefined;\n\n constructor(\n details: string,\n options?: AgnosErrorOptions & {\n phase?: (\"init\" | \"run\" | \"stop\") | undefined;\n },\n ) {\n const context: Record<string, unknown> = {\n ...(options?.phase ? { phase: options.phase } : {}),\n ...options?.context,\n };\n\n super(\"PresentationError\", details, {\n code: options?.code || \"AGNOS_PRESENTATION_ERROR\",\n statusCode: options?.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.phase = options?.phase;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for InputParsingError, including field-level validation errors.\n */\nexport interface AgnosInputParsingErrorOptions extends AgnosErrorOptions {\n issues?:\n | Array<{\n field?: string | undefined;\n message: string;\n code?: string | undefined;\n }>\n | undefined;\n}\n\n/**\n * Thrown when request payload or user input validation fails.\n */\nexport class AgnosInputParsingError extends AgnosAppError {\n public readonly issues?:\n | Array<{\n field?: string | undefined;\n message: string;\n code?: string | undefined;\n }>\n | undefined;\n\n constructor(details: string, options?: AgnosInputParsingErrorOptions) {\n const context: Record<string, unknown> = {\n ...(options?.issues ? { issues: options.issues } : {}),\n ...options?.context,\n };\n\n super(\"InputParsingError\", details, {\n code: options?.code || \"AGNOS_INPUT_PARSING_ERROR\",\n statusCode: options?.statusCode ?? 400,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.issues = options?.issues;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when an unexpected internal framework or application error occurs.\n */\nexport class AgnosInternalError extends AgnosAppError {\n constructor(\n details = \"An Internal Server Error occured.\",\n options?: AgnosErrorOptions,\n ) {\n super(\"InternalError\", details, {\n code: options?.code || \"AGNOS_INTERNAL_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for InvalidDependencyError.\n */\nexport interface AgnosInvalidDependencyErrorOptions extends AgnosErrorOptions {\n dependencyName?: string | undefined;\n}\n\n/**\n * Thrown when an invalid or improperly configured dependency is encountered.\n */\nexport class AgnosInvalidDependencyError extends AgnosAppError {\n public readonly dependencyName?: string | undefined;\n\n constructor(\n details: string,\n optionsOrCause?: AgnosInvalidDependencyErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"dependencyName\" in optionsOrCause);\n\n const options: AgnosInvalidDependencyErrorOptions = isOptionsObject\n ? (optionsOrCause as AgnosInvalidDependencyErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.dependencyName\n ? { dependencyName: options.dependencyName }\n : {}),\n ...options.context,\n };\n\n super(\"InvalidDependencyError\", details, {\n code: options.code || \"AGNOS_INVALID_DEPENDENCY_ERROR\",\n statusCode: options.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.dependencyName = options.dependencyName;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for MissingDependencyError.\n */\nexport interface AgnosMissingDependencyErrorOptions extends AgnosErrorOptions {\n dependencyName?: string | undefined;\n}\n\n/**\n * Thrown when a required dependency or token cannot be resolved.\n */\nexport class AgnosMissingDependencyError extends AgnosAppError {\n public readonly dependencyName?: string | undefined;\n\n constructor(\n details: string,\n optionsOrCause?: AgnosMissingDependencyErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"dependencyName\" in optionsOrCause);\n\n const options: AgnosMissingDependencyErrorOptions = isOptionsObject\n ? (optionsOrCause as AgnosMissingDependencyErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.dependencyName\n ? { dependencyName: options.dependencyName }\n : {}),\n ...options.context,\n };\n\n super(\"MissingDependencyError\", details, {\n code: options.code || \"AGNOS_MISSING_DEPENDENCY_ERROR\",\n statusCode: options.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.dependencyName = options.dependencyName;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for NotFoundError including resource identifier metadata.\n */\nexport interface AgnosNotFoundErrorOptions extends AgnosErrorOptions {\n resource?: string | undefined;\n resourceId?: string | number | undefined;\n}\n\n/**\n * Thrown when a requested resource or entity cannot be found.\n */\nexport class AgnosNotFoundError extends AgnosAppError {\n public readonly resource?: string | undefined;\n public readonly resourceId?: string | number | undefined;\n\n constructor(details: string, options?: AgnosNotFoundErrorOptions) {\n const context: Record<string, unknown> = {\n ...(options?.resource ? { resource: options.resource } : {}),\n ...(options?.resourceId !== undefined\n ? { resourceId: options.resourceId }\n : {}),\n ...options?.context,\n };\n\n super(\"NotFoundError\", details, {\n code: options?.code || \"AGNOS_NOT_FOUND_ERROR\",\n statusCode: options?.statusCode ?? 404,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.resource = options?.resource;\n this.resourceId = options?.resourceId;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for ResourceConflictError.\n */\nexport interface AgnosResourceConflictErrorOptions extends AgnosErrorOptions {\n conflictKey?: string | undefined;\n conflictingValue?: unknown;\n}\n\n/**\n * Thrown when an operation conflicts with existing state (e.g. duplicate key or concurrency collision).\n */\nexport class AgnosResourceConflictError extends AgnosAppError {\n public readonly conflictKey?: string | undefined;\n public readonly conflictingValue?: unknown;\n\n constructor(\n message: string,\n optionsOrCause?: AgnosResourceConflictErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"conflictKey\" in optionsOrCause);\n\n const options: AgnosResourceConflictErrorOptions = isOptionsObject\n ? (optionsOrCause as AgnosResourceConflictErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.conflictKey ? { conflictKey: options.conflictKey } : {}),\n ...(options.conflictingValue !== undefined\n ? { conflictingValue: options.conflictingValue }\n : {}),\n ...options.context,\n };\n\n super(\"ResourceConflictError\", message, {\n code: options.code || \"AGNOS_RESOURCE_CONFLICT_ERROR\",\n statusCode: options.statusCode ?? 409,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.conflictKey = options.conflictKey;\n this.conflictingValue = options.conflictingValue;\n }\n}\n","import { stat } from \"node:fs/promises\";\n\nexport async function folderExists(dir: string): Promise<boolean> {\n try {\n const stats = await stat(dir);\n return stats.isDirectory();\n } catch (error: any) {\n // 'ENOENT' means the directory or file does not exist\n if (error.code === \"ENOENT\") {\n return false;\n }\n // Re-throw if it is a different error (like permission issues)\n throw error;\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { Container } from \"@solid-stack/di\";\nimport { AgnosFeatureLoadError } from \"../errors/index.js\";\nimport { folderExists } from \"../../utils/index.js\";\nimport { flags } from \"@/constants/flags.js\";\n\nexport async function loadFeatures(\n c: Container,\n featuresDir: string,\n): Promise<void> {\n if (!(await folderExists(featuresDir))) {\n return;\n }\n\n const entries = await fs.readdir(featuresDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const featureName = entry.name;\n\n const files = await fs.readdir(path.join(featuresDir, featureName));\n\n // provider file should be called \"diProvider.ts\" or \"diProvider.js\"\n const providerFile = (() => {\n const newVersion = files.find(\n (f) => f === \"diProvider.ts\" || f === \"diProvider.js\",\n );\n\n if (newVersion) return newVersion;\n\n const oldVersion = files.find(\n (f) => f === \"DepsProvider.ts\" || f === \"DepsProvider.js\",\n );\n\n if (oldVersion) {\n if (flags.allowOldDepsProvider === \"true\") {\n console.warn(\n `Feature \"${featureName}\" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to \"diProvider.ts\" or \"diProvider.js\"`,\n );\n return oldVersion;\n } else {\n throw new AgnosFeatureLoadError(\n featureName,\n path.join(featuresDir, featureName, oldVersion),\n `Feature \"${featureName}\" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to \"diProvider.ts\" or \"diProvider.js\"`,\n );\n }\n }\n })();\n\n if (providerFile) {\n const modulePath = path.join(featuresDir, featureName, providerFile);\n const imported = await import(pathToFileURL(modulePath).href);\n\n const infraProvider = imported.default;\n\n if (!infraProvider) {\n throw new AgnosFeatureLoadError(\n featureName,\n modulePath,\n `Feature \"${featureName}\" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`,\n );\n }\n\n if (infraProvider && typeof infraProvider === \"function\") {\n c.load(infraProvider);\n }\n }\n }\n }\n}\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport { IPresentation, ILogger } from \"../types/index.js\";\n\n@MakeInjectable\nexport class Program {\n public static deps = {\n presentation: IPresentation,\n logger: ILogger,\n };\n\n constructor(public deps: DepsType<typeof Program.deps>) {}\n\n async start() {\n try {\n const presentation: IPresentation = this.deps.presentation;\n const logger: ILogger = this.deps.logger;\n await presentation.init();\n await presentation.run();\n\n let isShuttingDown = false;\n\n const handleOnStop = async (error?: Error | unknown) => {\n // Prevent multiple shutdown signals from overlapping\n if (isShuttingDown) return;\n isShuttingDown = true;\n\n if (error) {\n logger.error(\n \"Fatal Error: Shutting down due to unhandled exception...\",\n error,\n );\n } else {\n logger.info(\"Terminating process gracefully...\");\n }\n\n try {\n await presentation.stop();\n } catch (shutdownError) {\n logger.error(\n \"Error occurred while stopping the presentation layer:\",\n shutdownError,\n );\n } finally {\n // Exit with 1 if there was an error, otherwise 0\n process.exit(error ? 1 : 0);\n }\n };\n\n // OS Termination Signals\n process.on(\"SIGTERM\", () => handleOnStop());\n process.on(\"SIGINT\", () => handleOnStop()); // Fixed duplicate SIGTERM\n\n // Unhandled Errors\n process.on(\"uncaughtException\", (error) => handleOnStop(error));\n process.on(\"unhandledRejection\", (reason) => handleOnStop(reason));\n } catch (err) {\n this.deps.logger.error(\n \"An Uncaught/Unknown error has been encountered while Starting/Running the Application\",\n err,\n );\n }\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { loadInfra } from \"./bootstrap/loadInfra.js\";\nimport { loadFeatures } from \"./bootstrap/loadFeatures.js\";\nimport { Program } from \"./Program.js\";\nimport { ILogger, type StartOptions } from \"../types/index.js\";\n\n/**\n * Boots up and executes the Agnos application lifecycle.\n *\n * Automatically:\n * 1. Initializes core infrastructure (ILogger, etc.).\n * 2. Auto-discovers and loads feature modules if a features directory is specified.\n * 3. Resolves the Program lifecycle coordinator and runs the presentation layer.\n *\n * @param container - The @solid-stack/di Container instance.\n * @param options - Optional configuration including feature directory path.\n */\nexport const start = async (\n container: Container,\n options?: StartOptions,\n): Promise<void> => {\n // 1. Initialize core framework infrastructure\n await loadInfra(container);\n\n // 2. Discover and load feature providers if directory configured\n if (options?.featuresDir) {\n await loadFeatures(container, options.featuresDir);\n }\n\n // 3. Resolve Program and run presentation lifecycle\n const program = container.resolve(Program);\n const logger = container.resolve(ILogger);\n\n try {\n await program.start();\n } catch (err: unknown) {\n logger.error(\n \"An unhandled error occurred while starting the presentation layer:\",\n err,\n );\n throw err;\n }\n};\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { Container } from \"@solid-stack/di\";\nimport { AgnosFeatureLoadError } from \"../errors/index.js\";\nimport { folderExists } from \"../../utils/index.js\";\n\nexport async function loadShared(\n c: Container,\n sharedDir: string,\n): Promise<void> {\n if (!(await folderExists(sharedDir))) {\n return;\n }\n\n const entries = await fs.readdir(sharedDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const featureName = entry.name;\n\n const files = await fs.readdir(path.join(sharedDir, featureName));\n const providerFile = files.find(\n (f) => f === \"diProvider.ts\" || f === \"diProvider.js\",\n );\n\n if (providerFile) {\n const modulePath = path.join(sharedDir, featureName, providerFile);\n const imported = await import(pathToFileURL(modulePath).href);\n\n const infraProvider = imported.default;\n\n if (!infraProvider) {\n throw new AgnosFeatureLoadError(\n featureName,\n modulePath,\n `Feature \"${featureName}\" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`,\n );\n }\n\n if (infraProvider && typeof infraProvider === \"function\") {\n c.load(infraProvider);\n }\n }\n }\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { loadInfra } from \"./bootstrap/loadInfra.js\";\nimport { loadFeatures } from \"./bootstrap/loadFeatures.js\";\nimport { type StartOptions } from \"../types/index.js\";\nimport { loadShared } from \"./bootstrap/loadShared.js\";\n\n/**\n * Initializes the Agnos application.\n *\n * Automatically:\n * 1. Initializes core infrastructure (ILogger, etc.).\n * 2. Auto-discovers and loads feature modules if a features directory is specified.\n *\n * @param container - The @solid-stack/di Container instance.\n * @param options - Optional configuration including feature directory path.\n */\nexport const loadOnly = async (\n container: Container,\n options?: StartOptions,\n): Promise<void> => {\n // 1. Initialize core framework infrastructure\n await loadInfra(container);\n\n // 1.1 Load shared modules\n if (options?.sharedDir) {\n await loadShared(container, options.sharedDir);\n }\n\n // 2. Discover and load feature providers if directory configured\n if (options?.featuresDir) {\n await loadFeatures(container, options.featuresDir);\n }\n};\n","import type { Container } from \"@solid-stack/di\";\nimport { ILogger, type StartOptions } from \"../types/index.js\";\nimport { Program } from \"./Program.js\";\n\n/**\n * Starts the Agnos application.\n *\n * Automatically:\n * 1. Resolves the Program lifecycle coordinator and runs the presentation layer.\n *\n * @param container - The @solid-stack/di Container instance.\n */\nexport const startOnly = async (container: Container): Promise<void> => {\n const program = container.resolve(Program);\n const logger = container.resolve(ILogger);\n\n try {\n await program.start();\n } catch (err: unknown) {\n logger.error(\n \"An unhandled error occurred while starting the presentation layer:\",\n err,\n );\n throw err;\n }\n};\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport type { ILogger } from \"../../types/index.js\";\n\n@MakeInjectable\nexport class SilentLogger implements ILogger {\n public static deps = {};\n constructor(public deps: DepsType<typeof SilentLogger.deps>) {}\n log(..._args: any[]): void {}\n info(..._args: any[]): void {}\n warn(..._args: any[]): void {}\n error(..._args: any[]): void {}\n debug(..._args: any[]): void {}\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -17,12 +17,12 @@ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "fi
|
|
|
17
17
|
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
18
18
|
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
19
19
|
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
20
|
-
var __runInitializers = (array,
|
|
21
|
-
for (var i = 0, fns = array[
|
|
20
|
+
var __runInitializers = (array, flags2, self, value) => {
|
|
21
|
+
for (var i = 0, fns = array[flags2 >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self) ;
|
|
22
22
|
return value;
|
|
23
23
|
};
|
|
24
|
-
var __decorateElement = (array,
|
|
25
|
-
var it, done, ctx, k =
|
|
24
|
+
var __decorateElement = (array, flags2, name, decorators, target, extra) => {
|
|
25
|
+
var it, done, ctx, k = flags2 & 7, p = false;
|
|
26
26
|
var j = 0;
|
|
27
27
|
var extraInitializers = array[j] || (array[j] = []);
|
|
28
28
|
var desc = k && ((target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(target , name));
|
|
@@ -139,8 +139,8 @@ Stack Trace: ${this.stack}`;
|
|
|
139
139
|
}
|
|
140
140
|
};
|
|
141
141
|
|
|
142
|
-
// src/core/errors/
|
|
143
|
-
var
|
|
142
|
+
// src/core/errors/AgnosAppError.ts
|
|
143
|
+
var AgnosAppError = class extends AgnosError {
|
|
144
144
|
constructor(name = "Internal Server Error", details = "An Internal Server Error occured.", options) {
|
|
145
145
|
super(name, details, {
|
|
146
146
|
code: options?.code || "AGNOS_APP_ERROR",
|
|
@@ -150,8 +150,8 @@ var AppError = class extends AgnosError {
|
|
|
150
150
|
}
|
|
151
151
|
};
|
|
152
152
|
|
|
153
|
-
// src/core/errors/
|
|
154
|
-
var
|
|
153
|
+
// src/core/errors/AgnosBootstrapError.ts
|
|
154
|
+
var AgnosBootstrapError = class extends AgnosError {
|
|
155
155
|
constructor(details, options) {
|
|
156
156
|
super("BootstrapError", details, {
|
|
157
157
|
code: options?.code || "AGNOS_BOOTSTRAP_ERROR",
|
|
@@ -161,8 +161,8 @@ var BootstrapError = class extends AgnosError {
|
|
|
161
161
|
}
|
|
162
162
|
};
|
|
163
163
|
|
|
164
|
-
// src/core/errors/
|
|
165
|
-
var
|
|
164
|
+
// src/core/errors/AgnosFeatureLoadError.ts
|
|
165
|
+
var AgnosFeatureLoadError = class extends AgnosBootstrapError {
|
|
166
166
|
featureName;
|
|
167
167
|
providerPath;
|
|
168
168
|
constructor(featureName, providerPath, details, options) {
|
|
@@ -184,8 +184,8 @@ var FeatureLoadError = class extends BootstrapError {
|
|
|
184
184
|
}
|
|
185
185
|
};
|
|
186
186
|
|
|
187
|
-
// src/core/errors/
|
|
188
|
-
var
|
|
187
|
+
// src/core/errors/AgnosPresentationError.ts
|
|
188
|
+
var AgnosPresentationError = class extends AgnosError {
|
|
189
189
|
phase;
|
|
190
190
|
constructor(details, options) {
|
|
191
191
|
const context = {
|
|
@@ -202,8 +202,8 @@ var PresentationError = class extends AgnosError {
|
|
|
202
202
|
}
|
|
203
203
|
};
|
|
204
204
|
|
|
205
|
-
// src/core/errors/
|
|
206
|
-
var
|
|
205
|
+
// src/core/errors/AgnosInputParsingError.ts
|
|
206
|
+
var AgnosInputParsingError = class extends AgnosAppError {
|
|
207
207
|
issues;
|
|
208
208
|
constructor(details, options) {
|
|
209
209
|
const context = {
|
|
@@ -220,8 +220,8 @@ var InputParsingError = class extends AppError {
|
|
|
220
220
|
}
|
|
221
221
|
};
|
|
222
222
|
|
|
223
|
-
// src/core/errors/
|
|
224
|
-
var
|
|
223
|
+
// src/core/errors/AgnosInternalError.ts
|
|
224
|
+
var AgnosInternalError = class extends AgnosAppError {
|
|
225
225
|
constructor(details = "An Internal Server Error occured.", options) {
|
|
226
226
|
super("InternalError", details, {
|
|
227
227
|
code: options?.code || "AGNOS_INTERNAL_ERROR",
|
|
@@ -231,8 +231,8 @@ var InternalError = class extends AppError {
|
|
|
231
231
|
}
|
|
232
232
|
};
|
|
233
233
|
|
|
234
|
-
// src/core/errors/
|
|
235
|
-
var
|
|
234
|
+
// src/core/errors/AgnosInvalidDependencyError.ts
|
|
235
|
+
var AgnosInvalidDependencyError = class extends AgnosAppError {
|
|
236
236
|
dependencyName;
|
|
237
237
|
constructor(details, optionsOrCause) {
|
|
238
238
|
const isOptionsObject = optionsOrCause !== null && typeof optionsOrCause === "object" && ("cause" in optionsOrCause || "code" in optionsOrCause || "context" in optionsOrCause || "dependencyName" in optionsOrCause);
|
|
@@ -251,8 +251,8 @@ var InvalidDependencyError = class extends AppError {
|
|
|
251
251
|
}
|
|
252
252
|
};
|
|
253
253
|
|
|
254
|
-
// src/core/errors/
|
|
255
|
-
var
|
|
254
|
+
// src/core/errors/AgnosMissingDependencyError.ts
|
|
255
|
+
var AgnosMissingDependencyError = class extends AgnosAppError {
|
|
256
256
|
dependencyName;
|
|
257
257
|
constructor(details, optionsOrCause) {
|
|
258
258
|
const isOptionsObject = optionsOrCause !== null && typeof optionsOrCause === "object" && ("cause" in optionsOrCause || "code" in optionsOrCause || "context" in optionsOrCause || "dependencyName" in optionsOrCause);
|
|
@@ -271,8 +271,8 @@ var MissingDependencyError = class extends AppError {
|
|
|
271
271
|
}
|
|
272
272
|
};
|
|
273
273
|
|
|
274
|
-
// src/core/errors/
|
|
275
|
-
var
|
|
274
|
+
// src/core/errors/AgnosNotFoundError.ts
|
|
275
|
+
var AgnosNotFoundError = class extends AgnosAppError {
|
|
276
276
|
resource;
|
|
277
277
|
resourceId;
|
|
278
278
|
constructor(details, options) {
|
|
@@ -292,8 +292,8 @@ var NotFoundError = class extends AppError {
|
|
|
292
292
|
}
|
|
293
293
|
};
|
|
294
294
|
|
|
295
|
-
// src/core/errors/
|
|
296
|
-
var
|
|
295
|
+
// src/core/errors/AgnosResourceConflictError.ts
|
|
296
|
+
var AgnosResourceConflictError = class extends AgnosAppError {
|
|
297
297
|
conflictKey;
|
|
298
298
|
conflictingValue;
|
|
299
299
|
constructor(message, optionsOrCause) {
|
|
@@ -345,10 +345,12 @@ async function loadFeatures(c, featuresDir) {
|
|
|
345
345
|
(f) => f === "DepsProvider.ts" || f === "DepsProvider.js"
|
|
346
346
|
);
|
|
347
347
|
if (oldVersion) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
348
|
+
{
|
|
349
|
+
console.warn(
|
|
350
|
+
`Feature "${featureName}" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to "diProvider.ts" or "diProvider.js"`
|
|
351
|
+
);
|
|
352
|
+
return oldVersion;
|
|
353
|
+
}
|
|
352
354
|
}
|
|
353
355
|
})();
|
|
354
356
|
if (providerFile) {
|
|
@@ -356,7 +358,7 @@ async function loadFeatures(c, featuresDir) {
|
|
|
356
358
|
const imported = await import(pathToFileURL(modulePath).href);
|
|
357
359
|
const infraProvider = imported.default;
|
|
358
360
|
if (!infraProvider) {
|
|
359
|
-
throw new
|
|
361
|
+
throw new AgnosFeatureLoadError(
|
|
360
362
|
featureName,
|
|
361
363
|
modulePath,
|
|
362
364
|
`Feature "${featureName}" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`
|
|
@@ -460,7 +462,7 @@ async function loadShared(c, sharedDir) {
|
|
|
460
462
|
const imported = await import(pathToFileURL(modulePath).href);
|
|
461
463
|
const infraProvider = imported.default;
|
|
462
464
|
if (!infraProvider) {
|
|
463
|
-
throw new
|
|
465
|
+
throw new AgnosFeatureLoadError(
|
|
464
466
|
featureName,
|
|
465
467
|
modulePath,
|
|
466
468
|
`Feature "${featureName}" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`
|
|
@@ -522,6 +524,6 @@ _init3 = __decoratorStart();
|
|
|
522
524
|
SilentLogger = __decorateElement(_init3, 0, "SilentLogger", _SilentLogger_decorators, SilentLogger);
|
|
523
525
|
__runInitializers(_init3, 1, SilentLogger);
|
|
524
526
|
|
|
525
|
-
export {
|
|
527
|
+
export { AgnosAppError, AgnosBootstrapError, AgnosError, AgnosFeatureLoadError, AgnosInputParsingError, AgnosInternalError, AgnosInvalidDependencyError, AgnosMissingDependencyError, AgnosNotFoundError, AgnosPresentationError, AgnosResourceConflictError, ILogger, ILoggerTransport, IPresentation, LoggerTransportsToken, SilentLogger, UseCase, loadOnly, start, startOnly };
|
|
526
528
|
//# sourceMappingURL=index.js.map
|
|
527
529
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/public.ts","../src/core/logging/Logger.ts","../src/core/bootstrap/loadInfra.ts","../src/core/errors/AgnosError.ts","../src/core/errors/AppError.ts","../src/core/errors/BootstrapError.ts","../src/core/errors/FeatureLoadError.ts","../src/core/errors/PresentationError.ts","../src/core/errors/InputParsingError.ts","../src/core/errors/InternalError.ts","../src/core/errors/InvalidDependencyError.ts","../src/core/errors/MissingDependencyError.ts","../src/core/errors/NotFoundError.ts","../src/core/errors/ResourceConflictError.ts","../src/utils/folderExists.ts","../src/core/bootstrap/loadFeatures.ts","../src/core/Program.ts","../src/core/start.ts","../src/core/bootstrap/loadShared.ts","../src/core/loadOnly.ts","../src/core/startOnly.ts","../src/core/logging/SilentLogger.ts"],"names":["_init","MakeInjectable","fs","path","pathToFileURL"],"mappings":"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","file":"index.js","sourcesContent":["import { MultiToken } from \"@solid-stack/di\";\n\n/**\n * Supported log levels for logger transports.\n */\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"log\";\n\n/**\n * Abstract logger transport contract.\n */\nexport abstract class ILoggerTransport {\n abstract push: (message: any[], level: LogLevel) => void;\n}\n\n/**\n * MultiToken for registering and resolving logger transports.\n */\nexport class LoggerTransportsToken extends MultiToken<ILoggerTransport> {}\n\n/**\n * Abstract logger interface for application logging.\n */\nexport abstract class ILogger {\n abstract log(...args: any[]): void;\n abstract info(...args: any[]): void;\n abstract warn(...args: any[]): void;\n abstract error(...args: any[]): void;\n abstract debug(...args: any[]): void;\n}\n\n/**\n * Abstract presentation layer contract.\n */\nexport abstract class IPresentation {\n abstract init(): Promise<void>;\n abstract run(): Promise<void>;\n abstract stop(): Promise<void>;\n}\n\n/**\n * Abstract use case contract for application business logic.\n */\nexport abstract class UseCase<IRequest = any, IResponse = any> {\n abstract execute(request: IRequest): Promise<IResponse>;\n}\n\n/**\n * Options for bootstrapping and starting the application via start().\n */\nexport interface StartOptions {\n /** Optional directory path containing feature modules with DepsProvider files */\n featuresDir?: string | undefined;\n sharedDir?: string | undefined;\n}\n\n/**\n * Backward-compatible alias for StartOptions.\n */\nexport type StartDeps = StartOptions;\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport {\n ILogger,\n LoggerTransportsToken,\n type LogLevel,\n} from \"../../types/index.js\";\n\n@MakeInjectable\nexport class Logger implements ILogger {\n public static deps = {\n transports: LoggerTransportsToken,\n };\n\n constructor(public deps: DepsType<typeof Logger.deps>) {}\n\n private broadcast(level: LogLevel, args: any[]): void {\n for (const transport of this.deps.transports) {\n try {\n transport.push(args, level);\n } catch (err) {\n // Prevent a failing remote transport (e.g. Datadog network timeout) from crashing the application\n console.error(\n \"[Logger Transport Error]: Failed to dispatch log entry\",\n err,\n );\n }\n }\n }\n\n log(...args: any[]): void {\n this.broadcast(\"log\", args);\n }\n info(...args: any[]): void {\n this.broadcast(\"info\", args);\n }\n warn(...args: any[]): void {\n this.broadcast(\"warn\", args);\n }\n error(...args: any[]): void {\n this.broadcast(\"error\", args);\n }\n debug(...args: any[]): void {\n this.broadcast(\"debug\", args);\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { ILogger } from \"../../types/index.js\";\nimport { Logger } from \"../logging/Logger.js\";\n\nexport const loadInfra = async (c: Container) => {\n c.provide(ILogger, Logger);\n};\n","/**\n * Options for constructing Agnos framework errors.\n */\nexport interface AgnosErrorOptions {\n /** Underlying cause of the error */\n cause?: unknown;\n /** Machine-readable error code */\n code?: string | undefined;\n /** HTTP status code equivalent */\n statusCode?: number | undefined;\n /** Additional diagnostic metadata */\n context?: Record<string, unknown> | undefined;\n}\n\n/**\n * Base error class for all Agnos framework and application errors.\n */\nexport class AgnosError extends Error {\n public readonly details: string;\n public readonly code: string;\n public readonly statusCode: number;\n public readonly context?: Record<string, unknown> | undefined;\n\n constructor(\n name = \"AgnosError\",\n details = \"An Agnos framework error occurred.\",\n options?: AgnosErrorOptions,\n ) {\n const resolvedDetails = details || \"An Agnos framework error occurred.\";\n super(resolvedDetails, { cause: options?.cause });\n this.name = name;\n this.details = resolvedDetails;\n this.code = options?.code || \"AGNOS_ERROR\";\n this.statusCode = options?.statusCode ?? 500;\n this.context = options?.context;\n\n // Ensure proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n /**\n * Formats the error into a human-readable diagnostic string with code, context, cause, and stack trace.\n */\n prettyDetails(): string {\n const contextStr = this.context\n ? `\\nContext: ${JSON.stringify(this.context, null, 2)}`\n : \"\";\n const causeStr = this.cause\n ? `\\nCaused by: ${\n this.cause instanceof Error\n ? this.cause.stack || this.cause.message\n : String(this.cause)\n }`\n : \"\";\n return `[${this.code}] ${this.name} (${this.statusCode}): ${this.details}${contextStr}${causeStr}\\nStack Trace: ${this.stack}`;\n }\n\n /**\n * Serializes the error to a JSON-safe object.\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n code: this.code,\n statusCode: this.statusCode,\n message: this.message,\n details: this.details,\n context: this.context,\n };\n }\n\n /**\n * Type guard to verify if an unknown error is an instance of AgnosError.\n */\n static isAgnosError(error: unknown): error is AgnosError {\n return error instanceof AgnosError;\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Base application-level error class inheriting from AgnosError.\n */\nexport class AppError extends AgnosError {\n constructor(\n name = \"Internal Server Error\",\n details = \"An Internal Server Error occured.\",\n options?: AgnosErrorOptions,\n ) {\n super(name, details, {\n code: options?.code || \"AGNOS_APP_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when application bootstrap or infrastructure initialization fails.\n */\nexport class BootstrapError extends AgnosError {\n constructor(details: string, options?: AgnosErrorOptions) {\n super(\"BootstrapError\", details, {\n code: options?.code || \"AGNOS_BOOTSTRAP_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { BootstrapError } from \"./BootstrapError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for constructing a FeatureLoadError.\n */\nexport interface FeatureLoadErrorOptions extends AgnosErrorOptions {\n featureName?: string | undefined;\n providerPath?: string | undefined;\n}\n\n/**\n * Thrown when auto-loading a feature module or its DepsProvider fails.\n */\nexport class FeatureLoadError extends BootstrapError {\n public readonly featureName?: string | undefined;\n public readonly providerPath?: string | undefined;\n\n constructor(\n featureName: string,\n providerPath?: string | undefined,\n details?: string | undefined,\n options?: FeatureLoadErrorOptions,\n ) {\n const resolvedDetails =\n details ||\n `Failed to load feature \"${featureName}\" from provider path \"${providerPath || \"unknown\"}\".`;\n\n const context: Record<string, unknown> = {\n featureName,\n ...(providerPath ? { providerPath } : {}),\n ...options?.context,\n };\n\n super(resolvedDetails, {\n code: options?.code || \"AGNOS_FEATURE_LOAD_ERROR\",\n statusCode: options?.statusCode ?? 500,\n context,\n cause: options?.cause,\n });\n\n this.name = \"FeatureLoadError\";\n this.featureName = featureName;\n this.providerPath = providerPath;\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when the presentation layer fails during init, run, or stop lifecycle hooks.\n */\nexport class PresentationError extends AgnosError {\n public readonly phase?: (\"init\" | \"run\" | \"stop\") | undefined;\n\n constructor(\n details: string,\n options?: AgnosErrorOptions & { phase?: (\"init\" | \"run\" | \"stop\") | undefined },\n ) {\n const context: Record<string, unknown> = {\n ...(options?.phase ? { phase: options.phase } : {}),\n ...options?.context,\n };\n\n super(\"PresentationError\", details, {\n code: options?.code || \"AGNOS_PRESENTATION_ERROR\",\n statusCode: options?.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.phase = options?.phase;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for InputParsingError, including field-level validation errors.\n */\nexport interface InputParsingErrorOptions extends AgnosErrorOptions {\n issues?: Array<{ field?: string | undefined; message: string; code?: string | undefined }> | undefined;\n}\n\n/**\n * Thrown when request payload or user input validation fails.\n */\nexport class InputParsingError extends AppError {\n public readonly issues?: Array<{ field?: string | undefined; message: string; code?: string | undefined }> | undefined;\n\n constructor(details: string, options?: InputParsingErrorOptions) {\n const context: Record<string, unknown> = {\n ...(options?.issues ? { issues: options.issues } : {}),\n ...options?.context,\n };\n\n super(\"InputParsingError\", details, {\n code: options?.code || \"AGNOS_INPUT_PARSING_ERROR\",\n statusCode: options?.statusCode ?? 400,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.issues = options?.issues;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when an unexpected internal framework or application error occurs.\n */\nexport class InternalError extends AppError {\n constructor(\n details = \"An Internal Server Error occured.\",\n options?: AgnosErrorOptions,\n ) {\n super(\"InternalError\", details, {\n code: options?.code || \"AGNOS_INTERNAL_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for InvalidDependencyError.\n */\nexport interface InvalidDependencyErrorOptions extends AgnosErrorOptions {\n dependencyName?: string | undefined;\n}\n\n/**\n * Thrown when an invalid or improperly configured dependency is encountered.\n */\nexport class InvalidDependencyError extends AppError {\n public readonly dependencyName?: string | undefined;\n\n constructor(\n details: string,\n optionsOrCause?: InvalidDependencyErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"dependencyName\" in optionsOrCause);\n\n const options: InvalidDependencyErrorOptions = isOptionsObject\n ? (optionsOrCause as InvalidDependencyErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.dependencyName ? { dependencyName: options.dependencyName } : {}),\n ...options.context,\n };\n\n super(\"InvalidDependencyError\", details, {\n code: options.code || \"AGNOS_INVALID_DEPENDENCY_ERROR\",\n statusCode: options.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.dependencyName = options.dependencyName;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for MissingDependencyError.\n */\nexport interface MissingDependencyErrorOptions extends AgnosErrorOptions {\n dependencyName?: string | undefined;\n}\n\n/**\n * Thrown when a required dependency or token cannot be resolved.\n */\nexport class MissingDependencyError extends AppError {\n public readonly dependencyName?: string | undefined;\n\n constructor(\n details: string,\n optionsOrCause?: MissingDependencyErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"dependencyName\" in optionsOrCause);\n\n const options: MissingDependencyErrorOptions = isOptionsObject\n ? (optionsOrCause as MissingDependencyErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.dependencyName ? { dependencyName: options.dependencyName } : {}),\n ...options.context,\n };\n\n super(\"MissingDependencyError\", details, {\n code: options.code || \"AGNOS_MISSING_DEPENDENCY_ERROR\",\n statusCode: options.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.dependencyName = options.dependencyName;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for NotFoundError including resource identifier metadata.\n */\nexport interface NotFoundErrorOptions extends AgnosErrorOptions {\n resource?: string | undefined;\n resourceId?: string | number | undefined;\n}\n\n/**\n * Thrown when a requested resource or entity cannot be found.\n */\nexport class NotFoundError extends AppError {\n public readonly resource?: string | undefined;\n public readonly resourceId?: string | number | undefined;\n\n constructor(details: string, options?: NotFoundErrorOptions) {\n const context: Record<string, unknown> = {\n ...(options?.resource ? { resource: options.resource } : {}),\n ...(options?.resourceId !== undefined ? { resourceId: options.resourceId } : {}),\n ...options?.context,\n };\n\n super(\"NotFoundError\", details, {\n code: options?.code || \"AGNOS_NOT_FOUND_ERROR\",\n statusCode: options?.statusCode ?? 404,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.resource = options?.resource;\n this.resourceId = options?.resourceId;\n }\n}\n","import { AppError } from \"./AppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for ResourceConflictError.\n */\nexport interface ResourceConflictErrorOptions extends AgnosErrorOptions {\n conflictKey?: string | undefined;\n conflictingValue?: unknown;\n}\n\n/**\n * Thrown when an operation conflicts with existing state (e.g. duplicate key or concurrency collision).\n */\nexport class ResourceConflictError extends AppError {\n public readonly conflictKey?: string | undefined;\n public readonly conflictingValue?: unknown;\n\n constructor(\n message: string,\n optionsOrCause?: ResourceConflictErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"conflictKey\" in optionsOrCause);\n\n const options: ResourceConflictErrorOptions = isOptionsObject\n ? (optionsOrCause as ResourceConflictErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.conflictKey ? { conflictKey: options.conflictKey } : {}),\n ...(options.conflictingValue !== undefined\n ? { conflictingValue: options.conflictingValue }\n : {}),\n ...options.context,\n };\n\n super(\"ResourceConflictError\", message, {\n code: options.code || \"AGNOS_RESOURCE_CONFLICT_ERROR\",\n statusCode: options.statusCode ?? 409,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.conflictKey = options.conflictKey;\n this.conflictingValue = options.conflictingValue;\n }\n}\n","import { stat } from \"node:fs/promises\";\n\nexport async function folderExists(dir: string): Promise<boolean> {\n try {\n const stats = await stat(dir);\n return stats.isDirectory();\n } catch (error: any) {\n // 'ENOENT' means the directory or file does not exist\n if (error.code === \"ENOENT\") {\n return false;\n }\n // Re-throw if it is a different error (like permission issues)\n throw error;\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { Container } from \"@solid-stack/di\";\nimport { FeatureLoadError } from \"../errors/index.js\";\nimport { folderExists } from \"../../utils/index.js\";\n\nexport async function loadFeatures(\n c: Container,\n featuresDir: string,\n): Promise<void> {\n if (!(await folderExists(featuresDir))) {\n return;\n }\n\n const entries = await fs.readdir(featuresDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const featureName = entry.name;\n\n const files = await fs.readdir(path.join(featuresDir, featureName));\n\n // provider file should be called \"diProvider.ts\" or \"diProvider.js\"\n const providerFile = (() => {\n const newVersion = files.find(\n (f) => f === \"diProvider.ts\" || f === \"diProvider.js\",\n );\n\n if (newVersion) return newVersion;\n\n const oldVersion = files.find(\n (f) => f === \"DepsProvider.ts\" || f === \"DepsProvider.js\",\n );\n\n if (oldVersion) {\n console.warn(\n `Feature \"${featureName}\" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to \"diProvider.ts\" or \"diProvider.js\"`,\n );\n return oldVersion;\n }\n })();\n\n if (providerFile) {\n const modulePath = path.join(featuresDir, featureName, providerFile);\n const imported = await import(pathToFileURL(modulePath).href);\n\n const infraProvider = imported.default;\n\n if (!infraProvider) {\n throw new FeatureLoadError(\n featureName,\n modulePath,\n `Feature \"${featureName}\" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`,\n );\n }\n\n if (infraProvider && typeof infraProvider === \"function\") {\n c.load(infraProvider);\n }\n }\n }\n }\n}\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport { IPresentation, ILogger } from \"../types/index.js\";\n\n@MakeInjectable\nexport class Program {\n public static deps = {\n presentation: IPresentation,\n logger: ILogger,\n };\n\n constructor(public deps: DepsType<typeof Program.deps>) {}\n\n async start() {\n try {\n const presentation: IPresentation = this.deps.presentation;\n const logger: ILogger = this.deps.logger;\n await presentation.init();\n await presentation.run();\n\n let isShuttingDown = false;\n\n const handleOnStop = async (error?: Error | unknown) => {\n // Prevent multiple shutdown signals from overlapping\n if (isShuttingDown) return;\n isShuttingDown = true;\n\n if (error) {\n logger.error(\n \"Fatal Error: Shutting down due to unhandled exception...\",\n error,\n );\n } else {\n logger.info(\"Terminating process gracefully...\");\n }\n\n try {\n await presentation.stop();\n } catch (shutdownError) {\n logger.error(\n \"Error occurred while stopping the presentation layer:\",\n shutdownError,\n );\n } finally {\n // Exit with 1 if there was an error, otherwise 0\n process.exit(error ? 1 : 0);\n }\n };\n\n // OS Termination Signals\n process.on(\"SIGTERM\", () => handleOnStop());\n process.on(\"SIGINT\", () => handleOnStop()); // Fixed duplicate SIGTERM\n\n // Unhandled Errors\n process.on(\"uncaughtException\", (error) => handleOnStop(error));\n process.on(\"unhandledRejection\", (reason) => handleOnStop(reason));\n } catch (err) {\n this.deps.logger.error(\n \"An Uncaught/Unknown error has been encountered while Starting/Running the Application\",\n err,\n );\n }\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { loadInfra } from \"./bootstrap/loadInfra.js\";\nimport { loadFeatures } from \"./bootstrap/loadFeatures.js\";\nimport { Program } from \"./Program.js\";\nimport { ILogger, type StartOptions } from \"../types/index.js\";\n\n/**\n * Boots up and executes the Agnos application lifecycle.\n *\n * Automatically:\n * 1. Initializes core infrastructure (ILogger, etc.).\n * 2. Auto-discovers and loads feature modules if a features directory is specified.\n * 3. Resolves the Program lifecycle coordinator and runs the presentation layer.\n *\n * @param container - The @solid-stack/di Container instance.\n * @param options - Optional configuration including feature directory path.\n */\nexport const start = async (\n container: Container,\n options?: StartOptions,\n): Promise<void> => {\n // 1. Initialize core framework infrastructure\n await loadInfra(container);\n\n // 2. Discover and load feature providers if directory configured\n if (options?.featuresDir) {\n await loadFeatures(container, options.featuresDir);\n }\n\n // 3. Resolve Program and run presentation lifecycle\n const program = container.resolve(Program);\n const logger = container.resolve(ILogger);\n\n try {\n await program.start();\n } catch (err: unknown) {\n logger.error(\n \"An unhandled error occurred while starting the presentation layer:\",\n err,\n );\n throw err;\n }\n};\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { Container } from \"@solid-stack/di\";\nimport { FeatureLoadError } from \"../errors/index.js\";\nimport { folderExists } from \"../../utils/index.js\";\n\nexport async function loadShared(\n c: Container,\n sharedDir: string,\n): Promise<void> {\n if (!(await folderExists(sharedDir))) {\n return;\n }\n\n const entries = await fs.readdir(sharedDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const featureName = entry.name;\n\n const files = await fs.readdir(path.join(sharedDir, featureName));\n const providerFile = files.find(\n (f) => f === \"diProvider.ts\" || f === \"diProvider.js\",\n );\n\n if (providerFile) {\n const modulePath = path.join(sharedDir, featureName, providerFile);\n const imported = await import(pathToFileURL(modulePath).href);\n\n const infraProvider = imported.default;\n\n if (!infraProvider) {\n throw new FeatureLoadError(\n featureName,\n modulePath,\n `Feature \"${featureName}\" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`,\n );\n }\n\n if (infraProvider && typeof infraProvider === \"function\") {\n c.load(infraProvider);\n }\n }\n }\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { loadInfra } from \"./bootstrap/loadInfra.js\";\nimport { loadFeatures } from \"./bootstrap/loadFeatures.js\";\nimport { type StartOptions } from \"../types/index.js\";\nimport { loadShared } from \"./bootstrap/loadShared.js\";\n\n/**\n * Initializes the Agnos application.\n *\n * Automatically:\n * 1. Initializes core infrastructure (ILogger, etc.).\n * 2. Auto-discovers and loads feature modules if a features directory is specified.\n *\n * @param container - The @solid-stack/di Container instance.\n * @param options - Optional configuration including feature directory path.\n */\nexport const loadOnly = async (\n container: Container,\n options?: StartOptions,\n): Promise<void> => {\n // 1. Initialize core framework infrastructure\n await loadInfra(container);\n\n // 1.1 Load shared modules\n if (options?.sharedDir) {\n await loadShared(container, options.sharedDir);\n }\n\n // 2. Discover and load feature providers if directory configured\n if (options?.featuresDir) {\n await loadFeatures(container, options.featuresDir);\n }\n};\n","import type { Container } from \"@solid-stack/di\";\nimport { ILogger, type StartOptions } from \"../types/index.js\";\nimport { Program } from \"./Program.js\";\n\n/**\n * Starts the Agnos application.\n *\n * Automatically:\n * 1. Resolves the Program lifecycle coordinator and runs the presentation layer.\n *\n * @param container - The @solid-stack/di Container instance.\n */\nexport const startOnly = async (container: Container): Promise<void> => {\n const program = container.resolve(Program);\n const logger = container.resolve(ILogger);\n\n try {\n await program.start();\n } catch (err: unknown) {\n logger.error(\n \"An unhandled error occurred while starting the presentation layer:\",\n err,\n );\n throw err;\n }\n};\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport type { ILogger } from \"../../types/index.js\";\n\n@MakeInjectable\nexport class SilentLogger implements ILogger {\n public static deps = {};\n constructor(public deps: DepsType<typeof SilentLogger.deps>) {}\n log(..._args: any[]): void {}\n info(..._args: any[]): void {}\n warn(..._args: any[]): void {}\n error(..._args: any[]): void {}\n debug(..._args: any[]): void {}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/public.ts","../src/core/logging/Logger.ts","../src/core/bootstrap/loadInfra.ts","../src/core/errors/AgnosError.ts","../src/core/errors/AgnosAppError.ts","../src/core/errors/AgnosBootstrapError.ts","../src/core/errors/AgnosFeatureLoadError.ts","../src/core/errors/AgnosPresentationError.ts","../src/core/errors/AgnosInputParsingError.ts","../src/core/errors/AgnosInternalError.ts","../src/core/errors/AgnosInvalidDependencyError.ts","../src/core/errors/AgnosMissingDependencyError.ts","../src/core/errors/AgnosNotFoundError.ts","../src/core/errors/AgnosResourceConflictError.ts","../src/utils/folderExists.ts","../src/core/bootstrap/loadFeatures.ts","../src/core/Program.ts","../src/core/start.ts","../src/core/bootstrap/loadShared.ts","../src/core/loadOnly.ts","../src/core/startOnly.ts","../src/core/logging/SilentLogger.ts"],"names":["_init","MakeInjectable","fs","path","pathToFileURL"],"mappings":"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","file":"index.js","sourcesContent":["import { MultiToken } from \"@solid-stack/di\";\n\n/**\n * Supported log levels for logger transports.\n */\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\" | \"log\";\n\n/**\n * Abstract logger transport contract.\n */\nexport abstract class ILoggerTransport {\n abstract push: (message: any[], level: LogLevel) => void;\n}\n\n/**\n * MultiToken for registering and resolving logger transports.\n */\nexport class LoggerTransportsToken extends MultiToken<ILoggerTransport> {}\n\n/**\n * Abstract logger interface for application logging.\n */\nexport abstract class ILogger {\n abstract log(...args: any[]): void;\n abstract info(...args: any[]): void;\n abstract warn(...args: any[]): void;\n abstract error(...args: any[]): void;\n abstract debug(...args: any[]): void;\n}\n\n/**\n * Abstract presentation layer contract.\n */\nexport abstract class IPresentation {\n abstract init(): Promise<void>;\n abstract run(): Promise<void>;\n abstract stop(): Promise<void>;\n}\n\n/**\n * Abstract use case contract for application business logic.\n */\nexport abstract class UseCase<IRequest = any, IResponse = any> {\n abstract execute(request: IRequest): Promise<IResponse>;\n}\n\n/**\n * Options for bootstrapping and starting the application via start().\n */\nexport interface StartOptions {\n /** Optional directory path containing feature modules with DepsProvider files */\n featuresDir?: string | undefined;\n sharedDir?: string | undefined;\n}\n\n/**\n * Backward-compatible alias for StartOptions.\n */\nexport type StartDeps = StartOptions;\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport {\n ILogger,\n LoggerTransportsToken,\n type LogLevel,\n} from \"../../types/index.js\";\n\n@MakeInjectable\nexport class Logger implements ILogger {\n public static deps = {\n transports: LoggerTransportsToken,\n };\n\n constructor(public deps: DepsType<typeof Logger.deps>) {}\n\n private broadcast(level: LogLevel, args: any[]): void {\n for (const transport of this.deps.transports) {\n try {\n transport.push(args, level);\n } catch (err) {\n // Prevent a failing remote transport (e.g. Datadog network timeout) from crashing the application\n console.error(\n \"[Logger Transport Error]: Failed to dispatch log entry\",\n err,\n );\n }\n }\n }\n\n log(...args: any[]): void {\n this.broadcast(\"log\", args);\n }\n info(...args: any[]): void {\n this.broadcast(\"info\", args);\n }\n warn(...args: any[]): void {\n this.broadcast(\"warn\", args);\n }\n error(...args: any[]): void {\n this.broadcast(\"error\", args);\n }\n debug(...args: any[]): void {\n this.broadcast(\"debug\", args);\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { ILogger } from \"../../types/index.js\";\nimport { Logger } from \"../logging/Logger.js\";\n\nexport const loadInfra = async (c: Container) => {\n c.provide(ILogger, Logger);\n};\n","/**\n * Options for constructing Agnos framework errors.\n */\nexport interface AgnosErrorOptions {\n /** Underlying cause of the error */\n cause?: unknown;\n /** Machine-readable error code */\n code?: string | undefined;\n /** HTTP status code equivalent */\n statusCode?: number | undefined;\n /** Additional diagnostic metadata */\n context?: Record<string, unknown> | undefined;\n}\n\n/**\n * Base error class for all Agnos framework and application errors.\n */\nexport class AgnosError extends Error {\n public readonly details: string;\n public readonly code: string;\n public readonly statusCode: number;\n public readonly context?: Record<string, unknown> | undefined;\n\n constructor(\n name = \"AgnosError\",\n details = \"An Agnos framework error occurred.\",\n options?: AgnosErrorOptions,\n ) {\n const resolvedDetails = details || \"An Agnos framework error occurred.\";\n super(resolvedDetails, { cause: options?.cause });\n this.name = name;\n this.details = resolvedDetails;\n this.code = options?.code || \"AGNOS_ERROR\";\n this.statusCode = options?.statusCode ?? 500;\n this.context = options?.context;\n\n // Ensure proper prototype chain for instanceof checks\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n /**\n * Formats the error into a human-readable diagnostic string with code, context, cause, and stack trace.\n */\n prettyDetails(): string {\n const contextStr = this.context\n ? `\\nContext: ${JSON.stringify(this.context, null, 2)}`\n : \"\";\n const causeStr = this.cause\n ? `\\nCaused by: ${\n this.cause instanceof Error\n ? this.cause.stack || this.cause.message\n : String(this.cause)\n }`\n : \"\";\n return `[${this.code}] ${this.name} (${this.statusCode}): ${this.details}${contextStr}${causeStr}\\nStack Trace: ${this.stack}`;\n }\n\n /**\n * Serializes the error to a JSON-safe object.\n */\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n code: this.code,\n statusCode: this.statusCode,\n message: this.message,\n details: this.details,\n context: this.context,\n };\n }\n\n /**\n * Type guard to verify if an unknown error is an instance of AgnosError.\n */\n static isAgnosError(error: unknown): error is AgnosError {\n return error instanceof AgnosError;\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Base application-level error class inheriting from AgnosError.\n */\nexport class AgnosAppError extends AgnosError {\n constructor(\n name = \"Internal Server Error\",\n details = \"An Internal Server Error occured.\",\n options?: AgnosErrorOptions,\n ) {\n super(name, details, {\n code: options?.code || \"AGNOS_APP_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when application bootstrap or infrastructure initialization fails.\n */\nexport class AgnosBootstrapError extends AgnosError {\n constructor(details: string, options?: AgnosErrorOptions) {\n super(\"BootstrapError\", details, {\n code: options?.code || \"AGNOS_BOOTSTRAP_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AgnosBootstrapError } from \"./AgnosBootstrapError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for constructing a FeatureLoadError.\n */\nexport interface FeatureLoadErrorOptions extends AgnosErrorOptions {\n featureName?: string | undefined;\n providerPath?: string | undefined;\n}\n\n/**\n * Thrown when auto-loading a feature module or its DepsProvider fails.\n */\nexport class AgnosFeatureLoadError extends AgnosBootstrapError {\n public readonly featureName?: string | undefined;\n public readonly providerPath?: string | undefined;\n\n constructor(\n featureName: string,\n providerPath?: string | undefined,\n details?: string | undefined,\n options?: FeatureLoadErrorOptions,\n ) {\n const resolvedDetails =\n details ||\n `Failed to load feature \"${featureName}\" from provider path \"${providerPath || \"unknown\"}\".`;\n\n const context: Record<string, unknown> = {\n featureName,\n ...(providerPath ? { providerPath } : {}),\n ...options?.context,\n };\n\n super(resolvedDetails, {\n code: options?.code || \"AGNOS_FEATURE_LOAD_ERROR\",\n statusCode: options?.statusCode ?? 500,\n context,\n cause: options?.cause,\n });\n\n this.name = \"FeatureLoadError\";\n this.featureName = featureName;\n this.providerPath = providerPath;\n }\n}\n","import { AgnosError, type AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when the presentation layer fails during init, run, or stop lifecycle hooks.\n */\nexport class AgnosPresentationError extends AgnosError {\n public readonly phase?: (\"init\" | \"run\" | \"stop\") | undefined;\n\n constructor(\n details: string,\n options?: AgnosErrorOptions & {\n phase?: (\"init\" | \"run\" | \"stop\") | undefined;\n },\n ) {\n const context: Record<string, unknown> = {\n ...(options?.phase ? { phase: options.phase } : {}),\n ...options?.context,\n };\n\n super(\"PresentationError\", details, {\n code: options?.code || \"AGNOS_PRESENTATION_ERROR\",\n statusCode: options?.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.phase = options?.phase;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for InputParsingError, including field-level validation errors.\n */\nexport interface AgnosInputParsingErrorOptions extends AgnosErrorOptions {\n issues?:\n | Array<{\n field?: string | undefined;\n message: string;\n code?: string | undefined;\n }>\n | undefined;\n}\n\n/**\n * Thrown when request payload or user input validation fails.\n */\nexport class AgnosInputParsingError extends AgnosAppError {\n public readonly issues?:\n | Array<{\n field?: string | undefined;\n message: string;\n code?: string | undefined;\n }>\n | undefined;\n\n constructor(details: string, options?: AgnosInputParsingErrorOptions) {\n const context: Record<string, unknown> = {\n ...(options?.issues ? { issues: options.issues } : {}),\n ...options?.context,\n };\n\n super(\"InputParsingError\", details, {\n code: options?.code || \"AGNOS_INPUT_PARSING_ERROR\",\n statusCode: options?.statusCode ?? 400,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.issues = options?.issues;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Thrown when an unexpected internal framework or application error occurs.\n */\nexport class AgnosInternalError extends AgnosAppError {\n constructor(\n details = \"An Internal Server Error occured.\",\n options?: AgnosErrorOptions,\n ) {\n super(\"InternalError\", details, {\n code: options?.code || \"AGNOS_INTERNAL_ERROR\",\n statusCode: options?.statusCode ?? 500,\n ...options,\n });\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for InvalidDependencyError.\n */\nexport interface AgnosInvalidDependencyErrorOptions extends AgnosErrorOptions {\n dependencyName?: string | undefined;\n}\n\n/**\n * Thrown when an invalid or improperly configured dependency is encountered.\n */\nexport class AgnosInvalidDependencyError extends AgnosAppError {\n public readonly dependencyName?: string | undefined;\n\n constructor(\n details: string,\n optionsOrCause?: AgnosInvalidDependencyErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"dependencyName\" in optionsOrCause);\n\n const options: AgnosInvalidDependencyErrorOptions = isOptionsObject\n ? (optionsOrCause as AgnosInvalidDependencyErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.dependencyName\n ? { dependencyName: options.dependencyName }\n : {}),\n ...options.context,\n };\n\n super(\"InvalidDependencyError\", details, {\n code: options.code || \"AGNOS_INVALID_DEPENDENCY_ERROR\",\n statusCode: options.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.dependencyName = options.dependencyName;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for MissingDependencyError.\n */\nexport interface AgnosMissingDependencyErrorOptions extends AgnosErrorOptions {\n dependencyName?: string | undefined;\n}\n\n/**\n * Thrown when a required dependency or token cannot be resolved.\n */\nexport class AgnosMissingDependencyError extends AgnosAppError {\n public readonly dependencyName?: string | undefined;\n\n constructor(\n details: string,\n optionsOrCause?: AgnosMissingDependencyErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"dependencyName\" in optionsOrCause);\n\n const options: AgnosMissingDependencyErrorOptions = isOptionsObject\n ? (optionsOrCause as AgnosMissingDependencyErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.dependencyName\n ? { dependencyName: options.dependencyName }\n : {}),\n ...options.context,\n };\n\n super(\"MissingDependencyError\", details, {\n code: options.code || \"AGNOS_MISSING_DEPENDENCY_ERROR\",\n statusCode: options.statusCode ?? 500,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.dependencyName = options.dependencyName;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for NotFoundError including resource identifier metadata.\n */\nexport interface AgnosNotFoundErrorOptions extends AgnosErrorOptions {\n resource?: string | undefined;\n resourceId?: string | number | undefined;\n}\n\n/**\n * Thrown when a requested resource or entity cannot be found.\n */\nexport class AgnosNotFoundError extends AgnosAppError {\n public readonly resource?: string | undefined;\n public readonly resourceId?: string | number | undefined;\n\n constructor(details: string, options?: AgnosNotFoundErrorOptions) {\n const context: Record<string, unknown> = {\n ...(options?.resource ? { resource: options.resource } : {}),\n ...(options?.resourceId !== undefined\n ? { resourceId: options.resourceId }\n : {}),\n ...options?.context,\n };\n\n super(\"NotFoundError\", details, {\n code: options?.code || \"AGNOS_NOT_FOUND_ERROR\",\n statusCode: options?.statusCode ?? 404,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options?.cause,\n });\n\n this.resource = options?.resource;\n this.resourceId = options?.resourceId;\n }\n}\n","import { AgnosAppError } from \"./AgnosAppError.js\";\nimport type { AgnosErrorOptions } from \"./AgnosError.js\";\n\n/**\n * Options for ResourceConflictError.\n */\nexport interface AgnosResourceConflictErrorOptions extends AgnosErrorOptions {\n conflictKey?: string | undefined;\n conflictingValue?: unknown;\n}\n\n/**\n * Thrown when an operation conflicts with existing state (e.g. duplicate key or concurrency collision).\n */\nexport class AgnosResourceConflictError extends AgnosAppError {\n public readonly conflictKey?: string | undefined;\n public readonly conflictingValue?: unknown;\n\n constructor(\n message: string,\n optionsOrCause?: AgnosResourceConflictErrorOptions | unknown,\n ) {\n const isOptionsObject =\n optionsOrCause !== null &&\n typeof optionsOrCause === \"object\" &&\n (\"cause\" in optionsOrCause ||\n \"code\" in optionsOrCause ||\n \"context\" in optionsOrCause ||\n \"conflictKey\" in optionsOrCause);\n\n const options: AgnosResourceConflictErrorOptions = isOptionsObject\n ? (optionsOrCause as AgnosResourceConflictErrorOptions)\n : { cause: optionsOrCause };\n\n const context: Record<string, unknown> = {\n ...(options.conflictKey ? { conflictKey: options.conflictKey } : {}),\n ...(options.conflictingValue !== undefined\n ? { conflictingValue: options.conflictingValue }\n : {}),\n ...options.context,\n };\n\n super(\"ResourceConflictError\", message, {\n code: options.code || \"AGNOS_RESOURCE_CONFLICT_ERROR\",\n statusCode: options.statusCode ?? 409,\n context: Object.keys(context).length > 0 ? context : undefined,\n cause: options.cause,\n });\n\n this.conflictKey = options.conflictKey;\n this.conflictingValue = options.conflictingValue;\n }\n}\n","import { stat } from \"node:fs/promises\";\n\nexport async function folderExists(dir: string): Promise<boolean> {\n try {\n const stats = await stat(dir);\n return stats.isDirectory();\n } catch (error: any) {\n // 'ENOENT' means the directory or file does not exist\n if (error.code === \"ENOENT\") {\n return false;\n }\n // Re-throw if it is a different error (like permission issues)\n throw error;\n }\n}\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { Container } from \"@solid-stack/di\";\nimport { AgnosFeatureLoadError } from \"../errors/index.js\";\nimport { folderExists } from \"../../utils/index.js\";\nimport { flags } from \"@/constants/flags.js\";\n\nexport async function loadFeatures(\n c: Container,\n featuresDir: string,\n): Promise<void> {\n if (!(await folderExists(featuresDir))) {\n return;\n }\n\n const entries = await fs.readdir(featuresDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const featureName = entry.name;\n\n const files = await fs.readdir(path.join(featuresDir, featureName));\n\n // provider file should be called \"diProvider.ts\" or \"diProvider.js\"\n const providerFile = (() => {\n const newVersion = files.find(\n (f) => f === \"diProvider.ts\" || f === \"diProvider.js\",\n );\n\n if (newVersion) return newVersion;\n\n const oldVersion = files.find(\n (f) => f === \"DepsProvider.ts\" || f === \"DepsProvider.js\",\n );\n\n if (oldVersion) {\n if (flags.allowOldDepsProvider === \"true\") {\n console.warn(\n `Feature \"${featureName}\" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to \"diProvider.ts\" or \"diProvider.js\"`,\n );\n return oldVersion;\n } else {\n throw new AgnosFeatureLoadError(\n featureName,\n path.join(featuresDir, featureName, oldVersion),\n `Feature \"${featureName}\" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to \"diProvider.ts\" or \"diProvider.js\"`,\n );\n }\n }\n })();\n\n if (providerFile) {\n const modulePath = path.join(featuresDir, featureName, providerFile);\n const imported = await import(pathToFileURL(modulePath).href);\n\n const infraProvider = imported.default;\n\n if (!infraProvider) {\n throw new AgnosFeatureLoadError(\n featureName,\n modulePath,\n `Feature \"${featureName}\" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`,\n );\n }\n\n if (infraProvider && typeof infraProvider === \"function\") {\n c.load(infraProvider);\n }\n }\n }\n }\n}\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport { IPresentation, ILogger } from \"../types/index.js\";\n\n@MakeInjectable\nexport class Program {\n public static deps = {\n presentation: IPresentation,\n logger: ILogger,\n };\n\n constructor(public deps: DepsType<typeof Program.deps>) {}\n\n async start() {\n try {\n const presentation: IPresentation = this.deps.presentation;\n const logger: ILogger = this.deps.logger;\n await presentation.init();\n await presentation.run();\n\n let isShuttingDown = false;\n\n const handleOnStop = async (error?: Error | unknown) => {\n // Prevent multiple shutdown signals from overlapping\n if (isShuttingDown) return;\n isShuttingDown = true;\n\n if (error) {\n logger.error(\n \"Fatal Error: Shutting down due to unhandled exception...\",\n error,\n );\n } else {\n logger.info(\"Terminating process gracefully...\");\n }\n\n try {\n await presentation.stop();\n } catch (shutdownError) {\n logger.error(\n \"Error occurred while stopping the presentation layer:\",\n shutdownError,\n );\n } finally {\n // Exit with 1 if there was an error, otherwise 0\n process.exit(error ? 1 : 0);\n }\n };\n\n // OS Termination Signals\n process.on(\"SIGTERM\", () => handleOnStop());\n process.on(\"SIGINT\", () => handleOnStop()); // Fixed duplicate SIGTERM\n\n // Unhandled Errors\n process.on(\"uncaughtException\", (error) => handleOnStop(error));\n process.on(\"unhandledRejection\", (reason) => handleOnStop(reason));\n } catch (err) {\n this.deps.logger.error(\n \"An Uncaught/Unknown error has been encountered while Starting/Running the Application\",\n err,\n );\n }\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { loadInfra } from \"./bootstrap/loadInfra.js\";\nimport { loadFeatures } from \"./bootstrap/loadFeatures.js\";\nimport { Program } from \"./Program.js\";\nimport { ILogger, type StartOptions } from \"../types/index.js\";\n\n/**\n * Boots up and executes the Agnos application lifecycle.\n *\n * Automatically:\n * 1. Initializes core infrastructure (ILogger, etc.).\n * 2. Auto-discovers and loads feature modules if a features directory is specified.\n * 3. Resolves the Program lifecycle coordinator and runs the presentation layer.\n *\n * @param container - The @solid-stack/di Container instance.\n * @param options - Optional configuration including feature directory path.\n */\nexport const start = async (\n container: Container,\n options?: StartOptions,\n): Promise<void> => {\n // 1. Initialize core framework infrastructure\n await loadInfra(container);\n\n // 2. Discover and load feature providers if directory configured\n if (options?.featuresDir) {\n await loadFeatures(container, options.featuresDir);\n }\n\n // 3. Resolve Program and run presentation lifecycle\n const program = container.resolve(Program);\n const logger = container.resolve(ILogger);\n\n try {\n await program.start();\n } catch (err: unknown) {\n logger.error(\n \"An unhandled error occurred while starting the presentation layer:\",\n err,\n );\n throw err;\n }\n};\n","import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { Container } from \"@solid-stack/di\";\nimport { AgnosFeatureLoadError } from \"../errors/index.js\";\nimport { folderExists } from \"../../utils/index.js\";\n\nexport async function loadShared(\n c: Container,\n sharedDir: string,\n): Promise<void> {\n if (!(await folderExists(sharedDir))) {\n return;\n }\n\n const entries = await fs.readdir(sharedDir, { withFileTypes: true });\n\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const featureName = entry.name;\n\n const files = await fs.readdir(path.join(sharedDir, featureName));\n const providerFile = files.find(\n (f) => f === \"diProvider.ts\" || f === \"diProvider.js\",\n );\n\n if (providerFile) {\n const modulePath = path.join(sharedDir, featureName, providerFile);\n const imported = await import(pathToFileURL(modulePath).href);\n\n const infraProvider = imported.default;\n\n if (!infraProvider) {\n throw new AgnosFeatureLoadError(\n featureName,\n modulePath,\n `Feature \"${featureName}\" has a Dependency Provider file (${modulePath}) but doesn't have a default export of type (c: Container) => void`,\n );\n }\n\n if (infraProvider && typeof infraProvider === \"function\") {\n c.load(infraProvider);\n }\n }\n }\n }\n}\n","import type { Container } from \"@solid-stack/di\";\nimport { loadInfra } from \"./bootstrap/loadInfra.js\";\nimport { loadFeatures } from \"./bootstrap/loadFeatures.js\";\nimport { type StartOptions } from \"../types/index.js\";\nimport { loadShared } from \"./bootstrap/loadShared.js\";\n\n/**\n * Initializes the Agnos application.\n *\n * Automatically:\n * 1. Initializes core infrastructure (ILogger, etc.).\n * 2. Auto-discovers and loads feature modules if a features directory is specified.\n *\n * @param container - The @solid-stack/di Container instance.\n * @param options - Optional configuration including feature directory path.\n */\nexport const loadOnly = async (\n container: Container,\n options?: StartOptions,\n): Promise<void> => {\n // 1. Initialize core framework infrastructure\n await loadInfra(container);\n\n // 1.1 Load shared modules\n if (options?.sharedDir) {\n await loadShared(container, options.sharedDir);\n }\n\n // 2. Discover and load feature providers if directory configured\n if (options?.featuresDir) {\n await loadFeatures(container, options.featuresDir);\n }\n};\n","import type { Container } from \"@solid-stack/di\";\nimport { ILogger, type StartOptions } from \"../types/index.js\";\nimport { Program } from \"./Program.js\";\n\n/**\n * Starts the Agnos application.\n *\n * Automatically:\n * 1. Resolves the Program lifecycle coordinator and runs the presentation layer.\n *\n * @param container - The @solid-stack/di Container instance.\n */\nexport const startOnly = async (container: Container): Promise<void> => {\n const program = container.resolve(Program);\n const logger = container.resolve(ILogger);\n\n try {\n await program.start();\n } catch (err: unknown) {\n logger.error(\n \"An unhandled error occurred while starting the presentation layer:\",\n err,\n );\n throw err;\n }\n};\n","import { MakeInjectable, type DepsType } from \"@solid-stack/di\";\nimport type { ILogger } from \"../../types/index.js\";\n\n@MakeInjectable\nexport class SilentLogger implements ILogger {\n public static deps = {};\n constructor(public deps: DepsType<typeof SilentLogger.deps>) {}\n log(..._args: any[]): void {}\n info(..._args: any[]): void {}\n warn(..._args: any[]): void {}\n error(..._args: any[]): void {}\n debug(..._args: any[]): void {}\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/AppError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,qBAAa,QAAS,SAAQ,UAAU;IACtC,YACE,IAAI,SAA0B,EAC9B,OAAO,SAAsC,EAC7C,OAAO,CAAC,EAAE,iBAAiB,EAO5B;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BootstrapError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/BootstrapError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC5C,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAMvD;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FeatureLoadError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/FeatureLoadError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAClD,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAElD,YACE,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,CAAC,EAAE,uBAAuB,EAsBlC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InputParsingError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/InputParsingError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;CACxG;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,SAAgB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC,GAAG,SAAS,CAAC;IAEvH,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,EAc9D;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InternalError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/InternalError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,YACE,OAAO,SAAsC,EAC7C,OAAO,CAAC,EAAE,iBAAiB,EAO5B;CACF"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AppError } from "./AppError.js";
|
|
2
|
-
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
|
-
/**
|
|
4
|
-
* Options for InvalidDependencyError.
|
|
5
|
-
*/
|
|
6
|
-
export interface InvalidDependencyErrorOptions extends AgnosErrorOptions {
|
|
7
|
-
dependencyName?: string | undefined;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Thrown when an invalid or improperly configured dependency is encountered.
|
|
11
|
-
*/
|
|
12
|
-
export declare class InvalidDependencyError extends AppError {
|
|
13
|
-
readonly dependencyName?: string | undefined;
|
|
14
|
-
constructor(details: string, optionsOrCause?: InvalidDependencyErrorOptions | unknown);
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=InvalidDependencyError.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InvalidDependencyError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/InvalidDependencyError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;IACtE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;IAClD,SAAgB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpD,YACE,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,6BAA6B,GAAG,OAAO,EA2BzD;CACF"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AppError } from "./AppError.js";
|
|
2
|
-
import type { AgnosErrorOptions } from "./AgnosError.js";
|
|
3
|
-
/**
|
|
4
|
-
* Options for MissingDependencyError.
|
|
5
|
-
*/
|
|
6
|
-
export interface MissingDependencyErrorOptions extends AgnosErrorOptions {
|
|
7
|
-
dependencyName?: string | undefined;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Thrown when a required dependency or token cannot be resolved.
|
|
11
|
-
*/
|
|
12
|
-
export declare class MissingDependencyError extends AppError {
|
|
13
|
-
readonly dependencyName?: string | undefined;
|
|
14
|
-
constructor(details: string, optionsOrCause?: MissingDependencyErrorOptions | unknown);
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=MissingDependencyError.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MissingDependencyError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/MissingDependencyError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;IACtE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,QAAQ;IAClD,SAAgB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpD,YACE,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,6BAA6B,GAAG,OAAO,EA2BzD;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NotFoundError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/NotFoundError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,QAAQ;IACzC,SAAgB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,SAAgB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAEzD,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,EAgB1D;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PresentationError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/PresentationError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,SAAgB,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,CAAC;IAE9D,YACE,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,GAAG;QAAE,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,EAehF;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceConflictError.d.ts","sourceRoot":"","sources":["../../../src/core/errors/ResourceConflictError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,iBAAiB;IACrE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3C,YACE,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,4BAA4B,GAAG,OAAO,EA+BxD;CACF"}
|