@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.
Files changed (44) hide show
  1. package/dist/constants/flags.d.ts +4 -0
  2. package/dist/constants/flags.d.ts.map +1 -0
  3. package/dist/core/bootstrap/loadFeatures.d.ts.map +1 -1
  4. package/dist/core/errors/{AppError.d.ts → AgnosAppError.d.ts} +2 -2
  5. package/dist/core/errors/AgnosAppError.d.ts.map +1 -0
  6. package/dist/core/errors/{BootstrapError.d.ts → AgnosBootstrapError.d.ts} +2 -2
  7. package/dist/core/errors/AgnosBootstrapError.d.ts.map +1 -0
  8. package/dist/core/errors/{FeatureLoadError.d.ts → AgnosFeatureLoadError.d.ts} +3 -3
  9. package/dist/core/errors/AgnosFeatureLoadError.d.ts.map +1 -0
  10. package/dist/core/errors/{InputParsingError.d.ts → AgnosInputParsingError.d.ts} +5 -5
  11. package/dist/core/errors/AgnosInputParsingError.d.ts.map +1 -0
  12. package/dist/core/errors/{InternalError.d.ts → AgnosInternalError.d.ts} +3 -3
  13. package/dist/core/errors/AgnosInternalError.d.ts.map +1 -0
  14. package/dist/core/errors/AgnosInvalidDependencyError.d.ts +16 -0
  15. package/dist/core/errors/AgnosInvalidDependencyError.d.ts.map +1 -0
  16. package/dist/core/errors/AgnosMissingDependencyError.d.ts +16 -0
  17. package/dist/core/errors/AgnosMissingDependencyError.d.ts.map +1 -0
  18. package/dist/core/errors/{NotFoundError.d.ts → AgnosNotFoundError.d.ts} +5 -5
  19. package/dist/core/errors/AgnosNotFoundError.d.ts.map +1 -0
  20. package/dist/core/errors/{PresentationError.d.ts → AgnosPresentationError.d.ts} +2 -2
  21. package/dist/core/errors/AgnosPresentationError.d.ts.map +1 -0
  22. package/dist/core/errors/{ResourceConflictError.d.ts → AgnosResourceConflictError.d.ts} +5 -5
  23. package/dist/core/errors/AgnosResourceConflictError.d.ts.map +1 -0
  24. package/dist/core/errors/index.d.ts +10 -10
  25. package/dist/core/errors/index.d.ts.map +1 -1
  26. package/dist/core/index.d.ts +1 -1
  27. package/dist/core/index.d.ts.map +1 -1
  28. package/dist/index.cjs +42 -40
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.js +33 -31
  31. package/dist/index.js.map +1 -1
  32. package/package.json +1 -1
  33. package/dist/core/errors/AppError.d.ts.map +0 -1
  34. package/dist/core/errors/BootstrapError.d.ts.map +0 -1
  35. package/dist/core/errors/FeatureLoadError.d.ts.map +0 -1
  36. package/dist/core/errors/InputParsingError.d.ts.map +0 -1
  37. package/dist/core/errors/InternalError.d.ts.map +0 -1
  38. package/dist/core/errors/InvalidDependencyError.d.ts +0 -16
  39. package/dist/core/errors/InvalidDependencyError.d.ts.map +0 -1
  40. package/dist/core/errors/MissingDependencyError.d.ts +0 -16
  41. package/dist/core/errors/MissingDependencyError.d.ts.map +0 -1
  42. package/dist/core/errors/NotFoundError.d.ts.map +0 -1
  43. package/dist/core/errors/PresentationError.d.ts.map +0 -1
  44. package/dist/core/errors/ResourceConflictError.d.ts.map +0 -1
@@ -0,0 +1,4 @@
1
+ export declare const flags: {
2
+ allowOldDepsProvider: string;
3
+ };
4
+ //# sourceMappingURL=flags.d.ts.map
@@ -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;AAIjD,wBAAsB,YAAY,CAChC,CAAC,EAAE,SAAS,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAqDf"}
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 AppError extends AgnosError {
5
+ export declare class AgnosAppError extends AgnosError {
6
6
  constructor(name?: string, details?: string, options?: AgnosErrorOptions);
7
7
  }
8
- //# sourceMappingURL=AppError.d.ts.map
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 BootstrapError extends AgnosError {
5
+ export declare class AgnosBootstrapError extends AgnosError {
6
6
  constructor(details: string, options?: AgnosErrorOptions);
7
7
  }
8
- //# sourceMappingURL=BootstrapError.d.ts.map
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 { BootstrapError } from "./BootstrapError.js";
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 FeatureLoadError extends BootstrapError {
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=FeatureLoadError.d.ts.map
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 { AppError } from "./AppError.js";
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 InputParsingErrorOptions extends AgnosErrorOptions {
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 InputParsingError extends AppError {
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?: InputParsingErrorOptions);
22
+ constructor(details: string, options?: AgnosInputParsingErrorOptions);
23
23
  }
24
- //# sourceMappingURL=InputParsingError.d.ts.map
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 { AppError } from "./AppError.js";
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 InternalError extends AppError {
6
+ export declare class AgnosInternalError extends AgnosAppError {
7
7
  constructor(details?: string, options?: AgnosErrorOptions);
8
8
  }
9
- //# sourceMappingURL=InternalError.d.ts.map
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 { AppError } from "./AppError.js";
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 NotFoundErrorOptions extends AgnosErrorOptions {
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 NotFoundError extends AppError {
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?: NotFoundErrorOptions);
16
+ constructor(details: string, options?: AgnosNotFoundErrorOptions);
17
17
  }
18
- //# sourceMappingURL=NotFoundError.d.ts.map
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 PresentationError extends AgnosError {
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=PresentationError.d.ts.map
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 { AppError } from "./AppError.js";
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 ResourceConflictErrorOptions extends AgnosErrorOptions {
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 ResourceConflictError extends AppError {
13
+ export declare class AgnosResourceConflictError extends AgnosAppError {
14
14
  readonly conflictKey?: string | undefined;
15
15
  readonly conflictingValue?: unknown;
16
- constructor(message: string, optionsOrCause?: ResourceConflictErrorOptions | unknown);
16
+ constructor(message: string, optionsOrCause?: AgnosResourceConflictErrorOptions | unknown);
17
17
  }
18
- //# sourceMappingURL=ResourceConflictError.d.ts.map
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 { AppError } from "./AppError.js";
3
- export { BootstrapError } from "./BootstrapError.js";
4
- export { FeatureLoadError, type FeatureLoadErrorOptions, } from "./FeatureLoadError.js";
5
- export { PresentationError } from "./PresentationError.js";
6
- export { InputParsingError, type InputParsingErrorOptions, } from "./InputParsingError.js";
7
- export { InternalError } from "./InternalError.js";
8
- export { InvalidDependencyError, type InvalidDependencyErrorOptions, } from "./InvalidDependencyError.js";
9
- export { MissingDependencyError, type MissingDependencyErrorOptions, } from "./MissingDependencyError.js";
10
- export { NotFoundError, type NotFoundErrorOptions } from "./NotFoundError.js";
11
- export { ResourceConflictError, type ResourceConflictErrorOptions, } from "./ResourceConflictError.js";
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,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,EACtB,KAAK,6BAA6B,GACnC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EACL,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,4BAA4B,CAAC"}
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"}
@@ -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, AppError, BootstrapError, FeatureLoadError, type FeatureLoadErrorOptions, PresentationError, InputParsingError, type InputParsingErrorOptions, InternalError, InvalidDependencyError, type InvalidDependencyErrorOptions, MissingDependencyError, type MissingDependencyErrorOptions, NotFoundError, type NotFoundErrorOptions, ResourceConflictError, type ResourceConflictErrorOptions, } from "./errors/index.js";
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
@@ -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,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,aAAa,EACb,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,sBAAsB,EACtB,KAAK,6BAA6B,EAClC,aAAa,EACb,KAAK,oBAAoB,EACzB,qBAAqB,EACrB,KAAK,4BAA4B,GAClC,MAAM,mBAAmB,CAAC"}
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, flags, self, value) => {
28
- for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self) ;
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, flags, name, decorators, target, extra) => {
32
- var it, done, ctx, k = flags & 7, p = false;
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/AppError.ts
150
- var AppError = class extends AgnosError {
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/BootstrapError.ts
161
- var BootstrapError = class extends AgnosError {
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/FeatureLoadError.ts
172
- var FeatureLoadError = class extends BootstrapError {
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/PresentationError.ts
195
- var PresentationError = class extends AgnosError {
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/InputParsingError.ts
213
- var InputParsingError = class extends AppError {
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/InternalError.ts
231
- var InternalError = class extends AppError {
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/InvalidDependencyError.ts
242
- var InvalidDependencyError = class extends AppError {
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/MissingDependencyError.ts
262
- var MissingDependencyError = class extends AppError {
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/NotFoundError.ts
282
- var NotFoundError = class extends AppError {
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/ResourceConflictError.ts
303
- var ResourceConflictError = class extends AppError {
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
- console.warn(
356
- `Feature "${featureName}" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to "diProvider.ts" or "diProvider.js"`
357
- );
358
- return oldVersion;
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 FeatureLoadError(
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 FeatureLoadError(
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.AppError = AppError;
534
- exports.BootstrapError = BootstrapError;
535
- exports.FeatureLoadError = FeatureLoadError;
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;
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUO,IAAe,mBAAf,MAAgC;AAEvC;AAKO,IAAM,qBAAA,GAAN,cAAoCA,aAAA,CAA6B;AAAC;AAKlE,IAAe,UAAf,MAAuB;AAM9B;AAKO,IAAe,gBAAf,MAA6B;AAIpC;AAKO,IAAe,UAAf,MAAwD;AAE/D;AC5CA,IAAA,kBAAA,EAAA,KAAA;AAOA,kBAAA,GAAA,CAACC,iBAAA,CAAA;AACM,IAAM,SAAN,MAAgC;AAAA,EAKrC,YAAmB,IAAA,EAAoC;AAApC,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA,EAAqC;AAAA,EAArC,IAAA;AAAA,EAJnB,OAAc,IAAA,GAAO;AAAA,IACnB,UAAA,EAAY;AAAA,GACd;AAAA,EAIQ,SAAA,CAAU,OAAiB,IAAA,EAAmB;AACpD,IAAA,KAAA,MAAW,SAAA,IAAa,IAAA,CAAK,IAAA,CAAK,UAAA,EAAY;AAC5C,MAAA,IAAI;AACF,QAAA,SAAA,CAAU,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,MAC5B,SAAS,GAAA,EAAK;AAEZ,QAAA,OAAA,CAAQ,KAAA;AAAA,UACN,wDAAA;AAAA,UACA;AAAA,SACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,IAAA,EAAmB;AACxB,IAAA,IAAA,CAAK,SAAA,CAAU,OAAO,IAAI,CAAA;AAAA,EAC5B;AAAA,EACA,QAAQ,IAAA,EAAmB;AACzB,IAAA,IAAA,CAAK,SAAA,CAAU,QAAQ,IAAI,CAAA;AAAA,EAC7B;AAAA,EACA,QAAQ,IAAA,EAAmB;AACzB,IAAA,IAAA,CAAK,SAAA,CAAU,QAAQ,IAAI,CAAA;AAAA,EAC7B;AAAA,EACA,SAAS,IAAA,EAAmB;AAC1B,IAAA,IAAA,CAAK,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA,EAC9B;AAAA,EACA,SAAS,IAAA,EAAmB;AAC1B,IAAA,IAAA,CAAK,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA,EAC9B;AACF,CAAA;AApCO,KAAA,GAAA,gBAAA,CAAA,CAAA;AAAM,MAAA,GAAN,sCADP,kBAAA,EACa,MAAA,CAAA;AAAN,iBAAA,CAAA,KAAA,EAAA,CAAA,EAAM,MAAA,CAAA;;;ACJN,IAAM,SAAA,GAAY,OAAO,CAAA,KAAiB;AAC/C,EAAA,CAAA,CAAE,OAAA,CAAQ,SAAS,MAAM,CAAA;AAC3B,CAAA;;;ACWO,IAAM,UAAA,GAAN,MAAM,WAAA,SAAmB,KAAA,CAAM;AAAA,EACpB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EAEhB,WAAA,CACE,IAAA,GAAO,YAAA,EACP,OAAA,GAAU,sCACV,OAAA,EACA;AACA,IAAA,MAAM,kBAAkB,OAAA,IAAW,oCAAA;AACnC,IAAA,KAAA,CAAM,eAAA,EAAiB,EAAE,KAAA,EAAO,OAAA,EAAS,OAAO,CAAA;AAChD,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAA,IAAA,CAAK,OAAA,GAAU,eAAA;AACf,IAAA,IAAA,CAAK,IAAA,GAAO,SAAS,IAAA,IAAQ,aAAA;AAC7B,IAAA,IAAA,CAAK,UAAA,GAAa,SAAS,UAAA,IAAc,GAAA;AACzC,IAAA,IAAA,CAAK,UAAU,OAAA,EAAS,OAAA;AAGxB,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,GAAA,CAAA,MAAA,CAAW,SAAS,CAAA;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,GAAwB;AACtB,IAAA,MAAM,UAAA,GAAa,KAAK,OAAA,GACpB;AAAA,SAAA,EAAc,KAAK,SAAA,CAAU,IAAA,CAAK,SAAS,IAAA,EAAM,CAAC,CAAC,CAAA,CAAA,GACnD,EAAA;AACJ,IAAA,MAAM,QAAA,GAAW,KAAK,KAAA,GAClB;AAAA,WAAA,EACE,IAAA,CAAK,KAAA,YAAiB,KAAA,GAClB,IAAA,CAAK,KAAA,CAAM,KAAA,IAAS,IAAA,CAAK,KAAA,CAAM,OAAA,GAC/B,MAAA,CAAO,IAAA,CAAK,KAAK,CACvB,CAAA,CAAA,GACA,EAAA;AACJ,IAAA,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,EAAA,EAAK,KAAK,IAAI,CAAA,EAAA,EAAK,IAAA,CAAK,UAAU,MAAM,IAAA,CAAK,OAAO,CAAA,EAAG,UAAU,GAAG,QAAQ;AAAA,aAAA,EAAkB,KAAK,KAAK,CAAA,CAAA;AAAA,EAC9H;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA,GAAkC;AAChC,IAAA,OAAO;AAAA,MACL,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,SAAS,IAAA,CAAK;AAAA,KAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,aAAa,KAAA,EAAqC;AACvD,IAAA,OAAO,KAAA,YAAiB,WAAA;AAAA,EAC1B;AACF;;;ACxEO,IAAM,QAAA,GAAN,cAAuB,UAAA,CAAW;AAAA,EACvC,WAAA,CACE,IAAA,GAAO,uBAAA,EACP,OAAA,GAAU,qCACV,OAAA,EACA;AACA,IAAA,KAAA,CAAM,MAAM,OAAA,EAAS;AAAA,MACnB,IAAA,EAAM,SAAS,IAAA,IAAQ,iBAAA;AAAA,MACvB,UAAA,EAAY,SAAS,UAAA,IAAc,GAAA;AAAA,MACnC,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AACF;;;ACZO,IAAM,cAAA,GAAN,cAA6B,UAAA,CAAW;AAAA,EAC7C,WAAA,CAAY,SAAiB,OAAA,EAA6B;AACxD,IAAA,KAAA,CAAM,kBAAkB,OAAA,EAAS;AAAA,MAC/B,IAAA,EAAM,SAAS,IAAA,IAAQ,uBAAA;AAAA,MACvB,UAAA,EAAY,SAAS,UAAA,IAAc,GAAA;AAAA,MACnC,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AACF;;;ACCO,IAAM,gBAAA,GAAN,cAA+B,cAAA,CAAe;AAAA,EACnC,WAAA;AAAA,EACA,YAAA;AAAA,EAEhB,WAAA,CACE,WAAA,EACA,YAAA,EACA,OAAA,EACA,OAAA,EACA;AACA,IAAA,MAAM,kBACJ,OAAA,IACA,CAAA,wBAAA,EAA2B,WAAW,CAAA,sBAAA,EAAyB,gBAAgB,SAAS,CAAA,EAAA,CAAA;AAE1F,IAAA,MAAM,OAAA,GAAmC;AAAA,MACvC,WAAA;AAAA,MACA,GAAI,YAAA,GAAe,EAAE,YAAA,KAAiB,EAAC;AAAA,MACvC,GAAG,OAAA,EAAS;AAAA,KACd;AAEA,IAAA,KAAA,CAAM,eAAA,EAAiB;AAAA,MACrB,IAAA,EAAM,SAAS,IAAA,IAAQ,0BAAA;AAAA,MACvB,UAAA,EAAY,SAAS,UAAA,IAAc,GAAA;AAAA,MACnC,OAAA;AAAA,MACA,OAAO,OAAA,EAAS;AAAA,KACjB,CAAA;AAED,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AACZ,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,EACtB;AACF;;;ACxCO,IAAM,iBAAA,GAAN,cAAgC,UAAA,CAAW;AAAA,EAChC,KAAA;AAAA,EAEhB,WAAA,CACE,SACA,OAAA,EACA;AACA,IAAA,MAAM,OAAA,GAAmC;AAAA,MACvC,GAAI,SAAS,KAAA,GAAQ,EAAE,OAAO,OAAA,CAAQ,KAAA,KAAU,EAAC;AAAA,MACjD,GAAG,OAAA,EAAS;AAAA,KACd;AAEA,IAAA,KAAA,CAAM,qBAAqB,OAAA,EAAS;AAAA,MAClC,IAAA,EAAM,SAAS,IAAA,IAAQ,0BAAA;AAAA,MACvB,UAAA,EAAY,SAAS,UAAA,IAAc,GAAA;AAAA,MACnC,SAAS,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,GAAS,IAAI,OAAA,GAAU,MAAA;AAAA,MACrD,OAAO,OAAA,EAAS;AAAA,KACjB,CAAA;AAED,IAAA,IAAA,CAAK,QAAQ,OAAA,EAAS,KAAA;AAAA,EACxB;AACF;;;ACbO,IAAM,iBAAA,GAAN,cAAgC,QAAA,CAAS;AAAA,EAC9B,MAAA;AAAA,EAEhB,WAAA,CAAY,SAAiB,OAAA,EAAoC;AAC/D,IAAA,MAAM,OAAA,GAAmC;AAAA,MACvC,GAAI,SAAS,MAAA,GAAS,EAAE,QAAQ,OAAA,CAAQ,MAAA,KAAW,EAAC;AAAA,MACpD,GAAG,OAAA,EAAS;AAAA,KACd;AAEA,IAAA,KAAA,CAAM,qBAAqB,OAAA,EAAS;AAAA,MAClC,IAAA,EAAM,SAAS,IAAA,IAAQ,2BAAA;AAAA,MACvB,UAAA,EAAY,SAAS,UAAA,IAAc,GAAA;AAAA,MACnC,SAAS,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,GAAS,IAAI,OAAA,GAAU,MAAA;AAAA,MACrD,OAAO,OAAA,EAAS;AAAA,KACjB,CAAA;AAED,IAAA,IAAA,CAAK,SAAS,OAAA,EAAS,MAAA;AAAA,EACzB;AACF;;;ACzBO,IAAM,aAAA,GAAN,cAA4B,QAAA,CAAS;AAAA,EAC1C,WAAA,CACE,OAAA,GAAU,mCAAA,EACV,OAAA,EACA;AACA,IAAA,KAAA,CAAM,iBAAiB,OAAA,EAAS;AAAA,MAC9B,IAAA,EAAM,SAAS,IAAA,IAAQ,sBAAA;AAAA,MACvB,UAAA,EAAY,SAAS,UAAA,IAAc,GAAA;AAAA,MACnC,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AACF;;;ACJO,IAAM,sBAAA,GAAN,cAAqC,QAAA,CAAS;AAAA,EACnC,cAAA;AAAA,EAEhB,WAAA,CACE,SACA,cAAA,EACA;AACA,IAAA,MAAM,eAAA,GACJ,cAAA,KAAmB,IAAA,IACnB,OAAO,cAAA,KAAmB,QAAA,KACzB,OAAA,IAAW,cAAA,IACV,MAAA,IAAU,cAAA,IACV,SAAA,IAAa,cAAA,IACb,gBAAA,IAAoB,cAAA,CAAA;AAExB,IAAA,MAAM,OAAA,GAAyC,eAAA,GAC1C,cAAA,GACD,EAAE,OAAO,cAAA,EAAe;AAE5B,IAAA,MAAM,OAAA,GAAmC;AAAA,MACvC,GAAI,QAAQ,cAAA,GAAiB,EAAE,gBAAgB,OAAA,CAAQ,cAAA,KAAmB,EAAC;AAAA,MAC3E,GAAG,OAAA,CAAQ;AAAA,KACb;AAEA,IAAA,KAAA,CAAM,0BAA0B,OAAA,EAAS;AAAA,MACvC,IAAA,EAAM,QAAQ,IAAA,IAAQ,gCAAA;AAAA,MACtB,UAAA,EAAY,QAAQ,UAAA,IAAc,GAAA;AAAA,MAClC,SAAS,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,GAAS,IAAI,OAAA,GAAU,MAAA;AAAA,MACrD,OAAO,OAAA,CAAQ;AAAA,KAChB,CAAA;AAED,IAAA,IAAA,CAAK,iBAAiB,OAAA,CAAQ,cAAA;AAAA,EAChC;AACF;;;ACjCO,IAAM,sBAAA,GAAN,cAAqC,QAAA,CAAS;AAAA,EACnC,cAAA;AAAA,EAEhB,WAAA,CACE,SACA,cAAA,EACA;AACA,IAAA,MAAM,eAAA,GACJ,cAAA,KAAmB,IAAA,IACnB,OAAO,cAAA,KAAmB,QAAA,KACzB,OAAA,IAAW,cAAA,IACV,MAAA,IAAU,cAAA,IACV,SAAA,IAAa,cAAA,IACb,gBAAA,IAAoB,cAAA,CAAA;AAExB,IAAA,MAAM,OAAA,GAAyC,eAAA,GAC1C,cAAA,GACD,EAAE,OAAO,cAAA,EAAe;AAE5B,IAAA,MAAM,OAAA,GAAmC;AAAA,MACvC,GAAI,QAAQ,cAAA,GAAiB,EAAE,gBAAgB,OAAA,CAAQ,cAAA,KAAmB,EAAC;AAAA,MAC3E,GAAG,OAAA,CAAQ;AAAA,KACb;AAEA,IAAA,KAAA,CAAM,0BAA0B,OAAA,EAAS;AAAA,MACvC,IAAA,EAAM,QAAQ,IAAA,IAAQ,gCAAA;AAAA,MACtB,UAAA,EAAY,QAAQ,UAAA,IAAc,GAAA;AAAA,MAClC,SAAS,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,GAAS,IAAI,OAAA,GAAU,MAAA;AAAA,MACrD,OAAO,OAAA,CAAQ;AAAA,KAChB,CAAA;AAED,IAAA,IAAA,CAAK,iBAAiB,OAAA,CAAQ,cAAA;AAAA,EAChC;AACF;;;AChCO,IAAM,aAAA,GAAN,cAA4B,QAAA,CAAS;AAAA,EAC1B,QAAA;AAAA,EACA,UAAA;AAAA,EAEhB,WAAA,CAAY,SAAiB,OAAA,EAAgC;AAC3D,IAAA,MAAM,OAAA,GAAmC;AAAA,MACvC,GAAI,SAAS,QAAA,GAAW,EAAE,UAAU,OAAA,CAAQ,QAAA,KAAa,EAAC;AAAA,MAC1D,GAAI,SAAS,UAAA,KAAe,MAAA,GAAY,EAAE,UAAA,EAAY,OAAA,CAAQ,UAAA,EAAW,GAAI,EAAC;AAAA,MAC9E,GAAG,OAAA,EAAS;AAAA,KACd;AAEA,IAAA,KAAA,CAAM,iBAAiB,OAAA,EAAS;AAAA,MAC9B,IAAA,EAAM,SAAS,IAAA,IAAQ,uBAAA;AAAA,MACvB,UAAA,EAAY,SAAS,UAAA,IAAc,GAAA;AAAA,MACnC,SAAS,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,GAAS,IAAI,OAAA,GAAU,MAAA;AAAA,MACrD,OAAO,OAAA,EAAS;AAAA,KACjB,CAAA;AAED,IAAA,IAAA,CAAK,WAAW,OAAA,EAAS,QAAA;AACzB,IAAA,IAAA,CAAK,aAAa,OAAA,EAAS,UAAA;AAAA,EAC7B;AACF;;;ACrBO,IAAM,qBAAA,GAAN,cAAoC,QAAA,CAAS;AAAA,EAClC,WAAA;AAAA,EACA,gBAAA;AAAA,EAEhB,WAAA,CACE,SACA,cAAA,EACA;AACA,IAAA,MAAM,eAAA,GACJ,cAAA,KAAmB,IAAA,IACnB,OAAO,cAAA,KAAmB,QAAA,KACzB,OAAA,IAAW,cAAA,IACV,MAAA,IAAU,cAAA,IACV,SAAA,IAAa,cAAA,IACb,aAAA,IAAiB,cAAA,CAAA;AAErB,IAAA,MAAM,OAAA,GAAwC,eAAA,GACzC,cAAA,GACD,EAAE,OAAO,cAAA,EAAe;AAE5B,IAAA,MAAM,OAAA,GAAmC;AAAA,MACvC,GAAI,QAAQ,WAAA,GAAc,EAAE,aAAa,OAAA,CAAQ,WAAA,KAAgB,EAAC;AAAA,MAClE,GAAI,QAAQ,gBAAA,KAAqB,MAAA,GAC7B,EAAE,gBAAA,EAAkB,OAAA,CAAQ,gBAAA,EAAiB,GAC7C,EAAC;AAAA,MACL,GAAG,OAAA,CAAQ;AAAA,KACb;AAEA,IAAA,KAAA,CAAM,yBAAyB,OAAA,EAAS;AAAA,MACtC,IAAA,EAAM,QAAQ,IAAA,IAAQ,+BAAA;AAAA,MACtB,UAAA,EAAY,QAAQ,UAAA,IAAc,GAAA;AAAA,MAClC,SAAS,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,GAAS,IAAI,OAAA,GAAU,MAAA;AAAA,MACrD,OAAO,OAAA,CAAQ;AAAA,KAChB,CAAA;AAED,IAAA,IAAA,CAAK,cAAc,OAAA,CAAQ,WAAA;AAC3B,IAAA,IAAA,CAAK,mBAAmB,OAAA,CAAQ,gBAAA;AAAA,EAClC;AACF;AClDA,eAAsB,aAAa,GAAA,EAA+B;AAChE,EAAA,IAAI;AACF,IAAA,MAAM,KAAA,GAAQ,MAAMC,OAAA,CAAK,GAAG,CAAA;AAC5B,IAAA,OAAO,MAAM,WAAA,EAAY;AAAA,EAC3B,SAAS,KAAA,EAAY;AAEnB,IAAA,IAAI,KAAA,CAAM,SAAS,QAAA,EAAU;AAC3B,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,MAAM,KAAA;AAAA,EACR;AACF;;;ACPA,eAAsB,YAAA,CACpB,GACA,WAAA,EACe;AACf,EAAA,IAAI,CAAE,MAAM,YAAA,CAAa,WAAW,CAAA,EAAI;AACtC,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,MAAMC,mBAAA,CAAG,OAAA,CAAQ,aAAa,EAAE,aAAA,EAAe,MAAM,CAAA;AAErE,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,MAAA,MAAM,cAAc,KAAA,CAAM,IAAA;AAE1B,MAAA,MAAM,KAAA,GAAQ,MAAMA,mBAAA,CAAG,OAAA,CAAQC,sBAAK,IAAA,CAAK,WAAA,EAAa,WAAW,CAAC,CAAA;AAGlE,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAA,MAAM,aAAa,KAAA,CAAM,IAAA;AAAA,UACvB,CAAC,CAAA,KAAM,CAAA,KAAM,eAAA,IAAmB,CAAA,KAAM;AAAA,SACxC;AAEA,QAAA,IAAI,YAAY,OAAO,UAAA;AAEvB,QAAA,MAAM,aAAa,KAAA,CAAM,IAAA;AAAA,UACvB,CAAC,CAAA,KAAM,CAAA,KAAM,iBAAA,IAAqB,CAAA,KAAM;AAAA,SAC1C;AAEA,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,OAAA,CAAQ,IAAA;AAAA,YACN,CAAA,SAAA,EAAY,WAAW,CAAA,2DAAA,EAA8D,UAAU,CAAA,yDAAA;AAAA,WACjG;AACA,UAAA,OAAO,UAAA;AAAA,QACT;AAAA,MACF,CAAA,GAAG;AAEH,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,UAAA,GAAaA,qBAAA,CAAK,IAAA,CAAK,WAAA,EAAa,aAAa,YAAY,CAAA;AACnE,QAAA,MAAM,QAAA,GAAW,MAAM,OAAOC,iBAAA,CAAc,UAAU,CAAA,CAAE,IAAA,CAAA;AAExD,QAAA,MAAM,gBAAgB,QAAA,CAAS,OAAA;AAE/B,QAAA,IAAI,CAAC,aAAA,EAAe;AAClB,UAAA,MAAM,IAAI,gBAAA;AAAA,YACR,WAAA;AAAA,YACA,UAAA;AAAA,YACA,CAAA,SAAA,EAAY,WAAW,CAAA,kCAAA,EAAqC,UAAU,CAAA,kEAAA;AAAA,WACxE;AAAA,QACF;AAEA,QAAA,IAAI,aAAA,IAAiB,OAAO,aAAA,KAAkB,UAAA,EAAY;AACxD,UAAA,CAAA,CAAE,KAAK,aAAa,CAAA;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AC/DA,IAAA,mBAAA,EAAAC,MAAAA;AAGA,mBAAA,GAAA,CAACL,iBAAAA,CAAAA;AACM,IAAM,UAAN,MAAc;AAAA,EAMnB,YAAmB,IAAA,EAAqC;AAArC,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA,EAAsC;AAAA,EAAtC,IAAA;AAAA,EALnB,OAAc,IAAA,GAAO;AAAA,IACnB,YAAA,EAAc,aAAA;AAAA,IACd,MAAA,EAAQ;AAAA,GACV;AAAA,EAIA,MAAM,KAAA,GAAQ;AACZ,IAAA,IAAI;AACF,MAAA,MAAM,YAAA,GAA8B,KAAK,IAAA,CAAK,YAAA;AAC9C,MAAA,MAAM,MAAA,GAAkB,KAAK,IAAA,CAAK,MAAA;AAClC,MAAA,MAAM,aAAa,IAAA,EAAK;AACxB,MAAA,MAAM,aAAa,GAAA,EAAI;AAEvB,MAAA,IAAI,cAAA,GAAiB,KAAA;AAErB,MAAA,MAAM,YAAA,GAAe,OAAO,KAAA,KAA4B;AAEtD,QAAA,IAAI,cAAA,EAAgB;AACpB,QAAA,cAAA,GAAiB,IAAA;AAEjB,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,0DAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,KAAK,mCAAmC,CAAA;AAAA,QACjD;AAEA,QAAA,IAAI;AACF,UAAA,MAAM,aAAa,IAAA,EAAK;AAAA,QAC1B,SAAS,aAAA,EAAe;AACtB,UAAA,MAAA,CAAO,KAAA;AAAA,YACL,uDAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAA,SAAE;AAEA,UAAA,OAAA,CAAQ,IAAA,CAAK,KAAA,GAAQ,CAAA,GAAI,CAAC,CAAA;AAAA,QAC5B;AAAA,MACF,CAAA;AAGA,MAAA,OAAA,CAAQ,EAAA,CAAG,SAAA,EAAW,MAAM,YAAA,EAAc,CAAA;AAC1C,MAAA,OAAA,CAAQ,EAAA,CAAG,QAAA,EAAU,MAAM,YAAA,EAAc,CAAA;AAGzC,MAAA,OAAA,CAAQ,GAAG,mBAAA,EAAqB,CAAC,KAAA,KAAU,YAAA,CAAa,KAAK,CAAC,CAAA;AAC9D,MAAA,OAAA,CAAQ,GAAG,oBAAA,EAAsB,CAAC,MAAA,KAAW,YAAA,CAAa,MAAM,CAAC,CAAA;AAAA,IACnE,SAAS,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,KAAK,MAAA,CAAO,KAAA;AAAA,QACf,uFAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AAAA,EACF;AACF,CAAA;AA1DOK,MAAAA,GAAA,gBAAA,CAAA,CAAA;AAAM,OAAA,GAAN,iBAAA,CAAAA,MAAAA,EAAA,CAAA,EAAA,SAAA,EADP,mBAAA,EACa,OAAA,CAAA;AAAN,iBAAA,CAAAA,QAAA,CAAA,EAAM,OAAA,CAAA;;;ACaN,IAAM,KAAA,GAAQ,OACnB,SAAA,EACA,OAAA,KACkB;AAElB,EAAA,MAAM,UAAU,SAAS,CAAA;AAGzB,EAAA,IAAI,SAAS,WAAA,EAAa;AACxB,IAAA,MAAM,YAAA,CAAa,SAAA,EAAW,OAAA,CAAQ,WAAW,CAAA;AAAA,EACnD;AAGA,EAAA,MAAM,OAAA,GAAU,SAAA,CAAU,OAAA,CAAQ,OAAO,CAAA;AACzC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,OAAA,CAAQ,OAAO,CAAA;AAExC,EAAA,IAAI;AACF,IAAA,MAAM,QAAQ,KAAA,EAAM;AAAA,EACtB,SAAS,GAAA,EAAc;AACrB,IAAA,MAAA,CAAO,KAAA;AAAA,MACL,oEAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,GAAA;AAAA,EACR;AACF;ACnCA,eAAsB,UAAA,CACpB,GACA,SAAA,EACe;AACf,EAAA,IAAI,CAAE,MAAM,YAAA,CAAa,SAAS,CAAA,EAAI;AACpC,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,MAAMH,mBAAAA,CAAG,OAAA,CAAQ,WAAW,EAAE,aAAA,EAAe,MAAM,CAAA;AAEnE,EAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,IAAA,IAAI,KAAA,CAAM,aAAY,EAAG;AACvB,MAAA,MAAM,cAAc,KAAA,CAAM,IAAA;AAE1B,MAAA,MAAM,KAAA,GAAQ,MAAMA,mBAAAA,CAAG,OAAA,CAAQC,sBAAK,IAAA,CAAK,SAAA,EAAW,WAAW,CAAC,CAAA;AAChE,MAAA,MAAM,eAAe,KAAA,CAAM,IAAA;AAAA,QACzB,CAAC,CAAA,KAAM,CAAA,KAAM,eAAA,IAAmB,CAAA,KAAM;AAAA,OACxC;AAEA,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,UAAA,GAAaA,qBAAAA,CAAK,IAAA,CAAK,SAAA,EAAW,aAAa,YAAY,CAAA;AACjE,QAAA,MAAM,QAAA,GAAW,MAAM,OAAOC,iBAAAA,CAAc,UAAU,CAAA,CAAE,IAAA,CAAA;AAExD,QAAA,MAAM,gBAAgB,QAAA,CAAS,OAAA;AAE/B,QAAA,IAAI,CAAC,aAAA,EAAe;AAClB,UAAA,MAAM,IAAI,gBAAA;AAAA,YACR,WAAA;AAAA,YACA,UAAA;AAAA,YACA,CAAA,SAAA,EAAY,WAAW,CAAA,kCAAA,EAAqC,UAAU,CAAA,kEAAA;AAAA,WACxE;AAAA,QACF;AAEA,QAAA,IAAI,aAAA,IAAiB,OAAO,aAAA,KAAkB,UAAA,EAAY;AACxD,UAAA,CAAA,CAAE,KAAK,aAAa,CAAA;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AC9BO,IAAM,QAAA,GAAW,OACtB,SAAA,EACA,OAAA,KACkB;AAElB,EAAA,MAAM,UAAU,SAAS,CAAA;AAGzB,EAAA,IAAI,SAAS,SAAA,EAAW;AACtB,IAAA,MAAM,UAAA,CAAW,SAAA,EAAW,OAAA,CAAQ,SAAS,CAAA;AAAA,EAC/C;AAGA,EAAA,IAAI,SAAS,WAAA,EAAa;AACxB,IAAA,MAAM,YAAA,CAAa,SAAA,EAAW,OAAA,CAAQ,WAAW,CAAA;AAAA,EACnD;AACF;;;ACpBO,IAAM,SAAA,GAAY,OAAO,SAAA,KAAwC;AACtE,EAAA,MAAM,OAAA,GAAU,SAAA,CAAU,OAAA,CAAQ,OAAO,CAAA;AACzC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,OAAA,CAAQ,OAAO,CAAA;AAExC,EAAA,IAAI;AACF,IAAA,MAAM,QAAQ,KAAA,EAAM;AAAA,EACtB,SAAS,GAAA,EAAc;AACrB,IAAA,MAAA,CAAO,KAAA;AAAA,MACL,oEAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,GAAA;AAAA,EACR;AACF;ACzBA,IAAA,wBAAA,EAAAC,MAAAA;AAGA,wBAAA,GAAA,CAACL,iBAAAA,CAAAA;AACYM,uBAAN,kBAAA,CAAsC;AAAA,EAE3C,YAAmB,IAAA,EAA0C;AAA1C,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA,EAA2C;AAAA,EAA3C,IAAA;AAAA,EADnB,OAAc,OAAO,EAAC;AAAA,EAEtB,OAAO,KAAA,EAAoB;AAAA,EAAC;AAAA,EAC5B,QAAQ,KAAA,EAAoB;AAAA,EAAC;AAAA,EAC7B,QAAQ,KAAA,EAAoB;AAAA,EAAC;AAAA,EAC7B,SAAS,KAAA,EAAoB;AAAA,EAAC;AAAA,EAC9B,SAAS,KAAA,EAAoB;AAAA,EAAC;AAChC;AAROD,MAAAA,GAAA,gBAAA,CAAA,CAAA;AAAMC,oBAAA,GAAN,iBAAA,CAAAD,MAAAA,EAAA,CAAA,EAAA,cAAA,EADP,wBAAA,EACaC,oBAAA,CAAA;AAAN,iBAAA,CAAAD,QAAA,CAAA,EAAMC,oBAAA,CAAA","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, flags, self, value) => {
21
- for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self) ;
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, flags, name, decorators, target, extra) => {
25
- var it, done, ctx, k = flags & 7, p = false;
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/AppError.ts
143
- var AppError = class extends AgnosError {
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/BootstrapError.ts
154
- var BootstrapError = class extends AgnosError {
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/FeatureLoadError.ts
165
- var FeatureLoadError = class extends BootstrapError {
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/PresentationError.ts
188
- var PresentationError = class extends AgnosError {
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/InputParsingError.ts
206
- var InputParsingError = class extends AppError {
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/InternalError.ts
224
- var InternalError = class extends AppError {
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/InvalidDependencyError.ts
235
- var InvalidDependencyError = class extends AppError {
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/MissingDependencyError.ts
255
- var MissingDependencyError = class extends AppError {
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/NotFoundError.ts
275
- var NotFoundError = class extends AppError {
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/ResourceConflictError.ts
296
- var ResourceConflictError = class extends AppError {
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
- console.warn(
349
- `Feature "${featureName}" is using an old version of the Dependency Provider file (${oldVersion}). Please rename it to "diProvider.ts" or "diProvider.js"`
350
- );
351
- return oldVersion;
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 FeatureLoadError(
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 FeatureLoadError(
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 { AgnosError, AppError, BootstrapError, FeatureLoadError, ILogger, ILoggerTransport, IPresentation, InputParsingError, InternalError, InvalidDependencyError, LoggerTransportsToken, MissingDependencyError, NotFoundError, PresentationError, ResourceConflictError, SilentLogger, UseCase, loadOnly, start, startOnly };
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@solid-stack/agnos",
3
- "version": "1.0.7",
3
+ "version": "1.0.10",
4
4
  "description": "An agnostic, type-safe application architecture framework for TypeScript powered by @solid-stack/di.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -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"}