@hiliosai/sdk 0.1.26 → 0.1.28
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.
- package/dist/index.d.ts +25 -36
- package/dist/index.js +103 -39
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -660,24 +660,6 @@ type DatasourceInstanceTypes<T extends Record<string, new (...args: unknown[]) =
|
|
|
660
660
|
[K in keyof T]: InstanceType<T[K]>;
|
|
661
661
|
};
|
|
662
662
|
|
|
663
|
-
type InferParamsType<T> = T extends Record<string, any> ? {
|
|
664
|
-
[K in keyof T]: T[K] extends 'string' ? string : T[K] extends 'number' ? number : T[K] extends 'boolean' ? boolean : T[K] extends 'array' ? any[] : T[K] extends 'object' ? Record<string, any> : T[K] extends {
|
|
665
|
-
type: 'string';
|
|
666
|
-
} ? string : T[K] extends {
|
|
667
|
-
type: 'number';
|
|
668
|
-
} ? number : T[K] extends {
|
|
669
|
-
type: 'boolean';
|
|
670
|
-
} ? boolean : T[K] extends {
|
|
671
|
-
type: 'array';
|
|
672
|
-
} ? any[] : T[K] extends {
|
|
673
|
-
type: 'object';
|
|
674
|
-
} ? Record<string, any> : unknown;
|
|
675
|
-
} : unknown;
|
|
676
|
-
type ActionSchemaWithContext<TDatasources = unknown, TParams = unknown> = Pick<ActionSchema, 'name' | 'rest' | 'visibility' | 'service' | 'cache' | 'tracing' | 'bulkhead' | 'circuitBreaker' | 'retryPolicy' | 'fallback' | 'hooks'> & {
|
|
677
|
-
params?: TParams;
|
|
678
|
-
handler: (ctx: AppContext<TDatasources, InferParamsType<TParams>>) => Promise<unknown> | unknown;
|
|
679
|
-
permissions?: string | string[];
|
|
680
|
-
};
|
|
681
663
|
type ActionHandler<TDatasources = unknown> = (this: Service, ctx: AppContext<TDatasources>) => Promise<unknown> | unknown;
|
|
682
664
|
type ServiceActionsSchema<TDatasources = unknown, TSettings = unknown> = {
|
|
683
665
|
[key: string]: ({
|
|
@@ -705,11 +687,13 @@ type ServiceConfig<TSettings = unknown, TDatasourceConstructors extends Datasour
|
|
|
705
687
|
};
|
|
706
688
|
interface IntegrationServiceConfig<TSettings = unknown, TDatasourceConstructors extends DatasourceConstructorRegistry = DatasourceConstructorRegistry, TContext extends AppContext<DatasourceInstanceTypes<TDatasourceConstructors>> = AppContext<DatasourceInstanceTypes<TDatasourceConstructors>>> extends ServiceConfig<TSettings, TDatasourceConstructors> {
|
|
707
689
|
name: string;
|
|
690
|
+
version: string;
|
|
708
691
|
spec: BaseSpec;
|
|
709
692
|
normalize<TPayload = any>(webhook: WebhookEvent<TPayload>): Promise<Message[]>;
|
|
710
693
|
getChannelConfig(ctx: TContext, channelId: string): Promise<IntegrationConfig | null>;
|
|
711
694
|
validateWebhook?<TPayload = any>(webhook: WebhookEvent<TPayload>): boolean;
|
|
712
695
|
sendMessage(ctx: TContext, message: Message, config: IntegrationConfig): Promise<SendResult>;
|
|
696
|
+
createChannel<TChannel>(ctx: TContext, integration: TChannel): Promise<boolean>;
|
|
713
697
|
verifyWebhook?(params: {
|
|
714
698
|
mode: string;
|
|
715
699
|
token: string;
|
|
@@ -749,31 +733,36 @@ interface IntegrationServiceSchema<TSettings = unknown> extends ServiceSchema$1<
|
|
|
749
733
|
declare const NAMESPACE: string;
|
|
750
734
|
declare const CHANNELS: {
|
|
751
735
|
readonly WEBHOOK: {
|
|
752
|
-
readonly PATTERN:
|
|
753
|
-
readonly PREFIX:
|
|
736
|
+
readonly PATTERN: "webhook.*.*";
|
|
737
|
+
readonly PREFIX: "webhook";
|
|
754
738
|
readonly build: (tenantId: string, platform: string) => string;
|
|
755
739
|
};
|
|
756
740
|
readonly PROCESSING: {
|
|
757
|
-
readonly PATTERN:
|
|
758
|
-
readonly PREFIX:
|
|
741
|
+
readonly PATTERN: "processing.*.*";
|
|
742
|
+
readonly PREFIX: "processing";
|
|
759
743
|
readonly build: (tenantId: string, messageType: string) => string;
|
|
760
744
|
};
|
|
761
745
|
readonly RESPONSE: {
|
|
762
|
-
readonly PATTERN:
|
|
763
|
-
readonly PREFIX:
|
|
746
|
+
readonly PATTERN: "response.*.*";
|
|
747
|
+
readonly PREFIX: "response";
|
|
764
748
|
readonly build: (tenantId: string, platform: string) => string;
|
|
765
749
|
};
|
|
766
750
|
readonly SYSTEM: {
|
|
767
|
-
readonly ERRORS:
|
|
768
|
-
readonly METRICS:
|
|
769
|
-
readonly HEALTH:
|
|
770
|
-
|
|
771
|
-
|
|
751
|
+
readonly ERRORS: "system.errors";
|
|
752
|
+
readonly METRICS: "system.metrics";
|
|
753
|
+
readonly HEALTH: "system.health";
|
|
754
|
+
};
|
|
755
|
+
readonly INTEGRATION: {
|
|
756
|
+
readonly STARTED: "integration.started";
|
|
757
|
+
readonly STOPPED: "integration.stopped";
|
|
758
|
+
readonly REGISTERED: "integration.registered";
|
|
759
|
+
readonly UNREGISTERED: "integration.unregistered";
|
|
760
|
+
readonly UPDATED: "integration.updated";
|
|
772
761
|
};
|
|
773
762
|
readonly DLQ: {
|
|
774
|
-
readonly WEBHOOK_FAILED:
|
|
775
|
-
readonly SEND_FAILED:
|
|
776
|
-
readonly PROCESSING_FAILED:
|
|
763
|
+
readonly WEBHOOK_FAILED: "dlq.webhook.failed";
|
|
764
|
+
readonly SEND_FAILED: "dlq.send.failed";
|
|
765
|
+
readonly PROCESSING_FAILED: "dlq.processing.failed";
|
|
777
766
|
readonly buildSendFailed: (platform: string) => string;
|
|
778
767
|
};
|
|
779
768
|
};
|
|
@@ -781,9 +770,9 @@ declare const CHANNELS: {
|
|
|
781
770
|
* Integration-specific channel names
|
|
782
771
|
*/
|
|
783
772
|
declare const INTEGRATION_CHANNELS: {
|
|
784
|
-
readonly MESSAGE_RECEIVED:
|
|
785
|
-
readonly MESSAGE_SENT:
|
|
786
|
-
readonly MESSAGE_FAILED:
|
|
773
|
+
readonly MESSAGE_RECEIVED: "processing.message.received";
|
|
774
|
+
readonly MESSAGE_SENT: "processing.message.sent";
|
|
775
|
+
readonly MESSAGE_FAILED: "processing.message.failed";
|
|
787
776
|
};
|
|
788
777
|
type IntegrationChannelName = (typeof INTEGRATION_CHANNELS)[keyof typeof INTEGRATION_CHANNELS];
|
|
789
778
|
|
|
@@ -911,4 +900,4 @@ declare function DatasourceMixin(datasourceConstructors?: DatasourceConstructorR
|
|
|
911
900
|
|
|
912
901
|
declare function omit<T extends Record<string, unknown>, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
|
|
913
902
|
|
|
914
|
-
export { AbstractDatasource, type ActionHandler, type
|
|
903
|
+
export { AbstractDatasource, type ActionHandler, type ActionWithPermissions, type AppContext, type AppMeta, type AuditTrailExtension, type BaseDatasource, type BaseSpec, CHANNELS, type CarouselItem, type ChannelSendOptions, ContextHelpersMiddleware, CreateHealthCheckMiddleware, DEFAULT_DATASOURCE_CACHE_TTL, type DatasourceConstructorRegistry, type DatasourceContext, type DatasourceInstanceRegistry, type DatasourceInstanceTypes, DatasourceMixin, type Env, HEALTH_CHECK_DEFAULTS, INTEGRATION_CHANNELS, IntegrationCapability, type IntegrationChannelName, type IntegrationConfig, type IntegrationMessageFailedPayload, type IntegrationMessageReceivedPayload, type IntegrationMessageSentPayload, IntegrationPlatform, type IntegrationRegisteredPayload, type IntegrationServiceConfig, type IntegrationServiceSchema, IntegrationStatus, type IntegrationUnregisteredPayload, MemoizeMixin, type MemoizeMixinOptions, type Message, type MessageAttachment, type MessageButton, type MessageContent, MessageContentType, type MessageDirection, type MessageParticipant, type MessageStatus, type MessageType, NAMESPACE, PERMISSIONS, type Permission, type PermissionHelpers, PermissionsMiddleware, type PlatformMessage, type PrismaClientLike, type PrismaClientWithTenant, PrismaDatasource, PrismaPgDatasource, REDIS_URL, ROLE_PERMISSIONS, type SendResult, type SendToChannelMethod, type ServiceActionsSchema, type ServiceConfig, type ServiceSchema, type ServiceWithDatasources, type SoftDeleteExtension, type Tenant, type TenantExtension, type User, UserRole, type WebhookEvent, createDatasourceMiddleware, createTenantExtension, defineIntegration, defineService, isDev, isProd, isTest, configs as moleculer, nodeEnv, omit, retryExtension, softDeleteExtension };
|
package/dist/index.js
CHANGED
|
@@ -682,53 +682,57 @@ var CHANNELS = {
|
|
|
682
682
|
// Webhook processing channels
|
|
683
683
|
WEBHOOK: {
|
|
684
684
|
// Pattern: hios.webhook.{tenantId}.{platform}
|
|
685
|
-
PATTERN:
|
|
686
|
-
PREFIX:
|
|
687
|
-
build: (tenantId, platform) =>
|
|
685
|
+
PATTERN: "webhook.*.*",
|
|
686
|
+
PREFIX: "webhook",
|
|
687
|
+
build: (tenantId, platform) => `webhook.${tenantId}.${platform}`
|
|
688
688
|
},
|
|
689
689
|
// Message processing channels
|
|
690
690
|
PROCESSING: {
|
|
691
691
|
// Pattern: hios.processing.{tenantId}.{messageType}
|
|
692
|
-
PATTERN:
|
|
693
|
-
PREFIX:
|
|
694
|
-
build: (tenantId, messageType) =>
|
|
692
|
+
PATTERN: "processing.*.*",
|
|
693
|
+
PREFIX: "processing",
|
|
694
|
+
build: (tenantId, messageType) => `processing.${tenantId}.${messageType}`
|
|
695
695
|
},
|
|
696
696
|
// Response/outbound message channels
|
|
697
697
|
RESPONSE: {
|
|
698
698
|
// Pattern: hios.response.{tenantId}.{platform}
|
|
699
|
-
PATTERN:
|
|
700
|
-
PREFIX:
|
|
701
|
-
build: (tenantId, platform) =>
|
|
699
|
+
PATTERN: "response.*.*",
|
|
700
|
+
PREFIX: "response",
|
|
701
|
+
build: (tenantId, platform) => `response.${tenantId}.${platform}`
|
|
702
702
|
},
|
|
703
703
|
// System channels
|
|
704
704
|
SYSTEM: {
|
|
705
705
|
// Error handling
|
|
706
|
-
ERRORS:
|
|
706
|
+
ERRORS: "system.errors",
|
|
707
707
|
// Metrics and monitoring
|
|
708
|
-
METRICS:
|
|
708
|
+
METRICS: "system.metrics",
|
|
709
709
|
// Health checks
|
|
710
|
-
HEALTH:
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
710
|
+
HEALTH: "system.health"
|
|
711
|
+
},
|
|
712
|
+
INTEGRATION: {
|
|
713
|
+
STARTED: "integration.started",
|
|
714
|
+
STOPPED: "integration.stopped",
|
|
715
|
+
REGISTERED: "integration.registered",
|
|
716
|
+
UNREGISTERED: "integration.unregistered",
|
|
717
|
+
UPDATED: "integration.updated"
|
|
714
718
|
},
|
|
715
719
|
// Dead letter queues
|
|
716
720
|
DLQ: {
|
|
717
721
|
// Failed webhook processing
|
|
718
|
-
WEBHOOK_FAILED:
|
|
722
|
+
WEBHOOK_FAILED: "dlq.webhook.failed",
|
|
719
723
|
// Failed message sends
|
|
720
|
-
SEND_FAILED:
|
|
724
|
+
SEND_FAILED: "dlq.send.failed",
|
|
721
725
|
// Failed processing
|
|
722
|
-
PROCESSING_FAILED:
|
|
726
|
+
PROCESSING_FAILED: "dlq.processing.failed",
|
|
723
727
|
// Build DLQ name for specific integration
|
|
724
|
-
buildSendFailed: (platform) =>
|
|
728
|
+
buildSendFailed: (platform) => `dlq.send.${platform}.failed`
|
|
725
729
|
}
|
|
726
730
|
};
|
|
727
731
|
var INTEGRATION_CHANNELS = {
|
|
728
732
|
// Message events
|
|
729
|
-
MESSAGE_RECEIVED:
|
|
730
|
-
MESSAGE_SENT:
|
|
731
|
-
MESSAGE_FAILED:
|
|
733
|
+
MESSAGE_RECEIVED: "processing.message.received",
|
|
734
|
+
MESSAGE_SENT: "processing.message.sent",
|
|
735
|
+
MESSAGE_FAILED: "processing.message.failed"
|
|
732
736
|
};
|
|
733
737
|
var CHANNEL_CONFIG = {
|
|
734
738
|
// Default settings for message channels
|
|
@@ -758,15 +762,17 @@ var CHANNEL_CONFIG = {
|
|
|
758
762
|
};
|
|
759
763
|
var SUBJECTS = {
|
|
760
764
|
// All webhook subjects
|
|
761
|
-
WEBHOOK_ALL:
|
|
765
|
+
WEBHOOK_ALL: "webhook.>",
|
|
762
766
|
// All processing subjects
|
|
763
|
-
PROCESSING_ALL:
|
|
767
|
+
PROCESSING_ALL: "processing.>",
|
|
764
768
|
// All response subjects
|
|
765
|
-
RESPONSE_ALL:
|
|
769
|
+
RESPONSE_ALL: "response.>",
|
|
766
770
|
// All system subjects
|
|
767
|
-
SYSTEM_ALL:
|
|
771
|
+
SYSTEM_ALL: "system.>",
|
|
772
|
+
// All integrations subjects
|
|
773
|
+
INTEGRATION_ALL: "integration.>",
|
|
768
774
|
// All DLQ subjects
|
|
769
|
-
DLQ_ALL:
|
|
775
|
+
DLQ_ALL: "dlq.>"};
|
|
770
776
|
|
|
771
777
|
// src/service/define-integration.ts
|
|
772
778
|
var SecurityHelpers = {
|
|
@@ -1011,6 +1017,24 @@ function defineIntegration(config) {
|
|
|
1011
1017
|
}
|
|
1012
1018
|
return true;
|
|
1013
1019
|
}
|
|
1020
|
+
},
|
|
1021
|
+
i_createChannel: {
|
|
1022
|
+
params: {
|
|
1023
|
+
integration: "object"
|
|
1024
|
+
},
|
|
1025
|
+
async handler(ctx) {
|
|
1026
|
+
try {
|
|
1027
|
+
ctx.broker.logger.info(
|
|
1028
|
+
`Creating channel for integration ${config.name}`
|
|
1029
|
+
);
|
|
1030
|
+
await config.createChannel(ctx, ctx.params.integration);
|
|
1031
|
+
} catch (err) {
|
|
1032
|
+
ctx.broker.logger.error(
|
|
1033
|
+
`Failed to create channel for integration ${config.name}`,
|
|
1034
|
+
err
|
|
1035
|
+
);
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1014
1038
|
}
|
|
1015
1039
|
};
|
|
1016
1040
|
if (config.actions) {
|
|
@@ -1048,7 +1072,36 @@ function defineIntegration(config) {
|
|
|
1048
1072
|
},
|
|
1049
1073
|
created: config.created,
|
|
1050
1074
|
started: config.started,
|
|
1051
|
-
stopped: config.stopped
|
|
1075
|
+
stopped: config.stopped,
|
|
1076
|
+
mixins: [
|
|
1077
|
+
{
|
|
1078
|
+
started() {
|
|
1079
|
+
this.broker.logger.info("Integration service started");
|
|
1080
|
+
this.broker.emit(CHANNELS.INTEGRATION.STARTED, {
|
|
1081
|
+
name: config.name,
|
|
1082
|
+
version: config.version,
|
|
1083
|
+
spec: config.spec
|
|
1084
|
+
});
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
],
|
|
1088
|
+
channels: {
|
|
1089
|
+
[`${CHANNELS.INTEGRATION.REGISTERED}.${config.spec.id}`]: {
|
|
1090
|
+
context: true,
|
|
1091
|
+
handler(ctx, payload) {
|
|
1092
|
+
const integration = payload.json();
|
|
1093
|
+
payload.ackAck().then(() => {
|
|
1094
|
+
ctx.broker.logger.debug("Integration registered", {
|
|
1095
|
+
name: this.name,
|
|
1096
|
+
version: this.version
|
|
1097
|
+
});
|
|
1098
|
+
});
|
|
1099
|
+
ctx.broker.call(`v${this.version}.${this.name}.i_createChannel`, {
|
|
1100
|
+
integration
|
|
1101
|
+
});
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1052
1105
|
});
|
|
1053
1106
|
return {
|
|
1054
1107
|
...baseService,
|
|
@@ -1167,8 +1220,9 @@ var middleware = Middleware({
|
|
|
1167
1220
|
SUBJECTS.PROCESSING_ALL,
|
|
1168
1221
|
SUBJECTS.RESPONSE_ALL,
|
|
1169
1222
|
SUBJECTS.SYSTEM_ALL,
|
|
1170
|
-
SUBJECTS.DLQ_ALL
|
|
1171
|
-
|
|
1223
|
+
SUBJECTS.DLQ_ALL,
|
|
1224
|
+
SUBJECTS.INTEGRATION_ALL
|
|
1225
|
+
].map((subject) => `${NAMESPACE2.toLowerCase()}.${subject}`),
|
|
1172
1226
|
retention: "limits",
|
|
1173
1227
|
max_msgs: env4.int("NATS_MAX_MESSAGES", 1e5),
|
|
1174
1228
|
// 100K for dev, 10M+ for prod
|
|
@@ -1227,9 +1281,7 @@ var middleware = Middleware({
|
|
|
1227
1281
|
}
|
|
1228
1282
|
}
|
|
1229
1283
|
});
|
|
1230
|
-
var ChannelsMiddleware =
|
|
1231
|
-
...middleware
|
|
1232
|
-
};
|
|
1284
|
+
var ChannelsMiddleware = middleware;
|
|
1233
1285
|
|
|
1234
1286
|
// src/configs/moleculer/circuit-breaker.ts
|
|
1235
1287
|
var circuitBreakerConfig = {
|
|
@@ -1508,7 +1560,9 @@ function createTenantExtension() {
|
|
|
1508
1560
|
args.where ?? (args.where = {});
|
|
1509
1561
|
(_a = args.where).tenantId ?? (_a.tenantId = tenantContext.currentTenantId);
|
|
1510
1562
|
} else if (tenantContext.strictMode && !tenantContext.bypassMode && !tenantContext.currentTenantId) {
|
|
1511
|
-
throw new Error(
|
|
1563
|
+
throw new Error(
|
|
1564
|
+
"Tenant context required for this operation. Use $withSystemMode() for system-level operations."
|
|
1565
|
+
);
|
|
1512
1566
|
}
|
|
1513
1567
|
return query(args);
|
|
1514
1568
|
},
|
|
@@ -1518,7 +1572,9 @@ function createTenantExtension() {
|
|
|
1518
1572
|
args.where ?? (args.where = {});
|
|
1519
1573
|
(_a = args.where).tenantId ?? (_a.tenantId = tenantContext.currentTenantId);
|
|
1520
1574
|
} else if (tenantContext.strictMode && !tenantContext.bypassMode && !tenantContext.currentTenantId) {
|
|
1521
|
-
throw new Error(
|
|
1575
|
+
throw new Error(
|
|
1576
|
+
"Tenant context required for this operation. Use $withSystemMode() for system-level operations."
|
|
1577
|
+
);
|
|
1522
1578
|
}
|
|
1523
1579
|
return query(args);
|
|
1524
1580
|
},
|
|
@@ -1528,7 +1584,9 @@ function createTenantExtension() {
|
|
|
1528
1584
|
args.where ?? (args.where = {});
|
|
1529
1585
|
(_a = args.where).tenantId ?? (_a.tenantId = tenantContext.currentTenantId);
|
|
1530
1586
|
} else if (tenantContext.strictMode && !tenantContext.bypassMode && !tenantContext.currentTenantId) {
|
|
1531
|
-
throw new Error(
|
|
1587
|
+
throw new Error(
|
|
1588
|
+
"Tenant context required for this operation. Use $withSystemMode() for system-level operations."
|
|
1589
|
+
);
|
|
1532
1590
|
}
|
|
1533
1591
|
return query(args);
|
|
1534
1592
|
},
|
|
@@ -1539,7 +1597,9 @@ function createTenantExtension() {
|
|
|
1539
1597
|
args.data ?? (args.data = {});
|
|
1540
1598
|
(_a = args.data).tenantId ?? (_a.tenantId = tenantContext.currentTenantId);
|
|
1541
1599
|
} else if (tenantContext.strictMode && !tenantContext.bypassMode && !tenantContext.currentTenantId) {
|
|
1542
|
-
throw new Error(
|
|
1600
|
+
throw new Error(
|
|
1601
|
+
"Tenant context required for this operation. Use $withSystemMode() for system-level operations."
|
|
1602
|
+
);
|
|
1543
1603
|
}
|
|
1544
1604
|
return query(args);
|
|
1545
1605
|
},
|
|
@@ -1550,7 +1610,9 @@ function createTenantExtension() {
|
|
|
1550
1610
|
args.where ?? (args.where = {});
|
|
1551
1611
|
(_a = args.where).tenantId ?? (_a.tenantId = tenantContext.currentTenantId);
|
|
1552
1612
|
} else if (tenantContext.strictMode && !tenantContext.bypassMode && !tenantContext.currentTenantId) {
|
|
1553
|
-
throw new Error(
|
|
1613
|
+
throw new Error(
|
|
1614
|
+
"Tenant context required for this operation. Use $withSystemMode() for system-level operations."
|
|
1615
|
+
);
|
|
1554
1616
|
}
|
|
1555
1617
|
return query(args);
|
|
1556
1618
|
},
|
|
@@ -1561,7 +1623,9 @@ function createTenantExtension() {
|
|
|
1561
1623
|
args.where ?? (args.where = {});
|
|
1562
1624
|
(_a = args.where).tenantId ?? (_a.tenantId = tenantContext.currentTenantId);
|
|
1563
1625
|
} else if (tenantContext.strictMode && !tenantContext.bypassMode && !tenantContext.currentTenantId) {
|
|
1564
|
-
throw new Error(
|
|
1626
|
+
throw new Error(
|
|
1627
|
+
"Tenant context required for this operation. Use $withSystemMode() for system-level operations."
|
|
1628
|
+
);
|
|
1565
1629
|
}
|
|
1566
1630
|
return query(args);
|
|
1567
1631
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hiliosai/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.28",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
"@hiliosai/typescript": "workspace:*",
|
|
30
30
|
"@pkg/dev-utils": "workspace:*",
|
|
31
31
|
"@prisma/adapter-pg": "7.2.0",
|
|
32
|
-
"bun-types": "latest"
|
|
32
|
+
"bun-types": "latest",
|
|
33
|
+
"nats": "2.29.3"
|
|
33
34
|
},
|
|
34
35
|
"prettier": "@hiliosai/prettier"
|
|
35
36
|
}
|