@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
package/dist/build.js
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const jetpack = require('fs-jetpack');
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const JSON5 = require('json5');
|
|
6
|
+
const { force, execute } = require('node-powertools');
|
|
7
|
+
|
|
8
|
+
// argv is parsed lazily — yargs is ESM-only and can't be `require()`'d in older Node runtimes.
|
|
9
|
+
let _argv = null;
|
|
10
|
+
function getArgv() {
|
|
11
|
+
if (_argv) return _argv;
|
|
12
|
+
_argv = require('yargs')(process.argv.slice(2)).parseSync();
|
|
13
|
+
return _argv;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Class
|
|
17
|
+
function Manager() {
|
|
18
|
+
const self = this;
|
|
19
|
+
|
|
20
|
+
// Properties
|
|
21
|
+
self._logger = null;
|
|
22
|
+
|
|
23
|
+
// Return
|
|
24
|
+
return self;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Initialize (build-time hook)
|
|
28
|
+
Manager.prototype.initialize = function () {
|
|
29
|
+
console.log('initialize:');
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Logger
|
|
33
|
+
Manager.prototype.logger = function (name) {
|
|
34
|
+
// Static-style call
|
|
35
|
+
if (!(this instanceof Manager)) {
|
|
36
|
+
return new (require('./lib/logger'))(name);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Cache one logger per Manager instance
|
|
40
|
+
if (!this._logger) {
|
|
41
|
+
this._logger = new (require('./lib/logger'))(name);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return this._logger;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// argv (yargs is loaded on first call so the runtime build.js doesn't pull in ESM-only deps)
|
|
48
|
+
Manager.getArguments = function () {
|
|
49
|
+
const options = getArgv() || {};
|
|
50
|
+
|
|
51
|
+
options._ = options._ || [];
|
|
52
|
+
options.debug = force(options.debug === undefined ? false : options.debug, 'boolean');
|
|
53
|
+
|
|
54
|
+
return options;
|
|
55
|
+
};
|
|
56
|
+
Manager.prototype.getArguments = Manager.getArguments;
|
|
57
|
+
|
|
58
|
+
// Report build errors with notification (parity with BXM)
|
|
59
|
+
Manager.reportBuildError = function (error, callback) {
|
|
60
|
+
const logger = new (require('./lib/logger'))('build-error');
|
|
61
|
+
const errorMessage = error.message || error.toString() || 'Unknown error';
|
|
62
|
+
const errorPlugin = error.plugin || 'Build';
|
|
63
|
+
|
|
64
|
+
logger.error(`[${errorPlugin}] ${errorMessage}`);
|
|
65
|
+
|
|
66
|
+
if (callback) {
|
|
67
|
+
return callback(error);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return (cb) => cb ? cb(error) : error;
|
|
71
|
+
};
|
|
72
|
+
Manager.prototype.reportBuildError = Manager.reportBuildError;
|
|
73
|
+
|
|
74
|
+
// Mode flags
|
|
75
|
+
Manager.isBuildMode = function () {
|
|
76
|
+
return process.env.OMEGA_BUILD_MODE === 'true';
|
|
77
|
+
};
|
|
78
|
+
Manager.prototype.isBuildMode = Manager.isBuildMode;
|
|
79
|
+
|
|
80
|
+
Manager.isPublishMode = function () {
|
|
81
|
+
return process.env.OMEGA_IS_PUBLISH === 'true';
|
|
82
|
+
};
|
|
83
|
+
Manager.prototype.isPublishMode = Manager.isPublishMode;
|
|
84
|
+
|
|
85
|
+
Manager.isServerMode = function () {
|
|
86
|
+
return process.env.OMEGA_IS_SERVER === 'true';
|
|
87
|
+
};
|
|
88
|
+
Manager.prototype.isServerMode = Manager.isServerMode;
|
|
89
|
+
|
|
90
|
+
Manager.actLikeProduction = function () {
|
|
91
|
+
return Boolean(Manager.isBuildMode() || process.env.OMEGA_AUDIT_FORCE === 'true');
|
|
92
|
+
};
|
|
93
|
+
Manager.prototype.actLikeProduction = Manager.actLikeProduction;
|
|
94
|
+
|
|
95
|
+
// getEnvironment() is the SINGLE SOURCE OF TRUTH and lives in src/utils/mode-helpers.js
|
|
96
|
+
// (alongside isDevelopment/isProduction/isTesting — the natural environment-helper family).
|
|
97
|
+
// It's mixed into ALL FOUR @omega.js/desktop Manager entry points (main / renderer / preload / build) via
|
|
98
|
+
// the mode-helpers attachTo() call at the bottom of each, so every context resolves the
|
|
99
|
+
// environment identically. (@omega.js/desktop has four separate Manager constructors that share code only
|
|
100
|
+
// through these mixins — unlike UJM/BXM, where one build.js Manager serves every context.)
|
|
101
|
+
|
|
102
|
+
Manager.getMode = function () {
|
|
103
|
+
return {
|
|
104
|
+
build: Manager.isBuildMode(),
|
|
105
|
+
publish: Manager.isPublishMode(),
|
|
106
|
+
server: Manager.isServerMode(),
|
|
107
|
+
environment: Manager.getEnvironment(),
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
Manager.prototype.getMode = Manager.getMode;
|
|
111
|
+
|
|
112
|
+
// Config — the consumer's config/omega.json5 resolved for the desktop target via
|
|
113
|
+
// @omega.js/config: shared sections (brand, cloud, analytics, payment, monitoring,
|
|
114
|
+
// theme) at the top level, targets.desktop overlaid onto them (so app/platforms/startup/
|
|
115
|
+
// releases/... land at the top level here), and in a brand monorepo the brand root's
|
|
116
|
+
// config merges underneath the target's. Then @omega.js/desktop's derived defaults:
|
|
117
|
+
// app.appId ← reverse-domain of brand.url (`https://foo.example.com` →
|
|
118
|
+
// `com.example.foo`), else `app.${brand.id}` — the BRAND
|
|
119
|
+
// owns the identity, never a hardcoded company (friction #18)
|
|
120
|
+
// app.productName ← brand.name if not set
|
|
121
|
+
// These keep the consumer's config minimal: setting `brand: { id: 'foo', name: 'Foo',
|
|
122
|
+
// url: 'https://foo.com' }` is enough; appId/productName flow through automatically.
|
|
123
|
+
Manager.getConfig = function () {
|
|
124
|
+
const { hasOmegaConfig, loadConfig } = require('./vendor/config/index.js');
|
|
125
|
+
|
|
126
|
+
// No config at all (fresh dir, non-consumer cwd) → seeded empty shape below; the
|
|
127
|
+
// schema validation in audit/boot reports what's actually missing.
|
|
128
|
+
const cwd = process.cwd();
|
|
129
|
+
const config = hasOmegaConfig(cwd) ? loadConfig(cwd, 'desktop').config : {};
|
|
130
|
+
|
|
131
|
+
// Apply derived defaults. Always seed `brand` + `app` so callers can deref
|
|
132
|
+
// `config.brand.X` / `config.app.X` without optional-chaining at every callsite.
|
|
133
|
+
config.brand = config.brand || {};
|
|
134
|
+
config.app = config.app || {};
|
|
135
|
+
if (!config.app.appId) {
|
|
136
|
+
const host = String(config.brand.url || '').replace(/^https?:\/\//, '').replace(/^www\./, '').split('/')[0];
|
|
137
|
+
if (host) {
|
|
138
|
+
config.app.appId = host.split('.').reverse().join('.');
|
|
139
|
+
} else if (config.brand.id) {
|
|
140
|
+
config.app.appId = `app.${config.brand.id}`;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (!config.app.productName && config.brand.name) config.app.productName = config.brand.name;
|
|
144
|
+
|
|
145
|
+
return config;
|
|
146
|
+
};
|
|
147
|
+
Manager.prototype.getConfig = Manager.getConfig;
|
|
148
|
+
|
|
149
|
+
// package.json
|
|
150
|
+
Manager.getPackage = function (type) {
|
|
151
|
+
const basePath = type === 'project'
|
|
152
|
+
? process.cwd()
|
|
153
|
+
: path.resolve(__dirname, '..');
|
|
154
|
+
|
|
155
|
+
const pkgPath = path.join(basePath, 'package.json');
|
|
156
|
+
const raw = jetpack.read(pkgPath);
|
|
157
|
+
|
|
158
|
+
if (!raw) {
|
|
159
|
+
return {};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return JSON5.parse(raw);
|
|
163
|
+
};
|
|
164
|
+
Manager.prototype.getPackage = Manager.getPackage;
|
|
165
|
+
|
|
166
|
+
// Root path
|
|
167
|
+
Manager.getRootPath = function (type) {
|
|
168
|
+
return type === 'project'
|
|
169
|
+
? process.cwd()
|
|
170
|
+
: path.resolve(__dirname, '..');
|
|
171
|
+
};
|
|
172
|
+
Manager.prototype.getRootPath = Manager.getRootPath;
|
|
173
|
+
|
|
174
|
+
// Live reload port
|
|
175
|
+
Manager.getLiveReloadPort = function () {
|
|
176
|
+
process.env.OMEGA_LIVERELOAD_PORT = process.env.OMEGA_LIVERELOAD_PORT || 35729;
|
|
177
|
+
return parseInt(process.env.OMEGA_LIVERELOAD_PORT, 10);
|
|
178
|
+
};
|
|
179
|
+
Manager.prototype.getLiveReloadPort = Manager.getLiveReloadPort;
|
|
180
|
+
|
|
181
|
+
// Windows signing strategy. Config-only — `platforms.win.signing.strategy`
|
|
182
|
+
// (targets.desktop.platforms.win in the raw omega.json5). Default 'self-hosted'.
|
|
183
|
+
Manager.getWindowsSignStrategy = function () {
|
|
184
|
+
const config = Manager.getConfig();
|
|
185
|
+
return config?.platforms?.win?.signing?.strategy || 'self-hosted';
|
|
186
|
+
};
|
|
187
|
+
Manager.prototype.getWindowsSignStrategy = Manager.getWindowsSignStrategy;
|
|
188
|
+
|
|
189
|
+
// Touch files to trigger a rebuild watcher
|
|
190
|
+
Manager.triggerRebuild = function (files, logger) {
|
|
191
|
+
logger = this?._logger || logger || console;
|
|
192
|
+
|
|
193
|
+
if (typeof files === 'string') {
|
|
194
|
+
files = [files];
|
|
195
|
+
} else if (Array.isArray(files)) {
|
|
196
|
+
// already an array
|
|
197
|
+
} else if (typeof files === 'object' && files !== null) {
|
|
198
|
+
files = Object.keys(files);
|
|
199
|
+
} else {
|
|
200
|
+
logger.error('Invalid files for triggerRebuild()');
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
const now = new Date();
|
|
205
|
+
|
|
206
|
+
files.forEach((file) => {
|
|
207
|
+
try {
|
|
208
|
+
fs.utimesSync(file, now, now);
|
|
209
|
+
logger.log(`Triggered build: ${file}`);
|
|
210
|
+
} catch (e) {
|
|
211
|
+
logger.error(`Failed to trigger build ${file}`, e);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
Manager.prototype.triggerRebuild = Manager.triggerRebuild;
|
|
216
|
+
|
|
217
|
+
// Generic require passthrough (lets gulp tasks dynamically load lib modules).
|
|
218
|
+
// Only ever called from gulp tasks (release / package / bundle), which run
|
|
219
|
+
// un-bundled — so plain require is fine.
|
|
220
|
+
Manager.require = function (p) {
|
|
221
|
+
return require(p);
|
|
222
|
+
};
|
|
223
|
+
Manager.prototype.require = Manager.require;
|
|
224
|
+
|
|
225
|
+
// Memory usage
|
|
226
|
+
Manager.getMemoryUsage = function () {
|
|
227
|
+
const used = process.memoryUsage();
|
|
228
|
+
return {
|
|
229
|
+
rss: Math.round(used.rss / 1024 / 1024),
|
|
230
|
+
heapTotal: Math.round(used.heapTotal / 1024 / 1024),
|
|
231
|
+
heapUsed: Math.round(used.heapUsed / 1024 / 1024),
|
|
232
|
+
external: Math.round(used.external / 1024 / 1024),
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
Manager.prototype.getMemoryUsage = Manager.getMemoryUsage;
|
|
236
|
+
|
|
237
|
+
Manager.logMemory = function (logger, label) {
|
|
238
|
+
const mem = Manager.getMemoryUsage();
|
|
239
|
+
logger.log(`[Memory ${label}] RSS: ${mem.rss}MB | Heap Used: ${mem.heapUsed}MB / ${mem.heapTotal}MB | External: ${mem.external}MB`);
|
|
240
|
+
};
|
|
241
|
+
Manager.prototype.logMemory = Manager.logMemory;
|
|
242
|
+
|
|
243
|
+
// Mix in shared cross-context helpers — same code path used in main, renderer, preload.
|
|
244
|
+
// All four contexts share the exact same implementation.
|
|
245
|
+
require('./utils/mode-helpers.js').attachTo(Manager);
|
|
246
|
+
require('./utils/url-helpers.js').attachTo(Manager);
|
|
247
|
+
|
|
248
|
+
// Export
|
|
249
|
+
module.exports = Manager;
|
package/dist/cli-run.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* run() — the omega-desktop bin body, shared by bin/omega-desktop (via
|
|
3
|
+
* dist/omega-bin.js) and cross-framework dispatch ('@omega.js/desktop/cli').
|
|
4
|
+
*/
|
|
5
|
+
async function run() {
|
|
6
|
+
// Local-dist freshness guard: a stale locally-linked dist rebuilds and the
|
|
7
|
+
// invocation re-execs once, so no command ever runs stale framework code
|
|
8
|
+
require('./vendor/devkit/local.js').freshnessBoot({ packageName: '@omega.js/desktop' });
|
|
9
|
+
|
|
10
|
+
// Strip ELECTRON_RUN_AS_NODE — it leaks into our env from common parent processes
|
|
11
|
+
// (e.g. VS Code's Claude Code extension) and makes every Electron binary we shell
|
|
12
|
+
// to silently run as plain Node. Strip once at the CLI boundary.
|
|
13
|
+
delete process.env.ELECTRON_RUN_AS_NODE;
|
|
14
|
+
|
|
15
|
+
// Value-less flags must be declared boolean — otherwise yargs treats the next
|
|
16
|
+
// positional as the flag's VALUE. Mirrors the same fix in @omega.js/backend's CLI.
|
|
17
|
+
// yargs' built-in --version/--help are disabled so both route through the
|
|
18
|
+
// alias table / the router's built-in help (the built-ins printed an empty
|
|
19
|
+
// stub and version "0.0.0" — yargs can't resolve our package version here).
|
|
20
|
+
const argv = require('yargs')(process.argv.slice(2))
|
|
21
|
+
.boolean(['extended', 'local', 'quick', 'q'])
|
|
22
|
+
.version(false)
|
|
23
|
+
.help(false)
|
|
24
|
+
.parseSync();
|
|
25
|
+
const cli = new (require('./cli.js'))(argv);
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
await cli.process(argv);
|
|
29
|
+
} catch (e) {
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
module.exports = { run };
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { createCliRouter } = require('./vendor/devkit/cli-router.js');
|
|
4
|
+
const { isBoxVerbArgv } = require('./vendor/devkit/omega-bin.js');
|
|
5
|
+
|
|
6
|
+
// Resolve the .env cascade from the project root
|
|
7
|
+
// (shell > local .env > brand .env > company .env). The target name delivers
|
|
8
|
+
// the schema's `deliverAs` renames into process.env (#678) — the brand's
|
|
9
|
+
// GOOGLE_ANALYTICS_SECRET_DESKTOP arrives as GOOGLE_ANALYTICS_SECRET.
|
|
10
|
+
//
|
|
11
|
+
// …for every verb but the signing box's. `runner` and `sign-windows` belong to
|
|
12
|
+
// a MACHINE, not a project: they read the shell and `<runner home>\.env` and
|
|
13
|
+
// nothing else, so a brand's GH_TOKEN can never register the box's runners or
|
|
14
|
+
// hand its release token to a config walk ([#337](https://github.com/Omega-JS-Stack/omega/issues/337)).
|
|
15
|
+
// Which invocations those are is the dispatcher's own answer, imported: one
|
|
16
|
+
// reading of it, covering the bare verb and its `--` flag spelling alike.
|
|
17
|
+
if (!isBoxVerbArgv(process.argv.slice(2))) {
|
|
18
|
+
require('./vendor/config/index.js').loadEnv(process.cwd(), { target: 'desktop' });
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Main class — dispatch (positional/flag alias resolution, command loading,
|
|
22
|
+
// error surfacing) is the shared devkit router; this file owns only the alias
|
|
23
|
+
// table and the commands directory. (ELECTRON_RUN_AS_NODE stripping stays in
|
|
24
|
+
// the bin — it must happen before anything Electron-adjacent loads.)
|
|
25
|
+
//
|
|
26
|
+
// A bare `omega` prints help: setup is retired and every verb runs the local
|
|
27
|
+
// scaffold itself ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)).
|
|
28
|
+
module.exports = createCliRouter({
|
|
29
|
+
commandsDir: path.join(__dirname, 'commands'),
|
|
30
|
+
defaultCommand: 'help',
|
|
31
|
+
aliases: {
|
|
32
|
+
clean: ['-c', '--clean'],
|
|
33
|
+
install: ['-i', 'i', '--install'],
|
|
34
|
+
version: ['-v', '--version'],
|
|
35
|
+
build: ['-b', '--build'],
|
|
36
|
+
deploy: ['-d', '--deploy'],
|
|
37
|
+
publish: ['-p', '--publish'],
|
|
38
|
+
release: ['-r', '--release'],
|
|
39
|
+
test: ['-t', '--test'],
|
|
40
|
+
update: ['-u', '--update', 'outdated', 'out'],
|
|
41
|
+
logs: ['--logs', 'log'],
|
|
42
|
+
'validate-certs': ['certs', '--validate-certs'],
|
|
43
|
+
'sign-windows': ['--sign-windows'],
|
|
44
|
+
'push-secrets': ['secrets', '--push-secrets'],
|
|
45
|
+
'finalize-release': ['finalize', '--finalize-release'],
|
|
46
|
+
runner: ['--runner'],
|
|
47
|
+
launch: ['open', '--launch'],
|
|
48
|
+
},
|
|
49
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Libraries
|
|
2
|
+
const Manager = new (require('../build.js'));
|
|
3
|
+
const logger = Manager.logger('build');
|
|
4
|
+
const { runPipeline } = require('../utils/build-pipeline.js');
|
|
5
|
+
const { ensureTarget } = require('./lib/ensure-target.js');
|
|
6
|
+
|
|
7
|
+
// The consumer's `build` script is `omega build` — this verb owns the
|
|
8
|
+
// pipeline and the build-mode flag; it must never shell back to that script.
|
|
9
|
+
// `certs` delivers the Apple artifacts first (#678).
|
|
10
|
+
function plan() {
|
|
11
|
+
return {
|
|
12
|
+
env: { OMEGA_BUILD_MODE: 'true' },
|
|
13
|
+
steps: [
|
|
14
|
+
{ type: 'clean' },
|
|
15
|
+
{ type: 'certs' },
|
|
16
|
+
{ type: 'gulp', task: 'build' },
|
|
17
|
+
],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
module.exports = async function (options) {
|
|
22
|
+
logger.log('Running production build...');
|
|
23
|
+
|
|
24
|
+
// The local scaffold BEFORE the pipeline (#675): the gulp `defaults` task
|
|
25
|
+
// ensures too, but gulp itself is one of the peer deps the ensure installs,
|
|
26
|
+
// so a fresh consumer outside any node_modules hoist never reaches it.
|
|
27
|
+
await ensureTarget({ log: (line) => logger.log(line), warn: (line) => logger.warn(line) });
|
|
28
|
+
|
|
29
|
+
await runPipeline(plan(options), options);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
module.exports.plan = plan;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// `npx omega cdp capture <out.png>` — composited window capture: what the user
|
|
2
|
+
// ACTUALLY sees (the BrowserWindow document + every WebContentsView stacked by
|
|
3
|
+
// the window server), normalized to sRGB.
|
|
4
|
+
//
|
|
5
|
+
// npx omega cdp capture <out.png> [--window-id <CGWindowID>]
|
|
6
|
+
// npx omega cdp capture --find-window-id
|
|
7
|
+
//
|
|
8
|
+
// Default path: raises the app (System Events), reads the window rect over
|
|
9
|
+
// CDP, region-captures it. Anything overlapping that region after the raise
|
|
10
|
+
// (e.g. an always-on-top window) would be captured too — for an
|
|
11
|
+
// occlusion-proof capture pass `--window-id` (find it with --find-window-id;
|
|
12
|
+
// it's stable for the window's lifetime, so cache it per app launch).
|
|
13
|
+
//
|
|
14
|
+
// WHY the sips step: macOS embeds the MONITOR's ICC profile in screenshot
|
|
15
|
+
// PNGs; many viewers (including image previews in tooling) misrender it
|
|
16
|
+
// dramatically (a dark panel can read near-white). Converting to sRGB makes
|
|
17
|
+
// the file portable. Raw pixel VALUES in the PNG are correct either way.
|
|
18
|
+
//
|
|
19
|
+
// macOS only (screencapture / sips / osascript).
|
|
20
|
+
|
|
21
|
+
const { execFileSync } = require('child_process');
|
|
22
|
+
const client = require('./client');
|
|
23
|
+
|
|
24
|
+
const Manager = new (require('../../build.js'))();
|
|
25
|
+
|
|
26
|
+
const SRGB_PROFILE = '/System/Library/ColorSync/Profiles/sRGB Profile.icc';
|
|
27
|
+
|
|
28
|
+
// Dev runs under the Electron binary's name; packaged builds under the
|
|
29
|
+
// product name — try each until one raises.
|
|
30
|
+
function raiseApp(names) {
|
|
31
|
+
let lastError = null;
|
|
32
|
+
for (const name of names) {
|
|
33
|
+
try {
|
|
34
|
+
execFileSync('osascript', ['-e', `tell application "System Events" to set frontmost of (first process whose name contains "${name}") to true`]);
|
|
35
|
+
return;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
lastError = error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
throw new Error(`could not raise the app (tried: ${names.join(', ')}): ${lastError.message}`);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// CGWindowID lookup via a Swift snippet — slow (~2-4s compile) but dependable.
|
|
44
|
+
// (JXA's CoreGraphics bridge segfaults on CGWindowListCopyWindowInfo.)
|
|
45
|
+
function findWindowIds(names) {
|
|
46
|
+
const matchExpr = names.map((n) => `owner.contains("${n}") || name.contains("${n}")`).join(' || ');
|
|
47
|
+
const swift = `
|
|
48
|
+
import CoreGraphics
|
|
49
|
+
import Foundation
|
|
50
|
+
let opts = CGWindowListOption([.optionOnScreenOnly, .excludeDesktopElements])
|
|
51
|
+
guard let list = CGWindowListCopyWindowInfo(opts, kCGNullWindowID) as? [[String: Any]] else { exit(1) }
|
|
52
|
+
for w in list {
|
|
53
|
+
let owner = w["kCGWindowOwnerName"] as? String ?? ""
|
|
54
|
+
let name = w["kCGWindowName"] as? String ?? ""
|
|
55
|
+
if ${matchExpr} {
|
|
56
|
+
print("\\(w["kCGWindowNumber"] ?? 0) | \\(owner) | \\(name)")
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
`;
|
|
60
|
+
return execFileSync('swift', ['-'], { input: swift, encoding: 'utf8' }).trim();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
module.exports = async function (options) {
|
|
64
|
+
if (process.platform !== 'darwin') {
|
|
65
|
+
throw new Error('mgr cdp capture is macOS-only (screencapture/sips/osascript)');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const names = client.appNames(Manager.getConfig());
|
|
69
|
+
|
|
70
|
+
if (options['find-window-id'] || options.findWindowId) {
|
|
71
|
+
console.log(findWindowIds(names) || `no windows found (tried: ${names.join(', ')})`);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const outPath = options._[2];
|
|
76
|
+
if (!outPath) {
|
|
77
|
+
throw new Error('Usage: npx omega cdp capture <out.png> [--window-id <id>] | --find-window-id');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const windowId = options['window-id'] || options.windowId;
|
|
81
|
+
if (windowId) {
|
|
82
|
+
execFileSync('screencapture', ['-x', '-o', '-l', String(windowId), outPath]);
|
|
83
|
+
} else {
|
|
84
|
+
raiseApp(names);
|
|
85
|
+
const rect = await client.evaluate(client.MAIN_VIEW, '({ x: window.screenX, y: window.screenY, w: window.outerWidth, h: window.outerHeight })');
|
|
86
|
+
execFileSync('screencapture', ['-x', `-R${rect.x},${rect.y},${rect.w},${rect.h}`, outPath]);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
execFileSync('sips', ['-m', SRGB_PROFILE, outPath, '--out', outPath], { stdio: 'ignore' });
|
|
90
|
+
console.log(`captured ${outPath}`);
|
|
91
|
+
};
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// Shared CDP plumbing for the `mgr cdp` toolkit — zero dependencies (Node 22+
|
|
2
|
+
// global fetch + WebSocket). Talks to the RUNNING dev app's DevTools endpoint
|
|
3
|
+
// (launch with `OMEGA_CDP_PORT=9222 npm start`, or `npx omega cdp relaunch`).
|
|
4
|
+
//
|
|
5
|
+
// @omega.js/desktop apps are MULTI-TARGET — one debuggable page per webContents (every
|
|
6
|
+
// BrowserWindow and WebContentsView). Every helper takes a URL-substring
|
|
7
|
+
// matcher instead of a "selected page"; the main window's document is always
|
|
8
|
+
// at `dist/views/main/` (the MAIN_VIEW default matcher).
|
|
9
|
+
//
|
|
10
|
+
// See docs/cdp-debugging.md for the full toolkit reference.
|
|
11
|
+
|
|
12
|
+
// The main window's view path — @omega.js/desktop's templating convention, so it holds for
|
|
13
|
+
// every consumer. Subcommands that need "the app's main renderer" (status,
|
|
14
|
+
// theme, capture geometry) default to this matcher.
|
|
15
|
+
const MAIN_VIEW = '/views/main/';
|
|
16
|
+
|
|
17
|
+
function port() {
|
|
18
|
+
return Number(process.env.OMEGA_CDP_PORT || 9222);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// List the app's debuggable pages (type === 'page' targets only).
|
|
22
|
+
async function targets() {
|
|
23
|
+
const response = await fetch(`http://127.0.0.1:${port()}/json`).catch(() => null);
|
|
24
|
+
if (!response || !response.ok) {
|
|
25
|
+
throw new Error(`No CDP endpoint on port ${port()} — is the app running? (OMEGA_CDP_PORT=${port()} npm start, or npx omega cdp relaunch)`);
|
|
26
|
+
}
|
|
27
|
+
const list = await response.json();
|
|
28
|
+
return list.filter((t) => t.type === 'page');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Pure matcher — pick the first page target whose URL contains `matcher`.
|
|
32
|
+
// (Build-layer tested; keep it free of IO.)
|
|
33
|
+
function pickTarget(pages, matcher) {
|
|
34
|
+
if (!matcher) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return pages.find((t) => t.type === 'page' && (t.url || '').includes(matcher)) || null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async function requireTarget(matcher) {
|
|
41
|
+
const pages = await targets();
|
|
42
|
+
const target = pickTarget(pages, matcher);
|
|
43
|
+
if (!target) {
|
|
44
|
+
throw new Error(`No target matching "${matcher}". Targets:\n${pages.map((t) => ` ${t.url}`).join('\n')}`);
|
|
45
|
+
}
|
|
46
|
+
return target;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Open a CDP WebSocket to a target and return a send(method, params) function.
|
|
50
|
+
async function connect(target) {
|
|
51
|
+
const ws = new WebSocket(target.webSocketDebuggerUrl);
|
|
52
|
+
await new Promise((resolve, reject) => {
|
|
53
|
+
ws.onopen = resolve;
|
|
54
|
+
ws.onerror = () => reject(new Error('WebSocket connection failed'));
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
let nextId = 1;
|
|
58
|
+
const pending = new Map();
|
|
59
|
+
ws.onmessage = (evt) => {
|
|
60
|
+
const msg = JSON.parse(evt.data);
|
|
61
|
+
if (pending.has(msg.id)) {
|
|
62
|
+
pending.get(msg.id)(msg);
|
|
63
|
+
pending.delete(msg.id);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const send = (method, params = {}) => new Promise((resolve, reject) => {
|
|
68
|
+
const id = nextId++;
|
|
69
|
+
pending.set(id, resolve);
|
|
70
|
+
ws.send(JSON.stringify({ id, method, params }));
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
pending.delete(id);
|
|
73
|
+
reject(new Error(`CDP timeout: ${method}`));
|
|
74
|
+
}, 15000);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
return { send, close: () => ws.close() };
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Evaluate a JS expression in the matched target; returns the JSON value.
|
|
81
|
+
// Throws (with the exception text) when the expression throws.
|
|
82
|
+
async function evaluate(matcher, expression) {
|
|
83
|
+
const target = await requireTarget(matcher);
|
|
84
|
+
const { send, close } = await connect(target);
|
|
85
|
+
try {
|
|
86
|
+
const result = await send('Runtime.evaluate', {
|
|
87
|
+
expression,
|
|
88
|
+
returnByValue: true,
|
|
89
|
+
awaitPromise: true,
|
|
90
|
+
userGesture: true,
|
|
91
|
+
});
|
|
92
|
+
if (result.result?.exceptionDetails) {
|
|
93
|
+
throw new Error(`Expression threw in ${target.url}: ${JSON.stringify(result.result.exceptionDetails.exception?.description || result.result.exceptionDetails)}`);
|
|
94
|
+
}
|
|
95
|
+
return result.result?.result?.value;
|
|
96
|
+
} finally {
|
|
97
|
+
close();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Per-renderer screenshot (that webContents' own pixels — NOT the composited
|
|
102
|
+
// window; use `mgr cdp capture` for what the user actually sees).
|
|
103
|
+
async function screenshot(matcher, outPath) {
|
|
104
|
+
const fs = require('fs');
|
|
105
|
+
const target = await requireTarget(matcher);
|
|
106
|
+
const { send, close } = await connect(target);
|
|
107
|
+
try {
|
|
108
|
+
await send('Page.enable');
|
|
109
|
+
const shot = await send('Page.captureScreenshot', { format: 'png', fromSurface: true });
|
|
110
|
+
if (!shot.result?.data) {
|
|
111
|
+
throw new Error(`captureScreenshot failed: ${JSON.stringify(shot.error || shot)}`);
|
|
112
|
+
}
|
|
113
|
+
fs.writeFileSync(outPath, Buffer.from(shot.result.data, 'base64'));
|
|
114
|
+
return outPath;
|
|
115
|
+
} finally {
|
|
116
|
+
close();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// ── Pure config resolvers (build-layer tested) ─────────────────────────────
|
|
121
|
+
|
|
122
|
+
// Process names the app may run under: 'Electron' in dev (the node_modules
|
|
123
|
+
// binary), the productName when packaged.
|
|
124
|
+
function appNames(config) {
|
|
125
|
+
const names = ['Electron'];
|
|
126
|
+
if (config?.app?.productName) {
|
|
127
|
+
names.push(config.app.productName);
|
|
128
|
+
}
|
|
129
|
+
return names;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// The boot-complete signal for `mgr cdp relaunch` — a URL substring that must
|
|
133
|
+
// match a CDP page target. Default: the main window's document. Consumers
|
|
134
|
+
// whose boot finishes later than first paint override via config
|
|
135
|
+
// `cdp.readySignal` (e.g. an overlay view created last in the boot sequence).
|
|
136
|
+
function readyMatcher(config) {
|
|
137
|
+
return config?.cdp?.readySignal || MAIN_VIEW;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
module.exports = { MAIN_VIEW, port, targets, pickTarget, requireTarget, connect, evaluate, screenshot, appNames, readyMatcher };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// `npx omega cdp eval <target-match> '<expression>'` — evaluate JS inside any
|
|
2
|
+
// of the app's webContents:
|
|
3
|
+
//
|
|
4
|
+
// npx omega cdp eval "/views/main/" 'document.title' # the main window
|
|
5
|
+
// npx omega cdp eval "example.com" 'getComputedStyle(document.body).background'
|
|
6
|
+
//
|
|
7
|
+
// Promises are awaited; the result prints as JSON. The expression runs with
|
|
8
|
+
// a user gesture, so focus()/clipboard-ish APIs behave like real input.
|
|
9
|
+
|
|
10
|
+
const client = require('./client');
|
|
11
|
+
|
|
12
|
+
module.exports = async function (options) {
|
|
13
|
+
const [, , matcher, expression] = options._;
|
|
14
|
+
if (!matcher || !expression) {
|
|
15
|
+
throw new Error("Usage: npx omega cdp eval <target-match> '<expression>'");
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const value = await client.evaluate(String(matcher), String(expression));
|
|
19
|
+
console.log(JSON.stringify(value, null, 2));
|
|
20
|
+
};
|