@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,172 @@
1
+ // Build-layer tests for ensure-target's package.json write (#572).
2
+ //
3
+ // `jetpack.write(path, object)` serializes with no trailing newline, and the write
4
+ // rewrote the consumer's package.json unconditionally — so every `npm run build`
5
+ // re-stripped the newline npm itself writes, and the
6
+ // consumer's lint hook or editor put it back, forever.
7
+ //
8
+ // setupScripts defaults to the cwd project, so each test stages a
9
+ // temp project, chdirs into it, and requires the command fresh — the same model
10
+ // as package-task.test.js's inProject().
11
+
12
+ const path = require('path');
13
+ const fs = require('fs');
14
+ const os = require('os');
15
+ const defineCases = require('../../../vendor/devkit/test/define-cases.js');
16
+
17
+ const SRC = path.join(__dirname, '..', '..', '..');
18
+ const SETUP_PATH = path.join(SRC, 'commands', 'lib', 'ensure-target.js');
19
+
20
+ const CONSUMER_PKG = {
21
+ name: 'staged-ext',
22
+ version: '3.1.4',
23
+ scripts: { start: 'echo consumer' },
24
+ devDependencies: { '@omega.js/extension': '^0.1.0' },
25
+ };
26
+
27
+ // Stage a temp consumer project holding `pkg`, written the way npm writes it.
28
+ function stageProject(pkg) {
29
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'extension-setup-scripts-'));
30
+ fs.writeFileSync(path.join(tmp, 'package.json'), `${JSON.stringify(pkg, null, 2)}\n`);
31
+ return tmp;
32
+ }
33
+
34
+ // Run `fn(setup)` with cwd pinned to `dir` and the command module loaded fresh.
35
+ async function inProject(dir, fn) {
36
+ const oldCwd = process.cwd();
37
+ const flush = () => {
38
+ for (const key of Object.keys(require.cache)) {
39
+ if (key.startsWith(SRC + path.sep)) delete require.cache[key];
40
+ }
41
+ };
42
+
43
+ flush();
44
+ try {
45
+ process.chdir(dir);
46
+ return await fn(require(SETUP_PATH));
47
+ } finally {
48
+ process.chdir(oldCwd);
49
+ flush();
50
+ }
51
+ }
52
+
53
+ module.exports = defineCases({
54
+ type: 'suite',
55
+ layer: 'build',
56
+ description: 'ensure-target — the consumer package.json write',
57
+ tests: [
58
+ {
59
+ name: 'the written package.json ends with exactly one trailing newline (#572)',
60
+ run: async (ctx) => {
61
+ const tmp = stageProject(CONSUMER_PKG);
62
+ const pkgPath = path.join(tmp, 'package.json');
63
+
64
+ try {
65
+ await inProject(tmp, async (setup) => {
66
+ setup.setupScripts();
67
+
68
+ const contents = fs.readFileSync(pkgPath, 'utf8');
69
+ ctx.expect(contents.endsWith('}\n')).toBe(true);
70
+ ctx.expect(contents.endsWith('}\n\n')).toBe(false);
71
+
72
+ // The framework's project scripts landed, npm's own 2-space shape kept
73
+ const written = JSON.parse(contents);
74
+ ctx.expect(written.scripts.build).toBe('omega build');
75
+ ctx.expect(written.private).toBe(true);
76
+ ctx.expect(contents).toContain('\n "name": "staged-ext"');
77
+ });
78
+ } finally {
79
+ fs.rmSync(tmp, { recursive: true, force: true });
80
+ }
81
+ },
82
+ },
83
+ {
84
+ name: 'an unchanged package.json is not rewritten (#572)',
85
+ run: async (ctx) => {
86
+ const tmp = stageProject(CONSUMER_PKG);
87
+ const pkgPath = path.join(tmp, 'package.json');
88
+
89
+ try {
90
+ await inProject(tmp, async (setup) => {
91
+ setup.setupScripts();
92
+ const afterFirst = fs.readFileSync(pkgPath, 'utf8');
93
+
94
+ // Backdate the file: a second setup that writes shows up as a new mtime
95
+ const past = new Date(Date.now() - 60000);
96
+ fs.utimesSync(pkgPath, past, past);
97
+
98
+ setup.setupScripts();
99
+
100
+ ctx.expect(Math.round(fs.statSync(pkgPath).mtimeMs)).toBe(Math.round(past.getTime()));
101
+ ctx.expect(fs.readFileSync(pkgPath, 'utf8')).toBe(afterFirst);
102
+ });
103
+ } finally {
104
+ fs.rmSync(tmp, { recursive: true, force: true });
105
+ }
106
+ },
107
+ },
108
+ {
109
+ name: 'a package.json that DID change is written (#572)',
110
+ run: async (ctx) => {
111
+ const tmp = stageProject(CONSUMER_PKG);
112
+ const pkgPath = path.join(tmp, 'package.json');
113
+
114
+ try {
115
+ await inProject(tmp, async (setup) => {
116
+ setup.setupScripts();
117
+
118
+ // A consumer edit setup has to heal — the skip is content-based, not a latch
119
+ const drifted = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
120
+ drifted.scripts.build = 'echo hand-edited';
121
+ fs.writeFileSync(pkgPath, `${JSON.stringify(drifted, null, 2)}\n`);
122
+
123
+ setup.setupScripts();
124
+
125
+ const healed = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
126
+ ctx.expect(healed.scripts.build).toBe('omega build');
127
+ ctx.expect(fs.readFileSync(pkgPath, 'utf8').endsWith('}\n')).toBe(true);
128
+ });
129
+ } finally {
130
+ fs.rmSync(tmp, { recursive: true, force: true });
131
+ }
132
+ },
133
+ },
134
+ {
135
+ name: 'a target still carrying the `npx omega` spelling heals to the bare verb (#748)',
136
+ run: async (ctx) => {
137
+ // Package scripts spell the verb bare, web's form — the `npx` prefix
138
+ // is redundant inside a script (npm puts node_modules/.bin on the
139
+ // path) and stays canonical only for docs and the terminal. Every
140
+ // framework-owned key is rewritten on the next verb's ensure pass.
141
+ const tmp = stageProject({
142
+ ...CONSUMER_PKG,
143
+ scripts: { ...CONSUMER_PKG.scripts, test: 'npx omega test', lint: 'npx eslint .' },
144
+ });
145
+ const pkgPath = path.join(tmp, 'package.json');
146
+
147
+ try {
148
+ await inProject(tmp, async (setup) => {
149
+ setup.setupScripts();
150
+
151
+ const healed = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
152
+ ctx.expect(healed.scripts.test).toBe('omega test');
153
+ ctx.expect(healed.scripts.build.includes('npx omega')).toBe(false);
154
+ ctx.expect(healed.scripts.lint).toBe('npx eslint .');
155
+
156
+ // Converged: the second pass writes nothing at all
157
+ const afterFirst = fs.readFileSync(pkgPath, 'utf8');
158
+ const past = new Date(Date.now() - 60000);
159
+ fs.utimesSync(pkgPath, past, past);
160
+
161
+ setup.setupScripts();
162
+
163
+ ctx.expect(Math.round(fs.statSync(pkgPath).mtimeMs)).toBe(Math.round(past.getTime()));
164
+ ctx.expect(fs.readFileSync(pkgPath, 'utf8')).toBe(afterFirst);
165
+ });
166
+ } finally {
167
+ fs.rmSync(tmp, { recursive: true, force: true });
168
+ }
169
+ },
170
+ },
171
+ ],
172
+ });
@@ -0,0 +1,122 @@
1
+ // @dev-only strip, extension bundle lane (#18): production extension bundles must
2
+ // not carry the dev-only blocks their inputs hold — @omega.js/client's src and the
3
+ // vendored theme assets both use the markers, and every one of them reaches a
4
+ // popup / options / sidepanel bundle. The mechanism is @omega.js/devkit's bundle
5
+ // wrapper, which registers the strip for PRODUCTION builds only
6
+ // ([#738](https://github.com/Omega-JS-Stack/omega/issues/738) replaced the
7
+ // webpack loader this suite used to drive), so these tests build a real fixture
8
+ // entry through that wrapper from the extension framework root and read the
9
+ // emitted bundle back.
10
+ //
11
+ // The marker + cut themselves are @omega.js/devkit's (one home); pinned there.
12
+
13
+ const fs = require('fs');
14
+ const os = require('os');
15
+ const path = require('path');
16
+
17
+ const FRAMEWORK_ROOT = path.join(__dirname, '..', '..', '..', '..');
18
+ const { bundle } = require('../../../vendor/devkit/bundle.js');
19
+ const Manager = new (require(path.join(FRAMEWORK_ROOT, 'src', 'build.js')));
20
+ const defineCases = require('../../../vendor/devkit/test/define-cases.js');
21
+
22
+ const FIXTURE = [
23
+ '/* @dev-only:start */',
24
+ 'console.log("DEV_ONLY_SENTINEL");',
25
+ '/* @dev-only:end */',
26
+ 'globalThis.alwaysShips = "PROD_SENTINEL";',
27
+ '',
28
+ ].join('\n');
29
+
30
+ // Build the fixture the way the extension lane builds a component entry — `dev`
31
+ // is the ONE switch, so the strip is the only variable. Minify stays out of the
32
+ // assertion's way by reading sentinels, which minification preserves.
33
+ async function compile(isProd) {
34
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'omega-extension-strip-'));
35
+ fs.writeFileSync(path.join(dir, 'entry.js'), FIXTURE);
36
+ const outfile = path.join(dir, 'dist', 'entry.bundle.js');
37
+
38
+ try {
39
+ await bundle({
40
+ frameworkRoot: FRAMEWORK_ROOT,
41
+ entries: [path.join(dir, 'entry.js')],
42
+ outfile,
43
+ platform: 'browser',
44
+ format: 'iife',
45
+ dev: !isProd,
46
+ });
47
+ return fs.readFileSync(outfile, 'utf8');
48
+ } finally {
49
+ fs.rmSync(dir, { recursive: true, force: true });
50
+ }
51
+ }
52
+
53
+ function restoreEnv(key, value) {
54
+ if (value === undefined) {
55
+ delete process.env[key];
56
+ } else {
57
+ process.env[key] = value;
58
+ }
59
+ }
60
+
61
+ module.exports = defineCases({
62
+ type: 'suite',
63
+ layer: 'build',
64
+ description: 'strip-dev-blocks — the extension bundle lane cuts @dev-only blocks from production bundles',
65
+ timeout: 60000,
66
+ tests: [
67
+ {
68
+ name: 'production bundle drops the dev-only block and keeps the real code',
69
+ run: async (ctx) => {
70
+ const built = await compile(true);
71
+ ctx.expect(built).toContain('PROD_SENTINEL');
72
+ ctx.expect(built.includes('DEV_ONLY_SENTINEL')).toBe(false);
73
+ },
74
+ },
75
+
76
+ {
77
+ name: 'development bundle keeps the dev-only block',
78
+ run: async (ctx) => {
79
+ const built = await compile(false);
80
+ ctx.expect(built).toContain('PROD_SENTINEL');
81
+ ctx.expect(built).toContain('DEV_ONLY_SENTINEL');
82
+ },
83
+ },
84
+
85
+ {
86
+ // `actLikeProduction()` is the rule, not `isBuildMode()`: an audit run
87
+ // (OMEGA_AUDIT_FORCE) inspects the artifact a release would ship, so it
88
+ // has to be built the way a release is — dev blocks cut. The old webpack
89
+ // loader gated on the build-mode flag alone and left them in.
90
+ name: 'OMEGA_AUDIT_FORCE builds like production — the dev-only block is cut there too',
91
+ run: async (ctx) => {
92
+ const previous = { build: process.env.OMEGA_BUILD_MODE, audit: process.env.OMEGA_AUDIT_FORCE };
93
+ delete process.env.OMEGA_BUILD_MODE;
94
+ process.env.OMEGA_AUDIT_FORCE = 'true';
95
+
96
+ try {
97
+ ctx.expect(Manager.isBuildMode()).toBe(false);
98
+ ctx.expect(Manager.actLikeProduction()).toBe(true);
99
+
100
+ const built = await compile(Manager.actLikeProduction());
101
+ ctx.expect(built).toContain('PROD_SENTINEL');
102
+ ctx.expect(built.includes('DEV_ONLY_SENTINEL')).toBe(false);
103
+ } finally {
104
+ restoreEnv('OMEGA_BUILD_MODE', previous.build);
105
+ restoreEnv('OMEGA_AUDIT_FORCE', previous.audit);
106
+ }
107
+ },
108
+ },
109
+
110
+ {
111
+ // The strip existing is not the bug #18 reports — the bug was a bundle
112
+ // WITHOUT it. Pin the wiring itself: the task derives the production rule
113
+ // from the same helper the rest of the build gates on, which is what
114
+ // registers the strip inside the wrapper.
115
+ name: 'the one bundle call takes the production rule',
116
+ run: (ctx) => {
117
+ const task = fs.readFileSync(path.join(FRAMEWORK_ROOT, 'src', 'gulp', 'tasks', 'bundle.js'), 'utf8');
118
+ ctx.expect(task).toContain('dev: !Manager.actLikeProduction()');
119
+ },
120
+ },
121
+ ],
122
+ });
@@ -0,0 +1,116 @@
1
+ // The `%%%key%%%` substitution, extension bundle lane
2
+ // ([#738](https://github.com/Omega-JS-Stack/omega/issues/738)).
3
+ //
4
+ // Consumer and framework browser code writes build-time tokens (`%%%version%%%`,
5
+ // `%%%brand.name%%%`) and the build fills them with the project's own facts.
6
+ // webpack did it as a processAssets hook that
7
+ // rewrote every emitted asset; esbuild has no mutate-then-rewrite pass, so the
8
+ // bundle task fills the emitted files itself. What that has to survive is
9
+ // MINIFICATION — a production bundle is minified before anything sees it, and a
10
+ // token that came out mangled would be an unreplaced marker shipped to a store.
11
+
12
+ const fs = require('fs');
13
+ const os = require('os');
14
+ const path = require('path');
15
+
16
+ const FRAMEWORK_ROOT = path.join(__dirname, '..', '..', '..', '..');
17
+ const { bundle } = require('../../../vendor/devkit/bundle.js');
18
+ const task = require(path.join(FRAMEWORK_ROOT, 'src', 'gulp', 'tasks', 'bundle.js'));
19
+ const defineCases = require('../../../vendor/devkit/test/define-cases.js');
20
+
21
+ const FIXTURE = [
22
+ "export const stamp = 'v%%%version%%% of %%%brand.name%%%';",
23
+ "export const spaced = '%%% environment %%%';",
24
+ 'globalThis.probe = { stamp, spaced };',
25
+ '',
26
+ ].join('\n');
27
+
28
+ // Bundle the fixture the way the extension lane bundles a component entry — a
29
+ // PRODUCTION build, so the tokens go through esbuild's minifier before the
30
+ // substitution runs.
31
+ async function buildFixture() {
32
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'omega-extension-template-'));
33
+ fs.writeFileSync(path.join(dir, 'entry.js'), FIXTURE);
34
+ const outfile = path.join(dir, 'dist', 'entry.bundle.js');
35
+
36
+ await bundle({
37
+ frameworkRoot: FRAMEWORK_ROOT,
38
+ entries: [path.join(dir, 'entry.js')],
39
+ outfile,
40
+ platform: 'browser',
41
+ format: 'iife',
42
+ dev: false,
43
+ });
44
+
45
+ return { dir, outfile };
46
+ }
47
+
48
+ module.exports = defineCases({
49
+ type: 'suite',
50
+ layer: 'build',
51
+ description: 'template-replace — the bundle lane fills %%%key%%% tokens in the emitted bundles',
52
+ timeout: 60000,
53
+ tests: [
54
+ {
55
+ name: 'tokens survive minification and are filled with the project facts',
56
+ run: async (ctx) => {
57
+ const { dir, outfile } = await buildFixture();
58
+
59
+ try {
60
+ ctx.expect(fs.readFileSync(outfile, 'utf8')).toContain('%%%version%%%');
61
+
62
+ task.substituteTemplates([outfile], {
63
+ version: '9.9.9',
64
+ brand: { name: 'Fixture Brand' },
65
+ environment: 'production',
66
+ });
67
+
68
+ const after = fs.readFileSync(outfile, 'utf8');
69
+ ctx.expect(after).toContain('v9.9.9 of Fixture Brand');
70
+ ctx.expect(after).toContain('production');
71
+ ctx.expect(after.includes('%%%')).toBe(false);
72
+ } finally {
73
+ fs.rmSync(dir, { recursive: true, force: true });
74
+ }
75
+ },
76
+ },
77
+
78
+ {
79
+ name: 'a token nothing answers is left intact rather than emptied',
80
+ run: async (ctx) => {
81
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'omega-extension-template-miss-'));
82
+ const file = path.join(dir, 'entry.bundle.js');
83
+ fs.writeFileSync(file, "var a = '%%%version%%%';\nvar b = '%%%nothingAnswersThis%%%';\n");
84
+
85
+ try {
86
+ task.substituteTemplates([file], { version: '1.0.0' });
87
+
88
+ const after = fs.readFileSync(file, 'utf8');
89
+ ctx.expect(after).toContain("var a = '1.0.0';");
90
+ ctx.expect(after).toContain('%%%nothingAnswersThis%%%');
91
+ } finally {
92
+ fs.rmSync(dir, { recursive: true, force: true });
93
+ }
94
+ },
95
+ },
96
+
97
+ {
98
+ // The keys the build promises consumer code (packages/extension/docs/build-system.md):
99
+ // the substitution being wired proves nothing if the set it fills from lost
100
+ // a key. `webManagerConfiguration` was in this set and is gone (#743): it
101
+ // composed a SECOND, diverging copy of the @omega.js/client runtime blob
102
+ // for a token no source file anywhere carried — the snapshot the contexts
103
+ // actually read is the one bundle.js bakes.
104
+ name: 'the replacement set carries the keys the build promises',
105
+ run: (ctx) => {
106
+ const options = task.getTemplateReplaceOptions();
107
+
108
+ ctx.expect(options).toHaveProperty('environment');
109
+ ctx.expect(options).toHaveProperty('version');
110
+ ctx.expect(typeof options.liveReloadPort).toBe('number');
111
+ ctx.expect(typeof options.firebaseVersion).toBe('string');
112
+ ctx.expect(options.webManagerConfiguration).toBeUndefined();
113
+ },
114
+ },
115
+ ],
116
+ });
@@ -0,0 +1,64 @@
1
+ // Build-layer tests for test-suite discovery — specifically the
2
+ // "underscore = not a suite" convention: `_`-prefixed files and everything
3
+ // under `_`-prefixed directories (at ANY depth) must be excluded, so consumers
4
+ // can keep helpers and fixture trees (e.g. test/_helpers/harness.js)
5
+ // next to their suites.
6
+
7
+ const path = require('path');
8
+ const defineCases = require('../../../vendor/devkit/test/define-cases.js');
9
+
10
+ module.exports = defineCases({
11
+ type: 'suite',
12
+ layer: 'build',
13
+ description: 'test discovery — underscore exclusion convention',
14
+ tests: [
15
+ {
16
+ name: 'runner exports DISCOVERY_IGNORE',
17
+ run: (ctx) => {
18
+ const runner = require(path.join(__dirname, '..', '..', 'runner.js'));
19
+ ctx.expect(Array.isArray(runner.DISCOVERY_IGNORE)).toBe(true);
20
+ ctx.expect(runner.DISCOVERY_IGNORE.length >= 2).toBe(true);
21
+ },
22
+ },
23
+ {
24
+ name: 'glob with DISCOVERY_IGNORE skips _ files and _ dirs at any depth',
25
+ run: (ctx) => {
26
+ const fs = require('fs');
27
+ const os = require('os');
28
+ const glob = require('glob').globSync;
29
+ const { DISCOVERY_IGNORE } = require(path.join(__dirname, '..', '..', 'runner.js'));
30
+
31
+ const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'extension-discovery-test-'));
32
+ const write = (rel) => {
33
+ const file = path.join(tmp, rel);
34
+ fs.mkdirSync(path.dirname(file), { recursive: true });
35
+ fs.writeFileSync(file, 'module.exports = {};\n');
36
+ };
37
+
38
+ // Should be DISCOVERED:
39
+ write('build/config.test.js');
40
+ write('page/runner.test.js');
41
+ write('boot/nested/deep.test.js');
42
+
43
+ // Should be EXCLUDED:
44
+ write('_init.js'); // top-level _ file
45
+ write('page/_helper.js'); // nested _ file
46
+ write('_helpers/harness.js'); // file in top-level _ dir
47
+ write('_fixtures/packages/runner/mod/index.js'); // deep inside a _ dir
48
+ write('boot/_private/util.js'); // _ dir below a layer dir
49
+
50
+ const found = glob('**/*.js', { cwd: tmp, ignore: [...DISCOVERY_IGNORE] }).sort();
51
+
52
+ try {
53
+ ctx.expect(found).toEqual([
54
+ 'boot/nested/deep.test.js',
55
+ 'build/config.test.js',
56
+ 'page/runner.test.js',
57
+ ]);
58
+ } finally {
59
+ fs.rmSync(tmp, { recursive: true, force: true });
60
+ }
61
+ },
62
+ },
63
+ ],
64
+ });
@@ -0,0 +1,119 @@
1
+ // Build-layer tests for the no-match rule ([#814](https://github.com/Omega-JS-Stack/omega/issues/814)).
2
+ //
3
+ // `npx omega test view/popup-nope` with no such file printed "No test files
4
+ // found.", "0 passing", and exited 0: a typo'd path target, or a suite renamed
5
+ // out from under one, ran silently green.
6
+ //
7
+ // The rule lives in the runner's selection step, so these drive the REAL
8
+ // extension runner from a consumer directory with no tests of its own.
9
+
10
+ const fs = require('fs');
11
+ const os = require('os');
12
+ const path = require('path');
13
+ const defineCases = require('../../../vendor/devkit/test/define-cases.js');
14
+
15
+ const RUNNER = path.join(__dirname, '..', '..', 'runner.js');
16
+
17
+ // A consumer directory with a package.json and no test/ dir at all.
18
+ function makeEmptyConsumer() {
19
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'extension-no-match-'));
20
+ fs.writeFileSync(path.join(dir, 'package.json'), JSON.stringify({ name: 'no-match-fixture' }));
21
+ return dir;
22
+ }
23
+
24
+ // Run the real runner from `dir`, with its report silenced: the probe reports
25
+ // like any run, and its report is not THIS run's.
26
+ async function runFrom(dir, options) {
27
+ const { run } = require(RUNNER);
28
+ const previousCwd = process.cwd();
29
+ const realLog = console.log;
30
+
31
+ process.chdir(dir);
32
+ console.log = () => {};
33
+
34
+ try {
35
+ return await run(options);
36
+ } finally {
37
+ console.log = realLog;
38
+ process.chdir(previousCwd);
39
+ }
40
+ }
41
+
42
+ module.exports = defineCases({
43
+ type: 'suite',
44
+ layer: 'build',
45
+ description: 'test targets that match nothing',
46
+ tests: [
47
+ {
48
+ name: 'a named target that selects no file comes back flagged, not green',
49
+ run: async (ctx) => {
50
+ const dir = makeEmptyConsumer();
51
+
52
+ try {
53
+ // Every spelling of a path target: bare, framework-scoped, project-scoped.
54
+ for (const target of ['view/does-not-exist', 'extension:build/does-not-exist', 'project:does-not-exist']) {
55
+ const result = await runFrom(dir, { target });
56
+ ctx.expect(result.noMatch).toBe(target);
57
+ ctx.expect(result.passed).toBe(0);
58
+ ctx.expect(result.failed).toBe(0);
59
+ }
60
+ } finally {
61
+ fs.rmSync(dir, { recursive: true, force: true });
62
+ }
63
+ },
64
+ },
65
+ {
66
+ name: 'a run that named no file stays green with nothing to run',
67
+ run: async (ctx) => {
68
+ const dir = makeEmptyConsumer();
69
+
70
+ try {
71
+ // A bare run, and a bare source prefix, ask for a source rather than
72
+ // a file: an empty project is still an exit-0 run.
73
+ for (const options of [{}, { target: 'project:' }]) {
74
+ const result = await runFrom(dir, options);
75
+ ctx.expect(result.noMatch).toBe(null);
76
+ ctx.expect(result.passed).toBe(0);
77
+ }
78
+ } finally {
79
+ fs.rmSync(dir, { recursive: true, force: true });
80
+ }
81
+ },
82
+ },
83
+ {
84
+ name: 'a target naming a real framework suite still selects it',
85
+ run: async (ctx) => {
86
+ const dir = makeEmptyConsumer();
87
+
88
+ try {
89
+ const result = await runFrom(dir, { target: 'extension:build/test-discovery' });
90
+ ctx.expect(result.noMatch).toBe(null);
91
+ ctx.expect(result.passed > 0).toBe(true);
92
+ } finally {
93
+ fs.rmSync(dir, { recursive: true, force: true });
94
+ }
95
+ },
96
+ },
97
+ {
98
+ name: 'in a brand-root fan-out the same miss answers with its own exit code',
99
+ run: (ctx) => {
100
+ // The brand root forwards ONE target to every target, so a target that
101
+ // does not carry it is a no-op there, not a failure. The code is the
102
+ // whole difference, and this package ships its own copy of the rule.
103
+ const { noMatchExitCode, NO_MATCH_EXIT_CODE, FANOUT_ENV } = require('../../../vendor/devkit/test/scope.js');
104
+
105
+ ctx.expect(FANOUT_ENV).toBe('OMEGA_TEST_FANOUT');
106
+ ctx.expect(NO_MATCH_EXIT_CODE).toBe(3);
107
+ ctx.expect(noMatchExitCode({})).toBe(1);
108
+ ctx.expect(noMatchExitCode({ OMEGA_TEST_FANOUT: '1' })).toBe(3);
109
+ },
110
+ },
111
+ {
112
+ name: 'the line the CLI prints names the target',
113
+ run: (ctx) => {
114
+ const { noMatchMessage } = require('../../../vendor/devkit/test/scope.js');
115
+ ctx.expect(noMatchMessage('view/does-not-exist')).toBe('No test file matches "view/does-not-exist".');
116
+ },
117
+ },
118
+ ],
119
+ });