gina 0.6.8 → 0.6.9

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 (579) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +25 -28
  3. package/ROADMAP.md +2 -1
  4. package/framework/v0.6.9/VERSION +1 -0
  5. package/framework/{v0.6.8 → v0.6.9}/core/config.js +102 -1
  6. package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.js +32 -4
  7. package/framework/{v0.6.8 → v0.6.9}/core/gna.js +107 -0
  8. package/framework/{v0.6.8 → v0.6.9}/core/server.express.js +40 -1
  9. package/framework/{v0.6.8 → v0.6.9}/core/server.isaac.js +110 -3
  10. package/framework/{v0.6.8 → v0.6.9}/core/server.js +16 -2
  11. package/framework/{v0.6.8 → v0.6.9}/helpers/path.js +108 -26
  12. package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/build.js +37 -0
  13. package/framework/{v0.6.8 → v0.6.9}/lib/cmd/helper.js +148 -49
  14. package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/add.js +75 -3
  15. package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/build.js +24 -0
  16. package/framework/{v0.6.8 → v0.6.9}/lib/index.js +8 -0
  17. package/framework/v0.6.9/lib/push/package.json +19 -0
  18. package/framework/v0.6.9/lib/push/src/main.js +144 -0
  19. package/framework/{v0.6.8 → v0.6.9}/lib/secrets/src/backends/env.js +15 -4
  20. package/framework/{v0.6.8 → v0.6.9}/lib/secrets/src/main.js +48 -4
  21. package/framework/{v0.6.8 → v0.6.9}/package.json +1 -1
  22. package/gna.js +4 -4
  23. package/llms.txt +9 -6
  24. package/package.json +3 -3
  25. package/schema/manifest.json +6 -0
  26. package/schema/settings.json +3 -2
  27. package/types/index.d.ts +39 -0
  28. package/framework/v0.6.8/VERSION +0 -1
  29. /package/framework/{v0.6.8 → v0.6.9}/AUTHORS +0 -0
  30. /package/framework/{v0.6.8 → v0.6.9}/LICENSE +0 -0
  31. /package/framework/{v0.6.8 → v0.6.9}/core/asset/html/nolayout.html +0 -0
  32. /package/framework/{v0.6.8 → v0.6.9}/core/asset/html/static.html +0 -0
  33. /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/android-chrome-192x192.png +0 -0
  34. /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/android-chrome-512x512.png +0 -0
  35. /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/apple-touch-icon.png +0 -0
  36. /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/favicon-16x16.png +0 -0
  37. /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/favicon-32x32.png +0 -0
  38. /package/framework/{v0.6.8 → v0.6.9}/core/asset/img/favicon.ico +0 -0
  39. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/README.md +0 -0
  40. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.css +0 -0
  41. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/beemaster/beemaster.js +0 -0
  42. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/beemaster/index.html +0 -0
  43. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/css/gina.min.css +0 -0
  44. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.br +0 -0
  45. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/css/gina.min.css.gz +0 -0
  46. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/html/statusbar.html +0 -0
  47. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.br +0 -0
  48. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/html/statusbar.html.gz +0 -0
  49. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/have_heart_one-webfont.woff2 +0 -0
  50. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/index.html +0 -0
  51. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/inspector.css +0 -0
  52. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/inspector.js +0 -0
  53. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/inspector/logo.svg +0 -0
  54. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.js +0 -0
  55. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.min.js +0 -0
  56. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.br +0 -0
  57. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.min.js.gz +0 -0
  58. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js +0 -0
  59. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.br +0 -0
  60. /package/framework/{v0.6.8 → v0.6.9}/core/asset/plugin/dist/vendor/gina/js/gina.onload.min.js.gz +0 -0
  61. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/ai/index.js +0 -0
  62. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/ai/lib/connector.js +0 -0
  63. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/index.js +0 -0
  64. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/connector.js +0 -0
  65. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/connector.v3.js +0 -0
  66. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/connector.v4.js +0 -0
  67. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/n1ql.js +0 -0
  68. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/session-store.js +0 -0
  69. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/session-store.v3.js +0 -0
  70. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/session-store.v4.js +0 -0
  71. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/couchbase/lib/storage-store.js +0 -0
  72. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/duckdb/index.js +0 -0
  73. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/duckdb/lib/connector.js +0 -0
  74. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/index.js +0 -0
  75. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/lib/connector.js +0 -0
  76. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/lib/job-store.js +0 -0
  77. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/lib/pipeline-loader.js +0 -0
  78. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mongodb/lib/session-store.js +0 -0
  79. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mysql/index.js +0 -0
  80. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/mysql/lib/connector.js +0 -0
  81. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/param-redact.js +0 -0
  82. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/postgresql/index.js +0 -0
  83. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/postgresql/lib/connector.js +0 -0
  84. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/index.js +0 -0
  85. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/lib/connector.js +0 -0
  86. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/lib/job-store.js +0 -0
  87. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/lib/render-cache-store.js +0 -0
  88. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/redis/lib/session-store.js +0 -0
  89. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/scylladb/index.js +0 -0
  90. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/scylladb/lib/connector.js +0 -0
  91. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/scylladb/lib/session-store.js +0 -0
  92. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sql-parser.js +0 -0
  93. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sqlite/index.js +0 -0
  94. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sqlite/lib/connector.js +0 -0
  95. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sqlite/lib/job-store.js +0 -0
  96. /package/framework/{v0.6.8 → v0.6.9}/core/connectors/sqlite/lib/session-store.js +0 -0
  97. /package/framework/{v0.6.8 → v0.6.9}/core/content.encoding +0 -0
  98. /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.framework.js +0 -0
  99. /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-json.js +0 -0
  100. /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-nunjucks-async.js +0 -0
  101. /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-nunjucks.js +0 -0
  102. /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-stream.js +0 -0
  103. /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-swig-async.js +0 -0
  104. /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-swig.js +0 -0
  105. /package/framework/{v0.6.8 → v0.6.9}/core/controller/controller.render-v1.js +0 -0
  106. /package/framework/{v0.6.8 → v0.6.9}/core/controller/index.js +0 -0
  107. /package/framework/{v0.6.8 → v0.6.9}/core/controller/inspector-window-emit.js +0 -0
  108. /package/framework/{v0.6.8 → v0.6.9}/core/controller/release-banner.js +0 -0
  109. /package/framework/{v0.6.8 → v0.6.9}/core/dev/index.js +0 -0
  110. /package/framework/{v0.6.8 → v0.6.9}/core/dev/lib/class.js +0 -0
  111. /package/framework/{v0.6.8 → v0.6.9}/core/dev/lib/factory.js +0 -0
  112. /package/framework/{v0.6.8 → v0.6.9}/core/dev/lib/tools.js +0 -0
  113. /package/framework/{v0.6.8 → v0.6.9}/core/locales/README.md +0 -0
  114. /package/framework/{v0.6.8 → v0.6.9}/core/locales/currency.json +0 -0
  115. /package/framework/{v0.6.8 → v0.6.9}/core/locales/dist/language/en.json +0 -0
  116. /package/framework/{v0.6.8 → v0.6.9}/core/locales/dist/language/fr.json +0 -0
  117. /package/framework/{v0.6.8 → v0.6.9}/core/locales/dist/region/en.json +0 -0
  118. /package/framework/{v0.6.8 → v0.6.9}/core/locales/dist/region/fr.json +0 -0
  119. /package/framework/{v0.6.8 → v0.6.9}/core/locales/index.js +0 -0
  120. /package/framework/{v0.6.8 → v0.6.9}/core/mime.types +0 -0
  121. /package/framework/{v0.6.8 → v0.6.9}/core/model/entity.js +0 -0
  122. /package/framework/{v0.6.8 → v0.6.9}/core/model/index.js +0 -0
  123. /package/framework/{v0.6.8 → v0.6.9}/core/model/template/entityFactory.js +0 -0
  124. /package/framework/{v0.6.8 → v0.6.9}/core/model/template/index.js +0 -0
  125. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/README.md +0 -0
  126. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/index.js +0 -0
  127. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/csrf/README.md +0 -0
  128. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/csrf/package.json +0 -0
  129. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/csrf/src/main.js +0 -0
  130. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/README.md +0 -0
  131. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coep/README.md +0 -0
  132. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coep/package.json +0 -0
  133. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coep/src/main.js +0 -0
  134. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coop/README.md +0 -0
  135. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coop/package.json +0 -0
  136. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/coop/src/main.js +0 -0
  137. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/corp/README.md +0 -0
  138. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/corp/package.json +0 -0
  139. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/corp/src/main.js +0 -0
  140. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/csp/README.md +0 -0
  141. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/csp/package.json +0 -0
  142. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/csp/src/main.js +0 -0
  143. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hide-powered-by/README.md +0 -0
  144. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hide-powered-by/package.json +0 -0
  145. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hide-powered-by/src/main.js +0 -0
  146. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hsts/README.md +0 -0
  147. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hsts/package.json +0 -0
  148. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/hsts/src/main.js +0 -0
  149. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/origin-agent-cluster/README.md +0 -0
  150. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/origin-agent-cluster/package.json +0 -0
  151. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/origin-agent-cluster/src/main.js +0 -0
  152. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/package.json +0 -0
  153. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/referrer-policy/README.md +0 -0
  154. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/referrer-policy/package.json +0 -0
  155. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/referrer-policy/src/main.js +0 -0
  156. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/src/main.js +0 -0
  157. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-content-type-options/README.md +0 -0
  158. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-content-type-options/package.json +0 -0
  159. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-content-type-options/src/main.js +0 -0
  160. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-dns-prefetch-control/README.md +0 -0
  161. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-dns-prefetch-control/package.json +0 -0
  162. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-dns-prefetch-control/src/main.js +0 -0
  163. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-download-options/README.md +0 -0
  164. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-download-options/package.json +0 -0
  165. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-download-options/src/main.js +0 -0
  166. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-frame-options/README.md +0 -0
  167. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-frame-options/package.json +0 -0
  168. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-frame-options/src/main.js +0 -0
  169. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/README.md +0 -0
  170. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/package.json +0 -0
  171. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-permitted-cross-domain-policies/src/main.js +0 -0
  172. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-xss-protection/README.md +0 -0
  173. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-xss-protection/package.json +0 -0
  174. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/security-headers/x-xss-protection/src/main.js +0 -0
  175. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/session/README.md +0 -0
  176. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/session/package.json +0 -0
  177. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/session/src/main.js +0 -0
  178. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/storage/README.md +0 -0
  179. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/storage/build.json +0 -0
  180. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/storage/package.json +0 -0
  181. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/storage/src/main.js +0 -0
  182. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/README.md +0 -0
  183. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/build.json +0 -0
  184. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/package.json +0 -0
  185. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/src/form-validator.js +0 -0
  186. /package/framework/{v0.6.8 → v0.6.9}/core/plugins/lib/validator/src/main.js +0 -0
  187. /package/framework/{v0.6.8 → v0.6.9}/core/router.js +0 -0
  188. /package/framework/{v0.6.8 → v0.6.9}/core/status.codes +0 -0
  189. /package/framework/{v0.6.8 → v0.6.9}/core/template/_gitignore +0 -0
  190. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/app.json +0 -0
  191. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/connectors.json +0 -0
  192. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/routing.json +0 -0
  193. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/settings.json +0 -0
  194. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/settings.server.json +0 -0
  195. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/templates.json +0 -0
  196. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/config/watchers.json +0 -0
  197. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/controllers/controller.content.js +0 -0
  198. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/controllers/controller.js +0 -0
  199. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/controllers/setup.js +0 -0
  200. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/index.js +0 -0
  201. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle/locales/en.json +0 -0
  202. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_namespace/controllers/controller.js +0 -0
  203. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/css/default.css +0 -0
  204. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/css/home.css +0 -0
  205. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/css/vendor/readme.md +0 -0
  206. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/favicon.ico +0 -0
  207. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/js/components/x-checklist.js +0 -0
  208. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/js/vendor/readme.md +0 -0
  209. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/manifest.webmanifest +0 -0
  210. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/readme.md +0 -0
  211. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_public/sw.js +0 -0
  212. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/handlers/main.js +0 -0
  213. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/content/homepage.html +0 -0
  214. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/includes/error-msg-noscript.html +0 -0
  215. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/includes/error-msg-outdated-browser.html +0 -0
  216. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/includes/x-checklist.html +0 -0
  217. /package/framework/{v0.6.8 → v0.6.9}/core/template/boilerplate/bundle_templates/html/layouts/main.html +0 -0
  218. /package/framework/{v0.6.8 → v0.6.9}/core/template/command/gina.bat.tpl +0 -0
  219. /package/framework/{v0.6.8 → v0.6.9}/core/template/command/gina.tpl +0 -0
  220. /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/env.json +0 -0
  221. /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/manifest.json +0 -0
  222. /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/package.json +0 -0
  223. /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/settings.json +0 -0
  224. /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/statics.json +0 -0
  225. /package/framework/{v0.6.8 → v0.6.9}/core/template/conf/templates.json +0 -0
  226. /package/framework/{v0.6.8 → v0.6.9}/core/template/error/client/json/401.json +0 -0
  227. /package/framework/{v0.6.8 → v0.6.9}/core/template/error/client/json/403.json +0 -0
  228. /package/framework/{v0.6.8 → v0.6.9}/core/template/error/client/json/404.json +0 -0
  229. /package/framework/{v0.6.8 → v0.6.9}/core/template/error/server/html/50x.html +0 -0
  230. /package/framework/{v0.6.8 → v0.6.9}/core/template/error/server/json/500.json +0 -0
  231. /package/framework/{v0.6.8 → v0.6.9}/core/template/error/server/json/503.json +0 -0
  232. /package/framework/{v0.6.8 → v0.6.9}/core/template/extensions/logger/config.json +0 -0
  233. /package/framework/{v0.6.8 → v0.6.9}/helpers/console.js +0 -0
  234. /package/framework/{v0.6.8 → v0.6.9}/helpers/context.js +0 -0
  235. /package/framework/{v0.6.8 → v0.6.9}/helpers/data/LICENSE +0 -0
  236. /package/framework/{v0.6.8 → v0.6.9}/helpers/data/README.md +0 -0
  237. /package/framework/{v0.6.8 → v0.6.9}/helpers/data/package.json +0 -0
  238. /package/framework/{v0.6.8 → v0.6.9}/helpers/data/src/main.js +0 -0
  239. /package/framework/{v0.6.8 → v0.6.9}/helpers/dateFormat.js +0 -0
  240. /package/framework/{v0.6.8 → v0.6.9}/helpers/index.js +0 -0
  241. /package/framework/{v0.6.8 → v0.6.9}/helpers/json/LICENSE +0 -0
  242. /package/framework/{v0.6.8 → v0.6.9}/helpers/json/README.md +0 -0
  243. /package/framework/{v0.6.8 → v0.6.9}/helpers/json/package.json +0 -0
  244. /package/framework/{v0.6.8 → v0.6.9}/helpers/json/src/main.js +0 -0
  245. /package/framework/{v0.6.8 → v0.6.9}/helpers/plugins/README.md +0 -0
  246. /package/framework/{v0.6.8 → v0.6.9}/helpers/plugins/package.json +0 -0
  247. /package/framework/{v0.6.8 → v0.6.9}/helpers/plugins/src/api-error.js +0 -0
  248. /package/framework/{v0.6.8 → v0.6.9}/helpers/plugins/src/main.js +0 -0
  249. /package/framework/{v0.6.8 → v0.6.9}/helpers/prototypes.js +0 -0
  250. /package/framework/{v0.6.8 → v0.6.9}/helpers/task.js +0 -0
  251. /package/framework/{v0.6.8 → v0.6.9}/helpers/text.js +0 -0
  252. /package/framework/{v0.6.8 → v0.6.9}/lib/admin/package.json +0 -0
  253. /package/framework/{v0.6.8 → v0.6.9}/lib/admin/src/main.js +0 -0
  254. /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/README.md +0 -0
  255. /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/build.json +0 -0
  256. /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/package.json +0 -0
  257. /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/src/dep/jszip.min.js +0 -0
  258. /package/framework/{v0.6.8 → v0.6.9}/lib/archiver/src/main.js +0 -0
  259. /package/framework/{v0.6.8 → v0.6.9}/lib/async/package.json +0 -0
  260. /package/framework/{v0.6.8 → v0.6.9}/lib/async/src/main.js +0 -0
  261. /package/framework/{v0.6.8 → v0.6.9}/lib/audit/package.json +0 -0
  262. /package/framework/{v0.6.8 → v0.6.9}/lib/audit/src/main.js +0 -0
  263. /package/framework/{v0.6.8 → v0.6.9}/lib/audit-store.js +0 -0
  264. /package/framework/{v0.6.8 → v0.6.9}/lib/authn/package.json +0 -0
  265. /package/framework/{v0.6.8 → v0.6.9}/lib/authn/src/lockout.js +0 -0
  266. /package/framework/{v0.6.8 → v0.6.9}/lib/authn/src/main.js +0 -0
  267. /package/framework/{v0.6.8 → v0.6.9}/lib/authn/src/totp.js +0 -0
  268. /package/framework/{v0.6.8 → v0.6.9}/lib/authz-gate/package.json +0 -0
  269. /package/framework/{v0.6.8 → v0.6.9}/lib/authz-gate/src/main.js +0 -0
  270. /package/framework/{v0.6.8 → v0.6.9}/lib/cache/README.md +0 -0
  271. /package/framework/{v0.6.8 → v0.6.9}/lib/cache/build.json +0 -0
  272. /package/framework/{v0.6.8 → v0.6.9}/lib/cache/package.json +0 -0
  273. /package/framework/{v0.6.8 → v0.6.9}/lib/cache/src/main.js +0 -0
  274. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/aliases.json +0 -0
  275. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/audit/arguments.json +0 -0
  276. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/audit/help.txt +0 -0
  277. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/audit/verify.js +0 -0
  278. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/add.js +0 -0
  279. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/arguments.json +0 -0
  280. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/copy.js +0 -0
  281. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/cp.js +0 -0
  282. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/help.js +0 -0
  283. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/help.txt +0 -0
  284. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/inc/name-rewrite.js +0 -0
  285. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/list.js +0 -0
  286. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/man.js +0 -0
  287. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/mcp-start.js +0 -0
  288. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/mcp.js +0 -0
  289. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/oas.js +0 -0
  290. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/openapi.js +0 -0
  291. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/remove.js +0 -0
  292. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/rename.js +0 -0
  293. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/restart.js +0 -0
  294. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/rm.js +0 -0
  295. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/start.js +0 -0
  296. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/status.js +0 -0
  297. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/stop.js +0 -0
  298. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/bundle/types.js +0 -0
  299. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/cache/arguments.json +0 -0
  300. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/cache/clear.js +0 -0
  301. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/cache/help.txt +0 -0
  302. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/cache/stats.js +0 -0
  303. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/add.js +0 -0
  304. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/arguments.json +0 -0
  305. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/help.js +0 -0
  306. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/help.txt +0 -0
  307. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/infer.js +0 -0
  308. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/list.js +0 -0
  309. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/migrate.js +0 -0
  310. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/models.js +0 -0
  311. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/remove.js +0 -0
  312. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/rm.js +0 -0
  313. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/connector/test.js +0 -0
  314. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/arguments.json +0 -0
  315. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/help.js +0 -0
  316. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/help.txt +0 -0
  317. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/man.js +0 -0
  318. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/ps.js +0 -0
  319. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/container/stop.js +0 -0
  320. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/add.js +0 -0
  321. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/arguments.json +0 -0
  322. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/help.txt +0 -0
  323. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/args.js +0 -0
  324. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/namespace.js +0 -0
  325. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/reference-rewrite.js +0 -0
  326. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/reference-scan.js +0 -0
  327. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/inc/scaffold.js +0 -0
  328. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/remove.js +0 -0
  329. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/rename.js +0 -0
  330. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/controller/rm.js +0 -0
  331. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/add.js +0 -0
  332. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/get.js +0 -0
  333. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/help.js +0 -0
  334. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/help.txt +0 -0
  335. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/link-dev.js +0 -0
  336. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/list.js +0 -0
  337. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/remove.js +0 -0
  338. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/rm.js +0 -0
  339. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/set.js +0 -0
  340. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/unset.js +0 -0
  341. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/env/use.js +0 -0
  342. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/add.js +0 -0
  343. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/arguments.json +0 -0
  344. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/build.js +0 -0
  345. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/dot.js +0 -0
  346. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/get.js +0 -0
  347. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/help.js +0 -0
  348. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/help.txt +0 -0
  349. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/init.js +0 -0
  350. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/link-node-modules.js +0 -0
  351. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/link.js +0 -0
  352. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/list.js +0 -0
  353. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/man.js +0 -0
  354. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/msg.json +0 -0
  355. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/open.js +0 -0
  356. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/remove.js +0 -0
  357. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/reset.js +0 -0
  358. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/restart.js +0 -0
  359. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/set.js +0 -0
  360. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/start.js +0 -0
  361. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/status.js +0 -0
  362. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/stop.js +0 -0
  363. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/tail.js +0 -0
  364. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/update.js +0 -0
  365. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/framework/version.js +0 -0
  366. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/gina-dev.1.md +0 -0
  367. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/gina-framework.1.md +0 -0
  368. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/gina.1.md +0 -0
  369. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/add.js +0 -0
  370. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/arguments.json +0 -0
  371. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/export.js +0 -0
  372. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/help.js +0 -0
  373. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/help.txt +0 -0
  374. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/import.js +0 -0
  375. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/i18n/scan.js +0 -0
  376. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/_host.js +0 -0
  377. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/arguments.json +0 -0
  378. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/build.js +0 -0
  379. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/help.js +0 -0
  380. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/help.txt +0 -0
  381. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/list.js +0 -0
  382. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/man.js +0 -0
  383. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/rm.js +0 -0
  384. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/image/run.js +0 -0
  385. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/index.js +0 -0
  386. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/inspector/help.js +0 -0
  387. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/inspector/help.txt +0 -0
  388. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/inspector/open.js +0 -0
  389. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/man-render.js +0 -0
  390. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/arguments.json +0 -0
  391. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/help.js +0 -0
  392. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/help.txt +0 -0
  393. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/kill.js +0 -0
  394. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/minion/list.js +0 -0
  395. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/msg.json +0 -0
  396. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/help.js +0 -0
  397. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/help.txt +0 -0
  398. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/inc/scan.js +0 -0
  399. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/list.js +0 -0
  400. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/reset.js +0 -0
  401. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/port/set.js +0 -0
  402. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/arguments.json +0 -0
  403. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/backup.js +0 -0
  404. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/help.js +0 -0
  405. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/help.txt +0 -0
  406. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/import.js +0 -0
  407. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/list.js +0 -0
  408. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/man.js +0 -0
  409. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/move.js +0 -0
  410. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/remove.js +0 -0
  411. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/rename.js +0 -0
  412. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/restart.js +0 -0
  413. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/restore.js +0 -0
  414. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/rm.js +0 -0
  415. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/start.js +0 -0
  416. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/status.js +0 -0
  417. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/project/stop.js +0 -0
  418. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/arguments.json +0 -0
  419. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/help.js +0 -0
  420. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/help.txt +0 -0
  421. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/list.js +0 -0
  422. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/remove.js +0 -0
  423. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/protocol/set.js +0 -0
  424. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/add.js +0 -0
  425. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/help.js +0 -0
  426. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/help.txt +0 -0
  427. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/link-local.js +0 -0
  428. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/link-production.js +0 -0
  429. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/list.js +0 -0
  430. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/remove.js +0 -0
  431. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/rm.js +0 -0
  432. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/scope/use.js +0 -0
  433. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/arguments.json +0 -0
  434. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/check.js +0 -0
  435. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/help.js +0 -0
  436. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/help.txt +0 -0
  437. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/secrets/scan.js +0 -0
  438. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/help.js +0 -0
  439. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/help.txt +0 -0
  440. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/list.js +0 -0
  441. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/man.js +0 -0
  442. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/service/start.js +0 -0
  443. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/arguments.json +0 -0
  444. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/gc.js +0 -0
  445. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/help.txt +0 -0
  446. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/stats.js +0 -0
  447. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/storage/verify.js +0 -0
  448. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd/view/add.js +0 -0
  449. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd-status-format/package.json +0 -0
  450. /package/framework/{v0.6.8 → v0.6.9}/lib/cmd-status-format/src/main.js +0 -0
  451. /package/framework/{v0.6.8 → v0.6.9}/lib/collection/README.md +0 -0
  452. /package/framework/{v0.6.8 → v0.6.9}/lib/collection/build.json +0 -0
  453. /package/framework/{v0.6.8 → v0.6.9}/lib/collection/package.json +0 -0
  454. /package/framework/{v0.6.8 → v0.6.9}/lib/collection/src/main.js +0 -0
  455. /package/framework/{v0.6.8 → v0.6.9}/lib/config.js +0 -0
  456. /package/framework/{v0.6.8 → v0.6.9}/lib/connector-config/package.json +0 -0
  457. /package/framework/{v0.6.8 → v0.6.9}/lib/connector-config/src/main.js +0 -0
  458. /package/framework/{v0.6.8 → v0.6.9}/lib/connector-error/package.json +0 -0
  459. /package/framework/{v0.6.8 → v0.6.9}/lib/connector-error/src/main.js +0 -0
  460. /package/framework/{v0.6.8 → v0.6.9}/lib/connector-registry/package.json +0 -0
  461. /package/framework/{v0.6.8 → v0.6.9}/lib/connector-registry/src/main.js +0 -0
  462. /package/framework/{v0.6.8 → v0.6.9}/lib/cron/README.md +0 -0
  463. /package/framework/{v0.6.8 → v0.6.9}/lib/cron/package.json +0 -0
  464. /package/framework/{v0.6.8 → v0.6.9}/lib/cron/src/main.js +0 -0
  465. /package/framework/{v0.6.8 → v0.6.9}/lib/domain/LICENSE +0 -0
  466. /package/framework/{v0.6.8 → v0.6.9}/lib/domain/README.md +0 -0
  467. /package/framework/{v0.6.8 → v0.6.9}/lib/domain/package.json +0 -0
  468. /package/framework/{v0.6.8 → v0.6.9}/lib/domain/src/main.js +0 -0
  469. /package/framework/{v0.6.8 → v0.6.9}/lib/dto/package.json +0 -0
  470. /package/framework/{v0.6.8 → v0.6.9}/lib/dto/src/main.js +0 -0
  471. /package/framework/{v0.6.8 → v0.6.9}/lib/dto-pipe/package.json +0 -0
  472. /package/framework/{v0.6.8 → v0.6.9}/lib/dto-pipe/src/main.js +0 -0
  473. /package/framework/{v0.6.8 → v0.6.9}/lib/dto-types/package.json +0 -0
  474. /package/framework/{v0.6.8 → v0.6.9}/lib/dto-types/src/main.js +0 -0
  475. /package/framework/{v0.6.8 → v0.6.9}/lib/generator/index.js +0 -0
  476. /package/framework/{v0.6.8 → v0.6.9}/lib/i18n/package.json +0 -0
  477. /package/framework/{v0.6.8 → v0.6.9}/lib/i18n/src/main.js +0 -0
  478. /package/framework/{v0.6.8 → v0.6.9}/lib/image-build/package.json +0 -0
  479. /package/framework/{v0.6.8 → v0.6.9}/lib/image-build/src/main.js +0 -0
  480. /package/framework/{v0.6.8 → v0.6.9}/lib/inherits/LICENSE +0 -0
  481. /package/framework/{v0.6.8 → v0.6.9}/lib/inherits/README.md +0 -0
  482. /package/framework/{v0.6.8 → v0.6.9}/lib/inherits/package.json +0 -0
  483. /package/framework/{v0.6.8 → v0.6.9}/lib/inherits/src/main.js +0 -0
  484. /package/framework/{v0.6.8 → v0.6.9}/lib/inspector-events/package.json +0 -0
  485. /package/framework/{v0.6.8 → v0.6.9}/lib/inspector-events/src/main.js +0 -0
  486. /package/framework/{v0.6.8 → v0.6.9}/lib/inspector-redact/package.json +0 -0
  487. /package/framework/{v0.6.8 → v0.6.9}/lib/inspector-redact/src/main.js +0 -0
  488. /package/framework/{v0.6.8 → v0.6.9}/lib/instrument/package.json +0 -0
  489. /package/framework/{v0.6.8 → v0.6.9}/lib/instrument/src/main.js +0 -0
  490. /package/framework/{v0.6.8 → v0.6.9}/lib/job/package.json +0 -0
  491. /package/framework/{v0.6.8 → v0.6.9}/lib/job/src/main.js +0 -0
  492. /package/framework/{v0.6.8 → v0.6.9}/lib/job-store.js +0 -0
  493. /package/framework/{v0.6.8 → v0.6.9}/lib/json-config-header/package.json +0 -0
  494. /package/framework/{v0.6.8 → v0.6.9}/lib/json-config-header/src/main.js +0 -0
  495. /package/framework/{v0.6.8 → v0.6.9}/lib/loading-state/package.json +0 -0
  496. /package/framework/{v0.6.8 → v0.6.9}/lib/loading-state/src/main.js +0 -0
  497. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/README.md +0 -0
  498. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/package.json +0 -0
  499. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/default/index.js +0 -0
  500. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/file/index.js +0 -0
  501. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/file/lib/logrotator/README.md +0 -0
  502. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/file/lib/logrotator/index.js +0 -0
  503. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/mq/index.js +0 -0
  504. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/mq/listener.js +0 -0
  505. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/containers/mq/speaker.js +0 -0
  506. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/helper.js +0 -0
  507. /package/framework/{v0.6.8 → v0.6.9}/lib/logger/src/main.js +0 -0
  508. /package/framework/{v0.6.8 → v0.6.9}/lib/math/index.js +0 -0
  509. /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-dispatch/package.json +0 -0
  510. /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-dispatch/src/main.js +0 -0
  511. /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-http/package.json +0 -0
  512. /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-http/src/main.js +0 -0
  513. /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-server/package.json +0 -0
  514. /package/framework/{v0.6.8 → v0.6.9}/lib/mcp-server/src/main.js +0 -0
  515. /package/framework/{v0.6.8 → v0.6.9}/lib/merge/README.md +0 -0
  516. /package/framework/{v0.6.8 → v0.6.9}/lib/merge/package.json +0 -0
  517. /package/framework/{v0.6.8 → v0.6.9}/lib/merge/src/main.js +0 -0
  518. /package/framework/{v0.6.8 → v0.6.9}/lib/metrics/package.json +0 -0
  519. /package/framework/{v0.6.8 → v0.6.9}/lib/metrics/src/main.js +0 -0
  520. /package/framework/{v0.6.8 → v0.6.9}/lib/model.js +0 -0
  521. /package/framework/{v0.6.8 → v0.6.9}/lib/net-locality/package.json +0 -0
  522. /package/framework/{v0.6.8 → v0.6.9}/lib/net-locality/src/main.js +0 -0
  523. /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-filters/README.md +0 -0
  524. /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-filters/package.json +0 -0
  525. /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-filters/src/main.js +0 -0
  526. /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-resolver/package.json +0 -0
  527. /package/framework/{v0.6.8 → v0.6.9}/lib/nunjucks-resolver/src/main.js +0 -0
  528. /package/framework/{v0.6.8 → v0.6.9}/lib/proc.js +0 -0
  529. /package/framework/{v0.6.8 → v0.6.9}/lib/release-watch/package.json +0 -0
  530. /package/framework/{v0.6.8 → v0.6.9}/lib/release-watch/src/main.js +0 -0
  531. /package/framework/{v0.6.8 → v0.6.9}/lib/render-cache/package.json +0 -0
  532. /package/framework/{v0.6.8 → v0.6.9}/lib/render-cache/src/main.js +0 -0
  533. /package/framework/{v0.6.8 → v0.6.9}/lib/render-cache-store.js +0 -0
  534. /package/framework/{v0.6.8 → v0.6.9}/lib/routing/README.md +0 -0
  535. /package/framework/{v0.6.8 → v0.6.9}/lib/routing/build.json +0 -0
  536. /package/framework/{v0.6.8 → v0.6.9}/lib/routing/package.json +0 -0
  537. /package/framework/{v0.6.8 → v0.6.9}/lib/routing/src/main.js +0 -0
  538. /package/framework/{v0.6.8 → v0.6.9}/lib/routing/src/radix.js +0 -0
  539. /package/framework/{v0.6.8 → v0.6.9}/lib/routing-introspect/package.json +0 -0
  540. /package/framework/{v0.6.8 → v0.6.9}/lib/routing-introspect/src/main.js +0 -0
  541. /package/framework/{v0.6.8 → v0.6.9}/lib/secrets/package.json +0 -0
  542. /package/framework/{v0.6.8 → v0.6.9}/lib/secrets/src/backends/file.js +0 -0
  543. /package/framework/{v0.6.8 → v0.6.9}/lib/secrets/src/env-file.js +0 -0
  544. /package/framework/{v0.6.8 → v0.6.9}/lib/session-store.js +0 -0
  545. /package/framework/{v0.6.8 → v0.6.9}/lib/shell.js +0 -0
  546. /package/framework/{v0.6.8 → v0.6.9}/lib/sqlite-driver.js +0 -0
  547. /package/framework/{v0.6.8 → v0.6.9}/lib/state.js +0 -0
  548. /package/framework/{v0.6.8 → v0.6.9}/lib/storage/package.json +0 -0
  549. /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/local-cas.js +0 -0
  550. /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/local-stream.js +0 -0
  551. /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/local.js +0 -0
  552. /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/main.js +0 -0
  553. /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/meta-store.js +0 -0
  554. /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/s3.js +0 -0
  555. /package/framework/{v0.6.8 → v0.6.9}/lib/storage/src/util.js +0 -0
  556. /package/framework/{v0.6.8 → v0.6.9}/lib/storage-store.js +0 -0
  557. /package/framework/{v0.6.8 → v0.6.9}/lib/swig-filters/README.md +0 -0
  558. /package/framework/{v0.6.8 → v0.6.9}/lib/swig-filters/package.json +0 -0
  559. /package/framework/{v0.6.8 → v0.6.9}/lib/swig-filters/src/main.js +0 -0
  560. /package/framework/{v0.6.8 → v0.6.9}/lib/swig-resolver/package.json +0 -0
  561. /package/framework/{v0.6.8 → v0.6.9}/lib/swig-resolver/src/main.js +0 -0
  562. /package/framework/{v0.6.8 → v0.6.9}/lib/template-loaders/package.json +0 -0
  563. /package/framework/{v0.6.8 → v0.6.9}/lib/template-loaders/src/loaders/http.js +0 -0
  564. /package/framework/{v0.6.8 → v0.6.9}/lib/template-loaders/src/loaders/memory.js +0 -0
  565. /package/framework/{v0.6.8 → v0.6.9}/lib/template-loaders/src/main.js +0 -0
  566. /package/framework/{v0.6.8 → v0.6.9}/lib/url/README.md +0 -0
  567. /package/framework/{v0.6.8 → v0.6.9}/lib/url/index.js +0 -0
  568. /package/framework/{v0.6.8 → v0.6.9}/lib/url/routing.json +0 -0
  569. /package/framework/{v0.6.8 → v0.6.9}/lib/uuid/package.json +0 -0
  570. /package/framework/{v0.6.8 → v0.6.9}/lib/uuid/src/main.js +0 -0
  571. /package/framework/{v0.6.8 → v0.6.9}/lib/validator.js +0 -0
  572. /package/framework/{v0.6.8 → v0.6.9}/lib/watcher/package.json +0 -0
  573. /package/framework/{v0.6.8 → v0.6.9}/lib/watcher/src/main.js +0 -0
  574. /package/framework/{v0.6.8 → v0.6.9}/lib/ws-framing/package.json +0 -0
  575. /package/framework/{v0.6.8 → v0.6.9}/lib/ws-framing/src/main.js +0 -0
  576. /package/framework/{v0.6.8 → v0.6.9}/lib/ws-query/package.json +0 -0
  577. /package/framework/{v0.6.8 → v0.6.9}/lib/ws-query/src/main.js +0 -0
  578. /package/framework/{v0.6.8 → v0.6.9}/lib/ws-session/package.json +0 -0
  579. /package/framework/{v0.6.8 → v0.6.9}/lib/ws-session/src/main.js +0 -0
@@ -94,6 +94,8 @@ function CmdHelper(cmd, client, debug) {
94
94
  // don't use this collection to store into files
95
95
  bundlesByProject: {}, // bundles collection will be loaded into cmd.projects[$project].bundles
96
96
  bundlesLocation : null, // symlink to cmd.projects[$project].bundles_path
97
+ warnedAbsentBundles : {}, // #B375 — once-per-command dedup for the declared-but-absent-bundle warning emitted by loadAssets()
98
+ warnedInvalidServerSettings : {}, // #B378 — once-per-command dedup for the invalid bundle protocol/scheme warning emitted by loadAssets()
97
99
 
98
100
  // current project env.json path
99
101
  envPath : null, // path to env.json - defined by filterArgs()
@@ -663,6 +665,18 @@ function CmdHelper(cmd, client, debug) {
663
665
  * A registered project whose directory exists but whose manifest.json is missing
664
666
  * (a stale ~/.gina/projects.json entry) is warned and skipped (#B24) rather than
665
667
  * aborting the whole command.
668
+ * On `project:add`/`project:import`, the current project's bundle list is the
669
+ * UNION of the manifest's declared bundles and the bundle directories found on
670
+ * disk (#B375): declared entries are preserved as-is, disk-only bundles are
671
+ * appended for additive registration, and a declared bundle whose tree is
672
+ * absent is warned about once per command — never auto-pruned, since the
673
+ * declaration may be scope-restricted (#B373).
674
+ * Each project's bundles are resolved against that project's OWN path (#B379),
675
+ * and a project's protocols/schemes lists are DERIVED bookkeeping constrained
676
+ * to the framework's supported sets from `~/main.json` (#B378): a bundle's
677
+ * declared `server.protocol`/`server.scheme` may extend its project's list
678
+ * only when the framework supports the value — an unsupported one is warned
679
+ * about once per command and never adopted or made a default.
666
680
  * Also links node_modules and gina when running start/stop/restart tasks in global mode.
667
681
  * Assigns itself to the global `loadAssets`.
668
682
  *
@@ -1373,36 +1387,53 @@ function CmdHelper(cmd, client, debug) {
1373
1387
  }
1374
1388
 
1375
1389
  cmd.bundlesByProject[project] = (cmd.bundlesByProject[project].count() > 0) ? cmd.bundlesByProject[project] : requireJSON(projectPropertiesPath).bundles;
1376
- // additional checks
1377
- let bundlesCount = cmd.bundlesByProject[project].count();
1378
- if ( /^project\:(add|import)/.test(cmd.task) && bundlesCount > 0 ) {
1379
- let releasesPathObj = new _(cmd.projects[project].path +'/releases', true);
1380
- let _bundleConfigPath = cmd.bundlesLocation;
1381
- let files = [], f = 0;
1382
- if ( new _(cmd.projects[project].path +'/src', true).existsSync() ) {
1383
- files = fs.readdirSync(_(cmd.projects[project].path +'/src', true));
1384
- } else if (releasesPathObj.existsSync()) {
1385
- _bundleConfigPath = releasesPathObj.toString();
1386
- files = fs.readdirSync(releasesPathObj.toString());
1387
- }
1388
- let _count = 0;
1389
- for (;f < files.length; ++f) {
1390
- // skip hidden
1391
- let name = files[f];
1392
- if ( /^\./.test(name) ) continue;
1393
- _count++
1394
- }
1395
- if (_count != bundlesCount) {
1396
- cmd.bundles = [];
1397
- cmd.bundlesByProject[project] = {}
1398
- let updatedManifest = requireJSON(projectPropertiesPath);
1399
- updatedManifest.bundles = {};
1400
- lib.generator.createFileFromDataSync(
1401
- updatedManifest,
1402
- projectPropertiesPath
1403
- )
1404
- }
1405
- }
1390
+ // #B375 — the "additional checks" block below (introduced 2023, absorbed into an
1391
+ // automated version-bump commit, never revisited) compared each project's declared
1392
+ // bundle COUNT against a readdir of `<project>/src` (else `/releases`) and, on ANY
1393
+ // mismatch, emptied `manifest.bundles` and wrote it back to disk — for EVERY
1394
+ // registered project, not just the one being added/imported. That destroyed every
1395
+ // per-bundle declaration the recreation skeleton does not carry (the `scopes`
1396
+ // allow-list — #B373 —, `gina_version`, any custom key), reset `version`/`tag` and
1397
+ // release targets to defaults, permanently emptied bystander projects' manifests
1398
+ // (no rebuild ever runs for a non-target project), and did the same on plain
1399
+ // `project:add` (the rebuild only runs on import). Its one legitimate function —
1400
+ // forcing a rescan of the bundle directories so bundles on disk but missing from
1401
+ // the manifest still get registered on import — is now served non-destructively by
1402
+ // the union rescan near the end of loadAssets, which no longer needs `cmd.bundles`
1403
+ // to be emptied to fire. Manifest entries are never auto-pruned anymore: a
1404
+ // declared bundle whose tree is absent is warned about there instead.
1405
+ // Kept commented per the replace-don't-delete convention:
1406
+ //
1407
+ // // additional checks
1408
+ // let bundlesCount = cmd.bundlesByProject[project].count();
1409
+ // if ( /^project\:(add|import)/.test(cmd.task) && bundlesCount > 0 ) {
1410
+ // let releasesPathObj = new _(cmd.projects[project].path +'/releases', true);
1411
+ // let _bundleConfigPath = cmd.bundlesLocation;
1412
+ // let files = [], f = 0;
1413
+ // if ( new _(cmd.projects[project].path +'/src', true).existsSync() ) {
1414
+ // files = fs.readdirSync(_(cmd.projects[project].path +'/src', true));
1415
+ // } else if (releasesPathObj.existsSync()) {
1416
+ // _bundleConfigPath = releasesPathObj.toString();
1417
+ // files = fs.readdirSync(releasesPathObj.toString());
1418
+ // }
1419
+ // let _count = 0;
1420
+ // for (;f < files.length; ++f) {
1421
+ // // skip hidden
1422
+ // let name = files[f];
1423
+ // if ( /^\./.test(name) ) continue;
1424
+ // _count++
1425
+ // }
1426
+ // if (_count != bundlesCount) {
1427
+ // cmd.bundles = [];
1428
+ // cmd.bundlesByProject[project] = {}
1429
+ // let updatedManifest = requireJSON(projectPropertiesPath);
1430
+ // updatedManifest.bundles = {};
1431
+ // lib.generator.createFileFromDataSync(
1432
+ // updatedManifest,
1433
+ // projectPropertiesPath
1434
+ // )
1435
+ // }
1436
+ // }
1406
1437
 
1407
1438
  } else {
1408
1439
  cmd.projects[project].exists = false;
@@ -1456,10 +1487,18 @@ function CmdHelper(cmd, client, debug) {
1456
1487
  cmd.bundlesByProject[project][bundle].schemes = cmd.projects[project].schemes;
1457
1488
  cmd.bundlesByProject[project][bundle].def_scheme = cmd.defaultScheme;
1458
1489
 
1459
- if ( fs.existsSync(_(cmd.projectLocation + '/'+ cmd.bundlesByProject[project][bundle].src )) ) {
1490
+ // #B379 — resolve each project's bundles against ITS OWN path. This loop
1491
+ // runs over EVERY registered project, while the singular
1492
+ // `cmd.projectLocation` names only the CURRENT one — so a same-named
1493
+ // bundle in another project used to be read out of the wrong tree: its
1494
+ // `exists` flag, `configPaths` and default protocol/scheme all came from
1495
+ // the current project's files, and whatever its namesake declared there
1496
+ // leaked into the other project's registry entry.
1497
+ let _ownProjectPath = cmd.projects[project].path;
1498
+ if ( fs.existsSync(_(_ownProjectPath + '/'+ cmd.bundlesByProject[project][bundle].src )) ) {
1460
1499
  cmd.bundlesByProject[project][bundle].exists = true;
1461
1500
  // adding configurations
1462
- bundleConfigPath = _(cmd.projectLocation + '/'+ cmd.bundlesByProject[project][bundle].src +'/config' );
1501
+ bundleConfigPath = _(_ownProjectPath + '/'+ cmd.bundlesByProject[project][bundle].src +'/config' );
1463
1502
  cmd.bundlesByProject[project][bundle].configPaths = {
1464
1503
  settings: _(bundleConfigPath +'/settings.json')
1465
1504
  };
@@ -1471,22 +1510,40 @@ function CmdHelper(cmd, client, debug) {
1471
1510
  typeof(settings.server) != 'undefined'
1472
1511
  && typeof(settings.server.protocol) != 'undefined'
1473
1512
  ) {
1474
- // adding in case of bad configuration : exists in bundle, but not listed in available/global settings
1475
- if (cmd.bundlesByProject[project][bundle].protocols.indexOf(settings.server.protocol) < 0)
1476
- cmd.bundlesByProject[project][bundle].protocols.push(settings.server.protocol);
1477
-
1478
- cmd.bundlesByProject[project][bundle].def_protocol = settings.server.protocol
1513
+ // #B378 — a bundle's declared protocol may extend the project's
1514
+ // list ONLY when the framework itself supports it. The entry's
1515
+ // `.protocols` deliberately aliases the project's own array
1516
+ // (assigned above): that aliasing is how the project's port
1517
+ // matrix learns what its bundles use — and it persists to
1518
+ // ~/.gina/projects.json on the next registry write, from where
1519
+ // `image:build` bakes the list into a container's environment.
1520
+ // So an unsupported value is surfaced by name instead of
1521
+ // adopted, and never becomes the entry's default either.
1522
+ if ( cmd.protocolsAvailable.indexOf(settings.server.protocol) > -1 ) {
1523
+ if (cmd.bundlesByProject[project][bundle].protocols.indexOf(settings.server.protocol) < 0)
1524
+ cmd.bundlesByProject[project][bundle].protocols.push(settings.server.protocol);
1525
+
1526
+ cmd.bundlesByProject[project][bundle].def_protocol = settings.server.protocol
1527
+ } else if ( !cmd.warnedInvalidServerSettings[project +'/'+ bundle +':protocol'] ) {
1528
+ cmd.warnedInvalidServerSettings[project +'/'+ bundle +':protocol'] = true;
1529
+ console.warn('Bundle `'+ bundle +'` of project `@'+ project +'` declares `server.protocol: "'+ settings.server.protocol +'"`, which is not an allowed protocol (allowed: '+ cmd.protocolsAvailable.join(', ') +' — check your framework configuration `~/main.json`). Ignoring it: the bundle keeps the default `'+ cmd.bundlesByProject[project][bundle].def_protocol +'`.');
1530
+ }
1479
1531
  }
1480
1532
 
1481
1533
  if (
1482
1534
  typeof(settings.server) != 'undefined'
1483
1535
  && typeof(settings.server.scheme) != 'undefined'
1484
1536
  ) {
1485
- // adding in case of bad configuration : exists in bundle, but not listed in available/global settings
1486
- if (cmd.bundlesByProject[project][bundle].schemes.indexOf(settings.server.scheme) < 0)
1487
- cmd.bundlesByProject[project][bundle].schemes.push(settings.server.scheme);
1488
-
1489
- cmd.bundlesByProject[project][bundle].def_scheme = settings.server.scheme
1537
+ // #B378 — same rule as the protocol above.
1538
+ if ( cmd.schemesAvailable.indexOf(settings.server.scheme) > -1 ) {
1539
+ if (cmd.bundlesByProject[project][bundle].schemes.indexOf(settings.server.scheme) < 0)
1540
+ cmd.bundlesByProject[project][bundle].schemes.push(settings.server.scheme);
1541
+
1542
+ cmd.bundlesByProject[project][bundle].def_scheme = settings.server.scheme
1543
+ } else if ( !cmd.warnedInvalidServerSettings[project +'/'+ bundle +':scheme'] ) {
1544
+ cmd.warnedInvalidServerSettings[project +'/'+ bundle +':scheme'] = true;
1545
+ console.warn('Bundle `'+ bundle +'` of project `@'+ project +'` declares `server.scheme: "'+ settings.server.scheme +'"`, which is not an allowed scheme (allowed: '+ cmd.schemesAvailable.join(', ') +' — check your framework configuration `~/main.json`). Ignoring it: the bundle keeps the default `'+ cmd.bundlesByProject[project][bundle].def_scheme +'`.');
1546
+ }
1490
1547
  }
1491
1548
  }
1492
1549
 
@@ -1525,10 +1582,22 @@ function CmdHelper(cmd, client, debug) {
1525
1582
  return false;
1526
1583
  }
1527
1584
 
1585
+ // #B375 — this rescan used to be gated on `!cmd.bundles.length`, which only ever
1586
+ // opened after the destructive count-mismatch reset (now retired, see above) had
1587
+ // emptied the list: that reset WAS the discovery mechanism for bundles present on
1588
+ // disk but missing from the manifest. The rescan now always runs for
1589
+ // `project:add`/`project:import` on the current project and UNIONS the two sources
1590
+ // instead: manifest-declared bundles keep their existing entries untouched
1591
+ // (`scopes`, `version`, custom keys, release targets — all preserved), and only
1592
+ // bundles found on disk but absent from the manifest are appended, for
1593
+ // `addBundleToManifest` to seed additively (#B55). A bundle declared in the
1594
+ // manifest but absent from disk is warned about, never auto-pruned: the
1595
+ // declaration may be deliberate (a bundle restricted to other scopes — #B373 —
1596
+ // whose tree is stripped at this scope); removing it for good is
1597
+ // `gina bundle:remove`'s job.
1528
1598
  if (
1529
1599
  /^project\:(add|import)/.test(cmd.task)
1530
1600
  && typeof(cmd.projects[cmd.projectName]) != 'undefined'
1531
- && !cmd.bundles.length
1532
1601
  ) {
1533
1602
  var releasesPathObj = new _(cmd.projects[cmd.projectName].path +'/releases', true);
1534
1603
  var _bundleConfigPath = cmd.bundlesLocation;
@@ -1539,18 +1608,35 @@ function CmdHelper(cmd, client, debug) {
1539
1608
  _bundleConfigPath = releasesPathObj.toString();
1540
1609
  files = fs.readdirSync(releasesPathObj.toString());
1541
1610
  }
1611
+ var _diskNames = [];
1542
1612
  for (;f < files.length; ++f) {
1543
1613
  // skip hidden
1544
1614
  let name = files[f];
1545
1615
  if ( /^\./.test(name) ) continue;
1616
+ _diskNames.push(name);
1617
+ if ( cmd.bundles.indexOf(name) > -1 ) {
1618
+ // already declared in the manifest — keep the existing entry untouched
1619
+ continue;
1620
+ }
1546
1621
  cmd.bundles.push(name);
1547
- _bundleConfigPath += '/'+ name;
1622
+ // #B376 — the settings path is derived from the loop-invariant scan root
1623
+ // for every bundle: the previous version mutated the root across
1624
+ // iterations, so every bundle after the first got a path nested under its
1625
+ // predecessors and the settings-consistency pass silently skipped it.
1548
1626
  cmd.bundlesByProject[cmd.projectName][name] = {
1627
+ src: 'src/'+ name,
1549
1628
  configPaths: {
1550
- settings: _(_bundleConfigPath +'/config/settings.json', true)
1629
+ settings: _(_bundleConfigPath +'/'+ name +'/config/settings.json', true)
1551
1630
  }
1552
1631
  };
1553
1632
  }
1633
+ // Surface manifest entries whose tree is missing from the scanned location —
1634
+ // once per bundle per command (loadAssets runs several times per command).
1635
+ for (let declared in cmd.bundlesByProject[cmd.projectName]) {
1636
+ if ( _diskNames.indexOf(declared) > -1 || cmd.warnedAbsentBundles[declared] ) continue;
1637
+ cmd.warnedAbsentBundles[declared] = true;
1638
+ console.warn('Bundle `'+ declared +'` is declared in the manifest.json of project `@'+ cmd.projectName +'` but was not found under `'+ _bundleConfigPath +'` — keeping the declaration (it may be restricted to other scopes); if the bundle is gone for good, remove it with `gina bundle:remove '+ declared +' @'+ cmd.projectName +'`.');
1639
+ }
1554
1640
  cmd.bundles.sort()
1555
1641
  }
1556
1642
 
@@ -1783,17 +1869,30 @@ function CmdHelper(cmd, client, debug) {
1783
1869
  }
1784
1870
 
1785
1871
  // getting available all protocols
1872
+ // #B380 — read the SOURCE list by its own index, exactly as the env loop
1873
+ // above does: the previous form indexed the TARGET with the source's index,
1874
+ // so once the contextual list outgrew the project's own, the overshoot read
1875
+ // undefined. #B378 — and merge only values the framework supports: the
1876
+ // contextual list also grows from ports.json keys, which can retain
1877
+ // protocols a framework update removed.
1786
1878
  for (let p in cmd.protocols) {
1787
- let newProtocol = allProjectProtocols[p];
1788
- if (allProjectProtocols.indexOf(newProtocol) < 0) {
1879
+ let newProtocol = cmd.protocols[p];
1880
+ if (
1881
+ cmd.protocolsAvailable.indexOf(newProtocol) > -1
1882
+ && allProjectProtocols.indexOf(newProtocol) < 0
1883
+ ) {
1789
1884
  console.debug('adding new protocol ['+newProtocol+'] VS' + JSON.stringify(cmd.protocols, null, 2));
1790
1885
  allProjectProtocols.push(newProtocol);
1791
1886
  }
1792
1887
  }
1793
1888
  // getting available all schemes
1889
+ // #B380 / #B378 — same two rules as the protocol loop above.
1794
1890
  for (let p in cmd.schemes) {
1795
- let newScheme = allProjectSchemes[p];
1796
- if (allProjectSchemes.indexOf(newScheme) < 0) {
1891
+ let newScheme = cmd.schemes[p];
1892
+ if (
1893
+ cmd.schemesAvailable.indexOf(newScheme) > -1
1894
+ && allProjectSchemes.indexOf(newScheme) < 0
1895
+ ) {
1797
1896
  console.debug('adding new scheme ['+newScheme+'] VS' + JSON.stringify(cmd.schemes, null, 2));
1798
1897
  allProjectSchemes.push(newScheme);
1799
1898
  }
@@ -390,6 +390,58 @@ function Add(opt, cmd) {
390
390
  }
391
391
 
392
392
 
393
+ /**
394
+ * Copies the framework's `_gitignore` template to the project's `.gitignore`,
395
+ * but only when the project does not already have one (#B258).
396
+ *
397
+ * The `_` prefix is the ship-time name: a real `.gitignore` tracked inside
398
+ * `core/template/` would be read by git as ignore rules for the framework's
399
+ * own tree. The rename to the dotted form belongs here, at scaffold time —
400
+ * and until now nothing performed it, so the template shipped in every
401
+ * tarball with no consumer and scaffolded projects got no `.gitignore` at
402
+ * all. That left the `.env` / `*.env` globs it carries unable to protect
403
+ * anything, which is the security-adjacent half of this fix.
404
+ *
405
+ * SKIP-IF-EXISTS is deliberate. A project's `.gitignore` is the user's file
406
+ * and routinely carries rules the framework knows nothing about; filling a
407
+ * gap is safe, replacing is not. This also makes the step idempotent, so
408
+ * re-running `project:add` over an existing project cannot clobber it.
409
+ *
410
+ * Note this does NOT reuse `lib.generator.createFileFromTemplateSync`, which
411
+ * is otherwise the right shape: it unlinks the target first, so it cannot
412
+ * express skip-if-exists, and it chmods 0755 — an executable `.gitignore`.
413
+ *
414
+ * Never fatal: a scaffold that produced a complete, working project should
415
+ * not fail over an ignore file the operator can write by hand.
416
+ *
417
+ * @inner
418
+ * @private
419
+ * @param {string} target - Absolute path to the project's `.gitignore`
420
+ * @returns {boolean} true when written, false when one already existed or the write was skipped
421
+ *
422
+ * @example
423
+ * createGitignoreFile('/path/to/project/.gitignore'); // → true on a fresh project
424
+ * createGitignoreFile('/path/to/project/.gitignore'); // → false the second time
425
+ */
426
+ var createGitignoreFile = function(target) {
427
+ try {
428
+ if ( fs.existsSync(target) ) {
429
+ return false
430
+ }
431
+ var source = _(getPath('gina').core + '/template/_gitignore', true).toString();
432
+ if ( !fs.existsSync(source) ) {
433
+ return false
434
+ }
435
+ fs.writeFileSync(target, fs.readFileSync(source));
436
+ try { fs.chmodSync(target, 0o644) } catch (chmodErr) { /* best effort */ }
437
+ return true
438
+ } catch (gitignoreErr) {
439
+ console.warning('[ project:add ] could not write `.gitignore`: ' + (gitignoreErr.message || gitignoreErr));
440
+ return false
441
+ }
442
+ }
443
+
444
+
393
445
  /**
394
446
  * Creates or updates package.json from the framework template, merging
395
447
  * any existing file when isCreatedFromExistingPackage is true.
@@ -430,6 +482,12 @@ function Add(opt, cmd) {
430
482
  target
431
483
  );
432
484
 
485
+ // #B258 — the project's `.gitignore`, written only when absent. This is
486
+ // the last scaffold step for both the new-project and the import path:
487
+ // an imported project without one has exactly the same exposure as a
488
+ // fresh one, and skip-if-exists keeps the import non-destructive.
489
+ createGitignoreFile( _(self.projectLocation + '/.gitignore', true).toString() );
490
+
433
491
  end(true)
434
492
  }
435
493
 
@@ -593,6 +651,10 @@ function Add(opt, cmd) {
593
651
  * and writes ports.json and ports.reverse.json when all bundles are done.
594
652
  * Also used by the `port:reset` command.
595
653
  *
654
+ * Bundles declared in the manifest but absent from disk (e.g. restricted to
655
+ * other scopes — #B373) carry no `configPaths`; the settings-consistency
656
+ * check skips them (#B375) while their port entries are still processed.
657
+ *
596
658
  * @inner
597
659
  * @private
598
660
  * @param {number} b - Current bundle index into self.bundles
@@ -677,20 +739,29 @@ function Add(opt, cmd) {
677
739
  // bundle settings inconsistency check @ fix
678
740
  bundleName = local.bundle;
679
741
  bundleConfig = self.bundlesByProject[self.projectName][bundleName];
680
- settingsPath = _(bundleConfig.configPaths.settings, true);
742
+ // #B375 — a bundle declared in the manifest but absent from disk
743
+ // (e.g. restricted to other scopes) carries no `configPaths`: skip
744
+ // its settings-consistency check instead of throwing; the ports
745
+ // handling below is unaffected.
746
+ settingsPath = ( bundleConfig && bundleConfig.configPaths ) ? _(bundleConfig.configPaths.settings, true) : null;
681
747
  bundleSettingsUpdate = false;
682
748
 
683
- if ( fs.existsSync(settingsPath) ) {
749
+ if ( settingsPath && fs.existsSync(settingsPath) ) {
684
750
 
685
751
  bundleSettings = requireJSON(settingsPath);
686
752
  //console.debug('found [ '+ bundleName +' ] settings ');
687
753
  if ( typeof(bundleSettings.server) != 'undefined' ) {
754
+ // #B378 — this heal is what makes an invalid declaration
755
+ // bootable again, but a user file must never be rewritten
756
+ // silently: every change is collected and reported by name.
757
+ var _settingsChanges = [];
688
758
  // update only if given bundle protocol setting not in project protocols list
689
759
  // use project def_protocol by default in that case
690
760
  if (
691
761
  typeof(bundleSettings.server.protocol) != 'undefined'
692
762
  && protocols.indexOf(bundleSettings.server.protocol) < 0
693
763
  ) {
764
+ _settingsChanges.push('server.protocol "'+ bundleSettings.server.protocol +'" -> "'+ self.defaultProtocol +'"');
694
765
  bundleSettings.server.protocol = self.defaultProtocol;
695
766
  bundleSettingsUpdate = true
696
767
  }
@@ -701,13 +772,14 @@ function Add(opt, cmd) {
701
772
  typeof(bundleSettings.server.scheme) != 'undefined'
702
773
  && schemes.indexOf(bundleSettings.server.scheme) < 0
703
774
  ) {
775
+ _settingsChanges.push('server.scheme "'+ bundleSettings.server.scheme +'" -> "'+ self.defaultScheme +'"');
704
776
  bundleSettings.server.scheme = self.defaultScheme;
705
777
  bundleSettingsUpdate = true
706
778
  }
707
779
 
708
780
  if (bundleSettingsUpdate) {
709
781
  lib.generator.createFileFromDataSync(bundleSettings, settingsPath);
710
- console.debug('updated [ '+ bundleName +' ] settings');
782
+ console.warn('Updated [ '+ bundleName +' ] settings: '+ _settingsChanges.join('; ') +' — the declared value is not in the project protocols/schemes list.');
711
783
  }
712
784
  }
713
785
  }
@@ -130,6 +130,22 @@ function Build(opt, cmd) {
130
130
 
131
131
  var bundle = self.bundles[b];
132
132
 
133
+ // #B373 — per-scope deployment. This is the BULK verb: it walks every bundle
134
+ // in the project, so a bundle not deployed in the scope being built is skipped
135
+ // with a notice rather than refused — refusing would make one parked bundle
136
+ // block the whole project build. (The single-target `bundle:build` refuses
137
+ // instead, because there the exclusion is what the operator explicitly asked
138
+ // for.) A malformed `scopes` is still a hard error: it is a manifest defect,
139
+ // not an opt-out.
140
+ var _entry = local.manifest.bundles[bundle];
141
+ if ( _entry && typeof(_entry.scopes) != 'undefined' && _entry.scopes !== null && !Array.isArray(_entry.scopes) ) {
142
+ return end( new Error('[ manifest ] `bundles.'+ bundle +'.scopes` must be an array of scope names (got '+ typeof(_entry.scopes) +'). Remove the key to deploy `'+ bundle +'` in every scope, or list the scopes it belongs to.') );
143
+ }
144
+ if ( _entry && Array.isArray(_entry.scopes) && _entry.scopes.indexOf(process.env.NODE_SCOPE) < 0 ) {
145
+ console.info('[ BUILD ] Skipping bundle [ '+ bundle +' ]: not deployed in scope `'+ process.env.NODE_SCOPE +'` (declared scopes: '+ ( _entry.scopes.length ? '`'+ _entry.scopes.join('`, `') +'`' : 'none' ) +').');
146
+ return buildBundle(b+1);
147
+ }
148
+
133
149
  local.envs = self.envs.slice();
134
150
  local.scopes = self.scopes.slice();
135
151
  // var releasesPathObj = new _(self.projects[self.projectName].path +'/releases', true);
@@ -137,6 +153,14 @@ function Build(opt, cmd) {
137
153
  // per scope
138
154
  for (let i = 0, len = local.scopes.length; i < len; i++) {
139
155
  let scope = local.scopes[i]
156
+ // #B373 — do not seed a scope the bundle opts out of; this loop walks
157
+ // EVERY project scope, so unfiltered it regrows the opted-out entries.
158
+ if (
159
+ Array.isArray(local.manifest.bundles[bundle].scopes)
160
+ && local.manifest.bundles[bundle].scopes.indexOf(scope) < 0
161
+ ) {
162
+ continue;
163
+ }
140
164
  if ( typeof(local.manifest.bundles[bundle].releases[scope]) == 'undefined' ) {
141
165
  local.manifest.bundles[bundle].releases[scope] = {}
142
166
  }
@@ -140,6 +140,14 @@ function Lib() {
140
140
  // module, discarding the live registry and orphaning the sweep timer on
141
141
  // each request. Plain require = cache hit = the singleton survives.
142
142
  job : require('./job'),
143
+ // #B366 — out-of-request push primitive, behind the gina.pushToSession()
144
+ // global. Stateless (the caller hands it the live server instance), but a
145
+ // PLAIN require (NOT _require) for the authzGate/authn reason: gna.js is
146
+ // load-once and captures this binding at boot, so a _require'd copy would
147
+ // be evicted and re-required out from under that gen-0 capture on every
148
+ // dev-mode request — the #B32-residual leak class. It also keeps the
149
+ // primitive that chooses a push recipient out of the hot-reload path.
150
+ push : require('./push'),
143
151
  // #INS10 — toggleable instrumentation window primitive. Owns the
144
152
  // time-boxed Inspector capture window (process.gina._inspectorWindowUntil)
145
153
  // and its unref'd expiry timer. PLAIN require (like job / State / logger):
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "gina-lib-push",
3
+ "version": "1.0.0",
4
+ "description": "Out-of-request push primitive (#B366) — deliver a payload to ONE named session's engine.io sockets from code with no live request (job handlers, cron, boot hooks). Recipient is a required argument with no fallback and no reachable broadcast; reports how many sockets were written. Backs the gina.pushToSession() global.",
5
+ "author": {
6
+ "name": "Martin-Luther ETOUMAN",
7
+ "email": "contact@gina.io"
8
+ },
9
+ "copyright": "Copyright (c) 2009-2026 Rhinostone <contact@gina.io>",
10
+ "engines": {
11
+ "node": ">=16.0.0"
12
+ },
13
+ "main": "src/main",
14
+ "scripts": {
15
+ "test": "node --test test"
16
+ },
17
+ "license": "MIT",
18
+ "readmeFilename": "README.md"
19
+ }
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Out-of-request push primitive (#B366).
3
+ *
4
+ * `SuperController.push()` is reachable only from a live request-bound
5
+ * controller — it returns early once the request is released (#B38) — and the
6
+ * engine.io socket set has exactly one other reader in the whole framework.
7
+ * So code with no request in hand (a `lib/job` handler, a cron tick, a boot
8
+ * hook) has had no sanctioned way to reach a user's socket. This module is it.
9
+ *
10
+ * Design notes (full record: the #B366 design):
11
+ *
12
+ * - The recipient is a REQUIRED argument with no fallback, and there is no
13
+ * broadcast reachable from this API at all. #B364 shipped because a
14
+ * primitive whose blast radius is "everyone connected" inferred the wide
15
+ * case from a MISSING value; an absent recipient here is an error, never a
16
+ * fan-out. Deliberate all-clients sends stay in-request
17
+ * (`self.push(payload, { broadcast: true })`).
18
+ *
19
+ * - The caller is trusted to name any session, exactly as the in-request
20
+ * `option.sessionID` branch already trusts server-side code. What must
21
+ * never happen is a recipient sourced from client input: capture the id
22
+ * server-side (at job creation, say) and keep it there. Round-tripping a
23
+ * recipient id — or a token naming one — through the browser hands the
24
+ * choice back to the caller and re-opens #B364 one layer up.
25
+ *
26
+ * - Delivery is REPORTED, not assumed. `callback(err, { delivered })` gives
27
+ * the number of sockets written, because the shape this replaces was
28
+ * fire-and-forget and blind: a consumer measured ~41% of their progress
29
+ * pushes never sending, and nothing surfaced it. `delivered: 0` is a
30
+ * normal outcome (the user has no socket open), not an error.
31
+ *
32
+ * - Receiver identity is a SEPARATE axis (#B365): this decides who a sender
33
+ * may aim at, never how a receiver proves who it is.
34
+ *
35
+ * @module lib/push
36
+ */
37
+
38
+ /**
39
+ * Push a payload to every engine.io socket bound to one session.
40
+ *
41
+ * @param {object} instance - The live server instance (`process.gina._serverInstance`).
42
+ * @param {string} sessionID - REQUIRED recipient session id; empty/non-string is an error, never a broadcast.
43
+ * @param {object|string} payload - Object (JSON-stringified) or a pre-serialized string.
44
+ * @param {object} [option] - Forwarded to the transport (e.g. `{ compress: true }`).
45
+ * @param {string} [option.section] - Stamped onto an object payload when it carries no `section`.
46
+ * @param {function} [callback] - `callback(err, { delivered })`, called exactly ONCE.
47
+ * @returns {void}
48
+ *
49
+ * @example
50
+ * // from a job handler, with the session id captured at job creation
51
+ * var push = require('gina').lib.push;
52
+ * push.toSession(process.gina._serverInstance, job.sessionID, { event: 'ready', pct: 100 }, null, function(err, res) {
53
+ * if (err) { return console.error(err.code, err.message); }
54
+ * if (!res.delivered) { console.debug('user has no socket open'); }
55
+ * });
56
+ */
57
+ var toSession = function(instance, sessionID, payload, option, callback) {
58
+
59
+ if ( typeof(option) == 'function' ) {
60
+ callback = option;
61
+ option = null;
62
+ }
63
+ var cb = ( typeof(callback) == 'function' ) ? callback : function() {};
64
+
65
+ // Fail CLOSED on an unusable recipient. This is the #B364 invariant in the
66
+ // signature: no recipient means nothing is sent — never everyone.
67
+ if ( typeof(sessionID) != 'string' || sessionID === '' ) {
68
+ return cb(_err('PUSH_INVALID_RECIPIENT',
69
+ '`sessionID` is required and must be a non-empty string. This API never broadcasts: '
70
+ + 'use the in-request `self.push(payload, { broadcast: true })` to reach every client.'));
71
+ }
72
+
73
+ if ( payload == null ) {
74
+ return cb(_err('PUSH_INVALID_PAYLOAD',
75
+ '`payload` is required. There is no request to fall back to outside a controller.'));
76
+ }
77
+
78
+ if ( instance == null || instance.eio == null || instance.eio.clients == null ) {
79
+ return cb(_err('PUSH_CHANNEL_NOT_CONFIGURED',
80
+ 'no engine.io channel on this server instance. The push channel needs the isaac engine with '
81
+ + '`settings.json > server.ioServer.integrationMode: "attach"`; the express engine has no `eio`.'));
82
+ }
83
+
84
+ // Section stamping mirrors the in-request path, minus every request-sourced
85
+ // default — there is no request here, so an explicit option is the only source.
86
+ var section = ( option != null && typeof(option.section) != 'undefined' ) ? option.section : null;
87
+ var body = payload;
88
+ if ( typeof(body) == 'object' ) {
89
+ if ( section && typeof(body.section) == 'undefined' ) {
90
+ body.section = section;
91
+ }
92
+ try {
93
+ body = JSON.stringify(body);
94
+ } catch (serializeErr) {
95
+ return cb(_err('PUSH_PAYLOAD_SERIALIZE_FAILED', serializeErr.message || String(serializeErr)));
96
+ }
97
+ }
98
+
99
+ var clients = instance.eio.clients;
100
+ var delivered = 0;
101
+ try {
102
+ for (let s in clients) {
103
+ // #B364 — the guard this replaces read `!clients[s].constructor.name == 'Socket'`,
104
+ // which parses as `(!name) == 'Socket'` and so never once skipped anything.
105
+ if ( clients[s].constructor.name !== 'Socket' ) {
106
+ continue;
107
+ }
108
+ if (
109
+ typeof(clients[s].sessionId) != 'undefined'
110
+ && clients[s].sessionId == sessionID
111
+ ) {
112
+ // The caller's callback is NOT threaded into sendPacket: it fires
113
+ // per socket, and this API promises exactly one callback carrying a
114
+ // total. Transport-level acks stay the transport's business.
115
+ clients[s].sendPacket('message', body, option || {});
116
+ ++delivered;
117
+ }
118
+ }
119
+ } catch (sendErr) {
120
+ return cb(sendErr);
121
+ }
122
+
123
+ return cb(null, { delivered: delivered });
124
+ };
125
+
126
+ /**
127
+ * Build a coded Error — same shape as the storage verbs, so callers can branch
128
+ * on `err.code` instead of matching message text.
129
+ *
130
+ * @inner
131
+ * @private
132
+ * @param {string} code - Machine-readable code.
133
+ * @param {string} message - Human-readable detail.
134
+ * @returns {Error} The error, with `code` attached.
135
+ */
136
+ var _err = function(code, message) {
137
+ var e = new Error('[ push ] ' + message);
138
+ e.code = code;
139
+ return e;
140
+ };
141
+
142
+ module.exports = {
143
+ toSession: toSession
144
+ };