@simplens/onboard 1.0.0 ā 1.0.1
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/env-config.d.ts +1 -1
- package/dist/env-config.d.ts.map +1 -1
- package/dist/env-config.js +6 -14
- package/dist/env-config.js.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/infra.d.ts +1 -9
- package/dist/infra.d.ts.map +1 -1
- package/dist/infra.js +6 -56
- package/dist/infra.js.map +1 -1
- package/dist/templates.d.ts +1 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +3 -10
- package/dist/templates.js.map +1 -1
- package/package.json +1 -1
- package/src/env-config.ts +6 -15
- package/src/index.ts +2 -3
- package/src/infra.ts +8 -63
- package/src/templates.ts +3 -10
- package/vitest.config.ts +2 -0
package/dist/env-config.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export declare function loadEnvExample(): Promise<EnvVariable[]>;
|
|
|
21
21
|
* // Prompts only for critical variables
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
export declare function promptEnvVariables(mode: 'default' | 'interactive', infraServices: string[]
|
|
24
|
+
export declare function promptEnvVariables(mode: 'default' | 'interactive', infraServices: string[]): Promise<Map<string, string>>;
|
|
25
25
|
/**
|
|
26
26
|
* Generate .env file from variables
|
|
27
27
|
*/
|
package/dist/env-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-config.d.ts","sourceRoot":"","sources":["../src/env-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"env-config.d.ts","sourceRoot":"","sources":["../src/env-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CA+F7D;AA0CD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,kBAAkB,CACpC,IAAI,EAAE,SAAS,GAAG,aAAa,EAC/B,aAAa,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAmF9B;AAkBD;;GAEG;AACH,wBAAsB,eAAe,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACjC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
package/dist/env-config.js
CHANGED
|
@@ -8,14 +8,6 @@ import { CRITICAL_ENV_KEYS } from './config/constants.js';
|
|
|
8
8
|
export async function loadEnvExample() {
|
|
9
9
|
// Embedded .env template - always available regardless of installation
|
|
10
10
|
const envTemplate = `
|
|
11
|
-
# ============================================
|
|
12
|
-
# INFRASTRUCTURE HOST CONFIGURATION
|
|
13
|
-
# ============================================
|
|
14
|
-
INFRA_HOST=host.docker.internal
|
|
15
|
-
|
|
16
|
-
# ============================================
|
|
17
|
-
# CONNECTION URLS
|
|
18
|
-
# ============================================
|
|
19
11
|
NODE_ENV=production
|
|
20
12
|
# ============================================
|
|
21
13
|
# API SERVER
|
|
@@ -160,23 +152,23 @@ function parseEnvContent(content) {
|
|
|
160
152
|
* // Prompts only for critical variables
|
|
161
153
|
* ```
|
|
162
154
|
*/
|
|
163
|
-
export async function promptEnvVariables(mode, infraServices
|
|
155
|
+
export async function promptEnvVariables(mode, infraServices) {
|
|
164
156
|
logInfo('Configuring environment variables...');
|
|
165
157
|
const envVars = await loadEnvExample();
|
|
166
158
|
const result = new Map();
|
|
167
|
-
// Auto-fill infra connection URLs based on selected services
|
|
159
|
+
// Auto-fill infra connection URLs based on selected services using Docker service names
|
|
168
160
|
const autoInfraUrls = {
|
|
169
161
|
MONGO_URI: infraServices.includes('mongo')
|
|
170
|
-
?
|
|
162
|
+
? `mongodb://mongo:27017/simplens?replicaSet=rs0`
|
|
171
163
|
: '',
|
|
172
164
|
BROKERS: infraServices.includes('kafka')
|
|
173
|
-
?
|
|
165
|
+
? 'kafka:9093'
|
|
174
166
|
: '',
|
|
175
167
|
REDIS_URL: infraServices.includes('redis')
|
|
176
|
-
?
|
|
168
|
+
? 'redis://redis:6379'
|
|
177
169
|
: '',
|
|
178
170
|
LOKI_URL: infraServices.includes('loki')
|
|
179
|
-
?
|
|
171
|
+
? 'http://loki:3100'
|
|
180
172
|
: '',
|
|
181
173
|
};
|
|
182
174
|
if (mode === 'default') {
|
package/dist/env-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-config.js","sourceRoot":"","sources":["../src/env-config.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAY,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAC9F,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAc,MAAM,uBAAuB,CAAC;AAGtE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAChC,uEAAuE;IACvE,MAAM,WAAW,GAAG
|
|
1
|
+
{"version":3,"file":"env-config.js","sourceRoot":"","sources":["../src/env-config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -81,11 +81,10 @@ async function main() {
|
|
|
81
81
|
await validatePrerequisites();
|
|
82
82
|
// Step 2: Infrastructure setup (if --infra flag is provided)
|
|
83
83
|
let selectedInfraServices = [];
|
|
84
|
-
let infraHost = 'host.docker.internal';
|
|
85
84
|
if (setupOptions.infra) {
|
|
86
85
|
logInfo('\nšļø Infrastructure Setup\n');
|
|
87
86
|
selectedInfraServices = await promptInfraServices();
|
|
88
|
-
|
|
87
|
+
await generateInfraCompose(targetDir, selectedInfraServices);
|
|
89
88
|
}
|
|
90
89
|
else {
|
|
91
90
|
logInfo('\nāļø Skipping infrastructure setup (use --infra to enable)');
|
|
@@ -96,7 +95,7 @@ async function main() {
|
|
|
96
95
|
// Step 3: Environment configuration
|
|
97
96
|
logInfo('\nāļø Environment Configuration\n');
|
|
98
97
|
const envMode = setupOptions.envMode;
|
|
99
|
-
const envVars = await promptEnvVariables(envMode, selectedInfraServices
|
|
98
|
+
const envVars = await promptEnvVariables(envMode, selectedInfraServices);
|
|
100
99
|
await generateEnvFile(targetDir, envVars);
|
|
101
100
|
// Step 4: Plugin installation
|
|
102
101
|
logInfo('\nš Plugin Installation\n');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/infra.d.ts
CHANGED
|
@@ -12,18 +12,10 @@
|
|
|
12
12
|
* ```
|
|
13
13
|
*/
|
|
14
14
|
export declare function promptInfraServices(): Promise<string[]>;
|
|
15
|
-
/**
|
|
16
|
-
* Get infrastructure host based on OS
|
|
17
|
-
*/
|
|
18
|
-
export declare function getInfraHost(): string;
|
|
19
|
-
/**
|
|
20
|
-
* Replace INFRA_HOST placeholder in template
|
|
21
|
-
*/
|
|
22
|
-
export declare function replaceInfraHost(template: string, infraHost: string): string;
|
|
23
15
|
/**
|
|
24
16
|
* Generate and write docker-compose.infra.yaml
|
|
25
17
|
*/
|
|
26
|
-
export declare function generateInfraCompose(targetDir: string, selectedServices: string[]): Promise<
|
|
18
|
+
export declare function generateInfraCompose(targetDir: string, selectedServices: string[]): Promise<void>;
|
|
27
19
|
/**
|
|
28
20
|
* Write app docker-compose.yaml
|
|
29
21
|
*/
|
package/dist/infra.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAiB7D;
|
|
1
|
+
{"version":3,"file":"infra.d.ts","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAiB7D;AA6KD;;GAEG;AACH,wBAAsB,oBAAoB,CACtC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EAAE,GAC3B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE"}
|
package/dist/infra.js
CHANGED
|
@@ -40,41 +40,6 @@ export async function promptInfraServices() {
|
|
|
40
40
|
]);
|
|
41
41
|
return answer.services;
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Get infrastructure host based on OS
|
|
45
|
-
*/
|
|
46
|
-
export function getInfraHost() {
|
|
47
|
-
// const os = detectOS();
|
|
48
|
-
// if (os === 'linux') {
|
|
49
|
-
// logWarning('Linux detected: host.docker.internal does not work by default.');
|
|
50
|
-
// const answer = await inquirer.prompt<{ hostChoice: string; customHost?: string }>([
|
|
51
|
-
// {
|
|
52
|
-
// type: 'list',
|
|
53
|
-
// name: 'hostChoice',
|
|
54
|
-
// message: 'Select host configuration:',
|
|
55
|
-
// choices: [
|
|
56
|
-
// { name: 'Use Docker bridge IP (172.17.0.1)', value: '172.17.0.1' },
|
|
57
|
-
// { name: 'Enter custom IP/hostname', value: 'custom' },
|
|
58
|
-
// ],
|
|
59
|
-
// },
|
|
60
|
-
// {
|
|
61
|
-
// type: 'input',
|
|
62
|
-
// name: 'customHost',
|
|
63
|
-
// message: 'Enter your machine IP or hostname:',
|
|
64
|
-
// when: (answers) => answers.hostChoice === 'custom',
|
|
65
|
-
// validate: (input: string) => {
|
|
66
|
-
// if (!input || input.trim().length === 0) {
|
|
67
|
-
// return 'Please enter a valid IP or hostname';
|
|
68
|
-
// }
|
|
69
|
-
// return true;
|
|
70
|
-
// },
|
|
71
|
-
// },
|
|
72
|
-
// ]);
|
|
73
|
-
// return answer.hostChoice === 'custom' ? answer.customHost! : answer.hostChoice;
|
|
74
|
-
// }
|
|
75
|
-
// For Windows, linux and macOS, use host.docker.internal
|
|
76
|
-
return 'host.docker.internal';
|
|
77
|
-
}
|
|
78
43
|
/**
|
|
79
44
|
* Service chunk definitions - each service as a complete block
|
|
80
45
|
*/
|
|
@@ -85,10 +50,8 @@ const SERVICE_CHUNKS = {
|
|
|
85
50
|
command: [ "--replSet", "rs0", "--bind_ip_all", "--port", "27017" ]
|
|
86
51
|
ports:
|
|
87
52
|
- 27017:27017
|
|
88
|
-
extra_hosts:
|
|
89
|
-
- "host.docker.internal:host-gateway"
|
|
90
53
|
healthcheck:
|
|
91
|
-
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'
|
|
54
|
+
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongo:27017'}]}) }" | mongosh --port 27017 --quiet
|
|
92
55
|
interval: 5s
|
|
93
56
|
timeout: 30s
|
|
94
57
|
start_period: 0s
|
|
@@ -105,7 +68,7 @@ const SERVICE_CHUNKS = {
|
|
|
105
68
|
environment:
|
|
106
69
|
# Configure listeners for both docker and host communication
|
|
107
70
|
KAFKA_LISTENERS: CONTROLLER://localhost:9091,HOST://0.0.0.0:9092,DOCKER://0.0.0.0:9093
|
|
108
|
-
KAFKA_ADVERTISED_LISTENERS: HOST://
|
|
71
|
+
KAFKA_ADVERTISED_LISTENERS: HOST://kafka:9092,DOCKER://kafka:9093
|
|
109
72
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,DOCKER:PLAINTEXT,HOST:PLAINTEXT
|
|
110
73
|
|
|
111
74
|
# Settings required for KRaft mode
|
|
@@ -194,9 +157,9 @@ const SERVICE_VOLUMES = {
|
|
|
194
157
|
function buildInfraCompose(selectedServices) {
|
|
195
158
|
// Header
|
|
196
159
|
const header = `# ============================================
|
|
197
|
-
#
|
|
198
|
-
#
|
|
199
|
-
#
|
|
160
|
+
# SimpleNS Infrastructure Services
|
|
161
|
+
# All services use Docker service names for container-to-container communication.
|
|
162
|
+
# This ensures cross-platform compatibility (Windows, Linux, macOS).
|
|
200
163
|
# ============================================
|
|
201
164
|
|
|
202
165
|
services:
|
|
@@ -231,30 +194,17 @@ services:
|
|
|
231
194
|
networkLines.join('\n'),
|
|
232
195
|
].join('\n');
|
|
233
196
|
}
|
|
234
|
-
/**
|
|
235
|
-
* Replace INFRA_HOST placeholder in template
|
|
236
|
-
*/
|
|
237
|
-
export function replaceInfraHost(template, infraHost) {
|
|
238
|
-
return template.replace(/\{\{INFRA_HOST\}\}/g, infraHost);
|
|
239
|
-
}
|
|
240
197
|
/**
|
|
241
198
|
* Generate and write docker-compose.infra.yaml
|
|
242
199
|
*/
|
|
243
200
|
export async function generateInfraCompose(targetDir, selectedServices) {
|
|
244
201
|
logInfo('Generating docker-compose.infra.yaml...');
|
|
245
|
-
// Get infrastructure host
|
|
246
|
-
const infraHost = getInfraHost();
|
|
247
|
-
logSuccess(`Using infrastructure host: ${infraHost}`);
|
|
248
202
|
// Build compose content from service chunks
|
|
249
|
-
|
|
250
|
-
// Replace host placeholder
|
|
251
|
-
infraContent = replaceInfraHost(infraContent, infraHost);
|
|
203
|
+
const infraContent = buildInfraCompose(selectedServices);
|
|
252
204
|
// Write infrastructure compose file
|
|
253
205
|
const infraPath = path.join(targetDir, 'docker-compose.infra.yaml');
|
|
254
206
|
await writeFile(infraPath, infraContent);
|
|
255
207
|
logSuccess('Generated docker-compose.infra.yaml');
|
|
256
|
-
// Return infraHost for env configuration
|
|
257
|
-
return infraHost;
|
|
258
208
|
}
|
|
259
209
|
/**
|
|
260
210
|
* Write app docker-compose.yaml
|
package/dist/infra.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,OAAO,EAA0B,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AACxE,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,cAAc,GAAmB;IACnC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAC7D,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAChE,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE;IAClE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IACxD,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE;IACjE,EAAE,IAAI,EAAE,mCAAmC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;CAClF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACrC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAyB;QACzD;YACI,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,wCAAwC;YACjD,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,CAAC,KAAe,EAAE,EAAE;gBAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrB,OAAO,oCAAoC,CAAC;gBAChD,CAAC;gBACD,OAAO,IAAI,CAAC;YAChB,CAAC;SACJ;KACJ,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,QAAQ,CAAC;AAC3B,CAAC;
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../src/infra.ts"],"names":[],"mappings":"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"}
|
package/dist/templates.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const INFRA_COMPOSE_TEMPLATE = "
|
|
1
|
+
export declare const INFRA_COMPOSE_TEMPLATE = "\nservices:\n # ============================================\n # Infrastructure Services\n # ============================================\n mongo:\n image: mongo:7.0\n container_name: mongo\n command: [ \"--replSet\", \"rs0\", \"--bind_ip_all\", \"--port\", \"27017\" ]\n ports:\n - 27017:27017\n healthcheck:\n test: echo \"try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongo:27017'}]}) }\" | mongosh --port 27017 --quiet\n interval: 5s\n timeout: 30s\n start_period: 0s\n start_interval: 1s\n retries: 30\n volumes:\n - \"mongo_data:/data/db\"\n - \"mongo_config:/data/configdb\"\n\n kafka:\n image: apache/kafka-native\n container_name: kafka\n ports:\n - \"9092:9092\"\n environment:\n # Configure listeners for both docker and host communication\n KAFKA_LISTENERS: CONTROLLER://localhost:9091,HOST://0.0.0.0:9092,DOCKER://0.0.0.0:9093\n KAFKA_ADVERTISED_LISTENERS: HOST://kafka:9092,DOCKER://kafka:9093\n KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,DOCKER:PLAINTEXT,HOST:PLAINTEXT\n\n # Settings required for KRaft mode\n KAFKA_NODE_ID: 1\n KAFKA_PROCESS_ROLES: broker,controller\n KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER\n KAFKA_CONTROLLER_QUORUM_VOTERS: 1@localhost:9091\n\n # Listener to use for broker-to-broker communication\n KAFKA_INTER_BROKER_LISTENER_NAME: DOCKER\n\n # Required for a single node cluster\n KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1\n\n # Disable auto-topic creation - API server will create topics with correct partitions\n KAFKA_AUTO_CREATE_TOPICS_ENABLE: \"false\"\n volumes:\n - \"kafka_data:/var/lib/kafka/data\"\n\n kafka-ui:\n image: kafbat/kafka-ui:main\n container_name: kafka-ui\n ports:\n - 8080:8080\n environment:\n DYNAMIC_CONFIG_ENABLED: \"true\"\n KAFKA_CLUSTERS_0_NAME: local\n KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9093\n depends_on:\n - kafka\n\n redis:\n image: redis:7-alpine\n container_name: redis\n ports:\n - \"6379:6379\"\n command: redis-server --appendonly yes\n volumes:\n - \"redis_data:/data\"\n healthcheck:\n test: [ \"CMD\", \"redis-cli\", \"ping\" ]\n interval: 5s\n timeout: 3s\n retries: 5\n\n # ============================================\n # Observability Services\n # ============================================\n\n loki:\n image: grafana/loki:2.9.0\n container_name: loki\n ports:\n - \"3100:3100\"\n command: -config.file=/etc/loki/local-config.yaml\n volumes:\n - \"loki_data:/loki\"\n healthcheck:\n test: [ \"CMD-SHELL\", \"wget --no-verbose --tries=1 --spider http://localhost:3100/ready || exit 1\" ]\n interval: 10s\n timeout: 5s\n retries: 5\n\n grafana:\n image: grafana/grafana:10.2.0\n container_name: grafana\n ports:\n - \"3001:3000\"\n environment:\n - GF_PATHS_PROVISIONING=/etc/grafana/provisioning\n - GF_AUTH_ANONYMOUS_ENABLED=true\n - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin\n - GF_SECURITY_ADMIN_PASSWORD=admin\n volumes:\n - \"grafana_data:/var/lib/grafana\"\n depends_on:\n loki:\n condition: service_healthy\n\nvolumes:\n mongo_data:\n mongo_config:\n kafka_data:\n redis_data:\n loki_data:\n grafana_data:\n";
|
|
2
2
|
export declare const APP_COMPOSE_TEMPLATE = "services:\n api:\n image: ghcr.io/simplenotificationsystem/simplens-core:latest\n container_name: api\n ports:\n - 3000:3000\n env_file:\n - .env\n volumes:\n - plugin-data:/app/.plugins\n - ./simplens.config.yaml:/app/simplens.config.yaml:ro\n command: [ \"node\", \"dist/api/server.js\" ]\n restart: unless-stopped\n healthcheck:\n test: [ \"CMD\", \"node\", \"-e\", \"require('http').get('http://localhost:3000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))\" ]\n interval: 30s\n timeout: 10s\n retries: 3\n start_period: 10s\n\n worker:\n image: ghcr.io/simplenotificationsystem/simplens-core:latest\n env_file:\n - .env\n command: [ \"node\", \"dist/workers/worker.js\" ]\n restart: unless-stopped\n\n notification_processor:\n image: ghcr.io/simplenotificationsystem/simplens-core:latest\n env_file:\n - .env\n volumes:\n - plugin-data:/app/.plugins\n - ./simplens.config.yaml:/app/simplens.config.yaml:ro\n command: [ \"node\", \"dist/processors/unified/unified.processor.js\" ]\n depends_on:\n api:\n condition: service_healthy\n restart: unless-stopped\n\n delayed_processor:\n image: ghcr.io/simplenotificationsystem/simplens-core:latest\n env_file:\n - .env\n command: [ \"node\", \"dist/processors/delayed/delayed.processor.js\" ]\n restart: unless-stopped\n\n recovery:\n image: ghcr.io/simplenotificationsystem/simplens-core:latest\n env_file:\n - .env\n command: [ \"node\", \"dist/workers/recovery/recovery.service.js\" ]\n restart: unless-stopped\n\n dashboard:\n image: ghcr.io/simplenotificationsystem/simplens-dashboard:latest\n ports:\n - 3002:3002\n container_name: dashboard\n env_file:\n - .env\n environment:\n PORT: ${DASHBOARD_PORT:-3002}\n API_BASE_URL: http://api:${PORT:-3000}\n WEBHOOK_HOST: dashboard\n WEBHOOK_PORT: ${DASHBOARD_PORT:-3002}\n restart: unless-stopped\n\nvolumes:\n plugin-data:\n\nnetworks:\n default:\n name: simplens\n";
|
|
3
3
|
//# sourceMappingURL=templates.d.ts.map
|
package/dist/templates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,02GAqHlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,imEA0EhC,CAAC"}
|
package/dist/templates.js
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
// Docker Compose templates as constants
|
|
2
|
-
export const INFRA_COMPOSE_TEMPLATE =
|
|
3
|
-
# INFRA_HOST: Set this in .env to your machine's IP/hostname when running
|
|
4
|
-
# infrastructure on a separate system from application services.
|
|
5
|
-
# Default: host.docker.internal (for same-system deployment)
|
|
6
|
-
# ============================================
|
|
7
|
-
|
|
2
|
+
export const INFRA_COMPOSE_TEMPLATE = `
|
|
8
3
|
services:
|
|
9
4
|
# ============================================
|
|
10
5
|
# Infrastructure Services
|
|
@@ -15,10 +10,8 @@ services:
|
|
|
15
10
|
command: [ "--replSet", "rs0", "--bind_ip_all", "--port", "27017" ]
|
|
16
11
|
ports:
|
|
17
12
|
- 27017:27017
|
|
18
|
-
extra_hosts:
|
|
19
|
-
- "host.docker.internal:host-gateway"
|
|
20
13
|
healthcheck:
|
|
21
|
-
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'
|
|
14
|
+
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongo:27017'}]}) }" | mongosh --port 27017 --quiet
|
|
22
15
|
interval: 5s
|
|
23
16
|
timeout: 30s
|
|
24
17
|
start_period: 0s
|
|
@@ -36,7 +29,7 @@ services:
|
|
|
36
29
|
environment:
|
|
37
30
|
# Configure listeners for both docker and host communication
|
|
38
31
|
KAFKA_LISTENERS: CONTROLLER://localhost:9091,HOST://0.0.0.0:9092,DOCKER://0.0.0.0:9093
|
|
39
|
-
KAFKA_ADVERTISED_LISTENERS: HOST://
|
|
32
|
+
KAFKA_ADVERTISED_LISTENERS: HOST://kafka:9092,DOCKER://kafka:9093
|
|
40
33
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,DOCKER:PLAINTEXT,HOST:PLAINTEXT
|
|
41
34
|
|
|
42
35
|
# Settings required for KRaft mode
|
package/dist/templates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqHrC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0EnC,CAAC"}
|
package/package.json
CHANGED
package/src/env-config.ts
CHANGED
|
@@ -10,14 +10,6 @@ import type { EnvVariable } from './types/domain.js';
|
|
|
10
10
|
export async function loadEnvExample(): Promise<EnvVariable[]> {
|
|
11
11
|
// Embedded .env template - always available regardless of installation
|
|
12
12
|
const envTemplate = `
|
|
13
|
-
# ============================================
|
|
14
|
-
# INFRASTRUCTURE HOST CONFIGURATION
|
|
15
|
-
# ============================================
|
|
16
|
-
INFRA_HOST=host.docker.internal
|
|
17
|
-
|
|
18
|
-
# ============================================
|
|
19
|
-
# CONNECTION URLS
|
|
20
|
-
# ============================================
|
|
21
13
|
NODE_ENV=production
|
|
22
14
|
# ============================================
|
|
23
15
|
# API SERVER
|
|
@@ -172,27 +164,26 @@ function parseEnvContent(content: string): EnvVariable[] {
|
|
|
172
164
|
*/
|
|
173
165
|
export async function promptEnvVariables(
|
|
174
166
|
mode: 'default' | 'interactive',
|
|
175
|
-
infraServices: string[]
|
|
176
|
-
infraHost: string
|
|
167
|
+
infraServices: string[]
|
|
177
168
|
): Promise<Map<string, string>> {
|
|
178
169
|
logInfo('Configuring environment variables...');
|
|
179
170
|
|
|
180
171
|
const envVars = await loadEnvExample();
|
|
181
172
|
const result = new Map<string, string>();
|
|
182
173
|
|
|
183
|
-
// Auto-fill infra connection URLs based on selected services
|
|
174
|
+
// Auto-fill infra connection URLs based on selected services using Docker service names
|
|
184
175
|
const autoInfraUrls: Record<string, string> = {
|
|
185
176
|
MONGO_URI: infraServices.includes('mongo')
|
|
186
|
-
?
|
|
177
|
+
? `mongodb://mongo:27017/simplens?replicaSet=rs0`
|
|
187
178
|
: '',
|
|
188
179
|
BROKERS: infraServices.includes('kafka')
|
|
189
|
-
?
|
|
180
|
+
? 'kafka:9093'
|
|
190
181
|
: '',
|
|
191
182
|
REDIS_URL: infraServices.includes('redis')
|
|
192
|
-
?
|
|
183
|
+
? 'redis://redis:6379'
|
|
193
184
|
: '',
|
|
194
185
|
LOKI_URL: infraServices.includes('loki')
|
|
195
|
-
?
|
|
186
|
+
? 'http://loki:3100'
|
|
196
187
|
: '',
|
|
197
188
|
};
|
|
198
189
|
|
package/src/index.ts
CHANGED
|
@@ -118,12 +118,11 @@ async function main() {
|
|
|
118
118
|
|
|
119
119
|
// Step 2: Infrastructure setup (if --infra flag is provided)
|
|
120
120
|
let selectedInfraServices: string[] = [];
|
|
121
|
-
let infraHost = 'host.docker.internal';
|
|
122
121
|
|
|
123
122
|
if (setupOptions.infra) {
|
|
124
123
|
logInfo('\nšļø Infrastructure Setup\n');
|
|
125
124
|
selectedInfraServices = await promptInfraServices();
|
|
126
|
-
|
|
125
|
+
await generateInfraCompose(targetDir, selectedInfraServices);
|
|
127
126
|
} else {
|
|
128
127
|
logInfo('\nāļø Skipping infrastructure setup (use --infra to enable)');
|
|
129
128
|
}
|
|
@@ -135,7 +134,7 @@ async function main() {
|
|
|
135
134
|
// Step 3: Environment configuration
|
|
136
135
|
logInfo('\nāļø Environment Configuration\n');
|
|
137
136
|
const envMode = setupOptions.envMode;
|
|
138
|
-
const envVars = await promptEnvVariables(envMode, selectedInfraServices
|
|
137
|
+
const envVars = await promptEnvVariables(envMode, selectedInfraServices);
|
|
139
138
|
await generateEnvFile(targetDir, envVars);
|
|
140
139
|
|
|
141
140
|
// Step 4: Plugin installation
|
package/src/infra.ts
CHANGED
|
@@ -46,45 +46,7 @@ export async function promptInfraServices(): Promise<string[]> {
|
|
|
46
46
|
return answer.services;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
/**
|
|
50
|
-
* Get infrastructure host based on OS
|
|
51
|
-
*/
|
|
52
|
-
export function getInfraHost(): string {
|
|
53
|
-
// const os = detectOS();
|
|
54
|
-
|
|
55
|
-
// if (os === 'linux') {
|
|
56
|
-
// logWarning('Linux detected: host.docker.internal does not work by default.');
|
|
57
|
-
|
|
58
|
-
// const answer = await inquirer.prompt<{ hostChoice: string; customHost?: string }>([
|
|
59
|
-
// {
|
|
60
|
-
// type: 'list',
|
|
61
|
-
// name: 'hostChoice',
|
|
62
|
-
// message: 'Select host configuration:',
|
|
63
|
-
// choices: [
|
|
64
|
-
// { name: 'Use Docker bridge IP (172.17.0.1)', value: '172.17.0.1' },
|
|
65
|
-
// { name: 'Enter custom IP/hostname', value: 'custom' },
|
|
66
|
-
// ],
|
|
67
|
-
// },
|
|
68
|
-
// {
|
|
69
|
-
// type: 'input',
|
|
70
|
-
// name: 'customHost',
|
|
71
|
-
// message: 'Enter your machine IP or hostname:',
|
|
72
|
-
// when: (answers) => answers.hostChoice === 'custom',
|
|
73
|
-
// validate: (input: string) => {
|
|
74
|
-
// if (!input || input.trim().length === 0) {
|
|
75
|
-
// return 'Please enter a valid IP or hostname';
|
|
76
|
-
// }
|
|
77
|
-
// return true;
|
|
78
|
-
// },
|
|
79
|
-
// },
|
|
80
|
-
// ]);
|
|
81
49
|
|
|
82
|
-
// return answer.hostChoice === 'custom' ? answer.customHost! : answer.hostChoice;
|
|
83
|
-
// }
|
|
84
|
-
|
|
85
|
-
// For Windows, linux and macOS, use host.docker.internal
|
|
86
|
-
return 'host.docker.internal';
|
|
87
|
-
}
|
|
88
50
|
|
|
89
51
|
/**
|
|
90
52
|
* Service chunk definitions - each service as a complete block
|
|
@@ -96,10 +58,8 @@ const SERVICE_CHUNKS: Record<string, string> = {
|
|
|
96
58
|
command: [ "--replSet", "rs0", "--bind_ip_all", "--port", "27017" ]
|
|
97
59
|
ports:
|
|
98
60
|
- 27017:27017
|
|
99
|
-
extra_hosts:
|
|
100
|
-
- "host.docker.internal:host-gateway"
|
|
101
61
|
healthcheck:
|
|
102
|
-
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'
|
|
62
|
+
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongo:27017'}]}) }" | mongosh --port 27017 --quiet
|
|
103
63
|
interval: 5s
|
|
104
64
|
timeout: 30s
|
|
105
65
|
start_period: 0s
|
|
@@ -117,7 +77,7 @@ const SERVICE_CHUNKS: Record<string, string> = {
|
|
|
117
77
|
environment:
|
|
118
78
|
# Configure listeners for both docker and host communication
|
|
119
79
|
KAFKA_LISTENERS: CONTROLLER://localhost:9091,HOST://0.0.0.0:9092,DOCKER://0.0.0.0:9093
|
|
120
|
-
KAFKA_ADVERTISED_LISTENERS: HOST://
|
|
80
|
+
KAFKA_ADVERTISED_LISTENERS: HOST://kafka:9092,DOCKER://kafka:9093
|
|
121
81
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,DOCKER:PLAINTEXT,HOST:PLAINTEXT
|
|
122
82
|
|
|
123
83
|
# Settings required for KRaft mode
|
|
@@ -212,9 +172,9 @@ const SERVICE_VOLUMES: Record<string, string[]> = {
|
|
|
212
172
|
function buildInfraCompose(selectedServices: string[]): string {
|
|
213
173
|
// Header
|
|
214
174
|
const header = `# ============================================
|
|
215
|
-
#
|
|
216
|
-
#
|
|
217
|
-
#
|
|
175
|
+
# SimpleNS Infrastructure Services
|
|
176
|
+
# All services use Docker service names for container-to-container communication.
|
|
177
|
+
# This ensures cross-platform compatibility (Windows, Linux, macOS).
|
|
218
178
|
# ============================================
|
|
219
179
|
|
|
220
180
|
services:
|
|
@@ -255,12 +215,7 @@ services:
|
|
|
255
215
|
].join('\n');
|
|
256
216
|
}
|
|
257
217
|
|
|
258
|
-
|
|
259
|
-
* Replace INFRA_HOST placeholder in template
|
|
260
|
-
*/
|
|
261
|
-
export function replaceInfraHost(template: string, infraHost: string): string {
|
|
262
|
-
return template.replace(/\{\{INFRA_HOST\}\}/g, infraHost);
|
|
263
|
-
}
|
|
218
|
+
|
|
264
219
|
|
|
265
220
|
/**
|
|
266
221
|
* Generate and write docker-compose.infra.yaml
|
|
@@ -268,26 +223,16 @@ export function replaceInfraHost(template: string, infraHost: string): string {
|
|
|
268
223
|
export async function generateInfraCompose(
|
|
269
224
|
targetDir: string,
|
|
270
225
|
selectedServices: string[]
|
|
271
|
-
): Promise<
|
|
226
|
+
): Promise<void> {
|
|
272
227
|
logInfo('Generating docker-compose.infra.yaml...');
|
|
273
228
|
|
|
274
|
-
// Get infrastructure host
|
|
275
|
-
const infraHost = getInfraHost();
|
|
276
|
-
logSuccess(`Using infrastructure host: ${infraHost}`);
|
|
277
|
-
|
|
278
229
|
// Build compose content from service chunks
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
// Replace host placeholder
|
|
282
|
-
infraContent = replaceInfraHost(infraContent, infraHost);
|
|
230
|
+
const infraContent = buildInfraCompose(selectedServices);
|
|
283
231
|
|
|
284
232
|
// Write infrastructure compose file
|
|
285
233
|
const infraPath = path.join(targetDir, 'docker-compose.infra.yaml');
|
|
286
234
|
await writeFile(infraPath, infraContent);
|
|
287
235
|
logSuccess('Generated docker-compose.infra.yaml');
|
|
288
|
-
|
|
289
|
-
// Return infraHost for env configuration
|
|
290
|
-
return infraHost;
|
|
291
236
|
}
|
|
292
237
|
|
|
293
238
|
/**
|
package/src/templates.ts
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
// Docker Compose templates as constants
|
|
2
2
|
|
|
3
|
-
export const INFRA_COMPOSE_TEMPLATE =
|
|
4
|
-
# INFRA_HOST: Set this in .env to your machine's IP/hostname when running
|
|
5
|
-
# infrastructure on a separate system from application services.
|
|
6
|
-
# Default: host.docker.internal (for same-system deployment)
|
|
7
|
-
# ============================================
|
|
8
|
-
|
|
3
|
+
export const INFRA_COMPOSE_TEMPLATE = `
|
|
9
4
|
services:
|
|
10
5
|
# ============================================
|
|
11
6
|
# Infrastructure Services
|
|
@@ -16,10 +11,8 @@ services:
|
|
|
16
11
|
command: [ "--replSet", "rs0", "--bind_ip_all", "--port", "27017" ]
|
|
17
12
|
ports:
|
|
18
13
|
- 27017:27017
|
|
19
|
-
extra_hosts:
|
|
20
|
-
- "host.docker.internal:host-gateway"
|
|
21
14
|
healthcheck:
|
|
22
|
-
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'
|
|
15
|
+
test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongo:27017'}]}) }" | mongosh --port 27017 --quiet
|
|
23
16
|
interval: 5s
|
|
24
17
|
timeout: 30s
|
|
25
18
|
start_period: 0s
|
|
@@ -37,7 +30,7 @@ services:
|
|
|
37
30
|
environment:
|
|
38
31
|
# Configure listeners for both docker and host communication
|
|
39
32
|
KAFKA_LISTENERS: CONTROLLER://localhost:9091,HOST://0.0.0.0:9092,DOCKER://0.0.0.0:9093
|
|
40
|
-
KAFKA_ADVERTISED_LISTENERS: HOST://
|
|
33
|
+
KAFKA_ADVERTISED_LISTENERS: HOST://kafka:9092,DOCKER://kafka:9093
|
|
41
34
|
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,DOCKER:PLAINTEXT,HOST:PLAINTEXT
|
|
42
35
|
|
|
43
36
|
# Settings required for KRaft mode
|
package/vitest.config.ts
CHANGED