@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,281 @@
1
+ // Libraries
2
+ const Manager = new (require('../../build.js'));
3
+ const logger = Manager.logger('defaults');
4
+ const watcherLogger = Manager.logger('defaults:watcher');
5
+ const workflowLogger = Manager.logger('defaults:workflows');
6
+ const { watch, series } = require('gulp');
7
+ const jetpack = require('fs-jetpack');
8
+ const path = require('path');
9
+ const { template } = require('node-powertools');
10
+ const { applyDefaults } = require('../../vendor/devkit/defaults-engine.js');
11
+ const { renderSecretsBlock } = require('../../vendor/config/env-delivery.js');
12
+ const { composeTargetWorkflows } = require('../../vendor/devkit/ci-workflows.js');
13
+
14
+ // Load package
15
+ const package = Manager.getPackage('main');
16
+ const config = Manager.getConfig('project');
17
+ const rootPathPackage = Manager.getRootPath('main');
18
+
19
+ // Get clean versions — the pinned consumer Node (omega.nodeRuntime), NOT
20
+ // engines.node: engines is the honest dev floor (>=22), templates need a
21
+ // concrete version to render (.nvmrc etc.)
22
+ const cleanVersions = { versions: { ...package.engines, node: package.omega.nodeRuntime } };
23
+
24
+ // File MAP — rule vocabulary is the devkit defaults engine's (minimatch patterns,
25
+ // last-match-wins). Engine built-ins cover what used to be explicit rules here:
26
+ // `_.` renames (`_.gitignore` → `.gitignore`), `.gitkeep` dir creation, `.DS_Store` skips,
27
+ // and write-only-if-changed.
28
+ const FILE_MAP = {
29
+ // Files to skip overwrite
30
+ '**/*.md': {
31
+ overwrite: false,
32
+ },
33
+ 'hooks/**/*': {
34
+ overwrite: false,
35
+ },
36
+ 'src/**/*': {
37
+ overwrite: false,
38
+ },
39
+ // Consumer-owned after seeding (e.g. test/_init.js fixture hooks) — copy when
40
+ // missing, never clobber the consumer's version on setup reruns (the engine
41
+ // fall-through default is overwrite: true)
42
+ 'test/**/*': {
43
+ overwrite: false,
44
+ },
45
+ 'src/**/*.{html,md}': {
46
+ skip: (file) => {
47
+ // Get the name
48
+ const name = path.basename(file.name, path.extname(file.name));
49
+ const htmlFilePath = path.join(file.destination, `${name}.html`);
50
+ const mdFilePath = path.join(file.destination, `${name}.md`);
51
+ const htmlFileExists = jetpack.exists(htmlFilePath);
52
+ const mdFileExists = jetpack.exists(mdFilePath);
53
+ const eitherExists = htmlFileExists || mdFileExists;
54
+
55
+ // Skip if both files exist
56
+ return eitherExists;
57
+ },
58
+ },
59
+
60
+ // Marker-section merges (framework owns Default, consumer owns Custom).
61
+ // The target-root .env is NOT scaffolded ([#678](https://github.com/Omega-JS-Stack/omega/issues/678)):
62
+ // the brand root's .env is the one file humans and the manager edit, a target
63
+ // .env is an optional per-key override a HUMAN writes, and no machine writes a
64
+ // target .env — so the template is gone.
65
+ '_.gitignore': {
66
+ mergeLines: true,
67
+ },
68
+
69
+ // The agent-docs chain (#63): AGENTS.md carries the content and uses the same
70
+ // marker-based merge as .gitignore; CLAUDE.md is the one-line `@AGENTS.md`
71
+ // pointer, left to the `**/*.md` rule above (copied when missing, never clobbered).
72
+ // Must come AFTER `**/*.md` (which sets overwrite: false) — last-match-wins,
73
+ // so this rule's `mergeLines: true` activates the merge path even though the
74
+ // catch-all would otherwise skip.
75
+ 'AGENTS.md': {
76
+ mergeLines: true,
77
+ },
78
+
79
+ // Consumer-owned after first seed — the framework-resolving shim
80
+ // (friction #14); consumers may customize their gulpfile.
81
+ 'gulpfile.js': {
82
+ overwrite: false,
83
+ },
84
+
85
+ // Config files
86
+ 'config/omega.json5': {
87
+ overwrite: true,
88
+ merge: true,
89
+ },
90
+ 'config/messages.json': {
91
+ overwrite: false,
92
+ },
93
+ 'config/description.md': {
94
+ overwrite: false,
95
+ },
96
+
97
+ // Files to run templating on
98
+ '.nvmrc': {
99
+ template: cleanVersions,
100
+ },
101
+
102
+ // Files to skip
103
+ '**/__temp/**/*': {
104
+ skip: true,
105
+ },
106
+ }
107
+
108
+ // Glob
109
+ const input = [
110
+ // Files to include
111
+ `${rootPathPackage}/dist/defaults/**/*`,
112
+ ];
113
+ const delay = 250;
114
+
115
+ // Extensions the global site-token pass applies to — same list (and same
116
+ // `[ site.x ]` bracket syntax) as utils/template-transform.js, which the
117
+ // distribute task still uses as a gulp stream.
118
+ const TEMPLATE_EXTENSIONS = ['html', 'md', 'liquid', 'json', 'yml', 'yaml'];
119
+
120
+ // The Chrome Web Store caps a listing description at 200 characters.
121
+ const STORE_DESCRIPTION_CAP = 200;
122
+
123
+ // The store description config/messages.json seeds. `brand.description` is
124
+ // already the one-sentence brand line, so it seeds appDescription whenever it
125
+ // FITS the store cap — every consumer used to hand-edit this one field (#573).
126
+ // Anything longer (or absent) keeps the generic phrasing.
127
+ function resolveAppDescription() {
128
+ const description = (config.brand?.description || '').trim();
129
+
130
+ if (description && description.length <= STORE_DESCRIPTION_CAP) {
131
+ return description;
132
+ }
133
+
134
+ return `The official ${config.brand?.name || ''} browser extension.`.replace(/\s{2,}/g, ' ');
135
+ }
136
+
137
+ // Every message the seed renders lands INSIDE a single-quoted JSON5 string, so a
138
+ // value carrying an apostrophe would otherwise leave the scaffolded file
139
+ // unparseable. All four seeded strings — the brand name three of them render, and
140
+ // the description — go through this one escape (#592).
141
+ function escapeSingleQuoted(value) {
142
+ return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'").replace(/\r?\n/g, ' ');
143
+ }
144
+
145
+ function siteTokenTransform(contents, item) {
146
+ const ext = path.extname(item.name).toLowerCase().slice(1);
147
+ if (!TEMPLATE_EXTENSIONS.includes(ext)) {
148
+ return contents;
149
+ }
150
+
151
+ try {
152
+ return template(contents, {
153
+ site: config,
154
+ versions: cleanVersions.versions,
155
+ extension: {
156
+ name: escapeSingleQuoted((config.brand?.name || '').trim()),
157
+ description: escapeSingleQuoted(resolveAppDescription()),
158
+ },
159
+ // The publish workflow's env block is GENERATED from the env schema
160
+ // ([#627](https://github.com/Omega-JS-Stack/omega/issues/627)) — one
161
+ // `KEY: ${{ secrets.KEY }}` line per key the schema delivers to the
162
+ // extension, at the token's two-space indent. The workflow scaffolds with
163
+ // overwrite: true, so every verb re-renders it from the current schema.
164
+ githubSecrets: renderSecretsBlock('extension', { indent: ' ' }),
165
+ }, {
166
+ brackets: ['[', ']'],
167
+ });
168
+ } catch (error) {
169
+ logger.error(`Error processing templates in ${item.name}:`, error);
170
+ return contents;
171
+ }
172
+ }
173
+
174
+ // Core scaffold — shared devkit engine. Exported for the build-layer scaffold
175
+ // test and the setup command (friction #13: consumers scaffold at setup, and
176
+ // the build's defaults task keeps them synced).
177
+ function scaffoldDefaults(options) {
178
+ options = options || {};
179
+ const outputDir = options.outputDir || path.resolve('./');
180
+
181
+ // Layer-aware config (cp121c/cp122d): brand targets carry NO local-layer
182
+ // omega.json5 — the brand file's `targets.*` is the per-target home, and
183
+ // that file is the STANDALONE escape hatch only. Inside a brand
184
+ // monorepo the template's config must not scaffold at all (the old
185
+ // targets-only seed kept resurrecting deleted local files on every setup).
186
+ const fileMap = { ...FILE_MAP };
187
+ const { resolveSeedMode } = require('../../vendor/config/index.js');
188
+ const seed = resolveSeedMode(outputDir);
189
+ if (!seed.standalone) {
190
+ fileMap['config/omega.json5'] = { skip: true };
191
+ // Brand doc unification (Ian 2026-07-20): inside a brand monorepo the
192
+ // BRAND ROOT is the one doc home — per-target AGENTS.md/CLAUDE.md/CHANGELOG.md/docs/
193
+ // never scaffold, and existing framework-owned-only copies are swept
194
+ // (retire rules; consumer content is never destroyed). Standalone projects
195
+ // keep them. Last-match-wins over the `**/*.md` preserve rule.
196
+ fileMap['AGENTS.md'] = { retire: true };
197
+ fileMap['CLAUDE.md'] = { retire: true };
198
+ fileMap['CHANGELOG.md'] = { retire: true };
199
+ fileMap['docs/**/*'] = { retire: true };
200
+ // CI (#265): GitHub runs workflows from the REPO ROOT only, so a per-target
201
+ // .github/workflows/ in a brand monorepo can never fire. It is composed
202
+ // into the brand root below instead — scoped to this app's path.
203
+ fileMap['.github/**/*'] = { skip: true };
204
+ }
205
+
206
+ const result = applyDefaults({
207
+ defaultsDir: path.join(rootPathPackage, 'dist', 'defaults'),
208
+ outputDir,
209
+ files: options.files || null,
210
+ fileMap,
211
+ transform: siteTokenTransform,
212
+ logger,
213
+ });
214
+
215
+ if (!seed.standalone) {
216
+ composeTargetWorkflows({
217
+ sourceDir: path.join(rootPathPackage, 'dist', 'defaults', '.github', 'workflows'),
218
+ targetDir: outputDir,
219
+ brandRoot: seed.brandRoot,
220
+ transform: (contents, name) => siteTokenTransform(contents, { name }),
221
+ logger: workflowLogger,
222
+ });
223
+ }
224
+
225
+ return result;
226
+ }
227
+
228
+ // Main task — the LOCAL half of the retired `omega setup` on the gulp lane
229
+ // ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)). A full pass runs
230
+ // ensureTarget (scripts, node check, peer deps, this scaffold, locality), so
231
+ // `npm start` and every gulp build heal the consumer tree on the way past. The
232
+ // watcher's single-file passes re-scaffold that ONE file and nothing else.
233
+ async function defaults(complete, changedFile) {
234
+ // Log
235
+ logger.log('Starting...');
236
+
237
+ if (changedFile) {
238
+ scaffoldDefaults({ files: [changedFile] });
239
+ } else {
240
+ // Required lazily: ensure-target requires this module back for
241
+ // scaffoldDefaults, and only one of the two can win at load time.
242
+ const { ensureTarget } = require('../../commands/lib/ensure-target.js');
243
+ await ensureTarget({
244
+ projectDir: Manager.getRootPath('project'),
245
+ log: (line) => logger.log(line),
246
+ warn: (line) => logger.warn(line),
247
+ });
248
+ }
249
+
250
+ // Log
251
+ logger.log('Finished!');
252
+
253
+ // Complete
254
+ return complete();
255
+ }
256
+
257
+ function defaultsWatcher(complete) {
258
+ // Quit if in build mode
259
+ if (Manager.isBuildMode()) {
260
+ watcherLogger.log('Skipping watcher in build mode');
261
+ return complete();
262
+ }
263
+
264
+ // Log
265
+ watcherLogger.log('Watching for changes...');
266
+
267
+ // Watch for changes
268
+ watch(input, { delay: delay, dot: true })
269
+ .on('change', (changedPath) => {
270
+ watcherLogger.log(`File changed (${changedPath})`);
271
+ // Call defaults with just the changed file
272
+ defaults(() => {}, changedPath);
273
+ });
274
+
275
+ // Complete
276
+ return complete();
277
+ }
278
+
279
+ // Default Task
280
+ module.exports = series(defaults, defaultsWatcher);
281
+ module.exports.scaffoldDefaults = scaffoldDefaults;
@@ -0,0 +1,172 @@
1
+ // Libraries
2
+ const Manager = new (require('../../build.js'));
3
+ const logger = Manager.logger('distribute');
4
+ const fontAwesomeLogger = Manager.logger('distribute:fontawesome');
5
+ const watcherLogger = Manager.logger('distribute:watcher');
6
+ const { src, dest, watch, series } = require('gulp');
7
+ const { Transform } = require('node:stream');
8
+ const path = require('path');
9
+ const jetpack = require('fs-jetpack');
10
+ const createTemplateTransform = require('./utils/template-transform');
11
+
12
+ // Load package
13
+ const package = Manager.getPackage('main');
14
+ const project = Manager.getPackage('project');
15
+ const manifest = Manager.getManifest();
16
+ const config = Manager.getConfig('project');
17
+ const rootPathPackage = Manager.getRootPath('main');
18
+ const rootPathProject = Manager.getRootPath('project');
19
+
20
+ // Constants
21
+ const LOUD = process.env.OMEGA_LOUD_LOGS === 'true';
22
+
23
+ // Glob
24
+ const input = [
25
+ // Files to include
26
+ 'src/**/*',
27
+
28
+ // Files to exclude
29
+ // NOTE: images are NOT excluded — this framework ships no imagemin task, so
30
+ // excluding them only meant a consumer's static images never reached dist/
31
+ // and every project copied them by hand from a build:pre hook (#259).
32
+ // JS files handled by the bundle task
33
+ '!src/**/*.js',
34
+ // CSS/SCSS files handled by sass task
35
+ '!src/**/*.{css,scss,sass}',
36
+ // HTML files in views handled by html task
37
+ '!src/views/**/*.html',
38
+ // Exlcude .DS_Store files
39
+ '!**/.DS_Store',
40
+ // Exclude any temp files
41
+ ];
42
+ const output = 'dist';
43
+ const delay = 250;
44
+
45
+ // Index
46
+ let index = -1;
47
+
48
+ // Copy FontAwesome webfonts from node_modules if installed
49
+ function copyFontAwesomeWebfonts() {
50
+ const fontAwesomeWebfontsSource = path.resolve(rootPathProject, 'node_modules/@fortawesome/fontawesome-free/webfonts');
51
+ const fontAwesomeWebfontsDest = path.resolve(rootPathProject, 'dist/assets/webfonts');
52
+
53
+ // Check if FontAwesome is installed
54
+ if (!jetpack.exists(fontAwesomeWebfontsSource)) {
55
+ fontAwesomeLogger.log('Not installed, skipping webfonts copy');
56
+ return;
57
+ }
58
+
59
+ // Create destination directory
60
+ jetpack.dir(fontAwesomeWebfontsDest);
61
+
62
+ // Copy .woff2 files
63
+ const webfontFiles = jetpack.find(fontAwesomeWebfontsSource, { matching: '*.woff2' });
64
+
65
+ webfontFiles.forEach(file => {
66
+ const fileName = path.basename(file);
67
+ const destPath = path.join(fontAwesomeWebfontsDest, fileName);
68
+ jetpack.copy(file, destPath, { overwrite: true });
69
+ fontAwesomeLogger.log(`Copied ${fileName}`);
70
+ });
71
+
72
+ fontAwesomeLogger.log(`Copied ${webfontFiles.length} webfont file(s)`);
73
+ }
74
+
75
+ // Main task
76
+ function distribute() {
77
+ return new Promise(async function(resolve, reject) {
78
+ // Increment index
79
+ index++;
80
+
81
+ // Log
82
+ logger.log('Starting...');
83
+
84
+ // Copy FontAwesome webfonts first
85
+ copyFontAwesomeWebfonts();
86
+
87
+ // Complete
88
+ return src(input, {
89
+ base: 'src',
90
+ dot: true,
91
+ encoding: false
92
+ })
93
+ .pipe(customTransform())
94
+ .pipe(createTemplateTransform({site: config}))
95
+ .pipe(dest(output, { encoding: false }))
96
+ .on('finish', () => {
97
+ // Log
98
+ logger.log('Finished!');
99
+
100
+ // Complete
101
+ return resolve();
102
+ });
103
+ });
104
+ }
105
+
106
+ function customTransform() {
107
+ return new Transform({
108
+ objectMode: true,
109
+ transform(file, _, callback) {
110
+ // Skip if it's a directory
111
+ if (file.isDirectory()) {
112
+ return callback(null, file);
113
+ }
114
+
115
+ // Get relative path from src base
116
+ const relativePath = path.relative(file.base, file.path).replace(/\\/g, '/');
117
+
118
+ // Log
119
+ if (LOUD) {
120
+ logger.log(`Processing file: ${relativePath}`);
121
+ }
122
+
123
+ // Change path if it starts with 'pages/'
124
+ // if (relativePath.startsWith('pages/')) {
125
+ // // Remove 'pages/' prefix
126
+ // const newRelativePath = relativePath.replace(/^pages\//, '');
127
+
128
+ // // Update file path to remove pages directory
129
+ // // This will make src/pages/index.html -> dist/index.html
130
+ // file.path = path.join(file.base, newRelativePath);
131
+
132
+ // // Log
133
+ // logger.log(` -> Moving from pages/ to root: ${newRelativePath}`);
134
+ // }
135
+
136
+ // Push the file
137
+ this.push(file);
138
+
139
+ // Continue
140
+ callback();
141
+ },
142
+ });
143
+ }
144
+
145
+ // Watcher task
146
+ function distributeWatcher(complete) {
147
+ // Quit if in build mode
148
+ if (Manager.isBuildMode()) {
149
+ watcherLogger.log('Skipping watcher in build mode');
150
+ return complete();
151
+ }
152
+
153
+ // Log
154
+ watcherLogger.log('Watching for changes...');
155
+
156
+ // Watch for changes
157
+ watch(input, { delay: delay, dot: true }, distribute)
158
+ .on('change', function(path) {
159
+ watcherLogger.log(`File ${path} was changed`);
160
+ });
161
+
162
+ // Complete
163
+ return complete();
164
+ }
165
+
166
+ // Default Task
167
+ module.exports = series(
168
+ // Manager.wrapTask('distribute', distribute),
169
+ distribute,
170
+ distributeWatcher
171
+ );
172
+ module.exports.distribute = distribute;
@@ -0,0 +1,25 @@
1
+ // Libraries
2
+ const Manager = new (require('../../build.js'));
3
+ const logger = Manager.logger('fontawesome');
4
+ const { series } = require('gulp');
5
+ const { emitIcons } = require('../../vendor/devkit/icons.js');
6
+
7
+ // Emit the brand's Font Awesome set (C4 cp112) into dist/assets/icons —
8
+ // the extension-page icon renderer fetches from
9
+ // chrome.runtime.getURL('assets/icons/<style>/<name>.svg'), so the packaged
10
+ // extension carries its icons offline, Pro included when the brand
11
+ // supplies one (OMEGA_FONTAWESOME_ROOT or a fontawesome-pro install).
12
+ // One task run per build — no watcher (the set only changes when the
13
+ // brand's supply does).
14
+ function fontawesome(complete) {
15
+ const result = emitIcons({ outDir: 'dist' });
16
+
17
+ // Log
18
+ logger.log(`Emitted ${result.files} icons → ${result.dest}`);
19
+
20
+ // Complete
21
+ return complete();
22
+ }
23
+
24
+ // Default Task
25
+ module.exports = series(fontawesome);
@@ -0,0 +1,163 @@
1
+ // Libraries
2
+ const Manager = new (require('../../build.js'));
3
+ const logger = Manager.logger('html');
4
+ const watcherLogger = Manager.logger('html:watcher');
5
+ const { src, dest, watch, series } = require('gulp');
6
+ const { Transform } = require('node:stream');
7
+ const jetpack = require('fs-jetpack');
8
+ const path = require('path');
9
+ const { template } = require('node-powertools');
10
+
11
+ // Load package
12
+ const package = Manager.getPackage('main');
13
+ const project = Manager.getPackage('project');
14
+ const config = Manager.getConfig('project');
15
+ const rootPathPackage = Manager.getRootPath('main');
16
+ const rootPathProject = Manager.getRootPath('project');
17
+
18
+ // Glob
19
+ const input = [
20
+ // Files to include
21
+ 'src/views/**/*.html',
22
+
23
+ // Files to exclude
24
+ '!src/views/**/_*.html',
25
+ ];
26
+ const output = 'dist/views';
27
+ const delay = 250;
28
+
29
+ // Main task
30
+ function html(complete) {
31
+ // Log
32
+ logger.log('Starting...');
33
+
34
+ // Load the template
35
+ const templatePath = path.join(rootPathPackage, 'dist', 'config', 'page-template.html');
36
+ const templateContent = jetpack.read(templatePath);
37
+
38
+ if (!templateContent) {
39
+ logger.error('Template not found at:', templatePath);
40
+ return complete();
41
+ }
42
+
43
+ // Process HTML files
44
+ return src(input)
45
+ .pipe(processHtml(templateContent))
46
+ .pipe(dest(output))
47
+ .on('finish', () => {
48
+ logger.log('Finished!');
49
+ return complete();
50
+ });
51
+ }
52
+
53
+ // Process HTML transform
54
+ function processHtml(templateContent) {
55
+ return new Transform({
56
+ objectMode: true,
57
+ transform(file, _, callback) {
58
+ // Skip if it's a directory
59
+ if (file.isDirectory()) {
60
+ return callback(null, file);
61
+ }
62
+
63
+ try {
64
+ // Get the view name from the file path
65
+ const viewName = path.basename(file.path, '.html');
66
+ const relativePath = path.relative(path.join(rootPathProject, 'src/views'), file.dirname);
67
+ const viewNameWithPath = relativePath ? `${relativePath}/${viewName}` : viewName;
68
+
69
+ // Read the content (body HTML)
70
+ const bodyContent = file.contents.toString();
71
+
72
+ // Determine the component name for CSS/JS loading
73
+ // Template already includes /components/ prefix, so just provide the component path
74
+ // Pages can have multiple files (index, pricing, login, etc.)
75
+ // Other components (popup, options, etc.) only have index.html
76
+ let componentName;
77
+ if (relativePath.startsWith('pages/') || relativePath === 'pages') {
78
+ // Pages directory: include full path with filename
79
+ // pages/index.html -> pages/index
80
+ // pages/pricing.html -> pages/pricing
81
+ componentName = viewNameWithPath;
82
+ } else if (relativePath && viewName === 'index') {
83
+ // Other components with index.html: use just the directory name
84
+ // popup/index.html -> popup
85
+ // options/index.html -> options
86
+ componentName = relativePath;
87
+ } else if (relativePath) {
88
+ // Non-index files in other directories: use full path
89
+ componentName = viewNameWithPath;
90
+ } else {
91
+ // No path: use viewName
92
+ componentName = viewName;
93
+ }
94
+
95
+ // Prepare template data
96
+ const data = {
97
+ content: bodyContent,
98
+ page: {
99
+ name: componentName,
100
+ path: viewNameWithPath,
101
+ title: config.brand?.name || 'Extension',
102
+ },
103
+ theme: {
104
+ appearance: config.theme?.appearance || 'dark',
105
+ },
106
+ brand: config.brand || {},
107
+ cacheBust: Date.now(),
108
+ };
109
+
110
+ // Apply template with custom brackets
111
+ // First, template the body content to replace any {{ }} placeholders in the view
112
+ const templatedBody = template(bodyContent, data, {
113
+ brackets: ['{{', '}}'],
114
+ });
115
+
116
+ // Update data with templated body
117
+ data.content = templatedBody;
118
+
119
+ // Then template the outer page template
120
+ const rendered = template(templateContent, data, {
121
+ brackets: ['{{', '}}'],
122
+ });
123
+
124
+ // Update file contents
125
+ file.contents = Buffer.from(rendered);
126
+
127
+ // Log
128
+ logger.log(`Processed: ${viewNameWithPath}.html`);
129
+
130
+ // Push the file
131
+ this.push(file);
132
+ return callback();
133
+ } catch (error) {
134
+ logger.error('Error processing HTML:', error);
135
+ return callback(error);
136
+ }
137
+ },
138
+ });
139
+ }
140
+
141
+ // Watcher task
142
+ function htmlWatcher(complete) {
143
+ // Quit if in build mode
144
+ if (Manager.isBuildMode()) {
145
+ watcherLogger.log('Skipping watcher in build mode');
146
+ return complete();
147
+ }
148
+
149
+ // Log
150
+ watcherLogger.log('Watching for changes...');
151
+
152
+ // Watch for changes
153
+ watch(input, { delay: delay, dot: true }, html)
154
+ .on('change', function (path) {
155
+ watcherLogger.log(`File ${path} was changed`);
156
+ });
157
+
158
+ // Complete
159
+ return complete();
160
+ }
161
+
162
+ // Export task
163
+ module.exports = series(html, htmlWatcher);