@omega.js/extension 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (684) hide show
  1. package/LICENSE +98 -0
  2. package/README.md +194 -0
  3. package/bin/omega +2 -0
  4. package/bin/omega-extension +2 -0
  5. package/bin/omg +2 -0
  6. package/dist/assets/css/bundles/.gitkeep +0 -0
  7. package/dist/assets/css/components/content/index.scss +5 -0
  8. package/dist/assets/css/components/options/index.scss +9 -0
  9. package/dist/assets/css/components/pages/index.scss +5 -0
  10. package/dist/assets/css/components/popup/index.scss +9 -0
  11. package/dist/assets/css/core/_animations.scss +64 -0
  12. package/dist/assets/css/core/_fontawesome.scss +146 -0
  13. package/dist/assets/css/core/_initialize.scss +23 -0
  14. package/dist/assets/css/core/_utilities.scss +80 -0
  15. package/dist/assets/css/omega-extension.scss +43 -0
  16. package/dist/assets/css/shell/_index.scss +207 -0
  17. package/dist/assets/css/tokens/_index.scss +166 -0
  18. package/dist/assets/js/core/app-shell.js +136 -0
  19. package/dist/assets/js/libs/initialize-tooltips.js +31 -0
  20. package/dist/assets/js/libs/recaptcha.js +94 -0
  21. package/dist/assets/js/main.js +4 -0
  22. package/dist/assets/themes/_template/README.md +115 -0
  23. package/dist/assets/themes/_template/_config.scss +60 -0
  24. package/dist/assets/themes/_template/_theme.js +14 -0
  25. package/dist/assets/themes/_template/_theme.scss +28 -0
  26. package/dist/assets/themes/_template/css/base/_root.scss +19 -0
  27. package/dist/assets/themes/_template/css/components/_components.scss +23 -0
  28. package/dist/assets/themes/base/README.md +5 -0
  29. package/dist/assets/themes/base/_components/data/org-chart/component.html +33 -0
  30. package/dist/assets/themes/base/_components/data/org-chart/component.json5 +33 -0
  31. package/dist/assets/themes/base/_components/data/org-chart/component.scss +183 -0
  32. package/dist/assets/themes/base/_components/heading/masthead/component.html +22 -0
  33. package/dist/assets/themes/base/_components/heading/masthead/component.json5 +30 -0
  34. package/dist/assets/themes/base/_components/heading/section-head/component.html +18 -0
  35. package/dist/assets/themes/base/_components/heading/section-head/component.json5 +27 -0
  36. package/dist/assets/themes/base/_components/pricing/features/component.html +29 -0
  37. package/dist/assets/themes/base/_components/pricing/features/component.json5 +30 -0
  38. package/dist/assets/themes/base/_hero/orbit/index.html +30 -0
  39. package/dist/assets/themes/base/_hero/orbit/script.js +33 -0
  40. package/dist/assets/themes/base/_hero/orbit/style.scss +133 -0
  41. package/dist/assets/themes/base/_includes/admin/sections/sidebar.html +3 -0
  42. package/dist/assets/themes/base/_includes/admin/sections/topbar.html +3 -0
  43. package/dist/assets/themes/base/_includes/backend/sections/sidebar.html +3 -0
  44. package/dist/assets/themes/base/_includes/backend/sections/topbar.html +3 -0
  45. package/dist/assets/themes/base/_includes/frontend/components/connection-card.html +49 -0
  46. package/dist/assets/themes/base/_includes/frontend/components/post-card.html +54 -0
  47. package/dist/assets/themes/base/_includes/frontend/sections/account-connections.html +42 -0
  48. package/dist/assets/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
  49. package/dist/assets/themes/base/_includes/frontend/sections/footer.html +154 -0
  50. package/dist/assets/themes/base/_includes/frontend/sections/nav.html +276 -0
  51. package/dist/assets/themes/base/_includes/global/sections/account.html +72 -0
  52. package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +248 -0
  53. package/dist/assets/themes/base/_includes/global/sections/app-topbar.html +228 -0
  54. package/dist/assets/themes/base/_includes/global/sections/page-header.html +99 -0
  55. package/dist/assets/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
  56. package/dist/assets/themes/base/_layouts/admin/core/minimal.html +23 -0
  57. package/dist/assets/themes/base/_layouts/backend/core/base.html +57 -0
  58. package/dist/assets/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
  59. package/dist/assets/themes/base/_layouts/backend/core/minimal.html +32 -0
  60. package/dist/assets/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
  61. package/dist/assets/themes/base/_layouts/frontend/core/base.html +31 -0
  62. package/dist/assets/themes/base/_layouts/frontend/core/cover.html +40 -0
  63. package/dist/assets/themes/base/_layouts/frontend/core/minimal.html +47 -0
  64. package/dist/assets/themes/base/_layouts/frontend/pages/404.html +54 -0
  65. package/dist/assets/themes/base/_layouts/frontend/pages/about.html +144 -0
  66. package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
  67. package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
  68. package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
  69. package/dist/assets/themes/base/_layouts/frontend/pages/app.html +142 -0
  70. package/dist/assets/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
  71. package/dist/assets/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
  72. package/dist/assets/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
  73. package/dist/assets/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
  74. package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
  75. package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
  76. package/dist/assets/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
  77. package/dist/assets/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
  78. package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
  79. package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
  80. package/dist/assets/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
  81. package/dist/assets/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
  82. package/dist/assets/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
  83. package/dist/assets/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
  84. package/dist/assets/themes/base/_layouts/frontend/pages/contact.html +214 -0
  85. package/dist/assets/themes/base/_layouts/frontend/pages/download.html +793 -0
  86. package/dist/assets/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
  87. package/dist/assets/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
  88. package/dist/assets/themes/base/_layouts/frontend/pages/feedback.html +171 -0
  89. package/dist/assets/themes/base/_layouts/frontend/pages/index.html +66 -0
  90. package/dist/assets/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
  91. package/dist/assets/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
  92. package/dist/assets/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
  93. package/dist/assets/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
  94. package/dist/assets/themes/base/_layouts/frontend/pages/pricing.html +596 -0
  95. package/dist/assets/themes/base/_layouts/frontend/pages/status.html +361 -0
  96. package/dist/assets/themes/base/_layouts/frontend/pages/team/index.html +210 -0
  97. package/dist/assets/themes/base/_layouts/frontend/pages/team/member.html +125 -0
  98. package/dist/assets/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
  99. package/dist/assets/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
  100. package/dist/assets/themes/base/_sections/about/hero/section.html +68 -0
  101. package/dist/assets/themes/base/_sections/about/hero/section.json5 +58 -0
  102. package/dist/assets/themes/base/_sections/about/letter/section.html +60 -0
  103. package/dist/assets/themes/base/_sections/about/letter/section.json5 +56 -0
  104. package/dist/assets/themes/base/_sections/about/photo-band/section.html +24 -0
  105. package/dist/assets/themes/base/_sections/about/photo-band/section.json5 +23 -0
  106. package/dist/assets/themes/base/_sections/about/principles/section.html +17 -0
  107. package/dist/assets/themes/base/_sections/about/principles/section.json5 +34 -0
  108. package/dist/assets/themes/base/_sections/about/timeline/section.html +20 -0
  109. package/dist/assets/themes/base/_sections/about/timeline/section.json5 +34 -0
  110. package/dist/assets/themes/base/_sections/marketing/bento/section.html +91 -0
  111. package/dist/assets/themes/base/_sections/marketing/bento/section.json5 +152 -0
  112. package/dist/assets/themes/base/_sections/marketing/cta/section.html +44 -0
  113. package/dist/assets/themes/base/_sections/marketing/cta/section.json5 +47 -0
  114. package/dist/assets/themes/base/_sections/marketing/faq/section.html +52 -0
  115. package/dist/assets/themes/base/_sections/marketing/faq/section.json5 +68 -0
  116. package/dist/assets/themes/base/_sections/marketing/hero/section.html +349 -0
  117. package/dist/assets/themes/base/_sections/marketing/hero/section.json5 +335 -0
  118. package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
  119. package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
  120. package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
  121. package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
  122. package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
  123. package/dist/assets/themes/base/_sections/marketing/product-demo/section.html +62 -0
  124. package/dist/assets/themes/base/_sections/marketing/product-demo/section.js +44 -0
  125. package/dist/assets/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
  126. package/dist/assets/themes/base/_sections/marketing/prose/section.html +22 -0
  127. package/dist/assets/themes/base/_sections/marketing/prose/section.json5 +41 -0
  128. package/dist/assets/themes/base/_sections/marketing/showcase/section.html +35 -0
  129. package/dist/assets/themes/base/_sections/marketing/showcase/section.json5 +52 -0
  130. package/dist/assets/themes/base/_sections/marketing/stats/section.html +32 -0
  131. package/dist/assets/themes/base/_sections/marketing/stats/section.json5 +44 -0
  132. package/dist/assets/themes/base/_sections/marketing/testimonials/section.html +54 -0
  133. package/dist/assets/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
  134. package/dist/assets/themes/base/_sections/marketing/trusted-by/section.html +30 -0
  135. package/dist/assets/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
  136. package/dist/assets/themes/base/_sections/verts/unit/section.html +7 -0
  137. package/dist/assets/themes/base/_sections/verts/unit/section.js +22 -0
  138. package/dist/assets/themes/base/_sections/verts/unit/section.json5 +24 -0
  139. package/dist/assets/themes/base/_sections/verts/unit/section.scss +24 -0
  140. package/dist/assets/themes/base/_theme.js +13 -0
  141. package/dist/assets/themes/base/_theme.scss +4 -0
  142. package/dist/assets/themes/bootstrap/_theme.js +16 -0
  143. package/dist/assets/themes/bootstrap/_theme.scss +11 -0
  144. package/dist/assets/themes/bootstrap/js/index.esm.js +19 -0
  145. package/dist/assets/themes/bootstrap/js/index.umd.js +34 -0
  146. package/dist/assets/themes/bootstrap/js/src/alert.js +87 -0
  147. package/dist/assets/themes/bootstrap/js/src/base-component.js +86 -0
  148. package/dist/assets/themes/bootstrap/js/src/button.js +72 -0
  149. package/dist/assets/themes/bootstrap/js/src/carousel.js +474 -0
  150. package/dist/assets/themes/bootstrap/js/src/collapse.js +297 -0
  151. package/dist/assets/themes/bootstrap/js/src/dom/data.js +55 -0
  152. package/dist/assets/themes/bootstrap/js/src/dom/event-handler.js +317 -0
  153. package/dist/assets/themes/bootstrap/js/src/dom/manipulator.js +71 -0
  154. package/dist/assets/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
  155. package/dist/assets/themes/bootstrap/js/src/dropdown.js +458 -0
  156. package/dist/assets/themes/bootstrap/js/src/modal.js +378 -0
  157. package/dist/assets/themes/bootstrap/js/src/offcanvas.js +282 -0
  158. package/dist/assets/themes/bootstrap/js/src/popover.js +97 -0
  159. package/dist/assets/themes/bootstrap/js/src/scrollspy.js +296 -0
  160. package/dist/assets/themes/bootstrap/js/src/tab.js +315 -0
  161. package/dist/assets/themes/bootstrap/js/src/toast.js +224 -0
  162. package/dist/assets/themes/bootstrap/js/src/tooltip.js +632 -0
  163. package/dist/assets/themes/bootstrap/js/src/util/backdrop.js +151 -0
  164. package/dist/assets/themes/bootstrap/js/src/util/component-functions.js +35 -0
  165. package/dist/assets/themes/bootstrap/js/src/util/config.js +65 -0
  166. package/dist/assets/themes/bootstrap/js/src/util/focustrap.js +115 -0
  167. package/dist/assets/themes/bootstrap/js/src/util/index.js +306 -0
  168. package/dist/assets/themes/bootstrap/js/src/util/sanitizer.js +117 -0
  169. package/dist/assets/themes/bootstrap/js/src/util/scrollbar.js +114 -0
  170. package/dist/assets/themes/bootstrap/js/src/util/swipe.js +146 -0
  171. package/dist/assets/themes/bootstrap/js/src/util/template-factory.js +160 -0
  172. package/dist/assets/themes/bootstrap/overrides/_accordion.scss +21 -0
  173. package/dist/assets/themes/bootstrap/overrides/_avatars.scss +51 -0
  174. package/dist/assets/themes/bootstrap/overrides/_blog-images.scss +45 -0
  175. package/dist/assets/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
  176. package/dist/assets/themes/bootstrap/overrides/_color-shades.scss +25 -0
  177. package/dist/assets/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
  178. package/dist/assets/themes/bootstrap/overrides/_index.scss +30 -0
  179. package/dist/assets/themes/bootstrap/overrides/_links.scss +26 -0
  180. package/dist/assets/themes/bootstrap/overrides/_soft-colors.scss +99 -0
  181. package/dist/assets/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
  182. package/dist/assets/themes/bootstrap/overrides/_spinners.scss +22 -0
  183. package/dist/assets/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
  184. package/dist/assets/themes/bootstrap/scss/_accordion.scss +153 -0
  185. package/dist/assets/themes/bootstrap/scss/_alert.scss +68 -0
  186. package/dist/assets/themes/bootstrap/scss/_badge.scss +38 -0
  187. package/dist/assets/themes/bootstrap/scss/_breadcrumb.scss +40 -0
  188. package/dist/assets/themes/bootstrap/scss/_button-group.scss +147 -0
  189. package/dist/assets/themes/bootstrap/scss/_buttons.scss +216 -0
  190. package/dist/assets/themes/bootstrap/scss/_card.scss +238 -0
  191. package/dist/assets/themes/bootstrap/scss/_carousel.scss +226 -0
  192. package/dist/assets/themes/bootstrap/scss/_close.scss +66 -0
  193. package/dist/assets/themes/bootstrap/scss/_containers.scss +41 -0
  194. package/dist/assets/themes/bootstrap/scss/_dropdown.scss +250 -0
  195. package/dist/assets/themes/bootstrap/scss/_forms.scss +9 -0
  196. package/dist/assets/themes/bootstrap/scss/_functions.scss +302 -0
  197. package/dist/assets/themes/bootstrap/scss/_grid.scss +39 -0
  198. package/dist/assets/themes/bootstrap/scss/_helpers.scss +12 -0
  199. package/dist/assets/themes/bootstrap/scss/_images.scss +42 -0
  200. package/dist/assets/themes/bootstrap/scss/_list-group.scss +199 -0
  201. package/dist/assets/themes/bootstrap/scss/_maps.scss +174 -0
  202. package/dist/assets/themes/bootstrap/scss/_mixins.scss +42 -0
  203. package/dist/assets/themes/bootstrap/scss/_modal.scss +240 -0
  204. package/dist/assets/themes/bootstrap/scss/_nav.scss +197 -0
  205. package/dist/assets/themes/bootstrap/scss/_navbar.scss +289 -0
  206. package/dist/assets/themes/bootstrap/scss/_offcanvas.scss +147 -0
  207. package/dist/assets/themes/bootstrap/scss/_pagination.scss +109 -0
  208. package/dist/assets/themes/bootstrap/scss/_placeholders.scss +51 -0
  209. package/dist/assets/themes/bootstrap/scss/_popover.scss +196 -0
  210. package/dist/assets/themes/bootstrap/scss/_progress.scss +68 -0
  211. package/dist/assets/themes/bootstrap/scss/_reboot.scss +611 -0
  212. package/dist/assets/themes/bootstrap/scss/_root.scss +187 -0
  213. package/dist/assets/themes/bootstrap/scss/_spinners.scss +85 -0
  214. package/dist/assets/themes/bootstrap/scss/_tables.scss +171 -0
  215. package/dist/assets/themes/bootstrap/scss/_toasts.scss +73 -0
  216. package/dist/assets/themes/bootstrap/scss/_tooltip.scss +119 -0
  217. package/dist/assets/themes/bootstrap/scss/_transitions.scss +27 -0
  218. package/dist/assets/themes/bootstrap/scss/_type.scss +106 -0
  219. package/dist/assets/themes/bootstrap/scss/_utilities.scss +806 -0
  220. package/dist/assets/themes/bootstrap/scss/_variables-dark.scss +102 -0
  221. package/dist/assets/themes/bootstrap/scss/_variables.scss +1753 -0
  222. package/dist/assets/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
  223. package/dist/assets/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
  224. package/dist/assets/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
  225. package/dist/assets/themes/bootstrap/scss/bootstrap.scss +52 -0
  226. package/dist/assets/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
  227. package/dist/assets/themes/bootstrap/scss/forms/_form-check.scss +189 -0
  228. package/dist/assets/themes/bootstrap/scss/forms/_form-control.scss +214 -0
  229. package/dist/assets/themes/bootstrap/scss/forms/_form-range.scss +91 -0
  230. package/dist/assets/themes/bootstrap/scss/forms/_form-select.scss +80 -0
  231. package/dist/assets/themes/bootstrap/scss/forms/_form-text.scss +11 -0
  232. package/dist/assets/themes/bootstrap/scss/forms/_input-group.scss +132 -0
  233. package/dist/assets/themes/bootstrap/scss/forms/_labels.scss +36 -0
  234. package/dist/assets/themes/bootstrap/scss/forms/_validation.scss +12 -0
  235. package/dist/assets/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
  236. package/dist/assets/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
  237. package/dist/assets/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
  238. package/dist/assets/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
  239. package/dist/assets/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
  240. package/dist/assets/themes/bootstrap/scss/helpers/_position.scss +36 -0
  241. package/dist/assets/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
  242. package/dist/assets/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
  243. package/dist/assets/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
  244. package/dist/assets/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
  245. package/dist/assets/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
  246. package/dist/assets/themes/bootstrap/scss/helpers/_vr.scss +8 -0
  247. package/dist/assets/themes/bootstrap/scss/mixins/_alert.scss +18 -0
  248. package/dist/assets/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
  249. package/dist/assets/themes/bootstrap/scss/mixins/_banner.scss +7 -0
  250. package/dist/assets/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
  251. package/dist/assets/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
  252. package/dist/assets/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
  253. package/dist/assets/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
  254. package/dist/assets/themes/bootstrap/scss/mixins/_caret.scss +69 -0
  255. package/dist/assets/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
  256. package/dist/assets/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
  257. package/dist/assets/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
  258. package/dist/assets/themes/bootstrap/scss/mixins/_container.scss +11 -0
  259. package/dist/assets/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
  260. package/dist/assets/themes/bootstrap/scss/mixins/_forms.scss +163 -0
  261. package/dist/assets/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
  262. package/dist/assets/themes/bootstrap/scss/mixins/_grid.scss +151 -0
  263. package/dist/assets/themes/bootstrap/scss/mixins/_image.scss +16 -0
  264. package/dist/assets/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
  265. package/dist/assets/themes/bootstrap/scss/mixins/_lists.scss +7 -0
  266. package/dist/assets/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
  267. package/dist/assets/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
  268. package/dist/assets/themes/bootstrap/scss/mixins/_resize.scss +6 -0
  269. package/dist/assets/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
  270. package/dist/assets/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
  271. package/dist/assets/themes/bootstrap/scss/mixins/_transition.scss +26 -0
  272. package/dist/assets/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
  273. package/dist/assets/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
  274. package/dist/assets/themes/bootstrap/scss/tests/jasmine.js +16 -0
  275. package/dist/assets/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
  276. package/dist/assets/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
  277. package/dist/assets/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
  278. package/dist/assets/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
  279. package/dist/assets/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
  280. package/dist/assets/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
  281. package/dist/assets/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
  282. package/dist/assets/themes/bootstrap/scss/utilities/_api.scss +47 -0
  283. package/dist/assets/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
  284. package/dist/assets/themes/classy/README.md +89 -0
  285. package/dist/assets/themes/classy/_config.scss +245 -0
  286. package/dist/assets/themes/classy/_theme.js +31 -0
  287. package/dist/assets/themes/classy/_theme.scss +57 -0
  288. package/dist/assets/themes/classy/css/app/_panels.scss +183 -0
  289. package/dist/assets/themes/classy/css/base/_fonts.scss +79 -0
  290. package/dist/assets/themes/classy/css/base/_no-raise.scss +49 -0
  291. package/dist/assets/themes/classy/css/base/_root.scss +113 -0
  292. package/dist/assets/themes/classy/css/base/_typography.scss +154 -0
  293. package/dist/assets/themes/classy/css/base/_utilities.scss +284 -0
  294. package/dist/assets/themes/classy/css/components/_alerts.scss +51 -0
  295. package/dist/assets/themes/classy/css/components/_badges.scss +46 -0
  296. package/dist/assets/themes/classy/css/components/_buttons.scss +175 -0
  297. package/dist/assets/themes/classy/css/components/_cards.scss +41 -0
  298. package/dist/assets/themes/classy/css/components/_dropdowns.scss +48 -0
  299. package/dist/assets/themes/classy/css/components/_forms.scss +171 -0
  300. package/dist/assets/themes/classy/css/components/_receipt.scss +45 -0
  301. package/dist/assets/themes/classy/css/layout/_footer.scss +298 -0
  302. package/dist/assets/themes/classy/css/layout/_general.scss +209 -0
  303. package/dist/assets/themes/classy/css/layout/_nav.scss +154 -0
  304. package/dist/assets/themes/classy/css/layout/_shell.scss +458 -0
  305. package/dist/assets/themes/classy/css/marketing/_bento.scss +238 -0
  306. package/dist/assets/themes/classy/css/marketing/_content.scss +1328 -0
  307. package/dist/assets/themes/classy/css/marketing/_downloads.scss +246 -0
  308. package/dist/assets/themes/classy/css/marketing/_hero.scss +311 -0
  309. package/dist/assets/themes/classy/css/marketing/_sections.scss +649 -0
  310. package/dist/assets/themes/classy/css/pages/404/index.scss +67 -0
  311. package/dist/assets/themes/classy/css/pages/_auth.scss +235 -0
  312. package/dist/assets/themes/classy/css/pages/admin/firebase/index.scss +22 -0
  313. package/dist/assets/themes/classy/css/pages/blog/[slug].scss +56 -0
  314. package/dist/assets/themes/classy/css/pages/cookies.scss +2 -0
  315. package/dist/assets/themes/classy/css/pages/dashboard/account/index.scss +31 -0
  316. package/dist/assets/themes/classy/css/pages/feedback/index.scss +39 -0
  317. package/dist/assets/themes/classy/css/pages/legal/_document.scss +192 -0
  318. package/dist/assets/themes/classy/css/pages/payment/checkout/index.scss +585 -0
  319. package/dist/assets/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
  320. package/dist/assets/themes/classy/css/pages/privacy.scss +2 -0
  321. package/dist/assets/themes/classy/css/pages/status/index.scss +164 -0
  322. package/dist/assets/themes/classy/css/pages/terms.scss +2 -0
  323. package/dist/assets/themes/classy/css/pages/updates/index.scss +128 -0
  324. package/dist/assets/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
  325. package/dist/assets/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
  326. package/dist/assets/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
  327. package/dist/assets/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
  328. package/dist/assets/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
  329. package/dist/assets/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
  330. package/dist/assets/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
  331. package/dist/assets/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
  332. package/dist/assets/themes/classy/js/hero-demo-form.js +56 -0
  333. package/dist/assets/themes/neobrutalism/README.md +118 -0
  334. package/dist/assets/themes/neobrutalism/_config.scss +139 -0
  335. package/dist/assets/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
  336. package/dist/assets/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
  337. package/dist/assets/themes/neobrutalism/_theme.js +24 -0
  338. package/dist/assets/themes/neobrutalism/_theme.scss +61 -0
  339. package/dist/assets/themes/neobrutalism/css/base/_mixins.scss +46 -0
  340. package/dist/assets/themes/neobrutalism/css/base/_root.scss +169 -0
  341. package/dist/assets/themes/neobrutalism/css/base/_typography.scss +61 -0
  342. package/dist/assets/themes/neobrutalism/css/base/_utilities.scss +89 -0
  343. package/dist/assets/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
  344. package/dist/assets/themes/neobrutalism/css/components/_buttons.scss +148 -0
  345. package/dist/assets/themes/neobrutalism/css/components/_cards.scss +47 -0
  346. package/dist/assets/themes/neobrutalism/css/components/_forms.scss +88 -0
  347. package/dist/assets/themes/neobrutalism/css/components/_marketing.scss +244 -0
  348. package/dist/assets/themes/neobrutalism/css/layout/_general.scss +213 -0
  349. package/dist/assets/themes/neobrutalism/css/layout/_navigation.scss +171 -0
  350. package/dist/assets/themes/neobrutalism/css/pages/index.scss +203 -0
  351. package/dist/assets/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
  352. package/dist/assets/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
  353. package/dist/assets/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
  354. package/dist/assets/themes/newsflash/README.md +117 -0
  355. package/dist/assets/themes/newsflash/_components/heading/lede/component.html +14 -0
  356. package/dist/assets/themes/newsflash/_components/heading/lede/component.json5 +23 -0
  357. package/dist/assets/themes/newsflash/_components/heading/rule-head/component.html +17 -0
  358. package/dist/assets/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
  359. package/dist/assets/themes/newsflash/_components/news/byline/component.html +12 -0
  360. package/dist/assets/themes/newsflash/_components/news/byline/component.json5 +18 -0
  361. package/dist/assets/themes/newsflash/_components/news/story-card/component.html +25 -0
  362. package/dist/assets/themes/newsflash/_components/news/story-card/component.json5 +21 -0
  363. package/dist/assets/themes/newsflash/_config.scss +147 -0
  364. package/dist/assets/themes/newsflash/_layouts/frontend/core/base.html +51 -0
  365. package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
  366. package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
  367. package/dist/assets/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
  368. package/dist/assets/themes/newsflash/_sections/marketing/desks/section.html +39 -0
  369. package/dist/assets/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
  370. package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
  371. package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
  372. package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
  373. package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
  374. package/dist/assets/themes/newsflash/_theme.js +24 -0
  375. package/dist/assets/themes/newsflash/_theme.scss +70 -0
  376. package/dist/assets/themes/newsflash/css/base/_fonts.scss +80 -0
  377. package/dist/assets/themes/newsflash/css/base/_mixins.scss +51 -0
  378. package/dist/assets/themes/newsflash/css/base/_root.scss +257 -0
  379. package/dist/assets/themes/newsflash/css/base/_typography.scss +49 -0
  380. package/dist/assets/themes/newsflash/css/base/_utilities.scss +122 -0
  381. package/dist/assets/themes/newsflash/css/components/_badges.scss +65 -0
  382. package/dist/assets/themes/newsflash/css/components/_billing-toggle.scss +61 -0
  383. package/dist/assets/themes/newsflash/css/components/_buttons.scss +139 -0
  384. package/dist/assets/themes/newsflash/css/components/_cards.scss +47 -0
  385. package/dist/assets/themes/newsflash/css/components/_editorial.scss +173 -0
  386. package/dist/assets/themes/newsflash/css/components/_forms.scss +75 -0
  387. package/dist/assets/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
  388. package/dist/assets/themes/newsflash/css/components/_panels.scss +156 -0
  389. package/dist/assets/themes/newsflash/css/components/_ticker.scss +67 -0
  390. package/dist/assets/themes/newsflash/css/layout/_general.scss +330 -0
  391. package/dist/assets/themes/newsflash/css/layout/_navigation.scss +168 -0
  392. package/dist/assets/themes/newsflash/css/pages/404/index.scss +79 -0
  393. package/dist/assets/themes/newsflash/css/pages/blog/[slug].scss +186 -0
  394. package/dist/assets/themes/newsflash/css/pages/blog/index.scss +17 -0
  395. package/dist/assets/themes/newsflash/css/pages/index.scss +157 -0
  396. package/dist/assets/themes/newsflash/css/pages/pricing/index.scss +55 -0
  397. package/dist/assets/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
  398. package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
  399. package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
  400. package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
  401. package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
  402. package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
  403. package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
  404. package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
  405. package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
  406. package/dist/assets/themes/newsflash/js/pages/blog/[slug].js +29 -0
  407. package/dist/assets/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
  408. package/dist/background.js +684 -0
  409. package/dist/build.js +268 -0
  410. package/dist/cli-run.js +25 -0
  411. package/dist/cli.js +30 -0
  412. package/dist/commands/build.js +67 -0
  413. package/dist/commands/clean.js +29 -0
  414. package/dist/commands/deploy.js +97 -0
  415. package/dist/commands/install.js +58 -0
  416. package/dist/commands/lib/dependencies.js +33 -0
  417. package/dist/commands/lib/deploy-precheck.js +57 -0
  418. package/dist/commands/lib/ensure-target.js +151 -0
  419. package/dist/commands/lib/push-secrets.js +60 -0
  420. package/dist/commands/migrate.js +77 -0
  421. package/dist/commands/test.js +110 -0
  422. package/dist/commands/update.js +21 -0
  423. package/dist/commands/version.js +12 -0
  424. package/dist/config/manifest.json +117 -0
  425. package/dist/config/page-template.html +21 -0
  426. package/dist/content.js +37 -0
  427. package/dist/defaults/.github/workflows/publish.yml +86 -0
  428. package/dist/defaults/.nvmrc +1 -0
  429. package/dist/defaults/.vscode/settings.json +8 -0
  430. package/dist/defaults/AGENTS.md +113 -0
  431. package/dist/defaults/CHANGELOG.md +15 -0
  432. package/dist/defaults/CLAUDE.md +1 -0
  433. package/dist/defaults/_.gitignore +75 -0
  434. package/dist/defaults/config/description.md +46 -0
  435. package/dist/defaults/config/messages.json +20 -0
  436. package/dist/defaults/config/omega.json5 +64 -0
  437. package/dist/defaults/docs/README.md +17 -0
  438. package/dist/defaults/gulpfile.js +6 -0
  439. package/dist/defaults/hooks/build/post.js +8 -0
  440. package/dist/defaults/hooks/build/pre.js +8 -0
  441. package/dist/defaults/src/assets/css/bundles/.gitkeep +0 -0
  442. package/dist/defaults/src/assets/css/components/content/index.scss +11 -0
  443. package/dist/defaults/src/assets/css/components/offscreen/index.scss +4 -0
  444. package/dist/defaults/src/assets/css/components/options/index.scss +14 -0
  445. package/dist/defaults/src/assets/css/components/pages/index.scss +10 -0
  446. package/dist/defaults/src/assets/css/components/popup/index.scss +10 -0
  447. package/dist/defaults/src/assets/css/components/sidepanel/index.scss +6 -0
  448. package/dist/defaults/src/assets/css/main.scss +32 -0
  449. package/dist/defaults/src/assets/images/.gitkeep +0 -0
  450. package/dist/defaults/src/assets/js/components/background/index.js +25 -0
  451. package/dist/defaults/src/assets/js/components/content/index.js +22 -0
  452. package/dist/defaults/src/assets/js/components/offscreen/index.js +25 -0
  453. package/dist/defaults/src/assets/js/components/options/index.js +22 -0
  454. package/dist/defaults/src/assets/js/components/pages/index.js +22 -0
  455. package/dist/defaults/src/assets/js/components/popup/index.js +22 -0
  456. package/dist/defaults/src/assets/js/components/sidepanel/index.js +20 -0
  457. package/dist/defaults/src/assets/vendor/.gitkeep +0 -0
  458. package/dist/defaults/src/manifest.json +131 -0
  459. package/dist/defaults/src/views/offscreen/index.html +3 -0
  460. package/dist/defaults/src/views/options/index.html +8 -0
  461. package/dist/defaults/src/views/pages/index.html +10 -0
  462. package/dist/defaults/src/views/popup/index.html +4 -0
  463. package/dist/defaults/src/views/sidepanel/index.html +4 -0
  464. package/dist/defaults/test/README.md +41 -0
  465. package/dist/defaults/test/_init.js +10 -0
  466. package/dist/defaults/test/boot/externally-connectable.test.js +28 -0
  467. package/dist/gulp/config/locales.js +12 -0
  468. package/dist/gulp/main.js +78 -0
  469. package/dist/gulp/tasks/_.js +18 -0
  470. package/dist/gulp/tasks/audit.js +222 -0
  471. package/dist/gulp/tasks/bundle.js +687 -0
  472. package/dist/gulp/tasks/defaults.js +281 -0
  473. package/dist/gulp/tasks/distribute.js +172 -0
  474. package/dist/gulp/tasks/fontawesome.js +25 -0
  475. package/dist/gulp/tasks/html.js +163 -0
  476. package/dist/gulp/tasks/icons.js +126 -0
  477. package/dist/gulp/tasks/package.js +742 -0
  478. package/dist/gulp/tasks/publish.js +417 -0
  479. package/dist/gulp/tasks/sass.js +252 -0
  480. package/dist/gulp/tasks/serve.js +103 -0
  481. package/dist/gulp/tasks/translate.js +252 -0
  482. package/dist/gulp/tasks/utils/build-json.js +43 -0
  483. package/dist/gulp/tasks/utils/template-transform.js +50 -0
  484. package/dist/gulp/templates/BUILD_INSTRUCTIONS.md +69 -0
  485. package/dist/index.js +46 -0
  486. package/dist/lib/affiliatizer.js +224 -0
  487. package/dist/lib/analytics.js +26 -0
  488. package/dist/lib/auth-helpers.js +213 -0
  489. package/dist/lib/extension.js +116 -0
  490. package/dist/lib/icons.js +36 -0
  491. package/dist/lib/logger-lite.js +35 -0
  492. package/dist/lib/logger.js +4 -0
  493. package/dist/lib/messaging.js +48 -0
  494. package/dist/lib/safe-install.js +4 -0
  495. package/dist/lib/theme.js +73 -0
  496. package/dist/lib/verts.js +68 -0
  497. package/dist/offscreen.js +31 -0
  498. package/dist/omega-bin.js +6 -0
  499. package/dist/options.js +80 -0
  500. package/dist/page.js +80 -0
  501. package/dist/popup.js +80 -0
  502. package/dist/sidepanel.js +80 -0
  503. package/dist/test/assert.js +4 -0
  504. package/dist/test/fixtures/consumer-extension/dist/background.js +23 -0
  505. package/dist/test/fixtures/consumer-extension/dist/manifest.json +20 -0
  506. package/dist/test/fixtures/consumer-extension/dist/options.html +10 -0
  507. package/dist/test/fixtures/consumer-extension/dist/popup.bundle.js +5 -0
  508. package/dist/test/fixtures/consumer-extension/dist/popup.html +12 -0
  509. package/dist/test/harness/extension/background.js +26 -0
  510. package/dist/test/harness/extension/manifest.json +27 -0
  511. package/dist/test/harness/extension/options.html +12 -0
  512. package/dist/test/harness/extension/popup.html +12 -0
  513. package/dist/test/harness/extension/sidepanel.html +12 -0
  514. package/dist/test/index.js +63 -0
  515. package/dist/test/runner.js +99 -0
  516. package/dist/test/runners/boot.js +221 -0
  517. package/dist/test/runners/chromium.js +391 -0
  518. package/dist/test/runners/helpers.js +24 -0
  519. package/dist/test/suites/background/messaging.test.js +44 -0
  520. package/dist/test/suites/background/storage.test.js +46 -0
  521. package/dist/test/suites/background/sw-context.test.js +49 -0
  522. package/dist/test/suites/boot/build-json-bake.test.js +80 -0
  523. package/dist/test/suites/boot/extension-loads.test.js +58 -0
  524. package/dist/test/suites/build/affiliatizer.test.js +64 -0
  525. package/dist/test/suites/build/app-launch.test.js +65 -0
  526. package/dist/test/suites/build/attach-log-file.test.js +99 -0
  527. package/dist/test/suites/build/auth-emulator-gate.test.js +118 -0
  528. package/dist/test/suites/build/auth-triggers.test.js +71 -0
  529. package/dist/test/suites/build/boot-discovery.test.js +134 -0
  530. package/dist/test/suites/build/boot-timeout.test.js +92 -0
  531. package/dist/test/suites/build/build-error-notification.test.js +122 -0
  532. package/dist/test/suites/build/build-json-bake.test.js +302 -0
  533. package/dist/test/suites/build/build-verb.test.js +138 -0
  534. package/dist/test/suites/build/bundle-targets.test.js +66 -0
  535. package/dist/test/suites/build/cache-warming.test.js +44 -0
  536. package/dist/test/suites/build/cli.test.js +150 -0
  537. package/dist/test/suites/build/default-boot-test.test.js +100 -0
  538. package/dist/test/suites/build/defaults-scaffold.test.js +287 -0
  539. package/dist/test/suites/build/deploy-dispatch.test.js +76 -0
  540. package/dist/test/suites/build/distribute-task.test.js +111 -0
  541. package/dist/test/suites/build/ensure-target.test.js +141 -0
  542. package/dist/test/suites/build/env-delivery.test.js +239 -0
  543. package/dist/test/suites/build/env-watch.test.js +86 -0
  544. package/dist/test/suites/build/expect.test.js +48 -0
  545. package/dist/test/suites/build/exports.test.js +53 -0
  546. package/dist/test/suites/build/extension-fallback.test.js +82 -0
  547. package/dist/test/suites/build/framework-deps.test.js +176 -0
  548. package/dist/test/suites/build/global-handlers.test.js +70 -0
  549. package/dist/test/suites/build/icon-sheet.test.js +74 -0
  550. package/dist/test/suites/build/logger-lite.test.js +61 -0
  551. package/dist/test/suites/build/manager.test.js +249 -0
  552. package/dist/test/suites/build/mode-helpers.test.js +136 -0
  553. package/dist/test/suites/build/omega-shell.test.js +103 -0
  554. package/dist/test/suites/build/omega-tokens.test.js +76 -0
  555. package/dist/test/suites/build/package-task.test.js +831 -0
  556. package/dist/test/suites/build/setup-scripts.test.js +172 -0
  557. package/dist/test/suites/build/strip-dev-blocks.test.js +122 -0
  558. package/dist/test/suites/build/template-replace.test.js +116 -0
  559. package/dist/test/suites/build/test-discovery.test.js +64 -0
  560. package/dist/test/suites/build/test-target-no-match.test.js +119 -0
  561. package/dist/test/suites/build/theme-resolve.test.js +115 -0
  562. package/dist/test/suites/build/translate.test.js +85 -0
  563. package/dist/test/suites/build/url-helpers.test.js +119 -0
  564. package/dist/test/suites/build/verb-logs.test.js +43 -0
  565. package/dist/test/suites/build/verts-binding.test.js +67 -0
  566. package/dist/test/suites/build/wakeup-ping.test.js +90 -0
  567. package/dist/test/suites/build/wave5-messenger.test.js +80 -0
  568. package/dist/test/suites/view/options-and-sidepanel.test.js +16 -0
  569. package/dist/test/suites/view/popup-context.test.js +53 -0
  570. package/dist/test/suites/view/sidepanel.test.js +16 -0
  571. package/dist/test/utils/extended-mode-warning.js +13 -0
  572. package/dist/utils/attach-log-file.js +4 -0
  573. package/dist/utils/mode-helpers.js +117 -0
  574. package/dist/utils/url-helpers.js +69 -0
  575. package/dist/vendor/account/engine.js +182 -0
  576. package/dist/vendor/account/features.js +220 -0
  577. package/dist/vendor/account/index.js +53 -0
  578. package/dist/vendor/account/schema.js +272 -0
  579. package/dist/vendor/account/subscription.js +38 -0
  580. package/dist/vendor/config/company.js +31 -0
  581. package/dist/vendor/config/defaults.js +173 -0
  582. package/dist/vendor/config/demo.js +18 -0
  583. package/dist/vendor/config/desktop-artifacts.js +110 -0
  584. package/dist/vendor/config/edit.js +769 -0
  585. package/dist/vendor/config/env-delivery.js +145 -0
  586. package/dist/vendor/config/env-rules.js +93 -0
  587. package/dist/vendor/config/env-schema.js +1078 -0
  588. package/dist/vendor/config/env.js +445 -0
  589. package/dist/vendor/config/hooks.js +97 -0
  590. package/dist/vendor/config/index.js +237 -0
  591. package/dist/vendor/config/instances.js +208 -0
  592. package/dist/vendor/config/load.js +490 -0
  593. package/dist/vendor/config/merge.js +68 -0
  594. package/dist/vendor/config/order.js +139 -0
  595. package/dist/vendor/config/ports.js +374 -0
  596. package/dist/vendor/config/providers.js +32 -0
  597. package/dist/vendor/config/repo.js +142 -0
  598. package/dist/vendor/config/retired-keys.js +430 -0
  599. package/dist/vendor/config/schema.js +1610 -0
  600. package/dist/vendor/config/secrets.js +50 -0
  601. package/dist/vendor/config/seed.js +34 -0
  602. package/dist/vendor/config/site-global.js +205 -0
  603. package/dist/vendor/config/validate.js +554 -0
  604. package/dist/vendor/config/winback.js +61 -0
  605. package/dist/vendor/devkit/actions-secrets.js +145 -0
  606. package/dist/vendor/devkit/attach-log-file.js +262 -0
  607. package/dist/vendor/devkit/bundle.js +292 -0
  608. package/dist/vendor/devkit/ci-workflows.js +520 -0
  609. package/dist/vendor/devkit/clean-dirs.js +28 -0
  610. package/dist/vendor/devkit/cli-router.js +156 -0
  611. package/dist/vendor/devkit/defaults-engine.js +372 -0
  612. package/dist/vendor/devkit/deploy-precheck.js +54 -0
  613. package/dist/vendor/devkit/deploy-record.js +180 -0
  614. package/dist/vendor/devkit/deploy.js +286 -0
  615. package/dist/vendor/devkit/empty-modules-plugin.js +64 -0
  616. package/dist/vendor/devkit/env-watch.js +132 -0
  617. package/dist/vendor/devkit/framework-deps.js +46 -0
  618. package/dist/vendor/devkit/icons.js +178 -0
  619. package/dist/vendor/devkit/license.js +155 -0
  620. package/dist/vendor/devkit/local.js +1905 -0
  621. package/dist/vendor/devkit/logger.js +128 -0
  622. package/dist/vendor/devkit/merge-line-files.js +296 -0
  623. package/dist/vendor/devkit/npm-registry.js +52 -0
  624. package/dist/vendor/devkit/omega-bin.js +345 -0
  625. package/dist/vendor/devkit/safe-install.js +18 -0
  626. package/dist/vendor/devkit/scaffold-guard.js +96 -0
  627. package/dist/vendor/devkit/strip-dev-blocks-plugin.js +29 -0
  628. package/dist/vendor/devkit/strip-dev-blocks.js +32 -0
  629. package/dist/vendor/devkit/target-dependencies.js +137 -0
  630. package/dist/vendor/devkit/target-secrets.js +165 -0
  631. package/dist/vendor/devkit/test/assert.js +120 -0
  632. package/dist/vendor/devkit/test/define-cases.js +104 -0
  633. package/dist/vendor/devkit/test/extended-mode-warning.js +22 -0
  634. package/dist/vendor/devkit/test/runner-core.js +554 -0
  635. package/dist/vendor/devkit/test/scope.js +162 -0
  636. package/dist/vendor/devkit/translate/cache.js +84 -0
  637. package/dist/vendor/devkit/translate/engine.js +243 -0
  638. package/dist/vendor/devkit/translate/index.js +49 -0
  639. package/dist/vendor/devkit/translate/languages.js +134 -0
  640. package/dist/vendor/devkit/translate/providers.js +188 -0
  641. package/dist/vendor/devkit/update.js +569 -0
  642. package/docs/affiliatizer.md +81 -0
  643. package/docs/audit.md +67 -0
  644. package/docs/auth.md +149 -0
  645. package/docs/build-system.md +176 -0
  646. package/docs/cdp-debugging.md +42 -0
  647. package/docs/cli.md +73 -0
  648. package/docs/common-mistakes.md +10 -0
  649. package/docs/components.md +87 -0
  650. package/docs/css.md +133 -0
  651. package/docs/defaults.md +72 -0
  652. package/docs/environment-detection.md +79 -0
  653. package/docs/extension.md +93 -0
  654. package/docs/hooks.md +111 -0
  655. package/docs/icons.md +47 -0
  656. package/docs/index.md +291 -0
  657. package/docs/logging.md +33 -0
  658. package/docs/managers.md +100 -0
  659. package/docs/offscreen.md +57 -0
  660. package/docs/publishing.md +182 -0
  661. package/docs/shared/agent-docs.md +89 -0
  662. package/docs/shared/analytics.md +612 -0
  663. package/docs/shared/brands.md +51 -0
  664. package/docs/shared/breaking-changes.md +497 -0
  665. package/docs/shared/config.md +1387 -0
  666. package/docs/shared/deploys.md +215 -0
  667. package/docs/shared/icons.md +201 -0
  668. package/docs/shared/local-dev.md +147 -0
  669. package/docs/shared/logging.md +202 -0
  670. package/docs/shared/monitoring.md +153 -0
  671. package/docs/shared/publishing.md +183 -0
  672. package/docs/shared/rulings.md +34 -0
  673. package/docs/shared/testing.md +147 -0
  674. package/docs/shared/theming.md +604 -0
  675. package/docs/shared/translation.md +291 -0
  676. package/docs/shared/updates.md +61 -0
  677. package/docs/templating.md +66 -0
  678. package/docs/test-boot-layer.md +143 -0
  679. package/docs/test-framework.md +411 -0
  680. package/docs/themes.md +89 -0
  681. package/docs/translations.md +73 -0
  682. package/docs/verts.md +67 -0
  683. package/docs/xss-prevention.md +95 -0
  684. package/package.json +159 -0
@@ -0,0 +1,345 @@
1
+ /**
2
+ * omega-bin — the context-aware dispatcher behind every framework's `omega`/`omg` bin.
3
+ *
4
+ * Problem: every OMEGA framework ships the same bin names (`omega`, `omg`, `mgr`).
5
+ * In a brand monorepo with several targets, npm hoists all of them to the brand root
6
+ * and only ONE framework's file wins the node_modules/.bin link — so the bin that
7
+ * actually runs is arbitrary. This module makes any winner correct: it resolves
8
+ * the context that owns the CALLER'S cwd — nearest first, walking up — and runs
9
+ * THAT context's CLI:
10
+ *
11
+ * - an OMEGA PACKAGE'S OWN ROOT (package.json `name` is `@omega.js/*`) →
12
+ * that package's own CLI, or a refusal when it ships none. Checked FIRST,
13
+ * ahead of the dependency rule: a framework devDepends on other frameworks
14
+ * (extension and desktop on @omega.js/web for vendorAssets, the manager on
15
+ * @omega.js/backend), and reading those as a target made `omega test` in
16
+ * packages/extension run WEB's CLI, which scaffolded a web target into the
17
+ * package ([#757](https://github.com/Omega-JS-Stack/omega/issues/757))
18
+ * - a TARGET (nearest package.json declaring a framework, including the
19
+ * backend's functions/ layout) → that framework's CLI
20
+ * - a BRAND ROOT (config/omega.json5 with no framework declared nearer)
21
+ * → @omega.js/manager's CLI, so `omega test` at a brand root fans out
22
+ * over the brand's targets instead of guessing one framework
23
+ *
24
+ * Contract: every dispatch target exposes `exports['./cli']` → a module with
25
+ * `run()` that parses process.argv itself. Framework bin shims call
26
+ * `run({ hostName, hostRun })` — hostRun executes the host's own CLI via a
27
+ * RELATIVE require (vendor-safe), so the host never resolves itself by name.
28
+ *
29
+ * This module stays stdlib-only (fs/path/module): it is vendored into every
30
+ * framework dist and must never assume another package is installed.
31
+ */
32
+
33
+ const fs = require('fs');
34
+ const path = require('path');
35
+ const { createRequire } = require('module');
36
+
37
+ const FRAMEWORKS = [
38
+ '@omega.js/web',
39
+ '@omega.js/backend',
40
+ '@omega.js/desktop',
41
+ '@omega.js/extension',
42
+ ];
43
+
44
+ const MANAGER = '@omega.js/manager';
45
+
46
+ // Every package in the OMEGA monorepo carries this name prefix; no consumer
47
+ // target ever does. A manifest with it IS the package, never a project built
48
+ // on top of one (#757).
49
+ const OMEGA_SCOPE = '@omega.js/';
50
+
51
+ // Dirs that are a VIEW of the target one level up, never a context of their own:
52
+ // a backend's runtime cwd (functions/) and its staged build output (dist/,
53
+ // which carries a COMPOSED config/omega.json5 that would otherwise read as a
54
+ // brand root). Stdlib twin of @omega.js/config's TARGET_SUBDIRS — that module is
55
+ // the canonical list ([#307](https://github.com/Omega-JS-Stack/omega/issues/307)).
56
+ const TARGET_SUBDIRS = ['functions', 'dist'];
57
+
58
+ // The only verbs allowed to run with NO target context. The fallback exists for
59
+ // the bootstrap case (`npx omega onboard` in a fresh clone, #276) and for verbs
60
+ // that only READ; every other verb runs its target scaffold first (#675), so a
61
+ // run in a directory that owns no target WRITES one there — that is how a stray
62
+ // `omega deploy` at a workspace root scaffolded a whole desktop target into it
63
+ // ([#699](https://github.com/Omega-JS-Stack/omega/issues/699)).
64
+ //
65
+ // Tokens, not command names: a flag-style alias (`omega --deploy`, `omega -v`)
66
+ // selects a verb too, so every spelling of an allowed verb is listed —
67
+ // onboard/help/version across the router frameworks and the manager, plus
68
+ // backend's `cwd` and desktop's `logs`, the two read-only reporters.
69
+ const CONTEXTLESS_VERBS = new Set([
70
+ 'onboard', 'create', 'new', '-o', '--onboard',
71
+ 'help', 'h', '-h', '--help',
72
+ 'version', 'v', '-v', '--version',
73
+ 'cwd',
74
+ 'logs', 'log', '--logs', 'logs:read', 'logs:tail', 'logs:stream',
75
+ ]);
76
+
77
+ // The signing box's verbs. A box that hosts the Windows EV signing runner is a
78
+ // MACHINE, not a project: `omega runner` and `omega sign-windows` read their
79
+ // configuration from the runner home and run from any directory. Both belong
80
+ // to @omega.js/desktop, so with no target they go to desktop's CLI — the host
81
+ // when desktop won the bin link (a bare `npm i -g @omega.js/desktop`), else
82
+ // desktop resolved from the cwd (a monorepo checkout, a brand root) — and
83
+ // refuse naming the install when it is nowhere. They scaffold nothing
84
+ // ([#337](https://github.com/Omega-JS-Stack/omega/issues/337)).
85
+ const BOX_VERBS = new Set(['runner', 'sign-windows']);
86
+ const DESKTOP = '@omega.js/desktop';
87
+
88
+ /**
89
+ * The signing-box verb this invocation selects, or null. The ONE reading of
90
+ * "is this the box's", shared by the dispatcher below and by
91
+ * @omega.js/desktop's CLI (which skips the project `.env` cascade for exactly
92
+ * these) — two readings would drift, and the drift is a brand's token reaching
93
+ * the box.
94
+ *
95
+ * Both spellings count: the bare token (`omega runner status`) and the `--`
96
+ * flag desktop's alias table takes (`omega --runner`, `omega --sign-windows
97
+ * --smoke`). `--help` is never one: it prints help, in every spelling. A box
98
+ * verb sitting in an ARGUMENT position is not one either — `omega test runner`
99
+ * runs the test verb — so the first positional has to be the box verb itself.
100
+ *
101
+ * @param {string[]} argv - Arguments after the bin name.
102
+ * @returns {string|null} The box verb's canonical name, or null.
103
+ */
104
+ function boxVerbOf(argv) {
105
+ argv = argv || [];
106
+ if (argv.includes('--help') || argv.includes('-h')) return null;
107
+
108
+ const positional = argv.find((arg) => !arg.startsWith('-'));
109
+ if (positional && BOX_VERBS.has(positional)) return positional;
110
+
111
+ const flag = argv.find((arg) => arg.startsWith('--') && BOX_VERBS.has(arg.slice(2)));
112
+ return flag ? flag.slice(2) : null;
113
+ }
114
+
115
+ /**
116
+ * Boolean half of boxVerbOf — what callers that only need the yes/no ask.
117
+ *
118
+ * @param {string[]} argv - Arguments after the bin name.
119
+ * @returns {boolean}
120
+ */
121
+ function isBoxVerbArgv(argv) {
122
+ return boxVerbOf(argv) !== null;
123
+ }
124
+
125
+ function readPackage(dir) {
126
+ try {
127
+ return JSON.parse(fs.readFileSync(path.join(dir, 'package.json'), 'utf8'));
128
+ } catch (e) {
129
+ return null;
130
+ }
131
+ }
132
+
133
+ function frameworksOf(pkg) {
134
+ if (!pkg) return [];
135
+ const declared = Object.assign({}, pkg.dependencies || {}, pkg.devDependencies || {});
136
+ return FRAMEWORKS.filter((name) => declared[name]);
137
+ }
138
+
139
+ /**
140
+ * Is `dir` a brand-monorepo root? Carries a config/omega.json5 that is not
141
+ * itself a TARGET_SUBDIR view (functions/, dist/) and not a TARGET of a brand above
142
+ * it (directly under a targets/ dir whose parent also carries a brand config).
143
+ * Stdlib twin of @omega.js/config's resolveBrandRoot rule — that module is the
144
+ * canonical definition; this copy exists because the dispatcher cannot depend
145
+ * on @omega.js/config.
146
+ */
147
+ function isBrandRoot(dir) {
148
+ if (TARGET_SUBDIRS.includes(path.basename(path.resolve(dir)))) return false;
149
+ if (!fs.existsSync(path.join(dir, 'config', 'omega.json5'))) return false;
150
+
151
+ const parent = path.dirname(dir);
152
+ const isTargetOfBrand = path.basename(parent) === 'targets'
153
+ && fs.existsSync(path.join(path.dirname(parent), 'config', 'omega.json5'));
154
+
155
+ return !isTargetOfBrand;
156
+ }
157
+
158
+ /**
159
+ * Walk up from startDir to the nearest dispatch context. At each level, in
160
+ * order: the dir's own package.json being an OMEGA package, then declaring a
161
+ * framework, then brand-root-ness. IDENTITY beats dependency — a framework
162
+ * devDepends on other frameworks, and reading those as a target dispatched a
163
+ * framework's own root to a sibling framework's CLI (#757). Framework checks
164
+ * then come before the brand check so a standalone consumer (framework dep AND
165
+ * its own config/omega.json5 in one dir) dispatches as a target, not a brand.
166
+ * The CLI entry normalizes a functions/ cwd up to the target root
167
+ * (muscle-memory `cd functions` still works).
168
+ *
169
+ * The walk is BOUNDED at the nearest `.git` (that directory is still checked
170
+ * first): past the repo boundary is somebody else's tree, never this dir's
171
+ * dispatch context. Same bound as @omega.js/config's resolveBrandRoot and the
172
+ * Claude plugin's inject hook.
173
+ *
174
+ * @returns {{ kind: 'self', name: string, dir: string }
175
+ * | { kind: 'framework', name: string, dir: string }
176
+ * | { kind: 'brand', dir: string } | null} dir = the package's own root
177
+ * (self) / where the framework dep is declared (framework) / the brand root
178
+ * (brand)
179
+ */
180
+ function findTarget(startDir) {
181
+ let dir = path.resolve(startDir);
182
+ while (true) {
183
+ const pkg = readPackage(dir);
184
+
185
+ if (pkg && typeof pkg.name === 'string' && pkg.name.startsWith(OMEGA_SCOPE)) {
186
+ return { kind: 'self', name: pkg.name, dir };
187
+ }
188
+
189
+ const matches = frameworksOf(pkg);
190
+ if (matches.length > 1) {
191
+ // Targets are one-framework-per-target by design — a multi-framework
192
+ // manifest dispatches by FRAMEWORKS order, which must never be silent.
193
+ console.error(`omega: ${dir} declares ${matches.length} frameworks (${matches.join(', ')}) — dispatching ${matches[0]}`);
194
+ }
195
+ const own = matches[0] || null;
196
+ if (own) return { kind: 'framework', name: own, dir };
197
+
198
+ if (isBrandRoot(dir)) {
199
+ return { kind: 'brand', dir };
200
+ }
201
+
202
+ // Repo boundary — stop here rather than statting out through the host
203
+ // filesystem to /.
204
+ if (fs.existsSync(path.join(dir, '.git'))) return null;
205
+
206
+ const parent = path.dirname(dir);
207
+ if (parent === dir) return null;
208
+ dir = parent;
209
+ }
210
+ }
211
+
212
+ /**
213
+ * Resolve a dispatch target's ./cli from where it is declared.
214
+ * @returns {{ cliPath: string } | { error: Error }} — callers decide whether an
215
+ * unresolvable target is fatal (cross-framework) or falls back (brand).
216
+ */
217
+ function tryResolveCli(name, fromDir) {
218
+ const req = createRequire(path.join(fromDir, 'package.json'));
219
+ try {
220
+ return { cliPath: req.resolve(`${name}/cli`) };
221
+ } catch (e) {
222
+ return { error: e };
223
+ }
224
+ }
225
+
226
+ /** Resolve a dispatch target's ./cli from where it is declared, with a clear failure. */
227
+ function resolveCli(name, fromDir, hint) {
228
+ const { cliPath, error } = tryResolveCli(name, fromDir);
229
+ if (error) {
230
+ console.error(`omega: found ${name} context (${fromDir}) but could not resolve '${name}/cli': ${error.message}`);
231
+ console.error(hint);
232
+ process.exit(1);
233
+ }
234
+ return cliPath;
235
+ }
236
+
237
+ /**
238
+ * The verb an invocation resolves to, as far as the dispatcher can see it: the
239
+ * frameworks' own resolution rules minus their per-framework alias tables.
240
+ * `--help`/`-h` wins outright (cli-router routes it ahead of positionals, so
241
+ * `omega deploy --help` prints help), then the first positional token, then the
242
+ * first flag-style alias. A bare `omega` has no verb — every CLI defaults to help.
243
+ *
244
+ * @param {string[]} argv - Arguments after the bin name.
245
+ * @returns {string|null} The selecting token, or null for a bare invocation.
246
+ */
247
+ function verbOf(argv) {
248
+ if (argv.includes('--help') || argv.includes('-h')) return 'help';
249
+ return argv.find((arg) => !arg.startsWith('-')) || argv[0] || null;
250
+ }
251
+
252
+ async function run({ hostName, hostRun, argv = process.argv.slice(2) }) {
253
+ const target = findTarget(process.cwd());
254
+
255
+ // No context — the bootstrap case (a verb run in a fresh directory has
256
+ // no framework dep yet, by definition). Run the HOST framework's CLI, exactly
257
+ // like the pre-dispatcher bins did, and say which one so a hoist-winner at a
258
+ // brand root is never a silent mystery.
259
+ if (!target) {
260
+ // …but ONLY for a verb that cannot write. The fallback hands a mutating verb
261
+ // to whichever framework won npm's bin link, and that verb scaffolds its own
262
+ // target into the cwd — a directory that owns no target is never where that
263
+ // should land (#699). Twin of ensure-target's refusal (devkit scaffold-guard.js).
264
+ const verb = verbOf(argv);
265
+ const boxVerb = boxVerbOf(argv);
266
+ if (boxVerb) {
267
+ if (hostName === DESKTOP) return hostRun();
268
+ const { cliPath } = tryResolveCli(DESKTOP, process.cwd());
269
+ if (!cliPath) {
270
+ console.error(`omega: "${boxVerb}" is ${DESKTOP}'s — a signing box runs it from any directory, but ${DESKTOP} is not installed here (from ${process.cwd()}). \`npm i -g ${DESKTOP}\`, then run it again.`);
271
+ process.exit(1);
272
+ }
273
+ console.error(`omega: no target context found from ${process.cwd()} — "${boxVerb}" is a signing-box verb, running ${DESKTOP}`);
274
+ return require(cliPath).run();
275
+ }
276
+ if (verb && !CONTEXTLESS_VERBS.has(verb)) {
277
+ console.error(`omega: refusing to run "${verb}" — ${process.cwd()} is not inside an OMEGA target (no framework dependency and no config/omega.json5 above it). Nothing was scaffolded.`);
278
+ console.error('Run it from a target directory, or `npx omega onboard` to create one here. Without a target, only onboard (create, new), help, version, cwd and logs run; the signing box\'s runner and sign-windows run through @omega.js/desktop.');
279
+ process.exit(1);
280
+ }
281
+
282
+ console.error(`omega: no target context found from ${process.cwd()} — running ${hostName}`);
283
+ return hostRun();
284
+ }
285
+
286
+ // An OMEGA package's OWN root — run ITS CLI, so `omega test` in
287
+ // packages/extension runs the extension's self-test. A package is never a
288
+ // target: nothing here may reach the host fallback, whose ensure-target would
289
+ // scaffold a consumer project into the framework source tree (#757).
290
+ if (target.kind === 'self') {
291
+ if (target.name === hostName) return hostRun();
292
+
293
+ const { cliPath, error } = tryResolveCli(target.name, target.dir);
294
+ if (!cliPath) {
295
+ // Two different facts share one refusal: a package that exports no
296
+ // `./cli` at all (config, devkit, ...) versus one that declares it but
297
+ // cannot resolve it right now (an unbuilt dist, a fresh clone before
298
+ // `npm install`). Name the one that applies.
299
+ const reason = error && error.code === 'ERR_PACKAGE_PATH_NOT_EXPORTED'
300
+ ? 'which ships no CLI'
301
+ : `whose './cli' did not resolve (${error ? error.message : 'unknown'}; an unbuilt dist? run its prepare)`;
302
+ console.error(`omega: refusing to run — ${target.dir} is the ${target.name} package itself, ${reason}, and an OMEGA package is never a target. Nothing was scaffolded.`);
303
+ process.exit(1);
304
+ }
305
+ return require(cliPath).run();
306
+ }
307
+
308
+ // A brand root — the manager owns brand-level commands (`omega test` fans
309
+ // out over targets/*). Resolve it from the brand root and hand over.
310
+ if (target.kind === 'brand') {
311
+ const { cliPath } = tryResolveCli(MANAGER, target.dir);
312
+
313
+ // Brand-SHAPED is not always a brand: every verb's ensureTarget scaffolds
314
+ // config/omega.json5 into a standalone project before its framework dep lands
315
+ // in package.json, so the walk classifies a fresh target as a brand root. With
316
+ // no manager installed there is no brand-level CLI to hand over to — fall
317
+ // back to the host framework rather than dead-ending (#194). A real brand
318
+ // root still dispatches to the manager the moment it exists.
319
+ if (!cliPath) {
320
+ // When the HOST is the manager itself (its own bin in a fresh template
321
+ // clone), "install the manager" would name the thing about to run —
322
+ // that message is for framework hosts only.
323
+ if (hostName === MANAGER) {
324
+ console.error(`omega: brand-shaped directory at ${target.dir} with no installed ${MANAGER} — running the bundled ${hostName} (run npm install to use the pinned version)`);
325
+ } else {
326
+ console.error(`omega: brand-shaped directory at ${target.dir} but ${MANAGER} is not installed — running ${hostName} instead (install ${MANAGER} at the brand root, or \`mgr i local\` for a monorepo link, if this really is a brand)`);
327
+ }
328
+ return hostRun();
329
+ }
330
+ return require(cliPath).run();
331
+ }
332
+
333
+ // The bin that won npm's .bin link belongs to this target's framework — run it directly.
334
+ if (target.name === hostName) {
335
+ return hostRun();
336
+ }
337
+
338
+ // The target belongs to a DIFFERENT framework — resolve its CLI from where the
339
+ // dependency is declared and hand over.
340
+ const cliPath = resolveCli(target.name, target.dir,
341
+ 'Is the framework installed? Try npm install, or `mgr i local` for a monorepo link.');
342
+ return require(cliPath).run();
343
+ }
344
+
345
+ module.exports = { run, findTarget, isBrandRoot, verbOf, isBoxVerbArgv, TARGET_SUBDIRS, CONTEXTLESS_VERBS, BOX_VERBS, FRAMEWORKS, MANAGER };
@@ -0,0 +1,18 @@
1
+ // safeInstall(command) — run a shell command, routing `npm install` through Socket
2
+ // Firewall (sfw) when it's available so dependency trees are scanned for malware,
3
+ // typosquats, and supply-chain attacks before download. Non-install commands and
4
+ // machines without sfw pass through unchanged.
5
+
6
+ const { execute } = require('node-powertools');
7
+
8
+ let _hasSfw;
9
+ async function safeInstall(command, options) {
10
+ if (_hasSfw === undefined) {
11
+ _hasSfw = await execute('sfw --version', { log: false }).then(() => true).catch(() => false);
12
+ }
13
+ const isInstall = /^npm\s+(install|i)\b/.test(command);
14
+ const prefix = (_hasSfw && isInstall) ? 'sfw ' : '';
15
+ return execute(`${prefix}${command}`, options || { log: true });
16
+ }
17
+
18
+ module.exports = { safeInstall };
@@ -0,0 +1,96 @@
1
+ /**
2
+ * scaffold-guard — the refusal every framework's ensure-target runs before it
3
+ * writes anything.
4
+ *
5
+ * Every verb heals its target on the way past ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)),
6
+ * which makes the cwd load-bearing: `omega deploy` run at a workspace ROOT
7
+ * scaffolded a whole desktop target into it — gulpfile, src/, workflows, rewritten
8
+ * root scripts — before failing anyway ([#699](https://github.com/Omega-JS-Stack/omega/issues/699)).
9
+ * A workspace root is never a target: a target is a MEMBER of one. So a scaffold
10
+ * aimed at a manifest declaring `workspaces` is a misfire, not a fresh project.
11
+ *
12
+ * Twin of the dispatcher's own refusal (`@omega.js/devkit/omega-bin`), one layer
13
+ * lower and same shape: that one catches a verb run where NO context resolves,
14
+ * this one catches a verb that reached a framework CLI anyway. Throwing is the
15
+ * loud stop — every framework CLI prints the message and exits nonzero.
16
+ *
17
+ * Stdlib-only (fs/path), like the dispatcher: it is vendored into every framework
18
+ * dist and runs before the framework's own dependencies matter.
19
+ */
20
+ const fs = require('fs');
21
+ const path = require('path');
22
+
23
+ /**
24
+ * The nearest package.json walking up from startDir, BOUNDED at the nearest
25
+ * `.git` (that directory is still checked) — past the repo boundary is somebody
26
+ * else's tree. Same bound as the dispatcher's findTarget.
27
+ *
28
+ * @param {string} startDir - Where to start the walk.
29
+ * @returns {{ dir: string, manifestPath: string }|null} null when nothing is found.
30
+ */
31
+ function nearestManifest(startDir) {
32
+ let dir = path.resolve(startDir);
33
+ while (true) {
34
+ const manifestPath = path.join(dir, 'package.json');
35
+ if (fs.existsSync(manifestPath)) return { dir, manifestPath };
36
+
37
+ if (fs.existsSync(path.join(dir, '.git'))) return null;
38
+
39
+ const parent = path.dirname(dir);
40
+ if (parent === dir) return null;
41
+ dir = parent;
42
+ }
43
+ }
44
+
45
+ /**
46
+ * A refusal: crafted text a human is meant to read, flagged so every surface
47
+ * prints it the same way — the message alone, nothing added. `@omega.js/backend`'s
48
+ * bin and devkit's cli-router both branch on the flag, so a refused command
49
+ * never renders as a bug (a red ✗ there, a raw stack here) ([#706](https://github.com/Omega-JS-Stack/omega/issues/706)).
50
+ *
51
+ * @param {string} message - The lines to print verbatim.
52
+ * @returns {Error} The flagged error to throw.
53
+ */
54
+ function refusal(message) {
55
+ const error = new Error(message);
56
+ error.refusal = true;
57
+ return error;
58
+ }
59
+
60
+ /**
61
+ * Throw unless projectDir can legitimately be scaffolded as a target. A fresh
62
+ * directory with no manifest above it stays allowed — that is the standalone
63
+ * bootstrap case every verb supports.
64
+ *
65
+ * @param {string} projectDir - The directory ensure-target is about to write to.
66
+ * @returns {void}
67
+ * @throws {Error} When the nearest manifest declares `workspaces`, or cannot be read.
68
+ */
69
+ function assertScaffoldable(projectDir) {
70
+ const nearest = nearestManifest(projectDir);
71
+ if (!nearest) return;
72
+
73
+ let manifest;
74
+ try {
75
+ manifest = JSON.parse(fs.readFileSync(nearest.manifestPath, 'utf8'));
76
+ } catch (e) {
77
+ // Unreadable is not "not a workspace root". Scaffolding on that guess is the
78
+ // exact accident this guard exists to stop, so it refuses — and names the
79
+ // file, which a raw SyntaxError out of JSON.parse never did.
80
+ throw refusal(
81
+ `omega: refusing to scaffold into ${path.resolve(projectDir)} — ${nearest.manifestPath} could not be read `
82
+ + `(${e.message}), so whether this is a workspace root cannot be known. Nothing was scaffolded.\n`
83
+ + 'Fix that manifest, or run the verb from inside a target (e.g. targets/<name>).',
84
+ );
85
+ }
86
+
87
+ if (!manifest.workspaces) return;
88
+
89
+ throw refusal(
90
+ `omega: refusing to scaffold into ${path.resolve(projectDir)} — ${nearest.manifestPath} declares "workspaces", `
91
+ + 'so this is a workspace root (a brand or monorepo root), not an OMEGA target. Nothing was scaffolded.\n'
92
+ + 'Run the verb from inside a target (e.g. targets/<name>), or `npx omega onboard` to create one.',
93
+ );
94
+ }
95
+
96
+ module.exports = { assertScaffoldable, nearestManifest };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * esbuild plugin form of the `@dev-only` strip (#18, #736).
3
+ *
4
+ * A thin binding to the ONE cut in `strip-dev-blocks.js` (the webpack loader
5
+ * twin was deleted with the last webpack lane in
6
+ * [#738](https://github.com/Omega-JS-Stack/omega/issues/738)), and
7
+ * unconditional — the lane that registers the plugin decides WHEN. `bundle.js`
8
+ * registers it for production builds only, so a dev build keeps its warnings
9
+ * and simulation hooks.
10
+ */
11
+
12
+ const fs = require('node:fs');
13
+
14
+ const { stripDevBlocks, START_MARKER } = require('./strip-dev-blocks.js');
15
+
16
+ const stripDevBlocksPlugin = {
17
+ name: 'omega-strip-dev-blocks',
18
+ setup(build) {
19
+ build.onLoad({ filter: /\.js$/ }, (args) => {
20
+ const source = fs.readFileSync(args.path, 'utf8');
21
+ if (!source.includes(START_MARKER)) {
22
+ return null; // untouched — let esbuild load it normally
23
+ }
24
+ return { contents: stripDevBlocks(source), loader: 'js' };
25
+ });
26
+ },
27
+ };
28
+
29
+ module.exports = { stripDevBlocksPlugin };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The `@dev-only` marker contract — ONE home (#18).
3
+ *
4
+ * Code between the markers runs in development and is cut out of every
5
+ * PRODUCTION bundle, so dev warnings and simulation hooks never ship. Each
6
+ * Every framework registers the strip the same way now — the esbuild plugin
7
+ * beside this file, which `bundle.js` composes for production builds — but the
8
+ * markers and the cut itself live here, once.
9
+ */
10
+
11
+ const START_MARKER = '/* @dev-only:start */';
12
+ const END_MARKER = '/* @dev-only:end */';
13
+
14
+ const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
15
+ const BLOCK_PATTERN = new RegExp(`${escapeRegex(START_MARKER)}[\\s\\S]*?${escapeRegex(END_MARKER)}`, 'g');
16
+
17
+ /**
18
+ * Strip every dev-only block from a source string.
19
+ * @param {string} source
20
+ * @returns {string}
21
+ */
22
+ function stripDevBlocks(source) {
23
+ // Fast path — most files carry no markers at all, and this runs over every
24
+ // module a bundle pulls in (dependencies included).
25
+ if (!source.includes(START_MARKER)) {
26
+ return source;
27
+ }
28
+
29
+ return source.replace(BLOCK_PATTERN, '');
30
+ }
31
+
32
+ module.exports = { stripDevBlocks, START_MARKER, END_MARKER };
@@ -0,0 +1,137 @@
1
+ /**
2
+ * The dependency checks the retired `omega setup` carried
3
+ * ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)), split by what
4
+ * they need:
5
+ *
6
+ * ensurePeerDependencies the target cannot build without them — LOCAL half,
7
+ * each framework's ensure-target runs it on every verb
8
+ * updateManager asks the npm registry whether the framework itself
9
+ * is stale — NETWORK half, deploy-precheck runs it
10
+ *
11
+ * They share the same installer and the same version-check line, so they share
12
+ * a file rather than a copy each — and every framework shares THIS file rather
13
+ * than a drift-identical copy per package. What differs per framework is data,
14
+ * not logic: the peer-dep install-location map and the framework's own
15
+ * `safeInstall`, both passed in.
16
+ */
17
+
18
+ const path = require('path');
19
+ const jetpack = require('fs-jetpack');
20
+ const version = require('wonderful-version');
21
+ const chalk = require('chalk').default;
22
+ const { getLatestVersion } = require('./npm-registry.js');
23
+
24
+ /**
25
+ * The consumer manifest at `projectDir`, its two dependency sections normalized.
26
+ *
27
+ * @param {string} projectDir - The target root.
28
+ * @returns {object} The manifest, with `dependencies`/`devDependencies` always objects.
29
+ */
30
+ function readProject(projectDir) {
31
+ const project = jetpack.read(path.join(projectDir, 'package.json'), 'json') || {};
32
+ project.dependencies = project.dependencies || {};
33
+ project.devDependencies = project.devDependencies || {};
34
+ return project;
35
+ }
36
+
37
+ function logVersionCheck(log, name, installedVersion, latestVersion, isUpToDate) {
38
+ // A `file:` spec is the local-link era's answer — always current by definition.
39
+ if (installedVersion && installedVersion.startsWith('file:')) {
40
+ isUpToDate = true;
41
+ }
42
+
43
+ const installedLabel = installedVersion || '(none)';
44
+ const latestLabel = latestVersion || '(unknown)';
45
+ const status = isUpToDate ? chalk.green('Yes') : chalk.red('No');
46
+
47
+ log(`Checking if ${name} is up to date (${chalk.bold(installedLabel)} >= ${chalk.bold(latestLabel)}): ${status}`);
48
+ }
49
+
50
+ function install({ projectDir, project, log, safeInstall, pkg, ver, location }) {
51
+ ver = ver === 'latest' || !ver ? 'latest' : version.clean(ver);
52
+
53
+ const command = `npm install ${pkg}@${ver} ${location || '--save'}`;
54
+ log(`Installing: ${command}`);
55
+
56
+ return safeInstall(command)
57
+ .then(() => {
58
+ const projectUpdated = readProject(projectDir);
59
+ project.dependencies = projectUpdated.dependencies;
60
+ project.devDependencies = projectUpdated.devDependencies;
61
+ log(`Installed: ${pkg} ${ver}`);
62
+ });
63
+ }
64
+
65
+ /**
66
+ * Install any peer dependency the target is missing or behind on. A satisfied
67
+ * target installs nothing, which is what makes this safe on every verb.
68
+ *
69
+ * @param {object} input
70
+ * @param {string} input.projectDir - The target root.
71
+ * @param {object} input.package - The framework manifest (its peerDependencies).
72
+ * @param {function} input.log - Line logger.
73
+ * @param {Object<string, string>} [input.dependencyMap] - Per-dep install location (`'dev'` = --save-dev).
74
+ * @param {function} input.safeInstall - The framework's install runner.
75
+ */
76
+ async function ensurePeerDependencies({ projectDir, package: frameworkPackage, log, dependencyMap, safeInstall }) {
77
+ const project = readProject(projectDir);
78
+ const requiredPeerDependencies = frameworkPackage.peerDependencies || {};
79
+ const map = dependencyMap || {};
80
+
81
+ for (const [dependency, rawVer] of Object.entries(requiredPeerDependencies)) {
82
+ const projectDependencyVersion = version.clean(project.dependencies[dependency] || project.devDependencies[dependency]);
83
+ const location = map[dependency] === 'dev' ? '--save-dev' : '';
84
+ const isUpToDate = version.is(projectDependencyVersion, '>=', rawVer);
85
+
86
+ const ver = version.clean(rawVer);
87
+
88
+ logVersionCheck(log, dependency, projectDependencyVersion, ver, isUpToDate);
89
+
90
+ if (!projectDependencyVersion || !isUpToDate) {
91
+ await install({ projectDir, project, log, safeInstall, pkg: dependency, ver, location });
92
+ }
93
+ }
94
+ }
95
+
96
+ /**
97
+ * Is the installed framework the latest published one? Hits the npm registry,
98
+ * so it rides `omega deploy`'s network precheck, never a build.
99
+ *
100
+ * @param {object} input
101
+ * @param {string} input.projectDir - The target root.
102
+ * @param {object} input.package - The framework manifest.
103
+ * @param {function} input.log - Line logger.
104
+ * @param {function} input.error - Error logger.
105
+ * @param {function} input.safeInstall - The framework's install runner.
106
+ */
107
+ async function updateManager({ projectDir, package: frameworkPackage, log, error, safeInstall }) {
108
+ const project = readProject(projectDir);
109
+
110
+ // Either section counts (friction #12) — the framework is a build-time dep,
111
+ // but web/backend accept dependencies too; one rule everywhere.
112
+ const installedVersion = project.devDependencies[frameworkPackage.name] || project.dependencies[frameworkPackage.name];
113
+
114
+ if (!installedVersion) {
115
+ throw new Error(`No installed version of ${frameworkPackage.name} found in dependencies or devDependencies.`);
116
+ }
117
+
118
+ const latestVersion = (await getLatestVersion(frameworkPackage.name)) || '0.0.0';
119
+
120
+ const isUpToDate = version.is(installedVersion, '>=', latestVersion);
121
+ const levelDifference = version.levelDifference(installedVersion, latestVersion);
122
+
123
+ logVersionCheck(log, frameworkPackage.name, installedVersion, latestVersion, isUpToDate);
124
+
125
+ if (installedVersion.startsWith('file:')) {
126
+ return;
127
+ }
128
+
129
+ if (!isUpToDate) {
130
+ if (levelDifference === 'major' && installedVersion !== 'latest') {
131
+ return error(`Major version difference detected. Please update to ${latestVersion} manually.`);
132
+ }
133
+ await install({ projectDir, project, log, safeInstall, pkg: frameworkPackage.name, ver: latestVersion });
134
+ }
135
+ }
136
+
137
+ module.exports = { readProject, ensurePeerDependencies, updateManager, logVersionCheck };