gina 0.6.13 → 0.6.14

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 (590) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +28 -22
  3. package/ROADMAP.md +3 -2
  4. package/framework/v0.6.14/VERSION +1 -0
  5. package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.js +9 -6
  6. package/framework/{v0.6.13 → v0.6.14}/core/config.js +9 -4
  7. package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.js +208 -42
  8. package/framework/{v0.6.13 → v0.6.14}/core/gna.js +25 -1
  9. package/framework/{v0.6.13 → v0.6.14}/core/server.js +66 -2
  10. package/framework/{v0.6.13 → v0.6.14}/lib/cmd/secrets/check.js +220 -168
  11. package/framework/v0.6.14/lib/cmd/secrets/scan.js +264 -0
  12. package/framework/{v0.6.13 → v0.6.14}/lib/collection/src/main.js +9 -6
  13. package/framework/{v0.6.13 → v0.6.14}/lib/secrets/src/backends/env.js +41 -1
  14. package/framework/v0.6.14/lib/secrets/src/backends/exec.js +253 -0
  15. package/framework/{v0.6.13 → v0.6.14}/lib/secrets/src/backends/file.js +5 -27
  16. package/framework/v0.6.14/lib/secrets/src/declaration.js +303 -0
  17. package/framework/{v0.6.13 → v0.6.14}/lib/secrets/src/main.js +107 -54
  18. package/framework/v0.6.14/lib/secrets/src/sources.js +325 -0
  19. package/framework/{v0.6.13 → v0.6.14}/package.json +1 -1
  20. package/gna.js +4 -4
  21. package/llms.txt +6 -4
  22. package/package.json +3 -3
  23. package/schema/settings.json +21 -0
  24. package/framework/v0.6.13/VERSION +0 -1
  25. package/framework/v0.6.13/lib/cmd/secrets/scan.js +0 -448
  26. /package/framework/{v0.6.13 → v0.6.14}/AUTHORS +0 -0
  27. /package/framework/{v0.6.13 → v0.6.14}/LICENSE +0 -0
  28. /package/framework/{v0.6.13 → v0.6.14}/core/asset/html/nolayout.html +0 -0
  29. /package/framework/{v0.6.13 → v0.6.14}/core/asset/html/static.html +0 -0
  30. /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/android-chrome-192x192.png +0 -0
  31. /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/android-chrome-512x512.png +0 -0
  32. /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/apple-touch-icon.png +0 -0
  33. /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/favicon-16x16.png +0 -0
  34. /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/favicon-32x32.png +0 -0
  35. /package/framework/{v0.6.13 → v0.6.14}/core/asset/img/favicon.ico +0 -0
  36. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/README.md +0 -0
  37. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  38. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  39. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  40. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  41. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  42. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  43. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  44. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  45. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  46. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  47. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  48. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  49. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  50. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  51. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
  52. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  53. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  54. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  55. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  56. /package/framework/{v0.6.13 → v0.6.14}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  57. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/ai/index.js +0 -0
  58. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/ai/lib/connector.js +0 -0
  59. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/index.js +0 -0
  60. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/connector.js +0 -0
  61. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  62. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  63. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/n1ql.js +0 -0
  64. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/session-store.js +0 -0
  65. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  66. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  67. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/couchbase/lib/storage-store.js +0 -0
  68. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/duckdb/index.js +0 -0
  69. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/duckdb/lib/connector.js +0 -0
  70. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/index.js +0 -0
  71. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/lib/connector.js +0 -0
  72. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/lib/job-store.js +0 -0
  73. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  74. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mongodb/lib/session-store.js +0 -0
  75. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mysql/index.js +0 -0
  76. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/mysql/lib/connector.js +0 -0
  77. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/param-redact.js +0 -0
  78. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/postgresql/index.js +0 -0
  79. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/postgresql/lib/connector.js +0 -0
  80. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/index.js +0 -0
  81. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/connector.js +0 -0
  82. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/job-store.js +0 -0
  83. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/kv-store.js +0 -0
  84. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/render-cache-store.js +0 -0
  85. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/redis/lib/session-store.js +0 -0
  86. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/scylladb/index.js +0 -0
  87. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/scylladb/lib/connector.js +0 -0
  88. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/scylladb/lib/session-store.js +0 -0
  89. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sql-parser.js +0 -0
  90. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/index.js +0 -0
  91. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/lib/connector.js +0 -0
  92. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/lib/job-store.js +0 -0
  93. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/lib/kv-store.js +0 -0
  94. /package/framework/{v0.6.13 → v0.6.14}/core/connectors/sqlite/lib/session-store.js +0 -0
  95. /package/framework/{v0.6.13 → v0.6.14}/core/content.encoding +0 -0
  96. /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.framework.js +0 -0
  97. /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-json.js +0 -0
  98. /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-nunjucks-async.js +0 -0
  99. /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-nunjucks.js +0 -0
  100. /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-stream.js +0 -0
  101. /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-swig-async.js +0 -0
  102. /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-swig.js +0 -0
  103. /package/framework/{v0.6.13 → v0.6.14}/core/controller/controller.render-v1.js +0 -0
  104. /package/framework/{v0.6.13 → v0.6.14}/core/controller/index.js +0 -0
  105. /package/framework/{v0.6.13 → v0.6.14}/core/controller/inspector-window-emit.js +0 -0
  106. /package/framework/{v0.6.13 → v0.6.14}/core/controller/release-banner.js +0 -0
  107. /package/framework/{v0.6.13 → v0.6.14}/core/dev/index.js +0 -0
  108. /package/framework/{v0.6.13 → v0.6.14}/core/dev/lib/class.js +0 -0
  109. /package/framework/{v0.6.13 → v0.6.14}/core/dev/lib/factory.js +0 -0
  110. /package/framework/{v0.6.13 → v0.6.14}/core/dev/lib/tools.js +0 -0
  111. /package/framework/{v0.6.13 → v0.6.14}/core/locales/README.md +0 -0
  112. /package/framework/{v0.6.13 → v0.6.14}/core/locales/currency.json +0 -0
  113. /package/framework/{v0.6.13 → v0.6.14}/core/locales/dist/language/en.json +0 -0
  114. /package/framework/{v0.6.13 → v0.6.14}/core/locales/dist/language/fr.json +0 -0
  115. /package/framework/{v0.6.13 → v0.6.14}/core/locales/dist/region/en.json +0 -0
  116. /package/framework/{v0.6.13 → v0.6.14}/core/locales/dist/region/fr.json +0 -0
  117. /package/framework/{v0.6.13 → v0.6.14}/core/locales/index.js +0 -0
  118. /package/framework/{v0.6.13 → v0.6.14}/core/mime.types +0 -0
  119. /package/framework/{v0.6.13 → v0.6.14}/core/model/entity.js +0 -0
  120. /package/framework/{v0.6.13 → v0.6.14}/core/model/index.js +0 -0
  121. /package/framework/{v0.6.13 → v0.6.14}/core/model/template/entityFactory.js +0 -0
  122. /package/framework/{v0.6.13 → v0.6.14}/core/model/template/index.js +0 -0
  123. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/README.md +0 -0
  124. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/index.js +0 -0
  125. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/csrf/README.md +0 -0
  126. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/csrf/package.json +0 -0
  127. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/csrf/src/main.js +0 -0
  128. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/README.md +0 -0
  129. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coep/README.md +0 -0
  130. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coep/package.json +0 -0
  131. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  132. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coop/README.md +0 -0
  133. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coop/package.json +0 -0
  134. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  135. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/corp/README.md +0 -0
  136. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/corp/package.json +0 -0
  137. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  138. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/csp/README.md +0 -0
  139. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/csp/package.json +0 -0
  140. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  141. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  142. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  143. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  144. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  145. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  146. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  147. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  148. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  149. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  150. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/package.json +0 -0
  151. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  152. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  153. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  154. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/src/main.js +0 -0
  155. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  156. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  157. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  158. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  159. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  160. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  161. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  162. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  163. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  164. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  165. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  166. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  167. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  168. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  169. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  170. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  171. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  172. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  173. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/session/README.md +0 -0
  174. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/session/package.json +0 -0
  175. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/session/src/main.js +0 -0
  176. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/storage/README.md +0 -0
  177. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/storage/build.json +0 -0
  178. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/storage/package.json +0 -0
  179. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/storage/src/main.js +0 -0
  180. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/README.md +0 -0
  181. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/build.json +0 -0
  182. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/package.json +0 -0
  183. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/src/form-validator.js +0 -0
  184. /package/framework/{v0.6.13 → v0.6.14}/core/plugins/lib/validator/src/main.js +0 -0
  185. /package/framework/{v0.6.13 → v0.6.14}/core/router.js +0 -0
  186. /package/framework/{v0.6.13 → v0.6.14}/core/server.express.js +0 -0
  187. /package/framework/{v0.6.13 → v0.6.14}/core/server.isaac.js +0 -0
  188. /package/framework/{v0.6.13 → v0.6.14}/core/status.codes +0 -0
  189. /package/framework/{v0.6.13 → v0.6.14}/core/template/_gitignore +0 -0
  190. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/app.json +0 -0
  191. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  192. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/routing.json +0 -0
  193. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/settings.json +0 -0
  194. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  195. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/templates.json +0 -0
  196. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  197. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  198. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  199. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  200. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/index.js +0 -0
  201. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle/locales/en.json +0 -0
  202. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  203. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  204. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  205. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  206. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  207. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  208. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  209. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  210. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/readme.md +0 -0
  211. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_public/sw.js +0 -0
  212. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  213. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  214. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  215. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  216. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  217. /package/framework/{v0.6.13 → v0.6.14}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  218. /package/framework/{v0.6.13 → v0.6.14}/core/template/command/gina.bat.tpl +0 -0
  219. /package/framework/{v0.6.13 → v0.6.14}/core/template/command/gina.tpl +0 -0
  220. /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/env.json +0 -0
  221. /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/manifest.json +0 -0
  222. /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/package.json +0 -0
  223. /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/settings.json +0 -0
  224. /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/statics.json +0 -0
  225. /package/framework/{v0.6.13 → v0.6.14}/core/template/conf/templates.json +0 -0
  226. /package/framework/{v0.6.13 → v0.6.14}/core/template/error/client/json/401.json +0 -0
  227. /package/framework/{v0.6.13 → v0.6.14}/core/template/error/client/json/403.json +0 -0
  228. /package/framework/{v0.6.13 → v0.6.14}/core/template/error/client/json/404.json +0 -0
  229. /package/framework/{v0.6.13 → v0.6.14}/core/template/error/server/html/50x.html +0 -0
  230. /package/framework/{v0.6.13 → v0.6.14}/core/template/error/server/json/500.json +0 -0
  231. /package/framework/{v0.6.13 → v0.6.14}/core/template/error/server/json/503.json +0 -0
  232. /package/framework/{v0.6.13 → v0.6.14}/core/template/extensions/logger/config.json +0 -0
  233. /package/framework/{v0.6.13 → v0.6.14}/helpers/console.js +0 -0
  234. /package/framework/{v0.6.13 → v0.6.14}/helpers/context.js +0 -0
  235. /package/framework/{v0.6.13 → v0.6.14}/helpers/data/LICENSE +0 -0
  236. /package/framework/{v0.6.13 → v0.6.14}/helpers/data/README.md +0 -0
  237. /package/framework/{v0.6.13 → v0.6.14}/helpers/data/package.json +0 -0
  238. /package/framework/{v0.6.13 → v0.6.14}/helpers/data/src/main.js +0 -0
  239. /package/framework/{v0.6.13 → v0.6.14}/helpers/dateFormat.js +0 -0
  240. /package/framework/{v0.6.13 → v0.6.14}/helpers/index.js +0 -0
  241. /package/framework/{v0.6.13 → v0.6.14}/helpers/json/LICENSE +0 -0
  242. /package/framework/{v0.6.13 → v0.6.14}/helpers/json/README.md +0 -0
  243. /package/framework/{v0.6.13 → v0.6.14}/helpers/json/package.json +0 -0
  244. /package/framework/{v0.6.13 → v0.6.14}/helpers/json/src/main.js +0 -0
  245. /package/framework/{v0.6.13 → v0.6.14}/helpers/path.js +0 -0
  246. /package/framework/{v0.6.13 → v0.6.14}/helpers/plugins/README.md +0 -0
  247. /package/framework/{v0.6.13 → v0.6.14}/helpers/plugins/package.json +0 -0
  248. /package/framework/{v0.6.13 → v0.6.14}/helpers/plugins/src/api-error.js +0 -0
  249. /package/framework/{v0.6.13 → v0.6.14}/helpers/plugins/src/main.js +0 -0
  250. /package/framework/{v0.6.13 → v0.6.14}/helpers/prototypes.js +0 -0
  251. /package/framework/{v0.6.13 → v0.6.14}/helpers/task.js +0 -0
  252. /package/framework/{v0.6.13 → v0.6.14}/helpers/text.js +0 -0
  253. /package/framework/{v0.6.13 → v0.6.14}/lib/admin/package.json +0 -0
  254. /package/framework/{v0.6.13 → v0.6.14}/lib/admin/src/main.js +0 -0
  255. /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/README.md +0 -0
  256. /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/build.json +0 -0
  257. /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/package.json +0 -0
  258. /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/src/dep/jszip.min.js +0 -0
  259. /package/framework/{v0.6.13 → v0.6.14}/lib/archiver/src/main.js +0 -0
  260. /package/framework/{v0.6.13 → v0.6.14}/lib/async/package.json +0 -0
  261. /package/framework/{v0.6.13 → v0.6.14}/lib/async/src/main.js +0 -0
  262. /package/framework/{v0.6.13 → v0.6.14}/lib/audit/package.json +0 -0
  263. /package/framework/{v0.6.13 → v0.6.14}/lib/audit/src/main.js +0 -0
  264. /package/framework/{v0.6.13 → v0.6.14}/lib/audit-store.js +0 -0
  265. /package/framework/{v0.6.13 → v0.6.14}/lib/authn/package.json +0 -0
  266. /package/framework/{v0.6.13 → v0.6.14}/lib/authn/src/lockout.js +0 -0
  267. /package/framework/{v0.6.13 → v0.6.14}/lib/authn/src/main.js +0 -0
  268. /package/framework/{v0.6.13 → v0.6.14}/lib/authn/src/totp.js +0 -0
  269. /package/framework/{v0.6.13 → v0.6.14}/lib/authz-gate/package.json +0 -0
  270. /package/framework/{v0.6.13 → v0.6.14}/lib/authz-gate/src/main.js +0 -0
  271. /package/framework/{v0.6.13 → v0.6.14}/lib/cache/README.md +0 -0
  272. /package/framework/{v0.6.13 → v0.6.14}/lib/cache/build.json +0 -0
  273. /package/framework/{v0.6.13 → v0.6.14}/lib/cache/package.json +0 -0
  274. /package/framework/{v0.6.13 → v0.6.14}/lib/cache/src/main.js +0 -0
  275. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/aliases.json +0 -0
  276. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/audit/arguments.json +0 -0
  277. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/audit/help.txt +0 -0
  278. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/audit/verify.js +0 -0
  279. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/add.js +0 -0
  280. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/arguments.json +0 -0
  281. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/build.js +0 -0
  282. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/copy.js +0 -0
  283. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/cp.js +0 -0
  284. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/help.js +0 -0
  285. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/help.txt +0 -0
  286. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  287. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/list.js +0 -0
  288. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/man.js +0 -0
  289. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/mcp-start.js +0 -0
  290. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/mcp.js +0 -0
  291. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/oas.js +0 -0
  292. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/openapi.js +0 -0
  293. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/remove.js +0 -0
  294. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/rename.js +0 -0
  295. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/restart.js +0 -0
  296. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/rm.js +0 -0
  297. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/start.js +0 -0
  298. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/status.js +0 -0
  299. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/stop.js +0 -0
  300. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/bundle/types.js +0 -0
  301. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/cache/arguments.json +0 -0
  302. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/cache/clear.js +0 -0
  303. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/cache/help.txt +0 -0
  304. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/cache/stats.js +0 -0
  305. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/add.js +0 -0
  306. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/arguments.json +0 -0
  307. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/help.js +0 -0
  308. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/help.txt +0 -0
  309. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/infer.js +0 -0
  310. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/list.js +0 -0
  311. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/migrate.js +0 -0
  312. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/models.js +0 -0
  313. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/remove.js +0 -0
  314. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/rm.js +0 -0
  315. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/connector/test.js +0 -0
  316. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/arguments.json +0 -0
  317. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/help.js +0 -0
  318. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/help.txt +0 -0
  319. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/man.js +0 -0
  320. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/ps.js +0 -0
  321. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/container/stop.js +0 -0
  322. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/add.js +0 -0
  323. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/arguments.json +0 -0
  324. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/help.txt +0 -0
  325. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/args.js +0 -0
  326. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/namespace.js +0 -0
  327. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  328. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/reference-scan.js +0 -0
  329. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/inc/scaffold.js +0 -0
  330. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/remove.js +0 -0
  331. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/rename.js +0 -0
  332. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/controller/rm.js +0 -0
  333. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/add.js +0 -0
  334. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/get.js +0 -0
  335. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/help.js +0 -0
  336. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/help.txt +0 -0
  337. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/link-dev.js +0 -0
  338. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/list.js +0 -0
  339. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/remove.js +0 -0
  340. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/rm.js +0 -0
  341. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/set.js +0 -0
  342. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/unset.js +0 -0
  343. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/env/use.js +0 -0
  344. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/add.js +0 -0
  345. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/arguments.json +0 -0
  346. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/build.js +0 -0
  347. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/dot.js +0 -0
  348. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/get.js +0 -0
  349. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/help.js +0 -0
  350. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/help.txt +0 -0
  351. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/init.js +0 -0
  352. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/link-node-modules.js +0 -0
  353. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/link.js +0 -0
  354. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/list.js +0 -0
  355. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/man.js +0 -0
  356. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/msg.json +0 -0
  357. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/open.js +0 -0
  358. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/remove.js +0 -0
  359. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/reset.js +0 -0
  360. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/restart.js +0 -0
  361. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/set.js +0 -0
  362. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/start.js +0 -0
  363. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/status.js +0 -0
  364. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/stop.js +0 -0
  365. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/tail.js +0 -0
  366. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/update.js +0 -0
  367. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/framework/version.js +0 -0
  368. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/gina-dev.1.md +0 -0
  369. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/gina-framework.1.md +0 -0
  370. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/gina.1.md +0 -0
  371. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/helper.js +0 -0
  372. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/add.js +0 -0
  373. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/arguments.json +0 -0
  374. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/export.js +0 -0
  375. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/help.js +0 -0
  376. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/help.txt +0 -0
  377. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/import.js +0 -0
  378. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/i18n/scan.js +0 -0
  379. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/_host.js +0 -0
  380. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/arguments.json +0 -0
  381. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/build.js +0 -0
  382. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/help.js +0 -0
  383. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/help.txt +0 -0
  384. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/list.js +0 -0
  385. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/man.js +0 -0
  386. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/rm.js +0 -0
  387. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/image/run.js +0 -0
  388. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/index.js +0 -0
  389. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/inspector/help.js +0 -0
  390. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/inspector/help.txt +0 -0
  391. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/inspector/open.js +0 -0
  392. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/man-render.js +0 -0
  393. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/arguments.json +0 -0
  394. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/help.js +0 -0
  395. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/help.txt +0 -0
  396. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/kill.js +0 -0
  397. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/minion/list.js +0 -0
  398. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/msg.json +0 -0
  399. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/help.js +0 -0
  400. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/help.txt +0 -0
  401. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/inc/scan.js +0 -0
  402. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/list.js +0 -0
  403. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/reset.js +0 -0
  404. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/port/set.js +0 -0
  405. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/add.js +0 -0
  406. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/arguments.json +0 -0
  407. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/backup.js +0 -0
  408. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/build.js +0 -0
  409. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/help.js +0 -0
  410. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/help.txt +0 -0
  411. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/import.js +0 -0
  412. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/list.js +0 -0
  413. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/man.js +0 -0
  414. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/move.js +0 -0
  415. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/remove.js +0 -0
  416. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/rename.js +0 -0
  417. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/restart.js +0 -0
  418. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/restore.js +0 -0
  419. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/rm.js +0 -0
  420. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/start.js +0 -0
  421. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/status.js +0 -0
  422. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/project/stop.js +0 -0
  423. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/arguments.json +0 -0
  424. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/help.js +0 -0
  425. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/help.txt +0 -0
  426. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/list.js +0 -0
  427. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/remove.js +0 -0
  428. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/protocol/set.js +0 -0
  429. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/add.js +0 -0
  430. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/help.js +0 -0
  431. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/help.txt +0 -0
  432. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/link-local.js +0 -0
  433. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/link-production.js +0 -0
  434. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/list.js +0 -0
  435. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/remove.js +0 -0
  436. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/rm.js +0 -0
  437. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/scope/use.js +0 -0
  438. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/secrets/arguments.json +0 -0
  439. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/secrets/help.js +0 -0
  440. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/secrets/help.txt +0 -0
  441. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/help.js +0 -0
  442. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/help.txt +0 -0
  443. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/list.js +0 -0
  444. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/man.js +0 -0
  445. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/service/start.js +0 -0
  446. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/arguments.json +0 -0
  447. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/gc.js +0 -0
  448. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/help.txt +0 -0
  449. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/stats.js +0 -0
  450. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/storage/verify.js +0 -0
  451. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd/view/add.js +0 -0
  452. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd-status-format/package.json +0 -0
  453. /package/framework/{v0.6.13 → v0.6.14}/lib/cmd-status-format/src/main.js +0 -0
  454. /package/framework/{v0.6.13 → v0.6.14}/lib/collection/README.md +0 -0
  455. /package/framework/{v0.6.13 → v0.6.14}/lib/collection/build.json +0 -0
  456. /package/framework/{v0.6.13 → v0.6.14}/lib/collection/package.json +0 -0
  457. /package/framework/{v0.6.13 → v0.6.14}/lib/config.js +0 -0
  458. /package/framework/{v0.6.13 → v0.6.14}/lib/connector-config/package.json +0 -0
  459. /package/framework/{v0.6.13 → v0.6.14}/lib/connector-config/src/main.js +0 -0
  460. /package/framework/{v0.6.13 → v0.6.14}/lib/connector-error/package.json +0 -0
  461. /package/framework/{v0.6.13 → v0.6.14}/lib/connector-error/src/main.js +0 -0
  462. /package/framework/{v0.6.13 → v0.6.14}/lib/connector-registry/package.json +0 -0
  463. /package/framework/{v0.6.13 → v0.6.14}/lib/connector-registry/src/main.js +0 -0
  464. /package/framework/{v0.6.13 → v0.6.14}/lib/cron/README.md +0 -0
  465. /package/framework/{v0.6.13 → v0.6.14}/lib/cron/package.json +0 -0
  466. /package/framework/{v0.6.13 → v0.6.14}/lib/cron/src/main.js +0 -0
  467. /package/framework/{v0.6.13 → v0.6.14}/lib/domain/LICENSE +0 -0
  468. /package/framework/{v0.6.13 → v0.6.14}/lib/domain/README.md +0 -0
  469. /package/framework/{v0.6.13 → v0.6.14}/lib/domain/package.json +0 -0
  470. /package/framework/{v0.6.13 → v0.6.14}/lib/domain/src/main.js +0 -0
  471. /package/framework/{v0.6.13 → v0.6.14}/lib/dto/package.json +0 -0
  472. /package/framework/{v0.6.13 → v0.6.14}/lib/dto/src/main.js +0 -0
  473. /package/framework/{v0.6.13 → v0.6.14}/lib/dto-pipe/package.json +0 -0
  474. /package/framework/{v0.6.13 → v0.6.14}/lib/dto-pipe/src/main.js +0 -0
  475. /package/framework/{v0.6.13 → v0.6.14}/lib/dto-types/package.json +0 -0
  476. /package/framework/{v0.6.13 → v0.6.14}/lib/dto-types/src/main.js +0 -0
  477. /package/framework/{v0.6.13 → v0.6.14}/lib/generator/index.js +0 -0
  478. /package/framework/{v0.6.13 → v0.6.14}/lib/i18n/package.json +0 -0
  479. /package/framework/{v0.6.13 → v0.6.14}/lib/i18n/src/main.js +0 -0
  480. /package/framework/{v0.6.13 → v0.6.14}/lib/image-build/package.json +0 -0
  481. /package/framework/{v0.6.13 → v0.6.14}/lib/image-build/src/main.js +0 -0
  482. /package/framework/{v0.6.13 → v0.6.14}/lib/index.js +0 -0
  483. /package/framework/{v0.6.13 → v0.6.14}/lib/inherits/LICENSE +0 -0
  484. /package/framework/{v0.6.13 → v0.6.14}/lib/inherits/README.md +0 -0
  485. /package/framework/{v0.6.13 → v0.6.14}/lib/inherits/package.json +0 -0
  486. /package/framework/{v0.6.13 → v0.6.14}/lib/inherits/src/main.js +0 -0
  487. /package/framework/{v0.6.13 → v0.6.14}/lib/inspector-events/package.json +0 -0
  488. /package/framework/{v0.6.13 → v0.6.14}/lib/inspector-events/src/main.js +0 -0
  489. /package/framework/{v0.6.13 → v0.6.14}/lib/inspector-redact/package.json +0 -0
  490. /package/framework/{v0.6.13 → v0.6.14}/lib/inspector-redact/src/main.js +0 -0
  491. /package/framework/{v0.6.13 → v0.6.14}/lib/instrument/package.json +0 -0
  492. /package/framework/{v0.6.13 → v0.6.14}/lib/instrument/src/main.js +0 -0
  493. /package/framework/{v0.6.13 → v0.6.14}/lib/job/package.json +0 -0
  494. /package/framework/{v0.6.13 → v0.6.14}/lib/job/src/main.js +0 -0
  495. /package/framework/{v0.6.13 → v0.6.14}/lib/job-store.js +0 -0
  496. /package/framework/{v0.6.13 → v0.6.14}/lib/json-config-header/package.json +0 -0
  497. /package/framework/{v0.6.13 → v0.6.14}/lib/json-config-header/src/main.js +0 -0
  498. /package/framework/{v0.6.13 → v0.6.14}/lib/kv/package.json +0 -0
  499. /package/framework/{v0.6.13 → v0.6.14}/lib/kv/src/main.js +0 -0
  500. /package/framework/{v0.6.13 → v0.6.14}/lib/kv-store.js +0 -0
  501. /package/framework/{v0.6.13 → v0.6.14}/lib/loading-state/package.json +0 -0
  502. /package/framework/{v0.6.13 → v0.6.14}/lib/loading-state/src/main.js +0 -0
  503. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/README.md +0 -0
  504. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/package.json +0 -0
  505. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/default/index.js +0 -0
  506. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/file/index.js +0 -0
  507. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  508. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  509. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/mq/index.js +0 -0
  510. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/mq/listener.js +0 -0
  511. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/containers/mq/speaker.js +0 -0
  512. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/helper.js +0 -0
  513. /package/framework/{v0.6.13 → v0.6.14}/lib/logger/src/main.js +0 -0
  514. /package/framework/{v0.6.13 → v0.6.14}/lib/maintenance/package.json +0 -0
  515. /package/framework/{v0.6.13 → v0.6.14}/lib/maintenance/src/main.js +0 -0
  516. /package/framework/{v0.6.13 → v0.6.14}/lib/math/index.js +0 -0
  517. /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-dispatch/package.json +0 -0
  518. /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-dispatch/src/main.js +0 -0
  519. /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-http/package.json +0 -0
  520. /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-http/src/main.js +0 -0
  521. /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-server/package.json +0 -0
  522. /package/framework/{v0.6.13 → v0.6.14}/lib/mcp-server/src/main.js +0 -0
  523. /package/framework/{v0.6.13 → v0.6.14}/lib/merge/README.md +0 -0
  524. /package/framework/{v0.6.13 → v0.6.14}/lib/merge/package.json +0 -0
  525. /package/framework/{v0.6.13 → v0.6.14}/lib/merge/src/main.js +0 -0
  526. /package/framework/{v0.6.13 → v0.6.14}/lib/metrics/package.json +0 -0
  527. /package/framework/{v0.6.13 → v0.6.14}/lib/metrics/src/main.js +0 -0
  528. /package/framework/{v0.6.13 → v0.6.14}/lib/model.js +0 -0
  529. /package/framework/{v0.6.13 → v0.6.14}/lib/net-locality/package.json +0 -0
  530. /package/framework/{v0.6.13 → v0.6.14}/lib/net-locality/src/main.js +0 -0
  531. /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-filters/README.md +0 -0
  532. /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-filters/package.json +0 -0
  533. /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-filters/src/main.js +0 -0
  534. /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-resolver/package.json +0 -0
  535. /package/framework/{v0.6.13 → v0.6.14}/lib/nunjucks-resolver/src/main.js +0 -0
  536. /package/framework/{v0.6.13 → v0.6.14}/lib/proc.js +0 -0
  537. /package/framework/{v0.6.13 → v0.6.14}/lib/push/package.json +0 -0
  538. /package/framework/{v0.6.13 → v0.6.14}/lib/push/src/main.js +0 -0
  539. /package/framework/{v0.6.13 → v0.6.14}/lib/rate-limit/package.json +0 -0
  540. /package/framework/{v0.6.13 → v0.6.14}/lib/rate-limit/src/main.js +0 -0
  541. /package/framework/{v0.6.13 → v0.6.14}/lib/release-watch/package.json +0 -0
  542. /package/framework/{v0.6.13 → v0.6.14}/lib/release-watch/src/main.js +0 -0
  543. /package/framework/{v0.6.13 → v0.6.14}/lib/render-cache/package.json +0 -0
  544. /package/framework/{v0.6.13 → v0.6.14}/lib/render-cache/src/main.js +0 -0
  545. /package/framework/{v0.6.13 → v0.6.14}/lib/render-cache-store.js +0 -0
  546. /package/framework/{v0.6.13 → v0.6.14}/lib/routing/README.md +0 -0
  547. /package/framework/{v0.6.13 → v0.6.14}/lib/routing/build.json +0 -0
  548. /package/framework/{v0.6.13 → v0.6.14}/lib/routing/package.json +0 -0
  549. /package/framework/{v0.6.13 → v0.6.14}/lib/routing/src/main.js +0 -0
  550. /package/framework/{v0.6.13 → v0.6.14}/lib/routing/src/radix.js +0 -0
  551. /package/framework/{v0.6.13 → v0.6.14}/lib/routing-introspect/package.json +0 -0
  552. /package/framework/{v0.6.13 → v0.6.14}/lib/routing-introspect/src/main.js +0 -0
  553. /package/framework/{v0.6.13 → v0.6.14}/lib/secrets/package.json +0 -0
  554. /package/framework/{v0.6.13 → v0.6.14}/lib/secrets/src/env-file.js +0 -0
  555. /package/framework/{v0.6.13 → v0.6.14}/lib/session-store.js +0 -0
  556. /package/framework/{v0.6.13 → v0.6.14}/lib/shell.js +0 -0
  557. /package/framework/{v0.6.13 → v0.6.14}/lib/sqlite-driver.js +0 -0
  558. /package/framework/{v0.6.13 → v0.6.14}/lib/state.js +0 -0
  559. /package/framework/{v0.6.13 → v0.6.14}/lib/storage/package.json +0 -0
  560. /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/local-cas.js +0 -0
  561. /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/local-stream.js +0 -0
  562. /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/local.js +0 -0
  563. /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/main.js +0 -0
  564. /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/meta-store.js +0 -0
  565. /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/s3.js +0 -0
  566. /package/framework/{v0.6.13 → v0.6.14}/lib/storage/src/util.js +0 -0
  567. /package/framework/{v0.6.13 → v0.6.14}/lib/storage-store.js +0 -0
  568. /package/framework/{v0.6.13 → v0.6.14}/lib/swig-filters/README.md +0 -0
  569. /package/framework/{v0.6.13 → v0.6.14}/lib/swig-filters/package.json +0 -0
  570. /package/framework/{v0.6.13 → v0.6.14}/lib/swig-filters/src/main.js +0 -0
  571. /package/framework/{v0.6.13 → v0.6.14}/lib/swig-resolver/package.json +0 -0
  572. /package/framework/{v0.6.13 → v0.6.14}/lib/swig-resolver/src/main.js +0 -0
  573. /package/framework/{v0.6.13 → v0.6.14}/lib/template-loaders/package.json +0 -0
  574. /package/framework/{v0.6.13 → v0.6.14}/lib/template-loaders/src/loaders/http.js +0 -0
  575. /package/framework/{v0.6.13 → v0.6.14}/lib/template-loaders/src/loaders/memory.js +0 -0
  576. /package/framework/{v0.6.13 → v0.6.14}/lib/template-loaders/src/main.js +0 -0
  577. /package/framework/{v0.6.13 → v0.6.14}/lib/url/README.md +0 -0
  578. /package/framework/{v0.6.13 → v0.6.14}/lib/url/index.js +0 -0
  579. /package/framework/{v0.6.13 → v0.6.14}/lib/url/routing.json +0 -0
  580. /package/framework/{v0.6.13 → v0.6.14}/lib/uuid/package.json +0 -0
  581. /package/framework/{v0.6.13 → v0.6.14}/lib/uuid/src/main.js +0 -0
  582. /package/framework/{v0.6.13 → v0.6.14}/lib/validator.js +0 -0
  583. /package/framework/{v0.6.13 → v0.6.14}/lib/watcher/package.json +0 -0
  584. /package/framework/{v0.6.13 → v0.6.14}/lib/watcher/src/main.js +0 -0
  585. /package/framework/{v0.6.13 → v0.6.14}/lib/ws-framing/package.json +0 -0
  586. /package/framework/{v0.6.13 → v0.6.14}/lib/ws-framing/src/main.js +0 -0
  587. /package/framework/{v0.6.13 → v0.6.14}/lib/ws-query/package.json +0 -0
  588. /package/framework/{v0.6.13 → v0.6.14}/lib/ws-query/src/main.js +0 -0
  589. /package/framework/{v0.6.13 → v0.6.14}/lib/ws-session/package.json +0 -0
  590. /package/framework/{v0.6.13 → v0.6.14}/lib/ws-session/src/main.js +0 -0
@@ -0,0 +1,303 @@
1
+ 'use strict';
2
+ /*
3
+ * This file is part of the gina package.
4
+ * Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
5
+ *
6
+ * For the full copyright and license information, please view the LICENSE
7
+ * file that was distributed with this source code.
8
+ */
9
+
10
+ /**
11
+ * @module lib/secrets/declaration
12
+ * @description Shared validation of the `settings.secrets` declaration,
13
+ * consumed by BOTH the runtime dispatch (`selectBackend`,
14
+ * `lib/secrets/src/main.js`) and the `secrets:check` CLI gate
15
+ * (`lib/cmd/secrets/check.js`). One implementation, so the gate and the
16
+ * runtime cannot drift.
17
+ *
18
+ * Why this module exists (#B408): the mirror had ALREADY drifted twice, both
19
+ * times in the LAX direction — the runtime gained the whitespace-only entry
20
+ * refusal (#B271, `.trim()`) and the empty-path-segment refusal (#B272,
21
+ * `'//'`) while `secrets:check` kept an older copy of the loop, so
22
+ * `settings.secrets.file: [" "]` and a path whose token collapsed to `//`
23
+ * passed the CI gate GREEN while boot REFUSED. That is precisely the
24
+ * checker-vs-runtime disagreement the command exists to prevent, and the
25
+ * second occurrence of the drift class #B263 already paid for once on the
26
+ * source-walk axis (cured the same way: one shared implementation, in
27
+ * `./sources`).
28
+ *
29
+ * Contract notes:
30
+ * - **Pure and ambient-free.** No `_()`, no `requireJSON`, no requires — the
31
+ * zero-setup `require('lib/secrets')` path stays zero-setup.
32
+ * - **Inputs are POST-substitution values.** The runtime validates what the
33
+ * config loader's `whisper` pass produced; the CLI whispers with its own
34
+ * `buildReps` dictionary first and hands the result here. Validating the
35
+ * same (resolved) form on both sides is what makes the verdicts identical.
36
+ * - **First-error-wins, entries in order.** The returned array carries AT
37
+ * MOST ONE error, mirroring both consumers: the runtime throws on the
38
+ * first failing entry, the CLI reports it and stops reading the tier.
39
+ * - Errors are `{code, message}` — the `message` is the exact user-facing
40
+ * text (the runtime throws it verbatim, so realigning a message here IS a
41
+ * runtime behaviour change); the `code` lets a consumer add surface-local
42
+ * context (the CLI appends its `--scope`/`--env` hint on
43
+ * `file-unresolved-token`) without forking the shared text.
44
+ */
45
+
46
+ /**
47
+ * Matches any surviving `${…}` config token. Kept here — beside the guard
48
+ * that uses it — rather than in each consumer; `secrets:check` used to carry
49
+ * its own copy (`UNRESOLVED_TOKEN`) of this exact source.
50
+ *
51
+ * Note it also matches `${secret:…}` — the placeholder guard runs FIRST so a
52
+ * secret placeholder reports as what it is, never as a generic token.
53
+ *
54
+ * @constant {RegExp} TOKEN_RE
55
+ * @memberof module:lib/secrets/declaration
56
+ * @private
57
+ */
58
+ var TOKEN_RE = /\$\{[^}]*\}/;
59
+
60
+ /**
61
+ * Validate the declared `settings.secrets.file` entries, POST-substitution.
62
+ *
63
+ * The four guards, in the order the runtime has always applied them —
64
+ * per entry, first failure wins:
65
+ *
66
+ * 1. **Entry shape** — a non-string, or a string that is empty once
67
+ * trimmed. #B271: the trim matters because the schema's `minLength: 1`
68
+ * counts a space, so `[" "]` used to clear both layers and build a tier
69
+ * that could never resolve anything, visible only as a suppressed debug
70
+ * line.
71
+ * 2. **`${secret:…}` placeholder** — a secrets file cannot itself be named
72
+ * by a secret: the backend that would resolve the placeholder is the one
73
+ * being built.
74
+ * 3. **Unresolved `${…}` token** — unknown tokens are preserved verbatim by
75
+ * design, so a typo would otherwise become a silent lookup for a
76
+ * literally-named file that never exists, and every secret would fall
77
+ * through to a confusing fail-closed error.
78
+ * 4. **Empty path segment (`//`)** — #B272: a token that resolved to an
79
+ * EMPTY string leaves nothing for guard 3 to catch:
80
+ * `${homedir}/${scope}/secrets.env` with an empty scope collapses to
81
+ * `<home>//secrets.env`, which POSIX reads as `<home>/secrets.env` — a
82
+ * silent read of the WRONG file, one directory up from the intended one.
83
+ * The empty segment is the only surviving trace. This CANNOT distinguish
84
+ * that from the benign cause — a token carrying a trailing slash, e.g.
85
+ * `GINA_HOMEDIR=/opt/gina/` (operator-supplied, and nothing in the path
86
+ * chain normalises it) — because by here both have collapsed to the same
87
+ * string. It refuses either way, deliberately: the dangerous case runs
88
+ * the bundle on the wrong credential in silence, and the file backend
89
+ * already refuses on the same reasoning when a declared layer exists but
90
+ * cannot be read (#B267). The benign case costs one character to fix and
91
+ * the message names it, so the error must NOT assert a cause it cannot
92
+ * know.
93
+ *
94
+ * @memberof module:lib/secrets/declaration
95
+ * @function validateFilePaths
96
+ * @param {Array} paths - Declared file entries, array form, post-substitution
97
+ * @returns {Array<{code: string, message: string}>} Empty when every entry
98
+ * passes; otherwise exactly one error — code one of `file-entry-shape`,
99
+ * `file-secret-placeholder`, `file-unresolved-token`, `file-empty-segment`
100
+ *
101
+ * @example
102
+ * var declaration = require('./declaration');
103
+ * declaration.validateFilePaths(['/etc/app/base.env']); // → []
104
+ * declaration.validateFilePaths([' ']); // → [{code: 'file-entry-shape', …}]
105
+ *
106
+ * @example
107
+ * // A token that resolved to an empty value collapses a segment:
108
+ * declaration.validateFilePaths(['/home/u//secrets.env']);
109
+ * // → [{code: 'file-empty-segment', message: '…contains an empty path segment…'}]
110
+ */
111
+ function validateFilePaths(paths) {
112
+ for (var i = 0; i < paths.length; i++) {
113
+ var p = paths[i];
114
+ if (typeof p !== 'string' || p.trim() === '') {
115
+ return [{
116
+ code: 'file-entry-shape',
117
+ message: '`settings.secrets.file` must be a non-empty string or an array of them'
118
+ }];
119
+ }
120
+ if (p.indexOf('${secret:') > -1) {
121
+ return [{
122
+ code: 'file-secret-placeholder',
123
+ message: '`settings.secrets.file` cannot contain a `${secret:…}` placeholder'
124
+ }];
125
+ }
126
+ if (TOKEN_RE.test(p)) {
127
+ return [{
128
+ code: 'file-unresolved-token',
129
+ message: '`settings.secrets.file` contains an unresolved `${…}` token: ' + p
130
+ }];
131
+ }
132
+ if (p.indexOf('//') > -1) {
133
+ return [{
134
+ code: 'file-empty-segment',
135
+ message: '`settings.secrets.file` contains an empty path segment (`//`), so it does not name the file it appears to — POSIX reads `<a>//<b>` as `<a>/<b>`. Either a `${…}` token resolved to an empty value (the path then silently drops a directory), or a token carries a trailing slash. Remove the doubled separator or fix the token: ' + p
136
+ }];
137
+ }
138
+ }
139
+ return [];
140
+ }
141
+
142
+ /**
143
+ * Validate the `settings.secrets` block itself — shape, key roster, and
144
+ * tier exclusivity — before any tier-specific validation runs.
145
+ *
146
+ * The guards, in order:
147
+ *
148
+ * 1. **Block shape** — the block must be a plain object (`null` is handled
149
+ * by the callers as "not declared" and never reaches here). The schema
150
+ * says `"type": "object"`; no runtime validator loads the schema, so
151
+ * this is where that promise is enforced.
152
+ * 2. **Unknown keys refused, not ignored** — runtime parity with the
153
+ * schema's `additionalProperties: false`. A typo'd key (`flie`, `exce`)
154
+ * used to degrade silently to the env-only default, which reads as a
155
+ * healthy boot with a mysteriously missing tier; refusing makes the typo
156
+ * loud at the one moment someone is looking.
157
+ * 3. **`file` and `exec` do not combine** — an ordering between the two
158
+ * tiers has never been defined, and one shipped now would be locked
159
+ * forever (`additionalProperties: false` cuts both ways). Refusal is
160
+ * relaxable additively if a real layering case ever arrives. The case
161
+ * this WILL hit: a shared `settings.json` declares `file`, a bundle opts
162
+ * into `exec`, and the config merge folds both into one block — the
163
+ * escape is the pinned null opt-out, `"file": null` beside the bundle's
164
+ * `exec`, which the error message names.
165
+ *
166
+ * @memberof module:lib/secrets/declaration
167
+ * @function validateBlock
168
+ * @param {*} block - The declared `settings.secrets` value (non-null)
169
+ * @returns {Array<{code: string, message: string}>} Empty when the block
170
+ * passes; otherwise exactly one error — code one of `block-shape`,
171
+ * `block-unknown-key`, `block-both-tiers`
172
+ *
173
+ * @example
174
+ * var declaration = require('./declaration');
175
+ * declaration.validateBlock({ file: null, exec: { command: ['/opt/bin/fetch-secrets'] } }); // → []
176
+ * declaration.validateBlock({ flie: ['/etc/a.env'] }); // → [{code: 'block-unknown-key', …}]
177
+ */
178
+ function validateBlock(block) {
179
+ if (typeof block !== 'object' || Array.isArray(block)) {
180
+ return [{
181
+ code: 'block-shape',
182
+ message: '`settings.secrets` must be an object (or null to opt out)'
183
+ }];
184
+ }
185
+ for (var key in block) {
186
+ if (!Object.prototype.hasOwnProperty.call(block, key)) { continue; }
187
+ if (key !== 'file' && key !== 'exec') {
188
+ return [{
189
+ code: 'block-unknown-key',
190
+ message: '`settings.secrets` carries an unknown key `' + key + '` — the declared keys are `file` and `exec`. Unknown keys are refused rather than ignored: a typo here would silently drop a whole secrets tier'
191
+ }];
192
+ }
193
+ }
194
+ var fileDeclared = (typeof block.file !== 'undefined' && block.file !== null);
195
+ var execDeclared = (typeof block.exec !== 'undefined' && block.exec !== null);
196
+ if (fileDeclared && execDeclared) {
197
+ return [{
198
+ code: 'block-both-tiers',
199
+ message: '`settings.secrets` declares BOTH `file` and `exec` — pick one; the two tiers do not layer. A bundle inheriting a project-wide `file` chain opts out of it with `"file": null` beside its own `exec` block'
200
+ }];
201
+ }
202
+ return [];
203
+ }
204
+
205
+ /**
206
+ * Validate the declared `settings.secrets.exec` spec, POST-substitution.
207
+ *
208
+ * The guards, in order — first failure wins:
209
+ *
210
+ * 1. **Spec shape** — a plain object carrying `command`.
211
+ * 2. **Unknown spec keys refused** — same schema-parity reasoning as the
212
+ * block level, and it protects forward too: a config written for a newer
213
+ * gina (say, a future `format` key) fails LOUDLY on an older one instead
214
+ * of silently ignoring the option and misreading the output.
215
+ * 3. **`command` shape** — a non-empty array of non-empty strings, argv
216
+ * form: element 0 is the binary, no shell is ever involved (the safe
217
+ * half of the house child-process precedent).
218
+ * 4. **`${secret:…}` placeholder** — the backend that would resolve it is
219
+ * the one being built (the file tier's identical rule).
220
+ * 5. **Unresolved `${…}` token** — same reasoning as the file tier: unknown
221
+ * tokens survive substitution verbatim, so a typo would become a
222
+ * literally-named binary or argument.
223
+ * ⚠️ The file tier's `//` empty-segment guard is deliberately NOT
224
+ * mirrored here: argv elements legitimately carry `//` (URLs —
225
+ * `https://vault:8200`). The residual — a token resolving to EMPTY
226
+ * inside an element — is documented in the guide instead: the command's
227
+ * own failure is the backstop, and recipes prefer whole-element tokens.
228
+ * 6. **`timeout` shape** — when declared, a positive integer (milliseconds).
229
+ *
230
+ * @memberof module:lib/secrets/declaration
231
+ * @function validateExecSpec
232
+ * @param {*} spec - The declared `settings.secrets.exec` value (non-null)
233
+ * @returns {Array<{code: string, message: string}>} Empty when the spec
234
+ * passes; otherwise exactly one error — code one of `exec-spec-shape`,
235
+ * `exec-spec-unknown-key`, `exec-command-shape`,
236
+ * `exec-command-secret-placeholder`, `exec-command-unresolved-token`,
237
+ * `exec-timeout-shape`
238
+ *
239
+ * @example
240
+ * var declaration = require('./declaration');
241
+ * declaration.validateExecSpec({ command: ['/opt/bin/fetch-secrets', '--json'] }); // → []
242
+ * declaration.validateExecSpec({ command: [] }); // → [{code: 'exec-command-shape', …}]
243
+ */
244
+ function validateExecSpec(spec) {
245
+ if (spec === null || typeof spec !== 'object' || Array.isArray(spec)) {
246
+ return [{
247
+ code: 'exec-spec-shape',
248
+ message: '`settings.secrets.exec` must be an object with a `command` array'
249
+ }];
250
+ }
251
+ for (var key in spec) {
252
+ if (!Object.prototype.hasOwnProperty.call(spec, key)) { continue; }
253
+ if (key !== 'command' && key !== 'timeout') {
254
+ return [{
255
+ code: 'exec-spec-unknown-key',
256
+ message: '`settings.secrets.exec` carries an unknown key `' + key + '` — the declared keys are `command` and `timeout`'
257
+ }];
258
+ }
259
+ }
260
+ if (!Array.isArray(spec.command) || !spec.command.length) {
261
+ return [{
262
+ code: 'exec-command-shape',
263
+ message: '`settings.secrets.exec.command` must be a non-empty array of strings — argv form: the first element is the binary, no shell is involved'
264
+ }];
265
+ }
266
+ for (var i = 0; i < spec.command.length; i++) {
267
+ var el = spec.command[i];
268
+ if (typeof el !== 'string' || el.trim() === '') {
269
+ return [{
270
+ code: 'exec-command-shape',
271
+ message: '`settings.secrets.exec.command` must be a non-empty array of strings — argv form: the first element is the binary, no shell is involved'
272
+ }];
273
+ }
274
+ if (el.indexOf('${secret:') > -1) {
275
+ return [{
276
+ code: 'exec-command-secret-placeholder',
277
+ message: '`settings.secrets.exec.command` cannot contain a `${secret:…}` placeholder — the backend that would resolve it is the one being built'
278
+ }];
279
+ }
280
+ if (TOKEN_RE.test(el)) {
281
+ return [{
282
+ code: 'exec-command-unresolved-token',
283
+ message: '`settings.secrets.exec.command` contains an unresolved `${…}` token: ' + el
284
+ }];
285
+ }
286
+ }
287
+ if (typeof spec.timeout !== 'undefined' && spec.timeout !== null) {
288
+ if (typeof spec.timeout !== 'number' || !isFinite(spec.timeout)
289
+ || spec.timeout !== Math.floor(spec.timeout) || spec.timeout < 1) {
290
+ return [{
291
+ code: 'exec-timeout-shape',
292
+ message: '`settings.secrets.exec.timeout` must be a positive integer (milliseconds)'
293
+ }];
294
+ }
295
+ }
296
+ return [];
297
+ }
298
+
299
+ module.exports = {
300
+ validateFilePaths: validateFilePaths,
301
+ validateBlock: validateBlock,
302
+ validateExecSpec: validateExecSpec
303
+ };
@@ -11,7 +11,12 @@
11
11
  * @module lib/secrets
12
12
  * @description Substitutes `${secret:KEY}` placeholders in a merged bundle
13
13
  * config tree at config-load time. The default backend resolves keys from
14
- * `process.env`; a future iteration may add pluggable backends.
14
+ * the framework environment tier then `process.env`; `selectBackend` adds
15
+ * the declared-file tier (`settings.secrets.file`) or the exec-bridge tier
16
+ * (`settings.secrets.exec` — mutually exclusive with `file`, both layered
17
+ * UNDER the environment). The module also owns
18
+ * the shared config-source walk (`getProjectRequiredKeys`, from ./sources)
19
+ * that the `secrets:scan` / `secrets:check` CLIs enumerate keys with.
15
20
  *
16
21
  * **Syntax.** `${secret:KEY}` where `KEY` matches `^[A-Z_][A-Z0-9_]*$`.
17
22
  * The placeholder must be the entire JSON string value — mixed-content
@@ -65,7 +70,16 @@
65
70
 
66
71
  var defaultBackend = require('./backends/env');
67
72
  var fileBackend = require('./backends/file');
73
+ var execBackend = require('./backends/exec');
68
74
  var envFile = require('./env-file');
75
+ // Declaration validation is shared with the secrets:check CLI gate (#B408) —
76
+ // pure and require-free, so it adds nothing to the zero-setup load path.
77
+ var declaration = require('./declaration');
78
+ // The config-source walk (./sources) is a FACTORY over this module's own
79
+ // getRequiredKeys — instantiated here, at the composition root, so the two
80
+ // files never require each other in a cycle. `getRequiredKeys` is a hoisted
81
+ // function declaration, so passing it above its definition is safe.
82
+ var sources = require('./sources')(getRequiredKeys);
69
83
 
70
84
  /**
71
85
  * Regex matching an entire `${secret:KEY}` placeholder. The capture group
@@ -320,9 +334,17 @@ function getRequiredKeys(config) {
320
334
  * @memberof module:lib/secrets
321
335
  * @function selectBackend
322
336
  * @param {object} config - The merged per-bundle config (`envConf[bundle][env]`)
323
- * @returns {{resolve: function(string): string}} The env backend, or an env-over-file backend
324
- * @throws {Error} If a declared path is not a non-empty string, still carries an
325
- * unsubstituted `${…}` token, or contains a `${secret:…}` placeholder.
337
+ * @returns {{resolve: function(string): string}} The env backend, an
338
+ * env-over-file backend, or an env-over-exec backend — the two declared
339
+ * tiers are mutually exclusive by validation
340
+ * @throws {Error} If the block or a declared tier fails the shared
341
+ * declaration guards (./declaration): a non-object block, an unknown key,
342
+ * both tiers declared at once; a file entry that is non-string /
343
+ * whitespace-only / a `${secret:…}` placeholder / an unresolved `${…}`
344
+ * token / an empty path segment (`//`); an exec spec whose command is not
345
+ * a non-empty argv array of clean strings, or whose timeout is not a
346
+ * positive integer. Also propagates the exec backend's eager-fetch
347
+ * failures (timeout, missing binary, non-zero exit, bad output).
326
348
  *
327
349
  * @example
328
350
  * // settings.json:
@@ -330,6 +352,14 @@ function getRequiredKeys(config) {
330
352
  * // "${homedir}/${scope}/secrets.env"] }
331
353
  * var backend = secrets.selectBackend(conf);
332
354
  * secrets.resolve(conf, backend);
355
+ *
356
+ * @example
357
+ * // settings.json (exec bridge — the operator's own CLI does the fetch):
358
+ * // "secrets": { "exec": { "command": ["sops", "decrypt",
359
+ * // "--output-type", "json",
360
+ * // "${project}/secrets.enc.json"] } }
361
+ * var backend = secrets.selectBackend(conf);
362
+ * secrets.resolve(conf, backend);
333
363
  */
334
364
  function selectBackend(config) {
335
365
  if (config === null || typeof config !== 'object') {
@@ -337,74 +367,97 @@ function selectBackend(config) {
337
367
  }
338
368
  var content = config.content;
339
369
  var settings = (content && typeof content === 'object') ? content.settings : null;
340
- var declared = (settings && typeof settings === 'object' && settings.secrets)
341
- ? settings.secrets.file
342
- : undefined;
370
+ var block = (settings && typeof settings === 'object') ? settings.secrets : undefined;
343
371
 
344
- if (typeof declared === 'undefined' || declared === null) {
372
+ if (typeof block === 'undefined' || block === null) {
345
373
  return defaultBackend;
346
374
  }
347
375
 
348
- var paths = Array.isArray(declared) ? declared : [declared];
349
- if (!paths.length) {
350
- // #B271 — `[]` disables the whole file tier exactly like `null`, but it is
351
- // not one of the documented shapes, so an operator emptying the array to
352
- // drop ONE layer silently drops the tier. Keep accepting it — an empty
353
- // list genuinely means "no files", and refusing boot over an undocumented
354
- // spelling would be a total outage for a harmless config — but say so once
355
- // rather than disabling a security tier without a word.
356
- console.warn('[ secrets ] `settings.secrets.file` is an empty array — the file tier is disabled. Use `null` to opt out explicitly, or list at least one path.');
357
- return defaultBackend;
376
+ // Block-level guards first — shape, unknown-key refusal (runtime parity
377
+ // with the schema's `additionalProperties: false`; a typo'd key used to
378
+ // degrade SILENTLY to env-only), and the file/exec exclusivity rule with
379
+ // its `"file": null` escape hatch. Shared with the secrets:check gate
380
+ // (./declaration), like every guard below — #B408's lesson.
381
+ var blockErrors = declaration.validateBlock(block);
382
+ if (blockErrors.length) {
383
+ throw new Error(blockErrors[0].message);
358
384
  }
359
385
 
360
- for (var i = 0; i < paths.length; i++) {
361
- var p = paths[i];
362
- // #B271 — trim before the empty check: the schema's `minLength: 1` counts a
363
- // space, so `[" "]` cleared both layers and built a tier that could never
364
- // resolve anything, visible only as a suppressed debug line.
365
- if (typeof p !== 'string' || p.trim() === '') {
366
- throw new Error('`settings.secrets.file` must be a non-empty string or an array of them');
386
+ var declared = block.file;
387
+ if (typeof declared !== 'undefined' && declared !== null) {
388
+ var paths = Array.isArray(declared) ? declared : [declared];
389
+ if (!paths.length) {
390
+ // #B271 — `[]` disables the whole file tier exactly like `null`, but it is
391
+ // not one of the documented shapes, so an operator emptying the array to
392
+ // drop ONE layer silently drops the tier. Keep accepting it — an empty
393
+ // list genuinely means "no files", and refusing boot over an undocumented
394
+ // spelling would be a total outage for a harmless config — but say so once
395
+ // rather than disabling a security tier without a word.
396
+ console.warn('[ secrets ] `settings.secrets.file` is an empty array — the file tier is disabled. Use `null` to opt out explicitly, or list at least one path.');
397
+ return defaultBackend;
367
398
  }
368
- // A secrets file cannot itself be named by a secret — the backend that
369
- // would resolve the placeholder is the one being built.
370
- if (p.indexOf('${secret:') > -1) {
371
- throw new Error('`settings.secrets.file` cannot contain a `${secret:…}` placeholder');
372
- }
373
- // Fail loudly on a token the substitution pass did not know: unknown
374
- // tokens are preserved verbatim by design, so a typo would otherwise
375
- // become a silent lookup for a literally-named file that never exists,
376
- // and every secret would fall through to a confusing fail-closed error.
377
- if (/\$\{[^}]*\}/.test(p)) {
378
- throw new Error('`settings.secrets.file` contains an unresolved `${…}` token: ' + p);
399
+
400
+ // The per-entry guards (#B271 entry shape incl. trim, the `secret:`
401
+ // placeholder refusal, the unresolved-token refusal, #B272's empty path
402
+ // segment) live in ./declaration, SHARED with the secrets:check CLI gate.
403
+ // #B408: two of those guards had drifted out of the checker's own copy —
404
+ // the gate green-lit configs this function refuses to boot — so the loop
405
+ // moved to one home, the same cure #B263 applied to the config-source
406
+ // walk. The full rationale for each guard travels with it.
407
+ var declErrors = declaration.validateFilePaths(paths);
408
+ if (declErrors.length) {
409
+ throw new Error(declErrors[0].message);
379
410
  }
380
- // #B272 — a token that resolved to an EMPTY string leaves nothing for the
381
- // check above to catch: `${homedir}/${scope}/secrets.env` with an empty
382
- // scope collapses to `<home>//secrets.env`, which POSIX reads as
383
- // `<home>/secrets.env` — a silent read of the WRONG file, one directory up
384
- // from the intended one. The empty segment is the only surviving trace.
385
- //
386
- // This CANNOT distinguish that from the benign cause — a token carrying a
387
- // trailing slash, e.g. GINA_HOMEDIR=/opt/gina/ (operator-supplied, and
388
- // nothing in the path chain normalises it) — because by here both have
389
- // collapsed to the same string. It refuses either way, deliberately: the
390
- // dangerous case runs the bundle on the wrong credential in silence, and
391
- // this file already refuses on the same reasoning when a declared layer
392
- // exists but cannot be read. The benign case costs one character to fix
393
- // and the message names it, so the error must NOT assert a cause it
394
- // cannot know.
395
- if (p.indexOf('//') > -1) {
396
- throw new Error('`settings.secrets.file` contains an empty path segment (`//`), so it does not name the file it appears to — POSIX reads `<a>//<b>` as `<a>/<b>`. Either a `${…}` token resolved to an empty value (the path then silently drops a directory), or a token carries a trailing slash. Remove the doubled separator or fix the token: ' + p);
411
+
412
+ return fileBackend.build(paths);
413
+ }
414
+
415
+ var execSpec = block.exec;
416
+ if (typeof execSpec !== 'undefined' && execSpec !== null) {
417
+ var execErrors = declaration.validateExecSpec(execSpec);
418
+ if (execErrors.length) {
419
+ throw new Error(execErrors[0].message);
397
420
  }
421
+ // build() runs the fetch EAGERLY — a timeout / missing binary /
422
+ // non-zero exit / bad output throws here, and the caller reports it
423
+ // as a per-bundle boot refusal, exactly like an unreadable file
424
+ // layer (#B267). Fail fast, never hang: the fetch is SIGKILL-bounded.
425
+ return execBackend.build(execSpec);
398
426
  }
399
427
 
400
- return fileBackend.build(paths);
428
+ // `{}`, `{file: null}`, `{exec: null}` — the pinned inherit / opt-out
429
+ // shapes: same default backend instance, byte-identical to no block.
430
+ return defaultBackend;
401
431
  }
402
432
 
403
433
  module.exports = {
434
+ // Config-source walk (which `${secret:KEY}` placeholders does a project /
435
+ // bundle require, walked from the same sources `loadBundleConfig` reads),
436
+ // re-exported from ./sources so that every consumer — the secrets:scan and
437
+ // secrets:check CLIs today, any boot-time consumer tomorrow — walks the
438
+ // SAME source set. Two hand-kept copies of this walk drifted once already
439
+ // (#B263: the gate and the runtime consulted different sources); one
440
+ // implementation makes that disagreement structurally impossible. The
441
+ // leaf readers ride along for the CLI handlers' own single-file needs.
442
+ getProjectRequiredKeys: sources.getProjectRequiredKeys,
443
+ loadManifest: sources.loadManifest,
444
+ readJsonSafe: sources.readJsonSafe,
445
+ resolveBundleSrc: sources.resolveBundleSrc,
404
446
  resolve: resolve,
405
447
  getResolvedPaths: getResolvedPaths,
406
448
  getRequiredKeys: getRequiredKeys,
407
449
  selectBackend: selectBackend,
450
+ // Declaration validation, re-exported from ./declaration so the
451
+ // secrets:check gate validates with the RUNTIME's own guards rather than
452
+ // a hand-kept copy — the copy drifted twice (#B408; drift class #B263).
453
+ validateFilePaths: declaration.validateFilePaths,
454
+ validateBlock: declaration.validateBlock,
455
+ validateExecSpec: declaration.validateExecSpec,
456
+ // The exec tier's fetch, re-exported so secrets:check runs the SAME
457
+ // spawn (same timeout, same SIGKILL bound, same output contract) the
458
+ // boot runs — a second spawn implementation in the checker would be the
459
+ // #B408 drift class on the semantics axis.
460
+ fetchExecMap: execBackend.fetchExecMap,
408
461
  SECRET_RE: SECRET_RE,
409
462
  // `.env`-style parsing, re-exported from ./env-file so that every reader
410
463
  // of a given file agrees on what it means. See that module's header for