@signstack/cli 0.1.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.
Files changed (269) hide show
  1. package/README.md +458 -0
  2. package/bin/run.js +12 -0
  3. package/dist/apps/signstack-cli/schemas/asset.schema.json +220 -0
  4. package/dist/apps/signstack-cli/schemas/blueprint.schema.json +485 -0
  5. package/dist/apps/signstack-cli/schemas/jsonata-function.schema.json +185 -0
  6. package/dist/apps/signstack-cli/schemas/schema.schema.json +97 -0
  7. package/dist/apps/signstack-cli/schemas/template.schema.json +295 -0
  8. package/dist/apps/signstack-cli/src/commands/auth/login.d.ts +25 -0
  9. package/dist/apps/signstack-cli/src/commands/auth/login.js +229 -0
  10. package/dist/apps/signstack-cli/src/commands/auth/login.js.map +1 -0
  11. package/dist/apps/signstack-cli/src/commands/auth/logout.d.ts +10 -0
  12. package/dist/apps/signstack-cli/src/commands/auth/logout.js +59 -0
  13. package/dist/apps/signstack-cli/src/commands/auth/logout.js.map +1 -0
  14. package/dist/apps/signstack-cli/src/commands/auth/whoami.d.ts +9 -0
  15. package/dist/apps/signstack-cli/src/commands/auth/whoami.js +85 -0
  16. package/dist/apps/signstack-cli/src/commands/auth/whoami.js.map +1 -0
  17. package/dist/apps/signstack-cli/src/commands/generate.d.ts +51 -0
  18. package/dist/apps/signstack-cli/src/commands/generate.js +479 -0
  19. package/dist/apps/signstack-cli/src/commands/generate.js.map +1 -0
  20. package/dist/apps/signstack-cli/src/commands/preview.d.ts +24 -0
  21. package/dist/apps/signstack-cli/src/commands/preview.js +162 -0
  22. package/dist/apps/signstack-cli/src/commands/preview.js.map +1 -0
  23. package/dist/apps/signstack-cli/src/commands/pull.d.ts +28 -0
  24. package/dist/apps/signstack-cli/src/commands/pull.js +244 -0
  25. package/dist/apps/signstack-cli/src/commands/pull.js.map +1 -0
  26. package/dist/apps/signstack-cli/src/commands/push.d.ts +46 -0
  27. package/dist/apps/signstack-cli/src/commands/push.js +460 -0
  28. package/dist/apps/signstack-cli/src/commands/push.js.map +1 -0
  29. package/dist/apps/signstack-cli/src/commands/run.d.ts +22 -0
  30. package/dist/apps/signstack-cli/src/commands/run.js +126 -0
  31. package/dist/apps/signstack-cli/src/commands/run.js.map +1 -0
  32. package/dist/apps/signstack-cli/src/commands/test.d.ts +6 -0
  33. package/dist/apps/signstack-cli/src/commands/test.js +25 -0
  34. package/dist/apps/signstack-cli/src/commands/test.js.map +1 -0
  35. package/dist/apps/signstack-cli/src/commands/validate.d.ts +59 -0
  36. package/dist/apps/signstack-cli/src/commands/validate.js +558 -0
  37. package/dist/apps/signstack-cli/src/commands/validate.js.map +1 -0
  38. package/dist/apps/signstack-cli/src/index.d.ts +1 -0
  39. package/dist/apps/signstack-cli/src/index.js +2 -0
  40. package/dist/apps/signstack-cli/src/index.js.map +1 -0
  41. package/dist/apps/signstack-cli/src/lib/api-client.d.ts +77 -0
  42. package/dist/apps/signstack-cli/src/lib/api-client.js +269 -0
  43. package/dist/apps/signstack-cli/src/lib/api-client.js.map +1 -0
  44. package/dist/apps/signstack-cli/src/lib/base-command.d.ts +38 -0
  45. package/dist/apps/signstack-cli/src/lib/base-command.js +135 -0
  46. package/dist/apps/signstack-cli/src/lib/base-command.js.map +1 -0
  47. package/dist/apps/signstack-cli/src/lib/config.d.ts +47 -0
  48. package/dist/apps/signstack-cli/src/lib/config.js +106 -0
  49. package/dist/apps/signstack-cli/src/lib/config.js.map +1 -0
  50. package/dist/apps/signstack-cli/src/lib/entity-data-resolver.d.ts +31 -0
  51. package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js +107 -0
  52. package/dist/apps/signstack-cli/src/lib/entity-data-resolver.js.map +1 -0
  53. package/dist/apps/signstack-cli/src/lib/local-resource-loader.d.ts +72 -0
  54. package/dist/apps/signstack-cli/src/lib/local-resource-loader.js +238 -0
  55. package/dist/apps/signstack-cli/src/lib/local-resource-loader.js.map +1 -0
  56. package/dist/apps/signstack-cli/src/lib/path-utils.d.ts +4 -0
  57. package/dist/apps/signstack-cli/src/lib/path-utils.js +7 -0
  58. package/dist/apps/signstack-cli/src/lib/path-utils.js.map +1 -0
  59. package/dist/apps/signstack-cli/src/lib/payload-builder.d.ts +127 -0
  60. package/dist/apps/signstack-cli/src/lib/payload-builder.js +545 -0
  61. package/dist/apps/signstack-cli/src/lib/payload-builder.js.map +1 -0
  62. package/dist/apps/signstack-cli/src/lib/preview-handler.d.ts +95 -0
  63. package/dist/apps/signstack-cli/src/lib/preview-handler.js +611 -0
  64. package/dist/apps/signstack-cli/src/lib/preview-handler.js.map +1 -0
  65. package/dist/apps/signstack-cli/src/lib/preview-output-formatter.d.ts +63 -0
  66. package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js +198 -0
  67. package/dist/apps/signstack-cli/src/lib/preview-output-formatter.js.map +1 -0
  68. package/dist/apps/signstack-cli/src/lib/public-api-client.d.ts +13 -0
  69. package/dist/apps/signstack-cli/src/lib/public-api-client.js +39 -0
  70. package/dist/apps/signstack-cli/src/lib/public-api-client.js.map +1 -0
  71. package/dist/apps/signstack-cli/src/lib/resource-puller.d.ts +131 -0
  72. package/dist/apps/signstack-cli/src/lib/resource-puller.js +800 -0
  73. package/dist/apps/signstack-cli/src/lib/resource-puller.js.map +1 -0
  74. package/dist/apps/signstack-cli/src/lib/resource-pusher.d.ts +87 -0
  75. package/dist/apps/signstack-cli/src/lib/resource-pusher.js +361 -0
  76. package/dist/apps/signstack-cli/src/lib/resource-pusher.js.map +1 -0
  77. package/dist/apps/signstack-cli/src/lib/resource-scanner.d.ts +29 -0
  78. package/dist/apps/signstack-cli/src/lib/resource-scanner.js +101 -0
  79. package/dist/apps/signstack-cli/src/lib/resource-scanner.js.map +1 -0
  80. package/dist/apps/signstack-cli/src/lib/resource-validator.d.ts +44 -0
  81. package/dist/apps/signstack-cli/src/lib/resource-validator.js +158 -0
  82. package/dist/apps/signstack-cli/src/lib/resource-validator.js.map +1 -0
  83. package/dist/apps/signstack-cli/src/lib/run-handler.d.ts +47 -0
  84. package/dist/apps/signstack-cli/src/lib/run-handler.js +266 -0
  85. package/dist/apps/signstack-cli/src/lib/run-handler.js.map +1 -0
  86. package/dist/apps/signstack-cli/src/lib/safe-path.d.ts +28 -0
  87. package/dist/apps/signstack-cli/src/lib/safe-path.js +44 -0
  88. package/dist/apps/signstack-cli/src/lib/safe-path.js.map +1 -0
  89. package/dist/apps/signstack-cli/src/lib/scenario-file.d.ts +35 -0
  90. package/dist/apps/signstack-cli/src/lib/scenario-file.js +80 -0
  91. package/dist/apps/signstack-cli/src/lib/scenario-file.js.map +1 -0
  92. package/dist/apps/signstack-cli/src/lib/schema-validator.d.ts +8 -0
  93. package/dist/apps/signstack-cli/src/lib/schema-validator.js +39 -0
  94. package/dist/apps/signstack-cli/src/lib/schema-validator.js.map +1 -0
  95. package/dist/apps/signstack-cli/src/lib/url-validator.d.ts +17 -0
  96. package/dist/apps/signstack-cli/src/lib/url-validator.js +61 -0
  97. package/dist/apps/signstack-cli/src/lib/url-validator.js.map +1 -0
  98. package/dist/apps/signstack-cli/src/lib/yaml-document-parser.d.ts +25 -0
  99. package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js +133 -0
  100. package/dist/apps/signstack-cli/src/lib/yaml-document-parser.js.map +1 -0
  101. package/dist/apps/signstack-cli/src/lib/yaml-transforms.d.ts +3 -0
  102. package/dist/apps/signstack-cli/src/lib/yaml-transforms.js +32 -0
  103. package/dist/apps/signstack-cli/src/lib/yaml-transforms.js.map +1 -0
  104. package/dist/apps/signstack-cli/src/lib/yaml-writer.d.ts +47 -0
  105. package/dist/apps/signstack-cli/src/lib/yaml-writer.js +160 -0
  106. package/dist/apps/signstack-cli/src/lib/yaml-writer.js.map +1 -0
  107. package/dist/apps/signstack-cli/src/types/auth.types.d.ts +48 -0
  108. package/dist/apps/signstack-cli/src/types/auth.types.js +31 -0
  109. package/dist/apps/signstack-cli/src/types/auth.types.js.map +1 -0
  110. package/dist/apps/signstack-cli/src/types/schema.types.d.ts +14 -0
  111. package/dist/apps/signstack-cli/src/types/schema.types.js +16 -0
  112. package/dist/apps/signstack-cli/src/types/schema.types.js.map +1 -0
  113. package/dist/apps/signstack-cli/src/types/yaml.types.d.ts +144 -0
  114. package/dist/apps/signstack-cli/src/types/yaml.types.js +2 -0
  115. package/dist/apps/signstack-cli/src/types/yaml.types.js.map +1 -0
  116. package/dist/libs/common/base/src/index.d.ts +14 -0
  117. package/dist/libs/common/base/src/index.js +44 -0
  118. package/dist/libs/common/base/src/index.js.map +1 -0
  119. package/dist/libs/common/base/src/lib/address.util.d.ts +12 -0
  120. package/dist/libs/common/base/src/lib/address.util.js +55 -0
  121. package/dist/libs/common/base/src/lib/address.util.js.map +1 -0
  122. package/dist/libs/common/base/src/lib/country-code-data.d.ts +5 -0
  123. package/dist/libs/common/base/src/lib/country-code-data.js +1256 -0
  124. package/dist/libs/common/base/src/lib/country-code-data.js.map +1 -0
  125. package/dist/libs/common/base/src/lib/date.util.d.ts +13 -0
  126. package/dist/libs/common/base/src/lib/date.util.js +135 -0
  127. package/dist/libs/common/base/src/lib/date.util.js.map +1 -0
  128. package/dist/libs/common/base/src/lib/headers.d.ts +1 -0
  129. package/dist/libs/common/base/src/lib/headers.js +5 -0
  130. package/dist/libs/common/base/src/lib/headers.js.map +1 -0
  131. package/dist/libs/common/base/src/lib/jsonata.service.d.ts +32 -0
  132. package/dist/libs/common/base/src/lib/jsonata.service.js +207 -0
  133. package/dist/libs/common/base/src/lib/jsonata.service.js.map +1 -0
  134. package/dist/libs/common/base/src/lib/key-validation.constants.d.ts +37 -0
  135. package/dist/libs/common/base/src/lib/key-validation.constants.js +144 -0
  136. package/dist/libs/common/base/src/lib/key-validation.constants.js.map +1 -0
  137. package/dist/libs/common/base/src/lib/phone-util.d.ts +16 -0
  138. package/dist/libs/common/base/src/lib/phone-util.js +61 -0
  139. package/dist/libs/common/base/src/lib/phone-util.js.map +1 -0
  140. package/dist/libs/common/base/src/lib/schema-validation.util.d.ts +24 -0
  141. package/dist/libs/common/base/src/lib/schema-validation.util.js +155 -0
  142. package/dist/libs/common/base/src/lib/schema-validation.util.js.map +1 -0
  143. package/dist/libs/common/base/src/lib/string-builder.d.ts +48 -0
  144. package/dist/libs/common/base/src/lib/string-builder.js +90 -0
  145. package/dist/libs/common/base/src/lib/string-builder.js.map +1 -0
  146. package/dist/libs/common/base/src/lib/util.d.ts +20 -0
  147. package/dist/libs/common/base/src/lib/util.js +110 -0
  148. package/dist/libs/common/base/src/lib/util.js.map +1 -0
  149. package/dist/libs/signstack/base/schemas/asset.schema.json +220 -0
  150. package/dist/libs/signstack/base/schemas/blueprint.schema.json +485 -0
  151. package/dist/libs/signstack/base/schemas/jsonata-function.schema.json +185 -0
  152. package/dist/libs/signstack/base/schemas/schema.schema.json +97 -0
  153. package/dist/libs/signstack/base/schemas/template.schema.json +295 -0
  154. package/dist/libs/signstack/base/src/index.d.ts +28 -0
  155. package/dist/libs/signstack/base/src/index.js +32 -0
  156. package/dist/libs/signstack/base/src/index.js.map +1 -0
  157. package/dist/libs/signstack/base/src/lib/constants.d.ts +123 -0
  158. package/dist/libs/signstack/base/src/lib/constants.js +131 -0
  159. package/dist/libs/signstack/base/src/lib/constants.js.map +1 -0
  160. package/dist/libs/signstack/base/src/lib/hash.util.d.ts +58 -0
  161. package/dist/libs/signstack/base/src/lib/hash.util.js +90 -0
  162. package/dist/libs/signstack/base/src/lib/hash.util.js.map +1 -0
  163. package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.d.ts +29 -0
  164. package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js +93 -0
  165. package/dist/libs/signstack/base/src/lib/is-schema-renderable.util.js.map +1 -0
  166. package/dist/libs/signstack/base/src/lib/models/ai-chat.d.ts +41 -0
  167. package/dist/libs/signstack/base/src/lib/models/ai-chat.js +3 -0
  168. package/dist/libs/signstack/base/src/lib/models/ai-chat.js.map +1 -0
  169. package/dist/libs/signstack/base/src/lib/models/api-key.d.ts +54 -0
  170. package/dist/libs/signstack/base/src/lib/models/api-key.js +18 -0
  171. package/dist/libs/signstack/base/src/lib/models/api-key.js.map +1 -0
  172. package/dist/libs/signstack/base/src/lib/models/asset.d.ts +101 -0
  173. package/dist/libs/signstack/base/src/lib/models/asset.js +11 -0
  174. package/dist/libs/signstack/base/src/lib/models/asset.js.map +1 -0
  175. package/dist/libs/signstack/base/src/lib/models/auth.d.ts +142 -0
  176. package/dist/libs/signstack/base/src/lib/models/auth.js +35 -0
  177. package/dist/libs/signstack/base/src/lib/models/auth.js.map +1 -0
  178. package/dist/libs/signstack/base/src/lib/models/base.d.ts +134 -0
  179. package/dist/libs/signstack/base/src/lib/models/base.js +71 -0
  180. package/dist/libs/signstack/base/src/lib/models/base.js.map +1 -0
  181. package/dist/libs/signstack/base/src/lib/models/blueprint.d.ts +311 -0
  182. package/dist/libs/signstack/base/src/lib/models/blueprint.js +9 -0
  183. package/dist/libs/signstack/base/src/lib/models/blueprint.js.map +1 -0
  184. package/dist/libs/signstack/base/src/lib/models/file.d.ts +75 -0
  185. package/dist/libs/signstack/base/src/lib/models/file.js +9 -0
  186. package/dist/libs/signstack/base/src/lib/models/file.js.map +1 -0
  187. package/dist/libs/signstack/base/src/lib/models/jsonata-function.d.ts +111 -0
  188. package/dist/libs/signstack/base/src/lib/models/jsonata-function.js +19 -0
  189. package/dist/libs/signstack/base/src/lib/models/jsonata-function.js.map +1 -0
  190. package/dist/libs/signstack/base/src/lib/models/marketplace-listing.d.ts +132 -0
  191. package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js +22 -0
  192. package/dist/libs/signstack/base/src/lib/models/marketplace-listing.js.map +1 -0
  193. package/dist/libs/signstack/base/src/lib/models/membership.d.ts +127 -0
  194. package/dist/libs/signstack/base/src/lib/models/membership.js +22 -0
  195. package/dist/libs/signstack/base/src/lib/models/membership.js.map +1 -0
  196. package/dist/libs/signstack/base/src/lib/models/namespace.d.ts +87 -0
  197. package/dist/libs/signstack/base/src/lib/models/namespace.js +57 -0
  198. package/dist/libs/signstack/base/src/lib/models/namespace.js.map +1 -0
  199. package/dist/libs/signstack/base/src/lib/models/organization.d.ts +79 -0
  200. package/dist/libs/signstack/base/src/lib/models/organization.js +41 -0
  201. package/dist/libs/signstack/base/src/lib/models/organization.js.map +1 -0
  202. package/dist/libs/signstack/base/src/lib/models/render-job.d.ts +88 -0
  203. package/dist/libs/signstack/base/src/lib/models/render-job.js +3 -0
  204. package/dist/libs/signstack/base/src/lib/models/render-job.js.map +1 -0
  205. package/dist/libs/signstack/base/src/lib/models/resource-edge.d.ts +60 -0
  206. package/dist/libs/signstack/base/src/lib/models/resource-edge.js +202 -0
  207. package/dist/libs/signstack/base/src/lib/models/resource-edge.js.map +1 -0
  208. package/dist/libs/signstack/base/src/lib/models/scenario.d.ts +138 -0
  209. package/dist/libs/signstack/base/src/lib/models/scenario.js +14 -0
  210. package/dist/libs/signstack/base/src/lib/models/scenario.js.map +1 -0
  211. package/dist/libs/signstack/base/src/lib/models/schema.d.ts +131 -0
  212. package/dist/libs/signstack/base/src/lib/models/schema.js +44 -0
  213. package/dist/libs/signstack/base/src/lib/models/schema.js.map +1 -0
  214. package/dist/libs/signstack/base/src/lib/models/shareable-link.d.ts +215 -0
  215. package/dist/libs/signstack/base/src/lib/models/shareable-link.js +27 -0
  216. package/dist/libs/signstack/base/src/lib/models/shareable-link.js.map +1 -0
  217. package/dist/libs/signstack/base/src/lib/models/subscription.d.ts +279 -0
  218. package/dist/libs/signstack/base/src/lib/models/subscription.js +105 -0
  219. package/dist/libs/signstack/base/src/lib/models/subscription.js.map +1 -0
  220. package/dist/libs/signstack/base/src/lib/models/template.d.ts +248 -0
  221. package/dist/libs/signstack/base/src/lib/models/template.js +32 -0
  222. package/dist/libs/signstack/base/src/lib/models/template.js.map +1 -0
  223. package/dist/libs/signstack/base/src/lib/models/user.d.ts +30 -0
  224. package/dist/libs/signstack/base/src/lib/models/user.js +3 -0
  225. package/dist/libs/signstack/base/src/lib/models/user.js.map +1 -0
  226. package/dist/libs/signstack/base/src/lib/models/webhook.d.ts +223 -0
  227. package/dist/libs/signstack/base/src/lib/models/webhook.js +62 -0
  228. package/dist/libs/signstack/base/src/lib/models/webhook.js.map +1 -0
  229. package/dist/libs/signstack/base/src/lib/models/workflow.d.ts +917 -0
  230. package/dist/libs/signstack/base/src/lib/models/workflow.js +152 -0
  231. package/dist/libs/signstack/base/src/lib/models/workflow.js.map +1 -0
  232. package/dist/libs/signstack/base/src/lib/util.d.ts +92 -0
  233. package/dist/libs/signstack/base/src/lib/util.js +406 -0
  234. package/dist/libs/signstack/base/src/lib/util.js.map +1 -0
  235. package/dist/libs/signstack/base/src/lib/validation/dependency-graph.d.ts +94 -0
  236. package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js +446 -0
  237. package/dist/libs/signstack/base/src/lib/validation/dependency-graph.js.map +1 -0
  238. package/dist/libs/signstack/base/src/lib/validation/graph.types.d.ts +57 -0
  239. package/dist/libs/signstack/base/src/lib/validation/graph.types.js +8 -0
  240. package/dist/libs/signstack/base/src/lib/validation/graph.types.js.map +1 -0
  241. package/dist/libs/signstack/base/src/lib/validation/index.d.ts +9 -0
  242. package/dist/libs/signstack/base/src/lib/validation/index.js +23 -0
  243. package/dist/libs/signstack/base/src/lib/validation/index.js.map +1 -0
  244. package/dist/libs/signstack/base/src/lib/validation/resource-schemas.d.ts +3 -0
  245. package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js +27 -0
  246. package/dist/libs/signstack/base/src/lib/validation/resource-schemas.js.map +1 -0
  247. package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.d.ts +57 -0
  248. package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js +57 -0
  249. package/dist/libs/signstack/base/src/lib/validation/schema-validation.types.js.map +1 -0
  250. package/dist/libs/signstack/base/src/lib/validation/schema-validator.d.ts +38 -0
  251. package/dist/libs/signstack/base/src/lib/validation/schema-validator.js +146 -0
  252. package/dist/libs/signstack/base/src/lib/validation/schema-validator.js.map +1 -0
  253. package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.d.ts +22 -0
  254. package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js +69 -0
  255. package/dist/libs/signstack/base/src/lib/validation/validate-dependencies.js.map +1 -0
  256. package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.d.ts +37 -0
  257. package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js +250 -0
  258. package/dist/libs/signstack/base/src/lib/validation/validate-resource-tree.js.map +1 -0
  259. package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.d.ts +24 -0
  260. package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js +98 -0
  261. package/dist/libs/signstack/base/src/lib/validation/validate-template-inputs.js.map +1 -0
  262. package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.d.ts +12 -0
  263. package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js +50 -0
  264. package/dist/libs/signstack/base/src/lib/validation/yaml-document-utils.js.map +1 -0
  265. package/dist/libs/signstack/base/src/lib/yaml-spec-converter.d.ts +101 -0
  266. package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js +998 -0
  267. package/dist/libs/signstack/base/src/lib/yaml-spec-converter.js.map +1 -0
  268. package/oclif.manifest.json +822 -0
  269. package/package.json +101 -0
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getResourceSchemaValidator = exports.validateResourceTree = exports.parseYamlsToDocuments = exports.parseYamlToDocument = exports.validateTemplateInputs = exports.validateDependencies = exports.extractReferences = exports.DependencyGraph = exports.SchemaValidator = void 0;
4
+ const tslib_1 = require("tslib");
5
+ tslib_1.__exportStar(require("./schema-validation.types"), exports);
6
+ var schema_validator_1 = require("./schema-validator");
7
+ Object.defineProperty(exports, "SchemaValidator", { enumerable: true, get: function () { return schema_validator_1.SchemaValidator; } });
8
+ tslib_1.__exportStar(require("./graph.types"), exports);
9
+ var dependency_graph_1 = require("./dependency-graph");
10
+ Object.defineProperty(exports, "DependencyGraph", { enumerable: true, get: function () { return dependency_graph_1.DependencyGraph; } });
11
+ Object.defineProperty(exports, "extractReferences", { enumerable: true, get: function () { return dependency_graph_1.extractReferences; } });
12
+ var validate_dependencies_1 = require("./validate-dependencies");
13
+ Object.defineProperty(exports, "validateDependencies", { enumerable: true, get: function () { return validate_dependencies_1.validateDependencies; } });
14
+ var validate_template_inputs_1 = require("./validate-template-inputs");
15
+ Object.defineProperty(exports, "validateTemplateInputs", { enumerable: true, get: function () { return validate_template_inputs_1.validateTemplateInputs; } });
16
+ var yaml_document_utils_1 = require("./yaml-document-utils");
17
+ Object.defineProperty(exports, "parseYamlToDocument", { enumerable: true, get: function () { return yaml_document_utils_1.parseYamlToDocument; } });
18
+ Object.defineProperty(exports, "parseYamlsToDocuments", { enumerable: true, get: function () { return yaml_document_utils_1.parseYamlsToDocuments; } });
19
+ var validate_resource_tree_1 = require("./validate-resource-tree");
20
+ Object.defineProperty(exports, "validateResourceTree", { enumerable: true, get: function () { return validate_resource_tree_1.validateResourceTree; } });
21
+ var resource_schemas_1 = require("./resource-schemas");
22
+ Object.defineProperty(exports, "getResourceSchemaValidator", { enumerable: true, get: function () { return resource_schemas_1.getResourceSchemaValidator; } });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../../libs/signstack/base/src/lib/validation/index.ts"],"names":[],"mappings":";;;;AAAA,oEAA0C;AAC1C,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,wDAA8B;AAC9B,uDAAwE;AAA/D,mHAAA,eAAe,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAC3C,iEAIiC;AAH/B,6HAAA,oBAAoB,OAAA;AAItB,uEAIoC;AAHlC,kIAAA,sBAAsB,OAAA;AAIxB,6DAAmF;AAA1E,0HAAA,mBAAmB,OAAA;AAAE,4HAAA,qBAAqB,OAAA;AACnD,mEAKkC;AAJhC,8HAAA,oBAAoB,OAAA;AAKtB,uDAAgE;AAAvD,8HAAA,0BAA0B,OAAA"}
@@ -0,0 +1,3 @@
1
+ import { SchemaValidator } from './schema-validator';
2
+ /** Get a shared SchemaValidator pre-loaded with all resource schemas. */
3
+ export declare function getResourceSchemaValidator(): SchemaValidator;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getResourceSchemaValidator = getResourceSchemaValidator;
4
+ const tslib_1 = require("tslib");
5
+ const schema_validation_types_1 = require("./schema-validation.types");
6
+ const schema_validator_1 = require("./schema-validator");
7
+ const blueprint_schema_json_1 = tslib_1.__importDefault(require("../../../schemas/blueprint.schema.json"));
8
+ const template_schema_json_1 = tslib_1.__importDefault(require("../../../schemas/template.schema.json"));
9
+ const schema_schema_json_1 = tslib_1.__importDefault(require("../../../schemas/schema.schema.json"));
10
+ const asset_schema_json_1 = tslib_1.__importDefault(require("../../../schemas/asset.schema.json"));
11
+ const jsonata_function_schema_json_1 = tslib_1.__importDefault(require("../../../schemas/jsonata-function.schema.json"));
12
+ const SCHEMAS = new Map([
13
+ [schema_validation_types_1.SchemaKind.Blueprint, blueprint_schema_json_1.default],
14
+ [schema_validation_types_1.SchemaKind.Template, template_schema_json_1.default],
15
+ [schema_validation_types_1.SchemaKind.Schema, schema_schema_json_1.default],
16
+ [schema_validation_types_1.SchemaKind.Asset, asset_schema_json_1.default],
17
+ [schema_validation_types_1.SchemaKind.JsonataFunction, jsonata_function_schema_json_1.default],
18
+ ]);
19
+ let _validator = null;
20
+ /** Get a shared SchemaValidator pre-loaded with all resource schemas. */
21
+ function getResourceSchemaValidator() {
22
+ if (!_validator) {
23
+ _validator = new schema_validator_1.SchemaValidator(SCHEMAS);
24
+ }
25
+ return _validator;
26
+ }
27
+ //# sourceMappingURL=resource-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-schemas.js","sourceRoot":"","sources":["../../../../../../../../../libs/signstack/base/src/lib/validation/resource-schemas.ts"],"names":[],"mappings":";;AAoBA,gEAKC;;AAzBD,uEAAuD;AACvD,yDAAqD;AAErD,2GAAqE;AACrE,yGAAmE;AACnE,qGAA+D;AAC/D,mGAA6D;AAC7D,yHAAkF;AAElF,MAAM,OAAO,GAAG,IAAI,GAAG,CAAqB;IAC1C,CAAC,oCAAU,CAAC,SAAS,EAAE,+BAAe,CAAC;IACvC,CAAC,oCAAU,CAAC,QAAQ,EAAE,8BAAc,CAAC;IACrC,CAAC,oCAAU,CAAC,MAAM,EAAE,4BAAY,CAAC;IACjC,CAAC,oCAAU,CAAC,KAAK,EAAE,2BAAW,CAAC;IAC/B,CAAC,oCAAU,CAAC,eAAe,EAAE,sCAAqB,CAAC;CACpD,CAAC,CAAC;AAEH,IAAI,UAAU,GAA2B,IAAI,CAAC;AAE9C,yEAAyE;AACzE,SAAgB,0BAA0B;IACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,IAAI,kCAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Shared SignStack YAML validation types.
3
+ * Used by both the CLI and the backend API for schema validation.
4
+ */
5
+ /** Resource kinds that have corresponding JSON schemas */
6
+ export declare enum SchemaKind {
7
+ Blueprint = "Blueprint",
8
+ Template = "Template",
9
+ Schema = "Schema",
10
+ Asset = "Asset",
11
+ JsonataFunction = "JsonataFunction"
12
+ }
13
+ /** Maps each SchemaKind to its JSON schema filename */
14
+ export declare const SCHEMA_FILE_MAP: Record<SchemaKind, string>;
15
+ /** Check if a string is a valid SchemaKind */
16
+ export declare function isSchemaKind(kind: string): kind is SchemaKind;
17
+ /** Get all available SchemaKind values */
18
+ export declare function getAvailableSchemaKinds(): SchemaKind[];
19
+ /** Categories of validation errors */
20
+ export declare enum ValidationErrorKeyword {
21
+ KindDetection = "kind-detection",
22
+ SchemaLoad = "schema-load",
23
+ FileRead = "file-read",
24
+ YamlParse = "yaml-parse",
25
+ EmptyFile = "empty-file",
26
+ Type = "type",
27
+ DependencyMissing = "dependency-missing",
28
+ CircularDependency = "circular-dependency",
29
+ FileReferenceMissing = "file-reference-missing",
30
+ DraftDependency = "draft-dependency",
31
+ Enum = "enum",
32
+ AdditionalProperties = "additionalProperties",
33
+ Pattern = "pattern",
34
+ PropertyNames = "propertyNames",
35
+ Required = "required"
36
+ }
37
+ /** A single validation error */
38
+ export interface ValidationError {
39
+ path: string;
40
+ message: string;
41
+ keyword: string;
42
+ params?: Record<string, unknown>;
43
+ }
44
+ /** Result of validating a single resource */
45
+ export interface ValidationResult {
46
+ valid: boolean;
47
+ errors: ValidationError[];
48
+ schemaKind: SchemaKind | 'unknown';
49
+ /** File path — set by CLI, empty string for backend usage */
50
+ filePath: string;
51
+ /** Document index for multi-document YAML files */
52
+ documentIndex?: number;
53
+ /** Resource metadata.key for display */
54
+ resourceKey?: string;
55
+ /** Resource metadata.version for display */
56
+ resourceVersion?: string;
57
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * Shared SignStack YAML validation types.
4
+ * Used by both the CLI and the backend API for schema validation.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ValidationErrorKeyword = exports.SCHEMA_FILE_MAP = exports.SchemaKind = void 0;
8
+ exports.isSchemaKind = isSchemaKind;
9
+ exports.getAvailableSchemaKinds = getAvailableSchemaKinds;
10
+ /** Resource kinds that have corresponding JSON schemas */
11
+ var SchemaKind;
12
+ (function (SchemaKind) {
13
+ SchemaKind["Blueprint"] = "Blueprint";
14
+ SchemaKind["Template"] = "Template";
15
+ SchemaKind["Schema"] = "Schema";
16
+ SchemaKind["Asset"] = "Asset";
17
+ SchemaKind["JsonataFunction"] = "JsonataFunction";
18
+ })(SchemaKind || (exports.SchemaKind = SchemaKind = {}));
19
+ /** Maps each SchemaKind to its JSON schema filename */
20
+ exports.SCHEMA_FILE_MAP = {
21
+ [SchemaKind.Blueprint]: 'blueprint.schema.json',
22
+ [SchemaKind.Template]: 'template.schema.json',
23
+ [SchemaKind.Schema]: 'schema.schema.json',
24
+ [SchemaKind.Asset]: 'asset.schema.json',
25
+ [SchemaKind.JsonataFunction]: 'jsonata-function.schema.json',
26
+ };
27
+ /** Check if a string is a valid SchemaKind */
28
+ function isSchemaKind(kind) {
29
+ return Object.values(SchemaKind).includes(kind);
30
+ }
31
+ /** Get all available SchemaKind values */
32
+ function getAvailableSchemaKinds() {
33
+ return Object.values(SchemaKind);
34
+ }
35
+ /** Categories of validation errors */
36
+ var ValidationErrorKeyword;
37
+ (function (ValidationErrorKeyword) {
38
+ // Custom SignStack keywords
39
+ ValidationErrorKeyword["KindDetection"] = "kind-detection";
40
+ ValidationErrorKeyword["SchemaLoad"] = "schema-load";
41
+ ValidationErrorKeyword["FileRead"] = "file-read";
42
+ ValidationErrorKeyword["YamlParse"] = "yaml-parse";
43
+ ValidationErrorKeyword["EmptyFile"] = "empty-file";
44
+ ValidationErrorKeyword["Type"] = "type";
45
+ // Dependency graph validation
46
+ ValidationErrorKeyword["DependencyMissing"] = "dependency-missing";
47
+ ValidationErrorKeyword["CircularDependency"] = "circular-dependency";
48
+ ValidationErrorKeyword["FileReferenceMissing"] = "file-reference-missing";
49
+ ValidationErrorKeyword["DraftDependency"] = "draft-dependency";
50
+ // AJV schema validation keywords (used for error message enhancement)
51
+ ValidationErrorKeyword["Enum"] = "enum";
52
+ ValidationErrorKeyword["AdditionalProperties"] = "additionalProperties";
53
+ ValidationErrorKeyword["Pattern"] = "pattern";
54
+ ValidationErrorKeyword["PropertyNames"] = "propertyNames";
55
+ ValidationErrorKeyword["Required"] = "required";
56
+ })(ValidationErrorKeyword || (exports.ValidationErrorKeyword = ValidationErrorKeyword = {}));
57
+ //# sourceMappingURL=schema-validation.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validation.types.js","sourceRoot":"","sources":["../../../../../../../../../libs/signstack/base/src/lib/validation/schema-validation.types.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAqBH,oCAEC;AAGD,0DAEC;AA1BD,0DAA0D;AAC1D,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,qCAAuB,CAAA;IACvB,mCAAqB,CAAA;IACrB,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,iDAAmC,CAAA;AACrC,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AAED,uDAAuD;AAC1C,QAAA,eAAe,GAA+B;IACzD,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,uBAAuB;IAC/C,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,sBAAsB;IAC7C,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,oBAAoB;IACzC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,mBAAmB;IACvC,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,8BAA8B;CAC7D,CAAC;AAEF,8CAA8C;AAC9C,SAAgB,YAAY,CAAC,IAAY;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAkB,CAAC,CAAC;AAChE,CAAC;AAED,0CAA0C;AAC1C,SAAgB,uBAAuB;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACnC,CAAC;AAED,sCAAsC;AACtC,IAAY,sBAmBX;AAnBD,WAAY,sBAAsB;IAChC,4BAA4B;IAC5B,0DAAgC,CAAA;IAChC,oDAA0B,CAAA;IAC1B,gDAAsB,CAAA;IACtB,kDAAwB,CAAA;IACxB,kDAAwB,CAAA;IACxB,uCAAa,CAAA;IACb,8BAA8B;IAC9B,kEAAwC,CAAA;IACxC,oEAA0C,CAAA;IAC1C,yEAA+C,CAAA;IAC/C,8DAAoC,CAAA;IACpC,sEAAsE;IACtE,uCAAa,CAAA;IACb,uEAA6C,CAAA;IAC7C,6CAAmB,CAAA;IACnB,yDAA+B,CAAA;IAC/B,+CAAqB,CAAA;AACvB,CAAC,EAnBW,sBAAsB,sCAAtB,sBAAsB,QAmBjC"}
@@ -0,0 +1,38 @@
1
+ import { SchemaKind, type ValidationResult } from './schema-validation.types';
2
+ /**
3
+ * Framework-agnostic schema validator for SignStack YAML resources.
4
+ * Accepts pre-loaded JSON schema objects and validates parsed content against them.
5
+ *
6
+ * File I/O is the caller's responsibility — this class is pure validation logic
7
+ * with no Node.js built-in dependencies, so it can be used in any environment.
8
+ *
9
+ * Used by:
10
+ * - CLI: loads schema files from disk, passes them here
11
+ * - Backend: loads schema files from disk, passes them here
12
+ */
13
+ export declare class SchemaValidator {
14
+ private readonly ajv;
15
+ private readonly schemas;
16
+ constructor(schemas?: Map<SchemaKind, object> | Record<SchemaKind, object>);
17
+ /**
18
+ * Register a JSON schema for a given resource kind.
19
+ * Can be called after construction to lazily add schemas.
20
+ */
21
+ addSchema(kind: SchemaKind, schema: object): void;
22
+ /**
23
+ * Detect the schema kind from parsed content by reading the 'kind' field.
24
+ */
25
+ detectSchemaKind(content: Record<string, unknown>): SchemaKind | null;
26
+ /**
27
+ * Validate parsed content against the appropriate JSON schema.
28
+ *
29
+ * @param content Parsed YAML/JSON object to validate
30
+ * @param filePath File path for error reporting (use '' for non-file contexts)
31
+ * @param schemaKind Optional override — skips auto-detection
32
+ * @param documentIndex Optional index for multi-document YAML
33
+ */
34
+ validate(content: Record<string, unknown>, filePath?: string, schemaKind?: SchemaKind, documentIndex?: number): ValidationResult;
35
+ private formatErrors;
36
+ private formatSingleError;
37
+ private createErrorResult;
38
+ }
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaValidator = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const _2020_1 = tslib_1.__importDefault(require("ajv/dist/2020"));
6
+ const ajv_formats_1 = tslib_1.__importDefault(require("ajv-formats"));
7
+ const schema_validation_types_1 = require("./schema-validation.types");
8
+ /** Default error message when validation fails without a specific message */
9
+ const DEFAULT_ERROR_MESSAGE = 'Unknown validation error';
10
+ /** AJV configuration — shared across CLI and backend */
11
+ const AJV_OPTIONS = {
12
+ allErrors: true,
13
+ strict: true,
14
+ strictRequired: false,
15
+ strictTypes: false,
16
+ verbose: true,
17
+ };
18
+ /**
19
+ * Framework-agnostic schema validator for SignStack YAML resources.
20
+ * Accepts pre-loaded JSON schema objects and validates parsed content against them.
21
+ *
22
+ * File I/O is the caller's responsibility — this class is pure validation logic
23
+ * with no Node.js built-in dependencies, so it can be used in any environment.
24
+ *
25
+ * Used by:
26
+ * - CLI: loads schema files from disk, passes them here
27
+ * - Backend: loads schema files from disk, passes them here
28
+ */
29
+ class SchemaValidator {
30
+ ajv;
31
+ schemas = new Map();
32
+ constructor(schemas) {
33
+ this.ajv = new _2020_1.default(AJV_OPTIONS);
34
+ (0, ajv_formats_1.default)(this.ajv);
35
+ if (schemas) {
36
+ if (schemas instanceof Map) {
37
+ schemas.forEach((schema, kind) => this.schemas.set(kind, schema));
38
+ }
39
+ else {
40
+ for (const [kind, schema] of Object.entries(schemas)) {
41
+ this.schemas.set(kind, schema);
42
+ }
43
+ }
44
+ }
45
+ }
46
+ /**
47
+ * Register a JSON schema for a given resource kind.
48
+ * Can be called after construction to lazily add schemas.
49
+ */
50
+ addSchema(kind, schema) {
51
+ this.schemas.set(kind, schema);
52
+ }
53
+ /**
54
+ * Detect the schema kind from parsed content by reading the 'kind' field.
55
+ */
56
+ detectSchemaKind(content) {
57
+ const kind = content['kind'];
58
+ if (typeof kind !== 'string')
59
+ return null;
60
+ return (0, schema_validation_types_1.isSchemaKind)(kind) ? kind : null;
61
+ }
62
+ /**
63
+ * Validate parsed content against the appropriate JSON schema.
64
+ *
65
+ * @param content Parsed YAML/JSON object to validate
66
+ * @param filePath File path for error reporting (use '' for non-file contexts)
67
+ * @param schemaKind Optional override — skips auto-detection
68
+ * @param documentIndex Optional index for multi-document YAML
69
+ */
70
+ validate(content, filePath = '', schemaKind, documentIndex) {
71
+ // 1. Detect or use provided schema kind
72
+ const detectedKind = schemaKind ?? this.detectSchemaKind(content);
73
+ if (!detectedKind) {
74
+ const availableKinds = (0, schema_validation_types_1.getAvailableSchemaKinds)().join(', ');
75
+ return this.createErrorResult(filePath, `Unable to detect schema kind. The 'kind' field is missing or invalid. Available kinds: ${availableKinds}`, schema_validation_types_1.ValidationErrorKeyword.KindDetection, 'unknown', documentIndex);
76
+ }
77
+ // 2. Look up the pre-loaded JSON schema
78
+ const schema = this.schemas.get(detectedKind);
79
+ if (!schema) {
80
+ return this.createErrorResult(filePath, `No schema registered for kind '${detectedKind}'. Register it with addSchema() or pass it in the constructor.`, schema_validation_types_1.ValidationErrorKeyword.SchemaLoad, detectedKind, documentIndex);
81
+ }
82
+ // 3. Compile and validate
83
+ const validateFn = this.ajv.compile(schema);
84
+ const valid = validateFn(content) === true;
85
+ // 4. Extract metadata for display
86
+ const metadata = content['metadata'];
87
+ const resourceKey = metadata?.['key'];
88
+ const resourceVersion = metadata?.['version'];
89
+ return {
90
+ valid,
91
+ errors: valid ? [] : this.formatErrors(validateFn.errors),
92
+ schemaKind: detectedKind,
93
+ filePath,
94
+ documentIndex,
95
+ resourceKey,
96
+ resourceVersion,
97
+ };
98
+ }
99
+ // ─── Private helpers ───────────────────────────────────────────────
100
+ formatErrors(errors) {
101
+ if (!errors?.length)
102
+ return [];
103
+ return errors.map((error) => this.formatSingleError(error));
104
+ }
105
+ formatSingleError(error) {
106
+ let message = error.message ?? DEFAULT_ERROR_MESSAGE;
107
+ const params = error.params;
108
+ // Enhance messages for common AJV validation keywords
109
+ if (error.keyword === schema_validation_types_1.ValidationErrorKeyword.Enum && params?.['allowedValues']) {
110
+ const allowed = params['allowedValues']
111
+ .map((v) => JSON.stringify(v))
112
+ .join(', ');
113
+ message = `${message}. Allowed values: ${allowed}`;
114
+ }
115
+ else if (error.keyword === schema_validation_types_1.ValidationErrorKeyword.AdditionalProperties && params?.['additionalProperty']) {
116
+ message = `Unknown property '${params['additionalProperty']}'. ${message}`;
117
+ }
118
+ else if (error.keyword === schema_validation_types_1.ValidationErrorKeyword.Pattern && params?.['pattern']) {
119
+ const value = error.data;
120
+ const valuePart = value != null ? ` (got '${value}')` : '';
121
+ message = `${message}${valuePart}. Expected pattern: ${params['pattern']}`;
122
+ }
123
+ else if (error.keyword === schema_validation_types_1.ValidationErrorKeyword.PropertyNames && params?.['propertyName']) {
124
+ const name = params['propertyName'];
125
+ message = `Invalid property name '${name}' at ${error.instancePath || '/'}. Property names must be snake_case (e.g., my_key)`;
126
+ }
127
+ const instancePath = error.instancePath;
128
+ return {
129
+ path: instancePath || '/',
130
+ message,
131
+ keyword: error.keyword,
132
+ params,
133
+ };
134
+ }
135
+ createErrorResult(filePath, message, keyword, schemaKind, documentIndex) {
136
+ return {
137
+ valid: false,
138
+ errors: [{ path: '/', message, keyword }],
139
+ schemaKind,
140
+ filePath,
141
+ documentIndex,
142
+ };
143
+ }
144
+ }
145
+ exports.SchemaValidator = SchemaValidator;
146
+ //# sourceMappingURL=schema-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../../../../../../../../../libs/signstack/base/src/lib/validation/schema-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { TemplateInputValidationError } from './validate-template-inputs';
2
+ export interface DependencyValidationError {
3
+ resource: string;
4
+ dependency: string;
5
+ message: string;
6
+ }
7
+ export interface DependencyValidationResult {
8
+ valid: boolean;
9
+ errors: DependencyValidationError[];
10
+ templateInputErrors?: TemplateInputValidationError[];
11
+ }
12
+ /**
13
+ * Validate cross-resource dependencies from a list of YAML strings.
14
+ *
15
+ * Parses all YAMLs, builds a dependency graph, and checks for:
16
+ * - Missing dependencies
17
+ * - Circular dependencies
18
+ * - Draft dependency violations (versioned resources depending on drafts)
19
+ *
20
+ * When duplicate ResourceIds exist, the last occurrence wins.
21
+ */
22
+ export declare function validateDependencies(yamls: string[]): DependencyValidationResult;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateDependencies = validateDependencies;
4
+ const dependency_graph_1 = require("./dependency-graph");
5
+ const yaml_document_utils_1 = require("./yaml-document-utils");
6
+ const validate_template_inputs_1 = require("./validate-template-inputs");
7
+ /**
8
+ * Validate cross-resource dependencies from a list of YAML strings.
9
+ *
10
+ * Parses all YAMLs, builds a dependency graph, and checks for:
11
+ * - Missing dependencies
12
+ * - Circular dependencies
13
+ * - Draft dependency violations (versioned resources depending on drafts)
14
+ *
15
+ * When duplicate ResourceIds exist, the last occurrence wins.
16
+ */
17
+ function validateDependencies(yamls) {
18
+ const errors = [];
19
+ // Parse and deduplicate by ResourceId (last occurrence wins)
20
+ const docMap = new Map();
21
+ for (const yaml of yamls) {
22
+ const doc = (0, yaml_document_utils_1.parseYamlToDocument)(yaml);
23
+ if (doc) {
24
+ docMap.set(doc.id, doc);
25
+ }
26
+ }
27
+ const docs = Array.from(docMap.values());
28
+ if (docs.length === 0) {
29
+ return { valid: true, errors: [] };
30
+ }
31
+ const graph = dependency_graph_1.DependencyGraph.fromDocuments(docs);
32
+ // Check for missing dependencies
33
+ const missing = graph.getMissingDependencies();
34
+ for (const [resourceId, missingDeps] of missing) {
35
+ for (const depId of missingDeps) {
36
+ errors.push({
37
+ resource: resourceId,
38
+ dependency: depId,
39
+ message: `Resource "${resourceId}" references "${depId}" which does not exist in the provided resources.`,
40
+ });
41
+ }
42
+ }
43
+ // Check for circular dependencies
44
+ const cycles = graph.detectCycles();
45
+ for (const cycle of cycles) {
46
+ errors.push({
47
+ resource: cycle[0],
48
+ dependency: cycle[cycle.length - 1],
49
+ message: `Circular dependency detected: ${cycle.join(' → ')}`,
50
+ });
51
+ }
52
+ // Check for draft dependency violations
53
+ const draftErrors = graph.validateDraftDependencies();
54
+ for (const err of draftErrors) {
55
+ errors.push({
56
+ resource: err.sourceId,
57
+ dependency: err.dependencyId,
58
+ message: err.message,
59
+ });
60
+ }
61
+ // Check for template input validation
62
+ const templateInputValidation = (0, validate_template_inputs_1.validateTemplateInputs)(yamls);
63
+ return {
64
+ valid: errors.length === 0 && templateInputValidation.valid,
65
+ errors,
66
+ templateInputErrors: templateInputValidation.errors,
67
+ };
68
+ }
69
+ //# sourceMappingURL=validate-dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-dependencies.js","sourceRoot":"","sources":["../../../../../../../../../libs/signstack/base/src/lib/validation/validate-dependencies.ts"],"names":[],"mappings":";;AA2BA,oDA8DC;AAxFD,yDAAqD;AACrD,+DAA4D;AAC5D,yEAAkG;AAclG;;;;;;;;;GASG;AACH,SAAgB,oBAAoB,CAClC,KAAe;IAEf,MAAM,MAAM,GAAgC,EAAE,CAAC;IAE/C,6DAA6D;IAC7D,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAA,yCAAmB,EAAC,IAAI,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,GAAG,kCAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAElD,iCAAiC;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,sBAAsB,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,KAAK;gBACjB,OAAO,EAAE,aAAa,UAAU,iBAAiB,KAAK,mDAAmD;aAC1G,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YAClB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,OAAO,EAAE,iCAAiC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,MAAM,WAAW,GAAG,KAAK,CAAC,yBAAyB,EAAE,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,YAAY;YAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;IACL,CAAC;IAED,sCAAsC;IACtC,MAAM,uBAAuB,GAAG,IAAA,iDAAsB,EAAC,KAAK,CAAC,CAAC;IAE9D,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,uBAAuB,CAAC,KAAK;QAC3D,MAAM;QACN,mBAAmB,EAAE,uBAAuB,CAAC,MAAM;KACpD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { ResourceMetadata } from '../models/base';
2
+ import type { SchemaValidator } from './schema-validator';
3
+ import type { ValidationError } from './schema-validation.types';
4
+ export interface ResourceTreeValidationError {
5
+ resourceKey: string;
6
+ resourceKind: string;
7
+ errors: ValidationError[];
8
+ }
9
+ export interface ResourceTreeValidationResult {
10
+ valid: boolean;
11
+ errors: ResourceTreeValidationError[];
12
+ }
13
+ export interface ResourceInput {
14
+ kind: string;
15
+ metadata: ResourceMetadata;
16
+ spec: any;
17
+ }
18
+ /**
19
+ * Validates all resources in a dependency tree.
20
+ *
21
+ * Accepts raw YAML strings and handles parsing internally.
22
+ *
23
+ * Validation layers:
24
+ * 0. YAML parsing & kind resolution
25
+ * 1. Basic metadata validation
26
+ * 2. JSON schema validation (per resource, via raw YAML)
27
+ * 3. Dependency existence (cross-resource)
28
+ * 4. Cross-resource rules (template content, etc.)
29
+ *
30
+ * Collects ALL errors across all resources (no fail-fast).
31
+ *
32
+ * @param yamlStrings - Raw YAML strings, one per resource
33
+ * @param opts.schemaValidator - Optional SchemaValidator for JSON schema checks
34
+ */
35
+ export declare function validateResourceTree(yamlStrings: string[], opts?: {
36
+ schemaValidator?: SchemaValidator;
37
+ }): ResourceTreeValidationResult;