gina 0.5.26 → 0.6.0

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 (560) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +34 -22
  3. package/ROADMAP.md +43 -16
  4. package/bin/cli +12 -1
  5. package/bin/gina-init +15 -1
  6. package/framework/v0.6.0/VERSION +1 -0
  7. package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/js/gina.js +36 -1
  8. package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js +601 -0
  9. package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  10. package/framework/v0.6.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  11. package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/session-store.v3.js +52 -84
  12. package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/session-store.v4.js +58 -84
  13. package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/lib/session-store.js +5 -2
  14. package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/lib/session-store.js +5 -2
  15. package/framework/{v0.5.26 → v0.6.0}/core/connectors/scylladb/lib/session-store.js +5 -2
  16. package/framework/{v0.5.26 → v0.6.0}/core/connectors/sqlite/lib/session-store.js +17 -3
  17. package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/session/src/main.js +142 -9
  18. package/framework/{v0.5.26 → v0.6.0}/core/router.js +101 -11
  19. package/framework/{v0.5.26 → v0.6.0}/core/server.js +91 -1
  20. package/framework/{v0.5.26 → v0.6.0}/core/template/conf/settings.json +3 -0
  21. package/framework/v0.6.0/lib/audit/src/main.js +916 -0
  22. package/framework/v0.6.0/lib/authn/package.json +7 -0
  23. package/framework/v0.6.0/lib/authn/src/lockout.js +615 -0
  24. package/framework/v0.6.0/lib/authn/src/main.js +899 -0
  25. package/framework/v0.6.0/lib/authn/src/totp.js +418 -0
  26. package/framework/v0.6.0/lib/cmd/audit/arguments.json +5 -0
  27. package/framework/v0.6.0/lib/cmd/audit/help.txt +50 -0
  28. package/framework/v0.6.0/lib/cmd/audit/verify.js +294 -0
  29. package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/init.js +11 -0
  30. package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/tail.js +5 -1
  31. package/framework/{v0.5.26 → v0.6.0}/lib/cmd/gina.1.md +1 -0
  32. package/framework/{v0.5.26 → v0.6.0}/lib/index.js +13 -0
  33. package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/file/index.js +11 -1
  34. package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/mq/speaker.js +8 -1
  35. package/framework/v0.6.0/lib/net-locality/package.json +17 -0
  36. package/framework/v0.6.0/lib/net-locality/src/main.js +174 -0
  37. package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-filters/src/main.js +13 -0
  38. package/framework/{v0.5.26 → v0.6.0}/lib/routing/src/main.js +36 -1
  39. package/framework/{v0.5.26 → v0.6.0}/lib/swig-filters/src/main.js +13 -0
  40. package/framework/{v0.5.26 → v0.6.0}/package.json +1 -1
  41. package/gna.js +4 -4
  42. package/llms.txt +19 -2
  43. package/package.json +3 -3
  44. package/schema/connectors.json +2 -3
  45. package/schema/settings.json +101 -0
  46. package/types/index.d.ts +4 -0
  47. package/framework/v0.5.26/VERSION +0 -1
  48. package/framework/v0.5.26/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -599
  49. package/framework/v0.5.26/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  50. package/framework/v0.5.26/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  51. package/framework/v0.5.26/lib/audit/src/main.js +0 -456
  52. /package/framework/{v0.5.26 → v0.6.0}/AUTHORS +0 -0
  53. /package/framework/{v0.5.26 → v0.6.0}/LICENSE +0 -0
  54. /package/framework/{v0.5.26 → v0.6.0}/core/asset/html/nolayout.html +0 -0
  55. /package/framework/{v0.5.26 → v0.6.0}/core/asset/html/static.html +0 -0
  56. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/android-chrome-192x192.png +0 -0
  57. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/android-chrome-512x512.png +0 -0
  58. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/apple-touch-icon.png +0 -0
  59. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/favicon-16x16.png +0 -0
  60. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/favicon-32x32.png +0 -0
  61. /package/framework/{v0.5.26 → v0.6.0}/core/asset/img/favicon.ico +0 -0
  62. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/README.md +0 -0
  63. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  64. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  65. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  66. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  67. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  68. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  69. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  70. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  71. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  72. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  73. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  74. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  75. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  76. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  77. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  78. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  79. /package/framework/{v0.5.26 → v0.6.0}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  80. /package/framework/{v0.5.26 → v0.6.0}/core/config.js +0 -0
  81. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/ai/index.js +0 -0
  82. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/ai/lib/connector.js +0 -0
  83. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/index.js +0 -0
  84. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/connector.js +0 -0
  85. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  86. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  87. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/n1ql.js +0 -0
  88. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/couchbase/lib/session-store.js +0 -0
  89. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/index.js +0 -0
  90. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/lib/connector.js +0 -0
  91. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/lib/job-store.js +0 -0
  92. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  93. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mysql/index.js +0 -0
  94. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/mysql/lib/connector.js +0 -0
  95. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/postgresql/index.js +0 -0
  96. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/postgresql/lib/connector.js +0 -0
  97. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/index.js +0 -0
  98. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/lib/connector.js +0 -0
  99. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/lib/job-store.js +0 -0
  100. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/redis/lib/render-cache-store.js +0 -0
  101. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/scylladb/index.js +0 -0
  102. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/scylladb/lib/connector.js +0 -0
  103. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/sql-parser.js +0 -0
  104. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/sqlite/index.js +0 -0
  105. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/sqlite/lib/connector.js +0 -0
  106. /package/framework/{v0.5.26 → v0.6.0}/core/connectors/sqlite/lib/job-store.js +0 -0
  107. /package/framework/{v0.5.26 → v0.6.0}/core/content.encoding +0 -0
  108. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.framework.js +0 -0
  109. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.js +0 -0
  110. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-json.js +0 -0
  111. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-nunjucks-async.js +0 -0
  112. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-nunjucks.js +0 -0
  113. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-stream.js +0 -0
  114. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-swig-async.js +0 -0
  115. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-swig.js +0 -0
  116. /package/framework/{v0.5.26 → v0.6.0}/core/controller/controller.render-v1.js +0 -0
  117. /package/framework/{v0.5.26 → v0.6.0}/core/controller/index.js +0 -0
  118. /package/framework/{v0.5.26 → v0.6.0}/core/controller/inspector-window-emit.js +0 -0
  119. /package/framework/{v0.5.26 → v0.6.0}/core/controller/release-banner.js +0 -0
  120. /package/framework/{v0.5.26 → v0.6.0}/core/dev/index.js +0 -0
  121. /package/framework/{v0.5.26 → v0.6.0}/core/dev/lib/class.js +0 -0
  122. /package/framework/{v0.5.26 → v0.6.0}/core/dev/lib/factory.js +0 -0
  123. /package/framework/{v0.5.26 → v0.6.0}/core/dev/lib/tools.js +0 -0
  124. /package/framework/{v0.5.26 → v0.6.0}/core/gna.js +0 -0
  125. /package/framework/{v0.5.26 → v0.6.0}/core/locales/README.md +0 -0
  126. /package/framework/{v0.5.26 → v0.6.0}/core/locales/currency.json +0 -0
  127. /package/framework/{v0.5.26 → v0.6.0}/core/locales/dist/language/en.json +0 -0
  128. /package/framework/{v0.5.26 → v0.6.0}/core/locales/dist/language/fr.json +0 -0
  129. /package/framework/{v0.5.26 → v0.6.0}/core/locales/dist/region/en.json +0 -0
  130. /package/framework/{v0.5.26 → v0.6.0}/core/locales/dist/region/fr.json +0 -0
  131. /package/framework/{v0.5.26 → v0.6.0}/core/locales/index.js +0 -0
  132. /package/framework/{v0.5.26 → v0.6.0}/core/mime.types +0 -0
  133. /package/framework/{v0.5.26 → v0.6.0}/core/model/entity.js +0 -0
  134. /package/framework/{v0.5.26 → v0.6.0}/core/model/index.js +0 -0
  135. /package/framework/{v0.5.26 → v0.6.0}/core/model/template/entityFactory.js +0 -0
  136. /package/framework/{v0.5.26 → v0.6.0}/core/model/template/index.js +0 -0
  137. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/README.md +0 -0
  138. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/index.js +0 -0
  139. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/csrf/README.md +0 -0
  140. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/csrf/package.json +0 -0
  141. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/csrf/src/main.js +0 -0
  142. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/README.md +0 -0
  143. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coep/README.md +0 -0
  144. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coep/package.json +0 -0
  145. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  146. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coop/README.md +0 -0
  147. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coop/package.json +0 -0
  148. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  149. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/corp/README.md +0 -0
  150. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/corp/package.json +0 -0
  151. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  152. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/csp/README.md +0 -0
  153. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/csp/package.json +0 -0
  154. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  155. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  156. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  157. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  158. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  159. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  160. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  161. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  162. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  163. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  164. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/package.json +0 -0
  165. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  166. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  167. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  168. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/src/main.js +0 -0
  169. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  170. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  171. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  172. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  173. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  174. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  175. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  176. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  177. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  178. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  179. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  180. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  181. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  182. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  183. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  184. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  185. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  186. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  187. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/session/README.md +0 -0
  188. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/session/package.json +0 -0
  189. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/storage/README.md +0 -0
  190. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/storage/build.json +0 -0
  191. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/storage/package.json +0 -0
  192. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/storage/src/main.js +0 -0
  193. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/README.md +0 -0
  194. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/build.json +0 -0
  195. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/package.json +0 -0
  196. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/src/form-validator.js +0 -0
  197. /package/framework/{v0.5.26 → v0.6.0}/core/plugins/lib/validator/src/main.js +0 -0
  198. /package/framework/{v0.5.26 → v0.6.0}/core/server.express.js +0 -0
  199. /package/framework/{v0.5.26 → v0.6.0}/core/server.isaac.js +0 -0
  200. /package/framework/{v0.5.26 → v0.6.0}/core/status.codes +0 -0
  201. /package/framework/{v0.5.26 → v0.6.0}/core/template/_gitignore +0 -0
  202. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/app.json +0 -0
  203. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  204. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/routing.json +0 -0
  205. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/settings.json +0 -0
  206. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  207. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/templates.json +0 -0
  208. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  209. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  210. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  211. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  212. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/index.js +0 -0
  213. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle/locales/en.json +0 -0
  214. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  215. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  216. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  217. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  218. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  219. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  220. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  221. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  222. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/readme.md +0 -0
  223. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_public/sw.js +0 -0
  224. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  225. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  226. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  227. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  228. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  229. /package/framework/{v0.5.26 → v0.6.0}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  230. /package/framework/{v0.5.26 → v0.6.0}/core/template/command/gina.bat.tpl +0 -0
  231. /package/framework/{v0.5.26 → v0.6.0}/core/template/command/gina.tpl +0 -0
  232. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/env.json +0 -0
  233. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/manifest.json +0 -0
  234. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/package.json +0 -0
  235. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/statics.json +0 -0
  236. /package/framework/{v0.5.26 → v0.6.0}/core/template/conf/templates.json +0 -0
  237. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/client/json/401.json +0 -0
  238. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/client/json/403.json +0 -0
  239. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/client/json/404.json +0 -0
  240. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/server/html/50x.html +0 -0
  241. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/server/json/500.json +0 -0
  242. /package/framework/{v0.5.26 → v0.6.0}/core/template/error/server/json/503.json +0 -0
  243. /package/framework/{v0.5.26 → v0.6.0}/core/template/extensions/logger/config.json +0 -0
  244. /package/framework/{v0.5.26 → v0.6.0}/helpers/console.js +0 -0
  245. /package/framework/{v0.5.26 → v0.6.0}/helpers/context.js +0 -0
  246. /package/framework/{v0.5.26 → v0.6.0}/helpers/data/LICENSE +0 -0
  247. /package/framework/{v0.5.26 → v0.6.0}/helpers/data/README.md +0 -0
  248. /package/framework/{v0.5.26 → v0.6.0}/helpers/data/package.json +0 -0
  249. /package/framework/{v0.5.26 → v0.6.0}/helpers/data/src/main.js +0 -0
  250. /package/framework/{v0.5.26 → v0.6.0}/helpers/dateFormat.js +0 -0
  251. /package/framework/{v0.5.26 → v0.6.0}/helpers/index.js +0 -0
  252. /package/framework/{v0.5.26 → v0.6.0}/helpers/json/LICENSE +0 -0
  253. /package/framework/{v0.5.26 → v0.6.0}/helpers/json/README.md +0 -0
  254. /package/framework/{v0.5.26 → v0.6.0}/helpers/json/package.json +0 -0
  255. /package/framework/{v0.5.26 → v0.6.0}/helpers/json/src/main.js +0 -0
  256. /package/framework/{v0.5.26 → v0.6.0}/helpers/path.js +0 -0
  257. /package/framework/{v0.5.26 → v0.6.0}/helpers/plugins/README.md +0 -0
  258. /package/framework/{v0.5.26 → v0.6.0}/helpers/plugins/package.json +0 -0
  259. /package/framework/{v0.5.26 → v0.6.0}/helpers/plugins/src/api-error.js +0 -0
  260. /package/framework/{v0.5.26 → v0.6.0}/helpers/plugins/src/main.js +0 -0
  261. /package/framework/{v0.5.26 → v0.6.0}/helpers/prototypes.js +0 -0
  262. /package/framework/{v0.5.26 → v0.6.0}/helpers/task.js +0 -0
  263. /package/framework/{v0.5.26 → v0.6.0}/helpers/text.js +0 -0
  264. /package/framework/{v0.5.26 → v0.6.0}/lib/admin/package.json +0 -0
  265. /package/framework/{v0.5.26 → v0.6.0}/lib/admin/src/main.js +0 -0
  266. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/README.md +0 -0
  267. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/build.json +0 -0
  268. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/package.json +0 -0
  269. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/src/dep/jszip.min.js +0 -0
  270. /package/framework/{v0.5.26 → v0.6.0}/lib/archiver/src/main.js +0 -0
  271. /package/framework/{v0.5.26 → v0.6.0}/lib/async/package.json +0 -0
  272. /package/framework/{v0.5.26 → v0.6.0}/lib/async/src/main.js +0 -0
  273. /package/framework/{v0.5.26 → v0.6.0}/lib/audit/package.json +0 -0
  274. /package/framework/{v0.5.26 → v0.6.0}/lib/audit-store.js +0 -0
  275. /package/framework/{v0.5.26 → v0.6.0}/lib/authz-gate/package.json +0 -0
  276. /package/framework/{v0.5.26 → v0.6.0}/lib/authz-gate/src/main.js +0 -0
  277. /package/framework/{v0.5.26 → v0.6.0}/lib/cache/README.md +0 -0
  278. /package/framework/{v0.5.26 → v0.6.0}/lib/cache/build.json +0 -0
  279. /package/framework/{v0.5.26 → v0.6.0}/lib/cache/package.json +0 -0
  280. /package/framework/{v0.5.26 → v0.6.0}/lib/cache/src/main.js +0 -0
  281. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/aliases.json +0 -0
  282. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/add.js +0 -0
  283. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/arguments.json +0 -0
  284. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/build.js +0 -0
  285. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/copy.js +0 -0
  286. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/cp.js +0 -0
  287. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/help.js +0 -0
  288. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/help.txt +0 -0
  289. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  290. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/list.js +0 -0
  291. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/man.js +0 -0
  292. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/mcp-start.js +0 -0
  293. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/mcp.js +0 -0
  294. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/oas.js +0 -0
  295. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/openapi.js +0 -0
  296. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/remove.js +0 -0
  297. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/rename.js +0 -0
  298. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/restart.js +0 -0
  299. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/rm.js +0 -0
  300. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/start.js +0 -0
  301. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/status.js +0 -0
  302. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/stop.js +0 -0
  303. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/bundle/types.js +0 -0
  304. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/cache/arguments.json +0 -0
  305. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/cache/clear.js +0 -0
  306. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/cache/help.txt +0 -0
  307. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/cache/stats.js +0 -0
  308. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/add.js +0 -0
  309. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/arguments.json +0 -0
  310. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/help.js +0 -0
  311. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/help.txt +0 -0
  312. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/infer.js +0 -0
  313. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/list.js +0 -0
  314. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/migrate.js +0 -0
  315. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/models.js +0 -0
  316. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/remove.js +0 -0
  317. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/rm.js +0 -0
  318. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/connector/test.js +0 -0
  319. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/arguments.json +0 -0
  320. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/help.js +0 -0
  321. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/help.txt +0 -0
  322. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/man.js +0 -0
  323. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/ps.js +0 -0
  324. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/container/stop.js +0 -0
  325. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/add.js +0 -0
  326. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/arguments.json +0 -0
  327. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/help.txt +0 -0
  328. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/args.js +0 -0
  329. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/namespace.js +0 -0
  330. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  331. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/reference-scan.js +0 -0
  332. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/inc/scaffold.js +0 -0
  333. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/remove.js +0 -0
  334. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/rename.js +0 -0
  335. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/controller/rm.js +0 -0
  336. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/add.js +0 -0
  337. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/get.js +0 -0
  338. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/help.js +0 -0
  339. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/help.txt +0 -0
  340. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/link-dev.js +0 -0
  341. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/list.js +0 -0
  342. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/remove.js +0 -0
  343. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/rm.js +0 -0
  344. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/set.js +0 -0
  345. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/unset.js +0 -0
  346. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/env/use.js +0 -0
  347. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/add.js +0 -0
  348. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/arguments.json +0 -0
  349. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/build.js +0 -0
  350. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/dot.js +0 -0
  351. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/get.js +0 -0
  352. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/help.js +0 -0
  353. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/help.txt +0 -0
  354. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/link-node-modules.js +0 -0
  355. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/link.js +0 -0
  356. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/list.js +0 -0
  357. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/man.js +0 -0
  358. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/msg.json +0 -0
  359. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/open.js +0 -0
  360. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/remove.js +0 -0
  361. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/reset.js +0 -0
  362. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/restart.js +0 -0
  363. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/set.js +0 -0
  364. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/start.js +0 -0
  365. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/status.js +0 -0
  366. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/stop.js +0 -0
  367. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/update.js +0 -0
  368. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/framework/version.js +0 -0
  369. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/gina-dev.1.md +0 -0
  370. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/gina-framework.1.md +0 -0
  371. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/helper.js +0 -0
  372. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/add.js +0 -0
  373. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/arguments.json +0 -0
  374. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/export.js +0 -0
  375. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/help.js +0 -0
  376. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/help.txt +0 -0
  377. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/import.js +0 -0
  378. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/i18n/scan.js +0 -0
  379. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/_host.js +0 -0
  380. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/arguments.json +0 -0
  381. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/build.js +0 -0
  382. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/help.js +0 -0
  383. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/help.txt +0 -0
  384. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/list.js +0 -0
  385. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/man.js +0 -0
  386. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/rm.js +0 -0
  387. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/image/run.js +0 -0
  388. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/index.js +0 -0
  389. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/inspector/help.js +0 -0
  390. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/inspector/help.txt +0 -0
  391. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/inspector/open.js +0 -0
  392. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/man-render.js +0 -0
  393. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/arguments.json +0 -0
  394. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/help.js +0 -0
  395. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/help.txt +0 -0
  396. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/kill.js +0 -0
  397. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/minion/list.js +0 -0
  398. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/msg.json +0 -0
  399. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/help.js +0 -0
  400. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/help.txt +0 -0
  401. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/inc/scan.js +0 -0
  402. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/list.js +0 -0
  403. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/reset.js +0 -0
  404. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/port/set.js +0 -0
  405. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/add.js +0 -0
  406. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/arguments.json +0 -0
  407. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/backup.js +0 -0
  408. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/build.js +0 -0
  409. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/help.js +0 -0
  410. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/help.txt +0 -0
  411. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/import.js +0 -0
  412. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/list.js +0 -0
  413. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/man.js +0 -0
  414. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/move.js +0 -0
  415. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/remove.js +0 -0
  416. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/rename.js +0 -0
  417. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/restart.js +0 -0
  418. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/restore.js +0 -0
  419. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/rm.js +0 -0
  420. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/start.js +0 -0
  421. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/status.js +0 -0
  422. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/project/stop.js +0 -0
  423. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/arguments.json +0 -0
  424. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/help.js +0 -0
  425. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/help.txt +0 -0
  426. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/list.js +0 -0
  427. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/remove.js +0 -0
  428. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/protocol/set.js +0 -0
  429. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/add.js +0 -0
  430. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/help.js +0 -0
  431. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/help.txt +0 -0
  432. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/link-local.js +0 -0
  433. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/link-production.js +0 -0
  434. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/list.js +0 -0
  435. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/remove.js +0 -0
  436. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/rm.js +0 -0
  437. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/scope/use.js +0 -0
  438. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/arguments.json +0 -0
  439. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/check.js +0 -0
  440. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/help.js +0 -0
  441. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/help.txt +0 -0
  442. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/secrets/scan.js +0 -0
  443. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/help.js +0 -0
  444. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/help.txt +0 -0
  445. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/list.js +0 -0
  446. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/man.js +0 -0
  447. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/service/start.js +0 -0
  448. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd/view/add.js +0 -0
  449. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd-status-format/package.json +0 -0
  450. /package/framework/{v0.5.26 → v0.6.0}/lib/cmd-status-format/src/main.js +0 -0
  451. /package/framework/{v0.5.26 → v0.6.0}/lib/collection/README.md +0 -0
  452. /package/framework/{v0.5.26 → v0.6.0}/lib/collection/build.json +0 -0
  453. /package/framework/{v0.5.26 → v0.6.0}/lib/collection/package.json +0 -0
  454. /package/framework/{v0.5.26 → v0.6.0}/lib/collection/src/main.js +0 -0
  455. /package/framework/{v0.5.26 → v0.6.0}/lib/config.js +0 -0
  456. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-config/package.json +0 -0
  457. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-config/src/main.js +0 -0
  458. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-error/package.json +0 -0
  459. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-error/src/main.js +0 -0
  460. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-registry/package.json +0 -0
  461. /package/framework/{v0.5.26 → v0.6.0}/lib/connector-registry/src/main.js +0 -0
  462. /package/framework/{v0.5.26 → v0.6.0}/lib/cron/README.md +0 -0
  463. /package/framework/{v0.5.26 → v0.6.0}/lib/cron/package.json +0 -0
  464. /package/framework/{v0.5.26 → v0.6.0}/lib/cron/src/main.js +0 -0
  465. /package/framework/{v0.5.26 → v0.6.0}/lib/domain/LICENSE +0 -0
  466. /package/framework/{v0.5.26 → v0.6.0}/lib/domain/README.md +0 -0
  467. /package/framework/{v0.5.26 → v0.6.0}/lib/domain/package.json +0 -0
  468. /package/framework/{v0.5.26 → v0.6.0}/lib/domain/src/main.js +0 -0
  469. /package/framework/{v0.5.26 → v0.6.0}/lib/dto/package.json +0 -0
  470. /package/framework/{v0.5.26 → v0.6.0}/lib/dto/src/main.js +0 -0
  471. /package/framework/{v0.5.26 → v0.6.0}/lib/dto-pipe/package.json +0 -0
  472. /package/framework/{v0.5.26 → v0.6.0}/lib/dto-pipe/src/main.js +0 -0
  473. /package/framework/{v0.5.26 → v0.6.0}/lib/dto-types/package.json +0 -0
  474. /package/framework/{v0.5.26 → v0.6.0}/lib/dto-types/src/main.js +0 -0
  475. /package/framework/{v0.5.26 → v0.6.0}/lib/generator/index.js +0 -0
  476. /package/framework/{v0.5.26 → v0.6.0}/lib/i18n/package.json +0 -0
  477. /package/framework/{v0.5.26 → v0.6.0}/lib/i18n/src/main.js +0 -0
  478. /package/framework/{v0.5.26 → v0.6.0}/lib/image-build/package.json +0 -0
  479. /package/framework/{v0.5.26 → v0.6.0}/lib/image-build/src/main.js +0 -0
  480. /package/framework/{v0.5.26 → v0.6.0}/lib/inherits/LICENSE +0 -0
  481. /package/framework/{v0.5.26 → v0.6.0}/lib/inherits/README.md +0 -0
  482. /package/framework/{v0.5.26 → v0.6.0}/lib/inherits/package.json +0 -0
  483. /package/framework/{v0.5.26 → v0.6.0}/lib/inherits/src/main.js +0 -0
  484. /package/framework/{v0.5.26 → v0.6.0}/lib/inspector-events/package.json +0 -0
  485. /package/framework/{v0.5.26 → v0.6.0}/lib/inspector-events/src/main.js +0 -0
  486. /package/framework/{v0.5.26 → v0.6.0}/lib/inspector-redact/package.json +0 -0
  487. /package/framework/{v0.5.26 → v0.6.0}/lib/inspector-redact/src/main.js +0 -0
  488. /package/framework/{v0.5.26 → v0.6.0}/lib/instrument/package.json +0 -0
  489. /package/framework/{v0.5.26 → v0.6.0}/lib/instrument/src/main.js +0 -0
  490. /package/framework/{v0.5.26 → v0.6.0}/lib/job/package.json +0 -0
  491. /package/framework/{v0.5.26 → v0.6.0}/lib/job/src/main.js +0 -0
  492. /package/framework/{v0.5.26 → v0.6.0}/lib/job-store.js +0 -0
  493. /package/framework/{v0.5.26 → v0.6.0}/lib/json-config-header/package.json +0 -0
  494. /package/framework/{v0.5.26 → v0.6.0}/lib/json-config-header/src/main.js +0 -0
  495. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/README.md +0 -0
  496. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/package.json +0 -0
  497. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/default/index.js +0 -0
  498. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  499. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  500. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/mq/index.js +0 -0
  501. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/containers/mq/listener.js +0 -0
  502. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/helper.js +0 -0
  503. /package/framework/{v0.5.26 → v0.6.0}/lib/logger/src/main.js +0 -0
  504. /package/framework/{v0.5.26 → v0.6.0}/lib/math/index.js +0 -0
  505. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-dispatch/package.json +0 -0
  506. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-dispatch/src/main.js +0 -0
  507. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-http/package.json +0 -0
  508. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-http/src/main.js +0 -0
  509. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-server/package.json +0 -0
  510. /package/framework/{v0.5.26 → v0.6.0}/lib/mcp-server/src/main.js +0 -0
  511. /package/framework/{v0.5.26 → v0.6.0}/lib/merge/README.md +0 -0
  512. /package/framework/{v0.5.26 → v0.6.0}/lib/merge/package.json +0 -0
  513. /package/framework/{v0.5.26 → v0.6.0}/lib/merge/src/main.js +0 -0
  514. /package/framework/{v0.5.26 → v0.6.0}/lib/metrics/package.json +0 -0
  515. /package/framework/{v0.5.26 → v0.6.0}/lib/metrics/src/main.js +0 -0
  516. /package/framework/{v0.5.26 → v0.6.0}/lib/model.js +0 -0
  517. /package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-filters/README.md +0 -0
  518. /package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-filters/package.json +0 -0
  519. /package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-resolver/package.json +0 -0
  520. /package/framework/{v0.5.26 → v0.6.0}/lib/nunjucks-resolver/src/main.js +0 -0
  521. /package/framework/{v0.5.26 → v0.6.0}/lib/proc.js +0 -0
  522. /package/framework/{v0.5.26 → v0.6.0}/lib/release-watch/package.json +0 -0
  523. /package/framework/{v0.5.26 → v0.6.0}/lib/release-watch/src/main.js +0 -0
  524. /package/framework/{v0.5.26 → v0.6.0}/lib/render-cache/package.json +0 -0
  525. /package/framework/{v0.5.26 → v0.6.0}/lib/render-cache/src/main.js +0 -0
  526. /package/framework/{v0.5.26 → v0.6.0}/lib/render-cache-store.js +0 -0
  527. /package/framework/{v0.5.26 → v0.6.0}/lib/routing/README.md +0 -0
  528. /package/framework/{v0.5.26 → v0.6.0}/lib/routing/build.json +0 -0
  529. /package/framework/{v0.5.26 → v0.6.0}/lib/routing/package.json +0 -0
  530. /package/framework/{v0.5.26 → v0.6.0}/lib/routing/src/radix.js +0 -0
  531. /package/framework/{v0.5.26 → v0.6.0}/lib/routing-introspect/package.json +0 -0
  532. /package/framework/{v0.5.26 → v0.6.0}/lib/routing-introspect/src/main.js +0 -0
  533. /package/framework/{v0.5.26 → v0.6.0}/lib/secrets/package.json +0 -0
  534. /package/framework/{v0.5.26 → v0.6.0}/lib/secrets/src/backends/env.js +0 -0
  535. /package/framework/{v0.5.26 → v0.6.0}/lib/secrets/src/main.js +0 -0
  536. /package/framework/{v0.5.26 → v0.6.0}/lib/session-store.js +0 -0
  537. /package/framework/{v0.5.26 → v0.6.0}/lib/shell.js +0 -0
  538. /package/framework/{v0.5.26 → v0.6.0}/lib/state.js +0 -0
  539. /package/framework/{v0.5.26 → v0.6.0}/lib/swig-filters/README.md +0 -0
  540. /package/framework/{v0.5.26 → v0.6.0}/lib/swig-filters/package.json +0 -0
  541. /package/framework/{v0.5.26 → v0.6.0}/lib/swig-resolver/package.json +0 -0
  542. /package/framework/{v0.5.26 → v0.6.0}/lib/swig-resolver/src/main.js +0 -0
  543. /package/framework/{v0.5.26 → v0.6.0}/lib/template-loaders/package.json +0 -0
  544. /package/framework/{v0.5.26 → v0.6.0}/lib/template-loaders/src/loaders/http.js +0 -0
  545. /package/framework/{v0.5.26 → v0.6.0}/lib/template-loaders/src/loaders/memory.js +0 -0
  546. /package/framework/{v0.5.26 → v0.6.0}/lib/template-loaders/src/main.js +0 -0
  547. /package/framework/{v0.5.26 → v0.6.0}/lib/url/README.md +0 -0
  548. /package/framework/{v0.5.26 → v0.6.0}/lib/url/index.js +0 -0
  549. /package/framework/{v0.5.26 → v0.6.0}/lib/url/routing.json +0 -0
  550. /package/framework/{v0.5.26 → v0.6.0}/lib/uuid/package.json +0 -0
  551. /package/framework/{v0.5.26 → v0.6.0}/lib/uuid/src/main.js +0 -0
  552. /package/framework/{v0.5.26 → v0.6.0}/lib/validator.js +0 -0
  553. /package/framework/{v0.5.26 → v0.6.0}/lib/watcher/package.json +0 -0
  554. /package/framework/{v0.5.26 → v0.6.0}/lib/watcher/src/main.js +0 -0
  555. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-framing/package.json +0 -0
  556. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-framing/src/main.js +0 -0
  557. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-query/package.json +0 -0
  558. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-query/src/main.js +0 -0
  559. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-session/package.json +0 -0
  560. /package/framework/{v0.5.26 → v0.6.0}/lib/ws-session/src/main.js +0 -0
@@ -0,0 +1,418 @@
1
+ /*
2
+ * This file is part of the gina package.
3
+ * Copyright (c) 2009-2026 Rhinostone <contact@gina.io>
4
+ *
5
+ * For the full copyright and license information, please view the LICENSE
6
+ * file that was distributed with this source code.
7
+ */
8
+ 'use strict';
9
+
10
+ /**
11
+ * TOTP — time-based one-time passwords, RFC 6238 (#COMPLY3).
12
+ *
13
+ * The second factor, and the smallest of the three slices: TOTP is a short,
14
+ * fully-specified algorithm over HMAC, so gina implements it against the RFC
15
+ * rather than taking a dependency. Compatible with every standard authenticator
16
+ * (the `otpauth://` URI is the enrolment format they all read).
17
+ *
18
+ * What the bundle owns, because gina owns no user record:
19
+ *
20
+ * - **Storing the secret.** It is a credential: encrypt it at rest, and treat
21
+ * it like a password in every log and error path.
22
+ * - **Replay defence.** {@link verifyTotp} returns the step `counter` it
23
+ * matched; persist the accepted counter per user and refuse anything not
24
+ * strictly greater. Without that, a code stays valid for its whole window
25
+ * and an observer who sees it can reuse it. The RFC is explicit that this is
26
+ * the verifier's job, and gina cannot do it without a place to write.
27
+ * - **Recovery codes.** Deliberately not built: they are single-use random
28
+ * strings, so `hashPassword` + your own table already expresses them, and a
29
+ * half-owned implementation would be worse than none.
30
+ *
31
+ * @module lib/authn/totp
32
+ *
33
+ * @example <caption>Enrolment</caption>
34
+ * var secret = lib.authn.generateTotpSecret();
35
+ * var uri = lib.authn.otpauthURL({ secret: secret, account: user.email, issuer: 'Acme' });
36
+ * // render `uri` as a QR code; store `secret` encrypted once the user confirms a code
37
+ *
38
+ * @example <caption>Verification, with replay defence</caption>
39
+ * var res = lib.authn.verifyTotp(submitted, user.totpSecret);
40
+ * if (!res.valid) { return deny(); }
41
+ * if (res.counter <= user.totpLastCounter) { return deny(); } // replay
42
+ * user.totpLastCounter = res.counter;
43
+ */
44
+
45
+ var crypto = require('crypto');
46
+
47
+ var BASE32_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
48
+
49
+ /** @constant {number} Default secret length in bytes (160 bits — the RFC 4226 recommendation). @inner @private */
50
+ var DEFAULT_SECRET_BYTES = 20;
51
+ /** @constant {number} Default step length in seconds. @inner @private */
52
+ var DEFAULT_STEP = 30;
53
+ /** @constant {number} Default digits. @inner @private */
54
+ var DEFAULT_DIGITS = 6;
55
+ /** @constant {string} Default HMAC algorithm. @inner @private */
56
+ var DEFAULT_ALGORITHM = 'sha1';
57
+ /**
58
+ * Default acceptance window, in steps either side of now.
59
+ *
60
+ * One step (±30 s) absorbs ordinary clock drift between a phone and a server.
61
+ * Widening it linearly widens the interval an observed code stays usable, so it
62
+ * is a security parameter, not a convenience one.
63
+ *
64
+ * @constant
65
+ * @type {number}
66
+ * @inner
67
+ * @private
68
+ */
69
+ var DEFAULT_WINDOW = 1;
70
+
71
+ var ALLOWED_ALGORITHMS = [ 'sha1', 'sha256', 'sha512' ];
72
+
73
+ /**
74
+ * Hard ceiling on the acceptance window, in steps.
75
+ *
76
+ * Ten steps is already five minutes of tolerance either side at the default
77
+ * step — far past any real clock drift, and each step is an HMAC paid on the
78
+ * request path.
79
+ *
80
+ * @constant
81
+ * @type {number}
82
+ * @inner
83
+ * @private
84
+ */
85
+ var MAX_WINDOW = 10;
86
+
87
+ /**
88
+ * Encode bytes as RFC 4648 base32, unpadded.
89
+ *
90
+ * Unpadded because that is what authenticator apps expect in an `otpauth://`
91
+ * URI; {@link base32Decode} accepts padding on the way back in regardless.
92
+ *
93
+ * @param {Buffer} buf
94
+ * @returns {string}
95
+ * @inner
96
+ * @private
97
+ */
98
+ function base32Encode(buf) {
99
+ var out = '';
100
+ var bits = 0;
101
+ var value = 0;
102
+ for (var i = 0; i < buf.length; i++) {
103
+ value = (value << 8) | buf[i];
104
+ bits += 8;
105
+ while (bits >= 5) {
106
+ out += BASE32_ALPHABET[(value >>> (bits - 5)) & 31];
107
+ bits -= 5;
108
+ }
109
+ }
110
+ if (bits > 0) {
111
+ out += BASE32_ALPHABET[(value << (5 - bits)) & 31];
112
+ }
113
+ return out;
114
+ }
115
+
116
+ /**
117
+ * Decode RFC 4648 base32.
118
+ *
119
+ * Tolerant on input, because a user retyping a secret from a screen will use
120
+ * spaces and lowercase: padding, whitespace and case are all normalised. An
121
+ * out-of-alphabet character is an error, not a silent skip — a mistyped secret
122
+ * must fail loudly at enrolment rather than produce codes that never match.
123
+ *
124
+ * @param {string} str
125
+ * @returns {Buffer}
126
+ * @throws {Error} on a character outside the base32 alphabet.
127
+ * @inner
128
+ * @private
129
+ */
130
+ function base32Decode(str) {
131
+ // The type guard is load-bearing, not defensive tidying: `String(null)` is
132
+ // "NULL", and N/U/L are all in the base32 alphabet — so a null secret
133
+ // decoded to a NON-EMPTY, GLOBALLY CONSTANT key, and the `key.length === 0`
134
+ // guard downstream never fired. Any account whose secret column was null
135
+ // was verifiable by anyone able to compute the code for that constant.
136
+ // Measured: verifyTotp(<code for "NULL">, null) returned {valid:true}.
137
+ if (typeof str !== 'string') {
138
+ throw new Error('[gina authn] TOTP secret must be a base32 string — got: ' + (str === null ? 'null' : typeof str));
139
+ }
140
+ var clean = String(str).toUpperCase().replace(/=+$/, '').replace(/\s+/g, '');
141
+ var bits = 0;
142
+ var value = 0;
143
+ var out = [];
144
+ for (var i = 0; i < clean.length; i++) {
145
+ var idx = BASE32_ALPHABET.indexOf(clean[i]);
146
+ if (idx === -1) {
147
+ throw new Error('[gina authn] TOTP secret is not valid base32 — unexpected character: ' + JSON.stringify(clean[i]));
148
+ }
149
+ value = (value << 5) | idx;
150
+ bits += 5;
151
+ if (bits >= 8) {
152
+ out.push((value >>> (bits - 8)) & 255);
153
+ bits -= 8;
154
+ }
155
+ }
156
+ return Buffer.from(out);
157
+ }
158
+
159
+ /**
160
+ * Generate a TOTP secret.
161
+ *
162
+ * @param {number} [bytes=20] - entropy in bytes; 20 is the RFC 4226 recommendation.
163
+ * @returns {string} base32, unpadded — the form an authenticator expects.
164
+ * @throws {Error} when `bytes` is not a positive integer, or below 16.
165
+ * @memberof module:lib/authn
166
+ *
167
+ * @example
168
+ * var secret = lib.authn.generateTotpSecret(); // 'JBSWY3DPEHPK3PXP...'
169
+ */
170
+ function generateTotpSecret(bytes) {
171
+ var n = (typeof bytes === 'undefined') ? DEFAULT_SECRET_BYTES : bytes;
172
+ if (typeof n !== 'number' || !isFinite(n) || Math.floor(n) !== n || n < 16) {
173
+ throw new Error('[gina authn] generateTotpSecret(bytes): expects a whole number >= 16 (128 bits) — got: ' + JSON.stringify(bytes));
174
+ }
175
+ return base32Encode(crypto.randomBytes(n));
176
+ }
177
+
178
+ /**
179
+ * Compute the HOTP value for one counter (RFC 4226 §5.3).
180
+ *
181
+ * @param {Buffer} key
182
+ * @param {number} counter
183
+ * @param {string} algorithm
184
+ * @param {number} digits
185
+ * @returns {string} zero-padded to `digits`.
186
+ * @inner
187
+ * @private
188
+ */
189
+ function hotp(key, counter, algorithm, digits) {
190
+ var buf = Buffer.alloc(8);
191
+ // A 64-bit counter written as two 32-bit halves. At 30-second steps the high
192
+ // half stays zero until epoch second 128849018880 — the year 6053 — but the
193
+ // RFC specifies eight bytes and an authenticator hashes all eight.
194
+ buf.writeUInt32BE(Math.floor(counter / 0x100000000), 0);
195
+ buf.writeUInt32BE(counter >>> 0, 4);
196
+
197
+ var digest = crypto.createHmac(algorithm, key).update(buf).digest();
198
+ var offset = digest[digest.length - 1] & 0x0f;
199
+ var binary = ((digest[offset] & 0x7f) << 24)
200
+ | ((digest[offset + 1] & 0xff) << 16)
201
+ | ((digest[offset + 2] & 0xff) << 8)
202
+ | (digest[offset + 3] & 0xff);
203
+
204
+ var code = (binary % Math.pow(10, digits)).toString();
205
+ while (code.length < digits) {
206
+ code = '0' + code;
207
+ }
208
+ return code;
209
+ }
210
+
211
+ /**
212
+ * Normalise and validate the shared option set.
213
+ *
214
+ * @param {object} [options]
215
+ * @returns {{step: number, digits: number, algorithm: string, window: number}}
216
+ * @throws {Error} on an unsupported value.
217
+ * @inner
218
+ * @private
219
+ */
220
+ function resolveOptions(options) {
221
+ options = options || {};
222
+ var step = (typeof options.step === 'undefined') ? DEFAULT_STEP : options.step;
223
+ var digits = (typeof options.digits === 'undefined') ? DEFAULT_DIGITS : options.digits;
224
+ var algorithm = (typeof options.algorithm === 'undefined') ? DEFAULT_ALGORITHM : String(options.algorithm).toLowerCase();
225
+ var window_ = (typeof options.window === 'undefined') ? DEFAULT_WINDOW : options.window;
226
+
227
+ if (typeof step !== 'number' || !isFinite(step) || step <= 0 || Math.floor(step) !== step) {
228
+ throw new Error('[gina authn] TOTP `step` must be a positive whole number of seconds — got: ' + JSON.stringify(options.step));
229
+ }
230
+ if (typeof digits !== 'number' || digits < 6 || digits > 10 || Math.floor(digits) !== digits) {
231
+ throw new Error('[gina authn] TOTP `digits` must be a whole number in 6..10 — got: ' + JSON.stringify(options.digits));
232
+ }
233
+ if (ALLOWED_ALGORITHMS.indexOf(algorithm) === -1) {
234
+ throw new Error('[gina authn] TOTP `algorithm` must be one of ' + ALLOWED_ALGORITHMS.join(', ') + ' — got: ' + JSON.stringify(options.algorithm));
235
+ }
236
+ if (typeof window_ !== 'number' || !isFinite(window_) || window_ < 0 || Math.floor(window_) !== window_ || window_ > MAX_WINDOW) {
237
+ // Upper-bounded because each step costs an HMAC on the request path and
238
+ // every extra step widens the interval an observed code stays usable.
239
+ // Measured unbounded: window 100000 blocked the event loop for ~79 ms.
240
+ throw new Error('[gina authn] TOTP `window` must be a whole number in 0..' + MAX_WINDOW + ' — got: ' + JSON.stringify(options.window));
241
+ }
242
+ return { step: step, digits: digits, algorithm: algorithm, window: window_ };
243
+ }
244
+
245
+ /**
246
+ * Generate the TOTP code for a moment in time.
247
+ *
248
+ * Mostly useful for enrolment confirmation and for tests; a server rarely needs
249
+ * to produce a code it is about to compare.
250
+ *
251
+ * @param {string} secret - base32, as returned by {@link generateTotpSecret}.
252
+ * @param {object} [options]
253
+ * @param {number} [options.at] - epoch MILLISECONDS; defaults to now.
254
+ * @param {number} [options.step=30] - step length in seconds.
255
+ * @param {number} [options.digits=6]
256
+ * @param {string} [options.algorithm=sha1] - `sha1` | `sha256` | `sha512`.
257
+ * @returns {string} the zero-padded code.
258
+ * @throws {Error} on an invalid secret or option.
259
+ * @memberof module:lib/authn
260
+ *
261
+ * @example
262
+ * lib.authn.generateTotp(secret); // code for right now
263
+ * lib.authn.generateTotp(secret, { at: 59000 }); // RFC 6238 test vector time
264
+ */
265
+ function generateTotp(secret, options) {
266
+ var opts = resolveOptions(options);
267
+ var key = base32Decode(secret);
268
+ if (key.length === 0) {
269
+ throw new Error('[gina authn] TOTP secret is empty');
270
+ }
271
+ var at = (options && typeof options.at === 'number') ? options.at : Date.now();
272
+ var counter = Math.floor((at / 1000) / opts.step);
273
+ return hotp(key, counter, opts.algorithm, opts.digits);
274
+ }
275
+
276
+ /**
277
+ * Verify a submitted TOTP code.
278
+ *
279
+ * Checks the current step and `window` steps either side, comparing in constant
280
+ * time. Returns the matched step as an absolute `counter` — **persist it and
281
+ * require the next accepted counter to be strictly greater**, or a code remains
282
+ * reusable for its whole acceptance window.
283
+ *
284
+ * Never throws for a bad code: a malformed submission is `{valid: false}`, the
285
+ * same shape as a wrong one, so an attacker learns nothing from the difference.
286
+ * An invalid SECRET does throw — that is a configuration fault, not a login
287
+ * attempt.
288
+ *
289
+ * @param {string} token - the submitted code.
290
+ * @param {string} secret - base32 shared secret.
291
+ * @param {object} [options]
292
+ * @param {number} [options.at] - epoch MILLISECONDS; defaults to now.
293
+ * @param {number} [options.window=1] - steps of tolerance either side.
294
+ * @param {number} [options.step=30]
295
+ * @param {number} [options.digits=6]
296
+ * @param {string} [options.algorithm=sha1]
297
+ * @returns {{valid: boolean, counter: ?number}} `counter` is the absolute step counter that matched — an index, not an offset from now — or `null`.
298
+ * @throws {Error} when the secret is unusable.
299
+ * @memberof module:lib/authn
300
+ *
301
+ * @example
302
+ * var res = lib.authn.verifyTotp(self.post.code, user.totpSecret);
303
+ * if (!res.valid || res.counter <= user.totpLastCounter) { return deny(); }
304
+ * user.totpLastCounter = res.counter;
305
+ */
306
+ function verifyTotp(token, secret, options) {
307
+ var opts = resolveOptions(options);
308
+ var key = base32Decode(secret);
309
+ if (key.length === 0) {
310
+ throw new Error('[gina authn] TOTP secret is empty');
311
+ }
312
+
313
+ if (typeof token !== 'string' && typeof token !== 'number') {
314
+ return { valid: false, counter: null };
315
+ }
316
+ var submitted = String(token).replace(/\s+/g, '');
317
+ // A numeric submission has already lost any leading zero — `Number('012345')`
318
+ // is 12345 — so re-pad before the length check. Measured without this: 9.6%
319
+ // of genuine codes were rejected, exactly the ones beginning with 0. It fails
320
+ // CLOSED, so it was never a bypass; it is the intermittent kind of breakage
321
+ // that is expensive to diagnose in the field.
322
+ if (typeof token === 'number' && /^[0-9]+$/.test(submitted)) {
323
+ while (submitted.length < opts.digits) {
324
+ submitted = '0' + submitted;
325
+ }
326
+ }
327
+ if (!/^[0-9]+$/.test(submitted) || submitted.length !== opts.digits) {
328
+ return { valid: false, counter: null };
329
+ }
330
+
331
+ var at = (options && typeof options.at === 'number') ? options.at : Date.now();
332
+ var counter = Math.floor((at / 1000) / opts.step);
333
+ var submittedBuf = Buffer.from(submitted, 'utf8');
334
+
335
+ for (var i = -opts.window; i <= opts.window; i++) {
336
+ // A counter before the epoch has no meaning and would make hotp's
337
+ // writeUInt32BE throw a RangeError — which would break the "never
338
+ // throws for a bad code" contract for any `at` under one step.
339
+ if (counter + i < 0) {
340
+ continue;
341
+ }
342
+ var candidate = hotp(key, counter + i, opts.algorithm, opts.digits);
343
+ var candidateBuf = Buffer.from(candidate, 'utf8');
344
+ // Lengths are equal by construction (both zero-padded to `digits`, and
345
+ // the submission was length-checked above), so this cannot throw.
346
+ var match = false;
347
+ try {
348
+ match = crypto.timingSafeEqual(submittedBuf, candidateBuf);
349
+ } catch (e) {
350
+ match = false;
351
+ }
352
+ if (match) {
353
+ return { valid: true, counter: counter + i };
354
+ }
355
+ }
356
+ return { valid: false, counter: null };
357
+ }
358
+
359
+ /**
360
+ * Build the `otpauth://` enrolment URI an authenticator app scans.
361
+ *
362
+ * Follows the de-facto Key Uri Format: the label carries `Issuer:Account` and
363
+ * the `issuer` parameter repeats it, which is what makes apps display the
364
+ * account under the right name.
365
+ *
366
+ * @param {object} params
367
+ * @param {string} params.secret - base32 secret.
368
+ * @param {string} params.account - the user-visible account name (an email, usually).
369
+ * @param {string} [params.issuer] - your application's name.
370
+ * @param {number} [params.digits=6]
371
+ * @param {number} [params.step=30]
372
+ * @param {string} [params.algorithm=sha1]
373
+ * @returns {string} the `otpauth://totp/...` URI.
374
+ * @throws {Error} when `secret` or `account` is missing.
375
+ * @memberof module:lib/authn
376
+ *
377
+ * @example
378
+ * lib.authn.otpauthURL({ secret: s, account: 'ada@example.com', issuer: 'Acme' });
379
+ * // otpauth://totp/Acme:ada%40example.com?secret=...&issuer=Acme&algorithm=SHA1&digits=6&period=30
380
+ */
381
+ function otpauthURL(params) {
382
+ params = params || {};
383
+ if (typeof params.secret !== 'string' || params.secret.length === 0) {
384
+ throw new Error('[gina authn] otpauthURL requires a `secret`');
385
+ }
386
+ if (typeof params.account !== 'string' || params.account.length === 0) {
387
+ throw new Error('[gina authn] otpauthURL requires an `account` (the user-visible name shown in the authenticator)');
388
+ }
389
+ // Validate the secret HERE rather than let a QR code carry something the
390
+ // authenticator will happily accept and the server can never verify.
391
+ base32Decode(params.secret);
392
+ var opts = resolveOptions(params);
393
+
394
+ var label = params.issuer
395
+ ? encodeURIComponent(params.issuer) + ':' + encodeURIComponent(params.account)
396
+ : encodeURIComponent(params.account);
397
+
398
+ var query = 'secret=' + encodeURIComponent(params.secret);
399
+ if (params.issuer) {
400
+ query += '&issuer=' + encodeURIComponent(params.issuer);
401
+ }
402
+ query += '&algorithm=' + opts.algorithm.toUpperCase();
403
+ query += '&digits=' + opts.digits;
404
+ query += '&period=' + opts.step;
405
+
406
+ return 'otpauth://totp/' + label + '?' + query;
407
+ }
408
+
409
+ module.exports = {
410
+ generateTotpSecret : generateTotpSecret,
411
+ generateTotp : generateTotp,
412
+ verifyTotp : verifyTotp,
413
+ otpauthURL : otpauthURL,
414
+ // test seams — may change without notice
415
+ _base32Encode : base32Encode,
416
+ _base32Decode : base32Decode,
417
+ _hotp : hotp
418
+ };
@@ -0,0 +1,5 @@
1
+ [
2
+ "--env",
3
+ "--file",
4
+ "--format"
5
+ ]
@@ -0,0 +1,50 @@
1
+ Usage: gina audit:<command> [<bundle>] [@<project>] [OPTIONS]
2
+
3
+ Audit-trail commands (#COMPLY2). The trail itself is written by the running
4
+ bundle (settings.json > audit); these commands inspect it offline.
5
+
6
+ Commands:
7
+
8
+ audit:verify <bundle> @<project> Verify the tamper-evidence hash chain
9
+ of the bundle's audit trail: every
10
+ record's `hash` is recomputed
11
+ (HMAC-SHA256 over the canonical record
12
+ + the previous hash) and the FIRST
13
+ break is reported with line + reason.
14
+
15
+ Options:
16
+
17
+ --env=<env> Environment of the trail to verify
18
+ (default: the project default env).
19
+ Selects the default trail filename
20
+ <project>/logs/audit-<bundle>-<env>.jsonl
21
+ --file=</abs/path> Verify this exact file instead of
22
+ deriving the path from settings.json
23
+ --format=json Machine-readable report:
24
+ {ok, records, unchained, breakAt,
25
+ warnings, file}
26
+
27
+ Signing key resolution (first match wins):
28
+ 1. settings.json > audit.chain.secret — a literal, or `${secret:VAR}`
29
+ resolved from the shell environment (VAR must NOT be GINA_-prefixed:
30
+ the CLI sweeps GINA_* out of process.env before handlers run).
31
+ 2. GINA_AUDIT_SECRET (read through the framework environment reader).
32
+
33
+ Exit codes:
34
+ 0 chain intact (warnings, if any, are printed — read them)
35
+ 1 chain BROKEN (first break reported)
36
+ 2 usage / configuration error (no trail file, no signing key, bad --env)
37
+
38
+ What an intact chain proves — and what it does not:
39
+ Detects post-hoc edit, deletion, insertion and reordering by anyone WITHOUT
40
+ the signing key. It cannot see truncation at the exact tail (nothing after
41
+ it commits to it), it verifies an empty trail trivially (read the record
42
+ count), and the process holding the key can forge a whole chain — stream
43
+ the trail to WORM storage (see the compliance guide) for that adversary.
44
+
45
+ Examples:
46
+
47
+ gina audit:verify web @myproject
48
+ gina audit:verify web @myproject --env=prod
49
+ gina audit:verify web @myproject --file=/var/log/audit-web-prod.jsonl
50
+ gina audit:verify web @myproject --format=json