@omega.js/desktop 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 +166 -0
- package/bin/omega +2 -0
- package/bin/omega-desktop +2 -0
- package/bin/omg +2 -0
- package/dist/assets/css/core/_fontawesome.scss +146 -0
- package/dist/assets/css/core/_initialize.scss +38 -0
- package/dist/assets/css/omega-desktop.scss +39 -0
- package/dist/assets/css/shell/_index.scss +207 -0
- package/dist/assets/css/tokens/_index.scss +166 -0
- package/dist/assets/js/bootstrap.bundle.js +1 -0
- package/dist/assets/js/core/app-shell.js +136 -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/build.js +249 -0
- package/dist/cli-run.js +34 -0
- package/dist/cli.js +49 -0
- package/dist/commands/build.js +32 -0
- package/dist/commands/cdp/capture.js +91 -0
- package/dist/commands/cdp/client.js +140 -0
- package/dist/commands/cdp/eval.js +20 -0
- package/dist/commands/cdp/quit.js +84 -0
- package/dist/commands/cdp/relaunch.js +62 -0
- package/dist/commands/cdp/shot.js +20 -0
- package/dist/commands/cdp/status.js +38 -0
- package/dist/commands/cdp/theme.js +21 -0
- package/dist/commands/cdp.js +53 -0
- package/dist/commands/clean.js +34 -0
- package/dist/commands/deploy.js +75 -0
- package/dist/commands/finalize-release.js +238 -0
- package/dist/commands/install.js +37 -0
- package/dist/commands/launch.js +150 -0
- package/dist/commands/lib/dependencies.js +35 -0
- package/dist/commands/lib/deploy-precheck.js +117 -0
- package/dist/commands/lib/ensure-target.js +300 -0
- package/dist/commands/logs.js +185 -0
- package/dist/commands/package.js +31 -0
- package/dist/commands/publish.js +34 -0
- package/dist/commands/push-secrets.js +141 -0
- package/dist/commands/release.js +286 -0
- package/dist/commands/runner.js +1874 -0
- package/dist/commands/sign-windows.js +563 -0
- package/dist/commands/test.js +121 -0
- package/dist/commands/update.js +21 -0
- package/dist/commands/validate-certs.js +238 -0
- package/dist/commands/version.js +9 -0
- package/dist/config/page-template.html +35 -0
- package/dist/defaults/.github/workflows/build.yml +276 -0
- package/dist/defaults/AGENTS.md +109 -0
- package/dist/defaults/CHANGELOG.md +15 -0
- package/dist/defaults/CLAUDE.md +1 -0
- package/dist/defaults/_.gitignore +24 -0
- package/dist/defaults/_mas/README.md +49 -0
- package/dist/defaults/_mas/entitlements.mas.inherit.plist +12 -0
- package/dist/defaults/_mas/entitlements.mas.loginhelper.plist +8 -0
- package/dist/defaults/_mas/entitlements.mas.plist +33 -0
- package/dist/defaults/config/certs/.gitkeep +0 -0
- package/dist/defaults/config/certs/README.md +60 -0
- package/dist/defaults/config/icons/macos/dmg.png +0 -0
- package/dist/defaults/config/icons/macos/icon.png +0 -0
- package/dist/defaults/config/icons/macos/tray.png +0 -0
- package/dist/defaults/config/icons/windows/icon.png +0 -0
- package/dist/defaults/config/omega.json5 +279 -0
- package/dist/defaults/docs/README.md +17 -0
- package/dist/defaults/gulpfile.js +6 -0
- package/dist/defaults/hooks/build/post.js +9 -0
- package/dist/defaults/hooks/build/pre.js +9 -0
- package/dist/defaults/hooks/notarize/post.js +16 -0
- package/dist/defaults/hooks/release/post.js +9 -0
- package/dist/defaults/hooks/release/pre.js +9 -0
- package/dist/defaults/src/assets/js/components/about/index.js +10 -0
- package/dist/defaults/src/assets/js/components/main/index.js +14 -0
- package/dist/defaults/src/assets/js/components/settings/index.js +10 -0
- package/dist/defaults/src/assets/scss/main.scss +34 -0
- package/dist/defaults/src/assets/scss/pages/about.scss +3 -0
- package/dist/defaults/src/assets/scss/pages/main.scss +4 -0
- package/dist/defaults/src/assets/scss/pages/settings.scss +3 -0
- package/dist/defaults/src/integrations/context-menu/index.js +60 -0
- package/dist/defaults/src/integrations/menu/index.js +58 -0
- package/dist/defaults/src/integrations/tray/index.js +60 -0
- package/dist/defaults/src/main.js +78 -0
- package/dist/defaults/src/preload.js +15 -0
- package/dist/defaults/src/views/about/index.html +3 -0
- package/dist/defaults/src/views/main/index.html +8 -0
- package/dist/defaults/src/views/settings/index.html +3 -0
- package/dist/defaults/test/README.md +41 -0
- package/dist/defaults/test/_init.js +10 -0
- package/dist/gulp/main.js +144 -0
- package/dist/gulp/tasks/audit.js +82 -0
- package/dist/gulp/tasks/build-config.js +445 -0
- package/dist/gulp/tasks/bundle.js +451 -0
- package/dist/gulp/tasks/defaults.js +20 -0
- package/dist/gulp/tasks/distribute.js +8 -0
- package/dist/gulp/tasks/html.js +95 -0
- package/dist/gulp/tasks/package-quick.js +102 -0
- package/dist/gulp/tasks/package.js +53 -0
- package/dist/gulp/tasks/release.js +57 -0
- package/dist/gulp/tasks/sass.js +82 -0
- package/dist/gulp/tasks/serve.js +191 -0
- package/dist/hooks/notarize.js +70 -0
- package/dist/index.js +14 -0
- package/dist/lib/_menu-mixin.js +199 -0
- package/dist/lib/analytics.js +360 -0
- package/dist/lib/app-state.js +220 -0
- package/dist/lib/auth-flow.js +160 -0
- package/dist/lib/auth-persistence.js +207 -0
- package/dist/lib/auto-updater.js +752 -0
- package/dist/lib/client-bridge.js +371 -0
- package/dist/lib/context-menu.js +302 -0
- package/dist/lib/context.js +162 -0
- package/dist/lib/deep-link.js +370 -0
- package/dist/lib/fontawesome.js +203 -0
- package/dist/lib/ipc.js +169 -0
- package/dist/lib/logger-lite.js +259 -0
- package/dist/lib/logger.js +4 -0
- package/dist/lib/menu.js +521 -0
- package/dist/lib/protocol.js +85 -0
- package/dist/lib/remote-config.js +224 -0
- package/dist/lib/remote-scripts.js +158 -0
- package/dist/lib/restart-manager/index.js +550 -0
- package/dist/lib/restart-manager/install.js +353 -0
- package/dist/lib/restart-manager/protocol.js +274 -0
- package/dist/lib/sign-helpers/auto-unlock.js +95 -0
- package/dist/lib/sign-helpers/entitlements.js +98 -0
- package/dist/lib/sign-helpers/resolve-icons.js +171 -0
- package/dist/lib/sign-helpers/sign-events.js +75 -0
- package/dist/lib/sign-helpers/update-info.js +186 -0
- package/dist/lib/startup.js +214 -0
- package/dist/lib/storage.js +193 -0
- package/dist/lib/templating.js +85 -0
- package/dist/lib/theme.js +173 -0
- package/dist/lib/tray.js +414 -0
- package/dist/lib/usage.js +141 -0
- package/dist/lib/window-manager.js +509 -0
- package/dist/main.js +542 -0
- package/dist/omega-bin.js +6 -0
- package/dist/preload.js +241 -0
- package/dist/renderer.js +456 -0
- package/dist/test/assert.js +4 -0
- package/dist/test/fixtures/consumer-app/config/omega.json5 +39 -0
- package/dist/test/fixtures/consumer-app/package.json +13 -0
- package/dist/test/fixtures/consumer-app/src/assets/js/components/main/index.js +11 -0
- package/dist/test/fixtures/consumer-app/src/assets/scss/main.scss +3 -0
- package/dist/test/fixtures/consumer-app/src/main.js +17 -0
- package/dist/test/fixtures/consumer-app/src/preload.js +4 -0
- package/dist/test/fixtures/consumer-app/src/views/main/index.html +4 -0
- package/dist/test/harness/boot-entry.js +237 -0
- package/dist/test/harness/main-entry.js +494 -0
- package/dist/test/harness/package.json +6 -0
- package/dist/test/harness/renderer-entry.js +173 -0
- package/dist/test/harness/renderer-preload.js +310 -0
- package/dist/test/harness/renderer.html +12 -0
- package/dist/test/index.js +65 -0
- package/dist/test/runner.js +99 -0
- package/dist/test/runners/boot.js +414 -0
- package/dist/test/runners/electron.js +92 -0
- package/dist/test/runners/render-event.js +46 -0
- package/dist/test/suites/boot/build-isolation.test.js +54 -0
- package/dist/test/suites/boot/consumer-app-boots.test.js +99 -0
- package/dist/test/suites/boot/restart-manager.test.js +38 -0
- package/dist/test/suites/boot/storage-bundled.test.js +59 -0
- package/dist/test/suites/boot/theme.test.js +68 -0
- package/dist/test/suites/boot/view-suite.test.js +47 -0
- package/dist/test/suites/build/attach-log-file.test.js +99 -0
- package/dist/test/suites/build/audit.test.js +271 -0
- package/dist/test/suites/build/boot-fixture.test.js +48 -0
- package/dist/test/suites/build/build-config.test.js +457 -0
- package/dist/test/suites/build/build-verbs.test.js +156 -0
- package/dist/test/suites/build/build-workflow-jobs.test.js +55 -0
- package/dist/test/suites/build/cdp.test.js +89 -0
- package/dist/test/suites/build/cli.test.js +135 -0
- package/dist/test/suites/build/config-schema.test.js +133 -0
- package/dist/test/suites/build/defaults-scaffold.test.js +192 -0
- package/dist/test/suites/build/deliver-certs.test.js +95 -0
- package/dist/test/suites/build/derive-signing-env.test.js +122 -0
- package/dist/test/suites/build/electron-node-version.test.js +49 -0
- package/dist/test/suites/build/electron-targets.test.js +92 -0
- package/dist/test/suites/build/ensure-target.test.js +131 -0
- package/dist/test/suites/build/entitlements.test.js +107 -0
- package/dist/test/suites/build/env-delivery.test.js +166 -0
- package/dist/test/suites/build/env-watch.test.js +86 -0
- package/dist/test/suites/build/exports.test.js +63 -0
- package/dist/test/suites/build/finalize-release.test.js +152 -0
- package/dist/test/suites/build/format-fetch-error.test.js +85 -0
- package/dist/test/suites/build/framework-deps.test.js +173 -0
- package/dist/test/suites/build/get-config.test.js +137 -0
- package/dist/test/suites/build/github-utils.test.js +54 -0
- package/dist/test/suites/build/icon-sheet.test.js +62 -0
- package/dist/test/suites/build/license-stamp.test.js +63 -0
- package/dist/test/suites/build/logger-lite.test.js +148 -0
- package/dist/test/suites/build/logs-command.test.js +226 -0
- package/dist/test/suites/build/manager.test.js +193 -0
- package/dist/test/suites/build/menu-mixin.test.js +130 -0
- package/dist/test/suites/build/merge-line-files.test.js +230 -0
- package/dist/test/suites/build/omega-shell.test.js +94 -0
- package/dist/test/suites/build/omega-tokens.test.js +64 -0
- package/dist/test/suites/build/project-scripts-deps.test.js +90 -0
- package/dist/test/suites/build/push-secrets.test.js +226 -0
- package/dist/test/suites/build/release-pipeline.test.js +365 -0
- package/dist/test/suites/build/renderer-auth-bridge.test.js +158 -0
- package/dist/test/suites/build/renderer-entry-key.test.js +37 -0
- package/dist/test/suites/build/renderer-node-shims.test.js +125 -0
- package/dist/test/suites/build/resolve-icons.test.js +296 -0
- package/dist/test/suites/build/resolve-signing-cert.test.js +342 -0
- package/dist/test/suites/build/restart-manager-install.test.js +178 -0
- package/dist/test/suites/build/restart-manager-protocol.test.js +158 -0
- package/dist/test/suites/build/run-consumer-hook.test.js +137 -0
- package/dist/test/suites/build/runner.test.js +2599 -0
- package/dist/test/suites/build/sanitize-signing-env.test.js +98 -0
- package/dist/test/suites/build/sanitize-url.test.js +78 -0
- package/dist/test/suites/build/secure-remote-url.test.js +42 -0
- package/dist/test/suites/build/sentry.test.js +89 -0
- package/dist/test/suites/build/serve-resolve-electron.test.js +58 -0
- package/dist/test/suites/build/setup-scripts.test.js +172 -0
- package/dist/test/suites/build/sign-events.test.js +90 -0
- package/dist/test/suites/build/sign-windows-e2e.test.js +302 -0
- package/dist/test/suites/build/sign-windows.test.js +313 -0
- package/dist/test/suites/build/strip-dev-blocks.test.js +116 -0
- package/dist/test/suites/build/templating.test.js +95 -0
- package/dist/test/suites/build/test-discovery.test.js +64 -0
- package/dist/test/suites/build/test-stealth.test.js +83 -0
- package/dist/test/suites/build/test-target-no-match.test.js +119 -0
- package/dist/test/suites/build/update-info.test.js +224 -0
- package/dist/test/suites/build/url-helpers.test.js +289 -0
- package/dist/test/suites/build/validate-certs.test.js +103 -0
- package/dist/test/suites/build/validate-config.test.js +90 -0
- package/dist/test/suites/build/verb-logs.test.js +43 -0
- package/dist/test/suites/build/wave5-pins.test.js +35 -0
- package/dist/test/suites/main/analytics.test.js +364 -0
- package/dist/test/suites/main/app-state.test.js +197 -0
- package/dist/test/suites/main/auth-flow.test.js +196 -0
- package/dist/test/suites/main/auth-persistence.test.js +167 -0
- package/dist/test/suites/main/auto-updater.test.js +1138 -0
- package/dist/test/suites/main/boot-sequence.test.js +77 -0
- package/dist/test/suites/main/client-bridge.integration.test.js +134 -0
- package/dist/test/suites/main/client-bridge.test.js +249 -0
- package/dist/test/suites/main/context-menu.test.js +365 -0
- package/dist/test/suites/main/context.test.js +155 -0
- package/dist/test/suites/main/deep-link.test.js +288 -0
- package/dist/test/suites/main/epipe-handler.test.js +40 -0
- package/dist/test/suites/main/fontawesome.test.js +147 -0
- package/dist/test/suites/main/harness-cdp.test.js +49 -0
- package/dist/test/suites/main/ipc.test.js +165 -0
- package/dist/test/suites/main/menu.test.js +419 -0
- package/dist/test/suites/main/protocol.test.js +77 -0
- package/dist/test/suites/main/remote-config.test.js +189 -0
- package/dist/test/suites/main/remote-scripts.test.js +276 -0
- package/dist/test/suites/main/restart-manager.test.js +328 -0
- package/dist/test/suites/main/startup-paths-and-ua.test.js +99 -0
- package/dist/test/suites/main/startup.test.js +129 -0
- package/dist/test/suites/main/stealth-window.test.js +74 -0
- package/dist/test/suites/main/storage.test.js +89 -0
- package/dist/test/suites/main/theme.test.js +137 -0
- package/dist/test/suites/main/tray.test.js +322 -0
- package/dist/test/suites/main/truncate-on-boot.test.js +22 -0
- package/dist/test/suites/main/url-helpers.test.js +429 -0
- package/dist/test/suites/main/usage.test.js +127 -0
- package/dist/test/suites/main/window-bounds.test.js +169 -0
- package/dist/test/suites/main/window-manager.test.js +233 -0
- package/dist/test/suites/renderer/analytics-bridge.test.js +128 -0
- package/dist/test/suites/renderer/cross-context-helpers.test.js +131 -0
- package/dist/test/suites/renderer/fontawesome.test.js +190 -0
- package/dist/test/suites/renderer/round-trip.test.js +107 -0
- package/dist/test/suites/renderer/theme.test.js +118 -0
- package/dist/test/suites/renderer/tooltips.test.js +166 -0
- package/dist/test/suites/renderer/verts.test.js +100 -0
- package/dist/test/suites/renderer/window-em-surface.test.js +107 -0
- package/dist/test/utils/dist-snapshot.js +36 -0
- package/dist/test/utils/extended-mode-warning.js +13 -0
- package/dist/utils/app-root.js +28 -0
- package/dist/utils/attach-log-file.js +4 -0
- package/dist/utils/build-pipeline.js +58 -0
- package/dist/utils/deliver-certs.js +69 -0
- package/dist/utils/derive-signing-env.js +56 -0
- package/dist/utils/dist-root.js +21 -0
- package/dist/utils/electron-node-version.js +48 -0
- package/dist/utils/electron-targets.js +72 -0
- package/dist/utils/format-fetch-error.js +38 -0
- package/dist/utils/github.js +73 -0
- package/dist/utils/load-consumer-file.js +26 -0
- package/dist/utils/merge-line-files.js +5 -0
- package/dist/utils/mode-helpers.js +147 -0
- package/dist/utils/resolve-signing-cert.js +175 -0
- package/dist/utils/run-consumer-hook.js +38 -0
- package/dist/utils/runner-env.js +687 -0
- package/dist/utils/safe-install.js +4 -0
- package/dist/utils/sanitize-signing-env.js +45 -0
- package/dist/utils/sanitize-url.js +28 -0
- package/dist/utils/secure-remote-url.js +25 -0
- package/dist/utils/stealth-window.js +37 -0
- package/dist/utils/test-stealth.js +29 -0
- package/dist/utils/url-helpers.js +169 -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/analytics/adapters/ga4.js +26 -0
- package/dist/vendor/analytics/adapters/meta.js +26 -0
- package/dist/vendor/analytics/adapters/resolve.js +130 -0
- package/dist/vendor/analytics/adapters/tiktok.js +27 -0
- package/dist/vendor/analytics/catalog.js +908 -0
- package/dist/vendor/analytics/consent.js +49 -0
- package/dist/vendor/analytics/core.js +141 -0
- package/dist/vendor/analytics/identity.js +136 -0
- package/dist/vendor/analytics/index.js +170 -0
- package/dist/vendor/analytics/logger.js +40 -0
- package/dist/vendor/analytics/transports/browser.js +110 -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/certs.js +199 -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/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/prompt.js +187 -0
- package/dist/vendor/devkit/safe-install.js +18 -0
- package/dist/vendor/devkit/scaffold-guard.js +96 -0
- package/dist/vendor/devkit/stop-signals.js +28 -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/update.js +569 -0
- package/dist/vendor/monitoring/core.js +180 -0
- package/dist/vendor/monitoring/env.js +49 -0
- package/dist/vendor/monitoring/index.js +28 -0
- package/dist/vendor/monitoring/logger.js +39 -0
- package/dist/vendor/monitoring/main.js +99 -0
- package/dist/vendor/monitoring/preload.js +45 -0
- package/dist/vendor/monitoring/renderer.js +87 -0
- package/docs/analytics.md +140 -0
- package/docs/app-state.md +92 -0
- package/docs/audit.md +69 -0
- package/docs/auto-updater.md +243 -0
- package/docs/boot-sequence.md +39 -0
- package/docs/build-system.md +161 -0
- package/docs/cdp-debugging.md +169 -0
- package/docs/client-bridge.md +267 -0
- package/docs/common-mistakes.md +21 -0
- package/docs/config-schema.md +120 -0
- package/docs/context-menu.md +112 -0
- package/docs/context.md +81 -0
- package/docs/css.md +84 -0
- package/docs/deep-link.md +178 -0
- package/docs/environment-detection.md +104 -0
- package/docs/fontawesome.md +107 -0
- package/docs/hooks.md +87 -0
- package/docs/icons.md +79 -0
- package/docs/index.md +279 -0
- package/docs/installer-options.md +162 -0
- package/docs/ipc.md +61 -0
- package/docs/lib-modules.md +53 -0
- package/docs/logging.md +229 -0
- package/docs/menu.md +160 -0
- package/docs/releasing.md +229 -0
- package/docs/remote-config.md +118 -0
- package/docs/remote-scripts.md +144 -0
- package/docs/restart-manager.md +144 -0
- package/docs/runner.md +253 -0
- package/docs/sentry.md +97 -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/signing.md +267 -0
- package/docs/startup.md +142 -0
- package/docs/storage.md +59 -0
- package/docs/templating.md +101 -0
- package/docs/test-boot-layer.md +157 -0
- package/docs/test-framework.md +357 -0
- package/docs/themes.md +135 -0
- package/docs/tooltips.md +99 -0
- package/docs/tray.md +164 -0
- package/docs/usage.md +58 -0
- package/docs/verts.md +62 -0
- package/docs/windows.md +149 -0
- package/package.json +184 -0
- package/scripts/sync-nvmrc.js +100 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
// Renderer test-harness preload. Bridges between the harness BrowserWindow and the parent
|
|
2
|
+
// main-process harness via two channels:
|
|
3
|
+
//
|
|
4
|
+
// __emTest:ready — renderer signals it's ready to receive suites
|
|
5
|
+
// __emTest:result — renderer emits per-test results / suite-start / fatal
|
|
6
|
+
// __emTest:suites — main sends serialized renderer suites for execution
|
|
7
|
+
//
|
|
8
|
+
// Also exposes the production-style `window.desktop` surface (mirrors src/preload.js so renderer
|
|
9
|
+
// test suites can assert on it).
|
|
10
|
+
|
|
11
|
+
const { contextBridge, ipcRenderer } = require('electron');
|
|
12
|
+
|
|
13
|
+
// Mirror the production preload's forwarding logger so renderer-layer tests can
|
|
14
|
+
// verify that logger.log/warn/error actually emits 'desktop:log:forward' to main.
|
|
15
|
+
// Kept minimal — same channel name as production (src/preload.js).
|
|
16
|
+
function makeForwardingLogger() {
|
|
17
|
+
const FORWARD_CHANNEL = 'desktop:log:forward';
|
|
18
|
+
const methods = ['log', 'info', 'warn', 'error', 'debug'];
|
|
19
|
+
const out = {};
|
|
20
|
+
for (const m of methods) {
|
|
21
|
+
const fileLevel = m === 'log' ? 'info' : m;
|
|
22
|
+
out[m] = function () {
|
|
23
|
+
const args = ['[em]', ...Array.from(arguments)];
|
|
24
|
+
const fn = console[m] || console.log;
|
|
25
|
+
try { fn.apply(console, args); } catch (_) { /* ignore */ }
|
|
26
|
+
try {
|
|
27
|
+
ipcRenderer.send(FORWARD_CHANNEL, {
|
|
28
|
+
name: 'renderer',
|
|
29
|
+
level: fileLevel,
|
|
30
|
+
args: Array.from(arguments).map((a) => {
|
|
31
|
+
if (a instanceof Error) return { __error: true, message: a.message, stack: a.stack };
|
|
32
|
+
try { JSON.stringify(a); return a; } catch (_) { return String(a); }
|
|
33
|
+
}),
|
|
34
|
+
});
|
|
35
|
+
} catch (_) { /* ignore */ }
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
contextBridge.exposeInMainWorld('__emTest', {
|
|
42
|
+
// Signal main that the harness page is loaded and ready to accept suites.
|
|
43
|
+
ready: () => ipcRenderer.send('__emTest:ready'),
|
|
44
|
+
// Forward a result event up to main, which prints it.
|
|
45
|
+
emit: (evt) => ipcRenderer.send('__emTest:result', evt),
|
|
46
|
+
// Subscribe to incoming suite payloads.
|
|
47
|
+
onSuites: (handler) => {
|
|
48
|
+
ipcRenderer.on('__emTest:suites', (_e, suites) => handler(suites));
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Expose a thin bridge to the actual renderer Manager so renderer-layer tests can
|
|
53
|
+
// assert on its cross-context helpers (isDevelopment / isProduction / isTesting /
|
|
54
|
+
// getVersion / getEnvironment / getApiUrl / getFunctionsUrl / getWebsiteUrl). We
|
|
55
|
+
// instantiate the renderer Manager here in the preload (before contextIsolation
|
|
56
|
+
// closes off `require`) and forward each helper as a sync contextBridge function.
|
|
57
|
+
// We deliberately do NOT call `manager.initialize()` — that touches @omega.js/client /
|
|
58
|
+
// firebase / IPC, which is heavy + flaky for a helper-shape assertion. Instead we
|
|
59
|
+
// stub `manager.config` from a built-time-injected blob so config-dependent
|
|
60
|
+
// helpers (getEnvironment fallback, getWebsiteUrl prod path) have something to read.
|
|
61
|
+
let testManager;
|
|
62
|
+
try {
|
|
63
|
+
// The renderer test harness loads the renderer Manager by absolute dist path
|
|
64
|
+
// injected by the boot harness. In its absence, fall back to require-by-name
|
|
65
|
+
// (works when the harness is run from a consumer with @omega.js/desktop in node_modules).
|
|
66
|
+
const RendererManager = process.env.OMEGA_TEST_RENDERER_MANAGER_PATH
|
|
67
|
+
? require(process.env.OMEGA_TEST_RENDERER_MANAGER_PATH)
|
|
68
|
+
: require('@omega.js/desktop/renderer');
|
|
69
|
+
testManager = new RendererManager();
|
|
70
|
+
// Seed config so getApiUrl / getFunctionsUrl / getWebsiteUrl have something to
|
|
71
|
+
// read in their prod branches. Tests can mutate this via __emTestManager.config.set().
|
|
72
|
+
testManager.config = {
|
|
73
|
+
em: { environment: 'production' },
|
|
74
|
+
brand: { url: 'https://example.com' },
|
|
75
|
+
cloud: { provider: 'firebase', config: { projectId: 'demo-app', authDomain: 'demo-app.firebaseapp.com' } },
|
|
76
|
+
};
|
|
77
|
+
} catch (e) {
|
|
78
|
+
console.warn('[renderer-preload] Could not instantiate renderer Manager for tests:', e.message);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Wire the renderer Manager's DOM enhancements (FontAwesome auto-render +
|
|
82
|
+
// Bootstrap tooltip auto-init) against THIS document. In production these run
|
|
83
|
+
// in the page world (the consumer's esbuild bundle); here the preload world
|
|
84
|
+
// stands in — the DOM is shared, so injected SVGs / tooltip tips are visible
|
|
85
|
+
// to page-world test suites. The Manager reads `window.desktop.ipc` which only
|
|
86
|
+
// exists in the page world, so hand it the preload's ipcRenderer directly.
|
|
87
|
+
try {
|
|
88
|
+
if (testManager) {
|
|
89
|
+
testManager.ipc = {
|
|
90
|
+
invoke: (channel, payload) => ipcRenderer.invoke(channel, payload),
|
|
91
|
+
};
|
|
92
|
+
testManager._wireFontAwesome();
|
|
93
|
+
testManager._wireTooltips();
|
|
94
|
+
}
|
|
95
|
+
} catch (e) {
|
|
96
|
+
console.warn('[renderer-preload] Could not wire DOM enhancements:', e.message);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
// Mirror the production preload surface so renderer test suites can assert against it.
|
|
101
|
+
const desktopSurface = {
|
|
102
|
+
ipc: {
|
|
103
|
+
invoke: (channel, payload) => ipcRenderer.invoke(channel, payload),
|
|
104
|
+
// Mirror production preload (wave-5 F4): returns an unsubscribe fn.
|
|
105
|
+
on: (channel, handler) => {
|
|
106
|
+
const wrapped = (_, payload) => handler(payload);
|
|
107
|
+
ipcRenderer.on(channel, wrapped);
|
|
108
|
+
return () => ipcRenderer.removeListener(channel, wrapped);
|
|
109
|
+
},
|
|
110
|
+
send: (channel, payload) => ipcRenderer.send(channel, payload),
|
|
111
|
+
},
|
|
112
|
+
storage: {
|
|
113
|
+
get: (key, def) => ipcRenderer.invoke('desktop:storage:get', { key, def }),
|
|
114
|
+
set: (key, val) => ipcRenderer.invoke('desktop:storage:set', { key, val }),
|
|
115
|
+
delete: (key) => ipcRenderer.invoke('desktop:storage:delete', { key }),
|
|
116
|
+
has: (key) => ipcRenderer.invoke('desktop:storage:has', { key }),
|
|
117
|
+
clear: () => ipcRenderer.invoke('desktop:storage:clear'),
|
|
118
|
+
// Mirror production preload's onChange so renderer-layer tests can verify
|
|
119
|
+
// change-broadcasts round-trip across IPC.
|
|
120
|
+
onChange: (key, handler) => {
|
|
121
|
+
const wrapped = (_, payload) => {
|
|
122
|
+
if (key === '*' || payload?.key === key) handler(payload);
|
|
123
|
+
};
|
|
124
|
+
ipcRenderer.on('desktop:storage:change', wrapped);
|
|
125
|
+
return () => ipcRenderer.removeListener('desktop:storage:change', wrapped);
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
// Mirror production preload's theme surface (get/set via IPC; onChange via
|
|
129
|
+
// matchMedia — the real mechanism, since themeSource flips prefers-color-scheme).
|
|
130
|
+
theme: {
|
|
131
|
+
get: () => ipcRenderer.invoke('desktop:theme:get'),
|
|
132
|
+
set: (source) => ipcRenderer.invoke('desktop:theme:set', { source }),
|
|
133
|
+
onChange: (handler) => {
|
|
134
|
+
const media = window.matchMedia('(prefers-color-scheme: dark)');
|
|
135
|
+
const wrapped = (e) => handler({ resolved: e.matches ? 'dark' : 'light' });
|
|
136
|
+
media.addEventListener('change', wrapped);
|
|
137
|
+
return () => media.removeEventListener('change', wrapped);
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
// Mirror production preload's fontawesome surface (bundled-icon lookup).
|
|
141
|
+
fontawesome: {
|
|
142
|
+
get: (name, style) => ipcRenderer.invoke('desktop:fontawesome:get', { name, style }).then((r) => r?.svg ?? null),
|
|
143
|
+
},
|
|
144
|
+
logger: makeForwardingLogger(),
|
|
145
|
+
autoUpdater: {
|
|
146
|
+
getStatus: () => ipcRenderer.invoke('desktop:auto-updater:status'),
|
|
147
|
+
checkNow: () => ipcRenderer.invoke('desktop:auto-updater:check-now'),
|
|
148
|
+
installNow: () => ipcRenderer.invoke('desktop:auto-updater:install-now'),
|
|
149
|
+
onStatus: (handler) => {
|
|
150
|
+
const wrapped = (_, payload) => handler(payload);
|
|
151
|
+
ipcRenderer.on('desktop:auto-updater:status', wrapped);
|
|
152
|
+
return () => ipcRenderer.removeListener('desktop:auto-updater:status', wrapped);
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
// Mirror production preload's analytics/context/usage/remoteConfig so renderer-layer
|
|
156
|
+
// tests can verify their IPC behavior end-to-end.
|
|
157
|
+
analytics: {
|
|
158
|
+
event: (name, params) => ipcRenderer.send('desktop:analytics:event', { name, params }),
|
|
159
|
+
pageview: (path) => ipcRenderer.send('desktop:analytics:event', { name: 'page_view', params: path ? { page_path: path } : {} }),
|
|
160
|
+
screenview: (screenName) => ipcRenderer.send('desktop:analytics:event', { name: 'screen_view', params: screenName ? { screen_name: screenName } : {} }),
|
|
161
|
+
setUserProperties: (props) => ipcRenderer.send('desktop:analytics:set-user-properties', props),
|
|
162
|
+
getStatus: () => ipcRenderer.invoke('desktop:analytics:status'),
|
|
163
|
+
},
|
|
164
|
+
context: {
|
|
165
|
+
get: () => ipcRenderer.invoke('desktop:context:get'),
|
|
166
|
+
},
|
|
167
|
+
usage: {
|
|
168
|
+
get: () => ipcRenderer.invoke('desktop:usage:get'),
|
|
169
|
+
},
|
|
170
|
+
remoteConfig: {
|
|
171
|
+
get: (path) => ipcRenderer.invoke('desktop:remote-config:get', path),
|
|
172
|
+
refreshNow: () => ipcRenderer.invoke('desktop:remote-config:refresh-now'),
|
|
173
|
+
onUpdate: (handler) => {
|
|
174
|
+
const wrapped = (_, payload) => handler(payload);
|
|
175
|
+
ipcRenderer.on('desktop:remote-config:update', wrapped);
|
|
176
|
+
return () => ipcRenderer.removeListener('desktop:remote-config:update', wrapped);
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
contextBridge.exposeInMainWorld('desktop', desktopSurface);
|
|
182
|
+
|
|
183
|
+
// Defined ABOVE the client wiring below, which injects `desktopSurface.analytics`
|
|
184
|
+
// as that client's analytics bridge ([#411](https://github.com/Omega-JS-Stack/omega/issues/411)):
|
|
185
|
+
// the surface has to exist before the wiring reads it. Observed, not assumed —
|
|
186
|
+
// with this block further down, the wiring resolved nothing.
|
|
187
|
+
|
|
188
|
+
// Wire the verts auto-bind against THIS document. Production hands the client
|
|
189
|
+
// singleton to _wireAds via manager.initialize(); here the preload requires
|
|
190
|
+
// the REAL @omega.js/client (same resolution _wireFontAwesome uses) and seeds
|
|
191
|
+
// its config directly — full initialize() is deliberately skipped (firebase,
|
|
192
|
+
// heavy). AdSense is INTENTIONALLY configured and no inhouse source is: the
|
|
193
|
+
// house-lane pin is exactly what must keep the provider lane (remote script)
|
|
194
|
+
// from ever being attempted, and a source-less house render collapses
|
|
195
|
+
// deterministically with zero network.
|
|
196
|
+
(async () => {
|
|
197
|
+
try {
|
|
198
|
+
if (!testManager) return;
|
|
199
|
+
// The client is pure ESM — Electron's preload require() can't load it
|
|
200
|
+
// (unlike the CJS-compatible icon-renderer), so go through the Node ESM
|
|
201
|
+
// loader. Resolves well before suites arrive from main.
|
|
202
|
+
const wmMod = await import('@omega.js/client');
|
|
203
|
+
testManager.omega = wmMod.default || wmMod;
|
|
204
|
+
testManager.omega.config = Object.assign({}, testManager.omega.config, {
|
|
205
|
+
advertising: {
|
|
206
|
+
providers: { adsense: { client: 'ca-pub-test' } },
|
|
207
|
+
},
|
|
208
|
+
// The analytics bridge, INJECTED exactly the way src/renderer.js injects
|
|
209
|
+
// it in production ([#411](https://github.com/Omega-JS-Stack/omega/issues/411)):
|
|
210
|
+
// the preload's own analytics surface, handed over as config. The client
|
|
211
|
+
// reads this key and nothing else — no global is involved either side.
|
|
212
|
+
analyticsBridge: desktopSurface.analytics,
|
|
213
|
+
});
|
|
214
|
+
testManager._wireAds();
|
|
215
|
+
|
|
216
|
+
// Analytics, BRIDGED: the real client resolves the injected bridge and
|
|
217
|
+
// forwards every event over IPC to main's ONE sender. Same
|
|
218
|
+
// `analytics().init()` call `manager.initialize()` makes — the rest of
|
|
219
|
+
// initialize (firebase, auth) stays out, as everywhere else here.
|
|
220
|
+
//
|
|
221
|
+
// Credentials are handed in ON PURPOSE, the mistake desktop's build must
|
|
222
|
+
// never make: a bridged renderer has to DROP them (`analytics-bridge`
|
|
223
|
+
// renderer suite pins that it holds neither).
|
|
224
|
+
testManager.omega.analytics().init({
|
|
225
|
+
id: 'G-RENDERER1',
|
|
226
|
+
secret: 'harness-renderer-secret',
|
|
227
|
+
projectId: 'demo-app',
|
|
228
|
+
bridge: testManager.omega._resolveAnalyticsBridge(),
|
|
229
|
+
});
|
|
230
|
+
} catch (e) {
|
|
231
|
+
console.warn('[renderer-preload] Could not wire verts auto-bind:', e.message);
|
|
232
|
+
}
|
|
233
|
+
})();
|
|
234
|
+
|
|
235
|
+
// Page-world probe for the bridged client analytics: `event()` is the call a
|
|
236
|
+
// renderer's own code makes (`omega.analytics().event(...)`), `state()` reads
|
|
237
|
+
// back what the module holds so a suite can pin that no second sender exists.
|
|
238
|
+
contextBridge.exposeInMainWorld('__emTestClientAnalytics', {
|
|
239
|
+
event: (name, params) => testManager?.omega?.analytics().event(name, params),
|
|
240
|
+
state: () => {
|
|
241
|
+
const a = testManager?.omega?.analytics();
|
|
242
|
+
return {
|
|
243
|
+
initialized: Boolean(a?.initialized),
|
|
244
|
+
bridged: Boolean(a?.bridge),
|
|
245
|
+
secret: a?.secret ?? null,
|
|
246
|
+
clientId: a?.clientId ?? null,
|
|
247
|
+
};
|
|
248
|
+
},
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// Tooltip instances live in the preload world (page world can't reach the
|
|
252
|
+
// bootstrap namespace across the contextIsolation boundary) — expose a probe so
|
|
253
|
+
// page-world suites can assert instance lifecycle by element id. `error()`
|
|
254
|
+
// surfaces WHY the Bootstrap bundle failed to load (renderer.js swallows the
|
|
255
|
+
// require error into a logger.warn that the harness can't see).
|
|
256
|
+
contextBridge.exposeInMainWorld('__emTestTooltip', {
|
|
257
|
+
available: () => Boolean(testManager?.bootstrap?.Tooltip),
|
|
258
|
+
// Lazy — by call time the DOM exists, so a require failure here is the real
|
|
259
|
+
// reason the bundle can't load (not just "no documentElement yet").
|
|
260
|
+
error: () => {
|
|
261
|
+
try {
|
|
262
|
+
if (process.env.OMEGA_TEST_RENDERER_MANAGER_PATH) {
|
|
263
|
+
const path = require('path');
|
|
264
|
+
require(path.join(path.dirname(process.env.OMEGA_TEST_RENDERER_MANAGER_PATH), 'assets', 'js', 'bootstrap.bundle.js'));
|
|
265
|
+
}
|
|
266
|
+
return null;
|
|
267
|
+
} catch (e) {
|
|
268
|
+
return e.message;
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
hasInstance: (id) => {
|
|
272
|
+
const el = document.getElementById(id);
|
|
273
|
+
return Boolean(el && testManager?.bootstrap?.Tooltip?.getInstance(el));
|
|
274
|
+
},
|
|
275
|
+
// Show the tooltip from the PRELOAD world. Synthetic mouse events dispatched
|
|
276
|
+
// by page-world test code don't cross the contextIsolation boundary to the
|
|
277
|
+
// preload world's Bootstrap listeners, so hover can't be simulated from a
|
|
278
|
+
// suite — real single-world hover behavior is covered by consumer boot
|
|
279
|
+
// suites. Returns true or the error message.
|
|
280
|
+
showDirect: (id) => {
|
|
281
|
+
try {
|
|
282
|
+
testManager.bootstrap.Tooltip.getOrCreateInstance(document.getElementById(id)).show();
|
|
283
|
+
return true;
|
|
284
|
+
} catch (e) {
|
|
285
|
+
return e.message;
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
});
|
|
289
|
+
|
|
290
|
+
contextBridge.exposeInMainWorld('__emTestManager', {
|
|
291
|
+
isDevelopment: () => testManager?.isDevelopment(),
|
|
292
|
+
isProduction: () => testManager?.isProduction(),
|
|
293
|
+
isTesting: () => testManager?.isTesting(),
|
|
294
|
+
getVersion: () => testManager?.getVersion(),
|
|
295
|
+
getEnvironment: () => testManager?.getEnvironment(),
|
|
296
|
+
getApiUrl: (env) => testManager?.getApiUrl(env),
|
|
297
|
+
getFunctionsUrl:(env) => testManager?.getFunctionsUrl(env),
|
|
298
|
+
getWebsiteUrl: (env) => testManager?.getWebsiteUrl(env),
|
|
299
|
+
// Mutator used by tests to flip config flags between assertions.
|
|
300
|
+
setConfig: (path, value) => {
|
|
301
|
+
if (!testManager) return;
|
|
302
|
+
const parts = path.split('.');
|
|
303
|
+
let obj = testManager.config;
|
|
304
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
305
|
+
obj[parts[i]] = obj[parts[i]] || {};
|
|
306
|
+
obj = obj[parts[i]];
|
|
307
|
+
}
|
|
308
|
+
obj[parts[parts.length - 1]] = value;
|
|
309
|
+
},
|
|
310
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>@omega.js/desktop renderer test harness</title>
|
|
6
|
+
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-eval' 'unsafe-inline'">
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<pre id="log"></pre>
|
|
10
|
+
<script src="./renderer-entry.js"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Public test API — what consumers see.
|
|
2
|
+
//
|
|
3
|
+
// Test files export a test definition. Three forms:
|
|
4
|
+
//
|
|
5
|
+
// Standalone:
|
|
6
|
+
// module.exports = {
|
|
7
|
+
// layer: 'build', // 'build' | 'main' | 'renderer' | 'boot'
|
|
8
|
+
// description: 'config has brand.id',
|
|
9
|
+
// timeout: 5000,
|
|
10
|
+
// run: async (ctx) => {
|
|
11
|
+
// const cfg = Manager.getConfig();
|
|
12
|
+
// ctx.expect(cfg.brand.id).toBeTruthy();
|
|
13
|
+
// },
|
|
14
|
+
// cleanup: async (ctx) => { ... },
|
|
15
|
+
// };
|
|
16
|
+
//
|
|
17
|
+
// Boot layer — spawns the consumer's actual built main bundle (dist/main.bundle.js)
|
|
18
|
+
// and runs `inspect` against the live manager. Replaces shell-level `npm start && sleep && kill`
|
|
19
|
+
// smoke tests with deterministic, signal-driven pass/fail. Use this to verify the WHOLE
|
|
20
|
+
// integration: consumer scaffolds, brand config, custom integrations, real boot order.
|
|
21
|
+
//
|
|
22
|
+
// module.exports = {
|
|
23
|
+
// layer: 'boot',
|
|
24
|
+
// description: 'tray boots with default items',
|
|
25
|
+
// timeout: 15000,
|
|
26
|
+
// inspect: async ({ manager, expect, projectRoot }) => {
|
|
27
|
+
// expect(manager.tray.has('open')).toBe(true);
|
|
28
|
+
// expect(manager.tray.has('check-for-updates')).toBe(true);
|
|
29
|
+
// expect(manager.menu.isRendered()).toBe(true);
|
|
30
|
+
// },
|
|
31
|
+
// };
|
|
32
|
+
//
|
|
33
|
+
// Suite (sequential, shared state, stop on first failure):
|
|
34
|
+
// module.exports = {
|
|
35
|
+
// type: 'suite',
|
|
36
|
+
// layer: 'main',
|
|
37
|
+
// description: 'storage round-trip',
|
|
38
|
+
// tests: [
|
|
39
|
+
// { name: 'set value', run: async (ctx) => { ctx.state.key = 'foo'; ctx.manager.storage.set('foo', 'bar'); } },
|
|
40
|
+
// { name: 'get value', run: async (ctx) => { ctx.expect(ctx.manager.storage.get('foo')).toBe('bar'); } },
|
|
41
|
+
// { name: 'delete', run: async (ctx) => { ctx.manager.storage.delete('foo'); } },
|
|
42
|
+
// ],
|
|
43
|
+
// };
|
|
44
|
+
//
|
|
45
|
+
// Group (sequential, shared state, runs ALL tests even if some fail):
|
|
46
|
+
// module.exports = {
|
|
47
|
+
// type: 'group',
|
|
48
|
+
// layer: 'build',
|
|
49
|
+
// tests: [ ... ],
|
|
50
|
+
// };
|
|
51
|
+
//
|
|
52
|
+
// Array form (treated as group):
|
|
53
|
+
// module.exports = [ { name, run }, ... ];
|
|
54
|
+
//
|
|
55
|
+
// The ctx (context) provided to every run/cleanup includes:
|
|
56
|
+
// - ctx.expect — Jest-compatible assertion library
|
|
57
|
+
// - ctx.state — shared object across tests in a suite/group
|
|
58
|
+
// - ctx.skip(reason) — throw to skip the current test at runtime
|
|
59
|
+
// - ctx.layer — current layer name
|
|
60
|
+
// - ctx.manager — @omega.js/desktop Manager instance (main layer only — added in 2.3b)
|
|
61
|
+
// - ctx.page — BrowserWindow page (renderer layer only — added in 2.3c)
|
|
62
|
+
|
|
63
|
+
module.exports = {
|
|
64
|
+
expect: require('./assert.js'),
|
|
65
|
+
};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Test runner — discovers + runs suites, reports framework-style.
|
|
2
|
+
//
|
|
3
|
+
// The runner CORE (discovery, suite/group/standalone execution, filtering, skip
|
|
4
|
+
// semantics, init hooks, reporting) is the shared @omega.js/devkit runner-core,
|
|
5
|
+
// vendored into dist/vendor/devkit at prepare time. This file is @omega.js/desktop's config:
|
|
6
|
+
// title, target alias, and the framework-specific layer glue.
|
|
7
|
+
//
|
|
8
|
+
// Layers:
|
|
9
|
+
// - 'build' runs in plain Node (runner core).
|
|
10
|
+
// - 'main' spawns Electron via runners/electron.js, runs in the main process.
|
|
11
|
+
// - 'renderer' runs in a hidden BrowserWindow in the same spawned Electron process.
|
|
12
|
+
// - 'boot' spawns the consumer's actual built bundle and inspects the live manager.
|
|
13
|
+
//
|
|
14
|
+
// Electron / boot runners are lazy-loaded so a missing electron doesn't prevent build-layer
|
|
15
|
+
// tests from running. The layer callbacks below require() them only when those layers exist.
|
|
16
|
+
|
|
17
|
+
const path = require('path');
|
|
18
|
+
const chalk = require('chalk').default;
|
|
19
|
+
|
|
20
|
+
const { createRunner, SkipError, DISCOVERY_IGNORE } = require('../vendor/devkit/test/runner-core.js');
|
|
21
|
+
const { FRAMEWORK_IDS } = require('../vendor/devkit/test/scope.js');
|
|
22
|
+
|
|
23
|
+
const runner = createRunner({
|
|
24
|
+
title: 'OMEGA Desktop Tests',
|
|
25
|
+
packageName: '@omega.js/desktop',
|
|
26
|
+
targetAlias: 'desktop',
|
|
27
|
+
frameworkAliases: FRAMEWORK_IDS['@omega.js/desktop'],
|
|
28
|
+
suitesDir: path.join(__dirname, 'suites'),
|
|
29
|
+
frameworkTestDir: path.resolve(__dirname, '../../test'),
|
|
30
|
+
bootDefaultTimeout: 15000,
|
|
31
|
+
|
|
32
|
+
// A renderer suite that names a project view rides the BOOT lane instead of the harness
|
|
33
|
+
// page: only the boot runner stages and builds the real app, and the view needs that
|
|
34
|
+
// build (its own preload, its own IPC handlers, its own config). The runner core hands
|
|
35
|
+
// such a file to boot.run whole, as `suites`, never flattened into the inspect list.
|
|
36
|
+
bootBound: (mod) => mod.layer === 'renderer' && typeof mod.view === 'string',
|
|
37
|
+
|
|
38
|
+
middleLayers: [
|
|
39
|
+
{
|
|
40
|
+
// Main + renderer share one spawned Electron process — main suites first, then a
|
|
41
|
+
// hidden BrowserWindow takes over for renderer suites. This keeps a single
|
|
42
|
+
// electron boot per `npx omega test` invocation.
|
|
43
|
+
layers: ['main', 'renderer'],
|
|
44
|
+
run: async ({ byLayer, wants, options, results, projectRoot }) => {
|
|
45
|
+
let runElectronTests;
|
|
46
|
+
try {
|
|
47
|
+
({ runElectronTests } = require('./runners/electron.js'));
|
|
48
|
+
} catch (e) {
|
|
49
|
+
console.log(chalk.yellow(` ○ main + renderer tests skipped (electron runner not available: ${e.message})`));
|
|
50
|
+
const skipCount = (wants.main ? byLayer.main.length : 0)
|
|
51
|
+
+ (wants.renderer ? byLayer.renderer.length : 0);
|
|
52
|
+
results.skipped += skipCount;
|
|
53
|
+
}
|
|
54
|
+
if (runElectronTests) {
|
|
55
|
+
const counts = await runElectronTests({
|
|
56
|
+
harnessEntry: path.join(__dirname, 'harness', 'main-entry.js'),
|
|
57
|
+
suiteFiles: wants.main ? byLayer.main : [],
|
|
58
|
+
rendererSuiteFiles: wants.renderer ? byLayer.renderer : [],
|
|
59
|
+
filter: options.filter,
|
|
60
|
+
projectRoot,
|
|
61
|
+
});
|
|
62
|
+
results.passed += counts.passed;
|
|
63
|
+
results.failed += counts.failed;
|
|
64
|
+
results.skipped += counts.skipped;
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
|
|
70
|
+
boot: {
|
|
71
|
+
// Spawn the consumer's actual built bundle and inspect the live manager (the core
|
|
72
|
+
// aggregates boot tests into the flat `tests` list). `suites` are the boot-bound
|
|
73
|
+
// renderer suites (`view: '<name>'`), which run in a real window of that same app.
|
|
74
|
+
run: async ({ tests, suites, results, projectRoot }) => {
|
|
75
|
+
let runBootTests;
|
|
76
|
+
try {
|
|
77
|
+
({ runBootTests } = require('./runners/boot.js'));
|
|
78
|
+
} catch (e) {
|
|
79
|
+
console.log(chalk.yellow(` ○ boot tests skipped (boot runner not available: ${e.message})`));
|
|
80
|
+
results.skipped += tests.length + suites.reduce((n, s) => n + (s.mod.tests || []).length, 0);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
console.log(chalk.cyan(' ⤷ boot tests (consumer bundle)'));
|
|
85
|
+
|
|
86
|
+
const counts = await runBootTests({
|
|
87
|
+
tests,
|
|
88
|
+
suites,
|
|
89
|
+
projectRoot,
|
|
90
|
+
frameworkDistRoot: path.resolve(__dirname, '..'),
|
|
91
|
+
});
|
|
92
|
+
results.passed += counts.passed;
|
|
93
|
+
results.failed += counts.failed;
|
|
94
|
+
results.skipped += counts.skipped;
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
module.exports = { run: runner.run, SkipError, DISCOVERY_IGNORE };
|