@milaboratories/pl-deployments 2.2.0 → 2.2.2

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.
Files changed (2) hide show
  1. package/package.json +4 -4
  2. package/src/local/pl.test.ts +192 -192
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/pl-deployments",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "pl-version": "1.33.4",
5
5
  "description": "MiLaboratories Platforma Backend code service run wrapper",
6
6
  "engines": {
@@ -41,7 +41,7 @@
41
41
  "typescript": "~5.5.4",
42
42
  "utility-types": "^3.11.0",
43
43
  "vite": "^5.4.11",
44
- "vitest": "^2.1.8",
44
+ "vitest": "^2.1.9",
45
45
  "@milaboratories/eslint-config": "^1.0.4",
46
46
  "@milaboratories/platforma-build-configs": "1.0.3"
47
47
  },
@@ -53,8 +53,8 @@
53
53
  "undici": "~7.5.0",
54
54
  "yaml": "^2.7.0",
55
55
  "zod": "~3.23.8",
56
- "@milaboratories/ts-helpers": "^1.2.0",
57
- "@milaboratories/pl-config": "^1.4.9"
56
+ "@milaboratories/pl-config": "^1.4.10",
57
+ "@milaboratories/ts-helpers": "^1.3.0"
58
58
  },
59
59
  "scripts": {
60
60
  "type-check": "tsc --noEmit --composite false",
@@ -139,120 +139,137 @@ const mergeDefaultOpsCases: {
139
139
  };
140
140
  expected: LocalPlOptionsFull;
141
141
  }[] = [
142
- {
143
- name: 'should set default values when minimal input is provided',
144
- input: {
145
- ops: {
146
- workingDir: '/test',
142
+ {
143
+ name: 'should set default values when minimal input is provided',
144
+ input: {
145
+ ops: {
146
+ workingDir: '/test',
147
+ config: 'config',
148
+ plBinary: { type: 'Download', version: '1.29.2' },
149
+ },
150
+ numCpu: 4,
151
+ },
152
+ expected: {
153
+ workingDir: '/test',
147
154
  config: 'config',
148
155
  plBinary: { type: 'Download', version: '1.29.2' },
156
+ spawnOptions: {
157
+ env: {
158
+ GOMAXPROCS: '4',
159
+ },
160
+ },
161
+ closeOld: true,
149
162
  },
150
- numCpu: 4,
151
163
  },
152
- expected: {
153
- workingDir: '/test',
154
- config: 'config',
155
- plBinary: { type: 'Download', version: '1.29.2' },
156
- spawnOptions: {
157
- env: {
158
- GOMAXPROCS: '4',
164
+ {
165
+ name: 'should override outermost options when provided',
166
+ input: {
167
+ ops: {
168
+ workingDir: '/test',
169
+ config: 'config',
170
+ // we provided plBinary and closeOld, they should appear in the result
171
+ plBinary: { type: 'Local', path: '/custom/binary' },
172
+ closeOld: false,
159
173
  },
174
+ numCpu: 2,
160
175
  },
161
- closeOld: true,
162
- },
163
- },
164
- {
165
- name: 'should override outermost options when provided',
166
- input: {
167
- ops: {
168
- workingDir: '/test',
176
+ expected: {
177
+ workingDir: '/test',
169
178
  config: 'config',
170
- // we provided plBinary and closeOld, they should appear in the result
179
+ spawnOptions: {
180
+ env: {
181
+ GOMAXPROCS: '2',
182
+ },
183
+ },
171
184
  plBinary: { type: 'Local', path: '/custom/binary' },
172
185
  closeOld: false,
173
186
  },
174
- numCpu: 2,
175
187
  },
176
- expected: {
177
- workingDir: '/test',
178
- config: 'config',
179
- spawnOptions: {
180
- env: {
181
- GOMAXPROCS: '2',
188
+ {
189
+ name: 'should merge env variables when provided',
190
+ input: {
191
+ ops: {
192
+ workingDir: '/test',
193
+ config: 'config',
194
+ plBinary: { type: 'Download', version: '1.29.2' },
195
+ spawnOptions: {
196
+ env: {
197
+ NODE_ENV: 'test',
198
+ DEBUG: 'true',
199
+ },
200
+ },
182
201
  },
202
+ numCpu: 3,
183
203
  },
184
- plBinary: { type: 'Local', path: '/custom/binary' },
185
- closeOld: false,
186
- },
187
- },
188
- {
189
- name: 'should merge env variables when provided',
190
- input: {
191
- ops: {
192
- workingDir: '/test',
204
+ expected: {
205
+ workingDir: '/test',
193
206
  config: 'config',
194
207
  plBinary: { type: 'Download', version: '1.29.2' },
195
208
  spawnOptions: {
196
209
  env: {
210
+ GOMAXPROCS: '3',
197
211
  NODE_ENV: 'test',
198
212
  DEBUG: 'true',
199
213
  },
200
214
  },
215
+ closeOld: true,
201
216
  },
202
- numCpu: 3,
203
217
  },
204
- expected: {
205
- workingDir: '/test',
206
- config: 'config',
207
- plBinary: { type: 'Download', version: '1.29.2' },
208
- spawnOptions: {
209
- env: {
210
- GOMAXPROCS: '3',
211
- NODE_ENV: 'test',
212
- DEBUG: 'true',
218
+ {
219
+ name: 'should override other spawnOptions properties',
220
+ input: {
221
+ ops: {
222
+ workingDir: '/test',
223
+ config: 'config',
224
+ plBinary: { type: 'Download', version: '1.29.2' },
225
+ spawnOptions: {
226
+ stdio: 'inherit',
227
+ detached: true,
228
+ },
213
229
  },
230
+ numCpu: 2,
214
231
  },
215
- closeOld: true,
216
- },
217
- },
218
- {
219
- name: 'should override other spawnOptions properties',
220
- input: {
221
- ops: {
232
+ expected: {
222
233
  workingDir: '/test',
223
234
  config: 'config',
224
235
  plBinary: { type: 'Download', version: '1.29.2' },
225
236
  spawnOptions: {
237
+ env: {
238
+ GOMAXPROCS: '2',
239
+ },
226
240
  stdio: 'inherit',
227
241
  detached: true,
228
242
  },
243
+ closeOld: true,
229
244
  },
230
- numCpu: 2,
231
245
  },
232
- expected: {
233
- workingDir: '/test',
234
- config: 'config',
235
- plBinary: { type: 'Download', version: '1.29.2' },
236
- spawnOptions: {
237
- env: {
238
- GOMAXPROCS: '2',
246
+ {
247
+ name: 'should handle complex case with multiple overrides',
248
+ input: {
249
+ ops: {
250
+ workingDir: '/test',
251
+ config: 'config',
252
+ plBinary: { type: 'Local', path: '/custom/binary' },
253
+ closeOld: false,
254
+ spawnOptions: {
255
+ env: {
256
+ NODE_ENV: 'production',
257
+ LOG_LEVEL: 'debug',
258
+ },
259
+ cwd: '/custom/dir',
260
+ windowsHide: false,
261
+ },
239
262
  },
240
- stdio: 'inherit',
241
- detached: true,
263
+ numCpu: 6,
242
264
  },
243
- closeOld: true,
244
- },
245
- },
246
- {
247
- name: 'should handle complex case with multiple overrides',
248
- input: {
249
- ops: {
250
- workingDir: '/test',
265
+ expected: {
266
+ workingDir: '/test',
251
267
  config: 'config',
252
268
  plBinary: { type: 'Local', path: '/custom/binary' },
253
269
  closeOld: false,
254
270
  spawnOptions: {
255
271
  env: {
272
+ GOMAXPROCS: '6',
256
273
  NODE_ENV: 'production',
257
274
  LOG_LEVEL: 'debug',
258
275
  },
@@ -260,25 +277,8 @@ const mergeDefaultOpsCases: {
260
277
  windowsHide: false,
261
278
  },
262
279
  },
263
- numCpu: 6,
264
- },
265
- expected: {
266
- workingDir: '/test',
267
- config: 'config',
268
- plBinary: { type: 'Local', path: '/custom/binary' },
269
- closeOld: false,
270
- spawnOptions: {
271
- env: {
272
- GOMAXPROCS: '6',
273
- NODE_ENV: 'production',
274
- LOG_LEVEL: 'debug',
275
- },
276
- cwd: '/custom/dir',
277
- windowsHide: false,
278
- },
279
280
  },
280
- },
281
- ];
281
+ ];
282
282
 
283
283
  test.each(mergeDefaultOpsCases)('mergeDefaultOps: $name', ({ name, input, expected }) => {
284
284
  const result = mergeDefaultOps(input.ops, input.numCpu);
@@ -296,139 +296,139 @@ const plProcessOpsCases: {
296
296
  };
297
297
  expected: ProcessOptions;
298
298
  }[] = [
299
- {
300
- name: 'should set basic options with minimal input',
301
- input: {
302
- binaryPath: '/path/to/binary',
303
- configPath: '/path/to/config.yaml',
304
- ops: {
305
- workingDir: '/work/dir',
306
- config: 'config-content',
307
- plBinary: { type: 'Download', version: '1.29.2' },
308
- spawnOptions: {},
309
- closeOld: true,
299
+ {
300
+ name: 'should set basic options with minimal input',
301
+ input: {
302
+ binaryPath: '/path/to/binary',
303
+ configPath: '/path/to/config.yaml',
304
+ ops: {
305
+ workingDir: '/work/dir',
306
+ config: 'config-content',
307
+ plBinary: { type: 'Download', version: '1.29.2' },
308
+ spawnOptions: {},
309
+ closeOld: true,
310
+ },
311
+ workDir: '/work/dir',
310
312
  },
311
- workDir: '/work/dir',
312
- },
313
- expected: {
314
- cmd: '/path/to/binary',
315
- args: ['--config', '/path/to/config.yaml'],
316
- opts: {
317
- env: {},
318
- cwd: '/work/dir',
319
- stdio: ['pipe', 'ignore', 'inherit'],
320
- windowsHide: true,
313
+ expected: {
314
+ cmd: '/path/to/binary',
315
+ args: ['--config', '/path/to/config.yaml'],
316
+ opts: {
317
+ env: {},
318
+ cwd: '/work/dir',
319
+ stdio: ['pipe', 'ignore', 'inherit'],
320
+ windowsHide: true,
321
+ },
321
322
  },
322
323
  },
323
- },
324
- {
325
- name: 'should merge environment variables when provided',
326
- input: {
327
- binaryPath: '/path/to/binary',
328
- configPath: '/config.yaml',
329
- ops: {
330
- workingDir: '/work',
331
- config: 'content',
332
- plBinary: { type: 'Download', version: '1.29.2' },
333
- spawnOptions: {
324
+ {
325
+ name: 'should merge environment variables when provided',
326
+ input: {
327
+ binaryPath: '/path/to/binary',
328
+ configPath: '/config.yaml',
329
+ ops: {
330
+ workingDir: '/work',
331
+ config: 'content',
332
+ plBinary: { type: 'Download', version: '1.29.2' },
333
+ spawnOptions: {
334
+ env: {
335
+ DEBUG: 'true',
336
+ LOG_LEVEL: 'info',
337
+ },
338
+ },
339
+ closeOld: true,
340
+ },
341
+ workDir: '/work',
342
+ },
343
+ expected: {
344
+ cmd: '/path/to/binary',
345
+ args: ['--config', '/config.yaml'],
346
+ opts: {
334
347
  env: {
335
348
  DEBUG: 'true',
336
349
  LOG_LEVEL: 'info',
337
350
  },
351
+ cwd: '/work',
352
+ stdio: ['pipe', 'ignore', 'inherit'],
353
+ windowsHide: true,
338
354
  },
339
- closeOld: true,
340
355
  },
341
- workDir: '/work',
342
356
  },
343
- expected: {
344
- cmd: '/path/to/binary',
345
- args: ['--config', '/config.yaml'],
346
- opts: {
347
- env: {
348
- DEBUG: 'true',
349
- LOG_LEVEL: 'info',
357
+ {
358
+ name: 'should override spawn options when provided',
359
+ input: {
360
+ binaryPath: '/binary',
361
+ configPath: '/config.yaml',
362
+ ops: {
363
+ workingDir: '/work',
364
+ config: 'content',
365
+ plBinary: { type: 'Download', version: '1.29.2' },
366
+ spawnOptions: {
367
+ stdio: 'inherit',
368
+ detached: true,
369
+ shell: true,
370
+ },
371
+ closeOld: true,
350
372
  },
351
- cwd: '/work',
352
- stdio: ['pipe', 'ignore', 'inherit'],
353
- windowsHide: true,
373
+ workDir: '/work',
354
374
  },
355
- },
356
- },
357
- {
358
- name: 'should override spawn options when provided',
359
- input: {
360
- binaryPath: '/binary',
361
- configPath: '/config.yaml',
362
- ops: {
363
- workingDir: '/work',
364
- config: 'content',
365
- plBinary: { type: 'Download', version: '1.29.2' },
366
- spawnOptions: {
375
+ expected: {
376
+ cmd: '/binary',
377
+ args: ['--config', '/config.yaml'],
378
+ opts: {
379
+ env: {},
380
+ cwd: '/work',
367
381
  stdio: 'inherit',
368
382
  detached: true,
369
383
  shell: true,
384
+ windowsHide: true,
370
385
  },
371
- closeOld: true,
372
386
  },
373
- workDir: '/work',
374
387
  },
375
- expected: {
376
- cmd: '/binary',
377
- args: ['--config', '/config.yaml'],
378
- opts: {
379
- env: {},
380
- cwd: '/work',
381
- stdio: 'inherit',
382
- detached: true,
383
- shell: true,
384
- windowsHide: true,
388
+ {
389
+ name: 'should handle complex case with multiple options',
390
+ input: {
391
+ binaryPath: '/bin/platforma',
392
+ configPath: '/etc/platforma/config.yaml',
393
+ ops: {
394
+ workingDir: '/var/platforma',
395
+ config: 'yaml content',
396
+ plBinary: { type: 'Download', version: '1.29.2' },
397
+ spawnOptions: {
398
+ env: {
399
+ PL_DEBUG: 'true',
400
+ PL_MODE: 'development',
401
+ GOMAXPROCS: '4',
402
+ },
403
+ stdio: ['ignore', 'pipe', 'pipe'],
404
+ detached: false,
405
+ windowsHide: false,
406
+ uid: 1000,
407
+ gid: 1000,
408
+ },
409
+ closeOld: true,
410
+ },
411
+ workDir: '/var/platforma/runtime',
385
412
  },
386
- },
387
- },
388
- {
389
- name: 'should handle complex case with multiple options',
390
- input: {
391
- binaryPath: '/bin/platforma',
392
- configPath: '/etc/platforma/config.yaml',
393
- ops: {
394
- workingDir: '/var/platforma',
395
- config: 'yaml content',
396
- plBinary: { type: 'Download', version: '1.29.2' },
397
- spawnOptions: {
413
+ expected: {
414
+ cmd: '/bin/platforma',
415
+ args: ['--config', '/etc/platforma/config.yaml'],
416
+ opts: {
398
417
  env: {
399
418
  PL_DEBUG: 'true',
400
419
  PL_MODE: 'development',
401
420
  GOMAXPROCS: '4',
402
421
  },
422
+ cwd: '/var/platforma/runtime',
403
423
  stdio: ['ignore', 'pipe', 'pipe'],
404
424
  detached: false,
405
425
  windowsHide: false,
406
426
  uid: 1000,
407
427
  gid: 1000,
408
428
  },
409
- closeOld: true,
410
- },
411
- workDir: '/var/platforma/runtime',
412
- },
413
- expected: {
414
- cmd: '/bin/platforma',
415
- args: ['--config', '/etc/platforma/config.yaml'],
416
- opts: {
417
- env: {
418
- PL_DEBUG: 'true',
419
- PL_MODE: 'development',
420
- GOMAXPROCS: '4',
421
- },
422
- cwd: '/var/platforma/runtime',
423
- stdio: ['ignore', 'pipe', 'pipe'],
424
- detached: false,
425
- windowsHide: false,
426
- uid: 1000,
427
- gid: 1000,
428
429
  },
429
430
  },
430
- },
431
- ];
431
+ ];
432
432
 
433
433
  test.each(plProcessOpsCases)('plProcessOps: $name', ({ name, input, expected }) => {
434
434
  const result = plProcessOps(