gina 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (630) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +45 -61
  3. package/ROADMAP.md +3 -2
  4. package/bin/cli +5 -2
  5. package/bin/gina +10 -25
  6. package/framework/v0.7.1/VERSION +1 -0
  7. package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +21 -8
  8. package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.js +8 -11
  9. package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +160 -160
  10. package/framework/v0.7.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  11. package/framework/v0.7.1/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  12. package/framework/{v0.7.0 → v0.7.1}/core/config.js +10 -1
  13. package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.js +67 -15
  14. package/framework/{v0.7.0 → v0.7.1}/core/router.js +68 -8
  15. package/framework/{v0.7.0 → v0.7.1}/core/server.isaac.js +183 -45
  16. package/framework/{v0.7.0 → v0.7.1}/core/server.js +173 -55
  17. package/framework/{v0.7.0 → v0.7.1}/helpers/context.js +93 -32
  18. package/framework/{v0.7.0 → v0.7.1}/helpers/path.js +61 -43
  19. package/framework/{v0.7.0 → v0.7.1}/helpers/task.js +47 -35
  20. package/framework/v0.7.1/lib/admin/src/main.js +451 -0
  21. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/add.js +24 -0
  22. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/copy.js +14 -0
  23. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/help.txt +11 -0
  24. package/framework/v0.7.1/lib/cmd/bundle/inc/boot-lines.js +263 -0
  25. package/framework/v0.7.1/lib/cmd/bundle/inc/name.js +70 -0
  26. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/remove.js +8 -2
  27. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/rename.js +14 -0
  28. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/start.js +47 -12
  29. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/stop.js +64 -8
  30. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/remove.js +7 -2
  31. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/add.js +37 -2
  32. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/build.js +20 -5
  33. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/dot.js +10 -4
  34. package/framework/v0.7.1/lib/cmd/framework/inc/ps-titles.js +113 -0
  35. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/init.js +7 -2
  36. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/link.js +10 -2
  37. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/open.js +30 -6
  38. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/restart.js +24 -69
  39. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/start.js +6 -24
  40. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/status.js +44 -25
  41. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/tail.js +1 -1
  42. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/helper.js +56 -13
  43. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/help.txt +2 -1
  44. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/open.js +93 -30
  45. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/kill.js +52 -25
  46. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/list.js +15 -6
  47. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/reset.js +11 -2
  48. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/add.js +50 -1
  49. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/help.txt +8 -8
  50. package/framework/v0.7.1/lib/cmd/project/inc/name.js +71 -0
  51. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/remove.js +5 -1
  52. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/rename.js +12 -0
  53. package/framework/v0.7.1/lib/cmd/project/restart.js +126 -0
  54. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/restore.js +19 -0
  55. package/framework/v0.7.1/lib/cmd/project/start.js +125 -0
  56. package/framework/v0.7.1/lib/cmd/project/stop.js +98 -0
  57. package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/set.js +7 -2
  58. package/framework/{v0.7.0 → v0.7.1}/lib/inherits/src/main.js +8 -11
  59. package/framework/{v0.7.0 → v0.7.1}/lib/maintenance/src/main.js +3 -2
  60. package/framework/{v0.7.0 → v0.7.1}/lib/metrics/src/main.js +30 -6
  61. package/framework/{v0.7.0 → v0.7.1}/lib/shell.js +58 -25
  62. package/framework/{v0.7.0 → v0.7.1}/package.json +1 -1
  63. package/gna.js +4 -4
  64. package/llms.txt +13 -13
  65. package/package.json +4 -4
  66. package/schema/app.json +3 -3
  67. package/script/post_install.js +20 -2
  68. package/script/pre_install.js +31 -6
  69. package/utils/helper.js +21 -9
  70. package/framework/v0.7.0/VERSION +0 -1
  71. package/framework/v0.7.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  72. package/framework/v0.7.0/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  73. package/framework/v0.7.0/lib/admin/src/main.js +0 -217
  74. package/framework/v0.7.0/lib/cmd/project/restart.js +0 -85
  75. package/framework/v0.7.0/lib/cmd/project/start.js +0 -85
  76. package/framework/v0.7.0/lib/cmd/project/stop.js +0 -66
  77. /package/framework/{v0.7.0 → v0.7.1}/AUTHORS +0 -0
  78. /package/framework/{v0.7.0 → v0.7.1}/LICENSE +0 -0
  79. /package/framework/{v0.7.0 → v0.7.1}/core/asset/html/nolayout.html +0 -0
  80. /package/framework/{v0.7.0 → v0.7.1}/core/asset/html/static.html +0 -0
  81. /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/android-chrome-192x192.png +0 -0
  82. /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/android-chrome-512x512.png +0 -0
  83. /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/apple-touch-icon.png +0 -0
  84. /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon-16x16.png +0 -0
  85. /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon-32x32.png +0 -0
  86. /package/framework/{v0.7.0 → v0.7.1}/core/asset/img/favicon.ico +0 -0
  87. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/README.md +0 -0
  88. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  89. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  90. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  91. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  92. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  93. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  94. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  95. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  96. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  97. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  98. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  99. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  100. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  101. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  102. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  103. /package/framework/{v0.7.0 → v0.7.1}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  104. /package/framework/{v0.7.0 → v0.7.1}/core/config.requirements-anchor.js +0 -0
  105. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/ai/index.js +0 -0
  106. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/ai/lib/connector.js +0 -0
  107. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/index.js +0 -0
  108. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.js +0 -0
  109. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  110. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  111. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/n1ql.js +0 -0
  112. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.js +0 -0
  113. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  114. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  115. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/couchbase/lib/storage-store.js +0 -0
  116. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/duckdb/index.js +0 -0
  117. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/duckdb/lib/connector.js +0 -0
  118. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/index.js +0 -0
  119. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/connector.js +0 -0
  120. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/job-store.js +0 -0
  121. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  122. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mongodb/lib/session-store.js +0 -0
  123. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mysql/index.js +0 -0
  124. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/mysql/lib/connector.js +0 -0
  125. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/param-redact.js +0 -0
  126. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/postgresql/index.js +0 -0
  127. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/postgresql/lib/connector.js +0 -0
  128. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/index.js +0 -0
  129. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/connector.js +0 -0
  130. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/job-store.js +0 -0
  131. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/kv-store.js +0 -0
  132. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/render-cache-store.js +0 -0
  133. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/redis/lib/session-store.js +0 -0
  134. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/index.js +0 -0
  135. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/lib/connector.js +0 -0
  136. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/scylladb/lib/session-store.js +0 -0
  137. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/settle-once.js +0 -0
  138. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sql-parser.js +0 -0
  139. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/index.js +0 -0
  140. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/connector.js +0 -0
  141. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/job-store.js +0 -0
  142. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/kv-store.js +0 -0
  143. /package/framework/{v0.7.0 → v0.7.1}/core/connectors/sqlite/lib/session-store.js +0 -0
  144. /package/framework/{v0.7.0 → v0.7.1}/core/content.encoding +0 -0
  145. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.framework.js +0 -0
  146. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-json.js +0 -0
  147. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-nunjucks-async.js +0 -0
  148. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-nunjucks.js +0 -0
  149. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-stream.js +0 -0
  150. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-swig-async.js +0 -0
  151. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-swig.js +0 -0
  152. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-v1.js +0 -0
  153. /package/framework/{v0.7.0 → v0.7.1}/core/controller/controller.render-xml.js +0 -0
  154. /package/framework/{v0.7.0 → v0.7.1}/core/controller/index.js +0 -0
  155. /package/framework/{v0.7.0 → v0.7.1}/core/controller/inline-script.js +0 -0
  156. /package/framework/{v0.7.0 → v0.7.1}/core/controller/inspector-window-emit.js +0 -0
  157. /package/framework/{v0.7.0 → v0.7.1}/core/controller/release-banner.js +0 -0
  158. /package/framework/{v0.7.0 → v0.7.1}/core/dev/index.js +0 -0
  159. /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/class.js +0 -0
  160. /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/factory.js +0 -0
  161. /package/framework/{v0.7.0 → v0.7.1}/core/dev/lib/tools.js +0 -0
  162. /package/framework/{v0.7.0 → v0.7.1}/core/gna.js +0 -0
  163. /package/framework/{v0.7.0 → v0.7.1}/core/locales/README.md +0 -0
  164. /package/framework/{v0.7.0 → v0.7.1}/core/locales/currency.json +0 -0
  165. /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/language/en.json +0 -0
  166. /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/language/fr.json +0 -0
  167. /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/region/en.json +0 -0
  168. /package/framework/{v0.7.0 → v0.7.1}/core/locales/dist/region/fr.json +0 -0
  169. /package/framework/{v0.7.0 → v0.7.1}/core/locales/index.js +0 -0
  170. /package/framework/{v0.7.0 → v0.7.1}/core/mime.types +0 -0
  171. /package/framework/{v0.7.0 → v0.7.1}/core/model/entity.js +0 -0
  172. /package/framework/{v0.7.0 → v0.7.1}/core/model/index.js +0 -0
  173. /package/framework/{v0.7.0 → v0.7.1}/core/model/template/entityFactory.js +0 -0
  174. /package/framework/{v0.7.0 → v0.7.1}/core/model/template/index.js +0 -0
  175. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/README.md +0 -0
  176. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/index.js +0 -0
  177. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/README.md +0 -0
  178. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/package.json +0 -0
  179. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/csrf/src/main.js +0 -0
  180. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/README.md +0 -0
  181. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/README.md +0 -0
  182. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/package.json +0 -0
  183. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  184. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/README.md +0 -0
  185. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/package.json +0 -0
  186. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  187. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/README.md +0 -0
  188. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/package.json +0 -0
  189. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  190. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/README.md +0 -0
  191. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/package.json +0 -0
  192. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  193. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  194. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  195. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  196. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  197. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  198. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  199. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  200. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  201. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  202. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/package.json +0 -0
  203. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  204. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  205. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  206. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/src/main.js +0 -0
  207. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  208. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  209. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  210. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  211. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  212. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  213. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  214. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  215. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  216. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  217. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  218. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  219. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  220. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  221. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  222. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  223. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  224. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  225. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/README.md +0 -0
  226. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/package.json +0 -0
  227. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/session/src/main.js +0 -0
  228. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/README.md +0 -0
  229. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/build.json +0 -0
  230. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/package.json +0 -0
  231. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/storage/src/main.js +0 -0
  232. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/README.md +0 -0
  233. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/build.json +0 -0
  234. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/package.json +0 -0
  235. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/src/form-validator.js +0 -0
  236. /package/framework/{v0.7.0 → v0.7.1}/core/plugins/lib/validator/src/main.js +0 -0
  237. /package/framework/{v0.7.0 → v0.7.1}/core/server.express.js +0 -0
  238. /package/framework/{v0.7.0 → v0.7.1}/core/server.isaac.rapid-reset.js +0 -0
  239. /package/framework/{v0.7.0 → v0.7.1}/core/server.route-candidates.js +0 -0
  240. /package/framework/{v0.7.0 → v0.7.1}/core/status.codes +0 -0
  241. /package/framework/{v0.7.0 → v0.7.1}/core/template/_gitignore +0 -0
  242. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/app.json +0 -0
  243. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  244. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/routing.json +0 -0
  245. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/settings.json +0 -0
  246. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  247. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/templates.json +0 -0
  248. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  249. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  250. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  251. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  252. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/index.js +0 -0
  253. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle/locales/en.json +0 -0
  254. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  255. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  256. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  257. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  258. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  259. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  260. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  261. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  262. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/readme.md +0 -0
  263. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_public/sw.js +0 -0
  264. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  265. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  266. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  267. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  268. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  269. /package/framework/{v0.7.0 → v0.7.1}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  270. /package/framework/{v0.7.0 → v0.7.1}/core/template/command/gina.bat.tpl +0 -0
  271. /package/framework/{v0.7.0 → v0.7.1}/core/template/command/gina.tpl +0 -0
  272. /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/env.json +0 -0
  273. /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/manifest.json +0 -0
  274. /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/package.json +0 -0
  275. /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/settings.json +0 -0
  276. /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/statics.json +0 -0
  277. /package/framework/{v0.7.0 → v0.7.1}/core/template/conf/templates.json +0 -0
  278. /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/401.json +0 -0
  279. /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/403.json +0 -0
  280. /package/framework/{v0.7.0 → v0.7.1}/core/template/error/client/json/404.json +0 -0
  281. /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/html/50x.html +0 -0
  282. /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/json/500.json +0 -0
  283. /package/framework/{v0.7.0 → v0.7.1}/core/template/error/server/json/503.json +0 -0
  284. /package/framework/{v0.7.0 → v0.7.1}/core/template/extensions/logger/config.json +0 -0
  285. /package/framework/{v0.7.0 → v0.7.1}/helpers/console.js +0 -0
  286. /package/framework/{v0.7.0 → v0.7.1}/helpers/data/LICENSE +0 -0
  287. /package/framework/{v0.7.0 → v0.7.1}/helpers/data/README.md +0 -0
  288. /package/framework/{v0.7.0 → v0.7.1}/helpers/data/package.json +0 -0
  289. /package/framework/{v0.7.0 → v0.7.1}/helpers/data/src/main.js +0 -0
  290. /package/framework/{v0.7.0 → v0.7.1}/helpers/dateFormat.js +0 -0
  291. /package/framework/{v0.7.0 → v0.7.1}/helpers/index.js +0 -0
  292. /package/framework/{v0.7.0 → v0.7.1}/helpers/json/LICENSE +0 -0
  293. /package/framework/{v0.7.0 → v0.7.1}/helpers/json/README.md +0 -0
  294. /package/framework/{v0.7.0 → v0.7.1}/helpers/json/package.json +0 -0
  295. /package/framework/{v0.7.0 → v0.7.1}/helpers/json/src/main.js +0 -0
  296. /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/README.md +0 -0
  297. /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/package.json +0 -0
  298. /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/src/api-error.js +0 -0
  299. /package/framework/{v0.7.0 → v0.7.1}/helpers/plugins/src/main.js +0 -0
  300. /package/framework/{v0.7.0 → v0.7.1}/helpers/prototypes.js +0 -0
  301. /package/framework/{v0.7.0 → v0.7.1}/helpers/text.js +0 -0
  302. /package/framework/{v0.7.0 → v0.7.1}/lib/admin/package.json +0 -0
  303. /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/README.md +0 -0
  304. /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/build.json +0 -0
  305. /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/package.json +0 -0
  306. /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/src/dep/jszip.min.js +0 -0
  307. /package/framework/{v0.7.0 → v0.7.1}/lib/archiver/src/main.js +0 -0
  308. /package/framework/{v0.7.0 → v0.7.1}/lib/async/package.json +0 -0
  309. /package/framework/{v0.7.0 → v0.7.1}/lib/async/src/main.js +0 -0
  310. /package/framework/{v0.7.0 → v0.7.1}/lib/audit/package.json +0 -0
  311. /package/framework/{v0.7.0 → v0.7.1}/lib/audit/src/main.js +0 -0
  312. /package/framework/{v0.7.0 → v0.7.1}/lib/audit-store.js +0 -0
  313. /package/framework/{v0.7.0 → v0.7.1}/lib/authn/package.json +0 -0
  314. /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/lockout.js +0 -0
  315. /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/main.js +0 -0
  316. /package/framework/{v0.7.0 → v0.7.1}/lib/authn/src/totp.js +0 -0
  317. /package/framework/{v0.7.0 → v0.7.1}/lib/authz-gate/package.json +0 -0
  318. /package/framework/{v0.7.0 → v0.7.1}/lib/authz-gate/src/main.js +0 -0
  319. /package/framework/{v0.7.0 → v0.7.1}/lib/cache/README.md +0 -0
  320. /package/framework/{v0.7.0 → v0.7.1}/lib/cache/build.json +0 -0
  321. /package/framework/{v0.7.0 → v0.7.1}/lib/cache/package.json +0 -0
  322. /package/framework/{v0.7.0 → v0.7.1}/lib/cache/src/main.js +0 -0
  323. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/aliases.json +0 -0
  324. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/arguments.json +0 -0
  325. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/help.txt +0 -0
  326. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/audit/verify.js +0 -0
  327. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/arguments.json +0 -0
  328. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/build.js +0 -0
  329. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/cp.js +0 -0
  330. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/help.js +0 -0
  331. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  332. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/list.js +0 -0
  333. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/man.js +0 -0
  334. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/mcp-start.js +0 -0
  335. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/mcp.js +0 -0
  336. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/oas.js +0 -0
  337. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/openapi.js +0 -0
  338. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/restart.js +0 -0
  339. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/rm.js +0 -0
  340. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/status.js +0 -0
  341. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/bundle/types.js +0 -0
  342. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/arguments.json +0 -0
  343. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/clear.js +0 -0
  344. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/help.txt +0 -0
  345. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/cache/stats.js +0 -0
  346. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/add.js +0 -0
  347. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/arguments.json +0 -0
  348. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/help.js +0 -0
  349. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/help.txt +0 -0
  350. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/infer.js +0 -0
  351. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/list.js +0 -0
  352. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/migrate.js +0 -0
  353. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/models.js +0 -0
  354. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/remove.js +0 -0
  355. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/rm.js +0 -0
  356. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/connector/test.js +0 -0
  357. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/arguments.json +0 -0
  358. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/help.js +0 -0
  359. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/help.txt +0 -0
  360. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/man.js +0 -0
  361. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/ps.js +0 -0
  362. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/container/stop.js +0 -0
  363. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/add.js +0 -0
  364. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/arguments.json +0 -0
  365. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/help.txt +0 -0
  366. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/args.js +0 -0
  367. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/namespace.js +0 -0
  368. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  369. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/reference-scan.js +0 -0
  370. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/inc/scaffold.js +0 -0
  371. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/remove.js +0 -0
  372. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/rename.js +0 -0
  373. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/controller/rm.js +0 -0
  374. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/add.js +0 -0
  375. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/get.js +0 -0
  376. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/help.js +0 -0
  377. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/help.txt +0 -0
  378. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/inc/name.js +0 -0
  379. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/link-dev.js +0 -0
  380. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/list.js +0 -0
  381. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/rm.js +0 -0
  382. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/set.js +0 -0
  383. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/unset.js +0 -0
  384. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/env/use.js +0 -0
  385. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/arguments.json +0 -0
  386. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/get.js +0 -0
  387. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/help.js +0 -0
  388. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/help.txt +0 -0
  389. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/link-node-modules.js +0 -0
  390. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/list.js +0 -0
  391. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/man.js +0 -0
  392. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/msg.json +0 -0
  393. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/remove.js +0 -0
  394. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/reset.js +0 -0
  395. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/set.js +0 -0
  396. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/stop.js +0 -0
  397. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/update.js +0 -0
  398. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/framework/version.js +0 -0
  399. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina-dev.1.md +0 -0
  400. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina-framework.1.md +0 -0
  401. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/gina.1.md +0 -0
  402. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/add.js +0 -0
  403. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/arguments.json +0 -0
  404. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/export.js +0 -0
  405. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/help.js +0 -0
  406. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/help.txt +0 -0
  407. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/import.js +0 -0
  408. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/i18n/scan.js +0 -0
  409. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/_host.js +0 -0
  410. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/arguments.json +0 -0
  411. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/build.js +0 -0
  412. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/help.js +0 -0
  413. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/help.txt +0 -0
  414. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/list.js +0 -0
  415. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/man.js +0 -0
  416. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/rm.js +0 -0
  417. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/image/run.js +0 -0
  418. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/index.js +0 -0
  419. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/inspector/help.js +0 -0
  420. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/man-render.js +0 -0
  421. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/arguments.json +0 -0
  422. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/help.js +0 -0
  423. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/help.txt +0 -0
  424. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/minion/list.js +0 -0
  425. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/msg.json +0 -0
  426. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/help.js +0 -0
  427. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/help.txt +0 -0
  428. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/inc/scan.js +0 -0
  429. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/port/set.js +0 -0
  430. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/arguments.json +0 -0
  431. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/backup.js +0 -0
  432. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/build.js +0 -0
  433. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/help.js +0 -0
  434. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/import.js +0 -0
  435. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/list.js +0 -0
  436. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/man.js +0 -0
  437. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/move.js +0 -0
  438. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/rm.js +0 -0
  439. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/project/status.js +0 -0
  440. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/arguments.json +0 -0
  441. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/help.js +0 -0
  442. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/help.txt +0 -0
  443. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/list.js +0 -0
  444. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/protocol/remove.js +0 -0
  445. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/add.js +0 -0
  446. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/help.js +0 -0
  447. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/help.txt +0 -0
  448. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/inc/name.js +0 -0
  449. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/link-local.js +0 -0
  450. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/link-production.js +0 -0
  451. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/list.js +0 -0
  452. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/remove.js +0 -0
  453. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/rm.js +0 -0
  454. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/scope/use.js +0 -0
  455. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/arguments.json +0 -0
  456. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/check.js +0 -0
  457. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/help.js +0 -0
  458. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/help.txt +0 -0
  459. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/secrets/scan.js +0 -0
  460. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/help.js +0 -0
  461. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/help.txt +0 -0
  462. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/list.js +0 -0
  463. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/man.js +0 -0
  464. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/service/start.js +0 -0
  465. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/arguments.json +0 -0
  466. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/gc.js +0 -0
  467. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/help.txt +0 -0
  468. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/stats.js +0 -0
  469. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/storage/verify.js +0 -0
  470. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd/view/add.js +0 -0
  471. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd-status-format/package.json +0 -0
  472. /package/framework/{v0.7.0 → v0.7.1}/lib/cmd-status-format/src/main.js +0 -0
  473. /package/framework/{v0.7.0 → v0.7.1}/lib/collection/README.md +0 -0
  474. /package/framework/{v0.7.0 → v0.7.1}/lib/collection/build.json +0 -0
  475. /package/framework/{v0.7.0 → v0.7.1}/lib/collection/package.json +0 -0
  476. /package/framework/{v0.7.0 → v0.7.1}/lib/collection/src/main.js +0 -0
  477. /package/framework/{v0.7.0 → v0.7.1}/lib/conf-view/package.json +0 -0
  478. /package/framework/{v0.7.0 → v0.7.1}/lib/conf-view/src/main.js +0 -0
  479. /package/framework/{v0.7.0 → v0.7.1}/lib/config.js +0 -0
  480. /package/framework/{v0.7.0 → v0.7.1}/lib/connector-config/package.json +0 -0
  481. /package/framework/{v0.7.0 → v0.7.1}/lib/connector-config/src/main.js +0 -0
  482. /package/framework/{v0.7.0 → v0.7.1}/lib/connector-error/package.json +0 -0
  483. /package/framework/{v0.7.0 → v0.7.1}/lib/connector-error/src/main.js +0 -0
  484. /package/framework/{v0.7.0 → v0.7.1}/lib/connector-registry/package.json +0 -0
  485. /package/framework/{v0.7.0 → v0.7.1}/lib/connector-registry/src/main.js +0 -0
  486. /package/framework/{v0.7.0 → v0.7.1}/lib/cron/README.md +0 -0
  487. /package/framework/{v0.7.0 → v0.7.1}/lib/cron/package.json +0 -0
  488. /package/framework/{v0.7.0 → v0.7.1}/lib/cron/src/main.js +0 -0
  489. /package/framework/{v0.7.0 → v0.7.1}/lib/domain/LICENSE +0 -0
  490. /package/framework/{v0.7.0 → v0.7.1}/lib/domain/README.md +0 -0
  491. /package/framework/{v0.7.0 → v0.7.1}/lib/domain/package.json +0 -0
  492. /package/framework/{v0.7.0 → v0.7.1}/lib/domain/src/main.js +0 -0
  493. /package/framework/{v0.7.0 → v0.7.1}/lib/dto/package.json +0 -0
  494. /package/framework/{v0.7.0 → v0.7.1}/lib/dto/src/main.js +0 -0
  495. /package/framework/{v0.7.0 → v0.7.1}/lib/dto-pipe/package.json +0 -0
  496. /package/framework/{v0.7.0 → v0.7.1}/lib/dto-pipe/src/main.js +0 -0
  497. /package/framework/{v0.7.0 → v0.7.1}/lib/dto-types/package.json +0 -0
  498. /package/framework/{v0.7.0 → v0.7.1}/lib/dto-types/src/main.js +0 -0
  499. /package/framework/{v0.7.0 → v0.7.1}/lib/duration/package.json +0 -0
  500. /package/framework/{v0.7.0 → v0.7.1}/lib/duration/src/main.js +0 -0
  501. /package/framework/{v0.7.0 → v0.7.1}/lib/generator/index.js +0 -0
  502. /package/framework/{v0.7.0 → v0.7.1}/lib/i18n/package.json +0 -0
  503. /package/framework/{v0.7.0 → v0.7.1}/lib/i18n/src/main.js +0 -0
  504. /package/framework/{v0.7.0 → v0.7.1}/lib/idempotency/package.json +0 -0
  505. /package/framework/{v0.7.0 → v0.7.1}/lib/idempotency/src/main.js +0 -0
  506. /package/framework/{v0.7.0 → v0.7.1}/lib/image-build/package.json +0 -0
  507. /package/framework/{v0.7.0 → v0.7.1}/lib/image-build/src/main.js +0 -0
  508. /package/framework/{v0.7.0 → v0.7.1}/lib/index.js +0 -0
  509. /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/LICENSE +0 -0
  510. /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/README.md +0 -0
  511. /package/framework/{v0.7.0 → v0.7.1}/lib/inherits/package.json +0 -0
  512. /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-events/package.json +0 -0
  513. /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-events/src/main.js +0 -0
  514. /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-redact/package.json +0 -0
  515. /package/framework/{v0.7.0 → v0.7.1}/lib/inspector-redact/src/main.js +0 -0
  516. /package/framework/{v0.7.0 → v0.7.1}/lib/instrument/package.json +0 -0
  517. /package/framework/{v0.7.0 → v0.7.1}/lib/instrument/src/main.js +0 -0
  518. /package/framework/{v0.7.0 → v0.7.1}/lib/job/package.json +0 -0
  519. /package/framework/{v0.7.0 → v0.7.1}/lib/job/src/main.js +0 -0
  520. /package/framework/{v0.7.0 → v0.7.1}/lib/job-store.js +0 -0
  521. /package/framework/{v0.7.0 → v0.7.1}/lib/json-config-header/package.json +0 -0
  522. /package/framework/{v0.7.0 → v0.7.1}/lib/json-config-header/src/main.js +0 -0
  523. /package/framework/{v0.7.0 → v0.7.1}/lib/kv/package.json +0 -0
  524. /package/framework/{v0.7.0 → v0.7.1}/lib/kv/src/main.js +0 -0
  525. /package/framework/{v0.7.0 → v0.7.1}/lib/kv-store.js +0 -0
  526. /package/framework/{v0.7.0 → v0.7.1}/lib/loading-state/package.json +0 -0
  527. /package/framework/{v0.7.0 → v0.7.1}/lib/loading-state/src/main.js +0 -0
  528. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/README.md +0 -0
  529. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/package.json +0 -0
  530. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/default/index.js +0 -0
  531. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/file/index.js +0 -0
  532. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/index.js +0 -0
  533. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/listener.js +0 -0
  534. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/containers/mq/speaker.js +0 -0
  535. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/helper.js +0 -0
  536. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/main.js +0 -0
  537. /package/framework/{v0.7.0 → v0.7.1}/lib/logger/src/redact.js +0 -0
  538. /package/framework/{v0.7.0 → v0.7.1}/lib/maintenance/package.json +0 -0
  539. /package/framework/{v0.7.0 → v0.7.1}/lib/math/index.js +0 -0
  540. /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-dispatch/package.json +0 -0
  541. /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-dispatch/src/main.js +0 -0
  542. /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-http/package.json +0 -0
  543. /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-http/src/main.js +0 -0
  544. /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-server/package.json +0 -0
  545. /package/framework/{v0.7.0 → v0.7.1}/lib/mcp-server/src/main.js +0 -0
  546. /package/framework/{v0.7.0 → v0.7.1}/lib/merge/README.md +0 -0
  547. /package/framework/{v0.7.0 → v0.7.1}/lib/merge/package.json +0 -0
  548. /package/framework/{v0.7.0 → v0.7.1}/lib/merge/src/main.js +0 -0
  549. /package/framework/{v0.7.0 → v0.7.1}/lib/message-validator/package.json +0 -0
  550. /package/framework/{v0.7.0 → v0.7.1}/lib/message-validator/src/main.js +0 -0
  551. /package/framework/{v0.7.0 → v0.7.1}/lib/metrics/package.json +0 -0
  552. /package/framework/{v0.7.0 → v0.7.1}/lib/model.js +0 -0
  553. /package/framework/{v0.7.0 → v0.7.1}/lib/money/package.json +0 -0
  554. /package/framework/{v0.7.0 → v0.7.1}/lib/money/src/main.js +0 -0
  555. /package/framework/{v0.7.0 → v0.7.1}/lib/multipart/package.json +0 -0
  556. /package/framework/{v0.7.0 → v0.7.1}/lib/multipart/src/main.js +0 -0
  557. /package/framework/{v0.7.0 → v0.7.1}/lib/net-locality/package.json +0 -0
  558. /package/framework/{v0.7.0 → v0.7.1}/lib/net-locality/src/main.js +0 -0
  559. /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/README.md +0 -0
  560. /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/package.json +0 -0
  561. /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-filters/src/main.js +0 -0
  562. /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-resolver/package.json +0 -0
  563. /package/framework/{v0.7.0 → v0.7.1}/lib/nunjucks-resolver/src/main.js +0 -0
  564. /package/framework/{v0.7.0 → v0.7.1}/lib/priority/package.json +0 -0
  565. /package/framework/{v0.7.0 → v0.7.1}/lib/priority/src/main.js +0 -0
  566. /package/framework/{v0.7.0 → v0.7.1}/lib/proc.js +0 -0
  567. /package/framework/{v0.7.0 → v0.7.1}/lib/push/package.json +0 -0
  568. /package/framework/{v0.7.0 → v0.7.1}/lib/push/src/main.js +0 -0
  569. /package/framework/{v0.7.0 → v0.7.1}/lib/rate-limit/package.json +0 -0
  570. /package/framework/{v0.7.0 → v0.7.1}/lib/rate-limit/src/main.js +0 -0
  571. /package/framework/{v0.7.0 → v0.7.1}/lib/release-watch/package.json +0 -0
  572. /package/framework/{v0.7.0 → v0.7.1}/lib/release-watch/src/main.js +0 -0
  573. /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache/package.json +0 -0
  574. /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache/src/main.js +0 -0
  575. /package/framework/{v0.7.0 → v0.7.1}/lib/render-cache-store.js +0 -0
  576. /package/framework/{v0.7.0 → v0.7.1}/lib/routing/README.md +0 -0
  577. /package/framework/{v0.7.0 → v0.7.1}/lib/routing/build.json +0 -0
  578. /package/framework/{v0.7.0 → v0.7.1}/lib/routing/package.json +0 -0
  579. /package/framework/{v0.7.0 → v0.7.1}/lib/routing/src/main.js +0 -0
  580. /package/framework/{v0.7.0 → v0.7.1}/lib/routing-introspect/package.json +0 -0
  581. /package/framework/{v0.7.0 → v0.7.1}/lib/routing-introspect/src/main.js +0 -0
  582. /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/package.json +0 -0
  583. /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/env.js +0 -0
  584. /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/exec.js +0 -0
  585. /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/backends/file.js +0 -0
  586. /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/declaration.js +0 -0
  587. /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/env-file.js +0 -0
  588. /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/main.js +0 -0
  589. /package/framework/{v0.7.0 → v0.7.1}/lib/secrets/src/sources.js +0 -0
  590. /package/framework/{v0.7.0 → v0.7.1}/lib/security-headers-emitter/package.json +0 -0
  591. /package/framework/{v0.7.0 → v0.7.1}/lib/security-headers-emitter/src/main.js +0 -0
  592. /package/framework/{v0.7.0 → v0.7.1}/lib/session-lifetime/package.json +0 -0
  593. /package/framework/{v0.7.0 → v0.7.1}/lib/session-lifetime/src/main.js +0 -0
  594. /package/framework/{v0.7.0 → v0.7.1}/lib/session-store.js +0 -0
  595. /package/framework/{v0.7.0 → v0.7.1}/lib/sqlite-driver.js +0 -0
  596. /package/framework/{v0.7.0 → v0.7.1}/lib/sri/package.json +0 -0
  597. /package/framework/{v0.7.0 → v0.7.1}/lib/sri/src/main.js +0 -0
  598. /package/framework/{v0.7.0 → v0.7.1}/lib/state.js +0 -0
  599. /package/framework/{v0.7.0 → v0.7.1}/lib/storage/package.json +0 -0
  600. /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local-cas.js +0 -0
  601. /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local-stream.js +0 -0
  602. /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/local.js +0 -0
  603. /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/main.js +0 -0
  604. /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/meta-store.js +0 -0
  605. /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/s3.js +0 -0
  606. /package/framework/{v0.7.0 → v0.7.1}/lib/storage/src/util.js +0 -0
  607. /package/framework/{v0.7.0 → v0.7.1}/lib/storage-store.js +0 -0
  608. /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/README.md +0 -0
  609. /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/package.json +0 -0
  610. /package/framework/{v0.7.0 → v0.7.1}/lib/swig-filters/src/main.js +0 -0
  611. /package/framework/{v0.7.0 → v0.7.1}/lib/swig-resolver/package.json +0 -0
  612. /package/framework/{v0.7.0 → v0.7.1}/lib/swig-resolver/src/main.js +0 -0
  613. /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/package.json +0 -0
  614. /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/loaders/http.js +0 -0
  615. /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/loaders/memory.js +0 -0
  616. /package/framework/{v0.7.0 → v0.7.1}/lib/template-loaders/src/main.js +0 -0
  617. /package/framework/{v0.7.0 → v0.7.1}/lib/url/README.md +0 -0
  618. /package/framework/{v0.7.0 → v0.7.1}/lib/url/index.js +0 -0
  619. /package/framework/{v0.7.0 → v0.7.1}/lib/url/routing.json +0 -0
  620. /package/framework/{v0.7.0 → v0.7.1}/lib/uuid/package.json +0 -0
  621. /package/framework/{v0.7.0 → v0.7.1}/lib/uuid/src/main.js +0 -0
  622. /package/framework/{v0.7.0 → v0.7.1}/lib/validator.js +0 -0
  623. /package/framework/{v0.7.0 → v0.7.1}/lib/watcher/package.json +0 -0
  624. /package/framework/{v0.7.0 → v0.7.1}/lib/watcher/src/main.js +0 -0
  625. /package/framework/{v0.7.0 → v0.7.1}/lib/ws-framing/package.json +0 -0
  626. /package/framework/{v0.7.0 → v0.7.1}/lib/ws-framing/src/main.js +0 -0
  627. /package/framework/{v0.7.0 → v0.7.1}/lib/ws-query/package.json +0 -0
  628. /package/framework/{v0.7.0 → v0.7.1}/lib/ws-query/src/main.js +0 -0
  629. /package/framework/{v0.7.0 → v0.7.1}/lib/ws-session/package.json +0 -0
  630. /package/framework/{v0.7.0 → v0.7.1}/lib/ws-session/src/main.js +0 -0
@@ -0,0 +1,451 @@
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
+
9
+ /**
10
+ * @module gina/lib/admin
11
+ *
12
+ * Admin /_gina/* IP-allowlist gate (#S7). Single source of truth for the
13
+ * access check on the admin-grade /_gina/* endpoints (`/_gina/info`,
14
+ * `/_gina/cache/stats`, `/_gina/cache/clear`, `/_gina/storage/*`,
15
+ * `/_gina/release/*`, `/_gina/maintenance`; `/_gina/metrics` has its own list
16
+ * in lib/metrics, which applies the same #B709 rule). Both server engines
17
+ * (`server.js` and `server.isaac.js`) previously carried a byte-identical copy
18
+ * of this helper; this module is now the single source and both engines call
19
+ * `lib.admin.isClientAllowed(req)`.
20
+ *
21
+ * The allowlist is resolved from `process.gina._adminAllowList`, which
22
+ * `gna.js` populates at bundle init from `app.json` `admin.allowFrom`
23
+ * (defaults to loopback `['127.0.0.1', '::1']`). Sibling of
24
+ * `lib.metrics.isClientAllowed` on a separate axis — admin endpoints expose
25
+ * process state (memory, uptime, HTTP/2 session counters, cache contents)
26
+ * and are gated separately from Prometheus scrapes.
27
+ *
28
+ * Also the home of the cross-origin WRITE guard (#B384) that fronts the same
29
+ * family. The two are complementary and neither subsumes the other: the IP
30
+ * allowlist answers "may this address talk to admin endpoints at all", while
31
+ * {@link isCrossOriginWrite} answers "did this state-changing request actually
32
+ * originate from the operator, or from a page that merely borrowed their
33
+ * browser's ambient IP". Kept as a SEPARATE function rather than folded into
34
+ * `isClientAllowed` so the six admin GET endpoints keep their existing
35
+ * semantics and the name never over-promises.
36
+ *
37
+ * #B709 — a loopback caller is admitted only when it connects DIRECTLY. The
38
+ * default list is loopback, and loopback is also the address a reverse proxy on
39
+ * the bundle's own host connects from, so an address-only gate admitted every
40
+ * client such a proxy forwarded. {@link isClientAllowed} therefore refuses a
41
+ * loopback caller whose request carries a proxy signal — the classifier is
42
+ * lib/maintenance's `isProxiedRequest`, the one the maintenance bypass list
43
+ * already uses, so the two gates can never disagree about what "proxied" means.
44
+ * The engines take that classification once per `/_gina/*` request from the
45
+ * pristine headers ({@link stampProxied}): isaac rewrites an h1 `Host` port-less
46
+ * before handing the request to `server.js`, and a live read after that rewrite
47
+ * would misclassify every direct call. The engines also match the family on
48
+ * {@link controlPath} rather than on the raw url, so a nested endpoint path, the
49
+ * endpoint path in a query string, another letter case or an empty leading
50
+ * segment never reaches a handler.
51
+ *
52
+ * Registered as a PLAIN `require` in `lib/index.js` (not `_require`): no
53
+ * instance/singleton state worth hot-reloading — same #B32-residual precedent as
54
+ * merge / uuid / Collection. Its one piece of module state is the once-per-process
55
+ * flag of the #B709 refusal warning; a reload only re-arms that warning.
56
+ *
57
+ * @example
58
+ * // from an engine handler (lib is the framework lib registry)
59
+ * if (!lib.admin.isClientAllowed(request)) {
60
+ * response.statusCode = 403;
61
+ * return response.end(JSON.stringify({ error: 'forbidden' }));
62
+ * }
63
+ */
64
+
65
+ /**
66
+ * The shared proxy classifier (#B709). Relative require: lib/admin is loaded by
67
+ * plain `require` from `lib/index.js` and directly by the tests, never through the
68
+ * `lib/…` bare-module path.
69
+ * @inner
70
+ */
71
+ var maintenance = require('../../maintenance/src/main');
72
+
73
+ /**
74
+ * Default allowlist used when `admin.allowFrom` is unset — loopback only.
75
+ * @constant {string[]}
76
+ */
77
+ var DEFAULT_ALLOW_LIST = ['127.0.0.1', '::1'];
78
+
79
+ /**
80
+ * Name of the per-request stamp holding the proxy classification of a
81
+ * `/_gina/*` request, taken from its pristine headers (#B709).
82
+ * @constant {string}
83
+ */
84
+ var PROXIED_STAMP = '_ginaAdminProxied';
85
+
86
+ /**
87
+ * Which gates have already logged a relayed-loopback refusal in this process,
88
+ * keyed by the list they read (`admin.allowFrom`, `metrics.allowFrom`).
89
+ * @inner
90
+ * @type {Object.<string, boolean>}
91
+ */
92
+ var relayedWarned = Object.create(null);
93
+
94
+ /**
95
+ * Decide whether a request's client IP is in an explicit allowlist. Inner
96
+ * seam exposed for branch testing without mutating `process.gina` state.
97
+ *
98
+ * Reads the client IP from `req.socket.remoteAddress` only — never trusts
99
+ * `X-Forwarded-For` (reverse proxies could spoof it). Normalises
100
+ * `::ffff:IPv4` (IPv6-mapped IPv4) → `IPv4` so listing `127.0.0.1` matches
101
+ * both forms. An empty list (`[]`) denies everyone (explicit lockdown).
102
+ *
103
+ * @inner
104
+ * @param {http.IncomingMessage|http2.Http2ServerRequest} req
105
+ * @param {string[]} list the allowlist to test against
106
+ * @returns {boolean} true if the client IP is in `list`
107
+ * @example
108
+ * _isAllowedWithList({ socket: { remoteAddress: '127.0.0.1' } }, ['127.0.0.1']); // true
109
+ * _isAllowedWithList({ socket: { remoteAddress: '10.0.0.1' } }, []); // false
110
+ */
111
+ function _isAllowedWithList(req, list) {
112
+ if (list.length === 0) return false;
113
+ var ip = (req.socket && req.socket.remoteAddress)
114
+ || (req.connection && req.connection.remoteAddress)
115
+ || '';
116
+ if (ip.indexOf('::ffff:') === 0) ip = ip.slice(7);
117
+ return list.indexOf(ip) >= 0;
118
+ }
119
+
120
+ /**
121
+ * IP-allowlist check for the admin-grade /_gina/* endpoints.
122
+ *
123
+ * Resolves the allowlist from `process.gina._adminAllowList` (set by
124
+ * `gna.js` from `app.json` admin.allowFrom), falling back to loopback-only
125
+ * when the global is missing (init not yet fired — the safest default).
126
+ *
127
+ * #B709 — a caller admitted by the list is still refused when it is a loopback
128
+ * address and its request carries a proxy signal ({@link isRelayedLoopback}): a
129
+ * reverse proxy on the bundle's own host connects from loopback, so without this
130
+ * the default list admitted every client that proxy forwarded. An explicitly
131
+ * listed NON-loopback address keeps admitting relayed requests — listing a proxy
132
+ * on another host is the documented opt-in. The first such refusal is logged
133
+ * once per process.
134
+ *
135
+ * @param {http.IncomingMessage|http2.Http2ServerRequest} req
136
+ * @returns {boolean} true if the client IP is allowed, false otherwise
137
+ * @example
138
+ * if (!lib.admin.isClientAllowed(request)) { return self.throwError(403); }
139
+ */
140
+ function isClientAllowed(req) {
141
+ var list = (typeof process.gina === 'object' && process.gina && Array.isArray(process.gina._adminAllowList))
142
+ ? process.gina._adminAllowList
143
+ : DEFAULT_ALLOW_LIST;
144
+ if ( !_isAllowedWithList(req, list) ) {
145
+ return false;
146
+ }
147
+ if ( isRelayedLoopback(req) ) {
148
+ warnRelayedOnce(req, 'admin.allowFrom');
149
+ return false;
150
+ }
151
+ return true;
152
+ }
153
+
154
+ /**
155
+ * Whether an address is a loopback address: `::1`, or any address of the IPv4
156
+ * loopback block `127.0.0.0/8`, in its plain or IPv6-mapped (`::ffff:`) form.
157
+ *
158
+ * @inner
159
+ * @param {string} ip - a socket's remote address
160
+ * @returns {boolean}
161
+ * @example
162
+ * _isLoopbackAddress('127.0.0.1'); // true
163
+ * _isLoopbackAddress('::ffff:127.0.0.2'); // true
164
+ * _isLoopbackAddress('10.0.0.5'); // false
165
+ */
166
+ function _isLoopbackAddress(ip) {
167
+ if ( typeof(ip) != 'string' || ip === '' ) {
168
+ return false;
169
+ }
170
+ if ( ip.indexOf('::ffff:') === 0 ) {
171
+ ip = ip.slice(7);
172
+ }
173
+ return ( ip === '::1' || /^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(ip) );
174
+ }
175
+
176
+ /**
177
+ * Classify a request as proxied from its headers as they are NOW — lib/maintenance's
178
+ * `isProxiedRequest`, honouring `server.proxy.requireForwardedHeaders` (#B152). Fails
179
+ * toward "proxied" for a malformed request.
180
+ *
181
+ * @inner
182
+ * @param {object} req
183
+ * @returns {boolean}
184
+ */
185
+ function _classifyProxied(req) {
186
+ var requireForwarded = ( typeof(process.gina) == 'object' && process.gina !== null
187
+ && process.gina._proxyRequireForwarded === true );
188
+ return maintenance.isProxiedRequest(req, requireForwarded);
189
+ }
190
+
191
+ /**
192
+ * Take the proxy classification of a request ONCE, from its headers as they are
193
+ * at the call, and keep it on the request (`request._ginaAdminProxied`). The
194
+ * engines call it at the top of their request handling for every `/_gina/*`
195
+ * url, before anything rewrites a header: isaac rewrites an h1 `Host`
196
+ * port-less before it hands the request to `server.js`, and the port-less-Host
197
+ * heuristic would then read every direct caller of a `server.js`-only handler
198
+ * (`/_gina/storage/*`) as proxied. First-seer: a later call returns the stamp
199
+ * already there.
200
+ *
201
+ * @param {http.IncomingMessage|http2.Http2ServerRequest} req
202
+ * @returns {boolean} the stamped classification (`true` for a malformed request)
203
+ * @example
204
+ * if ( request.url.indexOf('/_gina/') > -1 ) { lib.admin.stampProxied(request); }
205
+ */
206
+ function stampProxied(req) {
207
+ if ( typeof(req) != 'object' || req === null ) {
208
+ return true;
209
+ }
210
+ if ( typeof(req[PROXIED_STAMP]) != 'boolean' ) {
211
+ req[PROXIED_STAMP] = _classifyProxied(req);
212
+ }
213
+ return req[PROXIED_STAMP];
214
+ }
215
+
216
+ /**
217
+ * Whether a request is a loopback caller relayed by a proxy on this host: its
218
+ * socket address is loopback and it carries a proxy signal — the stamp when the
219
+ * engine took one ({@link stampProxied}), else a live classification (Express,
220
+ * tests, req-less callers). The admin and metrics gates refuse such a request.
221
+ *
222
+ * A proxy that forwards `Host` with its port and adds no forwarding header is
223
+ * byte-identical to a direct client and is NOT detected — the residual every IP
224
+ * allowlist shares; the docs say to call the bundle's port directly and to block
225
+ * `/_gina/` at the edge.
226
+ *
227
+ * @param {http.IncomingMessage|http2.Http2ServerRequest} req
228
+ * @returns {boolean}
229
+ * @example
230
+ * isRelayedLoopback({ socket: { remoteAddress: '127.0.0.1' }, headers: { host: 'example.com' } }); // true
231
+ * isRelayedLoopback({ socket: { remoteAddress: '127.0.0.1' }, headers: { host: '127.0.0.1:3100' } }); // false
232
+ * isRelayedLoopback({ socket: { remoteAddress: '10.0.0.5' }, headers: { 'x-forwarded-for': '1.2.3.4' } }); // false
233
+ */
234
+ function isRelayedLoopback(req) {
235
+ if ( typeof(req) != 'object' || req === null ) {
236
+ return false;
237
+ }
238
+ var ip = (req.socket && req.socket.remoteAddress)
239
+ || (req.connection && req.connection.remoteAddress)
240
+ || '';
241
+ if ( !_isLoopbackAddress(ip) ) {
242
+ return false;
243
+ }
244
+ if ( typeof(req[PROXIED_STAMP]) == 'boolean' ) {
245
+ return req[PROXIED_STAMP];
246
+ }
247
+ return _classifyProxied(req);
248
+ }
249
+
250
+ /**
251
+ * Log the first relayed-loopback refusal of a gate, once per process — never per
252
+ * request, never at boot (the loopback default applies to every bundle, so a boot
253
+ * line about it would be noise; the refusal is the actionable moment). Names the
254
+ * path without its query.
255
+ *
256
+ * @param {object} req - the refused request
257
+ * @param {string} axis - the list the gate reads: `admin.allowFrom` or `metrics.allowFrom`
258
+ * @returns {void}
259
+ * @example
260
+ * if ( allowed && lib.admin.isRelayedLoopback(req) ) { lib.admin.warnRelayedOnce(req, 'metrics.allowFrom'); allowed = false; }
261
+ */
262
+ function warnRelayedOnce(req, axis) {
263
+ if ( relayedWarned[axis] === true ) {
264
+ return;
265
+ }
266
+ relayedWarned[axis] = true;
267
+ var url = ( req && typeof(req.originalUrl) == 'string' ) ? req.originalUrl
268
+ : ( req && typeof(req.url) == 'string' ) ? req.url
269
+ : '';
270
+ console.warn('[admin] refused a request to `' + url.split('?')[0] + '` relayed by a proxy on this host: '
271
+ + '`app.json > ' + axis + '` admits a loopback caller only when it connects directly. '
272
+ + 'Call the bundle\'s own port from the host or the pod, or list the address of a proxy running on another host. '
273
+ + 'See https://gina.io/docs/reference/app#admin — logged once per process.');
274
+ }
275
+
276
+ /**
277
+ * Test seam: re-arm the once-per-process refusal warnings.
278
+ * @inner
279
+ * @returns {void}
280
+ */
281
+ function _resetRelayedWarnings() {
282
+ relayedWarned = Object.create(null);
283
+ }
284
+
285
+ /**
286
+ * The query-free path a `/_gina/*` control endpoint is matched on (#B709): the
287
+ * url's path when it starts with `/_gina/`, or — for the bundle's OWN webroot —
288
+ * `<webroot>_gina/…` mapped to `/_gina/…`; anything else yields `''`. Case is kept,
289
+ * so `/_GINA/…` yields `''`; an empty leading segment (`//_gina/…`), another prefix
290
+ * and an absolute-form target yield `''` too. A nested endpoint path is returned
291
+ * whole, so an exact compare against `/_gina/<endpoint>` cannot match its tail.
292
+ *
293
+ * @param {string} url - the request url (`request.originalUrl || request.url`)
294
+ * @param {string} [webroot] - the bundle's webroot (`/web/`; normalised if needed)
295
+ * @returns {string} the control path, or `''`
296
+ * @example
297
+ * controlPath('/_gina/cache/clear?bundle=web'); // '/_gina/cache/clear'
298
+ * controlPath('/web/_gina/info', '/web/'); // '/_gina/info'
299
+ * controlPath('/zzz/_gina/info', '/web/'); // ''
300
+ * controlPath('/?next=/_gina/maintenance'); // ''
301
+ * controlPath('/_gina/health/check/_gina/maintenance'); // '/_gina/health/check/_gina/maintenance'
302
+ */
303
+ function controlPath(url, webroot) {
304
+ if ( typeof(url) != 'string' ) {
305
+ return '';
306
+ }
307
+ var p = url.split('?')[0];
308
+ if ( p.indexOf('/_gina/') === 0 ) {
309
+ return p;
310
+ }
311
+ if ( typeof(webroot) == 'string' && webroot !== '' && webroot !== '/' ) {
312
+ var w = ( webroot.charAt(0) === '/' ) ? webroot : '/' + webroot;
313
+ if ( w.charAt(w.length - 1) !== '/' ) {
314
+ w += '/';
315
+ }
316
+ if ( p.indexOf(w + '_gina/') === 0 ) {
317
+ return p.slice(w.length - 1);
318
+ }
319
+ }
320
+ return '';
321
+ }
322
+
323
+ /**
324
+ * Request methods that cannot mutate state (RFC 9110 §9.2.1). Mirrors the set
325
+ * in `core/controller/controller.js` — a cross-origin GET is not a CSRF vector,
326
+ * and refusing one would break the Inspector's deliberately cross-origin
327
+ * GET/SSE channels (`/_gina/agent`, `/_gina/logs`, `/_gina/indexes`), where
328
+ * `core/server.js` documents that "cross-origin is the norm here".
329
+ * @constant {Object.<string, boolean>}
330
+ */
331
+ var SAFE_HTTP_METHODS = { GET: true, HEAD: true, OPTIONS: true, TRACE: true };
332
+
333
+ /**
334
+ * Decide whether a request method is SAFE (non-mutating).
335
+ *
336
+ * @param {string} method - the HTTP method
337
+ * @returns {boolean} true when the method cannot mutate state
338
+ * @example
339
+ * isSafeMethod('get'); // true
340
+ * isSafeMethod('POST'); // false
341
+ * isSafeMethod(null); // false
342
+ */
343
+ function isSafeMethod(method) {
344
+ return SAFE_HTTP_METHODS[ String(method || '').toUpperCase() ] === true;
345
+ }
346
+
347
+ /**
348
+ * Detect a browser-driven CROSS-ORIGIN WRITE to the `/_gina/*` control family
349
+ * (#B384).
350
+ *
351
+ * These endpoints authenticate with an AMBIENT credential — the client's IP,
352
+ * via {@link isClientAllowed} — and a browser attaches that automatically to
353
+ * every request a page makes. That is precisely the precondition for CSRF: an
354
+ * operator browsing from an allowlisted address (loopback by DEFAULT, i.e. the
355
+ * machine running the bundle) can be lured to a page that silently writes to
356
+ * `/_gina/storage/gc`, `/_gina/cache/clear`, `/_gina/release/rebuild` or
357
+ * `/_gina/maintenance`. The first three take their entire input from the QUERY
358
+ * STRING and read no body at all, so the attack needs no `fetch` and no CORS
359
+ * reasoning — a plain auto-submitting `<form>` suffices, and browsers have
360
+ * always permitted a form to POST cross-origin.
361
+ *
362
+ * Two signals, in order of trustworthiness:
363
+ *
364
+ * 1. `Sec-Fetch-Site` — computed by the browser and a FORBIDDEN header name,
365
+ * so page script cannot forge it. It is also independent of how a reverse
366
+ * proxy rewrites `Host`, which is why it is preferred. `same-origin`
367
+ * passes; `none` passes (a user-initiated navigation — typed URL or
368
+ * bookmark — is not a forged request); `same-site` and `cross-site` are
369
+ * REFUSED, since a sibling subdomain is still a different origin and can
370
+ * still forge.
371
+ * 2. `Origin` compared against the authority the client actually connected
372
+ * to — the fallback for browsers predating Fetch Metadata. Built from
373
+ * `:authority` (HTTP/2) or `Host` (HTTP/1.1) ONLY, NEVER from
374
+ * `X-Forwarded-Host` or any other forwarded header: #B367 established
375
+ * those are attacker-controlled, and a guard comparing against a value the
376
+ * attacker supplies is no guard. `Origin: null` (sandboxed iframe,
377
+ * `file://` page) is refused — the #CSRF3 precedent.
378
+ *
379
+ * NO browser signal at all ⇒ ALLOWED. CSRF attacks ambient browser
380
+ * credentials; a client sending neither header is not a browser (curl, the
381
+ * gina CLI's own probes, a deploy script), so refusing it would break every
382
+ * documented operator workflow while stopping nothing.
383
+ *
384
+ * ⚠️ Residual, deliberately pinned: a browser old enough to send NEITHER
385
+ * `Sec-Fetch-Site` NOR `Origin` on a POST would pass. Every current browser
386
+ * sends `Origin` on cross-origin POSTs, so this is a legacy-only gap — and a
387
+ * narrower one than the IP allowlist already fronting these endpoints.
388
+ *
389
+ * ⚠️ Second residual: a reverse proxy that REWRITES `Host` to an internal
390
+ * upstream name desynchronises the fallback comparison, which would refuse a
391
+ * legitimate same-origin write from a pre-Fetch-Metadata browser. Modern
392
+ * browsers are unaffected (signal 1 never consults `Host`), and these
393
+ * endpoints are IP-gated on `req.socket.remoteAddress`, which behind a proxy
394
+ * is the PROXY's address: a proxy on another host must be listed explicitly,
395
+ * and a proxy on the bundle's own host (loopback) is refused whenever its
396
+ * request carries a proxy signal (#B709 — before that fix the default
397
+ * loopback list admitted it, so this "must have opted in" premise was false
398
+ * for exactly that deployment).
399
+ *
400
+ * @param {http.IncomingMessage|http2.Http2ServerRequest} req
401
+ * @returns {boolean} true when the request is a browser-driven cross-origin
402
+ * write and must be refused
403
+ * @example
404
+ * isCrossOriginWrite({ headers: { 'sec-fetch-site': 'same-origin' } }); // false
405
+ * isCrossOriginWrite({ headers: { 'sec-fetch-site': 'cross-site' } }); // true
406
+ * isCrossOriginWrite({ headers: {} }); // false (curl)
407
+ * isCrossOriginWrite({ headers: { origin: 'http://evil.tld', host: 'app.tld' } }); // true
408
+ * isCrossOriginWrite({ headers: { origin: 'http://app.tld', host: 'app.tld' } }); // false
409
+ */
410
+ function isCrossOriginWrite(req) {
411
+ if ( typeof(req) != 'object' || req === null ) {
412
+ return true; // malformed ⇒ fail CLOSED
413
+ }
414
+ var headers = req.headers || {};
415
+
416
+ var site = headers['sec-fetch-site'];
417
+ if ( typeof(site) == 'string' && site.trim() !== '' ) {
418
+ site = site.trim().toLowerCase();
419
+ return !( site === 'same-origin' || site === 'none' );
420
+ }
421
+
422
+ var origin = headers['origin'];
423
+ if ( typeof(origin) != 'string' || origin.trim() === '' ) {
424
+ return false; // no browser signal ⇒ not a browser ⇒ not CSRF
425
+ }
426
+ origin = origin.trim();
427
+ if ( origin.toLowerCase() === 'null' ) {
428
+ return true; // sandboxed iframe / file:// — #CSRF3 precedent
429
+ }
430
+ var authority = headers[':authority'] || headers['host'] || '';
431
+ if ( typeof(authority) != 'string' || authority === '' ) {
432
+ return true; // nothing trustworthy to compare against ⇒ fail CLOSED
433
+ }
434
+ var originHost = origin.replace(/^[a-z0-9+.\-]+:\/\//i, '');
435
+ return ( originHost.toLowerCase() !== authority.toLowerCase() );
436
+ }
437
+
438
+ module.exports = {
439
+ isClientAllowed : isClientAllowed,
440
+ isCrossOriginWrite : isCrossOriginWrite,
441
+ isSafeMethod : isSafeMethod,
442
+ isRelayedLoopback : isRelayedLoopback,
443
+ stampProxied : stampProxied,
444
+ controlPath : controlPath,
445
+ warnRelayedOnce : warnRelayedOnce,
446
+ _isAllowedWithList : _isAllowedWithList,
447
+ _resetRelayedWarnings : _resetRelayedWarnings,
448
+ DEFAULT_ALLOW_LIST : DEFAULT_ALLOW_LIST,
449
+ SAFE_HTTP_METHODS : SAFE_HTTP_METHODS,
450
+ PROXIED_STAMP : PROXIED_STAMP
451
+ };
@@ -6,6 +6,7 @@ var rl = readline.createInterface({ input: process.stdin, output: proce
6
6
  var CmdHelper = require('./../helper');
7
7
  var console = lib.logger;
8
8
  var scan = require('../port/inc/scan');
9
+ var bundleNameRule = require('./inc/name');
9
10
 
10
11
 
11
12
  /**
@@ -51,8 +52,17 @@ function Add(opt, cmd) {
51
52
  /**
52
53
  * Parses --start-port-from option, validates project/bundle args, and starts addition.
53
54
  *
55
+ * Every name of the list that the project's manifest does not hold yet must pass the
56
+ * bundle-name rule (`inc/name.js`), checked for the whole list before the first bundle
57
+ * is added, so a refused name leaves nothing written (#B665). A name the manifest
58
+ * already holds keeps working (`--import`, `--replace`).
59
+ *
54
60
  * @inner
55
61
  * @private
62
+ *
63
+ * @example
64
+ * // gina bundle:add api 'a$b' @myproject
65
+ * // → '"a$b" is not a valid bundle name: …', exit 1, `api` not added either
56
66
  */
57
67
  var init = function() {
58
68
 
@@ -125,6 +135,20 @@ function Add(opt, cmd) {
125
135
  // }
126
136
 
127
137
  if ( isDefined('project', self.projectName) ) {
138
+ // #B665 — every NEW bundle name must pass the bundle-name rule (`inc/name.js`),
139
+ // checked for the whole list before the first bundle is added: addBundles()
140
+ // checks only a name's first character, one bundle at a time, after the
141
+ // bundles before it are written. A name the manifest already holds, as an own
142
+ // key, keeps working.
143
+ for (let n = 0, nLen = self.bundles.length; n < nLen; n++) {
144
+ let candidate = self.bundles[n];
145
+ let registered = !!(self.projectData && self.projectData.bundles)
146
+ && Object.prototype.hasOwnProperty.call(self.projectData.bundles, candidate);
147
+ if ( !registered && !bundleNameRule.isValidBundleName(candidate) ) {
148
+ console.error( bundleNameRule.describeInvalidBundleName(candidate) );
149
+ return process.exit(1)
150
+ }
151
+ }
128
152
  addBundles(0);
129
153
  } else {
130
154
  //console.error('[ '+ self.projectName+' ] is not an existing project');
@@ -4,6 +4,7 @@ var console = lib.logger;
4
4
  var CmdHelper = require('./../helper');
5
5
  var scan = require('./../port/inc/scan');
6
6
  var nameRewrite = require('./inc/name-rewrite');
7
+ var bundleNameRule = require('./inc/name');
7
8
 
8
9
  /**
9
10
  * @module gina/lib/cmd/bundle/copy
@@ -355,6 +356,9 @@ function Copy(opt, cmd) {
355
356
  * ports, copies the source tree, rewrites the name footprint, allocates the
356
357
  * port matrix, and registers the manifest entry.
357
358
  *
359
+ * A destination the manifest does not hold yet must pass the bundle-name rule
360
+ * (`inc/name.js`), before the dry-run report and before anything is written (#B665).
361
+ *
358
362
  * @inner
359
363
  * @private
360
364
  */
@@ -378,6 +382,16 @@ function Copy(opt, cmd) {
378
382
  process.exit(1);
379
383
  return;
380
384
  }
385
+ // #B665 — the whole new name must pass the bundle-name rule (`inc/name.js`):
386
+ // isValidName() checks only its first character. A name the manifest already
387
+ // holds, as an own key (a destination overwritten under --force), keeps working.
388
+ var destRegistered = !!(self.projectData && self.projectData.bundles)
389
+ && Object.prototype.hasOwnProperty.call(self.projectData.bundles, dest);
390
+ if ( !destRegistered && !bundleNameRule.isValidBundleName(dest) ) {
391
+ console.error( bundleNameRule.describeInvalidBundleName(dest) );
392
+ process.exit(1);
393
+ return;
394
+ }
381
395
 
382
396
  // source must exist (registered + on disk)
383
397
  var srcEntry = (self.bundlesByProject && self.bundlesByProject[project])
@@ -14,6 +14,11 @@
14
14
  Or
15
15
  $ gina bundle:add <bundle_name> @<project_name> --start-port-from=<port_number>
16
16
 
17
+ A bundle name is made of letters, digits, `_`, `.` and `-`, and starts with a
18
+ lowercase letter, a digit, `_` or `.`. `.`, `..` and the name of a property every
19
+ object inherits, such as `constructor`, are refused. A name registered before this
20
+ rule existed keeps working.
21
+
17
22
 
18
23
  Excluding specific ports from the scan
19
24
  ----------
@@ -33,6 +38,8 @@
33
38
  ----------
34
39
  $ gina bundle:add <bundle_name_1> <bundle_name_2> <bundle_name_3> @<project_name>
35
40
 
41
+ Every name is checked before the first bundle is added.
42
+
36
43
 
37
44
  When the bundle already exists
38
45
  ----------
@@ -62,6 +69,8 @@
62
69
 
63
70
  $ gina bundle:copy <source_bundle_name> <new_bundle_name> @<project_name>
64
71
 
72
+ The new name follows the naming rule of `bundle:add`.
73
+
65
74
  Alias
66
75
  ----------
67
76
  $ gina bundle:cp <source_bundle_name> <new_bundle_name> @<project_name>
@@ -92,6 +101,8 @@
92
101
 
93
102
  $ gina bundle:rename <old_bundle_name> <new_bundle_name> @<project_name>
94
103
 
104
+ The new name follows the naming rule of `bundle:add`.
105
+
95
106
  Preview without writing anything
96
107
  ----------
97
108
  Lists every file the name rewrite would touch so coincidental matches can be