bdy 1.23.7-dev-target-commands → 1.23.7-dev

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 (252) hide show
  1. package/distTs/README.md +181 -0
  2. package/distTs/package.json +10 -4
  3. package/distTs/src/agent/linux.js +53 -3
  4. package/distTs/src/agent/manager.js +3 -6
  5. package/distTs/src/agent/osx.js +51 -3
  6. package/distTs/src/agent/system.js +400 -21
  7. package/distTs/src/agent/windows.js +4 -7
  8. package/distTs/src/api/client.js +0 -156
  9. package/distTs/src/cliIndex.js +0 -4
  10. package/distTs/src/command/agent/debug.js +2 -2
  11. package/distTs/src/command/agent/install.js +37 -10
  12. package/distTs/src/command/agent/restart.js +2 -2
  13. package/distTs/src/command/agent/run.js +3 -0
  14. package/distTs/src/command/agent/start.js +2 -2
  15. package/distTs/src/command/agent/status.js +19 -0
  16. package/distTs/src/command/agent/stop.js +2 -2
  17. package/distTs/src/command/agent/uninstall.js +5 -8
  18. package/distTs/src/command/agent/update.js +2 -2
  19. package/distTs/src/command/artifact/list.js +6 -1
  20. package/distTs/src/command/artifact/publish.js +3 -1
  21. package/distTs/src/command/distro/route/update.js +1 -1
  22. package/distTs/src/command/distro/update.js +9 -9
  23. package/distTs/src/command/project/get.js +18 -0
  24. package/distTs/src/command/project/set.js +31 -0
  25. package/distTs/src/command/sandbox/get/yaml.js +30 -0
  26. package/distTs/src/command/version.js +13 -5
  27. package/distTs/src/command/vt/scrape.js +193 -0
  28. package/distTs/src/input.js +0 -54
  29. package/distTs/src/logger.js +40 -4
  30. package/distTs/src/texts.js +36 -210
  31. package/distTs/src/utils.js +99 -18
  32. package/node_modules/asn1/Jenkinsfile +65 -0
  33. package/node_modules/asn1/LICENSE +19 -0
  34. package/node_modules/asn1/README.md +50 -0
  35. package/node_modules/asn1/lib/ber/errors.js +13 -0
  36. package/node_modules/asn1/lib/ber/index.js +27 -0
  37. package/node_modules/asn1/lib/ber/reader.js +262 -0
  38. package/node_modules/asn1/lib/ber/types.js +36 -0
  39. package/node_modules/asn1/lib/ber/writer.js +317 -0
  40. package/node_modules/asn1/lib/index.js +20 -0
  41. package/node_modules/asn1/package.json +31 -0
  42. package/node_modules/bcrypt-pbkdf/CONTRIBUTING.md +13 -0
  43. package/node_modules/bcrypt-pbkdf/LICENSE +66 -0
  44. package/node_modules/bcrypt-pbkdf/README.md +45 -0
  45. package/node_modules/bcrypt-pbkdf/index.js +556 -0
  46. package/node_modules/bcrypt-pbkdf/package.json +15 -0
  47. package/node_modules/safer-buffer/LICENSE +21 -0
  48. package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  49. package/node_modules/safer-buffer/Readme.md +156 -0
  50. package/node_modules/safer-buffer/dangerous.js +58 -0
  51. package/node_modules/safer-buffer/package.json +34 -0
  52. package/node_modules/safer-buffer/safer.js +77 -0
  53. package/node_modules/safer-buffer/tests.js +406 -0
  54. package/node_modules/ssh2/.eslintignore +4 -0
  55. package/node_modules/ssh2/.eslintrc.js +5 -0
  56. package/node_modules/ssh2/.github/workflows/ci.yml +110 -0
  57. package/node_modules/ssh2/.github/workflows/lint.yml +27 -0
  58. package/node_modules/ssh2/LICENSE +19 -0
  59. package/node_modules/ssh2/README.md +1529 -0
  60. package/node_modules/ssh2/SFTP.md +413 -0
  61. package/node_modules/ssh2/examples/server-chat.js +238 -0
  62. package/node_modules/ssh2/examples/sftp-server-download-only.js +134 -0
  63. package/node_modules/ssh2/install.js +27 -0
  64. package/node_modules/ssh2/lib/Channel.js +295 -0
  65. package/node_modules/ssh2/lib/agent.js +1123 -0
  66. package/node_modules/ssh2/lib/client.js +2176 -0
  67. package/node_modules/ssh2/lib/http-agents.js +84 -0
  68. package/node_modules/ssh2/lib/index.js +44 -0
  69. package/node_modules/ssh2/lib/keygen.js +582 -0
  70. package/node_modules/ssh2/lib/protocol/Protocol.js +2136 -0
  71. package/node_modules/ssh2/lib/protocol/SFTP.js +4052 -0
  72. package/node_modules/ssh2/lib/protocol/constants.js +356 -0
  73. package/node_modules/ssh2/lib/protocol/crypto/binding.gyp +23 -0
  74. package/node_modules/ssh2/lib/protocol/crypto/poly1305.js +43 -0
  75. package/node_modules/ssh2/lib/protocol/crypto/src/binding.cc +2300 -0
  76. package/node_modules/ssh2/lib/protocol/crypto.js +1602 -0
  77. package/node_modules/ssh2/lib/protocol/handlers.js +16 -0
  78. package/node_modules/ssh2/lib/protocol/handlers.misc.js +1285 -0
  79. package/node_modules/ssh2/lib/protocol/kex.js +1908 -0
  80. package/node_modules/ssh2/lib/protocol/keyParser.js +1484 -0
  81. package/node_modules/ssh2/lib/protocol/node-fs-compat.js +115 -0
  82. package/node_modules/ssh2/lib/protocol/utils.js +356 -0
  83. package/node_modules/ssh2/lib/protocol/zlib.js +255 -0
  84. package/node_modules/ssh2/lib/server.js +1380 -0
  85. package/node_modules/ssh2/lib/utils.js +336 -0
  86. package/node_modules/ssh2/package.json +49 -0
  87. package/node_modules/ssh2/test/common.js +316 -0
  88. package/node_modules/ssh2/test/fixtures/bad_rsa_private_key +26 -0
  89. package/node_modules/ssh2/test/fixtures/https_cert.pem +33 -0
  90. package/node_modules/ssh2/test/fixtures/https_key.pem +52 -0
  91. package/node_modules/ssh2/test/fixtures/id_dsa +12 -0
  92. package/node_modules/ssh2/test/fixtures/id_ecdsa +5 -0
  93. package/node_modules/ssh2/test/fixtures/id_rsa +15 -0
  94. package/node_modules/ssh2/test/fixtures/id_rsa.ppk +26 -0
  95. package/node_modules/ssh2/test/fixtures/id_rsa_enc +30 -0
  96. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa +21 -0
  97. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.pub +1 -0
  98. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.pub.result +7 -0
  99. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.result +7 -0
  100. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc +22 -0
  101. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.pub +1 -0
  102. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.pub.result +7 -0
  103. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.result +7 -0
  104. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm +23 -0
  105. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.pub +1 -0
  106. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.pub.result +7 -0
  107. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.result +7 -0
  108. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa +9 -0
  109. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.pub +1 -0
  110. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.pub.result +7 -0
  111. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.result +7 -0
  112. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc +10 -0
  113. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.pub +1 -0
  114. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.pub.result +8 -0
  115. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.result +7 -0
  116. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm +10 -0
  117. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.pub +1 -0
  118. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.pub.result +8 -0
  119. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.result +7 -0
  120. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519 +7 -0
  121. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.pub +1 -0
  122. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.pub.result +7 -0
  123. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.result +7 -0
  124. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa +27 -0
  125. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.pub +1 -0
  126. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.pub.result +7 -0
  127. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.result +7 -0
  128. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc +28 -0
  129. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.pub +1 -0
  130. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.pub.result +8 -0
  131. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.result +7 -0
  132. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm +29 -0
  133. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.pub +1 -0
  134. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.pub.result +8 -0
  135. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.result +7 -0
  136. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa +12 -0
  137. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.pub +1 -0
  138. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.pub.result +7 -0
  139. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.result +7 -0
  140. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc +15 -0
  141. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.pub +1 -0
  142. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.pub.result +8 -0
  143. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.result +7 -0
  144. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa +5 -0
  145. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.pub +1 -0
  146. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.pub.result +7 -0
  147. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.result +7 -0
  148. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc +8 -0
  149. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.pub +1 -0
  150. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.pub.result +8 -0
  151. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.result +7 -0
  152. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa +27 -0
  153. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.pub +1 -0
  154. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.pub.result +7 -0
  155. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.result +7 -0
  156. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc +30 -0
  157. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.pub +1 -0
  158. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.pub.result +8 -0
  159. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.result +7 -0
  160. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256 +54 -0
  161. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.pub +1 -0
  162. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.pub.result +6 -0
  163. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.result +6 -0
  164. package/node_modules/ssh2/test/fixtures/keyParser/ppk_dsa_enc +17 -0
  165. package/node_modules/ssh2/test/fixtures/keyParser/ppk_dsa_enc.result +7 -0
  166. package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa +26 -0
  167. package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa.result +7 -0
  168. package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa_enc +18 -0
  169. package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa_enc.result +7 -0
  170. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa.pub +9 -0
  171. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa.pub.result +7 -0
  172. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa2.pub +10 -0
  173. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa2.pub.result +7 -0
  174. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa3.pub +11 -0
  175. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa3.pub.result +7 -0
  176. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa4.pub +11 -0
  177. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa4.pub.result +7 -0
  178. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa5.pub +8 -0
  179. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa5.pub.result +7 -0
  180. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa6.pub +13 -0
  181. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa6.pub.result +7 -0
  182. package/node_modules/ssh2/test/fixtures/openssh_new_rsa +27 -0
  183. package/node_modules/ssh2/test/fixtures/ssh_host_dsa_key +12 -0
  184. package/node_modules/ssh2/test/fixtures/ssh_host_ecdsa_key +5 -0
  185. package/node_modules/ssh2/test/fixtures/ssh_host_rsa_key +15 -0
  186. package/node_modules/ssh2/test/test-exec.js +578 -0
  187. package/node_modules/ssh2/test/test-integration-openssh.js +486 -0
  188. package/node_modules/ssh2/test/test-keygen.js +60 -0
  189. package/node_modules/ssh2/test/test-misc-client-server.js +1460 -0
  190. package/node_modules/ssh2/test/test-openssh.js +261 -0
  191. package/node_modules/ssh2/test/test-protocol-crypto.js +631 -0
  192. package/node_modules/ssh2/test/test-protocol-keyparser.js +177 -0
  193. package/node_modules/ssh2/test/test-server-hostkeys.js +138 -0
  194. package/node_modules/ssh2/test/test-sftp.js +842 -0
  195. package/node_modules/ssh2/test/test-shell.js +109 -0
  196. package/node_modules/ssh2/test/test-userauth-agent-openssh.js +110 -0
  197. package/node_modules/ssh2/test/test-userauth-agent.js +171 -0
  198. package/node_modules/ssh2/test/test-userauth.js +611 -0
  199. package/node_modules/ssh2/test/test-worker-imports.js +25 -0
  200. package/node_modules/ssh2/test/test.js +20 -0
  201. package/node_modules/ssh2/util/build_pagent.bat +2 -0
  202. package/node_modules/ssh2/util/pagent.c +88 -0
  203. package/node_modules/ssh2/util/pagent.exe +0 -0
  204. package/node_modules/tweetnacl/.npmignore +4 -0
  205. package/node_modules/tweetnacl/AUTHORS.md +28 -0
  206. package/node_modules/tweetnacl/CHANGELOG.md +221 -0
  207. package/node_modules/tweetnacl/LICENSE +24 -0
  208. package/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +20 -0
  209. package/node_modules/tweetnacl/README.md +459 -0
  210. package/node_modules/tweetnacl/nacl-fast.js +2388 -0
  211. package/node_modules/tweetnacl/nacl-fast.min.js +2 -0
  212. package/node_modules/tweetnacl/nacl.d.ts +98 -0
  213. package/node_modules/tweetnacl/nacl.js +1175 -0
  214. package/node_modules/tweetnacl/nacl.min.js +1 -0
  215. package/node_modules/tweetnacl/package.json +58 -0
  216. package/package.json +10 -4
  217. package/distTs/detect-rules.json +0 -351
  218. package/distTs/src/command/environment/create.js +0 -70
  219. package/distTs/src/command/environment/delete.js +0 -29
  220. package/distTs/src/command/environment/get.js +0 -48
  221. package/distTs/src/command/environment/list.js +0 -44
  222. package/distTs/src/command/environment/resolve.js +0 -22
  223. package/distTs/src/command/environment/update.js +0 -59
  224. package/distTs/src/command/environment.js +0 -20
  225. package/distTs/src/command/pipeline/run/apply.js +0 -62
  226. package/distTs/src/command/target/create.js +0 -33
  227. package/distTs/src/command/target/delete.js +0 -30
  228. package/distTs/src/command/target/exec/command.js +0 -65
  229. package/distTs/src/command/target/exec/kill.js +0 -25
  230. package/distTs/src/command/target/exec/list.js +0 -54
  231. package/distTs/src/command/target/exec/logs.js +0 -25
  232. package/distTs/src/command/target/exec/status.js +0 -41
  233. package/distTs/src/command/target/exec.js +0 -24
  234. package/distTs/src/command/target/get.js +0 -62
  235. package/distTs/src/command/target/list.js +0 -48
  236. package/distTs/src/command/target/scope.js +0 -60
  237. package/distTs/src/command/target/update.js +0 -31
  238. package/distTs/src/command/target.js +0 -22
  239. package/distTs/src/command/yaml/actions/detect.js +0 -268
  240. package/distTs/src/command/yaml/actions/info.js +0 -56
  241. package/distTs/src/command/yaml/actions/list.js +0 -70
  242. package/distTs/src/command/yaml/actions/schema.js +0 -104
  243. package/distTs/src/command/yaml/actions.js +0 -13
  244. package/distTs/src/command/yaml/agents.js +0 -88
  245. package/distTs/src/command/yaml/cache.js +0 -98
  246. package/distTs/src/command/yaml/init.js +0 -110
  247. package/distTs/src/command/yaml/pipeline.js +0 -42
  248. package/distTs/src/command/yaml/render.js +0 -83
  249. package/distTs/src/command/yaml/schemaUtils.js +0 -139
  250. package/distTs/src/command/yaml/validate.js +0 -259
  251. package/distTs/src/command/yaml.js +0 -18
  252. package/distTs/src/diskCache.js +0 -82
@@ -1,259 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const fs_1 = require("fs");
7
- const path_1 = require("path");
8
- const utils_1 = require("../../utils");
9
- const output_1 = __importDefault(require("../../output"));
10
- const texts_1 = require("../../texts");
11
- const schemaUtils_1 = require("./schemaUtils");
12
- // Valid top-level keys the schema's PipelineYaml.properties omits (everything
13
- // else is derived from the schema, so this only covers genuine gaps).
14
- const SCHEMA_OMITTED_TOP_LEVEL_KEYS = ['git_config_ref'];
15
- const LABEL_KEYS = ['action', 'target', 'name', 'key', 'title', 'trigger_condition'];
16
- function stripRef(ref) {
17
- return ref.replace('#/$defs/', '');
18
- }
19
- function prettifyKey(key) {
20
- return key
21
- .split('_')
22
- .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
23
- .join(' ');
24
- }
25
- function outputErrors(result, indent) {
26
- for (const err of result.errors) {
27
- output_1.default.muted(`${indent}${err.path}: ${err.message}`);
28
- }
29
- }
30
- // Array whose items reference a def — directly, or via a single $ref branch in
31
- // items.oneOf (how `targets` mixes a string ref with an object form).
32
- function itemRef(prop) {
33
- if (!prop || prop.type !== 'array' || !prop.items)
34
- return null;
35
- if (prop.items.$ref)
36
- return stripRef(prop.items.$ref);
37
- if (Array.isArray(prop.items.oneOf)) {
38
- const refs = prop.items.oneOf.filter((b) => b && b.$ref);
39
- if (refs.length === 1)
40
- return stripRef(refs[0].$ref);
41
- }
42
- return null;
43
- }
44
- function classifySections(props) {
45
- const itemSections = [];
46
- const objectSections = [];
47
- const settingsProps = {};
48
- for (const [key, prop] of Object.entries(props)) {
49
- const ref = itemRef(prop);
50
- if (ref) {
51
- itemSections.push({ key, defName: ref });
52
- }
53
- else if (prop && prop.$ref) {
54
- objectSections.push({ key, defName: stripRef(prop.$ref) });
55
- }
56
- else {
57
- settingsProps[key] = prop;
58
- }
59
- }
60
- return { itemSections, objectSections, settingsProps };
61
- }
62
- function discriminatorProp(def) {
63
- return def && def.oneOf && def.discriminator ? def.discriminator.propertyName : null;
64
- }
65
- // Resolve a discriminated def to its concrete branch by the item's `type`, so
66
- // AJV always validates against a single def (never a oneOf). Plain defs pass through.
67
- function resolveDef(defs, refName, value) {
68
- const def = defs[refName];
69
- const prop = discriminatorProp(def);
70
- if (!prop)
71
- return { defName: refName };
72
- const dv = value?.[prop];
73
- if (dv === undefined || dv === null)
74
- return { missingType: prop };
75
- for (const branch of def.oneOf) {
76
- const branchName = branch && branch.$ref ? stripRef(branch.$ref) : null;
77
- if (!branchName)
78
- continue;
79
- if (defs[branchName]?.properties?.[prop]?.const === dv)
80
- return { defName: branchName };
81
- }
82
- return { unknownType: String(dv), prop };
83
- }
84
- function itemLabel(value, index, discProp) {
85
- let name;
86
- for (const k of LABEL_KEYS) {
87
- if (value && value[k]) {
88
- name = String(value[k]);
89
- break;
90
- }
91
- }
92
- if (!name && !discProp && value && value.type)
93
- name = String(value.type);
94
- if (!name)
95
- name = `#${index + 1}`;
96
- return discProp && value && value[discProp] ? `${name} (${value[discProp]})` : name;
97
- }
98
- function validateItemSection(defs, items, refName) {
99
- const discProp = discriminatorProp(defs[refName]);
100
- let errors = 0;
101
- for (let i = 0; i < items.length; i++) {
102
- const item = items[i];
103
- if (item === null || typeof item !== 'object' || Array.isArray(item)) {
104
- output_1.default.green(` ${String(item)}`);
105
- continue;
106
- }
107
- const label = itemLabel(item, i, discProp);
108
- const resolved = resolveDef(defs, refName, item);
109
- if ('missingType' in resolved) {
110
- output_1.default.error(` ${label}: missing "${resolved.missingType}"`);
111
- errors++;
112
- continue;
113
- }
114
- if ('unknownType' in resolved) {
115
- output_1.default.error(` ${label}: unknown ${resolved.prop} "${resolved.unknownType}"`);
116
- errors++;
117
- continue;
118
- }
119
- const result = (0, schemaUtils_1.validateAgainstDef)(resolved.defName, item);
120
- if (result.valid) {
121
- output_1.default.green(` ${label}`);
122
- }
123
- else {
124
- errors += result.errors.length;
125
- output_1.default.error(` ${label}`);
126
- outputErrors(result, ' ');
127
- }
128
- }
129
- return errors;
130
- }
131
- function validateObjectSection(defs, label, value, refName) {
132
- const resolved = resolveDef(defs, refName, value);
133
- if ('missingType' in resolved) {
134
- output_1.default.error(label);
135
- output_1.default.muted(` missing "${resolved.missingType}"`);
136
- return 1;
137
- }
138
- if ('unknownType' in resolved) {
139
- output_1.default.error(label);
140
- output_1.default.muted(` unknown ${resolved.prop} "${resolved.unknownType}"`);
141
- return 1;
142
- }
143
- const result = (0, schemaUtils_1.validateAgainstDef)(resolved.defName, value);
144
- if (result.valid) {
145
- output_1.default.green(label);
146
- return 0;
147
- }
148
- output_1.default.error(label);
149
- outputErrors(result, ' ');
150
- return result.errors.length;
151
- }
152
- function validateSinglePipeline(parsed, label) {
153
- let errors = 0;
154
- const defs = (0, schemaUtils_1.getAllDefs)();
155
- const pipelineDef = defs['PipelineYaml'];
156
- const props = pipelineDef?.properties || {};
157
- const allKnownKeys = new Set([...Object.keys(props), ...SCHEMA_OMITTED_TOP_LEVEL_KEYS]);
158
- const unknownKeys = Object.keys(parsed).filter((k) => !allKnownKeys.has(k));
159
- if (unknownKeys.length > 0) {
160
- output_1.default.yellow(`${label}Unknown top-level keys: ${unknownKeys.join(', ')}`);
161
- }
162
- const { itemSections, objectSections, settingsProps } = classifySections(props);
163
- if (Object.keys(settingsProps).length > 0) {
164
- const settingsData = {};
165
- for (const key of Object.keys(settingsProps)) {
166
- if (key in parsed)
167
- settingsData[key] = parsed[key];
168
- }
169
- const rawSchema = (0, schemaUtils_1.loadRawSchema)();
170
- const result = (0, schemaUtils_1.validateAgainstSchema)({
171
- type: 'object',
172
- properties: settingsProps,
173
- required: (pipelineDef?.required || []).filter((r) => r in settingsProps),
174
- $defs: rawSchema.$defs,
175
- }, settingsData);
176
- if (result.valid) {
177
- output_1.default.green(`${label}Pipeline settings`);
178
- }
179
- else {
180
- errors += result.errors.length;
181
- output_1.default.error(`${label}Pipeline settings`);
182
- outputErrors(result, ' ');
183
- }
184
- }
185
- const itemByKey = new Map(itemSections.map((s) => [s.key, s.defName]));
186
- const objByKey = new Map(objectSections.map((s) => [s.key, s.defName]));
187
- for (const key of Object.keys(props)) {
188
- if (!(key in parsed))
189
- continue;
190
- const value = parsed[key];
191
- const header = `${label}${prettifyKey(key)}`;
192
- if (itemByKey.has(key)) {
193
- if (!Array.isArray(value))
194
- continue;
195
- output_1.default.blue(header);
196
- errors += validateItemSection(defs, value, itemByKey.get(key));
197
- }
198
- else if (objByKey.has(key)) {
199
- if (value === null || typeof value !== 'object' || Array.isArray(value))
200
- continue;
201
- errors += validateObjectSection(defs, header, value, objByKey.get(key));
202
- }
203
- }
204
- return errors;
205
- }
206
- function validatePipelineFile(file) {
207
- const filePath = (0, path_1.resolve)(file);
208
- if (!(0, fs_1.existsSync)(filePath)) {
209
- output_1.default.exitError((0, texts_1.ERR_YAML_VALIDATE_FILE_NOT_FOUND)(file));
210
- return;
211
- }
212
- const YAML = require('yaml');
213
- const content = (0, fs_1.readFileSync)(filePath, 'utf8');
214
- let parsed;
215
- try {
216
- parsed = YAML.parse(content);
217
- }
218
- catch (e) {
219
- output_1.default.exitError(`YAML parse error: ${e.message}`);
220
- return;
221
- }
222
- if (!parsed || typeof parsed !== 'object') {
223
- output_1.default.exitError('Invalid pipeline YAML: expected an array of pipeline objects');
224
- return;
225
- }
226
- if (!Array.isArray(parsed)) {
227
- output_1.default.exitError('Invalid pipeline YAML: expected an array (e.g. "- pipeline: my-pipeline"), got a plain object');
228
- return;
229
- }
230
- if (parsed.length === 0) {
231
- output_1.default.exitError('Invalid pipeline YAML: empty array');
232
- return;
233
- }
234
- let errors = 0;
235
- for (let i = 0; i < parsed.length; i++) {
236
- const pipeline = parsed[i];
237
- if (!pipeline || typeof pipeline !== 'object' || Array.isArray(pipeline)) {
238
- output_1.default.error(` Pipeline #${i + 1}: expected an object`);
239
- errors++;
240
- continue;
241
- }
242
- const pipelineLabel = parsed.length > 1 ? `[${pipeline.pipeline || i + 1}] ` : '';
243
- errors += validateSinglePipeline(pipeline, pipelineLabel);
244
- }
245
- output_1.default.normal('');
246
- if (errors > 0) {
247
- output_1.default.exitError(`${texts_1.ERR_YAML_VALIDATE_FAILED} (${errors} ${errors === 1 ? 'error' : 'errors'})`);
248
- }
249
- else {
250
- output_1.default.exitSuccess(texts_1.TXT_YAML_VALIDATE_ALL_PASS);
251
- }
252
- }
253
- const commandYamlValidate = (0, utils_1.newCommand)('validate', texts_1.DESC_COMMAND_YAML_VALIDATE);
254
- commandYamlValidate.argument('<file>', texts_1.OPTION_YAML_VALIDATE_FILE);
255
- commandYamlValidate.action(async (file) => {
256
- await (0, schemaUtils_1.ensureYamlSchema)();
257
- validatePipelineFile(file);
258
- });
259
- exports.default = commandYamlValidate;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const utils_1 = require("../utils");
7
- const texts_1 = require("../texts");
8
- const pipeline_1 = __importDefault(require("./yaml/pipeline"));
9
- const actions_1 = __importDefault(require("./yaml/actions"));
10
- const validate_1 = __importDefault(require("./yaml/validate"));
11
- const init_1 = __importDefault(require("./yaml/init"));
12
- const commandYaml = (0, utils_1.newCommand)('yaml', texts_1.DESC_COMMAND_YAML);
13
- commandYaml.addCommand(pipeline_1.default);
14
- commandYaml.addCommand(actions_1.default);
15
- commandYaml.addCommand(validate_1.default);
16
- commandYaml.addCommand(init_1.default);
17
- commandYaml.addHelpText('after', texts_1.EXAMPLE_YAML);
18
- exports.default = commandYaml;
@@ -1,82 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CACHE_TTL_MS = void 0;
7
- exports.cacheRoot = cacheRoot;
8
- exports.hashKey = hashKey;
9
- exports.cachePaths = cachePaths;
10
- exports.readMeta = readMeta;
11
- exports.isHardFresh = isHardFresh;
12
- exports.writeAtomic = writeAtomic;
13
- exports.refresh = refresh;
14
- const node_crypto_1 = require("node:crypto");
15
- const node_fs_1 = require("node:fs");
16
- const node_path_1 = __importDefault(require("node:path"));
17
- const undici_1 = require("undici");
18
- const utils_1 = require("./utils");
19
- exports.CACHE_TTL_MS = 60 * 60 * 1000; // 1h
20
- function cacheRoot() {
21
- const dir = node_path_1.default.join((0, utils_1.getHomeDirectory)(), 'cache');
22
- if (!(0, node_fs_1.existsSync)(dir))
23
- (0, node_fs_1.mkdirSync)(dir, { recursive: true });
24
- return dir;
25
- }
26
- function hashKey(input) {
27
- return (0, node_crypto_1.createHash)('sha256').update(input).digest('hex').slice(0, 16);
28
- }
29
- function cachePaths(subdir, url) {
30
- const dir = node_path_1.default.join(cacheRoot(), subdir);
31
- if (!(0, node_fs_1.existsSync)(dir))
32
- (0, node_fs_1.mkdirSync)(dir, { recursive: true });
33
- const key = hashKey(url);
34
- return {
35
- raw: node_path_1.default.join(dir, `${key}.json`),
36
- schema: node_path_1.default.join(dir, `${key}.v8`),
37
- meta: node_path_1.default.join(dir, `${key}.meta.json`),
38
- };
39
- }
40
- function readMeta(metaPath) {
41
- try {
42
- return JSON.parse((0, node_fs_1.readFileSync)(metaPath, 'utf8'));
43
- }
44
- catch {
45
- return {};
46
- }
47
- }
48
- function isHardFresh(meta, ttlMs = exports.CACHE_TTL_MS) {
49
- return !!meta.fetchedAt && Date.now() - meta.fetchedAt < ttlMs;
50
- }
51
- function writeAtomic(filePath, data) {
52
- const tmp = `${filePath}.${process.pid}.tmp`;
53
- (0, node_fs_1.writeFileSync)(tmp, data);
54
- (0, node_fs_1.renameSync)(tmp, filePath);
55
- }
56
- async function refresh(url, paths) {
57
- const hasRaw = (0, node_fs_1.existsSync)(paths.raw);
58
- const meta = hasRaw ? readMeta(paths.meta) : {};
59
- // The server serves a strong content-based ETag, so revalidate with If-None-Match.
60
- const headers = {};
61
- if (hasRaw && meta.etag)
62
- headers['if-none-match'] = meta.etag;
63
- try {
64
- const res = await (0, undici_1.request)(url, { headers });
65
- const etag = res.headers['etag'];
66
- if (res.statusCode === 304 && hasRaw) {
67
- await res.body.dump();
68
- writeAtomic(paths.meta, JSON.stringify({ etag: meta.etag, fetchedAt: Date.now() }));
69
- return 'unchanged';
70
- }
71
- if (res.statusCode >= 200 && res.statusCode < 300) {
72
- writeAtomic(paths.raw, await res.body.text());
73
- writeAtomic(paths.meta, JSON.stringify({ etag: typeof etag === 'string' ? etag : undefined, fetchedAt: Date.now() }));
74
- return 'updated';
75
- }
76
- await res.body.dump();
77
- }
78
- catch {
79
- // network error — fall back to the cached body if present
80
- }
81
- return hasRaw ? 'unchanged' : 'none';
82
- }