@gaias/basenode 1.0.71 → 1.0.72
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiGatewayLoader.d.ts","sourceRoot":"","sources":["../../../../src/libs/gateway/ApiGatewayLoader.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAyBxD,MAAM,WAAW,sBAAsB;CAGtC;
|
|
1
|
+
{"version":3,"file":"ApiGatewayLoader.d.ts","sourceRoot":"","sources":["../../../../src/libs/gateway/ApiGatewayLoader.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAyBxD,MAAM,WAAW,sBAAsB;CAGtC;AA8UD,eAAO,MAAM,gBAAgB,GAAI,SAAS,sBAAsB,MAC9D,YAAY,sBAAsB,KACjC,OAAO,CAAC,IAAI,CAuEd,CAAC"}
|
|
@@ -51,38 +51,56 @@ const getApiGatewayConfig = (enableAuth) => {
|
|
|
51
51
|
enableAuth,
|
|
52
52
|
};
|
|
53
53
|
};
|
|
54
|
-
const registerUpstream = async (host, port, config) => {
|
|
54
|
+
const registerUpstream = async (host, port, config, logger) => {
|
|
55
55
|
const uri = (0, apisix_1.upstreamUriTemplate)(config.appName);
|
|
56
56
|
const data = (0, apisix_1.upstreamTemplate)(config.appName, config.apiVersion, config.appPort);
|
|
57
|
-
|
|
57
|
+
logger.info(`📝 Upstream URI: ${uri}`);
|
|
58
|
+
logger.info(`📝 Upstream config: ${data}`);
|
|
59
|
+
const statusCode = await (0, apisix_1.httpPut)({
|
|
58
60
|
hostname: host,
|
|
59
61
|
port,
|
|
60
62
|
path: uri,
|
|
61
63
|
data,
|
|
62
64
|
xApiKey: config.apiKey,
|
|
63
65
|
});
|
|
66
|
+
if (statusCode < 200 || statusCode >= 300) {
|
|
67
|
+
throw new Error(`Failed to register upstream: HTTP ${statusCode}`);
|
|
68
|
+
}
|
|
69
|
+
logger.info(`✅ Upstream registered successfully (HTTP ${statusCode})`);
|
|
64
70
|
};
|
|
65
|
-
const registerService = async (host, port, config) => {
|
|
71
|
+
const registerService = async (host, port, config, logger) => {
|
|
66
72
|
const uri = (0, apisix_1.serviceUriTemplate)(config.appName);
|
|
67
73
|
const data = (0, apisix_1.serviceTemplate)(config.appName, config.enableAuth);
|
|
68
|
-
|
|
74
|
+
logger.info(`📝 Service URI: ${uri}`);
|
|
75
|
+
logger.info(`📝 Service config: ${data}`);
|
|
76
|
+
const statusCode = await (0, apisix_1.httpPut)({
|
|
69
77
|
hostname: host,
|
|
70
78
|
port,
|
|
71
79
|
path: uri,
|
|
72
80
|
data,
|
|
73
81
|
xApiKey: config.apiKey,
|
|
74
82
|
});
|
|
83
|
+
if (statusCode < 200 || statusCode >= 300) {
|
|
84
|
+
throw new Error(`Failed to register service: HTTP ${statusCode}`);
|
|
85
|
+
}
|
|
86
|
+
logger.info(`✅ Service registered successfully (HTTP ${statusCode})`);
|
|
75
87
|
};
|
|
76
|
-
const registerRoute = async (host, port, config) => {
|
|
88
|
+
const registerRoute = async (host, port, config, logger) => {
|
|
77
89
|
const uri = (0, apisix_1.routeUriTemplate)(config.appName);
|
|
78
90
|
const data = (0, apisix_1.routeTemplate)(config.appName, config.domains, config.apiVersion, config.build, config.version);
|
|
79
|
-
|
|
91
|
+
logger.info(`📝 Route URI: ${uri}`);
|
|
92
|
+
logger.info(`📝 Route config: ${data}`);
|
|
93
|
+
const statusCode = await (0, apisix_1.httpPut)({
|
|
80
94
|
hostname: host,
|
|
81
95
|
port,
|
|
82
96
|
path: uri,
|
|
83
97
|
data,
|
|
84
98
|
xApiKey: config.apiKey,
|
|
85
99
|
});
|
|
100
|
+
if (statusCode < 200 || statusCode >= 300) {
|
|
101
|
+
throw new Error(`Failed to register route: HTTP ${statusCode}`);
|
|
102
|
+
}
|
|
103
|
+
logger.info(`✅ Route registered successfully (HTTP ${statusCode})`);
|
|
86
104
|
};
|
|
87
105
|
const apiGatewayLoader = (_option) => async (_settings) => {
|
|
88
106
|
const logger = logger_1.Logger.getLogger('ApiGatewayLoader');
|
|
@@ -110,13 +128,15 @@ const apiGatewayLoader = (_option) => async (_settings) => {
|
|
|
110
128
|
logger.info(`📝 Domains: ${config.domains.join(', ')}`);
|
|
111
129
|
logger.info(`📝 Auth Enabled: ${config.enableAuth}`);
|
|
112
130
|
logger.info('1️⃣ Registering upstream service...');
|
|
113
|
-
|
|
131
|
+
logger.info(`📝 APISIX host: ${host}`);
|
|
132
|
+
logger.info(`📝 APISIX port: ${port}`);
|
|
133
|
+
await registerUpstream(host, port, config, logger);
|
|
114
134
|
await sleep(DEFAULT_CONFIG.REGISTRATION_DELAY);
|
|
115
135
|
logger.info('2️⃣ Registering service...');
|
|
116
|
-
await registerService(host, port, config);
|
|
136
|
+
await registerService(host, port, config, logger);
|
|
117
137
|
await sleep(DEFAULT_CONFIG.REGISTRATION_DELAY);
|
|
118
138
|
logger.info('3️⃣ Registering route...');
|
|
119
|
-
await registerRoute(host, port, config);
|
|
139
|
+
await registerRoute(host, port, config, logger);
|
|
120
140
|
logger.info('✅ API Gateway registration completed successfully');
|
|
121
141
|
logger.info(`🔗 Service registered at: /api/v${config.apiVersion}/${config.appName}/*`);
|
|
122
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiGatewayLoader.js","sourceRoot":"","sources":["../../../../src/libs/gateway/ApiGatewayLoader.ts"],"names":[],"mappings":";;;;;;AAeA,oDAAuB;AAEvB,sCAQmB;AACnB,4CAAgE;AAChE,sCAAmC;AAuBnC,MAAM,UAAU,GAAG;IAEjB,kBAAkB,EAAE,oBAAoB;IAExC,uBAAuB,EAAE,yBAAyB;IAElD,qBAAqB,EAAE,uBAAuB;IAE9C,OAAO,EAAE,SAAS;CACV,CAAC;AAMX,MAAM,cAAc,GAAG;IAErB,YAAY,EAAE,EAAE;IAEhB,kBAAkB,EAAE,IAAI;CAChB,CAAC;AAkBX,MAAM,KAAK,GAAG,CAAC,EAAU,EAAiB,EAAE;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AASF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAW,EAAE;IAC7C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;AAClE,CAAC,CAAC;AAaF,MAAM,YAAY,GAAG,CAAC,aAAqB,EAAY,EAAE;IACvD,OAAO,aAAa;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,gBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,gBAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AASF,MAAM,aAAa,GAAG,CAAC,cAAsB,EAAoB,EAAE;IACjE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,gBAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtB,CAAC,CAAC;AAoCF,MAAM,mBAAmB,GAAG,CAAC,UAAmB,EAAoB,EAAE;IAGpE,MAAM,SAAS,GAAG,yBAAa,CAAC,SAAS,CAAoB,aAAa,CAAC,CAAC;IAI5E,MAAM,EAAE,MAAM,EAAE,GAAG,yBAAa,CAAC,SAAS,CAAqB,QAAQ,CAAC,CAAC;IAIzE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAE5C,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,OAAO,EAAE,SAAS,CAAC,IAAI;QACvB,UAAU,EAAE,SAAS,CAAC,OAAO;QAC7B,KAAK,EAAE,yBAAa,CAAC,cAAc,EAAE;QACrC,OAAO,EAAE,yBAAa,CAAC,aAAa,EAAE;QACtC,OAAO;QACP,MAAM;QACN,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ApiGatewayLoader.js","sourceRoot":"","sources":["../../../../src/libs/gateway/ApiGatewayLoader.ts"],"names":[],"mappings":"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"}
|