@zintrust/core 0.4.86 → 0.4.87
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/package.json +1 -1
- package/src/boot/registry/runtime.d.ts.map +1 -1
- package/src/boot/registry/runtime.js +2 -1
- package/src/cli/commands/MigrateCommand.js +1 -1
- package/src/cli/utils/spawn.d.ts +1 -0
- package/src/cli/utils/spawn.d.ts.map +1 -1
- package/src/cli/utils/spawn.js +2 -1
- package/src/http/middleware/FileUploadMiddleware.d.ts.map +1 -1
- package/src/http/middleware/FileUploadMiddleware.js +5 -4
- package/src/index.js +3 -3
- package/src/microservices/MicroserviceBootstrap.d.ts.map +1 -1
- package/src/microservices/MicroserviceBootstrap.js +25 -30
- package/src/microservices/PostgresAdapter.d.ts +11 -5
- package/src/microservices/PostgresAdapter.d.ts.map +1 -1
- package/src/microservices/PostgresAdapter.js +12 -0
- package/src/runtime/PluginManager.d.ts.map +1 -1
- package/src/runtime/PluginManager.js +12 -22
- package/src/zintrust.comon.d.ts +11 -0
- package/src/zintrust.comon.d.ts.map +1 -0
- package/src/zintrust.comon.js +17 -0
- package/src/zintrust.plugins.d.ts +6 -3
- package/src/zintrust.plugins.d.ts.map +1 -1
- package/src/zintrust.plugins.js +6 -3
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/boot/registry/runtime.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AASvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AA2O9C,eAAO,MAAM,8BAA8B,GAAI,iBAAiB,gBAAgB,KAAG,IA6BlF,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/boot/registry/runtime.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AASvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AA2O9C,eAAO,MAAM,8BAA8B,GAAI,iBAAiB,gBAAgB,KAAG,IA6BlF,CAAC;AAsUF,eAAO,MAAM,eAAe,GAAI,QAAQ;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,gBAAgB,CAAC;IAClC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,KAAG;IAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAyF7D,CAAC"}
|
|
@@ -440,7 +440,8 @@ const initializeSystemTrace = async (router) => {
|
|
|
440
440
|
Logger.info(`System Trace dashboard auto-mounted at ${basePath}.`);
|
|
441
441
|
}
|
|
442
442
|
catch (error) {
|
|
443
|
-
Logger.
|
|
443
|
+
Logger.error('Failed to initialize System Trace runtime', error);
|
|
444
|
+
throw error;
|
|
444
445
|
}
|
|
445
446
|
};
|
|
446
447
|
const initializeSockets = (router) => {
|
|
@@ -215,7 +215,7 @@ const warnIfAdapterMissing = (cmd, conn) => {
|
|
|
215
215
|
if (conn.driver === 'mysql' && DatabaseAdapterRegistry.get('mysql') === undefined) {
|
|
216
216
|
cmd.warn('MySQL adapter is not installed/registered; migrations may not hit a real MySQL DB.');
|
|
217
217
|
cmd.warn('Install via `zin plugin install adapter:mysql` (or `zin add db:mysql`).');
|
|
218
|
-
cmd.debug('[debug] Expected a side-effect import in src/zintrust.plugins.ts like: import "
|
|
218
|
+
cmd.debug('[debug] Expected a side-effect import in src/zintrust.plugins.ts like: import "../../../packages/db-mysql/src/register";');
|
|
219
219
|
}
|
|
220
220
|
if (conn.driver === 'postgresql' && DatabaseAdapterRegistry.get('postgresql') === undefined) {
|
|
221
221
|
cmd.warn('PostgreSQL adapter is not installed/registered; migrations may not hit a real PostgreSQL DB.');
|
package/src/cli/utils/spawn.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/spawn.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../../src/cli/utils/spawn.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AA0CD,eAAO,MAAM,SAAS;wBACM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;EAiF7D,CAAC"}
|
package/src/cli/utils/spawn.js
CHANGED
|
@@ -42,11 +42,12 @@ const buildCommandNotFoundMessage = (command) => {
|
|
|
42
42
|
export const SpawnUtil = Object.freeze({
|
|
43
43
|
async spawnAndWait(input) {
|
|
44
44
|
const cwd = input.cwd ?? process.cwd();
|
|
45
|
-
const resolvedCommand = resolveLocalBin(input.command, cwd);
|
|
45
|
+
const resolvedCommand = input.shell === true ? input.command : resolveLocalBin(input.command, cwd);
|
|
46
46
|
const child = spawn(resolvedCommand, input.args, {
|
|
47
47
|
cwd,
|
|
48
48
|
env: input.env ?? appConfig.getSafeEnv(),
|
|
49
49
|
stdio: 'inherit',
|
|
50
|
+
shell: input.shell === true,
|
|
50
51
|
});
|
|
51
52
|
// In interactive shells, the foreground process group already receives SIGINT
|
|
52
53
|
// (and often SIGTERM) so forwarding can cause duplicates. `tsx watch` is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploadMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/http/middleware/FileUploadMiddleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"FileUploadMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/http/middleware/FileUploadMiddleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAW9D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,UA8DlC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { Env } from '../../config/env.js';
|
|
6
6
|
import { Logger } from '../../config/logger.js';
|
|
7
|
+
import { ErrorFactory } from '../../exceptions/ZintrustError.js';
|
|
7
8
|
import { MultipartParser } from '../parsers/MultipartParser.js';
|
|
8
9
|
import { MultipartParserRegistry } from '../parsers/MultipartParserRegistry.js';
|
|
9
10
|
/**
|
|
@@ -19,7 +20,7 @@ const getContentType = (req) => {
|
|
|
19
20
|
* File upload middleware
|
|
20
21
|
* Automatically parses multipart/form-data and makes files available
|
|
21
22
|
*/
|
|
22
|
-
export const fileUploadMiddleware = async (req,
|
|
23
|
+
export const fileUploadMiddleware = async (req, _res, next) => {
|
|
23
24
|
const contentType = getContentType(req);
|
|
24
25
|
// Only process multipart/form-data requests
|
|
25
26
|
if (!MultipartParser.isMultipart(contentType)) {
|
|
@@ -29,10 +30,10 @@ export const fileUploadMiddleware = async (req, res, next) => {
|
|
|
29
30
|
// Phase 4 default behavior: multipart requires external streaming parser.
|
|
30
31
|
const provider = MultipartParserRegistry.get();
|
|
31
32
|
if (provider === null) {
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
throw ErrorFactory.createConfigError('Multipart upload parser is not configured.', {
|
|
34
|
+
contentType,
|
|
35
|
+
hint: 'Install @zintrust/storage to enable multipart/form-data uploads.',
|
|
34
36
|
});
|
|
35
|
-
return;
|
|
36
37
|
}
|
|
37
38
|
try {
|
|
38
39
|
const maxFileSizeBytes = Env.getInt('MAX_FILE_SIZE', 50 * 1024 * 1024);
|
package/src/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @zintrust/core v0.4.
|
|
2
|
+
* @zintrust/core v0.4.87
|
|
3
3
|
*
|
|
4
4
|
* ZinTrust Framework - Production-Grade TypeScript Backend
|
|
5
5
|
* Built for performance, type safety, and exceptional developer experience
|
|
6
6
|
*
|
|
7
7
|
* Build Information:
|
|
8
|
-
* Built: 2026-04-
|
|
8
|
+
* Built: 2026-04-09T17:36:11.089Z
|
|
9
9
|
* Node: >=20.0.0
|
|
10
10
|
* License: MIT
|
|
11
11
|
*
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* Available at runtime for debugging and health checks
|
|
22
22
|
*/
|
|
23
23
|
export const ZINTRUST_VERSION = '0.1.41';
|
|
24
|
-
export const ZINTRUST_BUILD_DATE = '2026-04-
|
|
24
|
+
export const ZINTRUST_BUILD_DATE = '2026-04-09T17:36:11.024Z'; // Replaced during build
|
|
25
25
|
export { Application } from './boot/Application.js';
|
|
26
26
|
export { AwsSigV4 } from './common/index.js';
|
|
27
27
|
export { SignedRequest } from './security/SignedRequest.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MicroserviceBootstrap.d.ts","sourceRoot":"","sources":["../../../src/microservices/MicroserviceBootstrap.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;QACjC,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;QAChD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,IAAI,MAAM,CAAC;IACzB,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC7C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IAC1E,oBAAoB,IAAI,aAAa,EAAE,CAAC;IACxC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"MicroserviceBootstrap.d.ts","sourceRoot":"","sources":["../../../src/microservices/MicroserviceBootstrap.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACT,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;QACjC,UAAU,EAAE,OAAO,CAAC;KACrB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;QAChD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,OAAO,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,IAAI,MAAM,CAAC;IACzB,gBAAgB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC7C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IAC1E,oBAAoB,IAAI,aAAa,EAAE,CAAC;IACxC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AA+ED;;GAEG;AACH,eAAO,MAAM,qBAAqB;mBAEf,sBAAsB;aAC5B,IAAI;cACH,sBAAsB;CA8GjC,CAAC;AAuKJ;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CAGrD;AAED,eAAO,MAAM,mBAAmB;;;;;;CAM/B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { Env } from '../config/env.js';
|
|
|
2
2
|
import { Logger } from '../config/logger.js';
|
|
3
3
|
import { MicroserviceManager, getEnabledServices, isMicroservicesEnabled, } from './MicroserviceManager.js';
|
|
4
4
|
import { getServiceId, serviceMatchesAllowList, } from './ServiceManifest.js';
|
|
5
|
-
import fs from '../node-singletons/fs.js';
|
|
5
|
+
import fs, { fsPromises } from '../node-singletons/fs.js';
|
|
6
6
|
import * as path from '../node-singletons/path.js';
|
|
7
7
|
import { ProjectRuntime } from '../runtime/ProjectRuntime.js';
|
|
8
8
|
const projectCwd = process.cwd();
|
|
@@ -19,12 +19,12 @@ async function runDiscoverServices(state) {
|
|
|
19
19
|
Logger.info(`✅ Discovered ${manifestServices.length} microservices from static manifest`);
|
|
20
20
|
return manifestServices;
|
|
21
21
|
}
|
|
22
|
-
const domains = getDomains(state.servicesDir);
|
|
23
|
-
const services =
|
|
24
|
-
|
|
25
|
-
const domainServices = discoverServicesInDomain(state, domain,
|
|
26
|
-
|
|
27
|
-
}
|
|
22
|
+
const domains = await getDomains(state.servicesDir);
|
|
23
|
+
const services = await domains.reduce(async (pending, domain) => {
|
|
24
|
+
const discovered = await pending;
|
|
25
|
+
const domainServices = await discoverServicesInDomain(state, domain, discovered.length);
|
|
26
|
+
return [...discovered, ...domainServices];
|
|
27
|
+
}, Promise.resolve([]));
|
|
28
28
|
Logger.info(`✅ Discovered ${services.length} microservices`);
|
|
29
29
|
return services;
|
|
30
30
|
}
|
|
@@ -186,13 +186,11 @@ async function discoverServicesFromManifest(state) {
|
|
|
186
186
|
/**
|
|
187
187
|
* Get all domains in services directory
|
|
188
188
|
*/
|
|
189
|
-
function getDomains(servicesDir) {
|
|
189
|
+
async function getDomains(servicesDir) {
|
|
190
190
|
if (!fs.existsSync(servicesDir))
|
|
191
191
|
return [];
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
return fs.statSync(filePath).isDirectory();
|
|
195
|
-
});
|
|
192
|
+
const entries = await fsPromises.readdir(servicesDir, { withFileTypes: true });
|
|
193
|
+
return entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name);
|
|
196
194
|
}
|
|
197
195
|
/**
|
|
198
196
|
* Check if a service is enabled via environment
|
|
@@ -203,8 +201,8 @@ function isServiceEnabled(serviceName, enabledServices) {
|
|
|
203
201
|
/**
|
|
204
202
|
* Load service configuration from file
|
|
205
203
|
*/
|
|
206
|
-
function loadServiceConfig(domain, serviceName, configPath, index) {
|
|
207
|
-
const configData = JSON.parse(
|
|
204
|
+
async function loadServiceConfig(domain, serviceName, configPath, index) {
|
|
205
|
+
const configData = JSON.parse(await fsPromises.readFile(configPath, 'utf-8'));
|
|
208
206
|
return {
|
|
209
207
|
id: getServiceId(domain, serviceName),
|
|
210
208
|
name: serviceName,
|
|
@@ -255,33 +253,30 @@ function createServiceConfigFromManifest(entry, index) {
|
|
|
255
253
|
/**
|
|
256
254
|
* Try to load service configuration if it exists
|
|
257
255
|
*/
|
|
258
|
-
function tryLoadServiceConfig(state, domain, serviceName, domainPath, index) {
|
|
256
|
+
async function tryLoadServiceConfig(state, domain, serviceName, domainPath, index) {
|
|
259
257
|
const configPath = path.join(domainPath, serviceName, 'service.config.json');
|
|
260
258
|
if (!fs.existsSync(configPath))
|
|
261
259
|
return null;
|
|
262
|
-
const config = loadServiceConfig(domain, serviceName, configPath, index);
|
|
260
|
+
const config = await loadServiceConfig(domain, serviceName, configPath, index);
|
|
263
261
|
state.serviceConfigs.set(getServiceKey(domain, serviceName), config);
|
|
264
262
|
return config;
|
|
265
263
|
}
|
|
266
264
|
/**
|
|
267
265
|
* Discover all services within a specific domain
|
|
268
266
|
*/
|
|
269
|
-
function discoverServicesInDomain(state, domain, startIndex) {
|
|
267
|
+
async function discoverServicesInDomain(state, domain, startIndex) {
|
|
270
268
|
const domainPath = path.join(state.servicesDir, domain);
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
const services = [];
|
|
269
|
+
const entries = await fsPromises.readdir(domainPath, { withFileTypes: true });
|
|
270
|
+
const serviceNames = entries
|
|
271
|
+
.filter((entry) => entry.isDirectory() && entry.name !== 'shared')
|
|
272
|
+
.map((entry) => entry.name);
|
|
276
273
|
const enabledServices = getEnabledServices();
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
}
|
|
284
|
-
return services;
|
|
274
|
+
const eligibleServiceNames = serviceNames.filter((serviceName) => isServiceEnabled(serviceName, enabledServices));
|
|
275
|
+
// Pre-filter to services that actually have config files so that the index
|
|
276
|
+
// used for default port assignment (3001 + index) stays contiguous and stable.
|
|
277
|
+
const servicesWithConfig = eligibleServiceNames.filter((serviceName) => fs.existsSync(path.join(domainPath, serviceName, 'service.config.json')));
|
|
278
|
+
const services = await Promise.all(servicesWithConfig.map(async (serviceName, index) => tryLoadServiceConfig(state, domain, serviceName, domainPath, startIndex + index)));
|
|
279
|
+
return services.filter((config) => config !== null);
|
|
285
280
|
}
|
|
286
281
|
/**
|
|
287
282
|
* Handle discovery errors gracefully
|
|
@@ -59,6 +59,12 @@ export interface IPostgresAdapter {
|
|
|
59
59
|
}>): Promise<void>;
|
|
60
60
|
healthCheck(): Promise<boolean>;
|
|
61
61
|
}
|
|
62
|
+
export interface IPostgresAdapterManager {
|
|
63
|
+
getInstance(config: PostgresPoolConfig, key?: string): IPostgresAdapter;
|
|
64
|
+
getAllInstances(): IPostgresAdapter[];
|
|
65
|
+
releaseInstance(key: string): Promise<void>;
|
|
66
|
+
disconnectAll(): Promise<void>;
|
|
67
|
+
}
|
|
62
68
|
/**
|
|
63
69
|
* PostgreSQL Adapter with Connection Pooling
|
|
64
70
|
* Supports both shared (multi-service) and isolated (per-service) database modes
|
|
@@ -77,14 +83,14 @@ export declare function getInstance(config: PostgresPoolConfig, key?: string): I
|
|
|
77
83
|
* Get all instances
|
|
78
84
|
*/
|
|
79
85
|
export declare function getAllInstances(): IPostgresAdapter[];
|
|
86
|
+
/**
|
|
87
|
+
* Disconnect and release a single cached adapter instance.
|
|
88
|
+
*/
|
|
89
|
+
export declare function releaseInstance(key: string): Promise<void>;
|
|
80
90
|
/**
|
|
81
91
|
* Disconnect all instances
|
|
82
92
|
*/
|
|
83
93
|
export declare function disconnectAll(): Promise<void>;
|
|
84
|
-
export declare const PostgresAdapterManager:
|
|
85
|
-
getInstance: typeof getInstance;
|
|
86
|
-
getAllInstances: typeof getAllInstances;
|
|
87
|
-
disconnectAll: typeof disconnectAll;
|
|
88
|
-
}>;
|
|
94
|
+
export declare const PostgresAdapterManager: IPostgresAdapterManager;
|
|
89
95
|
export default PostgresAdapter;
|
|
90
96
|
//# sourceMappingURL=PostgresAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresAdapter.d.ts","sourceRoot":"","sources":["../../../src/microservices/PostgresAdapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PostgresAdapter.d.ts","sourceRoot":"","sources":["../../../src/microservices/PostgresAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -291,6 +291,17 @@ export function getInstance(config, key = 'default') {
|
|
|
291
291
|
export function getAllInstances() {
|
|
292
292
|
return Array.from(instances.values());
|
|
293
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* Disconnect and release a single cached adapter instance.
|
|
296
|
+
*/
|
|
297
|
+
export async function releaseInstance(key) {
|
|
298
|
+
const adapter = instances.get(key);
|
|
299
|
+
if (adapter === undefined) {
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
await adapter.disconnectAll();
|
|
303
|
+
instances.delete(key);
|
|
304
|
+
}
|
|
294
305
|
/**
|
|
295
306
|
* Disconnect all instances
|
|
296
307
|
*/
|
|
@@ -301,6 +312,7 @@ export async function disconnectAll() {
|
|
|
301
312
|
export const PostgresAdapterManager = Object.freeze({
|
|
302
313
|
getInstance,
|
|
303
314
|
getAllInstances,
|
|
315
|
+
releaseInstance,
|
|
304
316
|
disconnectAll,
|
|
305
317
|
});
|
|
306
318
|
export default PostgresAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../../src/runtime/PluginManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../../src/runtime/PluginManager.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAsRhE,eAAO,MAAM,aAAa;IACxB;;OAEG;YACK,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAIxC;;OAEG;yBACkB,MAAM,GAAG,MAAM,GAAG,IAAI;IAW3C;;OAEG;0BACyB,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0DrD;;OAEG;sBACqB,MAAM,YAAY;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrF;;;;OAIG;wBACuB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;EA2ChD,CAAC"}
|
|
@@ -8,7 +8,6 @@ import { readEnvString } from '../common/ExternalServiceUtils.js';
|
|
|
8
8
|
import { esmDirname, resolvePackageManager } from '../common/index.js';
|
|
9
9
|
import { Logger } from '../config/logger.js';
|
|
10
10
|
import { ErrorFactory } from '../exceptions/ZintrustError.js';
|
|
11
|
-
import { execSync } from '../node-singletons/child-process.js';
|
|
12
11
|
import { existsSync, fsPromises as fs } from '../node-singletons/fs.js';
|
|
13
12
|
import * as path from '../node-singletons/path.js';
|
|
14
13
|
import { PluginRegistry } from './PluginRegistry.js';
|
|
@@ -92,21 +91,6 @@ async function npmInstall(packages, options) {
|
|
|
92
91
|
Logger.info(`Installing ${options.label}: ${packages.join(', ')}...`);
|
|
93
92
|
const projectRoot = options.projectRoot ?? resolveProjectRoot();
|
|
94
93
|
const pm = options.packageManager ?? resolvePackageManager();
|
|
95
|
-
// Legacy behavior: npm uses execSync in this framework.
|
|
96
|
-
// This keeps behavior predictable for CI/test environments and matches existing unit tests.
|
|
97
|
-
if (pm === 'npm') {
|
|
98
|
-
const cmd = options.dev
|
|
99
|
-
? `npm install -D ${packages.join(' ')}`
|
|
100
|
-
: `npm install ${packages.join(' ')}`;
|
|
101
|
-
try {
|
|
102
|
-
execSync(cmd, { cwd: projectRoot, stdio: 'inherit' });
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
ErrorFactory.createCliError(`Failed to install ${options.label}`, { error });
|
|
107
|
-
throw error;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
94
|
let cmd;
|
|
111
95
|
let args = [];
|
|
112
96
|
switch (pm) {
|
|
@@ -217,7 +201,7 @@ async function ensurePluginAutoImports(plugin) {
|
|
|
217
201
|
const next = lines.join('\n') + '\n';
|
|
218
202
|
await fs.writeFile(pluginFile, next, 'utf-8');
|
|
219
203
|
}
|
|
220
|
-
function runPostInstall(plugin) {
|
|
204
|
+
async function runPostInstall(plugin) {
|
|
221
205
|
if (!plugin.postInstall)
|
|
222
206
|
return;
|
|
223
207
|
const projectRoot = resolveProjectRoot();
|
|
@@ -227,14 +211,20 @@ function runPostInstall(plugin) {
|
|
|
227
211
|
const allow = getAllowPostInstallEnv() === '1';
|
|
228
212
|
if (allow) {
|
|
229
213
|
Logger.info(`Running post-install command: ${plugin.postInstall.command}...`);
|
|
214
|
+
let exit;
|
|
230
215
|
try {
|
|
231
|
-
|
|
232
|
-
|
|
216
|
+
exit = await SpawnUtil.spawnAndWait({
|
|
217
|
+
command: plugin.postInstall.command,
|
|
218
|
+
args: [],
|
|
233
219
|
cwd: projectRoot,
|
|
220
|
+
shell: true,
|
|
234
221
|
});
|
|
235
222
|
}
|
|
236
223
|
catch (error) {
|
|
237
|
-
ErrorFactory.createCliError('Post-install command failed', { error });
|
|
224
|
+
throw ErrorFactory.createCliError('Post-install command failed', { error });
|
|
225
|
+
}
|
|
226
|
+
if (exit !== 0) {
|
|
227
|
+
throw ErrorFactory.createCliError('Post-install command failed', { exit });
|
|
238
228
|
}
|
|
239
229
|
}
|
|
240
230
|
else {
|
|
@@ -332,8 +322,8 @@ export const PluginManager = Object.freeze({
|
|
|
332
322
|
await copyPluginTemplates(plugin);
|
|
333
323
|
// 2b. Ensure plugin-side effects are imported by the project
|
|
334
324
|
await ensurePluginAutoImports(plugin);
|
|
335
|
-
// 3. Post-Install (
|
|
336
|
-
runPostInstall(plugin);
|
|
325
|
+
// 3. Post-Install (opt-in, async to avoid blocking the event loop)
|
|
326
|
+
await runPostInstall(plugin);
|
|
337
327
|
Logger.info(`✓ Plugin ${plugin.name} installed successfully`);
|
|
338
328
|
},
|
|
339
329
|
/**
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import '../packages/db-d1/src/register.js';
|
|
2
|
+
import '../packages/db-mysql/src/register.js';
|
|
3
|
+
import '../packages/db-postgres/src/register.js';
|
|
4
|
+
import '../packages/db-sqlite/src/register.js';
|
|
5
|
+
import '../packages/db-sqlserver/src/register.js';
|
|
6
|
+
import '../packages/mail-sendgrid/src/register.js';
|
|
7
|
+
import '../packages/mail-smtp/src/register.js';
|
|
8
|
+
import '@zintrust/queue-monitor';
|
|
9
|
+
import '../packages/queue-redis/src/register.js';
|
|
10
|
+
import '../packages/workers/src/register.js';
|
|
11
|
+
//# sourceMappingURL=zintrust.comon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zintrust.comon.d.ts","sourceRoot":"","sources":["../../src/zintrust.comon.ts"],"names":[],"mappings":"AAQA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,sCAAsC,CAAC;AAC9C,OAAO,yCAAyC,CAAC;AACjD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,0CAA0C,CAAC;AAClD,OAAO,2CAA2C,CAAC;AACnD,OAAO,uCAAuC,CAAC;AAC/C,OAAO,wCAAwC,CAAC;AAChD,OAAO,yCAAyC,CAAC;AACjD,OAAO,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* eslint-disable no-restricted-imports */
|
|
2
|
+
// /**
|
|
3
|
+
// * ZinTrust comon plugin auto-imports
|
|
4
|
+
// *
|
|
5
|
+
// * This file is managed by `zin plugin install` and contains side-effect
|
|
6
|
+
// * imports that register optional adapters/drivers into core registries.
|
|
7
|
+
// */
|
|
8
|
+
import '../packages/db-d1/src/register.js';
|
|
9
|
+
import '../packages/db-mysql/src/register.js';
|
|
10
|
+
import '../packages/db-postgres/src/register.js';
|
|
11
|
+
import '../packages/db-sqlite/src/register.js';
|
|
12
|
+
import '../packages/db-sqlserver/src/register.js';
|
|
13
|
+
import '../packages/mail-sendgrid/src/register.js';
|
|
14
|
+
import '../packages/mail-smtp/src/register.js';
|
|
15
|
+
import '@zintrust/queue-monitor';
|
|
16
|
+
import '../packages/queue-redis/src/register.js';
|
|
17
|
+
import '../packages/workers/src/register.js';
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* ZinTrust plugin auto-imports
|
|
3
|
+
*
|
|
4
|
+
* In real projects, this file is managed by `zin plugin install` and contains
|
|
5
|
+
* side-effect imports (e.g. `@zintrust/db-sqlite/register`) that register
|
|
6
|
+
* optional adapters/drivers into core registries.
|
|
7
|
+
*
|
|
5
8
|
*/
|
|
6
9
|
export type {};
|
|
7
10
|
export declare const __zintrustGeneratedPluginStub = "zintrust.plugins.ts";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zintrust.plugins.d.ts","sourceRoot":"","sources":["../../src/zintrust.plugins.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"zintrust.plugins.d.ts","sourceRoot":"","sources":["../../src/zintrust.plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,YAAY,EAAE,CAAC;AAgBf,eAAO,MAAM,6BAA6B,wBAAwB,CAAC;;AACnE,wBAAkB"}
|
package/src/zintrust.plugins.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* ZinTrust plugin auto-imports
|
|
3
|
+
*
|
|
4
|
+
* In real projects, this file is managed by `zin plugin install` and contains
|
|
5
|
+
* side-effect imports (e.g. `@zintrust/db-sqlite/register`) that register
|
|
6
|
+
* optional adapters/drivers into core registries.
|
|
7
|
+
*
|
|
5
8
|
*/
|
|
6
9
|
import * as TraceRuntime from './runtime/plugins/trace-runtime.js';
|
|
7
10
|
globalThis.__zintrust_system_trace_plugin_requested__ = true;
|