@alacard-project/shared 1.1.4 → 1.1.6

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,13 +1,18 @@
1
1
  import { INestApplication } from '@nestjs/common';
2
- import { IRemoteLogger } from '../types/logger.interface';
3
2
  export interface AppSetupOptions {
4
- corsOrigins?: string[];
3
+ corsOrigins?: string | string[];
5
4
  apiPrefix?: string;
6
5
  helmet?: boolean;
7
6
  validation?: boolean;
8
7
  shutdownHooks?: boolean;
9
8
  enableTelemetry?: boolean;
10
- remoteLogger?: IRemoteLogger;
9
+ remoteLogger?: any;
11
10
  logger?: any;
11
+ swagger?: {
12
+ title: string;
13
+ description: string;
14
+ version: string;
15
+ path?: string;
16
+ };
12
17
  }
13
18
  export declare function setupStandardApp(app: INestApplication, options?: AppSetupOptions): void;
@@ -5,8 +5,9 @@ const common_1 = require("@nestjs/common");
5
5
  const http_constants_1 = require("../constants/http.constants");
6
6
  const helmet_1 = require("helmet");
7
7
  const filters_1 = require("../filters");
8
+ const swagger_1 = require("@nestjs/swagger");
8
9
  function setupStandardApp(app, options = {}) {
9
- const { corsOrigins = ['*'], apiPrefix = http_constants_1.API_PREFIX.V1, helmet: useHelmet = true, validation = true, shutdownHooks = true, enableTelemetry = true, remoteLogger, logger, } = options;
10
+ const { corsOrigins = ['*'], apiPrefix = http_constants_1.API_PREFIX.V1, helmet: useHelmet = true, validation = true, shutdownHooks = true, enableTelemetry = true, remoteLogger, logger, swagger, } = options;
10
11
  if (logger) {
11
12
  app.useLogger(logger);
12
13
  }
@@ -17,7 +18,9 @@ function setupStandardApp(app, options = {}) {
17
18
  origin: corsOrigins,
18
19
  credentials: true,
19
20
  });
20
- app.setGlobalPrefix(apiPrefix);
21
+ app.setGlobalPrefix(apiPrefix, {
22
+ exclude: ['metrics', 'health/live', 'health/ready', 'health/info'],
23
+ });
21
24
  if (useHelmet) {
22
25
  app.use((0, helmet_1.default)());
23
26
  }
@@ -34,5 +37,19 @@ function setupStandardApp(app, options = {}) {
34
37
  if (enableTelemetry) {
35
38
  app.useGlobalFilters(new filters_1.GlobalExceptionFilter(remoteLogger));
36
39
  }
40
+ if (process.env.NODE_ENV !== 'production' || swagger) {
41
+ const title = swagger?.title || 'Alacard Microservice API';
42
+ const description = swagger?.description || 'Alacard v5 Monorepo Service';
43
+ const version = swagger?.version || '1.0.0';
44
+ const path = swagger?.path || 'docs';
45
+ const config = new swagger_1.DocumentBuilder()
46
+ .setTitle(title)
47
+ .setDescription(description)
48
+ .setVersion(version)
49
+ .addBearerAuth()
50
+ .build();
51
+ const document = swagger_1.SwaggerModule.createDocument(app, config);
52
+ swagger_1.SwaggerModule.setup(path, app, document);
53
+ }
37
54
  }
38
55
  //# sourceMappingURL=app.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app.utils.js","sourceRoot":"","sources":["../../src/utils/app.utils.ts"],"names":[],"mappings":";;AAiBA,4CAmDC;AApED,2CAAkE;AAClE,gEAAyD;AACzD,mCAA4B;AAC5B,wCAAmD;AAcnD,SAAgB,gBAAgB,CAC5B,GAAqB,EACrB,UAA2B,EAAE;IAE7B,MAAM,EACF,WAAW,GAAG,CAAC,GAAG,CAAC,EACnB,SAAS,GAAG,2BAAU,CAAC,EAAE,EACzB,MAAM,EAAE,SAAS,GAAG,IAAI,EACxB,UAAU,GAAG,IAAI,EACjB,aAAa,GAAG,IAAI,EACpB,eAAe,GAAG,IAAI,EACtB,YAAY,EACZ,MAAM,GACT,GAAG,OAAO,CAAC;IAEZ,IAAI,MAAM,EAAE,CAAC;QACT,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAChB,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,UAAU,CAAC;QACX,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAE/B,IAAI,SAAS,EAAE,CAAC;QACZ,GAAG,CAAC,GAAG,CAAC,IAAA,gBAAM,GAAE,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACb,GAAG,CAAC,cAAc,CACd,IAAI,uBAAc,CAAC;YACf,SAAS,EAAE,IAAI;YACf,oBAAoB,EAAE,IAAI;YAC1B,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE;gBACd,wBAAwB,EAAE,IAAI;aACjC;SACJ,CAAC,CACL,CAAC;IACN,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QAElB,GAAG,CAAC,gBAAgB,CAAC,IAAI,+BAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"app.utils.js","sourceRoot":"","sources":["../../src/utils/app.utils.ts"],"names":[],"mappings":";;AAwBA,4CAwEC;AAhGD,2CAAkE;AAClE,gEAAyD;AACzD,mCAA4B;AAC5B,wCAAmD;AAEnD,6CAAiE;AAmBjE,SAAgB,gBAAgB,CAC5B,GAAqB,EACrB,UAA2B,EAAE;IAE7B,MAAM,EACF,WAAW,GAAG,CAAC,GAAG,CAAC,EACnB,SAAS,GAAG,2BAAU,CAAC,EAAE,EACzB,MAAM,EAAE,SAAS,GAAG,IAAI,EACxB,UAAU,GAAG,IAAI,EACjB,aAAa,GAAG,IAAI,EACpB,eAAe,GAAG,IAAI,EACtB,YAAY,EACZ,MAAM,EACN,OAAO,GACV,GAAG,OAAO,CAAC;IAEZ,IAAI,MAAM,EAAE,CAAC;QACT,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAChB,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,UAAU,CAAC;QACX,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,GAAG,CAAC,eAAe,CAAC,SAAS,EAAE;QAC3B,OAAO,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,CAAC;KACrE,CAAC,CAAC;IAEH,IAAI,SAAS,EAAE,CAAC;QACZ,GAAG,CAAC,GAAG,CAAC,IAAA,gBAAM,GAAE,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACb,GAAG,CAAC,cAAc,CACd,IAAI,uBAAc,CAAC;YACf,SAAS,EAAE,IAAI;YACf,oBAAoB,EAAE,IAAI;YAC1B,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE;gBACd,wBAAwB,EAAE,IAAI;aACjC;SACJ,CAAC,CACL,CAAC;IACN,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QAElB,GAAG,CAAC,gBAAgB,CAAC,IAAI,+BAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;IAGD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,OAAO,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,0BAA0B,CAAC;QAC3D,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,6BAA6B,CAAC;QAC1E,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC;QAErC,MAAM,MAAM,GAAG,IAAI,yBAAe,EAAE;aAC/B,QAAQ,CAAC,KAAK,CAAC;aACf,cAAc,CAAC,WAAW,CAAC;aAC3B,UAAU,CAAC,OAAO,CAAC;aACnB,aAAa,EAAE;aACf,KAAK,EAAE,CAAC;QAEb,MAAM,QAAQ,GAAG,uBAAa,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC3D,uBAAa,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC"}
@@ -0,0 +1,15 @@
1
+ export interface BootstrapOptions {
2
+ serviceName: string;
3
+ apiPrefix: string;
4
+ grpcPackage?: string;
5
+ port?: number;
6
+ grpcPort?: number;
7
+ corsOrigins?: string | string[];
8
+ kafka?: {
9
+ brokers?: string[];
10
+ groupId?: string;
11
+ };
12
+ }
13
+ export declare class StandardBootstrap {
14
+ static run(appModule: any, options: BootstrapOptions): Promise<import("@nestjs/common").INestApplication<any>>;
15
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardBootstrap = void 0;
4
+ const core_1 = require("@nestjs/core");
5
+ const microservices_1 = require("@nestjs/microservices");
6
+ const config_sdk_1 = require("@alacard-project/config-sdk");
7
+ const logging_sdk_1 = require("@alacard-project/logging-sdk");
8
+ const app_utils_1 = require("./app.utils");
9
+ const tracing_utils_1 = require("./tracing.utils");
10
+ const proto_path_1 = require("./proto-path");
11
+ class StandardBootstrap {
12
+ static async run(appModule, options) {
13
+ const environment = process.env.NODE_ENV || 'development';
14
+ const configServiceUrl = process.env.CONFIG_SERVICE_URL || 'config-microservice:50055';
15
+ const internalKey = process.env.INTERNAL_CONFIG_KEY;
16
+ (0, tracing_utils_1.initTracing)(options.serviceName);
17
+ await config_sdk_1.ConfigClient.initialize({
18
+ serviceName: options.serviceName,
19
+ environment,
20
+ grpcUrl: configServiceUrl,
21
+ internalKey,
22
+ });
23
+ const app = await core_1.NestFactory.create(appModule, {
24
+ bufferLogs: true,
25
+ });
26
+ const remoteLogger = app.get(logging_sdk_1.RemoteLogger);
27
+ app.useLogger(remoteLogger);
28
+ (0, app_utils_1.setupStandardApp)(app, {
29
+ apiPrefix: options.apiPrefix,
30
+ remoteLogger,
31
+ corsOrigins: options.corsOrigins,
32
+ });
33
+ if (options.grpcPackage) {
34
+ const finalGrpcPort = options.grpcPort || 50051;
35
+ app.connectMicroservice({
36
+ transport: microservices_1.Transport.GRPC,
37
+ options: {
38
+ package: options.grpcPackage,
39
+ protoPath: (0, proto_path_1.getProtoPath)(options.grpcPackage),
40
+ url: `0.0.0.0:${finalGrpcPort}`,
41
+ },
42
+ });
43
+ }
44
+ if (options.kafka) {
45
+ app.connectMicroservice({
46
+ transport: microservices_1.Transport.KAFKA,
47
+ options: {
48
+ client: {
49
+ brokers: options.kafka.brokers || (process.env.KAFKA_BROKERS || 'kafka:29092').split(','),
50
+ },
51
+ consumer: {
52
+ groupId: options.kafka.groupId || `${options.serviceName}-consumer`,
53
+ },
54
+ },
55
+ });
56
+ }
57
+ if (options.grpcPackage || options.kafka) {
58
+ await app.startAllMicroservices();
59
+ }
60
+ const finalPort = options.port || 3000;
61
+ await app.listen(finalPort, '0.0.0.0');
62
+ console.log(`🚀 ${options.serviceName} is running on: http://localhost:${finalPort}`);
63
+ if (options.grpcPackage) {
64
+ console.log(`📊 gRPC is running on: 0.0.0.0:${options.grpcPort || 50051}`);
65
+ }
66
+ return app;
67
+ }
68
+ }
69
+ exports.StandardBootstrap = StandardBootstrap;
70
+ //# sourceMappingURL=bootstrap.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.utils.js","sourceRoot":"","sources":["../../src/utils/bootstrap.utils.ts"],"names":[],"mappings":";;;AAAA,uCAA2C;AAC3C,yDAAuE;AACvE,4DAA2D;AAC3D,8DAA4D;AAC5D,2CAA+C;AAC/C,mDAA8C;AAC9C,6CAA4C;AAgB5C,MAAa,iBAAiB;IACnB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAc,EAAE,OAAyB;QAC7D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;QAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,2BAA2B,CAAC;QACvF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAGpD,IAAA,2BAAW,EAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAGjC,MAAM,yBAAY,CAAC,UAAU,CAAC;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,WAAW;YACX,OAAO,EAAE,gBAAgB;YACzB,WAAW;SACd,CAAC,CAAC;QAGH,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,SAAS,EAAE;YAC5C,UAAU,EAAE,IAAI;SACnB,CAAC,CAAC;QAGH,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,0BAAY,CAAC,CAAC;QAC3C,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAG5B,IAAA,4BAAgB,EAAC,GAAU,EAAE;YACzB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY;YACZ,WAAW,EAAE,OAAO,CAAC,WAAW;SACnC,CAAC,CAAC;QAGH,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;YAChD,GAAG,CAAC,mBAAmB,CAAsB;gBACzC,SAAS,EAAE,yBAAS,CAAC,IAAI;gBACzB,OAAO,EAAE;oBACL,OAAO,EAAE,OAAO,CAAC,WAAW;oBAC5B,SAAS,EAAE,IAAA,yBAAY,EAAC,OAAO,CAAC,WAAW,CAAC;oBAC5C,GAAG,EAAE,WAAW,aAAa,EAAE;iBAClC;aACJ,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,GAAG,CAAC,mBAAmB,CAAsB;gBACzC,SAAS,EAAE,yBAAS,CAAC,KAAK;gBAC1B,OAAO,EAAE;oBACL,MAAM,EAAE;wBACJ,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;qBAC5F;oBACD,QAAQ,EAAE;wBACN,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,OAAO,CAAC,WAAW,WAAW;qBACtE;iBACJ;aACJ,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACvC,MAAM,GAAG,CAAC,qBAAqB,EAAE,CAAC;QACtC,CAAC;QAGD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;QACvC,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEvC,OAAO,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,WAAW,oCAAoC,SAAS,EAAE,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,CAAC,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AA3ED,8CA2EC"}
@@ -0,0 +1,10 @@
1
+ import { HealthCheckService, HealthCheckResult, MemoryHealthIndicator } from '@nestjs/terminus';
2
+ export declare class StandardHealthController {
3
+ private health;
4
+ private memory;
5
+ constructor(health: HealthCheckService, memory: MemoryHealthIndicator);
6
+ checkLiveness(): Promise<HealthCheckResult>;
7
+ checkReadiness(): Promise<HealthCheckResult>;
8
+ }
9
+ export declare class StandardHealthModule {
10
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StandardHealthModule = exports.StandardHealthController = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const terminus_1 = require("@nestjs/terminus");
15
+ let StandardHealthController = class StandardHealthController {
16
+ constructor(health, memory) {
17
+ this.health = health;
18
+ this.memory = memory;
19
+ }
20
+ async checkLiveness() {
21
+ return this.health.check([]);
22
+ }
23
+ async checkReadiness() {
24
+ return this.health.check([
25
+ () => this.memory.checkHeap('memory_heap', 150 * 1024 * 1024),
26
+ ]);
27
+ }
28
+ };
29
+ exports.StandardHealthController = StandardHealthController;
30
+ __decorate([
31
+ (0, common_1.Get)('live'),
32
+ (0, terminus_1.HealthCheck)(),
33
+ __metadata("design:type", Function),
34
+ __metadata("design:paramtypes", []),
35
+ __metadata("design:returntype", Promise)
36
+ ], StandardHealthController.prototype, "checkLiveness", null);
37
+ __decorate([
38
+ (0, common_1.Get)('ready'),
39
+ (0, terminus_1.HealthCheck)(),
40
+ __metadata("design:type", Function),
41
+ __metadata("design:paramtypes", []),
42
+ __metadata("design:returntype", Promise)
43
+ ], StandardHealthController.prototype, "checkReadiness", null);
44
+ exports.StandardHealthController = StandardHealthController = __decorate([
45
+ (0, common_1.Controller)('health'),
46
+ __metadata("design:paramtypes", [terminus_1.HealthCheckService,
47
+ terminus_1.MemoryHealthIndicator])
48
+ ], StandardHealthController);
49
+ let StandardHealthModule = class StandardHealthModule {
50
+ };
51
+ exports.StandardHealthModule = StandardHealthModule;
52
+ exports.StandardHealthModule = StandardHealthModule = __decorate([
53
+ (0, common_1.Module)({
54
+ imports: [terminus_1.TerminusModule],
55
+ controllers: [StandardHealthController],
56
+ exports: [terminus_1.TerminusModule],
57
+ })
58
+ ], StandardHealthModule);
59
+ //# sourceMappingURL=standard-health.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-health.module.js","sourceRoot":"","sources":["../../src/utils/standard-health.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyD;AACzD,+CAA6H;AAGtH,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IACjC,YACY,MAA0B,EAC1B,MAA6B;QAD7B,WAAM,GAAN,MAAM,CAAoB;QAC1B,WAAM,GAAN,MAAM,CAAuB;IACrC,CAAC;IAIC,AAAN,KAAK,CAAC,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAIK,AAAN,KAAK,CAAC,cAAc;QAGhB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACrB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;SAChE,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AArBY,4DAAwB;AAQ3B;IAFL,IAAA,YAAG,EAAC,MAAM,CAAC;IACX,IAAA,sBAAW,GAAE;;;;6DAGb;AAIK;IAFL,IAAA,YAAG,EAAC,OAAO,CAAC;IACZ,IAAA,sBAAW,GAAE;;;;8DAOb;mCApBQ,wBAAwB;IADpC,IAAA,mBAAU,EAAC,QAAQ,CAAC;qCAGG,6BAAkB;QAClB,gCAAqB;GAHhC,wBAAwB,CAqBpC;AAOM,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAI,CAAA;AAAxB,oDAAoB;+BAApB,oBAAoB;IALhC,IAAA,eAAM,EAAC;QACJ,OAAO,EAAE,CAAC,yBAAc,CAAC;QACzB,WAAW,EAAE,CAAC,wBAAwB,CAAC;QACvC,OAAO,EAAE,CAAC,yBAAc,CAAC;KAC5B,CAAC;GACW,oBAAoB,CAAI"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alacard-project/shared",
3
- "version": "1.1.4",
3
+ "version": "1.1.6",
4
4
  "engines": {
5
5
  "node": ">=22.0.0"
6
6
  },