@onroad/core 4.0.0-alpha.0 → 4.0.0-alpha.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 (58) hide show
  1. package/README.md +444 -8
  2. package/dist/OnRoadExpress.d.ts.map +1 -1
  3. package/dist/OnRoadExpress.js +14 -5
  4. package/dist/OnRoadExpress.js.map +1 -1
  5. package/dist/container/Container.d.ts +1 -1
  6. package/dist/container/Container.d.ts.map +1 -1
  7. package/dist/container/Container.js +15 -6
  8. package/dist/container/Container.js.map +1 -1
  9. package/dist/core/AbstractService.d.ts +12 -0
  10. package/dist/core/AbstractService.d.ts.map +1 -1
  11. package/dist/core/AbstractService.js +14 -0
  12. package/dist/core/AbstractService.js.map +1 -1
  13. package/dist/core/index.d.ts +1 -1
  14. package/dist/core/index.d.ts.map +1 -1
  15. package/dist/database/ConnectionManager.d.ts +1 -0
  16. package/dist/database/ConnectionManager.d.ts.map +1 -1
  17. package/dist/database/ConnectionManager.js +2 -0
  18. package/dist/database/ConnectionManager.js.map +1 -1
  19. package/dist/database/SequelizeConnectionManager.d.ts +3 -0
  20. package/dist/database/SequelizeConnectionManager.d.ts.map +1 -1
  21. package/dist/database/SequelizeConnectionManager.js +13 -0
  22. package/dist/database/SequelizeConnectionManager.js.map +1 -1
  23. package/dist/database/index.d.ts +1 -0
  24. package/dist/database/index.d.ts.map +1 -1
  25. package/dist/database/index.js +1 -0
  26. package/dist/database/index.js.map +1 -1
  27. package/dist/database/migrations/MigrationRunner.d.ts +21 -0
  28. package/dist/database/migrations/MigrationRunner.d.ts.map +1 -0
  29. package/dist/database/migrations/MigrationRunner.js +54 -0
  30. package/dist/database/migrations/MigrationRunner.js.map +1 -0
  31. package/dist/database/migrations/index.d.ts +7 -0
  32. package/dist/database/migrations/index.d.ts.map +1 -0
  33. package/dist/database/migrations/index.js +2 -0
  34. package/dist/database/migrations/index.js.map +1 -0
  35. package/dist/dev/DevServer.d.ts +51 -0
  36. package/dist/dev/DevServer.d.ts.map +1 -0
  37. package/dist/dev/DevServer.js +404 -0
  38. package/dist/dev/DevServer.js.map +1 -0
  39. package/dist/dev/MigrationCLI.d.ts +19 -0
  40. package/dist/dev/MigrationCLI.d.ts.map +1 -0
  41. package/dist/dev/MigrationCLI.js +140 -0
  42. package/dist/dev/MigrationCLI.js.map +1 -0
  43. package/dist/dev/index.d.ts +5 -0
  44. package/dist/dev/index.d.ts.map +1 -0
  45. package/dist/dev/index.js +3 -0
  46. package/dist/dev/index.js.map +1 -0
  47. package/dist/entity/EntityRegistry.d.ts +25 -0
  48. package/dist/entity/EntityRegistry.d.ts.map +1 -1
  49. package/dist/entity/EntityRegistry.js +130 -4
  50. package/dist/entity/EntityRegistry.js.map +1 -1
  51. package/dist/entity/decorators.d.ts +1 -0
  52. package/dist/entity/decorators.d.ts.map +1 -1
  53. package/dist/entity/decorators.js.map +1 -1
  54. package/dist/index.d.ts +3 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +2 -0
  57. package/dist/index.js.map +1 -1
  58. package/package.json +53 -24
@@ -88,8 +88,10 @@ export class OnRoadContainer {
88
88
  if (this.singletons.has(key)) {
89
89
  return this.singletons.get(key);
90
90
  }
91
- const instance = this.createAndWire(meta, scope);
91
+ // Pre-register before wiring to allow circular service deps
92
+ const instance = new meta.target();
92
93
  this.singletons.set(key, instance);
94
+ this.wire(meta, instance, scope);
93
95
  return instance;
94
96
  }
95
97
  // Request scope cache
@@ -97,14 +99,17 @@ export class OnRoadContainer {
97
99
  if (scope.instances.has(key)) {
98
100
  return scope.instances.get(key);
99
101
  }
100
- const instance = this.createAndWire(meta, scope);
102
+ // Pre-register before wiring to allow circular service deps
103
+ const instance = new meta.target();
101
104
  scope.instances.set(key, instance);
105
+ this.wire(meta, instance, scope);
102
106
  return instance;
103
107
  }
104
- return this.createAndWire(meta, scope);
105
- }
106
- createAndWire(meta, scope) {
107
108
  const instance = new meta.target();
109
+ this.wire(meta, instance, scope);
110
+ return instance;
111
+ }
112
+ wire(meta, instance, scope) {
108
113
  // Controller → Service (auto-inject)
109
114
  if (meta.type === "controller" && hasMethod(instance, "getServiceClass")) {
110
115
  const ServiceClass = instance.getServiceClass();
@@ -121,6 +126,11 @@ export class OnRoadContainer {
121
126
  instance.setRepository(repo);
122
127
  }
123
128
  }
129
+ // Service → Service dependencies (auto-inject via configDependencies hook)
130
+ if (meta.type === "service" && hasMethod(instance, "configDependencies")) {
131
+ const resolver = (token) => this.resolve(token, scope);
132
+ instance.configDependencies(resolver);
133
+ }
124
134
  // Repository → ConnectionManager + EntityClass (auto-bind)
125
135
  if (meta.type === "repository") {
126
136
  const repoOptions = Reflect.getMetadata(METADATA_KEY.REPOSITORY, meta.target);
@@ -146,7 +156,6 @@ export class OnRoadContainer {
146
156
  instance.setTenant(scope.tenant);
147
157
  }
148
158
  }
149
- return instance;
150
159
  }
151
160
  createScope(requestId, tenant) {
152
161
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../src/container/Container.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,23 @@ import type { Constructor } from "../container/Container.js";
2
2
  export interface ServiceConfig<TRepository> {
3
3
  repository: Constructor<TRepository>;
4
4
  }
5
+ export type ServiceResolver = <T>(token: Constructor<T>) => T;
5
6
  export declare abstract class AbstractService<TRepository = unknown> {
6
7
  protected config: ServiceConfig<TRepository>;
7
8
  protected repository: TRepository;
8
9
  constructor(config: ServiceConfig<TRepository>);
9
10
  setRepository(repository: TRepository): void;
10
11
  getRepositoryClass(): Constructor<TRepository>;
12
+ /**
13
+ * Called by the container after the instance is created and the repository is injected.
14
+ * Override this method to declare service-to-service dependencies via the resolver.
15
+ *
16
+ * @example
17
+ * configDependencies(resolve: ServiceResolver): void {
18
+ * this.companySVC = resolve(CompanyService)
19
+ * this.roleSVC = resolve(RoleService)
20
+ * }
21
+ */
22
+ configDependencies(_resolve: ServiceResolver): void;
11
23
  }
12
24
  //# sourceMappingURL=AbstractService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractService.d.ts","sourceRoot":"","sources":["../../src/core/AbstractService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,WAAW,aAAa,CAAC,WAAW;IACxC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;CACrC;AAED,8BAAsB,eAAe,CAAC,WAAW,GAAG,OAAO;IAG7C,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC;IAFxD,SAAS,CAAC,UAAU,EAAG,WAAW,CAAA;gBAEZ,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC;IAExD,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAI5C,kBAAkB,IAAI,WAAW,CAAC,WAAW,CAAC;CAG/C"}
1
+ {"version":3,"file":"AbstractService.d.ts","sourceRoot":"","sources":["../../src/core/AbstractService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,WAAW,aAAa,CAAC,WAAW;IACxC,UAAU,EAAE,WAAW,CAAC,WAAW,CAAC,CAAA;CACrC;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAE7D,8BAAsB,eAAe,CAAC,WAAW,GAAG,OAAO;IAG7C,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC;IAFxD,SAAS,CAAC,UAAU,EAAG,WAAW,CAAA;gBAEZ,MAAM,EAAE,aAAa,CAAC,WAAW,CAAC;IAExD,aAAa,CAAC,UAAU,EAAE,WAAW,GAAG,IAAI;IAI5C,kBAAkB,IAAI,WAAW,CAAC,WAAW,CAAC;IAI9C;;;;;;;;;OASG;IAEH,kBAAkB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;CAGpD"}
@@ -10,5 +10,19 @@ export class AbstractService {
10
10
  getRepositoryClass() {
11
11
  return this.config.repository;
12
12
  }
13
+ /**
14
+ * Called by the container after the instance is created and the repository is injected.
15
+ * Override this method to declare service-to-service dependencies via the resolver.
16
+ *
17
+ * @example
18
+ * configDependencies(resolve: ServiceResolver): void {
19
+ * this.companySVC = resolve(CompanyService)
20
+ * this.roleSVC = resolve(RoleService)
21
+ * }
22
+ */
23
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
+ configDependencies(_resolve) {
25
+ // Default no-op — override in concrete services
26
+ }
13
27
  }
14
28
  //# sourceMappingURL=AbstractService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractService.js","sourceRoot":"","sources":["../../src/core/AbstractService.ts"],"names":[],"mappings":"AAMA,MAAM,OAAgB,eAAe;IAGb;IAFZ,UAAU,CAAc;IAElC,YAAsB,MAAkC;QAAlC,WAAM,GAAN,MAAM,CAA4B;IAAG,CAAC;IAE5D,aAAa,CAAC,UAAuB;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"AbstractService.js","sourceRoot":"","sources":["../../src/core/AbstractService.ts"],"names":[],"mappings":"AAQA,MAAM,OAAgB,eAAe;IAGb;IAFZ,UAAU,CAAc;IAElC,YAAsB,MAAkC;QAAlC,WAAM,GAAN,MAAM,CAA4B;IAAG,CAAC;IAE5D,aAAa,CAAC,UAAuB;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACH,6DAA6D;IAC7D,kBAAkB,CAAC,QAAyB;QAC1C,gDAAgD;IAClD,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
1
  export { AbstractController } from "./AbstractController.js";
2
2
  export type { RouteConfig, ControllerConfig } from "./AbstractController.js";
3
3
  export { AbstractService } from "./AbstractService.js";
4
- export type { ServiceConfig } from "./AbstractService.js";
4
+ export type { ServiceConfig, ServiceResolver } from "./AbstractService.js";
5
5
  export { AbstractRepository } from "./AbstractRepository.js";
6
6
  export { SequelizeRepository } from "./SequelizeRepository.js";
7
7
  export { MongooseRepository } from "./MongooseRepository.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -3,6 +3,7 @@ export interface DatabaseConfig {
3
3
  port?: number;
4
4
  user?: string;
5
5
  password?: string;
6
+ database?: string;
6
7
  prefix?: string;
7
8
  uri?: string;
8
9
  pool?: {
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionManager.d.ts","sourceRoot":"","sources":["../../src/database/ConnectionManager.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,8BAAsB,iBAAiB,CAAC,WAAW;IACjD,SAAS,CAAC,WAAW,2BAAiC;IACtD,SAAS,CAAC,MAAM,EAAE,cAAc,CAAA;gBAEpB,MAAM,EAAE,cAAc;IAIlC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAEjF,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEpD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAI/D,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;CAG3E"}
1
+ {"version":3,"file":"ConnectionManager.d.ts","sourceRoot":"","sources":["../../src/database/ConnectionManager.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE;QACL,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED,8BAAsB,iBAAiB,CAAC,WAAW;IACjD,SAAS,CAAC,WAAW,2BAAiC;IACtD,SAAS,CAAC,MAAM,EAAE,cAAc,CAAA;gBAEpB,MAAM,EAAE,cAAc;IAIlC,QAAQ,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAEjF,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEpD,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAI/D,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;CAI3E"}
@@ -11,6 +11,8 @@ export class ConnectionManager {
11
11
  return dataSource ? `${tenant}:${dataSource}` : tenant;
12
12
  }
13
13
  resolveDatabaseName(tenant, dataSource) {
14
+ if (this.config.database)
15
+ return this.config.database;
14
16
  return dataSource ?? `${this.config.prefix}_${tenant}`;
15
17
  }
16
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionManager.js","sourceRoot":"","sources":["../../src/database/ConnectionManager.ts"],"names":[],"mappings":"AAeA,MAAM,OAAgB,iBAAiB;IAC3B,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC5C,MAAM,CAAgB;IAEhC,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAQD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAES,QAAQ,CAAC,MAAc,EAAE,UAAmB;QACpD,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IACxD,CAAC;IAES,mBAAmB,CAAC,MAAc,EAAE,UAAmB;QAC/D,OAAO,UAAU,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,CAAA;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"ConnectionManager.js","sourceRoot":"","sources":["../../src/database/ConnectionManager.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAgB,iBAAiB;IAC3B,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC5C,MAAM,CAAgB;IAEhC,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAQD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAC9B,CAAC;IAES,QAAQ,CAAC,MAAc,EAAE,UAAmB;QACpD,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IACxD,CAAC;IAES,mBAAmB,CAAC,MAAc,EAAE,UAAmB;QAC/D,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAA;QACrD,OAAO,UAAU,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,CAAA;IACxD,CAAC;CACF"}
@@ -1,6 +1,8 @@
1
1
  import { ConnectionManager, type DatabaseConfig } from "./ConnectionManager.js";
2
+ import { MigrationRunner, type MigrationConfig } from "./migrations/MigrationRunner.js";
2
3
  export interface SequelizeConfig extends DatabaseConfig {
3
4
  dialect: "postgres" | "mysql" | "sqlite" | "mariadb" | "mssql";
5
+ migrations?: MigrationConfig;
4
6
  }
5
7
  export declare class SequelizeConnectionManager extends ConnectionManager<unknown> {
6
8
  protected config: SequelizeConfig;
@@ -9,5 +11,6 @@ export declare class SequelizeConnectionManager extends ConnectionManager<unknow
9
11
  closeAll(): Promise<void>;
10
12
  isHealthy(tenant: string): Promise<boolean>;
11
13
  get engine(): string;
14
+ getMigrationRunner(tenant: string, dataSource?: string): Promise<MigrationRunner>;
12
15
  }
13
16
  //# sourceMappingURL=SequelizeConnectionManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SequelizeConnectionManager.d.ts","sourceRoot":"","sources":["../../src/database/SequelizeConnectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE/E,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,OAAO,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;CAC/D;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IACxE,UAAmB,MAAM,EAAE,eAAe,CAAA;gBAE9B,MAAM,EAAE,eAAe;IAK7B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BpE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcjD,IAAa,MAAM,IAAI,MAAM,CAE5B;CACF"}
1
+ {"version":3,"file":"SequelizeConnectionManager.d.ts","sourceRoot":"","sources":["../../src/database/SequelizeConnectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEvF,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,OAAO,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAA;IAC9D,UAAU,CAAC,EAAE,eAAe,CAAA;CAC7B;AAED,qBAAa,0BAA2B,SAAQ,iBAAiB,CAAC,OAAO,CAAC;IACxE,UAAmB,MAAM,EAAE,eAAe,CAAA;gBAE9B,MAAM,EAAE,eAAe;IAK7B,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmCpE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IASzB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcjD,IAAa,MAAM,IAAI,MAAM,CAE5B;IAEK,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAQxF"}
@@ -1,4 +1,5 @@
1
1
  import { ConnectionManager } from "./ConnectionManager.js";
2
+ import { MigrationRunner } from "./migrations/MigrationRunner.js";
2
3
  export class SequelizeConnectionManager extends ConnectionManager {
3
4
  config;
4
5
  constructor(config) {
@@ -26,6 +27,10 @@ export class SequelizeConnectionManager extends ConnectionManager {
26
27
  : undefined,
27
28
  logging: false,
28
29
  });
30
+ if (this.config.migrations?.runOnConnect) {
31
+ const runner = new MigrationRunner(connection, this.config.migrations);
32
+ await runner.up();
33
+ }
29
34
  this.connections.set(key, connection);
30
35
  return connection;
31
36
  }
@@ -54,5 +59,13 @@ export class SequelizeConnectionManager extends ConnectionManager {
54
59
  get engine() {
55
60
  return "sequelize";
56
61
  }
62
+ async getMigrationRunner(tenant, dataSource) {
63
+ if (!this.config.migrations) {
64
+ throw new Error("[TypeRoad] Migration configuration is missing in SequelizeConnectionManager");
65
+ }
66
+ const connection = await this.getConnection(tenant, dataSource);
67
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
68
+ return new MigrationRunner(connection, this.config.migrations);
69
+ }
57
70
  }
58
71
  //# sourceMappingURL=SequelizeConnectionManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SequelizeConnectionManager.js","sourceRoot":"","sources":["../../src/database/SequelizeConnectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAuB,MAAM,wBAAwB,CAAA;AAM/E,MAAM,OAAO,0BAA2B,SAAQ,iBAA0B;IACrD,MAAM,CAAiB;IAE1C,YAAY,MAAuB;QACjC,KAAK,CAAC,MAAM,CAAC,CAAA;QACb,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,UAAmB;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAE7C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;QACnC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAC3D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;QAE/C,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAS,EAAE;YACjF,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACpB,CAAC,CAAC;oBACE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE;oBAC/B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;oBAC9B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK;oBAC1C,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK;iBACrC;gBACH,CAAC,CAAC,SAAS;YACb,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QAEF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QACrC,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YACxE,8DAA8D;YAC9D,MAAO,IAAY,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;QACF,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QAEvB,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAO,IAAY,CAAC,YAAY,EAAE,CAAA;YAClC,OAAO,IAAI,CAAA;QACb,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,IAAa,MAAM;QACjB,OAAO,WAAW,CAAA;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"SequelizeConnectionManager.js","sourceRoot":"","sources":["../../src/database/SequelizeConnectionManager.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ export type { DatabaseConfig } from "./ConnectionManager.js";
3
3
  export { SequelizeConnectionManager } from "./SequelizeConnectionManager.js";
4
4
  export type { SequelizeConfig } from "./SequelizeConnectionManager.js";
5
5
  export { MongoConnectionManager } from "./MongoConnectionManager.js";
6
+ export * from "./migrations/index.js";
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,YAAY,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAC5E,YAAY,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,cAAc,uBAAuB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export { ConnectionManager } from "./ConnectionManager.js";
2
2
  export { SequelizeConnectionManager } from "./SequelizeConnectionManager.js";
3
3
  export { MongoConnectionManager } from "./MongoConnectionManager.js";
4
+ export * from "./migrations/index.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAG5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAA;AAG5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { Sequelize } from "sequelize";
2
+ export interface MigrationConfig {
3
+ path: string;
4
+ tableName?: string;
5
+ runOnConnect?: boolean;
6
+ }
7
+ export interface MigrationStatus {
8
+ name: string;
9
+ path?: string;
10
+ isApplied: boolean;
11
+ }
12
+ export declare class MigrationRunner {
13
+ private readonly connection;
14
+ private readonly config;
15
+ private umzug;
16
+ constructor(connection: Sequelize, config: MigrationConfig);
17
+ up(steps?: number): Promise<string[]>;
18
+ down(steps?: number): Promise<string[]>;
19
+ status(): Promise<MigrationStatus[]>;
20
+ }
21
+ //# sourceMappingURL=MigrationRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MigrationRunner.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/MigrationRunner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,WAAW,CAAA;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,OAAO,CAAC,KAAK,CAAuB;gBAGjB,UAAU,EAAE,SAAS,EACrB,MAAM,EAAE,eAAe;IA4BpC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKrC,IAAI,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMlC,MAAM,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAW3C"}
@@ -0,0 +1,54 @@
1
+ import { Umzug, SequelizeStorage } from "umzug";
2
+ export class MigrationRunner {
3
+ connection;
4
+ config;
5
+ umzug;
6
+ constructor(connection, config) {
7
+ this.connection = connection;
8
+ this.config = config;
9
+ this.umzug = new Umzug({
10
+ migrations: {
11
+ glob: [`${this.config.path}/*.{ts,js}`, { cwd: process.cwd() }],
12
+ resolve: ({ name, path, context }) => {
13
+ return {
14
+ name,
15
+ up: async () => {
16
+ const migration = await import(path);
17
+ await migration.default.up(context, this.connection);
18
+ },
19
+ down: async () => {
20
+ const migration = await import(path);
21
+ await migration.default.down(context, this.connection);
22
+ },
23
+ };
24
+ },
25
+ },
26
+ context: this.connection.getQueryInterface(),
27
+ storage: new SequelizeStorage({
28
+ sequelize: this.connection,
29
+ tableName: this.config.tableName ?? "__typeroad_migrations",
30
+ }),
31
+ logger: console, // Default logger
32
+ });
33
+ }
34
+ async up(steps) {
35
+ const executed = steps ? await this.umzug.up({ step: steps }) : await this.umzug.up();
36
+ return executed.map((m) => m.name);
37
+ }
38
+ async down(steps = 1) {
39
+ if (steps <= 0)
40
+ return [];
41
+ const reverted = await this.umzug.down({ step: steps });
42
+ return reverted.map((m) => m.name);
43
+ }
44
+ async status() {
45
+ const pending = await this.umzug.pending();
46
+ const executed = await this.umzug.executed();
47
+ const allMigrations = [
48
+ ...executed.map((m) => ({ name: m.name, path: m.path, isApplied: true })),
49
+ ...pending.map((m) => ({ name: m.name, path: m.path, isApplied: false })),
50
+ ];
51
+ return allMigrations.sort((a, b) => a.name.localeCompare(b.name));
52
+ }
53
+ }
54
+ //# sourceMappingURL=MigrationRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MigrationRunner.js","sourceRoot":"","sources":["../../../src/database/migrations/MigrationRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { QueryInterface, Sequelize } from "sequelize";
2
+ export interface Migration {
3
+ up: (queryInterface: QueryInterface, sequelize: Sequelize) => Promise<void>;
4
+ down: (queryInterface: QueryInterface, sequelize: Sequelize) => Promise<void>;
5
+ }
6
+ export * from "./MigrationRunner.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/database/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3E,IAAI,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9E;AAED,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./MigrationRunner.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/database/migrations/index.ts"],"names":[],"mappings":"AAOA,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,51 @@
1
+ import type { OnRoadExpress, BuildServerConfig } from "../OnRoadExpress.js";
2
+ export interface DevDatabaseConfig {
3
+ engine: "postgres" | "mysql";
4
+ port?: number;
5
+ user?: string;
6
+ password?: string;
7
+ database?: string;
8
+ image?: string;
9
+ containerName?: string;
10
+ }
11
+ export interface DevServerConfig {
12
+ app: OnRoadExpress;
13
+ databases?: DevDatabaseConfig[];
14
+ frontendVars?: Record<string, string>;
15
+ migrationsPath?: string;
16
+ projectRoot?: string;
17
+ autoMigrate?: boolean;
18
+ composeFile?: string;
19
+ tenants?: string[];
20
+ }
21
+ export declare class DevServer {
22
+ private readonly app;
23
+ private readonly logger;
24
+ private readonly databases;
25
+ private readonly frontendVars;
26
+ private readonly migrationsPath?;
27
+ private readonly projectRoot;
28
+ private readonly autoMigrate;
29
+ private readonly composeFile;
30
+ private readonly tenants;
31
+ private containers;
32
+ private composeCmd;
33
+ constructor(config: DevServerConfig);
34
+ start(buildConfig?: BuildServerConfig): Promise<void>;
35
+ stop(): Promise<void>;
36
+ private ensureComposeFile;
37
+ private generateComposeContent;
38
+ private getComposeCommand;
39
+ private startContainers;
40
+ private stopContainers;
41
+ private isDockerAvailable;
42
+ private waitForDatabases;
43
+ private waitForContainer;
44
+ private populateContainersFromConfig;
45
+ private waitForSequelizeConnection;
46
+ private runMigrations;
47
+ private printFrontendEnvVars;
48
+ private printBanner;
49
+ private printSummary;
50
+ }
51
+ //# sourceMappingURL=DevServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevServer.d.ts","sourceRoot":"","sources":["../../src/dev/DevServer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAM3E,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAA;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAA;IAClB,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAcD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,UAAU,CAAsB;gBAE5B,MAAM,EAAE,eAAe;IAc7B,KAAK,CAAC,WAAW,GAAE,iBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAW3B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,sBAAsB;IA+E9B,OAAO,CAAC,iBAAiB;YAyBX,eAAe;IAiC7B,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,iBAAiB;YAWX,gBAAgB;YAahB,gBAAgB;IA0B9B,OAAO,CAAC,4BAA4B;YAiBtB,0BAA0B;YAsB1B,aAAa;IAmC3B,OAAO,CAAC,oBAAoB;IAmD5B,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,YAAY;CAqBrB"}