@loopstack/loopstack-module 0.31.6 → 0.33.0

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.
@@ -1,7 +1,7 @@
1
1
  import type { CorsOptions } from 'cors';
2
2
  import type { SseStreamOptionsInterface } from '@loopstack/api';
3
3
  export interface LoopstackDatabaseOptions {
4
- connection?: string;
4
+ reuseExistingConnection?: boolean;
5
5
  host?: string;
6
6
  port?: number;
7
7
  username?: string;
@@ -32,6 +32,8 @@ export interface LoopstackModuleOptions {
32
32
  redis?: LoopstackRedisOptions;
33
33
  enableAuth?: boolean;
34
34
  cors?: CorsOptions | false;
35
+ corsOrigins?: string[];
35
36
  sse?: SseStreamOptionsInterface;
37
+ trace?: boolean;
36
38
  }
37
39
  //# sourceMappingURL=loopstack-module-options.interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loopstack-module-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/loopstack-module-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,wBAAwB;IAMvC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAKrB,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAI3B,GAAG,CAAC,EAAE,yBAAyB,CAAC;CACjC"}
1
+ {"version":3,"file":"loopstack-module-options.interface.d.ts","sourceRoot":"","sources":["../../src/interfaces/loopstack-module-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,wBAAwB;IAQvC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IAKrB,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;IAK3B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAIvB,GAAG,CAAC,EAAE,yBAAyB,CAAC;IAOhC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"loopstack.module.d.ts","sourceRoot":"","sources":["../src/loopstack.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAOvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,qBACa,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,sBAA2B,GAAG,aAAa;CAmDpE"}
1
+ {"version":3,"file":"loopstack.module.d.ts","sourceRoot":"","sources":["../src/loopstack.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAOvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQ/D,qBACa,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,sBAA2B,GAAG,aAAa;CA0DpE"}
@@ -11,34 +11,40 @@ import { EventEmitterModule } from '@nestjs/event-emitter';
11
11
  import { TypeOrmModule } from '@nestjs/typeorm';
12
12
  import { LoopstackApiModule } from '@loopstack/api';
13
13
  import { LoopCoreModule } from '@loopstack/core';
14
+ const DEV_AUTH_DISABLED_SECRET = 'dev-insecure-secret-auth-disabled';
14
15
  let LoopstackModule = LoopstackModule_1 = class LoopstackModule {
15
16
  static forRoot(options = {}) {
16
17
  const imports = [];
17
- const connection = options.database?.connection;
18
+ const reuseExistingConnection = options.database?.reuseExistingConnection ?? false;
18
19
  imports.push(ConfigModule.forRoot({
19
20
  isGlobal: true,
20
21
  envFilePath: '.env',
21
22
  load: [buildAppConfig(options), buildAuthConfig(options)],
22
23
  }));
23
- if (!connection) {
24
+ if (!reuseExistingConnection) {
24
25
  const db = options.database ?? {};
26
+ const databaseUrl = !options.database ? process.env.DATABASE_URL : undefined;
25
27
  imports.push(TypeOrmModule.forRoot({
26
28
  type: 'postgres',
27
- host: db.host ?? process.env.DATABASE_HOST ?? 'localhost',
28
- port: db.port ?? (Number(process.env.DATABASE_PORT) || 5432),
29
- username: db.username ?? process.env.DATABASE_USERNAME ?? 'postgres',
30
- database: db.database ?? process.env.DATABASE_NAME ?? 'postgres',
31
- password: db.password ?? process.env.DATABASE_PASSWORD ?? 'admin',
29
+ ...(databaseUrl
30
+ ? { url: databaseUrl }
31
+ : {
32
+ host: db.host ?? process.env.DATABASE_HOST ?? 'localhost',
33
+ port: db.port ?? (Number(process.env.DATABASE_PORT) || 5432),
34
+ username: db.username ?? process.env.DATABASE_USERNAME ?? 'postgres',
35
+ database: db.database ?? process.env.DATABASE_NAME ?? 'postgres',
36
+ password: db.password ?? process.env.DATABASE_PASSWORD ?? 'admin',
37
+ }),
32
38
  autoLoadEntities: true,
33
39
  synchronize: true,
34
40
  migrationsRun: false,
35
41
  }));
36
42
  }
37
43
  imports.push(EventEmitterModule.forRoot());
38
- imports.push(LoopCoreModule.forRoot({ connection, redis: options.redis }));
44
+ imports.push(LoopCoreModule.forRoot({ redis: options.redis }));
39
45
  imports.push(LoopstackApiModule.register({
40
- connection,
41
46
  cors: options.cors,
47
+ corsOrigins: options.corsOrigins,
42
48
  sse: options.sse,
43
49
  }));
44
50
  return {
@@ -52,26 +58,37 @@ LoopstackModule = LoopstackModule_1 = __decorate([
52
58
  Module({})
53
59
  ], LoopstackModule);
54
60
  export { LoopstackModule };
61
+ function resolveEnableAuth(options) {
62
+ return options.enableAuth ?? process.env.LOOPSTACK_AUTH === 'true';
63
+ }
55
64
  function buildAppConfig(options) {
56
65
  return registerAs('app', () => ({
57
66
  nodeEnv: process.env.NODE_ENV ?? 'development',
58
- enableAuth: options.enableAuth ?? process.env.LOOPSTACK_AUTH === 'true',
67
+ enableAuth: resolveEnableAuth(options),
68
+ trace: options.trace ?? process.env.LOOPSTACK_TRACE === 'true',
59
69
  }));
60
70
  }
61
71
  function buildAuthConfig(options) {
62
72
  const auth = options.auth;
63
- return registerAs('auth', () => ({
64
- jwt: {
65
- secret: auth?.jwt?.secret ?? process.env.JWT_SECRET ?? 'dev-secret-change-me',
66
- expiresIn: auth?.jwt?.expiresIn ?? process.env.JWT_EXPIRES_IN ?? '1h',
67
- refreshSecret: auth?.jwt?.refreshSecret ?? process.env.JWT_REFRESH_SECRET ?? process.env.JWT_SECRET ?? 'dev-secret-change-me',
68
- refreshExpiresIn: auth?.jwt?.refreshExpiresIn ?? process.env.JWT_REFRESH_EXPIRES_IN ?? '7d',
69
- },
70
- clientId: auth?.clientId ?? process.env.CLIENT_ID ?? 'local',
71
- hub: {
72
- issuer: auth?.hub?.issuer ?? process.env.HUB_ISSUER ?? 'https://hub.loopstack.ai',
73
- jwksUri: auth?.hub?.jwksUri ?? process.env.HUB_JWKS_URI ?? 'https://hub.loopstack.ai/.well-known/jwks.json',
74
- },
75
- }));
73
+ return registerAs('auth', () => {
74
+ const enableAuth = resolveEnableAuth(options);
75
+ const providedSecret = auth?.jwt?.secret ?? process.env.JWT_SECRET;
76
+ const providedRefreshSecret = auth?.jwt?.refreshSecret ?? process.env.JWT_REFRESH_SECRET ?? providedSecret;
77
+ const secret = providedSecret ?? (enableAuth ? undefined : DEV_AUTH_DISABLED_SECRET);
78
+ const refreshSecret = providedRefreshSecret ?? (enableAuth ? undefined : DEV_AUTH_DISABLED_SECRET);
79
+ return {
80
+ jwt: {
81
+ secret: secret,
82
+ expiresIn: auth?.jwt?.expiresIn ?? process.env.JWT_EXPIRES_IN ?? '1h',
83
+ refreshSecret: refreshSecret,
84
+ refreshExpiresIn: auth?.jwt?.refreshExpiresIn ?? process.env.JWT_REFRESH_EXPIRES_IN ?? '7d',
85
+ },
86
+ clientId: auth?.clientId ?? process.env.CLIENT_ID ?? 'local',
87
+ hub: {
88
+ issuer: auth?.hub?.issuer ?? process.env.HUB_ISSUER ?? 'https://hub.loopstack.ai',
89
+ jwksUri: auth?.hub?.jwksUri ?? process.env.HUB_JWKS_URI ?? 'https://hub.loopstack.ai/.well-known/jwks.json',
90
+ },
91
+ };
92
+ });
76
93
  }
77
94
  //# sourceMappingURL=loopstack.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loopstack.module.js","sourceRoot":"","sources":["../src/loopstack.module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loopstack.module.js","sourceRoot":"","sources":["../src/loopstack.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ name: loopstack
2
+
3
+ services:
4
+ studio:
5
+ image: ghcr.io/loopstack-ai/loopstack-studio:latest
6
+ pull_policy: always
7
+ ports:
8
+ - '5173:3000'
9
+ environment:
10
+ VITE_API_URL: ${VITE_API_URL:-http://localhost:3000}
@@ -20,14 +20,6 @@ services:
20
20
  volumes:
21
21
  - redis_data:/data
22
22
 
23
- studio:
24
- image: ghcr.io/loopstack-ai/loopstack-studio:latest
25
- pull_policy: always
26
- ports:
27
- - '5173:3000'
28
- environment:
29
- VITE_API_URL: ${VITE_API_URL:-http://localhost:3000}
30
-
31
23
  volumes:
32
24
  postgres_data:
33
25
  redis_data:
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@loopstack/loopstack-module",
3
3
  "displayName": "Loopstack Module",
4
4
  "description": "All-in-one NestJS module for bootstrapping a Loopstack application",
5
- "version": "0.31.6",
5
+ "version": "0.33.0",
6
6
  "license": "MIT",
7
7
  "author": {
8
8
  "name": "Jakob Klippel",
@@ -26,11 +26,11 @@
26
26
  "watch": "nest build --watch"
27
27
  },
28
28
  "dependencies": {
29
- "@loopstack/api": "^0.37.0",
30
- "@loopstack/auth": "^0.37.0",
31
- "@loopstack/common": "^0.37.0",
32
- "@loopstack/contracts": "^0.37.0",
33
- "@loopstack/core": "^0.37.0"
29
+ "@loopstack/api": "^0.39.0",
30
+ "@loopstack/auth": "^0.39.0",
31
+ "@loopstack/common": "^0.39.0",
32
+ "@loopstack/contracts": "^0.39.0",
33
+ "@loopstack/core": "^0.39.0"
34
34
  },
35
35
  "devDependencies": {
36
36
  "@nestjs/common": "^11.1.19",
@@ -53,7 +53,7 @@
53
53
  "files": [
54
54
  "dist",
55
55
  "docker-compose.yml",
56
- "docker-compose.infra.yml"
56
+ "docker-compose.studio.yml"
57
57
  ],
58
58
  "jest": {
59
59
  "moduleFileExtensions": [
@@ -1,25 +0,0 @@
1
- name: loopstack
2
-
3
- services:
4
- postgres:
5
- image: postgres:16-alpine
6
- ports:
7
- - '5432:5432'
8
- environment:
9
- POSTGRES_DB: ${DATABASE_NAME:-postgres}
10
- POSTGRES_USER: ${DATABASE_USERNAME:-postgres}
11
- POSTGRES_PASSWORD: ${DATABASE_PASSWORD:-admin}
12
- volumes:
13
- - postgres_data:/var/lib/postgresql/data
14
-
15
- redis:
16
- image: redis:8-alpine
17
- ports:
18
- - '6379:6379'
19
- command: ['redis-server', '--appendonly', 'yes']
20
- volumes:
21
- - redis_data:/data
22
-
23
- volumes:
24
- postgres_data:
25
- redis_data: