@loopstack/loopstack-module 0.30.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.
@@ -0,0 +1,3 @@
1
+ export * from './loopstack.module.js';
2
+ export * from './interfaces/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from './loopstack.module.js';
2
+ export * from './interfaces/index.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './loopstack-module-options.interface.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './loopstack-module-options.interface.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { CorsOptions } from 'cors';
2
+ import type { AvailableEnvironmentInterface } from '@loopstack/contracts/api';
3
+ export interface LoopstackDatabaseOptions {
4
+ connection?: string;
5
+ host?: string;
6
+ port?: number;
7
+ username?: string;
8
+ password?: string;
9
+ database?: string;
10
+ }
11
+ export interface LoopstackAuthOptions {
12
+ jwt?: {
13
+ secret?: string;
14
+ expiresIn?: string;
15
+ refreshSecret?: string;
16
+ refreshExpiresIn?: string;
17
+ };
18
+ clientId?: string;
19
+ hub?: {
20
+ issuer?: string;
21
+ jwksUri?: string;
22
+ };
23
+ }
24
+ export interface LoopstackRedisOptions {
25
+ host?: string;
26
+ port?: number;
27
+ password?: string;
28
+ }
29
+ export interface LoopstackModuleOptions {
30
+ database?: LoopstackDatabaseOptions;
31
+ auth?: LoopstackAuthOptions;
32
+ redis?: LoopstackRedisOptions;
33
+ enableAuth?: boolean;
34
+ availableEnvironments?: AvailableEnvironmentInterface[];
35
+ cors?: CorsOptions | false;
36
+ }
37
+ //# sourceMappingURL=loopstack-module-options.interface.d.ts.map
@@ -0,0 +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,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAE9E,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;IACrB,qBAAqB,CAAC,EAAE,6BAA6B,EAAE,CAAC;IAKxD,IAAI,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loopstack-module-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopstack-module-options.interface.js","sourceRoot":"","sources":["../../src/interfaces/loopstack-module-options.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { LoopstackModuleOptions } from './interfaces/index.js';
3
+ export declare class LoopstackModule {
4
+ static forRoot(options?: LoopstackModuleOptions): DynamicModule;
5
+ }
6
+ //# sourceMappingURL=loopstack.module.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,77 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var LoopstackModule_1;
8
+ import { Module } from '@nestjs/common';
9
+ import { ConfigModule, registerAs } from '@nestjs/config';
10
+ import { EventEmitterModule } from '@nestjs/event-emitter';
11
+ import { TypeOrmModule } from '@nestjs/typeorm';
12
+ import { LoopstackApiModule } from '@loopstack/api';
13
+ import { LoopCoreModule } from '@loopstack/core';
14
+ let LoopstackModule = LoopstackModule_1 = class LoopstackModule {
15
+ static forRoot(options = {}) {
16
+ const imports = [];
17
+ const connection = options.database?.connection;
18
+ imports.push(ConfigModule.forRoot({
19
+ isGlobal: true,
20
+ envFilePath: '.env',
21
+ load: [buildAppConfig(options), buildAuthConfig(options)],
22
+ }));
23
+ if (!connection) {
24
+ const db = options.database ?? {};
25
+ imports.push(TypeOrmModule.forRoot({
26
+ 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',
32
+ autoLoadEntities: true,
33
+ synchronize: true,
34
+ migrationsRun: false,
35
+ }));
36
+ }
37
+ imports.push(EventEmitterModule.forRoot());
38
+ imports.push(LoopCoreModule.forRoot({ connection, redis: options.redis }));
39
+ imports.push(LoopstackApiModule.register({
40
+ availableEnvironments: options.availableEnvironments,
41
+ connection,
42
+ cors: options.cors,
43
+ }));
44
+ return {
45
+ module: LoopstackModule_1,
46
+ imports,
47
+ exports: [LoopstackApiModule, LoopCoreModule],
48
+ };
49
+ }
50
+ };
51
+ LoopstackModule = LoopstackModule_1 = __decorate([
52
+ Module({})
53
+ ], LoopstackModule);
54
+ export { LoopstackModule };
55
+ function buildAppConfig(options) {
56
+ return registerAs('app', () => ({
57
+ nodeEnv: process.env.NODE_ENV ?? 'development',
58
+ enableAuth: options.enableAuth ?? process.env.LOOPSTACK_AUTH === 'true',
59
+ }));
60
+ }
61
+ function buildAuthConfig(options) {
62
+ 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
+ }));
76
+ }
77
+ //# sourceMappingURL=loopstack.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loopstack.module.js","sourceRoot":"","sources":["../src/loopstack.module.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@loopstack/loopstack-module",
3
+ "displayName": "Loopstack Module",
4
+ "description": "All-in-one NestJS module for bootstrapping a Loopstack application",
5
+ "version": "0.30.0",
6
+ "license": "MIT",
7
+ "author": {
8
+ "name": "Jakob Klippel",
9
+ "url": "https://www.linkedin.com/in/jakob-klippel/"
10
+ },
11
+ "type": "module",
12
+ "main": "dist/index.js",
13
+ "types": "dist/index.d.ts",
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "default": "./dist/index.js"
18
+ }
19
+ },
20
+ "scripts": {
21
+ "build": "nest build",
22
+ "compile": "tsc --noEmit",
23
+ "format": "prettier --write .",
24
+ "lint": "eslint .",
25
+ "test": "jest --passWithNoTests",
26
+ "watch": "nest build --watch"
27
+ },
28
+ "dependencies": {
29
+ "@loopstack/api": "^0.30.0",
30
+ "@loopstack/auth": "^0.30.0",
31
+ "@loopstack/common": "^0.30.0",
32
+ "@loopstack/contracts": "^0.30.0",
33
+ "@loopstack/core": "^0.30.0",
34
+ "@nestjs/common": "^11.1.19",
35
+ "@nestjs/config": "^4.0.4",
36
+ "@nestjs/core": "^11.1.19",
37
+ "@nestjs/event-emitter": "^3.0.1",
38
+ "@nestjs/typeorm": "^11.0.1",
39
+ "pg": "^8.20.0",
40
+ "typeorm": "^0.3.28"
41
+ },
42
+ "devDependencies": {},
43
+ "files": [
44
+ "dist"
45
+ ],
46
+ "jest": {
47
+ "moduleFileExtensions": [
48
+ "js",
49
+ "json",
50
+ "ts"
51
+ ],
52
+ "rootDir": "src",
53
+ "testRegex": ".*\\.spec\\.ts$",
54
+ "transform": {
55
+ "^.+\\.(t|j)s$": "ts-jest"
56
+ },
57
+ "collectCoverageFrom": [
58
+ "**/*.(t|j)s"
59
+ ],
60
+ "coverageDirectory": "../coverage",
61
+ "testEnvironment": "node"
62
+ }
63
+ }