@sentzunhat/zacatl 0.0.22 β†’ 0.0.24

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 (53) hide show
  1. package/README.md +13 -7
  2. package/build/index.d.ts +1 -2
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +1 -2
  5. package/build/index.js.map +1 -1
  6. package/build/orm/mongoose.d.ts +3 -0
  7. package/build/orm/mongoose.d.ts.map +1 -0
  8. package/build/orm/mongoose.js +2 -0
  9. package/build/orm/mongoose.js.map +1 -0
  10. package/build/orm/sequelize.d.ts +3 -0
  11. package/build/orm/sequelize.d.ts.map +1 -0
  12. package/build/orm/sequelize.js +2 -0
  13. package/build/orm/sequelize.js.map +1 -0
  14. package/build/service/architecture/application/application.d.ts +1 -0
  15. package/build/service/architecture/application/application.d.ts.map +1 -1
  16. package/build/service/architecture/application/application.js +6 -1
  17. package/build/service/architecture/application/application.js.map +1 -1
  18. package/build/service/architecture/application/index.d.ts +1 -0
  19. package/build/service/architecture/application/index.d.ts.map +1 -1
  20. package/build/service/architecture/application/index.js +1 -0
  21. package/build/service/architecture/application/index.js.map +1 -1
  22. package/build/service/architecture/domain/domain.d.ts +1 -0
  23. package/build/service/architecture/domain/domain.d.ts.map +1 -1
  24. package/build/service/architecture/domain/domain.js +6 -1
  25. package/build/service/architecture/domain/domain.js.map +1 -1
  26. package/build/service/architecture/infrastructure/index.d.ts +0 -4
  27. package/build/service/architecture/infrastructure/index.d.ts.map +1 -1
  28. package/build/service/architecture/infrastructure/index.js +0 -2
  29. package/build/service/architecture/infrastructure/index.js.map +1 -1
  30. package/build/service/architecture/infrastructure/infrastructure.d.ts +1 -0
  31. package/build/service/architecture/infrastructure/infrastructure.d.ts.map +1 -1
  32. package/build/service/architecture/infrastructure/infrastructure.js +6 -1
  33. package/build/service/architecture/infrastructure/infrastructure.js.map +1 -1
  34. package/build/service/architecture/infrastructure/orm/adapter-loader.d.ts.map +1 -1
  35. package/build/service/architecture/infrastructure/orm/adapter-loader.js.map +1 -1
  36. package/build/service/architecture/infrastructure/repositories/abstract.d.ts.map +1 -1
  37. package/build/service/architecture/infrastructure/repositories/abstract.js.map +1 -1
  38. package/build/service/architecture/infrastructure/repositories/types.d.ts +2 -2
  39. package/build/service/architecture/infrastructure/repositories/types.d.ts.map +1 -1
  40. package/build/service/architecture/infrastructure/repositories/types.js.map +1 -1
  41. package/build/test/tsconfig.tsbuildinfo +1 -1
  42. package/package.json +10 -2
  43. package/src/index.ts +6 -11
  44. package/src/orm/mongoose.ts +22 -0
  45. package/src/orm/sequelize.ts +14 -0
  46. package/src/service/architecture/application/application.ts +12 -3
  47. package/src/service/architecture/application/index.ts +1 -0
  48. package/src/service/architecture/domain/domain.ts +10 -1
  49. package/src/service/architecture/infrastructure/index.ts +0 -46
  50. package/src/service/architecture/infrastructure/infrastructure.ts +10 -1
  51. package/src/service/architecture/infrastructure/orm/adapter-loader.ts +2 -10
  52. package/src/service/architecture/infrastructure/repositories/abstract.ts +3 -14
  53. package/src/service/architecture/infrastructure/repositories/types.ts +3 -44
package/README.md CHANGED
@@ -5,8 +5,8 @@
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
6
  [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-3178c6.svg)](https://www.typescriptlang.org/)
7
7
  [![Node.js 24+](https://img.shields.io/badge/Node.js-24%2B-brightgreen.svg)](https://nodejs.org/)
8
- [![Tests: 169](https://img.shields.io/badge/Tests-169-blue.svg)](#testing)
9
- [![Coverage: 79%](https://img.shields.io/badge/Coverage-79%25-brightgreen.svg)](#testing)
8
+ [![Tests: 188](https://img.shields.io/badge/Tests-188-blue.svg)](#testing)
9
+ [![Coverage: 78%](https://img.shields.io/badge/Coverage-78%25-brightgreen.svg)](#testing)
10
10
 
11
11
  **Production-ready TypeScript framework for building scalable microservices, APIs, and distributed systems.**
12
12
 
@@ -47,18 +47,24 @@ Zacatl is MIT-licensed (permissive). Please don’t use it to harm people.
47
47
  npm install @sentzunhat/zacatl
48
48
  ```
49
49
 
50
- ## πŸ“¦ Import Shortcuts (v0.0.22+)
50
+ ## πŸ“¦ Import Strategy (v0.0.24+)
51
51
 
52
- > **New in v0.0.22:** ESM runtime compatibility fix. Adapters now use dynamic `import()` instead of `require()`. [Migration Guide](./docs/migration/v0.0.22.md)
52
+ > **⚠️ Breaking Change in v0.0.24:** Main package no longer exports ORMs. Use dedicated subpaths to prevent eager loading. [Migration Guide](./docs/migration/v0.0.24.md)
53
53
 
54
54
  ```typescript
55
- // Short imports for better DX
55
+ // βœ… Recommended: Subpath imports (tree-shakeable, no eager loading)
56
+ import { Service } from "@sentzunhat/zacatl";
57
+ import { mongoose, Schema } from "@sentzunhat/zacatl/orm/mongoose";
58
+ import { Sequelize, DataTypes } from "@sentzunhat/zacatl/orm/sequelize";
59
+ import { resolveDependency } from "@sentzunhat/zacatl/application";
60
+
61
+ // Other subpath shortcuts
56
62
  import { BaseRepository, ORMType } from "@sentzunhat/zacatl/infrastructure";
57
63
  import { CustomError } from "@sentzunhat/zacatl/errors";
58
64
  import { loadConfig } from "@sentzunhat/zacatl/config";
59
65
 
60
- // Or full path (still works)
61
- import { BaseRepository } from "@sentzunhat/zacatl/build/service/architecture/infrastructure/repositories/abstract";
66
+ // ❌ No longer available (removed in v0.0.24)
67
+ // import { mongoose } from "@sentzunhat/zacatl"; // Would cause eager loading
62
68
  ```
63
69
 
64
70
  ### Hello World HTTP Service
package/build/index.d.ts CHANGED
@@ -12,9 +12,8 @@ export * from "./localization";
12
12
  export * from "./service/architecture/infrastructure";
13
13
  export { ServerType, ServerVendor, DatabaseVendor, HandlersType, } from "./service/architecture/platform/server/server";
14
14
  export type { ConfigServer } from "./service/architecture/platform/server/server";
15
- export { container } from "tsyringe";
15
+ export { container, singleton, inject } from "tsyringe";
16
16
  export type { DependencyContainer } from "tsyringe";
17
17
  export { z } from "zod";
18
18
  export type { ZodSchema, ZodType, ZodError } from "zod";
19
- export * from "./orm-exports";
20
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"./src/","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,uCAAuC,CAAC;AAGtD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,+CAA+C,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAGlF,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAGxD,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"./src/","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,+CAA+C,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAGlF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC"}
package/build/index.js CHANGED
@@ -10,7 +10,6 @@ export * from "./runtime";
10
10
  export * from "./localization";
11
11
  export * from "./service/architecture/infrastructure";
12
12
  export { ServerType, ServerVendor, DatabaseVendor, HandlersType, } from "./service/architecture/platform/server/server";
13
- export { container } from "tsyringe";
13
+ export { container, singleton, inject } from "tsyringe";
14
14
  export { z } from "zod";
15
- export * from "./orm-exports";
16
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,uCAAuC,CAAC;AAGtD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,+CAA+C,CAAC;AAIvD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAIrC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,cAAc,eAAe,CAAC","sourcesContent":["export * from \"./optionals\";\nexport * from \"./configuration\";\nexport * from \"./utils\";\nexport * from \"./error\";\nexport * from \"./dependency-injection\";\nexport * from \"./service\";\nexport { Service } from \"./service\";\nexport type { ConfigService } from \"./service\";\nexport * from \"./logs\";\nexport * from \"./runtime\";\nexport * from \"./localization\";\n\n// Re-export infrastructure with ORM types\nexport * from \"./service/architecture/infrastructure\";\n\n// Re-export server types for convenience\nexport {\n ServerType,\n ServerVendor,\n DatabaseVendor,\n HandlersType,\n} from \"./service/architecture/platform/server/server\";\nexport type { ConfigServer } from \"./service/architecture/platform/server/server\";\n\n// Re-export commonly used third-party packages\nexport { container } from \"tsyringe\";\nexport type { DependencyContainer } from \"tsyringe\";\n\n// Re-export Zod for validation\nexport { z } from \"zod\";\nexport type { ZodSchema, ZodType, ZodError } from \"zod\";\n\n// Re-export ORMs (included as dependencies)\nexport * from \"./orm-exports\";\n\n// Note: TypeScript utility types (Partial, Required, Readonly, etc.)\n// are globally available and don't need re-export\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,GACb,MAAM,+CAA+C,CAAC;AAIvD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC","sourcesContent":["export * from \"./optionals\";\nexport * from \"./configuration\";\nexport * from \"./utils\";\nexport * from \"./error\";\nexport * from \"./dependency-injection\";\nexport * from \"./service\";\nexport { Service } from \"./service\";\nexport type { ConfigService } from \"./service\";\nexport * from \"./logs\";\nexport * from \"./runtime\";\nexport * from \"./localization\";\n\nexport * from \"./service/architecture/infrastructure\";\n\nexport {\n ServerType,\n ServerVendor,\n DatabaseVendor,\n HandlersType,\n} from \"./service/architecture/platform/server/server\";\nexport type { ConfigServer } from \"./service/architecture/platform/server/server\";\n\n// Third-party integrations\nexport { container, singleton, inject } from \"tsyringe\";\nexport type { DependencyContainer } from \"tsyringe\";\nexport { z } from \"zod\";\nexport type { ZodSchema, ZodType, ZodError } from \"zod\";\n\n// ⚠️ ORM exports REMOVED from main package to prevent eager loading\n// Use dedicated subpath imports instead:\n// import { mongoose, Schema } from \"@sentzunhat/zacatl/orm/mongoose\"\n// import { Sequelize, DataTypes } from \"@sentzunhat/zacatl/orm/sequelize\"\n"]}
@@ -0,0 +1,3 @@
1
+ export { default as mongoose, Mongoose, Schema, Model, Document, connect, connection, } from "mongoose";
2
+ export type { Model as MongooseModel } from "mongoose";
3
+ //# sourceMappingURL=mongoose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoose.d.ts","sourceRoot":"./src/","sources":["orm/mongoose.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAAU,GACX,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default as mongoose, Mongoose, Schema, Model, Document, connect, connection, } from "mongoose";
2
+ //# sourceMappingURL=mongoose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongoose.js","sourceRoot":"./src/","sources":["orm/mongoose.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAAU,GACX,MAAM,UAAU,CAAC","sourcesContent":["/**\n * Mongoose ORM exports\n *\n * @example Minimal bundle (tree-shakeable)\n * import { mongoose, Schema } from \"@sentzunhat/zacatl/orm/mongoose\";\n *\n * @example Convenience (from main package)\n * import { mongoose, Schema } from \"@sentzunhat/zacatl\";\n */\n\nexport {\n default as mongoose,\n Mongoose,\n Schema,\n Model,\n Document,\n connect,\n connection,\n} from \"mongoose\";\n\n// Type-only exports\nexport type { Model as MongooseModel } from \"mongoose\";\n"]}
@@ -0,0 +1,3 @@
1
+ export { Sequelize, Model as SequelizeModel, DataTypes, Op } from "sequelize";
2
+ export type { ModelStatic, Options as SequelizeOptions } from "sequelize";
3
+ //# sourceMappingURL=sequelize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequelize.d.ts","sourceRoot":"./src/","sources":["orm/sequelize.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAG9E,YAAY,EAAE,WAAW,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Sequelize, Model as SequelizeModel, DataTypes, Op } from "sequelize";
2
+ //# sourceMappingURL=sequelize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequelize.js","sourceRoot":"./src/","sources":["orm/sequelize.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,SAAS,EAAE,KAAK,IAAI,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC","sourcesContent":["/**\n * Sequelize ORM exports\n *\n * @example Minimal bundle (tree-shakeable)\n * import { Sequelize, DataTypes } from \"@sentzunhat/zacatl/orm/sequelize\";\n *\n * @example Convenience (from main package)\n * import { Sequelize, DataTypes } from \"@sentzunhat/zacatl\";\n */\n\nexport { Sequelize, Model as SequelizeModel, DataTypes, Op } from \"sequelize\";\n\n// Type-only exports\nexport type { ModelStatic, Options as SequelizeOptions } from \"sequelize\";\n"]}
@@ -10,6 +10,7 @@ export type ApplicationEntryPoints = {
10
10
  };
11
11
  export type ConfigApplication = {
12
12
  entryPoints: ApplicationEntryPoints;
13
+ autoRegister?: boolean;
13
14
  };
14
15
  export declare class Application extends AbstractArchitecture {
15
16
  private config;
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"./src/","sources":["service/architecture/application/application.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE;QAEJ,YAAY,EAAE,uBAAuB,CAAC;QAEtC,aAAa,EAAE,wBAAwB,CAAC;KACzC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF,qBAAa,WAAY,SAAQ,oBAAoB;IACnD,OAAO,CAAC,MAAM,CAAoB;IAE3B,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,aAAa,EAAE,YAAY,EAAE,CAAM;gBAE9B,MAAM,EAAE,iBAAiB;IAerC,OAAO,CAAC,YAAY;IAYb,KAAK,IAAI,IAAI;CAGrB"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"./src/","sources":["service/architecture/application/application.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,MAAM,uBAAuB,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;AAExE,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE;QAEJ,YAAY,EAAE,uBAAuB,CAAC;QAEtC,aAAa,EAAE,wBAAwB,CAAC;KACzC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,sBAAsB,CAAC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,qBAAa,WAAY,SAAQ,oBAAoB;IACnD,OAAO,CAAC,MAAM,CAAoB;IAE3B,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,aAAa,EAAE,YAAY,EAAE,CAAM;gBAE9B,MAAM,EAAE,iBAAiB;IAoBrC,OAAO,CAAC,YAAY;IAYb,KAAK,IAAI,IAAI;CAMrB"}
@@ -13,13 +13,18 @@ export class Application extends AbstractArchitecture {
13
13
  directory: path.join(process.cwd(), "src/locales"),
14
14
  });
15
15
  this.config = config;
16
+ if (config.autoRegister) {
17
+ this.registerRest();
18
+ }
16
19
  }
17
20
  registerRest() {
18
21
  this.registerAndStoreDependencies(this.config.entryPoints.rest.hookHandlers, this.hookHandlers);
19
22
  this.registerAndStoreDependencies(this.config.entryPoints.rest.routeHandlers, this.routeHandlers);
20
23
  }
21
24
  start() {
22
- this.registerRest();
25
+ if (!this.config.autoRegister) {
26
+ this.registerRest();
27
+ }
23
28
  }
24
29
  }
25
30
  //# sourceMappingURL=application.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"application.js","sourceRoot":"./src/","sources":["service/architecture/application/application.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAe,MAAM,iBAAiB,CAAC;AAmBpE,MAAM,OAAO,WAAY,SAAQ,oBAAoB;IAC3C,MAAM,CAAoB;IAE3B,YAAY,GAAkB,EAAE,CAAC;IACjC,aAAa,GAAmB,EAAE,CAAC;IAE1C,YAAY,MAAyB;QACnC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACrB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;SACnD,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAKO,YAAY;QAClB,IAAI,CAAC,4BAA4B,CAC/B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EACzC,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,IAAI,CAAC,4BAA4B,CAC/B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAC1C,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;CACF","sourcesContent":["import i18n from \"i18n\";\nimport path from \"path\";\n\nimport { AbstractArchitecture, Constructor } from \"../architecture\";\nimport { HookHandler, RouteHandler } from \"./entry-points/rest\";\n\nexport type ApplicationHookHandlers = Array<Constructor<HookHandler>>;\nexport type ApplicationRouteHandlers = Array<Constructor<RouteHandler>>;\n\nexport type ApplicationEntryPoints = {\n rest: {\n // Middleware for pre-/post-processing\n hookHandlers: ApplicationHookHandlers;\n // Endpoints (or routes) as the request targets; expect an array of class constructors\n routeHandlers: ApplicationRouteHandlers;\n };\n};\n\nexport type ConfigApplication = {\n entryPoints: ApplicationEntryPoints;\n};\n\nexport class Application extends AbstractArchitecture {\n private config: ConfigApplication;\n\n public hookHandlers: HookHandler[] = [];\n public routeHandlers: RouteHandler[] = [];\n\n constructor(config: ConfigApplication) {\n super();\n\n i18n.configure({\n locales: [\"en\", \"fr\"],\n objectNotation: true,\n directory: path.join(process.cwd(), \"src/locales\"),\n });\n\n this.config = config;\n }\n\n /**\n * Register and store dependencies for REST entry points\n */\n private registerRest(): void {\n this.registerAndStoreDependencies(\n this.config.entryPoints.rest.hookHandlers,\n this.hookHandlers\n );\n\n this.registerAndStoreDependencies(\n this.config.entryPoints.rest.routeHandlers,\n this.routeHandlers\n );\n }\n\n public start(): void {\n this.registerRest();\n }\n}\n"]}
1
+ {"version":3,"file":"application.js","sourceRoot":"./src/","sources":["service/architecture/application/application.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAe,MAAM,iBAAiB,CAAC;AAoBpE,MAAM,OAAO,WAAY,SAAQ,oBAAoB;IAC3C,MAAM,CAAoB;IAE3B,YAAY,GAAkB,EAAE,CAAC;IACjC,aAAa,GAAmB,EAAE,CAAC;IAE1C,YAAY,MAAyB;QACnC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACrB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC;SACnD,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAGrB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAKO,YAAY;QAClB,IAAI,CAAC,4BAA4B,CAC/B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,EACzC,IAAI,CAAC,YAAY,CAClB,CAAC;QAEF,IAAI,CAAC,4BAA4B,CAC/B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAC1C,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAEM,KAAK;QAEV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;CACF","sourcesContent":["import i18n from \"i18n\";\nimport path from \"path\";\n\nimport { AbstractArchitecture, Constructor } from \"../architecture\";\nimport { HookHandler, RouteHandler } from \"./entry-points/rest\";\n\nexport type ApplicationHookHandlers = Array<Constructor<HookHandler>>;\nexport type ApplicationRouteHandlers = Array<Constructor<RouteHandler>>;\n\nexport type ApplicationEntryPoints = {\n rest: {\n // Middleware for pre-/post-processing\n hookHandlers: ApplicationHookHandlers;\n // Endpoints (or routes) as the request targets; expect an array of class constructors\n routeHandlers: ApplicationRouteHandlers;\n };\n};\n\nexport type ConfigApplication = {\n entryPoints: ApplicationEntryPoints;\n autoRegister?: boolean; // Auto-register on construction (default: false)\n};\n\nexport class Application extends AbstractArchitecture {\n private config: ConfigApplication;\n\n public hookHandlers: HookHandler[] = [];\n public routeHandlers: RouteHandler[] = [];\n\n constructor(config: ConfigApplication) {\n super();\n\n i18n.configure({\n locales: [\"en\", \"fr\"],\n objectNotation: true,\n directory: path.join(process.cwd(), \"src/locales\"),\n });\n\n this.config = config;\n\n // Auto-register if enabled (useful without Service)\n if (config.autoRegister) {\n this.registerRest();\n }\n }\n\n /**\n * Register and store dependencies for REST entry points\n */\n private registerRest(): void {\n this.registerAndStoreDependencies(\n this.config.entryPoints.rest.hookHandlers,\n this.hookHandlers,\n );\n\n this.registerAndStoreDependencies(\n this.config.entryPoints.rest.routeHandlers,\n this.routeHandlers,\n );\n }\n\n public start(): void {\n // Register if not already done\n if (!this.config.autoRegister) {\n this.registerRest();\n }\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
1
  export * from "./entry-points";
2
2
  export * from "./application";
3
+ export * from "../../../dependency-injection";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"./src/","sources":["service/architecture/application/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"./src/","sources":["service/architecture/application/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,+BAA+B,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from "./entry-points";
2
2
  export * from "./application";
3
+ export * from "../../../dependency-injection";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["service/architecture/application/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC","sourcesContent":["export * from \"./entry-points\";\nexport * from \"./application\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["service/architecture/application/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,+BAA+B,CAAC","sourcesContent":["export * from \"./entry-points\";\nexport * from \"./application\";\nexport * from \"../../../dependency-injection\";\n"]}
@@ -1,6 +1,7 @@
1
1
  import { AbstractArchitecture, Constructor } from "../architecture";
2
2
  export type ConfigDomain = {
3
3
  providers: Array<Constructor>;
4
+ autoRegister?: boolean;
4
5
  };
5
6
  export declare class Domain extends AbstractArchitecture {
6
7
  private config;
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"./src/","sources":["service/architecture/domain/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAIpE,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAC/B,CAAC;AAEF,qBAAa,MAAO,SAAQ,oBAAoB;IAC9C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAuB;gBAE5B,MAAM,EAAE,YAAY;IAMnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAiBpC"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"./src/","sources":["service/architecture/domain/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAIpE,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,qBAAa,MAAO,SAAQ,oBAAoB;IAC9C,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAAuB;gBAE5B,MAAM,EAAE,YAAY;IAWnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoBpC"}
@@ -7,9 +7,14 @@ export class Domain extends AbstractArchitecture {
7
7
  constructor(config) {
8
8
  super();
9
9
  this.config = config;
10
+ if (config.autoRegister) {
11
+ this.registerDependencies(this.config.providers);
12
+ }
10
13
  }
11
14
  async start() {
12
- this.registerDependencies(this.config.providers);
15
+ if (!this.config.autoRegister) {
16
+ this.registerDependencies(this.config.providers);
17
+ }
13
18
  for (const ProviderClass of this.config.providers) {
14
19
  if (container.isRegistered(ProviderClass.name)) {
15
20
  const provider = container.resolve(ProviderClass.name);
@@ -1 +1 @@
1
- {"version":3,"file":"domain.js","sourceRoot":"./src/","sources":["service/architecture/domain/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAe,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAMrC,MAAM,OAAO,MAAO,SAAQ,oBAAoB;IACtC,MAAM,CAAe;IACrB,SAAS,GAAoB,EAAE,CAAC;IAExC,YAAY,MAAoB;QAC9B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAGjD,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAClD,IAAI,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAa,CAAC;gBACnE,IACE,QAAQ,YAAY,QAAQ;oBAC5B,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,EACpC,CAAC;oBACD,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AbstractArchitecture, Constructor } from \"../architecture\";\nimport { Provider } from \"./provider\";\nimport { container } from \"tsyringe\";\n\nexport type ConfigDomain = {\n providers: Array<Constructor>;\n};\n\nexport class Domain extends AbstractArchitecture {\n private config: ConfigDomain;\n private providers: Array<Provider> = [];\n\n constructor(config: ConfigDomain) {\n super();\n\n this.config = config;\n }\n\n public async start(): Promise<void> {\n this.registerDependencies(this.config.providers);\n\n // Auto-start providers that implement the start method\n for (const ProviderClass of this.config.providers) {\n if (container.isRegistered(ProviderClass.name)) {\n const provider = container.resolve(ProviderClass.name) as Provider;\n if (\n provider instanceof Provider &&\n typeof provider.start === \"function\"\n ) {\n await provider.start();\n this.providers.push(provider);\n }\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"domain.js","sourceRoot":"./src/","sources":["service/architecture/domain/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAe,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAOrC,MAAM,OAAO,MAAO,SAAQ,oBAAoB;IACtC,MAAM,CAAe;IACrB,SAAS,GAAoB,EAAE,CAAC;IAExC,YAAY,MAAoB;QAC9B,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAGrB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QAEhB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnD,CAAC;QAGD,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAClD,IAAI,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAa,CAAC;gBACnE,IACE,QAAQ,YAAY,QAAQ;oBAC5B,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,EACpC,CAAC;oBACD,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AbstractArchitecture, Constructor } from \"../architecture\";\nimport { Provider } from \"./provider\";\nimport { container } from \"tsyringe\";\n\nexport type ConfigDomain = {\n providers: Array<Constructor>;\n autoRegister?: boolean; // Auto-register on construction (default: false)\n};\n\nexport class Domain extends AbstractArchitecture {\n private config: ConfigDomain;\n private providers: Array<Provider> = [];\n\n constructor(config: ConfigDomain) {\n super();\n\n this.config = config;\n\n // Auto-register if enabled (useful without Service)\n if (config.autoRegister) {\n this.registerDependencies(this.config.providers);\n }\n }\n\n public async start(): Promise<void> {\n // Register if not already done\n if (!this.config.autoRegister) {\n this.registerDependencies(this.config.providers);\n }\n\n // Auto-start providers that implement the start method\n for (const ProviderClass of this.config.providers) {\n if (container.isRegistered(ProviderClass.name)) {\n const provider = container.resolve(ProviderClass.name) as Provider;\n if (\n provider instanceof Provider &&\n typeof provider.start === \"function\"\n ) {\n await provider.start();\n this.providers.push(provider);\n }\n }\n }\n }\n}\n"]}
@@ -1,7 +1,3 @@
1
1
  export * from "./repositories";
2
2
  export * from "./infrastructure";
3
- export { Schema, Model, Types, connect, connection, createConnection, } from "mongoose";
4
- export type { Document, SchemaDefinition, SchemaOptions, SchemaTypeOptions, Connection, Mongoose, ObjectId, UpdateQuery, QueryOptions, PopulateOptions, HydratedDocument, InferSchemaType, } from "mongoose";
5
- export { DataTypes, Sequelize, Model as SequelizeModelClass } from "sequelize";
6
- export type { ModelStatic, QueryInterface, Transaction, Options as SequelizeOptions, ModelAttributes, ModelOptions, FindOptions, CreateOptions, UpdateOptions, DestroyOptions, WhereOptions, Order, Includeable, } from "sequelize";
7
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAIjC,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,IAAI,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAE/E,YAAY,EACV,WAAW,EACX,cAAc,EACd,WAAW,EACX,OAAO,IAAI,gBAAgB,EAC3B,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,YAAY,EACZ,KAAK,EACL,WAAW,GACZ,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC"}
@@ -1,5 +1,3 @@
1
1
  export * from "./repositories";
2
2
  export * from "./infrastructure";
3
- export { Schema, Model, Types, connect, connection, createConnection, } from "mongoose";
4
- export { DataTypes, Sequelize, Model as SequelizeModelClass } from "sequelize";
5
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AAIjC,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,OAAO,EACP,UAAU,EACV,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAmBlB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,IAAI,mBAAmB,EAAE,MAAM,WAAW,CAAC","sourcesContent":["export * from \"./repositories\";\nexport * from \"./infrastructure\";\n\n// Re-export Mongoose for user convenience\n// Users can import directly from @sentzunhat/zacatl instead of installing mongoose\nexport {\n Schema,\n Model,\n Types,\n connect,\n connection,\n createConnection,\n} from \"mongoose\";\n\nexport type {\n Document,\n SchemaDefinition,\n SchemaOptions,\n SchemaTypeOptions,\n Connection,\n Mongoose,\n ObjectId,\n UpdateQuery,\n QueryOptions,\n PopulateOptions,\n HydratedDocument,\n InferSchemaType,\n} from \"mongoose\";\n\n// Re-export Sequelize for user convenience\n// Users can import directly from @sentzunhat/zacatl instead of installing sequelize\nexport { DataTypes, Sequelize, Model as SequelizeModelClass } from \"sequelize\";\n\nexport type {\n ModelStatic,\n QueryInterface,\n Transaction,\n Options as SequelizeOptions,\n ModelAttributes,\n ModelOptions,\n FindOptions,\n CreateOptions,\n UpdateOptions,\n DestroyOptions,\n WhereOptions,\n Order,\n Includeable,\n} from \"sequelize\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC","sourcesContent":["export * from \"./repositories\";\nexport * from \"./infrastructure\";\n"]}
@@ -1,6 +1,7 @@
1
1
  import { AbstractArchitecture, Constructor } from "../architecture";
2
2
  export type ConfigInfrastructure = {
3
3
  repositories: Array<Constructor>;
4
+ autoRegister?: boolean;
4
5
  };
5
6
  export declare class Infrastructure extends AbstractArchitecture {
6
7
  private config;
@@ -1 +1 @@
1
- {"version":3,"file":"infrastructure.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/infrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAClC,CAAC;AAEF,qBAAa,cAAe,SAAQ,oBAAoB;IACtD,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,oBAAoB;IAMjC,KAAK,IAAI,IAAI;CAGrB"}
1
+ {"version":3,"file":"infrastructure.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/infrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,qBAAa,cAAe,SAAQ,oBAAoB;IACtD,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,oBAAoB;IAWjC,KAAK,IAAI,IAAI;CAMrB"}
@@ -4,9 +4,14 @@ export class Infrastructure extends AbstractArchitecture {
4
4
  constructor(config) {
5
5
  super();
6
6
  this.config = config;
7
+ if (config.autoRegister) {
8
+ this.registerDependencies(this.config.repositories);
9
+ }
7
10
  }
8
11
  start() {
9
- this.registerDependencies(this.config.repositories);
12
+ if (!this.config.autoRegister) {
13
+ this.registerDependencies(this.config.repositories);
14
+ }
10
15
  }
11
16
  }
12
17
  //# sourceMappingURL=infrastructure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"infrastructure.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/infrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAe,MAAM,iBAAiB,CAAC;AAMpE,MAAM,OAAO,cAAe,SAAQ,oBAAoB;IAC9C,MAAM,CAAuB;IAErC,YAAY,MAA4B;QACtC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC;CACF","sourcesContent":["import { AbstractArchitecture, Constructor } from \"../architecture\";\n\nexport type ConfigInfrastructure = {\n repositories: Array<Constructor>;\n};\n\nexport class Infrastructure extends AbstractArchitecture {\n private config: ConfigInfrastructure;\n\n constructor(config: ConfigInfrastructure) {\n super();\n\n this.config = config;\n }\n\n public start(): void {\n this.registerDependencies(this.config.repositories);\n }\n}\n"]}
1
+ {"version":3,"file":"infrastructure.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/infrastructure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAe,MAAM,iBAAiB,CAAC;AAOpE,MAAM,OAAO,cAAe,SAAQ,oBAAoB;IAC9C,MAAM,CAAuB;IAErC,YAAY,MAA4B;QACtC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAGrB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAEM,KAAK;QAEV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF","sourcesContent":["import { AbstractArchitecture, Constructor } from \"../architecture\";\n\nexport type ConfigInfrastructure = {\n repositories: Array<Constructor>;\n autoRegister?: boolean; // Auto-register on construction (default: false)\n};\n\nexport class Infrastructure extends AbstractArchitecture {\n private config: ConfigInfrastructure;\n\n constructor(config: ConfigInfrastructure) {\n super();\n\n this.config = config;\n\n // Auto-register if enabled (useful without Service)\n if (config.autoRegister) {\n this.registerDependencies(this.config.repositories);\n }\n }\n\n public start(): void {\n // Register if not already done\n if (!this.config.autoRegister) {\n this.registerDependencies(this.config.repositories);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-loader.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/orm/adapter-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAM/B,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC/C,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAgB9B;AAMD,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,CAAC,EAC9D,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAgB9B"}
1
+ {"version":3,"file":"adapter-loader.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/orm/adapter-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EACzB,UAAU,EACX,MAAM,uBAAuB,CAAC;AAG/B,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAC/C,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAe9B;AAGD,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,CAAC,EAC9D,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC,GACnC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAe9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-loader.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/orm/adapter-loader.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAmC;IAEnC,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAC7D,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAU,MAAM,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IACE,KAAK,CAAC,IAAI,KAAK,sBAAsB;YACrC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAMD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAoC;IAEpC,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC9D,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAU,MAAM,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IACE,KAAK,CAAC,IAAI,KAAK,sBAAsB;YACrC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import type { Model } from \"sequelize\";\nimport type {\n MongooseRepositoryConfig,\n SequelizeRepositoryConfig,\n ORMAdapter,\n} from \"../repositories/types\";\n\n/**\n * Loads MongooseAdapter dynamically - only when needed\n * Throws helpful error if mongoose is not installed\n */\nexport async function loadMongooseAdapter<D, I, O>(\n config: MongooseRepositoryConfig<D>,\n): Promise<ORMAdapter<D, I, O>> {\n try {\n // Dynamic import - only loads when Mongoose is actually used\n const adapters = await import(\"./adapters/mongoose-adapter\");\n return new adapters.MongooseAdapter<D, I, O>(config);\n } catch (error: any) {\n if (\n error.code === \"ERR_MODULE_NOT_FOUND\" ||\n error.code === \"MODULE_NOT_FOUND\"\n ) {\n throw new Error(\n \"Mongoose is not installed. Install it with: npm install mongoose\",\n );\n }\n throw error;\n }\n}\n\n/**\n * Loads SequelizeAdapter dynamically - only when needed\n * Throws helpful error if sequelize is not installed\n */\nexport async function loadSequelizeAdapter<D extends Model, I, O>(\n config: SequelizeRepositoryConfig<D>,\n): Promise<ORMAdapter<D, I, O>> {\n try {\n // Dynamic import - only loads when Sequelize is actually used\n const adapters = await import(\"./adapters/sequelize-adapter\");\n return new adapters.SequelizeAdapter<D, I, O>(config);\n } catch (error: any) {\n if (\n error.code === \"ERR_MODULE_NOT_FOUND\" ||\n error.code === \"MODULE_NOT_FOUND\"\n ) {\n throw new Error(\n \"Sequelize is not installed. Install it with: npm install sequelize\",\n );\n }\n throw error;\n }\n}\n"]}
1
+ {"version":3,"file":"adapter-loader.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/orm/adapter-loader.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAmC;IAEnC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;QAC7D,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAU,MAAM,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IACE,KAAK,CAAC,IAAI,KAAK,sBAAsB;YACrC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAGD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAoC;IAEpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAC9D,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAU,MAAM,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IACE,KAAK,CAAC,IAAI,KAAK,sBAAsB;YACrC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EACjC,CAAC;YACD,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import type { Model } from \"sequelize\";\nimport type {\n MongooseRepositoryConfig,\n SequelizeRepositoryConfig,\n ORMAdapter,\n} from \"../repositories/types\";\n\n/** Lazy-loads MongooseAdapter when needed */\nexport async function loadMongooseAdapter<D, I, O>(\n config: MongooseRepositoryConfig<D>,\n): Promise<ORMAdapter<D, I, O>> {\n try {\n const adapters = await import(\"./adapters/mongoose-adapter\");\n return new adapters.MongooseAdapter<D, I, O>(config);\n } catch (error: any) {\n if (\n error.code === \"ERR_MODULE_NOT_FOUND\" ||\n error.code === \"MODULE_NOT_FOUND\"\n ) {\n throw new Error(\n \"Mongoose is not installed. Install it with: npm install mongoose\",\n );\n }\n throw error;\n }\n}\n\n/** Lazy-loads SequelizeAdapter when needed */\nexport async function loadSequelizeAdapter<D extends Model, I, O>(\n config: SequelizeRepositoryConfig<D>,\n): Promise<ORMAdapter<D, I, O>> {\n try {\n const adapters = await import(\"./adapters/sequelize-adapter\");\n return new adapters.SequelizeAdapter<D, I, O>(config);\n } catch (error: any) {\n if (\n error.code === \"ERR_MODULE_NOT_FOUND\" ||\n error.code === \"MODULE_NOT_FOUND\"\n ) {\n throw new Error(\n \"Sequelize is not installed. Install it with: npm install sequelize\",\n );\n }\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/repositories/abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,UAAU,EAKX,MAAM,SAAS,CAAC;AAMjB,cAAc,SAAS,CAAC;AA8BxB,8BAAsB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,OAAO,CAAC,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,WAAW,CAAC,CAAgB;gBAExB,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;YAS7B,iBAAiB;YAajB,WAAW;IAgBzB,IAAI,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAO/C;IAEM,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,OAAO;IAItB,gBAAgB,IAAI,aAAa,CAAC,CAAC,CAAC;IAYpC,iBAAiB,IAAI,WAAW,CAAC,GAAG,CAAC;IAYrC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI;IASjC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKvC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK7B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CAI5C"}
1
+ {"version":3,"file":"abstract.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/repositories/abstract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,UAAU,EAKX,MAAM,SAAS,CAAC;AAMjB,cAAc,SAAS,CAAC;AAkBxB,8BAAsB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,YAAW,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,OAAO,CAAC,CAAsB;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,WAAW,CAAC,CAAgB;gBAExB,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC;YAS7B,iBAAiB;YAajB,WAAW;IAgBzB,IAAI,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAO/C;IAEM,UAAU,IAAI,OAAO;IAIrB,WAAW,IAAI,OAAO;IAItB,gBAAgB,IAAI,aAAa,CAAC,CAAC,CAAC;IAYpC,iBAAiB,IAAI,WAAW,CAAC,GAAG,CAAC;IAYrC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,GAAG,IAAI;IASjC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKvC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK7B,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKzD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CAI5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"abstract.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/repositories/abstract.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Model as MongooseModel } from \"mongoose\";\nimport type { Model, ModelStatic } from \"sequelize\";\nimport {\n BaseRepositoryConfig,\n Repository,\n MongooseRepositoryConfig,\n SequelizeRepositoryConfig,\n ORMAdapter,\n ORMType,\n} from \"./types\";\nimport {\n loadMongooseAdapter,\n loadSequelizeAdapter,\n} from \"../orm/adapter-loader\";\n\nexport * from \"./types\";\n\n/**\n * Type guard to check if config is for Mongoose\n */\nconst isMongooseConfig = <D>(\n config: BaseRepositoryConfig<D>,\n): config is MongooseRepositoryConfig<D> => {\n return config.type === ORMType.Mongoose;\n};\n\n/**\n * Type guard to check if config is for Sequelize\n */\nconst isSequelizeConfig = <D extends Model>(\n config: BaseRepositoryConfig<D>,\n): config is SequelizeRepositoryConfig<D> => {\n return config.type === ORMType.Sequelize;\n};\n\n/**\n * BaseRepository - Abstract base class for all repositories\n *\n * Supports multiple ORMs (Mongoose, Sequelize) through adapter pattern.\n * Adapters are lazy-loaded - only the ORM you use gets imported.\n * This allows projects to install only one ORM without unused dependencies.\n *\n * Uses lazy initialization to support ESM dynamic imports while maintaining\n * backward compatibility with synchronous constructors.\n */\nexport abstract class BaseRepository<D, I, O> implements Repository<D, I, O> {\n private adapter?: ORMAdapter<D, I, O>;\n private readonly ormType: ORMType;\n private readonly config: BaseRepositoryConfig<D>;\n private initPromise?: Promise<void>;\n\n constructor(config: BaseRepositoryConfig<D>) {\n this.ormType = config.type;\n this.config = config;\n }\n\n /**\n * Ensures the adapter is initialized before any operation\n * Uses a promise to prevent multiple concurrent initializations\n */\n private async ensureInitialized(): Promise<void> {\n if (this.adapter) return;\n\n if (!this.initPromise) {\n this.initPromise = this.loadAdapter();\n }\n\n await this.initPromise;\n }\n\n /**\n * Loads the appropriate ORM adapter based on configuration\n */\n private async loadAdapter(): Promise<void> {\n if (isMongooseConfig<D>(this.config)) {\n this.adapter = await loadMongooseAdapter<D, I, O>(this.config);\n } else if (isSequelizeConfig(this.config)) {\n // Type assertion needed here because D could be either Mongoose or Sequelize model\n this.adapter = (await loadSequelizeAdapter<Model, I, O>(\n this.config,\n )) as ORMAdapter<D, I, O>;\n } else {\n const exhaustive: never = this.config;\n throw new Error(\n `Invalid repository configuration. Received: ${JSON.stringify(exhaustive)}`,\n );\n }\n }\n\n get model(): MongooseModel<D> | ModelStatic<any> {\n if (!this.adapter) {\n throw new Error(\n \"Repository not initialized. Call an async method first or await repository.ensureInitialized()\",\n );\n }\n return this.adapter.model;\n }\n\n public isMongoose(): boolean {\n return this.ormType === ORMType.Mongoose;\n }\n\n public isSequelize(): boolean {\n return this.ormType === ORMType.Sequelize;\n }\n\n public getMongooseModel(): MongooseModel<D> {\n if (!this.adapter) {\n throw new Error(\n \"Repository not initialized. Call an async method first or await repository.ensureInitialized()\",\n );\n }\n if (!this.isMongoose()) {\n throw new Error(\"Repository is not using Mongoose\");\n }\n return this.adapter.model as MongooseModel<D>;\n }\n\n public getSequelizeModel(): ModelStatic<any> {\n if (!this.adapter) {\n throw new Error(\n \"Repository not initialized. Call an async method first or await repository.ensureInitialized()\",\n );\n }\n if (!this.isSequelize()) {\n throw new Error(\"Repository is not using Sequelize\");\n }\n return this.adapter.model as ModelStatic<any>;\n }\n\n public toLean(input: unknown): O | null {\n if (!this.adapter) {\n throw new Error(\n \"Repository not initialized. Call an async method first or await repository.ensureInitialized()\",\n );\n }\n return this.adapter.toLean(input);\n }\n\n async findById(id: string): Promise<O | null> {\n await this.ensureInitialized();\n return this.adapter!.findById(id);\n }\n\n async create(entity: I): Promise<O> {\n await this.ensureInitialized();\n return this.adapter!.create(entity);\n }\n\n async update(id: string, update: Partial<I>): Promise<O | null> {\n await this.ensureInitialized();\n return this.adapter!.update(id, update);\n }\n\n async delete(id: string): Promise<O | null> {\n await this.ensureInitialized();\n return this.adapter!.delete(id);\n }\n}\n"]}
1
+ {"version":3,"file":"abstract.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/repositories/abstract.ts"],"names":[],"mappings":"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","sourcesContent":["// Type-only imports prevent eager loading in ESM\nimport type { Model as MongooseModel } from \"mongoose\";\nimport type { Model, ModelStatic } from \"sequelize\";\nimport {\n BaseRepositoryConfig,\n Repository,\n MongooseRepositoryConfig,\n SequelizeRepositoryConfig,\n ORMAdapter,\n ORMType,\n} from \"./types\";\nimport {\n loadMongooseAdapter,\n loadSequelizeAdapter,\n} from \"../orm/adapter-loader\";\n\nexport * from \"./types\";\n\nconst isMongooseConfig = <D>(\n config: BaseRepositoryConfig<D>,\n): config is MongooseRepositoryConfig<D> => {\n return config.type === ORMType.Mongoose;\n};\n\nconst isSequelizeConfig = <D extends Model>(\n config: BaseRepositoryConfig<D>,\n): config is SequelizeRepositoryConfig<D> => {\n return config.type === ORMType.Sequelize;\n};\n\n/**\n * Abstract base repository supporting multiple ORMs via adapter pattern.\n * Adapters are lazy-loaded for optimal bundle size.\n */\nexport abstract class BaseRepository<D, I, O> implements Repository<D, I, O> {\n private adapter?: ORMAdapter<D, I, O>;\n private readonly ormType: ORMType;\n private readonly config: BaseRepositoryConfig<D>;\n private initPromise?: Promise<void>;\n\n constructor(config: BaseRepositoryConfig<D>) {\n this.ormType = config.type;\n this.config = config;\n }\n\n /**\n * Ensures the adapter is initialized before any operation\n * Uses a promise to prevent multiple concurrent initializations\n */\n private async ensureInitialized(): Promise<void> {\n if (this.adapter) return;\n\n if (!this.initPromise) {\n this.initPromise = this.loadAdapter();\n }\n\n await this.initPromise;\n }\n\n /**\n * Loads the appropriate ORM adapter based on configuration\n */\n private async loadAdapter(): Promise<void> {\n if (isMongooseConfig<D>(this.config)) {\n this.adapter = await loadMongooseAdapter<D, I, O>(this.config);\n } else if (isSequelizeConfig(this.config)) {\n // Type assertion needed here because D could be either Mongoose or Sequelize model\n this.adapter = (await loadSequelizeAdapter<Model, I, O>(\n this.config,\n )) as ORMAdapter<D, I, O>;\n } else {\n const exhaustive: never = this.config;\n throw new Error(\n `Invalid repository configuration. Received: ${JSON.stringify(exhaustive)}`,\n );\n }\n }\n\n get model(): MongooseModel<D> | ModelStatic<any> {\n if (!this.adapter) {\n throw new Error(\n \"Repository not initialized. Call an async method first or await repository.ensureInitialized()\",\n );\n }\n return this.adapter.model;\n }\n\n public isMongoose(): boolean {\n return this.ormType === ORMType.Mongoose;\n }\n\n public isSequelize(): boolean {\n return this.ormType === ORMType.Sequelize;\n }\n\n public getMongooseModel(): MongooseModel<D> {\n if (!this.adapter) {\n throw new Error(\n \"Repository not initialized. Call an async method first or await repository.ensureInitialized()\",\n );\n }\n if (!this.isMongoose()) {\n throw new Error(\"Repository is not using Mongoose\");\n }\n return this.adapter.model as MongooseModel<D>;\n }\n\n public getSequelizeModel(): ModelStatic<any> {\n if (!this.adapter) {\n throw new Error(\n \"Repository not initialized. Call an async method first or await repository.ensureInitialized()\",\n );\n }\n if (!this.isSequelize()) {\n throw new Error(\"Repository is not using Sequelize\");\n }\n return this.adapter.model as ModelStatic<any>;\n }\n\n public toLean(input: unknown): O | null {\n if (!this.adapter) {\n throw new Error(\n \"Repository not initialized. Call an async method first or await repository.ensureInitialized()\",\n );\n }\n return this.adapter.toLean(input);\n }\n\n async findById(id: string): Promise<O | null> {\n await this.ensureInitialized();\n return this.adapter!.findById(id);\n }\n\n async create(entity: I): Promise<O> {\n await this.ensureInitialized();\n return this.adapter!.create(entity);\n }\n\n async update(id: string, update: Partial<I>): Promise<O | null> {\n await this.ensureInitialized();\n return this.adapter!.update(id, update);\n }\n\n async delete(id: string): Promise<O | null> {\n await this.ensureInitialized();\n return this.adapter!.delete(id);\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { Document, Model as MongooseModel, Schema, Default__v, Require_id, ObjectId, IfAny } from "mongoose";
2
- import { Model as SequelizeModel, ModelStatic, Model } from "sequelize";
1
+ import type { Document, Model as MongooseModel, Schema, Default__v, Require_id, ObjectId, IfAny } from "mongoose";
2
+ import type { Model as SequelizeModel, ModelStatic, Model } from "sequelize";
3
3
  export declare enum ORMType {
4
4
  Mongoose = "mongoose",
5
5
  Sequelize = "sequelize"
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/repositories/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"./src/","sources":["service/architecture/infrastructure/repositories/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/repositories/types.ts"],"names":[],"mappings":"AAcA,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,gCAAqB,CAAA;IACrB,kCAAuB,CAAA;AACzB,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB","sourcesContent":["import {\n Document,\n Model as MongooseModel,\n Schema,\n Default__v,\n Require_id,\n ObjectId,\n IfAny,\n} from \"mongoose\";\nimport { Model as SequelizeModel, ModelStatic, Model } from \"sequelize\";\n\n/**\n * Enum for supported ORM types\n */\nexport enum ORMType {\n Mongoose = \"mongoose\",\n Sequelize = \"sequelize\",\n}\n\nexport type WithMongooseMeta<T> = Default__v<Require_id<T>>;\n\nexport type MongooseDocument<Db> = Document<\n ObjectId,\n {},\n Db,\n Record<string, string>\n> &\n WithMongooseMeta<Db>;\n\nexport type LeanWithMeta<T> = WithMongooseMeta<T> & {\n id: string;\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type LeanDocument<T> = T & {\n id: string;\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type MongooseDoc<Db> = IfAny<\n MongooseDocument<Db>,\n MongooseDocument<Db>,\n MongooseDocument<Db>\n>;\n\nexport type ToLeanInput<D, T> =\n | MongooseDoc<D>\n | LeanDocument<T>\n | null\n | undefined;\n\n/**\n * Configuration for Mongoose-based repository\n * @template D - Database document type\n */\nexport type MongooseRepositoryConfig<D = unknown> = {\n readonly type: ORMType.Mongoose;\n readonly name?: string;\n readonly schema: Schema<D>;\n};\n\n/**\n * Configuration for Sequelize-based repository\n * @template D - Sequelize Model type (must extend Model)\n */\nexport type SequelizeRepositoryConfig<D extends Model = Model> = {\n readonly type: ORMType.Sequelize;\n readonly model: ModelStatic<D>;\n};\n\n/**\n * Discriminated union of all repository configuration types\n * @template D - Database/Model type\n */\nexport type BaseRepositoryConfig<D = unknown> =\n | MongooseRepositoryConfig<D>\n | SequelizeRepositoryConfig<Model>;\n\nexport type Repository<D, I, O> = {\n model: MongooseModel<D> | ModelStatic<SequelizeModel<any, any>>;\n\n toLean(input: unknown): O | null;\n findById(id: string): Promise<O | null>;\n create(entity: I): Promise<O>;\n update(id: string, update: Partial<I>): Promise<O | null>;\n delete(id: string): Promise<O | null>;\n};\n\n/**\n * ORM Adapter Interface - Defines the contract for ORM-specific implementations\n * This enables pluggable ORM support without circular dependencies\n */\nexport interface ORMAdapter<D, I, O> {\n /**\n * Get the underlying ORM model\n */\n readonly model: MongooseModel<D> | ModelStatic<any>;\n\n /**\n * Transform database entity to plain lean object\n */\n toLean(input: unknown): O | null;\n\n /**\n * Find entity by ID\n */\n findById(id: string): Promise<O | null>;\n\n /**\n * Create new entity\n */\n create(entity: I): Promise<O>;\n\n /**\n * Update existing entity\n */\n update(id: string, update: Partial<I>): Promise<O | null>;\n\n /**\n * Delete entity by ID\n */\n delete(id: string): Promise<O | null>;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"./src/","sources":["service/architecture/infrastructure/repositories/types.ts"],"names":[],"mappings":"AAWA,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,gCAAqB,CAAA;IACrB,kCAAuB,CAAA;AACzB,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB","sourcesContent":["import type {\n Document,\n Model as MongooseModel,\n Schema,\n Default__v,\n Require_id,\n ObjectId,\n IfAny,\n} from \"mongoose\";\nimport type { Model as SequelizeModel, ModelStatic, Model } from \"sequelize\";\n\nexport enum ORMType {\n Mongoose = \"mongoose\",\n Sequelize = \"sequelize\",\n}\n\nexport type WithMongooseMeta<T> = Default__v<Require_id<T>>;\n\nexport type MongooseDocument<Db> = Document<\n ObjectId,\n {},\n Db,\n Record<string, string>\n> &\n WithMongooseMeta<Db>;\n\nexport type LeanWithMeta<T> = WithMongooseMeta<T> & {\n id: string;\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type LeanDocument<T> = T & {\n id: string;\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type MongooseDoc<Db> = IfAny<\n MongooseDocument<Db>,\n MongooseDocument<Db>,\n MongooseDocument<Db>\n>;\n\nexport type ToLeanInput<D, T> =\n | MongooseDoc<D>\n | LeanDocument<T>\n | null\n | undefined;\n\nexport type MongooseRepositoryConfig<D = unknown> = {\n readonly type: ORMType.Mongoose;\n readonly name?: string;\n readonly schema: Schema<D>;\n};\n\nexport type SequelizeRepositoryConfig<D extends Model = Model> = {\n readonly type: ORMType.Sequelize;\n readonly model: ModelStatic<D>;\n};\n\nexport type BaseRepositoryConfig<D = unknown> =\n | MongooseRepositoryConfig<D>\n | SequelizeRepositoryConfig<Model>;\n\nexport type Repository<D, I, O> = {\n model: MongooseModel<D> | ModelStatic<SequelizeModel<any, any>>;\n\n toLean(input: unknown): O | null;\n findById(id: string): Promise<O | null>;\n create(entity: I): Promise<O>;\n update(id: string, update: Partial<I>): Promise<O | null>;\n delete(id: string): Promise<O | null>;\n};\n\n/** ORM adapter interface for pluggable ORM implementations */\nexport interface ORMAdapter<D, I, O> {\n readonly model: MongooseModel<D> | ModelStatic<any>;\n toLean(input: unknown): O | null;\n findById(id: string): Promise<O | null>;\n create(entity: I): Promise<O>;\n update(id: string, update: Partial<I>): Promise<O | null>;\n delete(id: string): Promise<O | null>;\n}\n"]}