@platforma-sdk/bootstrap 5.2.40 → 5.2.42

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 (168) hide show
  1. package/README.md +10 -2
  2. package/assets/compose-backend.yaml +2 -2
  3. package/bin/run.js +3 -3
  4. package/dist/block.cjs +36 -31
  5. package/dist/block.cjs.map +1 -1
  6. package/dist/block.d.ts +2 -2
  7. package/dist/block.d.ts.map +1 -1
  8. package/dist/block.js +36 -31
  9. package/dist/block.js.map +1 -1
  10. package/dist/cmd-opts.cjs +74 -74
  11. package/dist/cmd-opts.cjs.map +1 -1
  12. package/dist/cmd-opts.d.ts +23 -23
  13. package/dist/cmd-opts.d.ts.map +1 -1
  14. package/dist/cmd-opts.js +74 -74
  15. package/dist/cmd-opts.js.map +1 -1
  16. package/dist/commands/create-block.cjs +3 -3
  17. package/dist/commands/create-block.cjs.map +1 -1
  18. package/dist/commands/create-block.d.ts +2 -2
  19. package/dist/commands/create-block.d.ts.map +1 -1
  20. package/dist/commands/create-block.js +3 -3
  21. package/dist/commands/create-block.js.map +1 -1
  22. package/dist/commands/reset.cjs +3 -3
  23. package/dist/commands/reset.cjs.map +1 -1
  24. package/dist/commands/reset.d.ts +2 -2
  25. package/dist/commands/reset.d.ts.map +1 -1
  26. package/dist/commands/reset.js +3 -3
  27. package/dist/commands/reset.js.map +1 -1
  28. package/dist/commands/start/docker/s3.cjs +18 -18
  29. package/dist/commands/start/docker/s3.cjs.map +1 -1
  30. package/dist/commands/start/docker/s3.d.ts +15 -15
  31. package/dist/commands/start/docker/s3.d.ts.map +1 -1
  32. package/dist/commands/start/docker/s3.js +18 -18
  33. package/dist/commands/start/docker/s3.js.map +1 -1
  34. package/dist/commands/start/docker.cjs +18 -18
  35. package/dist/commands/start/docker.cjs.map +1 -1
  36. package/dist/commands/start/docker.d.ts +16 -16
  37. package/dist/commands/start/docker.d.ts.map +1 -1
  38. package/dist/commands/start/docker.js +18 -18
  39. package/dist/commands/start/docker.js.map +1 -1
  40. package/dist/commands/start/local/s3.cjs +36 -34
  41. package/dist/commands/start/local/s3.cjs.map +1 -1
  42. package/dist/commands/start/local/s3.d.ts +18 -18
  43. package/dist/commands/start/local/s3.d.ts.map +1 -1
  44. package/dist/commands/start/local/s3.js +36 -34
  45. package/dist/commands/start/local/s3.js.map +1 -1
  46. package/dist/commands/start/local.cjs +32 -30
  47. package/dist/commands/start/local.cjs.map +1 -1
  48. package/dist/commands/start/local.d.ts +16 -16
  49. package/dist/commands/start/local.d.ts.map +1 -1
  50. package/dist/commands/start/local.js +32 -30
  51. package/dist/commands/start/local.js.map +1 -1
  52. package/dist/commands/start.cjs +3 -3
  53. package/dist/commands/start.cjs.map +1 -1
  54. package/dist/commands/start.d.ts +2 -2
  55. package/dist/commands/start.js +3 -3
  56. package/dist/commands/start.js.map +1 -1
  57. package/dist/commands/stop.cjs +4 -4
  58. package/dist/commands/stop.cjs.map +1 -1
  59. package/dist/commands/stop.d.ts +2 -2
  60. package/dist/commands/stop.js +4 -4
  61. package/dist/commands/stop.js.map +1 -1
  62. package/dist/commands/svc/create/arg-parser.cjs +13 -13
  63. package/dist/commands/svc/create/arg-parser.cjs.map +1 -1
  64. package/dist/commands/svc/create/arg-parser.d.ts +1 -1
  65. package/dist/commands/svc/create/arg-parser.js +13 -13
  66. package/dist/commands/svc/create/arg-parser.js.map +1 -1
  67. package/dist/commands/svc/create/docker/s3.cjs +27 -27
  68. package/dist/commands/svc/create/docker/s3.cjs.map +1 -1
  69. package/dist/commands/svc/create/docker/s3.d.ts +15 -15
  70. package/dist/commands/svc/create/docker/s3.d.ts.map +1 -1
  71. package/dist/commands/svc/create/docker/s3.js +27 -27
  72. package/dist/commands/svc/create/docker/s3.js.map +1 -1
  73. package/dist/commands/svc/create/docker.cjs +35 -35
  74. package/dist/commands/svc/create/docker.cjs.map +1 -1
  75. package/dist/commands/svc/create/docker.d.ts +16 -16
  76. package/dist/commands/svc/create/docker.js +35 -35
  77. package/dist/commands/svc/create/docker.js.map +1 -1
  78. package/dist/commands/svc/create/local/s3.cjs +37 -35
  79. package/dist/commands/svc/create/local/s3.cjs.map +1 -1
  80. package/dist/commands/svc/create/local/s3.d.ts +18 -18
  81. package/dist/commands/svc/create/local/s3.d.ts.map +1 -1
  82. package/dist/commands/svc/create/local/s3.js +37 -35
  83. package/dist/commands/svc/create/local/s3.js.map +1 -1
  84. package/dist/commands/svc/create/local.cjs +35 -35
  85. package/dist/commands/svc/create/local.cjs.map +1 -1
  86. package/dist/commands/svc/create/local.d.ts +16 -16
  87. package/dist/commands/svc/create/local.d.ts.map +1 -1
  88. package/dist/commands/svc/create/local.js +35 -35
  89. package/dist/commands/svc/create/local.js.map +1 -1
  90. package/dist/commands/svc/delete.cjs +4 -4
  91. package/dist/commands/svc/delete.cjs.map +1 -1
  92. package/dist/commands/svc/delete.d.ts +2 -2
  93. package/dist/commands/svc/delete.js +4 -4
  94. package/dist/commands/svc/delete.js.map +1 -1
  95. package/dist/commands/svc/down.cjs +3 -3
  96. package/dist/commands/svc/down.cjs.map +1 -1
  97. package/dist/commands/svc/down.d.ts +2 -2
  98. package/dist/commands/svc/down.js +3 -3
  99. package/dist/commands/svc/down.js.map +1 -1
  100. package/dist/commands/svc/list.cjs +5 -5
  101. package/dist/commands/svc/list.cjs.map +1 -1
  102. package/dist/commands/svc/list.d.ts +1 -1
  103. package/dist/commands/svc/list.d.ts.map +1 -1
  104. package/dist/commands/svc/list.js +5 -5
  105. package/dist/commands/svc/list.js.map +1 -1
  106. package/dist/commands/svc/up.cjs +5 -5
  107. package/dist/commands/svc/up.cjs.map +1 -1
  108. package/dist/commands/svc/up.d.ts +2 -2
  109. package/dist/commands/svc/up.d.ts.map +1 -1
  110. package/dist/commands/svc/up.js +5 -5
  111. package/dist/commands/svc/up.js.map +1 -1
  112. package/dist/core.cjs +261 -231
  113. package/dist/core.cjs.map +1 -1
  114. package/dist/core.d.ts +10 -10
  115. package/dist/core.d.ts.map +1 -1
  116. package/dist/core.js +261 -231
  117. package/dist/core.js.map +1 -1
  118. package/dist/index.cjs +16 -16
  119. package/dist/index.cjs.map +1 -1
  120. package/dist/index.d.ts +29 -29
  121. package/dist/index.js +16 -16
  122. package/dist/index.js.map +1 -1
  123. package/dist/package.cjs +2 -2
  124. package/dist/package.cjs.map +1 -1
  125. package/dist/package.js +2 -2
  126. package/dist/package.js.map +1 -1
  127. package/dist/platforma.cjs +24 -24
  128. package/dist/platforma.cjs.map +1 -1
  129. package/dist/platforma.d.ts +1 -1
  130. package/dist/platforma.d.ts.map +1 -1
  131. package/dist/platforma.js +24 -24
  132. package/dist/platforma.js.map +1 -1
  133. package/dist/run.cjs +6 -6
  134. package/dist/run.cjs.map +1 -1
  135. package/dist/run.d.ts +3 -3
  136. package/dist/run.d.ts.map +1 -1
  137. package/dist/run.js +6 -6
  138. package/dist/run.js.map +1 -1
  139. package/dist/state.cjs +16 -14
  140. package/dist/state.cjs.map +1 -1
  141. package/dist/state.d.ts +5 -5
  142. package/dist/state.d.ts.map +1 -1
  143. package/dist/state.js +16 -14
  144. package/dist/state.js.map +1 -1
  145. package/dist/templates/compose.cjs +2 -2
  146. package/dist/templates/compose.cjs.map +1 -1
  147. package/dist/templates/compose.d.ts.map +1 -1
  148. package/dist/templates/compose.js +2 -2
  149. package/dist/templates/compose.js.map +1 -1
  150. package/dist/templates/pl-config.cjs +49 -49
  151. package/dist/templates/pl-config.cjs.map +1 -1
  152. package/dist/templates/pl-config.d.ts +2 -2
  153. package/dist/templates/pl-config.d.ts.map +1 -1
  154. package/dist/templates/pl-config.js +49 -49
  155. package/dist/templates/pl-config.js.map +1 -1
  156. package/dist/templates/types.cjs +12 -12
  157. package/dist/templates/types.cjs.map +1 -1
  158. package/dist/templates/types.d.ts +6 -6
  159. package/dist/templates/types.d.ts.map +1 -1
  160. package/dist/templates/types.js +12 -12
  161. package/dist/templates/types.js.map +1 -1
  162. package/dist/util.cjs +19 -17
  163. package/dist/util.cjs.map +1 -1
  164. package/dist/util.d.ts +2 -2
  165. package/dist/util.d.ts.map +1 -1
  166. package/dist/util.js +19 -17
  167. package/dist/util.js.map +1 -1
  168. package/package.json +23 -22
package/dist/util.cjs CHANGED
@@ -10,30 +10,30 @@ var readlineSync = require('readline-sync');
10
10
 
11
11
  function askYN(prompt) {
12
12
  const answer = readlineSync.question(`${prompt} [y/N] `);
13
- return answer.toLowerCase() === 'y';
13
+ return answer.toLowerCase() === "y";
14
14
  }
15
15
  function assertNever(_n) {
16
- throw new Error('this should never happen');
16
+ throw new Error("this should never happen");
17
17
  }
18
- function createLogger(level = 'debug') {
18
+ function createLogger(level = "debug") {
19
19
  return winston.createLogger({
20
20
  level: level,
21
21
  format: winston.format.printf(({ level, message }) => {
22
- const indent = ' '.repeat(level.length + 2); // For ': ' after the level
23
- if (typeof message !== 'string') {
22
+ const indent = " ".repeat(level.length + 2); // For ': ' after the level
23
+ if (typeof message !== "string") {
24
24
  const messageJson = JSON.stringify(message);
25
25
  throw Error(`logger message ${messageJson} is not a string`);
26
26
  }
27
27
  const indentedMessage = message
28
- .split('\n')
28
+ .split("\n")
29
29
  .map((line, index) => (index === 0 ? line : indent + line))
30
- .join('\n');
30
+ .join("\n");
31
31
  const colorize = (l) => winston.format.colorize().colorize(l, l);
32
32
  return `${colorize(level)}: ${indentedMessage}`;
33
33
  }),
34
34
  transports: [
35
35
  new winston.transports.Console({
36
- stderrLevels: ['error', 'warn', 'info', 'debug'],
36
+ stderrLevels: ["error", "warn", "info", "debug"],
37
37
  handleExceptions: true,
38
38
  }),
39
39
  ],
@@ -41,11 +41,11 @@ function createLogger(level = 'debug') {
41
41
  }
42
42
  function randomStr(len) {
43
43
  return node_crypto.randomBytes(Math.ceil(len / 2))
44
- .toString('hex')
44
+ .toString("hex")
45
45
  .slice(0, len);
46
46
  }
47
47
  function resolveTilde(p) {
48
- if (p.startsWith('~')) {
48
+ if (p.startsWith("~")) {
49
49
  return path.join(os.homedir(), p.slice(1));
50
50
  }
51
51
  return p;
@@ -61,23 +61,25 @@ function ensureDir(p, options) {
61
61
  }
62
62
  function getProcessName(pid) {
63
63
  try {
64
- if (os.platform() !== 'win32') {
65
- return node_child_process.execSync(`ps -p ${pid} -o comm=`, { encoding: 'utf8' }).trim();
64
+ if (os.platform() !== "win32") {
65
+ return node_child_process.execSync(`ps -p ${pid} -o comm=`, { encoding: "utf8" }).trim();
66
66
  }
67
67
  const command = `wmic process where processid=${pid} get Caption`;
68
- const lines = node_child_process.execSync(command, { encoding: 'utf8' }).split('\n');
68
+ const lines = node_child_process.execSync(command, { encoding: "utf8" }).split("\n");
69
69
  // lines = ["Caption:", "<process name>"]
70
70
  if (lines.length <= 1) {
71
- return '';
71
+ return "";
72
72
  }
73
73
  return lines[1].trim();
74
74
  }
75
- catch (_e) {
76
- return '';
75
+ catch {
76
+ return "";
77
77
  }
78
78
  }
79
79
  function getDockerComposeInfo(serviceName) {
80
- const result = node_child_process.execSync(`docker compose ls --filter name=${serviceName} --format json`, { encoding: 'utf8' }).trim();
80
+ const result = node_child_process.execSync(`docker compose ls --filter name=${serviceName} --format json`, {
81
+ encoding: "utf8",
82
+ }).trim();
81
83
  const report = JSON.parse(result);
82
84
  for (const st of report) {
83
85
  if (st.Name === serviceName) {
package/dist/util.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.cjs","sources":["../src/util.ts"],"sourcesContent":["import os from 'node:os';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { execSync } from 'node:child_process';\n\nimport winston from 'winston';\nimport { randomBytes } from 'node:crypto';\nimport readlineSync from 'readline-sync';\n\nexport function askYN(prompt: string): boolean {\n const answer = readlineSync.question(`${prompt} [y/N] `);\n return answer.toLowerCase() === 'y';\n}\n\nexport function assertNever(_n: never) {\n throw new Error('this should never happen');\n}\n\nexport function createLogger(level: string = 'debug'): winston.Logger {\n return winston.createLogger({\n level: level,\n\n format: winston.format.printf(({ level, message }) => {\n const indent = ' '.repeat(level.length + 2); // For ': ' after the level\n if (typeof message !== 'string') {\n const messageJson = JSON.stringify(message);\n throw Error(`logger message ${messageJson} is not a string`);\n }\n const indentedMessage = message\n .split('\\n')\n .map((line: string, index: number) => (index === 0 ? line : indent + line))\n .join('\\n');\n\n const colorize = (l: string) => winston.format.colorize().colorize(l, l);\n\n return `${colorize(level)}: ${indentedMessage}`;\n }),\n\n transports: [\n new winston.transports.Console({\n stderrLevels: ['error', 'warn', 'info', 'debug'],\n handleExceptions: true,\n }),\n ],\n });\n}\n\nexport function randomStr(len: number): string {\n return randomBytes(Math.ceil(len / 2))\n .toString('hex')\n .slice(0, len);\n}\n\nexport function resolveTilde(p: string): string {\n if (p.startsWith('~')) {\n return path.join(os.homedir(), p.slice(1));\n }\n return p;\n}\n\nexport function ensureDir(p: string, options?: {\n mode?: fs.Mode;\n}) {\n if (fs.existsSync(p)) {\n return;\n }\n\n fs.mkdirSync(p, { recursive: true });\n if (options?.mode) {\n fs.chmodSync(p, options.mode);\n }\n}\n\nexport function getProcessName(pid: number): string {\n try {\n if (os.platform() !== 'win32') {\n return execSync(`ps -p ${pid} -o comm=`, { encoding: 'utf8' }).trim();\n }\n\n const command = `wmic process where processid=${pid} get Caption`;\n const lines = execSync(command, { encoding: 'utf8' }).split('\\n');\n\n // lines = [\"Caption:\", \"<process name>\"]\n if (lines.length <= 1) {\n return '';\n }\n\n return lines[1].trim();\n } catch (_e) {\n return '';\n }\n}\n\nexport type dockerComposeStatus = {\n Name: string;\n Status: string;\n ConfigFiles: string;\n};\n\nexport function getDockerComposeInfo(serviceName: string): dockerComposeStatus | undefined {\n const result = execSync(`docker compose ls --filter name=${serviceName} --format json`, { encoding: 'utf8' }).trim();\n\n const report = JSON.parse(result) as dockerComposeStatus[];\n\n for (const st of report) {\n if (st.Name === serviceName) {\n return st;\n }\n }\n\n return undefined;\n}\n"],"names":["randomBytes","execSync"],"mappings":"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"}
1
+ {"version":3,"file":"util.cjs","sources":["../src/util.ts"],"sourcesContent":["import os from \"node:os\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { execSync } from \"node:child_process\";\n\nimport winston from \"winston\";\nimport { randomBytes } from \"node:crypto\";\nimport readlineSync from \"readline-sync\";\n\nexport function askYN(prompt: string): boolean {\n const answer = readlineSync.question(`${prompt} [y/N] `);\n return answer.toLowerCase() === \"y\";\n}\n\nexport function assertNever(_n: never) {\n throw new Error(\"this should never happen\");\n}\n\nexport function createLogger(level: string = \"debug\"): winston.Logger {\n return winston.createLogger({\n level: level,\n\n format: winston.format.printf(({ level, message }) => {\n const indent = \" \".repeat(level.length + 2); // For ': ' after the level\n if (typeof message !== \"string\") {\n const messageJson = JSON.stringify(message);\n throw Error(`logger message ${messageJson} is not a string`);\n }\n const indentedMessage = message\n .split(\"\\n\")\n .map((line: string, index: number) => (index === 0 ? line : indent + line))\n .join(\"\\n\");\n\n const colorize = (l: string) => winston.format.colorize().colorize(l, l);\n\n return `${colorize(level)}: ${indentedMessage}`;\n }),\n\n transports: [\n new winston.transports.Console({\n stderrLevels: [\"error\", \"warn\", \"info\", \"debug\"],\n handleExceptions: true,\n }),\n ],\n });\n}\n\nexport function randomStr(len: number): string {\n return randomBytes(Math.ceil(len / 2))\n .toString(\"hex\")\n .slice(0, len);\n}\n\nexport function resolveTilde(p: string): string {\n if (p.startsWith(\"~\")) {\n return path.join(os.homedir(), p.slice(1));\n }\n return p;\n}\n\nexport function ensureDir(\n p: string,\n options?: {\n mode?: fs.Mode;\n },\n) {\n if (fs.existsSync(p)) {\n return;\n }\n\n fs.mkdirSync(p, { recursive: true });\n if (options?.mode) {\n fs.chmodSync(p, options.mode);\n }\n}\n\nexport function getProcessName(pid: number): string {\n try {\n if (os.platform() !== \"win32\") {\n return execSync(`ps -p ${pid} -o comm=`, { encoding: \"utf8\" }).trim();\n }\n\n const command = `wmic process where processid=${pid} get Caption`;\n const lines = execSync(command, { encoding: \"utf8\" }).split(\"\\n\");\n\n // lines = [\"Caption:\", \"<process name>\"]\n if (lines.length <= 1) {\n return \"\";\n }\n\n return lines[1].trim();\n } catch {\n return \"\";\n }\n}\n\nexport type dockerComposeStatus = {\n Name: string;\n Status: string;\n ConfigFiles: string;\n};\n\nexport function getDockerComposeInfo(serviceName: string): dockerComposeStatus | undefined {\n const result = execSync(`docker compose ls --filter name=${serviceName} --format json`, {\n encoding: \"utf8\",\n }).trim();\n\n const report = JSON.parse(result) as dockerComposeStatus[];\n\n for (const st of report) {\n if (st.Name === serviceName) {\n return st;\n }\n }\n\n return undefined;\n}\n"],"names":["randomBytes","execSync"],"mappings":"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"}
package/dist/util.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import fs from 'node:fs';
2
- import winston from 'winston';
1
+ import fs from "node:fs";
2
+ import winston from "winston";
3
3
  export declare function askYN(prompt: string): boolean;
4
4
  export declare function assertNever(_n: never): void;
5
5
  export declare function createLogger(level?: string): winston.Logger;
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG7C;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,KAAK,QAEpC;AAED,wBAAgB,YAAY,CAAC,KAAK,GAAE,MAAgB,GAAG,OAAO,CAAC,MAAM,CA2BpE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAC7C,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;CAChB,QASA;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkBlD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAYzF"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,SAAS,CAAC;AAIzB,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAG7C;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,KAAK,QAEpC;AAED,wBAAgB,YAAY,CAAC,KAAK,GAAE,MAAgB,GAAG,OAAO,CAAC,MAAM,CA2BpE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED,wBAAgB,SAAS,CACvB,CAAC,EAAE,MAAM,EACT,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;CAChB,QAUF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAkBlD;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAczF"}
package/dist/util.js CHANGED
@@ -8,30 +8,30 @@ import readlineSync from 'readline-sync';
8
8
 
9
9
  function askYN(prompt) {
10
10
  const answer = readlineSync.question(`${prompt} [y/N] `);
11
- return answer.toLowerCase() === 'y';
11
+ return answer.toLowerCase() === "y";
12
12
  }
13
13
  function assertNever(_n) {
14
- throw new Error('this should never happen');
14
+ throw new Error("this should never happen");
15
15
  }
16
- function createLogger(level = 'debug') {
16
+ function createLogger(level = "debug") {
17
17
  return winston.createLogger({
18
18
  level: level,
19
19
  format: winston.format.printf(({ level, message }) => {
20
- const indent = ' '.repeat(level.length + 2); // For ': ' after the level
21
- if (typeof message !== 'string') {
20
+ const indent = " ".repeat(level.length + 2); // For ': ' after the level
21
+ if (typeof message !== "string") {
22
22
  const messageJson = JSON.stringify(message);
23
23
  throw Error(`logger message ${messageJson} is not a string`);
24
24
  }
25
25
  const indentedMessage = message
26
- .split('\n')
26
+ .split("\n")
27
27
  .map((line, index) => (index === 0 ? line : indent + line))
28
- .join('\n');
28
+ .join("\n");
29
29
  const colorize = (l) => winston.format.colorize().colorize(l, l);
30
30
  return `${colorize(level)}: ${indentedMessage}`;
31
31
  }),
32
32
  transports: [
33
33
  new winston.transports.Console({
34
- stderrLevels: ['error', 'warn', 'info', 'debug'],
34
+ stderrLevels: ["error", "warn", "info", "debug"],
35
35
  handleExceptions: true,
36
36
  }),
37
37
  ],
@@ -39,11 +39,11 @@ function createLogger(level = 'debug') {
39
39
  }
40
40
  function randomStr(len) {
41
41
  return randomBytes(Math.ceil(len / 2))
42
- .toString('hex')
42
+ .toString("hex")
43
43
  .slice(0, len);
44
44
  }
45
45
  function resolveTilde(p) {
46
- if (p.startsWith('~')) {
46
+ if (p.startsWith("~")) {
47
47
  return path.join(os__default.homedir(), p.slice(1));
48
48
  }
49
49
  return p;
@@ -59,23 +59,25 @@ function ensureDir(p, options) {
59
59
  }
60
60
  function getProcessName(pid) {
61
61
  try {
62
- if (os__default.platform() !== 'win32') {
63
- return execSync(`ps -p ${pid} -o comm=`, { encoding: 'utf8' }).trim();
62
+ if (os__default.platform() !== "win32") {
63
+ return execSync(`ps -p ${pid} -o comm=`, { encoding: "utf8" }).trim();
64
64
  }
65
65
  const command = `wmic process where processid=${pid} get Caption`;
66
- const lines = execSync(command, { encoding: 'utf8' }).split('\n');
66
+ const lines = execSync(command, { encoding: "utf8" }).split("\n");
67
67
  // lines = ["Caption:", "<process name>"]
68
68
  if (lines.length <= 1) {
69
- return '';
69
+ return "";
70
70
  }
71
71
  return lines[1].trim();
72
72
  }
73
- catch (_e) {
74
- return '';
73
+ catch {
74
+ return "";
75
75
  }
76
76
  }
77
77
  function getDockerComposeInfo(serviceName) {
78
- const result = execSync(`docker compose ls --filter name=${serviceName} --format json`, { encoding: 'utf8' }).trim();
78
+ const result = execSync(`docker compose ls --filter name=${serviceName} --format json`, {
79
+ encoding: "utf8",
80
+ }).trim();
79
81
  const report = JSON.parse(result);
80
82
  for (const st of report) {
81
83
  if (st.Name === serviceName) {
package/dist/util.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../src/util.ts"],"sourcesContent":["import os from 'node:os';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { execSync } from 'node:child_process';\n\nimport winston from 'winston';\nimport { randomBytes } from 'node:crypto';\nimport readlineSync from 'readline-sync';\n\nexport function askYN(prompt: string): boolean {\n const answer = readlineSync.question(`${prompt} [y/N] `);\n return answer.toLowerCase() === 'y';\n}\n\nexport function assertNever(_n: never) {\n throw new Error('this should never happen');\n}\n\nexport function createLogger(level: string = 'debug'): winston.Logger {\n return winston.createLogger({\n level: level,\n\n format: winston.format.printf(({ level, message }) => {\n const indent = ' '.repeat(level.length + 2); // For ': ' after the level\n if (typeof message !== 'string') {\n const messageJson = JSON.stringify(message);\n throw Error(`logger message ${messageJson} is not a string`);\n }\n const indentedMessage = message\n .split('\\n')\n .map((line: string, index: number) => (index === 0 ? line : indent + line))\n .join('\\n');\n\n const colorize = (l: string) => winston.format.colorize().colorize(l, l);\n\n return `${colorize(level)}: ${indentedMessage}`;\n }),\n\n transports: [\n new winston.transports.Console({\n stderrLevels: ['error', 'warn', 'info', 'debug'],\n handleExceptions: true,\n }),\n ],\n });\n}\n\nexport function randomStr(len: number): string {\n return randomBytes(Math.ceil(len / 2))\n .toString('hex')\n .slice(0, len);\n}\n\nexport function resolveTilde(p: string): string {\n if (p.startsWith('~')) {\n return path.join(os.homedir(), p.slice(1));\n }\n return p;\n}\n\nexport function ensureDir(p: string, options?: {\n mode?: fs.Mode;\n}) {\n if (fs.existsSync(p)) {\n return;\n }\n\n fs.mkdirSync(p, { recursive: true });\n if (options?.mode) {\n fs.chmodSync(p, options.mode);\n }\n}\n\nexport function getProcessName(pid: number): string {\n try {\n if (os.platform() !== 'win32') {\n return execSync(`ps -p ${pid} -o comm=`, { encoding: 'utf8' }).trim();\n }\n\n const command = `wmic process where processid=${pid} get Caption`;\n const lines = execSync(command, { encoding: 'utf8' }).split('\\n');\n\n // lines = [\"Caption:\", \"<process name>\"]\n if (lines.length <= 1) {\n return '';\n }\n\n return lines[1].trim();\n } catch (_e) {\n return '';\n }\n}\n\nexport type dockerComposeStatus = {\n Name: string;\n Status: string;\n ConfigFiles: string;\n};\n\nexport function getDockerComposeInfo(serviceName: string): dockerComposeStatus | undefined {\n const result = execSync(`docker compose ls --filter name=${serviceName} --format json`, { encoding: 'utf8' }).trim();\n\n const report = JSON.parse(result) as dockerComposeStatus[];\n\n for (const st of report) {\n if (st.Name === serviceName) {\n return st;\n }\n }\n\n return undefined;\n}\n"],"names":["os","fs"],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sources":["../src/util.ts"],"sourcesContent":["import os from \"node:os\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { execSync } from \"node:child_process\";\n\nimport winston from \"winston\";\nimport { randomBytes } from \"node:crypto\";\nimport readlineSync from \"readline-sync\";\n\nexport function askYN(prompt: string): boolean {\n const answer = readlineSync.question(`${prompt} [y/N] `);\n return answer.toLowerCase() === \"y\";\n}\n\nexport function assertNever(_n: never) {\n throw new Error(\"this should never happen\");\n}\n\nexport function createLogger(level: string = \"debug\"): winston.Logger {\n return winston.createLogger({\n level: level,\n\n format: winston.format.printf(({ level, message }) => {\n const indent = \" \".repeat(level.length + 2); // For ': ' after the level\n if (typeof message !== \"string\") {\n const messageJson = JSON.stringify(message);\n throw Error(`logger message ${messageJson} is not a string`);\n }\n const indentedMessage = message\n .split(\"\\n\")\n .map((line: string, index: number) => (index === 0 ? line : indent + line))\n .join(\"\\n\");\n\n const colorize = (l: string) => winston.format.colorize().colorize(l, l);\n\n return `${colorize(level)}: ${indentedMessage}`;\n }),\n\n transports: [\n new winston.transports.Console({\n stderrLevels: [\"error\", \"warn\", \"info\", \"debug\"],\n handleExceptions: true,\n }),\n ],\n });\n}\n\nexport function randomStr(len: number): string {\n return randomBytes(Math.ceil(len / 2))\n .toString(\"hex\")\n .slice(0, len);\n}\n\nexport function resolveTilde(p: string): string {\n if (p.startsWith(\"~\")) {\n return path.join(os.homedir(), p.slice(1));\n }\n return p;\n}\n\nexport function ensureDir(\n p: string,\n options?: {\n mode?: fs.Mode;\n },\n) {\n if (fs.existsSync(p)) {\n return;\n }\n\n fs.mkdirSync(p, { recursive: true });\n if (options?.mode) {\n fs.chmodSync(p, options.mode);\n }\n}\n\nexport function getProcessName(pid: number): string {\n try {\n if (os.platform() !== \"win32\") {\n return execSync(`ps -p ${pid} -o comm=`, { encoding: \"utf8\" }).trim();\n }\n\n const command = `wmic process where processid=${pid} get Caption`;\n const lines = execSync(command, { encoding: \"utf8\" }).split(\"\\n\");\n\n // lines = [\"Caption:\", \"<process name>\"]\n if (lines.length <= 1) {\n return \"\";\n }\n\n return lines[1].trim();\n } catch {\n return \"\";\n }\n}\n\nexport type dockerComposeStatus = {\n Name: string;\n Status: string;\n ConfigFiles: string;\n};\n\nexport function getDockerComposeInfo(serviceName: string): dockerComposeStatus | undefined {\n const result = execSync(`docker compose ls --filter name=${serviceName} --format json`, {\n encoding: \"utf8\",\n }).trim();\n\n const report = JSON.parse(result) as dockerComposeStatus[];\n\n for (const st of report) {\n if (st.Name === serviceName) {\n return st;\n }\n }\n\n return undefined;\n}\n"],"names":["os","fs"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "name": "@platforma-sdk/bootstrap",
3
- "version": "5.2.40",
3
+ "version": "5.2.42",
4
4
  "description": "MiLaboratories Platforma Backend bootstrap code: configuration generators, service run wrappers and so on",
5
+ "keywords": [],
6
+ "license": "UNLICENSED",
5
7
  "bin": {
6
8
  "pl-dev": "./bin/run.js"
7
9
  },
@@ -13,21 +15,6 @@
13
15
  "./assets/**",
14
16
  "./postinstall.js"
15
17
  ],
16
- "keywords": [],
17
- "license": "UNLICENSED",
18
- "devDependencies": {
19
- "@types/decompress": "^4.2.7",
20
- "@types/node": "~24.5.2",
21
- "@types/readline-sync": "^1.4.8",
22
- "eslint": "^9.25.1",
23
- "ts-node": "^10.9.2",
24
- "typescript": "~5.6.3",
25
- "@milaboratories/build-configs": "1.4.0",
26
- "@milaboratories/eslint-config": "1.0.5",
27
- "@milaboratories/oclif-index": "1.1.1",
28
- "@milaboratories/ts-configs": "1.2.0",
29
- "@milaboratories/ts-builder": "1.2.4"
30
- },
31
18
  "dependencies": {
32
19
  "@oclif/core": "^4.0.37",
33
20
  "canonicalize": "~2.1.0",
@@ -37,23 +24,37 @@
37
24
  "winston": "^3.17.0",
38
25
  "yaml": "^2.8.0",
39
26
  "zod": "~3.23.8",
40
- "@milaboratories/pl-deployments": "2.15.6"
27
+ "@milaboratories/pl-deployments": "2.15.8"
28
+ },
29
+ "devDependencies": {
30
+ "@types/decompress": "^4.2.7",
31
+ "@types/node": "~24.5.2",
32
+ "@types/readline-sync": "^1.4.8",
33
+ "ts-node": "^10.9.2",
34
+ "typescript": "~5.6.3",
35
+ "@milaboratories/build-configs": "1.4.1",
36
+ "@milaboratories/oclif-index": "1.1.1",
37
+ "@milaboratories/ts-configs": "1.2.0",
38
+ "@milaboratories/ts-builder": "1.2.5"
41
39
  },
42
40
  "oclif": {
43
41
  "bin": "pl-dev",
44
42
  "commands": {
43
+ "identifier": "COMMANDS",
45
44
  "strategy": "explicit",
46
- "target": "./dist/index.js",
47
- "identifier": "COMMANDS"
45
+ "target": "./dist/index.js"
48
46
  },
49
47
  "dirname": "pl-service",
50
48
  "topicSeparator": " "
51
49
  },
52
50
  "scripts": {
53
- "type-check": "ts-builder types --target node",
54
- "build": "oclif-index && ts-builder build --target node",
51
+ "build": "oclif-index && ts-builder format && ts-builder build --target node",
55
52
  "watch": "ts-builder build --target node --watch",
53
+ "check": "ts-builder check --target node",
54
+ "formatter:check": "ts-builder formatter --check",
55
+ "linter:check": "ts-builder linter --check",
56
+ "types:check": "ts-builder type-check --target node",
56
57
  "do-pack": "rm -f *.tgz && pnpm pack && mv *.tgz package.tgz",
57
- "lint": "eslint ."
58
+ "fmt": "ts-builder format"
58
59
  }
59
60
  }