@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,103 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const Manager = new (require('../../build.js'));
|
|
3
|
+
const logger = Manager.logger('serve');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const WebSocket = require('ws');
|
|
6
|
+
const { watchEnvChain } = require('../../vendor/devkit/env-watch.js');
|
|
7
|
+
|
|
8
|
+
// Load package
|
|
9
|
+
const package = Manager.getPackage('main');
|
|
10
|
+
const project = Manager.getPackage('project');
|
|
11
|
+
const config = Manager.getConfig('project');
|
|
12
|
+
const rootPathPackage = Manager.getRootPath('main');
|
|
13
|
+
const rootPathProject = Manager.getRootPath('project');
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The ENV lane's watcher (#681): every layer of the `.env` chain — company,
|
|
17
|
+
* brand, this target — and each layer's `.env.<environment>` overlay. A change
|
|
18
|
+
* reloads the cascade into process.env, so the next task rebuild (the sass /
|
|
19
|
+
* bundle / package watchers all re-run in THIS process) reads the new values.
|
|
20
|
+
* The log line names the FILE, never a value. Resolution and watching live in
|
|
21
|
+
* @omega.js/devkit/env-watch, shared with the web and desktop dev lanes; this
|
|
22
|
+
* binds the extension's own target name.
|
|
23
|
+
*
|
|
24
|
+
* Scope, exactly: a NEW key AND an EDITED value both land on that next rebuild,
|
|
25
|
+
* and a key dropped from the file is dropped from the process — `reloadEnv`
|
|
26
|
+
* re-reads what a file layer owns
|
|
27
|
+
* ([#724](https://github.com/Omega-JS-Stack/omega/issues/724)). A SHELL-set
|
|
28
|
+
* value still wins over every file, whatever the file now says.
|
|
29
|
+
*
|
|
30
|
+
* `serve` is where it arms because it is the dev lane's only task — the build
|
|
31
|
+
* series never includes it, so a one-shot build never opens a watch it would
|
|
32
|
+
* have to close.
|
|
33
|
+
* @param {string} root - the target root
|
|
34
|
+
* @param {object} [options]
|
|
35
|
+
* @param {string} [options.environment] - the environment whose overlay counts
|
|
36
|
+
* @returns {{ inputs: Array<{ layer: string, path: string }>, close: function }}
|
|
37
|
+
*/
|
|
38
|
+
function watchEnvSources(root, options) {
|
|
39
|
+
return watchEnvChain({
|
|
40
|
+
projectDir: root,
|
|
41
|
+
target: 'extension',
|
|
42
|
+
environment: options && options.environment,
|
|
43
|
+
log: (line) => logger.log(line),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Task
|
|
48
|
+
module.exports = function serve(complete) {
|
|
49
|
+
// Log
|
|
50
|
+
logger.log('Starting...');
|
|
51
|
+
|
|
52
|
+
// The .env chain is a dev INPUT too (#681)
|
|
53
|
+
watchEnvSources(rootPathProject);
|
|
54
|
+
|
|
55
|
+
// N7: resolve the livereload port through the allocator — taken → +1, so
|
|
56
|
+
// two targets of one brand (extension + desktop serve) land on distinct
|
|
57
|
+
// ports automatically. Config `ports.livereload` pins (busy pin = error).
|
|
58
|
+
// The resolved value publishes via OMEGA_LIVERELOAD_PORT BEFORE any build
|
|
59
|
+
// task bakes it (the bundle task's replacements + package.js), so the built
|
|
60
|
+
// extension always connects to THIS server.
|
|
61
|
+
const { resolvePorts, envPort, CLASSIC_PORTS } = require('../../vendor/config/index.js');
|
|
62
|
+
const pins = {};
|
|
63
|
+
if (typeof config.ports?.livereload === 'number') {
|
|
64
|
+
pins.livereload = config.ports.livereload;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return resolvePorts({ wanted: { livereload: envPort('livereload') || CLASSIC_PORTS.livereload }, pins })
|
|
68
|
+
.then(({ ports, bumped }) => {
|
|
69
|
+
process.env.OMEGA_LIVERELOAD_PORT = String(ports.livereload);
|
|
70
|
+
if (bumped.length) {
|
|
71
|
+
logger.log(`LiveReload port bumped to ${ports.livereload} (classic taken — another target's serve?)`);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
// Get the local URL
|
|
76
|
+
const server = new WebSocket.Server({ port: ports.livereload })
|
|
77
|
+
|
|
78
|
+
// Log
|
|
79
|
+
logger.log(`LiveReload server started on port ${ports.livereload}`);
|
|
80
|
+
|
|
81
|
+
// Log connection
|
|
82
|
+
server.on('connection', (socket, request) => {
|
|
83
|
+
logger.log(`LiveReload client connected from local IP: ${request.socket.localAddress}`);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// Handle errors
|
|
87
|
+
server.on('error', (error) => {
|
|
88
|
+
logger.error('WebSocket error:', error);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// Set server
|
|
92
|
+
global.websocket = server;
|
|
93
|
+
} catch (error) {
|
|
94
|
+
// Log error
|
|
95
|
+
logger.error('Error starting LiveReload server:', error);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Complete
|
|
99
|
+
return complete();
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
module.exports.watchEnvSources = watchEnvSources;
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const Manager = new (require('../../build.js'));
|
|
3
|
+
const logger = Manager.logger('translate');
|
|
4
|
+
const { series } = require('gulp');
|
|
5
|
+
const jetpack = require('fs-jetpack');
|
|
6
|
+
const path = require('path');
|
|
7
|
+
const JSON5 = require('json5');
|
|
8
|
+
const {
|
|
9
|
+
resolveProvider,
|
|
10
|
+
resolveTranslationSettings,
|
|
11
|
+
translateStrings,
|
|
12
|
+
languageName,
|
|
13
|
+
hashKey,
|
|
14
|
+
loadCache,
|
|
15
|
+
saveCache,
|
|
16
|
+
} = require('../../vendor/devkit/translate/index.js');
|
|
17
|
+
|
|
18
|
+
// Locale field limits (shared with audit.js)
|
|
19
|
+
const { limits: LOCALE_LIMITS } = require('../config/locales.js');
|
|
20
|
+
|
|
21
|
+
// Paths
|
|
22
|
+
const configMessagesPath = path.join(process.cwd(), 'config', 'messages.json');
|
|
23
|
+
const configDescriptionPath = path.join(process.cwd(), 'config', 'description.md');
|
|
24
|
+
const distLocalesDir = path.join(process.cwd(), 'dist', '_locales');
|
|
25
|
+
|
|
26
|
+
// Committed per-string cache (replaces the legacy gitignored .cache/):
|
|
27
|
+
// translations/{lang}/messages.json (hash → translated message) and
|
|
28
|
+
// translations/{lang}/description.md (translated markdown + source marker)
|
|
29
|
+
const translationsDir = path.join(process.cwd(), 'translations');
|
|
30
|
+
|
|
31
|
+
// First line of a translated description — records the source hash so a
|
|
32
|
+
// source edit invalidates it; stripped when the file is consumed
|
|
33
|
+
const DESCRIPTION_MARKER = /^<!-- omega:source ([0-9a-f]{12}) -->\n?/;
|
|
34
|
+
|
|
35
|
+
// Helper: Read and parse config/messages.json (JSON5 → object)
|
|
36
|
+
function readConfigMessages() {
|
|
37
|
+
if (!jetpack.exists(configMessagesPath)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
try {
|
|
42
|
+
return JSON5.parse(jetpack.read(configMessagesPath));
|
|
43
|
+
} catch (e) {
|
|
44
|
+
logger.error(`Failed to parse config/messages.json: ${e.message}`);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Helper: translation settings from the RESOLVED config (brand root included)
|
|
50
|
+
function getSettings() {
|
|
51
|
+
return resolveTranslationSettings(Manager.getConfig());
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Helper: compose a locale's messages.json from the EN source + cache
|
|
55
|
+
// (missing translations fall back to English so the file is always complete)
|
|
56
|
+
function composeMessages(enMessages, lang, baseDir) {
|
|
57
|
+
const cache = loadCache(baseDir || translationsDir, lang, 'messages');
|
|
58
|
+
const composed = {};
|
|
59
|
+
|
|
60
|
+
for (const [key, entry] of Object.entries(enMessages)) {
|
|
61
|
+
composed[key] = {
|
|
62
|
+
...entry,
|
|
63
|
+
message: cache[hashKey(entry.message)] ?? entry.message,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return composed;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Deploy locales to dist/_locales/ — EN from config, translations from the
|
|
71
|
+
// committed cache. Always runs (dev + build) so package has all locale files.
|
|
72
|
+
async function deployTranslations(complete) {
|
|
73
|
+
const enMessages = readConfigMessages();
|
|
74
|
+
if (!enMessages) {
|
|
75
|
+
logger.warn('config/messages.json not found or invalid, skipping');
|
|
76
|
+
return complete();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// EN straight from config
|
|
80
|
+
jetpack.write(path.join(distLocalesDir, 'en', 'messages.json'), JSON.stringify(enMessages, null, 2));
|
|
81
|
+
|
|
82
|
+
// Configured languages from the committed cache (none when disabled)
|
|
83
|
+
const settings = getSettings();
|
|
84
|
+
const languages = settings.enabled ? settings.languages : [];
|
|
85
|
+
let count = 0;
|
|
86
|
+
|
|
87
|
+
for (const lang of languages) {
|
|
88
|
+
jetpack.write(
|
|
89
|
+
path.join(distLocalesDir, lang, 'messages.json'),
|
|
90
|
+
JSON.stringify(composeMessages(enMessages, lang), null, 2)
|
|
91
|
+
);
|
|
92
|
+
count++;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
logger.log(`Deployed locales to dist/_locales/: en${count ? ` + ${count} translation(s)` : ''}`);
|
|
96
|
+
|
|
97
|
+
// Complete
|
|
98
|
+
return complete();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Translate config/messages.json message values — per-KEY incremental: only
|
|
102
|
+
// strings without a cache entry (new or edited source) hit the provider.
|
|
103
|
+
async function translateMessages(complete) {
|
|
104
|
+
// Only run in build mode
|
|
105
|
+
if (!Manager.isBuildMode()) {
|
|
106
|
+
logger.log('Skipping messages translation (not in build mode)');
|
|
107
|
+
return complete();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
const settings = getSettings();
|
|
111
|
+
if (!settings.enabled) {
|
|
112
|
+
logger.log('Translation disabled (set translation.languages in omega.json5)');
|
|
113
|
+
return complete();
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const enMessages = readConfigMessages();
|
|
117
|
+
if (!enMessages) {
|
|
118
|
+
logger.warn('config/messages.json not found or invalid, skipping');
|
|
119
|
+
return complete();
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const brand = Manager.getConfig()?.brand?.name;
|
|
123
|
+
const limitsRules = Object.entries(LOCALE_LIMITS)
|
|
124
|
+
.map(([field, limit]) => `- The translation of the "${field}" message must be at most ${limit} characters (Chrome Web Store limit).`)
|
|
125
|
+
.join('\n');
|
|
126
|
+
|
|
127
|
+
let provider = null;
|
|
128
|
+
|
|
129
|
+
for (const lang of settings.languages) {
|
|
130
|
+
const cache = loadCache(translationsDir, lang, 'messages');
|
|
131
|
+
const sources = Object.values(enMessages).map((entry) => entry.message);
|
|
132
|
+
const misses = [...new Set(sources.filter((text) => cache[hashKey(text)] === undefined))];
|
|
133
|
+
|
|
134
|
+
if (!misses.length) {
|
|
135
|
+
logger.log(`[${lang}] All ${sources.length} messages cached`);
|
|
136
|
+
saveCache(translationsDir, lang, 'messages', cache, sources);
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
provider = provider || resolveProvider({ provider: settings.provider, model: settings.model });
|
|
141
|
+
logger.log(`[${lang}] Translating ${misses.length} message(s) (${provider.name}${provider.model ? `/${provider.model}` : ''})...`);
|
|
142
|
+
|
|
143
|
+
const { result } = await translateStrings({
|
|
144
|
+
strings: misses,
|
|
145
|
+
language: lang,
|
|
146
|
+
languageName: languageName(lang),
|
|
147
|
+
brand,
|
|
148
|
+
extraRules: limitsRules,
|
|
149
|
+
send: provider.send,
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
misses.forEach((text, i) => {
|
|
153
|
+
cache[hashKey(text)] = result[i];
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// Warn on Chrome Web Store limit violations (keys sharing a message share a translation)
|
|
157
|
+
for (const [key, entry] of Object.entries(enMessages)) {
|
|
158
|
+
const limit = LOCALE_LIMITS[key];
|
|
159
|
+
const translated = cache[hashKey(entry.message)];
|
|
160
|
+
|
|
161
|
+
if (limit && translated && translated.length > limit) {
|
|
162
|
+
logger.warn(`[${lang}] "${key}" translation is ${translated.length} chars (limit ${limit}) — shorten it in translations/${lang}/messages.json`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
saveCache(translationsDir, lang, 'messages', cache, sources);
|
|
167
|
+
logger.log(`[${lang}] Messages translation saved`);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Complete
|
|
171
|
+
return complete();
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Translate config/description.md per language — whole-document, cached as
|
|
175
|
+
// committed markdown with a source-hash marker (edit the source → retranslate).
|
|
176
|
+
async function translateDescription(complete) {
|
|
177
|
+
// Only run in build mode
|
|
178
|
+
if (!Manager.isBuildMode()) {
|
|
179
|
+
logger.log('Skipping description translation (not in build mode)');
|
|
180
|
+
return complete();
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const settings = getSettings();
|
|
184
|
+
if (!settings.enabled) {
|
|
185
|
+
return complete();
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (!jetpack.exists(configDescriptionPath)) {
|
|
189
|
+
logger.log('config/description.md not found, skipping');
|
|
190
|
+
return complete();
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
const enDescription = jetpack.read(configDescriptionPath);
|
|
194
|
+
if (!enDescription || !enDescription.trim()) {
|
|
195
|
+
logger.warn('config/description.md is empty, skipping');
|
|
196
|
+
return complete();
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const sourceHash = hashKey(enDescription);
|
|
200
|
+
const brand = Manager.getConfig()?.brand?.name;
|
|
201
|
+
let provider = null;
|
|
202
|
+
|
|
203
|
+
for (const lang of settings.languages) {
|
|
204
|
+
const outPath = path.join(translationsDir, lang, 'description.md');
|
|
205
|
+
const existing = jetpack.exists(outPath) ? jetpack.read(outPath) : null;
|
|
206
|
+
|
|
207
|
+
if (existing && existing.match(DESCRIPTION_MARKER)?.[1] === sourceHash) {
|
|
208
|
+
logger.log(`[${lang}] Description cached`);
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
provider = provider || resolveProvider({ provider: settings.provider, model: settings.model });
|
|
213
|
+
logger.log(`[${lang}] Translating description (${enDescription.length} chars)...`);
|
|
214
|
+
|
|
215
|
+
const { result } = await translateStrings({
|
|
216
|
+
strings: [enDescription],
|
|
217
|
+
language: lang,
|
|
218
|
+
languageName: languageName(lang),
|
|
219
|
+
brand,
|
|
220
|
+
extraRules: '- Preserve the markdown formatting (headers, bold, bullets) and keep all emojis exactly as they are.\n- Maintain the same tone — enthusiastic, conversational, and persuasive.',
|
|
221
|
+
send: provider.send,
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
jetpack.write(outPath, `<!-- omega:source ${sourceHash} -->\n${result[0]}`);
|
|
225
|
+
logger.log(`[${lang}] Description translation saved`);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Complete
|
|
229
|
+
return complete();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Read a translated description (marker stripped) — used by the package task
|
|
234
|
+
* for store assets.
|
|
235
|
+
* @param {string} lang - language code
|
|
236
|
+
* @param {string} [baseDir] - translations dir override (tests)
|
|
237
|
+
* @returns {string|null}
|
|
238
|
+
*/
|
|
239
|
+
function readTranslatedDescription(lang, baseDir) {
|
|
240
|
+
const file = path.join(baseDir || translationsDir, lang, 'description.md');
|
|
241
|
+
|
|
242
|
+
if (!jetpack.exists(file)) {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return jetpack.read(file).replace(DESCRIPTION_MARKER, '');
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Export task
|
|
250
|
+
module.exports = series(translateMessages, translateDescription, deployTranslations);
|
|
251
|
+
module.exports.readTranslatedDescription = readTranslatedDescription;
|
|
252
|
+
module.exports.composeMessages = composeMessages;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Read the OMEGA_BUILD_JSON snapshot back OUT of an emitted bundle.
|
|
2
|
+
//
|
|
3
|
+
// Since [#743](https://github.com/Omega-JS-Stack/omega/issues/743) the snapshot
|
|
4
|
+
// is not a file any more — bundle.js's `buildJsonBanner` prepends a one-line
|
|
5
|
+
// IIFE to every emitted bundle that assigns it onto globalThis/self/window, and
|
|
6
|
+
// there is no `build.js` / `build.json` left to read. Anything that INSPECTS a
|
|
7
|
+
// built artifact (the build-lane tests, the extension-auth e2e lane) needs the
|
|
8
|
+
// same answer a browser gets, so it RUNS that banner the way a browser would
|
|
9
|
+
// rather than regexing the text.
|
|
10
|
+
|
|
11
|
+
const fs = require('fs');
|
|
12
|
+
const vm = require('vm');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The build snapshot an emitted bundle carries.
|
|
16
|
+
* @param {string} file - absolute path of an emitted `.bundle.js`
|
|
17
|
+
* @returns {object} the OMEGA_BUILD_JSON blob (`{ timestamp, repo, environment, license, packages, config }`)
|
|
18
|
+
* @throws {Error} when the file carries no bake — a bundle without one is a broken build, never a default
|
|
19
|
+
*/
|
|
20
|
+
function readBakedBuildJson(file) {
|
|
21
|
+
const banner = fs.readFileSync(file, 'utf8').split('\n', 1)[0];
|
|
22
|
+
|
|
23
|
+
// The banner is a self-contained IIFE with no imports and no browser APIs, so
|
|
24
|
+
// a bare context is all it needs — and `globalThis` inside the context IS the
|
|
25
|
+
// context, which is the same assignment a service worker's `self` receives.
|
|
26
|
+
const scope = {};
|
|
27
|
+
try {
|
|
28
|
+
vm.runInNewContext(banner, scope);
|
|
29
|
+
} catch (e) {
|
|
30
|
+
// A first line that is not the banner is the bundle's own code, which is
|
|
31
|
+
// neither self-contained nor runnable here — say what is actually wrong
|
|
32
|
+
// rather than handing back esbuild's output as a parse error.
|
|
33
|
+
throw new Error(`${file} carries no OMEGA_BUILD_JSON bake — its first line is not the bundle task's banner (${e.message})`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (!scope.OMEGA_BUILD_JSON) {
|
|
37
|
+
throw new Error(`${file} carries no OMEGA_BUILD_JSON bake — its first line assigned nothing (the bundle task's banner is missing)`);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return scope.OMEGA_BUILD_JSON;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
module.exports = { readBakedBuildJson };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const { Transform } = require('node:stream');
|
|
3
|
+
const { template } = require('node-powertools');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Creates a transform stream that processes template variables in files
|
|
8
|
+
**/
|
|
9
|
+
function createTemplateTransform(data) {
|
|
10
|
+
const extensions = ['html', 'md', 'liquid', 'json', 'yml', 'yaml']
|
|
11
|
+
|
|
12
|
+
return new Transform({
|
|
13
|
+
objectMode: true,
|
|
14
|
+
transform(file, encoding, callback) {
|
|
15
|
+
// Skip directories
|
|
16
|
+
if (file.isDirectory()) {
|
|
17
|
+
return callback(null, file);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Check if file extension matches
|
|
21
|
+
const ext = path.extname(file.path).toLowerCase().slice(1);
|
|
22
|
+
if (!extensions.includes(ext)) {
|
|
23
|
+
return callback(null, file);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Process the file contents
|
|
27
|
+
try {
|
|
28
|
+
const contents = file.contents.toString();
|
|
29
|
+
|
|
30
|
+
// Process templates
|
|
31
|
+
const templated = template(contents, data, {
|
|
32
|
+
brackets: ['[', ']'],
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
// Update file contents if changed
|
|
36
|
+
if (contents !== templated) {
|
|
37
|
+
file.contents = Buffer.from(templated);
|
|
38
|
+
const relativePath = file.relative || file.path;
|
|
39
|
+
}
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.error(`Error processing templates in ${file.path}:`, error);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Pass the file through
|
|
45
|
+
callback(null, file);
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
module.exports = createTemplateTransform;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Build Instructions
|
|
2
|
+
|
|
3
|
+
This document provides instructions for building the extension from source code.
|
|
4
|
+
|
|
5
|
+
## System Requirements
|
|
6
|
+
|
|
7
|
+
This extension was built on the following system:
|
|
8
|
+
- **Operating System:** { system.platform } { system.release } ({ system.arch })
|
|
9
|
+
- **Node.js Version:** { system.nodeVersion }
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
1. Install Node.js { system.nodeVersion } or compatible version
|
|
14
|
+
2. Install npm (comes with Node.js)
|
|
15
|
+
|
|
16
|
+
## Build Steps
|
|
17
|
+
|
|
18
|
+
1. Extract the source code zip
|
|
19
|
+
2. Open a terminal and navigate to the extracted directory
|
|
20
|
+
3. Install dependencies:
|
|
21
|
+
```sh
|
|
22
|
+
npm install
|
|
23
|
+
```
|
|
24
|
+
4. Build the extension:
|
|
25
|
+
```sh
|
|
26
|
+
npm run build
|
|
27
|
+
```
|
|
28
|
+
5. The built extensions will be in `packaged/` directory:
|
|
29
|
+
- **Chrome/Edge/Brave:** `packaged/chromium/raw/` (unpacked) and `packaged/chromium/extension.zip`
|
|
30
|
+
- **Firefox:** `packaged/firefox/raw/` (unpacked) and `packaged/firefox/extension.zip`
|
|
31
|
+
- **Opera:** `packaged/opera/raw/` (unpacked) and `packaged/opera/extension.zip`
|
|
32
|
+
|
|
33
|
+
## Loading the Extension
|
|
34
|
+
|
|
35
|
+
### Chrome
|
|
36
|
+
1. Go to `chrome://extensions`
|
|
37
|
+
2. Enable "Developer mode"
|
|
38
|
+
3. Click "Load unpacked"
|
|
39
|
+
4. Select the `packaged/chromium/raw/` directory
|
|
40
|
+
|
|
41
|
+
### Edge
|
|
42
|
+
1. Go to `edge://extensions`
|
|
43
|
+
2. Enable "Developer mode"
|
|
44
|
+
3. Click "Load unpacked"
|
|
45
|
+
4. Select the `packaged/chromium/raw/` directory
|
|
46
|
+
|
|
47
|
+
### Firefox
|
|
48
|
+
1. Go to `about:debugging`
|
|
49
|
+
2. Click "This Firefox"
|
|
50
|
+
3. Click "Load Temporary Add-on"
|
|
51
|
+
4. Select `packaged/firefox/raw/manifest.json`
|
|
52
|
+
|
|
53
|
+
### Opera
|
|
54
|
+
1. Go to `opera://extensions`
|
|
55
|
+
2. Enable "Developer mode"
|
|
56
|
+
3. Click "Load unpacked"
|
|
57
|
+
4. Select the `packaged/opera/raw/` directory
|
|
58
|
+
|
|
59
|
+
### Brave
|
|
60
|
+
1. Go to `brave://extensions`
|
|
61
|
+
2. Enable "Developer mode"
|
|
62
|
+
3. Click "Load unpacked"
|
|
63
|
+
4. Select the `packaged/chromium/raw/` directory
|
|
64
|
+
|
|
65
|
+
> **Note:** Brave is Chromium-based and uses the same build as Chrome/Edge. Extensions published to the Chrome Web Store are automatically available in Brave.
|
|
66
|
+
|
|
67
|
+
## Questions
|
|
68
|
+
|
|
69
|
+
If you have any questions about the build process, please contact the developer.
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// // Libraries
|
|
2
|
+
// const WebManager = require('@omega.js/client');
|
|
3
|
+
|
|
4
|
+
// // Class
|
|
5
|
+
// function Manager() {
|
|
6
|
+
// const self = this;
|
|
7
|
+
|
|
8
|
+
// // Properties
|
|
9
|
+
// self.extension = null;
|
|
10
|
+
// self.messenger = null;
|
|
11
|
+
// self.logger = null;
|
|
12
|
+
// self.omega = null;
|
|
13
|
+
|
|
14
|
+
// // Return
|
|
15
|
+
// return self;
|
|
16
|
+
// }
|
|
17
|
+
|
|
18
|
+
// Manager.prototype.initialize = function (callback) {
|
|
19
|
+
// const self = this;
|
|
20
|
+
|
|
21
|
+
// // Configuration
|
|
22
|
+
// const configuration = window.OMEGA_BUILD_JSON?.config;
|
|
23
|
+
|
|
24
|
+
// // Initiate the web manager
|
|
25
|
+
// self.extension = require('./lib/extension');
|
|
26
|
+
// self.messenger = null;
|
|
27
|
+
// self.logger = new (require('./lib/logger-lite'))('popup');
|
|
28
|
+
// self.omega = new WebManager();
|
|
29
|
+
|
|
30
|
+
// // Initialize
|
|
31
|
+
// self.omega.init(configuration, callback);
|
|
32
|
+
|
|
33
|
+
// // Return
|
|
34
|
+
// return self.omega;
|
|
35
|
+
// };
|
|
36
|
+
|
|
37
|
+
// Manager.prototype.library = function (name) {
|
|
38
|
+
// const self = this;
|
|
39
|
+
|
|
40
|
+
// // Return
|
|
41
|
+
// return require(`./lib/${name}`);
|
|
42
|
+
// };
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
// // Export
|
|
46
|
+
// module.exports = Manager;
|