@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,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ensure-target — the LOCAL, idempotent scaffold every verb runs
|
|
3
|
+
* ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)).
|
|
4
|
+
*
|
|
5
|
+
* `omega setup` used to own this half and nothing ran it for you, so a target
|
|
6
|
+
* drifted until someone remembered the command per target. It is retired: the
|
|
7
|
+
* "write it if missing" steps live here, the gulp `defaults` task calls it
|
|
8
|
+
* first (so `npm start` and every gulp build heal the tree), and the non-gulp
|
|
9
|
+
* verbs — `omega test`, `omega deploy` — call it themselves.
|
|
10
|
+
*
|
|
11
|
+
* What it guarantees, in this order:
|
|
12
|
+
*
|
|
13
|
+
* package.json the omega verb scripts + the npm-private latch — pure
|
|
14
|
+
* manifest edits, so they land before anything that throws
|
|
15
|
+
* node version FATAL when the shell is older than the framework's pin
|
|
16
|
+
* peer dependencies installed when missing or behind (a satisfied target
|
|
17
|
+
* installs nothing)
|
|
18
|
+
* defaults tree the consumer interior, via the gulp defaults task's
|
|
19
|
+
* scaffoldDefaults — the ONE scaffold implementation
|
|
20
|
+
* locality a WARNING when the framework is a `file:` link
|
|
21
|
+
*
|
|
22
|
+
* What needs the network is NOT here: the framework freshness check is an
|
|
23
|
+
* `omega deploy` precheck (deploy-precheck.js), and the one-time hook-layout
|
|
24
|
+
* migration is its own command (`omega migrate`).
|
|
25
|
+
*/
|
|
26
|
+
const path = require('path');
|
|
27
|
+
const jetpack = require('fs-jetpack');
|
|
28
|
+
const version = require('wonderful-version');
|
|
29
|
+
const Manager = new (require('../../build.js'));
|
|
30
|
+
const { ensurePeerDependencies, readProject } = require('./dependencies.js');
|
|
31
|
+
const { assertScaffoldable } = require('../../vendor/devkit/scaffold-guard.js');
|
|
32
|
+
|
|
33
|
+
const logger = Manager.logger('ensure-target');
|
|
34
|
+
const package = Manager.getPackage('main');
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Sync the consumer manifest: the omega verb scripts and the npm-private latch
|
|
38
|
+
* (extensions are never published to npm). Identical content is not a write
|
|
39
|
+
* (#572) — it matters more since #675, because this runs on EVERY verb.
|
|
40
|
+
*/
|
|
41
|
+
function setupScripts(projectDir, result) {
|
|
42
|
+
projectDir = projectDir || Manager.getRootPath('project');
|
|
43
|
+
result = result || { changed: [] };
|
|
44
|
+
|
|
45
|
+
const project = readProject(projectDir);
|
|
46
|
+
|
|
47
|
+
// Setup the scripts
|
|
48
|
+
project.scripts = project.scripts || {};
|
|
49
|
+
|
|
50
|
+
Object.keys(package.projectScripts).forEach((key) => {
|
|
51
|
+
project.scripts[key] = package.projectScripts[key];
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// Ensure the project is private (extensions should never be published to npm)
|
|
55
|
+
project.private = true;
|
|
56
|
+
|
|
57
|
+
// Save the project — npm's own shape, trailing newline included.
|
|
58
|
+
const projectPath = path.join(projectDir, 'package.json');
|
|
59
|
+
const contents = `${JSON.stringify(project, null, 2)}\n`;
|
|
60
|
+
|
|
61
|
+
if (jetpack.read(projectPath) === contents) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
jetpack.write(projectPath, contents);
|
|
66
|
+
result.changed.push('package.json (scripts + private)');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** The framework's pinned runtime is a FLOOR here — an older shell is fatal. */
|
|
70
|
+
function ensureNodeVersion(log) {
|
|
71
|
+
const installedVersion = version.clean(process.version);
|
|
72
|
+
const requiredVersion = version.clean(package.omega.nodeRuntime);
|
|
73
|
+
const isUpToDate = version.is(installedVersion, '>=', requiredVersion);
|
|
74
|
+
|
|
75
|
+
log(`Checking if Node.js is up to date (${logger.format.bold(installedVersion)} >= ${logger.format.bold(requiredVersion)}): ${isUpToDate ? logger.format.green('Yes') : logger.format.red('No')}`);
|
|
76
|
+
|
|
77
|
+
if (!isUpToDate) {
|
|
78
|
+
throw new Error(`Node version is out-of-date. Required version is ${requiredVersion}.`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** Warn when the framework is a `file:` link — that install never publishes. */
|
|
83
|
+
function checkLocality(projectDir, warn) {
|
|
84
|
+
const project = readProject(projectDir);
|
|
85
|
+
const installedVersion = project.devDependencies[package.name] || project.dependencies[package.name];
|
|
86
|
+
|
|
87
|
+
if (!installedVersion) {
|
|
88
|
+
throw new Error(`No installed version of ${package.name} found in dependencies or devDependencies.`);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (installedVersion.startsWith('file:')) {
|
|
92
|
+
warn(`⚠️⚠️⚠️ You are using the local version of ${package.name}. This WILL NOT WORK when published. ⚠️⚠️⚠️`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Make the target whole — idempotent, offline, and quiet when there is
|
|
98
|
+
* nothing to do.
|
|
99
|
+
*
|
|
100
|
+
* @param {object} [options]
|
|
101
|
+
* @param {string} [options.projectDir] - The target root (default: cwd).
|
|
102
|
+
* @param {function} [options.log] - Line logger (silent by default).
|
|
103
|
+
* @param {function} [options.warn] - Warning logger (silent by default).
|
|
104
|
+
* @returns {Promise<{ written: string[], merged: string[], changed: string[] }>}
|
|
105
|
+
* Target-relative paths per outcome — empty on a no-op run.
|
|
106
|
+
*/
|
|
107
|
+
async function ensureTarget(options) {
|
|
108
|
+
options = options || {};
|
|
109
|
+
const projectDir = options.projectDir || Manager.getRootPath('project');
|
|
110
|
+
const log = options.log || (() => {});
|
|
111
|
+
const warn = options.warn || (() => {});
|
|
112
|
+
const result = { written: [], merged: [], changed: [] };
|
|
113
|
+
|
|
114
|
+
// The framework's own tree is not a consumer target. Running the framework's
|
|
115
|
+
// suite from packages/extension puts the framework at the cwd, and a verb
|
|
116
|
+
// that scaffolds unconditionally would install its own peer deps into itself
|
|
117
|
+
// and scatter the consumer defaults through the package. Refuse, quietly:
|
|
118
|
+
// this is a normal state, not a broken one.
|
|
119
|
+
if (readProject(projectDir).name === package.name) {
|
|
120
|
+
return result;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// A workspace ROOT is not a target either — and unlike the case above, landing
|
|
124
|
+
// there is an accident (a verb run from the wrong cwd), so it fails LOUD (#699).
|
|
125
|
+
assertScaffoldable(projectDir);
|
|
126
|
+
|
|
127
|
+
setupScripts(projectDir, result);
|
|
128
|
+
ensureNodeVersion(log);
|
|
129
|
+
|
|
130
|
+
await ensurePeerDependencies({ projectDir, package, log });
|
|
131
|
+
|
|
132
|
+
// The consumer interior — the SAME engine run the build's defaults task
|
|
133
|
+
// performs (friction #13). Required lazily: that task requires this module
|
|
134
|
+
// back, and only one of the two can win at load time.
|
|
135
|
+
const { scaffoldDefaults } = require('../../gulp/tasks/defaults.js');
|
|
136
|
+
const applied = scaffoldDefaults({ outputDir: projectDir });
|
|
137
|
+
if (applied) {
|
|
138
|
+
result.written.push(...applied.written);
|
|
139
|
+
result.merged.push(...applied.merged);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
checkLocality(projectDir, warn);
|
|
143
|
+
|
|
144
|
+
for (const [label, files] of [['Created', result.written], ['Merged', result.merged], ['Synced', result.changed]]) {
|
|
145
|
+
if (files.length > 0) log(`${label} ${files.join(', ')}`);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
module.exports = { ensureTarget, setupScripts };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `.env` → GitHub Actions secrets publisher for the extension target
|
|
3
|
+
* ([#680](https://github.com/Omega-JS-Stack/omega/issues/680)).
|
|
4
|
+
*
|
|
5
|
+
* The publish workflow is dispatched with no `.env` on the runner, so every
|
|
6
|
+
* store credential and the baked Measurement Protocol secret reach the build
|
|
7
|
+
* as repo Actions secrets — and until now nothing PUT them there: a consumer
|
|
8
|
+
* pasted each one into the GitHub UI by hand, and a fresh brand's first publish
|
|
9
|
+
* failed on whichever one they missed. `omega deploy` now pushes them, exactly
|
|
10
|
+
* as web does.
|
|
11
|
+
*
|
|
12
|
+
* "Exactly as web does" is now literal: the derive → collect → guard → publish
|
|
13
|
+
* orchestration is `@omega.js/devkit/target-secrets`, and this file is the
|
|
14
|
+
* BIND — the target string and nothing else. Extension secrets are plain
|
|
15
|
+
* strings, so there is no file/base64 lane here; that is desktop's, for its
|
|
16
|
+
* signing certificates.
|
|
17
|
+
*/
|
|
18
|
+
const { collectTargetSecrets, declaredBrandRepo: declaredRepoFor, publishTargetSecrets } = require('../../vendor/devkit/target-secrets.js');
|
|
19
|
+
|
|
20
|
+
const TARGET = 'extension';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* The publishable secrets: the schema's extension delivery set, valued from
|
|
24
|
+
* the composed env. An empty value never claims a key.
|
|
25
|
+
*
|
|
26
|
+
* @param {string} targetDir - The target root (its .env is the local layer).
|
|
27
|
+
* @returns {Object<string, string>} key → value, ready to publish.
|
|
28
|
+
*/
|
|
29
|
+
function collectEnvSecrets(targetDir) {
|
|
30
|
+
return collectTargetSecrets({ targetDir, target: TARGET });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The brand's OWN repo as `owner/name`, from the composed config. Null when
|
|
35
|
+
* the config declares nothing usable or doesn't load.
|
|
36
|
+
*
|
|
37
|
+
* @param {string} targetDir - The target root.
|
|
38
|
+
* @returns {string|null}
|
|
39
|
+
*/
|
|
40
|
+
function declaredBrandRepo(targetDir) {
|
|
41
|
+
return declaredRepoFor({ targetDir, target: TARGET });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* The `omega deploy` precheck step: publish the target's composed values as
|
|
46
|
+
* repo Actions secrets.
|
|
47
|
+
*
|
|
48
|
+
* @param {object} options
|
|
49
|
+
* @param {string} options.targetDir - The target root.
|
|
50
|
+
* @param {object} options.logger - `{ log, warn, error }`.
|
|
51
|
+
* @param {object} [options.env] - Env map (default: process.env).
|
|
52
|
+
* @param {function} [options.execFn] - Injectable `gh` exec (tests).
|
|
53
|
+
* @param {function} [options.gitExecFn] - Injectable `git` exec for remote discovery (tests).
|
|
54
|
+
* @returns {{ skipped: string }|{ published: string[], failed: Array<object> }}
|
|
55
|
+
*/
|
|
56
|
+
function publishEnvSecrets(options) {
|
|
57
|
+
return publishTargetSecrets({ ...(options || {}), target: TARGET });
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
module.exports = { collectEnvSecrets, declaredBrandRepo, publishEnvSecrets };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega migrate` — the one-time, version-gated moves an upgrade needs.
|
|
3
|
+
*
|
|
4
|
+
* This used to be step one of `omega setup` and ran on every setup. Setup is
|
|
5
|
+
* retired ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)) and its
|
|
6
|
+
* local half now runs on every verb, which is the wrong home for a migration:
|
|
7
|
+
* a MOVE is not idempotent healing, it is a one-time upgrade step a consumer
|
|
8
|
+
* runs deliberately (the same shape `@omega.js/web` already ships).
|
|
9
|
+
*
|
|
10
|
+
* Today it carries one migration: hook files moved to the nested layout in
|
|
11
|
+
* 2.0.0. A `file:` install is skipped — a linked consumer is already current.
|
|
12
|
+
*/
|
|
13
|
+
const path = require('path');
|
|
14
|
+
const jetpack = require('fs-jetpack');
|
|
15
|
+
const version = require('wonderful-version');
|
|
16
|
+
const Manager = new (require('../build.js'));
|
|
17
|
+
const { readProject } = require('./lib/dependencies.js');
|
|
18
|
+
|
|
19
|
+
const logger = Manager.logger('migrate');
|
|
20
|
+
const package = Manager.getPackage('main');
|
|
21
|
+
|
|
22
|
+
// Old hook file name → its new nested path
|
|
23
|
+
const HOOK_MIGRATIONS = [
|
|
24
|
+
{ old: 'build:post.js', new: 'build/post.js' },
|
|
25
|
+
{ old: 'build:pre.js', new: 'build/pre.js' },
|
|
26
|
+
{ old: 'middleware:request.js', new: 'middleware/request.js' },
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
/** Move old flat hook files into the nested structure (introduced in 2.0.0). */
|
|
30
|
+
function migrateHooksToNestedStructure(projectDir) {
|
|
31
|
+
const hooksDir = path.join(projectDir, 'hooks');
|
|
32
|
+
let migratedCount = 0;
|
|
33
|
+
|
|
34
|
+
for (const migration of HOOK_MIGRATIONS) {
|
|
35
|
+
const oldPath = path.join(hooksDir, migration.old);
|
|
36
|
+
const newPath = path.join(hooksDir, migration.new);
|
|
37
|
+
|
|
38
|
+
if (!jetpack.exists(oldPath)) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (jetpack.exists(newPath)) {
|
|
43
|
+
logger.warn(`⚠️ Migrate ${migration.old}: ${migration.new} already exists`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
jetpack.move(oldPath, newPath, { overwrite: true });
|
|
47
|
+
logger.log(`✅ Migrated hook: ${migration.old} → ${migration.new}`);
|
|
48
|
+
migratedCount++;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (migratedCount > 0) {
|
|
52
|
+
logger.log(`✅ Migrated ${migratedCount} hook file(s) to new nested structure`);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return migratedCount;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
module.exports = async function (options) {
|
|
59
|
+
options = options || {};
|
|
60
|
+
|
|
61
|
+
const projectDir = options.projectDir || Manager.getRootPath('project');
|
|
62
|
+
const project = readProject(projectDir);
|
|
63
|
+
const installedVersion = project.devDependencies[package.name] || project.dependencies[package.name] || '0.0.0';
|
|
64
|
+
|
|
65
|
+
// A linked consumer builds from THIS source — there is nothing to migrate to.
|
|
66
|
+
if (installedVersion.startsWith('file:')) {
|
|
67
|
+
return logger.log('Local (`file:`) install — nothing to migrate.');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (version.is(installedVersion, '<=', '2.0.0')) {
|
|
71
|
+
migrateHooksToNestedStructure(projectDir);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
logger.log('Migration complete');
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
module.exports.migrateHooksToNestedStructure = migrateHooksToNestedStructure;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const Manager = new (require('../build.js'));
|
|
5
|
+
const logger = Manager.logger('test');
|
|
6
|
+
const { run } = require('../test/runner.js');
|
|
7
|
+
const attachLogFile = require('../utils/attach-log-file.js');
|
|
8
|
+
const { EXTENDED_MODE_WARNING } = require('../test/utils/extended-mode-warning.js');
|
|
9
|
+
const { noMatchMessage, noMatchExitCode } = require('../vendor/devkit/test/scope.js');
|
|
10
|
+
const { ensureTarget } = require('./lib/ensure-target.js');
|
|
11
|
+
|
|
12
|
+
module.exports = async function (options) {
|
|
13
|
+
// Tee all test output to <projectRoot>/logs/test.log (ANSI-stripped) — mirrors
|
|
14
|
+
// EM's test.log and @omega.js/backend's test.log pattern.
|
|
15
|
+
attachLogFile(path.join(process.cwd(), 'logs', 'test.log'));
|
|
16
|
+
|
|
17
|
+
// The local half of the retired `omega setup` (#675) — idempotent, offline,
|
|
18
|
+
// and quiet on a converged target. The gulp verbs get it from the `defaults`
|
|
19
|
+
// task; test runs no gulp, so it calls it here.
|
|
20
|
+
await ensureTarget({
|
|
21
|
+
projectDir: process.cwd(),
|
|
22
|
+
log: (line) => logger.log(line),
|
|
23
|
+
warn: (line) => logger.warn(line),
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const layer = options.layer || 'all';
|
|
27
|
+
// Positional target: `npx omega test <target>` where target supports source
|
|
28
|
+
// prefixes — `project:`, `project:<path>`, `mgr:`, `extension:`, or a bare `<path>`.
|
|
29
|
+
const target = (options._ && options._[1]) || null;
|
|
30
|
+
// `--filter` flag: substring match on test NAMES/descriptions (orthogonal to target).
|
|
31
|
+
const filter = options.filter || null;
|
|
32
|
+
const reporter = options.reporter || 'pretty';
|
|
33
|
+
// Extended mode — opt into tests that hit REAL external services (Firebase via @omega.js/client,
|
|
34
|
+
// push, any network call) instead of skipping them. Off by default so `npx omega test` stays
|
|
35
|
+
// fast and offline-safe. The canonical signal is the unprefixed `TEST_EXTENDED_MODE` env var
|
|
36
|
+
// — the SAME name across @omega.js/backend/BXM/UJM/EM (cross-framework parity); `--extended` is the CLI
|
|
37
|
+
// shorthand. Once set on process.env it propagates to every spawned test environment (the
|
|
38
|
+
// in-process Node runner, and Puppeteer's Chromium which inherits process.env).
|
|
39
|
+
const extended = options.extended === true
|
|
40
|
+
|| options.extended === 'true'
|
|
41
|
+
|| process.env.TEST_EXTENDED_MODE === 'true'
|
|
42
|
+
|| process.env.TEST_EXTENDED_MODE === '1';
|
|
43
|
+
|
|
44
|
+
if (extended) {
|
|
45
|
+
process.env.TEST_EXTENDED_MODE = 'true';
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Canonical signal — every Manager picks this up via isTesting().
|
|
49
|
+
process.env.OMEGA_TEST_MODE = 'true';
|
|
50
|
+
|
|
51
|
+
// When BXM itself runs its own boot-layer tests (the cwd's package.json is
|
|
52
|
+
// BXM's package.json), there's no real consumer extension to target. Point
|
|
53
|
+
// the boot runner at the fixture under dist/test/fixtures/consumer-extension
|
|
54
|
+
// unless the caller has already set OMEGA_TEST_BOOT_PROJECT explicitly.
|
|
55
|
+
if (!process.env.OMEGA_TEST_BOOT_PROJECT) {
|
|
56
|
+
try {
|
|
57
|
+
const cwdPkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'package.json'), 'utf8'));
|
|
58
|
+
if (cwdPkg.name === '@omega.js/extension') {
|
|
59
|
+
process.env.OMEGA_TEST_BOOT_PROJECT = path.join(__dirname, '..', 'test', 'fixtures', 'consumer-extension');
|
|
60
|
+
}
|
|
61
|
+
} catch (_) { /* no package.json — leave unset */ }
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (reporter !== 'json') {
|
|
65
|
+
logger.log(`Running tests (layer=${layer}${target ? ` target="${target}"` : ''}${filter ? ` filter="${filter}"` : ''}${extended ? ' +extended' : ''})`);
|
|
66
|
+
logger.log(`Test mode: ${extended ? 'extended (real external APIs)' : 'normal (external APIs skipped)'}`);
|
|
67
|
+
if (extended) {
|
|
68
|
+
logger.warn(EXTENDED_MODE_WARNING[0]);
|
|
69
|
+
EXTENDED_MODE_WARNING.slice(1).forEach((line) => logger.warn(line));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const result = await run({ layer, target, filter, reporter });
|
|
74
|
+
|
|
75
|
+
if (reporter === 'json') {
|
|
76
|
+
// Final machine-readable summary.
|
|
77
|
+
process.stdout.write(`${JSON.stringify({
|
|
78
|
+
event: 'summary',
|
|
79
|
+
passed: result.passed,
|
|
80
|
+
failed: result.failed,
|
|
81
|
+
skipped: result.skipped,
|
|
82
|
+
total: result.passed + result.failed + result.skipped,
|
|
83
|
+
})}\n`);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// A target that named files and matched none is a failed run, not an empty
|
|
87
|
+
// one: a typo'd path, or a suite renamed out from under it, used to report
|
|
88
|
+
// "0 passing" and exit 0
|
|
89
|
+
// ([#814](https://github.com/Omega-JS-Stack/omega/issues/814)).
|
|
90
|
+
if (result.noMatch) {
|
|
91
|
+
logger.error(noMatchMessage(result.noMatch));
|
|
92
|
+
// Standalone that is 1. Inside a brand-root fan-out the manager forwarded
|
|
93
|
+
// ONE target to every target, so a distinct code lets it count this as a
|
|
94
|
+
// miss rather than a failure (#814).
|
|
95
|
+
process.exitCode = noMatchExitCode();
|
|
96
|
+
await attachLogFile.detach();
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (result.failed > 0) {
|
|
101
|
+
process.exitCode = 1;
|
|
102
|
+
await attachLogFile.detach();
|
|
103
|
+
throw new Error(`${result.failed} test(s) failed`);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Close test.log and restore stdout/stderr. Nothing to flush: every write
|
|
107
|
+
// already went to the fd synchronously (#197), so detach() just closes the
|
|
108
|
+
// handle — the Results block is on disk before this line runs.
|
|
109
|
+
await attachLogFile.detach();
|
|
110
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega update` — dependency freshness report (npu-outdated semantics):
|
|
3
|
+
* installed/wanted/latest + patch/minor/major per dep, releases younger than
|
|
4
|
+
* --min-age days (default 7) QUARANTINED. `--apply` installs the
|
|
5
|
+
* non-quarantined, non-breaking set (`--major` opts into breaking) through
|
|
6
|
+
* npu when present. The whole verb is the shared devkit implementation.
|
|
7
|
+
*/
|
|
8
|
+
const Manager = new (require('../build.js'));
|
|
9
|
+
const logger = Manager.logger('update');
|
|
10
|
+
const { runUpdate } = require('../vendor/devkit/update.js');
|
|
11
|
+
|
|
12
|
+
module.exports = async function (options) {
|
|
13
|
+
await runUpdate({
|
|
14
|
+
dir: process.cwd(),
|
|
15
|
+
apply: options.apply,
|
|
16
|
+
major: options.major,
|
|
17
|
+
minAge: options.minAge ?? options['min-age'],
|
|
18
|
+
forceFresh: options.forceFresh || options['force-fresh'],
|
|
19
|
+
logger,
|
|
20
|
+
});
|
|
21
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const Manager = new (require('../build.js'));
|
|
3
|
+
const logger = Manager.logger('version');
|
|
4
|
+
|
|
5
|
+
// Load package
|
|
6
|
+
const package = Manager.getPackage('main');
|
|
7
|
+
const project = Manager.getPackage('project');
|
|
8
|
+
|
|
9
|
+
module.exports = async function (options) {
|
|
10
|
+
// Log
|
|
11
|
+
logger.log(package.version);
|
|
12
|
+
};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Basic info
|
|
3
|
+
manifest_version: 3,
|
|
4
|
+
name: '__MSG_appName__',
|
|
5
|
+
short_name: '__MSG_appNameShort__',
|
|
6
|
+
description: '__MSG_appDescription__',
|
|
7
|
+
|
|
8
|
+
// Icon
|
|
9
|
+
icons: {
|
|
10
|
+
'1024': 'assets/images/icons/icon-1024x.png',
|
|
11
|
+
'512': 'assets/images/icons/icon-512x.png',
|
|
12
|
+
'256': 'assets/images/icons/icon-256x.png',
|
|
13
|
+
'128': 'assets/images/icons/icon-128x.png',
|
|
14
|
+
'64': 'assets/images/icons/icon-64x.png',
|
|
15
|
+
'48': 'assets/images/icons/icon-48x.png',
|
|
16
|
+
'32': 'assets/images/icons/icon-32x.png',
|
|
17
|
+
'24': 'assets/images/icons/icon-24x.png',
|
|
18
|
+
'16': 'assets/images/icons/icon-16x.png',
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
// Default locale
|
|
22
|
+
default_locale: 'en',
|
|
23
|
+
|
|
24
|
+
// Background script
|
|
25
|
+
// Chrome uses service_worker, Firefox uses scripts array
|
|
26
|
+
background: {
|
|
27
|
+
service_worker: 'assets/js/components/background.bundle.js',
|
|
28
|
+
scripts: ['assets/js/components/background.bundle.js'],
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
// Permissions
|
|
32
|
+
permissions: [
|
|
33
|
+
],
|
|
34
|
+
host_permissions: [
|
|
35
|
+
],
|
|
36
|
+
|
|
37
|
+
// Options page
|
|
38
|
+
options_ui: {
|
|
39
|
+
page: 'views/options/index.html',
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
// Content scripts
|
|
43
|
+
content_scripts: [
|
|
44
|
+
],
|
|
45
|
+
|
|
46
|
+
// Browser action
|
|
47
|
+
action: {
|
|
48
|
+
// default_icon: {
|
|
49
|
+
// '48': 'assets/images/icons/icon-48x.png',
|
|
50
|
+
// '32': 'assets/images/icons/icon-32x.png',
|
|
51
|
+
// '24': 'assets/images/icons/icon-24x.png',
|
|
52
|
+
// '16': 'assets/images/icons/icon-16x.png',
|
|
53
|
+
// },
|
|
54
|
+
default_icon: 'assets/images/icons/icon-48x.png',
|
|
55
|
+
default_title: '__MSG_appName__',
|
|
56
|
+
// default_popup: '', // Disabled so we can customize what happens on click
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
// Side panel
|
|
60
|
+
side_panel: {
|
|
61
|
+
default_path: 'views/sidepanel/index.html',
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
// Content security policy
|
|
65
|
+
content_security_policy: {
|
|
66
|
+
extension_pages: "script-src 'self'; object-src 'self'; worker-src 'self';",
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
// Web accessible resources
|
|
70
|
+
// Origins allowed to message this extension. BUILD-TIME-BAKED by design (N7
|
|
71
|
+
// non-goal: a shipped extension can't probe ports), and RESOLVED at package
|
|
72
|
+
// time, never a literal: the brand's own origin (from `brand.url`) always,
|
|
73
|
+
// plus the live sibling website's dev origin — protocol and port both, the
|
|
74
|
+
// classic https://localhost:4000 when nothing is running — in dev only. A
|
|
75
|
+
// packaged build used to ship the localhost origin alone, so the brand site
|
|
76
|
+
// could not message the published extension (#583). If your `omega dev`
|
|
77
|
+
// bumped, rebuild while it's running (or pin `ports.website` in the brand
|
|
78
|
+
// config) so both sides agree.
|
|
79
|
+
externally_connectable: {
|
|
80
|
+
matches: [
|
|
81
|
+
%%%externallyConnectableOrigins%%%
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
|
|
85
|
+
// Web accessible resources
|
|
86
|
+
web_accessible_resources: [
|
|
87
|
+
],
|
|
88
|
+
|
|
89
|
+
// Offscreen document (for persistent background operations like WebSocket)
|
|
90
|
+
// offscreen_document: {
|
|
91
|
+
// file: 'views/offscreen/index.html',
|
|
92
|
+
// },
|
|
93
|
+
|
|
94
|
+
// Commands
|
|
95
|
+
commands: {
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
// Sandbox
|
|
99
|
+
sandbox: {
|
|
100
|
+
pages: [
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
// IDs
|
|
105
|
+
browser_specific_settings: {
|
|
106
|
+
gecko: {
|
|
107
|
+
// id: 'my-addon@example.com',
|
|
108
|
+
strict_min_version: '91.0',
|
|
109
|
+
// Required for new Firefox extensions as of Nov 2025
|
|
110
|
+
// https://blog.mozilla.org/addons/2025/10/23/data-collection-consent-changes-for-new-firefox-extensions/
|
|
111
|
+
data_collection_permissions: {
|
|
112
|
+
required: ['authenticationInfo'],
|
|
113
|
+
optional: ['technicalAndInteraction'],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html data-bs-theme="{{ theme.appearance }}">
|
|
3
|
+
<head>
|
|
4
|
+
<!-- Meta -->
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
7
|
+
<title>{{ page.title }}</title>
|
|
8
|
+
|
|
9
|
+
<!-- Main CSS (includes Font Awesome) -->
|
|
10
|
+
<link href="/assets/css/main.bundle.css?cb={{ cacheBust }}" rel="stylesheet">
|
|
11
|
+
|
|
12
|
+
<!-- Component-specific CSS -->
|
|
13
|
+
<link href="/assets/css/components/{{ page.name }}.bundle.css?cb={{ cacheBust }}" rel="stylesheet">
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
{{ content }}
|
|
17
|
+
|
|
18
|
+
<!-- Main JS (OMEGA_BUILD_JSON rides baked in the bundle's banner, #743) -->
|
|
19
|
+
<script src="/assets/js/components/{{ page.name }}.bundle.js?cb={{ cacheBust }}"></script>
|
|
20
|
+
</body>
|
|
21
|
+
</html>
|
package/dist/content.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
import extension from './lib/extension.js';
|
|
3
|
+
import LoggerLite from './lib/logger-lite.js';
|
|
4
|
+
import Messaging from './lib/messaging.js';
|
|
5
|
+
import Affiliatizer from './lib/affiliatizer.js';
|
|
6
|
+
import { attachTo as attachModeHelpers } from './utils/mode-helpers.js';
|
|
7
|
+
|
|
8
|
+
// Class
|
|
9
|
+
class Manager {
|
|
10
|
+
constructor() {
|
|
11
|
+
// Properties
|
|
12
|
+
this.extension = null;
|
|
13
|
+
this.messenger = null;
|
|
14
|
+
this.logger = null;
|
|
15
|
+
this.affiliatizer = null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async initialize() {
|
|
19
|
+
// Set properties
|
|
20
|
+
this.extension = extension;
|
|
21
|
+
this.messenger = new Messaging({ sender: 'content' });
|
|
22
|
+
this.logger = new LoggerLite('content');
|
|
23
|
+
this.affiliatizer = Affiliatizer.initialize(this);
|
|
24
|
+
|
|
25
|
+
// Log
|
|
26
|
+
this.logger.log('Initialized!', this);
|
|
27
|
+
|
|
28
|
+
// Return manager instance
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Cross-context helpers — Manager.isTesting() / isDevelopment() / etc.
|
|
34
|
+
attachModeHelpers(Manager);
|
|
35
|
+
|
|
36
|
+
// Export
|
|
37
|
+
export default Manager;
|