@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.
- package/LICENSE +98 -0
- package/README.md +194 -0
- package/bin/omega +2 -0
- package/bin/omega-extension +2 -0
- package/bin/omg +2 -0
- package/dist/assets/css/bundles/.gitkeep +0 -0
- package/dist/assets/css/components/content/index.scss +5 -0
- package/dist/assets/css/components/options/index.scss +9 -0
- package/dist/assets/css/components/pages/index.scss +5 -0
- package/dist/assets/css/components/popup/index.scss +9 -0
- package/dist/assets/css/core/_animations.scss +64 -0
- package/dist/assets/css/core/_fontawesome.scss +146 -0
- package/dist/assets/css/core/_initialize.scss +23 -0
- package/dist/assets/css/core/_utilities.scss +80 -0
- package/dist/assets/css/omega-extension.scss +43 -0
- package/dist/assets/css/shell/_index.scss +207 -0
- package/dist/assets/css/tokens/_index.scss +166 -0
- package/dist/assets/js/core/app-shell.js +136 -0
- package/dist/assets/js/libs/initialize-tooltips.js +31 -0
- package/dist/assets/js/libs/recaptcha.js +94 -0
- package/dist/assets/js/main.js +4 -0
- package/dist/assets/themes/_template/README.md +115 -0
- package/dist/assets/themes/_template/_config.scss +60 -0
- package/dist/assets/themes/_template/_theme.js +14 -0
- package/dist/assets/themes/_template/_theme.scss +28 -0
- package/dist/assets/themes/_template/css/base/_root.scss +19 -0
- package/dist/assets/themes/_template/css/components/_components.scss +23 -0
- package/dist/assets/themes/base/README.md +5 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.html +33 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.json5 +33 -0
- package/dist/assets/themes/base/_components/data/org-chart/component.scss +183 -0
- package/dist/assets/themes/base/_components/heading/masthead/component.html +22 -0
- package/dist/assets/themes/base/_components/heading/masthead/component.json5 +30 -0
- package/dist/assets/themes/base/_components/heading/section-head/component.html +18 -0
- package/dist/assets/themes/base/_components/heading/section-head/component.json5 +27 -0
- package/dist/assets/themes/base/_components/pricing/features/component.html +29 -0
- package/dist/assets/themes/base/_components/pricing/features/component.json5 +30 -0
- package/dist/assets/themes/base/_hero/orbit/index.html +30 -0
- package/dist/assets/themes/base/_hero/orbit/script.js +33 -0
- package/dist/assets/themes/base/_hero/orbit/style.scss +133 -0
- package/dist/assets/themes/base/_includes/admin/sections/sidebar.html +3 -0
- package/dist/assets/themes/base/_includes/admin/sections/topbar.html +3 -0
- package/dist/assets/themes/base/_includes/backend/sections/sidebar.html +3 -0
- package/dist/assets/themes/base/_includes/backend/sections/topbar.html +3 -0
- package/dist/assets/themes/base/_includes/frontend/components/connection-card.html +49 -0
- package/dist/assets/themes/base/_includes/frontend/components/post-card.html +54 -0
- package/dist/assets/themes/base/_includes/frontend/sections/account-connections.html +42 -0
- package/dist/assets/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
- package/dist/assets/themes/base/_includes/frontend/sections/footer.html +154 -0
- package/dist/assets/themes/base/_includes/frontend/sections/nav.html +276 -0
- package/dist/assets/themes/base/_includes/global/sections/account.html +72 -0
- package/dist/assets/themes/base/_includes/global/sections/app-sidebar.html +248 -0
- package/dist/assets/themes/base/_includes/global/sections/app-topbar.html +228 -0
- package/dist/assets/themes/base/_includes/global/sections/page-header.html +99 -0
- package/dist/assets/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
- package/dist/assets/themes/base/_layouts/admin/core/minimal.html +23 -0
- package/dist/assets/themes/base/_layouts/backend/core/base.html +57 -0
- package/dist/assets/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
- package/dist/assets/themes/base/_layouts/backend/core/minimal.html +32 -0
- package/dist/assets/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
- package/dist/assets/themes/base/_layouts/frontend/core/base.html +31 -0
- package/dist/assets/themes/base/_layouts/frontend/core/cover.html +40 -0
- package/dist/assets/themes/base/_layouts/frontend/core/minimal.html +47 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/404.html +54 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/about.html +144 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/app.html +142 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/contact.html +214 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/download.html +793 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/feedback.html +171 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/index.html +66 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/pricing.html +596 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/status.html +361 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/team/index.html +210 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/team/member.html +125 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
- package/dist/assets/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
- package/dist/assets/themes/base/_sections/about/hero/section.html +68 -0
- package/dist/assets/themes/base/_sections/about/hero/section.json5 +58 -0
- package/dist/assets/themes/base/_sections/about/letter/section.html +60 -0
- package/dist/assets/themes/base/_sections/about/letter/section.json5 +56 -0
- package/dist/assets/themes/base/_sections/about/photo-band/section.html +24 -0
- package/dist/assets/themes/base/_sections/about/photo-band/section.json5 +23 -0
- package/dist/assets/themes/base/_sections/about/principles/section.html +17 -0
- package/dist/assets/themes/base/_sections/about/principles/section.json5 +34 -0
- package/dist/assets/themes/base/_sections/about/timeline/section.html +20 -0
- package/dist/assets/themes/base/_sections/about/timeline/section.json5 +34 -0
- package/dist/assets/themes/base/_sections/marketing/bento/section.html +91 -0
- package/dist/assets/themes/base/_sections/marketing/bento/section.json5 +152 -0
- package/dist/assets/themes/base/_sections/marketing/cta/section.html +44 -0
- package/dist/assets/themes/base/_sections/marketing/cta/section.json5 +47 -0
- package/dist/assets/themes/base/_sections/marketing/faq/section.html +52 -0
- package/dist/assets/themes/base/_sections/marketing/faq/section.json5 +68 -0
- package/dist/assets/themes/base/_sections/marketing/hero/section.html +349 -0
- package/dist/assets/themes/base/_sections/marketing/hero/section.json5 +335 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
- package/dist/assets/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
- package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
- package/dist/assets/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.html +62 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.js +44 -0
- package/dist/assets/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
- package/dist/assets/themes/base/_sections/marketing/prose/section.html +22 -0
- package/dist/assets/themes/base/_sections/marketing/prose/section.json5 +41 -0
- package/dist/assets/themes/base/_sections/marketing/showcase/section.html +35 -0
- package/dist/assets/themes/base/_sections/marketing/showcase/section.json5 +52 -0
- package/dist/assets/themes/base/_sections/marketing/stats/section.html +32 -0
- package/dist/assets/themes/base/_sections/marketing/stats/section.json5 +44 -0
- package/dist/assets/themes/base/_sections/marketing/testimonials/section.html +54 -0
- package/dist/assets/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.html +30 -0
- package/dist/assets/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.html +7 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.js +22 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.json5 +24 -0
- package/dist/assets/themes/base/_sections/verts/unit/section.scss +24 -0
- package/dist/assets/themes/base/_theme.js +13 -0
- package/dist/assets/themes/base/_theme.scss +4 -0
- package/dist/assets/themes/bootstrap/_theme.js +16 -0
- package/dist/assets/themes/bootstrap/_theme.scss +11 -0
- package/dist/assets/themes/bootstrap/js/index.esm.js +19 -0
- package/dist/assets/themes/bootstrap/js/index.umd.js +34 -0
- package/dist/assets/themes/bootstrap/js/src/alert.js +87 -0
- package/dist/assets/themes/bootstrap/js/src/base-component.js +86 -0
- package/dist/assets/themes/bootstrap/js/src/button.js +72 -0
- package/dist/assets/themes/bootstrap/js/src/carousel.js +474 -0
- package/dist/assets/themes/bootstrap/js/src/collapse.js +297 -0
- package/dist/assets/themes/bootstrap/js/src/dom/data.js +55 -0
- package/dist/assets/themes/bootstrap/js/src/dom/event-handler.js +317 -0
- package/dist/assets/themes/bootstrap/js/src/dom/manipulator.js +71 -0
- package/dist/assets/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
- package/dist/assets/themes/bootstrap/js/src/dropdown.js +458 -0
- package/dist/assets/themes/bootstrap/js/src/modal.js +378 -0
- package/dist/assets/themes/bootstrap/js/src/offcanvas.js +282 -0
- package/dist/assets/themes/bootstrap/js/src/popover.js +97 -0
- package/dist/assets/themes/bootstrap/js/src/scrollspy.js +296 -0
- package/dist/assets/themes/bootstrap/js/src/tab.js +315 -0
- package/dist/assets/themes/bootstrap/js/src/toast.js +224 -0
- package/dist/assets/themes/bootstrap/js/src/tooltip.js +632 -0
- package/dist/assets/themes/bootstrap/js/src/util/backdrop.js +151 -0
- package/dist/assets/themes/bootstrap/js/src/util/component-functions.js +35 -0
- package/dist/assets/themes/bootstrap/js/src/util/config.js +65 -0
- package/dist/assets/themes/bootstrap/js/src/util/focustrap.js +115 -0
- package/dist/assets/themes/bootstrap/js/src/util/index.js +306 -0
- package/dist/assets/themes/bootstrap/js/src/util/sanitizer.js +117 -0
- package/dist/assets/themes/bootstrap/js/src/util/scrollbar.js +114 -0
- package/dist/assets/themes/bootstrap/js/src/util/swipe.js +146 -0
- package/dist/assets/themes/bootstrap/js/src/util/template-factory.js +160 -0
- package/dist/assets/themes/bootstrap/overrides/_accordion.scss +21 -0
- package/dist/assets/themes/bootstrap/overrides/_avatars.scss +51 -0
- package/dist/assets/themes/bootstrap/overrides/_blog-images.scss +45 -0
- package/dist/assets/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
- package/dist/assets/themes/bootstrap/overrides/_color-shades.scss +25 -0
- package/dist/assets/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
- package/dist/assets/themes/bootstrap/overrides/_index.scss +30 -0
- package/dist/assets/themes/bootstrap/overrides/_links.scss +26 -0
- package/dist/assets/themes/bootstrap/overrides/_soft-colors.scss +99 -0
- package/dist/assets/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
- package/dist/assets/themes/bootstrap/overrides/_spinners.scss +22 -0
- package/dist/assets/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_accordion.scss +153 -0
- package/dist/assets/themes/bootstrap/scss/_alert.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_badge.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/_breadcrumb.scss +40 -0
- package/dist/assets/themes/bootstrap/scss/_button-group.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_buttons.scss +216 -0
- package/dist/assets/themes/bootstrap/scss/_card.scss +238 -0
- package/dist/assets/themes/bootstrap/scss/_carousel.scss +226 -0
- package/dist/assets/themes/bootstrap/scss/_close.scss +66 -0
- package/dist/assets/themes/bootstrap/scss/_containers.scss +41 -0
- package/dist/assets/themes/bootstrap/scss/_dropdown.scss +250 -0
- package/dist/assets/themes/bootstrap/scss/_forms.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/_functions.scss +302 -0
- package/dist/assets/themes/bootstrap/scss/_grid.scss +39 -0
- package/dist/assets/themes/bootstrap/scss/_helpers.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/_images.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_list-group.scss +199 -0
- package/dist/assets/themes/bootstrap/scss/_maps.scss +174 -0
- package/dist/assets/themes/bootstrap/scss/_mixins.scss +42 -0
- package/dist/assets/themes/bootstrap/scss/_modal.scss +240 -0
- package/dist/assets/themes/bootstrap/scss/_nav.scss +197 -0
- package/dist/assets/themes/bootstrap/scss/_navbar.scss +289 -0
- package/dist/assets/themes/bootstrap/scss/_offcanvas.scss +147 -0
- package/dist/assets/themes/bootstrap/scss/_pagination.scss +109 -0
- package/dist/assets/themes/bootstrap/scss/_placeholders.scss +51 -0
- package/dist/assets/themes/bootstrap/scss/_popover.scss +196 -0
- package/dist/assets/themes/bootstrap/scss/_progress.scss +68 -0
- package/dist/assets/themes/bootstrap/scss/_reboot.scss +611 -0
- package/dist/assets/themes/bootstrap/scss/_root.scss +187 -0
- package/dist/assets/themes/bootstrap/scss/_spinners.scss +85 -0
- package/dist/assets/themes/bootstrap/scss/_tables.scss +171 -0
- package/dist/assets/themes/bootstrap/scss/_toasts.scss +73 -0
- package/dist/assets/themes/bootstrap/scss/_tooltip.scss +119 -0
- package/dist/assets/themes/bootstrap/scss/_transitions.scss +27 -0
- package/dist/assets/themes/bootstrap/scss/_type.scss +106 -0
- package/dist/assets/themes/bootstrap/scss/_utilities.scss +806 -0
- package/dist/assets/themes/bootstrap/scss/_variables-dark.scss +102 -0
- package/dist/assets/themes/bootstrap/scss/_variables.scss +1753 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
- package/dist/assets/themes/bootstrap/scss/bootstrap.scss +52 -0
- package/dist/assets/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-check.scss +189 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-control.scss +214 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-range.scss +91 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-select.scss +80 -0
- package/dist/assets/themes/bootstrap/scss/forms/_form-text.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/forms/_input-group.scss +132 -0
- package/dist/assets/themes/bootstrap/scss/forms/_labels.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/forms/_validation.scss +12 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_position.scss +36 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/helpers/_vr.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_alert.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_banner.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_caret.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_container.scss +11 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_forms.scss +163 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_grid.scss +151 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_image.scss +16 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_lists.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_resize.scss +6 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_transition.scss +26 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
- package/dist/assets/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
- package/dist/assets/themes/bootstrap/scss/tests/jasmine.js +16 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
- package/dist/assets/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
- package/dist/assets/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
- package/dist/assets/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
- package/dist/assets/themes/bootstrap/scss/utilities/_api.scss +47 -0
- package/dist/assets/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
- package/dist/assets/themes/classy/README.md +89 -0
- package/dist/assets/themes/classy/_config.scss +245 -0
- package/dist/assets/themes/classy/_theme.js +31 -0
- package/dist/assets/themes/classy/_theme.scss +57 -0
- package/dist/assets/themes/classy/css/app/_panels.scss +183 -0
- package/dist/assets/themes/classy/css/base/_fonts.scss +79 -0
- package/dist/assets/themes/classy/css/base/_no-raise.scss +49 -0
- package/dist/assets/themes/classy/css/base/_root.scss +113 -0
- package/dist/assets/themes/classy/css/base/_typography.scss +154 -0
- package/dist/assets/themes/classy/css/base/_utilities.scss +284 -0
- package/dist/assets/themes/classy/css/components/_alerts.scss +51 -0
- package/dist/assets/themes/classy/css/components/_badges.scss +46 -0
- package/dist/assets/themes/classy/css/components/_buttons.scss +175 -0
- package/dist/assets/themes/classy/css/components/_cards.scss +41 -0
- package/dist/assets/themes/classy/css/components/_dropdowns.scss +48 -0
- package/dist/assets/themes/classy/css/components/_forms.scss +171 -0
- package/dist/assets/themes/classy/css/components/_receipt.scss +45 -0
- package/dist/assets/themes/classy/css/layout/_footer.scss +298 -0
- package/dist/assets/themes/classy/css/layout/_general.scss +209 -0
- package/dist/assets/themes/classy/css/layout/_nav.scss +154 -0
- package/dist/assets/themes/classy/css/layout/_shell.scss +458 -0
- package/dist/assets/themes/classy/css/marketing/_bento.scss +238 -0
- package/dist/assets/themes/classy/css/marketing/_content.scss +1328 -0
- package/dist/assets/themes/classy/css/marketing/_downloads.scss +246 -0
- package/dist/assets/themes/classy/css/marketing/_hero.scss +311 -0
- package/dist/assets/themes/classy/css/marketing/_sections.scss +649 -0
- package/dist/assets/themes/classy/css/pages/404/index.scss +67 -0
- package/dist/assets/themes/classy/css/pages/_auth.scss +235 -0
- package/dist/assets/themes/classy/css/pages/admin/firebase/index.scss +22 -0
- package/dist/assets/themes/classy/css/pages/blog/[slug].scss +56 -0
- package/dist/assets/themes/classy/css/pages/cookies.scss +2 -0
- package/dist/assets/themes/classy/css/pages/dashboard/account/index.scss +31 -0
- package/dist/assets/themes/classy/css/pages/feedback/index.scss +39 -0
- package/dist/assets/themes/classy/css/pages/legal/_document.scss +192 -0
- package/dist/assets/themes/classy/css/pages/payment/checkout/index.scss +585 -0
- package/dist/assets/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
- package/dist/assets/themes/classy/css/pages/privacy.scss +2 -0
- package/dist/assets/themes/classy/css/pages/status/index.scss +164 -0
- package/dist/assets/themes/classy/css/pages/terms.scss +2 -0
- package/dist/assets/themes/classy/css/pages/updates/index.scss +128 -0
- package/dist/assets/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
- package/dist/assets/themes/classy/js/hero-demo-form.js +56 -0
- package/dist/assets/themes/neobrutalism/README.md +118 -0
- package/dist/assets/themes/neobrutalism/_config.scss +139 -0
- package/dist/assets/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
- package/dist/assets/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
- package/dist/assets/themes/neobrutalism/_theme.js +24 -0
- package/dist/assets/themes/neobrutalism/_theme.scss +61 -0
- package/dist/assets/themes/neobrutalism/css/base/_mixins.scss +46 -0
- package/dist/assets/themes/neobrutalism/css/base/_root.scss +169 -0
- package/dist/assets/themes/neobrutalism/css/base/_typography.scss +61 -0
- package/dist/assets/themes/neobrutalism/css/base/_utilities.scss +89 -0
- package/dist/assets/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
- package/dist/assets/themes/neobrutalism/css/components/_buttons.scss +148 -0
- package/dist/assets/themes/neobrutalism/css/components/_cards.scss +47 -0
- package/dist/assets/themes/neobrutalism/css/components/_forms.scss +88 -0
- package/dist/assets/themes/neobrutalism/css/components/_marketing.scss +244 -0
- package/dist/assets/themes/neobrutalism/css/layout/_general.scss +213 -0
- package/dist/assets/themes/neobrutalism/css/layout/_navigation.scss +171 -0
- package/dist/assets/themes/neobrutalism/css/pages/index.scss +203 -0
- package/dist/assets/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
- package/dist/assets/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
- package/dist/assets/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
- package/dist/assets/themes/newsflash/README.md +117 -0
- package/dist/assets/themes/newsflash/_components/heading/lede/component.html +14 -0
- package/dist/assets/themes/newsflash/_components/heading/lede/component.json5 +23 -0
- package/dist/assets/themes/newsflash/_components/heading/rule-head/component.html +17 -0
- package/dist/assets/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
- package/dist/assets/themes/newsflash/_components/news/byline/component.html +12 -0
- package/dist/assets/themes/newsflash/_components/news/byline/component.json5 +18 -0
- package/dist/assets/themes/newsflash/_components/news/story-card/component.html +25 -0
- package/dist/assets/themes/newsflash/_components/news/story-card/component.json5 +21 -0
- package/dist/assets/themes/newsflash/_config.scss +147 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/core/base.html +51 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
- package/dist/assets/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.html +39 -0
- package/dist/assets/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
- package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
- package/dist/assets/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
- package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
- package/dist/assets/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
- package/dist/assets/themes/newsflash/_theme.js +24 -0
- package/dist/assets/themes/newsflash/_theme.scss +70 -0
- package/dist/assets/themes/newsflash/css/base/_fonts.scss +80 -0
- package/dist/assets/themes/newsflash/css/base/_mixins.scss +51 -0
- package/dist/assets/themes/newsflash/css/base/_root.scss +257 -0
- package/dist/assets/themes/newsflash/css/base/_typography.scss +49 -0
- package/dist/assets/themes/newsflash/css/base/_utilities.scss +122 -0
- package/dist/assets/themes/newsflash/css/components/_badges.scss +65 -0
- package/dist/assets/themes/newsflash/css/components/_billing-toggle.scss +61 -0
- package/dist/assets/themes/newsflash/css/components/_buttons.scss +139 -0
- package/dist/assets/themes/newsflash/css/components/_cards.scss +47 -0
- package/dist/assets/themes/newsflash/css/components/_editorial.scss +173 -0
- package/dist/assets/themes/newsflash/css/components/_forms.scss +75 -0
- package/dist/assets/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
- package/dist/assets/themes/newsflash/css/components/_panels.scss +156 -0
- package/dist/assets/themes/newsflash/css/components/_ticker.scss +67 -0
- package/dist/assets/themes/newsflash/css/layout/_general.scss +330 -0
- package/dist/assets/themes/newsflash/css/layout/_navigation.scss +168 -0
- package/dist/assets/themes/newsflash/css/pages/404/index.scss +79 -0
- package/dist/assets/themes/newsflash/css/pages/blog/[slug].scss +186 -0
- package/dist/assets/themes/newsflash/css/pages/blog/index.scss +17 -0
- package/dist/assets/themes/newsflash/css/pages/index.scss +157 -0
- package/dist/assets/themes/newsflash/css/pages/pricing/index.scss +55 -0
- package/dist/assets/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
- package/dist/assets/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
- package/dist/assets/themes/newsflash/js/pages/blog/[slug].js +29 -0
- package/dist/assets/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
- package/dist/background.js +684 -0
- package/dist/build.js +268 -0
- package/dist/cli-run.js +25 -0
- package/dist/cli.js +30 -0
- package/dist/commands/build.js +67 -0
- package/dist/commands/clean.js +29 -0
- package/dist/commands/deploy.js +97 -0
- package/dist/commands/install.js +58 -0
- package/dist/commands/lib/dependencies.js +33 -0
- package/dist/commands/lib/deploy-precheck.js +57 -0
- package/dist/commands/lib/ensure-target.js +151 -0
- package/dist/commands/lib/push-secrets.js +60 -0
- package/dist/commands/migrate.js +77 -0
- package/dist/commands/test.js +110 -0
- package/dist/commands/update.js +21 -0
- package/dist/commands/version.js +12 -0
- package/dist/config/manifest.json +117 -0
- package/dist/config/page-template.html +21 -0
- package/dist/content.js +37 -0
- package/dist/defaults/.github/workflows/publish.yml +86 -0
- package/dist/defaults/.nvmrc +1 -0
- package/dist/defaults/.vscode/settings.json +8 -0
- package/dist/defaults/AGENTS.md +113 -0
- package/dist/defaults/CHANGELOG.md +15 -0
- package/dist/defaults/CLAUDE.md +1 -0
- package/dist/defaults/_.gitignore +75 -0
- package/dist/defaults/config/description.md +46 -0
- package/dist/defaults/config/messages.json +20 -0
- package/dist/defaults/config/omega.json5 +64 -0
- package/dist/defaults/docs/README.md +17 -0
- package/dist/defaults/gulpfile.js +6 -0
- package/dist/defaults/hooks/build/post.js +8 -0
- package/dist/defaults/hooks/build/pre.js +8 -0
- package/dist/defaults/src/assets/css/bundles/.gitkeep +0 -0
- package/dist/defaults/src/assets/css/components/content/index.scss +11 -0
- package/dist/defaults/src/assets/css/components/offscreen/index.scss +4 -0
- package/dist/defaults/src/assets/css/components/options/index.scss +14 -0
- package/dist/defaults/src/assets/css/components/pages/index.scss +10 -0
- package/dist/defaults/src/assets/css/components/popup/index.scss +10 -0
- package/dist/defaults/src/assets/css/components/sidepanel/index.scss +6 -0
- package/dist/defaults/src/assets/css/main.scss +32 -0
- package/dist/defaults/src/assets/images/.gitkeep +0 -0
- package/dist/defaults/src/assets/js/components/background/index.js +25 -0
- package/dist/defaults/src/assets/js/components/content/index.js +22 -0
- package/dist/defaults/src/assets/js/components/offscreen/index.js +25 -0
- package/dist/defaults/src/assets/js/components/options/index.js +22 -0
- package/dist/defaults/src/assets/js/components/pages/index.js +22 -0
- package/dist/defaults/src/assets/js/components/popup/index.js +22 -0
- package/dist/defaults/src/assets/js/components/sidepanel/index.js +20 -0
- package/dist/defaults/src/assets/vendor/.gitkeep +0 -0
- package/dist/defaults/src/manifest.json +131 -0
- package/dist/defaults/src/views/offscreen/index.html +3 -0
- package/dist/defaults/src/views/options/index.html +8 -0
- package/dist/defaults/src/views/pages/index.html +10 -0
- package/dist/defaults/src/views/popup/index.html +4 -0
- package/dist/defaults/src/views/sidepanel/index.html +4 -0
- package/dist/defaults/test/README.md +41 -0
- package/dist/defaults/test/_init.js +10 -0
- package/dist/defaults/test/boot/externally-connectable.test.js +28 -0
- package/dist/gulp/config/locales.js +12 -0
- package/dist/gulp/main.js +78 -0
- package/dist/gulp/tasks/_.js +18 -0
- package/dist/gulp/tasks/audit.js +222 -0
- package/dist/gulp/tasks/bundle.js +687 -0
- package/dist/gulp/tasks/defaults.js +281 -0
- package/dist/gulp/tasks/distribute.js +172 -0
- package/dist/gulp/tasks/fontawesome.js +25 -0
- package/dist/gulp/tasks/html.js +163 -0
- package/dist/gulp/tasks/icons.js +126 -0
- package/dist/gulp/tasks/package.js +742 -0
- package/dist/gulp/tasks/publish.js +417 -0
- package/dist/gulp/tasks/sass.js +252 -0
- package/dist/gulp/tasks/serve.js +103 -0
- package/dist/gulp/tasks/translate.js +252 -0
- package/dist/gulp/tasks/utils/build-json.js +43 -0
- package/dist/gulp/tasks/utils/template-transform.js +50 -0
- package/dist/gulp/templates/BUILD_INSTRUCTIONS.md +69 -0
- package/dist/index.js +46 -0
- package/dist/lib/affiliatizer.js +224 -0
- package/dist/lib/analytics.js +26 -0
- package/dist/lib/auth-helpers.js +213 -0
- package/dist/lib/extension.js +116 -0
- package/dist/lib/icons.js +36 -0
- package/dist/lib/logger-lite.js +35 -0
- package/dist/lib/logger.js +4 -0
- package/dist/lib/messaging.js +48 -0
- package/dist/lib/safe-install.js +4 -0
- package/dist/lib/theme.js +73 -0
- package/dist/lib/verts.js +68 -0
- package/dist/offscreen.js +31 -0
- package/dist/omega-bin.js +6 -0
- package/dist/options.js +80 -0
- package/dist/page.js +80 -0
- package/dist/popup.js +80 -0
- package/dist/sidepanel.js +80 -0
- package/dist/test/assert.js +4 -0
- package/dist/test/fixtures/consumer-extension/dist/background.js +23 -0
- package/dist/test/fixtures/consumer-extension/dist/manifest.json +20 -0
- package/dist/test/fixtures/consumer-extension/dist/options.html +10 -0
- package/dist/test/fixtures/consumer-extension/dist/popup.bundle.js +5 -0
- package/dist/test/fixtures/consumer-extension/dist/popup.html +12 -0
- package/dist/test/harness/extension/background.js +26 -0
- package/dist/test/harness/extension/manifest.json +27 -0
- package/dist/test/harness/extension/options.html +12 -0
- package/dist/test/harness/extension/popup.html +12 -0
- package/dist/test/harness/extension/sidepanel.html +12 -0
- package/dist/test/index.js +63 -0
- package/dist/test/runner.js +99 -0
- package/dist/test/runners/boot.js +221 -0
- package/dist/test/runners/chromium.js +391 -0
- package/dist/test/runners/helpers.js +24 -0
- package/dist/test/suites/background/messaging.test.js +44 -0
- package/dist/test/suites/background/storage.test.js +46 -0
- package/dist/test/suites/background/sw-context.test.js +49 -0
- package/dist/test/suites/boot/build-json-bake.test.js +80 -0
- package/dist/test/suites/boot/extension-loads.test.js +58 -0
- package/dist/test/suites/build/affiliatizer.test.js +64 -0
- package/dist/test/suites/build/app-launch.test.js +65 -0
- package/dist/test/suites/build/attach-log-file.test.js +99 -0
- package/dist/test/suites/build/auth-emulator-gate.test.js +118 -0
- package/dist/test/suites/build/auth-triggers.test.js +71 -0
- package/dist/test/suites/build/boot-discovery.test.js +134 -0
- package/dist/test/suites/build/boot-timeout.test.js +92 -0
- package/dist/test/suites/build/build-error-notification.test.js +122 -0
- package/dist/test/suites/build/build-json-bake.test.js +302 -0
- package/dist/test/suites/build/build-verb.test.js +138 -0
- package/dist/test/suites/build/bundle-targets.test.js +66 -0
- package/dist/test/suites/build/cache-warming.test.js +44 -0
- package/dist/test/suites/build/cli.test.js +150 -0
- package/dist/test/suites/build/default-boot-test.test.js +100 -0
- package/dist/test/suites/build/defaults-scaffold.test.js +287 -0
- package/dist/test/suites/build/deploy-dispatch.test.js +76 -0
- package/dist/test/suites/build/distribute-task.test.js +111 -0
- package/dist/test/suites/build/ensure-target.test.js +141 -0
- package/dist/test/suites/build/env-delivery.test.js +239 -0
- package/dist/test/suites/build/env-watch.test.js +86 -0
- package/dist/test/suites/build/expect.test.js +48 -0
- package/dist/test/suites/build/exports.test.js +53 -0
- package/dist/test/suites/build/extension-fallback.test.js +82 -0
- package/dist/test/suites/build/framework-deps.test.js +176 -0
- package/dist/test/suites/build/global-handlers.test.js +70 -0
- package/dist/test/suites/build/icon-sheet.test.js +74 -0
- package/dist/test/suites/build/logger-lite.test.js +61 -0
- package/dist/test/suites/build/manager.test.js +249 -0
- package/dist/test/suites/build/mode-helpers.test.js +136 -0
- package/dist/test/suites/build/omega-shell.test.js +103 -0
- package/dist/test/suites/build/omega-tokens.test.js +76 -0
- package/dist/test/suites/build/package-task.test.js +831 -0
- package/dist/test/suites/build/setup-scripts.test.js +172 -0
- package/dist/test/suites/build/strip-dev-blocks.test.js +122 -0
- package/dist/test/suites/build/template-replace.test.js +116 -0
- package/dist/test/suites/build/test-discovery.test.js +64 -0
- package/dist/test/suites/build/test-target-no-match.test.js +119 -0
- package/dist/test/suites/build/theme-resolve.test.js +115 -0
- package/dist/test/suites/build/translate.test.js +85 -0
- package/dist/test/suites/build/url-helpers.test.js +119 -0
- package/dist/test/suites/build/verb-logs.test.js +43 -0
- package/dist/test/suites/build/verts-binding.test.js +67 -0
- package/dist/test/suites/build/wakeup-ping.test.js +90 -0
- package/dist/test/suites/build/wave5-messenger.test.js +80 -0
- package/dist/test/suites/view/options-and-sidepanel.test.js +16 -0
- package/dist/test/suites/view/popup-context.test.js +53 -0
- package/dist/test/suites/view/sidepanel.test.js +16 -0
- package/dist/test/utils/extended-mode-warning.js +13 -0
- package/dist/utils/attach-log-file.js +4 -0
- package/dist/utils/mode-helpers.js +117 -0
- package/dist/utils/url-helpers.js +69 -0
- package/dist/vendor/account/engine.js +182 -0
- package/dist/vendor/account/features.js +220 -0
- package/dist/vendor/account/index.js +53 -0
- package/dist/vendor/account/schema.js +272 -0
- package/dist/vendor/account/subscription.js +38 -0
- package/dist/vendor/config/company.js +31 -0
- package/dist/vendor/config/defaults.js +173 -0
- package/dist/vendor/config/demo.js +18 -0
- package/dist/vendor/config/desktop-artifacts.js +110 -0
- package/dist/vendor/config/edit.js +769 -0
- package/dist/vendor/config/env-delivery.js +145 -0
- package/dist/vendor/config/env-rules.js +93 -0
- package/dist/vendor/config/env-schema.js +1078 -0
- package/dist/vendor/config/env.js +445 -0
- package/dist/vendor/config/hooks.js +97 -0
- package/dist/vendor/config/index.js +237 -0
- package/dist/vendor/config/instances.js +208 -0
- package/dist/vendor/config/load.js +490 -0
- package/dist/vendor/config/merge.js +68 -0
- package/dist/vendor/config/order.js +139 -0
- package/dist/vendor/config/ports.js +374 -0
- package/dist/vendor/config/providers.js +32 -0
- package/dist/vendor/config/repo.js +142 -0
- package/dist/vendor/config/retired-keys.js +430 -0
- package/dist/vendor/config/schema.js +1610 -0
- package/dist/vendor/config/secrets.js +50 -0
- package/dist/vendor/config/seed.js +34 -0
- package/dist/vendor/config/site-global.js +205 -0
- package/dist/vendor/config/validate.js +554 -0
- package/dist/vendor/config/winback.js +61 -0
- package/dist/vendor/devkit/actions-secrets.js +145 -0
- package/dist/vendor/devkit/attach-log-file.js +262 -0
- package/dist/vendor/devkit/bundle.js +292 -0
- package/dist/vendor/devkit/ci-workflows.js +520 -0
- package/dist/vendor/devkit/clean-dirs.js +28 -0
- package/dist/vendor/devkit/cli-router.js +156 -0
- package/dist/vendor/devkit/defaults-engine.js +372 -0
- package/dist/vendor/devkit/deploy-precheck.js +54 -0
- package/dist/vendor/devkit/deploy-record.js +180 -0
- package/dist/vendor/devkit/deploy.js +286 -0
- package/dist/vendor/devkit/empty-modules-plugin.js +64 -0
- package/dist/vendor/devkit/env-watch.js +132 -0
- package/dist/vendor/devkit/framework-deps.js +46 -0
- package/dist/vendor/devkit/icons.js +178 -0
- package/dist/vendor/devkit/license.js +155 -0
- package/dist/vendor/devkit/local.js +1905 -0
- package/dist/vendor/devkit/logger.js +128 -0
- package/dist/vendor/devkit/merge-line-files.js +296 -0
- package/dist/vendor/devkit/npm-registry.js +52 -0
- package/dist/vendor/devkit/omega-bin.js +345 -0
- package/dist/vendor/devkit/safe-install.js +18 -0
- package/dist/vendor/devkit/scaffold-guard.js +96 -0
- package/dist/vendor/devkit/strip-dev-blocks-plugin.js +29 -0
- package/dist/vendor/devkit/strip-dev-blocks.js +32 -0
- package/dist/vendor/devkit/target-dependencies.js +137 -0
- package/dist/vendor/devkit/target-secrets.js +165 -0
- package/dist/vendor/devkit/test/assert.js +120 -0
- package/dist/vendor/devkit/test/define-cases.js +104 -0
- package/dist/vendor/devkit/test/extended-mode-warning.js +22 -0
- package/dist/vendor/devkit/test/runner-core.js +554 -0
- package/dist/vendor/devkit/test/scope.js +162 -0
- package/dist/vendor/devkit/translate/cache.js +84 -0
- package/dist/vendor/devkit/translate/engine.js +243 -0
- package/dist/vendor/devkit/translate/index.js +49 -0
- package/dist/vendor/devkit/translate/languages.js +134 -0
- package/dist/vendor/devkit/translate/providers.js +188 -0
- package/dist/vendor/devkit/update.js +569 -0
- package/docs/affiliatizer.md +81 -0
- package/docs/audit.md +67 -0
- package/docs/auth.md +149 -0
- package/docs/build-system.md +176 -0
- package/docs/cdp-debugging.md +42 -0
- package/docs/cli.md +73 -0
- package/docs/common-mistakes.md +10 -0
- package/docs/components.md +87 -0
- package/docs/css.md +133 -0
- package/docs/defaults.md +72 -0
- package/docs/environment-detection.md +79 -0
- package/docs/extension.md +93 -0
- package/docs/hooks.md +111 -0
- package/docs/icons.md +47 -0
- package/docs/index.md +291 -0
- package/docs/logging.md +33 -0
- package/docs/managers.md +100 -0
- package/docs/offscreen.md +57 -0
- package/docs/publishing.md +182 -0
- package/docs/shared/agent-docs.md +89 -0
- package/docs/shared/analytics.md +612 -0
- package/docs/shared/brands.md +51 -0
- package/docs/shared/breaking-changes.md +497 -0
- package/docs/shared/config.md +1387 -0
- package/docs/shared/deploys.md +215 -0
- package/docs/shared/icons.md +201 -0
- package/docs/shared/local-dev.md +147 -0
- package/docs/shared/logging.md +202 -0
- package/docs/shared/monitoring.md +153 -0
- package/docs/shared/publishing.md +183 -0
- package/docs/shared/rulings.md +34 -0
- package/docs/shared/testing.md +147 -0
- package/docs/shared/theming.md +604 -0
- package/docs/shared/translation.md +291 -0
- package/docs/shared/updates.md +61 -0
- package/docs/templating.md +66 -0
- package/docs/test-boot-layer.md +143 -0
- package/docs/test-framework.md +411 -0
- package/docs/themes.md +89 -0
- package/docs/translations.md +73 -0
- package/docs/verts.md +67 -0
- package/docs/xss-prevention.md +95 -0
- 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);
|