@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
package/dist/build.js
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const jetpack = require('fs-jetpack');
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const JSON5 = require('json5');
|
|
6
|
+
const argv = require('yargs')(process.argv.slice(2)).parseSync();
|
|
7
|
+
const { spawn } = require('child_process');
|
|
8
|
+
const { force } = require('node-powertools');
|
|
9
|
+
|
|
10
|
+
// Class
|
|
11
|
+
function Manager() {
|
|
12
|
+
const self = this;
|
|
13
|
+
|
|
14
|
+
// Properties
|
|
15
|
+
self._logger = null;
|
|
16
|
+
|
|
17
|
+
// Return
|
|
18
|
+
return self;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Initialize
|
|
22
|
+
Manager.prototype.initialize = function () {
|
|
23
|
+
console.log('initialize:');
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// Logger
|
|
27
|
+
Manager.prototype.logger = function (name) {
|
|
28
|
+
// Check if called as static method (this is not a Manager instance)
|
|
29
|
+
if (!(this instanceof Manager)) {
|
|
30
|
+
// For static calls, just return a new logger without caching
|
|
31
|
+
return new (require('./lib/logger'))(name);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// For instance calls, cache the logger
|
|
35
|
+
if (!this._logger) {
|
|
36
|
+
this._logger = new (require('./lib/logger'))(name);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return this._logger;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// argv
|
|
43
|
+
Manager.getArguments = function () {
|
|
44
|
+
const options = argv || {};
|
|
45
|
+
|
|
46
|
+
// Fix
|
|
47
|
+
options._ = options._ || [];
|
|
48
|
+
// browser can be: true (all), false (none), or a string like 'chrome' or 'chrome,firefox'
|
|
49
|
+
options.browser = options.browser === undefined ? true : options.browser;
|
|
50
|
+
options.debug = force(options.debug === undefined ? false : options.debug, 'boolean');
|
|
51
|
+
|
|
52
|
+
// Return
|
|
53
|
+
return options;
|
|
54
|
+
};
|
|
55
|
+
Manager.prototype.getArguments = Manager.getArguments;
|
|
56
|
+
|
|
57
|
+
// The notifly argv for a build error. Build messages routinely carry apostrophes
|
|
58
|
+
// and parentheses, so the message is a spawn ARG — never interpolated into a shell
|
|
59
|
+
// string, which mangled it and killed the notification (#104).
|
|
60
|
+
Manager.getBuildErrorNotificationArgs = function (plugin, message) {
|
|
61
|
+
return [
|
|
62
|
+
'--title', `Build Error: ${plugin}`,
|
|
63
|
+
'--message', message,
|
|
64
|
+
'--timeout', '3',
|
|
65
|
+
'--sound', 'Sosumi',
|
|
66
|
+
];
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// notifly is an optional local nicety, so a MISSING BINARY is one friendly note —
|
|
70
|
+
// never the raw `spawn notifly ENOENT` dump that used to land after a suite (#123).
|
|
71
|
+
// Every other spawn failure keeps the logged-not-thrown error path from #104.
|
|
72
|
+
Manager.reportNotificationFailure = function (error) {
|
|
73
|
+
const logger = new (require('./lib/logger'))('build-error');
|
|
74
|
+
|
|
75
|
+
if (error && error.code === 'ENOENT') {
|
|
76
|
+
return logger.warn('notifly not installed — skipping desktop notification');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return logger.error('Failed to send notification', error);
|
|
80
|
+
};
|
|
81
|
+
Manager.prototype.reportNotificationFailure = Manager.reportNotificationFailure;
|
|
82
|
+
|
|
83
|
+
// Report build errors with notification
|
|
84
|
+
Manager.reportBuildError = function (error, callback) {
|
|
85
|
+
const logger = new (require('./lib/logger'))('build-error');
|
|
86
|
+
|
|
87
|
+
// Send notification using notifly
|
|
88
|
+
const errorMessage = error.message || error.toString() || 'Unknown error';
|
|
89
|
+
const errorPlugin = error.plugin || 'Build';
|
|
90
|
+
|
|
91
|
+
spawn('notifly', Manager.getBuildErrorNotificationArgs(errorPlugin, errorMessage), { shell: false, stdio: 'ignore' })
|
|
92
|
+
.on('error', (e) => Manager.reportNotificationFailure(e));
|
|
93
|
+
|
|
94
|
+
// Log the error
|
|
95
|
+
logger.error(`[${errorPlugin}] ${errorMessage}`);
|
|
96
|
+
|
|
97
|
+
// If callback provided, call it with error
|
|
98
|
+
if (callback) {
|
|
99
|
+
return callback(error);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Otherwise return a function that calls the callback with error
|
|
103
|
+
return (cb) => cb ? cb(error) : error;
|
|
104
|
+
};
|
|
105
|
+
Manager.prototype.reportBuildError = Manager.reportBuildError;
|
|
106
|
+
|
|
107
|
+
// isBuildMode: checks if the build mode is enabled
|
|
108
|
+
Manager.isBuildMode = function () {
|
|
109
|
+
return process.env.OMEGA_BUILD_MODE === 'true';
|
|
110
|
+
}
|
|
111
|
+
Manager.prototype.isBuildMode = Manager.isBuildMode;
|
|
112
|
+
|
|
113
|
+
// actLikeProduction - determines if we should act like production mode
|
|
114
|
+
Manager.actLikeProduction = function () {
|
|
115
|
+
return Boolean(Manager.isBuildMode() || process.env.OMEGA_AUDIT_FORCE === 'true');
|
|
116
|
+
}
|
|
117
|
+
Manager.prototype.actLikeProduction = Manager.actLikeProduction;
|
|
118
|
+
|
|
119
|
+
// getEnvironment() is the SSOT and lives in src/utils/mode-helpers.js (alongside the is*()
|
|
120
|
+
// family). It's mixed onto the Manager via the attachTo() call below, same as in EM/UJM.
|
|
121
|
+
|
|
122
|
+
// getManifest: requires and parses config.yml
|
|
123
|
+
Manager.getManifest = function () {
|
|
124
|
+
return JSON5.parse(jetpack.read('src/manifest.json') || '{}');
|
|
125
|
+
}
|
|
126
|
+
Manager.prototype.getManifest = Manager.getManifest;
|
|
127
|
+
|
|
128
|
+
// getConfig: the consumer's RESOLVED config/omega.json5 via @omega.js/config —
|
|
129
|
+
// shared sections at the top level, targets.extension overlaid onto them (brand
|
|
130
|
+
// walk-up applies in brand monorepos). Secrets never live in the file; the loader
|
|
131
|
+
// hard-fails on secret-shaped keys.
|
|
132
|
+
Manager.getConfig = function () {
|
|
133
|
+
const { hasOmegaConfig, loadConfig, formatErrors } = require('./vendor/config/index.js');
|
|
134
|
+
|
|
135
|
+
// No config at all (fresh dir, non-consumer cwd) → empty shape; callers
|
|
136
|
+
// optional-chain and the defaults task scaffolds the real file on setup.
|
|
137
|
+
const cwd = process.cwd();
|
|
138
|
+
if (!hasOmegaConfig(cwd)) {
|
|
139
|
+
return {};
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const { config, errors } = loadConfig(cwd, 'extension');
|
|
143
|
+
|
|
144
|
+
// Validation findings are FATAL at build time — same contract as the web
|
|
145
|
+
// build's loadSiteData ([#426](https://github.com/Omega-JS-Stack/omega/issues/426)).
|
|
146
|
+
// A retired key reads as nothing at all, so a build that only warned shipped
|
|
147
|
+
// a bundle missing whatever lived under it and still exited 0. Thrown on
|
|
148
|
+
// EVERY call, never warn-once: tasks call this at require time, and a
|
|
149
|
+
// once-per-process flag left calls 2..n silently building on the bad config.
|
|
150
|
+
if (errors.length) {
|
|
151
|
+
throw new Error(`[@omega.js/extension] config/omega.json5 is invalid:\n${formatErrors(errors)}`);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return config;
|
|
155
|
+
}
|
|
156
|
+
Manager.prototype.getConfig = Manager.getConfig;
|
|
157
|
+
|
|
158
|
+
// getPackage: requires and parses package.json
|
|
159
|
+
Manager.getPackage = function (type) {
|
|
160
|
+
const basePath = type === 'project'
|
|
161
|
+
? process.cwd()
|
|
162
|
+
: path.resolve(__dirname, '..')
|
|
163
|
+
|
|
164
|
+
const pkgPath = path.join(basePath, 'package.json')
|
|
165
|
+
return JSON5.parse(jetpack.read(pkgPath))
|
|
166
|
+
}
|
|
167
|
+
Manager.prototype.getPackage = Manager.getPackage;
|
|
168
|
+
|
|
169
|
+
// getRootPath: returns the root path of the project or package
|
|
170
|
+
Manager.getRootPath = function (type) {
|
|
171
|
+
return type === 'project'
|
|
172
|
+
? process.cwd()
|
|
173
|
+
: path.resolve(__dirname, '..')
|
|
174
|
+
}
|
|
175
|
+
Manager.prototype.getRootPath = Manager.getRootPath;
|
|
176
|
+
|
|
177
|
+
// getLiveReloadPort: (35729)
|
|
178
|
+
Manager.getLiveReloadPort = function () {
|
|
179
|
+
// Check if the port is set in the environment
|
|
180
|
+
process.env.OMEGA_LIVERELOAD_PORT = process.env.OMEGA_LIVERELOAD_PORT || 35729;
|
|
181
|
+
|
|
182
|
+
// Return the port
|
|
183
|
+
return parseInt(process.env.OMEGA_LIVERELOAD_PORT);
|
|
184
|
+
}
|
|
185
|
+
Manager.prototype.getLiveReloadPort = Manager.getLiveReloadPort;
|
|
186
|
+
|
|
187
|
+
// getDevWebsiteOrigin: where the brand's dev website answers (protocol + port),
|
|
188
|
+
// as the live sibling website app published it beside its port map. An extension
|
|
189
|
+
// has no way to probe at runtime, so every dev-origin surface — the build.js
|
|
190
|
+
// blob, the page config blob, the manifest's externally_connectable — BAKES this
|
|
191
|
+
// one answer ([#262](https://github.com/Omega-JS-Stack/omega/issues/262)).
|
|
192
|
+
//
|
|
193
|
+
// null when nothing published one: presence is a RESOLVED FACT, absence means
|
|
194
|
+
// "assume the classics" and say so (the N7 dev-map contract). A packaged build
|
|
195
|
+
// never probes at all — its artifact must not depend on whether a dev server
|
|
196
|
+
// happened to be running on the build machine.
|
|
197
|
+
Manager.getDevWebsiteOrigin = function () {
|
|
198
|
+
const { readSiblingOrigin } = require('./vendor/config/index.js');
|
|
199
|
+
|
|
200
|
+
if (Manager.getEnvironment() === 'production') {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return readSiblingOrigin(Manager.getRootPath('project'));
|
|
205
|
+
}
|
|
206
|
+
Manager.prototype.getDevWebsiteOrigin = Manager.getDevWebsiteOrigin;
|
|
207
|
+
|
|
208
|
+
// Create dummy file in project dist to force jekyll to build
|
|
209
|
+
Manager.triggerRebuild = function (files, logger) {
|
|
210
|
+
// Ensure logger is defined
|
|
211
|
+
logger = this?._logger || logger || console;
|
|
212
|
+
|
|
213
|
+
// Normalize files into an array of file names
|
|
214
|
+
if (typeof files === 'string') {
|
|
215
|
+
files = [files]; // Single string file name
|
|
216
|
+
} else if (Array.isArray(files)) {
|
|
217
|
+
// Already an array, no changes needed
|
|
218
|
+
} else if (typeof files === 'object' && files !== null) {
|
|
219
|
+
files = Object.keys(files); // Extract keys from object
|
|
220
|
+
} else {
|
|
221
|
+
logger.error('Invalid files for triggerRebuild()');
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Set current time
|
|
226
|
+
const now = new Date();
|
|
227
|
+
|
|
228
|
+
// Touch all files to update mtime (so Jekyll notices)
|
|
229
|
+
files.forEach((file) => {
|
|
230
|
+
try {
|
|
231
|
+
fs.utimesSync(file, now, now);
|
|
232
|
+
logger.log(`Triggered build: ${file}`);
|
|
233
|
+
} catch (e) {
|
|
234
|
+
logger.error(`Failed to trigger build ${file}`, e);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
Manager.prototype.triggerRebuild = Manager.triggerRebuild;
|
|
239
|
+
|
|
240
|
+
// Require
|
|
241
|
+
Manager.require = function (path) {
|
|
242
|
+
return require(path);
|
|
243
|
+
};
|
|
244
|
+
Manager.prototype.require = Manager.require;
|
|
245
|
+
|
|
246
|
+
// Memory monitoring utility
|
|
247
|
+
Manager.getMemoryUsage = function () {
|
|
248
|
+
const used = process.memoryUsage();
|
|
249
|
+
return {
|
|
250
|
+
rss: Math.round(used.rss / 1024 / 1024),
|
|
251
|
+
heapTotal: Math.round(used.heapTotal / 1024 / 1024),
|
|
252
|
+
heapUsed: Math.round(used.heapUsed / 1024 / 1024),
|
|
253
|
+
external: Math.round(used.external / 1024 / 1024),
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
Manager.prototype.getMemoryUsage = Manager.getMemoryUsage;
|
|
257
|
+
|
|
258
|
+
Manager.logMemory = function (logger, label) {
|
|
259
|
+
const mem = Manager.getMemoryUsage();
|
|
260
|
+
logger.log(`[Memory ${label}] RSS: ${mem.rss}MB | Heap Used: ${mem.heapUsed}MB / ${mem.heapTotal}MB | External: ${mem.external}MB`);
|
|
261
|
+
};
|
|
262
|
+
Manager.prototype.logMemory = Manager.logMemory;
|
|
263
|
+
|
|
264
|
+
// Cross-context helpers — Manager.isTesting() / isDevelopment() / etc.
|
|
265
|
+
require('./utils/mode-helpers.js').attachTo(Manager);
|
|
266
|
+
|
|
267
|
+
// Export
|
|
268
|
+
module.exports = Manager;
|
package/dist/cli-run.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* run() — the omega-extension bin body, shared by bin/omega-extension (via
|
|
3
|
+
* dist/omega-bin.js) and cross-framework dispatch ('@omega.js/extension/cli').
|
|
4
|
+
*/
|
|
5
|
+
async function run() {
|
|
6
|
+
// Local-dist freshness guard: a stale locally-linked dist rebuilds and the
|
|
7
|
+
// invocation re-execs once, so no command ever runs stale framework code
|
|
8
|
+
require('./vendor/devkit/local.js').freshnessBoot({ packageName: '@omega.js/extension' });
|
|
9
|
+
|
|
10
|
+
// Value-less flags must be declared boolean — otherwise yargs treats the next
|
|
11
|
+
// positional as the flag's VALUE. Mirrors the same fix in @omega.js/backend's CLI.
|
|
12
|
+
// yargs' built-in --version/--help are disabled so both route through the
|
|
13
|
+
// alias table / the router's built-in help (the built-ins printed an empty
|
|
14
|
+
// stub and version "0.0.0" — yargs can't resolve our package version here).
|
|
15
|
+
const argv = require('yargs')(process.argv.slice(2))
|
|
16
|
+
.boolean(['extended'])
|
|
17
|
+
.version(false)
|
|
18
|
+
.help(false)
|
|
19
|
+
.parseSync();
|
|
20
|
+
const cli = new (require('./cli.js'))(argv);
|
|
21
|
+
|
|
22
|
+
await cli.process(argv);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
module.exports = { run };
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { createCliRouter } = require('./vendor/devkit/cli-router.js');
|
|
4
|
+
|
|
5
|
+
// Resolve the .env cascade from the project root
|
|
6
|
+
// (shell > local .env > brand .env > company .env). The target name delivers
|
|
7
|
+
// the schema's `deliverAs` renames into process.env (#678) — the brand's
|
|
8
|
+
// GOOGLE_ANALYTICS_SECRET_EXTENSION arrives as GOOGLE_ANALYTICS_SECRET.
|
|
9
|
+
require('./vendor/config/index.js').loadEnv(process.cwd(), { target: 'extension' });
|
|
10
|
+
|
|
11
|
+
// Main class — dispatch (positional/flag alias resolution, command loading,
|
|
12
|
+
// error surfacing) is the shared devkit router; this file owns only the alias
|
|
13
|
+
// table and the commands directory.
|
|
14
|
+
//
|
|
15
|
+
// A bare `omega` prints help: setup is retired and every verb runs the local
|
|
16
|
+
// scaffold itself ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)).
|
|
17
|
+
module.exports = createCliRouter({
|
|
18
|
+
commandsDir: path.join(__dirname, 'commands'),
|
|
19
|
+
defaultCommand: 'help',
|
|
20
|
+
aliases: {
|
|
21
|
+
build: ['-b', '--build'],
|
|
22
|
+
clean: ['-c', '--clean'],
|
|
23
|
+
deploy: ['-d', '--deploy'],
|
|
24
|
+
install: ['-i', 'i', '--install'],
|
|
25
|
+
migrate: ['-m', '--migrate', 'migration'],
|
|
26
|
+
test: ['-t', '--test'],
|
|
27
|
+
update: ['-u', '--update', 'outdated', 'out'],
|
|
28
|
+
version: ['-v', '--version'],
|
|
29
|
+
},
|
|
30
|
+
});
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const { execute } = require('node-powertools');
|
|
3
|
+
const Manager = new (require('../build.js'));
|
|
4
|
+
const logger = Manager.logger('build');
|
|
5
|
+
const { ensureTarget } = require('./lib/ensure-target.js');
|
|
6
|
+
|
|
7
|
+
// The consumer's `build` script is `omega build` — this verb owns the pipeline
|
|
8
|
+
// and the build-mode flag; it must never shell back to that script (that would
|
|
9
|
+
// recurse). `npm run gulp -- <task>` is the one safe shell-out: the consumer's
|
|
10
|
+
// `gulp` script is bare `gulp`, so there's no alias to recurse through. The
|
|
11
|
+
// gulp `build` series does no cleaning of its own, so the verb owns that step
|
|
12
|
+
// too. Desktop runs the same model through utils/build-pipeline.js because
|
|
13
|
+
// three verbs share it there; extension has the one plan, so it lives here.
|
|
14
|
+
function plan() {
|
|
15
|
+
return {
|
|
16
|
+
env: { OMEGA_BUILD_MODE: 'true' },
|
|
17
|
+
steps: [
|
|
18
|
+
{ type: 'clean' },
|
|
19
|
+
{ type: 'gulp', task: 'build' },
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Step implementations — the seam runPlan takes as an argument, so a test can
|
|
25
|
+
// record the order without running a real gulp build.
|
|
26
|
+
const RUNNERS = {
|
|
27
|
+
clean: (options) => require('./clean.js')(options),
|
|
28
|
+
gulp: (options, step) => execute(`npm run gulp -- ${step.task}`, { log: true }),
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
async function runPlan(plan, options, runners) {
|
|
32
|
+
options = options || {};
|
|
33
|
+
runners = runners || RUNNERS;
|
|
34
|
+
|
|
35
|
+
// Set in-process so every child (gulp → esbuild → the packager) inherits them.
|
|
36
|
+
Object.entries(plan.env || {}).forEach(([key, value]) => {
|
|
37
|
+
process.env[key] = value;
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
for (const step of plan.steps) {
|
|
41
|
+
const runner = runners[step.type];
|
|
42
|
+
|
|
43
|
+
// The plan is authored in this file alongside the runner table — an unknown
|
|
44
|
+
// step type is a programmer error, never consumer input.
|
|
45
|
+
if (!runner) {
|
|
46
|
+
throw new Error(`Unknown pipeline step type: ${step.type}`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
await runner(options, step);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
module.exports = async function (options) {
|
|
54
|
+
// Log
|
|
55
|
+
logger.log('Running production build...');
|
|
56
|
+
|
|
57
|
+
// The local scaffold BEFORE the pipeline (#675): the gulp `defaults` task
|
|
58
|
+
// ensures too, but gulp itself is one of the peer deps the ensure installs,
|
|
59
|
+
// so a fresh consumer outside any node_modules hoist never reaches it.
|
|
60
|
+
await ensureTarget({ log: (line) => logger.log(line), warn: (line) => logger.warn(line) });
|
|
61
|
+
|
|
62
|
+
await runPlan(plan(options), options);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
module.exports.plan = plan;
|
|
66
|
+
module.exports.runPlan = runPlan;
|
|
67
|
+
module.exports.RUNNERS = RUNNERS;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const Manager = new (require('../build.js'));
|
|
3
|
+
const logger = Manager.logger('clean');
|
|
4
|
+
const { cleanDirs } = require('../vendor/devkit/clean-dirs.js');
|
|
5
|
+
const { ensureTarget } = require('./lib/ensure-target.js');
|
|
6
|
+
|
|
7
|
+
// Dirs to clean
|
|
8
|
+
const dirs = [
|
|
9
|
+
'.temp',
|
|
10
|
+
'dist',
|
|
11
|
+
'packaged',
|
|
12
|
+
// 'src/assets/themes',
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
module.exports = async function (options) {
|
|
16
|
+
// The local scaffold (#675): the consumer `start` and `build` scripts are
|
|
17
|
+
// `omega clean && … npm run gulp …`, and gulp itself is one of the peer
|
|
18
|
+
// deps the ensure installs — clean is the only verb that runs before it.
|
|
19
|
+
await ensureTarget({ log: (line) => logger.log(line), warn: (line) => logger.warn(line) });
|
|
20
|
+
|
|
21
|
+
// Log
|
|
22
|
+
logger.log(`Cleaning up .temp, dist, and packaged directories...`);
|
|
23
|
+
|
|
24
|
+
try {
|
|
25
|
+
cleanDirs(dirs);
|
|
26
|
+
} catch (e) {
|
|
27
|
+
logger.error(`Error clearing directories: ${e}`);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega deploy` — the explicit publish verb (D13: commits never
|
|
3
|
+
* auto-publish). Syncs the working tree (commit + push — push triggers
|
|
4
|
+
* NOTHING), then dispatches the scaffolded publish workflow: CI builds,
|
|
5
|
+
* uploads to the stores when credentials are present, and attaches the
|
|
6
|
+
* package zip to a GitHub release (the durable artifact channel).
|
|
7
|
+
*
|
|
8
|
+
* Every run starts with the local scaffold the retired `omega setup` used to
|
|
9
|
+
* own (ensureTarget, #675) and then runs setup's NETWORK half as a precheck
|
|
10
|
+
* before the dispatch. `--no-secrets` skips that precheck.
|
|
11
|
+
*
|
|
12
|
+
* Flags: --dry-run (print the exact dispatch, send nothing; skips sync),
|
|
13
|
+
* --no-sync (dispatch without committing/pushing first).
|
|
14
|
+
*/
|
|
15
|
+
const { execSync } = require('node:child_process');
|
|
16
|
+
const Manager = new (require('../build.js'));
|
|
17
|
+
const logger = Manager.logger('deploy');
|
|
18
|
+
const { deployViaDispatch, dispatchRepo, findLocalSpecs, syncWorkingTree } = require('../vendor/devkit/deploy.js');
|
|
19
|
+
const { composedWorkflowName } = require('../vendor/devkit/ci-workflows.js');
|
|
20
|
+
const { resolveSeedMode } = require('../vendor/config/index.js');
|
|
21
|
+
const { ensureTarget } = require('./lib/ensure-target.js');
|
|
22
|
+
const { deployPrecheck } = require('./lib/deploy-precheck.js');
|
|
23
|
+
|
|
24
|
+
module.exports = async function (options) {
|
|
25
|
+
options = options || {};
|
|
26
|
+
const dryRun = options.dryRun || options['dry-run'];
|
|
27
|
+
const projectDir = process.cwd();
|
|
28
|
+
|
|
29
|
+
// The local half of the retired `omega setup` (#675) — idempotent, offline,
|
|
30
|
+
// and quiet on a converged target.
|
|
31
|
+
await ensureTarget({ projectDir, log: (line) => logger.log(line), warn: (line) => logger.warn(line) });
|
|
32
|
+
|
|
33
|
+
// The NETWORK half, as a precheck: a deploy is the verb that needs the
|
|
34
|
+
// remote side right. A dry run sends nothing, so it prechecks nothing.
|
|
35
|
+
if (!dryRun) {
|
|
36
|
+
await deployPrecheck({ projectDir, options, logger });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Inside a brand monorepo the target's CI lives in the BRAND ROOT's workflows
|
|
40
|
+
// dir under a per-target name (#265) — dispatch what setup actually composed.
|
|
41
|
+
const WORKFLOW = composedWorkflowName({
|
|
42
|
+
targetDir: process.cwd(),
|
|
43
|
+
brandRoot: resolveSeedMode(process.cwd()).brandRoot,
|
|
44
|
+
workflow: 'publish.yml',
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Linked local packages (tree-wide file: specs — cp194) → the LOCAL lane
|
|
48
|
+
// automatically: build + store-publish from this machine with the linked
|
|
49
|
+
// frameworks bundled in. Mirrored rule (Ian 2026-07-20); CI dispatch is
|
|
50
|
+
// only for registry-clean trees.
|
|
51
|
+
if (findLocalSpecs({ dir: process.cwd() }).length > 0) {
|
|
52
|
+
logger.log('Linked local packages detected — building + publishing LOCALLY (linked frameworks bundled; store credentials must be available in this shell). CI dispatch resumes after `omega i live`.');
|
|
53
|
+
if (dryRun) {
|
|
54
|
+
logger.log('DRY RUN — would run: npm run release (local build + store publish)');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
execSync('npm run release', { stdio: 'inherit' });
|
|
58
|
+
require('../vendor/devkit/deploy-record.js').recordDeploy({ dir: process.cwd(), target: 'extension', detail: { method: 'local' } });
|
|
59
|
+
return logger.log('Deployed from the LOCAL build (linked frameworks included).');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (!dryRun && options.sync !== false) {
|
|
63
|
+
logger.log('Syncing (commit + push — publishes nothing by itself)...');
|
|
64
|
+
syncWorkingTree({ message: 'Deploy', logger });
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const { owner, repo } = dispatchAddress();
|
|
68
|
+
const { plan, dispatched } = await deployViaDispatch({ workflow: WORKFLOW, owner, repo, dryRun });
|
|
69
|
+
|
|
70
|
+
if (dispatched) {
|
|
71
|
+
require('../vendor/devkit/deploy-record.js').recordDeploy({ dir: process.cwd(), target: 'extension', detail: { method: 'dispatch' } });
|
|
72
|
+
logger.log(`Dispatched ${WORKFLOW} — CI builds, publishes to stores, and attaches the zip to a GitHub release.`);
|
|
73
|
+
logger.log(`Watch: ${plan.runsUrl}`);
|
|
74
|
+
} else {
|
|
75
|
+
logger.log('DRY RUN — would send:');
|
|
76
|
+
logger.log(` ${plan.method} ${plan.url}`);
|
|
77
|
+
logger.log(` body: ${JSON.stringify(plan.body)}`);
|
|
78
|
+
logger.log(` then watch: ${plan.runsUrl}`);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* The repo this target's CI dispatch addresses: the brand's own, from its
|
|
84
|
+
* config ([#799](https://github.com/Omega-JS-Stack/omega/issues/799)). A git
|
|
85
|
+
* remote answers the repo the working tree SITS IN, which inside a brand nested
|
|
86
|
+
* in another repo is the enclosing one, so the dispatch went to a workflow that
|
|
87
|
+
* was never there. The rule is `@omega.js/devkit/deploy`'s `dispatchRepo`, the
|
|
88
|
+
* same call web's deploy and desktop's release verbs make. Exported for tests.
|
|
89
|
+
*
|
|
90
|
+
* @returns {{ owner: string, repo: string }} owner and bare repo name
|
|
91
|
+
* @throws {Error} when the config names no repo
|
|
92
|
+
*/
|
|
93
|
+
function dispatchAddress() {
|
|
94
|
+
return dispatchRepo(Manager.getConfig());
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
module.exports.dispatchAddress = dispatchAddress;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const Manager = new (require('../build.js'));
|
|
3
|
+
const logger = Manager.logger('install');
|
|
4
|
+
const { safeInstall } = require('../lib/safe-install');
|
|
5
|
+
const local = require('../vendor/devkit/local.js');
|
|
6
|
+
|
|
7
|
+
// Load package
|
|
8
|
+
const package = Manager.getPackage('main');
|
|
9
|
+
const project = Manager.getPackage('project');
|
|
10
|
+
|
|
11
|
+
module.exports = async function (options) {
|
|
12
|
+
// Log
|
|
13
|
+
logger.log(`Installing ${package.name}...`);
|
|
14
|
+
|
|
15
|
+
// Get type
|
|
16
|
+
const type = options._[1] || 'prod';
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
// Install production — the publish-day inverse of `i local`: flip every
|
|
20
|
+
// file: spec in the brand tree to the exact <linked version>, one registry install
|
|
21
|
+
if (['live', 'prod', 'p', 'production'].includes(type)) {
|
|
22
|
+
// Log
|
|
23
|
+
logger.log('Installing production (restoring registry specs tree-wide)...');
|
|
24
|
+
|
|
25
|
+
// Restore
|
|
26
|
+
const actions = await local.restoreRegistrySpecs({ dir: process.cwd(), logger });
|
|
27
|
+
const flipped = actions.filter((action) => action.action === 'flip').length;
|
|
28
|
+
|
|
29
|
+
// Return
|
|
30
|
+
return logger.log(flipped > 0
|
|
31
|
+
? `Production installation complete (${flipped} spec(s) restored to registry ranges).`
|
|
32
|
+
: 'Already on registry specs — nothing to flip.');
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Install development (link from the local Omega monorepo)
|
|
36
|
+
if (['dev', 'd', 'development', 'local', 'l'].includes(type)) {
|
|
37
|
+
// Log
|
|
38
|
+
logger.log('Installing development (local Omega monorepo)...');
|
|
39
|
+
|
|
40
|
+
// Link every @omega.js dependency to the monorepo (idempotent)
|
|
41
|
+
await local.linkLocalPackages({
|
|
42
|
+
dir: process.cwd(),
|
|
43
|
+
monorepoRoot: local.resolveMonorepoRoot(),
|
|
44
|
+
logger,
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// Return
|
|
48
|
+
return logger.log('Development installation complete.');
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
} catch (e) {
|
|
52
|
+
logger.error(`Error during install:`, e);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
function install(command) {
|
|
57
|
+
return safeInstall(command);
|
|
58
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @omega.js/extension's half of the shared dependency checks
|
|
3
|
+
* ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)) — the logic is
|
|
4
|
+
* `@omega.js/devkit/target-dependencies` (one copy for every framework); this
|
|
5
|
+
* file is the DATA: which peer deps install as devDependencies, and the
|
|
6
|
+
* framework's own `safeInstall`.
|
|
7
|
+
*
|
|
8
|
+
* ensurePeerDependencies the target cannot build without them — LOCAL half,
|
|
9
|
+
* ensure-target.js runs it on every verb
|
|
10
|
+
* updateManager asks the npm registry whether the framework itself
|
|
11
|
+
* is stale — NETWORK half, deploy-precheck.js runs it
|
|
12
|
+
*/
|
|
13
|
+
const shared = require('../../vendor/devkit/target-dependencies.js');
|
|
14
|
+
const { safeInstall } = require('../../lib/safe-install');
|
|
15
|
+
|
|
16
|
+
// Peer-dep install location overrides
|
|
17
|
+
const DEPENDENCY_MAP = {
|
|
18
|
+
'gulp': 'dev',
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const readProject = shared.readProject;
|
|
22
|
+
|
|
23
|
+
/** See `@omega.js/devkit/target-dependencies` — bound to the extension's map + installer. */
|
|
24
|
+
function ensurePeerDependencies(input) {
|
|
25
|
+
return shared.ensurePeerDependencies({ ...input, dependencyMap: DEPENDENCY_MAP, safeInstall });
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** See `@omega.js/devkit/target-dependencies` — bound to the extension's installer. */
|
|
29
|
+
function updateManager(input) {
|
|
30
|
+
return shared.updateManager({ ...input, safeInstall });
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
module.exports = { ensurePeerDependencies, updateManager, readProject, DEPENDENCY_MAP };
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* deploy-precheck — the NETWORK half `omega setup` used to own
|
|
3
|
+
* ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)).
|
|
4
|
+
*
|
|
5
|
+
* Setup's local half now rides every verb (ensure-target.js); what needs the
|
|
6
|
+
* network rides the ONE verb that needs the remote side right —
|
|
7
|
+
* `omega deploy` — as a precheck before the dispatch:
|
|
8
|
+
*
|
|
9
|
+
* framework-freshness the npm registry's latest vs the installed version,
|
|
10
|
+
* since CI builds this deploy with whatever the
|
|
11
|
+
* manifest pins
|
|
12
|
+
* push-secrets the composed target env → GitHub Actions repo secrets,
|
|
13
|
+
* which the dispatched workflow's generated env block
|
|
14
|
+
* consumes ([#680](https://github.com/Omega-JS-Stack/omega/issues/680))
|
|
15
|
+
*
|
|
16
|
+
* Every step is soft: a precheck reports, the deploy proceeds. `--no-secrets`
|
|
17
|
+
* skips the whole precheck — the same opt-out name on web, desktop and
|
|
18
|
+
* extension (parity).
|
|
19
|
+
*
|
|
20
|
+
* The RUNNER is `@omega.js/devkit/deploy-precheck` (one copy for every
|
|
21
|
+
* framework); this file is the extension's STEPS.
|
|
22
|
+
*/
|
|
23
|
+
const Manager = new (require('../../build.js'));
|
|
24
|
+
const { runDeployPrecheck } = require('../../vendor/devkit/deploy-precheck.js');
|
|
25
|
+
const { updateManager } = require('./dependencies.js');
|
|
26
|
+
const { publishEnvSecrets } = require('./push-secrets.js');
|
|
27
|
+
|
|
28
|
+
const package = Manager.getPackage('main');
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* The default steps, in order. Named so a test can hand its own recorder in
|
|
32
|
+
* and read back exactly which ones ran.
|
|
33
|
+
*/
|
|
34
|
+
const STEPS = [
|
|
35
|
+
{
|
|
36
|
+
name: 'framework-freshness',
|
|
37
|
+
run: ({ projectDir, log, warn }) => updateManager({ projectDir, package, log, error: warn }),
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'push-secrets',
|
|
41
|
+
run: ({ projectDir, log, warn }) => publishEnvSecrets({ targetDir: projectDir, logger: { log, warn, error: warn } }),
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @param {object} input
|
|
47
|
+
* @param {string} input.projectDir - The target root.
|
|
48
|
+
* @param {object} input.options - The parsed CLI options (`secrets: false` = opted out).
|
|
49
|
+
* @param {object} input.logger - `{ log, warn, error }`.
|
|
50
|
+
* @param {Array} [input.steps] - Injectable step list (tests).
|
|
51
|
+
* @returns {Promise<{ skipped: string }|{ ran: string[] }>} The steps that ran, or the opt-out marker.
|
|
52
|
+
*/
|
|
53
|
+
function deployPrecheck({ projectDir, options, logger, steps }) {
|
|
54
|
+
return runDeployPrecheck({ projectDir, options, logger, steps: steps || STEPS });
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
module.exports = { deployPrecheck, STEPS };
|