@omega.js/web 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 +640 -0
- package/bin/omega +2 -0
- package/bin/omega-web +2 -0
- package/bin/omg +2 -0
- package/core/_includes/admin/sections/sidebar.json +100 -0
- package/core/_includes/admin/sections/topbar.json +11 -0
- package/core/_includes/backend/sections/sidebar.json +39 -0
- package/core/_includes/backend/sections/topbar.json +16 -0
- package/core/_includes/core/body.html +102 -0
- package/core/_includes/core/foot.html +536 -0
- package/core/_includes/core/head.html +423 -0
- package/core/_includes/core/pricing/price-per-unit.html +33 -0
- package/core/_includes/core/showcase/entry-body.html +94 -0
- package/core/_includes/core/showcase/index-body.html +43 -0
- package/core/_includes/core/showcase/nav.html +60 -0
- package/core/_includes/frontend/sections/footer.json +74 -0
- package/core/_includes/frontend/sections/nav.json +70 -0
- package/core/_includes/global/sections/account.json +31 -0
- package/core/_includes/modules/engagement/giscus.html +26 -0
- package/core/_layouts/blueprint/404.html +10 -0
- package/core/_layouts/blueprint/about.html +10 -0
- package/core/_layouts/blueprint/account/index.html +11 -0
- package/core/_layouts/blueprint/admin/calendar/index.html +590 -0
- package/core/_layouts/blueprint/admin/dashboard/index.html +301 -0
- package/core/_layouts/blueprint/admin/firebase/index.html +214 -0
- package/core/_layouts/blueprint/admin/posts/editor.html +157 -0
- package/core/_layouts/blueprint/admin/posts/index.html +126 -0
- package/core/_layouts/blueprint/admin/stackblitz/index.html +30 -0
- package/core/_layouts/blueprint/admin/studio/index.html +85 -0
- package/core/_layouts/blueprint/admin/users/index.html +272 -0
- package/core/_layouts/blueprint/admin/users/new.html +82 -0
- package/core/_layouts/blueprint/admin/verts/index.html +204 -0
- package/core/_layouts/blueprint/alternatives/alternative.html +15 -0
- package/core/_layouts/blueprint/alternatives/index.html +10 -0
- package/core/_layouts/blueprint/app.html +10 -0
- package/core/_layouts/blueprint/auth/reset.html +19 -0
- package/core/_layouts/blueprint/auth/signin.html +19 -0
- package/core/_layouts/blueprint/auth/signup.html +19 -0
- package/core/_layouts/blueprint/auth/token.html +19 -0
- package/core/_layouts/blueprint/blog/categories/category.html +8 -0
- package/core/_layouts/blueprint/blog/categories/index.html +11 -0
- package/core/_layouts/blueprint/blog/index.html +10 -0
- package/core/_layouts/blueprint/blog/post.html +5 -0
- package/core/_layouts/blueprint/blog/tags/index.html +11 -0
- package/core/_layouts/blueprint/blog/tags/tag.html +8 -0
- package/core/_layouts/blueprint/careers.md +13 -0
- package/core/_layouts/blueprint/collection/category.html +9 -0
- package/core/_layouts/blueprint/collection/document.html +9 -0
- package/core/_layouts/blueprint/collection/index.html +9 -0
- package/core/_layouts/blueprint/connections/callback.html +11 -0
- package/core/_layouts/blueprint/contact.html +14 -0
- package/core/_layouts/blueprint/dashboard/index.html +10 -0
- package/core/_layouts/blueprint/download.html +20 -0
- package/core/_layouts/blueprint/extension/index.html +14 -0
- package/core/_layouts/blueprint/extension/installed.html +11 -0
- package/core/_layouts/blueprint/feedback.html +10 -0
- package/core/_layouts/blueprint/index.html +16 -0
- package/core/_layouts/blueprint/legal/cookies.md +57 -0
- package/core/_layouts/blueprint/legal/privacy.md +109 -0
- package/core/_layouts/blueprint/legal/terms.md +155 -0
- package/core/_layouts/blueprint/payment/checkout.html +15 -0
- package/core/_layouts/blueprint/payment/confirmation.html +14 -0
- package/core/_layouts/blueprint/portal/email-preferences.html +15 -0
- package/core/_layouts/blueprint/pricing.html +20 -0
- package/core/_layouts/blueprint/status.html +10 -0
- package/core/_layouts/blueprint/team/index.html +10 -0
- package/core/_layouts/blueprint/team/member.html +5 -0
- package/core/_layouts/blueprint/updates/index.html +10 -0
- package/core/_layouts/blueprint/updates/update.html +10 -0
- package/core/_layouts/core/root.html +45 -0
- package/core/_layouts/modules/utilities/redirect.html +129 -0
- package/core/css/_studio.scss +237 -0
- package/core/css/components/_index.scss +146 -0
- package/core/css/core/_.scss +0 -0
- package/core/css/core/_alert.scss +87 -0
- package/core/css/core/_animations.scss +343 -0
- package/core/css/core/_bindings.scss +116 -0
- package/core/css/core/_blog-search.scss +57 -0
- package/core/css/core/_chatsy.scss +61 -0
- package/core/css/core/_consent.scss +424 -0
- package/core/css/core/_custom-font-awesome.scss +146 -0
- package/core/css/core/_exit-popup.scss +42 -0
- package/core/css/core/_generated-badge.scss +33 -0
- package/core/css/core/_initialize.scss +29 -0
- package/core/css/core/_lazy-loading.scss +104 -0
- package/core/css/core/_social-sharing.scss +41 -0
- package/core/css/core/_tones.scss +32 -0
- package/core/css/core/_utilities.scss +157 -0
- package/core/css/main.scss +54 -0
- package/core/css/motion/_index.scss +368 -0
- package/core/css/pages/404/index.scss +0 -0
- package/core/css/pages/admin/calendar/index.scss +692 -0
- package/core/css/pages/admin/firebase/index.scss +33 -0
- package/core/css/pages/admin/index.scss +9 -0
- package/core/css/pages/admin/users/index.scss +9 -0
- package/core/css/pages/admin/verts/index.scss +9 -0
- package/core/css/pages/alternatives/[alternative]/index.scss +0 -0
- package/core/css/pages/blog/[slug].scss +55 -0
- package/core/css/pages/dashboard/account/index.scss +242 -0
- package/core/css/pages/download/index.scss +480 -0
- package/core/css/pages/extension/installed/index.scss +317 -0
- package/core/css/pages/feedback/index.scss +31 -0
- package/core/css/pages/payment/confirmation/index.scss +14 -0
- package/core/css/pages/pricing/index.scss +0 -0
- package/core/css/pages/status/index.scss +162 -0
- package/core/css/pages/test/libraries/layers/index.scss +28 -0
- package/core/css/pages/updates/[update].scss +46 -0
- package/core/css/pages/updates/index.scss +13 -0
- package/core/css/shell/_index.scss +207 -0
- package/core/css/tokens/_index.scss +166 -0
- package/core/icons/flags/ar.svg +1 -0
- package/core/icons/flags/bd.svg +1 -0
- package/core/icons/flags/ca.svg +1 -0
- package/core/icons/flags/ch.svg +1 -0
- package/core/icons/flags/cn.svg +1 -0
- package/core/icons/flags/co.svg +1 -0
- package/core/icons/flags/cw.svg +1 -0
- package/core/icons/flags/cz.svg +1 -0
- package/core/icons/flags/de.svg +1 -0
- package/core/icons/flags/dk.svg +1 -0
- package/core/icons/flags/eg.svg +1 -0
- package/core/icons/flags/es.svg +1 -0
- package/core/icons/flags/fi.svg +1 -0
- package/core/icons/flags/fr.svg +1 -0
- package/core/icons/flags/gb.svg +1 -0
- package/core/icons/flags/gq.svg +1 -0
- package/core/icons/flags/gr.svg +1 -0
- package/core/icons/flags/gt.svg +1 -0
- package/core/icons/flags/hn.svg +1 -0
- package/core/icons/flags/id.svg +1 -0
- package/core/icons/flags/ie.svg +1 -0
- package/core/icons/flags/in.svg +1 -0
- package/core/icons/flags/ir.svg +1 -0
- package/core/icons/flags/it.svg +1 -0
- package/core/icons/flags/jp.svg +1 -0
- package/core/icons/flags/kp.svg +1 -0
- package/core/icons/flags/kr.svg +1 -0
- package/core/icons/flags/ly.svg +1 -0
- package/core/icons/flags/ma.svg +1 -0
- package/core/icons/flags/mu.svg +1 -0
- package/core/icons/flags/mx.svg +1 -0
- package/core/icons/flags/ng.svg +1 -0
- package/core/icons/flags/pa.svg +1 -0
- package/core/icons/flags/ph.svg +1 -0
- package/core/icons/flags/pk.svg +1 -0
- package/core/icons/flags/pt.svg +1 -0
- package/core/icons/flags/ru.svg +1 -0
- package/core/icons/flags/sa.svg +1 -0
- package/core/icons/flags/sd.svg +1 -0
- package/core/icons/flags/se.svg +1 -0
- package/core/icons/flags/th.svg +1 -0
- package/core/icons/flags/tm.svg +1 -0
- package/core/icons/flags/tr.svg +1 -0
- package/core/icons/flags/us.svg +1 -0
- package/core/icons/flags/uy.svg +1 -0
- package/core/icons/flags/vn.svg +1 -0
- package/core/icons/flags/za.svg +1 -0
- package/core/images/exit-popup/subscriber-1.jpg +0 -0
- package/core/images/exit-popup/subscriber-2.jpg +0 -0
- package/core/images/exit-popup/subscriber-3.jpg +0 -0
- package/core/images/exit-popup/subscriber-4.jpg +0 -0
- package/core/images/placeholder/photo-1.jpg +0 -0
- package/core/images/placeholder/photo-2.jpg +0 -0
- package/core/images/placeholder/photo-3.jpg +0 -0
- package/core/js/core/analytics-loader.js +253 -0
- package/core/js/core/app-shell.js +136 -0
- package/core/js/core/appearance.js +195 -0
- package/core/js/core/auth.js +457 -0
- package/core/js/core/complete.js +72 -0
- package/core/js/core/consent.js +384 -0
- package/core/js/core/dev-icon-audit.js +63 -0
- package/core/js/core/dev-palette.js +670 -0
- package/core/js/core/dev-sections.js +53 -0
- package/core/js/core/exit-popup.js +276 -0
- package/core/js/core/initialize.js +8 -0
- package/core/js/core/language-switcher.js +167 -0
- package/core/js/core/lazy-loading.js +479 -0
- package/core/js/core/motion.js +28 -0
- package/core/js/core/query-strings.js +146 -0
- package/core/js/core/service-worker.js +28 -0
- package/core/js/core/social-sharing.js +293 -0
- package/core/js/first-paint.js +35 -0
- package/core/js/layouts/modules/utilities/redirect.js +122 -0
- package/core/js/libs/admin-helpers.js +62 -0
- package/core/js/libs/alert-dismiss.js +35 -0
- package/core/js/libs/analytics.js +368 -0
- package/core/js/libs/auth/email.js +144 -0
- package/core/js/libs/auth/errors.js +119 -0
- package/core/js/libs/auth/forms.js +206 -0
- package/core/js/libs/auth/index.js +181 -0
- package/core/js/libs/auth/oauth.js +394 -0
- package/core/js/libs/auth/orphan.js +110 -0
- package/core/js/libs/auth/password-toggle.js +44 -0
- package/core/js/libs/auth/session-params.js +266 -0
- package/core/js/libs/auth/tracking.js +41 -0
- package/core/js/libs/charts.js +516 -0
- package/core/js/libs/consent-region.js +127 -0
- package/core/js/libs/dev.js +150 -0
- package/core/js/libs/graph.js +201 -0
- package/core/js/libs/initialize-tooltips.js +31 -0
- package/core/js/libs/logger.js +38 -0
- package/core/js/libs/omega-copy.js +89 -0
- package/core/js/libs/path-prefix.js +44 -0
- package/core/js/libs/payment-config.js +76 -0
- package/core/js/libs/recaptcha.js +94 -0
- package/core/js/libs/sale-name.js +295 -0
- package/core/js/libs/showcase-frames.js +37 -0
- package/core/js/libs/srcset.js +69 -0
- package/core/js/libs/tracking-consent.js +161 -0
- package/core/js/main.js +144 -0
- package/core/js/pages/404/index.js +57 -0
- package/core/js/pages/admin/calendar/calendar-core.js +701 -0
- package/core/js/pages/admin/calendar/calendar-events.js +853 -0
- package/core/js/pages/admin/calendar/calendar-renderer.js +807 -0
- package/core/js/pages/admin/calendar/campaign-preview.js +105 -0
- package/core/js/pages/admin/calendar/index.js +40 -0
- package/core/js/pages/admin/firebase/index.js +727 -0
- package/core/js/pages/admin/index.js +531 -0
- package/core/js/pages/admin/posts/editor/index.js +230 -0
- package/core/js/pages/admin/posts/index.js +237 -0
- package/core/js/pages/admin/studio/index.js +538 -0
- package/core/js/pages/admin/users/index.js +669 -0
- package/core/js/pages/admin/users/new/index.js +65 -0
- package/core/js/pages/admin/verts/index.js +407 -0
- package/core/js/pages/alternatives/[alternative]/index.js +17 -0
- package/core/js/pages/app/index.js +135 -0
- package/core/js/pages/blog/[slug].js +132 -0
- package/core/js/pages/blog/_search.mjs +108 -0
- package/core/js/pages/blog/index.js +193 -0
- package/core/js/pages/blog/page/[num]/index.js +7 -0
- package/core/js/pages/connections/callback/index.js +148 -0
- package/core/js/pages/contact/index.js +170 -0
- package/core/js/pages/cookies.js +2 -0
- package/core/js/pages/dashboard/account/index.js +366 -0
- package/core/js/pages/dashboard/account/modules/orders.js +82 -0
- package/core/js/pages/dashboard/account/sections/api-keys.js +149 -0
- package/core/js/pages/dashboard/account/sections/billing.js +1667 -0
- package/core/js/pages/dashboard/account/sections/connections.js +333 -0
- package/core/js/pages/dashboard/account/sections/data-request.js +225 -0
- package/core/js/pages/dashboard/account/sections/delete.js +80 -0
- package/core/js/pages/dashboard/account/sections/notifications.js +167 -0
- package/core/js/pages/dashboard/account/sections/orders.js +151 -0
- package/core/js/pages/dashboard/account/sections/profile.js +200 -0
- package/core/js/pages/dashboard/account/sections/referrals.js +217 -0
- package/core/js/pages/dashboard/account/sections/refund.js +253 -0
- package/core/js/pages/dashboard/account/sections/security.js +726 -0
- package/core/js/pages/dashboard/account/sections/team.js +247 -0
- package/core/js/pages/download/index.js +418 -0
- package/core/js/pages/extension/index.js +164 -0
- package/core/js/pages/extension/installed/index.js +135 -0
- package/core/js/pages/feedback/index.js +193 -0
- package/core/js/pages/legal/_document.js +91 -0
- package/core/js/pages/payment/checkout/index.js +420 -0
- package/core/js/pages/payment/checkout/modules/api.js +139 -0
- package/core/js/pages/payment/checkout/modules/dev-section.js +175 -0
- package/core/js/pages/payment/checkout/modules/discount.js +69 -0
- package/core/js/pages/payment/checkout/modules/pricing.js +73 -0
- package/core/js/pages/payment/checkout/modules/state.js +339 -0
- package/core/js/pages/payment/checkout/modules/tracking.js +54 -0
- package/core/js/pages/payment/confirmation/index.js +91 -0
- package/core/js/pages/payment/confirmation/modules/celebration.js +45 -0
- package/core/js/pages/payment/confirmation/modules/state.js +112 -0
- package/core/js/pages/payment/confirmation/modules/tracking.js +133 -0
- package/core/js/pages/payment/confirmation/modules/verify.js +142 -0
- package/core/js/pages/portal/email-preferences/index.js +183 -0
- package/core/js/pages/pricing/index.js +425 -0
- package/core/js/pages/privacy.js +2 -0
- package/core/js/pages/reset/index.js +12 -0
- package/core/js/pages/signin/index.js +22 -0
- package/core/js/pages/signup/index.js +23 -0
- package/core/js/pages/status/index.js +687 -0
- package/core/js/pages/terms.js +2 -0
- package/core/js/pages/test/components/[category]/[name]/index.js +26 -0
- package/core/js/pages/test/libraries/appearance/index.js +220 -0
- package/core/js/pages/test/libraries/form-manager/index.js +328 -0
- package/core/js/pages/test/libraries/layers/index.js +16 -0
- package/core/js/pages/test/libraries/verts/index.js +68 -0
- package/core/js/pages/test/sections/[category]/[name]/index.js +28 -0
- package/core/js/pages/test/styleguide/index.js +35 -0
- package/core/js/pages/token/index.js +203 -0
- package/core/logos/brandmarks/original/apple-app-store.svg +1 -0
- package/core/logos/brandmarks/original/apple.svg +6 -0
- package/core/logos/brandmarks/original/bitbucket.svg +14 -0
- package/core/logos/brandmarks/original/bitcoin.svg +1 -0
- package/core/logos/brandmarks/original/bluesky.svg +7 -0
- package/core/logos/brandmarks/original/bootstrap.svg +43 -0
- package/core/logos/brandmarks/original/brave.svg +1 -0
- package/core/logos/brandmarks/original/chrome.svg +1 -0
- package/core/logos/brandmarks/original/discord.svg +1 -0
- package/core/logos/brandmarks/original/dropbox.svg +10 -0
- package/core/logos/brandmarks/original/edge.svg +1 -0
- package/core/logos/brandmarks/original/facebook-f.svg +1 -0
- package/core/logos/brandmarks/original/facebook.svg +8 -0
- package/core/logos/brandmarks/original/figma.svg +10 -0
- package/core/logos/brandmarks/original/firefox.svg +1 -0
- package/core/logos/brandmarks/original/github.svg +6 -0
- package/core/logos/brandmarks/original/gitlab.svg +17 -0
- package/core/logos/brandmarks/original/google-a-s.svg +1 -0
- package/core/logos/brandmarks/original/google-chrome-webstore.svg +49 -0
- package/core/logos/brandmarks/original/google-play-store.svg +1 -0
- package/core/logos/brandmarks/original/google-web-search.svg +1 -0
- package/core/logos/brandmarks/original/google.svg +1 -0
- package/core/logos/brandmarks/original/gulp.svg +4 -0
- package/core/logos/brandmarks/original/html-5.svg +1 -0
- package/core/logos/brandmarks/original/instagram.svg +1 -0
- package/core/logos/brandmarks/original/javascript.svg +1 -0
- package/core/logos/brandmarks/original/jira.svg +18 -0
- package/core/logos/brandmarks/original/kick.svg +7 -0
- package/core/logos/brandmarks/original/linkedin.svg +1 -0
- package/core/logos/brandmarks/original/linux.svg +28 -0
- package/core/logos/brandmarks/original/messenger.svg +16 -0
- package/core/logos/brandmarks/original/microsoft.svg +1 -0
- package/core/logos/brandmarks/original/npm.svg +8 -0
- package/core/logos/brandmarks/original/opera.svg +1 -0
- package/core/logos/brandmarks/original/patreon.svg +6 -0
- package/core/logos/brandmarks/original/pinterest.svg +6 -0
- package/core/logos/brandmarks/original/reddit.svg +1 -0
- package/core/logos/brandmarks/original/safari.svg +31 -0
- package/core/logos/brandmarks/original/sass.svg +3 -0
- package/core/logos/brandmarks/original/signal.svg +6 -0
- package/core/logos/brandmarks/original/skype.svg +47 -0
- package/core/logos/brandmarks/original/slack.svg +33 -0
- package/core/logos/brandmarks/original/soundcloud.svg +1 -0
- package/core/logos/brandmarks/original/spotify.svg +5 -0
- package/core/logos/brandmarks/original/steam.svg +6 -0
- package/core/logos/brandmarks/original/telegram.svg +14 -0
- package/core/logos/brandmarks/original/tiktok.svg +1 -0
- package/core/logos/brandmarks/original/trello.svg +16 -0
- package/core/logos/brandmarks/original/tumblr.svg +1 -0
- package/core/logos/brandmarks/original/twitch.svg +6 -0
- package/core/logos/brandmarks/original/twitter.svg +6 -0
- package/core/logos/brandmarks/original/unity.svg +6 -0
- package/core/logos/brandmarks/original/x.svg +7 -0
- package/core/logos/brandmarks/original/yahoo-y.svg +1 -0
- package/core/logos/brandmarks/original/youtube-square.svg +1 -0
- package/core/logos/brandmarks/original/youtube.svg +1 -0
- package/core/logos/combomarks/dark/airbnb.svg +30 -0
- package/core/logos/combomarks/dark/slack.svg +38 -0
- package/core/logos/combomarks/dark/spotify.svg +35 -0
- package/core/logos/combomarks/dark/twilio.svg +26 -0
- package/core/logos/combomarks/dark/weebly.svg +35 -0
- package/core/logos/combomarks/gray/airbnb.svg +33 -0
- package/core/logos/combomarks/gray/alphabet.svg +23 -0
- package/core/logos/combomarks/gray/amazon.svg +38 -0
- package/core/logos/combomarks/gray/boring-company.svg +91 -0
- package/core/logos/combomarks/gray/burberry.svg +239 -0
- package/core/logos/combomarks/gray/embark.svg +21 -0
- package/core/logos/combomarks/gray/fitbit.svg +61 -0
- package/core/logos/combomarks/gray/fred-perry.svg +94 -0
- package/core/logos/combomarks/gray/google.svg +27 -0
- package/core/logos/combomarks/gray/hollister.svg +34 -0
- package/core/logos/combomarks/gray/hubspot.svg +27 -0
- package/core/logos/combomarks/gray/kaplan.svg +33 -0
- package/core/logos/combomarks/gray/lenovo.svg +27 -0
- package/core/logos/combomarks/gray/levis.svg +25 -0
- package/core/logos/combomarks/gray/mapbox.svg +37 -0
- package/core/logos/combomarks/gray/netflix.svg +15 -0
- package/core/logos/combomarks/gray/new-balance.svg +32 -0
- package/core/logos/combomarks/gray/nike.svg +17 -0
- package/core/logos/combomarks/gray/paypal.svg +41 -0
- package/core/logos/combomarks/gray/puma.svg +82 -0
- package/core/logos/combomarks/gray/samsung.svg +26 -0
- package/core/logos/combomarks/gray/shopify.svg +36 -0
- package/core/logos/combomarks/gray/slack.svg +42 -0
- package/core/logos/combomarks/gray/spotify.svg +38 -0
- package/core/logos/combomarks/gray/stripe.svg +24 -0
- package/core/logos/combomarks/gray/tnf.svg +30 -0
- package/core/logos/combomarks/gray/twilio.svg +29 -0
- package/core/logos/combomarks/gray/uber.svg +24 -0
- package/core/logos/combomarks/gray/weebly.svg +38 -0
- package/core/logos/combomarks/original/airbnb.svg +33 -0
- package/core/logos/combomarks/original/alphabet.svg +23 -0
- package/core/logos/combomarks/original/amazon.svg +38 -0
- package/core/logos/combomarks/original/asana.svg +8 -0
- package/core/logos/combomarks/original/boring-company.svg +91 -0
- package/core/logos/combomarks/original/discord.svg +6 -0
- package/core/logos/combomarks/original/embark.svg +24 -0
- package/core/logos/combomarks/original/fitbit.svg +60 -0
- package/core/logos/combomarks/original/github.svg +6 -0
- package/core/logos/combomarks/original/gitlab.svg +20 -0
- package/core/logos/combomarks/original/google.svg +28 -0
- package/core/logos/combomarks/original/hubspot.svg +29 -0
- package/core/logos/combomarks/original/instagram.svg +7 -0
- package/core/logos/combomarks/original/kickstarter.svg +6 -0
- package/core/logos/combomarks/original/lenovo.svg +24 -0
- package/core/logos/combomarks/original/linkedin.svg +6 -0
- package/core/logos/combomarks/original/mapbox.svg +39 -0
- package/core/logos/combomarks/original/mastodon.svg +7 -0
- package/core/logos/combomarks/original/medium.svg +6 -0
- package/core/logos/combomarks/original/meta.svg +22 -0
- package/core/logos/combomarks/original/microsoft.svg +13 -0
- package/core/logos/combomarks/original/monday.svg +12 -0
- package/core/logos/combomarks/original/netflix.svg +15 -0
- package/core/logos/combomarks/original/notion.svg +9 -0
- package/core/logos/combomarks/original/paypal.svg +41 -0
- package/core/logos/combomarks/original/reddit.svg +13 -0
- package/core/logos/combomarks/original/samsung.svg +25 -0
- package/core/logos/combomarks/original/shopify.svg +35 -0
- package/core/logos/combomarks/original/slack.svg +47 -0
- package/core/logos/combomarks/original/spotify.svg +37 -0
- package/core/logos/combomarks/original/stackoverflow.svg +28 -0
- package/core/logos/combomarks/original/stripe.svg +24 -0
- package/core/logos/combomarks/original/tiktok.svg +12 -0
- package/core/logos/combomarks/original/tumblr.svg +6 -0
- package/core/logos/combomarks/original/uber.svg +24 -0
- package/core/logos/combomarks/original/weebly.svg +34 -0
- package/core/logos/combomarks/original/whatsapp.svg +20 -0
- package/core/logos/combomarks/original/youtube.svg +10 -0
- package/core/logos/combomarks/original/zoom.svg +7 -0
- package/core/logos/combomarks/white/airbnb.svg +33 -0
- package/core/logos/combomarks/white/alphabet.svg +23 -0
- package/core/logos/combomarks/white/amazon.svg +38 -0
- package/core/logos/combomarks/white/boring-company.svg +91 -0
- package/core/logos/combomarks/white/embark.svg +21 -0
- package/core/logos/combomarks/white/fitbit.svg +61 -0
- package/core/logos/combomarks/white/google.svg +27 -0
- package/core/logos/combomarks/white/hubspot.svg +27 -0
- package/core/logos/combomarks/white/kaplan.svg +33 -0
- package/core/logos/combomarks/white/lenovo.svg +27 -0
- package/core/logos/combomarks/white/mapbox.svg +37 -0
- package/core/logos/combomarks/white/netflix.svg +15 -0
- package/core/logos/combomarks/white/paypal.svg +40 -0
- package/core/logos/combomarks/white/samsung.svg +26 -0
- package/core/logos/combomarks/white/shopify.svg +36 -0
- package/core/logos/combomarks/white/slack.svg +42 -0
- package/core/logos/combomarks/white/spotify.svg +38 -0
- package/core/logos/combomarks/white/stripe.svg +24 -0
- package/core/logos/combomarks/white/twilio.svg +29 -0
- package/core/logos/combomarks/white/uber.svg +24 -0
- package/core/logos/combomarks/white/weebly.svg +38 -0
- package/defaults/pages/404.md +4 -0
- package/defaults/pages/about.md +4 -0
- package/defaults/pages/admin/calendar/index.html +4 -0
- package/defaults/pages/admin/firebase/index.html +4 -0
- package/defaults/pages/admin/index.md +4 -0
- package/defaults/pages/admin/posts/editor.html +4 -0
- package/defaults/pages/admin/posts/index.html +4 -0
- package/defaults/pages/admin/stackblitz/index.html +4 -0
- package/defaults/pages/admin/studio/index.html +4 -0
- package/defaults/pages/admin/users/index.html +4 -0
- package/defaults/pages/admin/users/new.html +4 -0
- package/defaults/pages/admin/verts/index.html +4 -0
- package/defaults/pages/ads-txt.html +11 -0
- package/defaults/pages/alternatives/index.md +4 -0
- package/defaults/pages/app.md +4 -0
- package/defaults/pages/auth/reset.md +4 -0
- package/defaults/pages/auth/signin.md +4 -0
- package/defaults/pages/auth/signup.md +4 -0
- package/defaults/pages/auth/token.md +4 -0
- package/defaults/pages/blog/categories/category.html +21 -0
- package/defaults/pages/blog/categories.md +4 -0
- package/defaults/pages/blog/index-json.html +27 -0
- package/defaults/pages/blog/tags/tag.html +21 -0
- package/defaults/pages/blog/tags.md +4 -0
- package/defaults/pages/blog.md +22 -0
- package/defaults/pages/careers.md +4 -0
- package/defaults/pages/connections/callback.md +4 -0
- package/defaults/pages/contact.md +4 -0
- package/defaults/pages/dashboard/account.md +4 -0
- package/defaults/pages/dashboard/index.md +12 -0
- package/defaults/pages/download.md +4 -0
- package/defaults/pages/extension/index.html +4 -0
- package/defaults/pages/extension/installed.html +4 -0
- package/defaults/pages/feedback.md +4 -0
- package/defaults/pages/feeds/posts-json.html +40 -0
- package/defaults/pages/feeds/posts-xml.html +38 -0
- package/defaults/pages/humans.html +25 -0
- package/defaults/pages/index.md +4 -0
- package/defaults/pages/legal/cookies.md +4 -0
- package/defaults/pages/legal/privacy.md +4 -0
- package/defaults/pages/legal/terms.md +4 -0
- package/defaults/pages/llms-txt.html +46 -0
- package/defaults/pages/opensearch.html +16 -0
- package/defaults/pages/pages-json.html +42 -0
- package/defaults/pages/payment/checkout.md +4 -0
- package/defaults/pages/payment/confirmation.md +4 -0
- package/defaults/pages/portal/email-preferences.md +4 -0
- package/defaults/pages/pricing.md +4 -0
- package/defaults/pages/redirects/account.md +12 -0
- package/defaults/pages/redirects/admin/dashboard.md +11 -0
- package/defaults/pages/redirects/auth/change-password.md +9 -0
- package/defaults/pages/redirects/auth/forgot.md +9 -0
- package/defaults/pages/redirects/auth/join.md +9 -0
- package/defaults/pages/redirects/auth/login.md +9 -0
- package/defaults/pages/redirects/auth/recover.md +9 -0
- package/defaults/pages/redirects/auth/register.md +9 -0
- package/defaults/pages/redirects/auth/reset-password.md +9 -0
- package/defaults/pages/redirects/billing/cancel.md +9 -0
- package/defaults/pages/redirects/billing/refund.md +9 -0
- package/defaults/pages/robots.html +36 -0
- package/defaults/pages/security-txt.html +11 -0
- package/defaults/pages/sitemap.html +37 -0
- package/defaults/pages/status.md +4 -0
- package/defaults/pages/team/index.md +4 -0
- package/defaults/pages/test/account/dashboard.html +16 -0
- package/defaults/pages/test/index.md +12 -0
- package/defaults/pages/test/libraries/appearance.html +268 -0
- package/defaults/pages/test/libraries/cover.html +50 -0
- package/defaults/pages/test/libraries/error.html +30 -0
- package/defaults/pages/test/libraries/firestore.html +202 -0
- package/defaults/pages/test/libraries/form-manager.html +374 -0
- package/defaults/pages/test/libraries/layers.html +52 -0
- package/defaults/pages/test/libraries/lazy-loading.html +450 -0
- package/defaults/pages/test/libraries/verts.html +149 -0
- package/defaults/pages/test/redirect/external.md +13 -0
- package/defaults/pages/test/redirect/internal.md +13 -0
- package/defaults/pages/test/styleguide/index.html +588 -0
- package/defaults/pages/test/translation/index.md +50 -0
- package/defaults/pages/updates/index.md +4 -0
- package/defaults/sample-posts/2026-01-12-welcome-to-the-blog.md +26 -0
- package/defaults/sample-posts/2026-02-03-a-field-guide-to-good-defaults.md +50 -0
- package/defaults/sample-posts/2026-02-24-shipping-week-notes.md +37 -0
- package/defaults/sample-posts/2026-03-17-the-case-for-one-config.md +36 -0
- package/defaults/sample-posts/2026-04-09-write-release-notes-people-read.md +34 -0
- package/defaults/sample-posts/2026-05-21-dark-mode-done-properly.md +38 -0
- package/defaults/sample-posts/2026-06-02-the-boring-deploy-is-the-good-deploy.md +30 -0
- package/defaults/sample-posts/2026-06-11-naming-things-a-survival-guide.md +30 -0
- package/defaults/sample-posts/2026-06-19-your-pricing-page-is-a-product.md +28 -0
- package/defaults/sample-posts/2026-06-30-email-is-an-api-with-feelings.md +28 -0
- package/defaults/sample-posts/2026-07-08-ship-the-docs-with-the-diff.md +30 -0
- package/defaults/sample-team/avery-quinn.md +22 -0
- package/defaults/sample-team/jordan-reyes.md +25 -0
- package/defaults/sample-team/riley-nakamura.md +22 -0
- package/defaults/sample-team/sam-okafor.md +22 -0
- package/defaults/sample-updates/v1.0.0.md +28 -0
- package/defaults/sample-updates/v1.1.0.md +27 -0
- package/defaults/sample-updates/v1.2.0.md +27 -0
- package/defaults/sample-updates/v1.3.0.md +28 -0
- package/defaults/showcase/components.html +62 -0
- package/defaults/showcase/entry.html +76 -0
- package/defaults/showcase/frame.html +62 -0
- package/defaults/showcase/index.html +59 -0
- package/dist/assets.js +1349 -0
- package/dist/brand-tokens.js +195 -0
- package/dist/build.js +192 -0
- package/dist/cachebreak-html.js +71 -0
- package/dist/cli-run.js +25 -0
- package/dist/cli.js +47 -0
- package/dist/collections.js +183 -0
- package/dist/commands/audit.js +470 -0
- package/dist/commands/build.js +197 -0
- package/dist/commands/clean.js +18 -0
- package/dist/commands/customize.js +125 -0
- package/dist/commands/deploy.js +441 -0
- package/dist/commands/dev.js +1067 -0
- package/dist/commands/install.js +31 -0
- package/dist/commands/lib/deploy-precheck.js +43 -0
- package/dist/commands/lib/ensure-target.js +115 -0
- package/dist/commands/migrate.js +86 -0
- package/dist/commands/purge.js +31 -0
- package/dist/commands/test.js +237 -0
- package/dist/commands/translate.js +57 -0
- package/dist/commands/update.js +22 -0
- package/dist/commands/version.js +11 -0
- package/dist/config-sections.js +245 -0
- package/dist/consumer-scan.js +118 -0
- package/dist/consumer.js +49 -0
- package/dist/customize.js +328 -0
- package/dist/decisions.js +153 -0
- package/dist/dist-audit.js +417 -0
- package/dist/dynamic-pages.js +357 -0
- package/dist/engine.js +1402 -0
- package/dist/firebase-auth-helpers.js +198 -0
- package/dist/font-metrics.js +420 -0
- package/dist/frontmatter-liquid.js +253 -0
- package/dist/github-secrets.js +80 -0
- package/dist/hero-animations.js +170 -0
- package/dist/imagemin.js +261 -0
- package/dist/index.js +41 -0
- package/dist/inline-icons.js +65 -0
- package/dist/language-flags.js +55 -0
- package/dist/layers.js +80 -0
- package/dist/layouts.js +44 -0
- package/dist/limit-collections.js +199 -0
- package/dist/link-resolver.js +303 -0
- package/dist/markdown-images.js +85 -0
- package/dist/merge.js +20 -0
- package/dist/migrate/codemod.js +172 -0
- package/dist/migrate/config-convert.js +448 -0
- package/dist/migrate/consumer-assets.js +130 -0
- package/dist/migrate/index.js +223 -0
- package/dist/migrate/lint.js +108 -0
- package/dist/migrate/rules.js +1929 -0
- package/dist/minify-html.js +148 -0
- package/dist/mode-helpers.js +96 -0
- package/dist/omega-bin.js +7 -0
- package/dist/overrides.js +190 -0
- package/dist/path-prefix.js +167 -0
- package/dist/paths.js +37 -0
- package/dist/pricing.js +301 -0
- package/dist/purge.js +95 -0
- package/dist/redirect-page.js +45 -0
- package/dist/sample-content.js +210 -0
- package/dist/scaffold.js +123 -0
- package/dist/sections.js +810 -0
- package/dist/service-worker.js +200 -0
- package/dist/social-pages.js +142 -0
- package/dist/srcset.js +67 -0
- package/dist/static-assets.js +154 -0
- package/dist/target-shortlinks.js +123 -0
- package/dist/theme-vocabulary.js +76 -0
- package/dist/translate/collect-text-nodes.js +93 -0
- package/dist/translate/default-routes.js +152 -0
- package/dist/translate/generate-defaults.js +297 -0
- package/dist/translate/index.js +568 -0
- package/dist/translate/packaged-defaults.js +127 -0
- package/dist/translate/sitemap.js +108 -0
- package/dist/vendor/account/engine.js +182 -0
- package/dist/vendor/account/features.js +220 -0
- package/dist/vendor/account/index.js +53 -0
- package/dist/vendor/account/schema.js +272 -0
- package/dist/vendor/account/subscription.js +38 -0
- package/dist/vendor/config/company.js +31 -0
- package/dist/vendor/config/defaults.js +173 -0
- package/dist/vendor/config/demo.js +18 -0
- package/dist/vendor/config/desktop-artifacts.js +110 -0
- package/dist/vendor/config/edit.js +769 -0
- package/dist/vendor/config/env-delivery.js +145 -0
- package/dist/vendor/config/env-rules.js +93 -0
- package/dist/vendor/config/env-schema.js +1078 -0
- package/dist/vendor/config/env.js +445 -0
- package/dist/vendor/config/hooks.js +97 -0
- package/dist/vendor/config/index.js +237 -0
- package/dist/vendor/config/instances.js +208 -0
- package/dist/vendor/config/load.js +490 -0
- package/dist/vendor/config/merge.js +68 -0
- package/dist/vendor/config/order.js +139 -0
- package/dist/vendor/config/ports.js +374 -0
- package/dist/vendor/config/providers.js +32 -0
- package/dist/vendor/config/repo.js +142 -0
- package/dist/vendor/config/retired-keys.js +430 -0
- package/dist/vendor/config/schema.js +1610 -0
- package/dist/vendor/config/secrets.js +50 -0
- package/dist/vendor/config/seed.js +34 -0
- package/dist/vendor/config/site-global.js +205 -0
- package/dist/vendor/config/validate.js +554 -0
- package/dist/vendor/config/winback.js +61 -0
- package/dist/vendor/devkit/actions-secrets.js +145 -0
- package/dist/vendor/devkit/attach-log-file.js +262 -0
- package/dist/vendor/devkit/bare-requires.js +153 -0
- package/dist/vendor/devkit/bundle.js +292 -0
- package/dist/vendor/devkit/ci-workflows.js +520 -0
- package/dist/vendor/devkit/cli-router.js +156 -0
- package/dist/vendor/devkit/command-path.js +46 -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/env-watch.js +132 -0
- package/dist/vendor/devkit/framework-deps.js +46 -0
- package/dist/vendor/devkit/icons.js +178 -0
- package/dist/vendor/devkit/license.js +155 -0
- package/dist/vendor/devkit/local-https.js +360 -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/omega-bin.js +345 -0
- package/dist/vendor/devkit/reads.js +274 -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-secrets.js +165 -0
- package/dist/vendor/devkit/test/scope.js +162 -0
- package/dist/vendor/devkit/translate/cache.js +84 -0
- package/dist/vendor/devkit/translate/engine.js +243 -0
- package/dist/vendor/devkit/translate/index.js +49 -0
- package/dist/vendor/devkit/translate/languages.js +134 -0
- package/dist/vendor/devkit/translate/providers.js +188 -0
- package/dist/vendor/devkit/update.js +569 -0
- package/dist/vendor/template-kit/data/language-flags.js +54 -0
- package/dist/vendor/template-kit/data/languages.js +195 -0
- package/dist/vendor/template-kit/data/social-urls.js +26 -0
- package/dist/vendor/template-kit/filters.js +227 -0
- package/dist/vendor/template-kit/index.js +28 -0
- package/dist/vendor/template-kit/jekyll-compat.js +268 -0
- package/dist/vendor/template-kit/register-liquid.js +0 -0
- package/dist/vendor/template-kit/tags/collections.js +191 -0
- package/dist/vendor/template-kit/tags/conditionals.js +101 -0
- package/dist/vendor/template-kit/tags/content.js +175 -0
- package/dist/vendor/template-kit/tags/index.js +33 -0
- package/dist/vendor/template-kit/tags/media.js +376 -0
- package/dist/vendor/template-kit/variable-resolver.js +163 -0
- package/docs/ads-system.md +109 -0
- package/docs/classy-v2/DIRECTION.md +92 -0
- package/docs/classy-v2/draft-1.html +1932 -0
- package/docs/classy-v2/draft-2.html +1956 -0
- package/docs/frontmatter.md +153 -0
- package/docs/index.md +254 -0
- package/docs/libs.md +298 -0
- package/docs/omega-sections-spec.md +159 -0
- package/docs/page-contract.md +112 -0
- package/docs/sections.md +845 -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/template-kit.md +128 -0
- package/docs/test-framework.md +163 -0
- package/package.json +122 -0
- package/runtime/boot.js +149 -0
- package/runtime/icons.js +77 -0
- package/runtime/manager.js +36 -0
- package/scaffold/.github/workflows/build.yml +139 -0
- package/scaffold/.nvmrc +1 -0
- package/scaffold/AGENTS.md +55 -0
- package/scaffold/CLAUDE.md +1 -0
- package/scaffold/_.gitattributes +4 -0
- package/scaffold/_.gitignore +27 -0
- package/scaffold/config/omega.json5 +20 -0
- package/scaffold/src/assets/css/pages/.gitkeep +0 -0
- package/scaffold/src/assets/images/.gitkeep +0 -0
- package/scaffold/src/assets/js/pages/.gitkeep +0 -0
- package/scaffold/src/pages/.gitkeep +0 -0
- package/scaffold/src/pages/example.md.txt +94 -0
- package/scaffold/src/service-worker.js +16 -0
- package/sw/entry.js +19 -0
- package/sw/manager.js +281 -0
- package/themes/_template/README.md +115 -0
- package/themes/_template/_config.scss +60 -0
- package/themes/_template/_theme.js +14 -0
- package/themes/_template/_theme.scss +28 -0
- package/themes/_template/css/base/_root.scss +19 -0
- package/themes/_template/css/components/_components.scss +23 -0
- package/themes/base/README.md +5 -0
- package/themes/base/_components/data/org-chart/component.html +33 -0
- package/themes/base/_components/data/org-chart/component.json5 +33 -0
- package/themes/base/_components/data/org-chart/component.scss +183 -0
- package/themes/base/_components/heading/masthead/component.html +22 -0
- package/themes/base/_components/heading/masthead/component.json5 +30 -0
- package/themes/base/_components/heading/section-head/component.html +18 -0
- package/themes/base/_components/heading/section-head/component.json5 +27 -0
- package/themes/base/_components/pricing/features/component.html +29 -0
- package/themes/base/_components/pricing/features/component.json5 +30 -0
- package/themes/base/_hero/orbit/index.html +30 -0
- package/themes/base/_hero/orbit/script.js +33 -0
- package/themes/base/_hero/orbit/style.scss +133 -0
- package/themes/base/_includes/admin/sections/sidebar.html +3 -0
- package/themes/base/_includes/admin/sections/topbar.html +3 -0
- package/themes/base/_includes/backend/sections/sidebar.html +3 -0
- package/themes/base/_includes/backend/sections/topbar.html +3 -0
- package/themes/base/_includes/frontend/components/connection-card.html +49 -0
- package/themes/base/_includes/frontend/components/post-card.html +54 -0
- package/themes/base/_includes/frontend/sections/account-connections.html +42 -0
- package/themes/base/_includes/frontend/sections/account-section-header.html +11 -0
- package/themes/base/_includes/frontend/sections/footer.html +154 -0
- package/themes/base/_includes/frontend/sections/nav.html +276 -0
- package/themes/base/_includes/global/sections/account.html +72 -0
- package/themes/base/_includes/global/sections/app-sidebar.html +248 -0
- package/themes/base/_includes/global/sections/app-topbar.html +228 -0
- package/themes/base/_includes/global/sections/page-header.html +99 -0
- package/themes/base/_layouts/admin/core/minimal-viewport-locked.html +22 -0
- package/themes/base/_layouts/admin/core/minimal.html +23 -0
- package/themes/base/_layouts/backend/core/base.html +57 -0
- package/themes/base/_layouts/backend/core/minimal-viewport-locked.html +32 -0
- package/themes/base/_layouts/backend/core/minimal.html +32 -0
- package/themes/base/_layouts/backend/pages/dashboard/index.html +230 -0
- package/themes/base/_layouts/frontend/core/base.html +31 -0
- package/themes/base/_layouts/frontend/core/cover.html +40 -0
- package/themes/base/_layouts/frontend/core/minimal.html +47 -0
- package/themes/base/_layouts/frontend/pages/404.html +54 -0
- package/themes/base/_layouts/frontend/pages/about.html +144 -0
- package/themes/base/_layouts/frontend/pages/account/index.html +2104 -0
- package/themes/base/_layouts/frontend/pages/alternatives/alternative.html +319 -0
- package/themes/base/_layouts/frontend/pages/alternatives/index.html +186 -0
- package/themes/base/_layouts/frontend/pages/app.html +142 -0
- package/themes/base/_layouts/frontend/pages/auth/reset.html +53 -0
- package/themes/base/_layouts/frontend/pages/auth/signin.html +90 -0
- package/themes/base/_layouts/frontend/pages/auth/signup.html +141 -0
- package/themes/base/_layouts/frontend/pages/auth/token.html +44 -0
- package/themes/base/_layouts/frontend/pages/blog/categories/category.html +88 -0
- package/themes/base/_layouts/frontend/pages/blog/categories/index.html +88 -0
- package/themes/base/_layouts/frontend/pages/blog/index.html +255 -0
- package/themes/base/_layouts/frontend/pages/blog/post.html +261 -0
- package/themes/base/_layouts/frontend/pages/blog/tags/index.html +84 -0
- package/themes/base/_layouts/frontend/pages/blog/tags/tag.html +88 -0
- package/themes/base/_layouts/frontend/pages/collection/category.html +72 -0
- package/themes/base/_layouts/frontend/pages/collection/document.html +54 -0
- package/themes/base/_layouts/frontend/pages/collection/index.html +84 -0
- package/themes/base/_layouts/frontend/pages/connections/callback.html +55 -0
- package/themes/base/_layouts/frontend/pages/contact.html +214 -0
- package/themes/base/_layouts/frontend/pages/download.html +793 -0
- package/themes/base/_layouts/frontend/pages/extension/index.html +253 -0
- package/themes/base/_layouts/frontend/pages/extension/installed.html +198 -0
- package/themes/base/_layouts/frontend/pages/feedback.html +171 -0
- package/themes/base/_layouts/frontend/pages/index.html +66 -0
- package/themes/base/_layouts/frontend/pages/legal/document.html +78 -0
- package/themes/base/_layouts/frontend/pages/payment/checkout.html +459 -0
- package/themes/base/_layouts/frontend/pages/payment/confirmation.html +131 -0
- package/themes/base/_layouts/frontend/pages/portal/email-preferences.html +104 -0
- package/themes/base/_layouts/frontend/pages/pricing.html +596 -0
- package/themes/base/_layouts/frontend/pages/status.html +361 -0
- package/themes/base/_layouts/frontend/pages/team/index.html +210 -0
- package/themes/base/_layouts/frontend/pages/team/member.html +125 -0
- package/themes/base/_layouts/frontend/pages/updates/index.html +119 -0
- package/themes/base/_layouts/frontend/pages/updates/update.html +118 -0
- package/themes/base/_sections/about/hero/section.html +68 -0
- package/themes/base/_sections/about/hero/section.json5 +58 -0
- package/themes/base/_sections/about/letter/section.html +60 -0
- package/themes/base/_sections/about/letter/section.json5 +56 -0
- package/themes/base/_sections/about/photo-band/section.html +24 -0
- package/themes/base/_sections/about/photo-band/section.json5 +23 -0
- package/themes/base/_sections/about/principles/section.html +17 -0
- package/themes/base/_sections/about/principles/section.json5 +34 -0
- package/themes/base/_sections/about/timeline/section.html +20 -0
- package/themes/base/_sections/about/timeline/section.json5 +34 -0
- package/themes/base/_sections/marketing/bento/section.html +91 -0
- package/themes/base/_sections/marketing/bento/section.json5 +152 -0
- package/themes/base/_sections/marketing/cta/section.html +44 -0
- package/themes/base/_sections/marketing/cta/section.json5 +47 -0
- package/themes/base/_sections/marketing/faq/section.html +52 -0
- package/themes/base/_sections/marketing/faq/section.json5 +68 -0
- package/themes/base/_sections/marketing/hero/section.html +349 -0
- package/themes/base/_sections/marketing/hero/section.json5 +335 -0
- package/themes/base/_sections/marketing/newsletter-cta/section.html +38 -0
- package/themes/base/_sections/marketing/newsletter-cta/section.js +86 -0
- package/themes/base/_sections/marketing/newsletter-cta/section.json5 +29 -0
- package/themes/base/_sections/marketing/pricing-cards/section.html +115 -0
- package/themes/base/_sections/marketing/pricing-cards/section.json5 +72 -0
- package/themes/base/_sections/marketing/product-demo/section.html +62 -0
- package/themes/base/_sections/marketing/product-demo/section.js +44 -0
- package/themes/base/_sections/marketing/product-demo/section.json5 +52 -0
- package/themes/base/_sections/marketing/prose/section.html +22 -0
- package/themes/base/_sections/marketing/prose/section.json5 +41 -0
- package/themes/base/_sections/marketing/showcase/section.html +35 -0
- package/themes/base/_sections/marketing/showcase/section.json5 +52 -0
- package/themes/base/_sections/marketing/stats/section.html +32 -0
- package/themes/base/_sections/marketing/stats/section.json5 +44 -0
- package/themes/base/_sections/marketing/testimonials/section.html +54 -0
- package/themes/base/_sections/marketing/testimonials/section.json5 +70 -0
- package/themes/base/_sections/marketing/trusted-by/section.html +30 -0
- package/themes/base/_sections/marketing/trusted-by/section.json5 +38 -0
- package/themes/base/_sections/verts/unit/section.html +7 -0
- package/themes/base/_sections/verts/unit/section.js +22 -0
- package/themes/base/_sections/verts/unit/section.json5 +24 -0
- package/themes/base/_sections/verts/unit/section.scss +24 -0
- package/themes/base/_theme.js +13 -0
- package/themes/base/_theme.scss +4 -0
- package/themes/bootstrap/_theme.js +16 -0
- package/themes/bootstrap/_theme.scss +11 -0
- package/themes/bootstrap/js/index.esm.js +19 -0
- package/themes/bootstrap/js/index.umd.js +34 -0
- package/themes/bootstrap/js/src/alert.js +87 -0
- package/themes/bootstrap/js/src/base-component.js +86 -0
- package/themes/bootstrap/js/src/button.js +72 -0
- package/themes/bootstrap/js/src/carousel.js +474 -0
- package/themes/bootstrap/js/src/collapse.js +297 -0
- package/themes/bootstrap/js/src/dom/data.js +55 -0
- package/themes/bootstrap/js/src/dom/event-handler.js +317 -0
- package/themes/bootstrap/js/src/dom/manipulator.js +71 -0
- package/themes/bootstrap/js/src/dom/selector-engine.js +126 -0
- package/themes/bootstrap/js/src/dropdown.js +458 -0
- package/themes/bootstrap/js/src/modal.js +378 -0
- package/themes/bootstrap/js/src/offcanvas.js +282 -0
- package/themes/bootstrap/js/src/popover.js +97 -0
- package/themes/bootstrap/js/src/scrollspy.js +296 -0
- package/themes/bootstrap/js/src/tab.js +315 -0
- package/themes/bootstrap/js/src/toast.js +224 -0
- package/themes/bootstrap/js/src/tooltip.js +632 -0
- package/themes/bootstrap/js/src/util/backdrop.js +151 -0
- package/themes/bootstrap/js/src/util/component-functions.js +35 -0
- package/themes/bootstrap/js/src/util/config.js +65 -0
- package/themes/bootstrap/js/src/util/focustrap.js +115 -0
- package/themes/bootstrap/js/src/util/index.js +306 -0
- package/themes/bootstrap/js/src/util/sanitizer.js +117 -0
- package/themes/bootstrap/js/src/util/scrollbar.js +114 -0
- package/themes/bootstrap/js/src/util/swipe.js +146 -0
- package/themes/bootstrap/js/src/util/template-factory.js +160 -0
- package/themes/bootstrap/overrides/_accordion.scss +21 -0
- package/themes/bootstrap/overrides/_avatars.scss +51 -0
- package/themes/bootstrap/overrides/_blog-images.scss +45 -0
- package/themes/bootstrap/overrides/_buttons-adaptive.scss +141 -0
- package/themes/bootstrap/overrides/_color-shades.scss +25 -0
- package/themes/bootstrap/overrides/_cursor-utilities.scss +13 -0
- package/themes/bootstrap/overrides/_index.scss +30 -0
- package/themes/bootstrap/overrides/_links.scss +26 -0
- package/themes/bootstrap/overrides/_soft-colors.scss +99 -0
- package/themes/bootstrap/overrides/_spacing-extended.scss +74 -0
- package/themes/bootstrap/overrides/_spinners.scss +22 -0
- package/themes/bootstrap/overrides/_typography-utilities.scss +40 -0
- package/themes/bootstrap/scss/_accordion.scss +153 -0
- package/themes/bootstrap/scss/_alert.scss +68 -0
- package/themes/bootstrap/scss/_badge.scss +38 -0
- package/themes/bootstrap/scss/_breadcrumb.scss +40 -0
- package/themes/bootstrap/scss/_button-group.scss +147 -0
- package/themes/bootstrap/scss/_buttons.scss +216 -0
- package/themes/bootstrap/scss/_card.scss +238 -0
- package/themes/bootstrap/scss/_carousel.scss +226 -0
- package/themes/bootstrap/scss/_close.scss +66 -0
- package/themes/bootstrap/scss/_containers.scss +41 -0
- package/themes/bootstrap/scss/_dropdown.scss +250 -0
- package/themes/bootstrap/scss/_forms.scss +9 -0
- package/themes/bootstrap/scss/_functions.scss +302 -0
- package/themes/bootstrap/scss/_grid.scss +39 -0
- package/themes/bootstrap/scss/_helpers.scss +12 -0
- package/themes/bootstrap/scss/_images.scss +42 -0
- package/themes/bootstrap/scss/_list-group.scss +199 -0
- package/themes/bootstrap/scss/_maps.scss +174 -0
- package/themes/bootstrap/scss/_mixins.scss +42 -0
- package/themes/bootstrap/scss/_modal.scss +240 -0
- package/themes/bootstrap/scss/_nav.scss +197 -0
- package/themes/bootstrap/scss/_navbar.scss +289 -0
- package/themes/bootstrap/scss/_offcanvas.scss +147 -0
- package/themes/bootstrap/scss/_pagination.scss +109 -0
- package/themes/bootstrap/scss/_placeholders.scss +51 -0
- package/themes/bootstrap/scss/_popover.scss +196 -0
- package/themes/bootstrap/scss/_progress.scss +68 -0
- package/themes/bootstrap/scss/_reboot.scss +611 -0
- package/themes/bootstrap/scss/_root.scss +187 -0
- package/themes/bootstrap/scss/_spinners.scss +85 -0
- package/themes/bootstrap/scss/_tables.scss +171 -0
- package/themes/bootstrap/scss/_toasts.scss +73 -0
- package/themes/bootstrap/scss/_tooltip.scss +119 -0
- package/themes/bootstrap/scss/_transitions.scss +27 -0
- package/themes/bootstrap/scss/_type.scss +106 -0
- package/themes/bootstrap/scss/_utilities.scss +806 -0
- package/themes/bootstrap/scss/_variables-dark.scss +102 -0
- package/themes/bootstrap/scss/_variables.scss +1753 -0
- package/themes/bootstrap/scss/bootstrap-grid.scss +62 -0
- package/themes/bootstrap/scss/bootstrap-reboot.scss +10 -0
- package/themes/bootstrap/scss/bootstrap-utilities.scss +19 -0
- package/themes/bootstrap/scss/bootstrap.scss +52 -0
- package/themes/bootstrap/scss/forms/_floating-labels.scss +97 -0
- package/themes/bootstrap/scss/forms/_form-check.scss +189 -0
- package/themes/bootstrap/scss/forms/_form-control.scss +214 -0
- package/themes/bootstrap/scss/forms/_form-range.scss +91 -0
- package/themes/bootstrap/scss/forms/_form-select.scss +80 -0
- package/themes/bootstrap/scss/forms/_form-text.scss +11 -0
- package/themes/bootstrap/scss/forms/_input-group.scss +132 -0
- package/themes/bootstrap/scss/forms/_labels.scss +36 -0
- package/themes/bootstrap/scss/forms/_validation.scss +12 -0
- package/themes/bootstrap/scss/helpers/_clearfix.scss +3 -0
- package/themes/bootstrap/scss/helpers/_color-bg.scss +7 -0
- package/themes/bootstrap/scss/helpers/_colored-links.scss +30 -0
- package/themes/bootstrap/scss/helpers/_focus-ring.scss +5 -0
- package/themes/bootstrap/scss/helpers/_icon-link.scss +25 -0
- package/themes/bootstrap/scss/helpers/_position.scss +36 -0
- package/themes/bootstrap/scss/helpers/_ratio.scss +26 -0
- package/themes/bootstrap/scss/helpers/_stacks.scss +15 -0
- package/themes/bootstrap/scss/helpers/_stretched-link.scss +15 -0
- package/themes/bootstrap/scss/helpers/_text-truncation.scss +7 -0
- package/themes/bootstrap/scss/helpers/_visually-hidden.scss +8 -0
- package/themes/bootstrap/scss/helpers/_vr.scss +8 -0
- package/themes/bootstrap/scss/mixins/_alert.scss +18 -0
- package/themes/bootstrap/scss/mixins/_backdrop.scss +14 -0
- package/themes/bootstrap/scss/mixins/_banner.scss +7 -0
- package/themes/bootstrap/scss/mixins/_border-radius.scss +78 -0
- package/themes/bootstrap/scss/mixins/_box-shadow.scss +18 -0
- package/themes/bootstrap/scss/mixins/_breakpoints.scss +127 -0
- package/themes/bootstrap/scss/mixins/_buttons.scss +70 -0
- package/themes/bootstrap/scss/mixins/_caret.scss +69 -0
- package/themes/bootstrap/scss/mixins/_clearfix.scss +9 -0
- package/themes/bootstrap/scss/mixins/_color-mode.scss +21 -0
- package/themes/bootstrap/scss/mixins/_color-scheme.scss +7 -0
- package/themes/bootstrap/scss/mixins/_container.scss +11 -0
- package/themes/bootstrap/scss/mixins/_deprecate.scss +10 -0
- package/themes/bootstrap/scss/mixins/_forms.scss +163 -0
- package/themes/bootstrap/scss/mixins/_gradients.scss +47 -0
- package/themes/bootstrap/scss/mixins/_grid.scss +151 -0
- package/themes/bootstrap/scss/mixins/_image.scss +16 -0
- package/themes/bootstrap/scss/mixins/_list-group.scss +26 -0
- package/themes/bootstrap/scss/mixins/_lists.scss +7 -0
- package/themes/bootstrap/scss/mixins/_pagination.scss +10 -0
- package/themes/bootstrap/scss/mixins/_reset-text.scss +17 -0
- package/themes/bootstrap/scss/mixins/_resize.scss +6 -0
- package/themes/bootstrap/scss/mixins/_table-variants.scss +24 -0
- package/themes/bootstrap/scss/mixins/_text-truncate.scss +8 -0
- package/themes/bootstrap/scss/mixins/_transition.scss +26 -0
- package/themes/bootstrap/scss/mixins/_utilities.scss +97 -0
- package/themes/bootstrap/scss/mixins/_visually-hidden.scss +38 -0
- package/themes/bootstrap/scss/tests/jasmine.js +16 -0
- package/themes/bootstrap/scss/tests/mixins/_auto-import-of-variables-dark.test.scss +7 -0
- package/themes/bootstrap/scss/tests/mixins/_color-modes.test.scss +69 -0
- package/themes/bootstrap/scss/tests/mixins/_media-query-color-mode-full.test.scss +8 -0
- package/themes/bootstrap/scss/tests/mixins/_utilities.test.scss +393 -0
- package/themes/bootstrap/scss/tests/sass-true/register.js +14 -0
- package/themes/bootstrap/scss/tests/sass-true/runner.js +17 -0
- package/themes/bootstrap/scss/tests/utilities/_api.test.scss +75 -0
- package/themes/bootstrap/scss/utilities/_api.scss +47 -0
- package/themes/bootstrap/scss/vendor/_rfs.scss +348 -0
- package/themes/classy/README.md +89 -0
- package/themes/classy/_config.scss +245 -0
- package/themes/classy/_theme.js +31 -0
- package/themes/classy/_theme.scss +57 -0
- package/themes/classy/css/app/_panels.scss +183 -0
- package/themes/classy/css/base/_fonts.scss +79 -0
- package/themes/classy/css/base/_no-raise.scss +49 -0
- package/themes/classy/css/base/_root.scss +113 -0
- package/themes/classy/css/base/_typography.scss +154 -0
- package/themes/classy/css/base/_utilities.scss +284 -0
- package/themes/classy/css/components/_alerts.scss +51 -0
- package/themes/classy/css/components/_badges.scss +46 -0
- package/themes/classy/css/components/_buttons.scss +175 -0
- package/themes/classy/css/components/_cards.scss +41 -0
- package/themes/classy/css/components/_dropdowns.scss +48 -0
- package/themes/classy/css/components/_forms.scss +171 -0
- package/themes/classy/css/components/_receipt.scss +45 -0
- package/themes/classy/css/layout/_footer.scss +298 -0
- package/themes/classy/css/layout/_general.scss +209 -0
- package/themes/classy/css/layout/_nav.scss +154 -0
- package/themes/classy/css/layout/_shell.scss +458 -0
- package/themes/classy/css/marketing/_bento.scss +238 -0
- package/themes/classy/css/marketing/_content.scss +1328 -0
- package/themes/classy/css/marketing/_downloads.scss +246 -0
- package/themes/classy/css/marketing/_hero.scss +311 -0
- package/themes/classy/css/marketing/_sections.scss +649 -0
- package/themes/classy/css/pages/404/index.scss +67 -0
- package/themes/classy/css/pages/_auth.scss +235 -0
- package/themes/classy/css/pages/admin/firebase/index.scss +22 -0
- package/themes/classy/css/pages/blog/[slug].scss +56 -0
- package/themes/classy/css/pages/cookies.scss +2 -0
- package/themes/classy/css/pages/dashboard/account/index.scss +31 -0
- package/themes/classy/css/pages/feedback/index.scss +39 -0
- package/themes/classy/css/pages/legal/_document.scss +192 -0
- package/themes/classy/css/pages/payment/checkout/index.scss +585 -0
- package/themes/classy/css/pages/payment/confirmation/index.scss +9 -0
- package/themes/classy/css/pages/privacy.scss +2 -0
- package/themes/classy/css/pages/status/index.scss +164 -0
- package/themes/classy/css/pages/terms.scss +2 -0
- package/themes/classy/css/pages/updates/index.scss +128 -0
- package/themes/classy/fonts/inter-italic-latin-ext.woff2 +0 -0
- package/themes/classy/fonts/inter-italic-latin.woff2 +0 -0
- package/themes/classy/fonts/inter-normal-latin-ext.woff2 +0 -0
- package/themes/classy/fonts/inter-normal-latin.woff2 +0 -0
- package/themes/classy/fonts/newsreader-italic-latin-ext.woff2 +0 -0
- package/themes/classy/fonts/newsreader-italic-latin.woff2 +0 -0
- package/themes/classy/fonts/newsreader-normal-latin-ext.woff2 +0 -0
- package/themes/classy/fonts/newsreader-normal-latin.woff2 +0 -0
- package/themes/classy/js/hero-demo-form.js +56 -0
- package/themes/neobrutalism/README.md +118 -0
- package/themes/neobrutalism/_config.scss +139 -0
- package/themes/neobrutalism/_layouts/frontend/core/base.html +30 -0
- package/themes/neobrutalism/_layouts/frontend/pages/index.html +275 -0
- package/themes/neobrutalism/_theme.js +24 -0
- package/themes/neobrutalism/_theme.scss +61 -0
- package/themes/neobrutalism/css/base/_mixins.scss +46 -0
- package/themes/neobrutalism/css/base/_root.scss +169 -0
- package/themes/neobrutalism/css/base/_typography.scss +61 -0
- package/themes/neobrutalism/css/base/_utilities.scss +89 -0
- package/themes/neobrutalism/css/components/_billing-toggle.scss +74 -0
- package/themes/neobrutalism/css/components/_buttons.scss +148 -0
- package/themes/neobrutalism/css/components/_cards.scss +47 -0
- package/themes/neobrutalism/css/components/_forms.scss +88 -0
- package/themes/neobrutalism/css/components/_marketing.scss +244 -0
- package/themes/neobrutalism/css/layout/_general.scss +213 -0
- package/themes/neobrutalism/css/layout/_navigation.scss +171 -0
- package/themes/neobrutalism/css/pages/index.scss +203 -0
- package/themes/neobrutalism/css/pages/pricing/index.scss +58 -0
- package/themes/neobrutalism/css/pages/test/libraries/layers/index.scss +7 -0
- package/themes/neobrutalism/js/pages/test/libraries/layers/index.js +9 -0
- package/themes/newsflash/README.md +117 -0
- package/themes/newsflash/_components/heading/lede/component.html +14 -0
- package/themes/newsflash/_components/heading/lede/component.json5 +23 -0
- package/themes/newsflash/_components/heading/rule-head/component.html +17 -0
- package/themes/newsflash/_components/heading/rule-head/component.json5 +23 -0
- package/themes/newsflash/_components/news/byline/component.html +12 -0
- package/themes/newsflash/_components/news/byline/component.json5 +18 -0
- package/themes/newsflash/_components/news/story-card/component.html +25 -0
- package/themes/newsflash/_components/news/story-card/component.json5 +21 -0
- package/themes/newsflash/_config.scss +147 -0
- package/themes/newsflash/_layouts/frontend/core/base.html +51 -0
- package/themes/newsflash/_layouts/frontend/pages/blog/index.html +299 -0
- package/themes/newsflash/_layouts/frontend/pages/blog/post.html +235 -0
- package/themes/newsflash/_layouts/frontend/pages/index.html +328 -0
- package/themes/newsflash/_sections/marketing/desks/section.html +39 -0
- package/themes/newsflash/_sections/marketing/desks/section.json5 +49 -0
- package/themes/newsflash/_sections/marketing/newsletter-cta/section.html +103 -0
- package/themes/newsflash/_sections/marketing/newsletter-cta/section.json5 +50 -0
- package/themes/newsflash/_sections/marketing/rundown/section.html +28 -0
- package/themes/newsflash/_sections/marketing/rundown/section.json5 +40 -0
- package/themes/newsflash/_theme.js +24 -0
- package/themes/newsflash/_theme.scss +70 -0
- package/themes/newsflash/css/base/_fonts.scss +80 -0
- package/themes/newsflash/css/base/_mixins.scss +51 -0
- package/themes/newsflash/css/base/_root.scss +257 -0
- package/themes/newsflash/css/base/_typography.scss +49 -0
- package/themes/newsflash/css/base/_utilities.scss +122 -0
- package/themes/newsflash/css/components/_badges.scss +65 -0
- package/themes/newsflash/css/components/_billing-toggle.scss +61 -0
- package/themes/newsflash/css/components/_buttons.scss +139 -0
- package/themes/newsflash/css/components/_cards.scss +47 -0
- package/themes/newsflash/css/components/_editorial.scss +173 -0
- package/themes/newsflash/css/components/_forms.scss +75 -0
- package/themes/newsflash/css/components/_infinite-scroll.scss +102 -0
- package/themes/newsflash/css/components/_panels.scss +156 -0
- package/themes/newsflash/css/components/_ticker.scss +67 -0
- package/themes/newsflash/css/layout/_general.scss +330 -0
- package/themes/newsflash/css/layout/_navigation.scss +168 -0
- package/themes/newsflash/css/pages/404/index.scss +79 -0
- package/themes/newsflash/css/pages/blog/[slug].scss +186 -0
- package/themes/newsflash/css/pages/blog/index.scss +17 -0
- package/themes/newsflash/css/pages/index.scss +157 -0
- package/themes/newsflash/css/pages/pricing/index.scss +55 -0
- package/themes/newsflash/css/pages/test/libraries/layers/index.scss +7 -0
- package/themes/newsflash/fonts/fraunces-italic-latin-ext.woff2 +0 -0
- package/themes/newsflash/fonts/fraunces-italic-latin.woff2 +0 -0
- package/themes/newsflash/fonts/fraunces-normal-latin-ext.woff2 +0 -0
- package/themes/newsflash/fonts/fraunces-normal-latin.woff2 +0 -0
- package/themes/newsflash/fonts/schibsted-grotesk-italic-latin-ext.woff2 +0 -0
- package/themes/newsflash/fonts/schibsted-grotesk-italic-latin.woff2 +0 -0
- package/themes/newsflash/fonts/schibsted-grotesk-normal-latin-ext.woff2 +0 -0
- package/themes/newsflash/fonts/schibsted-grotesk-normal-latin.woff2 +0 -0
- package/themes/newsflash/js/pages/blog/[slug].js +29 -0
- package/themes/newsflash/js/pages/test/libraries/layers/index.js +9 -0
- package/translations/es/pages/404.json +86 -0
- package/translations/es/pages/account.json +36 -0
- package/translations/es/pages/app.json +44 -0
- package/translations/es/pages/cancel.json +36 -0
- package/translations/es/pages/change-password.json +36 -0
- package/translations/es/pages/connections/callback.json +41 -0
- package/translations/es/pages/dashboard/account.json +475 -0
- package/translations/es/pages/dashboard.json +36 -0
- package/translations/es/pages/forgot.json +36 -0
- package/translations/es/pages/join.json +36 -0
- package/translations/es/pages/login.json +36 -0
- package/translations/es/pages/payment/checkout.json +83 -0
- package/translations/es/pages/payment/confirmation.json +62 -0
- package/translations/es/pages/portal/email-preferences.json +46 -0
- package/translations/es/pages/recover.json +36 -0
- package/translations/es/pages/refund.json +36 -0
- package/translations/es/pages/register.json +36 -0
- package/translations/es/pages/reset-password.json +36 -0
- package/translations/es/pages/reset.json +42 -0
- package/translations/es/pages/signin.json +45 -0
- package/translations/es/pages/signup.json +60 -0
- package/translations/es/pages/token.json +39 -0
- package/translations/fa/pages/404.json +86 -0
- package/translations/fa/pages/account.json +36 -0
- package/translations/fa/pages/app.json +44 -0
- package/translations/fa/pages/cancel.json +36 -0
- package/translations/fa/pages/change-password.json +36 -0
- package/translations/fa/pages/connections/callback.json +41 -0
- package/translations/fa/pages/dashboard/account.json +475 -0
- package/translations/fa/pages/dashboard.json +36 -0
- package/translations/fa/pages/forgot.json +36 -0
- package/translations/fa/pages/join.json +36 -0
- package/translations/fa/pages/login.json +36 -0
- package/translations/fa/pages/payment/checkout.json +83 -0
- package/translations/fa/pages/payment/confirmation.json +62 -0
- package/translations/fa/pages/portal/email-preferences.json +46 -0
- package/translations/fa/pages/recover.json +36 -0
- package/translations/fa/pages/refund.json +36 -0
- package/translations/fa/pages/register.json +36 -0
- package/translations/fa/pages/reset-password.json +36 -0
- package/translations/fa/pages/reset.json +42 -0
- package/translations/fa/pages/signin.json +45 -0
- package/translations/fa/pages/signup.json +60 -0
- package/translations/fa/pages/token.json +39 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega install [type]` — `i local` links every declared @omega.js/* dep
|
|
3
|
+
* from the local Omega monorepo (idempotent); `i live`/`prod` restores
|
|
4
|
+
* registry specs TREE-WIDE (the publish-day inverse: every file: spec flips
|
|
5
|
+
* to the exact <linked version> and one install re-resolves from the registry).
|
|
6
|
+
*/
|
|
7
|
+
const Logger = require('../vendor/devkit/logger.js');
|
|
8
|
+
const local = require('../vendor/devkit/local.js');
|
|
9
|
+
|
|
10
|
+
const logger = new Logger('install');
|
|
11
|
+
|
|
12
|
+
module.exports = async function (options) {
|
|
13
|
+
const type = options._[1] || 'prod';
|
|
14
|
+
|
|
15
|
+
if (['dev', 'd', 'development', 'local', 'l'].includes(type)) {
|
|
16
|
+
logger.log('Installing development (local Omega monorepo)...');
|
|
17
|
+
await local.linkLocalPackages({
|
|
18
|
+
dir: process.cwd(),
|
|
19
|
+
monorepoRoot: local.resolveMonorepoRoot(),
|
|
20
|
+
logger,
|
|
21
|
+
});
|
|
22
|
+
return logger.log('Development installation complete.');
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
logger.log('Installing production (restoring registry specs tree-wide)...');
|
|
26
|
+
const actions = await local.restoreRegistrySpecs({ dir: process.cwd(), logger });
|
|
27
|
+
const flipped = actions.filter((action) => action.action === 'flip').length;
|
|
28
|
+
logger.log(flipped > 0
|
|
29
|
+
? `Production installation complete (${flipped} spec(s) restored to registry ranges).`
|
|
30
|
+
: 'Already on registry specs — nothing to flip.');
|
|
31
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* deploy-precheck — the NETWORK half `omega setup` used to own
|
|
3
|
+
* ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)).
|
|
4
|
+
*
|
|
5
|
+
* Setup's local half now rides every verb (ensure-target.js); what needs the
|
|
6
|
+
* network rides the ONE verb that needs the remote side right — `omega deploy`
|
|
7
|
+
* — as a precheck before the dispatch. For web that is one step: publish the
|
|
8
|
+
* .env cascade's keys as repo Actions secrets, which the scaffolded workflow's
|
|
9
|
+
* generated env block consumes.
|
|
10
|
+
*
|
|
11
|
+
* `--no-secrets` opts out — the same opt-out name on web, desktop and
|
|
12
|
+
* extension (parity; desktop's old `--quick` is gone).
|
|
13
|
+
*
|
|
14
|
+
* The RUNNER is `@omega.js/devkit/deploy-precheck` (one copy for every
|
|
15
|
+
* framework); this file is web's STEPS.
|
|
16
|
+
*/
|
|
17
|
+
const { runDeployPrecheck } = require('../../vendor/devkit/deploy-precheck.js');
|
|
18
|
+
const { publishEnvSecrets } = require('../../github-secrets.js');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The default steps, in order. Named so a test can hand its own recorder in
|
|
22
|
+
* and read back exactly which ones ran.
|
|
23
|
+
*/
|
|
24
|
+
const STEPS = [
|
|
25
|
+
{
|
|
26
|
+
name: 'push-secrets',
|
|
27
|
+
run: ({ projectDir, log, warn }) => publishEnvSecrets({ targetDir: projectDir, logger: { log, warn, error: warn } }),
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @param {object} input
|
|
33
|
+
* @param {string} input.projectDir - The target root.
|
|
34
|
+
* @param {object} input.options - The parsed CLI options (`secrets: false` = opted out).
|
|
35
|
+
* @param {object} input.logger - `{ log, warn, error }`.
|
|
36
|
+
* @param {Array} [input.steps] - Injectable step list (tests).
|
|
37
|
+
* @returns {Promise<{ skipped: string }|{ ran: string[] }>} The steps that ran, or the opt-out marker.
|
|
38
|
+
*/
|
|
39
|
+
function deployPrecheck({ projectDir, options, logger, steps }) {
|
|
40
|
+
return runDeployPrecheck({ projectDir, options, logger, steps: steps || STEPS });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
module.exports = { deployPrecheck, STEPS };
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ensure-target — the LOCAL, idempotent scaffold every verb runs
|
|
3
|
+
* ([#675](https://github.com/Omega-JS-Stack/omega/issues/675)).
|
|
4
|
+
*
|
|
5
|
+
* `omega setup` used to own this half and nothing ran it for you, so a target
|
|
6
|
+
* drifted until someone remembered the command per target. It is retired: the
|
|
7
|
+
* "write it if missing" steps live here and dev/build/test/deploy each call it
|
|
8
|
+
* first, so every verb heals the tree on the way past.
|
|
9
|
+
*
|
|
10
|
+
* What it guarantees:
|
|
11
|
+
*
|
|
12
|
+
* node version a WARNING when the shell is older than the standard
|
|
13
|
+
* scaffold defaults the framework tree (marker merges for
|
|
14
|
+
* .gitignore/.env/AGENTS.md, omega.json5 seed, CI workflow)
|
|
15
|
+
* package.json the omega verb scripts + the engines.node floor
|
|
16
|
+
*
|
|
17
|
+
* Everything here is copy-if-missing, marker-merge or write-if-changed: a
|
|
18
|
+
* consumer file is never clobbered, and a run that changes nothing writes
|
|
19
|
+
* nothing. Anything that needs the network is NOT here — the secret
|
|
20
|
+
* publication `omega setup` also carried is a deploy precheck (deploy-precheck.js).
|
|
21
|
+
*/
|
|
22
|
+
const path = require('node:path');
|
|
23
|
+
const jetpack = require('fs-jetpack');
|
|
24
|
+
const { scaffoldDefaults, NODE_VERSION } = require('../../scaffold.js');
|
|
25
|
+
const { assertScaffoldable } = require('../../vendor/devkit/scaffold-guard.js');
|
|
26
|
+
|
|
27
|
+
const frameworkPackage = require('../../../package.json');
|
|
28
|
+
|
|
29
|
+
// package.json scripts every consumer gets. Declared in the framework
|
|
30
|
+
// manifest's `projectScripts` (sibling parity: backend/desktop/extension all
|
|
31
|
+
// declare theirs there, and the manager's workspace walk reads it to heal a
|
|
32
|
+
// fresh target before any verb has run). No `setup` entry: the verbs run
|
|
33
|
+
// ensureTarget themselves (#675).
|
|
34
|
+
const PROJECT_SCRIPTS = frameworkPackage.projectScripts;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Sync the consumer manifest's omega scripts + engines floor. A manifest that
|
|
38
|
+
* already says all of it is not rewritten (#590 parity: identical content is
|
|
39
|
+
* not a write).
|
|
40
|
+
*
|
|
41
|
+
* @param {string} projectDir - The target root.
|
|
42
|
+
* @param {{ changed: string[] }} result - Collector.
|
|
43
|
+
*/
|
|
44
|
+
function scaffoldPackageJson(projectDir, result) {
|
|
45
|
+
const manifestPath = path.join(projectDir, 'package.json');
|
|
46
|
+
const exists = jetpack.exists(manifestPath);
|
|
47
|
+
const manifest = exists
|
|
48
|
+
? JSON.parse(jetpack.read(manifestPath))
|
|
49
|
+
: { name: path.basename(projectDir), version: '1.0.0', private: true };
|
|
50
|
+
|
|
51
|
+
const before = JSON.stringify(manifest);
|
|
52
|
+
manifest.scripts = { ...manifest.scripts, ...PROJECT_SCRIPTS };
|
|
53
|
+
manifest.engines = { ...manifest.engines, node: `>=${NODE_VERSION}` };
|
|
54
|
+
|
|
55
|
+
if (JSON.stringify(manifest) === before && exists) return;
|
|
56
|
+
|
|
57
|
+
jetpack.write(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`);
|
|
58
|
+
result.changed.push('package.json (scripts + engines.node)');
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Make the target whole — idempotent, offline, and quiet when there is
|
|
63
|
+
* nothing to do.
|
|
64
|
+
*
|
|
65
|
+
* @param {object} [options]
|
|
66
|
+
* @param {string} [options.projectDir] - The target root (default: cwd).
|
|
67
|
+
* @param {function} [options.log] - Line logger (silent by default).
|
|
68
|
+
* @param {function} [options.warn] - Warning logger (silent by default).
|
|
69
|
+
* @returns {{ written: string[], merged: string[], changed: string[] }}
|
|
70
|
+
* Target-relative paths per outcome — empty on a no-op run.
|
|
71
|
+
*/
|
|
72
|
+
function ensureTarget(options) {
|
|
73
|
+
options = options || {};
|
|
74
|
+
const projectDir = options.projectDir || process.cwd();
|
|
75
|
+
const log = options.log || (() => {});
|
|
76
|
+
const warn = options.warn || (() => {});
|
|
77
|
+
const result = { written: [], merged: [], changed: [] };
|
|
78
|
+
|
|
79
|
+
// The framework's own tree is not a consumer target. Running the framework's
|
|
80
|
+
// suite from packages/web puts the framework at the cwd, and a verb that
|
|
81
|
+
// scaffolds unconditionally would scatter the consumer defaults through the
|
|
82
|
+
// package. Refuse, quietly: this is a normal state, not a broken one.
|
|
83
|
+
if (jetpack.read(path.join(projectDir, 'package.json'), 'json')?.name === frameworkPackage.name) {
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// A workspace ROOT is not a target either — and unlike the case above, landing
|
|
88
|
+
// there is an accident (a verb run from the wrong cwd), so it fails LOUD (#699).
|
|
89
|
+
assertScaffoldable(projectDir);
|
|
90
|
+
|
|
91
|
+
// ---- Node version check (warn only — the .nvmrc scaffolded below is the pin)
|
|
92
|
+
const nodeMajor = Number(process.versions.node.split('.')[0]);
|
|
93
|
+
if (nodeMajor < Number(NODE_VERSION)) {
|
|
94
|
+
warn(`Node ${process.versions.node} is older than the framework standard (v${NODE_VERSION}) — update .nvmrc/nvm`);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// ---- Scaffold defaults (copy-if-missing + marker merges)
|
|
98
|
+
const scaffolded = scaffoldDefaults({
|
|
99
|
+
outputDir: projectDir,
|
|
100
|
+
logger: { log: () => {}, warn: () => {}, error: () => {} },
|
|
101
|
+
});
|
|
102
|
+
result.written.push(...scaffolded.written);
|
|
103
|
+
result.merged.push(...scaffolded.merged);
|
|
104
|
+
|
|
105
|
+
// ---- Sync package.json scripts
|
|
106
|
+
scaffoldPackageJson(projectDir, result);
|
|
107
|
+
|
|
108
|
+
for (const [label, files] of [['Created', result.written], ['Merged', result.merged], ['Synced', result.changed]]) {
|
|
109
|
+
if (files.length > 0) log(`${label} ${files.join(', ')}`);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
module.exports = { ensureTarget, PROJECT_SCRIPTS };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega migrate` — convert a UJM (Jekyll) consumer to @omega.js/web in place:
|
|
3
|
+
* legacy configs → config/omega.json5, the codemod rule tables over src/**
|
|
4
|
+
* templates and consumer JS, the liquid-lint scan, legacy-file removal
|
|
5
|
+
* (Gemfile & co), the legacy test-harness report, and the undeclared-dependency
|
|
6
|
+
* report (#600).
|
|
7
|
+
*
|
|
8
|
+
* `omega migrate --check` runs the full pipeline in memory and prints the
|
|
9
|
+
* report without writing anything — the pre-flight for Phase-4 site waves.
|
|
10
|
+
*/
|
|
11
|
+
const Logger = require('../vendor/devkit/logger.js');
|
|
12
|
+
const { runMigration } = require('../migrate/index.js');
|
|
13
|
+
|
|
14
|
+
const logger = new Logger('migrate');
|
|
15
|
+
|
|
16
|
+
module.exports = async function (options) {
|
|
17
|
+
const check = Boolean(options.check || options['dry-run']);
|
|
18
|
+
const root = process.cwd();
|
|
19
|
+
|
|
20
|
+
logger.log(`${check ? 'Checking' : 'Migrating'} ${root}`);
|
|
21
|
+
const report = runMigration(root, { check });
|
|
22
|
+
|
|
23
|
+
// ---- config
|
|
24
|
+
if (report.config && report.config.skipped) {
|
|
25
|
+
logger.log(`Config: already converted (${report.config.path}), skipping the conversion step`);
|
|
26
|
+
} else if (report.config) {
|
|
27
|
+
const verb = check ? 'would write' : 'wrote';
|
|
28
|
+
logger.log(`Config: ${verb} ${report.config.path} (from ${report.config.sources.join(' + ')})`);
|
|
29
|
+
for (const note of report.config.notes) logger.warn(` note: ${note}`);
|
|
30
|
+
for (const error of report.config.validation || []) logger.error(` validation: ${error}`);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// ---- codemod
|
|
34
|
+
const { files, totalEdits } = report.codemod;
|
|
35
|
+
logger.log(`Codemod: ${totalEdits} edit${totalEdits === 1 ? '' : 's'} across ${files.length} file${files.length === 1 ? '' : 's'}${check ? ' (preview)' : ''}`);
|
|
36
|
+
for (const file of files) {
|
|
37
|
+
const byRule = {};
|
|
38
|
+
for (const edit of file.edits) byRule[edit.rule] = (byRule[edit.rule] || 0) + 1;
|
|
39
|
+
const summary = Object.entries(byRule).map(([rule, count]) => `${rule}×${count}`).join(', ');
|
|
40
|
+
logger.log(` ${file.path}: ${summary}`);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// ---- lint findings
|
|
44
|
+
const errors = report.lint.filter((finding) => finding.severity === 'error');
|
|
45
|
+
const warnings = report.lint.filter((finding) => finding.severity !== 'error');
|
|
46
|
+
if (report.lint.length > 0) {
|
|
47
|
+
logger.log(`Lint: ${errors.length} error${errors.length === 1 ? '' : 's'}, ${warnings.length} warning${warnings.length === 1 ? '' : 's'}`);
|
|
48
|
+
for (const finding of errors) logger.error(` ${finding.file}:${finding.line} — ${finding.message}`);
|
|
49
|
+
for (const finding of warnings) logger.warn(` ${finding.file}:${finding.line} — ${finding.message}`);
|
|
50
|
+
} else {
|
|
51
|
+
logger.log('Lint: clean');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ---- legacy test harness (a silent `pass 0` otherwise)
|
|
55
|
+
if (report.legacyTests.length > 0) {
|
|
56
|
+
const count = report.legacyTests.length;
|
|
57
|
+
logger.warn(`Tests: ${count} legacy test file${count === 1 ? '' : 's'} will not be discovered — \`omega test\` runs \`node --test 'test/**/*.test.js'\`, which matches no \`test/<layer>/<name>.js\` and reports a green pass 0. Rename to \`*.test.js\` and port to node:test.`);
|
|
58
|
+
for (const rel of report.legacyTests) logger.warn(` ${rel}`);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// ---- dependency resolution (#600): a bare require only the legacy FLAT
|
|
62
|
+
// install answered. Lazy ones load fine and 500 on the first real call.
|
|
63
|
+
if (report.bareRequires.length > 0) {
|
|
64
|
+
const count = report.bareRequires.length;
|
|
65
|
+
logger.warn(`Dependencies: ${count} bare require${count === 1 ? '' : 's'} of a package this project does not declare — the legacy flat install resolved them, an OMEGA install resolves them only by hoisting:`);
|
|
66
|
+
for (const entry of report.bareRequires) logger.warn(` ${entry.file}:${entry.line} — \`${entry.module}\`: ${entry.fix}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ---- removed files + fatal problems
|
|
70
|
+
for (const rel of report.removed) logger.log(`${check ? 'Would remove' : 'Removed'}: ${rel}`);
|
|
71
|
+
for (const error of report.errors) logger.error(error);
|
|
72
|
+
|
|
73
|
+
if (report.errors.length > 0) {
|
|
74
|
+
process.exitCode = 1;
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (!check) {
|
|
79
|
+
logger.log('');
|
|
80
|
+
logger.log('Next steps:');
|
|
81
|
+
logger.log(' 1. Review the lint findings above (errors need manual ports)');
|
|
82
|
+
logger.log(' 2. npx omega build — scaffolds project files + syncs scripts, then builds');
|
|
83
|
+
logger.log(' 3. npm run build — verify the site builds');
|
|
84
|
+
logger.log(' 4. Remove _site/ and any leftover Jekyll artifacts');
|
|
85
|
+
}
|
|
86
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega purge` — purge the site's Cloudflare zone cache (purge_everything).
|
|
3
|
+
* The UJM `uj cloudflare-purge` successor, hitting the Cloudflare API
|
|
4
|
+
* directly with the brand's own CLOUDFLARE_TOKEN (env cascade). Also runs
|
|
5
|
+
* automatically after `omega deploy --direct`, and the scaffolded CI
|
|
6
|
+
* workflow runs it after the gh-pages publish when the repo has the token
|
|
7
|
+
* secret. `--dry-run` resolves the zone and prints the plan.
|
|
8
|
+
*/
|
|
9
|
+
const Logger = require('../vendor/devkit/logger.js');
|
|
10
|
+
const { consumerPaths, loadSiteData } = require('../consumer.js');
|
|
11
|
+
const { purgeZoneCache } = require('../purge.js');
|
|
12
|
+
|
|
13
|
+
const logger = new Logger('purge');
|
|
14
|
+
|
|
15
|
+
module.exports = async function (options) {
|
|
16
|
+
options = options || {};
|
|
17
|
+
const paths = consumerPaths();
|
|
18
|
+
const config = loadSiteData(paths.root);
|
|
19
|
+
|
|
20
|
+
const result = await purgeZoneCache({ config, dryRun: Boolean(options.dryRun) });
|
|
21
|
+
|
|
22
|
+
if (result.status === 'skipped') {
|
|
23
|
+
logger.log(`Purge skipped — ${result.reason}`);
|
|
24
|
+
} else if (result.status === 'planned') {
|
|
25
|
+
logger.log(`[DRY RUN] Would purge Cloudflare zone ${result.zoneName || result.zone} (purge_everything)`);
|
|
26
|
+
} else {
|
|
27
|
+
logger.log(`Cloudflare cache purged (zone ${result.zoneName || result.zone})`);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega test` — C5-scoped test entry:
|
|
3
|
+
* bare / `project:` / `brand:` → production build + smoke verification,
|
|
4
|
+
* then the consumer's own suite (node --test test/)
|
|
5
|
+
* `framework:` / `omega:` / `web:` → @omega.js/web's own suite
|
|
6
|
+
* `full:` → both
|
|
7
|
+
*
|
|
8
|
+
* Smoke checks: pages rendered, 404.html (the guaranteed default page —
|
|
9
|
+
* consumers own their home page) carries the theme root, the manifest's main
|
|
10
|
+
* bundle exists on disk, every internal link the built pages emit resolves to
|
|
11
|
+
* something the same build wrote (#430), and the four built-output audit checks
|
|
12
|
+
* pass — page meta, anchor fragments, image alt, sitemap orphans (#468). The
|
|
13
|
+
* deeper 3-layer test framework (build/page/boot vs a real browser) is a later
|
|
14
|
+
* devkit adoption step.
|
|
15
|
+
*/
|
|
16
|
+
const fs = require('node:fs');
|
|
17
|
+
const path = require('node:path');
|
|
18
|
+
const { execSync } = require('node:child_process');
|
|
19
|
+
const Logger = require('../vendor/devkit/logger.js');
|
|
20
|
+
const attachLogFile = require('../vendor/devkit/attach-log-file.js');
|
|
21
|
+
const { parseTestScope, isPathTargeted, noMatchMessage, noMatchExitCode, FRAMEWORK_IDS } = require('../vendor/devkit/test/scope.js');
|
|
22
|
+
const { ensureTarget } = require('./lib/ensure-target.js');
|
|
23
|
+
const { consumerPaths } = require('../consumer.js');
|
|
24
|
+
const { checkDistLinks, loadExceptions, loadLinkExceptions, EXCEPTIONS_FILE } = require('../link-resolver.js');
|
|
25
|
+
const { auditDist } = require('../dist-audit.js');
|
|
26
|
+
|
|
27
|
+
const logger = new Logger('test');
|
|
28
|
+
|
|
29
|
+
module.exports = async function (options) {
|
|
30
|
+
const paths = consumerPaths();
|
|
31
|
+
|
|
32
|
+
// Tee the whole run to <targetRoot>/logs/test.log (#197) — the file to grep
|
|
33
|
+
// after a failure instead of scrolling scrollback.
|
|
34
|
+
attachLogFile(path.join(paths.root, 'logs', 'test.log'));
|
|
35
|
+
|
|
36
|
+
// The local half of the retired `omega setup` (#675) — idempotent, offline,
|
|
37
|
+
// and quiet on a converged target.
|
|
38
|
+
ensureTarget({ projectDir: paths.root, log: (line) => logger.log(line), warn: (line) => logger.warn(line) });
|
|
39
|
+
|
|
40
|
+
// ---- C5 scope (bare = project only; the framework suite is explicit)
|
|
41
|
+
const targets = (options._ || []).slice(1);
|
|
42
|
+
const scope = parseTestScope(targets, {
|
|
43
|
+
frameworkAliases: FRAMEWORK_IDS['@omega.js/web'],
|
|
44
|
+
});
|
|
45
|
+
for (const bad of scope.invalid) {
|
|
46
|
+
logger.warn(`Unknown test scope prefix ignored: ${bad}`);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// A target that names a path and selects nothing is a typo, or a suite
|
|
50
|
+
// renamed out from under it: `node --test` treats a glob that matches
|
|
51
|
+
// nothing as a no-op and exits 0, so the run was silently green
|
|
52
|
+
// ([#814](https://github.com/Omega-JS-Stack/omega/issues/814)). Ahead of the
|
|
53
|
+
// production build below, so a typo costs a second, not a whole build.
|
|
54
|
+
if (isPathTargeted(scope) && selectedTestFiles(scope, {
|
|
55
|
+
frameworkRoot: path.resolve(__dirname, '../..'),
|
|
56
|
+
projectRoot: paths.root,
|
|
57
|
+
}).length === 0) {
|
|
58
|
+
logger.error(noMatchMessage(targets.join(' ')));
|
|
59
|
+
// Standalone that is 1. Inside a brand-root fan-out the manager forwarded
|
|
60
|
+
// ONE target to every target, so a distinct code lets it count this as a
|
|
61
|
+
// miss rather than a failure (#814).
|
|
62
|
+
process.exitCode = noMatchExitCode();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// ---- Framework suite (framework:/omega:/web:/full:)
|
|
67
|
+
if (scope.sources.includes('framework')) {
|
|
68
|
+
const frameworkRoot = path.resolve(__dirname, '../..');
|
|
69
|
+
for (const { flags, target } of frameworkTestRuns(scope.filters.framework)) {
|
|
70
|
+
logger.log(`Running @omega.js/web framework tests (node --test ${flags}${target})`);
|
|
71
|
+
execSync(`node --test ${flags}${target}`, { stdio: 'inherit', cwd: frameworkRoot });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (!scope.sources.includes('project')) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// ---- Production build (logFile: false — this run already owns logs/test.log)
|
|
80
|
+
const result = await require('./build.js')({ ...options, logFile: false });
|
|
81
|
+
|
|
82
|
+
// ---- Smoke checks over the output
|
|
83
|
+
const failures = [];
|
|
84
|
+
|
|
85
|
+
if (result.htmlCount < 1) {
|
|
86
|
+
failures.push('build produced no HTML pages');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const smokePage = path.join(paths.out, '404.html');
|
|
90
|
+
if (!fs.existsSync(smokePage)) {
|
|
91
|
+
failures.push('dist/404.html is missing (default pages did not render)');
|
|
92
|
+
} else if (!fs.readFileSync(smokePage, 'utf8').includes('data-theme-id')) {
|
|
93
|
+
failures.push('dist/404.html did not render through the theme root layout');
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const mainBundle = result.manifest.js.main && path.join(paths.out, result.manifest.js.main.slice(1));
|
|
97
|
+
if (!mainBundle || !fs.existsSync(mainBundle)) {
|
|
98
|
+
failures.push('manifest js.main bundle is missing from dist/');
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
failures.push(...linkCheckFailures({ distDir: paths.out, targetRoot: paths.root }));
|
|
102
|
+
failures.push(...auditCheckFailures({ distDir: paths.out, targetRoot: paths.root }));
|
|
103
|
+
|
|
104
|
+
if (failures.length) {
|
|
105
|
+
throw new Error(`Smoke checks failed:\n - ${failures.join('\n - ')}`);
|
|
106
|
+
}
|
|
107
|
+
logger.log(`Smoke checks passed (${result.htmlCount} pages, every internal link resolves, every page audits clean)`);
|
|
108
|
+
|
|
109
|
+
// ---- Consumer test suite
|
|
110
|
+
const testDir = path.join(paths.root, 'test');
|
|
111
|
+
if (fs.existsSync(testDir)) {
|
|
112
|
+
const projectTests = projectTestArgs(scope.filters.project);
|
|
113
|
+
logger.log(`Running consumer tests (node --test ${projectTests})`);
|
|
114
|
+
execSync(`node --test ${projectTests}`, { stdio: 'inherit' });
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* The built-output link check as smoke-check lines ([#430](https://github.com/Omega-JS-Stack/omega/issues/430)).
|
|
120
|
+
*
|
|
121
|
+
* Both halves are failures: a link that resolves to nothing, and a declared
|
|
122
|
+
* exception that has started resolving (an exception standing over a fixed link
|
|
123
|
+
* masks the next regression at that URL, so the declared list has to shrink).
|
|
124
|
+
*
|
|
125
|
+
* @param {object} options
|
|
126
|
+
* @param {string} options.distDir - the build output
|
|
127
|
+
* @param {string} options.targetRoot - the consumer root (holds the exception list)
|
|
128
|
+
* @returns {string[]} one line per failure (empty = the check passed)
|
|
129
|
+
*/
|
|
130
|
+
function linkCheckFailures(options) {
|
|
131
|
+
const { offenders, stale } = checkDistLinks({
|
|
132
|
+
distDir: options.distDir,
|
|
133
|
+
exceptions: loadLinkExceptions(options.targetRoot),
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
return [
|
|
137
|
+
...offenders.map((entry) => `dead internal link: ${entry} — add the page or fix the link`),
|
|
138
|
+
...stale.map((entry) => `stale link exception in ${EXCEPTIONS_FILE}: ${entry} resolves now — drop it`),
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
module.exports.linkCheckFailures = linkCheckFailures;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* The built-output audit checks as smoke-check lines ([#468](https://github.com/Omega-JS-Stack/omega/issues/468)):
|
|
145
|
+
* page meta, anchor fragments, image `alt` and sitemap orphans, over ONE walk
|
|
146
|
+
* of the same dist the link check reads.
|
|
147
|
+
*
|
|
148
|
+
* Same two halves as the link check: a page that fails a check, and a declared
|
|
149
|
+
* exception that has started passing (an exception left standing masks the next
|
|
150
|
+
* regression at that page, so the declared list has to shrink).
|
|
151
|
+
*
|
|
152
|
+
* @param {object} options
|
|
153
|
+
* @param {string} options.distDir - the build output
|
|
154
|
+
* @param {string} options.targetRoot - the consumer root (holds the exception list)
|
|
155
|
+
* @returns {string[]} one line per failure (empty = the checks passed)
|
|
156
|
+
*/
|
|
157
|
+
function auditCheckFailures(options) {
|
|
158
|
+
const audit = auditDist({
|
|
159
|
+
distDir: options.distDir,
|
|
160
|
+
exceptions: loadExceptions(options.targetRoot),
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
return [
|
|
164
|
+
...audit.meta.offenders.map((entry) => `missing page meta: ${entry} — set it in the page's meta: frontmatter`),
|
|
165
|
+
...audit.fragments.offenders.map((entry) => `dead anchor fragment: ${entry} — add the id to the page or fix the link`),
|
|
166
|
+
...audit.alt.offenders.map((entry) => `image without alt: ${entry} — add alt (alt="" for a decorative image)`),
|
|
167
|
+
...audit.sitemap.offenders.map((entry) => `page missing from sitemap.xml: ${entry} — a page kept out of the sitemap must also be noindex (meta.index: false, one decision per #564), or declare 'sitemap: true' for it in config/link-exceptions.json5`),
|
|
168
|
+
...['meta', 'fragments', 'alt', 'sitemap'].flatMap((check) => audit[check].stale
|
|
169
|
+
.map((entry) => `stale ${check} exception in ${EXCEPTIONS_FILE}: ${entry} passes now — drop it`)),
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
module.exports.auditCheckFailures = auditCheckFailures;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* The framework suite's two phases — the SAME split the package's own
|
|
176
|
+
* `npm test` runs (#344). `test/watch/` holds the rebuild-watching suites and
|
|
177
|
+
* runs alone, one file at a time: nine sibling test processes churning temp
|
|
178
|
+
* trees starve a watcher's FSEvents stream, and a starved watcher reads as a
|
|
179
|
+
* rebuild that never landed. A filter is applied to both phases — a glob that
|
|
180
|
+
* matches nothing is a no-op run, so naming a suite in either dir works.
|
|
181
|
+
* @param {string[]} filters - `web:<filter>` scope filters (empty = the lot)
|
|
182
|
+
* @returns {Array<{flags: string, target: string}>} the runs, in order
|
|
183
|
+
*/
|
|
184
|
+
function frameworkTestRuns(filters) {
|
|
185
|
+
const target = (dir) => (filters.length
|
|
186
|
+
? filters.map((f) => `${dir}/${f.replace(/\.js$/, '')}*.test.js`).join(' ')
|
|
187
|
+
: `${dir}/*.test.js`);
|
|
188
|
+
|
|
189
|
+
return [
|
|
190
|
+
{ flags: '', target: target('test') },
|
|
191
|
+
{ flags: '--test-concurrency=1 ', target: target('test/watch') },
|
|
192
|
+
];
|
|
193
|
+
}
|
|
194
|
+
module.exports.frameworkTestRuns = frameworkTestRuns;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* The test files a scoped run selects, resolved through the SAME globs the
|
|
198
|
+
* runs above hand to `node --test` (both framework phases plus the project
|
|
199
|
+
* lane), so a target that matches nothing can be told from one that matches
|
|
200
|
+
* ([#814](https://github.com/Omega-JS-Stack/omega/issues/814)). A filter that
|
|
201
|
+
* misses one framework phase and hits the other is a hit: the union is what
|
|
202
|
+
* the run gets.
|
|
203
|
+
*
|
|
204
|
+
* @param {object} scope - A parseTestScope() result
|
|
205
|
+
* @param {object} roots
|
|
206
|
+
* @param {string} roots.frameworkRoot - @omega.js/web's own package root
|
|
207
|
+
* @param {string} roots.projectRoot - the consumer target root
|
|
208
|
+
* @returns {string[]} Matched paths, relative to the root each glob ran in
|
|
209
|
+
*/
|
|
210
|
+
function selectedTestFiles(scope, roots) {
|
|
211
|
+
const patterns = [];
|
|
212
|
+
|
|
213
|
+
if (scope.sources.includes('framework')) {
|
|
214
|
+
patterns.push(...frameworkTestRuns(scope.filters.framework)
|
|
215
|
+
.flatMap((run) => run.target.split(' '))
|
|
216
|
+
.map((pattern) => ({ cwd: roots.frameworkRoot, pattern })));
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (scope.sources.includes('project')) {
|
|
220
|
+
// The project default carries the quotes the shell needs; a glob call does not.
|
|
221
|
+
patterns.push(...projectTestArgs(scope.filters.project).replace(/'/g, '').split(' ')
|
|
222
|
+
.map((pattern) => ({ cwd: roots.projectRoot, pattern })));
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return patterns.flatMap(({ cwd, pattern }) => (fs.existsSync(cwd) ? fs.globSync(pattern, { cwd }) : []));
|
|
226
|
+
}
|
|
227
|
+
module.exports.selectedTestFiles = selectedTestFiles;
|
|
228
|
+
|
|
229
|
+
// The default is a QUOTED glob node expands itself: a bare `test/` positional
|
|
230
|
+
// is treated as a module on Node >= 22 (our engines floor), and macOS /bin/sh
|
|
231
|
+
// would half-expand `**` if the shell saw it (#114).
|
|
232
|
+
function projectTestArgs(filters) {
|
|
233
|
+
return filters.length
|
|
234
|
+
? filters.map((f) => `test/${f.replace(/\.js$/, '')}*`).join(' ')
|
|
235
|
+
: `'test/**/*.test.js'`;
|
|
236
|
+
}
|
|
237
|
+
module.exports.projectTestArgs = projectTestArgs;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega translate` — translate the built site (dist/) into every language in
|
|
3
|
+
* `translation.languages`, using the committed per-string cache in
|
|
4
|
+
* translations/ and the configured provider (claude via local Claude Code by
|
|
5
|
+
* default; chatgpt via OPENAI_API_KEY). Run `omega build` first. This command
|
|
6
|
+
* OWNS live-LLM translation: build applies the committed cache only and
|
|
7
|
+
* skips cold pages with a warning (friction #24 decision).
|
|
8
|
+
*
|
|
9
|
+
* Env: OMEGA_TRANSLATE_ONLY=<route|file> limits the run to one page.
|
|
10
|
+
*/
|
|
11
|
+
const Logger = require('../vendor/devkit/logger.js');
|
|
12
|
+
const { loadConfig, formatErrors } = require('../vendor/config/index.js');
|
|
13
|
+
const { consumerPaths } = require('../consumer.js');
|
|
14
|
+
const { translateSite } = require('../translate/index.js');
|
|
15
|
+
const jetpack = require('fs-jetpack');
|
|
16
|
+
|
|
17
|
+
const logger = new Logger('translate');
|
|
18
|
+
|
|
19
|
+
module.exports = async function (options) {
|
|
20
|
+
const paths = consumerPaths();
|
|
21
|
+
const { config, errors } = loadConfig(paths.root, 'web');
|
|
22
|
+
|
|
23
|
+
if (errors && errors.length) {
|
|
24
|
+
throw new Error(`config/omega.json5 is invalid:\n${formatErrors(errors)}`);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (!jetpack.exists(paths.out)) {
|
|
28
|
+
logger.error('No built site found (dist/) — run `omega build` first.');
|
|
29
|
+
process.exitCode = 1;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const stats = await translateSite({
|
|
34
|
+
root: paths.root,
|
|
35
|
+
outDir: paths.out,
|
|
36
|
+
config,
|
|
37
|
+
logger,
|
|
38
|
+
only: process.env.OMEGA_TRANSLATE_ONLY,
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
if (stats.skipped) {
|
|
42
|
+
logger.log('Translation is disabled — set translation.languages in config/omega.json5 to enable it.');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
logger.log(`Translated ${stats.pages} pages → ${stats.languages.join(', ')} (${stats.newStrings} new strings, ${stats.cachedStrings} cached)`);
|
|
47
|
+
|
|
48
|
+
if (stats.usage.input || stats.usage.output) {
|
|
49
|
+
logger.log(`Provider tokens: ${stats.usage.input.toLocaleString()} in / ${stats.usage.output.toLocaleString()} out`);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (stats.failures.length) {
|
|
53
|
+
logger.error(`${stats.failures.length} page-language pair(s) failed (skipped whole — no copy shipped):`);
|
|
54
|
+
stats.failures.forEach((failure) => logger.error(` ${failure}`));
|
|
55
|
+
process.exitCode = 1;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega update` — dependency freshness report (npu-outdated semantics):
|
|
3
|
+
* installed/wanted/latest + patch/minor/major per dep, releases younger than
|
|
4
|
+
* --min-age days (default 7) QUARANTINED. `--apply` installs the
|
|
5
|
+
* non-quarantined, non-breaking set (`--major` opts into breaking) through
|
|
6
|
+
* npu when present. The whole verb is the shared devkit implementation.
|
|
7
|
+
*/
|
|
8
|
+
const Logger = require('../vendor/devkit/logger.js');
|
|
9
|
+
const { runUpdate } = require('../vendor/devkit/update.js');
|
|
10
|
+
|
|
11
|
+
const logger = new Logger('update');
|
|
12
|
+
|
|
13
|
+
module.exports = async function (options) {
|
|
14
|
+
await runUpdate({
|
|
15
|
+
dir: process.cwd(),
|
|
16
|
+
apply: options.apply,
|
|
17
|
+
major: options.major,
|
|
18
|
+
minAge: options.minAge ?? options['min-age'],
|
|
19
|
+
forceFresh: options.forceFresh || options['force-fresh'],
|
|
20
|
+
logger,
|
|
21
|
+
});
|
|
22
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `omega version` — print the framework version.
|
|
3
|
+
*/
|
|
4
|
+
const Logger = require('../vendor/devkit/logger.js');
|
|
5
|
+
|
|
6
|
+
const logger = new Logger('version');
|
|
7
|
+
const pkg = require('../../package.json');
|
|
8
|
+
|
|
9
|
+
module.exports = async function (options) {
|
|
10
|
+
logger.log(pkg.version);
|
|
11
|
+
};
|