From 3bd6aa01cbe84c4744a8b000505b59cc03a9ab0e Mon Sep 17 00:00:00 2001 From: Ryan Bahan Date: Thu, 12 Feb 2026 09:47:03 -0700 Subject: [PATCH 1/8] refactor cli-kit into domain based vertical slices --- configurations/vite.config.ts | 2 +- graphql.config.ts | 23 ++++--- packages/app/src/cli/api/admin-as-app.test.ts | 6 +- packages/app/src/cli/api/admin-as-app.ts | 6 +- .../api/graphql/admin/generated/types.d.ts | 2 +- .../app-dev/generated/dev-session-create.ts | 2 +- .../app-dev/generated/dev-session-update.ts | 2 +- .../api/graphql/app-dev/generated/types.d.ts | 2 +- .../active-app-release-from-api-key.ts | 2 +- .../generated/active-app-release.ts | 2 +- .../generated/app-version-by-id.ts | 2 +- .../generated/app-version-by-tag.ts | 2 +- .../generated/create-app-version.ts | 2 +- .../app-management/generated/create-app.ts | 2 +- .../generated/release-version.ts | 2 +- .../app-management/generated/types.d.ts | 2 +- .../bulk-operations/generated/types.d.ts | 2 +- .../generated/types.d.ts | 2 +- .../cli/api/graphql/current_account_info.ts | 4 +- .../api/graphql/partners/generated/types.d.ts | 2 +- .../src/cli/commands/app/app-logs/sources.ts | 2 +- packages/app/src/cli/commands/app/build.ts | 4 +- .../app/src/cli/commands/app/bulk/cancel.ts | 4 +- .../app/src/cli/commands/app/bulk/execute.ts | 2 +- .../app/src/cli/commands/app/bulk/status.ts | 4 +- .../app/src/cli/commands/app/config/link.ts | 2 +- .../app/src/cli/commands/app/config/pull.ts | 6 +- .../app/src/cli/commands/app/config/use.ts | 2 +- .../app/src/cli/commands/app/demo/watcher.ts | 8 +-- packages/app/src/cli/commands/app/deploy.ts | 4 +- packages/app/src/cli/commands/app/dev.ts | 6 +- .../app/src/cli/commands/app/dev/clean.ts | 4 +- packages/app/src/cli/commands/app/env/pull.ts | 6 +- packages/app/src/cli/commands/app/env/show.ts | 4 +- packages/app/src/cli/commands/app/execute.ts | 2 +- .../src/cli/commands/app/function/build.ts | 4 +- .../app/src/cli/commands/app/function/info.ts | 6 +- .../src/cli/commands/app/function/replay.ts | 2 +- .../app/src/cli/commands/app/function/run.ts | 6 +- .../src/cli/commands/app/function/schema.ts | 2 +- .../src/cli/commands/app/function/typegen.ts | 4 +- .../cli/commands/app/generate/extension.ts | 4 +- .../app/import-custom-data-definitions.ts | 8 +-- .../src/cli/commands/app/import-extensions.ts | 4 +- packages/app/src/cli/commands/app/info.ts | 6 +- packages/app/src/cli/commands/app/init.ts | 16 ++--- packages/app/src/cli/commands/app/logs.ts | 4 +- packages/app/src/cli/commands/app/release.ts | 4 +- .../cli/commands/app/scaffold/extension.ts | 2 +- .../app/src/cli/commands/app/versions/list.ts | 2 +- .../src/cli/commands/app/webhook/trigger.ts | 2 +- .../app/src/cli/commands/webhook/trigger.ts | 2 +- packages/app/src/cli/flags.ts | 4 +- .../app/src/cli/hooks/clear_command_cache.ts | 2 +- packages/app/src/cli/hooks/public_metadata.ts | 2 +- .../app/src/cli/hooks/sensitive_metadata.ts | 2 +- packages/app/src/cli/metadata.ts | 6 +- .../app/src/cli/models/app/app.test-data.ts | 4 +- packages/app/src/cli/models/app/app.test.ts | 6 +- packages/app/src/cli/models/app/app.ts | 20 +++--- .../src/cli/models/app/identifiers.test.ts | 6 +- .../app/src/cli/models/app/identifiers.ts | 10 +-- .../app/src/cli/models/app/loader.test.ts | 32 +++++----- packages/app/src/cli/models/app/loader.ts | 28 ++++----- .../cli/models/app/validation/common.test.ts | 2 +- .../src/cli/models/app/validation/common.ts | 2 +- .../extensions/extension-instance.test.ts | 12 ++-- .../models/extensions/extension-instance.ts | 20 +++--- .../app/src/cli/models/extensions/schemas.ts | 2 +- .../cli/models/extensions/specification.ts | 10 +-- .../specifications/app_config_app_access.ts | 4 +- .../specifications/app_config_app_home.ts | 2 +- .../specifications/app_config_app_proxy.ts | 2 +- .../specifications/app_config_branding.ts | 2 +- .../specifications/app_config_events.ts | 2 +- .../app_config_point_of_sale.ts | 2 +- ...config_privacy_compliance_webhooks.test.ts | 2 +- .../app_config_privacy_compliance_webhooks.ts | 2 +- .../webhook_subscription_schema.ts | 2 +- .../webhooks_schema.ts | 2 +- .../app_config_webhook_subscription.ts | 2 +- .../extensions/specifications/channel.ts | 2 +- .../specifications/checkout_post_purchase.ts | 2 +- .../specifications/checkout_ui_extension.ts | 2 +- .../editor_extension_collection.test.ts | 4 +- .../editor_extension_collection.ts | 2 +- .../extensions/specifications/flow_action.ts | 2 +- .../specifications/flow_template.ts | 8 +-- .../extensions/specifications/flow_trigger.ts | 2 +- .../specifications/function.test.ts | 8 +-- .../extensions/specifications/function.ts | 12 ++-- .../marketing_activity_schema.test.ts | 2 +- .../marketing_activity_schema.ts | 2 +- .../payments_app_extension.test.ts | 2 +- .../specifications/payments_app_extension.ts | 2 +- ...base_payments_app_extension_schema.test.ts | 2 +- .../base_payments_app_extension_schema.ts | 2 +- ...sent_payments_app_extension_schema.test.ts | 2 +- ...d_present_payments_app_extension_schema.ts | 2 +- ...card_payments_app_extension_schema.test.ts | 2 +- ...edit_card_payments_app_extension_schema.ts | 2 +- ...card_payments_app_extension_schema.test.ts | 2 +- ...edit_card_payments_app_extension_schema.ts | 2 +- ...site_payments_app_extension_schema.test.ts | 2 +- ...om_onsite_payments_app_extension_schema.ts | 2 +- ...site_payments_app_extension_schema.test.ts | 2 +- .../offsite_payments_app_extension_schema.ts | 2 +- ...able_payments_app_extension_schema.test.ts | 2 +- ...edeemable_payments_app_extension_schema.ts | 2 +- .../specifications/pos_ui_extension.ts | 4 +- .../specifications/product_subscription.ts | 2 +- .../specifications/tax_calculation.ts | 2 +- .../models/extensions/specifications/theme.ts | 8 +-- .../transform/app_config_events.ts | 2 +- .../transform/app_config_webhook.ts | 2 +- .../transform/extension_uuid_to_handle.ts | 2 +- .../specifications/type-generation.test.ts | 2 +- .../specifications/type-generation.ts | 10 +-- .../specifications/ui_extension.test.ts | 10 +-- .../extensions/specifications/ui_extension.ts | 10 +-- .../validation/app_config_webhook.ts | 6 +- .../specifications/validation/common.ts | 2 +- .../specifications/web_pixel_extension.ts | 6 +- packages/app/src/cli/prompts/config.test.ts | 10 +-- packages/app/src/cli/prompts/config.ts | 12 ++-- .../src/cli/prompts/deploy-release.test.ts | 4 +- .../app/src/cli/prompts/deploy-release.ts | 4 +- packages/app/src/cli/prompts/dev.test.ts | 6 +- packages/app/src/cli/prompts/dev.ts | 4 +- .../src/cli/prompts/function/replay.test.ts | 4 +- .../app/src/cli/prompts/function/replay.ts | 2 +- .../cli/prompts/generate/extension.test.ts | 8 +-- .../app/src/cli/prompts/generate/extension.ts | 10 +-- .../src/cli/prompts/import-extensions.test.ts | 6 +- .../app/src/cli/prompts/import-extensions.ts | 4 +- .../app/src/cli/prompts/init/init.test.ts | 8 +-- packages/app/src/cli/prompts/init/init.ts | 4 +- .../app/src/cli/prompts/uid-mapping-error.ts | 2 +- .../src/cli/prompts/webhook/trigger.test.ts | 4 +- .../app/src/cli/prompts/webhook/trigger.ts | 4 +- .../services/admin-link/extension-to-toml.ts | 4 +- .../app/src/cli/services/admin-link/utils.ts | 2 +- .../app/src/cli/services/app-context.test.ts | 6 +- packages/app/src/cli/services/app-context.ts | 2 +- .../app-logs/dev/poll-app-logs.test.ts | 8 +-- .../services/app-logs/dev/poll-app-logs.ts | 4 +- .../app-logs/dev/write-app-logs.test.ts | 8 +-- .../services/app-logs/dev/write-app-logs.ts | 6 +- .../logs-command/poll-app-logs.test.ts | 8 +-- .../app-logs/logs-command/poll-app-logs.ts | 2 +- .../logs-command/render-json-logs.test.ts | 6 +- .../app-logs/logs-command/render-json-logs.ts | 2 +- .../cli/services/app-logs/logs-command/ui.tsx | 2 +- .../logs-command/ui/components/Logs.test.tsx | 4 +- .../logs-command/ui/components/Logs.tsx | 2 +- .../components/hooks/usePollAppLogs.test.tsx | 2 +- .../ui/components/hooks/usePollAppLogs.ts | 2 +- .../hooks/useSelfAdjustingInterval.test.tsx | 2 +- .../src/cli/services/app-logs/sources.test.ts | 4 +- .../app/src/cli/services/app-logs/sources.ts | 2 +- .../app/src/cli/services/app-logs/utils.ts | 8 +-- .../app/add-uid-to-extension-toml.test.ts | 4 +- .../services/app/add-uid-to-extension-toml.ts | 6 +- .../services/app/config/link-service.test.ts | 6 +- .../src/cli/services/app/config/link.test.ts | 12 ++-- .../app/src/cli/services/app/config/link.ts | 12 ++-- .../app/src/cli/services/app/config/pull.ts | 4 +- .../src/cli/services/app/config/use.test.ts | 10 +-- .../app/src/cli/services/app/config/use.ts | 14 ++--- .../app/src/cli/services/app/env/pull.test.ts | 6 +- packages/app/src/cli/services/app/env/pull.ts | 6 +- .../app/src/cli/services/app/env/show.test.ts | 8 +-- packages/app/src/cli/services/app/env/show.ts | 2 +- .../app/patch-app-configuration-file.test.ts | 4 +- .../app/patch-app-configuration-file.ts | 6 +- .../app/src/cli/services/app/select-app.ts | 2 +- .../app/write-app-configuration-file.test.ts | 4 +- .../app/write-app-configuration-file.ts | 8 +-- packages/app/src/cli/services/build.ts | 4 +- .../src/cli/services/build/extension.test.ts | 10 +-- .../app/src/cli/services/build/extension.ts | 12 ++-- .../app/src/cli/services/build/theme-check.ts | 6 +- .../bulk-operation-status.test.ts | 10 +-- .../bulk-operations/bulk-operation-status.ts | 14 ++--- .../cancel-bulk-operation.test.ts | 10 +-- .../bulk-operations/cancel-bulk-operation.ts | 6 +- .../download-bulk-operation-results.test.ts | 4 +- .../download-bulk-operation-results.ts | 4 +- .../execute-bulk-operation.test.ts | 20 +++--- .../bulk-operations/execute-bulk-operation.ts | 10 +-- .../format-bulk-operation-status.test.ts | 2 +- .../format-bulk-operation-status.ts | 4 +- .../bulk-operations/run-mutation.test.ts | 4 +- .../services/bulk-operations/run-mutation.ts | 4 +- .../bulk-operations/run-query.test.ts | 4 +- .../cli/services/bulk-operations/run-query.ts | 4 +- .../bulk-operations/stage-file.test.ts | 14 ++--- .../services/bulk-operations/stage-file.ts | 12 ++-- .../watch-bulk-operation.test.ts | 16 ++--- .../bulk-operations/watch-bulk-operation.ts | 12 ++-- packages/app/src/cli/services/bundle.test.ts | 8 +-- packages/app/src/cli/services/bundle.ts | 10 +-- packages/app/src/cli/services/context.test.ts | 16 ++--- packages/app/src/cli/services/context.ts | 12 ++-- .../context/breakdown-extensions.test.ts | 4 +- .../services/context/breakdown-extensions.ts | 6 +- .../context/id-manual-matching.test.ts | 4 +- .../cli/services/context/id-matching.test.ts | 4 +- .../src/cli/services/context/id-matching.ts | 12 ++-- .../context/identifiers-extensions.test.ts | 6 +- .../context/identifiers-extensions.ts | 6 +- .../cli/services/context/identifiers.test.ts | 2 +- .../src/cli/services/context/identifiers.ts | 2 +- .../context/partner-account-info.test.ts | 12 ++-- .../services/context/partner-account-info.ts | 4 +- .../app/src/cli/services/context/prompts.ts | 2 +- .../app/src/cli/services/dependencies.test.ts | 8 +-- packages/app/src/cli/services/dependencies.ts | 4 +- packages/app/src/cli/services/deploy.test.ts | 14 ++--- packages/app/src/cli/services/deploy.ts | 14 ++--- .../src/cli/services/deploy/bundle.test.ts | 4 +- .../app/src/cli/services/deploy/bundle.ts | 8 +-- .../deploy/theme-extension-config.test.ts | 4 +- .../services/deploy/theme-extension-config.ts | 4 +- .../src/cli/services/deploy/upload.test.ts | 10 +-- .../app/src/cli/services/deploy/upload.ts | 6 +- .../app/src/cli/services/dev-clean.test.ts | 4 +- packages/app/src/cli/services/dev-clean.ts | 4 +- packages/app/src/cli/services/dev.test.ts | 4 +- packages/app/src/cli/services/dev.ts | 20 +++--- .../app-events/app-event-watcher-handler.ts | 6 +- .../dev/app-events/app-event-watcher.test.ts | 8 +-- .../dev/app-events/app-event-watcher.ts | 14 ++--- .../app-events/app-watcher-esbuild.test.ts | 4 +- .../dev/app-events/app-watcher-esbuild.ts | 10 +-- .../dev/app-events/file-watcher.test.ts | 22 +++---- .../services/dev/app-events/file-watcher.ts | 12 ++-- .../src/cli/services/dev/create-extension.ts | 2 +- .../app/src/cli/services/dev/extension.ts | 6 +- .../dev/extension/localization.test.ts | 8 +-- .../services/dev/extension/localization.ts | 8 +-- .../services/dev/extension/payload.test.ts | 4 +- .../src/cli/services/dev/extension/payload.ts | 6 +- .../services/dev/extension/payload/store.ts | 4 +- .../dev/extension/server/middlewares.test.ts | 4 +- .../dev/extension/server/middlewares.ts | 6 +- .../dev/extension/server/utilities.test.ts | 4 +- .../cli/services/dev/extension/templates.ts | 8 +-- .../dev/extension/websocket/handlers.test.ts | 8 +-- .../dev/extension/websocket/handlers.ts | 4 +- .../app/src/cli/services/dev/fetch.test.ts | 12 ++-- packages/app/src/cli/services/dev/fetch.ts | 6 +- .../src/cli/services/dev/graphiql/server.ts | 14 ++--- .../dev/graphiql/templates/graphiql.tsx | 2 +- .../cli/services/dev/migrate-app-module.ts | 4 +- .../services/dev/migrate-flow-extension.ts | 2 +- .../services/dev/migrate-to-ui-extension.ts | 2 +- .../cli/services/dev/port-warnings.test.ts | 2 +- .../app/src/cli/services/dev/port-warnings.ts | 4 +- .../dev/processes/app-logs-polling.test.ts | 10 +-- .../dev/processes/app-logs-polling.ts | 4 +- .../dev-session/dev-session-logger.test.ts | 2 +- .../dev-session/dev-session-logger.ts | 4 +- .../dev-session/dev-session-process.test.ts | 24 ++++---- .../dev-session/dev-session-status-manager.ts | 2 +- .../dev/processes/dev-session/dev-session.ts | 14 ++--- .../dev/processes/draftable-extension.ts | 4 +- .../dev/processes/previewable-extension.ts | 4 +- .../dev/processes/setup-dev-processes.test.ts | 22 +++---- .../dev/processes/setup-dev-processes.ts | 12 ++-- .../dev/processes/theme-app-extension.test.ts | 24 ++++---- .../dev/processes/theme-app-extension.ts | 14 ++--- .../src/cli/services/dev/processes/types.ts | 2 +- .../app/src/cli/services/dev/processes/web.ts | 8 +-- .../app/src/cli/services/dev/select-app.ts | 4 +- .../src/cli/services/dev/select-store.test.ts | 4 +- .../app/src/cli/services/dev/select-store.ts | 10 +-- .../src/cli/services/dev/tunnel-mode.test.ts | 4 +- .../app/src/cli/services/dev/tunnel-mode.ts | 4 +- packages/app/src/cli/services/dev/ui.test.tsx | 8 +-- packages/app/src/cli/services/dev/ui.tsx | 8 +-- .../services/dev/ui/components/Dev.test.tsx | 12 ++-- .../cli/services/dev/ui/components/Dev.tsx | 20 +++--- .../dev/ui/components/DevSessionUI.test.tsx | 18 +++--- .../dev/ui/components/DevSessionUI.tsx | 22 +++---- .../services/dev/ui/components/Spinner.tsx | 2 +- .../dev/ui/components/TabPanel.test.tsx | 10 +-- .../services/dev/ui/components/TabPanel.tsx | 2 +- .../cli/services/dev/update-extension.test.ts | 14 ++--- .../src/cli/services/dev/update-extension.ts | 10 +-- .../app/src/cli/services/dev/urls.test.ts | 20 +++--- packages/app/src/cli/services/dev/urls.ts | 14 ++--- .../cli/services/execute-operation.test.ts | 16 ++--- .../app/src/cli/services/execute-operation.ts | 12 ++-- .../cli/services/extensions/bundle.test.ts | 4 +- .../app/src/cli/services/extensions/bundle.ts | 12 ++-- .../cli/services/extensions/common.test.ts | 4 +- .../app/src/cli/services/extensions/common.ts | 8 +-- .../cli/services/flow/extension-to-toml.ts | 4 +- .../services/flow/serialize-fields.test.ts | 2 +- .../src/cli/services/flow/serialize-fields.ts | 4 +- .../flow/serialize-partners-fields.ts | 2 +- .../app/src/cli/services/flow/utils.test.ts | 4 +- packages/app/src/cli/services/flow/utils.ts | 4 +- .../src/cli/services/flow/validation.test.ts | 2 +- .../app/src/cli/services/flow/validation.ts | 2 +- .../services/format-config-info-body.test.ts | 2 +- .../cli/services/format-config-info-body.ts | 2 +- .../cli/services/function/binaries.test.ts | 8 +-- .../app/src/cli/services/function/binaries.ts | 12 ++-- .../src/cli/services/function/build.test.ts | 10 +-- .../app/src/cli/services/function/build.ts | 20 +++--- .../src/cli/services/function/common.test.ts | 14 ++--- .../app/src/cli/services/function/common.ts | 10 +-- .../src/cli/services/function/info.test.ts | 2 +- .../app/src/cli/services/function/info.ts | 4 +- .../src/cli/services/function/replay.test.ts | 16 ++--- .../app/src/cli/services/function/replay.ts | 8 +-- .../src/cli/services/function/runner.test.ts | 4 +- .../app/src/cli/services/function/runner.ts | 2 +- packages/app/src/cli/services/function/ui.tsx | 2 +- .../ui/components/Replay/Replay.test.tsx | 6 +- .../function/ui/components/Replay/Replay.tsx | 10 +-- .../Replay/hooks/useFunctionWatcher.test.tsx | 4 +- .../Replay/hooks/useFunctionWatcher.ts | 8 +-- .../src/cli/services/generate-schema.test.ts | 10 +-- .../app/src/cli/services/generate-schema.ts | 8 +-- .../app/src/cli/services/generate.test.ts | 4 +- packages/app/src/cli/services/generate.ts | 14 ++--- .../cli/services/generate/extension.test.ts | 22 +++---- .../src/cli/services/generate/extension.ts | 16 ++--- .../fetch-extension-specifications.ts | 6 +- .../declarative-definitions.test.ts | 10 +-- .../shop-import/declarative-definitions.ts | 10 +-- .../src/cli/services/graphql/common.test.ts | 12 ++-- .../app/src/cli/services/graphql/common.ts | 8 +-- .../cli/services/import-extensions.test.ts | 10 +-- .../app/src/cli/services/import-extensions.ts | 12 ++-- packages/app/src/cli/services/info.test.ts | 10 +-- packages/app/src/cli/services/info.ts | 12 ++-- packages/app/src/cli/services/init/init.ts | 26 ++++---- .../services/init/template/cleanup.test.ts | 6 +- .../src/cli/services/init/template/cleanup.ts | 6 +- .../cli/services/init/template/npm.test.ts | 10 +-- .../app/src/cli/services/init/template/npm.ts | 8 +-- .../src/cli/services/init/validate.test.ts | 2 +- .../app/src/cli/services/init/validate.ts | 6 +- .../src/cli/services/local-storage.test.ts | 4 +- .../app/src/cli/services/local-storage.ts | 6 +- packages/app/src/cli/services/logs.test.ts | 10 +-- packages/app/src/cli/services/logs.ts | 8 +-- .../marketing_activity/extension-to-toml.ts | 4 +- .../services/payments/extension-to-toml.ts | 4 +- packages/app/src/cli/services/release.test.ts | 6 +- packages/app/src/cli/services/release.ts | 4 +- .../cli/services/release/version-diff.test.ts | 4 +- .../src/cli/services/release/version-diff.ts | 4 +- .../src/cli/services/store-context.test.ts | 6 +- .../app/src/cli/services/store-context.ts | 4 +- .../subscription_link/extension-to-toml.ts | 4 +- .../src/cli/services/versions-list.test.ts | 2 +- .../app/src/cli/services/versions-list.ts | 12 ++-- packages/app/src/cli/services/web.ts | 4 +- .../send-app-uninstalled-webhook.test.ts | 4 +- .../webhook/send-app-uninstalled-webhook.ts | 4 +- .../services/webhook/trigger-flags.test.ts | 2 +- .../src/cli/services/webhook/trigger-flags.ts | 2 +- .../webhook/trigger-local-webhook.test.ts | 4 +- .../services/webhook/trigger-local-webhook.ts | 2 +- .../services/webhook/trigger-options.test.ts | 4 +- .../cli/services/webhook/trigger-options.ts | 2 +- .../src/cli/services/webhook/trigger.test.ts | 6 +- .../app/src/cli/services/webhook/trigger.ts | 2 +- .../app/src/cli/utilities/analytics.test.ts | 4 +- packages/app/src/cli/utilities/analytics.ts | 2 +- packages/app/src/cli/utilities/app-command.ts | 2 +- .../src/cli/utilities/app-conf-store.test.ts | 6 +- .../app/src/cli/utilities/app-conf-store.ts | 4 +- packages/app/src/cli/utilities/app/app-url.ts | 2 +- .../src/cli/utilities/app/config/getTomls.ts | 4 +- .../app/config/hidden-app-config.test.ts | 6 +- .../utilities/app/config/hidden-app-config.ts | 6 +- .../utilities/app/http-reverse-proxy.test.ts | 4 +- .../cli/utilities/app/http-reverse-proxy.ts | 6 +- .../utilities/developer-platform-client.ts | 12 ++-- .../app-management-client.test.ts | 24 ++++---- .../app-management-client.ts | 38 ++++++------ .../partners-client.test.ts | 4 +- .../partners-client.ts | 18 +++--- .../utilities/execute-command-helpers.test.ts | 6 +- .../cli/utilities/execute-command-helpers.ts | 6 +- .../extensions/fetch-product-variant.ts | 10 +-- .../extensions/locales-configuration.test.ts | 4 +- .../extensions/locales-configuration.ts | 6 +- .../cli/utilities/extensions/theme.test.ts | 4 +- .../app/src/cli/utilities/extensions/theme.ts | 4 +- .../theme/host-theme-manager.test.ts | 10 +-- .../extensions/theme/host-theme-manager.ts | 16 ++--- .../theme/host-theme-watcher.test.ts | 10 +-- .../extensions/theme/host-theme-watcher.ts | 10 +-- .../app/src/cli/utilities/json-schema.test.ts | 2 +- packages/app/src/cli/utilities/json-schema.ts | 8 +-- packages/app/src/cli/utilities/mkcert.test.ts | 32 +++++----- packages/app/src/cli/utilities/mkcert.ts | 16 ++--- packages/app/src/cli/utilities/types.ts | 2 +- packages/app/src/cli/validations/message.ts | 2 +- .../app/src/cli/validations/version-name.ts | 2 +- packages/cli-kit/package.json | 61 +++++++++++++------ packages/cli-kit/project.json | 12 ++-- .../api/admin.test.ts => admin/api.test.ts} | 18 +++--- .../node/api/admin.ts => admin/api.ts} | 27 ++++---- .../graphql}/generated/get_theme.ts | 0 .../generated/get_theme_file_bodies.ts | 0 .../generated/get_theme_file_checksums.ts | 0 .../graphql}/generated/get_themes.ts | 0 .../metafield_definitions_by_owner_type.ts | 0 .../online_store_password_protection.ts | 0 .../graphql}/generated/public_api_versions.ts | 0 .../graphql}/generated/theme_create.ts | 0 .../graphql}/generated/theme_delete.ts | 0 .../graphql}/generated/theme_duplicate.ts | 0 .../graphql}/generated/theme_files_delete.ts | 0 .../graphql}/generated/theme_files_upsert.ts | 0 .../graphql}/generated/theme_publish.ts | 0 .../graphql}/generated/theme_update.ts | 0 .../graphql}/generated/types.d.ts | 0 .../graphql}/mutations/theme_create.graphql | 0 .../graphql}/mutations/theme_delete.graphql | 0 .../mutations/theme_duplicate.graphql | 0 .../mutations/theme_files_delete.graphql | 0 .../mutations/theme_files_upsert.graphql | 0 .../graphql}/mutations/theme_publish.graphql | 0 .../graphql}/mutations/theme_update.graphql | 0 .../graphql}/queries/get_theme.graphql | 0 .../queries/get_theme_file_bodies.graphql | 0 .../queries/get_theme_file_checksums.graphql | 0 .../graphql}/queries/get_themes.graphql | 0 ...etafield_definitions_by_owner_type.graphql | 0 .../online_store_password_protection.graphql | 0 .../queries/public_api_versions.graphql | 0 .../node/api => admin}/rest-api-throttler.ts | 4 +- .../src/{private/node/api => admin}/rest.ts | 6 +- .../app-dev.test.ts => app-dev/api.test.ts} | 12 ++-- .../node/api/app-dev.ts => app-dev/api.ts} | 8 +-- .../api.test.ts} | 14 ++--- .../api.ts} | 12 ++-- .../api.ts} | 12 +++- .../graphql}/user-email.ts | 0 .../api/functions.ts => functions/api.ts} | 6 +- .../core}/device-authorization.test.ts | 22 +++---- .../core}/device-authorization.ts | 14 ++--- .../core}/exchange.test.ts | 14 ++--- .../session => identity/core}/exchange.ts | 14 ++--- .../session => identity/core}/identity.ts | 6 +- .../node/session => identity/core}/schema.ts | 2 +- .../session => identity/core}/scopes.test.ts | 0 .../node/session => identity/core}/scopes.ts | 4 +- .../node => identity/core}/session.test.ts | 54 ++++++++-------- .../node => identity/core}/session.ts | 38 ++++++------ .../session => identity/core}/store.test.ts | 13 ++-- .../node/session => identity/core}/store.ts | 9 ++- .../core}/validate.test.ts | 6 +- .../session => identity/core}/validate.ts | 8 +-- .../node => identity}/session-prompt.test.ts | 18 +++--- .../node => identity}/session-prompt.ts | 10 +-- .../{public/node => identity}/session.test.ts | 20 +++--- .../src/{public/node => identity}/session.ts | 18 +++--- .../partners.test.ts => partners/api.test.ts} | 20 +++--- .../node/api/partners.ts => partners/api.ts} | 20 +++--- .../cli-kit/src/public/node/ui/components.ts | 8 --- packages/cli-kit/src/public/node/ui/hooks.ts | 1 - .../{public => shared}/common/array.test.ts | 0 .../src/{public => shared}/common/array.ts | 0 .../common/collection.test.ts | 0 .../{public => shared}/common/collection.ts | 0 .../common/function.test.ts | 0 .../src/{public => shared}/common/function.ts | 0 .../common/internal}/array.ts | 0 .../common => shared/common/internal}/json.ts | 0 .../internal}/ts/overloaded-parameters.ts | 0 .../{public => shared}/common/json.test.ts | 0 .../src/{public => shared}/common/json.ts | 0 .../{public => shared}/common/lang.test.ts | 0 .../src/{public => shared}/common/lang.ts | 0 .../{public => shared}/common/object.test.ts | 0 .../src/{public => shared}/common/object.ts | 2 +- .../{public => shared}/common/retry.test.ts | 0 .../src/{public => shared}/common/retry.ts | 0 .../{public => shared}/common/string.test.ts | 0 .../src/{public => shared}/common/string.ts | 4 +- .../common/ts/deep-required.ts | 0 .../common/ts/json-narrowing.test.ts | 0 .../common/ts/json-narrowing.ts | 0 .../common/ts/pick-by-prefix.ts | 0 .../src/{public => shared}/common/url.test.ts | 0 .../src/{public => shared}/common/url.ts | 0 .../src/{public => shared}/common/version.ts | 0 .../src/{public => shared}/node/abort.ts | 0 .../{public => shared}/node/analytics.test.ts | 12 ++-- .../src/{public => shared}/node/analytics.ts | 16 ++--- .../node/api/graphql.test.ts | 10 +-- .../{public => shared}/node/api/graphql.ts | 10 +-- .../{public => shared}/node/api/utilities.ts | 0 .../node/archiver.integration.test.ts | 0 .../src/{public => shared}/node/archiver.ts | 2 +- .../node/base-command.test.ts | 0 .../{public => shared}/node/base-command.ts | 2 +- .../node/cli-launcher.test.ts | 0 .../{public => shared}/node/cli-launcher.ts | 0 .../src/{public => shared}/node/cli.test.ts | 2 +- .../src/{public => shared}/node/cli.ts | 4 +- .../src/{public => shared}/node/colors.ts | 0 .../node/context/fqdn.test.ts | 6 +- .../{public => shared}/node/context/fqdn.ts | 4 +- .../node/context/local.integration.test.ts | 0 .../node/context/local.test.ts | 0 .../{public => shared}/node/context/local.ts | 4 +- .../node/context/utilities.ts | 0 .../{public => shared}/node/crypto.test.ts | 0 .../src/{public => shared}/node/crypto.ts | 0 .../node/custom-oclif-loader.ts | 0 .../node/doctor/framework.test.ts | 0 .../node/doctor/framework.ts | 0 .../node/doctor/reporter.ts | 0 .../{public => shared}/node/doctor/types.ts | 0 .../{public => shared}/node/dot-env.test.ts | 0 .../src/{public => shared}/node/dot-env.ts | 2 +- .../{public => shared}/node/environment.ts | 2 +- .../node/environments.test.ts | 0 .../{public => shared}/node/environments.ts | 2 +- .../node/error-handler.test.ts | 12 ++-- .../{public => shared}/node/error-handler.ts | 14 ++--- .../src/{public => shared}/node/error.test.ts | 0 .../src/{public => shared}/node/error.ts | 6 +- .../src/{public => shared}/node/figures.ts | 0 .../{public => shared}/node/framework.test.ts | 0 .../src/{public => shared}/node/framework.ts | 0 .../src/{public => shared}/node/fs.test.ts | 0 .../cli-kit/src/{public => shared}/node/fs.ts | 4 +- .../src/{public => shared}/node/git.test.ts | 0 .../src/{public => shared}/node/git.ts | 2 +- .../{public => shared}/node/github.test.ts | 0 .../src/{public => shared}/node/github.ts | 2 +- .../{public => shared}/node/global-context.ts | 0 .../node/hidden-folder.test.ts | 0 .../{public => shared}/node/hidden-folder.ts | 0 .../node/hooks/deprecations.ts | 2 +- .../{public => shared}/node/hooks/postrun.ts | 4 +- .../node/hooks/prerun.test.ts | 4 +- .../{public => shared}/node/hooks/prerun.ts | 10 +-- .../src/{public => shared}/node/hrtime.ts | 0 .../src/{public => shared}/node/http.test.ts | 0 .../src/{public => shared}/node/http.ts | 10 +-- .../node/import-extractor.test.ts | 0 .../node/import-extractor.ts | 0 .../src/{public => shared}/node/ink.ts | 0 .../__snapshots__/otel-metrics.test.ts.snap | 0 .../node/internal}/analytics.ts | 22 +++---- .../analytics/bounded-collections.test.ts | 0 .../analytics/bounded-collections.ts | 0 .../analytics/error-categorizer.test.ts | 0 .../internal}/analytics/error-categorizer.ts | 0 .../node/internal}/analytics/storage.test.ts | 0 .../node/internal}/analytics/storage.ts | 0 .../node => shared/node/internal}/api.test.ts | 4 +- .../node => shared/node/internal}/api.ts | 4 +- .../node/internal}/api/graphql.ts | 4 +- .../node/internal}/api/headers.test.ts | 10 +-- .../node/internal}/api/headers.ts | 6 +- .../node/internal}/api/urls.test.ts | 0 .../node => shared/node/internal}/api/urls.ts | 0 .../node/internal}/conf-store.test.ts | 4 +- .../node/internal}/conf-store.ts | 6 +- .../node/internal}/constants.ts | 2 +- .../node/internal}/content-tokens.test.ts | 0 .../node/internal}/content-tokens.ts | 6 +- .../internal}/context/deprecations-store.ts | 0 .../node/internal}/context/service.test.ts | 0 .../node/internal}/context/service.ts | 0 .../node/internal}/context/utilities.ts | 0 .../node/internal}/otel-metrics.test.ts | 2 +- .../node/internal}/otel-metrics.ts | 8 +-- .../node => shared/node/internal}/output.ts | 4 +- .../node/internal}/request-ids.test.ts | 0 .../node/internal}/request-ids.ts | 0 .../node/internal}/sleep-with-backoff.test.ts | 0 .../node/internal}/sleep-with-backoff.ts | 2 +- .../{public => shared}/node/is-global.test.ts | 0 .../src/{public => shared}/node/is-global.ts | 0 .../node/json-schema.test.ts | 0 .../{public => shared}/node/json-schema.ts | 0 .../{public => shared}/node/liquid.test.ts | 0 .../src/{public => shared}/node/liquid.ts | 2 +- .../node/local-storage.test.ts | 0 .../{public => shared}/node/local-storage.ts | 0 .../src/{public => shared}/node/logs.ts | 2 +- .../{public => shared}/node/metadata.test.ts | 0 .../src/{public => shared}/node/metadata.ts | 2 +- .../src/{public => shared}/node/mimes.test.ts | 0 .../src/{public => shared}/node/mimes.ts | 0 .../{public => shared}/node/monorail.test.ts | 0 .../src/{public => shared}/node/monorail.ts | 4 +- .../node/multiple-installation-warning.ts | 2 +- .../node/node-package-manager.test.ts | 4 +- .../node/node-package-manager.ts | 4 +- .../node/notifications-system.test.ts | 4 +- .../node/notifications-system.ts | 2 +- .../src/{public => shared}/node/os.test.ts | 0 .../cli-kit/src/{public => shared}/node/os.ts | 2 +- .../{public => shared}/node/output.test.ts | 0 .../src/{public => shared}/node/output.ts | 6 +- .../src/{public => shared}/node/path.test.ts | 0 .../src/{public => shared}/node/path.ts | 0 .../{public => shared}/node/plugins.test.ts | 0 .../src/{public => shared}/node/plugins.ts | 2 +- .../multiple-installation-warning.test.ts | 0 .../node/plugins/tunnel.test.ts | 0 .../{public => shared}/node/plugins/tunnel.ts | 0 .../src/{public => shared}/node/promises.ts | 0 .../{public => shared}/node/result.test.ts | 2 +- .../src/{public => shared}/node/result.ts | 0 .../{public => shared}/node/schema.test.ts | 0 .../src/{public => shared}/node/schema.ts | 0 .../node/serial-batch-processor.test.ts | 0 .../node/serial-batch-processor.ts | 0 .../{public => shared}/node/system.test.ts | 0 .../src/{public => shared}/node/system.ts | 2 +- .../src/{public => shared}/node/tcp.test.ts | 0 .../src/{public => shared}/node/tcp.ts | 2 +- .../{public => shared}/node/testing/output.ts | 2 +- .../node/testing/test-with-temp-dir.ts | 0 .../src/{public => shared}/node/testing/ui.ts | 2 +- .../src/{public => shared}/node/toml.test.ts | 0 .../src/{public => shared}/node/toml.ts | 2 +- .../src/{public => shared}/node/tree-kill.ts | 0 .../src/{public => shared}/node/ui.test.ts | 0 .../src/{public => shared}/node/ui.tsx | 57 +++++++---------- .../cli-kit/src/shared/node/ui/components.ts | 8 +++ packages/cli-kit/src/shared/node/ui/hooks.ts | 1 + .../{public => shared}/node/upgrade.test.ts | 0 .../src/{public => shared}/node/upgrade.ts | 0 .../{public => shared}/node/version.test.ts | 6 +- .../src/{public => shared}/node/version.ts | 2 +- .../{public => shared}/node/vscode.test.ts | 0 .../src/{public => shared}/node/vscode.ts | 2 +- .../src/{private/node => shared}/ui/alert.tsx | 4 +- .../ui/components/Alert.test.tsx | 4 +- .../node => shared}/ui/components/Alert.tsx | 0 .../ui/components/AutocompletePrompt.test.tsx | 6 +- .../ui/components/AutocompletePrompt.tsx | 4 +- .../ui/components/Banner.test.tsx | 4 +- .../node => shared}/ui/components/Banner.tsx | 0 .../ui/components/Command.test.tsx | 2 +- .../node => shared}/ui/components/Command.tsx | 0 .../ui/components/ConcurrentOutput.test.tsx | 6 +- .../ui/components/ConcurrentOutput.tsx | 4 +- .../DangerousConfirmationPrompt.test.tsx | 4 +- .../DangerousConfirmationPrompt.tsx | 4 +- .../ui/components/FatalError.test.tsx | 6 +- .../ui/components/FatalError.tsx | 2 +- .../ui/components/FilePath.test.tsx | 2 +- .../ui/components/FilePath.tsx | 0 .../ui/components/Link.test.tsx | 2 +- .../node => shared}/ui/components/Link.tsx | 0 .../ui/components/List.test.tsx | 4 +- .../node => shared}/ui/components/List.tsx | 0 .../ui/components/LoadingBar.test.tsx | 8 +-- .../ui/components/LoadingBar.tsx | 2 +- .../components/Prompts/InfoMessage.test.tsx | 2 +- .../ui/components/Prompts/InfoMessage.tsx | 0 .../ui/components/Prompts/InfoTable.test.tsx | 4 +- .../ui/components/Prompts/InfoTable.tsx | 2 +- .../components/Prompts/PromptLayout.test.tsx | 2 +- .../ui/components/Prompts/PromptLayout.tsx | 2 +- .../ui/components/Scrollbar.test.tsx | 2 +- .../ui/components/Scrollbar.tsx | 2 +- .../ui/components/SelectInput.test.tsx | 4 +- .../ui/components/SelectInput.tsx | 2 +- .../ui/components/SelectPrompt.test.tsx | 8 +-- .../ui/components/SelectPrompt.tsx | 2 +- .../ui/components/SingleTask.test.tsx | 4 +- .../ui/components/SingleTask.tsx | 4 +- .../ui/components/Subdued.test.tsx | 2 +- .../node => shared}/ui/components/Subdued.tsx | 0 .../ui/components/Table/Column.ts | 0 .../ui/components/Table/Row.tsx | 2 +- .../ui/components/Table/ScalarDict.ts | 0 .../ui/components/Table/Table.test.tsx | 2 +- .../ui/components/Table/Table.tsx | 2 +- .../ui/components/TabularData.tsx | 2 +- .../ui/components/Tasks.test.tsx | 8 +-- .../node => shared}/ui/components/Tasks.tsx | 6 +- .../ui/components/TextAnimation.test.tsx | 4 +- .../ui/components/TextAnimation.tsx | 0 .../ui/components/TextInput.test.tsx | 8 +-- .../ui/components/TextInput.tsx | 2 +- .../ui/components/TextPrompt.test.tsx | 8 +-- .../ui/components/TextPrompt.tsx | 4 +- .../ui/components/TokenizedText.test.tsx | 4 +- .../ui/components/TokenizedText.tsx | 0 .../ui/components/UserInput.test.tsx | 2 +- .../ui/components/UserInput.tsx | 0 .../ui/contexts/LinksContext.ts | 0 .../ui/hooks/use-abort-signal.ts | 2 +- .../ui/hooks/use-async-and-unmount.ts | 0 .../ui/hooks/use-exit-on-ctrl-c.test.ts | 4 +- .../ui/hooks/use-exit-on-ctrl-c.ts | 2 +- .../ui/hooks/use-layout.test.ts | 2 +- .../node => shared}/ui/hooks/use-layout.ts | 0 .../node => shared}/ui/hooks/use-prompt.ts | 0 .../ui/hooks/use-select-state.ts | 0 .../testing/ui.ts => shared/ui/testing.ts} | 9 +-- .../src/{private/node => shared/ui}/ui.tsx | 8 +-- .../node => shared}/ui/utilities.test.ts | 0 .../{private/node => shared}/ui/utilities.ts | 0 .../vendor/dev_server/dev-server-2016.ts | 0 .../vendor/dev_server/dev-server-2024.ts | 0 .../vendor/dev_server/dev-server.ts | 0 .../node => shared}/vendor/dev_server/env.ts | 0 .../vendor/dev_server/index.ts | 0 .../vendor/dev_server/network-interfaces.d.ts | 0 .../vendor/dev_server/network/host.ts | 0 .../vendor/dev_server/network/index.ts | 0 .../vendor/dev_server/types.ts | 0 .../export/InstantaneousMetricReader.ts | 0 .../BaseOtelService/BaseOtelService.ts | 0 .../DefaultMeterProvider.ts | 0 .../DefaultOtelService/DefaultOtelService.ts | 0 .../vendor/otel-js/service/types.ts | 0 .../vendor/otel-js/utils/throttle.ts | 0 .../vendor/otel-js/utils/validators.ts | 0 .../src/{public/node => }/themes/api.test.ts | 28 ++++----- .../src/{public/node => }/themes/api.ts | 43 ++++++------- .../src/{public/node => }/themes/conf.ts | 6 +- .../src/{public/node => }/themes/factories.ts | 0 .../themes/generate-theme-name.test.ts | 0 .../node => }/themes/generate-theme-name.ts | 0 .../themes/replace-invalid-characters.test.ts | 0 .../themes/replace-invalid-characters.ts | 0 .../{public/node => }/themes/theme-manager.ts | 6 +- .../src/{public/node => }/themes/types.ts | 2 +- .../src/{public/node => }/themes/urls.test.ts | 0 .../src/{public/node => }/themes/urls.ts | 2 +- .../src/{public/node => }/themes/utils.ts | 4 +- .../node/api/webhooks.ts => webhooks/api.ts} | 4 +- .../cli/src/cli/commands/auth/login.test.ts | 6 +- packages/cli/src/cli/commands/auth/login.ts | 6 +- .../cli/src/cli/commands/auth/logout.test.ts | 6 +- packages/cli/src/cli/commands/auth/logout.ts | 6 +- packages/cli/src/cli/commands/cache/clear.ts | 4 +- .../src/cli/commands/debug/command-flags.ts | 6 +- .../src/cli/commands/docs/generate.test.ts | 4 +- .../cli/src/cli/commands/docs/generate.ts | 8 +-- .../commands/doctor-release/doctor-release.ts | 6 +- .../commands/doctor-release/theme/index.ts | 8 +-- packages/cli/src/cli/commands/help.ts | 2 +- .../src/cli/commands/kitchen-sink/async.ts | 2 +- .../src/cli/commands/kitchen-sink/index.ts | 2 +- .../src/cli/commands/kitchen-sink/prompts.ts | 2 +- .../src/cli/commands/kitchen-sink/static.ts | 2 +- .../cli/commands/notifications/generate.ts | 2 +- .../src/cli/commands/notifications/list.ts | 4 +- packages/cli/src/cli/commands/search.ts | 2 +- packages/cli/src/cli/commands/upgrade.ts | 6 +- packages/cli/src/cli/commands/version.ts | 2 +- .../cli/services/commands/notifications.ts | 12 ++-- .../src/cli/services/commands/search.test.ts | 4 +- .../cli/src/cli/services/commands/search.ts | 2 +- .../src/cli/services/commands/version.test.ts | 6 +- .../cli/src/cli/services/commands/version.ts | 4 +- .../cli/services/doctor-release/context.ts | 4 +- .../services/doctor-release/theme/runner.ts | 6 +- .../doctor-release/theme/tests/init.ts | 6 +- .../doctor-release/theme/tests/push.ts | 2 +- .../src/cli/services/kitchen-sink/async.ts | 6 +- .../src/cli/services/kitchen-sink/prompts.ts | 4 +- .../src/cli/services/kitchen-sink/static.ts | 4 +- packages/cli/src/cli/services/upgrade.test.ts | 18 +++--- packages/cli/src/cli/services/upgrade.ts | 12 ++-- packages/cli/src/hooks/postrun.ts | 2 +- packages/cli/src/hooks/prerun.ts | 2 +- packages/cli/src/index.ts | 6 +- packages/create-app/src/hooks/postrun.ts | 2 +- packages/create-app/src/hooks/prerun.ts | 2 +- packages/create-app/src/index.ts | 2 +- .../src/install-cloudflared.test.ts | 4 +- .../src/install-cloudflared.ts | 8 +-- packages/plugin-cloudflare/src/provider.ts | 2 +- packages/plugin-cloudflare/src/tunnel.test.ts | 4 +- packages/plugin-cloudflare/src/tunnel.ts | 16 ++--- .../commands/config/autocorrect/off.test.ts | 2 +- .../src/commands/config/autocorrect/off.ts | 4 +- .../commands/config/autocorrect/on.test.ts | 2 +- .../src/commands/config/autocorrect/on.ts | 4 +- .../config/autocorrect/status.test.ts | 2 +- .../src/commands/config/autocorrect/status.ts | 4 +- .../plugin-did-you-mean/src/index.test.ts | 4 +- packages/plugin-did-you-mean/src/index.ts | 6 +- .../src/services/conf.test.ts | 4 +- .../plugin-did-you-mean/src/services/conf.ts | 2 +- .../theme/src/cli/commands/theme/check.ts | 14 ++--- .../theme/src/cli/commands/theme/console.ts | 6 +- .../theme/src/cli/commands/theme/delete.ts | 4 +- packages/theme/src/cli/commands/theme/dev.ts | 8 +-- .../theme/src/cli/commands/theme/duplicate.ts | 4 +- packages/theme/src/cli/commands/theme/info.ts | 12 ++-- packages/theme/src/cli/commands/theme/init.ts | 12 ++-- .../src/cli/commands/theme/language-server.ts | 2 +- packages/theme/src/cli/commands/theme/list.ts | 4 +- .../src/cli/commands/theme/metafields/pull.ts | 2 +- packages/theme/src/cli/commands/theme/open.ts | 4 +- .../theme/src/cli/commands/theme/package.ts | 2 +- .../theme/src/cli/commands/theme/profile.ts | 6 +- .../theme/src/cli/commands/theme/publish.ts | 4 +- packages/theme/src/cli/commands/theme/pull.ts | 8 +-- packages/theme/src/cli/commands/theme/push.ts | 8 +-- .../theme/src/cli/commands/theme/rename.ts | 4 +- .../theme/src/cli/commands/theme/serve.ts | 2 +- .../theme/src/cli/commands/theme/share.ts | 10 +-- packages/theme/src/cli/flags.test.ts | 8 +-- packages/theme/src/cli/flags.ts | 8 +-- packages/theme/src/cli/services/check.test.ts | 12 ++-- packages/theme/src/cli/services/check.ts | 8 +-- .../theme/src/cli/services/console.test.ts | 4 +- packages/theme/src/cli/services/console.ts | 6 +- .../theme/src/cli/services/delete.test.ts | 10 +-- packages/theme/src/cli/services/delete.ts | 12 ++-- packages/theme/src/cli/services/dev.test.ts | 14 ++--- packages/theme/src/cli/services/dev.ts | 16 ++--- .../theme/src/cli/services/duplicate.test.ts | 20 +++--- packages/theme/src/cli/services/duplicate.ts | 14 ++--- packages/theme/src/cli/services/info.test.ts | 4 +- packages/theme/src/cli/services/info.ts | 12 ++-- packages/theme/src/cli/services/init.test.ts | 20 +++--- packages/theme/src/cli/services/init.ts | 10 +-- packages/theme/src/cli/services/list.test.ts | 12 ++-- packages/theme/src/cli/services/list.ts | 8 +-- .../src/cli/services/local-storage.test.ts | 4 +- .../theme/src/cli/services/local-storage.ts | 6 +- .../src/cli/services/metafields-pull.test.ts | 12 ++-- .../theme/src/cli/services/metafields-pull.ts | 14 ++--- packages/theme/src/cli/services/open.test.ts | 10 +-- packages/theme/src/cli/services/open.ts | 8 +-- .../theme/src/cli/services/package.test.ts | 8 +-- packages/theme/src/cli/services/package.ts | 10 +-- .../theme/src/cli/services/profile.test.ts | 14 ++--- packages/theme/src/cli/services/profile.ts | 12 ++-- .../theme/src/cli/services/publish.test.ts | 12 ++-- packages/theme/src/cli/services/publish.ts | 10 +-- packages/theme/src/cli/services/pull.test.ts | 22 +++---- packages/theme/src/cli/services/pull.ts | 16 ++--- packages/theme/src/cli/services/push.test.ts | 24 ++++---- packages/theme/src/cli/services/push.ts | 20 +++--- .../theme/src/cli/services/rename.test.ts | 10 +-- packages/theme/src/cli/services/rename.ts | 8 +-- .../src/cli/utilities/asset-checksum.test.ts | 2 +- .../theme/src/cli/utilities/asset-checksum.ts | 4 +- .../src/cli/utilities/asset-ignore.test.ts | 12 ++-- .../theme/src/cli/utilities/asset-ignore.ts | 10 +-- .../theme/src/cli/utilities/asset-path.ts | 4 +- .../src/cli/utilities/cli-config.test.ts | 4 +- .../theme/src/cli/utilities/cli-config.ts | 4 +- .../development-theme-manager.test.ts | 10 +-- .../utilities/development-theme-manager.ts | 8 +-- .../theme/src/cli/utilities/errors.test.ts | 8 +-- packages/theme/src/cli/utilities/errors.ts | 8 +-- .../src/cli/utilities/log-request-line.ts | 4 +- .../theme/src/cli/utilities/notifier.test.ts | 4 +- packages/theme/src/cli/utilities/notifier.ts | 4 +- .../src/cli/utilities/repl/evaluator.test.ts | 6 +- .../theme/src/cli/utilities/repl/evaluator.ts | 4 +- .../src/cli/utilities/repl/presenter.test.ts | 4 +- .../theme/src/cli/utilities/repl/presenter.ts | 2 +- .../utilities/repl/repl-theme-manager.test.ts | 8 +-- .../cli/utilities/repl/repl-theme-manager.ts | 12 ++-- .../theme/src/cli/utilities/repl/repl.test.ts | 4 +- packages/theme/src/cli/utilities/repl/repl.ts | 4 +- .../src/cli/utilities/theme-command.test.ts | 20 +++--- .../theme/src/cli/utilities/theme-command.ts | 24 ++++---- .../cli/utilities/theme-downloader.test.ts | 6 +- .../src/cli/utilities/theme-downloader.ts | 8 +-- .../dev-server-session.test.ts | 12 ++-- .../theme-environment/dev-server-session.ts | 10 +-- .../hot-reload/server.test.ts | 4 +- .../theme-environment/hot-reload/server.ts | 10 +-- .../utilities/theme-environment/html.test.ts | 2 +- .../cli/utilities/theme-environment/html.ts | 10 +-- .../theme-environment/local-assets.ts | 6 +- .../cli/utilities/theme-environment/proxy.ts | 10 +-- .../remote-theme-watcher.test.ts | 10 +-- .../theme-environment/remote-theme-watcher.ts | 8 +-- .../storefront-password-prompt.test.ts | 4 +- .../storefront-password-prompt.ts | 4 +- .../storefront-renderer.test.ts | 2 +- .../theme-environment/storefront-renderer.ts | 8 +-- .../storefront-session.test.ts | 18 +++--- .../theme-environment/storefront-session.ts | 14 ++--- .../theme-environment/storefront-utils.ts | 2 +- .../theme-environment.test.ts | 10 +-- .../theme-environment/theme-environment.ts | 4 +- .../theme-environment/theme-polling.test.ts | 10 +-- .../theme-environment/theme-polling.ts | 12 ++-- .../theme-reconciliation.test.ts | 14 ++--- .../theme-environment/theme-reconciliation.ts | 12 ++-- .../cli/utilities/theme-environment/types.ts | 4 +- .../theme-ext-fs.test.ts | 4 +- .../theme-ext-environment/theme-ext-fs.ts | 10 +-- .../theme-ext-environment/theme-ext-server.ts | 4 +- .../theme/src/cli/utilities/theme-fs-empty.ts | 2 +- .../theme/src/cli/utilities/theme-fs.test.ts | 24 ++++---- packages/theme/src/cli/utilities/theme-fs.ts | 16 ++--- .../theme-fs/theme-fs-mock-factory.ts | 2 +- .../src/cli/utilities/theme-listing.test.ts | 4 +- .../theme/src/cli/utilities/theme-listing.ts | 8 +-- .../src/cli/utilities/theme-selector.test.ts | 14 ++--- .../theme/src/cli/utilities/theme-selector.ts | 14 ++--- .../utilities/theme-selector/fetch.test.ts | 12 ++-- .../src/cli/utilities/theme-selector/fetch.ts | 8 +-- .../utilities/theme-selector/filter.test.ts | 2 +- .../cli/utilities/theme-selector/filter.ts | 4 +- .../theme/src/cli/utilities/theme-store.ts | 6 +- .../theme/src/cli/utilities/theme-ui.test.ts | 10 +-- packages/theme/src/cli/utilities/theme-ui.ts | 8 +-- .../src/cli/utilities/theme-uploader.test.ts | 10 +-- .../theme/src/cli/utilities/theme-uploader.ts | 12 ++-- 925 files changed, 2594 insertions(+), 2566 deletions(-) rename packages/cli-kit/src/{public/node/api/admin.test.ts => admin/api.test.ts} (90%) rename packages/cli-kit/src/{public/node/api/admin.ts => admin/api.ts} (92%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/get_theme.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/get_theme_file_bodies.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/get_theme_file_checksums.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/get_themes.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/metafield_definitions_by_owner_type.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/online_store_password_protection.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/public_api_versions.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/theme_create.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/theme_delete.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/theme_duplicate.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/theme_files_delete.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/theme_files_upsert.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/theme_publish.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/theme_update.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/generated/types.d.ts (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/mutations/theme_create.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/mutations/theme_delete.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/mutations/theme_duplicate.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/mutations/theme_files_delete.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/mutations/theme_files_upsert.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/mutations/theme_publish.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/mutations/theme_update.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/queries/get_theme.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/queries/get_theme_file_bodies.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/queries/get_theme_file_checksums.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/queries/get_themes.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/queries/metafield_definitions_by_owner_type.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/queries/online_store_password_protection.graphql (100%) rename packages/cli-kit/src/{cli/api/graphql/admin => admin/graphql}/queries/public_api_versions.graphql (100%) rename packages/cli-kit/src/{public/node/api => admin}/rest-api-throttler.ts (98%) rename packages/cli-kit/src/{private/node/api => admin}/rest.ts (84%) rename packages/cli-kit/src/{public/node/api/app-dev.test.ts => app-dev/api.test.ts} (87%) rename packages/cli-kit/src/{public/node/api/app-dev.ts => app-dev/api.ts} (86%) rename packages/cli-kit/src/{public/node/api/app-management.test.ts => app-management/api.test.ts} (84%) rename packages/cli-kit/src/{public/node/api/app-management.ts => app-management/api.ts} (90%) rename packages/cli-kit/src/{public/node/api/business-platform.ts => business-platform/api.ts} (94%) rename packages/cli-kit/src/{private/node/api/graphql/business-platform-destinations => business-platform/graphql}/user-email.ts (100%) rename packages/cli-kit/src/{public/node/api/functions.ts => functions/api.ts} (91%) rename packages/cli-kit/src/{private/node/session => identity/core}/device-authorization.test.ts (93%) rename packages/cli-kit/src/{private/node/session => identity/core}/device-authorization.ts (94%) rename packages/cli-kit/src/{private/node/session => identity/core}/exchange.test.ts (97%) rename packages/cli-kit/src/{private/node/session => identity/core}/exchange.ts (96%) rename packages/cli-kit/src/{private/node/session => identity/core}/identity.ts (92%) rename packages/cli-kit/src/{private/node/session => identity/core}/schema.ts (97%) rename packages/cli-kit/src/{private/node/session => identity/core}/scopes.test.ts (100%) rename packages/cli-kit/src/{private/node/session => identity/core}/scopes.ts (96%) rename packages/cli-kit/src/{private/node => identity/core}/session.test.ts (94%) rename packages/cli-kit/src/{private/node => identity/core}/session.ts (93%) rename packages/cli-kit/src/{private/node/session => identity/core}/store.test.ts (94%) rename packages/cli-kit/src/{private/node/session => identity/core}/store.ts (91%) rename packages/cli-kit/src/{private/node/session => identity/core}/validate.test.ts (98%) rename packages/cli-kit/src/{private/node/session => identity/core}/validate.ts (92%) rename packages/cli-kit/src/{public/node => identity}/session-prompt.test.ts (94%) rename packages/cli-kit/src/{public/node => identity}/session-prompt.ts (90%) rename packages/cli-kit/src/{public/node => identity}/session.test.ts (95%) rename packages/cli-kit/src/{public/node => identity}/session.ts (95%) rename packages/cli-kit/src/{public/node/api/partners.test.ts => partners/api.test.ts} (80%) rename packages/cli-kit/src/{public/node/api/partners.ts => partners/api.ts} (87%) delete mode 100644 packages/cli-kit/src/public/node/ui/components.ts delete mode 100644 packages/cli-kit/src/public/node/ui/hooks.ts rename packages/cli-kit/src/{public => shared}/common/array.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/array.ts (100%) rename packages/cli-kit/src/{public => shared}/common/collection.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/collection.ts (100%) rename packages/cli-kit/src/{public => shared}/common/function.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/function.ts (100%) rename packages/cli-kit/src/{private/common => shared/common/internal}/array.ts (100%) rename packages/cli-kit/src/{private/common => shared/common/internal}/json.ts (100%) rename packages/cli-kit/src/{private/common => shared/common/internal}/ts/overloaded-parameters.ts (100%) rename packages/cli-kit/src/{public => shared}/common/json.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/json.ts (100%) rename packages/cli-kit/src/{public => shared}/common/lang.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/lang.ts (100%) rename packages/cli-kit/src/{public => shared}/common/object.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/object.ts (98%) rename packages/cli-kit/src/{public => shared}/common/retry.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/retry.ts (100%) rename packages/cli-kit/src/{public => shared}/common/string.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/string.ts (98%) rename packages/cli-kit/src/{public => shared}/common/ts/deep-required.ts (100%) rename packages/cli-kit/src/{public => shared}/common/ts/json-narrowing.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/ts/json-narrowing.ts (100%) rename packages/cli-kit/src/{public => shared}/common/ts/pick-by-prefix.ts (100%) rename packages/cli-kit/src/{public => shared}/common/url.test.ts (100%) rename packages/cli-kit/src/{public => shared}/common/url.ts (100%) rename packages/cli-kit/src/{public => shared}/common/version.ts (100%) rename packages/cli-kit/src/{public => shared}/node/abort.ts (100%) rename packages/cli-kit/src/{public => shared}/node/analytics.test.ts (98%) rename packages/cli-kit/src/{public => shared}/node/analytics.ts (94%) rename packages/cli-kit/src/{public => shared}/node/api/graphql.test.ts (98%) rename packages/cli-kit/src/{public => shared}/node/api/graphql.ts (96%) rename packages/cli-kit/src/{public => shared}/node/api/utilities.ts (100%) rename packages/cli-kit/src/{public => shared}/node/archiver.integration.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/archiver.ts (98%) rename packages/cli-kit/src/{public => shared}/node/base-command.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/base-command.ts (99%) rename packages/cli-kit/src/{public => shared}/node/cli-launcher.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/cli-launcher.ts (100%) rename packages/cli-kit/src/{public => shared}/node/cli.test.ts (98%) rename packages/cli-kit/src/{public => shared}/node/cli.ts (97%) rename packages/cli-kit/src/{public => shared}/node/colors.ts (100%) rename packages/cli-kit/src/{public => shared}/node/context/fqdn.test.ts (96%) rename packages/cli-kit/src/{public => shared}/node/context/fqdn.ts (96%) rename packages/cli-kit/src/{public => shared}/node/context/local.integration.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/context/local.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/context/local.ts (98%) rename packages/cli-kit/src/{public => shared}/node/context/utilities.ts (100%) rename packages/cli-kit/src/{public => shared}/node/crypto.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/crypto.ts (100%) rename packages/cli-kit/src/{public => shared}/node/custom-oclif-loader.ts (100%) rename packages/cli-kit/src/{public => shared}/node/doctor/framework.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/doctor/framework.ts (100%) rename packages/cli-kit/src/{public => shared}/node/doctor/reporter.ts (100%) rename packages/cli-kit/src/{public => shared}/node/doctor/types.ts (100%) rename packages/cli-kit/src/{public => shared}/node/dot-env.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/dot-env.ts (97%) rename packages/cli-kit/src/{public => shared}/node/environment.ts (99%) rename packages/cli-kit/src/{public => shared}/node/environments.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/environments.ts (97%) rename packages/cli-kit/src/{public => shared}/node/error-handler.test.ts (96%) rename packages/cli-kit/src/{public => shared}/node/error-handler.ts (95%) rename packages/cli-kit/src/{public => shared}/node/error.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/error.ts (97%) rename packages/cli-kit/src/{public => shared}/node/figures.ts (100%) rename packages/cli-kit/src/{public => shared}/node/framework.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/framework.ts (100%) rename packages/cli-kit/src/{public => shared}/node/fs.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/fs.ts (99%) rename packages/cli-kit/src/{public => shared}/node/git.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/git.ts (99%) rename packages/cli-kit/src/{public => shared}/node/github.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/github.ts (98%) rename packages/cli-kit/src/{public => shared}/node/global-context.ts (100%) rename packages/cli-kit/src/{public => shared}/node/hidden-folder.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/hidden-folder.ts (100%) rename packages/cli-kit/src/{public => shared}/node/hooks/deprecations.ts (94%) rename packages/cli-kit/src/{public => shared}/node/hooks/postrun.ts (93%) rename packages/cli-kit/src/{public => shared}/node/hooks/prerun.test.ts (96%) rename packages/cli-kit/src/{public => shared}/node/hooks/prerun.ts (91%) rename packages/cli-kit/src/{public => shared}/node/hrtime.ts (100%) rename packages/cli-kit/src/{public => shared}/node/http.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/http.ts (96%) rename packages/cli-kit/src/{public => shared}/node/import-extractor.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/import-extractor.ts (100%) rename packages/cli-kit/src/{public => shared}/node/ink.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/__snapshots__/otel-metrics.test.ts.snap (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/analytics.ts (84%) rename packages/cli-kit/src/{private/node => shared/node/internal}/analytics/bounded-collections.test.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/analytics/bounded-collections.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/analytics/error-categorizer.test.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/analytics/error-categorizer.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/analytics/storage.test.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/analytics/storage.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/api.test.ts (99%) rename packages/cli-kit/src/{private/node => shared/node/internal}/api.ts (99%) rename packages/cli-kit/src/{private/node => shared/node/internal}/api/graphql.ts (96%) rename packages/cli-kit/src/{private/node => shared/node/internal}/api/headers.test.ts (92%) rename packages/cli-kit/src/{private/node => shared/node/internal}/api/headers.ts (92%) rename packages/cli-kit/src/{private/node => shared/node/internal}/api/urls.test.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/api/urls.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/conf-store.test.ts (98%) rename packages/cli-kit/src/{private/node => shared/node/internal}/conf-store.ts (97%) rename packages/cli-kit/src/{private/node => shared/node/internal}/constants.ts (98%) rename packages/cli-kit/src/{private/node => shared/node/internal}/content-tokens.test.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/content-tokens.ts (94%) rename packages/cli-kit/src/{private/node => shared/node/internal}/context/deprecations-store.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/context/service.test.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/context/service.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/context/utilities.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/otel-metrics.test.ts (94%) rename packages/cli-kit/src/{private/node => shared/node/internal}/otel-metrics.ts (93%) rename packages/cli-kit/src/{private/node => shared/node/internal}/output.ts (93%) rename packages/cli-kit/src/{private/node => shared/node/internal}/request-ids.test.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/request-ids.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/sleep-with-backoff.test.ts (100%) rename packages/cli-kit/src/{private/node => shared/node/internal}/sleep-with-backoff.ts (97%) rename packages/cli-kit/src/{public => shared}/node/is-global.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/is-global.ts (100%) rename packages/cli-kit/src/{public => shared}/node/json-schema.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/json-schema.ts (100%) rename packages/cli-kit/src/{public => shared}/node/liquid.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/liquid.ts (97%) rename packages/cli-kit/src/{public => shared}/node/local-storage.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/local-storage.ts (100%) rename packages/cli-kit/src/{public => shared}/node/logs.ts (87%) rename packages/cli-kit/src/{public => shared}/node/metadata.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/metadata.ts (99%) rename packages/cli-kit/src/{public => shared}/node/mimes.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/mimes.ts (100%) rename packages/cli-kit/src/{public => shared}/node/monorail.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/monorail.ts (98%) rename packages/cli-kit/src/{public => shared}/node/multiple-installation-warning.ts (96%) rename packages/cli-kit/src/{public => shared}/node/node-package-manager.test.ts (99%) rename packages/cli-kit/src/{public => shared}/node/node-package-manager.ts (99%) rename packages/cli-kit/src/{public => shared}/node/notifications-system.test.ts (99%) rename packages/cli-kit/src/{public => shared}/node/notifications-system.ts (99%) rename packages/cli-kit/src/{public => shared}/node/os.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/os.ts (97%) rename packages/cli-kit/src/{public => shared}/node/output.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/output.ts (98%) rename packages/cli-kit/src/{public => shared}/node/path.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/path.ts (100%) rename packages/cli-kit/src/{public => shared}/node/plugins.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/plugins.ts (98%) rename packages/cli-kit/src/{public => shared}/node/plugins/multiple-installation-warning.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/plugins/tunnel.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/plugins/tunnel.ts (100%) rename packages/cli-kit/src/{public => shared}/node/promises.ts (100%) rename packages/cli-kit/src/{public => shared}/node/result.test.ts (97%) rename packages/cli-kit/src/{public => shared}/node/result.ts (100%) rename packages/cli-kit/src/{public => shared}/node/schema.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/schema.ts (100%) rename packages/cli-kit/src/{public => shared}/node/serial-batch-processor.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/serial-batch-processor.ts (100%) rename packages/cli-kit/src/{public => shared}/node/system.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/system.ts (99%) rename packages/cli-kit/src/{public => shared}/node/tcp.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/tcp.ts (97%) rename packages/cli-kit/src/{public => shared}/node/testing/output.ts (91%) rename packages/cli-kit/src/{public => shared}/node/testing/test-with-temp-dir.ts (100%) rename packages/cli-kit/src/{public => shared}/node/testing/ui.ts (79%) rename packages/cli-kit/src/{public => shared}/node/toml.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/toml.ts (93%) rename packages/cli-kit/src/{public => shared}/node/tree-kill.ts (100%) rename packages/cli-kit/src/{public => shared}/node/ui.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/ui.tsx (92%) create mode 100644 packages/cli-kit/src/shared/node/ui/components.ts create mode 100644 packages/cli-kit/src/shared/node/ui/hooks.ts rename packages/cli-kit/src/{public => shared}/node/upgrade.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/upgrade.ts (100%) rename packages/cli-kit/src/{public => shared}/node/version.test.ts (95%) rename packages/cli-kit/src/{public => shared}/node/version.ts (97%) rename packages/cli-kit/src/{public => shared}/node/vscode.test.ts (100%) rename packages/cli-kit/src/{public => shared}/node/vscode.ts (95%) rename packages/cli-kit/src/{private/node => shared}/ui/alert.tsx (91%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Alert.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Alert.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/AutocompletePrompt.test.tsx (99%) rename packages/cli-kit/src/{private/node => shared}/ui/components/AutocompletePrompt.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Banner.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Banner.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Command.test.tsx (88%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Command.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/ConcurrentOutput.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/ConcurrentOutput.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/DangerousConfirmationPrompt.test.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/DangerousConfirmationPrompt.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/FatalError.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/FatalError.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/FilePath.test.tsx (89%) rename packages/cli-kit/src/{private/node => shared}/ui/components/FilePath.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Link.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Link.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/List.test.tsx (96%) rename packages/cli-kit/src/{private/node => shared}/ui/components/List.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/LoadingBar.test.tsx (96%) rename packages/cli-kit/src/{private/node => shared}/ui/components/LoadingBar.tsx (92%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Prompts/InfoMessage.test.tsx (93%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Prompts/InfoMessage.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Prompts/InfoTable.test.tsx (94%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Prompts/InfoTable.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Prompts/PromptLayout.test.tsx (99%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Prompts/PromptLayout.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Scrollbar.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Scrollbar.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/SelectInput.test.tsx (99%) rename packages/cli-kit/src/{private/node => shared}/ui/components/SelectInput.tsx (99%) rename packages/cli-kit/src/{private/node => shared}/ui/components/SelectPrompt.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/SelectPrompt.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/SingleTask.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/SingleTask.tsx (92%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Subdued.test.tsx (87%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Subdued.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Table/Column.ts (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Table/Row.tsx (95%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Table/ScalarDict.ts (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Table/Table.test.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Table/Table.tsx (96%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TabularData.tsx (94%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Tasks.test.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/Tasks.tsx (94%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TextAnimation.test.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TextAnimation.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TextInput.test.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TextInput.tsx (98%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TextPrompt.test.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TextPrompt.tsx (97%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TokenizedText.test.tsx (94%) rename packages/cli-kit/src/{private/node => shared}/ui/components/TokenizedText.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/components/UserInput.test.tsx (88%) rename packages/cli-kit/src/{private/node => shared}/ui/components/UserInput.tsx (100%) rename packages/cli-kit/src/{private/node => shared}/ui/contexts/LinksContext.ts (100%) rename packages/cli-kit/src/{private/node => shared}/ui/hooks/use-abort-signal.ts (92%) rename packages/cli-kit/src/{private/node => shared}/ui/hooks/use-async-and-unmount.ts (100%) rename packages/cli-kit/src/{private/node => shared}/ui/hooks/use-exit-on-ctrl-c.test.ts (97%) rename packages/cli-kit/src/{private/node => shared}/ui/hooks/use-exit-on-ctrl-c.ts (90%) rename packages/cli-kit/src/{private/node => shared}/ui/hooks/use-layout.test.ts (98%) rename packages/cli-kit/src/{private/node => shared}/ui/hooks/use-layout.ts (100%) rename packages/cli-kit/src/{private/node => shared}/ui/hooks/use-prompt.ts (100%) rename packages/cli-kit/src/{private/node => shared}/ui/hooks/use-select-state.ts (100%) rename packages/cli-kit/src/{private/node/testing/ui.ts => shared/ui/testing.ts} (95%) rename packages/cli-kit/src/{private/node => shared/ui}/ui.tsx (90%) rename packages/cli-kit/src/{private/node => shared}/ui/utilities.test.ts (100%) rename packages/cli-kit/src/{private/node => shared}/ui/utilities.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/dev-server-2016.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/dev-server-2024.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/dev-server.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/env.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/index.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/network-interfaces.d.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/network/host.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/network/index.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/dev_server/types.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/otel-js/export/InstantaneousMetricReader.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/otel-js/service/BaseOtelService/BaseOtelService.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/otel-js/service/DefaultOtelService/DefaultMeterProvider.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/otel-js/service/DefaultOtelService/DefaultOtelService.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/otel-js/service/types.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/otel-js/utils/throttle.ts (100%) rename packages/cli-kit/src/{public/node => shared}/vendor/otel-js/utils/validators.ts (100%) rename packages/cli-kit/src/{public/node => }/themes/api.test.ts (94%) rename packages/cli-kit/src/{public/node => }/themes/api.ts (91%) rename packages/cli-kit/src/{public/node => }/themes/conf.ts (85%) rename packages/cli-kit/src/{public/node => }/themes/factories.ts (100%) rename packages/cli-kit/src/{private/node => }/themes/generate-theme-name.test.ts (100%) rename packages/cli-kit/src/{private/node => }/themes/generate-theme-name.ts (100%) rename packages/cli-kit/src/{private/node => }/themes/replace-invalid-characters.test.ts (100%) rename packages/cli-kit/src/{private/node => }/themes/replace-invalid-characters.ts (100%) rename packages/cli-kit/src/{public/node => }/themes/theme-manager.ts (88%) rename packages/cli-kit/src/{public/node => }/themes/types.ts (99%) rename packages/cli-kit/src/{public/node => }/themes/urls.test.ts (100%) rename packages/cli-kit/src/{public/node => }/themes/urls.ts (94%) rename packages/cli-kit/src/{public/node => }/themes/utils.ts (89%) rename packages/cli-kit/src/{public/node/api/webhooks.ts => webhooks/api.ts} (90%) diff --git a/configurations/vite.config.ts b/configurations/vite.config.ts index 09ec4ee55d3..1d3725800dc 100644 --- a/configurations/vite.config.ts +++ b/configurations/vite.config.ts @@ -72,7 +72,7 @@ export const aliases = (packagePath: string) => { { find: /@shopify\/cli-kit\/(.+)/, replacement: (importedModule: string) => { - return path.join(packagePath, `../cli-kit/src/public/${importedModule.replace('@shopify/cli-kit/', '')}`) + return path.join(packagePath, `../cli-kit/src/${importedModule.replace('@shopify/cli-kit/', '')}`) }, }, {find: '@shopify/cli-kit', replacement: path.join(packagePath, '../cli-kit/src/index')}, diff --git a/graphql.config.ts b/graphql.config.ts index 5396c4d64bc..2f81f6c0d75 100644 --- a/graphql.config.ts +++ b/graphql.config.ts @@ -1,20 +1,29 @@ +function graphqlBasePath(name: string, project: string): string { + if (project === 'cli-kit') { + // cli-kit uses domain-based structure: src/admin/graphql/ + return `./packages/cli-kit/src/admin/graphql` + } + return `./packages/${project}/src/cli/api/graphql/${name}` +} + function projectFactory(name: string, schemaName: string, project: string = 'app') { + const basePath = graphqlBasePath(name, project) return { - schema: `./packages/${project}/src/cli/api/graphql/${name}/${schemaName}`, + schema: `${basePath}/${schemaName}`, documents: [ - `./packages/${project}/src/cli/api/graphql/${name}/queries/**/*.graphql`, - `./packages/${project}/src/cli/api/graphql/${name}/mutations/**/*.graphql`, + `${basePath}/queries/**/*.graphql`, + `${basePath}/mutations/**/*.graphql`, ], extensions: { codegen: { generates: { - [`./packages/${project}/src/cli/api/graphql/${name}/generated/types.d.ts`]: { + [`${basePath}/generated/types.d.ts`]: { plugins: [ {'graphql-codegen-typescript-operation-types': {enumsAsTypes: true, useTypeImports: true}}, { add: { content: - "/* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any, tsdoc/syntax, @typescript-eslint/no-duplicate-type-constituents, @typescript-eslint/no-redundant-type-constituents, @nx/enforce-module-boundaries */\nimport {JsonMapType} from '@shopify/cli-kit/node/toml'", + "/* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/ban-types, @typescript-eslint/no-explicit-any, tsdoc/syntax, @typescript-eslint/no-duplicate-type-constituents, @typescript-eslint/no-redundant-type-constituents, @nx/enforce-module-boundaries */\nimport {JsonMapType} from '@shopify/cli-kit/shared/node/toml'", }, }, ], @@ -29,13 +38,13 @@ function projectFactory(name: string, schemaName: string, project: string = 'app }, }, }, - [`./packages/${project}/src/cli/api/graphql/${name}/generated/`]: { + [`${basePath}/generated/`]: { preset: 'near-operation-file', plugins: [ { add: { content: - "/* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/ban-types, @typescript-eslint/no-duplicate-type-constituents, @typescript-eslint/no-redundant-type-constituents, @nx/enforce-module-boundaries */\nimport {JsonMapType} from '@shopify/cli-kit/node/toml'", + "/* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/ban-types, @typescript-eslint/no-duplicate-type-constituents, @typescript-eslint/no-redundant-type-constituents, @nx/enforce-module-boundaries */\nimport {JsonMapType} from '@shopify/cli-kit/shared/node/toml'", }, }, { diff --git a/packages/app/src/cli/api/admin-as-app.test.ts b/packages/app/src/cli/api/admin-as-app.test.ts index 0142c9e376c..f22b1b4b82c 100644 --- a/packages/app/src/cli/api/admin-as-app.test.ts +++ b/packages/app/src/cli/api/admin-as-app.test.ts @@ -1,10 +1,10 @@ import {adminAsAppRequestDoc} from './admin-as-app.js' -import {graphqlRequestDoc} from '@shopify/cli-kit/node/api/graphql' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {graphqlRequestDoc} from '@shopify/cli-kit/shared/node/api/graphql' +import {AdminSession} from '@shopify/cli-kit/identity/session' import {describe, test, expect, vi, beforeEach} from 'vitest' import {TypedDocumentNode} from '@graphql-typed-document-node/core' -vi.mock('@shopify/cli-kit/node/api/graphql') +vi.mock('@shopify/cli-kit/shared/node/api/graphql') describe('adminAsAppRequestDoc', () => { const mockSession: AdminSession = { diff --git a/packages/app/src/cli/api/admin-as-app.ts b/packages/app/src/cli/api/admin-as-app.ts index f5d57457f0c..661608fea8e 100644 --- a/packages/app/src/cli/api/admin-as-app.ts +++ b/packages/app/src/cli/api/admin-as-app.ts @@ -1,6 +1,6 @@ -import {graphqlRequestDoc} from '@shopify/cli-kit/node/api/graphql' -import {adminUrl} from '@shopify/cli-kit/node/api/admin' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {graphqlRequestDoc} from '@shopify/cli-kit/shared/node/api/graphql' +import {adminUrl} from '@shopify/cli-kit/admin/api' +import {AdminSession} from '@shopify/cli-kit/identity/session' import {Variables} from 'graphql-request' import {TypedDocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/admin/generated/types.d.ts b/packages/app/src/cli/api/graphql/admin/generated/types.d.ts index 98ff1c678d8..93ea966a69e 100644 --- a/packages/app/src/cli/api/graphql/admin/generated/types.d.ts +++ b/packages/app/src/cli/api/graphql/admin/generated/types.d.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any, tsdoc/syntax */ -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' export type Maybe = T | null export type InputMaybe = Maybe diff --git a/packages/app/src/cli/api/graphql/app-dev/generated/dev-session-create.ts b/packages/app/src/cli/api/graphql/app-dev/generated/dev-session-create.ts index 32ca3b645b1..1c25cef3bf2 100644 --- a/packages/app/src/cli/api/graphql/app-dev/generated/dev-session-create.ts +++ b/packages/app/src/cli/api/graphql/app-dev/generated/dev-session-create.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-dev/generated/dev-session-update.ts b/packages/app/src/cli/api/graphql/app-dev/generated/dev-session-update.ts index 243629fa441..a39a50c800f 100644 --- a/packages/app/src/cli/api/graphql/app-dev/generated/dev-session-update.ts +++ b/packages/app/src/cli/api/graphql/app-dev/generated/dev-session-update.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-dev/generated/types.d.ts b/packages/app/src/cli/api/graphql/app-dev/generated/types.d.ts index 024de4d7d71..b8f2ff3cd3c 100644 --- a/packages/app/src/cli/api/graphql/app-dev/generated/types.d.ts +++ b/packages/app/src/cli/api/graphql/app-dev/generated/types.d.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any, tsdoc/syntax */ -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' export type Maybe = T | null export type InputMaybe = Maybe diff --git a/packages/app/src/cli/api/graphql/app-management/generated/active-app-release-from-api-key.ts b/packages/app/src/cli/api/graphql/app-management/generated/active-app-release-from-api-key.ts index 718d629f8d3..e87ca8ddcc8 100644 --- a/packages/app/src/cli/api/graphql/app-management/generated/active-app-release-from-api-key.ts +++ b/packages/app/src/cli/api/graphql/app-management/generated/active-app-release-from-api-key.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-management/generated/active-app-release.ts b/packages/app/src/cli/api/graphql/app-management/generated/active-app-release.ts index b9c039b32cf..c5d054439ee 100644 --- a/packages/app/src/cli/api/graphql/app-management/generated/active-app-release.ts +++ b/packages/app/src/cli/api/graphql/app-management/generated/active-app-release.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-management/generated/app-version-by-id.ts b/packages/app/src/cli/api/graphql/app-management/generated/app-version-by-id.ts index 1b6a19476e0..3fe06bb6a19 100644 --- a/packages/app/src/cli/api/graphql/app-management/generated/app-version-by-id.ts +++ b/packages/app/src/cli/api/graphql/app-management/generated/app-version-by-id.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-management/generated/app-version-by-tag.ts b/packages/app/src/cli/api/graphql/app-management/generated/app-version-by-tag.ts index c704158d41a..40f08bbaee4 100644 --- a/packages/app/src/cli/api/graphql/app-management/generated/app-version-by-tag.ts +++ b/packages/app/src/cli/api/graphql/app-management/generated/app-version-by-tag.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-management/generated/create-app-version.ts b/packages/app/src/cli/api/graphql/app-management/generated/create-app-version.ts index 72d02487a97..6a7ef098a8c 100644 --- a/packages/app/src/cli/api/graphql/app-management/generated/create-app-version.ts +++ b/packages/app/src/cli/api/graphql/app-management/generated/create-app-version.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-management/generated/create-app.ts b/packages/app/src/cli/api/graphql/app-management/generated/create-app.ts index 1c409ba36fc..e1fb8414b5a 100644 --- a/packages/app/src/cli/api/graphql/app-management/generated/create-app.ts +++ b/packages/app/src/cli/api/graphql/app-management/generated/create-app.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-management/generated/release-version.ts b/packages/app/src/cli/api/graphql/app-management/generated/release-version.ts index cc5fea2e080..22a6994aef9 100644 --- a/packages/app/src/cli/api/graphql/app-management/generated/release-version.ts +++ b/packages/app/src/cli/api/graphql/app-management/generated/release-version.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions */ import * as Types from './types.js' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/app/src/cli/api/graphql/app-management/generated/types.d.ts b/packages/app/src/cli/api/graphql/app-management/generated/types.d.ts index 91a28421212..bdc15909858 100644 --- a/packages/app/src/cli/api/graphql/app-management/generated/types.d.ts +++ b/packages/app/src/cli/api/graphql/app-management/generated/types.d.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any, tsdoc/syntax */ -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' export type Maybe = T | null export type InputMaybe = Maybe diff --git a/packages/app/src/cli/api/graphql/bulk-operations/generated/types.d.ts b/packages/app/src/cli/api/graphql/bulk-operations/generated/types.d.ts index c68fb733477..62dfcdeb97a 100644 --- a/packages/app/src/cli/api/graphql/bulk-operations/generated/types.d.ts +++ b/packages/app/src/cli/api/graphql/bulk-operations/generated/types.d.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any, tsdoc/syntax */ -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' export type Maybe = T | null export type InputMaybe = Maybe diff --git a/packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts b/packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts index 48f87ac5f97..cf17e749f00 100644 --- a/packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts +++ b/packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any */ -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' export type Maybe = T | null export type InputMaybe = Maybe diff --git a/packages/app/src/cli/api/graphql/current_account_info.ts b/packages/app/src/cli/api/graphql/current_account_info.ts index 05a9396b486..f4d37c82911 100644 --- a/packages/app/src/cli/api/graphql/current_account_info.ts +++ b/packages/app/src/cli/api/graphql/current_account_info.ts @@ -1,7 +1,7 @@ import {CurrentAccountInfoQuery} from './partners/generated/current-account-info.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {AccountInfo} from '@shopify/cli-kit/node/session' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AccountInfo} from '@shopify/cli-kit/identity/session' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export type CurrentAccountInfoSchema = CurrentAccountInfoQuery diff --git a/packages/app/src/cli/api/graphql/partners/generated/types.d.ts b/packages/app/src/cli/api/graphql/partners/generated/types.d.ts index b9572774e7a..f9f4d1aaa90 100644 --- a/packages/app/src/cli/api/graphql/partners/generated/types.d.ts +++ b/packages/app/src/cli/api/graphql/partners/generated/types.d.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any */ -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' export type Maybe = T | null export type InputMaybe = Maybe diff --git a/packages/app/src/cli/commands/app/app-logs/sources.ts b/packages/app/src/cli/commands/app/app-logs/sources.ts index b354f7a3f3c..4462db8d8d2 100644 --- a/packages/app/src/cli/commands/app/app-logs/sources.ts +++ b/packages/app/src/cli/commands/app/app-logs/sources.ts @@ -2,7 +2,7 @@ import {appFlags} from '../../../flags.js' import {linkedAppContext} from '../../../services/app-context.js' import {sources} from '../../../services/app-logs/sources.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' export default class Sources extends AppLinkedCommand { static summary = 'Print out a list of sources that may be used with the logs command.' diff --git a/packages/app/src/cli/commands/app/build.ts b/packages/app/src/cli/commands/app/build.ts index 0cff69a8e8a..85861eb1979 100644 --- a/packages/app/src/cli/commands/app/build.ts +++ b/packages/app/src/cli/commands/app/build.ts @@ -3,8 +3,8 @@ import build from '../../services/build.js' import {localAppContext} from '../../services/app-context.js' import AppUnlinkedCommand, {AppUnlinkedCommandOutput} from '../../utilities/app-unlinked-command.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {addPublicMetadata} from '@shopify/cli-kit/node/metadata' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {addPublicMetadata} from '@shopify/cli-kit/shared/node/metadata' export default class Build extends AppUnlinkedCommand { static summary = 'Build the app, including extensions.' diff --git a/packages/app/src/cli/commands/app/bulk/cancel.ts b/packages/app/src/cli/commands/app/bulk/cancel.ts index 23f1cceb19f..65fcb90f56f 100644 --- a/packages/app/src/cli/commands/app/bulk/cancel.ts +++ b/packages/app/src/cli/commands/app/bulk/cancel.ts @@ -4,8 +4,8 @@ import {prepareAppStoreContext} from '../../../utilities/execute-command-helpers import {cancelBulkOperation} from '../../../services/bulk-operations/cancel-bulk-operation.js' import {normalizeBulkOperationId} from '../../../services/bulk-operations/bulk-operation-status.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' export default class BulkCancel extends AppLinkedCommand { static summary = 'Cancel a bulk operation.' diff --git a/packages/app/src/cli/commands/app/bulk/execute.ts b/packages/app/src/cli/commands/app/bulk/execute.ts index 8c06f1ddeea..56246922a29 100644 --- a/packages/app/src/cli/commands/app/bulk/execute.ts +++ b/packages/app/src/cli/commands/app/bulk/execute.ts @@ -2,7 +2,7 @@ import {appFlags, bulkOperationFlags} from '../../../flags.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import {executeBulkOperation} from '../../../services/bulk-operations/execute-bulk-operation.js' import {prepareExecuteContext} from '../../../utilities/execute-command-helpers.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' export default class BulkExecute extends AppLinkedCommand { static summary = 'Execute bulk operations.' diff --git a/packages/app/src/cli/commands/app/bulk/status.ts b/packages/app/src/cli/commands/app/bulk/status.ts index 73ba683c98e..6e4ab7e2cd9 100644 --- a/packages/app/src/cli/commands/app/bulk/status.ts +++ b/packages/app/src/cli/commands/app/bulk/status.ts @@ -7,8 +7,8 @@ import { normalizeBulkOperationId, } from '../../../services/bulk-operations/bulk-operation-status.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' export default class BulkStatus extends AppLinkedCommand { static summary = 'Check the status of bulk operations.' diff --git a/packages/app/src/cli/commands/app/config/link.ts b/packages/app/src/cli/commands/app/config/link.ts index 91bd549aff0..9187193ad60 100644 --- a/packages/app/src/cli/commands/app/config/link.ts +++ b/packages/app/src/cli/commands/app/config/link.ts @@ -2,7 +2,7 @@ import {appFlags} from '../../../flags.js' import {linkedAppContext} from '../../../services/app-context.js' import link, {LinkOptions} from '../../../services/app/config/link.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' export default class ConfigLink extends AppLinkedCommand { static summary = 'Fetch your app configuration from the Developer Dashboard.' diff --git a/packages/app/src/cli/commands/app/config/pull.ts b/packages/app/src/cli/commands/app/config/pull.ts index f5672c93bd7..a4c876fd377 100644 --- a/packages/app/src/cli/commands/app/config/pull.ts +++ b/packages/app/src/cli/commands/app/config/pull.ts @@ -2,9 +2,9 @@ import {appFlags} from '../../../flags.js' import {linkedAppContext} from '../../../services/app-context.js' import pull from '../../../services/app/config/pull.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {basename} from '@shopify/cli-kit/node/path' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {basename} from '@shopify/cli-kit/shared/node/path' export default class ConfigPull extends AppLinkedCommand { static summary = 'Refresh an already-linked app configuration without prompts.' diff --git a/packages/app/src/cli/commands/app/config/use.ts b/packages/app/src/cli/commands/app/config/use.ts index 7854466879c..766bcae247b 100644 --- a/packages/app/src/cli/commands/app/config/use.ts +++ b/packages/app/src/cli/commands/app/config/use.ts @@ -4,7 +4,7 @@ import {localAppContext} from '../../../services/app-context.js' import use from '../../../services/app/config/use.js' import AppUnlinkedCommand, {AppUnlinkedCommandOutput} from '../../../utilities/app-unlinked-command.js' import {Args} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' // This is one of the few commands where we don't need a // `--config` flag, because we're passing it as an argument. diff --git a/packages/app/src/cli/commands/app/demo/watcher.ts b/packages/app/src/cli/commands/app/demo/watcher.ts index 10892e8456a..2b4b9054170 100644 --- a/packages/app/src/cli/commands/app/demo/watcher.ts +++ b/packages/app/src/cli/commands/app/demo/watcher.ts @@ -2,10 +2,10 @@ import {appFlags} from '../../../flags.js' import {AppEventWatcher, EventType} from '../../../services/dev/app-events/app-event-watcher.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import {linkedAppContext} from '../../../services/app-context.js' -import colors from '@shopify/cli-kit/node/colors' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {outputInfo} from '@shopify/cli-kit/node/output' -import {endHRTimeInMs} from '@shopify/cli-kit/node/hrtime' +import colors from '@shopify/cli-kit/shared/node/colors' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' +import {endHRTimeInMs} from '@shopify/cli-kit/shared/node/hrtime' export default class DemoWatcher extends AppLinkedCommand { static summary = 'Watch and prints out changes to an app.' diff --git a/packages/app/src/cli/commands/app/deploy.ts b/packages/app/src/cli/commands/app/deploy.ts index 1f7ec37618b..892215c9ce3 100644 --- a/packages/app/src/cli/commands/app/deploy.ts +++ b/packages/app/src/cli/commands/app/deploy.ts @@ -6,8 +6,8 @@ import metadata from '../../metadata.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../utilities/app-linked-command.js' import {linkedAppContext} from '../../services/app-context.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {addPublicMetadata} from '@shopify/cli-kit/node/metadata' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {addPublicMetadata} from '@shopify/cli-kit/shared/node/metadata' export default class Deploy extends AppLinkedCommand { static summary = 'Deploy your Shopify app.' diff --git a/packages/app/src/cli/commands/app/dev.ts b/packages/app/src/cli/commands/app/dev.ts index 55c4030069e..820b3d2e713 100644 --- a/packages/app/src/cli/commands/app/dev.ts +++ b/packages/app/src/cli/commands/app/dev.ts @@ -6,9 +6,9 @@ import {linkedAppContext} from '../../services/app-context.js' import {storeContext} from '../../services/store-context.js' import {getTunnelMode} from '../../services/dev/tunnel-mode.js' import {Flags} from '@oclif/core' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {addPublicMetadata} from '@shopify/cli-kit/node/metadata' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {addPublicMetadata} from '@shopify/cli-kit/shared/node/metadata' export default class Dev extends AppLinkedCommand { static summary = 'Run the app.' diff --git a/packages/app/src/cli/commands/app/dev/clean.ts b/packages/app/src/cli/commands/app/dev/clean.ts index 847bf1e5153..d75932ae5e6 100644 --- a/packages/app/src/cli/commands/app/dev/clean.ts +++ b/packages/app/src/cli/commands/app/dev/clean.ts @@ -3,9 +3,9 @@ import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-l import {appFlags} from '../../../flags.js' import {storeContext} from '../../../services/store-context.js' import {devClean} from '../../../services/dev-clean.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' import {Flags} from '@oclif/core' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' export default class DevClean extends AppLinkedCommand { static summary = 'Cleans up the dev preview from the selected store.' diff --git a/packages/app/src/cli/commands/app/env/pull.ts b/packages/app/src/cli/commands/app/env/pull.ts index f68c42b6050..739f67901ce 100644 --- a/packages/app/src/cli/commands/app/env/pull.ts +++ b/packages/app/src/cli/commands/app/env/pull.ts @@ -4,9 +4,9 @@ import {pullEnv} from '../../../services/app/env/pull.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import {linkedAppContext} from '../../../services/app-context.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {outputResult} from '@shopify/cli-kit/node/output' -import {joinPath} from '@shopify/cli-kit/node/path' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {outputResult} from '@shopify/cli-kit/shared/node/output' +import {joinPath} from '@shopify/cli-kit/shared/node/path' export default class EnvPull extends AppLinkedCommand { static summary = 'Pull app and extensions environment variables.' diff --git a/packages/app/src/cli/commands/app/env/show.ts b/packages/app/src/cli/commands/app/env/show.ts index 2c67d50a61b..73897ddcbfd 100644 --- a/packages/app/src/cli/commands/app/env/show.ts +++ b/packages/app/src/cli/commands/app/env/show.ts @@ -2,8 +2,8 @@ import {appFlags} from '../../../flags.js' import {linkedAppContext} from '../../../services/app-context.js' import {showEnv} from '../../../services/app/env/show.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {outputResult} from '@shopify/cli-kit/node/output' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {outputResult} from '@shopify/cli-kit/shared/node/output' export default class EnvShow extends AppLinkedCommand { static summary = 'Display app and extensions environment variables.' diff --git a/packages/app/src/cli/commands/app/execute.ts b/packages/app/src/cli/commands/app/execute.ts index 656543bd40e..84072ecd96a 100644 --- a/packages/app/src/cli/commands/app/execute.ts +++ b/packages/app/src/cli/commands/app/execute.ts @@ -2,7 +2,7 @@ import {appFlags, operationFlags} from '../../flags.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../utilities/app-linked-command.js' import {executeOperation} from '../../services/execute-operation.js' import {prepareExecuteContext} from '../../utilities/execute-command-helpers.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' export default class Execute extends AppLinkedCommand { static summary = 'Execute GraphQL queries and mutations.' diff --git a/packages/app/src/cli/commands/app/function/build.ts b/packages/app/src/cli/commands/app/function/build.ts index 4b96ce1d8c0..1e28eda688c 100644 --- a/packages/app/src/cli/commands/app/function/build.ts +++ b/packages/app/src/cli/commands/app/function/build.ts @@ -3,8 +3,8 @@ import {buildFunctionExtension} from '../../../services/build/extension.js' import {appFlags} from '../../../flags.js' import AppUnlinkedCommand, {AppUnlinkedCommandOutput} from '../../../utilities/app-unlinked-command.js' import {localAppContext} from '../../../services/app-context.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {renderSuccess} from '@shopify/cli-kit/node/ui' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' export default class FunctionBuild extends AppUnlinkedCommand { static summary = 'Compile a function to wasm.' diff --git a/packages/app/src/cli/commands/app/function/info.ts b/packages/app/src/cli/commands/app/function/info.ts index 28b72502b13..f01b886cad0 100644 --- a/packages/app/src/cli/commands/app/function/info.ts +++ b/packages/app/src/cli/commands/app/function/info.ts @@ -4,9 +4,9 @@ import {functionInfo} from '../../../services/function/info.js' import {localAppContext} from '../../../services/app-context.js' import {appFlags} from '../../../flags.js' import AppUnlinkedCommand, {AppUnlinkedCommandOutput} from '../../../utilities/app-unlinked-command.js' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' -import {outputResult} from '@shopify/cli-kit/node/output' -import {AlertCustomSection, renderInfo} from '@shopify/cli-kit/node/ui' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' +import {outputResult} from '@shopify/cli-kit/shared/node/output' +import {AlertCustomSection, renderInfo} from '@shopify/cli-kit/shared/node/ui' export default class FunctionInfo extends AppUnlinkedCommand { static summary = 'Print basic information about your function.' diff --git a/packages/app/src/cli/commands/app/function/replay.ts b/packages/app/src/cli/commands/app/function/replay.ts index 5935991e48a..f6d4302a8e5 100644 --- a/packages/app/src/cli/commands/app/function/replay.ts +++ b/packages/app/src/cli/commands/app/function/replay.ts @@ -3,7 +3,7 @@ import {replay} from '../../../services/function/replay.js' import {appFlags} from '../../../flags.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import {linkedAppContext} from '../../../services/app-context.js' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' import {Flags} from '@oclif/core' export default class FunctionReplay extends AppLinkedCommand { diff --git a/packages/app/src/cli/commands/app/function/run.ts b/packages/app/src/cli/commands/app/function/run.ts index 2e5ea046c2a..da7058a89c3 100644 --- a/packages/app/src/cli/commands/app/function/run.ts +++ b/packages/app/src/cli/commands/app/function/run.ts @@ -3,10 +3,10 @@ import {runFunction} from '../../../services/function/runner.js' import {appFlags} from '../../../flags.js' import AppUnlinkedCommand, {AppUnlinkedCommandOutput} from '../../../utilities/app-unlinked-command.js' import {localAppContext} from '../../../services/app-context.js' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' import {Flags} from '@oclif/core' -import {renderAutocompletePrompt, isTTY} from '@shopify/cli-kit/node/ui' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {renderAutocompletePrompt, isTTY} from '@shopify/cli-kit/shared/node/ui' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' const DEFAULT_FUNCTION_EXPORT = '_start' diff --git a/packages/app/src/cli/commands/app/function/schema.ts b/packages/app/src/cli/commands/app/function/schema.ts index d1c5763f303..9df9edc3231 100644 --- a/packages/app/src/cli/commands/app/function/schema.ts +++ b/packages/app/src/cli/commands/app/function/schema.ts @@ -4,7 +4,7 @@ import {appFlags} from '../../../flags.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import {linkedAppContext} from '../../../services/app-context.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' export default class FetchSchema extends AppLinkedCommand { static summary = 'Fetch the latest GraphQL schema for a function.' diff --git a/packages/app/src/cli/commands/app/function/typegen.ts b/packages/app/src/cli/commands/app/function/typegen.ts index 658dda0a890..a60ac6315be 100644 --- a/packages/app/src/cli/commands/app/function/typegen.ts +++ b/packages/app/src/cli/commands/app/function/typegen.ts @@ -3,8 +3,8 @@ import {buildGraphqlTypes} from '../../../services/function/build.js' import {appFlags} from '../../../flags.js' import AppUnlinkedCommand, {AppUnlinkedCommandOutput} from '../../../utilities/app-unlinked-command.js' import {localAppContext} from '../../../services/app-context.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {renderSuccess} from '@shopify/cli-kit/node/ui' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' export default class FunctionTypegen extends AppUnlinkedCommand { static summary = 'Generate GraphQL types for a JavaScript function.' diff --git a/packages/app/src/cli/commands/app/generate/extension.ts b/packages/app/src/cli/commands/app/generate/extension.ts index 36b0ba309db..917397e8bf0 100644 --- a/packages/app/src/cli/commands/app/generate/extension.ts +++ b/packages/app/src/cli/commands/app/generate/extension.ts @@ -5,8 +5,8 @@ import {checkFolderIsValidApp} from '../../../models/app/loader.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import {linkedAppContext} from '../../../services/app-context.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' export default class AppGenerateExtension extends AppLinkedCommand { static summary = 'Generate a new app Extension.' diff --git a/packages/app/src/cli/commands/app/import-custom-data-definitions.ts b/packages/app/src/cli/commands/app/import-custom-data-definitions.ts index fcf95a8760f..9677c502a23 100644 --- a/packages/app/src/cli/commands/app/import-custom-data-definitions.ts +++ b/packages/app/src/cli/commands/app/import-custom-data-definitions.ts @@ -5,10 +5,10 @@ import {linkedAppContext} from '../../services/app-context.js' import {storeContext} from '../../services/store-context.js' import {importDeclarativeDefinitions} from '../../services/generate/shop-import/declarative-definitions.js' import {Flags} from '@oclif/core' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {renderSingleTask} from '@shopify/cli-kit/node/ui' -import {outputContent} from '@shopify/cli-kit/node/output' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {renderSingleTask} from '@shopify/cli-kit/shared/node/ui' +import {outputContent} from '@shopify/cli-kit/shared/node/output' export default class ImportCustomDataDefinitions extends AppLinkedCommand { static summary = 'Import metafield and metaobject definitions.' diff --git a/packages/app/src/cli/commands/app/import-extensions.ts b/packages/app/src/cli/commands/app/import-extensions.ts index bd7d77bf4b6..cfff938d269 100644 --- a/packages/app/src/cli/commands/app/import-extensions.ts +++ b/packages/app/src/cli/commands/app/import-extensions.ts @@ -5,8 +5,8 @@ import {linkedAppContext} from '../../services/app-context.js' import {getMigrationChoices, selectMigrationChoice} from '../../prompts/import-extensions.js' import {getExtensions} from '../../services/fetch-extensions.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {renderSuccess} from '@shopify/cli-kit/node/ui' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' export default class ImportExtensions extends AppLinkedCommand { static description = 'Import dashboard-managed extensions into your app.' diff --git a/packages/app/src/cli/commands/app/info.ts b/packages/app/src/cli/commands/app/info.ts index c25b331400f..9ce2199037a 100644 --- a/packages/app/src/cli/commands/app/info.ts +++ b/packages/app/src/cli/commands/app/info.ts @@ -3,9 +3,9 @@ import {Format, info} from '../../services/info.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../utilities/app-linked-command.js' import {linkedAppContext} from '../../services/app-context.js' import {Flags} from '@oclif/core' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' -import {outputResult} from '@shopify/cli-kit/node/output' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' +import {outputResult} from '@shopify/cli-kit/shared/node/output' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' export default class AppInfo extends AppLinkedCommand { static summary = 'Print basic information about your app and extensions.' diff --git a/packages/app/src/cli/commands/app/init.ts b/packages/app/src/cli/commands/app/init.ts index c2935186968..74c2800ecbc 100644 --- a/packages/app/src/cli/commands/app/init.ts +++ b/packages/app/src/cli/commands/app/init.ts @@ -9,14 +9,14 @@ import {appNamePrompt, createAsNewAppPrompt, selectAppPrompt} from '../../prompt import {searchForAppsByNameFactory} from '../../services/dev/prompt-helpers.js' import {isValidName} from '../../models/app/validation/common.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {resolvePath, cwd} from '@shopify/cli-kit/node/path' -import {addPublicMetadata} from '@shopify/cli-kit/node/metadata' - -import {installGlobalShopifyCLI} from '@shopify/cli-kit/node/is-global' -import {generateRandomNameForSubdirectory} from '@shopify/cli-kit/node/fs' -import {inferPackageManager} from '@shopify/cli-kit/node/node-package-manager' -import {AbortError} from '@shopify/cli-kit/node/error' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {resolvePath, cwd} from '@shopify/cli-kit/shared/node/path' +import {addPublicMetadata} from '@shopify/cli-kit/shared/node/metadata' + +import {installGlobalShopifyCLI} from '@shopify/cli-kit/shared/node/is-global' +import {generateRandomNameForSubdirectory} from '@shopify/cli-kit/shared/node/fs' +import {inferPackageManager} from '@shopify/cli-kit/shared/node/node-package-manager' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export default class Init extends AppLinkedCommand { static summary?: string | undefined = 'Create a new app project' diff --git a/packages/app/src/cli/commands/app/logs.ts b/packages/app/src/cli/commands/app/logs.ts index d9f07682e4d..176c947bd49 100644 --- a/packages/app/src/cli/commands/app/logs.ts +++ b/packages/app/src/cli/commands/app/logs.ts @@ -5,8 +5,8 @@ import AppLinkedCommand, {AppLinkedCommandOutput} from '../../utilities/app-link import {linkedAppContext} from '../../services/app-context.js' import {storeContext} from '../../services/store-context.js' import {Flags} from '@oclif/core' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' export default class Logs extends AppLinkedCommand { static summary = 'Stream detailed logs for your Shopify app.' diff --git a/packages/app/src/cli/commands/app/release.ts b/packages/app/src/cli/commands/app/release.ts index 6fe89496ed1..72f68c78d19 100644 --- a/packages/app/src/cli/commands/app/release.ts +++ b/packages/app/src/cli/commands/app/release.ts @@ -4,8 +4,8 @@ import AppLinkedCommand, {AppLinkedCommandOutput} from '../../utilities/app-link import {linkedAppContext} from '../../services/app-context.js' import {getAppConfigurationState} from '../../models/app/loader.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {addPublicMetadata} from '@shopify/cli-kit/node/metadata' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {addPublicMetadata} from '@shopify/cli-kit/shared/node/metadata' export default class Release extends AppLinkedCommand { static summary = 'Release an app version.' diff --git a/packages/app/src/cli/commands/app/scaffold/extension.ts b/packages/app/src/cli/commands/app/scaffold/extension.ts index fa2c7f1cf5a..ff59228d2ad 100644 --- a/packages/app/src/cli/commands/app/scaffold/extension.ts +++ b/packages/app/src/cli/commands/app/scaffold/extension.ts @@ -1,6 +1,6 @@ import {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import AppGenerateExtension from '../generate/extension.js' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' class AppScaffoldExtension extends AppGenerateExtension { static description = 'Scaffold an Extension.' diff --git a/packages/app/src/cli/commands/app/versions/list.ts b/packages/app/src/cli/commands/app/versions/list.ts index 07d4b9cc892..74fa81b90fa 100644 --- a/packages/app/src/cli/commands/app/versions/list.ts +++ b/packages/app/src/cli/commands/app/versions/list.ts @@ -2,7 +2,7 @@ import {appFlags} from '../../../flags.js' import versionList from '../../../services/versions-list.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import {linkedAppContext} from '../../../services/app-context.js' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' export default class VersionsList extends AppLinkedCommand { static summary = 'List deployed versions of your app.' diff --git a/packages/app/src/cli/commands/app/webhook/trigger.ts b/packages/app/src/cli/commands/app/webhook/trigger.ts index d4a4cb4bef5..fff65061cc7 100644 --- a/packages/app/src/cli/commands/app/webhook/trigger.ts +++ b/packages/app/src/cli/commands/app/webhook/trigger.ts @@ -5,7 +5,7 @@ import {appFlags} from '../../../flags.js' import AppLinkedCommand, {AppLinkedCommandOutput} from '../../../utilities/app-linked-command.js' import {linkedAppContext} from '../../../services/app-context.js' import {Flags} from '@oclif/core' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' export default class WebhookTrigger extends AppLinkedCommand { static summary = 'Trigger delivery of a sample webhook topic payload to a designated address.' diff --git a/packages/app/src/cli/commands/webhook/trigger.ts b/packages/app/src/cli/commands/webhook/trigger.ts index 1d380fa79a1..e5c4b3705ce 100644 --- a/packages/app/src/cli/commands/webhook/trigger.ts +++ b/packages/app/src/cli/commands/webhook/trigger.ts @@ -1,5 +1,5 @@ import WebhookTrigger from '../app/webhook/trigger.js' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' export default class WebhookTriggerDeprecated extends WebhookTrigger { static hidden = true diff --git a/packages/app/src/cli/flags.ts b/packages/app/src/cli/flags.ts index d9a9776380c..b669ad1444e 100644 --- a/packages/app/src/cli/flags.ts +++ b/packages/app/src/cli/flags.ts @@ -1,6 +1,6 @@ import {Flags} from '@oclif/core' -import {resolvePath, cwd} from '@shopify/cli-kit/node/path' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {resolvePath, cwd} from '@shopify/cli-kit/shared/node/path' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' /** * An object that contains the flags that diff --git a/packages/app/src/cli/hooks/clear_command_cache.ts b/packages/app/src/cli/hooks/clear_command_cache.ts index d35b229f839..33176607b89 100644 --- a/packages/app/src/cli/hooks/clear_command_cache.ts +++ b/packages/app/src/cli/hooks/clear_command_cache.ts @@ -1,5 +1,5 @@ import {clearCachedCommandInfo} from '../services/local-storage.js' -import {randomUUID} from '@shopify/cli-kit/node/crypto' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' import {Hook} from '@oclif/core' const init: Hook<'init'> = async (_options) => { diff --git a/packages/app/src/cli/hooks/public_metadata.ts b/packages/app/src/cli/hooks/public_metadata.ts index 5448a5fb40b..c90eca87ecd 100644 --- a/packages/app/src/cli/hooks/public_metadata.ts +++ b/packages/app/src/cli/hooks/public_metadata.ts @@ -1,5 +1,5 @@ import metadata from '../metadata.js' -import {FanoutHookFunction} from '@shopify/cli-kit/node/plugins' +import {FanoutHookFunction} from '@shopify/cli-kit/shared/node/plugins' const gatherPublicMetadata: FanoutHookFunction<'public_command_metadata', '@shopify/app'> = async () => { return metadata.getAllPublicMetadata() diff --git a/packages/app/src/cli/hooks/sensitive_metadata.ts b/packages/app/src/cli/hooks/sensitive_metadata.ts index 4429d2ba77a..8d2ee320fe4 100644 --- a/packages/app/src/cli/hooks/sensitive_metadata.ts +++ b/packages/app/src/cli/hooks/sensitive_metadata.ts @@ -1,5 +1,5 @@ import metadata from '../metadata.js' -import {FanoutHookFunction} from '@shopify/cli-kit/node/plugins' +import {FanoutHookFunction} from '@shopify/cli-kit/shared/node/plugins' const gatherSensitiveMetadata: FanoutHookFunction<'sensitive_command_metadata', '@shopify/app'> = async () => { return metadata.getAllSensitiveMetadata() diff --git a/packages/app/src/cli/metadata.ts b/packages/app/src/cli/metadata.ts index 79f11dbde89..76ee8777568 100644 --- a/packages/app/src/cli/metadata.ts +++ b/packages/app/src/cli/metadata.ts @@ -1,6 +1,6 @@ -import {MonorailEventPublic, MonorailEventSensitive} from '@shopify/cli-kit/node/monorail' -import {createRuntimeMetadataContainer} from '@shopify/cli-kit/node/metadata' -import type {PickByPrefix} from '@shopify/cli-kit/common/ts/pick-by-prefix' +import {MonorailEventPublic, MonorailEventSensitive} from '@shopify/cli-kit/shared/node/monorail' +import {createRuntimeMetadataContainer} from '@shopify/cli-kit/shared/node/metadata' +import type {PickByPrefix} from '@shopify/cli-kit/shared/common/ts/pick-by-prefix' type CmdFieldsFromMonorail = PickByPrefix & PickByPrefix & diff --git a/packages/app/src/cli/models/app/app.test-data.ts b/packages/app/src/cli/models/app/app.test-data.ts index d44964c7a40..ddeeb1a6a82 100644 --- a/packages/app/src/cli/models/app/app.test-data.ts +++ b/packages/app/src/cli/models/app/app.test-data.ts @@ -79,9 +79,9 @@ import {AppProxySpecIdentifier} from '../extensions/specifications/app_config_ap import {ExtensionSpecification} from '../extensions/specification.js' import {AppLogsOptions} from '../../services/app-logs/utils.js' import {AppLogsSubscribeMutationVariables} from '../../api/graphql/app-management/generated/app-logs-subscribe.js' -import {Session} from '@shopify/cli-kit/node/session' +import {Session} from '@shopify/cli-kit/identity/session' import {vi} from 'vitest' -import {joinPath} from '@shopify/cli-kit/node/path' +import {joinPath} from '@shopify/cli-kit/shared/node/path' export const DEFAULT_CONFIG = { path: '/tmp/project/shopify.app.toml', diff --git a/packages/app/src/cli/models/app/app.test.ts b/packages/app/src/cli/models/app/app.test.ts index 636a82fb113..580693b0c97 100644 --- a/packages/app/src/cli/models/app/app.test.ts +++ b/packages/app/src/cli/models/app/app.test.ts @@ -29,9 +29,9 @@ import {WebhooksConfig} from '../extensions/specifications/types/app_config_webh import {EditorExtensionCollectionType} from '../extensions/specifications/editor_extension_collection.js' import {ApplicationURLs} from '../../services/dev/urls.js' import {describe, expect, test, vi} from 'vitest' -import {inTemporaryDirectory, mkdir, readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {AbortError} from '@shopify/cli-kit/node/error' +import {inTemporaryDirectory, mkdir, readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' const CORRECT_CURRENT_APP_SCHEMA: CurrentAppConfiguration = { path: '', diff --git a/packages/app/src/cli/models/app/app.ts b/packages/app/src/cli/models/app/app.ts index ead77d10470..4a837e9aa0f 100644 --- a/packages/app/src/cli/models/app/app.ts +++ b/packages/app/src/cli/models/app/app.ts @@ -15,10 +15,10 @@ import {WebhookSubscriptionSchema} from '../extensions/specifications/app_config import {configurationFileNames} from '../../constants.js' import {ApplicationURLs} from '../../services/dev/urls.js' import {patchAppHiddenConfigFile} from '../../services/app/patch-app-configuration-file.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import {ZodObjectOf, zod} from '@shopify/cli-kit/node/schema' -import {DotEnvFile} from '@shopify/cli-kit/node/dot-env' -import {getDependencies, PackageManager, readAndParsePackageJson} from '@shopify/cli-kit/node/node-package-manager' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {ZodObjectOf, zod} from '@shopify/cli-kit/shared/node/schema' +import {DotEnvFile} from '@shopify/cli-kit/shared/node/dot-env' +import {getDependencies, PackageManager, readAndParsePackageJson} from '@shopify/cli-kit/shared/node/node-package-manager' import { fileExistsSync, fileRealPath, @@ -26,12 +26,12 @@ import { readFileSync, removeFileSync, writeFileSync, -} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' -import {normalizeDelimitedString} from '@shopify/cli-kit/common/string' -import {JsonMapType} from '@shopify/cli-kit/node/toml' -import {getArrayRejectingUndefined} from '@shopify/cli-kit/common/array' -import {deepMergeObjects} from '@shopify/cli-kit/common/object' +} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {normalizeDelimitedString} from '@shopify/cli-kit/shared/common/string' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' +import {getArrayRejectingUndefined} from '@shopify/cli-kit/shared/common/array' +import {deepMergeObjects} from '@shopify/cli-kit/shared/common/object' // Schemas for loading app configuration diff --git a/packages/app/src/cli/models/app/identifiers.test.ts b/packages/app/src/cli/models/app/identifiers.test.ts index c1ddb635e06..efef3433ba9 100644 --- a/packages/app/src/cli/models/app/identifiers.test.ts +++ b/packages/app/src/cli/models/app/identifiers.test.ts @@ -1,9 +1,9 @@ import {updateAppIdentifiers, getAppIdentifiers} from './identifiers.js' import {testApp, testAppWithConfig, testDeveloperPlatformClient, testUIExtension} from './app.test-data.js' import {describe, expect, test} from 'vitest' -import {readAndParseDotEnv} from '@shopify/cli-kit/node/dot-env' -import {fileExists, inTemporaryDirectory, readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {readAndParseDotEnv} from '@shopify/cli-kit/shared/node/dot-env' +import {fileExists, inTemporaryDirectory, readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' describe('updateAppIdentifiers', () => { test('persists the ids that are not env variables when deploying, creating a new file', async () => { diff --git a/packages/app/src/cli/models/app/identifiers.ts b/packages/app/src/cli/models/app/identifiers.ts index 93f6039d6d4..0f21ad2594f 100644 --- a/packages/app/src/cli/models/app/identifiers.ts +++ b/packages/app/src/cli/models/app/identifiers.ts @@ -1,11 +1,11 @@ import {getDotEnvFileName} from './loader.js' import {ExtensionInstance} from '../extensions/extension-instance.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {patchEnvFile} from '@shopify/cli-kit/node/dot-env' -import {constantize} from '@shopify/cli-kit/common/string' -import {joinPath} from '@shopify/cli-kit/node/path' -import {fileExists, readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {deepCompare} from '@shopify/cli-kit/common/object' +import {patchEnvFile} from '@shopify/cli-kit/shared/node/dot-env' +import {constantize} from '@shopify/cli-kit/shared/common/string' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {fileExists, readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {deepCompare} from '@shopify/cli-kit/shared/common/object' import type {AppInterface} from './app.js' export interface IdentifiersExtensions { diff --git a/packages/app/src/cli/models/app/loader.test.ts b/packages/app/src/cli/models/app/loader.test.ts index 9a0e4ef87f3..3e661487929 100644 --- a/packages/app/src/cli/models/app/loader.test.ts +++ b/packages/app/src/cli/models/app/loader.test.ts @@ -31,29 +31,29 @@ import { pnpmLockfile, PackageJson, pnpmWorkspaceFile, -} from '@shopify/cli-kit/node/node-package-manager' -import {inTemporaryDirectory, moveFile, mkdir, mkTmpDir, rmdir, writeFile, readFile} from '@shopify/cli-kit/node/fs' -import {joinPath, dirname, cwd, normalizePath} from '@shopify/cli-kit/node/path' -import {platformAndArch} from '@shopify/cli-kit/node/os' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' -import {zod} from '@shopify/cli-kit/node/schema' -import colors from '@shopify/cli-kit/node/colors' -import {showMultipleCLIWarningIfNeeded} from '@shopify/cli-kit/node/multiple-installation-warning' -import {AbortError} from '@shopify/cli-kit/node/error' -import {captureOutput} from '@shopify/cli-kit/node/system' +} from '@shopify/cli-kit/shared/node/node-package-manager' +import {inTemporaryDirectory, moveFile, mkdir, mkTmpDir, rmdir, writeFile, readFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, dirname, cwd, normalizePath} from '@shopify/cli-kit/shared/node/path' +import {platformAndArch} from '@shopify/cli-kit/shared/node/os' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' +import {zod} from '@shopify/cli-kit/shared/node/schema' +import colors from '@shopify/cli-kit/shared/node/colors' +import {showMultipleCLIWarningIfNeeded} from '@shopify/cli-kit/shared/node/multiple-installation-warning' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {captureOutput} from '@shopify/cli-kit/shared/node/system' vi.mock('../../services/local-storage.js') // Mock captureOutput to prevent executing `npm prefix` inside getPackageManager -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system') vi.mock('../../services/app/config/use.js') -vi.mock('@shopify/cli-kit/node/is-global') -vi.mock('@shopify/cli-kit/node/node-package-manager', async () => ({ - ...((await vi.importActual('@shopify/cli-kit/node/node-package-manager')) as any), +vi.mock('@shopify/cli-kit/shared/node/is-global') +vi.mock('@shopify/cli-kit/shared/node/node-package-manager', async () => ({ + ...((await vi.importActual('@shopify/cli-kit/shared/node/node-package-manager')) as any), localCLIVersion: vi.fn(), globalCLIVersion: vi.fn(), })) -vi.mock('@shopify/cli-kit/node/version') -vi.mock('@shopify/cli-kit/node/multiple-installation-warning') +vi.mock('@shopify/cli-kit/shared/node/version') +vi.mock('@shopify/cli-kit/shared/node/multiple-installation-warning') describe('load', () => { let specifications: ExtensionSpecification[] = [] diff --git a/packages/app/src/cli/models/app/loader.ts b/packages/app/src/cli/models/app/loader.ts index d83e575846c..c7be38b7956 100644 --- a/packages/app/src/cli/models/app/loader.ts +++ b/packages/app/src/cli/models/app/loader.ts @@ -37,25 +37,25 @@ import {loadLocalExtensionsSpecifications} from '../extensions/load-specificatio import {patchAppHiddenConfigFile} from '../../services/app/patch-app-configuration-file.js' import {getOrCreateAppConfigHiddenPath} from '../../utilities/app/config/hidden-app-config.js' import {ApplicationURLs, generateApplicationURLs} from '../../services/dev/urls.js' -import {showMultipleCLIWarningIfNeeded} from '@shopify/cli-kit/node/multiple-installation-warning' -import {fileExists, readFile, glob, findPathUp, fileExistsSync} from '@shopify/cli-kit/node/fs' -import {zod} from '@shopify/cli-kit/node/schema' -import {readAndParseDotEnv, DotEnvFile} from '@shopify/cli-kit/node/dot-env' +import {showMultipleCLIWarningIfNeeded} from '@shopify/cli-kit/shared/node/multiple-installation-warning' +import {fileExists, readFile, glob, findPathUp, fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {zod} from '@shopify/cli-kit/shared/node/schema' +import {readAndParseDotEnv, DotEnvFile} from '@shopify/cli-kit/shared/node/dot-env' import { getDependencies, getPackageManager, PackageManager, usesWorkspaces as appUsesWorkspaces, -} from '@shopify/cli-kit/node/node-package-manager' -import {resolveFramework} from '@shopify/cli-kit/node/framework' -import {hashString} from '@shopify/cli-kit/node/crypto' -import {JsonMapType, decodeToml} from '@shopify/cli-kit/node/toml' -import {joinPath, dirname, basename, relativePath, relativizePath} from '@shopify/cli-kit/node/path' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputDebug, OutputMessage, outputToken} from '@shopify/cli-kit/node/output' -import {joinWithAnd, slugify} from '@shopify/cli-kit/common/string' -import {getArrayRejectingUndefined} from '@shopify/cli-kit/common/array' -import {showNotificationsIfNeeded} from '@shopify/cli-kit/node/notifications-system' +} from '@shopify/cli-kit/shared/node/node-package-manager' +import {resolveFramework} from '@shopify/cli-kit/shared/node/framework' +import {hashString} from '@shopify/cli-kit/shared/node/crypto' +import {JsonMapType, decodeToml} from '@shopify/cli-kit/shared/node/toml' +import {joinPath, dirname, basename, relativePath, relativizePath} from '@shopify/cli-kit/shared/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputDebug, OutputMessage, outputToken} from '@shopify/cli-kit/shared/node/output' +import {joinWithAnd, slugify} from '@shopify/cli-kit/shared/common/string' +import {getArrayRejectingUndefined} from '@shopify/cli-kit/shared/common/array' +import {showNotificationsIfNeeded} from '@shopify/cli-kit/shared/node/notifications-system' import ignore from 'ignore' const defaultExtensionDirectory = 'extensions/*' diff --git a/packages/app/src/cli/models/app/validation/common.test.ts b/packages/app/src/cli/models/app/validation/common.test.ts index 4430a20df24..1d9a8789d8f 100644 --- a/packages/app/src/cli/models/app/validation/common.test.ts +++ b/packages/app/src/cli/models/app/validation/common.test.ts @@ -1,6 +1,6 @@ import {validateUrl, validateRelativeUrl} from './common.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' describe('validateUrl', () => { test('accepts valid HTTPS URLs', () => { diff --git a/packages/app/src/cli/models/app/validation/common.ts b/packages/app/src/cli/models/app/validation/common.ts index 2850caa22ea..aa61d5e6d30 100644 --- a/packages/app/src/cli/models/app/validation/common.ts +++ b/packages/app/src/cli/models/app/validation/common.ts @@ -1,4 +1,4 @@ -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export function validateUrl(zodType: zod.ZodString, {httpsOnly = false, message = 'Invalid URL'} = {}) { return zodType diff --git a/packages/app/src/cli/models/extensions/extension-instance.test.ts b/packages/app/src/cli/models/extensions/extension-instance.test.ts index 2adc27a7d1b..8e69af1b18d 100644 --- a/packages/app/src/cli/models/extensions/extension-instance.test.ts +++ b/packages/app/src/cli/models/extensions/extension-instance.test.ts @@ -16,17 +16,17 @@ import { import {FunctionConfigType} from '../extensions/specifications/function.js' import {ExtensionBuildOptions, buildUIExtension} from '../../services/build/extension.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {joinPath} from '@shopify/cli-kit/node/path' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import {describe, expect, test, vi} from 'vitest' -import {inTemporaryDirectory, readFile, mkdir, writeFile, fileExistsSync} from '@shopify/cli-kit/node/fs' -import {slugify} from '@shopify/cli-kit/common/string' -import {hashString, nonRandomUUID} from '@shopify/cli-kit/node/crypto' -import {extractImportPathsRecursively} from '@shopify/cli-kit/node/import-extractor' +import {inTemporaryDirectory, readFile, mkdir, writeFile, fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {slugify} from '@shopify/cli-kit/shared/common/string' +import {hashString, nonRandomUUID} from '@shopify/cli-kit/shared/node/crypto' +import {extractImportPathsRecursively} from '@shopify/cli-kit/shared/node/import-extractor' import {Writable} from 'stream' const developerPlatformClient: DeveloperPlatformClient = testDeveloperPlatformClient() -vi.mock('@shopify/cli-kit/node/import-extractor') +vi.mock('@shopify/cli-kit/shared/node/import-extractor') vi.mock('../../services/build/extension.js', async () => { const actual = await vi.importActual('../../services/build/extension.js') return { diff --git a/packages/app/src/cli/models/extensions/extension-instance.ts b/packages/app/src/cli/models/extensions/extension-instance.ts index c51ee23bbec..82f73732d53 100644 --- a/packages/app/src/cli/models/extensions/extension-instance.ts +++ b/packages/app/src/cli/models/extensions/extension-instance.ts @@ -25,16 +25,16 @@ import {Identifiers} from '../app/identifiers.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {AppConfigurationWithoutPath} from '../app/app.js' import {ApplicationURLs} from '../../services/dev/urls.js' -import {ok} from '@shopify/cli-kit/node/result' -import {constantize, slugify} from '@shopify/cli-kit/common/string' -import {hashString, nonRandomUUID} from '@shopify/cli-kit/node/crypto' -import {partnersFqdn} from '@shopify/cli-kit/node/context/fqdn' -import {joinPath, basename, normalizePath, resolvePath} from '@shopify/cli-kit/node/path' -import {fileExists, touchFile, moveFile, writeFile, glob, copyFile, globSync} from '@shopify/cli-kit/node/fs' -import {getPathValue} from '@shopify/cli-kit/common/object' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {extractJSImports, extractImportPathsRecursively} from '@shopify/cli-kit/node/import-extractor' -import {uniq} from '@shopify/cli-kit/common/array' +import {ok} from '@shopify/cli-kit/shared/node/result' +import {constantize, slugify} from '@shopify/cli-kit/shared/common/string' +import {hashString, nonRandomUUID} from '@shopify/cli-kit/shared/node/crypto' +import {partnersFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' +import {joinPath, basename, normalizePath, resolvePath} from '@shopify/cli-kit/shared/node/path' +import {fileExists, touchFile, moveFile, writeFile, glob, copyFile, globSync} from '@shopify/cli-kit/shared/node/fs' +import {getPathValue} from '@shopify/cli-kit/shared/common/object' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {extractJSImports, extractImportPathsRecursively} from '@shopify/cli-kit/shared/node/import-extractor' +import {uniq} from '@shopify/cli-kit/shared/common/array' export const CONFIG_EXTENSION_IDS: string[] = [ AppAccessSpecIdentifier, diff --git a/packages/app/src/cli/models/extensions/schemas.ts b/packages/app/src/cli/models/extensions/schemas.ts index fd8a4c9dcbc..1c741ce05dc 100644 --- a/packages/app/src/cli/models/extensions/schemas.ts +++ b/packages/app/src/cli/models/extensions/schemas.ts @@ -1,4 +1,4 @@ -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export const MAX_EXTENSION_HANDLE_LENGTH = 50 export const MAX_UID_LENGTH = 250 diff --git a/packages/app/src/cli/models/extensions/specification.ts b/packages/app/src/cli/models/extensions/specification.ts index d40a17dd115..255665e617f 100644 --- a/packages/app/src/cli/models/extensions/specification.ts +++ b/packages/app/src/cli/models/extensions/specification.ts @@ -7,11 +7,11 @@ import {Flag} from '../../utilities/developer-platform-client.js' import {AppConfigurationWithoutPath} from '../app/app.js' import {loadLocalesConfig} from '../../utilities/extensions/locales-configuration.js' import {ApplicationURLs} from '../../services/dev/urls.js' -import {Result} from '@shopify/cli-kit/node/result' -import {capitalize} from '@shopify/cli-kit/common/string' -import {ParseConfigurationResult, zod} from '@shopify/cli-kit/node/schema' -import {getPathValue, setPathValue} from '@shopify/cli-kit/common/object' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {Result} from '@shopify/cli-kit/shared/node/result' +import {capitalize} from '@shopify/cli-kit/shared/common/string' +import {ParseConfigurationResult, zod} from '@shopify/cli-kit/shared/node/schema' +import {getPathValue, setPathValue} from '@shopify/cli-kit/shared/common/object' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' export type ExtensionFeature = | 'ui_preview' diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_app_access.ts b/packages/app/src/cli/models/extensions/specifications/app_config_app_access.ts index b46603c58c2..3b9033dec42 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_app_access.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_app_access.ts @@ -1,8 +1,8 @@ import {validateUrl} from '../../app/validation/common.js' import {TransformationConfig, createConfigExtensionSpecification} from '../specification.js' import {BaseSchemaWithoutHandle} from '../schemas.js' -import {normalizeDelimitedString} from '@shopify/cli-kit/common/string' -import {zod} from '@shopify/cli-kit/node/schema' +import {normalizeDelimitedString} from '@shopify/cli-kit/shared/common/string' +import {zod} from '@shopify/cli-kit/shared/node/schema' const AppAccessSchema = BaseSchemaWithoutHandle.extend({ access: zod diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_app_home.ts b/packages/app/src/cli/models/extensions/specifications/app_config_app_home.ts index e796b4c0d35..e93975bf264 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_app_home.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_app_home.ts @@ -1,7 +1,7 @@ import {validateUrl} from '../../app/validation/common.js' import {BaseSchemaWithoutHandle} from '../schemas.js' import {TransformationConfig, createConfigExtensionSpecification} from '../specification.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const AppHomeSchema = BaseSchemaWithoutHandle.extend({ application_url: validateUrl(zod.string({required_error: 'Valid URL is required'})), diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_app_proxy.ts b/packages/app/src/cli/models/extensions/specifications/app_config_app_proxy.ts index b6d3d1efe9d..e5978a5b66c 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_app_proxy.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_app_proxy.ts @@ -8,7 +8,7 @@ import { } from '../specification.js' import {BaseSchemaWithoutHandle} from '../schemas.js' import {CurrentAppConfiguration} from '../../app/app.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const AppProxySchema = BaseSchemaWithoutHandle.extend({ app_proxy: zod diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_branding.ts b/packages/app/src/cli/models/extensions/specifications/app_config_branding.ts index 6b71822dd29..7d3d1ac4b50 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_branding.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_branding.ts @@ -1,6 +1,6 @@ import {TransformationConfig, createConfigExtensionSpecification} from '../specification.js' import {BaseSchemaWithoutHandle} from '../schemas.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const BrandingSchema = BaseSchemaWithoutHandle.extend({ name: zod.string({required_error: 'String is required'}).max(30, {message: 'String must be less than 30 characters'}), diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_events.ts b/packages/app/src/cli/models/extensions/specifications/app_config_events.ts index 227c2327511..7d6bb8a788f 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_events.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_events.ts @@ -1,7 +1,7 @@ import {transformToEventsConfig, transformFromEventsConfig} from './transform/app_config_events.js' import {CustomTransformationConfig, createConfigExtensionSpecification} from '../specification.js' import {BaseSchemaWithoutHandle} from '../schemas.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export const EventsSpecIdentifier = 'events' diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_point_of_sale.ts b/packages/app/src/cli/models/extensions/specifications/app_config_point_of_sale.ts index 91a6ed23911..428838c249f 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_point_of_sale.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_point_of_sale.ts @@ -1,6 +1,6 @@ import {createConfigExtensionSpecification, TransformationConfig} from '../specification.js' import {BaseSchemaWithoutHandle} from '../schemas.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const PosConfigurationSchema = BaseSchemaWithoutHandle.extend({ pos: zod diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_privacy_compliance_webhooks.test.ts b/packages/app/src/cli/models/extensions/specifications/app_config_privacy_compliance_webhooks.test.ts index c7d99cb753c..31e9f6b103d 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_privacy_compliance_webhooks.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_privacy_compliance_webhooks.test.ts @@ -1,6 +1,6 @@ import spec from './app_config_privacy_compliance_webhooks.js' import {placeholderAppConfiguration} from '../../app/app.test-data.js' -import {isEmpty} from '@shopify/cli-kit/common/object' +import {isEmpty} from '@shopify/cli-kit/shared/common/object' import {describe, expect, test} from 'vitest' describe('privacy_compliance_webhooks', () => { diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_privacy_compliance_webhooks.ts b/packages/app/src/cli/models/extensions/specifications/app_config_privacy_compliance_webhooks.ts index 0599e0ed0bd..85bbeccee63 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_privacy_compliance_webhooks.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_privacy_compliance_webhooks.ts @@ -5,7 +5,7 @@ import {mergeAllWebhooks} from './transform/app_config_webhook.js' import {removeTrailingSlash} from './validation/common.js' import {CustomTransformationConfig, createConfigExtensionSpecification} from '../specification.js' import {AppConfigurationWithoutPath, CurrentAppConfiguration} from '../../app/app.js' -import {compact, getPathValue} from '@shopify/cli-kit/common/object' +import {compact, getPathValue} from '@shopify/cli-kit/shared/common/object' const PrivacyComplianceWebhooksTransformConfig: CustomTransformationConfig = { forward: transformToPrivacyComplianceWebhooksModule, diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_webhook_schemas/webhook_subscription_schema.ts b/packages/app/src/cli/models/extensions/specifications/app_config_webhook_schemas/webhook_subscription_schema.ts index 7c22dd007d2..34a993c07b8 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_webhook_schemas/webhook_subscription_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_webhook_schemas/webhook_subscription_schema.ts @@ -1,5 +1,5 @@ import {WebhookSubscriptionUriValidation, removeTrailingSlash} from '../validation/common.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export enum ComplianceTopic { CustomersRedact = 'customers/redact', diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_webhook_schemas/webhooks_schema.ts b/packages/app/src/cli/models/extensions/specifications/app_config_webhook_schemas/webhooks_schema.ts index 98df8807a53..efcd8744b39 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_webhook_schemas/webhooks_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_webhook_schemas/webhooks_schema.ts @@ -4,7 +4,7 @@ import {WebhookSubscriptionUriValidation} from '../validation/common.js' import {SingleWebhookSubscriptionSchema} from '../app_config_webhook_subscription.js' import {mergeAllWebhooks} from '../transform/app_config_webhook.js' import {BaseSchemaWithoutHandle} from '../../schemas.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const WebhooksConfigSchema = zod.object({ api_version: zod.string({required_error: 'String is required'}), diff --git a/packages/app/src/cli/models/extensions/specifications/app_config_webhook_subscription.ts b/packages/app/src/cli/models/extensions/specifications/app_config_webhook_subscription.ts index 762c33eea86..86aa331ebdd 100644 --- a/packages/app/src/cli/models/extensions/specifications/app_config_webhook_subscription.ts +++ b/packages/app/src/cli/models/extensions/specifications/app_config_webhook_subscription.ts @@ -3,7 +3,7 @@ import {prependApplicationUrl} from './validation/url_prepender.js' import {WebhookSubscription} from './types/app_config_webhook.js' import {CustomTransformationConfig, createConfigExtensionSpecification} from '../specification.js' import {CurrentAppConfiguration} from '../../app/app.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export const WebhookSubscriptionSpecIdentifier = 'webhook_subscription' diff --git a/packages/app/src/cli/models/extensions/specifications/channel.ts b/packages/app/src/cli/models/extensions/specifications/channel.ts index 44ac2c2150d..20e83ad2fc0 100644 --- a/packages/app/src/cli/models/extensions/specifications/channel.ts +++ b/packages/app/src/cli/models/extensions/specifications/channel.ts @@ -1,5 +1,5 @@ import {createContractBasedModuleSpecification} from '../specification.js' -import {joinPath} from '@shopify/cli-kit/node/path' +import {joinPath} from '@shopify/cli-kit/shared/node/path' const SUBDIRECTORY_NAME = 'specifications' const FILE_EXTENSIONS = ['json', 'toml', 'yaml', 'yml', 'svg'] diff --git a/packages/app/src/cli/models/extensions/specifications/checkout_post_purchase.ts b/packages/app/src/cli/models/extensions/specifications/checkout_post_purchase.ts index 616adf80b73..aa4de11142d 100644 --- a/packages/app/src/cli/models/extensions/specifications/checkout_post_purchase.ts +++ b/packages/app/src/cli/models/extensions/specifications/checkout_post_purchase.ts @@ -1,6 +1,6 @@ import {BaseSchema, MetafieldSchema} from '../schemas.js' import {createExtensionSpecification} from '../specification.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const dependency = '@shopify/post-purchase-ui-extensions' diff --git a/packages/app/src/cli/models/extensions/specifications/checkout_ui_extension.ts b/packages/app/src/cli/models/extensions/specifications/checkout_ui_extension.ts index f08dfd97c40..202fd6f004e 100644 --- a/packages/app/src/cli/models/extensions/specifications/checkout_ui_extension.ts +++ b/packages/app/src/cli/models/extensions/specifications/checkout_ui_extension.ts @@ -1,7 +1,7 @@ import {createExtensionSpecification} from '../specification.js' import {BaseSchema, MetafieldSchema} from '../schemas.js' import {loadLocalesConfig} from '../../../utilities/extensions/locales-configuration.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const dependency = '@shopify/checkout-ui-extensions' diff --git a/packages/app/src/cli/models/extensions/specifications/editor_extension_collection.test.ts b/packages/app/src/cli/models/extensions/specifications/editor_extension_collection.test.ts index b17191eee34..086d49db040 100644 --- a/packages/app/src/cli/models/extensions/specifications/editor_extension_collection.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/editor_extension_collection.test.ts @@ -2,8 +2,8 @@ import * as loadLocales from '../../../utilities/extensions/locales-configuratio import {ExtensionInstance} from '../extension-instance.js' import {loadLocalExtensionsSpecifications} from '../load-specifications.js' import {placeholderAppConfiguration} from '../../app/app.test-data.js' -import {inTemporaryDirectory} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import {describe, expect, test, vi} from 'vitest' describe('editor_extension_collection', async () => { diff --git a/packages/app/src/cli/models/extensions/specifications/editor_extension_collection.ts b/packages/app/src/cli/models/extensions/specifications/editor_extension_collection.ts index 522fac3fb60..8078c416735 100644 --- a/packages/app/src/cli/models/extensions/specifications/editor_extension_collection.ts +++ b/packages/app/src/cli/models/extensions/specifications/editor_extension_collection.ts @@ -1,7 +1,7 @@ import {loadLocalesConfig} from '../../../utilities/extensions/locales-configuration.js' import {BaseSchema} from '../schemas.js' import {createExtensionSpecification} from '../specification.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' interface IncludeSchema { handle: string diff --git a/packages/app/src/cli/models/extensions/specifications/flow_action.ts b/packages/app/src/cli/models/extensions/specifications/flow_action.ts index 0df7fffb731..43f8dd0e2a6 100644 --- a/packages/app/src/cli/models/extensions/specifications/flow_action.ts +++ b/packages/app/src/cli/models/extensions/specifications/flow_action.ts @@ -8,7 +8,7 @@ import { } from '../../../services/flow/validation.js' import {serializeFields} from '../../../services/flow/serialize-fields.js' import {loadSchemaFromPath} from '../../../services/flow/utils.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const FlowActionExtensionSchema = BaseSchemaWithHandle.extend({ type: zod.literal('flow_action'), diff --git a/packages/app/src/cli/models/extensions/specifications/flow_template.ts b/packages/app/src/cli/models/extensions/specifications/flow_template.ts index 19841b9a4ad..590935accd4 100644 --- a/packages/app/src/cli/models/extensions/specifications/flow_template.ts +++ b/packages/app/src/cli/models/extensions/specifications/flow_template.ts @@ -1,10 +1,10 @@ import {BaseSchemaWithHandle} from '../schemas.js' import {createExtensionSpecification} from '../specification.js' import {loadLocalesConfig} from '../../../utilities/extensions/locales-configuration.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import {zod} from '@shopify/cli-kit/node/schema' -import {AbortError} from '@shopify/cli-kit/node/error' -import {glob} from '@shopify/cli-kit/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {zod} from '@shopify/cli-kit/shared/node/schema' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {glob} from '@shopify/cli-kit/shared/node/fs' import fs from 'fs' const VALID_CATEGORIES = [ diff --git a/packages/app/src/cli/models/extensions/specifications/flow_trigger.ts b/packages/app/src/cli/models/extensions/specifications/flow_trigger.ts index 615e5e5618c..16130f389da 100644 --- a/packages/app/src/cli/models/extensions/specifications/flow_trigger.ts +++ b/packages/app/src/cli/models/extensions/specifications/flow_trigger.ts @@ -3,7 +3,7 @@ import {BaseSchemaWithHandle, FieldSchema} from '../schemas.js' import {createExtensionSpecification} from '../specification.js' import {validateFieldShape, validateTriggerSchemaPresence} from '../../../services/flow/validation.js' import {serializeFields} from '../../../services/flow/serialize-fields.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export const FlowTriggerSettingsSchema = FieldSchema.extend({ key: zod diff --git a/packages/app/src/cli/models/extensions/specifications/function.test.ts b/packages/app/src/cli/models/extensions/specifications/function.test.ts index 8157eac4761..1f6a13b70a7 100644 --- a/packages/app/src/cli/models/extensions/specifications/function.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/function.test.ts @@ -1,11 +1,11 @@ import {FunctionConfigType} from './function.js' import {placeholderAppConfiguration, testFunctionExtension} from '../../app/app.test-data.js' import {ExtensionInstance} from '../extension-instance.js' -import {inTemporaryDirectory, mkdir, touchFile, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {AbortError} from '@shopify/cli-kit/node/error' +import {inTemporaryDirectory, mkdir, touchFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {beforeEach, describe, expect, test} from 'vitest' -import {getPathValue} from '@shopify/cli-kit/common/object' +import {getPathValue} from '@shopify/cli-kit/shared/common/object' describe('functionConfiguration', () => { let extension: ExtensionInstance diff --git a/packages/app/src/cli/models/extensions/specifications/function.ts b/packages/app/src/cli/models/extensions/specifications/function.ts index 4687dc44558..5a76ccd98ee 100644 --- a/packages/app/src/cli/models/extensions/specifications/function.ts +++ b/packages/app/src/cli/models/extensions/specifications/function.ts @@ -1,12 +1,12 @@ import {createExtensionSpecification} from '../specification.js' import {BaseSchema} from '../schemas.js' import {loadLocalesConfig} from '../../../utilities/extensions/locales-configuration.js' -import {zod} from '@shopify/cli-kit/node/schema' -import {joinPath} from '@shopify/cli-kit/node/path' -import {fileExists, readFile} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent} from '@shopify/cli-kit/node/output' -import {randomUUID} from '@shopify/cli-kit/node/crypto' +import {zod} from '@shopify/cli-kit/shared/node/schema' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {fileExists, readFile} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent} from '@shopify/cli-kit/shared/node/output' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' interface UI { app_bridge?: { diff --git a/packages/app/src/cli/models/extensions/specifications/marketing_activity_schemas/marketing_activity_schema.test.ts b/packages/app/src/cli/models/extensions/specifications/marketing_activity_schemas/marketing_activity_schema.test.ts index cddd66aaf30..ee6df0e422f 100644 --- a/packages/app/src/cli/models/extensions/specifications/marketing_activity_schemas/marketing_activity_schema.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/marketing_activity_schemas/marketing_activity_schema.test.ts @@ -1,6 +1,6 @@ import {MarketingActivityExtensionSchema} from './marketing_activity_schema.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' describe('MarketingActivityExtensionSchema', () => { const config = { diff --git a/packages/app/src/cli/models/extensions/specifications/marketing_activity_schemas/marketing_activity_schema.ts b/packages/app/src/cli/models/extensions/specifications/marketing_activity_schemas/marketing_activity_schema.ts index 338d911630b..04103d8369a 100644 --- a/packages/app/src/cli/models/extensions/specifications/marketing_activity_schemas/marketing_activity_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/marketing_activity_schemas/marketing_activity_schema.ts @@ -1,5 +1,5 @@ import {BaseSchema} from '../../schemas.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const BaseFieldSchema = zod.object({ ui_type: zod.string(), diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension.test.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension.test.ts index 2798e4b5b47..5daa1214fc2 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension.test.ts @@ -3,7 +3,7 @@ import {OffsitePaymentsAppExtensionConfigType} from './payments_app_extension_sc import {placeholderAppConfiguration, testPaymentsAppExtension} from '../../app/app.test-data.js' import {ExtensionInstance} from '../extension-instance.js' import {loadLocalExtensionsSpecifications} from '../load-specifications.js' -import {inTemporaryDirectory, writeFile} from '@shopify/cli-kit/node/fs' +import {inTemporaryDirectory, writeFile} from '@shopify/cli-kit/shared/node/fs' import {beforeEach, describe, expect, test} from 'vitest' describe('PaymentsAppExtension', () => { diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension.ts index 33dfeda8b2e..08309509d82 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension.ts @@ -35,7 +35,7 @@ import { cardPresentPaymentsAppExtensionDeployConfig, } from './payments_app_extension_schemas/card_present_payments_app_extension_schema.js' import {createExtensionSpecification} from '../specification.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const PaymentsAppExtensionSchema = zod.union([ OffsitePaymentsAppExtensionSchema, diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/base_payments_app_extension_schema.test.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/base_payments_app_extension_schema.test.ts index 7e0fd15ef50..0246ae985c5 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/base_payments_app_extension_schema.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/base_payments_app_extension_schema.test.ts @@ -6,7 +6,7 @@ import { SupportedBuyerContextsSchema, } from './base_payments_app_extension_schema.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' describe('BasePaymentsAppExtensionSchema', () => { const config = { diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/base_payments_app_extension_schema.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/base_payments_app_extension_schema.ts index 3394a210dd5..6789be2c051 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/base_payments_app_extension_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/base_payments_app_extension_schema.ts @@ -1,5 +1,5 @@ import {BaseSchema} from '../../schemas.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const MAX_LABEL_SIZE = 50 diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.test.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.test.ts index e722e22d3b8..a5fc6a84423 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.test.ts @@ -5,7 +5,7 @@ import { CARD_PRESENT_TARGET, } from './card_present_payments_app_extension_schema.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const config: CardPresentPaymentsAppExtensionConfigType = { name: 'test extension', diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.ts index 55751f85426..04bcae99e2d 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.ts @@ -2,7 +2,7 @@ import { BasePaymentsAppExtensionSchema, BasePaymentsAppExtensionDeployConfigType, } from './base_payments_app_extension_schema.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export type CardPresentPaymentsAppExtensionConfigType = zod.infer diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/credit_card_payments_app_extension_schema.test.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/credit_card_payments_app_extension_schema.test.ts index f4d1932a22e..7c10d5c0471 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/credit_card_payments_app_extension_schema.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/credit_card_payments_app_extension_schema.test.ts @@ -6,7 +6,7 @@ import { } from './credit_card_payments_app_extension_schema.js' import {buildCheckoutPaymentMethodFields} from './payments_app_extension_test_helper.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const config: CreditCardPaymentsAppExtensionConfigType = { name: 'test extension', diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/credit_card_payments_app_extension_schema.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/credit_card_payments_app_extension_schema.ts index c72be9f3d2f..5fb0ac18ad4 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/credit_card_payments_app_extension_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/credit_card_payments_app_extension_schema.ts @@ -8,7 +8,7 @@ import { } from './base_payments_app_extension_schema.js' import {ExtensionRegistration} from '../../../../api/graphql/all_app_extension_registrations.js' import {extensionUuidToHandle} from '../transform/extension_uuid_to_handle.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export type CreditCardPaymentsAppExtensionConfigType = zod.infer diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_credit_card_payments_app_extension_schema.test.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_credit_card_payments_app_extension_schema.test.ts index bb18e4d03eb..ac7e42a5d63 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_credit_card_payments_app_extension_schema.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_credit_card_payments_app_extension_schema.test.ts @@ -6,7 +6,7 @@ import { } from './custom_credit_card_payments_app_extension_schema.js' import {buildCheckoutPaymentMethodFields} from './payments_app_extension_test_helper.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const config: CustomCreditCardPaymentsAppExtensionConfigType = { name: 'Custom CreditCard extension', diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_credit_card_payments_app_extension_schema.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_credit_card_payments_app_extension_schema.ts index 33e4b948e8a..d009bbf9274 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_credit_card_payments_app_extension_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_credit_card_payments_app_extension_schema.ts @@ -7,7 +7,7 @@ import { } from './base_payments_app_extension_schema.js' import {ExtensionRegistration} from '../../../../api/graphql/all_app_extension_registrations.js' import {extensionUuidToHandle} from '../transform/extension_uuid_to_handle.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export type CustomCreditCardPaymentsAppExtensionConfigType = zod.infer< typeof CustomCreditCardPaymentsAppExtensionSchema diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.test.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.test.ts index e0f0a2fe8b6..59cedc3d363 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.test.ts @@ -6,7 +6,7 @@ import { } from './custom_onsite_payments_app_extension_schema.js' import {buildCheckoutPaymentMethodFields} from './payments_app_extension_test_helper.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const config: CustomOnsitePaymentsAppExtensionConfigType = { name: 'CustomOnsite extension', diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.ts index 1cbea794a74..2f7137368b8 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.ts @@ -8,7 +8,7 @@ import { } from './base_payments_app_extension_schema.js' import {ExtensionRegistration} from '../../../../api/graphql/all_app_extension_registrations.js' import {extensionUuidToHandle} from '../transform/extension_uuid_to_handle.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export type CustomOnsitePaymentsAppExtensionConfigType = zod.infer diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/offsite_payments_app_extension_schema.test.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/offsite_payments_app_extension_schema.test.ts index 204d3c7f1e1..9581193a7f4 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/offsite_payments_app_extension_schema.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/offsite_payments_app_extension_schema.test.ts @@ -4,7 +4,7 @@ import { offsitePaymentsAppExtensionDeployConfig, } from './offsite_payments_app_extension_schema.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const config: OffsitePaymentsAppExtensionConfigType = { name: 'test extension', diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/offsite_payments_app_extension_schema.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/offsite_payments_app_extension_schema.ts index 3b3ab49a300..3f095d6117b 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/offsite_payments_app_extension_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/offsite_payments_app_extension_schema.ts @@ -7,7 +7,7 @@ import { MultipleCaptureSchema, SupportedBuyerContextsSchema, } from './base_payments_app_extension_schema.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export type OffsitePaymentsAppExtensionConfigType = zod.infer diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/redeemable_payments_app_extension_schema.test.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/redeemable_payments_app_extension_schema.test.ts index 308382ded28..e3096ff3fb0 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/redeemable_payments_app_extension_schema.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/redeemable_payments_app_extension_schema.test.ts @@ -4,7 +4,7 @@ import { redeemablePaymentsAppExtensionDeployConfig, } from './redeemable_payments_app_extension_schema.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const config: RedeemablePaymentsAppExtensionConfigType = { name: 'Redeemable extension', diff --git a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/redeemable_payments_app_extension_schema.ts b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/redeemable_payments_app_extension_schema.ts index c908e0b5356..7fd824a96f0 100644 --- a/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/redeemable_payments_app_extension_schema.ts +++ b/packages/app/src/cli/models/extensions/specifications/payments_app_extension_schemas/redeemable_payments_app_extension_schema.ts @@ -6,7 +6,7 @@ import { } from './base_payments_app_extension_schema.js' import {ExtensionRegistration} from '../../../../api/graphql/all_app_extension_registrations.js' import {extensionUuidToHandle} from '../transform/extension_uuid_to_handle.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export type RedeemablePaymentsAppExtensionConfigType = zod.infer diff --git a/packages/app/src/cli/models/extensions/specifications/pos_ui_extension.ts b/packages/app/src/cli/models/extensions/specifications/pos_ui_extension.ts index 33962306a24..8bf5cf7ca73 100644 --- a/packages/app/src/cli/models/extensions/specifications/pos_ui_extension.ts +++ b/packages/app/src/cli/models/extensions/specifications/pos_ui_extension.ts @@ -1,8 +1,8 @@ import {getDependencyVersion} from '../../app/app.js' import {createExtensionSpecification} from '../specification.js' import {BaseSchema} from '../schemas.js' -import {BugError} from '@shopify/cli-kit/node/error' -import {zod} from '@shopify/cli-kit/node/schema' +import {BugError} from '@shopify/cli-kit/shared/node/error' +import {zod} from '@shopify/cli-kit/shared/node/schema' const dependency = '@shopify/retail-ui-extensions' diff --git a/packages/app/src/cli/models/extensions/specifications/product_subscription.ts b/packages/app/src/cli/models/extensions/specifications/product_subscription.ts index ba807e409f6..f9d504de1fb 100644 --- a/packages/app/src/cli/models/extensions/specifications/product_subscription.ts +++ b/packages/app/src/cli/models/extensions/specifications/product_subscription.ts @@ -1,7 +1,7 @@ import {getDependencyVersion} from '../../app/app.js' import {createExtensionSpecification} from '../specification.js' import {BaseSchema} from '../schemas.js' -import {BugError} from '@shopify/cli-kit/node/error' +import {BugError} from '@shopify/cli-kit/shared/node/error' const dependency = '@shopify/admin-ui-extensions' diff --git a/packages/app/src/cli/models/extensions/specifications/tax_calculation.ts b/packages/app/src/cli/models/extensions/specifications/tax_calculation.ts index 1e97e577bb6..b670e81dedc 100644 --- a/packages/app/src/cli/models/extensions/specifications/tax_calculation.ts +++ b/packages/app/src/cli/models/extensions/specifications/tax_calculation.ts @@ -1,6 +1,6 @@ import {createExtensionSpecification} from '../specification.js' import {BaseSchema, MetafieldSchema} from '../schemas.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const CartLinePropertySchema = zod.object({ key: zod.string(), diff --git a/packages/app/src/cli/models/extensions/specifications/theme.ts b/packages/app/src/cli/models/extensions/specifications/theme.ts index 6debcc8135e..b077547219e 100644 --- a/packages/app/src/cli/models/extensions/specifications/theme.ts +++ b/packages/app/src/cli/models/extensions/specifications/theme.ts @@ -2,10 +2,10 @@ import {createExtensionSpecification} from '../specification.js' import {BaseSchema} from '../schemas.js' import {themeExtensionFiles} from '../../../utilities/extensions/theme.js' import {ExtensionInstance} from '../extension-instance.js' -import {fileSize} from '@shopify/cli-kit/node/fs' -import {dirname, relativePath} from '@shopify/cli-kit/node/path' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {fileSize} from '@shopify/cli-kit/shared/node/fs' +import {dirname, relativePath} from '@shopify/cli-kit/shared/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' const themeSpec = createExtensionSpecification({ identifier: 'theme', diff --git a/packages/app/src/cli/models/extensions/specifications/transform/app_config_events.ts b/packages/app/src/cli/models/extensions/specifications/transform/app_config_events.ts index f3173fe6e09..6da4bad2ae4 100644 --- a/packages/app/src/cli/models/extensions/specifications/transform/app_config_events.ts +++ b/packages/app/src/cli/models/extensions/specifications/transform/app_config_events.ts @@ -1,4 +1,4 @@ -import {getPathValue} from '@shopify/cli-kit/common/object' +import {getPathValue} from '@shopify/cli-kit/shared/common/object' /** * Transforms the events config from local to remote format. diff --git a/packages/app/src/cli/models/extensions/specifications/transform/app_config_webhook.ts b/packages/app/src/cli/models/extensions/specifications/transform/app_config_webhook.ts index 22480d02c2d..2b51d8a8f1c 100644 --- a/packages/app/src/cli/models/extensions/specifications/transform/app_config_webhook.ts +++ b/packages/app/src/cli/models/extensions/specifications/transform/app_config_webhook.ts @@ -1,5 +1,5 @@ import {WebhooksConfig, WebhookSubscription} from '../types/app_config_webhook.js' -import {deepCompare, getPathValue} from '@shopify/cli-kit/common/object' +import {deepCompare, getPathValue} from '@shopify/cli-kit/shared/common/object' export function transformFromWebhookConfig(content: object) { const webhooks = getPathValue(content, 'webhooks') as WebhooksConfig diff --git a/packages/app/src/cli/models/extensions/specifications/transform/extension_uuid_to_handle.ts b/packages/app/src/cli/models/extensions/specifications/transform/extension_uuid_to_handle.ts index 9e60fa0ae63..289a2db7b92 100644 --- a/packages/app/src/cli/models/extensions/specifications/transform/extension_uuid_to_handle.ts +++ b/packages/app/src/cli/models/extensions/specifications/transform/extension_uuid_to_handle.ts @@ -3,7 +3,7 @@ import {CustomCreditCardPaymentsAppExtensionDeployConfigType} from '../payments_ import {CustomOnsitePaymentsAppExtensionDeployConfigType} from '../payments_app_extension_schemas/custom_onsite_payments_app_extension_schema.js' import {RedeemablePaymentsAppExtensionDeployConfigType} from '../payments_app_extension_schemas/redeemable_payments_app_extension_schema.js' import {ExtensionRegistration} from '../../../../api/graphql/all_app_extension_registrations.js' -import {slugify} from '@shopify/cli-kit/common/string' +import {slugify} from '@shopify/cli-kit/shared/common/string' type Config = | CreditCardPaymentsAppExtensionDeployConfigType diff --git a/packages/app/src/cli/models/extensions/specifications/type-generation.test.ts b/packages/app/src/cli/models/extensions/specifications/type-generation.test.ts index b26704b3d7c..a57a604e9a5 100644 --- a/packages/app/src/cli/models/extensions/specifications/type-generation.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/type-generation.test.ts @@ -1,5 +1,5 @@ import {createToolsTypeDefinition} from './type-generation.js' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {describe, expect, test} from 'vitest' describe('createToolsTypeDefinition', () => { diff --git a/packages/app/src/cli/models/extensions/specifications/type-generation.ts b/packages/app/src/cli/models/extensions/specifications/type-generation.ts index 2dc8b70743e..642c2a3a9dc 100644 --- a/packages/app/src/cli/models/extensions/specifications/type-generation.ts +++ b/packages/app/src/cli/models/extensions/specifications/type-generation.ts @@ -1,10 +1,10 @@ -import {fileExists, findPathUp, readFileSync} from '@shopify/cli-kit/node/fs' -import {dirname, joinPath, relativizePath, resolvePath} from '@shopify/cli-kit/node/path' -import {AbortError} from '@shopify/cli-kit/node/error' +import {fileExists, findPathUp, readFileSync} from '@shopify/cli-kit/shared/node/fs' +import {dirname, joinPath, relativizePath, resolvePath} from '@shopify/cli-kit/shared/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import ts from 'typescript' import {compile} from 'json-schema-to-typescript' -import {pascalize} from '@shopify/cli-kit/common/string' -import {zod} from '@shopify/cli-kit/node/schema' +import {pascalize} from '@shopify/cli-kit/shared/common/string' +import {zod} from '@shopify/cli-kit/shared/node/schema' import {createRequire} from 'module' const require = createRequire(import.meta.url) diff --git a/packages/app/src/cli/models/extensions/specifications/ui_extension.test.ts b/packages/app/src/cli/models/extensions/specifications/ui_extension.test.ts index 29a8fab8431..4388f296733 100644 --- a/packages/app/src/cli/models/extensions/specifications/ui_extension.test.ts +++ b/packages/app/src/cli/models/extensions/specifications/ui_extension.test.ts @@ -4,12 +4,12 @@ import {ExtensionInstance} from '../extension-instance.js' import {loadLocalExtensionsSpecifications} from '../load-specifications.js' import {placeholderAppConfiguration} from '../../app/app.test-data.js' import {AssetIdentifier} from '../specification.js' -import {inTemporaryDirectory, touchFile, writeFile, mkdir, fileExistsSync} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {err, ok} from '@shopify/cli-kit/node/result' -import {zod} from '@shopify/cli-kit/node/schema' +import {inTemporaryDirectory, touchFile, writeFile, mkdir, fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {err, ok} from '@shopify/cli-kit/shared/node/result' +import {zod} from '@shopify/cli-kit/shared/node/schema' import {describe, expect, test, vi} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' describe('ui_extension', async () => { interface GetUIExtensionProps { diff --git a/packages/app/src/cli/models/extensions/specifications/ui_extension.ts b/packages/app/src/cli/models/extensions/specifications/ui_extension.ts index f3e04cbeab9..b89b0ff875a 100644 --- a/packages/app/src/cli/models/extensions/specifications/ui_extension.ts +++ b/packages/app/src/cli/models/extensions/specifications/ui_extension.ts @@ -12,11 +12,11 @@ import {loadLocalesConfig} from '../../../utilities/extensions/locales-configura import {getExtensionPointTargetSurface} from '../../../services/dev/extension/utilities.js' import {ExtensionInstance} from '../extension-instance.js' import {formatContent} from '../../../utilities/file-formatter.js' -import {err, ok, Result} from '@shopify/cli-kit/node/result' -import {copyFile, fileExists, readFile} from '@shopify/cli-kit/node/fs' -import {joinPath, basename, dirname} from '@shopify/cli-kit/node/path' -import {outputContent, outputToken, outputWarn} from '@shopify/cli-kit/node/output' -import {zod} from '@shopify/cli-kit/node/schema' +import {err, ok, Result} from '@shopify/cli-kit/shared/node/result' +import {copyFile, fileExists, readFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, basename, dirname} from '@shopify/cli-kit/shared/node/path' +import {outputContent, outputToken, outputWarn} from '@shopify/cli-kit/shared/node/output' +import {zod} from '@shopify/cli-kit/shared/node/schema' const dependency = '@shopify/checkout-ui-extensions' diff --git a/packages/app/src/cli/models/extensions/specifications/validation/app_config_webhook.ts b/packages/app/src/cli/models/extensions/specifications/validation/app_config_webhook.ts index 247274ead77..9473c59403c 100644 --- a/packages/app/src/cli/models/extensions/specifications/validation/app_config_webhook.ts +++ b/packages/app/src/cli/models/extensions/specifications/validation/app_config_webhook.ts @@ -1,6 +1,6 @@ -import {zod} from '@shopify/cli-kit/node/schema' -import {uniq} from '@shopify/cli-kit/common/array' -import colors from '@shopify/cli-kit/node/colors' +import {zod} from '@shopify/cli-kit/shared/node/schema' +import {uniq} from '@shopify/cli-kit/shared/common/array' +import colors from '@shopify/cli-kit/shared/node/colors' import type {WebhooksConfig} from '../types/app_config_webhook.js' export function webhookValidator(schema: object, ctx: zod.RefinementCtx) { diff --git a/packages/app/src/cli/models/extensions/specifications/validation/common.ts b/packages/app/src/cli/models/extensions/specifications/validation/common.ts index 8c6faf91057..b3f8afa12a8 100644 --- a/packages/app/src/cli/models/extensions/specifications/validation/common.ts +++ b/packages/app/src/cli/models/extensions/specifications/validation/common.ts @@ -1,4 +1,4 @@ -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' const httpsRegex = /^(https:\/\/)/ // example PubSub URI - pubsub://{project}:{topic} diff --git a/packages/app/src/cli/models/extensions/specifications/web_pixel_extension.ts b/packages/app/src/cli/models/extensions/specifications/web_pixel_extension.ts index 298a18d876b..b96c23f1b0e 100644 --- a/packages/app/src/cli/models/extensions/specifications/web_pixel_extension.ts +++ b/packages/app/src/cli/models/extensions/specifications/web_pixel_extension.ts @@ -1,8 +1,8 @@ import {createExtensionSpecification} from '../specification.js' import {BaseSchema} from '../schemas.js' -import {zod} from '@shopify/cli-kit/node/schema' -import {AbortError} from '@shopify/cli-kit/node/error' -import {fileSize} from '@shopify/cli-kit/node/fs' +import {zod} from '@shopify/cli-kit/shared/node/schema' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {fileSize} from '@shopify/cli-kit/shared/node/fs' const kilobytes = 1024 const BUNDLE_SIZE_LIMIT_KB = 128 diff --git a/packages/app/src/cli/prompts/config.test.ts b/packages/app/src/cli/prompts/config.test.ts index 587c11fce52..01719538d4b 100644 --- a/packages/app/src/cli/prompts/config.test.ts +++ b/packages/app/src/cli/prompts/config.test.ts @@ -1,12 +1,12 @@ import {selectConfigFile, selectConfigName, validate} from './config.js' import {describe, expect, test, vi} from 'vitest' -import {inTemporaryDirectory, writeFileSync} from '@shopify/cli-kit/node/fs' -import {renderConfirmationPrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/node/ui' -import {joinPath} from '@shopify/cli-kit/node/path' -import {err, ok} from '@shopify/cli-kit/node/result' +import {inTemporaryDirectory, writeFileSync} from '@shopify/cli-kit/shared/node/fs' +import {renderConfirmationPrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/shared/node/ui' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {err, ok} from '@shopify/cli-kit/shared/node/result' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('selectConfigName', () => { test('returns the chosen file name when the file does not exist', async () => { diff --git a/packages/app/src/cli/prompts/config.ts b/packages/app/src/cli/prompts/config.ts index a93eaff4d15..935a1efaee9 100644 --- a/packages/app/src/cli/prompts/config.ts +++ b/packages/app/src/cli/prompts/config.ts @@ -5,12 +5,12 @@ import { renderConfirmationPrompt, renderSelectPrompt, renderTextPrompt, -} from '@shopify/cli-kit/node/ui' -import {fileExists, glob} from '@shopify/cli-kit/node/fs' -import {basename, joinPath} from '@shopify/cli-kit/node/path' -import {slugify} from '@shopify/cli-kit/common/string' -import {err, ok, Result} from '@shopify/cli-kit/node/result' -import colors from '@shopify/cli-kit/node/colors' +} from '@shopify/cli-kit/shared/node/ui' +import {fileExists, glob} from '@shopify/cli-kit/shared/node/fs' +import {basename, joinPath} from '@shopify/cli-kit/shared/node/path' +import {slugify} from '@shopify/cli-kit/shared/common/string' +import {err, ok, Result} from '@shopify/cli-kit/shared/node/result' +import colors from '@shopify/cli-kit/shared/node/colors' export async function selectConfigName(directory: string, defaultName = ''): Promise { const namePromptOptions = buildTextPromptOptions(defaultName) diff --git a/packages/app/src/cli/prompts/deploy-release.test.ts b/packages/app/src/cli/prompts/deploy-release.test.ts index e7286c555f6..6a529608ae0 100644 --- a/packages/app/src/cli/prompts/deploy-release.test.ts +++ b/packages/app/src/cli/prompts/deploy-release.test.ts @@ -7,9 +7,9 @@ import { buildExtensionBreakdownInfo, } from '../services/context/breakdown-extensions.js' import {MockInstance, beforeEach, describe, expect, test, vi} from 'vitest' -import * as ui from '@shopify/cli-kit/node/ui' +import * as ui from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/context/local') beforeEach(() => { // Mock isTTY to return true so prompts are shown instead of errors in tests diff --git a/packages/app/src/cli/prompts/deploy-release.ts b/packages/app/src/cli/prompts/deploy-release.ts index 5198b205e25..ddba11d2bce 100644 --- a/packages/app/src/cli/prompts/deploy-release.ts +++ b/packages/app/src/cli/prompts/deploy-release.ts @@ -10,8 +10,8 @@ import { renderConfirmationPrompt, renderDangerousConfirmationPrompt, isTTY, -} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' +} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' interface DeployOrReleaseConfirmationPromptOptions { extensionIdentifiersBreakdown: ExtensionIdentifiersBreakdown diff --git a/packages/app/src/cli/prompts/dev.test.ts b/packages/app/src/cli/prompts/dev.test.ts index e72baa0c7bb..cb493b5f646 100644 --- a/packages/app/src/cli/prompts/dev.test.ts +++ b/packages/app/src/cli/prompts/dev.test.ts @@ -13,10 +13,10 @@ import {getTomls} from '../utilities/app/config/getTomls.js' import {searchForAppsByNameFactory} from '../services/dev/prompt-helpers.js' import {ApplicationURLs} from '../services/dev/urls.js' import {describe, expect, vi, test, beforeEach} from 'vitest' -import {renderAutocompletePrompt, renderConfirmationPrompt, renderTextPrompt} from '@shopify/cli-kit/node/ui' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {renderAutocompletePrompt, renderConfirmationPrompt, renderTextPrompt} from '@shopify/cli-kit/shared/node/ui' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../utilities/app/config/getTomls') const ORG1: Organization = { diff --git a/packages/app/src/cli/prompts/dev.ts b/packages/app/src/cli/prompts/dev.ts index 71cc296a88e..9ee2a82fbe7 100644 --- a/packages/app/src/cli/prompts/dev.ts +++ b/packages/app/src/cli/prompts/dev.ts @@ -10,8 +10,8 @@ import { renderAutocompletePrompt, renderConfirmationPrompt, renderTextPrompt, -} from '@shopify/cli-kit/node/ui' -import {outputCompleted} from '@shopify/cli-kit/node/output' +} from '@shopify/cli-kit/shared/node/ui' +import {outputCompleted} from '@shopify/cli-kit/shared/node/output' export async function selectOrganizationPrompt(organizations: Organization[]): Promise { if (organizations.length === 1) { diff --git a/packages/app/src/cli/prompts/function/replay.test.ts b/packages/app/src/cli/prompts/function/replay.test.ts index 766d351db94..77021a09b44 100644 --- a/packages/app/src/cli/prompts/function/replay.test.ts +++ b/packages/app/src/cli/prompts/function/replay.test.ts @@ -1,9 +1,9 @@ import {selectFunctionRunPrompt} from './replay.js' import {FunctionRunData} from '../../services/function/replay.js' import {describe, expect, vi, test} from 'vitest' -import {renderAutocompletePrompt} from '@shopify/cli-kit/node/ui' +import {renderAutocompletePrompt} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') const RUN1: FunctionRunData = { shopId: 69665030382, diff --git a/packages/app/src/cli/prompts/function/replay.ts b/packages/app/src/cli/prompts/function/replay.ts index 3952ea8999c..ddd123132df 100644 --- a/packages/app/src/cli/prompts/function/replay.ts +++ b/packages/app/src/cli/prompts/function/replay.ts @@ -1,5 +1,5 @@ import {FunctionRunData} from '../../services/function/replay.js' -import {renderAutocompletePrompt} from '@shopify/cli-kit/node/ui' +import {renderAutocompletePrompt} from '@shopify/cli-kit/shared/node/ui' export async function selectFunctionRunPrompt(functionRuns: FunctionRunData[]): Promise { if (functionRuns.length === 0) return undefined diff --git a/packages/app/src/cli/prompts/generate/extension.test.ts b/packages/app/src/cli/prompts/generate/extension.test.ts index 48eeb31453a..a1781d7aa30 100644 --- a/packages/app/src/cli/prompts/generate/extension.test.ts +++ b/packages/app/src/cli/prompts/generate/extension.test.ts @@ -4,11 +4,11 @@ import {testApp, testRemoteExtensionTemplates} from '../../models/app/app.test-d import {ExtensionTemplate} from '../../models/app/template.js' import {ExtensionFlavorValue} from '../../services/generate/extension.js' import {describe, expect, vi, beforeEach, test} from 'vitest' -import {isShopify, isUnitTest} from '@shopify/cli-kit/node/context/local' -import {renderAutocompletePrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/node/ui' +import {isShopify, isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {renderAutocompletePrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/ui') beforeEach(() => { vi.mocked(isShopify).mockResolvedValue(true) diff --git a/packages/app/src/cli/prompts/generate/extension.ts b/packages/app/src/cli/prompts/generate/extension.ts index a4d0e63a03a..cc1c23aef8c 100644 --- a/packages/app/src/cli/prompts/generate/extension.ts +++ b/packages/app/src/cli/prompts/generate/extension.ts @@ -1,11 +1,11 @@ import {AppInterface} from '../../models/app/app.js' import {ExtensionFlavorValue} from '../../services/generate/extension.js' import {ExtensionTemplate} from '../../models/app/template.js' -import {fileExistsSync} from '@shopify/cli-kit/node/fs' -import {renderAutocompletePrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' -import {joinPath} from '@shopify/cli-kit/node/path' -import {slugify} from '@shopify/cli-kit/common/string' +import {fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {renderAutocompletePrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {slugify} from '@shopify/cli-kit/shared/common/string' export interface GenerateExtensionPromptOptions { name?: string diff --git a/packages/app/src/cli/prompts/import-extensions.test.ts b/packages/app/src/cli/prompts/import-extensions.test.ts index f4e24840faa..8fa29c92f93 100644 --- a/packages/app/src/cli/prompts/import-extensions.test.ts +++ b/packages/app/src/cli/prompts/import-extensions.test.ts @@ -1,10 +1,10 @@ import {getMigrationChoices, selectMigrationChoice, allMigrationChoices, MigrationChoice} from './import-extensions.js' import {ExtensionRegistration} from '../api/graphql/all_app_extension_registrations.js' import {describe, expect, test, vi} from 'vitest' -import {renderSelectPrompt} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' +import {renderSelectPrompt} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('allMigrationChoices', () => { test('contains all expected migration choices', () => { diff --git a/packages/app/src/cli/prompts/import-extensions.ts b/packages/app/src/cli/prompts/import-extensions.ts index 051f4be1f1d..bf1eaa87c2f 100644 --- a/packages/app/src/cli/prompts/import-extensions.ts +++ b/packages/app/src/cli/prompts/import-extensions.ts @@ -5,8 +5,8 @@ import {buildTomlObject as buildMarketingActivityTomlObject} from '../services/m import {buildTomlObject as buildSubscriptionLinkTomlObject} from '../services/subscription_link/extension-to-toml.js' import {ExtensionRegistration} from '../api/graphql/all_app_extension_registrations.js' import {CurrentAppConfiguration} from '../models/app/app.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {renderSelectPrompt} from '@shopify/cli-kit/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {renderSelectPrompt} from '@shopify/cli-kit/shared/node/ui' export interface MigrationChoice { label: string diff --git a/packages/app/src/cli/prompts/init/init.test.ts b/packages/app/src/cli/prompts/init/init.test.ts index 1d7e55d3f0a..64662de0573 100644 --- a/packages/app/src/cli/prompts/init/init.test.ts +++ b/packages/app/src/cli/prompts/init/init.test.ts @@ -1,10 +1,10 @@ import init, {InitOptions} from './init.js' import {describe, expect, vi, test, beforeEach} from 'vitest' -import {renderSelectPrompt} from '@shopify/cli-kit/node/ui' -import {installGlobalCLIPrompt} from '@shopify/cli-kit/node/is-global' +import {renderSelectPrompt} from '@shopify/cli-kit/shared/node/ui' +import {installGlobalCLIPrompt} from '@shopify/cli-kit/shared/node/is-global' -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/is-global') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/shared/node/is-global') const globalCLIResult = {install: true, alreadyInstalled: false} diff --git a/packages/app/src/cli/prompts/init/init.ts b/packages/app/src/cli/prompts/init/init.ts index d0871f5e7f6..2daa236dc88 100644 --- a/packages/app/src/cli/prompts/init/init.ts +++ b/packages/app/src/cli/prompts/init/init.ts @@ -1,5 +1,5 @@ -import {InstallGlobalCLIPromptResult, installGlobalCLIPrompt} from '@shopify/cli-kit/node/is-global' -import {renderSelectPrompt} from '@shopify/cli-kit/node/ui' +import {InstallGlobalCLIPromptResult, installGlobalCLIPrompt} from '@shopify/cli-kit/shared/node/is-global' +import {renderSelectPrompt} from '@shopify/cli-kit/shared/node/ui' export interface InitOptions { template?: string diff --git a/packages/app/src/cli/prompts/uid-mapping-error.ts b/packages/app/src/cli/prompts/uid-mapping-error.ts index 71a073c98f7..4b07714ff51 100644 --- a/packages/app/src/cli/prompts/uid-mapping-error.ts +++ b/packages/app/src/cli/prompts/uid-mapping-error.ts @@ -1,4 +1,4 @@ -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export function throwUidMappingError() { const message = ['Your app has extensions which need to be assigned', {command: 'uid'}, 'identifiers.'] diff --git a/packages/app/src/cli/prompts/webhook/trigger.test.ts b/packages/app/src/cli/prompts/webhook/trigger.test.ts index 9f846a674a4..20a9a74777d 100644 --- a/packages/app/src/cli/prompts/webhook/trigger.test.ts +++ b/packages/app/src/cli/prompts/webhook/trigger.test.ts @@ -1,9 +1,9 @@ import {addressPrompt, apiVersionPrompt, deliveryMethodPrompt, topicPrompt} from './trigger.js' import {DELIVERY_METHOD} from '../../services/webhook/trigger-flags.js' import {describe, expect, vi, test} from 'vitest' -import {renderAutocompletePrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/node/ui' +import {renderAutocompletePrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('topicPrompt', () => { test('asks the user to enter a topic name', async () => { diff --git a/packages/app/src/cli/prompts/webhook/trigger.ts b/packages/app/src/cli/prompts/webhook/trigger.ts index 5aa4a237b21..7c77d912882 100644 --- a/packages/app/src/cli/prompts/webhook/trigger.ts +++ b/packages/app/src/cli/prompts/webhook/trigger.ts @@ -1,6 +1,6 @@ import {DELIVERY_METHOD, isAddressAllowedForDeliveryMethod} from '../../services/webhook/trigger-flags.js' -import {renderAutocompletePrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/node/ui' -import {stringifyMessage} from '@shopify/cli-kit/node/output' +import {renderAutocompletePrompt, renderSelectPrompt, renderTextPrompt} from '@shopify/cli-kit/shared/node/ui' +import {stringifyMessage} from '@shopify/cli-kit/shared/node/output' export async function topicPrompt(availableTopics: string[]): Promise { const choicesList = availableTopics.map((topic) => ({label: topic, value: topic})) diff --git a/packages/app/src/cli/services/admin-link/extension-to-toml.ts b/packages/app/src/cli/services/admin-link/extension-to-toml.ts index 7c0d5faa7ac..b78b1ca8ff8 100644 --- a/packages/app/src/cli/services/admin-link/extension-to-toml.ts +++ b/packages/app/src/cli/services/admin-link/extension-to-toml.ts @@ -2,8 +2,8 @@ import {contextToTarget} from './utils.js' import {ExtensionRegistration} from '../../api/graphql/all_app_extension_registrations.js' import {MAX_EXTENSION_HANDLE_LENGTH} from '../../models/extensions/schemas.js' import {CurrentAppConfiguration} from '../../models/app/app.js' -import {encodeToml} from '@shopify/cli-kit/node/toml' -import {slugify} from '@shopify/cli-kit/common/string' +import {encodeToml} from '@shopify/cli-kit/shared/node/toml' +import {slugify} from '@shopify/cli-kit/shared/common/string' interface AdminLinkConfig { text: string diff --git a/packages/app/src/cli/services/admin-link/utils.ts b/packages/app/src/cli/services/admin-link/utils.ts index 67b064f194b..2388c45862c 100644 --- a/packages/app/src/cli/services/admin-link/utils.ts +++ b/packages/app/src/cli/services/admin-link/utils.ts @@ -1,4 +1,4 @@ -import {hyphenate} from '@shopify/cli-kit/common/string' +import {hyphenate} from '@shopify/cli-kit/shared/common/string' export const contextToTarget = (context: string) => { const splitContext = context.split('#') diff --git a/packages/app/src/cli/services/app-context.test.ts b/packages/app/src/cli/services/app-context.test.ts index 37ffaf956cc..f2a5f742d11 100644 --- a/packages/app/src/cli/services/app-context.test.ts +++ b/packages/app/src/cli/services/app-context.test.ts @@ -11,9 +11,9 @@ import metadata from '../metadata.js' import * as loader from '../models/app/loader.js' import {loadLocalExtensionsSpecifications} from '../models/extensions/load-specifications.js' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {inTemporaryDirectory, writeFile, mkdir} from '@shopify/cli-kit/node/fs' -import {joinPath, normalizePath} from '@shopify/cli-kit/node/path' -import {tryParseInt} from '@shopify/cli-kit/common/string' +import {inTemporaryDirectory, writeFile, mkdir} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, normalizePath} from '@shopify/cli-kit/shared/node/path' +import {tryParseInt} from '@shopify/cli-kit/shared/common/string' vi.mock('../models/app/validation/multi-cli-warning.js') vi.mock('./generate/fetch-extension-specifications.js') diff --git a/packages/app/src/cli/services/app-context.ts b/packages/app/src/cli/services/app-context.ts index 61d4e9c923b..874b1c4925c 100644 --- a/packages/app/src/cli/services/app-context.ts +++ b/packages/app/src/cli/services/app-context.ts @@ -11,7 +11,7 @@ import {getAppConfigurationState, loadAppUsingConfigurationState, loadApp} from import {RemoteAwareExtensionSpecification} from '../models/extensions/specification.js' import {AppLinkedInterface, AppInterface} from '../models/app/app.js' import metadata from '../metadata.js' -import {tryParseInt} from '@shopify/cli-kit/common/string' +import {tryParseInt} from '@shopify/cli-kit/shared/common/string' export interface LoadedAppContextOutput { app: AppLinkedInterface diff --git a/packages/app/src/cli/services/app-logs/dev/poll-app-logs.test.ts b/packages/app/src/cli/services/app-logs/dev/poll-app-logs.test.ts index 38a5022fd0b..38805a6e382 100644 --- a/packages/app/src/cli/services/app-logs/dev/poll-app-logs.test.ts +++ b/packages/app/src/cli/services/app-logs/dev/poll-app-logs.test.ts @@ -3,16 +3,16 @@ import {writeAppLogsToFile} from './write-app-logs.js' import {FunctionRunLog} from '../types.js' import {testDeveloperPlatformClient} from '../../../models/app/app.test-data.js' import {describe, expect, test, vi, beforeEach, afterEach} from 'vitest' -import * as components from '@shopify/cli-kit/node/ui/components' -import * as output from '@shopify/cli-kit/node/output' +import * as components from '@shopify/cli-kit/shared/node/ui/components' +import * as output from '@shopify/cli-kit/shared/node/output' import camelcaseKeys from 'camelcase-keys' -import {appManagementFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {appManagementFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' const JWT_TOKEN = 'jwtToken' const TEST_LOGS_DIR = '/test/logs/dir' vi.mock('./write-app-logs.js') -vi.mock('@shopify/cli-kit/node/http') +vi.mock('@shopify/cli-kit/shared/node/http') const FQDN = await appManagementFqdn() const LOGS = '1\\n2\\n3\\n4\\n' diff --git a/packages/app/src/cli/services/app-logs/dev/poll-app-logs.ts b/packages/app/src/cli/services/app-logs/dev/poll-app-logs.ts index a74fa5be0cc..7a2a176982d 100644 --- a/packages/app/src/cli/services/app-logs/dev/poll-app-logs.ts +++ b/packages/app/src/cli/services/app-logs/dev/poll-app-logs.ts @@ -15,8 +15,8 @@ import { } from '../utils.js' import {AppLogData, FunctionRunLog} from '../types.js' import {AppLogsError, AppLogsSuccess, DeveloperPlatformClient} from '../../../utilities/developer-platform-client.js' -import {outputContent, outputDebug, outputToken, outputWarn} from '@shopify/cli-kit/node/output' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' +import {outputContent, outputDebug, outputToken, outputWarn} from '@shopify/cli-kit/shared/node/output' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' import camelcaseKeys from 'camelcase-keys' import {Writable} from 'stream' diff --git a/packages/app/src/cli/services/app-logs/dev/write-app-logs.test.ts b/packages/app/src/cli/services/app-logs/dev/write-app-logs.test.ts index 2788df54a50..0f194b316a9 100644 --- a/packages/app/src/cli/services/app-logs/dev/write-app-logs.test.ts +++ b/packages/app/src/cli/services/app-logs/dev/write-app-logs.test.ts @@ -1,12 +1,12 @@ import {writeAppLogsToFile} from './write-app-logs.js' import {AppLogData, AppLogPayload, FunctionRunLog} from '../types.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import {writeFile} from '@shopify/cli-kit/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {writeFile} from '@shopify/cli-kit/shared/node/fs' import {describe, expect, test, vi, beforeEach} from 'vitest' import camelcaseKeys from 'camelcase-keys' -import {formatLocalDate} from '@shopify/cli-kit/common/string' +import {formatLocalDate} from '@shopify/cli-kit/shared/common/string' -vi.mock('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/fs') const APP_LOG: AppLogData = { shop_id: 1, diff --git a/packages/app/src/cli/services/app-logs/dev/write-app-logs.ts b/packages/app/src/cli/services/app-logs/dev/write-app-logs.ts index c2ca780f34f..1d539b66fb4 100644 --- a/packages/app/src/cli/services/app-logs/dev/write-app-logs.ts +++ b/packages/app/src/cli/services/app-logs/dev/write-app-logs.ts @@ -1,8 +1,8 @@ import {AppLogData} from '../types.js' import {toFormattedAppLogJson} from '../utils.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import {mkdir, writeFile} from '@shopify/cli-kit/node/fs' -import {randomUUID} from '@shopify/cli-kit/node/crypto' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {mkdir, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' import {Writable} from 'stream' interface AppLogFile { diff --git a/packages/app/src/cli/services/app-logs/logs-command/poll-app-logs.test.ts b/packages/app/src/cli/services/app-logs/logs-command/poll-app-logs.test.ts index 278cda28fe2..7cb2681f5d7 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/poll-app-logs.test.ts +++ b/packages/app/src/cli/services/app-logs/logs-command/poll-app-logs.test.ts @@ -2,10 +2,10 @@ import {pollAppLogs} from './poll-app-logs.js' import {testDeveloperPlatformClient} from '../../../models/app/app.test-data.js' import {describe, test, vi, expect} from 'vitest' -vi.mock('@shopify/cli-kit/node/output') -vi.mock('@shopify/cli-kit/node/context/fqdn') -vi.mock('@shopify/cli-kit/node/http') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/output') +vi.mock('@shopify/cli-kit/shared/node/context/fqdn') +vi.mock('@shopify/cli-kit/shared/node/http') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../utils.js') const MOCKED_JWT_TOKEN = 'mockedJwtToken' diff --git a/packages/app/src/cli/services/app-logs/logs-command/poll-app-logs.ts b/packages/app/src/cli/services/app-logs/logs-command/poll-app-logs.ts index be3c1c2313c..9553acb29db 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/poll-app-logs.ts +++ b/packages/app/src/cli/services/app-logs/logs-command/poll-app-logs.ts @@ -1,6 +1,6 @@ import {PollOptions, AppLogData, PollResponse, PollFilters} from '../types.js' import {AppLogsError, AppLogsSuccess, DeveloperPlatformClient} from '../../../utilities/developer-platform-client.js' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' interface PollAppLogsOptions { pollOptions: PollOptions diff --git a/packages/app/src/cli/services/app-logs/logs-command/render-json-logs.test.ts b/packages/app/src/cli/services/app-logs/logs-command/render-json-logs.test.ts index 09ce09e04b9..47c2ceaf0f1 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/render-json-logs.test.ts +++ b/packages/app/src/cli/services/app-logs/logs-command/render-json-logs.test.ts @@ -2,9 +2,9 @@ import {renderJsonLogs} from './render-json-logs.js' import {pollAppLogs} from './poll-app-logs.js' import {handleFetchAppLogsError} from '../utils.js' import {testDeveloperPlatformClient} from '../../../models/app/app.test-data.js' -import {outputInfo, outputResult} from '@shopify/cli-kit/node/output' +import {outputInfo, outputResult} from '@shopify/cli-kit/shared/node/output' import {describe, expect, vi, test, beforeEach, afterEach} from 'vitest' -import {formatLocalDate} from '@shopify/cli-kit/common/string' +import {formatLocalDate} from '@shopify/cli-kit/shared/common/string' vi.mock('./poll-app-logs') vi.mock('../utils', async (importOriginal) => { @@ -15,7 +15,7 @@ vi.mock('../utils', async (importOriginal) => { handleFetchAppLogsError: vi.fn(), } }) -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') describe('renderJsonLogs', () => { beforeEach(() => { diff --git a/packages/app/src/cli/services/app-logs/logs-command/render-json-logs.ts b/packages/app/src/cli/services/app-logs/logs-command/render-json-logs.ts index eb2e9cf5e2a..0b12e14eba6 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/render-json-logs.ts +++ b/packages/app/src/cli/services/app-logs/logs-command/render-json-logs.ts @@ -7,7 +7,7 @@ import { toFormattedAppLogJson, parseAppLogPayload, } from '../utils.js' -import {outputInfo, outputResult} from '@shopify/cli-kit/node/output' +import {outputInfo, outputResult} from '@shopify/cli-kit/shared/node/output' export async function renderJsonLogs({ pollOptions, diff --git a/packages/app/src/cli/services/app-logs/logs-command/ui.tsx b/packages/app/src/cli/services/app-logs/logs-command/ui.tsx index 2a543a72fb9..6629be21dea 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/ui.tsx +++ b/packages/app/src/cli/services/app-logs/logs-command/ui.tsx @@ -2,7 +2,7 @@ import {Logs} from './ui/components/Logs.js' import {PollOptions, SubscribeOptions} from '../types.js' import {subscribeToAppLogs} from '../utils.js' import React from 'react' -import {render} from '@shopify/cli-kit/node/ui' +import {render} from '@shopify/cli-kit/shared/node/ui' export async function renderLogs({ pollOptions, diff --git a/packages/app/src/cli/services/app-logs/logs-command/ui/components/Logs.test.tsx b/packages/app/src/cli/services/app-logs/logs-command/ui/components/Logs.test.tsx index bdaaa07de05..e6726a3e1db 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/ui/components/Logs.test.tsx +++ b/packages/app/src/cli/services/app-logs/logs-command/ui/components/Logs.test.tsx @@ -11,9 +11,9 @@ import { } from '../../../types.js' import {testDeveloperPlatformClient} from '../../../../../models/app/app.test-data.js' import {describe, test, vi, expect} from 'vitest' -import {render} from '@shopify/cli-kit/node/testing/ui' +import {render} from '@shopify/cli-kit/shared/node/testing/ui' import React from 'react' -import {unstyled} from '@shopify/cli-kit/node/output' +import {unstyled} from '@shopify/cli-kit/shared/node/output' vi.mock('./hooks/usePollAppLogs.js') diff --git a/packages/app/src/cli/services/app-logs/logs-command/ui/components/Logs.tsx b/packages/app/src/cli/services/app-logs/logs-command/ui/components/Logs.tsx index cfd3be3ada5..2aff49edb9e 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/ui/components/Logs.tsx +++ b/packages/app/src/cli/services/app-logs/logs-command/ui/components/Logs.tsx @@ -14,7 +14,7 @@ import {DeveloperPlatformClient} from '../../../../../utilities/developer-platfo import React, {FunctionComponent} from 'react' -import {Box, Text} from '@shopify/cli-kit/node/ink' +import {Box, Text} from '@shopify/cli-kit/shared/node/ink' interface LogsProps { resubscribeCallback: () => Promise diff --git a/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/usePollAppLogs.test.tsx b/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/usePollAppLogs.test.tsx index 1ae482ccde2..a5daf71baf5 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/usePollAppLogs.test.tsx +++ b/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/usePollAppLogs.test.tsx @@ -16,7 +16,7 @@ import { NetworkAccessResponseFromCacheLog, } from '../../../../types.js' import {testDeveloperPlatformClient} from '../../../../../../models/app/app.test-data.js' -import {render} from '@shopify/cli-kit/node/testing/ui' +import {render} from '@shopify/cli-kit/shared/node/testing/ui' import {test, describe, vi, beforeEach, afterEach, expect} from 'vitest' import React from 'react' diff --git a/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/usePollAppLogs.ts b/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/usePollAppLogs.ts index cc6f4704cd6..ae5a041990b 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/usePollAppLogs.ts +++ b/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/usePollAppLogs.ts @@ -16,7 +16,7 @@ import {DeveloperPlatformClient} from '../../../../../../utilities/developer-pla import {ErrorResponse, SuccessResponse, AppLogOutput, PollFilters, AppLogPayload} from '../../../../types.js' import {pollAppLogs} from '../../../poll-app-logs.js' import {useState, Dispatch, SetStateAction, useRef, useCallback} from 'react' -import {formatLocalDate} from '@shopify/cli-kit/common/string' +import {formatLocalDate} from '@shopify/cli-kit/shared/common/string' interface UsePollAppLogsOptions { initialJwt: string diff --git a/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/useSelfAdjustingInterval.test.tsx b/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/useSelfAdjustingInterval.test.tsx index 1beaa1d2b29..0b1a92568cc 100644 --- a/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/useSelfAdjustingInterval.test.tsx +++ b/packages/app/src/cli/services/app-logs/logs-command/ui/components/hooks/useSelfAdjustingInterval.test.tsx @@ -1,7 +1,7 @@ import {useSelfAdjustingInterval} from './useSelfAdjustingInterval.js' import {describe, test, expect, vi, beforeEach, afterEach} from 'vitest' import React from 'react' -import {render} from '@shopify/cli-kit/node/testing/ui' +import {render} from '@shopify/cli-kit/shared/node/testing/ui' function renderHook(renderHookCallback: () => THookResult) { const result: { diff --git a/packages/app/src/cli/services/app-logs/sources.test.ts b/packages/app/src/cli/services/app-logs/sources.test.ts index 58f534e2a76..e30860ad7fd 100644 --- a/packages/app/src/cli/services/app-logs/sources.test.ts +++ b/packages/app/src/cli/services/app-logs/sources.test.ts @@ -1,10 +1,10 @@ import {sourcesForApp} from './utils.js' import {sources} from './sources.js' import {testApp} from '../../models/app/app.test-data.js' -import {outputResult, formatSection} from '@shopify/cli-kit/node/output' +import {outputResult, formatSection} from '@shopify/cli-kit/shared/node/output' import {describe, test, vi, expect} from 'vitest' -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') vi.mock('./utils.js') describe('sources', () => { diff --git a/packages/app/src/cli/services/app-logs/sources.ts b/packages/app/src/cli/services/app-logs/sources.ts index 4c38d538d17..49875ac9641 100644 --- a/packages/app/src/cli/services/app-logs/sources.ts +++ b/packages/app/src/cli/services/app-logs/sources.ts @@ -1,6 +1,6 @@ import {AppInterface} from '../../models/app/app.js' import {sourcesForApp} from '../../services/app-logs/utils.js' -import {formatSection, outputResult} from '@shopify/cli-kit/node/output' +import {formatSection, outputResult} from '@shopify/cli-kit/shared/node/output' export function sources(app: AppInterface) { const sources = sourcesForApp(app) diff --git a/packages/app/src/cli/services/app-logs/utils.ts b/packages/app/src/cli/services/app-logs/utils.ts index e80a1f37475..5aa88eafb56 100644 --- a/packages/app/src/cli/services/app-logs/utils.ts +++ b/packages/app/src/cli/services/app-logs/utils.ts @@ -10,11 +10,11 @@ import { import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {AppInterface} from '../../models/app/app.js' import {AppLogsSubscribeMutationVariables} from '../../api/graphql/app-management/generated/app-logs-subscribe.js' -import {outputDebug, outputWarn} from '@shopify/cli-kit/node/output' -import {AbortError} from '@shopify/cli-kit/node/error' +import {outputDebug, outputWarn} from '@shopify/cli-kit/shared/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import camelcaseKeys from 'camelcase-keys' -import {formatLocalDate} from '@shopify/cli-kit/common/string' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' +import {formatLocalDate} from '@shopify/cli-kit/shared/common/string' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' import {Writable} from 'stream' export const POLLING_INTERVAL_MS = 450 diff --git a/packages/app/src/cli/services/app/add-uid-to-extension-toml.test.ts b/packages/app/src/cli/services/app/add-uid-to-extension-toml.test.ts index ded45e32c73..691bbebc298 100644 --- a/packages/app/src/cli/services/app/add-uid-to-extension-toml.test.ts +++ b/packages/app/src/cli/services/app/add-uid-to-extension-toml.test.ts @@ -2,8 +2,8 @@ import {addUidToTomlsIfNecessary} from './add-uid-to-extension-toml.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {testDeveloperPlatformClient, testUIExtension} from '../../models/app/app.test-data.js' import {describe, test, expect} from 'vitest' -import {writeFile, readFile, inTemporaryDirectory} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {writeFile, readFile, inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' describe('addUidToTomlsIfNecessary', () => { test('skips if platform does not support atomic deployments', async () => { diff --git a/packages/app/src/cli/services/app/add-uid-to-extension-toml.ts b/packages/app/src/cli/services/app/add-uid-to-extension-toml.ts index 102727a1a98..6c9bbd791ad 100644 --- a/packages/app/src/cli/services/app/add-uid-to-extension-toml.ts +++ b/packages/app/src/cli/services/app/add-uid-to-extension-toml.ts @@ -1,8 +1,8 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {decodeToml} from '@shopify/cli-kit/node/toml' -import {readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {getPathValue} from '@shopify/cli-kit/common/object' +import {decodeToml} from '@shopify/cli-kit/shared/node/toml' +import {readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {getPathValue} from '@shopify/cli-kit/shared/common/object' export async function addUidToTomlsIfNecessary( extensions: ExtensionInstance[], diff --git a/packages/app/src/cli/services/app/config/link-service.test.ts b/packages/app/src/cli/services/app/config/link-service.test.ts index 361061d4233..817a0f7a1f3 100644 --- a/packages/app/src/cli/services/app/config/link-service.test.ts +++ b/packages/app/src/cli/services/app/config/link-service.test.ts @@ -4,13 +4,13 @@ import {DeveloperPlatformClient, selectDeveloperPlatformClient} from '../../../u import {OrganizationApp, OrganizationSource} from '../../../models/organization.js' import {appNamePrompt, createAsNewAppPrompt, selectOrganizationPrompt} from '../../../prompts/dev.js' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {inTemporaryDirectory, readFile, writeFileSync} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, readFile, writeFileSync} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' vi.mock('./use.js') vi.mock('../../../prompts/dev.js') vi.mock('../../local-storage') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../../dev/fetch.js') vi.mock('../../../utilities/developer-platform-client.js') vi.mock('../../../models/app/validation/multi-cli-warning.js') diff --git a/packages/app/src/cli/services/app/config/link.test.ts b/packages/app/src/cli/services/app/config/link.test.ts index e0d9ccaa684..baf2a57a587 100644 --- a/packages/app/src/cli/services/app/config/link.test.ts +++ b/packages/app/src/cli/services/app/config/link.test.ts @@ -15,11 +15,11 @@ import {fetchAppRemoteConfiguration} from '../select-app.js' import {DeveloperPlatformClient} from '../../../utilities/developer-platform-client.js' import {MinimalAppIdentifiers, OrganizationApp} from '../../../models/organization.js' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {fileExistsSync, inTemporaryDirectory, readFile, writeFileSync} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {outputContent} from '@shopify/cli-kit/node/output' -import {setPathValue} from '@shopify/cli-kit/common/object' +import {fileExistsSync, inTemporaryDirectory, readFile, writeFileSync} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {outputContent} from '@shopify/cli-kit/shared/node/output' +import {setPathValue} from '@shopify/cli-kit/shared/common/object' vi.mock('./use.js') vi.mock('../../../prompts/config.js') @@ -33,7 +33,7 @@ vi.mock('../../../models/app/loader.js', async () => { } }) vi.mock('../../local-storage') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../../context/partner-account-info.js') vi.mock('../../context.js') vi.mock('../select-app.js') diff --git a/packages/app/src/cli/services/app/config/link.ts b/packages/app/src/cli/services/app/config/link.ts index 12997e2d39e..95c4d4502c1 100644 --- a/packages/app/src/cli/services/app/config/link.ts +++ b/packages/app/src/cli/services/app/config/link.ts @@ -32,12 +32,12 @@ import {fetchSpecifications} from '../../generate/fetch-extension-specifications import {AppConfigurationUsedByCli} from '../../../models/extensions/specifications/types/app_config.js' import {getTomls} from '../../../utilities/app/config/getTomls.js' import {loadLocalExtensionsSpecifications} from '../../../models/extensions/load-specifications.js' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {formatPackageManagerCommand} from '@shopify/cli-kit/node/output' -import {deepMergeObjects, isEmpty} from '@shopify/cli-kit/common/object' -import {joinPath} from '@shopify/cli-kit/node/path' -import {AbortError} from '@shopify/cli-kit/node/error' -import {PackageManager} from '@shopify/cli-kit/node/node-package-manager' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {formatPackageManagerCommand} from '@shopify/cli-kit/shared/node/output' +import {deepMergeObjects, isEmpty} from '@shopify/cli-kit/shared/common/object' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {PackageManager} from '@shopify/cli-kit/shared/node/node-package-manager' export interface LinkOptions { directory: string diff --git a/packages/app/src/cli/services/app/config/pull.ts b/packages/app/src/cli/services/app/config/pull.ts index e7ceefdbb03..0e8f35d6506 100644 --- a/packages/app/src/cli/services/app/config/pull.ts +++ b/packages/app/src/cli/services/app/config/pull.ts @@ -7,8 +7,8 @@ import {AppConfigurationFileName} from '../../../models/app/loader.js' import {fetchSpecifications} from '../../generate/fetch-extension-specifications.js' import {RemoteAwareExtensionSpecification} from '../../../models/extensions/specification.js' import {Flag} from '../../../utilities/developer-platform-client.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {basename} from '@shopify/cli-kit/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {basename} from '@shopify/cli-kit/shared/node/path' interface PullOptions { directory: string diff --git a/packages/app/src/cli/services/app/config/use.test.ts b/packages/app/src/cli/services/app/config/use.test.ts index 6f8418c59b0..1f67ef8544a 100644 --- a/packages/app/src/cli/services/app/config/use.test.ts +++ b/packages/app/src/cli/services/app/config/use.test.ts @@ -9,15 +9,15 @@ import {getAppConfigurationFileName, loadAppConfiguration} from '../../../models import {clearCurrentConfigFile, setCachedAppInfo} from '../../local-storage.js' import {selectConfigFile} from '../../../prompts/config.js' import {describe, expect, test, vi} from 'vitest' -import {inTemporaryDirectory, writeFileSync} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {renderSuccess, renderWarning} from '@shopify/cli-kit/node/ui' -import {err, ok} from '@shopify/cli-kit/node/result' +import {inTemporaryDirectory, writeFileSync} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {renderSuccess, renderWarning} from '@shopify/cli-kit/shared/node/ui' +import {err, ok} from '@shopify/cli-kit/shared/node/result' vi.mock('../../../prompts/config.js') vi.mock('../../local-storage.js') vi.mock('../../../models/app/loader.js') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../../context.js') describe('use', () => { diff --git a/packages/app/src/cli/services/app/config/use.ts b/packages/app/src/cli/services/app/config/use.ts index d99123cf58b..ec9870cabb4 100644 --- a/packages/app/src/cli/services/app/config/use.ts +++ b/packages/app/src/cli/services/app/config/use.ts @@ -3,13 +3,13 @@ import {clearCurrentConfigFile, setCachedAppInfo} from '../../local-storage.js' import {selectConfigFile} from '../../../prompts/config.js' import {AppConfiguration, CurrentAppConfiguration, isCurrentAppSchema} from '../../../models/app/app.js' import {DeveloperPlatformClient} from '../../../utilities/developer-platform-client.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {fileExists} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {RenderAlertOptions, renderSuccess, renderWarning} from '@shopify/cli-kit/node/ui' -import {Result, err, ok} from '@shopify/cli-kit/node/result' -import {getPackageManager} from '@shopify/cli-kit/node/node-package-manager' -import {formatPackageManagerCommand} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {fileExists} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {RenderAlertOptions, renderSuccess, renderWarning} from '@shopify/cli-kit/shared/node/ui' +import {Result, err, ok} from '@shopify/cli-kit/shared/node/result' +import {getPackageManager} from '@shopify/cli-kit/shared/node/node-package-manager' +import {formatPackageManagerCommand} from '@shopify/cli-kit/shared/node/output' export interface UseOptions { directory: string diff --git a/packages/app/src/cli/services/app/env/pull.test.ts b/packages/app/src/cli/services/app/env/pull.test.ts index c16c008aa63..51d94d8cff1 100644 --- a/packages/app/src/cli/services/app/env/pull.test.ts +++ b/packages/app/src/cli/services/app/env/pull.test.ts @@ -3,9 +3,9 @@ import {AppInterface, AppLinkedInterface} from '../../../models/app/app.js' import {testApp, testOrganizationApp} from '../../../models/app/app.test-data.js' import {Organization, OrganizationApp, OrganizationSource} from '../../../models/organization.js' import {describe, expect, vi, beforeEach, test} from 'vitest' -import * as file from '@shopify/cli-kit/node/fs' -import {resolvePath, joinPath} from '@shopify/cli-kit/node/path' -import {unstyled, stringifyMessage} from '@shopify/cli-kit/node/output' +import * as file from '@shopify/cli-kit/shared/node/fs' +import {resolvePath, joinPath} from '@shopify/cli-kit/shared/node/path' +import {unstyled, stringifyMessage} from '@shopify/cli-kit/shared/node/output' const ORG1: Organization = { id: '1', diff --git a/packages/app/src/cli/services/app/env/pull.ts b/packages/app/src/cli/services/app/env/pull.ts index 422749dd02e..8268c82fcd1 100644 --- a/packages/app/src/cli/services/app/env/pull.ts +++ b/packages/app/src/cli/services/app/env/pull.ts @@ -3,10 +3,10 @@ import {AppLinkedInterface, getAppScopes} from '../../../models/app/app.js' import {logMetadataForLoadedContext} from '../../context.js' import {Organization, OrganizationApp} from '../../../models/organization.js' -import {patchEnvFile} from '@shopify/cli-kit/node/dot-env' +import {patchEnvFile} from '@shopify/cli-kit/shared/node/dot-env' import {diffLines} from 'diff' -import {fileExists, readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {OutputMessage, outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {fileExists, readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {OutputMessage, outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' interface PullEnvOptions { app: AppLinkedInterface diff --git a/packages/app/src/cli/services/app/env/show.test.ts b/packages/app/src/cli/services/app/env/show.test.ts index e434cda300d..ed638d9a23c 100644 --- a/packages/app/src/cli/services/app/env/show.test.ts +++ b/packages/app/src/cli/services/app/env/show.test.ts @@ -5,13 +5,13 @@ import {selectOrganizationPrompt} from '../../../prompts/dev.js' import {testApp, testOrganizationApp} from '../../../models/app/app.test-data.js' import {OrganizationSource} from '../../../models/organization.js' import {describe, expect, vi, test} from 'vitest' -import * as file from '@shopify/cli-kit/node/fs' -import {stringifyMessage, unstyled} from '@shopify/cli-kit/node/output' -import {joinPath} from '@shopify/cli-kit/node/path' +import * as file from '@shopify/cli-kit/shared/node/fs' +import {stringifyMessage, unstyled} from '@shopify/cli-kit/shared/node/output' +import {joinPath} from '@shopify/cli-kit/shared/node/path' vi.mock('../../dev/fetch.js') vi.mock('../../../prompts/dev.js') -vi.mock('@shopify/cli-kit/node/node-package-manager') +vi.mock('@shopify/cli-kit/shared/node/node-package-manager') describe('env show', () => { test('outputs the new environment', async () => { diff --git a/packages/app/src/cli/services/app/env/show.ts b/packages/app/src/cli/services/app/env/show.ts index a2dbab01a07..9ccc46af032 100644 --- a/packages/app/src/cli/services/app/env/show.ts +++ b/packages/app/src/cli/services/app/env/show.ts @@ -1,7 +1,7 @@ import {AppInterface, getAppScopes} from '../../../models/app/app.js' import {Organization, OrganizationApp} from '../../../models/organization.js' import {logMetadataForLoadedContext} from '../../context.js' -import {OutputMessage, outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {OutputMessage, outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' type Format = 'json' | 'text' diff --git a/packages/app/src/cli/services/app/patch-app-configuration-file.test.ts b/packages/app/src/cli/services/app/patch-app-configuration-file.test.ts index c2f9af0a6e7..204708cbbe8 100644 --- a/packages/app/src/cli/services/app/patch-app-configuration-file.test.ts +++ b/packages/app/src/cli/services/app/patch-app-configuration-file.test.ts @@ -4,8 +4,8 @@ import { unsetAppConfigValue, setManyAppConfigValues, } from './patch-app-configuration-file.js' -import {readFile, writeFileSync, inTemporaryDirectory} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {readFile, writeFileSync, inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import {describe, expect, test} from 'vitest' const defaultToml = `# Learn more about configuring your app at https://shopify.dev/docs/apps/tools/cli/configuration diff --git a/packages/app/src/cli/services/app/patch-app-configuration-file.ts b/packages/app/src/cli/services/app/patch-app-configuration-file.ts index e62ddecb3d0..47e77792cbc 100644 --- a/packages/app/src/cli/services/app/patch-app-configuration-file.ts +++ b/packages/app/src/cli/services/app/patch-app-configuration-file.ts @@ -1,7 +1,7 @@ import {AppHiddenConfig} from '../../models/app/app.js' -import {deepMergeObjects} from '@shopify/cli-kit/common/object' -import {readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {zod} from '@shopify/cli-kit/node/schema' +import {deepMergeObjects} from '@shopify/cli-kit/shared/common/object' +import {readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {zod} from '@shopify/cli-kit/shared/node/schema' import {updateTomlValues} from '@shopify/toml-patch' export interface PatchTomlOptions { diff --git a/packages/app/src/cli/services/app/select-app.ts b/packages/app/src/cli/services/app/select-app.ts index 9340599ec4a..45c15decd90 100644 --- a/packages/app/src/cli/services/app/select-app.ts +++ b/packages/app/src/cli/services/app/select-app.ts @@ -2,7 +2,7 @@ import {MinimalOrganizationApp} from '../../models/organization.js' import {Flag, AppModuleVersion, DeveloperPlatformClient, AppVersion} from '../../utilities/developer-platform-client.js' import {ExtensionSpecification} from '../../models/extensions/specification.js' import {AppConfigurationUsedByCli} from '../../models/extensions/specifications/types/app_config.js' -import {deepMergeObjects} from '@shopify/cli-kit/common/object' +import {deepMergeObjects} from '@shopify/cli-kit/shared/common/object' export function extensionTypeStrategy(specs: ExtensionSpecification[], type?: string) { if (!type) return diff --git a/packages/app/src/cli/services/app/write-app-configuration-file.test.ts b/packages/app/src/cli/services/app/write-app-configuration-file.test.ts index 2506dc3cbd8..adaccc14fd3 100644 --- a/packages/app/src/cli/services/app/write-app-configuration-file.test.ts +++ b/packages/app/src/cli/services/app/write-app-configuration-file.test.ts @@ -1,8 +1,8 @@ import {writeAppConfigurationFile} from './write-app-configuration-file.js' import {DEFAULT_CONFIG, buildVersionedAppSchema} from '../../models/app/app.test-data.js' import {CurrentAppConfiguration} from '../../models/app/app.js' -import {inTemporaryDirectory, readFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, readFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import {describe, expect, test} from 'vitest' const FULL_CONFIGURATION = { diff --git a/packages/app/src/cli/services/app/write-app-configuration-file.ts b/packages/app/src/cli/services/app/write-app-configuration-file.ts index d4b0f3b3d41..1f7ba5ab443 100644 --- a/packages/app/src/cli/services/app/write-app-configuration-file.ts +++ b/packages/app/src/cli/services/app/write-app-configuration-file.ts @@ -1,10 +1,10 @@ import {CurrentAppConfiguration} from '../../models/app/app.js' import {reduceWebhooks} from '../../models/extensions/specifications/transform/app_config_webhook.js' import {removeTrailingSlash} from '../../models/extensions/specifications/validation/common.js' -import {writeFileSync} from '@shopify/cli-kit/node/fs' -import {JsonMapType, encodeToml} from '@shopify/cli-kit/node/toml' -import {zod} from '@shopify/cli-kit/node/schema' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {writeFileSync} from '@shopify/cli-kit/shared/node/fs' +import {JsonMapType, encodeToml} from '@shopify/cli-kit/shared/node/toml' +import {zod} from '@shopify/cli-kit/shared/node/schema' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' // toml does not support comments and there aren't currently any good/maintained libs for this, // so for now, we manually add comments diff --git a/packages/app/src/cli/services/build.ts b/packages/app/src/cli/services/build.ts index 2e172c78fac..ce06481b277 100644 --- a/packages/app/src/cli/services/build.ts +++ b/packages/app/src/cli/services/build.ts @@ -2,8 +2,8 @@ import buildWeb from './web.js' import {installAppDependencies} from './dependencies.js' import {installJavy} from './function/build.js' import {AppInterface, Web} from '../models/app/app.js' -import {renderConcurrent, renderSuccess} from '@shopify/cli-kit/node/ui' -import {AbortSignal} from '@shopify/cli-kit/node/abort' +import {renderConcurrent, renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' import {Writable} from 'stream' interface BuildOptions { diff --git a/packages/app/src/cli/services/build/extension.test.ts b/packages/app/src/cli/services/build/extension.test.ts index 4889dbd803c..1ef132af4ee 100644 --- a/packages/app/src/cli/services/build/extension.test.ts +++ b/packages/app/src/cli/services/build/extension.test.ts @@ -4,15 +4,15 @@ import {buildJSFunction, runWasmOpt, runTrampoline} from '../function/build.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {FunctionConfigType} from '../../models/extensions/specifications/function.js' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {exec} from '@shopify/cli-kit/node/system' +import {exec} from '@shopify/cli-kit/shared/node/system' import lockfile from 'proper-lockfile' -import {AbortError} from '@shopify/cli-kit/node/error' -import {fileExistsSync} from '@shopify/cli-kit/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {fileExistsSync} from '@shopify/cli-kit/shared/node/fs' -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system') vi.mock('../function/build.js') vi.mock('proper-lockfile') -vi.mock('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/fs') describe('buildFunctionExtension', () => { let extension: ExtensionInstance diff --git a/packages/app/src/cli/services/build/extension.ts b/packages/app/src/cli/services/build/extension.ts index 0e992326a25..d8dd282decf 100644 --- a/packages/app/src/cli/services/build/extension.ts +++ b/packages/app/src/cli/services/build/extension.ts @@ -4,13 +4,13 @@ import {bundleExtension} from '../extensions/bundle.js' import {buildJSFunction, runTrampoline, runWasmOpt} from '../function/build.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {FunctionConfigType} from '../../models/extensions/specifications/function.js' -import {exec} from '@shopify/cli-kit/node/system' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {AbortError, AbortSilentError} from '@shopify/cli-kit/node/error' +import {exec} from '@shopify/cli-kit/shared/node/system' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {AbortError, AbortSilentError} from '@shopify/cli-kit/shared/node/error' import lockfile from 'proper-lockfile' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {readFile, touchFile, writeFile, fileExistsSync} from '@shopify/cli-kit/node/fs' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {readFile, touchFile, writeFile, fileExistsSync} from '@shopify/cli-kit/shared/node/fs' import {Writable} from 'stream' export interface ExtensionBuildOptions { diff --git a/packages/app/src/cli/services/build/theme-check.ts b/packages/app/src/cli/services/build/theme-check.ts index 53a00faebd0..96e5f43120f 100644 --- a/packages/app/src/cli/services/build/theme-check.ts +++ b/packages/app/src/cli/services/build/theme-check.ts @@ -1,6 +1,6 @@ -import {readFileSync} from '@shopify/cli-kit/node/fs' -import {itemToString} from '@shopify/cli-kit/node/output' -import {TokenItem} from '@shopify/cli-kit/node/ui' +import {readFileSync} from '@shopify/cli-kit/shared/node/fs' +import {itemToString} from '@shopify/cli-kit/shared/node/output' +import {TokenItem} from '@shopify/cli-kit/shared/node/ui' import {Severity, type Offense, check, path as pathUtils} from '@shopify/theme-check-node' /** diff --git a/packages/app/src/cli/services/bulk-operations/bulk-operation-status.test.ts b/packages/app/src/cli/services/bulk-operations/bulk-operation-status.test.ts index fff16e7493d..59c364742ca 100644 --- a/packages/app/src/cli/services/bulk-operations/bulk-operation-status.test.ts +++ b/packages/app/src/cli/services/bulk-operations/bulk-operation-status.test.ts @@ -10,12 +10,12 @@ import {OrganizationApp, Organization, OrganizationSource} from '../../models/or import {ListBulkOperationsQuery} from '../../api/graphql/bulk-operations/generated/list-bulk-operations.js' import {resolveApiVersion} from '../graphql/common.js' import {afterEach, beforeEach, describe, expect, test, vi} from 'vitest' -import {ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/node/session' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/identity/session' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/api/admin') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/admin/api') vi.mock('../graphql/common.js', async () => { const actual = await vi.importActual('../graphql/common.js') return { diff --git a/packages/app/src/cli/services/bulk-operations/bulk-operation-status.ts b/packages/app/src/cli/services/bulk-operations/bulk-operation-status.ts index 6162909f37f..34e06df948f 100644 --- a/packages/app/src/cli/services/bulk-operations/bulk-operation-status.ts +++ b/packages/app/src/cli/services/bulk-operations/bulk-operation-status.ts @@ -12,13 +12,13 @@ import { ListBulkOperationsQuery, ListBulkOperationsQueryVariables, } from '../../api/graphql/bulk-operations/generated/list-bulk-operations.js' -import {renderInfo, renderSuccess, renderError, renderTable} from '@shopify/cli-kit/node/ui' -import {outputContent, outputToken, outputNewline} from '@shopify/cli-kit/node/output' -import {ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/node/session' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {timeAgo, formatDate} from '@shopify/cli-kit/common/string' -import {BugError} from '@shopify/cli-kit/node/error' -import colors from '@shopify/cli-kit/node/colors' +import {renderInfo, renderSuccess, renderError, renderTable} from '@shopify/cli-kit/shared/node/ui' +import {outputContent, outputToken, outputNewline} from '@shopify/cli-kit/shared/node/output' +import {ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/identity/session' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {timeAgo, formatDate} from '@shopify/cli-kit/shared/common/string' +import {BugError} from '@shopify/cli-kit/shared/node/error' +import colors from '@shopify/cli-kit/shared/node/colors' export function normalizeBulkOperationId(id: string): string { // If already a GID, return as-is diff --git a/packages/app/src/cli/services/bulk-operations/cancel-bulk-operation.test.ts b/packages/app/src/cli/services/bulk-operations/cancel-bulk-operation.test.ts index efee9318fe7..734cc38f239 100644 --- a/packages/app/src/cli/services/bulk-operations/cancel-bulk-operation.test.ts +++ b/packages/app/src/cli/services/bulk-operations/cancel-bulk-operation.test.ts @@ -2,13 +2,13 @@ import {cancelBulkOperation} from './cancel-bulk-operation.js' import {createAdminSessionAsApp, formatOperationInfo} from '../graphql/common.js' import {OrganizationApp, Organization, OrganizationSource} from '../../models/organization.js' import {describe, test, expect, vi, beforeEach, afterEach} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {renderInfo, renderError, renderSuccess, renderWarning} from '@shopify/cli-kit/node/ui' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {renderInfo, renderError, renderSuccess, renderWarning} from '@shopify/cli-kit/shared/node/ui' vi.mock('../graphql/common.js') -vi.mock('@shopify/cli-kit/node/api/admin') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/admin/api') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('cancelBulkOperation', () => { const mockOrganization: Organization = { diff --git a/packages/app/src/cli/services/bulk-operations/cancel-bulk-operation.ts b/packages/app/src/cli/services/bulk-operations/cancel-bulk-operation.ts index 6badc0d5f26..55b8600a6d5 100644 --- a/packages/app/src/cli/services/bulk-operations/cancel-bulk-operation.ts +++ b/packages/app/src/cli/services/bulk-operations/cancel-bulk-operation.ts @@ -6,9 +6,9 @@ import { } from '../../api/graphql/bulk-operations/generated/bulk-operation-cancel.js' import {formatOperationInfo, createAdminSessionAsApp} from '../graphql/common.js' import {OrganizationApp, Organization} from '../../models/organization.js' -import {renderInfo, renderError, renderSuccess, renderWarning} from '@shopify/cli-kit/node/ui' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' +import {renderInfo, renderError, renderSuccess, renderWarning} from '@shopify/cli-kit/shared/node/ui' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' const API_VERSION = '2026-01' diff --git a/packages/app/src/cli/services/bulk-operations/download-bulk-operation-results.test.ts b/packages/app/src/cli/services/bulk-operations/download-bulk-operation-results.test.ts index 802a7aef6bd..c97340a9e3d 100644 --- a/packages/app/src/cli/services/bulk-operations/download-bulk-operation-results.test.ts +++ b/packages/app/src/cli/services/bulk-operations/download-bulk-operation-results.test.ts @@ -1,8 +1,8 @@ import {downloadBulkOperationResults} from './download-bulk-operation-results.js' -import {fetch} from '@shopify/cli-kit/node/http' +import {fetch} from '@shopify/cli-kit/shared/node/http' import {describe, test, expect, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/http') +vi.mock('@shopify/cli-kit/shared/node/http') describe('downloadBulkOperationResults', () => { test('returns text content when fetch is successful', async () => { diff --git a/packages/app/src/cli/services/bulk-operations/download-bulk-operation-results.ts b/packages/app/src/cli/services/bulk-operations/download-bulk-operation-results.ts index 0c779cc3425..f2b1950c04f 100644 --- a/packages/app/src/cli/services/bulk-operations/download-bulk-operation-results.ts +++ b/packages/app/src/cli/services/bulk-operations/download-bulk-operation-results.ts @@ -1,5 +1,5 @@ -import {fetch} from '@shopify/cli-kit/node/http' -import {AbortError} from '@shopify/cli-kit/node/error' +import {fetch} from '@shopify/cli-kit/shared/node/http' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export async function downloadBulkOperationResults(url: string): Promise { const response = await fetch(url) diff --git a/packages/app/src/cli/services/bulk-operations/execute-bulk-operation.test.ts b/packages/app/src/cli/services/bulk-operations/execute-bulk-operation.test.ts index 815d934fd34..7f3047e3b87 100644 --- a/packages/app/src/cli/services/bulk-operations/execute-bulk-operation.test.ts +++ b/packages/app/src/cli/services/bulk-operations/execute-bulk-operation.test.ts @@ -8,11 +8,11 @@ import {resolveApiVersion, createAdminSessionAsApp} from '../graphql/common.js' import {BulkOperationRunQueryMutation} from '../../api/graphql/bulk-operations/generated/bulk-operation-run-query.js' import {BulkOperationRunMutationMutation} from '../../api/graphql/bulk-operations/generated/bulk-operation-run-mutation.js' import {OrganizationApp, OrganizationSource, OrganizationStore} from '../../models/organization.js' -import {renderSuccess, renderWarning, renderError, renderInfo} from '@shopify/cli-kit/node/ui' -import {ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/node/session' -import {inTemporaryDirectory, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {renderSuccess, renderWarning, renderError, renderInfo} from '@shopify/cli-kit/shared/node/ui' +import {ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/identity/session' +import {inTemporaryDirectory, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' import {describe, test, expect, vi, beforeEach, afterEach} from 'vitest' vi.mock('./run-query.js') @@ -28,8 +28,8 @@ vi.mock('../graphql/common.js', async () => { validateMutationStore: vi.fn(), } }) -vi.mock('@shopify/cli-kit/node/ui', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui', async () => { + const actual = await vi.importActual('@shopify/cli-kit/shared/node/ui') return { ...actual, renderSingleTask: vi.fn(async ({task}) => task()), @@ -39,9 +39,9 @@ vi.mock('@shopify/cli-kit/node/ui', async () => { renderInfo: vi.fn(), } }) -vi.mock('@shopify/cli-kit/node/fs') -vi.mock('@shopify/cli-kit/node/session', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/shared/node/fs') +vi.mock('@shopify/cli-kit/identity/session', async () => { + const actual = await vi.importActual('@shopify/cli-kit/identity/session') return { ...actual, ensureAuthenticatedAdminAsApp: vi.fn(), diff --git a/packages/app/src/cli/services/bulk-operations/execute-bulk-operation.ts b/packages/app/src/cli/services/bulk-operations/execute-bulk-operation.ts index bc7d9747e80..59f73f167bc 100644 --- a/packages/app/src/cli/services/bulk-operations/execute-bulk-operation.ts +++ b/packages/app/src/cli/services/bulk-operations/execute-bulk-operation.ts @@ -20,11 +20,11 @@ import { renderWarning, renderSingleTask, TokenItem, -} from '@shopify/cli-kit/node/ui' -import {outputContent, outputToken, outputResult} from '@shopify/cli-kit/node/output' -import {AbortError, BugError} from '@shopify/cli-kit/node/error' -import {AbortController} from '@shopify/cli-kit/node/abort' -import {readFile, writeFile, fileExists} from '@shopify/cli-kit/node/fs' +} from '@shopify/cli-kit/shared/node/ui' +import {outputContent, outputToken, outputResult} from '@shopify/cli-kit/shared/node/output' +import {AbortError, BugError} from '@shopify/cli-kit/shared/node/error' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' +import {readFile, writeFile, fileExists} from '@shopify/cli-kit/shared/node/fs' interface ExecuteBulkOperationInput { organization: Organization diff --git a/packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.test.ts b/packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.test.ts index 7c1a8a87369..51eb89ce82f 100644 --- a/packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.test.ts +++ b/packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.test.ts @@ -5,7 +5,7 @@ import { } from './format-bulk-operation-status.js' import {GetBulkOperationByIdQuery} from '../../api/graphql/bulk-operations/generated/get-bulk-operation-by-id.js' import {describe, test, expect, afterEach} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' type BulkOperation = NonNullable diff --git a/packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.ts b/packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.ts index 906ab76405f..7b8f89a9e15 100644 --- a/packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.ts +++ b/packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.ts @@ -1,7 +1,7 @@ import {extractBulkOperationId} from './bulk-operation-status.js' import {GetBulkOperationByIdQuery} from '../../api/graphql/bulk-operations/generated/get-bulk-operation-by-id.js' -import {outputContent, outputToken, TokenizedString} from '@shopify/cli-kit/node/output' -import {renderError, TokenItem} from '@shopify/cli-kit/node/ui' +import {outputContent, outputToken, TokenizedString} from '@shopify/cli-kit/shared/node/output' +import {renderError, TokenItem} from '@shopify/cli-kit/shared/node/ui' export function formatBulkOperationStatus( operation: NonNullable, diff --git a/packages/app/src/cli/services/bulk-operations/run-mutation.test.ts b/packages/app/src/cli/services/bulk-operations/run-mutation.test.ts index 20f320d286c..2d279510e9d 100644 --- a/packages/app/src/cli/services/bulk-operations/run-mutation.test.ts +++ b/packages/app/src/cli/services/bulk-operations/run-mutation.test.ts @@ -1,9 +1,9 @@ import {runBulkOperationMutation} from './run-mutation.js' import {stageFile} from './stage-file.js' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' import {describe, test, expect, vi, beforeEach} from 'vitest' -vi.mock('@shopify/cli-kit/node/api/admin') +vi.mock('@shopify/cli-kit/admin/api') vi.mock('./stage-file.js') describe('runBulkOperationMutation', () => { diff --git a/packages/app/src/cli/services/bulk-operations/run-mutation.ts b/packages/app/src/cli/services/bulk-operations/run-mutation.ts index d02cd2302f9..9ca6a9ee9c9 100644 --- a/packages/app/src/cli/services/bulk-operations/run-mutation.ts +++ b/packages/app/src/cli/services/bulk-operations/run-mutation.ts @@ -4,8 +4,8 @@ import { BulkOperationRunMutationMutation, BulkOperationRunMutationMutationVariables, } from '../../api/graphql/bulk-operations/generated/bulk-operation-run-mutation.js' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {AdminSession} from '@shopify/cli-kit/identity/session' interface BulkOperationRunMutationOptions { adminSession: AdminSession diff --git a/packages/app/src/cli/services/bulk-operations/run-query.test.ts b/packages/app/src/cli/services/bulk-operations/run-query.test.ts index cf40a9e40a5..de54fa51748 100644 --- a/packages/app/src/cli/services/bulk-operations/run-query.test.ts +++ b/packages/app/src/cli/services/bulk-operations/run-query.test.ts @@ -1,8 +1,8 @@ import {runBulkOperationQuery} from './run-query.js' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' import {describe, test, expect, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/api/admin') +vi.mock('@shopify/cli-kit/admin/api') describe('runBulkOperationQuery', () => { const mockSession = {token: 'test-token', storeFqdn: 'test-store.myshopify.com'} diff --git a/packages/app/src/cli/services/bulk-operations/run-query.ts b/packages/app/src/cli/services/bulk-operations/run-query.ts index 404361e11db..7d8ebc83d3c 100644 --- a/packages/app/src/cli/services/bulk-operations/run-query.ts +++ b/packages/app/src/cli/services/bulk-operations/run-query.ts @@ -2,8 +2,8 @@ import { BulkOperationRunQuery, BulkOperationRunQueryMutation, } from '../../api/graphql/bulk-operations/generated/bulk-operation-run-query.js' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {AdminSession} from '@shopify/cli-kit/identity/session' interface BulkOperationRunQueryOptions { adminSession: AdminSession diff --git a/packages/app/src/cli/services/bulk-operations/stage-file.test.ts b/packages/app/src/cli/services/bulk-operations/stage-file.test.ts index b342a7bf52a..55d24dde450 100644 --- a/packages/app/src/cli/services/bulk-operations/stage-file.test.ts +++ b/packages/app/src/cli/services/bulk-operations/stage-file.test.ts @@ -1,13 +1,13 @@ import {stageFile} from './stage-file.js' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {readFile, fileSize} from '@shopify/cli-kit/node/fs' -import {fetch} from '@shopify/cli-kit/node/http' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {readFile, fileSize} from '@shopify/cli-kit/shared/node/fs' +import {fetch} from '@shopify/cli-kit/shared/node/http' import {describe, test, expect, vi, beforeEach} from 'vitest' -vi.mock('@shopify/cli-kit/node/api/admin') -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/fs') -vi.mock('@shopify/cli-kit/node/http') +vi.mock('@shopify/cli-kit/admin/api') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/shared/node/fs') +vi.mock('@shopify/cli-kit/shared/node/http') describe('stageFile', () => { const mockSession = {token: 'test-token', storeFqdn: 'test-store.myshopify.com'} diff --git a/packages/app/src/cli/services/bulk-operations/stage-file.ts b/packages/app/src/cli/services/bulk-operations/stage-file.ts index ab90ef4fe95..9cb7e57543a 100644 --- a/packages/app/src/cli/services/bulk-operations/stage-file.ts +++ b/packages/app/src/cli/services/bulk-operations/stage-file.ts @@ -3,12 +3,12 @@ import { StagedUploadsCreateMutation, StagedUploadsCreateMutationVariables, } from '../../api/graphql/bulk-operations/generated/staged-uploads-create.js' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {fetch} from '@shopify/cli-kit/node/http' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent} from '@shopify/cli-kit/node/output' -import {renderSingleTask} from '@shopify/cli-kit/node/ui' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {fetch} from '@shopify/cli-kit/shared/node/http' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent} from '@shopify/cli-kit/shared/node/output' +import {renderSingleTask} from '@shopify/cli-kit/shared/node/ui' interface StageFileOptions { adminSession: AdminSession diff --git a/packages/app/src/cli/services/bulk-operations/watch-bulk-operation.test.ts b/packages/app/src/cli/services/bulk-operations/watch-bulk-operation.test.ts index 5dfb9a98c8f..2f95875e459 100644 --- a/packages/app/src/cli/services/bulk-operations/watch-bulk-operation.test.ts +++ b/packages/app/src/cli/services/bulk-operations/watch-bulk-operation.test.ts @@ -5,17 +5,17 @@ import { QUICK_WATCH_TIMEOUT_MS, } from './watch-bulk-operation.js' import {formatBulkOperationStatus} from './format-bulk-operation-status.js' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {sleep} from '@shopify/cli-kit/node/system' -import {renderSingleTask} from '@shopify/cli-kit/node/ui' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {sleep} from '@shopify/cli-kit/shared/node/system' +import {renderSingleTask} from '@shopify/cli-kit/shared/node/ui' import {describe, test, expect, vi, beforeEach} from 'vitest' -import {outputContent} from '@shopify/cli-kit/node/output' -import {AbortController} from '@shopify/cli-kit/node/abort' +import {outputContent} from '@shopify/cli-kit/shared/node/output' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' vi.mock('./format-bulk-operation-status.js') -vi.mock('@shopify/cli-kit/node/api/admin') -vi.mock('@shopify/cli-kit/node/system') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/admin/api') +vi.mock('@shopify/cli-kit/shared/node/system') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('watchBulkOperation', () => { const mockAdminSession = {token: 'test-token', storeFqdn: 'test.myshopify.com'} diff --git a/packages/app/src/cli/services/bulk-operations/watch-bulk-operation.ts b/packages/app/src/cli/services/bulk-operations/watch-bulk-operation.ts index 7bf52053a8d..c3f2c6f6221 100644 --- a/packages/app/src/cli/services/bulk-operations/watch-bulk-operation.ts +++ b/packages/app/src/cli/services/bulk-operations/watch-bulk-operation.ts @@ -4,12 +4,12 @@ import { GetBulkOperationById, GetBulkOperationByIdQuery, } from '../../api/graphql/bulk-operations/generated/get-bulk-operation-by-id.js' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' -import {sleep} from '@shopify/cli-kit/node/system' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {outputContent} from '@shopify/cli-kit/node/output' -import {renderSingleTask} from '@shopify/cli-kit/node/ui' -import {AbortSignal} from '@shopify/cli-kit/node/abort' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' +import {sleep} from '@shopify/cli-kit/shared/node/system' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {outputContent} from '@shopify/cli-kit/shared/node/output' +import {renderSingleTask} from '@shopify/cli-kit/shared/node/ui' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' const TERMINAL_STATUSES = ['COMPLETED', 'FAILED', 'CANCELED', 'EXPIRED'] const INITIAL_POLL_INTERVAL_SECONDS = 1 diff --git a/packages/app/src/cli/services/bundle.test.ts b/packages/app/src/cli/services/bundle.test.ts index 68b8a5f09da..80c1710768d 100644 --- a/packages/app/src/cli/services/bundle.test.ts +++ b/packages/app/src/cli/services/bundle.test.ts @@ -1,11 +1,11 @@ import {writeManifestToBundle, compressBundle} from './bundle.js' import {AppInterface} from '../models/app/app.js' import {describe, test, expect, vi} from 'vitest' -import {joinPath} from '@shopify/cli-kit/node/path' -import {inTemporaryDirectory, mkdir, writeFile, readFile} from '@shopify/cli-kit/node/fs' -import {brotliCompress, zip} from '@shopify/cli-kit/node/archiver' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {inTemporaryDirectory, mkdir, writeFile, readFile} from '@shopify/cli-kit/shared/node/fs' +import {brotliCompress, zip} from '@shopify/cli-kit/shared/node/archiver' -vi.mock('@shopify/cli-kit/node/archiver', () => { +vi.mock('@shopify/cli-kit/shared/node/archiver', () => { return { brotliCompress: vi.fn(), zip: vi.fn(), diff --git a/packages/app/src/cli/services/bundle.ts b/packages/app/src/cli/services/bundle.ts index c3decdbe883..f58565d432e 100644 --- a/packages/app/src/cli/services/bundle.ts +++ b/packages/app/src/cli/services/bundle.ts @@ -2,11 +2,11 @@ import {AppManifest} from '../models/app/app.js' import {AssetUrlSchema, DeveloperPlatformClient} from '../utilities/developer-platform-client.js' import {MinimalAppIdentifiers} from '../models/organization.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import {brotliCompress, zip} from '@shopify/cli-kit/node/archiver' -import {formData, fetch} from '@shopify/cli-kit/node/http' -import {readFileSync} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {brotliCompress, zip} from '@shopify/cli-kit/shared/node/archiver' +import {formData, fetch} from '@shopify/cli-kit/shared/node/http' +import {readFileSync} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {writeFile} from 'fs/promises' export async function writeManifestToBundle(appManifest: AppManifest, bundlePath: string) { diff --git a/packages/app/src/cli/services/context.test.ts b/packages/app/src/cli/services/context.test.ts index 2a0a98d0c09..e31cd4a1d2b 100644 --- a/packages/app/src/cli/services/context.test.ts +++ b/packages/app/src/cli/services/context.test.ts @@ -35,12 +35,12 @@ import { selectDeveloperPlatformClient, } from '../utilities/developer-platform-client.js' import {RemoteAwareExtensionSpecification} from '../models/extensions/specification.js' -import {isServiceAccount, isUserAccount} from '@shopify/cli-kit/node/session' +import {isServiceAccount, isUserAccount} from '@shopify/cli-kit/identity/session' import {afterEach, beforeAll, beforeEach, describe, expect, test, vi} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' -import {getPackageManager} from '@shopify/cli-kit/node/node-package-manager' -import {renderConfirmationPrompt, renderInfo, renderTasks, renderWarning, Task} from '@shopify/cli-kit/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' +import {getPackageManager} from '@shopify/cli-kit/shared/node/node-package-manager' +import {renderConfirmationPrompt, renderInfo, renderTasks, renderWarning, Task} from '@shopify/cli-kit/shared/node/ui' const APP1: OrganizationApp = testOrganizationApp({ id: '1', @@ -133,12 +133,12 @@ vi.mock('../prompts/dev') vi.mock('../models/app/identifiers') vi.mock('./context/identifiers') vi.mock('../models/app/loader.js') -vi.mock('@shopify/cli-kit/node/node-package-manager.js') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/node-package-manager.js') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('./deploy/mode.js') vi.mock('./app/config/link.js') vi.mock('./context/partner-account-info.js') -vi.mock('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/identity/session') vi.mock('./generate/fetch-extension-specifications.js') vi.mock('./app/select-app.js') vi.mock('../utilities/developer-platform-client.js') diff --git a/packages/app/src/cli/services/context.ts b/packages/app/src/cli/services/context.ts index a89a30efbca..e9069438294 100644 --- a/packages/app/src/cli/services/context.ts +++ b/packages/app/src/cli/services/context.ts @@ -25,12 +25,12 @@ import { DeveloperPlatformClient, selectDeveloperPlatformClient, } from '../utilities/developer-platform-client.js' -import {isServiceAccount, isUserAccount} from '@shopify/cli-kit/node/session' -import {tryParseInt} from '@shopify/cli-kit/common/string' -import {Token, renderConfirmationPrompt, renderInfo, renderWarning} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent} from '@shopify/cli-kit/node/output' -import {basename, sniffForJson} from '@shopify/cli-kit/node/path' +import {isServiceAccount, isUserAccount} from '@shopify/cli-kit/identity/session' +import {tryParseInt} from '@shopify/cli-kit/shared/common/string' +import {Token, renderConfirmationPrompt, renderInfo, renderWarning} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent} from '@shopify/cli-kit/shared/node/output' +import {basename, sniffForJson} from '@shopify/cli-kit/shared/node/path' export const InvalidApiKeyErrorMessage = (apiKey: string) => { return { diff --git a/packages/app/src/cli/services/context/breakdown-extensions.test.ts b/packages/app/src/cli/services/context/breakdown-extensions.test.ts index e74ab310183..4fad940db2b 100644 --- a/packages/app/src/cli/services/context/breakdown-extensions.test.ts +++ b/packages/app/src/cli/services/context/breakdown-extensions.test.ts @@ -24,7 +24,7 @@ import {versionDiffByVersion} from '../release/version-diff.js' import {AppVersion, AppModuleVersion, DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {loadLocalExtensionsSpecifications} from '../../models/extensions/load-specifications.js' import {describe, vi, test, beforeAll, expect} from 'vitest' -import {setPathValue} from '@shopify/cli-kit/common/object' +import {setPathValue} from '@shopify/cli-kit/shared/common/object' const REGISTRATION_A: RemoteSource = { uuid: 'UUID_A', @@ -319,7 +319,7 @@ let EXTENSION_A_2: ExtensionInstance let DASH_MIGRATED_EXTENSION_A: ExtensionInstance let uiExtensions: ExtensionInstance[] -vi.mock('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/identity/session') vi.mock('../dev/fetch') vi.mock('./identifiers-extensions') vi.mock('../release/version-diff') diff --git a/packages/app/src/cli/services/context/breakdown-extensions.ts b/packages/app/src/cli/services/context/breakdown-extensions.ts index e685a07cd8c..35e1d33825e 100644 --- a/packages/app/src/cli/services/context/breakdown-extensions.ts +++ b/packages/app/src/cli/services/context/breakdown-extensions.ts @@ -21,9 +21,9 @@ import {rewriteConfiguration} from '../app/write-app-configuration-file.js' import {AppConfigurationUsedByCli} from '../../models/extensions/specifications/types/app_config.js' import {removeTrailingSlash} from '../../models/extensions/specifications/validation/common.js' import {throwUidMappingError} from '../../prompts/uid-mapping-error.js' -import {deepCompare, deepDifference} from '@shopify/cli-kit/common/object' -import {encodeToml} from '@shopify/cli-kit/node/toml' -import {zod} from '@shopify/cli-kit/node/schema' +import {deepCompare, deepDifference} from '@shopify/cli-kit/shared/common/object' +import {encodeToml} from '@shopify/cli-kit/shared/node/toml' +import {zod} from '@shopify/cli-kit/shared/node/schema' export interface ConfigExtensionIdentifiersBreakdown { existingFieldNames: string[] diff --git a/packages/app/src/cli/services/context/id-manual-matching.test.ts b/packages/app/src/cli/services/context/id-manual-matching.test.ts index 830428e6914..d3e811849d7 100644 --- a/packages/app/src/cli/services/context/id-manual-matching.test.ts +++ b/packages/app/src/cli/services/context/id-manual-matching.test.ts @@ -4,9 +4,9 @@ import {ExtensionRegistration} from '../dev/create-extension.js' import {testUIExtension} from '../../models/app/app.test-data.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {describe, expect, vi, test, beforeAll} from 'vitest' -import {renderAutocompletePrompt} from '@shopify/cli-kit/node/ui' +import {renderAutocompletePrompt} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') const REGISTRATION_A: ExtensionRegistration = { uuid: 'UUID_A', diff --git a/packages/app/src/cli/services/context/id-matching.test.ts b/packages/app/src/cli/services/context/id-matching.test.ts index a8313fe5765..8a22f998e7d 100644 --- a/packages/app/src/cli/services/context/id-matching.test.ts +++ b/packages/app/src/cli/services/context/id-matching.test.ts @@ -4,11 +4,11 @@ import {RemoteSource} from './identifiers.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {testDeveloperPlatformClient, testFunctionExtension, testUIExtension} from '../../models/app/app.test-data.js' import {describe, expect, vi, test, beforeAll} from 'vitest' -import {outputInfo} from '@shopify/cli-kit/node/output' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' vi.mock('../dev/fetch') vi.mock('../dev/create-extension') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') const REGISTRATION_A: RemoteSource = { uuid: 'UUID_A', diff --git a/packages/app/src/cli/services/context/id-matching.ts b/packages/app/src/cli/services/context/id-matching.ts index f6546355e10..97733a5bb55 100644 --- a/packages/app/src/cli/services/context/id-matching.ts +++ b/packages/app/src/cli/services/context/id-matching.ts @@ -2,12 +2,12 @@ import {RemoteSource, LocalSource} from './identifiers.js' import {IdentifiersExtensions} from '../../models/app/identifiers.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' -import {groupBy, partition} from '@shopify/cli-kit/common/collection' -import {uniqBy, difference} from '@shopify/cli-kit/common/array' -import {pickBy} from '@shopify/cli-kit/common/object' -import {slugify} from '@shopify/cli-kit/common/string' -import {outputInfo} from '@shopify/cli-kit/node/output' -import colors from '@shopify/cli-kit/node/colors' +import {groupBy, partition} from '@shopify/cli-kit/shared/common/collection' +import {uniqBy, difference} from '@shopify/cli-kit/shared/common/array' +import {pickBy} from '@shopify/cli-kit/shared/common/object' +import {slugify} from '@shopify/cli-kit/shared/common/string' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' +import colors from '@shopify/cli-kit/shared/node/colors' export interface LocalRemoteSource { local: LocalSource diff --git a/packages/app/src/cli/services/context/identifiers-extensions.test.ts b/packages/app/src/cli/services/context/identifiers-extensions.test.ts index cc9a2adb30f..51fccc14414 100644 --- a/packages/app/src/cli/services/context/identifiers-extensions.test.ts +++ b/packages/app/src/cli/services/context/identifiers-extensions.test.ts @@ -32,8 +32,8 @@ import {getModulesToMigrate} from '../dev/migrate-app-module.js' import {ExtensionSpecification} from '../../models/extensions/specification.js' import {PartnersClient} from '../../utilities/developer-platform-client/partners-client.js' import {beforeEach, describe, expect, vi, test, beforeAll} from 'vitest' -import {AbortSilentError} from '@shopify/cli-kit/node/error' -import {setPathValue} from '@shopify/cli-kit/common/object' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' +import {setPathValue} from '@shopify/cli-kit/shared/common/object' interface Registration { uuid: string @@ -169,7 +169,7 @@ async function createExtensionResult(registration: Registration): Promise { const prompts: any = await vi.importActual('./prompts') diff --git a/packages/app/src/cli/services/context/identifiers-extensions.ts b/packages/app/src/cli/services/context/identifiers-extensions.ts index b1b2b639642..d75ca317699 100644 --- a/packages/app/src/cli/services/context/identifiers-extensions.ts +++ b/packages/app/src/cli/services/context/identifiers-extensions.ts @@ -22,9 +22,9 @@ import {ExtensionSpecification} from '../../models/extensions/specification.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {SingleWebhookSubscriptionType} from '../../models/extensions/specifications/app_config_webhook_schemas/webhooks_schema.js' import {PartnersClient} from '../../utilities/developer-platform-client/partners-client.js' -import {outputCompleted} from '@shopify/cli-kit/node/output' -import {AbortSilentError} from '@shopify/cli-kit/node/error' -import {groupBy} from '@shopify/cli-kit/common/collection' +import {outputCompleted} from '@shopify/cli-kit/shared/node/output' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' +import {groupBy} from '@shopify/cli-kit/shared/common/collection' interface AppWithExtensions { extensionRegistrations: RemoteSource[] diff --git a/packages/app/src/cli/services/context/identifiers.test.ts b/packages/app/src/cli/services/context/identifiers.test.ts index 97e0351c489..34832da594a 100644 --- a/packages/app/src/cli/services/context/identifiers.test.ts +++ b/packages/app/src/cli/services/context/identifiers.test.ts @@ -5,7 +5,7 @@ import {deployOrReleaseConfirmationPrompt} from '../../prompts/deploy-release.js import {testApp, testDeveloperPlatformClient, testOrganizationApp} from '../../models/app/app.test-data.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {describe, expect, test, vi} from 'vitest' -import {AbortSilentError} from '@shopify/cli-kit/node/error' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' const developerPlatformClient: DeveloperPlatformClient = testDeveloperPlatformClient() diff --git a/packages/app/src/cli/services/context/identifiers.ts b/packages/app/src/cli/services/context/identifiers.ts index 247ab71bfef..4d80b37e95e 100644 --- a/packages/app/src/cli/services/context/identifiers.ts +++ b/packages/app/src/cli/services/context/identifiers.ts @@ -5,7 +5,7 @@ import {Identifiers} from '../../models/app/identifiers.js' import {MinimalOrganizationApp} from '../../models/organization.js' import {deployOrReleaseConfirmationPrompt} from '../../prompts/deploy-release.js' import {AppVersion, DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {AbortSilentError} from '@shopify/cli-kit/node/error' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' export type PartnersAppForIdentifierMatching = MinimalOrganizationApp diff --git a/packages/app/src/cli/services/context/partner-account-info.test.ts b/packages/app/src/cli/services/context/partner-account-info.test.ts index d21cf375f8b..dc3af8c10b7 100644 --- a/packages/app/src/cli/services/context/partner-account-info.test.ts +++ b/packages/app/src/cli/services/context/partner-account-info.test.ts @@ -2,15 +2,15 @@ import {fetchCurrentAccountInformation} from './partner-account-info.js' import {testDeveloperPlatformClient} from '../../models/app/app.test-data.js' import {getCurrentAccountInfo} from '../../api/graphql/current_account_info.js' import {clearCachedAccountInfo, getCachedAccountInfo, setCachedAccountInfo} from '../../utilities/app-conf-store.js' -import {AccountInfo} from '@shopify/cli-kit/node/session' +import {AccountInfo} from '@shopify/cli-kit/identity/session' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' -vi.mock('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/identity/session') vi.mock('../../api/graphql/current_account_info.js') -vi.mock('@shopify/cli-kit/node/environment') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/environment') +vi.mock('@shopify/cli-kit/shared/node/output') const userId = '1234-5678' const accountInfo: AccountInfo = { diff --git a/packages/app/src/cli/services/context/partner-account-info.ts b/packages/app/src/cli/services/context/partner-account-info.ts index d5c61e027f6..a1213fafe39 100644 --- a/packages/app/src/cli/services/context/partner-account-info.ts +++ b/packages/app/src/cli/services/context/partner-account-info.ts @@ -1,8 +1,8 @@ import {getCurrentAccountInfo} from '../../api/graphql/current_account_info.js' import {getCachedAccountInfo, setCachedAccountInfo} from '../../utilities/app-conf-store.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {AccountInfo} from '@shopify/cli-kit/node/session' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AccountInfo} from '@shopify/cli-kit/identity/session' export async function fetchCurrentAccountInformation( developerPlatformClient: DeveloperPlatformClient, diff --git a/packages/app/src/cli/services/context/prompts.ts b/packages/app/src/cli/services/context/prompts.ts index afc88a99fea..888fc1dd897 100644 --- a/packages/app/src/cli/services/context/prompts.ts +++ b/packages/app/src/cli/services/context/prompts.ts @@ -1,6 +1,6 @@ import {LocalRemoteSource} from './id-matching.js' import {LocalSource, RemoteSource} from './identifiers.js' -import {renderAutocompletePrompt, renderConfirmationPrompt, renderInfo} from '@shopify/cli-kit/node/ui' +import {renderAutocompletePrompt, renderConfirmationPrompt, renderInfo} from '@shopify/cli-kit/shared/node/ui' export async function matchConfirmationPrompt( local: LocalSource, diff --git a/packages/app/src/cli/services/dependencies.test.ts b/packages/app/src/cli/services/dependencies.test.ts index 780ae365d14..ad8318f627e 100644 --- a/packages/app/src/cli/services/dependencies.test.ts +++ b/packages/app/src/cli/services/dependencies.test.ts @@ -2,11 +2,11 @@ import {installAppDependencies} from './dependencies.js' import {AppInterface} from '../models/app/app.js' import {testApp} from '../models/app/app.test-data.js' import {describe, expect, test, vi} from 'vitest' -import {installNPMDependenciesRecursively} from '@shopify/cli-kit/node/node-package-manager' -import {renderTasks} from '@shopify/cli-kit/node/ui' +import {installNPMDependenciesRecursively} from '@shopify/cli-kit/shared/node/node-package-manager' +import {renderTasks} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/node-package-manager') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/node-package-manager') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('installAppDependencies', () => { test('installs dependencies recursively', async () => { diff --git a/packages/app/src/cli/services/dependencies.ts b/packages/app/src/cli/services/dependencies.ts index 53253be4b37..3ffe044484b 100644 --- a/packages/app/src/cli/services/dependencies.ts +++ b/packages/app/src/cli/services/dependencies.ts @@ -1,6 +1,6 @@ import {AppInterface} from '../models/app/app.js' -import {installNPMDependenciesRecursively} from '@shopify/cli-kit/node/node-package-manager' -import {renderTasks} from '@shopify/cli-kit/node/ui' +import {installNPMDependenciesRecursively} from '@shopify/cli-kit/shared/node/node-package-manager' +import {renderTasks} from '@shopify/cli-kit/shared/node/ui' /** * Given an app, it installs its NPM dependencies by traversing diff --git a/packages/app/src/cli/services/deploy.test.ts b/packages/app/src/cli/services/deploy.test.ts index 63bc04b3ff0..34882d2d6c1 100644 --- a/packages/app/src/cli/services/deploy.test.ts +++ b/packages/app/src/cli/services/deploy.test.ts @@ -31,10 +31,10 @@ import { Task, renderConfirmationPrompt, isTTY, -} from '@shopify/cli-kit/node/ui' -import {formatPackageManagerCommand} from '@shopify/cli-kit/node/output' -import {randomUUID} from '@shopify/cli-kit/node/crypto' -import {AbortSilentError} from '@shopify/cli-kit/node/error' +} from '@shopify/cli-kit/shared/node/ui' +import {formatPackageManagerCommand} from '@shopify/cli-kit/shared/node/output' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' const versionTag = 'unique-version-tag' const developerPlatformClient: DeveloperPlatformClient = testDeveloperPlatformClient() @@ -52,9 +52,9 @@ vi.mock('./deploy/upload.js') vi.mock('./deploy/bundle.js') vi.mock('./dev/fetch.js') vi.mock('../models/app/identifiers.js') -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/crypto') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/shared/node/crypto') vi.mock('../validators/extensions.js') vi.mock('./context/prompts') vi.mock('./import-extensions.js') diff --git a/packages/app/src/cli/services/deploy.ts b/packages/app/src/cli/services/deploy.ts index 5cda1effbf9..3847db631df 100644 --- a/packages/app/src/cli/services/deploy.ts +++ b/packages/app/src/cli/services/deploy.ts @@ -11,13 +11,13 @@ import {Organization, OrganizationApp} from '../models/organization.js' import {reloadApp} from '../models/app/loader.js' import {ExtensionRegistration} from '../api/graphql/all_app_extension_registrations.js' import {getTomls} from '../utilities/app/config/getTomls.js' -import {renderInfo, renderSuccess, renderTasks, renderConfirmationPrompt, isTTY} from '@shopify/cli-kit/node/ui' -import {mkdir} from '@shopify/cli-kit/node/fs' -import {joinPath, dirname} from '@shopify/cli-kit/node/path' -import {outputNewline, outputInfo, formatPackageManagerCommand} from '@shopify/cli-kit/node/output' -import {getArrayRejectingUndefined} from '@shopify/cli-kit/common/array' -import {AbortError, AbortSilentError} from '@shopify/cli-kit/node/error' -import type {AlertCustomSection, Task, TokenItem} from '@shopify/cli-kit/node/ui' +import {renderInfo, renderSuccess, renderTasks, renderConfirmationPrompt, isTTY} from '@shopify/cli-kit/shared/node/ui' +import {mkdir} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' +import {outputNewline, outputInfo, formatPackageManagerCommand} from '@shopify/cli-kit/shared/node/output' +import {getArrayRejectingUndefined} from '@shopify/cli-kit/shared/common/array' +import {AbortError, AbortSilentError} from '@shopify/cli-kit/shared/node/error' +import type {AlertCustomSection, Task, TokenItem} from '@shopify/cli-kit/shared/node/ui' export interface DeployOptions { /** The app to be built and uploaded */ diff --git a/packages/app/src/cli/services/deploy/bundle.test.ts b/packages/app/src/cli/services/deploy/bundle.test.ts index cce9f433456..86aab57d157 100644 --- a/packages/app/src/cli/services/deploy/bundle.test.ts +++ b/packages/app/src/cli/services/deploy/bundle.test.ts @@ -4,8 +4,8 @@ import {AppInterface, AppManifest} from '../../models/app/app.js' import * as bundle from '../bundle.js' import * as functionBuild from '../function/build.js' import {describe, expect, test, vi} from 'vitest' -import * as file from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import * as file from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' vi.mock('../function/build.js') diff --git a/packages/app/src/cli/services/deploy/bundle.ts b/packages/app/src/cli/services/deploy/bundle.ts index cc18cddcf00..3084c0cc69d 100644 --- a/packages/app/src/cli/services/deploy/bundle.ts +++ b/packages/app/src/cli/services/deploy/bundle.ts @@ -2,10 +2,10 @@ import {AppInterface, AppManifest} from '../../models/app/app.js' import {Identifiers} from '../../models/app/identifiers.js' import {installJavy} from '../function/build.js' import {compressBundle, writeManifestToBundle} from '../bundle.js' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {mkdir, rmdir} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {renderConcurrent} from '@shopify/cli-kit/node/ui' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {mkdir, rmdir} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {renderConcurrent} from '@shopify/cli-kit/shared/node/ui' import {Writable} from 'stream' interface BundleOptions { diff --git a/packages/app/src/cli/services/deploy/theme-extension-config.test.ts b/packages/app/src/cli/services/deploy/theme-extension-config.test.ts index f28a8c7d595..6a34aca2666 100644 --- a/packages/app/src/cli/services/deploy/theme-extension-config.test.ts +++ b/packages/app/src/cli/services/deploy/theme-extension-config.test.ts @@ -1,8 +1,8 @@ import {themeExtensionConfig} from './theme-extension-config.js' import {loadLocalExtensionsSpecifications} from '../../models/extensions/load-specifications.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' -import {inTemporaryDirectory, writeFile, mkdir} from '@shopify/cli-kit/node/fs' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, writeFile, mkdir} from '@shopify/cli-kit/shared/node/fs' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' import {describe, expect, test} from 'vitest' describe('themeExtensionConfig', () => { diff --git a/packages/app/src/cli/services/deploy/theme-extension-config.ts b/packages/app/src/cli/services/deploy/theme-extension-config.ts index 005ba876d46..9702146fff0 100644 --- a/packages/app/src/cli/services/deploy/theme-extension-config.ts +++ b/packages/app/src/cli/services/deploy/theme-extension-config.ts @@ -1,7 +1,7 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {themeExtensionFiles} from '../../utilities/extensions/theme.js' -import {readFile} from '@shopify/cli-kit/node/fs' -import {relativePath, dirname} from '@shopify/cli-kit/node/path' +import {readFile} from '@shopify/cli-kit/shared/node/fs' +import {relativePath, dirname} from '@shopify/cli-kit/shared/node/path' interface ThemeExtensionConfig { theme_extension: { diff --git a/packages/app/src/cli/services/deploy/upload.test.ts b/packages/app/src/cli/services/deploy/upload.test.ts index 7b428edc9de..fe86dab57b1 100644 --- a/packages/app/src/cli/services/deploy/upload.test.ts +++ b/packages/app/src/cli/services/deploy/upload.test.ts @@ -2,12 +2,12 @@ import {deploymentErrorsToCustomSections, uploadExtensionsBundle} from './upload import {testApp, testDeveloperPlatformClient} from '../../models/app/app.test-data.js' import {AppDeploySchema, AppDeployVariables} from '../../api/graphql/app_deploy.js' import {describe, expect, test, vi} from 'vitest' -import {inTemporaryDirectory, writeFile} from '@shopify/cli-kit/node/fs' -import {formData} from '@shopify/cli-kit/node/http' -import {joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {formData} from '@shopify/cli-kit/shared/node/http' +import {joinPath} from '@shopify/cli-kit/shared/node/path' -vi.mock('@shopify/cli-kit/node/http') -vi.mock('@shopify/cli-kit/node/crypto') +vi.mock('@shopify/cli-kit/shared/node/http') +vi.mock('@shopify/cli-kit/shared/node/crypto') const app = testApp() const appManifest = await app.manifest(undefined) diff --git a/packages/app/src/cli/services/deploy/upload.ts b/packages/app/src/cli/services/deploy/upload.ts index 807d353c733..02fe625c495 100644 --- a/packages/app/src/cli/services/deploy/upload.ts +++ b/packages/app/src/cli/services/deploy/upload.ts @@ -4,9 +4,9 @@ import {AppDeploySchema, AppModuleSettings} from '../../api/graphql/app_deploy.j import {AppDeployOptions, DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {getUploadURL, uploadToGCS} from '../bundle.js' import {AppManifest} from '../../models/app/app.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {AlertCustomSection, ListToken, TokenItem} from '@shopify/cli-kit/node/ui' -import {partition} from '@shopify/cli-kit/common/collection' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {AlertCustomSection, ListToken, TokenItem} from '@shopify/cli-kit/shared/node/ui' +import {partition} from '@shopify/cli-kit/shared/common/collection' interface UploadExtensionsBundleOptions { appManifest: AppManifest diff --git a/packages/app/src/cli/services/dev-clean.test.ts b/packages/app/src/cli/services/dev-clean.test.ts index 258dadf48f1..816dd9792c3 100644 --- a/packages/app/src/cli/services/dev-clean.test.ts +++ b/packages/app/src/cli/services/dev-clean.test.ts @@ -1,10 +1,10 @@ import {devClean} from './dev-clean.js' import {LoadedAppContextOutput} from './app-context.js' import {testDeveloperPlatformClient, testOrganizationStore} from '../models/app/app.test-data.js' -import {renderSuccess} from '@shopify/cli-kit/node/ui' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' import {describe, expect, test, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') const shopDomain = 'test-store.myshopify.com' const mockStore = testOrganizationStore({shopDomain}) diff --git a/packages/app/src/cli/services/dev-clean.ts b/packages/app/src/cli/services/dev-clean.ts index cbd781dd1b3..92a7433770e 100644 --- a/packages/app/src/cli/services/dev-clean.ts +++ b/packages/app/src/cli/services/dev-clean.ts @@ -1,7 +1,7 @@ import {LoadedAppContextOutput} from './app-context.js' import {OrganizationStore} from '../models/organization.js' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' interface DevCleanOptions { appContextResult: LoadedAppContextOutput diff --git a/packages/app/src/cli/services/dev.test.ts b/packages/app/src/cli/services/dev.test.ts index 781ab61ee2d..5193bd553ff 100644 --- a/packages/app/src/cli/services/dev.test.ts +++ b/packages/app/src/cli/services/dev.test.ts @@ -1,10 +1,10 @@ import {warnIfScopesDifferBeforeDev, blockIfMigrationIncomplete} from './dev.js' import {testAppLinked, testDeveloperPlatformClient, testOrganizationApp} from '../models/app/app.test-data.js' import {describe, expect, test, vi} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' vi.mock('./dev/fetch.js') -vi.mock('@shopify/cli-kit/node/tcp') +vi.mock('@shopify/cli-kit/shared/node/tcp') vi.mock('../utilities/mkcert.js') describe('warnIfScopesDifferBeforeDev', () => { diff --git a/packages/app/src/cli/services/dev.ts b/packages/app/src/cli/services/dev.ts index af0af066266..1afcd6e210d 100644 --- a/packages/app/src/cli/services/dev.ts +++ b/packages/app/src/cli/services/dev.ts @@ -39,16 +39,16 @@ import {ports} from '../constants.js' import {generateCertificate} from '../utilities/mkcert.js' import {throwUidMappingError} from '../prompts/uid-mapping-error.js' import {Config} from '@oclif/core' -import {AbortController} from '@shopify/cli-kit/node/abort' -import {checkPortAvailability, getAvailableTCPPort} from '@shopify/cli-kit/node/tcp' -import {TunnelClient} from '@shopify/cli-kit/node/plugins/tunnel' -import {getBackendPort} from '@shopify/cli-kit/node/environment' -import {basename} from '@shopify/cli-kit/node/path' -import {renderWarning} from '@shopify/cli-kit/node/ui' -import {reportAnalyticsEvent} from '@shopify/cli-kit/node/analytics' -import {OutputProcess, formatPackageManagerCommand} from '@shopify/cli-kit/node/output' -import {hashString} from '@shopify/cli-kit/node/crypto' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' +import {checkPortAvailability, getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' +import {TunnelClient} from '@shopify/cli-kit/shared/node/plugins/tunnel' +import {getBackendPort} from '@shopify/cli-kit/shared/node/environment' +import {basename} from '@shopify/cli-kit/shared/node/path' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' +import {reportAnalyticsEvent} from '@shopify/cli-kit/shared/node/analytics' +import {OutputProcess, formatPackageManagerCommand} from '@shopify/cli-kit/shared/node/output' +import {hashString} from '@shopify/cli-kit/shared/node/crypto' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export interface DevOptions { app: AppLinkedInterface diff --git a/packages/app/src/cli/services/dev/app-events/app-event-watcher-handler.ts b/packages/app/src/cli/services/dev/app-events/app-event-watcher-handler.ts index e54a27ba937..dec99f9e809 100644 --- a/packages/app/src/cli/services/dev/app-events/app-event-watcher-handler.ts +++ b/packages/app/src/cli/services/dev/app-events/app-event-watcher-handler.ts @@ -4,9 +4,9 @@ import {appDiff} from './app-diffing.js' import {AppLinkedInterface} from '../../../models/app/app.js' import {ExtensionInstance} from '../../../models/extensions/extension-instance.js' import {reloadApp} from '../../../models/app/loader.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {endHRTimeInMs, startHRTime} from '@shopify/cli-kit/node/hrtime' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {endHRTimeInMs, startHRTime} from '@shopify/cli-kit/shared/node/hrtime' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' /** * Transforms an array of WatcherEvents from the file system into a processed AppEvent. diff --git a/packages/app/src/cli/services/dev/app-events/app-event-watcher.test.ts b/packages/app/src/cli/services/dev/app-events/app-event-watcher.test.ts index 7de43c69b3f..a2e0c20bde7 100644 --- a/packages/app/src/cli/services/dev/app-events/app-event-watcher.test.ts +++ b/packages/app/src/cli/services/dev/app-events/app-event-watcher.test.ts @@ -15,10 +15,10 @@ import {AppLinkedInterface} from '../../../models/app/app.js' import {AppAccessSpecIdentifier} from '../../../models/extensions/specifications/app_config_app_access.js' import {PosSpecIdentifier} from '../../../models/extensions/specifications/app_config_point_of_sale.js' import {afterEach, beforeEach, describe, expect, test, vi} from 'vitest' -import {AbortSignal, AbortController} from '@shopify/cli-kit/node/abort' -import {flushPromises} from '@shopify/cli-kit/node/promises' -import {inTemporaryDirectory} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {AbortSignal, AbortController} from '@shopify/cli-kit/shared/node/abort' +import {flushPromises} from '@shopify/cli-kit/shared/node/promises' +import {inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import {Writable} from 'stream' vi.mock('../../../models/app/loader.js') diff --git a/packages/app/src/cli/services/dev/app-events/app-event-watcher.ts b/packages/app/src/cli/services/dev/app-events/app-event-watcher.ts index 5a760de6332..09d22f8ee8e 100644 --- a/packages/app/src/cli/services/dev/app-events/app-event-watcher.ts +++ b/packages/app/src/cli/services/dev/app-events/app-event-watcher.ts @@ -5,14 +5,14 @@ import {handleWatcherEvents} from './app-event-watcher-handler.js' import {AppLinkedInterface} from '../../../models/app/app.js' import {ExtensionInstance} from '../../../models/extensions/extension-instance.js' import {ExtensionBuildOptions} from '../../build/extension.js' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {joinPath} from '@shopify/cli-kit/node/path' -import {fileExists, mkdir, rmdir} from '@shopify/cli-kit/node/fs' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' -import {groupBy} from '@shopify/cli-kit/common/collection' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {fileExists, mkdir, rmdir} from '@shopify/cli-kit/shared/node/fs' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' +import {groupBy} from '@shopify/cli-kit/shared/common/collection' import {formatMessagesSync, Message} from 'esbuild' -import {isUnitTest} from '@shopify/cli-kit/node/context/local' +import {isUnitTest} from '@shopify/cli-kit/shared/node/context/local' import EventEmitter from 'events' /** diff --git a/packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.test.ts b/packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.test.ts index 0a1a7256f02..215fb805e4e 100644 --- a/packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.test.ts +++ b/packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.test.ts @@ -3,8 +3,8 @@ import {AppEvent, EventType} from './app-event-watcher.js' import {testAppLinked, testUIExtension} from '../../../models/app/app.test-data.js' import {environmentVariableNames} from '../../../constants.js' import {describe, expect, test, vi} from 'vitest' -import * as fs from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import * as fs from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' vi.mock('@luckycatfactory/esbuild-graphql-loader', () => ({ default: { diff --git a/packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.ts b/packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.ts index edf39052082..c4daac1f700 100644 --- a/packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.ts +++ b/packages/app/src/cli/services/dev/app-events/app-watcher-esbuild.ts @@ -3,11 +3,11 @@ import {ExtensionInstance} from '../../../models/extensions/extension-instance.j import {getESBuildOptions} from '../../extensions/bundle.js' import {environmentVariableNames} from '../../../constants.js' import {BuildContext, context as esContext, StdinOptions} from 'esbuild' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {copyFile} from '@shopify/cli-kit/node/fs' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' -import {isTruthy} from '@shopify/cli-kit/node/context/utilities' -import {getEnvironmentVariables} from '@shopify/cli-kit/node/environment' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {copyFile} from '@shopify/cli-kit/shared/node/fs' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' +import {isTruthy} from '@shopify/cli-kit/shared/node/context/utilities' +import {getEnvironmentVariables} from '@shopify/cli-kit/shared/node/environment' export interface DevAppWatcherOptions { dotEnvVariables: {[key: string]: string} diff --git a/packages/app/src/cli/services/dev/app-events/file-watcher.test.ts b/packages/app/src/cli/services/dev/app-events/file-watcher.test.ts index 5704a97ed6a..f3e94fbcbb6 100644 --- a/packages/app/src/cli/services/dev/app-events/file-watcher.test.ts +++ b/packages/app/src/cli/services/dev/app-events/file-watcher.test.ts @@ -7,25 +7,25 @@ import { testFunctionExtension, testUIExtension, } from '../../../models/app/app.test-data.js' -import {flushPromises} from '@shopify/cli-kit/node/promises' +import {flushPromises} from '@shopify/cli-kit/shared/node/promises' import {describe, expect, test, vi} from 'vitest' import chokidar from 'chokidar' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {inTemporaryDirectory, mkdir, writeFile, fileExistsSync} from '@shopify/cli-kit/node/fs' -import {joinPath, normalizePath} from '@shopify/cli-kit/node/path' -import {sleep} from '@shopify/cli-kit/node/system' -import {extractImportPathsRecursively} from '@shopify/cli-kit/node/import-extractor' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {inTemporaryDirectory, mkdir, writeFile, fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, normalizePath} from '@shopify/cli-kit/shared/node/path' +import {sleep} from '@shopify/cli-kit/shared/node/system' +import {extractImportPathsRecursively} from '@shopify/cli-kit/shared/node/import-extractor' // Mock the import extractor - will be configured per test -vi.mock('@shopify/cli-kit/node/import-extractor', () => ({ +vi.mock('@shopify/cli-kit/shared/node/import-extractor', () => ({ extractImportPaths: vi.fn(() => []), extractImportPathsRecursively: vi.fn(() => []), extractJSImports: vi.fn(() => []), })) // Mock fs module for fileExistsSync -vi.mock('@shopify/cli-kit/node/fs', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/fs', async () => { + const actual = await vi.importActual('@shopify/cli-kit/shared/node/fs') return { ...actual, fileExistsSync: vi.fn(), @@ -33,8 +33,8 @@ vi.mock('@shopify/cli-kit/node/fs', async () => { }) // Mock resolvePath to handle path resolution in tests -vi.mock('@shopify/cli-kit/node/path', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/path') +vi.mock('@shopify/cli-kit/shared/node/path', async () => { + const actual = await vi.importActual('@shopify/cli-kit/shared/node/path') return { ...actual, resolvePath: vi.fn((path: string) => { diff --git a/packages/app/src/cli/services/dev/app-events/file-watcher.ts b/packages/app/src/cli/services/dev/app-events/file-watcher.ts index 56fca818a56..36a92b01b74 100644 --- a/packages/app/src/cli/services/dev/app-events/file-watcher.ts +++ b/packages/app/src/cli/services/dev/app-events/file-watcher.ts @@ -1,13 +1,13 @@ /* eslint-disable no-case-declarations */ import {AppLinkedInterface} from '../../../models/app/app.js' import {configurationFileNames} from '../../../constants.js' -import {dirname, joinPath, normalizePath, relativePath} from '@shopify/cli-kit/node/path' +import {dirname, joinPath, normalizePath, relativePath} from '@shopify/cli-kit/shared/node/path' import {FSWatcher} from 'chokidar' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {startHRTime, StartTime} from '@shopify/cli-kit/node/hrtime' -import {fileExistsSync, matchGlob, readFileSync} from '@shopify/cli-kit/node/fs' -import {debounce} from '@shopify/cli-kit/common/function' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {startHRTime, StartTime} from '@shopify/cli-kit/shared/node/hrtime' +import {fileExistsSync, matchGlob, readFileSync} from '@shopify/cli-kit/shared/node/fs' +import {debounce} from '@shopify/cli-kit/shared/common/function' import ignore from 'ignore' import {Writable} from 'stream' diff --git a/packages/app/src/cli/services/dev/create-extension.ts b/packages/app/src/cli/services/dev/create-extension.ts index fbedebd1b4f..f053d3868ed 100644 --- a/packages/app/src/cli/services/dev/create-extension.ts +++ b/packages/app/src/cli/services/dev/create-extension.ts @@ -1,6 +1,6 @@ import {ExtensionCreateSchema, ExtensionCreateVariables} from '../../api/graphql/extension_create.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export interface ExtensionRegistration { id: string diff --git a/packages/app/src/cli/services/dev/extension.ts b/packages/app/src/cli/services/dev/extension.ts index 301f1313c4d..ce4a0743263 100644 --- a/packages/app/src/cli/services/dev/extension.ts +++ b/packages/app/src/cli/services/dev/extension.ts @@ -9,9 +9,9 @@ import { import {AppEvent, AppEventWatcher, EventType} from './app-events/app-event-watcher.js' import {buildCartURLIfNeeded} from './extension/utilities.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {DotEnvFile} from '@shopify/cli-kit/node/dot-env' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {DotEnvFile} from '@shopify/cli-kit/shared/node/dot-env' import {Writable} from 'stream' export interface ExtensionDevOptions { diff --git a/packages/app/src/cli/services/dev/extension/localization.test.ts b/packages/app/src/cli/services/dev/extension/localization.test.ts index 583a6f4912b..2478e8d8f44 100644 --- a/packages/app/src/cli/services/dev/extension/localization.test.ts +++ b/packages/app/src/cli/services/dev/extension/localization.test.ts @@ -1,11 +1,11 @@ import {getLocalization, Localization} from './localization.js' import {ExtensionsPayloadStoreOptions} from './payload/store.js' import {testUIExtension} from '../../../models/app/app.test-data.js' -import * as output from '@shopify/cli-kit/node/output' +import * as output from '@shopify/cli-kit/shared/node/output' import {describe, expect, vi, test} from 'vitest' -import {mkdir, writeFile, inTemporaryDirectory} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {mkdir, writeFile, inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' async function testGetLocalization(tmpDir: string, currentLocalization?: Localization) { const mockOptions = {} as unknown as ExtensionsPayloadStoreOptions diff --git a/packages/app/src/cli/services/dev/extension/localization.ts b/packages/app/src/cli/services/dev/extension/localization.ts index ad0f1887e71..bd32d7c8dbc 100644 --- a/packages/app/src/cli/services/dev/extension/localization.ts +++ b/packages/app/src/cli/services/dev/extension/localization.ts @@ -1,10 +1,10 @@ import {ExtensionAssetBuildStatus} from './payload/models.js' import {GetUIExtensionPayloadOptions} from './payload.js' import {ExtensionInstance} from '../../../models/extensions/extension-instance.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import {readFile, glob} from '@shopify/cli-kit/node/fs' -import {ExtendableError} from '@shopify/cli-kit/node/error' -import {outputDebug, outputWarn} from '@shopify/cli-kit/node/output' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {readFile, glob} from '@shopify/cli-kit/shared/node/fs' +import {ExtendableError} from '@shopify/cli-kit/shared/node/error' +import {outputDebug, outputWarn} from '@shopify/cli-kit/shared/node/output' type Locale = string diff --git a/packages/app/src/cli/services/dev/extension/payload.test.ts b/packages/app/src/cli/services/dev/extension/payload.test.ts index ae905a037a2..0f69dbd3641 100644 --- a/packages/app/src/cli/services/dev/extension/payload.test.ts +++ b/packages/app/src/cli/services/dev/extension/payload.test.ts @@ -4,8 +4,8 @@ import {ExtensionsPayloadStoreOptions} from './payload/store.js' import {testUIExtension} from '../../../models/app/app.test-data.js' import * as appModel from '../../../models/app/app.js' import {describe, expect, test, vi, beforeEach} from 'vitest' -import {inTemporaryDirectory, touchFile, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, touchFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' describe('getUIExtensionPayload', () => { beforeEach(() => { diff --git a/packages/app/src/cli/services/dev/extension/payload.ts b/packages/app/src/cli/services/dev/extension/payload.ts index ed21fe7eef7..ab8180acf8d 100644 --- a/packages/app/src/cli/services/dev/extension/payload.ts +++ b/packages/app/src/cli/services/dev/extension/payload.ts @@ -8,9 +8,9 @@ import {ExtensionInstance} from '../../../models/extensions/extension-instance.j import {BuildManifest} from '../../../models/extensions/specifications/ui_extension.js' import {BuildAsset} from '../../../models/extensions/specification.js' import {NewExtensionPointSchemaType} from '../../../models/extensions/schemas.js' -import {fileLastUpdatedTimestamp} from '@shopify/cli-kit/node/fs' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' +import {fileLastUpdatedTimestamp} from '@shopify/cli-kit/shared/node/fs' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' export type GetUIExtensionPayloadOptions = Omit & { currentDevelopmentPayload?: Partial diff --git a/packages/app/src/cli/services/dev/extension/payload/store.ts b/packages/app/src/cli/services/dev/extension/payload/store.ts index ae4919485c1..a87dec878d6 100644 --- a/packages/app/src/cli/services/dev/extension/payload/store.ts +++ b/packages/app/src/cli/services/dev/extension/payload/store.ts @@ -3,8 +3,8 @@ import {ExtensionDevOptions} from '../../extension.js' import {getUIExtensionPayload, isNewExtensionPointsSchema} from '../payload.js' import {buildAppURLForMobile, buildAppURLForWeb} from '../../../../utilities/app/app-url.js' import {ExtensionInstance} from '../../../../models/extensions/extension-instance.js' -import {deepMergeObjects} from '@shopify/cli-kit/common/object' -import {outputDebug, outputContent} from '@shopify/cli-kit/node/output' +import {deepMergeObjects} from '@shopify/cli-kit/shared/common/object' +import {outputDebug, outputContent} from '@shopify/cli-kit/shared/node/output' import {EventEmitter} from 'events' export interface ExtensionsPayloadStoreOptions extends ExtensionDevOptions { diff --git a/packages/app/src/cli/services/dev/extension/server/middlewares.test.ts b/packages/app/src/cli/services/dev/extension/server/middlewares.test.ts index 2218e37cd65..2ccbe978bd5 100644 --- a/packages/app/src/cli/services/dev/extension/server/middlewares.test.ts +++ b/packages/app/src/cli/services/dev/extension/server/middlewares.test.ts @@ -15,9 +15,9 @@ import {UIExtensionPayload} from '../payload/models.js' import {testUIExtension} from '../../../../models/app/app.test-data.js' import {AppEventWatcher} from '../../app-events/app-event-watcher.js' import {describe, expect, vi, test} from 'vitest' -import {inTemporaryDirectory, mkdir, touchFile, writeFile} from '@shopify/cli-kit/node/fs' +import {inTemporaryDirectory, mkdir, touchFile, writeFile} from '@shopify/cli-kit/shared/node/fs' import * as h3 from 'h3' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' vi.mock('h3', async () => { const actual: any = await vi.importActual('h3') diff --git a/packages/app/src/cli/services/dev/extension/server/middlewares.ts b/packages/app/src/cli/services/dev/extension/server/middlewares.ts index 7bf8116bc11..f034ef78bf6 100644 --- a/packages/app/src/cli/services/dev/extension/server/middlewares.ts +++ b/packages/app/src/cli/services/dev/extension/server/middlewares.ts @@ -3,10 +3,10 @@ import {GetExtensionsMiddlewareOptions} from './models.js' import {getUIExtensionPayload} from '../payload.js' import {getHTML} from '../templates.js' import {getWebSocketUrl} from '../../extension.js' -import {fileExists, isDirectory, readFile, findPathUp} from '@shopify/cli-kit/node/fs' +import {fileExists, isDirectory, readFile, findPathUp} from '@shopify/cli-kit/shared/node/fs' import {IncomingMessage, ServerResponse, sendRedirect, send} from 'h3' -import {joinPath, extname, moduleDirectory} from '@shopify/cli-kit/node/path' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {joinPath, extname, moduleDirectory} from '@shopify/cli-kit/shared/node/path' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' export function corsMiddleware(_request: IncomingMessage, response: ServerResponse, next: (err?: Error) => unknown) { response.setHeader('Access-Control-Allow-Origin', '*') diff --git a/packages/app/src/cli/services/dev/extension/server/utilities.test.ts b/packages/app/src/cli/services/dev/extension/server/utilities.test.ts index 10b1ba23f10..eb424de1929 100644 --- a/packages/app/src/cli/services/dev/extension/server/utilities.test.ts +++ b/packages/app/src/cli/services/dev/extension/server/utilities.test.ts @@ -4,8 +4,8 @@ import {ExtensionInstance} from '../../../../models/extensions/extension-instanc import {ExtensionsPayloadStoreOptions} from '../payload/store.js' import {describe, expect, test, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/system') describe('getRedirectURL()', () => { test('returns a URL with a URL param', async () => { diff --git a/packages/app/src/cli/services/dev/extension/templates.ts b/packages/app/src/cli/services/dev/extension/templates.ts index c74f7e8587c..acdccb1c574 100644 --- a/packages/app/src/cli/services/dev/extension/templates.ts +++ b/packages/app/src/cli/services/dev/extension/templates.ts @@ -1,7 +1,7 @@ -import {renderLiquidTemplate} from '@shopify/cli-kit/node/liquid' -import {joinPath, moduleDirectory} from '@shopify/cli-kit/node/path' -import {readFile, glob, findPathUp} from '@shopify/cli-kit/node/fs' -import {BugError} from '@shopify/cli-kit/node/error' +import {renderLiquidTemplate} from '@shopify/cli-kit/shared/node/liquid' +import {joinPath, moduleDirectory} from '@shopify/cli-kit/shared/node/path' +import {readFile, glob, findPathUp} from '@shopify/cli-kit/shared/node/fs' +import {BugError} from '@shopify/cli-kit/shared/node/error' interface GetHTMLOptions { extensionSurface?: string diff --git a/packages/app/src/cli/services/dev/extension/websocket/handlers.test.ts b/packages/app/src/cli/services/dev/extension/websocket/handlers.test.ts index 373dc39c84f..cb8f4b5572d 100644 --- a/packages/app/src/cli/services/dev/extension/websocket/handlers.test.ts +++ b/packages/app/src/cli/services/dev/extension/websocket/handlers.test.ts @@ -9,14 +9,14 @@ import { import {SetupWebSocketConnectionOptions} from './models.js' import {ExtensionsEndpointPayload} from '../payload/models.js' import {vi, describe, test, expect, Mock} from 'vitest' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' import WebSocket, {RawData, WebSocketServer} from 'ws' import {IncomingMessage} from 'h3' -import colors from '@shopify/cli-kit/node/colors' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' +import colors from '@shopify/cli-kit/shared/node/colors' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' import {Duplex} from 'stream' -vi.mock('@shopify/cli-kit/node/ui/components', () => ({ +vi.mock('@shopify/cli-kit/shared/node/ui/components', () => ({ useConcurrentOutputContext: vi.fn(), })) diff --git a/packages/app/src/cli/services/dev/extension/websocket/handlers.ts b/packages/app/src/cli/services/dev/extension/websocket/handlers.ts index 6253bff394f..d044d9e8b22 100644 --- a/packages/app/src/cli/services/dev/extension/websocket/handlers.ts +++ b/packages/app/src/cli/services/dev/extension/websocket/handlers.ts @@ -7,8 +7,8 @@ import { SetupWebSocketConnectionOptions, } from './models.js' import {RawData, WebSocket, WebSocketServer} from 'ws' -import {outputDebug, outputContent, outputToken} from '@shopify/cli-kit/node/output' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' +import {outputDebug, outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' import {IncomingMessage} from 'http' import {Duplex} from 'stream' diff --git a/packages/app/src/cli/services/dev/fetch.test.ts b/packages/app/src/cli/services/dev/fetch.test.ts index 406a04dc4b3..90eae835fb6 100644 --- a/packages/app/src/cli/services/dev/fetch.test.ts +++ b/packages/app/src/cli/services/dev/fetch.test.ts @@ -9,10 +9,10 @@ import {DeveloperPlatformClient} from '../../utilities/developer-platform-client import {PartnersClient} from '../../utilities/developer-platform-client/partners-client.js' import {AppManagementClient} from '../../utilities/developer-platform-client/app-management-client.js' import {afterEach, describe, expect, test, vi} from 'vitest' -import {renderFatalError} from '@shopify/cli-kit/node/ui' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' -import {AbortError} from '@shopify/cli-kit/node/error' -import {blockPartnersAccess} from '@shopify/cli-kit/node/environment' +import {renderFatalError} from '@shopify/cli-kit/shared/node/ui' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {blockPartnersAccess} from '@shopify/cli-kit/shared/node/environment' const ORG1: Organization = { id: '1', @@ -34,10 +34,10 @@ const STORE1: OrganizationStore = { provisionable: true, } -vi.mock('@shopify/cli-kit/node/api/partners') +vi.mock('@shopify/cli-kit/partners/api') vi.mock('../../utilities/developer-platform-client/partners-client.js') vi.mock('../../utilities/developer-platform-client/app-management-client.js') -vi.mock('@shopify/cli-kit/node/environment') +vi.mock('@shopify/cli-kit/shared/node/environment') afterEach(() => { mockAndCaptureOutput().clear() diff --git a/packages/app/src/cli/services/dev/fetch.ts b/packages/app/src/cli/services/dev/fetch.ts index 7248acc98d0..ef186058c33 100644 --- a/packages/app/src/cli/services/dev/fetch.ts +++ b/packages/app/src/cli/services/dev/fetch.ts @@ -7,9 +7,9 @@ import { allDeveloperPlatformClients, selectDeveloperPlatformClient, } from '../../utilities/developer-platform-client.js' -import {AccountInfo, isServiceAccount, isUserAccount} from '@shopify/cli-kit/node/session' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {AccountInfo, isServiceAccount, isUserAccount} from '@shopify/cli-kit/identity/session' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' export class NoOrgError extends AbortError { constructor(partnersAccount: AccountInfo, organizationId?: string) { diff --git a/packages/app/src/cli/services/dev/graphiql/server.ts b/packages/app/src/cli/services/dev/graphiql/server.ts index 266d62c8347..261c2cdc735 100644 --- a/packages/app/src/cli/services/dev/graphiql/server.ts +++ b/packages/app/src/cli/services/dev/graphiql/server.ts @@ -3,13 +3,13 @@ import {unauthorizedTemplate} from './templates/unauthorized.js' import {filterCustomHeaders} from './utilities.js' import express from 'express' import bodyParser from 'body-parser' -import {performActionWithRetryAfterRecovery} from '@shopify/cli-kit/common/retry' -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' -import {AbortError} from '@shopify/cli-kit/node/error' -import {adminUrl, supportedApiVersions} from '@shopify/cli-kit/node/api/admin' -import {fetch} from '@shopify/cli-kit/node/http' -import {renderLiquidTemplate} from '@shopify/cli-kit/node/liquid' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {performActionWithRetryAfterRecovery} from '@shopify/cli-kit/shared/common/retry' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {adminUrl, supportedApiVersions} from '@shopify/cli-kit/admin/api' +import {fetch} from '@shopify/cli-kit/shared/node/http' +import {renderLiquidTemplate} from '@shopify/cli-kit/shared/node/liquid' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' import {Server} from 'http' import {Writable} from 'stream' import {createRequire} from 'module' diff --git a/packages/app/src/cli/services/dev/graphiql/templates/graphiql.tsx b/packages/app/src/cli/services/dev/graphiql/templates/graphiql.tsx index 1379e7d3a79..2d5ad10cad9 100644 --- a/packages/app/src/cli/services/dev/graphiql/templates/graphiql.tsx +++ b/packages/app/src/cli/services/dev/graphiql/templates/graphiql.tsx @@ -1,4 +1,4 @@ -import {platformAndArch} from '@shopify/cli-kit/node/os' +import {platformAndArch} from '@shopify/cli-kit/shared/node/os' import React from 'react' import {renderToStaticMarkup} from 'react-dom/server' import {AppProvider, Badge, Banner, BlockStack, Box, Grid, InlineStack, Link, Select, Text} from '@shopify/polaris' diff --git a/packages/app/src/cli/services/dev/migrate-app-module.ts b/packages/app/src/cli/services/dev/migrate-app-module.ts index 0c05f69f8b9..b1bf28112e5 100644 --- a/packages/app/src/cli/services/dev/migrate-app-module.ts +++ b/packages/app/src/cli/services/dev/migrate-app-module.ts @@ -4,8 +4,8 @@ import {getExtensionIds, LocalRemoteSource} from '../context/id-matching.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {MigrateAppModuleSchema, MigrateAppModuleVariables} from '../../api/graphql/extension_migrate_app_module.js' import {MAX_EXTENSION_HANDLE_LENGTH} from '../../models/extensions/schemas.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {slugify} from '@shopify/cli-kit/common/string' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {slugify} from '@shopify/cli-kit/shared/common/string' /** * All ***ModulesMap define the migration mapping between local and remote extension types. diff --git a/packages/app/src/cli/services/dev/migrate-flow-extension.ts b/packages/app/src/cli/services/dev/migrate-flow-extension.ts index 1b1f653ebb1..21ddb08f4d0 100644 --- a/packages/app/src/cli/services/dev/migrate-flow-extension.ts +++ b/packages/app/src/cli/services/dev/migrate-flow-extension.ts @@ -5,7 +5,7 @@ import { MigrateFlowExtensionVariables, } from '../../api/graphql/extension_migrate_flow_extension.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export async function migrateFlowExtensions(options: { extensionsToMigrate: LocalRemoteSource[] diff --git a/packages/app/src/cli/services/dev/migrate-to-ui-extension.ts b/packages/app/src/cli/services/dev/migrate-to-ui-extension.ts index 7c7d8c31b7a..0103c1d4b12 100644 --- a/packages/app/src/cli/services/dev/migrate-to-ui-extension.ts +++ b/packages/app/src/cli/services/dev/migrate-to-ui-extension.ts @@ -5,7 +5,7 @@ import { import {RemoteSource} from '../context/identifiers.js' import {LocalRemoteSource} from '../context/id-matching.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export async function migrateExtensionsToUIExtension(options: { extensionsToMigrate: LocalRemoteSource[] diff --git a/packages/app/src/cli/services/dev/port-warnings.test.ts b/packages/app/src/cli/services/dev/port-warnings.test.ts index 77e00babeef..d65238df2ba 100644 --- a/packages/app/src/cli/services/dev/port-warnings.test.ts +++ b/packages/app/src/cli/services/dev/port-warnings.test.ts @@ -1,5 +1,5 @@ import {PortDetail, renderPortWarnings} from './port-warnings.js' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' import {describe, expect, test} from 'vitest' describe('renderPortWarnings()', () => { diff --git a/packages/app/src/cli/services/dev/port-warnings.ts b/packages/app/src/cli/services/dev/port-warnings.ts index 49e997988e3..068c09a430f 100644 --- a/packages/app/src/cli/services/dev/port-warnings.ts +++ b/packages/app/src/cli/services/dev/port-warnings.ts @@ -1,5 +1,5 @@ -import {asHumanFriendlyArray} from '@shopify/cli-kit/common/array' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {asHumanFriendlyArray} from '@shopify/cli-kit/shared/common/array' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' export type PortDetail = ( | { diff --git a/packages/app/src/cli/services/dev/processes/app-logs-polling.test.ts b/packages/app/src/cli/services/dev/processes/app-logs-polling.test.ts index 0a570cb4cc9..5e6b89fa335 100644 --- a/packages/app/src/cli/services/dev/processes/app-logs-polling.test.ts +++ b/packages/app/src/cli/services/dev/processes/app-logs-polling.test.ts @@ -8,13 +8,13 @@ import {pollAppLogs} from '../../app-logs/dev/poll-app-logs.js' import {DeveloperPlatformClient} from '../../../utilities/developer-platform-client.js' import * as appLogsUtils from '../../app-logs/utils.js' import {AppEventWatcher} from '../app-events/app-event-watcher.js' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {mkdir} from '@shopify/cli-kit/node/fs' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {mkdir} from '@shopify/cli-kit/shared/node/fs' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' import {describe, expect, vi, Mock, beforeEach, test} from 'vitest' -vi.mock('@shopify/cli-kit/node/fs') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/fs') +vi.mock('@shopify/cli-kit/shared/node/output') vi.mock('../../app-logs/dev/poll-app-logs.js') const SHOP_IDS = [1, 2] diff --git a/packages/app/src/cli/services/dev/processes/app-logs-polling.ts b/packages/app/src/cli/services/dev/processes/app-logs-polling.ts index f822f96ed7f..bd920e9319b 100644 --- a/packages/app/src/cli/services/dev/processes/app-logs-polling.ts +++ b/packages/app/src/cli/services/dev/processes/app-logs-polling.ts @@ -6,8 +6,8 @@ import {subscribeToAppLogs} from '../../app-logs/utils.js' import {AppLinkedInterface} from '../../../models/app/app.js' import {AppEventWatcher, AppEvent} from '../app-events/app-event-watcher.js' -import {mkdir} from '@shopify/cli-kit/node/fs' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {mkdir} from '@shopify/cli-kit/shared/node/fs' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' function hasFunctionExtensions(app: AppLinkedInterface): boolean { return app.allExtensions.some((extension) => extension.isFunctionExtension) diff --git a/packages/app/src/cli/services/dev/processes/dev-session/dev-session-logger.test.ts b/packages/app/src/cli/services/dev/processes/dev-session/dev-session-logger.test.ts index bbe871c54ca..58d0203bdef 100644 --- a/packages/app/src/cli/services/dev/processes/dev-session/dev-session-logger.test.ts +++ b/packages/app/src/cli/services/dev/processes/dev-session/dev-session-logger.test.ts @@ -3,7 +3,7 @@ import {UserError} from './dev-session.js' import {AppEvent, EventType} from '../../app-events/app-event-watcher.js' import {ExtensionInstance} from '../../../../models/extensions/extension-instance.js' import {describe, expect, test, vi, beforeEach} from 'vitest' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' import {Writable} from 'stream' describe('DevSessionLogger', () => { diff --git a/packages/app/src/cli/services/dev/processes/dev-session/dev-session-logger.ts b/packages/app/src/cli/services/dev/processes/dev-session/dev-session-logger.ts index add75295c6d..6f719ded92e 100644 --- a/packages/app/src/cli/services/dev/processes/dev-session/dev-session-logger.ts +++ b/packages/app/src/cli/services/dev/processes/dev-session/dev-session-logger.ts @@ -1,8 +1,8 @@ import {UserError} from './dev-session.js' import {AppEvent, EventType} from '../../app-events/app-event-watcher.js' import {ExtensionInstance} from '../../../../models/extensions/extension-instance.js' -import {outputToken, outputContent, outputDebug} from '@shopify/cli-kit/node/output' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' +import {outputToken, outputContent, outputDebug} from '@shopify/cli-kit/shared/node/output' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' import {Writable} from 'stream' export class DevSessionLogger { diff --git a/packages/app/src/cli/services/dev/processes/dev-session/dev-session-process.test.ts b/packages/app/src/cli/services/dev/processes/dev-session/dev-session-process.test.ts index 895681ce275..3da367c79fb 100644 --- a/packages/app/src/cli/services/dev/processes/dev-session/dev-session-process.test.ts +++ b/packages/app/src/cli/services/dev/processes/dev-session/dev-session-process.test.ts @@ -14,22 +14,22 @@ import { testWebhookExtensions, } from '../../../../models/app/app.test-data.js' import {getUploadURL} from '../../../bundle.js' -import {formData} from '@shopify/cli-kit/node/http' +import {formData} from '@shopify/cli-kit/shared/node/http' import {describe, expect, test, vi, beforeEach, afterEach} from 'vitest' -import {AbortSignal, AbortController} from '@shopify/cli-kit/node/abort' -import {flushPromises} from '@shopify/cli-kit/node/promises' -import * as outputContext from '@shopify/cli-kit/node/ui/components' -import {readdir} from '@shopify/cli-kit/node/fs' -import {firstPartyDev} from '@shopify/cli-kit/node/context/local' - -vi.mock('@shopify/cli-kit/node/fs') -vi.mock('@shopify/cli-kit/node/archiver') -vi.mock('@shopify/cli-kit/node/http') +import {AbortSignal, AbortController} from '@shopify/cli-kit/shared/node/abort' +import {flushPromises} from '@shopify/cli-kit/shared/node/promises' +import * as outputContext from '@shopify/cli-kit/shared/node/ui/components' +import {readdir} from '@shopify/cli-kit/shared/node/fs' +import {firstPartyDev} from '@shopify/cli-kit/shared/node/context/local' + +vi.mock('@shopify/cli-kit/shared/node/fs') +vi.mock('@shopify/cli-kit/shared/node/archiver') +vi.mock('@shopify/cli-kit/shared/node/http') vi.mock('../../../../utilities/app/app-url.js') vi.mock('node-fetch') vi.mock('../../../bundle.js') -vi.mock('@shopify/cli-kit/node/context/local', async (importOriginal) => { - const original = await importOriginal() +vi.mock('@shopify/cli-kit/shared/node/context/local', async (importOriginal) => { + const original = await importOriginal() return { ...original, firstPartyDev: vi.fn().mockReturnValue(false), diff --git a/packages/app/src/cli/services/dev/processes/dev-session/dev-session-status-manager.ts b/packages/app/src/cli/services/dev/processes/dev-session/dev-session-status-manager.ts index 027caff0bcf..3b0386c725e 100644 --- a/packages/app/src/cli/services/dev/processes/dev-session/dev-session-status-manager.ts +++ b/packages/app/src/cli/services/dev/processes/dev-session/dev-session-status-manager.ts @@ -1,4 +1,4 @@ -import {deepCompare} from '@shopify/cli-kit/common/object' +import {deepCompare} from '@shopify/cli-kit/shared/common/object' import {EventEmitter} from 'events' export type DevSessionStatusMessageType = 'error' | 'success' | 'loading' diff --git a/packages/app/src/cli/services/dev/processes/dev-session/dev-session.ts b/packages/app/src/cli/services/dev/processes/dev-session/dev-session.ts index e4b3035eae4..afa177cb70c 100644 --- a/packages/app/src/cli/services/dev/processes/dev-session/dev-session.ts +++ b/packages/app/src/cli/services/dev/processes/dev-session/dev-session.ts @@ -6,14 +6,14 @@ import {compressBundle, getUploadURL, uploadToGCS, writeManifestToBundle} from ' import {DevSessionCreateOptions, DevSessionUpdateOptions} from '../../../../utilities/developer-platform-client.js' import {AppManifest} from '../../../../models/app/app.js' import {getWebSocketUrl} from '../../extension.js' -import {endHRTimeInMs, startHRTime} from '@shopify/cli-kit/node/hrtime' +import {endHRTimeInMs, startHRTime} from '@shopify/cli-kit/shared/node/hrtime' import {ClientError} from 'graphql-request' -import {JsonMapType} from '@shopify/cli-kit/node/toml' -import {AbortError} from '@shopify/cli-kit/node/error' -import {firstPartyDev, isUnitTest} from '@shopify/cli-kit/node/context/local' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' -import {readdir} from '@shopify/cli-kit/node/fs' -import {SerialBatchProcessor} from '@shopify/cli-kit/node/serial-batch-processor' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {firstPartyDev, isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' +import {readdir} from '@shopify/cli-kit/shared/node/fs' +import {SerialBatchProcessor} from '@shopify/cli-kit/shared/node/serial-batch-processor' import {Writable} from 'stream' export interface UserError { diff --git a/packages/app/src/cli/services/dev/processes/draftable-extension.ts b/packages/app/src/cli/services/dev/processes/draftable-extension.ts index a31ed3a11af..8c23206d39a 100644 --- a/packages/app/src/cli/services/dev/processes/draftable-extension.ts +++ b/packages/app/src/cli/services/dev/processes/draftable-extension.ts @@ -7,8 +7,8 @@ import {getAppIdentifiers} from '../../../models/app/identifiers.js' import {installJavy} from '../../function/build.js' import {DeveloperPlatformClient} from '../../../utilities/developer-platform-client.js' import {AppEvent, AppEventWatcher, EventType} from '../app-events/app-event-watcher.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' interface DraftableExtensionOptions { extensions: ExtensionInstance[] diff --git a/packages/app/src/cli/services/dev/processes/previewable-extension.ts b/packages/app/src/cli/services/dev/processes/previewable-extension.ts index 387d97ebeed..43487c6fae4 100644 --- a/packages/app/src/cli/services/dev/processes/previewable-extension.ts +++ b/packages/app/src/cli/services/dev/processes/previewable-extension.ts @@ -3,8 +3,8 @@ import {devUIExtensions} from '../extension.js' import {ExtensionInstance} from '../../../models/extensions/extension-instance.js' import {buildCartURLIfNeeded} from '../extension/utilities.js' import {AppEventWatcher} from '../app-events/app-event-watcher.js' -import {DotEnvFile} from '@shopify/cli-kit/node/dot-env' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {DotEnvFile} from '@shopify/cli-kit/shared/node/dot-env' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' const MANIFEST_VERSION = '3' diff --git a/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts b/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts index eb1585b6a92..a69e6a8d84d 100644 --- a/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts +++ b/packages/app/src/cli/services/dev/processes/setup-dev-processes.test.ts @@ -30,23 +30,23 @@ import {DeveloperPlatformClient} from '../../../utilities/developer-platform-cli import {AppEventWatcher} from '../app-events/app-event-watcher.js' import * as loader from '../../../models/app/loader.js' import {describe, test, expect, beforeEach, vi} from 'vitest' -import {ensureAuthenticatedAdmin, ensureAuthenticatedStorefront} from '@shopify/cli-kit/node/session' +import {ensureAuthenticatedAdmin, ensureAuthenticatedStorefront} from '@shopify/cli-kit/identity/session' import {Config} from '@oclif/core' -import {getEnvironmentVariables} from '@shopify/cli-kit/node/environment' +import {getEnvironmentVariables} from '@shopify/cli-kit/shared/node/environment' import {isStorefrontPasswordProtected} from '@shopify/theme' -import {fetchTheme} from '@shopify/cli-kit/node/themes/api' -import {firstPartyDev} from '@shopify/cli-kit/node/context/local' -import {adminFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {fetchTheme} from '@shopify/cli-kit/themes/api' +import {firstPartyDev} from '@shopify/cli-kit/shared/node/context/local' +import {adminFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' vi.mock('../../context/identifiers.js') -vi.mock('@shopify/cli-kit/node/session.js') +vi.mock('@shopify/cli-kit/identity/session.js') vi.mock('../fetch.js') -vi.mock('@shopify/cli-kit/node/environment') +vi.mock('@shopify/cli-kit/shared/node/environment') vi.mock('@shopify/theme') -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/context/fqdn', async (importOriginal) => { - const original = await importOriginal() +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/context/fqdn', async (importOriginal) => { + const original = await importOriginal() return { ...original, adminFqdn: vi.fn(), diff --git a/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts b/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts index 2ab5609397d..2b94c91e1b6 100644 --- a/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts +++ b/packages/app/src/cli/services/dev/processes/setup-dev-processes.ts @@ -20,12 +20,12 @@ import {ApplicationURLs} from '../urls.js' import {DeveloperPlatformClient} from '../../../utilities/developer-platform-client.js' import {AppEventWatcher} from '../app-events/app-event-watcher.js' import {reloadApp} from '../../../models/app/loader.js' -import {getAvailableTCPPort} from '@shopify/cli-kit/node/tcp' -import {isTruthy} from '@shopify/cli-kit/node/context/utilities' -import {firstPartyDev} from '@shopify/cli-kit/node/context/local' -import {getEnvironmentVariables} from '@shopify/cli-kit/node/environment' -import {outputInfo} from '@shopify/cli-kit/node/output' -import {adminFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' +import {isTruthy} from '@shopify/cli-kit/shared/node/context/utilities' +import {firstPartyDev} from '@shopify/cli-kit/shared/node/context/local' +import {getEnvironmentVariables} from '@shopify/cli-kit/shared/node/environment' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' +import {adminFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' interface ProxyServerProcess extends BaseProcess<{ diff --git a/packages/app/src/cli/services/dev/processes/theme-app-extension.test.ts b/packages/app/src/cli/services/dev/processes/theme-app-extension.test.ts index fad6a5dc1c2..203700f38f5 100644 --- a/packages/app/src/cli/services/dev/processes/theme-app-extension.test.ts +++ b/packages/app/src/cli/services/dev/processes/theme-app-extension.test.ts @@ -7,21 +7,21 @@ import { testThemeExtensions, } from '../../../models/app/app.test-data.js' import {ClientName} from '../../../utilities/developer-platform-client.js' -import {AdminSession, ensureAuthenticatedAdmin} from '@shopify/cli-kit/node/session' -import {fetchTheme} from '@shopify/cli-kit/node/themes/api' -import {AbortError} from '@shopify/cli-kit/node/error' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {AdminSession, ensureAuthenticatedAdmin} from '@shopify/cli-kit/identity/session' +import {fetchTheme} from '@shopify/cli-kit/themes/api' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {Theme} from '@shopify/cli-kit/themes/types' import {vi, describe, test, expect, beforeEach} from 'vitest' -import {renderInfo} from '@shopify/cli-kit/node/ui' -import {partnersFqdn, adminFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' +import {partnersFqdn, adminFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' vi.mock('../../../utilities/extensions/theme/host-theme-manager') -vi.mock('@shopify/cli-kit/node/output') -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/context/fqdn') -vi.mock('@shopify/cli-kit/node/ui', async (realImport) => { - const realModule = await realImport() +vi.mock('@shopify/cli-kit/shared/node/output') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/context/fqdn') +vi.mock('@shopify/cli-kit/shared/node/ui', async (realImport) => { + const realModule = await realImport() const mockModule = {renderInfo: vi.fn()} return {...realModule, ...mockModule} diff --git a/packages/app/src/cli/services/dev/processes/theme-app-extension.ts b/packages/app/src/cli/services/dev/processes/theme-app-extension.ts index 6a032815e03..c0bcab563e2 100644 --- a/packages/app/src/cli/services/dev/processes/theme-app-extension.ts +++ b/packages/app/src/cli/services/dev/processes/theme-app-extension.ts @@ -3,14 +3,14 @@ import {HostThemeManager} from '../../../utilities/extensions/theme/host-theme-m import {AppInterface} from '../../../models/app/app.js' import {OrganizationApp} from '../../../models/organization.js' import {ClientName} from '../../../utilities/developer-platform-client.js' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {AdminSession, ensureAuthenticatedAdmin} from '@shopify/cli-kit/node/session' -import {fetchTheme} from '@shopify/cli-kit/node/themes/api' -import {AbortError} from '@shopify/cli-kit/node/error' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {renderInfo, renderTasks, Task} from '@shopify/cli-kit/node/ui' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AdminSession, ensureAuthenticatedAdmin} from '@shopify/cli-kit/identity/session' +import {fetchTheme} from '@shopify/cli-kit/themes/api' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {Theme} from '@shopify/cli-kit/themes/types' +import {renderInfo, renderTasks, Task} from '@shopify/cli-kit/shared/node/ui' import {initializeDevelopmentExtensionServer, ensureValidPassword, isStorefrontPasswordProtected} from '@shopify/theme' -import {partnersFqdn, adminFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {partnersFqdn, adminFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' interface ThemeAppExtensionServerOptions { theme: Theme diff --git a/packages/app/src/cli/services/dev/processes/types.ts b/packages/app/src/cli/services/dev/processes/types.ts index c66055bc132..f4a6b4bc74b 100644 --- a/packages/app/src/cli/services/dev/processes/types.ts +++ b/packages/app/src/cli/services/dev/processes/types.ts @@ -1,4 +1,4 @@ -import {AbortSignal} from '@shopify/cli-kit/node/abort' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' import {Writable} from 'node:stream' diff --git a/packages/app/src/cli/services/dev/processes/web.ts b/packages/app/src/cli/services/dev/processes/web.ts index ceb16ebc69a..b728027fd5d 100644 --- a/packages/app/src/cli/services/dev/processes/web.ts +++ b/packages/app/src/cli/services/dev/processes/web.ts @@ -2,10 +2,10 @@ import {BaseProcess} from './types.js' import {frontAndBackendConfig} from './utils.js' import {Web, WebType} from '../../../models/app/app.js' import {isWebType} from '../../../models/app/loader.js' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {getAvailableTCPPort} from '@shopify/cli-kit/node/tcp' -import {exec} from '@shopify/cli-kit/node/system' -import {isVerbose} from '@shopify/cli-kit/node/context/local' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' +import {exec} from '@shopify/cli-kit/shared/node/system' +import {isVerbose} from '@shopify/cli-kit/shared/node/context/local' import {Writable} from 'stream' interface LaunchWebOptions { diff --git a/packages/app/src/cli/services/dev/select-app.ts b/packages/app/src/cli/services/dev/select-app.ts index 2a32754f131..c70a56bc858 100644 --- a/packages/app/src/cli/services/dev/select-app.ts +++ b/packages/app/src/cli/services/dev/select-app.ts @@ -4,8 +4,8 @@ import {Organization, MinimalOrganizationApp, OrganizationApp} from '../../model import {getCachedCommandInfo, setCachedCommandTomlPreference} from '../local-storage.js' import {CreateAppOptions, DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {AppConfigurationFileName} from '../../models/app/loader.js' -import {BugError} from '@shopify/cli-kit/node/error' -import {outputInfo, outputDebug} from '@shopify/cli-kit/node/output' +import {BugError} from '@shopify/cli-kit/shared/node/error' +import {outputInfo, outputDebug} from '@shopify/cli-kit/shared/node/output' const MAX_PROMPT_RETRIES = 2 diff --git a/packages/app/src/cli/services/dev/select-store.test.ts b/packages/app/src/cli/services/dev/select-store.test.ts index 2412fe27235..38329aac367 100644 --- a/packages/app/src/cli/services/dev/select-store.test.ts +++ b/packages/app/src/cli/services/dev/select-store.test.ts @@ -11,8 +11,8 @@ import {describe, expect, vi, test} from 'vitest' vi.mock('../../prompts/dev') vi.mock('./fetch') -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/system') const ORG1: Organization = { id: '1', diff --git a/packages/app/src/cli/services/dev/select-store.ts b/packages/app/src/cli/services/dev/select-store.ts index 6e8d19f4d66..ad60322fb48 100644 --- a/packages/app/src/cli/services/dev/select-store.ts +++ b/packages/app/src/cli/services/dev/select-store.ts @@ -9,11 +9,11 @@ import { ConvertDevToTransferDisabledStoreVariables, } from '../../api/graphql/convert_dev_to_transfer_disabled_store.js' import {ClientName, DeveloperPlatformClient, Paginateable} from '../../utilities/developer-platform-client.js' -import {sleep} from '@shopify/cli-kit/node/system' -import {renderInfo, renderTasks} from '@shopify/cli-kit/node/ui' -import {firstPartyDev} from '@shopify/cli-kit/node/context/local' -import {AbortError, BugError, CancelExecution} from '@shopify/cli-kit/node/error' -import {outputSuccess} from '@shopify/cli-kit/node/output' +import {sleep} from '@shopify/cli-kit/shared/node/system' +import {renderInfo, renderTasks} from '@shopify/cli-kit/shared/node/ui' +import {firstPartyDev} from '@shopify/cli-kit/shared/node/context/local' +import {AbortError, BugError, CancelExecution} from '@shopify/cli-kit/shared/node/error' +import {outputSuccess} from '@shopify/cli-kit/shared/node/output' /** * Select store from list or diff --git a/packages/app/src/cli/services/dev/tunnel-mode.test.ts b/packages/app/src/cli/services/dev/tunnel-mode.test.ts index 61be2b2dd36..1611b01a210 100644 --- a/packages/app/src/cli/services/dev/tunnel-mode.test.ts +++ b/packages/app/src/cli/services/dev/tunnel-mode.test.ts @@ -1,9 +1,9 @@ import {AutoTunnel, CustomTunnel, getTunnelMode, NoTunnel} from './tunnel-mode.js' import {ports} from '../../constants.js' -import {checkPortAvailability, getAvailableTCPPort} from '@shopify/cli-kit/node/tcp' +import {checkPortAvailability, getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' import {test, expect, describe, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/tcp') +vi.mock('@shopify/cli-kit/shared/node/tcp') vi.mock('../../utilities/mkcert.js') describe('getTunnelMode() if tunnelUrl is defined', () => { diff --git a/packages/app/src/cli/services/dev/tunnel-mode.ts b/packages/app/src/cli/services/dev/tunnel-mode.ts index f29563dfe2c..f42c150bffd 100644 --- a/packages/app/src/cli/services/dev/tunnel-mode.ts +++ b/packages/app/src/cli/services/dev/tunnel-mode.ts @@ -1,6 +1,6 @@ import {ports} from '../../constants.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {getAvailableTCPPort} from '@shopify/cli-kit/node/tcp' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' export type TunnelMode = NoTunnel | AutoTunnel | CustomTunnel diff --git a/packages/app/src/cli/services/dev/ui.test.tsx b/packages/app/src/cli/services/dev/ui.test.tsx index 5be41b16166..e34aa174acf 100644 --- a/packages/app/src/cli/services/dev/ui.test.tsx +++ b/packages/app/src/cli/services/dev/ui.test.tsx @@ -4,11 +4,11 @@ import {DevSessionUI} from './ui/components/DevSessionUI.js' import {DevSessionStatusManager} from './processes/dev-session/dev-session-status-manager.js' import {testDeveloperPlatformClient} from '../../models/app/app.test-data.js' import {afterEach, describe, expect, test, vi} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' -import {AbortController} from '@shopify/cli-kit/node/abort' -import {terminalSupportsPrompting} from '@shopify/cli-kit/node/system' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' +import {terminalSupportsPrompting} from '@shopify/cli-kit/shared/node/system' -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system') vi.mock('./ui/components/Dev.js') vi.mock('../context.js') vi.mock('./ui/components/DevSessionUI.js') diff --git a/packages/app/src/cli/services/dev/ui.tsx b/packages/app/src/cli/services/dev/ui.tsx index 8477287ff48..b20177d9128 100644 --- a/packages/app/src/cli/services/dev/ui.tsx +++ b/packages/app/src/cli/services/dev/ui.tsx @@ -2,10 +2,10 @@ import {Dev, DevProps} from './ui/components/Dev.js' import {DevSessionUI} from './ui/components/DevSessionUI.js' import {DevSessionStatusManager} from './processes/dev-session/dev-session-status-manager.js' import React from 'react' -import {render} from '@shopify/cli-kit/node/ui' -import {terminalSupportsPrompting} from '@shopify/cli-kit/node/system' -import {isTruthy} from '@shopify/cli-kit/node/context/utilities' -import {isUnitTest} from '@shopify/cli-kit/node/context/local' +import {render} from '@shopify/cli-kit/shared/node/ui' +import {terminalSupportsPrompting} from '@shopify/cli-kit/shared/node/system' +import {isTruthy} from '@shopify/cli-kit/shared/node/context/utilities' +import {isUnitTest} from '@shopify/cli-kit/shared/node/context/local' export async function renderDev({ processes, diff --git a/packages/app/src/cli/services/dev/ui/components/Dev.test.tsx b/packages/app/src/cli/services/dev/ui/components/Dev.test.tsx index b4435030ee0..0965aa1e8e0 100644 --- a/packages/app/src/cli/services/dev/ui/components/Dev.test.tsx +++ b/packages/app/src/cli/services/dev/ui/components/Dev.test.tsx @@ -8,16 +8,16 @@ import { Stdin, waitForContent, waitForInputsToBeReady, -} from '@shopify/cli-kit/node/testing/ui' -import {AbortController, AbortSignal} from '@shopify/cli-kit/node/abort' +} from '@shopify/cli-kit/shared/node/testing/ui' +import {AbortController, AbortSignal} from '@shopify/cli-kit/shared/node/abort' import React from 'react' import {describe, expect, test, vi} from 'vitest' -import {unstyled} from '@shopify/cli-kit/node/output' -import {openURL, sleep} from '@shopify/cli-kit/node/system' +import {unstyled} from '@shopify/cli-kit/shared/node/output' +import {openURL, sleep} from '@shopify/cli-kit/shared/node/system' import {Writable} from 'stream' -vi.mock('@shopify/cli-kit/node/system', async () => { - const actual: any = await vi.importActual('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system', async () => { + const actual: any = await vi.importActual('@shopify/cli-kit/shared/node/system') return { ...actual, openURL: vi.fn(), diff --git a/packages/app/src/cli/services/dev/ui/components/Dev.tsx b/packages/app/src/cli/services/dev/ui/components/Dev.tsx index eb93e7f529a..c02a0ad0efc 100644 --- a/packages/app/src/cli/services/dev/ui/components/Dev.tsx +++ b/packages/app/src/cli/services/dev/ui/components/Dev.tsx @@ -1,17 +1,17 @@ import metadata from '../../../../metadata.js' import {DeveloperPlatformClient} from '../../../../utilities/developer-platform-client.js' import {ExtensionInstance} from '../../../../models/extensions/extension-instance.js' -import {OutputProcess} from '@shopify/cli-kit/node/output' -import {ConcurrentOutput, Link} from '@shopify/cli-kit/node/ui/components' -import {useAbortSignal} from '@shopify/cli-kit/node/ui/hooks' +import {OutputProcess} from '@shopify/cli-kit/shared/node/output' +import {ConcurrentOutput, Link} from '@shopify/cli-kit/shared/node/ui/components' +import {useAbortSignal} from '@shopify/cli-kit/shared/node/ui/hooks' import React, {FunctionComponent, useEffect, useMemo, useRef, useState} from 'react' -import {AbortController, AbortSignal} from '@shopify/cli-kit/node/abort' -import {Box, Text, useInput, useStdin} from '@shopify/cli-kit/node/ink' -import {handleCtrlC} from '@shopify/cli-kit/node/ui' -import {openURL} from '@shopify/cli-kit/node/system' -import figures from '@shopify/cli-kit/node/figures' -import {isUnitTest} from '@shopify/cli-kit/node/context/local' -import {treeKill} from '@shopify/cli-kit/node/tree-kill' +import {AbortController, AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {Box, Text, useInput, useStdin} from '@shopify/cli-kit/shared/node/ink' +import {handleCtrlC} from '@shopify/cli-kit/shared/node/ui' +import {openURL} from '@shopify/cli-kit/shared/node/system' +import figures from '@shopify/cli-kit/shared/node/figures' +import {isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {treeKill} from '@shopify/cli-kit/shared/node/tree-kill' import {Writable} from 'stream' export interface DeveloperPreviewController { diff --git a/packages/app/src/cli/services/dev/ui/components/DevSessionUI.test.tsx b/packages/app/src/cli/services/dev/ui/components/DevSessionUI.test.tsx index 6a89dc34e93..481893e3d20 100644 --- a/packages/app/src/cli/services/dev/ui/components/DevSessionUI.test.tsx +++ b/packages/app/src/cli/services/dev/ui/components/DevSessionUI.test.tsx @@ -6,17 +6,17 @@ import { sendInputAndWait, waitForContent, waitForInputsToBeReady, -} from '@shopify/cli-kit/node/testing/ui' -import {AbortController} from '@shopify/cli-kit/node/abort' +} from '@shopify/cli-kit/shared/node/testing/ui' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' import React from 'react' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {unstyled} from '@shopify/cli-kit/node/output' -import {openURL} from '@shopify/cli-kit/node/system' +import {unstyled} from '@shopify/cli-kit/shared/node/output' +import {openURL} from '@shopify/cli-kit/shared/node/system' import {Writable} from 'stream' -vi.mock('@shopify/cli-kit/node/system') -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/tree-kill') +vi.mock('@shopify/cli-kit/shared/node/system') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/tree-kill') const mocks = vi.hoisted(() => { return { @@ -26,8 +26,8 @@ const mocks = vi.hoisted(() => { } }) -vi.mock('@shopify/cli-kit/node/ink', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/ink') +vi.mock('@shopify/cli-kit/shared/node/ink', async () => { + const actual = await vi.importActual('@shopify/cli-kit/shared/node/ink') return { ...actual, useStdin: mocks.useStdin, diff --git a/packages/app/src/cli/services/dev/ui/components/DevSessionUI.tsx b/packages/app/src/cli/services/dev/ui/components/DevSessionUI.tsx index 35f3cf44187..4fd38652c78 100644 --- a/packages/app/src/cli/services/dev/ui/components/DevSessionUI.tsx +++ b/packages/app/src/cli/services/dev/ui/components/DevSessionUI.tsx @@ -7,18 +7,18 @@ import { DevSessionStatusMessageType, } from '../../processes/dev-session/dev-session-status-manager.js' import {MAX_EXTENSION_HANDLE_LENGTH} from '../../../../models/extensions/schemas.js' -import {OutputProcess} from '@shopify/cli-kit/node/output' -import {Alert, ConcurrentOutput, Link, TabularData} from '@shopify/cli-kit/node/ui/components' -import {useAbortSignal} from '@shopify/cli-kit/node/ui/hooks' +import {OutputProcess} from '@shopify/cli-kit/shared/node/output' +import {Alert, ConcurrentOutput, Link, TabularData} from '@shopify/cli-kit/shared/node/ui/components' +import {useAbortSignal} from '@shopify/cli-kit/shared/node/ui/hooks' import React, {FunctionComponent, useEffect, useMemo, useState} from 'react' -import {AbortController, AbortSignal} from '@shopify/cli-kit/node/abort' -import {Box, Text, useInput, useStdin} from '@shopify/cli-kit/node/ink' -import {handleCtrlC} from '@shopify/cli-kit/node/ui' -import {openURL} from '@shopify/cli-kit/node/system' -import figures from '@shopify/cli-kit/node/figures' -import {isUnitTest} from '@shopify/cli-kit/node/context/local' -import {treeKill} from '@shopify/cli-kit/node/tree-kill' -import {postRunHookHasCompleted} from '@shopify/cli-kit/node/hooks/postrun' +import {AbortController, AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {Box, Text, useInput, useStdin} from '@shopify/cli-kit/shared/node/ink' +import {handleCtrlC} from '@shopify/cli-kit/shared/node/ui' +import {openURL} from '@shopify/cli-kit/shared/node/system' +import figures from '@shopify/cli-kit/shared/node/figures' +import {isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {treeKill} from '@shopify/cli-kit/shared/node/tree-kill' +import {postRunHookHasCompleted} from '@shopify/cli-kit/shared/node/hooks/postrun' import {Writable} from 'stream' interface DevSesionUIProps { diff --git a/packages/app/src/cli/services/dev/ui/components/Spinner.tsx b/packages/app/src/cli/services/dev/ui/components/Spinner.tsx index 593de8c7417..04a0425c659 100644 --- a/packages/app/src/cli/services/dev/ui/components/Spinner.tsx +++ b/packages/app/src/cli/services/dev/ui/components/Spinner.tsx @@ -1,5 +1,5 @@ import React, {useEffect, useState} from 'react' -import {Text} from '@shopify/cli-kit/node/ink' +import {Text} from '@shopify/cli-kit/shared/node/ink' const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'] diff --git a/packages/app/src/cli/services/dev/ui/components/TabPanel.test.tsx b/packages/app/src/cli/services/dev/ui/components/TabPanel.test.tsx index bf14e988045..50760ec355b 100644 --- a/packages/app/src/cli/services/dev/ui/components/TabPanel.test.tsx +++ b/packages/app/src/cli/services/dev/ui/components/TabPanel.test.tsx @@ -1,9 +1,9 @@ import {TabPanel, Tab} from './TabPanel.js' -import {render, sendInputAndWait, waitForInputsToBeReady} from '@shopify/cli-kit/node/testing/ui' +import {render, sendInputAndWait, waitForInputsToBeReady} from '@shopify/cli-kit/shared/node/testing/ui' import React from 'react' import {describe, expect, test, vi} from 'vitest' -import {unstyled} from '@shopify/cli-kit/node/output' -import {Text} from '@shopify/cli-kit/node/ink' +import {unstyled} from '@shopify/cli-kit/shared/node/output' +import {Text} from '@shopify/cli-kit/shared/node/ink' const mocks = vi.hoisted(() => { return { @@ -23,8 +23,8 @@ const mocks = vi.hoisted(() => { } }) -vi.mock('@shopify/cli-kit/node/ink', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/ink') +vi.mock('@shopify/cli-kit/shared/node/ink', async () => { + const actual = await vi.importActual('@shopify/cli-kit/shared/node/ink') return { ...actual, useStdin: mocks.useStdin, diff --git a/packages/app/src/cli/services/dev/ui/components/TabPanel.tsx b/packages/app/src/cli/services/dev/ui/components/TabPanel.tsx index 0c726d9f8ab..bc79d7a6ec9 100644 --- a/packages/app/src/cli/services/dev/ui/components/TabPanel.tsx +++ b/packages/app/src/cli/services/dev/ui/components/TabPanel.tsx @@ -1,5 +1,5 @@ import React, {useState, useRef, useLayoutEffect} from 'react' -import {Box, Text, useInput, useStdin, useStdout, measureElement} from '@shopify/cli-kit/node/ink' +import {Box, Text, useInput, useStdin, useStdout, measureElement} from '@shopify/cli-kit/shared/node/ink' export interface Tab { label: string diff --git a/packages/app/src/cli/services/dev/update-extension.test.ts b/packages/app/src/cli/services/dev/update-extension.test.ts index c9cf1d11ee2..c861ecb2e28 100644 --- a/packages/app/src/cli/services/dev/update-extension.test.ts +++ b/packages/app/src/cli/services/dev/update-extension.test.ts @@ -10,15 +10,15 @@ import { import {parseConfigurationFile, parseConfigurationObjectAgainstSpecification} from '../../models/app/loader.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {ExtensionUpdateDraftMutationVariables} from '../../api/graphql/partners/generated/update-draft.js' -import {inTemporaryDirectory, mkdir, writeFile} from '@shopify/cli-kit/node/fs' -import {outputInfo} from '@shopify/cli-kit/node/output' +import {inTemporaryDirectory, mkdir, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' import {describe, expect, vi, test} from 'vitest' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' -import {platformAndArch} from '@shopify/cli-kit/node/os' -import {randomUUID} from '@shopify/cli-kit/node/crypto' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' +import {platformAndArch} from '@shopify/cli-kit/shared/node/os' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' -vi.mock('@shopify/cli-kit/node/crypto') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/crypto') +vi.mock('@shopify/cli-kit/shared/node/output') vi.mock('../../models/app/loader.js', async () => { const actual: any = await vi.importActual('../../models/app/loader.js') return { diff --git a/packages/app/src/cli/services/dev/update-extension.ts b/packages/app/src/cli/services/dev/update-extension.ts index db193d0e33b..30c5d379afc 100644 --- a/packages/app/src/cli/services/dev/update-extension.ts +++ b/packages/app/src/cli/services/dev/update-extension.ts @@ -12,11 +12,11 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {ExtensionsArraySchema, UnifiedSchema} from '../../models/extensions/schemas.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {themeExtensionConfig} from '../deploy/theme-extension-config.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {readFile} from '@shopify/cli-kit/node/fs' -import {OutputMessage, outputInfo} from '@shopify/cli-kit/node/output' -import {relativizePath} from '@shopify/cli-kit/node/path' -import {errorsToString as zodErrorsToString, zod} from '@shopify/cli-kit/node/schema' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {readFile} from '@shopify/cli-kit/shared/node/fs' +import {OutputMessage, outputInfo} from '@shopify/cli-kit/shared/node/output' +import {relativizePath} from '@shopify/cli-kit/shared/node/path' +import {errorsToString as zodErrorsToString, zod} from '@shopify/cli-kit/shared/node/schema' import {Writable} from 'stream' interface UpdateExtensionDraftOptions { diff --git a/packages/app/src/cli/services/dev/urls.test.ts b/packages/app/src/cli/services/dev/urls.test.ts index af2869706bc..b2cab3e70eb 100644 --- a/packages/app/src/cli/services/dev/urls.test.ts +++ b/packages/app/src/cli/services/dev/urls.test.ts @@ -18,11 +18,11 @@ import {setCachedAppInfo} from '../local-storage.js' import {setManyAppConfigValues} from '../app/patch-app-configuration-file.js' import {AppLinkedInterface} from '../../models/app/app.js' import {beforeEach, describe, expect, vi, test} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {getAvailableTCPPort} from '@shopify/cli-kit/node/tcp' -import {codespacePortForwardingDomain, codespaceURL, gitpodURL, isUnitTest} from '@shopify/cli-kit/node/context/local' -import {renderConfirmationPrompt, renderSelectPrompt} from '@shopify/cli-kit/node/ui' -import {terminalSupportsPrompting} from '@shopify/cli-kit/node/system' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' +import {codespacePortForwardingDomain, codespaceURL, gitpodURL, isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {renderConfirmationPrompt, renderSelectPrompt} from '@shopify/cli-kit/shared/node/ui' +import {terminalSupportsPrompting} from '@shopify/cli-kit/shared/node/system' vi.mock('../local-storage.js') vi.mock('../app/patch-app-configuration-file.js', () => { @@ -30,11 +30,11 @@ vi.mock('../app/patch-app-configuration-file.js', () => { setManyAppConfigValues: vi.fn(), } }) -vi.mock('@shopify/cli-kit/node/tcp') -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/plugins') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/tcp') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/plugins') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/shared/node/system') beforeEach(() => { vi.mocked(getAvailableTCPPort).mockResolvedValue(3042) diff --git a/packages/app/src/cli/services/dev/urls.ts b/packages/app/src/cli/services/dev/urls.ts index 977ed669e0f..d1bc2fc2e2c 100644 --- a/packages/app/src/cli/services/dev/urls.ts +++ b/packages/app/src/cli/services/dev/urls.ts @@ -6,14 +6,14 @@ import {AppConfigurationUsedByCli} from '../../models/extensions/specifications/ import {prependApplicationUrl} from '../../models/extensions/specifications/validation/url_prepender.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {setManyAppConfigValues} from '../app/patch-app-configuration-file.js' -import {AbortError, BugError} from '@shopify/cli-kit/node/error' +import {AbortError, BugError} from '@shopify/cli-kit/shared/node/error' import {Config} from '@oclif/core' -import {isValidURL} from '@shopify/cli-kit/common/url' -import {codespaceURL, codespacePortForwardingDomain, gitpodURL} from '@shopify/cli-kit/node/context/local' -import {fanoutHooks} from '@shopify/cli-kit/node/plugins' -import {terminalSupportsPrompting} from '@shopify/cli-kit/node/system' -import {TunnelClient} from '@shopify/cli-kit/node/plugins/tunnel' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {isValidURL} from '@shopify/cli-kit/shared/common/url' +import {codespaceURL, codespacePortForwardingDomain, gitpodURL} from '@shopify/cli-kit/shared/node/context/local' +import {fanoutHooks} from '@shopify/cli-kit/shared/node/plugins' +import {terminalSupportsPrompting} from '@shopify/cli-kit/shared/node/system' +import {TunnelClient} from '@shopify/cli-kit/shared/node/plugins/tunnel' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' interface AppProxy { proxyUrl: string diff --git a/packages/app/src/cli/services/execute-operation.test.ts b/packages/app/src/cli/services/execute-operation.test.ts index eb503d1f82d..a547536248c 100644 --- a/packages/app/src/cli/services/execute-operation.test.ts +++ b/packages/app/src/cli/services/execute-operation.test.ts @@ -1,18 +1,18 @@ import {executeOperation} from './execute-operation.js' import {createAdminSessionAsApp, resolveApiVersion, validateMutationStore} from './graphql/common.js' import {OrganizationApp, OrganizationSource, OrganizationStore} from '../models/organization.js' -import {renderSuccess, renderError, renderSingleTask} from '@shopify/cli-kit/node/ui' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' +import {renderSuccess, renderError, renderSingleTask} from '@shopify/cli-kit/shared/node/ui' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' import {ClientError} from 'graphql-request' -import {inTemporaryDirectory, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {inTemporaryDirectory, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' import {describe, test, expect, vi, beforeEach, afterEach} from 'vitest' vi.mock('./graphql/common.js') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/api/admin') -vi.mock('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/admin/api') +vi.mock('@shopify/cli-kit/shared/node/fs') describe('executeOperation', () => { const mockOrganization = { diff --git a/packages/app/src/cli/services/execute-operation.ts b/packages/app/src/cli/services/execute-operation.ts index 00807b16071..e8fc63d16e7 100644 --- a/packages/app/src/cli/services/execute-operation.ts +++ b/packages/app/src/cli/services/execute-operation.ts @@ -5,14 +5,14 @@ import { validateMutationStore, } from './graphql/common.js' import {OrganizationApp, Organization, OrganizationStore} from '../models/organization.js' -import {renderSuccess, renderError, renderSingleTask} from '@shopify/cli-kit/node/ui' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {outputContent, outputToken, outputResult} from '@shopify/cli-kit/node/output' -import {AbortError} from '@shopify/cli-kit/node/error' -import {adminRequestDoc} from '@shopify/cli-kit/node/api/admin' +import {renderSuccess, renderError, renderSingleTask} from '@shopify/cli-kit/shared/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {outputContent, outputToken, outputResult} from '@shopify/cli-kit/shared/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {adminRequestDoc} from '@shopify/cli-kit/admin/api' import {ClientError} from 'graphql-request' import {parse} from 'graphql' -import {writeFile, readFile, fileExists} from '@shopify/cli-kit/node/fs' +import {writeFile, readFile, fileExists} from '@shopify/cli-kit/shared/node/fs' interface ExecuteOperationInput { organization: Organization diff --git a/packages/app/src/cli/services/extensions/bundle.test.ts b/packages/app/src/cli/services/extensions/bundle.test.ts index 10c62e4be56..dca42401674 100644 --- a/packages/app/src/cli/services/extensions/bundle.test.ts +++ b/packages/app/src/cli/services/extensions/bundle.test.ts @@ -4,8 +4,8 @@ import {loadLocalExtensionsSpecifications} from '../../models/extensions/load-sp import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {describe, expect, test, vi} from 'vitest' import {context as esContext} from 'esbuild' -import {glob, inTemporaryDirectory, mkdir, touchFileSync} from '@shopify/cli-kit/node/fs' -import {basename, joinPath} from '@shopify/cli-kit/node/path' +import {glob, inTemporaryDirectory, mkdir, touchFileSync} from '@shopify/cli-kit/shared/node/fs' +import {basename, joinPath} from '@shopify/cli-kit/shared/node/path' vi.mock('esbuild', async () => { const esbuild: any = await vi.importActual('esbuild') diff --git a/packages/app/src/cli/services/extensions/bundle.ts b/packages/app/src/cli/services/extensions/bundle.ts index 173d4a63550..8335a9a132e 100644 --- a/packages/app/src/cli/services/extensions/bundle.ts +++ b/packages/app/src/cli/services/extensions/bundle.ts @@ -3,12 +3,12 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {themeExtensionFiles} from '../../utilities/extensions/theme.js' import {EsbuildEnvVarRegex, environmentVariableNames} from '../../constants.js' import {context as esContext, formatMessagesSync} from 'esbuild' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {copyFile, glob} from '@shopify/cli-kit/node/fs' -import {joinPath, relativePath} from '@shopify/cli-kit/node/path' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {isTruthy} from '@shopify/cli-kit/node/context/utilities' -import {pickBy} from '@shopify/cli-kit/common/object' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {copyFile, glob} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, relativePath} from '@shopify/cli-kit/shared/node/path' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {isTruthy} from '@shopify/cli-kit/shared/node/context/utilities' +import {pickBy} from '@shopify/cli-kit/shared/common/object' import graphqlLoaderPlugin from '@luckycatfactory/esbuild-graphql-loader' import {Writable} from 'stream' import type {StdinOptions, build as esBuild, Plugin} from 'esbuild' diff --git a/packages/app/src/cli/services/extensions/common.test.ts b/packages/app/src/cli/services/extensions/common.test.ts index 54361e116cf..229aabac702 100644 --- a/packages/app/src/cli/services/extensions/common.test.ts +++ b/packages/app/src/cli/services/extensions/common.test.ts @@ -2,8 +2,8 @@ import {ensureDownloadedExtensionFlavorExists, ensureExtensionDirectoryExists} f import {AppInterface} from '../../models/app/app.js' import {ExtensionFlavor} from '../../models/app/template.js' import {describe, expect, test} from 'vitest' -import {inTemporaryDirectory, mkdir} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, mkdir} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' describe('ensureDownloadedExtensionFlavorExists()', () => { test('it returns the full path if it exists', async () => { diff --git a/packages/app/src/cli/services/extensions/common.ts b/packages/app/src/cli/services/extensions/common.ts index 6075ebbb63d..2208b9acb87 100644 --- a/packages/app/src/cli/services/extensions/common.ts +++ b/packages/app/src/cli/services/extensions/common.ts @@ -2,10 +2,10 @@ import {AppInterface} from '../../models/app/app.js' import {blocks, configurationFileNames} from '../../constants.js' import {ExtensionFlavor} from '../../models/app/template.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import {fileExists, mkdir, touchFile} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' -import {hyphenate} from '@shopify/cli-kit/common/string' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {fileExists, mkdir, touchFile} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {hyphenate} from '@shopify/cli-kit/shared/common/string' export async function ensureDownloadedExtensionFlavorExists( extensionFlavor: ExtensionFlavor | undefined, diff --git a/packages/app/src/cli/services/flow/extension-to-toml.ts b/packages/app/src/cli/services/flow/extension-to-toml.ts index 8c612637e3e..583c6684c77 100644 --- a/packages/app/src/cli/services/flow/extension-to-toml.ts +++ b/packages/app/src/cli/services/flow/extension-to-toml.ts @@ -2,8 +2,8 @@ import {configFromSerializedFields} from './serialize-partners-fields.js' import {FlowPartnersExtensionTypes} from './types.js' import {ExtensionRegistration} from '../../api/graphql/all_app_extension_registrations.js' import {MAX_EXTENSION_HANDLE_LENGTH} from '../../models/extensions/schemas.js' -import {encodeToml} from '@shopify/cli-kit/node/toml' -import {slugify} from '@shopify/cli-kit/common/string' +import {encodeToml} from '@shopify/cli-kit/shared/node/toml' +import {slugify} from '@shopify/cli-kit/shared/common/string' // Used for importing flow_action_definition and flow_trigger_definition migrating them to flow_action and flow_trigger interface FlowConfig { diff --git a/packages/app/src/cli/services/flow/serialize-fields.test.ts b/packages/app/src/cli/services/flow/serialize-fields.test.ts index 1bde811739c..29fc08659c0 100644 --- a/packages/app/src/cli/services/flow/serialize-fields.test.ts +++ b/packages/app/src/cli/services/flow/serialize-fields.test.ts @@ -1,7 +1,7 @@ import {ConfigField} from './types.js' import {serializeConfigField, serializeCommerceObjectField} from './serialize-fields.js' import {describe, expect, test} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' describe('serializeConfigField', () => { test('should serialize a field for a flow action', () => { diff --git a/packages/app/src/cli/services/flow/serialize-fields.ts b/packages/app/src/cli/services/flow/serialize-fields.ts index 1d88c43cce2..eef40c3495d 100644 --- a/packages/app/src/cli/services/flow/serialize-fields.ts +++ b/packages/app/src/cli/services/flow/serialize-fields.ts @@ -7,8 +7,8 @@ import { triggerUiTypesMap, } from './constants.js' import {isSchemaTypeReference} from './validation.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {pascalize} from '@shopify/cli-kit/common/string' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {pascalize} from '@shopify/cli-kit/shared/common/string' const actionTypesToUiTypes = new Map(actionUiTypesMap) const triggerTypesToUiTypes = new Map(triggerUiTypesMap) diff --git a/packages/app/src/cli/services/flow/serialize-partners-fields.ts b/packages/app/src/cli/services/flow/serialize-partners-fields.ts index 7a8a9c45469..28b7d431075 100644 --- a/packages/app/src/cli/services/flow/serialize-partners-fields.ts +++ b/packages/app/src/cli/services/flow/serialize-partners-fields.ts @@ -1,6 +1,6 @@ import {ConfigField, SerializedField, FlowPartnersExtensionTypes} from './types.js' import {PARTNERS_COMMERCE_OBJECTS, uiTypesMap} from './constants.js' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' const uiTypesToTypes = new Map(uiTypesMap.map((typeMapping) => [typeMapping[1], typeMapping[0]])) diff --git a/packages/app/src/cli/services/flow/utils.test.ts b/packages/app/src/cli/services/flow/utils.test.ts index d0582058c5c..fc2330c9f09 100644 --- a/packages/app/src/cli/services/flow/utils.test.ts +++ b/packages/app/src/cli/services/flow/utils.test.ts @@ -1,7 +1,7 @@ import {loadSchemaFromPath} from './utils.js' import {describe, expect, test} from 'vitest' -import {readFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {readFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' describe('loadSchemaFromPath', () => { test('loading schema from valid file path should return file contents', async () => { diff --git a/packages/app/src/cli/services/flow/utils.ts b/packages/app/src/cli/services/flow/utils.ts index cdc71c0575f..5c331d2b41d 100644 --- a/packages/app/src/cli/services/flow/utils.ts +++ b/packages/app/src/cli/services/flow/utils.ts @@ -1,5 +1,5 @@ -import {joinPath} from '@shopify/cli-kit/node/path' -import {glob, readFile} from '@shopify/cli-kit/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {glob, readFile} from '@shopify/cli-kit/shared/node/fs' /** * Loads the schema from the partner defined file. diff --git a/packages/app/src/cli/services/flow/validation.test.ts b/packages/app/src/cli/services/flow/validation.test.ts index 17bef91cf47..4269e2b1777 100644 --- a/packages/app/src/cli/services/flow/validation.test.ts +++ b/packages/app/src/cli/services/flow/validation.test.ts @@ -1,7 +1,7 @@ import {validateFieldShape, validateCustomConfigurationPageConfig, validateReturnTypeConfig} from './validation.js' import {ConfigField} from './types.js' import {describe, expect, test} from 'vitest' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' describe('validateFieldShape', () => { test('should return true when non-commerce object field has valid shape and is flow action', () => { diff --git a/packages/app/src/cli/services/flow/validation.ts b/packages/app/src/cli/services/flow/validation.ts index e69fa1be5c7..63412716ddd 100644 --- a/packages/app/src/cli/services/flow/validation.ts +++ b/packages/app/src/cli/services/flow/validation.ts @@ -1,7 +1,7 @@ import {ConfigField, FlowExtensionTypes} from './types.js' import {SUPPORTED_COMMERCE_OBJECTS} from './constants.js' import {FlowTriggerSettingsSchema} from '../../models/extensions/specifications/flow_trigger.js' -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' function fieldValidationErrorMessage(property: string, configField: ConfigField, handle: string, index: number) { const errorMessage = `'${property}' property must be a string for 'field[${index}]' ${JSON.stringify( diff --git a/packages/app/src/cli/services/format-config-info-body.test.ts b/packages/app/src/cli/services/format-config-info-body.test.ts index 60384d04379..477d9c92407 100644 --- a/packages/app/src/cli/services/format-config-info-body.test.ts +++ b/packages/app/src/cli/services/format-config-info-body.test.ts @@ -1,6 +1,6 @@ import {formatConfigInfoBody} from './format-config-info-body.js' import {describe, test, expect} from 'vitest' -import {Token} from '@shopify/cli-kit/node/ui' +import {Token} from '@shopify/cli-kit/shared/node/ui' describe('formatConfigInfoBody', () => { test('shows the app name', () => { diff --git a/packages/app/src/cli/services/format-config-info-body.ts b/packages/app/src/cli/services/format-config-info-body.ts index 61e15a1ad14..e40b7478b57 100644 --- a/packages/app/src/cli/services/format-config-info-body.ts +++ b/packages/app/src/cli/services/format-config-info-body.ts @@ -1,4 +1,4 @@ -import {Token, TokenItem} from '@shopify/cli-kit/node/ui' +import {Token, TokenItem} from '@shopify/cli-kit/shared/node/ui' interface FormatConfigInfoBodyOptions { appName: string diff --git a/packages/app/src/cli/services/function/binaries.test.ts b/packages/app/src/cli/services/function/binaries.test.ts index 690e7eab186..d33596c3209 100644 --- a/packages/app/src/cli/services/function/binaries.test.ts +++ b/packages/app/src/cli/services/function/binaries.test.ts @@ -10,8 +10,8 @@ import { V1_TRAMPOLINE_VERSION, V2_TRAMPOLINE_VERSION, } from './binaries.js' -import {fetch, Response} from '@shopify/cli-kit/node/http' -import {fileExists, removeFile} from '@shopify/cli-kit/node/fs' +import {fetch, Response} from '@shopify/cli-kit/shared/node/http' +import {fileExists, removeFile} from '@shopify/cli-kit/shared/node/fs' import {describe, expect, test, vi} from 'vitest' import {gzipSync} from 'zlib' @@ -21,8 +21,8 @@ const functionRunner = functionRunnerBinary() const oldJavy = javyBinary('6.0.0') -vi.mock('@shopify/cli-kit/node/http', async () => { - const actualImports = await vi.importActual('@shopify/cli-kit/node/http') +vi.mock('@shopify/cli-kit/shared/node/http', async () => { + const actualImports = await vi.importActual('@shopify/cli-kit/shared/node/http') return { ...actualImports, fetch: vi.fn(), diff --git a/packages/app/src/cli/services/function/binaries.ts b/packages/app/src/cli/services/function/binaries.ts index 8e539d46953..ec4926f56c4 100644 --- a/packages/app/src/cli/services/function/binaries.ts +++ b/packages/app/src/cli/services/function/binaries.ts @@ -1,9 +1,9 @@ -import {joinPath, dirname} from '@shopify/cli-kit/node/path' -import {chmod, createFileWriteStream, fileExists, inTemporaryDirectory, mkdir, moveFile} from '@shopify/cli-kit/node/fs' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {performActionWithRetryAfterRecovery} from '@shopify/cli-kit/common/retry' -import {fetch} from '@shopify/cli-kit/node/http' -import {versionSatisfies} from '@shopify/cli-kit/node/node-package-manager' +import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' +import {chmod, createFileWriteStream, fileExists, inTemporaryDirectory, mkdir, moveFile} from '@shopify/cli-kit/shared/node/fs' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {performActionWithRetryAfterRecovery} from '@shopify/cli-kit/shared/common/retry' +import {fetch} from '@shopify/cli-kit/shared/node/http' +import {versionSatisfies} from '@shopify/cli-kit/shared/node/node-package-manager' import {PipelineSource} from 'stream' import {pipeline} from 'stream/promises' import stream from 'node:stream/promises' diff --git a/packages/app/src/cli/services/function/build.test.ts b/packages/app/src/cli/services/function/build.test.ts index f964ae821ae..1c185174030 100644 --- a/packages/app/src/cli/services/function/build.test.ts +++ b/packages/app/src/cli/services/function/build.test.ts @@ -21,13 +21,13 @@ import { } from './binaries.js' import {testApp, testFunctionExtension} from '../../models/app/app.test-data.js' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {exec} from '@shopify/cli-kit/node/system' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' -import {inTemporaryDirectory, mkdir, readFileSync, writeFile, removeFile} from '@shopify/cli-kit/node/fs' +import {exec} from '@shopify/cli-kit/shared/node/system' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' +import {inTemporaryDirectory, mkdir, readFileSync, writeFile, removeFile} from '@shopify/cli-kit/shared/node/fs' import {build as esBuild} from 'esbuild' -vi.mock('@shopify/cli-kit/node/fs') -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/fs') +vi.mock('@shopify/cli-kit/shared/node/system') vi.mock('esbuild', async () => { const esbuild: any = await vi.importActual('esbuild') diff --git a/packages/app/src/cli/services/function/build.ts b/packages/app/src/cli/services/function/build.ts index d5e0e1bb2da..25a6b6c36b6 100644 --- a/packages/app/src/cli/services/function/build.ts +++ b/packages/app/src/cli/services/function/build.ts @@ -14,17 +14,17 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {FunctionConfigType} from '../../models/extensions/specifications/function.js' import {AppInterface} from '../../models/app/app.js' import {EsbuildEnvVarRegex} from '../../constants.js' -import {hyphenate, camelize} from '@shopify/cli-kit/common/string' -import {outputContent, outputDebug, outputToken} from '@shopify/cli-kit/node/output' -import {exec} from '@shopify/cli-kit/node/system' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' +import {hyphenate, camelize} from '@shopify/cli-kit/shared/common/string' +import {outputContent, outputDebug, outputToken} from '@shopify/cli-kit/shared/node/output' +import {exec} from '@shopify/cli-kit/shared/node/system' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' import {build as esBuild, BuildResult} from 'esbuild' -import {findPathUp, inTemporaryDirectory, readFile, readFileSync, writeFile} from '@shopify/cli-kit/node/fs' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {renderTasks} from '@shopify/cli-kit/node/ui' -import {pickBy} from '@shopify/cli-kit/common/object' -import {runWithTimer} from '@shopify/cli-kit/node/metadata' -import {AbortError} from '@shopify/cli-kit/node/error' +import {findPathUp, inTemporaryDirectory, readFile, readFileSync, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {renderTasks} from '@shopify/cli-kit/shared/node/ui' +import {pickBy} from '@shopify/cli-kit/shared/common/object' +import {runWithTimer} from '@shopify/cli-kit/shared/node/metadata' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {Writable} from 'stream' export const PREFERRED_FUNCTION_NPM_PACKAGE_MAJOR_VERSION = '2' diff --git a/packages/app/src/cli/services/function/common.test.ts b/packages/app/src/cli/services/function/common.test.ts index 045c1790981..2fd70f9f4f7 100644 --- a/packages/app/src/cli/services/function/common.test.ts +++ b/packages/app/src/cli/services/function/common.test.ts @@ -13,15 +13,15 @@ import {generateSchemaService} from '../generate-schema.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {linkedAppContext} from '../app-context.js' import {describe, vi, expect, beforeEach, test} from 'vitest' -import {renderAutocompletePrompt, renderFatalError} from '@shopify/cli-kit/node/ui' -import {joinPath} from '@shopify/cli-kit/node/path' -import {isTerminalInteractive} from '@shopify/cli-kit/node/context/local' -import {fileExists} from '@shopify/cli-kit/node/fs' +import {renderAutocompletePrompt, renderFatalError} from '@shopify/cli-kit/shared/node/ui' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {isTerminalInteractive} from '@shopify/cli-kit/shared/node/context/local' +import {fileExists} from '@shopify/cli-kit/shared/node/fs' vi.mock('../app-context.js') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/fs') vi.mock('../generate-schema.js') let app: AppLinkedInterface diff --git a/packages/app/src/cli/services/function/common.ts b/packages/app/src/cli/services/function/common.ts index 07137a90988..46aca810d45 100644 --- a/packages/app/src/cli/services/function/common.ts +++ b/packages/app/src/cli/services/function/common.ts @@ -3,12 +3,12 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {FunctionConfigType} from '../../models/extensions/specifications/function.js' import {generateSchemaService} from '../generate-schema.js' import {linkedAppContext} from '../app-context.js' -import {resolvePath, cwd, joinPath} from '@shopify/cli-kit/node/path' -import {AbortError} from '@shopify/cli-kit/node/error' +import {resolvePath, cwd, joinPath} from '@shopify/cli-kit/shared/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {Flags} from '@oclif/core' -import {isTerminalInteractive} from '@shopify/cli-kit/node/context/local' -import {renderAutocompletePrompt} from '@shopify/cli-kit/node/ui' -import {fileExists} from '@shopify/cli-kit/node/fs' +import {isTerminalInteractive} from '@shopify/cli-kit/shared/node/context/local' +import {renderAutocompletePrompt} from '@shopify/cli-kit/shared/node/ui' +import {fileExists} from '@shopify/cli-kit/shared/node/fs' export const functionFlags = { path: Flags.string({ diff --git a/packages/app/src/cli/services/function/info.test.ts b/packages/app/src/cli/services/function/info.test.ts index 8c44aa96cf0..b0b09d73f4f 100644 --- a/packages/app/src/cli/services/function/info.test.ts +++ b/packages/app/src/cli/services/function/info.test.ts @@ -11,7 +11,7 @@ import { import {testFunctionExtension} from '../../models/app/app.test-data.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {describe, expect, test, beforeEach} from 'vitest' -import {AlertCustomSection} from '@shopify/cli-kit/node/ui' +import {AlertCustomSection} from '@shopify/cli-kit/shared/node/ui' describe('functionInfo', () => { let ourFunction: ExtensionInstance diff --git a/packages/app/src/cli/services/function/info.ts b/packages/app/src/cli/services/function/info.ts index 3abc7d3d5c5..c12f6bb3e91 100644 --- a/packages/app/src/cli/services/function/info.ts +++ b/packages/app/src/cli/services/function/info.ts @@ -1,6 +1,6 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' -import {InlineToken, AlertCustomSection} from '@shopify/cli-kit/node/ui' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' +import {InlineToken, AlertCustomSection} from '@shopify/cli-kit/shared/node/ui' type Format = 'json' | 'text' diff --git a/packages/app/src/cli/services/function/replay.test.ts b/packages/app/src/cli/services/function/replay.test.ts index 96a49e0cc85..ecdb217f78d 100644 --- a/packages/app/src/cli/services/function/replay.test.ts +++ b/packages/app/src/cli/services/function/replay.test.ts @@ -5,22 +5,22 @@ import {testAppLinked, testFunctionExtension} from '../../models/app/app.test-da import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {FunctionConfigType} from '../../models/extensions/specifications/function.js' import {selectFunctionRunPrompt} from '../../prompts/function/replay.js' -import {randomUUID} from '@shopify/cli-kit/node/crypto' -import {readFile} from '@shopify/cli-kit/node/fs' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' +import {readFile} from '@shopify/cli-kit/shared/node/fs' import {describe, expect, beforeAll, test, vi} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputInfo} from '@shopify/cli-kit/node/output' -import {getLogsDir} from '@shopify/cli-kit/node/logs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' +import {getLogsDir} from '@shopify/cli-kit/shared/node/logs' import {existsSync, readdirSync} from 'fs' vi.mock('fs') -vi.mock('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/fs') vi.mock('../generate-schema.js') vi.mock('../../prompts/function/replay.js') vi.mock('../dev/extension/bundler.js') -vi.mock('@shopify/cli-kit/node/output') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/output') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('./ui.js') vi.mock('./runner.js') diff --git a/packages/app/src/cli/services/function/replay.ts b/packages/app/src/cli/services/function/replay.ts index f8954feac1c..906dff118c8 100644 --- a/packages/app/src/cli/services/function/replay.ts +++ b/packages/app/src/cli/services/function/replay.ts @@ -6,10 +6,10 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {FunctionConfigType} from '../../models/extensions/specifications/function.js' import {selectFunctionRunPrompt} from '../../prompts/function/replay.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import {readFile} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' -import {AbortController} from '@shopify/cli-kit/node/abort' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {readFile} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' import {existsSync, readdirSync} from 'fs' diff --git a/packages/app/src/cli/services/function/runner.test.ts b/packages/app/src/cli/services/function/runner.test.ts index 2e78d04d545..dec8d4ab3f4 100644 --- a/packages/app/src/cli/services/function/runner.test.ts +++ b/packages/app/src/cli/services/function/runner.test.ts @@ -2,10 +2,10 @@ import {runFunction} from './runner.js' import {functionRunnerBinary, downloadBinary} from './binaries.js' import {testFunctionExtension} from '../../models/app/app.test-data.js' import {describe, test, vi, expect} from 'vitest' -import {exec} from '@shopify/cli-kit/node/system' +import {exec} from '@shopify/cli-kit/shared/node/system' import {Readable, Writable} from 'stream' -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system') vi.mock('./binaries.js', async (importOriginal) => { const original = await importOriginal() return { diff --git a/packages/app/src/cli/services/function/runner.ts b/packages/app/src/cli/services/function/runner.ts index e81fe684461..3c152c987cd 100644 --- a/packages/app/src/cli/services/function/runner.ts +++ b/packages/app/src/cli/services/function/runner.ts @@ -2,7 +2,7 @@ import {functionRunnerBinary, downloadBinary} from './binaries.js' import {validateShopifyFunctionPackageVersion} from './build.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {FunctionConfigType} from '../../models/extensions/specifications/function.js' -import {exec} from '@shopify/cli-kit/node/system' +import {exec} from '@shopify/cli-kit/shared/node/system' import {Readable, Writable} from 'stream' interface FunctionRunnerOptions { diff --git a/packages/app/src/cli/services/function/ui.tsx b/packages/app/src/cli/services/function/ui.tsx index 8ef10080c67..4ae3a473f05 100644 --- a/packages/app/src/cli/services/function/ui.tsx +++ b/packages/app/src/cli/services/function/ui.tsx @@ -1,5 +1,5 @@ import {Replay, ReplayProps} from './ui/components/Replay/Replay.js' -import {render} from '@shopify/cli-kit/node/ui' +import {render} from '@shopify/cli-kit/shared/node/ui' import React from 'react' export async function renderReplay({selectedRun, abortController, app, extension}: ReplayProps) { diff --git a/packages/app/src/cli/services/function/ui/components/Replay/Replay.test.tsx b/packages/app/src/cli/services/function/ui/components/Replay/Replay.test.tsx index 44af6642b7c..c07480845c1 100644 --- a/packages/app/src/cli/services/function/ui/components/Replay/Replay.test.tsx +++ b/packages/app/src/cli/services/function/ui/components/Replay/Replay.test.tsx @@ -5,11 +5,11 @@ import {testFunctionExtension, testAppLinked} from '../../../../../models/app/ap import {ExtensionInstance} from '../../../../../models/extensions/extension-instance.js' import {FunctionConfigType} from '../../../../../models/extensions/specifications/function.js' import {FunctionRunData} from '../../../replay.js' -import {AbortController} from '@shopify/cli-kit/node/abort' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' import React from 'react' import {beforeAll, describe, expect, test, vi} from 'vitest' -import {unstyled} from '@shopify/cli-kit/node/output' -import {render, sendInputAndWait, waitForInputsToBeReady} from '@shopify/cli-kit/node/testing/ui' +import {unstyled} from '@shopify/cli-kit/shared/node/output' +import {render, sendInputAndWait, waitForInputsToBeReady} from '@shopify/cli-kit/shared/node/testing/ui' vi.mock('./hooks/useFunctionWatcher.js') diff --git a/packages/app/src/cli/services/function/ui/components/Replay/Replay.tsx b/packages/app/src/cli/services/function/ui/components/Replay/Replay.tsx index 5963e621237..f234f36b17d 100644 --- a/packages/app/src/cli/services/function/ui/components/Replay/Replay.tsx +++ b/packages/app/src/cli/services/function/ui/components/Replay/Replay.tsx @@ -6,12 +6,12 @@ import {FunctionConfigType} from '../../../../../models/extensions/specification import {AppLinkedInterface} from '../../../../../models/app/app.js' import {prettyPrintJsonIfPossible} from '../../../../app-logs/utils.js' import {AppEventWatcher} from '../../../../dev/app-events/app-event-watcher.js' -import figures from '@shopify/cli-kit/node/figures' -import {AbortController} from '@shopify/cli-kit/node/abort' +import figures from '@shopify/cli-kit/shared/node/figures' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' import React, {FunctionComponent} from 'react' -import {Box, Text, Static, useInput, useStdin} from '@shopify/cli-kit/node/ink' -import {useAbortSignal} from '@shopify/cli-kit/node/ui/hooks' -import {handleCtrlC} from '@shopify/cli-kit/node/ui' +import {Box, Text, Static, useInput, useStdin} from '@shopify/cli-kit/shared/node/ink' +import {useAbortSignal} from '@shopify/cli-kit/shared/node/ui/hooks' +import {handleCtrlC} from '@shopify/cli-kit/shared/node/ui' export interface ReplayProps { selectedRun: FunctionRunData diff --git a/packages/app/src/cli/services/function/ui/components/Replay/hooks/useFunctionWatcher.test.tsx b/packages/app/src/cli/services/function/ui/components/Replay/hooks/useFunctionWatcher.test.tsx index 5ca209b21fe..d59a29e7b51 100644 --- a/packages/app/src/cli/services/function/ui/components/Replay/hooks/useFunctionWatcher.test.tsx +++ b/packages/app/src/cli/services/function/ui/components/Replay/hooks/useFunctionWatcher.test.tsx @@ -3,8 +3,8 @@ import {FunctionRunData} from '../../../../replay.js' import {testAppLinked, testFunctionExtension} from '../../../../../../models/app/app.test-data.js' import {runFunction} from '../../../../runner.js' import {AppEventWatcher, EventType} from '../../../../../dev/app-events/app-event-watcher.js' -import {AbortController} from '@shopify/cli-kit/node/abort' -import {render} from '@shopify/cli-kit/node/testing/ui' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' +import {render} from '@shopify/cli-kit/shared/node/testing/ui' import {test, describe, vi, beforeEach, afterEach, expect} from 'vitest' import React from 'react' import {Writable} from 'stream' diff --git a/packages/app/src/cli/services/function/ui/components/Replay/hooks/useFunctionWatcher.ts b/packages/app/src/cli/services/function/ui/components/Replay/hooks/useFunctionWatcher.ts index ca1d92859ed..7d48da2a95c 100644 --- a/packages/app/src/cli/services/function/ui/components/Replay/hooks/useFunctionWatcher.ts +++ b/packages/app/src/cli/services/function/ui/components/Replay/hooks/useFunctionWatcher.ts @@ -5,11 +5,11 @@ import {ExtensionInstance} from '../../../../../../models/extensions/extension-i import {FunctionRunFromRunner, ReplayLog} from '../types.js' import {runFunction} from '../../../../runner.js' import {AppEventWatcher, EventType} from '../../../../../dev/app-events/app-event-watcher.js' -import {AbortController} from '@shopify/cli-kit/node/abort' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' import {useEffect, useState} from 'react' -import {useAbortSignal} from '@shopify/cli-kit/node/ui/hooks' -import {isUnitTest} from '@shopify/cli-kit/node/context/local' -import {treeKill} from '@shopify/cli-kit/node/tree-kill' +import {useAbortSignal} from '@shopify/cli-kit/shared/node/ui/hooks' +import {isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {treeKill} from '@shopify/cli-kit/shared/node/tree-kill' import {Writable} from 'stream' interface WatchFunctionForReplayOptions { diff --git a/packages/app/src/cli/services/generate-schema.test.ts b/packages/app/src/cli/services/generate-schema.test.ts index 25cee83d43b..12955923367 100644 --- a/packages/app/src/cli/services/generate-schema.test.ts +++ b/packages/app/src/cli/services/generate-schema.test.ts @@ -1,12 +1,12 @@ import {generateSchemaService} from './generate-schema.js' import {testAppLinked, testDeveloperPlatformClient, testFunctionExtension} from '../models/app/app.test-data.js' import {describe, expect, vi, test} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {inTemporaryDirectory, readFile, mkdir} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import * as output from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {inTemporaryDirectory, readFile, mkdir} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import * as output from '@shopify/cli-kit/shared/node/output' -vi.mock('@shopify/cli-kit/node/context/local') +vi.mock('@shopify/cli-kit/shared/node/context/local') vi.mock('../../../models/app/loader.ts') vi.mock('../models/app/identifiers.js', async () => { const identifiers: any = await vi.importActual('../models/app/identifiers.js') diff --git a/packages/app/src/cli/services/generate-schema.ts b/packages/app/src/cli/services/generate-schema.ts index b611831015a..939ce819043 100644 --- a/packages/app/src/cli/services/generate-schema.ts +++ b/packages/app/src/cli/services/generate-schema.ts @@ -4,10 +4,10 @@ import {SchemaDefinitionByTargetQueryVariables} from '../api/graphql/functions/g import {ExtensionInstance} from '../models/extensions/extension-instance.js' import {FunctionConfigType} from '../models/extensions/specifications/function.js' import {AppLinkedInterface} from '../models/app/app.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputInfo, outputResult} from '@shopify/cli-kit/node/output' -import {writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputInfo, outputResult} from '@shopify/cli-kit/shared/node/output' +import {writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' interface GenerateSchemaOptions { app: AppLinkedInterface diff --git a/packages/app/src/cli/services/generate.test.ts b/packages/app/src/cli/services/generate.test.ts index e00dc5849d1..30aff802b30 100644 --- a/packages/app/src/cli/services/generate.test.ts +++ b/packages/app/src/cli/services/generate.test.ts @@ -17,8 +17,8 @@ import {OrganizationApp} from '../models/organization.js' import {RemoteAwareExtensionSpecification} from '../models/extensions/specification.js' import {DeveloperPlatformClient} from '../utilities/developer-platform-client.js' import {loadLocalExtensionsSpecifications} from '../models/extensions/load-specifications.js' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' -import {joinPath} from '@shopify/cli-kit/node/path' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import {describe, expect, vi, afterEach, test, beforeEach} from 'vitest' vi.mock('../constants.js', async () => { diff --git a/packages/app/src/cli/services/generate.ts b/packages/app/src/cli/services/generate.ts index 038e7e5367d..8656255325e 100644 --- a/packages/app/src/cli/services/generate.ts +++ b/packages/app/src/cli/services/generate.ts @@ -15,13 +15,13 @@ import { import {ExtensionTemplate} from '../models/app/template.js' import {ExtensionSpecification, RemoteAwareExtensionSpecification} from '../models/extensions/specification.js' import {OrganizationApp} from '../models/organization.js' -import {PackageManager} from '@shopify/cli-kit/node/node-package-manager' -import {isShopify} from '@shopify/cli-kit/node/context/local' -import {joinPath} from '@shopify/cli-kit/node/path' -import {RenderAlertOptions, renderSuccess} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' -import {formatPackageManagerCommand} from '@shopify/cli-kit/node/output' -import {groupBy} from '@shopify/cli-kit/common/collection' +import {PackageManager} from '@shopify/cli-kit/shared/node/node-package-manager' +import {isShopify} from '@shopify/cli-kit/shared/node/context/local' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {RenderAlertOptions, renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {formatPackageManagerCommand} from '@shopify/cli-kit/shared/node/output' +import {groupBy} from '@shopify/cli-kit/shared/common/collection' interface GenerateOptions { app: AppLinkedInterface diff --git a/packages/app/src/cli/services/generate/extension.test.ts b/packages/app/src/cli/services/generate/extension.test.ts index 38becb99547..3f8bf23e8c9 100644 --- a/packages/app/src/cli/services/generate/extension.test.ts +++ b/packages/app/src/cli/services/generate/extension.test.ts @@ -19,21 +19,21 @@ import {loadLocalExtensionsSpecifications} from '../../models/extensions/load-sp import {AppLinkedInterface} from '../../models/app/app.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {describe, expect, vi, test} from 'vitest' -import * as output from '@shopify/cli-kit/node/output' +import * as output from '@shopify/cli-kit/shared/node/output' import { installNodeModules, addNPMDependenciesIfNeeded, addResolutionOrOverride, -} from '@shopify/cli-kit/node/node-package-manager' -import * as template from '@shopify/cli-kit/node/liquid' -import * as file from '@shopify/cli-kit/node/fs' -import * as git from '@shopify/cli-kit/node/git' -import {joinPath, dirname} from '@shopify/cli-kit/node/path' -import {slugify} from '@shopify/cli-kit/common/string' +} from '@shopify/cli-kit/shared/node/node-package-manager' +import * as template from '@shopify/cli-kit/shared/node/liquid' +import * as file from '@shopify/cli-kit/shared/node/fs' +import * as git from '@shopify/cli-kit/shared/node/git' +import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' +import {slugify} from '@shopify/cli-kit/shared/common/string' vi.mock('../../models/app/validation/multi-cli-warning.js') -vi.mock('@shopify/cli-kit/node/node-package-manager', async () => { - const actual: any = await vi.importActual('@shopify/cli-kit/node/node-package-manager') +vi.mock('@shopify/cli-kit/shared/node/node-package-manager', async () => { + const actual: any = await vi.importActual('@shopify/cli-kit/shared/node/node-package-manager') return { ...actual, addNPMDependenciesIfNeeded: vi.fn(), @@ -42,8 +42,8 @@ vi.mock('@shopify/cli-kit/node/node-package-manager', async () => { } }) -vi.mock('@shopify/cli-kit/node/system', async () => { - const actual: any = await vi.importActual('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system', async () => { + const actual: any = await vi.importActual('@shopify/cli-kit/shared/node/system') return { ...actual, exec: vi.fn().mockResolvedValue({stdout: '', stderr: ''}), diff --git a/packages/app/src/cli/services/generate/extension.ts b/packages/app/src/cli/services/generate/extension.ts index 3a47ee52d64..1c9ad186d41 100644 --- a/packages/app/src/cli/services/generate/extension.ts +++ b/packages/app/src/cli/services/generate/extension.ts @@ -12,14 +12,14 @@ import { DependencyVersion, installNodeModules, readAndParsePackageJson, -} from '@shopify/cli-kit/node/node-package-manager' -import {recursiveLiquidTemplateCopy} from '@shopify/cli-kit/node/liquid' -import {renderTasks} from '@shopify/cli-kit/node/ui' -import {downloadGitRepository} from '@shopify/cli-kit/node/git' -import {fileExists, inTemporaryDirectory, mkdir, moveFile, removeFile, glob} from '@shopify/cli-kit/node/fs' -import {joinPath, relativizePath} from '@shopify/cli-kit/node/path' -import {slugify} from '@shopify/cli-kit/common/string' -import {nonRandomUUID} from '@shopify/cli-kit/node/crypto' +} from '@shopify/cli-kit/shared/node/node-package-manager' +import {recursiveLiquidTemplateCopy} from '@shopify/cli-kit/shared/node/liquid' +import {renderTasks} from '@shopify/cli-kit/shared/node/ui' +import {downloadGitRepository} from '@shopify/cli-kit/shared/node/git' +import {fileExists, inTemporaryDirectory, mkdir, moveFile, removeFile, glob} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, relativizePath} from '@shopify/cli-kit/shared/node/path' +import {slugify} from '@shopify/cli-kit/shared/common/string' +import {nonRandomUUID} from '@shopify/cli-kit/shared/node/crypto' export interface GenerateExtensionTemplateOptions { app: AppLinkedInterface diff --git a/packages/app/src/cli/services/generate/fetch-extension-specifications.ts b/packages/app/src/cli/services/generate/fetch-extension-specifications.ts index 37544a1c672..9ce9072eb6c 100644 --- a/packages/app/src/cli/services/generate/fetch-extension-specifications.ts +++ b/packages/app/src/cli/services/generate/fetch-extension-specifications.ts @@ -8,9 +8,9 @@ import { import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {MinimalAppIdentifiers} from '../../models/organization.js' import {unifiedConfigurationParserFactory} from '../../utilities/json-schema.js' -import {getArrayRejectingUndefined} from '@shopify/cli-kit/common/array' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {HandleInvalidAdditionalProperties, normaliseJsonSchema} from '@shopify/cli-kit/node/json-schema' +import {getArrayRejectingUndefined} from '@shopify/cli-kit/shared/common/array' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {HandleInvalidAdditionalProperties, normaliseJsonSchema} from '@shopify/cli-kit/shared/node/json-schema' interface FetchSpecificationsOptions { developerPlatformClient: DeveloperPlatformClient diff --git a/packages/app/src/cli/services/generate/shop-import/declarative-definitions.test.ts b/packages/app/src/cli/services/generate/shop-import/declarative-definitions.test.ts index 72151743a08..ee15678c46c 100644 --- a/packages/app/src/cli/services/generate/shop-import/declarative-definitions.test.ts +++ b/packages/app/src/cli/services/generate/shop-import/declarative-definitions.test.ts @@ -17,14 +17,14 @@ import { } from '../../../api/graphql/admin/generated/metafield_definitions.js' import {adminAsAppRequestDoc} from '../../../api/admin-as-app.js' import {describe, expect, test, vi} from 'vitest' -import * as output from '@shopify/cli-kit/node/output' -import {stringifyMessage} from '@shopify/cli-kit/node/output' +import * as output from '@shopify/cli-kit/shared/node/output' +import {stringifyMessage} from '@shopify/cli-kit/shared/node/output' import {TypedDocumentNode} from '@graphql-typed-document-node/core' -import {AdminSession, ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/node/session' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {AdminSession, ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/identity/session' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' vi.mock('../../../api/admin-as-app.js') -vi.mock('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/identity/session') const defaultMetaobjectFragment = { name: 'test', diff --git a/packages/app/src/cli/services/generate/shop-import/declarative-definitions.ts b/packages/app/src/cli/services/generate/shop-import/declarative-definitions.ts index 76618c34086..c0a2d14a979 100644 --- a/packages/app/src/cli/services/generate/shop-import/declarative-definitions.ts +++ b/packages/app/src/cli/services/generate/shop-import/declarative-definitions.ts @@ -19,14 +19,14 @@ import { MetaobjectStorefrontAccess, } from '../../../api/graphql/admin/generated/types.js' import {CurrentAppConfiguration} from '../../../models/app/app.js' -import {BugError} from '@shopify/cli-kit/node/error' -import {AdminSession, ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/node/session' -import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/node/output' +import {BugError} from '@shopify/cli-kit/shared/node/error' +import {AdminSession, ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/identity/session' +import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/shared/node/output' import {TypedDocumentNode} from '@graphql-typed-document-node/core' import {Variables} from 'graphql-request' import {updateTomlValues} from '@shopify/toml-patch' -import {renderInfo, renderSingleTask, renderTasks} from '@shopify/cli-kit/node/ui' -import {isEmpty} from '@shopify/cli-kit/common/object' +import {renderInfo, renderSingleTask, renderTasks} from '@shopify/cli-kit/shared/node/ui' +import {isEmpty} from '@shopify/cli-kit/shared/common/object' interface ImportDeclarativeDefinitionsOptions { remoteApp: OrganizationApp diff --git a/packages/app/src/cli/services/graphql/common.test.ts b/packages/app/src/cli/services/graphql/common.test.ts index 9d694a94d20..4dff072357b 100644 --- a/packages/app/src/cli/services/graphql/common.test.ts +++ b/packages/app/src/cli/services/graphql/common.test.ts @@ -8,20 +8,20 @@ import { } from './common.js' import {OrganizationApp, OrganizationStore} from '../../models/organization.js' import {BULK_OPERATIONS_MIN_API_VERSION} from '../bulk-operations/constants.js' -import {ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/node/session' -import {fetchApiVersions} from '@shopify/cli-kit/node/api/admin' +import {ensureAuthenticatedAdminAsApp} from '@shopify/cli-kit/identity/session' +import {fetchApiVersions} from '@shopify/cli-kit/admin/api' import {describe, test, expect, vi, beforeEach} from 'vitest' -vi.mock('@shopify/cli-kit/node/session', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/identity/session', async () => { + const actual = await vi.importActual('@shopify/cli-kit/identity/session') return { ...actual, ensureAuthenticatedAdminAsApp: vi.fn(), } }) -vi.mock('@shopify/cli-kit/node/api/admin', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/api/admin') +vi.mock('@shopify/cli-kit/admin/api', async () => { + const actual = await vi.importActual('@shopify/cli-kit/admin/api') return { ...actual, fetchApiVersions: vi.fn(), diff --git a/packages/app/src/cli/services/graphql/common.ts b/packages/app/src/cli/services/graphql/common.ts index 48127580370..1320e364b54 100644 --- a/packages/app/src/cli/services/graphql/common.ts +++ b/packages/app/src/cli/services/graphql/common.ts @@ -1,8 +1,8 @@ import {OrganizationApp, OrganizationStore} from '../../models/organization.js' -import {ensureAuthenticatedAdminAsApp, AdminSession} from '@shopify/cli-kit/node/session' -import {AbortError, BugError} from '@shopify/cli-kit/node/error' -import {outputContent} from '@shopify/cli-kit/node/output' -import {fetchApiVersions} from '@shopify/cli-kit/node/api/admin' +import {ensureAuthenticatedAdminAsApp, AdminSession} from '@shopify/cli-kit/identity/session' +import {AbortError, BugError} from '@shopify/cli-kit/shared/node/error' +import {outputContent} from '@shopify/cli-kit/shared/node/output' +import {fetchApiVersions} from '@shopify/cli-kit/admin/api' import {parse} from 'graphql' /** diff --git a/packages/app/src/cli/services/import-extensions.test.ts b/packages/app/src/cli/services/import-extensions.test.ts index 060d886297b..4bd8b21f6fc 100644 --- a/packages/app/src/cli/services/import-extensions.test.ts +++ b/packages/app/src/cli/services/import-extensions.test.ts @@ -4,12 +4,12 @@ import {testAppLinked, testDeveloperPlatformClient, testUIExtension} from '../mo import {OrganizationApp} from '../models/organization.js' import {ExtensionRegistration} from '../api/graphql/all_app_extension_registrations.js' import {describe, expect, test, vi, beforeEach} from 'vitest' -import {fileExistsSync, inTemporaryDirectory, mkdir} from '@shopify/cli-kit/node/fs' -import {renderSelectPrompt, renderSuccess} from '@shopify/cli-kit/node/ui' -import {joinPath} from '@shopify/cli-kit/node/path' -import {AbortSilentError} from '@shopify/cli-kit/node/error' +import {fileExistsSync, inTemporaryDirectory, mkdir} from '@shopify/cli-kit/shared/node/fs' +import {renderSelectPrompt, renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('./context.js') vi.mock('./fetch-extensions.js') vi.mock('./context/partner-account-info.js') diff --git a/packages/app/src/cli/services/import-extensions.ts b/packages/app/src/cli/services/import-extensions.ts index 2d736b0b0c6..26ac942cb31 100644 --- a/packages/app/src/cli/services/import-extensions.ts +++ b/packages/app/src/cli/services/import-extensions.ts @@ -6,12 +6,12 @@ import {MAX_EXTENSION_HANDLE_LENGTH} from '../models/extensions/schemas.js' import {OrganizationApp} from '../models/organization.js' import {allMigrationChoices, getMigrationChoices} from '../prompts/import-extensions.js' import {configurationFileNames, blocks} from '../constants.js' -import {renderSelectPrompt, renderSuccess} from '@shopify/cli-kit/node/ui' -import {basename, joinPath} from '@shopify/cli-kit/node/path' -import {removeFile, writeFile, fileExists, mkdir, touchFile} from '@shopify/cli-kit/node/fs' -import {outputContent} from '@shopify/cli-kit/node/output' -import {slugify, hyphenate} from '@shopify/cli-kit/common/string' -import {AbortError, AbortSilentError} from '@shopify/cli-kit/node/error' +import {renderSelectPrompt, renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {basename, joinPath} from '@shopify/cli-kit/shared/node/path' +import {removeFile, writeFile, fileExists, mkdir, touchFile} from '@shopify/cli-kit/shared/node/fs' +import {outputContent} from '@shopify/cli-kit/shared/node/output' +import {slugify, hyphenate} from '@shopify/cli-kit/shared/common/string' +import {AbortError, AbortSilentError} from '@shopify/cli-kit/shared/node/error' export const allExtensionTypes = allMigrationChoices.flatMap((choice) => choice.extensionTypes) diff --git a/packages/app/src/cli/services/info.test.ts b/packages/app/src/cli/services/info.test.ts index fee68b37094..8fec261e2b9 100644 --- a/packages/app/src/cli/services/info.test.ts +++ b/packages/app/src/cli/services/info.test.ts @@ -12,13 +12,13 @@ import { import {AppErrors} from '../models/app/loader.js' import {DeveloperPlatformClient} from '../utilities/developer-platform-client.js' import {describe, expect, vi, test} from 'vitest' -import {joinPath} from '@shopify/cli-kit/node/path' -import {OutputMessage, TokenizedString, stringifyMessage, unstyled} from '@shopify/cli-kit/node/output' -import {inTemporaryDirectory, writeFileSync} from '@shopify/cli-kit/node/fs' -import {AlertCustomSection, InlineToken} from '@shopify/cli-kit/node/ui' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {OutputMessage, TokenizedString, stringifyMessage, unstyled} from '@shopify/cli-kit/shared/node/output' +import {inTemporaryDirectory, writeFileSync} from '@shopify/cli-kit/shared/node/fs' +import {AlertCustomSection, InlineToken} from '@shopify/cli-kit/shared/node/ui' vi.mock('../prompts/dev.js') -vi.mock('@shopify/cli-kit/node/node-package-manager') +vi.mock('@shopify/cli-kit/shared/node/node-package-manager') vi.mock('../utilities/developer-platform-client.js') const APP = testOrganizationApp() diff --git a/packages/app/src/cli/services/info.ts b/packages/app/src/cli/services/info.ts index c6ab37a58f3..de945533645 100644 --- a/packages/app/src/cli/services/info.ts +++ b/packages/app/src/cli/services/info.ts @@ -4,18 +4,18 @@ import {AppLinkedInterface, getAppScopes} from '../models/app/app.js' import {configurationFileNames} from '../constants.js' import {ExtensionInstance} from '../models/extensions/extension-instance.js' import {Organization, OrganizationApp} from '../models/organization.js' -import {isServiceAccount, isUserAccount} from '@shopify/cli-kit/node/session' -import {platformAndArch} from '@shopify/cli-kit/node/os' -import {basename, relativePath} from '@shopify/cli-kit/node/path' +import {isServiceAccount, isUserAccount} from '@shopify/cli-kit/identity/session' +import {platformAndArch} from '@shopify/cli-kit/shared/node/os' +import {basename, relativePath} from '@shopify/cli-kit/shared/node/path' import { OutputMessage, formatPackageManagerCommand, outputContent, shouldDisplayColors, stringifyMessage, -} from '@shopify/cli-kit/node/output' -import {AlertCustomSection, InlineToken} from '@shopify/cli-kit/node/ui' -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' +} from '@shopify/cli-kit/shared/node/output' +import {AlertCustomSection, InlineToken} from '@shopify/cli-kit/shared/node/ui' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' export type Format = 'json' | 'text' export interface InfoOptions { diff --git a/packages/app/src/cli/services/init/init.ts b/packages/app/src/cli/services/init/init.ts index 0dee2acba57..a99253d92a5 100644 --- a/packages/app/src/cli/services/init/init.ts +++ b/packages/app/src/cli/services/init/init.ts @@ -12,13 +12,13 @@ import { PackageManager, UnknownPackageManagerError, writePackageJSON, -} from '@shopify/cli-kit/node/node-package-manager' -import {renderInfo, renderSuccess, renderTasks, Task} from '@shopify/cli-kit/node/ui' -import {parseGitHubRepositoryReference} from '@shopify/cli-kit/node/github' -import {hyphenate} from '@shopify/cli-kit/common/string' -import {recursiveLiquidTemplateCopy} from '@shopify/cli-kit/node/liquid' -import {isShopify} from '@shopify/cli-kit/node/context/local' -import {downloadGitRepository, initializeGitRepository} from '@shopify/cli-kit/node/git' +} from '@shopify/cli-kit/shared/node/node-package-manager' +import {renderInfo, renderSuccess, renderTasks, Task} from '@shopify/cli-kit/shared/node/ui' +import {parseGitHubRepositoryReference} from '@shopify/cli-kit/shared/node/github' +import {hyphenate} from '@shopify/cli-kit/shared/common/string' +import {recursiveLiquidTemplateCopy} from '@shopify/cli-kit/shared/node/liquid' +import {isShopify} from '@shopify/cli-kit/shared/node/context/local' +import {downloadGitRepository, initializeGitRepository} from '@shopify/cli-kit/shared/node/git' import { appendFile, fileExists, @@ -28,12 +28,12 @@ import { moveFile, readFile, writeFile, -} from '@shopify/cli-kit/node/fs' -import {joinPath, normalizePath} from '@shopify/cli-kit/node/path' -import {username} from '@shopify/cli-kit/node/os' -import {AbortError} from '@shopify/cli-kit/node/error' -import {formatPackageManagerCommand} from '@shopify/cli-kit/node/output' -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' +} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, normalizePath} from '@shopify/cli-kit/shared/node/path' +import {username} from '@shopify/cli-kit/shared/node/os' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {formatPackageManagerCommand} from '@shopify/cli-kit/shared/node/output' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' interface InitOptions { name: string diff --git a/packages/app/src/cli/services/init/template/cleanup.test.ts b/packages/app/src/cli/services/init/template/cleanup.test.ts index 37fe613d02e..8cf6e90767d 100644 --- a/packages/app/src/cli/services/init/template/cleanup.test.ts +++ b/packages/app/src/cli/services/init/template/cleanup.test.ts @@ -1,8 +1,8 @@ import cleanup from './cleanup.js' import {describe, expect, test} from 'vitest' -import {inTemporaryDirectory, mkdir, writeFile, fileExists} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {PackageManager} from '@shopify/cli-kit/node/node-package-manager' +import {inTemporaryDirectory, mkdir, writeFile, fileExists} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {PackageManager} from '@shopify/cli-kit/shared/node/node-package-manager' describe('cleanup', () => { async function mockProjectFolder(tmpDir: string) { diff --git a/packages/app/src/cli/services/init/template/cleanup.ts b/packages/app/src/cli/services/init/template/cleanup.ts index fde535065e4..5733146c409 100644 --- a/packages/app/src/cli/services/init/template/cleanup.ts +++ b/packages/app/src/cli/services/init/template/cleanup.ts @@ -1,6 +1,6 @@ -import {rmdir, glob, fileExistsSync, unlinkFile} from '@shopify/cli-kit/node/fs' -import {Lockfile, lockfilesByManager, PackageManager} from '@shopify/cli-kit/node/node-package-manager' -import {joinPath} from '@shopify/cli-kit/node/path' +import {rmdir, glob, fileExistsSync, unlinkFile} from '@shopify/cli-kit/shared/node/fs' +import {Lockfile, lockfilesByManager, PackageManager} from '@shopify/cli-kit/shared/node/node-package-manager' +import {joinPath} from '@shopify/cli-kit/shared/node/path' export default async function cleanup(webOutputDirectory: string, packageManager: PackageManager) { const gitPaths = await glob( diff --git a/packages/app/src/cli/services/init/template/npm.test.ts b/packages/app/src/cli/services/init/template/npm.test.ts index b8eeb21770a..758a0e5ddb5 100644 --- a/packages/app/src/cli/services/init/template/npm.test.ts +++ b/packages/app/src/cli/services/init/template/npm.test.ts @@ -1,13 +1,13 @@ import {getDeepInstallNPMTasks, updateCLIDependencies} from './npm.js' import {describe, expect, vi, test} from 'vitest' -import {installNodeModules, PackageJson, PackageManager} from '@shopify/cli-kit/node/node-package-manager' -import {inTemporaryDirectory, mkdir, readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath, moduleDirectory, normalizePath} from '@shopify/cli-kit/node/path' +import {installNodeModules, PackageJson, PackageManager} from '@shopify/cli-kit/shared/node/node-package-manager' +import {inTemporaryDirectory, mkdir, readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, moduleDirectory, normalizePath} from '@shopify/cli-kit/shared/node/path' import {platform} from 'os' vi.mock('os') -vi.mock('@shopify/cli-kit/node/node-package-manager') -vi.mock('@shopify/cli-kit/common/version', () => ({CLI_KIT_VERSION: '1.2.3'})) +vi.mock('@shopify/cli-kit/shared/node/node-package-manager') +vi.mock('@shopify/cli-kit/shared/common/version', () => ({CLI_KIT_VERSION: '1.2.3'})) describe('updateCLIDependencies', () => { test('updates @shopify/cli and deletes @shopify/app if not using global CLI', async () => { diff --git a/packages/app/src/cli/services/init/template/npm.ts b/packages/app/src/cli/services/init/template/npm.ts index 123cdb1044a..0c285a2c144 100644 --- a/packages/app/src/cli/services/init/template/npm.ts +++ b/packages/app/src/cli/services/init/template/npm.ts @@ -1,7 +1,7 @@ -import {PackageManager, installNodeModules, PackageJson} from '@shopify/cli-kit/node/node-package-manager' -import {moduleDirectory, normalizePath} from '@shopify/cli-kit/node/path' -import {findPathUp} from '@shopify/cli-kit/node/fs' -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' +import {PackageManager, installNodeModules, PackageJson} from '@shopify/cli-kit/shared/node/node-package-manager' +import {moduleDirectory, normalizePath} from '@shopify/cli-kit/shared/node/path' +import {findPathUp} from '@shopify/cli-kit/shared/node/fs' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' import {platform} from 'os' interface UpdateCLIDependenciesOptions { diff --git a/packages/app/src/cli/services/init/validate.test.ts b/packages/app/src/cli/services/init/validate.test.ts index e031dc46ca2..5f62619a84a 100644 --- a/packages/app/src/cli/services/init/validate.test.ts +++ b/packages/app/src/cli/services/init/validate.test.ts @@ -1,6 +1,6 @@ import {validateTemplateValue, validateFlavorValue} from './validate.js' import {describe, expect, test} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' describe('validateTemplateValue', () => { test('should not throw an error for undefined template', () => { diff --git a/packages/app/src/cli/services/init/validate.ts b/packages/app/src/cli/services/init/validate.ts index 89d2dcee7ee..ab4b3220115 100644 --- a/packages/app/src/cli/services/init/validate.ts +++ b/packages/app/src/cli/services/init/validate.ts @@ -1,7 +1,7 @@ import {isPredefinedTemplate, templates, visibleTemplates} from '../../prompts/init/init.js' -import {safeParseURL} from '@shopify/cli-kit/common/url' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {safeParseURL} from '@shopify/cli-kit/shared/common/url' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' export function validateTemplateValue(template: string | undefined) { if (!template) { diff --git a/packages/app/src/cli/services/local-storage.test.ts b/packages/app/src/cli/services/local-storage.test.ts index a6c161d77f6..76cd3552bdf 100644 --- a/packages/app/src/cli/services/local-storage.test.ts +++ b/packages/app/src/cli/services/local-storage.test.ts @@ -6,8 +6,8 @@ import { setCachedAppInfo, } from './local-storage.js' import {describe, expect, test} from 'vitest' -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' -import {inTemporaryDirectory} from '@shopify/cli-kit/node/fs' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' +import {inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' const APP1 = {appId: 'app1', storeFqdn: 'store1', orgId: 'org1', directory: '/app1'} const APP2 = {appId: 'app2', storeFqdn: 'store2', orgId: 'org2', directory: '/app2'} diff --git a/packages/app/src/cli/services/local-storage.ts b/packages/app/src/cli/services/local-storage.ts index 111eb40d71d..cf7c6b7f6cd 100644 --- a/packages/app/src/cli/services/local-storage.ts +++ b/packages/app/src/cli/services/local-storage.ts @@ -1,7 +1,7 @@ import {AppConfigurationFileName} from '../models/app/loader.js' -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' -import {outputDebug, outputContent, outputToken} from '@shopify/cli-kit/node/output' -import {normalizePath} from '@shopify/cli-kit/node/path' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' +import {outputDebug, outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' +import {normalizePath} from '@shopify/cli-kit/shared/node/path' export interface CachedAppInfo { directory: string diff --git a/packages/app/src/cli/services/logs.test.ts b/packages/app/src/cli/services/logs.test.ts index 1ed2a08eb14..5b56d3450c1 100644 --- a/packages/app/src/cli/services/logs.test.ts +++ b/packages/app/src/cli/services/logs.test.ts @@ -11,17 +11,17 @@ import { testOrganizationStore, } from '../models/app/app.test-data.js' import {DeveloperPlatformClient} from '../utilities/developer-platform-client.js' -import {outputInfo, outputResult} from '@shopify/cli-kit/node/output' -import {AbortError} from '@shopify/cli-kit/node/error' +import {outputInfo, outputResult} from '@shopify/cli-kit/shared/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {describe, test, vi, expect, beforeEach} from 'vitest' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' vi.mock('./dev/fetch.js') vi.mock('./app-logs/logs-command/ui.js') vi.mock('./app-logs/logs-command/render-json-logs.js') vi.mock('./app-logs/utils.js') -vi.mock('@shopify/cli-kit/node/output') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/output') +vi.mock('@shopify/cli-kit/shared/node/ui') const app = testAppLinked() const remoteApp = testOrganizationApp() diff --git a/packages/app/src/cli/services/logs.ts b/packages/app/src/cli/services/logs.ts index 762f253805f..6db15058474 100644 --- a/packages/app/src/cli/services/logs.ts +++ b/packages/app/src/cli/services/logs.ts @@ -8,10 +8,10 @@ import {AppLinkedInterface} from '../models/app/app.js' import {getAppConfigurationFileName} from '../models/app/loader.js' import {DeveloperPlatformClient} from '../utilities/developer-platform-client.js' import {Organization, OrganizationApp, OrganizationStore} from '../models/organization.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputInfo, outputResult} from '@shopify/cli-kit/node/output' -import {renderInfo} from '@shopify/cli-kit/node/ui' -import {basename} from '@shopify/cli-kit/node/path' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputInfo, outputResult} from '@shopify/cli-kit/shared/node/output' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' +import {basename} from '@shopify/cli-kit/shared/node/path' export type Format = 'json' | 'text' diff --git a/packages/app/src/cli/services/marketing_activity/extension-to-toml.ts b/packages/app/src/cli/services/marketing_activity/extension-to-toml.ts index 40287ddd4fe..ff4b8048fb5 100644 --- a/packages/app/src/cli/services/marketing_activity/extension-to-toml.ts +++ b/packages/app/src/cli/services/marketing_activity/extension-to-toml.ts @@ -1,7 +1,7 @@ import {MAX_EXTENSION_HANDLE_LENGTH} from '../../models/extensions/schemas.js' import {ExtensionRegistration} from '../../api/graphql/all_app_extension_registrations.js' -import {encodeToml} from '@shopify/cli-kit/node/toml' -import {slugify} from '@shopify/cli-kit/common/string' +import {encodeToml} from '@shopify/cli-kit/shared/node/toml' +import {slugify} from '@shopify/cli-kit/shared/common/string' interface BaseField { id: string diff --git a/packages/app/src/cli/services/payments/extension-to-toml.ts b/packages/app/src/cli/services/payments/extension-to-toml.ts index ed5e8208a35..e353be50877 100644 --- a/packages/app/src/cli/services/payments/extension-to-toml.ts +++ b/packages/app/src/cli/services/payments/extension-to-toml.ts @@ -31,8 +31,8 @@ import { CARD_PRESENT_TARGET, } from '../../models/extensions/specifications/payments_app_extension_schemas/card_present_payments_app_extension_schema.js' import {MAX_EXTENSION_HANDLE_LENGTH} from '../../models/extensions/schemas.js' -import {encodeToml} from '@shopify/cli-kit/node/toml' -import {slugify} from '@shopify/cli-kit/common/string' +import {encodeToml} from '@shopify/cli-kit/shared/node/toml' +import {slugify} from '@shopify/cli-kit/shared/common/string' function typeToContext(type: string) { switch (type) { diff --git a/packages/app/src/cli/services/release.test.ts b/packages/app/src/cli/services/release.test.ts index 3f77c0c2dee..c7283e905b9 100644 --- a/packages/app/src/cli/services/release.test.ts +++ b/packages/app/src/cli/services/release.test.ts @@ -8,12 +8,12 @@ import {deployOrReleaseConfirmationPrompt} from '../prompts/deploy-release.js' import {AppLinkedInterface} from '../models/app/app.js' import {OrganizationApp} from '../models/organization.js' import {beforeEach, describe, expect, vi, test} from 'vitest' -import {renderError, renderSuccess, renderTasks, Task} from '@shopify/cli-kit/node/ui' -import {AbortSilentError} from '@shopify/cli-kit/node/error' +import {renderError, renderSuccess, renderTasks, Task} from '@shopify/cli-kit/shared/node/ui' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' vi.mock('./context.js') vi.mock('../models/app/identifiers.js') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../api/graphql/app_release.js') vi.mock('./context/breakdown-extensions.js') vi.mock('../prompts/deploy-release.js') diff --git a/packages/app/src/cli/services/release.ts b/packages/app/src/cli/services/release.ts index cd0e50d4578..a423e1c0013 100644 --- a/packages/app/src/cli/services/release.ts +++ b/packages/app/src/cli/services/release.ts @@ -7,8 +7,8 @@ import {AppReleaseSchema} from '../api/graphql/app_release.js' import {deployOrReleaseConfirmationPrompt} from '../prompts/deploy-release.js' import {OrganizationApp} from '../models/organization.js' import {DeveloperPlatformClient} from '../utilities/developer-platform-client.js' -import {renderError, renderSuccess, renderTasks, TokenItem} from '@shopify/cli-kit/node/ui' -import {AbortSilentError} from '@shopify/cli-kit/node/error' +import {renderError, renderSuccess, renderTasks, TokenItem} from '@shopify/cli-kit/shared/node/ui' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' interface ReleaseOptions { /** The app to be built and uploaded */ diff --git a/packages/app/src/cli/services/release/version-diff.test.ts b/packages/app/src/cli/services/release/version-diff.test.ts index 76608aa6354..fa94b40ae7b 100644 --- a/packages/app/src/cli/services/release/version-diff.test.ts +++ b/packages/app/src/cli/services/release/version-diff.test.ts @@ -3,8 +3,8 @@ import {testDeveloperPlatformClient, testOrganizationApp} from '../../models/app import {AppVersionWithContext} from '../../utilities/developer-platform-client.js' import {AppVersionsDiffSchema} from '../../api/graphql/app_versions_diff.js' import {describe, expect, test} from 'vitest' -import {AbortSilentError} from '@shopify/cli-kit/node/error' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' describe('versionDiffByVersion', () => { test('throws an abort silent error and display an error message when the version is not found', async () => { diff --git a/packages/app/src/cli/services/release/version-diff.ts b/packages/app/src/cli/services/release/version-diff.ts index 317da90ba64..5a5b98ce5f2 100644 --- a/packages/app/src/cli/services/release/version-diff.ts +++ b/packages/app/src/cli/services/release/version-diff.ts @@ -1,8 +1,8 @@ import {AppVersionsDiffSchema} from '../../api/graphql/app_versions_diff.js' import {AppVersionWithContext, DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {MinimalOrganizationApp} from '../../models/organization.js' -import {renderError} from '@shopify/cli-kit/node/ui' -import {AbortSilentError} from '@shopify/cli-kit/node/error' +import {renderError} from '@shopify/cli-kit/shared/node/ui' +import {AbortSilentError} from '@shopify/cli-kit/shared/node/error' export async function versionDiffByVersion( app: MinimalOrganizationApp, diff --git a/packages/app/src/cli/services/store-context.test.ts b/packages/app/src/cli/services/store-context.test.ts index e622f2dad67..362ef647d1b 100644 --- a/packages/app/src/cli/services/store-context.test.ts +++ b/packages/app/src/cli/services/store-context.test.ts @@ -12,9 +12,9 @@ import { import metadata from '../metadata.js' import {appHiddenConfigPath, AppLinkedInterface} from '../models/app/app.js' import {vi, describe, test, expect} from 'vitest' -import {hashString} from '@shopify/cli-kit/node/crypto' -import {inTemporaryDirectory, mkdir, readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {hashString} from '@shopify/cli-kit/shared/node/crypto' +import {inTemporaryDirectory, mkdir, readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' vi.mock('./dev/fetch') vi.mock('./dev/select-store') diff --git a/packages/app/src/cli/services/store-context.ts b/packages/app/src/cli/services/store-context.ts index a0df8b837eb..1f013b26b15 100644 --- a/packages/app/src/cli/services/store-context.ts +++ b/packages/app/src/cli/services/store-context.ts @@ -4,8 +4,8 @@ import {LoadedAppContextOutput} from './app-context.js' import {OrganizationStore} from '../models/organization.js' import {Store} from '../utilities/developer-platform-client.js' import metadata from '../metadata.js' -import {hashString} from '@shopify/cli-kit/node/crypto' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' +import {hashString} from '@shopify/cli-kit/shared/node/crypto' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' /** * Input options for the `storeContext` function. diff --git a/packages/app/src/cli/services/subscription_link/extension-to-toml.ts b/packages/app/src/cli/services/subscription_link/extension-to-toml.ts index 43b732400ba..f757a119f5a 100644 --- a/packages/app/src/cli/services/subscription_link/extension-to-toml.ts +++ b/packages/app/src/cli/services/subscription_link/extension-to-toml.ts @@ -1,7 +1,7 @@ import {MAX_EXTENSION_HANDLE_LENGTH} from '../../models/extensions/schemas.js' import {ExtensionRegistration} from '../../api/graphql/all_app_extension_registrations.js' -import {encodeToml} from '@shopify/cli-kit/node/toml' -import {slugify} from '@shopify/cli-kit/common/string' +import {encodeToml} from '@shopify/cli-kit/shared/node/toml' +import {slugify} from '@shopify/cli-kit/shared/common/string' export interface SubscriptionLinkDashboardConfig { pattern: string diff --git a/packages/app/src/cli/services/versions-list.test.ts b/packages/app/src/cli/services/versions-list.test.ts index c3d2440645f..b4bdea8f9d4 100644 --- a/packages/app/src/cli/services/versions-list.test.ts +++ b/packages/app/src/cli/services/versions-list.test.ts @@ -5,7 +5,7 @@ import {Organization, OrganizationSource} from '../models/organization.js' import {DeveloperPlatformClient} from '../utilities/developer-platform-client.js' import {AppVersionsQuerySchema} from '../api/graphql/get_versions_list.js' import {afterEach, describe, expect, test, vi} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' vi.mock('../models/app/identifiers.js') vi.mock('./context.js') diff --git a/packages/app/src/cli/services/versions-list.ts b/packages/app/src/cli/services/versions-list.ts index c14cd694cf3..56d4f5aa739 100644 --- a/packages/app/src/cli/services/versions-list.ts +++ b/packages/app/src/cli/services/versions-list.ts @@ -3,12 +3,12 @@ import {AppVersionsQuerySchema} from '../api/graphql/get_versions_list.js' import {AppLinkedInterface} from '../models/app/app.js' import {DeveloperPlatformClient} from '../utilities/developer-platform-client.js' import {Organization, OrganizationApp} from '../models/organization.js' -import colors from '@shopify/cli-kit/node/colors' -import {outputContent, outputInfo, outputResult, outputToken, unstyled} from '@shopify/cli-kit/node/output' -import {formatDate} from '@shopify/cli-kit/common/string' -import {AbortError} from '@shopify/cli-kit/node/error' -import {basename} from '@shopify/cli-kit/node/path' -import {renderTable} from '@shopify/cli-kit/node/ui' +import colors from '@shopify/cli-kit/shared/node/colors' +import {outputContent, outputInfo, outputResult, outputToken, unstyled} from '@shopify/cli-kit/shared/node/output' +import {formatDate} from '@shopify/cli-kit/shared/common/string' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {basename} from '@shopify/cli-kit/shared/node/path' +import {renderTable} from '@shopify/cli-kit/shared/node/ui' // eslint-disable-next-line @typescript-eslint/consistent-type-definitions type AppVersionLine = { diff --git a/packages/app/src/cli/services/web.ts b/packages/app/src/cli/services/web.ts index c4fe751b491..28b21cb0bde 100644 --- a/packages/app/src/cli/services/web.ts +++ b/packages/app/src/cli/services/web.ts @@ -1,6 +1,6 @@ import {Web, WebConfigurationCommands} from '../models/app/app.js' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {exec} from '@shopify/cli-kit/node/system' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {exec} from '@shopify/cli-kit/shared/node/system' import {Writable} from 'stream' interface WebOptions { diff --git a/packages/app/src/cli/services/webhook/send-app-uninstalled-webhook.test.ts b/packages/app/src/cli/services/webhook/send-app-uninstalled-webhook.test.ts index 025c8ac52dd..493e1e089ba 100644 --- a/packages/app/src/cli/services/webhook/send-app-uninstalled-webhook.test.ts +++ b/packages/app/src/cli/services/webhook/send-app-uninstalled-webhook.test.ts @@ -2,11 +2,11 @@ import {sendUninstallWebhookToAppServer} from './send-app-uninstalled-webhook.js import {triggerLocalWebhook} from './trigger-local-webhook.js' import {testDeveloperPlatformClient} from '../../models/app/app.test-data.js' import {describe, expect, vi, test} from 'vitest' -import {FetchError} from '@shopify/cli-kit/node/http' +import {FetchError} from '@shopify/cli-kit/shared/node/http' import {Writable} from 'stream' vi.mock('./trigger-local-webhook.js') -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system') const address = 'http://localhost:3000/test/path' const storeFqdn = 'test-store.myshopify.io' diff --git a/packages/app/src/cli/services/webhook/send-app-uninstalled-webhook.ts b/packages/app/src/cli/services/webhook/send-app-uninstalled-webhook.ts index a8581936c01..be3ad4ea6b5 100644 --- a/packages/app/src/cli/services/webhook/send-app-uninstalled-webhook.ts +++ b/packages/app/src/cli/services/webhook/send-app-uninstalled-webhook.ts @@ -3,8 +3,8 @@ import {getWebhookSample, SampleWebhook, SendSampleWebhookVariables} from './req import {triggerLocalWebhook} from './trigger-local-webhook.js' import {DELIVERY_METHOD} from './trigger-flags.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' -import {FetchError} from '@shopify/cli-kit/node/http' -import {sleep} from '@shopify/cli-kit/node/system' +import {FetchError} from '@shopify/cli-kit/shared/node/http' +import {sleep} from '@shopify/cli-kit/shared/node/system' import {Writable} from 'stream' interface SendUninstallWebhookToAppServerOptions { diff --git a/packages/app/src/cli/services/webhook/trigger-flags.test.ts b/packages/app/src/cli/services/webhook/trigger-flags.test.ts index 748b77cf72f..6a553dd2a94 100644 --- a/packages/app/src/cli/services/webhook/trigger-flags.test.ts +++ b/packages/app/src/cli/services/webhook/trigger-flags.test.ts @@ -4,7 +4,7 @@ import { isAddressAllowedForDeliveryMethod, validateAddressMethod, } from './trigger-flags.js' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {describe, expect, vi, test} from 'vitest' const eventbridgeAddress = 'arn:aws:events:us-east-1::event-source/aws.partner/shopify.com/3737297/source' diff --git a/packages/app/src/cli/services/webhook/trigger-flags.ts b/packages/app/src/cli/services/webhook/trigger-flags.ts index 0a2a6ad2338..16640144743 100644 --- a/packages/app/src/cli/services/webhook/trigger-flags.ts +++ b/packages/app/src/cli/services/webhook/trigger-flags.ts @@ -1,4 +1,4 @@ -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export const DELIVERY_METHOD = { LOCALHOST: 'localhost', diff --git a/packages/app/src/cli/services/webhook/trigger-local-webhook.test.ts b/packages/app/src/cli/services/webhook/trigger-local-webhook.test.ts index 1ed7b4f8e66..5ba4c1aa7c4 100644 --- a/packages/app/src/cli/services/webhook/trigger-local-webhook.test.ts +++ b/packages/app/src/cli/services/webhook/trigger-local-webhook.test.ts @@ -1,11 +1,11 @@ import {triggerLocalWebhook} from './trigger-local-webhook.js' import {describe, expect, vi, test} from 'vitest' -import * as http from '@shopify/cli-kit/node/http' +import * as http from '@shopify/cli-kit/shared/node/http' const samplePayload = '{ "sampleField": "SampleValue" }' const sampleHeaders = '{ "header": "Header Value" }' -vi.mock('@shopify/cli-kit/node/http') +vi.mock('@shopify/cli-kit/shared/node/http') describe('triggerLocalWebhook', () => { test('delivers to localhost port', async () => { diff --git a/packages/app/src/cli/services/webhook/trigger-local-webhook.ts b/packages/app/src/cli/services/webhook/trigger-local-webhook.ts index b34d529d5b3..8019aac3024 100644 --- a/packages/app/src/cli/services/webhook/trigger-local-webhook.ts +++ b/packages/app/src/cli/services/webhook/trigger-local-webhook.ts @@ -1,4 +1,4 @@ -import {fetch} from '@shopify/cli-kit/node/http' +import {fetch} from '@shopify/cli-kit/shared/node/http' /** * Sends a POST request to a local endpoint with a webhook payload diff --git a/packages/app/src/cli/services/webhook/trigger-options.test.ts b/packages/app/src/cli/services/webhook/trigger-options.test.ts index ab8a5afb562..168f82b84b5 100644 --- a/packages/app/src/cli/services/webhook/trigger-options.test.ts +++ b/packages/app/src/cli/services/webhook/trigger-options.test.ts @@ -5,8 +5,8 @@ import {WebhookTriggerInput} from './trigger.js' import {addressPrompt, apiVersionPrompt, deliveryMethodPrompt, topicPrompt} from '../../prompts/webhook/trigger.js' import {testAppLinked, testDeveloperPlatformClient, testOrganizationApp} from '../../models/app/app.test-data.js' import {describe, expect, vi, test, afterEach} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' vi.mock('../../prompts/webhook/trigger.js') vi.mock('./request-api-versions.js') diff --git a/packages/app/src/cli/services/webhook/trigger-options.ts b/packages/app/src/cli/services/webhook/trigger-options.ts index 26ca2da3838..ca6e5d93a91 100644 --- a/packages/app/src/cli/services/webhook/trigger-options.ts +++ b/packages/app/src/cli/services/webhook/trigger-options.ts @@ -11,7 +11,7 @@ import {WebhookTriggerInput} from './trigger.js' import {addressPrompt, apiVersionPrompt, deliveryMethodPrompt, topicPrompt} from '../../prompts/webhook/trigger.js' import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {renderCurrentlyUsedConfigInfo} from '../context.js' -import {basename} from '@shopify/cli-kit/node/path' +import {basename} from '@shopify/cli-kit/shared/node/path' interface AppCredentials { clientSecret: string diff --git a/packages/app/src/cli/services/webhook/trigger.test.ts b/packages/app/src/cli/services/webhook/trigger.test.ts index 24e82289b47..50ac23cf14e 100644 --- a/packages/app/src/cli/services/webhook/trigger.test.ts +++ b/packages/app/src/cli/services/webhook/trigger.test.ts @@ -10,7 +10,7 @@ import { testOrganizationApp, } from '../../models/app/app.test-data.js' import {loadApp} from '../../models/app/loader.js' -import {outputSuccess, outputWarn} from '@shopify/cli-kit/node/output' +import {outputSuccess, outputWarn} from '@shopify/cli-kit/shared/node/output' import {describe, expect, vi, test, beforeEach} from 'vitest' const samplePayload = '{ "sampleField": "SampleValue" }' @@ -26,8 +26,8 @@ const anEventBridgeAddress = 'arn:aws:events:us-east-3::event-source/aws.partner const anOrganizationId = 'anOrganizationId' vi.mock('@shopify/cli-kit') -vi.mock('@shopify/cli-kit/node/output') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/output') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../../prompts/webhook/options-prompt.js') vi.mock('./request-sample.js') vi.mock('./request-api-versions.js') diff --git a/packages/app/src/cli/services/webhook/trigger.ts b/packages/app/src/cli/services/webhook/trigger.ts index 45677cef1ae..da884ac7601 100644 --- a/packages/app/src/cli/services/webhook/trigger.ts +++ b/packages/app/src/cli/services/webhook/trigger.ts @@ -5,7 +5,7 @@ import {collectAddressAndMethod, collectApiVersion, collectCredentials, collectT import {DeveloperPlatformClient} from '../../utilities/developer-platform-client.js' import {AppLinkedInterface} from '../../models/app/app.js' import {OrganizationApp} from '../../models/organization.js' -import {outputWarn, outputSuccess} from '@shopify/cli-kit/node/output' +import {outputWarn, outputSuccess} from '@shopify/cli-kit/shared/node/output' export interface WebhookTriggerInput { app: AppLinkedInterface diff --git a/packages/app/src/cli/utilities/analytics.test.ts b/packages/app/src/cli/utilities/analytics.test.ts index d74e5448850..5a90272cb57 100644 --- a/packages/app/src/cli/utilities/analytics.test.ts +++ b/packages/app/src/cli/utilities/analytics.test.ts @@ -1,8 +1,8 @@ import {getAnalyticsTunnelType} from './analytics.js' import {test, expect, describe, vi} from 'vitest' -import {getListOfTunnelPlugins} from '@shopify/cli-kit/node/plugins' +import {getListOfTunnelPlugins} from '@shopify/cli-kit/shared/node/plugins' -vi.mock('@shopify/cli-kit/node/plugins') +vi.mock('@shopify/cli-kit/shared/node/plugins') describe('getAnalyticsTunnelType', () => { test('return a provider in case tunnelUrl contains its name', async () => { diff --git a/packages/app/src/cli/utilities/analytics.ts b/packages/app/src/cli/utilities/analytics.ts index d4bfa5fb257..2f3781d2245 100644 --- a/packages/app/src/cli/utilities/analytics.ts +++ b/packages/app/src/cli/utilities/analytics.ts @@ -1,5 +1,5 @@ import {Config} from '@oclif/core' -import {getListOfTunnelPlugins} from '@shopify/cli-kit/node/plugins' +import {getListOfTunnelPlugins} from '@shopify/cli-kit/shared/node/plugins' /** * Return the name of the tunnel provider used to send analytics. Returns 'localhost' or provider name if any of those diff --git a/packages/app/src/cli/utilities/app-command.ts b/packages/app/src/cli/utilities/app-command.ts index ddf87484447..7b68687a6d7 100644 --- a/packages/app/src/cli/utilities/app-command.ts +++ b/packages/app/src/cli/utilities/app-command.ts @@ -1,6 +1,6 @@ import {configurationFileNames} from '../constants.js' import {AppInterface} from '../models/app/app.js' -import BaseCommand from '@shopify/cli-kit/node/base-command' +import BaseCommand from '@shopify/cli-kit/shared/node/base-command' interface AppCommandOutput { app: AppInterface diff --git a/packages/app/src/cli/utilities/app-conf-store.test.ts b/packages/app/src/cli/utilities/app-conf-store.test.ts index 53d5c7f0a00..e1b854939f1 100644 --- a/packages/app/src/cli/utilities/app-conf-store.test.ts +++ b/packages/app/src/cli/utilities/app-conf-store.test.ts @@ -4,10 +4,10 @@ import { setCachedAccountInfo, clearCachedAccountInfo, } from './app-conf-store.js' -import {AccountInfo} from '@shopify/cli-kit/node/session' +import {AccountInfo} from '@shopify/cli-kit/identity/session' import {vi, describe, test, expect, beforeEach, afterEach} from 'vitest' -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' -import {inTemporaryDirectory} from '@shopify/cli-kit/node/fs' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' +import {inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' describe('app-conf-store', () => { beforeEach(async () => { diff --git a/packages/app/src/cli/utilities/app-conf-store.ts b/packages/app/src/cli/utilities/app-conf-store.ts index c753c54d27a..d419192e349 100644 --- a/packages/app/src/cli/utilities/app-conf-store.ts +++ b/packages/app/src/cli/utilities/app-conf-store.ts @@ -1,5 +1,5 @@ -import {AccountInfo} from '@shopify/cli-kit/node/session' -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' +import {AccountInfo} from '@shopify/cli-kit/identity/session' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' // max age is 72 hours (3 days) const MAX_AGE_FOR_ACCOUNT_INFO_STATUS_MS = 3 * 24 * 60 * 60 * 1000 diff --git a/packages/app/src/cli/utilities/app/app-url.ts b/packages/app/src/cli/utilities/app/app-url.ts index 79afa5cd860..7b139c03232 100644 --- a/packages/app/src/cli/utilities/app/app-url.ts +++ b/packages/app/src/cli/utilities/app/app-url.ts @@ -1,4 +1,4 @@ -import {normalizeStoreFqdn, storeAdminUrl} from '@shopify/cli-kit/node/context/fqdn' +import {normalizeStoreFqdn, storeAdminUrl} from '@shopify/cli-kit/shared/node/context/fqdn' export function buildAppURLForWeb(storeFqdn: string, apiKey: string) { const normalizedFQDN = normalizeStoreFqdn(storeFqdn) diff --git a/packages/app/src/cli/utilities/app/config/getTomls.ts b/packages/app/src/cli/utilities/app/config/getTomls.ts index 8d39a0ef3b6..ea9242bdc5e 100644 --- a/packages/app/src/cli/utilities/app/config/getTomls.ts +++ b/packages/app/src/cli/utilities/app/config/getTomls.ts @@ -3,8 +3,8 @@ import { isValidFormatAppConfigurationFileName, loadConfigurationFileContent, } from '../../../models/app/loader.js' -import {isDirectory} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {isDirectory} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import {readdirSync} from 'fs' export async function getTomls(appDirectory?: string): Promise<{[clientId: string]: AppConfigurationFileName}> { diff --git a/packages/app/src/cli/utilities/app/config/hidden-app-config.test.ts b/packages/app/src/cli/utilities/app/config/hidden-app-config.test.ts index b3dcae380d8..3b5b75db262 100644 --- a/packages/app/src/cli/utilities/app/config/hidden-app-config.test.ts +++ b/packages/app/src/cli/utilities/app/config/hidden-app-config.test.ts @@ -1,8 +1,8 @@ import {getOrCreateAppConfigHiddenPath} from './hidden-app-config.js' -import {joinPath} from '@shopify/cli-kit/node/path' -import * as fs from '@shopify/cli-kit/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import * as fs from '@shopify/cli-kit/shared/node/fs' import {describe, expect, test, vi} from 'vitest' -import {getOrCreateHiddenShopifyFolder} from '@shopify/cli-kit/node/hidden-folder' +import {getOrCreateHiddenShopifyFolder} from '@shopify/cli-kit/shared/node/hidden-folder' describe('getOrCreateAppConfigHiddenPath', () => { test("creates hidden config file with empty JSON object if it doesn't exist", async () => { diff --git a/packages/app/src/cli/utilities/app/config/hidden-app-config.ts b/packages/app/src/cli/utilities/app/config/hidden-app-config.ts index cc10ffd963f..a3b6741a1b8 100644 --- a/packages/app/src/cli/utilities/app/config/hidden-app-config.ts +++ b/packages/app/src/cli/utilities/app/config/hidden-app-config.ts @@ -1,6 +1,6 @@ -import {writeFile, fileExists} from '@shopify/cli-kit/node/fs' -import {getOrCreateHiddenShopifyFolder} from '@shopify/cli-kit/node/hidden-folder' -import {joinPath} from '@shopify/cli-kit/node/path' +import {writeFile, fileExists} from '@shopify/cli-kit/shared/node/fs' +import {getOrCreateHiddenShopifyFolder} from '@shopify/cli-kit/shared/node/hidden-folder' +import {joinPath} from '@shopify/cli-kit/shared/node/path' const HIDDEN_CONFIG_PATH = 'project.json' /** diff --git a/packages/app/src/cli/utilities/app/http-reverse-proxy.test.ts b/packages/app/src/cli/utilities/app/http-reverse-proxy.test.ts index 1dea9fe44c0..32f4117dc61 100644 --- a/packages/app/src/cli/utilities/app/http-reverse-proxy.test.ts +++ b/packages/app/src/cli/utilities/app/http-reverse-proxy.test.ts @@ -1,6 +1,6 @@ import {getProxyingWebServer} from './http-reverse-proxy.js' -import {AbortController} from '@shopify/cli-kit/node/abort' -import {getAvailableTCPPort} from '@shopify/cli-kit/node/tcp' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' +import {getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' import {describe, test, expect} from 'vitest' import fetch from 'node-fetch' import WebSocket, {WebSocketServer} from 'ws' diff --git a/packages/app/src/cli/utilities/app/http-reverse-proxy.ts b/packages/app/src/cli/utilities/app/http-reverse-proxy.ts index 9304bab8e84..af6a7d1b2bd 100644 --- a/packages/app/src/cli/utilities/app/http-reverse-proxy.ts +++ b/packages/app/src/cli/utilities/app/http-reverse-proxy.ts @@ -1,6 +1,6 @@ -import {AbortController} from '@shopify/cli-kit/node/abort' -import {outputDebug, outputContent, outputToken, outputWarn} from '@shopify/cli-kit/node/output' -import {useConcurrentOutputContext} from '@shopify/cli-kit/node/ui/components' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' +import {outputDebug, outputContent, outputToken, outputWarn} from '@shopify/cli-kit/shared/node/output' +import {useConcurrentOutputContext} from '@shopify/cli-kit/shared/node/ui/components' import * as http from 'http' import * as https from 'https' import {Writable} from 'stream' diff --git a/packages/app/src/cli/utilities/developer-platform-client.ts b/packages/app/src/cli/utilities/developer-platform-client.ts index 8b27e3b501a..5864a43ab97 100644 --- a/packages/app/src/cli/utilities/developer-platform-client.ts +++ b/packages/app/src/cli/utilities/developer-platform-client.ts @@ -57,12 +57,12 @@ import { AppLogsSubscribeMutationVariables, } from '../api/graphql/app-management/generated/app-logs-subscribe.js' import {Store} from '../api/graphql/business-platform-organizations/generated/types.js' -import {Session} from '@shopify/cli-kit/node/session' -import {TokenItem} from '@shopify/cli-kit/node/ui' -import {blockPartnersAccess} from '@shopify/cli-kit/node/environment' -import {UnauthorizedHandler} from '@shopify/cli-kit/node/api/graphql' -import {JsonMapType} from '@shopify/cli-kit/node/toml' -import {firstPartyDev} from '@shopify/cli-kit/node/context/local' +import {Session} from '@shopify/cli-kit/identity/session' +import {TokenItem} from '@shopify/cli-kit/shared/node/ui' +import {blockPartnersAccess} from '@shopify/cli-kit/shared/node/environment' +import {UnauthorizedHandler} from '@shopify/cli-kit/shared/node/api/graphql' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' +import {firstPartyDev} from '@shopify/cli-kit/shared/node/context/local' export type {Store} from '../api/graphql/business-platform-organizations/generated/types.js' diff --git a/packages/app/src/cli/utilities/developer-platform-client/app-management-client.test.ts b/packages/app/src/cli/utilities/developer-platform-client/app-management-client.test.ts index aa70c7eece5..deda0bfd9a8 100644 --- a/packages/app/src/cli/utilities/developer-platform-client/app-management-client.test.ts +++ b/packages/app/src/cli/utilities/developer-platform-client/app-management-client.test.ts @@ -33,22 +33,22 @@ import {CreateAssetUrl} from '../../api/graphql/app-management/generated/create- import {SourceExtension} from '../../api/graphql/app-management/generated/types.js' import {ListOrganizations} from '../../api/graphql/business-platform-destinations/generated/organizations.js' import {describe, expect, test, vi, beforeEach} from 'vitest' -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' -import {fetch} from '@shopify/cli-kit/node/http' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' +import {fetch} from '@shopify/cli-kit/shared/node/http' import { businessPlatformOrganizationsRequest, businessPlatformOrganizationsRequestDoc, businessPlatformRequestDoc, -} from '@shopify/cli-kit/node/api/business-platform' -import {appManagementRequestDoc} from '@shopify/cli-kit/node/api/app-management' -import {BugError} from '@shopify/cli-kit/node/error' -import {randomUUID} from '@shopify/cli-kit/node/crypto' -import {webhooksRequestDoc} from '@shopify/cli-kit/node/api/webhooks' - -vi.mock('@shopify/cli-kit/node/http') -vi.mock('@shopify/cli-kit/node/api/business-platform') -vi.mock('@shopify/cli-kit/node/api/app-management') -vi.mock('@shopify/cli-kit/node/api/webhooks') +} from '@shopify/cli-kit/business-platform/api' +import {appManagementRequestDoc} from '@shopify/cli-kit/app-management/api' +import {BugError} from '@shopify/cli-kit/shared/node/error' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' +import {webhooksRequestDoc} from '@shopify/cli-kit/webhooks/api' + +vi.mock('@shopify/cli-kit/shared/node/http') +vi.mock('@shopify/cli-kit/business-platform/api') +vi.mock('@shopify/cli-kit/app-management/api') +vi.mock('@shopify/cli-kit/webhooks/api') beforeEach(() => { // Reset the singleton instance before each test diff --git a/packages/app/src/cli/utilities/developer-platform-client/app-management-client.ts b/packages/app/src/cli/utilities/developer-platform-client/app-management-client.ts index 410c61f9028..2d43d5d8aa0 100644 --- a/packages/app/src/cli/utilities/developer-platform-client/app-management-client.ts +++ b/packages/app/src/cli/utilities/developer-platform-client/app-management-client.ts @@ -142,37 +142,37 @@ import { AppLogsSubscribeMutationVariables, } from '../../api/graphql/app-management/generated/app-logs-subscribe.js' import {SourceExtension} from '../../api/graphql/app-management/generated/types.js' -import {getPartnersToken} from '@shopify/cli-kit/node/environment' -import {ensureAuthenticatedAppManagementAndBusinessPlatform, Session} from '@shopify/cli-kit/node/session' -import {isUnitTest} from '@shopify/cli-kit/node/context/local' -import {AbortError, BugError} from '@shopify/cli-kit/node/error' -import {fetch, shopifyFetch, Response} from '@shopify/cli-kit/node/http' +import {getPartnersToken} from '@shopify/cli-kit/shared/node/environment' +import {ensureAuthenticatedAppManagementAndBusinessPlatform, Session} from '@shopify/cli-kit/identity/session' +import {isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {AbortError, BugError} from '@shopify/cli-kit/shared/node/error' +import {fetch, shopifyFetch, Response} from '@shopify/cli-kit/shared/node/http' import { appManagementRequestDoc, appManagementAppLogsUrl, appManagementHeaders, AppManagementRequestOptions, -} from '@shopify/cli-kit/node/api/app-management' -import {appDevRequestDoc, AppDevRequestOptions} from '@shopify/cli-kit/node/api/app-dev' +} from '@shopify/cli-kit/app-management/api' +import {appDevRequestDoc, AppDevRequestOptions} from '@shopify/cli-kit/app-dev/api' import { businessPlatformOrganizationsRequest, businessPlatformOrganizationsRequestDoc, BusinessPlatformOrganizationsRequestOptions, businessPlatformRequestDoc, BusinessPlatformRequestOptions, -} from '@shopify/cli-kit/node/api/business-platform' -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' -import {versionSatisfies} from '@shopify/cli-kit/node/node-package-manager' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {developerDashboardFqdn, normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' -import {TokenItem} from '@shopify/cli-kit/node/ui' -import {functionsRequestDoc, FunctionsRequestOptions} from '@shopify/cli-kit/node/api/functions' -import {fileExists, readFile} from '@shopify/cli-kit/node/fs' -import {JsonMapType} from '@shopify/cli-kit/node/toml' -import {isPreReleaseVersion} from '@shopify/cli-kit/node/version' -import {UnauthorizedHandler} from '@shopify/cli-kit/node/api/graphql' +} from '@shopify/cli-kit/business-platform/api' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' +import {versionSatisfies} from '@shopify/cli-kit/shared/node/node-package-manager' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {developerDashboardFqdn, normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' +import {TokenItem} from '@shopify/cli-kit/shared/node/ui' +import {functionsRequestDoc, FunctionsRequestOptions} from '@shopify/cli-kit/functions/api' +import {fileExists, readFile} from '@shopify/cli-kit/shared/node/fs' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' +import {isPreReleaseVersion} from '@shopify/cli-kit/shared/node/version' +import {UnauthorizedHandler} from '@shopify/cli-kit/shared/node/api/graphql' import {Variables} from 'graphql-request' -import {webhooksRequestDoc, WebhooksRequestOptions} from '@shopify/cli-kit/node/api/webhooks' +import {webhooksRequestDoc, WebhooksRequestOptions} from '@shopify/cli-kit/webhooks/api' const TEMPLATE_JSON_URL = 'https://cdn.shopify.com/static/cli/extensions/templates.json' diff --git a/packages/app/src/cli/utilities/developer-platform-client/partners-client.test.ts b/packages/app/src/cli/utilities/developer-platform-client/partners-client.test.ts index b75607313a4..e3b5b0e6b58 100644 --- a/packages/app/src/cli/utilities/developer-platform-client/partners-client.test.ts +++ b/packages/app/src/cli/utilities/developer-platform-client/partners-client.test.ts @@ -10,11 +10,11 @@ import { } from '../../models/app/app.test-data.js' import {appNamePrompt} from '../../prompts/dev.js' import {FindOrganizationQuery} from '../../api/graphql/find_org.js' -import {partnersRequest} from '@shopify/cli-kit/node/api/partners' +import {partnersRequest} from '@shopify/cli-kit/partners/api' import {describe, expect, vi, test, beforeEach} from 'vitest' vi.mock('../../prompts/dev.js') -vi.mock('@shopify/cli-kit/node/api/partners') +vi.mock('@shopify/cli-kit/partners/api') beforeEach(() => { // Reset the singleton instance before each test diff --git a/packages/app/src/cli/utilities/developer-platform-client/partners-client.ts b/packages/app/src/cli/utilities/developer-platform-client/partners-client.ts index 7d61dcc1f1c..f5370bac03d 100644 --- a/packages/app/src/cli/utilities/developer-platform-client/partners-client.ts +++ b/packages/app/src/cli/utilities/developer-platform-client/partners-client.ts @@ -156,15 +156,15 @@ import {AppLogData} from '../../services/app-logs/types.js' import {AppLogsOptions} from '../../services/app-logs/utils.js' import {AppLogsSubscribeMutationVariables} from '../../api/graphql/app-management/generated/app-logs-subscribe.js' import {TypedDocumentNode} from '@graphql-typed-document-node/core' -import {isUnitTest} from '@shopify/cli-kit/node/context/local' -import {AbortError} from '@shopify/cli-kit/node/error' -import {generateFetchAppLogUrl, partnersRequest, partnersRequestDoc} from '@shopify/cli-kit/node/api/partners' -import {CacheOptions, GraphQLVariables, UnauthorizedHandler} from '@shopify/cli-kit/node/api/graphql' -import {ensureAuthenticatedPartners, Session} from '@shopify/cli-kit/node/session' -import {partnersFqdn} from '@shopify/cli-kit/node/context/fqdn' -import {TokenItem} from '@shopify/cli-kit/node/ui' -import {RequestModeInput, Response, shopifyFetch} from '@shopify/cli-kit/node/http' -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' +import {isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {generateFetchAppLogUrl, partnersRequest, partnersRequestDoc} from '@shopify/cli-kit/partners/api' +import {CacheOptions, GraphQLVariables, UnauthorizedHandler} from '@shopify/cli-kit/shared/node/api/graphql' +import {ensureAuthenticatedPartners, Session} from '@shopify/cli-kit/identity/session' +import {partnersFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' +import {TokenItem} from '@shopify/cli-kit/shared/node/ui' +import {RequestModeInput, Response, shopifyFetch} from '@shopify/cli-kit/shared/node/http' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' // this is a temporary solution for editions to support https://vault.shopify.io/gsd/projects/31406 // read more here: https://vault.shopify.io/gsd/projects/31406 diff --git a/packages/app/src/cli/utilities/execute-command-helpers.test.ts b/packages/app/src/cli/utilities/execute-command-helpers.test.ts index 5d31edc2378..265f59d2994 100644 --- a/packages/app/src/cli/utilities/execute-command-helpers.test.ts +++ b/packages/app/src/cli/utilities/execute-command-helpers.test.ts @@ -2,13 +2,13 @@ import {prepareAppStoreContext, prepareExecuteContext} from './execute-command-h import {linkedAppContext} from '../services/app-context.js' import {storeContext} from '../services/store-context.js' import {validateSingleOperation} from '../services/graphql/common.js' -import {readFile, fileExists} from '@shopify/cli-kit/node/fs' +import {readFile, fileExists} from '@shopify/cli-kit/shared/node/fs' import {describe, test, expect, vi, beforeEach} from 'vitest' vi.mock('../services/app-context.js') vi.mock('../services/store-context.js') -vi.mock('@shopify/cli-kit/node/fs') -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/fs') +vi.mock('@shopify/cli-kit/shared/node/system') vi.mock('../services/graphql/common.js', () => ({ validateSingleOperation: vi.fn(), })) diff --git a/packages/app/src/cli/utilities/execute-command-helpers.ts b/packages/app/src/cli/utilities/execute-command-helpers.ts index a4602022b60..72c29b0e891 100644 --- a/packages/app/src/cli/utilities/execute-command-helpers.ts +++ b/packages/app/src/cli/utilities/execute-command-helpers.ts @@ -2,9 +2,9 @@ import {linkedAppContext, LoadedAppContextOutput} from '../services/app-context. import {storeContext} from '../services/store-context.js' import {validateSingleOperation} from '../services/graphql/common.js' import {OrganizationStore} from '../models/organization.js' -import {AbortError, BugError} from '@shopify/cli-kit/node/error' -import {readFile, fileExists} from '@shopify/cli-kit/node/fs' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {AbortError, BugError} from '@shopify/cli-kit/shared/node/error' +import {readFile, fileExists} from '@shopify/cli-kit/shared/node/fs' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' interface AppStoreContextFlags { path: string diff --git a/packages/app/src/cli/utilities/extensions/fetch-product-variant.ts b/packages/app/src/cli/utilities/extensions/fetch-product-variant.ts index 74d206e78f1..d1c836fa22d 100644 --- a/packages/app/src/cli/utilities/extensions/fetch-product-variant.ts +++ b/packages/app/src/cli/utilities/extensions/fetch-product-variant.ts @@ -1,9 +1,9 @@ import {FindProductVariantQuery, FindProductVariantSchema} from '../../api/graphql/get_variant_id.js' -import {adminRequest} from '@shopify/cli-kit/node/api/admin' -import {ensureAuthenticatedAdmin} from '@shopify/cli-kit/node/session' -import {AbortError} from '@shopify/cli-kit/node/error' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {adminRequest} from '@shopify/cli-kit/admin/api' +import {ensureAuthenticatedAdmin} from '@shopify/cli-kit/identity/session' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' /** * Retrieve the first variant of the first product of the given store diff --git a/packages/app/src/cli/utilities/extensions/locales-configuration.test.ts b/packages/app/src/cli/utilities/extensions/locales-configuration.test.ts index 3966264ec5c..a7963b02306 100644 --- a/packages/app/src/cli/utilities/extensions/locales-configuration.test.ts +++ b/packages/app/src/cli/utilities/extensions/locales-configuration.test.ts @@ -1,7 +1,7 @@ import {loadLocalesConfig} from './locales-configuration.js' import {describe, expect, test} from 'vitest' -import {inTemporaryDirectory, mkdir, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, mkdir, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' describe('loadLocalesConfig', () => { test('Works if all locales are correct', async () => { diff --git a/packages/app/src/cli/utilities/extensions/locales-configuration.ts b/packages/app/src/cli/utilities/extensions/locales-configuration.ts index 715fec0d1ad..4b67fa498af 100644 --- a/packages/app/src/cli/utilities/extensions/locales-configuration.ts +++ b/packages/app/src/cli/utilities/extensions/locales-configuration.ts @@ -1,6 +1,6 @@ -import {joinPath, basename} from '@shopify/cli-kit/node/path' -import {glob} from '@shopify/cli-kit/node/fs' -import {AbortError, BugError} from '@shopify/cli-kit/node/error' +import {joinPath, basename} from '@shopify/cli-kit/shared/node/path' +import {glob} from '@shopify/cli-kit/shared/node/fs' +import {AbortError, BugError} from '@shopify/cli-kit/shared/node/error' import fs from 'fs' export async function loadLocalesConfig(extensionPath: string, extensionIdentifier: string) { diff --git a/packages/app/src/cli/utilities/extensions/theme.test.ts b/packages/app/src/cli/utilities/extensions/theme.test.ts index f83969b3f8f..2ea3da2ad68 100644 --- a/packages/app/src/cli/utilities/extensions/theme.test.ts +++ b/packages/app/src/cli/utilities/extensions/theme.test.ts @@ -1,8 +1,8 @@ import {themeExtensionFiles, parseIgnoreFile} from './theme.js' import {ExtensionInstance} from '../../models/extensions/extension-instance.js' import {loadLocalExtensionsSpecifications} from '../../models/extensions/load-specifications.js' -import {inTemporaryDirectory, writeFile, mkdir} from '@shopify/cli-kit/node/fs' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, writeFile, mkdir} from '@shopify/cli-kit/shared/node/fs' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' import {describe, expect, test} from 'vitest' describe('themeExtensionConfig', () => { diff --git a/packages/app/src/cli/utilities/extensions/theme.ts b/packages/app/src/cli/utilities/extensions/theme.ts index 82a17df9f4d..5eb9b35ee05 100644 --- a/packages/app/src/cli/utilities/extensions/theme.ts +++ b/packages/app/src/cli/utilities/extensions/theme.ts @@ -1,6 +1,6 @@ import {ExtensionInstance} from '../../models/extensions/extension-instance.js' -import {glob, createFileReadStream, fileExistsSync} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {glob, createFileReadStream, fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import {createInterface} from 'readline' const ignoredFilePatterns = [ diff --git a/packages/app/src/cli/utilities/extensions/theme/host-theme-manager.test.ts b/packages/app/src/cli/utilities/extensions/theme/host-theme-manager.test.ts index 2524a1db019..1c85871a9ea 100644 --- a/packages/app/src/cli/utilities/extensions/theme/host-theme-manager.test.ts +++ b/packages/app/src/cli/utilities/extensions/theme/host-theme-manager.test.ts @@ -1,12 +1,12 @@ import {waitForThemeToBeProcessed} from './host-theme-watcher.js' import {HostThemeManager, DEFAULT_THEME_ZIP, FALLBACK_THEME_ZIP} from './host-theme-manager.js' -import {themeCreate} from '@shopify/cli-kit/node/themes/api' +import {themeCreate} from '@shopify/cli-kit/themes/api' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {ThemeManager} from '@shopify/cli-kit/node/themes/theme-manager' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {ThemeManager} from '@shopify/cli-kit/themes/theme-manager' -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('./host-theme-watcher.js') describe('HostThemeManager', () => { diff --git a/packages/app/src/cli/utilities/extensions/theme/host-theme-manager.ts b/packages/app/src/cli/utilities/extensions/theme/host-theme-manager.ts index 2122e2951fb..cf9c2af0541 100644 --- a/packages/app/src/cli/utilities/extensions/theme/host-theme-manager.ts +++ b/packages/app/src/cli/utilities/extensions/theme/host-theme-manager.ts @@ -1,12 +1,12 @@ import {waitForThemeToBeProcessed} from './host-theme-watcher.js' -import {getHostTheme, removeHostTheme, setHostTheme} from '@shopify/cli-kit/node/themes/conf' -import {ThemeManager} from '@shopify/cli-kit/node/themes/theme-manager' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {themeCreate} from '@shopify/cli-kit/node/themes/api' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {BugError} from '@shopify/cli-kit/node/error' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {getHostTheme, removeHostTheme, setHostTheme} from '@shopify/cli-kit/themes/conf' +import {ThemeManager} from '@shopify/cli-kit/themes/theme-manager' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {Theme} from '@shopify/cli-kit/themes/types' +import {themeCreate} from '@shopify/cli-kit/themes/api' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {BugError} from '@shopify/cli-kit/shared/node/error' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' export const DEFAULT_THEME_ZIP = 'https://codeload.github.com/Shopify/dawn/zip/refs/tags/v15.0.0' export const FALLBACK_THEME_ZIP = 'https://cdn.shopify.com/theme-store/uhrdefhlndzaoyrgylhto59sx2i7.jpg' diff --git a/packages/app/src/cli/utilities/extensions/theme/host-theme-watcher.test.ts b/packages/app/src/cli/utilities/extensions/theme/host-theme-watcher.test.ts index 107784d2c0a..213902f4454 100644 --- a/packages/app/src/cli/utilities/extensions/theme/host-theme-watcher.test.ts +++ b/packages/app/src/cli/utilities/extensions/theme/host-theme-watcher.test.ts @@ -1,11 +1,11 @@ import {FAILED_TO_CREATE_THEME_MESSAGE, UPDATER_TIMEOUT, waitForThemeToBeProcessed} from './host-theme-watcher.js' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {sleep} from '@shopify/cli-kit/node/system' -import {fetchTheme} from '@shopify/cli-kit/node/themes/api' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {sleep} from '@shopify/cli-kit/shared/node/system' +import {fetchTheme} from '@shopify/cli-kit/themes/api' import {describe, expect, test, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/system') describe('HostThemeWatcher', () => { const themeId = 12345 diff --git a/packages/app/src/cli/utilities/extensions/theme/host-theme-watcher.ts b/packages/app/src/cli/utilities/extensions/theme/host-theme-watcher.ts index 54747b53701..c65360da1ab 100644 --- a/packages/app/src/cli/utilities/extensions/theme/host-theme-watcher.ts +++ b/packages/app/src/cli/utilities/extensions/theme/host-theme-watcher.ts @@ -1,8 +1,8 @@ -import {AbortError} from '@shopify/cli-kit/node/error' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {sleep} from '@shopify/cli-kit/node/system' -import {fetchTheme} from '@shopify/cli-kit/node/themes/api' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {sleep} from '@shopify/cli-kit/shared/node/system' +import {fetchTheme} from '@shopify/cli-kit/themes/api' +import {Theme} from '@shopify/cli-kit/themes/types' // 5 minutes export const UPDATER_TIMEOUT = 5 * 60 * 1000 diff --git a/packages/app/src/cli/utilities/json-schema.test.ts b/packages/app/src/cli/utilities/json-schema.test.ts index 32dace36518..d2aaf8f468b 100644 --- a/packages/app/src/cli/utilities/json-schema.test.ts +++ b/packages/app/src/cli/utilities/json-schema.test.ts @@ -1,6 +1,6 @@ import {unifiedConfigurationParserFactory} from './json-schema.js' import {describe, test, expect} from 'vitest' -import {randomUUID} from '@shopify/cli-kit/node/crypto' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' describe('unifiedConfigurationParserFactory', () => { const mockParseConfigurationObject = (config: any) => { diff --git a/packages/app/src/cli/utilities/json-schema.ts b/packages/app/src/cli/utilities/json-schema.ts index 55855eddd4a..8ddb801e363 100644 --- a/packages/app/src/cli/utilities/json-schema.ts +++ b/packages/app/src/cli/utilities/json-schema.ts @@ -1,14 +1,14 @@ import {FlattenedRemoteSpecification} from '../api/graphql/extension_specifications.js' import {BaseConfigType} from '../models/extensions/schemas.js' import {RemoteAwareExtensionSpecification} from '../models/extensions/specification.js' -import {ParseConfigurationResult} from '@shopify/cli-kit/node/schema' +import {ParseConfigurationResult} from '@shopify/cli-kit/shared/node/schema' import { HandleInvalidAdditionalProperties, jsonSchemaValidate, normaliseJsonSchema, -} from '@shopify/cli-kit/node/json-schema' -import {isEmpty} from '@shopify/cli-kit/common/object' -import {JsonMapType} from '@shopify/cli-kit/node/toml' +} from '@shopify/cli-kit/shared/node/json-schema' +import {isEmpty} from '@shopify/cli-kit/shared/common/object' +import {JsonMapType} from '@shopify/cli-kit/shared/node/toml' /** * The base properties that are added to all JSON Schema contracts. diff --git a/packages/app/src/cli/utilities/mkcert.test.ts b/packages/app/src/cli/utilities/mkcert.test.ts index 79ed64b2634..19f059c8fdc 100644 --- a/packages/app/src/cli/utilities/mkcert.test.ts +++ b/packages/app/src/cli/utilities/mkcert.test.ts @@ -1,25 +1,25 @@ import {generateCertificate} from './mkcert.js' import {generateCertificatePrompt} from '../prompts/dev.js' -import * as fs from '@shopify/cli-kit/node/fs' -import {mkdir, writeFile} from '@shopify/cli-kit/node/fs' +import * as fs from '@shopify/cli-kit/shared/node/fs' +import {mkdir, writeFile} from '@shopify/cli-kit/shared/node/fs' import {describe, vi, expect, beforeEach, afterEach, MockInstance} from 'vitest' -import {exec, isWsl} from '@shopify/cli-kit/node/system' -import {joinPath} from '@shopify/cli-kit/node/path' +import {exec, isWsl} from '@shopify/cli-kit/shared/node/system' +import {joinPath} from '@shopify/cli-kit/shared/node/path' import which from 'which' -import {downloadGitHubRelease} from '@shopify/cli-kit/node/github' -import {testWithTempDir} from '@shopify/cli-kit/node/testing/test-with-temp-dir' -import {AbortError} from '@shopify/cli-kit/node/error' -import {fetch, Response} from '@shopify/cli-kit/node/http' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' -import {keypress, renderWarning} from '@shopify/cli-kit/node/ui' - -vi.mock('@shopify/cli-kit/node/system') +import {downloadGitHubRelease} from '@shopify/cli-kit/shared/node/github' +import {testWithTempDir} from '@shopify/cli-kit/shared/node/testing/test-with-temp-dir' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {fetch, Response} from '@shopify/cli-kit/shared/node/http' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' +import {keypress, renderWarning} from '@shopify/cli-kit/shared/node/ui' + +vi.mock('@shopify/cli-kit/shared/node/system') vi.mock('which') -vi.mock('@shopify/cli-kit/node/github') +vi.mock('@shopify/cli-kit/shared/node/github') vi.mock('../prompts/dev.js') -vi.mock('@shopify/cli-kit/node/http') -vi.mock('@shopify/cli-kit/node/ui', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/http') +vi.mock('@shopify/cli-kit/shared/node/ui', async () => { + const actual = await vi.importActual('@shopify/cli-kit/shared/node/ui') return { ...actual, renderWarning: vi.fn(), diff --git a/packages/app/src/cli/utilities/mkcert.ts b/packages/app/src/cli/utilities/mkcert.ts index 8f18df3e6f1..cf813a790db 100644 --- a/packages/app/src/cli/utilities/mkcert.ts +++ b/packages/app/src/cli/utilities/mkcert.ts @@ -1,14 +1,14 @@ import {environmentVariableNames} from '../constants.js' import {generateCertificatePrompt} from '../prompts/dev.js' -import {exec, isWsl} from '@shopify/cli-kit/node/system' -import {downloadGitHubRelease} from '@shopify/cli-kit/node/github' -import {fetch, Response} from '@shopify/cli-kit/node/http' -import {joinPath, relativePath} from '@shopify/cli-kit/node/path' -import {fileExists, readFile, writeFile} from '@shopify/cli-kit/node/fs' -import {outputContent, outputDebug, outputInfo, outputToken} from '@shopify/cli-kit/node/output' -import {AbortError, BugError} from '@shopify/cli-kit/node/error' +import {exec, isWsl} from '@shopify/cli-kit/shared/node/system' +import {downloadGitHubRelease} from '@shopify/cli-kit/shared/node/github' +import {fetch, Response} from '@shopify/cli-kit/shared/node/http' +import {joinPath, relativePath} from '@shopify/cli-kit/shared/node/path' +import {fileExists, readFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {outputContent, outputDebug, outputInfo, outputToken} from '@shopify/cli-kit/shared/node/output' +import {AbortError, BugError} from '@shopify/cli-kit/shared/node/error' import which from 'which' -import {RenderAlertOptions, keypress, renderInfo, renderTasks, renderWarning} from '@shopify/cli-kit/node/ui' +import {RenderAlertOptions, keypress, renderInfo, renderTasks, renderWarning} from '@shopify/cli-kit/shared/node/ui' const MKCERT_VERSION = 'v1.4.4' const MKCERT_REPO = 'FiloSottile/mkcert' diff --git a/packages/app/src/cli/utilities/types.ts b/packages/app/src/cli/utilities/types.ts index 37fd9ac655f..98716d24909 100644 --- a/packages/app/src/cli/utilities/types.ts +++ b/packages/app/src/cli/utilities/types.ts @@ -1,4 +1,4 @@ -import {zod} from '@shopify/cli-kit/node/schema' +import {zod} from '@shopify/cli-kit/shared/node/schema' export function isType(schema: T, item: unknown): item is zod.infer { return schema.safeParse(item).success diff --git a/packages/app/src/cli/validations/message.ts b/packages/app/src/cli/validations/message.ts index 15d71a17546..3269cb1a6ca 100644 --- a/packages/app/src/cli/validations/message.ts +++ b/packages/app/src/cli/validations/message.ts @@ -1,4 +1,4 @@ -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export function validateMessage(message: string | undefined) { if (typeof message === 'undefined') return diff --git a/packages/app/src/cli/validations/version-name.ts b/packages/app/src/cli/validations/version-name.ts index 1b4f1fd7b77..56959c87a67 100644 --- a/packages/app/src/cli/validations/version-name.ts +++ b/packages/app/src/cli/validations/version-name.ts @@ -1,4 +1,4 @@ -import {AbortError} from '@shopify/cli-kit/node/error' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export function validateVersion(version: string | undefined) { if (typeof version === 'undefined') return diff --git a/packages/cli-kit/package.json b/packages/cli-kit/package.json index 9f89b666d79..e77a9ed93fb 100644 --- a/packages/cli-kit/package.json +++ b/packages/cli-kit/package.json @@ -24,19 +24,47 @@ "import": "./dist/index.js", "types": "./dist/index.d.ts" }, - "./*": { - "node": "./dist/public/*.js", - "types": "./dist/public/*.d.ts" + "./identity/*": { + "node": "./dist/identity/*.js", + "types": "./dist/identity/*.d.ts" }, - "./assets/*": "./assets/*", - "./testing/*": { - "node": "./dist/testing/*.js", - "types": "./dist/testing/*.d.ts" + "./admin/*": { + "node": "./dist/admin/*.js", + "types": "./dist/admin/*.d.ts" }, - "./typing/*": { - "node": "./dist/typing/*.js", - "types": "./dist/typing/*.d.ts" - } + "./partners/*": { + "node": "./dist/partners/*.js", + "types": "./dist/partners/*.d.ts" + }, + "./app-management/*": { + "node": "./dist/app-management/*.js", + "types": "./dist/app-management/*.d.ts" + }, + "./app-dev/*": { + "node": "./dist/app-dev/*.js", + "types": "./dist/app-dev/*.d.ts" + }, + "./business-platform/*": { + "node": "./dist/business-platform/*.js", + "types": "./dist/business-platform/*.d.ts" + }, + "./functions/*": { + "node": "./dist/functions/*.js", + "types": "./dist/functions/*.d.ts" + }, + "./themes/*": { + "node": "./dist/themes/*.js", + "types": "./dist/themes/*.d.ts" + }, + "./webhooks/*": { + "node": "./dist/webhooks/*.js", + "types": "./dist/webhooks/*.d.ts" + }, + "./shared/*": { + "node": "./dist/shared/*.js", + "types": "./dist/shared/*.d.ts" + }, + "./assets/*": "./assets/*" }, "module": "dist/index.js", "types": "dist/index.d.ts", @@ -61,13 +89,13 @@ "../../.eslintrc.cjs" ], "ignorePatterns": [ - "**/vendor/otel-js/**/*.ts", - "**/vendor/dev_server/**/*.ts" + "**/shared/vendor/otel-js/**/*.ts", + "**/shared/vendor/dev_server/**/*.ts" ], "overrides": [ { "files": [ - "**/node/cli.ts" + "**/shared/node/cli.ts" ], "rules": { "@shopify/cli/specific-imports-in-bootstrap-code": [ @@ -76,7 +104,6 @@ "dynamic": [ "./node-package-manager.js", "./error-handler.js", - "../../public/node/context/local.js", "./context/local.js", "./custom-oclif-loader.js", "@oclif/core", @@ -87,8 +114,8 @@ "static": [ "@oclif/core", "./context/utilities.js", - "../../private/node/conf-store.js", - "../../private/node/constants.js", + "./internal/conf-store.js", + "./internal/constants.js", "url", "./cli-launcher.js" ] diff --git a/packages/cli-kit/project.json b/packages/cli-kit/project.json index 7c9df400070..633559a95ce 100644 --- a/packages/cli-kit/project.json +++ b/packages/cli-kit/project.json @@ -92,11 +92,11 @@ } ], "outputs": [ - "{projectRoot}/src/cli/api/graphql/admin/generated/**/*.ts" + "{projectRoot}/src/admin/graphql/generated/**/*.ts" ], "options": { "commands": [ - "pnpm eslint 'src/cli/api/graphql/admin/generated/**/*.{ts,tsx}' --fix" + "pnpm eslint 'src/admin/graphql/generated/**/*.{ts,tsx}' --fix" ], "cwd": "packages/cli-kit" } @@ -105,10 +105,10 @@ "executor": "nx:run-commands", "inputs": [ "{workspaceRoot}/graphql.config.ts", - "{projectRoot}/src/cli/api/graphql/admin/**/*.graphql" + "{projectRoot}/src/admin/graphql/**/*.graphql" ], "outputs": [ - "{projectRoot}/src/cli/api/graphql/admin/generated/**/*.ts" + "{projectRoot}/src/admin/graphql/generated/**/*.ts" ], "options": { "commands": [ @@ -128,11 +128,11 @@ } ], "outputs": [ - "{projectRoot}/src/cli/api/graphql/admin/generated/**/*.ts" + "{projectRoot}/src/admin/graphql/generated/**/*.ts" ], "options": { "commands": [ - "find ./packages/cli-kit/src/cli/api/graphql/admin/generated/ -type f -name '*.ts' -exec sh -c 'sed -i \"\" \"s|import \\* as Types from '\\''./types'\\'';|import \\* as Types from '\\''./types.js'\\'';|g; s|export const \\([A-Za-z0-9_]*\\)Document =|export const \\1 =|g\" \"$0\"' {} \\;" + "find ./packages/cli-kit/src/admin/graphql/generated/ -type f -name '*.ts' -exec sh -c 'sed -i \"\" \"s|import \\* as Types from '\\''./types'\\'';|import \\* as Types from '\\''./types.js'\\'';|g; s|export const \\([A-Za-z0-9_]*\\)Document =|export const \\1 =|g\" \"$0\"' {} \\;" ], "cwd": "{workspaceRoot}" } diff --git a/packages/cli-kit/src/public/node/api/admin.test.ts b/packages/cli-kit/src/admin/api.test.ts similarity index 90% rename from packages/cli-kit/src/public/node/api/admin.test.ts rename to packages/cli-kit/src/admin/api.test.ts index f63268f6671..99866f3205a 100644 --- a/packages/cli-kit/src/public/node/api/admin.test.ts +++ b/packages/cli-kit/src/admin/api.test.ts @@ -1,14 +1,14 @@ -import * as admin from './admin.js' -import {graphqlRequest, graphqlRequestDoc} from './graphql.js' -import {AdminSession} from '../session.js' -import {buildHeaders} from '../../../private/node/api/headers.js' -import * as http from '../../../public/node/http.js' -import {defaultThemeKitAccessDomain} from '../../../private/node/constants.js' +import * as admin from './api.js' +import {graphqlRequest, graphqlRequestDoc} from '../shared/node/api/graphql.js' +import {AdminSession} from '../identity/session.js' +import {buildHeaders} from '../shared/node/internal/api/headers.js' +import * as http from '../shared/node/http.js' +import {defaultThemeKitAccessDomain} from '../shared/node/internal/constants.js' import {test, vi, expect, describe} from 'vitest' -vi.mock('./graphql.js') -vi.mock('../../../private/node/api/headers.js') -vi.mock('../http.js') +vi.mock('../shared/node/api/graphql.js') +vi.mock('../shared/node/internal/api/headers.js') +vi.mock('../shared/node/http.js') const mockedResult = { publicApiVersions: [ diff --git a/packages/cli-kit/src/public/node/api/admin.ts b/packages/cli-kit/src/admin/api.ts similarity index 92% rename from packages/cli-kit/src/public/node/api/admin.ts rename to packages/cli-kit/src/admin/api.ts index 107d91686fa..72a402c5613 100644 --- a/packages/cli-kit/src/public/node/api/admin.ts +++ b/packages/cli-kit/src/admin/api.ts @@ -1,26 +1,21 @@ +import {restRequestBody, restRequestHeaders, restRequestUrl, isThemeAccessSession} from './rest.js' +import {PublicApiVersions} from './graphql/generated/public_api_versions.js' import { graphqlRequest, graphqlRequestDoc, GraphQLResponseOptions, GraphQLVariables, UnauthorizedHandler, -} from './graphql.js' -import {AdminSession} from '../session.js' -import {outputContent, outputToken} from '../../../public/node/output.js' -import {AbortError, BugError} from '../error.js' -import { - restRequestBody, - restRequestHeaders, - restRequestUrl, - isThemeAccessSession, -} from '../../../private/node/api/rest.js' -import {isNetworkError} from '../../../private/node/api.js' -import {RequestModeInput, shopifyFetch} from '../http.js' -import {PublicApiVersions} from '../../../cli/api/graphql/admin/generated/public_api_versions.js' +} from '../shared/node/api/graphql.js' +import {AdminSession} from '../identity/session.js' +import {outputContent, outputToken} from '../shared/node/output.js' +import {AbortError, BugError} from '../shared/node/error.js' +import {isNetworkError} from '../shared/node/internal/api.js' +import {RequestModeInput, shopifyFetch} from '../shared/node/http.js' -import {themeKitAccessDomain} from '../../../private/node/constants.js' -import {serviceEnvironment} from '../../../private/node/context/service.js' -import {DevServerCore} from '../vendor/dev_server/index.js' +import {themeKitAccessDomain} from '../shared/node/internal/constants.js' +import {serviceEnvironment} from '../shared/node/internal/context/service.js' +import {DevServerCore} from '../shared/vendor/dev_server/index.js' import {ClientError, Variables} from 'graphql-request' import {TypedDocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/get_theme.ts b/packages/cli-kit/src/admin/graphql/generated/get_theme.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/get_theme.ts rename to packages/cli-kit/src/admin/graphql/generated/get_theme.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/get_theme_file_bodies.ts b/packages/cli-kit/src/admin/graphql/generated/get_theme_file_bodies.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/get_theme_file_bodies.ts rename to packages/cli-kit/src/admin/graphql/generated/get_theme_file_bodies.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/get_theme_file_checksums.ts b/packages/cli-kit/src/admin/graphql/generated/get_theme_file_checksums.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/get_theme_file_checksums.ts rename to packages/cli-kit/src/admin/graphql/generated/get_theme_file_checksums.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/get_themes.ts b/packages/cli-kit/src/admin/graphql/generated/get_themes.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/get_themes.ts rename to packages/cli-kit/src/admin/graphql/generated/get_themes.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/metafield_definitions_by_owner_type.ts b/packages/cli-kit/src/admin/graphql/generated/metafield_definitions_by_owner_type.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/metafield_definitions_by_owner_type.ts rename to packages/cli-kit/src/admin/graphql/generated/metafield_definitions_by_owner_type.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/online_store_password_protection.ts b/packages/cli-kit/src/admin/graphql/generated/online_store_password_protection.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/online_store_password_protection.ts rename to packages/cli-kit/src/admin/graphql/generated/online_store_password_protection.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/public_api_versions.ts b/packages/cli-kit/src/admin/graphql/generated/public_api_versions.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/public_api_versions.ts rename to packages/cli-kit/src/admin/graphql/generated/public_api_versions.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/theme_create.ts b/packages/cli-kit/src/admin/graphql/generated/theme_create.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/theme_create.ts rename to packages/cli-kit/src/admin/graphql/generated/theme_create.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/theme_delete.ts b/packages/cli-kit/src/admin/graphql/generated/theme_delete.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/theme_delete.ts rename to packages/cli-kit/src/admin/graphql/generated/theme_delete.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/theme_duplicate.ts b/packages/cli-kit/src/admin/graphql/generated/theme_duplicate.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/theme_duplicate.ts rename to packages/cli-kit/src/admin/graphql/generated/theme_duplicate.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/theme_files_delete.ts b/packages/cli-kit/src/admin/graphql/generated/theme_files_delete.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/theme_files_delete.ts rename to packages/cli-kit/src/admin/graphql/generated/theme_files_delete.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/theme_files_upsert.ts b/packages/cli-kit/src/admin/graphql/generated/theme_files_upsert.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/theme_files_upsert.ts rename to packages/cli-kit/src/admin/graphql/generated/theme_files_upsert.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/theme_publish.ts b/packages/cli-kit/src/admin/graphql/generated/theme_publish.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/theme_publish.ts rename to packages/cli-kit/src/admin/graphql/generated/theme_publish.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/theme_update.ts b/packages/cli-kit/src/admin/graphql/generated/theme_update.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/theme_update.ts rename to packages/cli-kit/src/admin/graphql/generated/theme_update.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/generated/types.d.ts b/packages/cli-kit/src/admin/graphql/generated/types.d.ts similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/generated/types.d.ts rename to packages/cli-kit/src/admin/graphql/generated/types.d.ts diff --git a/packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_create.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_create.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_create.graphql rename to packages/cli-kit/src/admin/graphql/mutations/theme_create.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_delete.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_delete.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_delete.graphql rename to packages/cli-kit/src/admin/graphql/mutations/theme_delete.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_duplicate.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_duplicate.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_duplicate.graphql rename to packages/cli-kit/src/admin/graphql/mutations/theme_duplicate.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_files_delete.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_files_delete.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_files_delete.graphql rename to packages/cli-kit/src/admin/graphql/mutations/theme_files_delete.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_files_upsert.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_files_upsert.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_files_upsert.graphql rename to packages/cli-kit/src/admin/graphql/mutations/theme_files_upsert.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_publish.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_publish.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_publish.graphql rename to packages/cli-kit/src/admin/graphql/mutations/theme_publish.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_update.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_update.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/mutations/theme_update.graphql rename to packages/cli-kit/src/admin/graphql/mutations/theme_update.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/queries/get_theme.graphql b/packages/cli-kit/src/admin/graphql/queries/get_theme.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/queries/get_theme.graphql rename to packages/cli-kit/src/admin/graphql/queries/get_theme.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/queries/get_theme_file_bodies.graphql b/packages/cli-kit/src/admin/graphql/queries/get_theme_file_bodies.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/queries/get_theme_file_bodies.graphql rename to packages/cli-kit/src/admin/graphql/queries/get_theme_file_bodies.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/queries/get_theme_file_checksums.graphql b/packages/cli-kit/src/admin/graphql/queries/get_theme_file_checksums.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/queries/get_theme_file_checksums.graphql rename to packages/cli-kit/src/admin/graphql/queries/get_theme_file_checksums.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/queries/get_themes.graphql b/packages/cli-kit/src/admin/graphql/queries/get_themes.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/queries/get_themes.graphql rename to packages/cli-kit/src/admin/graphql/queries/get_themes.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/queries/metafield_definitions_by_owner_type.graphql b/packages/cli-kit/src/admin/graphql/queries/metafield_definitions_by_owner_type.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/queries/metafield_definitions_by_owner_type.graphql rename to packages/cli-kit/src/admin/graphql/queries/metafield_definitions_by_owner_type.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/queries/online_store_password_protection.graphql b/packages/cli-kit/src/admin/graphql/queries/online_store_password_protection.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/queries/online_store_password_protection.graphql rename to packages/cli-kit/src/admin/graphql/queries/online_store_password_protection.graphql diff --git a/packages/cli-kit/src/cli/api/graphql/admin/queries/public_api_versions.graphql b/packages/cli-kit/src/admin/graphql/queries/public_api_versions.graphql similarity index 100% rename from packages/cli-kit/src/cli/api/graphql/admin/queries/public_api_versions.graphql rename to packages/cli-kit/src/admin/graphql/queries/public_api_versions.graphql diff --git a/packages/cli-kit/src/public/node/api/rest-api-throttler.ts b/packages/cli-kit/src/admin/rest-api-throttler.ts similarity index 98% rename from packages/cli-kit/src/public/node/api/rest-api-throttler.ts rename to packages/cli-kit/src/admin/rest-api-throttler.ts index 0902e332dc2..184a4966e6c 100644 --- a/packages/cli-kit/src/public/node/api/rest-api-throttler.ts +++ b/packages/cli-kit/src/admin/rest-api-throttler.ts @@ -1,5 +1,5 @@ -import {RestResponse} from './admin.js' -import {tryParseInt} from '../../common/string.js' +import {RestResponse} from './api.js' +import {tryParseInt} from '../shared/common/string.js' const MAX_NUMBER_OF_PARALLEL_REQUESTS = 5 const MARGIN_TO_RATE_LIMIT = 5 diff --git a/packages/cli-kit/src/private/node/api/rest.ts b/packages/cli-kit/src/admin/rest.ts similarity index 84% rename from packages/cli-kit/src/private/node/api/rest.ts rename to packages/cli-kit/src/admin/rest.ts index c87f3131c5a..259fc12eb2c 100644 --- a/packages/cli-kit/src/private/node/api/rest.ts +++ b/packages/cli-kit/src/admin/rest.ts @@ -1,6 +1,6 @@ -import {buildHeaders} from './headers.js' -import {themeKitAccessDomain} from '../constants.js' -import {AdminSession} from '../../../public/node/session.js' +import {buildHeaders} from '../shared/node/internal/api/headers.js' +import {themeKitAccessDomain} from '../shared/node/internal/constants.js' +import {AdminSession} from '../identity/session.js' export function restRequestBody(requestBody?: T) { if (!requestBody) { diff --git a/packages/cli-kit/src/public/node/api/app-dev.test.ts b/packages/cli-kit/src/app-dev/api.test.ts similarity index 87% rename from packages/cli-kit/src/public/node/api/app-dev.test.ts rename to packages/cli-kit/src/app-dev/api.test.ts index 38210300763..083a6d4b4d0 100644 --- a/packages/cli-kit/src/public/node/api/app-dev.test.ts +++ b/packages/cli-kit/src/app-dev/api.test.ts @@ -1,16 +1,16 @@ -import {appDevRequestDoc} from './app-dev.js' -import {graphqlRequestDoc} from './graphql.js' -import {serviceEnvironment, Environment} from '../../../private/node/context/service.js' +import {appDevRequestDoc} from './api.js' +import {graphqlRequestDoc} from '../shared/node/api/graphql.js' +import {serviceEnvironment, Environment} from '../shared/node/internal/context/service.js' import {test, vi, expect, describe} from 'vitest' import {TypedDocumentNode} from '@graphql-typed-document-node/core' -vi.mock('./graphql.js') -vi.mock('../../../private/node/context/service.js') +vi.mock('../shared/node/api/graphql.js') +vi.mock('../shared/node/internal/context/service.js') const shopFqdn = 'test-shop.shop.dev' const mockedToken = 'token' -vi.mock('../vendor/dev_server/index.js', () => { +vi.mock('../shared/vendor/dev_server/index.js', () => { return { DevServerCore: class { host(serviceName: string) { diff --git a/packages/cli-kit/src/public/node/api/app-dev.ts b/packages/cli-kit/src/app-dev/api.ts similarity index 86% rename from packages/cli-kit/src/public/node/api/app-dev.ts rename to packages/cli-kit/src/app-dev/api.ts index 8243856cfb4..8fa9aa5f723 100644 --- a/packages/cli-kit/src/public/node/api/app-dev.ts +++ b/packages/cli-kit/src/app-dev/api.ts @@ -1,7 +1,7 @@ -import {graphqlRequestDoc, UnauthorizedHandler} from './graphql.js' -import {RequestOptions} from './app-management.js' -import {appDevFqdn, normalizeStoreFqdn} from '../context/fqdn.js' -import {serviceEnvironment} from '../../../private/node/context/service.js' +import {graphqlRequestDoc, UnauthorizedHandler} from '../shared/node/api/graphql.js' +import {RequestOptions} from '../app-management/api.js' +import {appDevFqdn, normalizeStoreFqdn} from '../shared/node/context/fqdn.js' +import {serviceEnvironment} from '../shared/node/internal/context/service.js' import Bottleneck from 'bottleneck' import {Variables} from 'graphql-request' import {TypedDocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/cli-kit/src/public/node/api/app-management.test.ts b/packages/cli-kit/src/app-management/api.test.ts similarity index 84% rename from packages/cli-kit/src/public/node/api/app-management.test.ts rename to packages/cli-kit/src/app-management/api.test.ts index be5a8951084..356a23c1597 100644 --- a/packages/cli-kit/src/public/node/api/app-management.test.ts +++ b/packages/cli-kit/src/app-management/api.test.ts @@ -1,13 +1,13 @@ -import {appManagementRequestDoc, handleDeprecations} from './app-management.js' -import {graphqlRequestDoc, GraphQLResponse} from './graphql.js' -import {appManagementFqdn} from '../context/fqdn.js' -import {setNextDeprecationDate} from '../../../private/node/context/deprecations-store.js' +import {appManagementRequestDoc, handleDeprecations} from './api.js' +import {graphqlRequestDoc, GraphQLResponse} from '../shared/node/api/graphql.js' +import {appManagementFqdn} from '../shared/node/context/fqdn.js' +import {setNextDeprecationDate} from '../shared/node/internal/context/deprecations-store.js' import {test, vi, expect, describe, beforeEach, beforeAll} from 'vitest' import {TypedDocumentNode} from '@graphql-typed-document-node/core' -vi.mock('./graphql.js') -vi.mock('../../../private/node/context/deprecations-store.js') -vi.mock('../context/fqdn.js') +vi.mock('../shared/node/api/graphql.js') +vi.mock('../shared/node/internal/context/deprecations-store.js') +vi.mock('../shared/node/context/fqdn.js') const mockedResult = 'OK' const appManagementFqdnValue = 'shopify.com' diff --git a/packages/cli-kit/src/public/node/api/app-management.ts b/packages/cli-kit/src/app-management/api.ts similarity index 90% rename from packages/cli-kit/src/public/node/api/app-management.ts rename to packages/cli-kit/src/app-management/api.ts index d646895a1b9..e4b31b4ba6a 100644 --- a/packages/cli-kit/src/public/node/api/app-management.ts +++ b/packages/cli-kit/src/app-management/api.ts @@ -1,9 +1,9 @@ -import {CacheOptions, GraphQLResponse, UnauthorizedHandler, graphqlRequestDoc} from './graphql.js' -import {addCursorAndFiltersToAppLogsUrl} from './utilities.js' -import {appManagementFqdn} from '../context/fqdn.js' -import {setNextDeprecationDate} from '../../../private/node/context/deprecations-store.js' -import {buildHeaders} from '../../../private/node/api/headers.js' -import {RequestModeInput} from '../http.js' +import {CacheOptions, GraphQLResponse, UnauthorizedHandler, graphqlRequestDoc} from '../shared/node/api/graphql.js' +import {addCursorAndFiltersToAppLogsUrl} from '../shared/node/api/utilities.js' +import {appManagementFqdn} from '../shared/node/context/fqdn.js' +import {setNextDeprecationDate} from '../shared/node/internal/context/deprecations-store.js' +import {buildHeaders} from '../shared/node/internal/api/headers.js' +import {RequestModeInput} from '../shared/node/http.js' import Bottleneck from 'bottleneck' import {TypedDocumentNode} from '@graphql-typed-document-node/core' import {Variables} from 'graphql-request' diff --git a/packages/cli-kit/src/public/node/api/business-platform.ts b/packages/cli-kit/src/business-platform/api.ts similarity index 94% rename from packages/cli-kit/src/public/node/api/business-platform.ts rename to packages/cli-kit/src/business-platform/api.ts index e35409f46d7..d02fa1a4312 100644 --- a/packages/cli-kit/src/public/node/api/business-platform.ts +++ b/packages/cli-kit/src/business-platform/api.ts @@ -1,6 +1,12 @@ -import {CacheOptions, GraphQLVariables, UnauthorizedHandler, graphqlRequest, graphqlRequestDoc} from './graphql.js' -import {handleDeprecations} from './partners.js' -import {businessPlatformFqdn} from '../context/fqdn.js' +import { + CacheOptions, + GraphQLVariables, + UnauthorizedHandler, + graphqlRequest, + graphqlRequestDoc, +} from '../shared/node/api/graphql.js' +import {handleDeprecations} from '../partners/api.js' +import {businessPlatformFqdn} from '../shared/node/context/fqdn.js' import {TypedDocumentNode} from '@graphql-typed-document-node/core' import {Variables} from 'graphql-request' diff --git a/packages/cli-kit/src/private/node/api/graphql/business-platform-destinations/user-email.ts b/packages/cli-kit/src/business-platform/graphql/user-email.ts similarity index 100% rename from packages/cli-kit/src/private/node/api/graphql/business-platform-destinations/user-email.ts rename to packages/cli-kit/src/business-platform/graphql/user-email.ts diff --git a/packages/cli-kit/src/public/node/api/functions.ts b/packages/cli-kit/src/functions/api.ts similarity index 91% rename from packages/cli-kit/src/public/node/api/functions.ts rename to packages/cli-kit/src/functions/api.ts index aed8c0946fd..f2f5e354f09 100644 --- a/packages/cli-kit/src/public/node/api/functions.ts +++ b/packages/cli-kit/src/functions/api.ts @@ -1,6 +1,6 @@ -import {graphqlRequestDoc, UnauthorizedHandler} from './graphql.js' -import {handleDeprecations} from './app-management.js' -import {appManagementFqdn} from '../context/fqdn.js' +import {graphqlRequestDoc, UnauthorizedHandler} from '../shared/node/api/graphql.js' +import {handleDeprecations} from '../app-management/api.js' +import {appManagementFqdn} from '../shared/node/context/fqdn.js' import {TypedDocumentNode} from '@graphql-typed-document-node/core' import {Variables} from 'graphql-request' import Bottleneck from 'bottleneck' diff --git a/packages/cli-kit/src/private/node/session/device-authorization.test.ts b/packages/cli-kit/src/identity/core/device-authorization.test.ts similarity index 93% rename from packages/cli-kit/src/private/node/session/device-authorization.test.ts rename to packages/cli-kit/src/identity/core/device-authorization.test.ts index d3c2b0f718a..9dc1330cc13 100644 --- a/packages/cli-kit/src/private/node/session/device-authorization.test.ts +++ b/packages/cli-kit/src/identity/core/device-authorization.test.ts @@ -6,21 +6,21 @@ import { import {clientId} from './identity.js' import {IdentityToken} from './schema.js' import {exchangeDeviceCodeForAccessToken} from './exchange.js' -import {identityFqdn} from '../../../public/node/context/fqdn.js' -import {shopifyFetch} from '../../../public/node/http.js' -import {isTTY} from '../../../public/node/ui.js' -import {err, ok} from '../../../public/node/result.js' -import {AbortError} from '../../../public/node/error.js' -import {isCI} from '../../../public/node/system.js' +import {identityFqdn} from '../../shared/node/context/fqdn.js' +import {shopifyFetch} from '../../shared/node/http.js' +import {isTTY} from '../../shared/node/ui.js' +import {err, ok} from '../../shared/node/result.js' +import {AbortError} from '../../shared/node/error.js' +import {isCI} from '../../shared/node/system.js' import {beforeEach, describe, expect, test, vi} from 'vitest' import {Response} from 'node-fetch' -vi.mock('../../../public/node/context/fqdn.js') -vi.mock('./identity') -vi.mock('../../../public/node/http.js') -vi.mock('../../../public/node/ui.js') +vi.mock('../../shared/node/context/fqdn.js') +vi.mock('./identity.js') +vi.mock('../../shared/node/http.js') +vi.mock('../../shared/node/ui.js') vi.mock('./exchange.js') -vi.mock('../../../public/node/system.js') +vi.mock('../../shared/node/system.js') beforeEach(() => { vi.mocked(isTTY).mockReturnValue(true) diff --git a/packages/cli-kit/src/private/node/session/device-authorization.ts b/packages/cli-kit/src/identity/core/device-authorization.ts similarity index 94% rename from packages/cli-kit/src/private/node/session/device-authorization.ts rename to packages/cli-kit/src/identity/core/device-authorization.ts index e875adf1ea8..fa63ac90d8c 100644 --- a/packages/cli-kit/src/private/node/session/device-authorization.ts +++ b/packages/cli-kit/src/identity/core/device-authorization.ts @@ -1,13 +1,13 @@ import {clientId} from './identity.js' import {exchangeDeviceCodeForAccessToken} from './exchange.js' import {IdentityToken} from './schema.js' -import {identityFqdn} from '../../../public/node/context/fqdn.js' -import {shopifyFetch} from '../../../public/node/http.js' -import {outputContent, outputDebug, outputInfo, outputToken} from '../../../public/node/output.js' -import {AbortError, BugError} from '../../../public/node/error.js' -import {isCloudEnvironment} from '../../../public/node/context/local.js' -import {isCI, openURL} from '../../../public/node/system.js' -import {isTTY, keypress} from '../../../public/node/ui.js' +import {identityFqdn} from '../../shared/node/context/fqdn.js' +import {shopifyFetch} from '../../shared/node/http.js' +import {outputContent, outputDebug, outputInfo, outputToken} from '../../shared/node/output.js' +import {AbortError, BugError} from '../../shared/node/error.js' +import {isCloudEnvironment} from '../../shared/node/context/local.js' +import {isCI, openURL} from '../../shared/node/system.js' +import {isTTY, keypress} from '../../shared/node/ui.js' import {Response} from 'node-fetch' export interface DeviceAuthorizationResponse { diff --git a/packages/cli-kit/src/private/node/session/exchange.test.ts b/packages/cli-kit/src/identity/core/exchange.test.ts similarity index 97% rename from packages/cli-kit/src/private/node/session/exchange.test.ts rename to packages/cli-kit/src/identity/core/exchange.test.ts index fd2bebebabd..e41eaa2a4f1 100644 --- a/packages/cli-kit/src/private/node/session/exchange.test.ts +++ b/packages/cli-kit/src/identity/core/exchange.test.ts @@ -10,10 +10,10 @@ import { } from './exchange.js' import {applicationId, clientId} from './identity.js' import {IdentityToken} from './schema.js' -import {shopifyFetch} from '../../../public/node/http.js' -import {identityFqdn} from '../../../public/node/context/fqdn.js' -import {getLastSeenUserIdAfterAuth, getLastSeenAuthMethod} from '../session.js' -import {AbortError} from '../../../public/node/error.js' +import {getLastSeenUserIdAfterAuth, getLastSeenAuthMethod} from './session.js' +import {shopifyFetch} from '../../shared/node/http.js' +import {identityFqdn} from '../../shared/node/context/fqdn.js' +import {AbortError} from '../../shared/node/error.js' import {describe, test, expect, vi, afterAll, beforeEach} from 'vitest' import {Response} from 'node-fetch' @@ -38,9 +38,9 @@ const identityToken: IdentityToken = { alias: '1234-5678', } -vi.mock('../../../public/node/http.js') -vi.mock('../../../public/node/context/fqdn.js') -vi.mock('./identity') +vi.mock('../../shared/node/http.js') +vi.mock('../../shared/node/context/fqdn.js') +vi.mock('./identity.js') beforeEach(() => { vi.mocked(clientId).mockReturnValue('clientId') diff --git a/packages/cli-kit/src/private/node/session/exchange.ts b/packages/cli-kit/src/identity/core/exchange.ts similarity index 96% rename from packages/cli-kit/src/private/node/session/exchange.ts rename to packages/cli-kit/src/identity/core/exchange.ts index 1fcb3024eea..9bee0e902b1 100644 --- a/packages/cli-kit/src/private/node/session/exchange.ts +++ b/packages/cli-kit/src/identity/core/exchange.ts @@ -1,13 +1,13 @@ import {ApplicationToken, IdentityToken} from './schema.js' import {applicationId, clientId as getIdentityClientId} from './identity.js' import {tokenExchangeScopes} from './scopes.js' -import {API} from '../api.js' -import {identityFqdn} from '../../../public/node/context/fqdn.js' -import {shopifyFetch} from '../../../public/node/http.js' -import {err, ok, Result} from '../../../public/node/result.js' -import {AbortError, BugError, ExtendableError} from '../../../public/node/error.js' -import {setLastSeenAuthMethod, setLastSeenUserIdAfterAuth} from '../session.js' -import {nonRandomUUID} from '../../../public/node/crypto.js' +import {setLastSeenAuthMethod, setLastSeenUserIdAfterAuth} from './session.js' +import {API} from '../../shared/node/internal/api.js' +import {identityFqdn} from '../../shared/node/context/fqdn.js' +import {shopifyFetch} from '../../shared/node/http.js' +import {err, ok, Result} from '../../shared/node/result.js' +import {AbortError, BugError, ExtendableError} from '../../shared/node/error.js' +import {nonRandomUUID} from '../../shared/node/crypto.js' import * as jose from 'jose' export class InvalidGrantError extends ExtendableError {} diff --git a/packages/cli-kit/src/private/node/session/identity.ts b/packages/cli-kit/src/identity/core/identity.ts similarity index 92% rename from packages/cli-kit/src/private/node/session/identity.ts rename to packages/cli-kit/src/identity/core/identity.ts index a155b8ff40a..c072d6245db 100644 --- a/packages/cli-kit/src/private/node/session/identity.ts +++ b/packages/cli-kit/src/identity/core/identity.ts @@ -1,6 +1,6 @@ -import {API} from '../api.js' -import {BugError} from '../../../public/node/error.js' -import {Environment, serviceEnvironment} from '../context/service.js' +import {API} from '../../shared/node/internal/api.js' +import {BugError} from '../../shared/node/error.js' +import {Environment, serviceEnvironment} from '../../shared/node/internal/context/service.js' export function clientId(): string { const environment = serviceEnvironment() diff --git a/packages/cli-kit/src/private/node/session/schema.ts b/packages/cli-kit/src/identity/core/schema.ts similarity index 97% rename from packages/cli-kit/src/private/node/session/schema.ts rename to packages/cli-kit/src/identity/core/schema.ts index e74a5a19ae2..f5334832f37 100644 --- a/packages/cli-kit/src/private/node/session/schema.ts +++ b/packages/cli-kit/src/identity/core/schema.ts @@ -1,4 +1,4 @@ -import {zod} from '../../../public/node/schema.js' +import {zod} from '../../shared/node/schema.js' const DateSchema = zod.preprocess((arg) => { if (typeof arg === 'string' || arg instanceof Date) return new Date(arg) diff --git a/packages/cli-kit/src/private/node/session/scopes.test.ts b/packages/cli-kit/src/identity/core/scopes.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/session/scopes.test.ts rename to packages/cli-kit/src/identity/core/scopes.test.ts diff --git a/packages/cli-kit/src/private/node/session/scopes.ts b/packages/cli-kit/src/identity/core/scopes.ts similarity index 96% rename from packages/cli-kit/src/private/node/session/scopes.ts rename to packages/cli-kit/src/identity/core/scopes.ts index bced5231066..186af05e08d 100644 --- a/packages/cli-kit/src/private/node/session/scopes.ts +++ b/packages/cli-kit/src/identity/core/scopes.ts @@ -1,5 +1,5 @@ -import {allAPIs, API} from '../api.js' -import {BugError} from '../../../public/node/error.js' +import {allAPIs, API} from '../../shared/node/internal/api.js' +import {BugError} from '../../shared/node/error.js' /** * Generate a flat array with all the default scopes for all the APIs plus diff --git a/packages/cli-kit/src/private/node/session.test.ts b/packages/cli-kit/src/identity/core/session.test.ts similarity index 94% rename from packages/cli-kit/src/private/node/session.test.ts rename to packages/cli-kit/src/identity/core/session.test.ts index a48945980c3..f8f719db88a 100644 --- a/packages/cli-kit/src/private/node/session.test.ts +++ b/packages/cli-kit/src/identity/core/session.test.ts @@ -12,21 +12,21 @@ import { exchangeCustomPartnerToken, refreshAccessToken, InvalidGrantError, -} from './session/exchange.js' -import {allDefaultScopes} from './session/scopes.js' -import {store as storeSessions, fetch as fetchSessions, remove as secureRemove} from './session/store.js' -import {ApplicationToken, IdentityToken, Sessions} from './session/schema.js' -import {validateSession} from './session/validate.js' -import {applicationId} from './session/identity.js' -import {pollForDeviceAuthorization, requestDeviceAuthorization} from './session/device-authorization.js' -import {getCurrentSessionId} from './conf-store.js' -import * as fqdnModule from '../../public/node/context/fqdn.js' -import {themeToken} from '../../public/node/context/local.js' -import {partnersRequest} from '../../public/node/api/partners.js' -import {businessPlatformRequest} from '../../public/node/api/business-platform.js' -import {getPartnersToken} from '../../public/node/environment.js' -import {nonRandomUUID} from '../../public/node/crypto.js' -import {terminalSupportsPrompting} from '../../public/node/system.js' +} from './exchange.js' +import {allDefaultScopes} from './scopes.js' +import {store as storeSessions, fetch as fetchSessions, remove as secureRemove} from './store.js' +import {ApplicationToken, IdentityToken, Sessions} from './schema.js' +import {validateSession} from './validate.js' +import {applicationId} from './identity.js' +import {pollForDeviceAuthorization, requestDeviceAuthorization} from './device-authorization.js' +import {getCurrentSessionId} from '../../shared/node/internal/conf-store.js' +import * as fqdnModule from '../../shared/node/context/fqdn.js' +import {themeToken} from '../../shared/node/context/local.js' +import {partnersRequest} from '../../partners/api.js' +import {businessPlatformRequest} from '../../business-platform/api.js' +import {getPartnersToken} from '../../shared/node/environment.js' +import {nonRandomUUID} from '../../shared/node/crypto.js' +import {terminalSupportsPrompting} from '../../shared/node/system.js' import {vi, describe, expect, test, beforeEach} from 'vitest' const futureDate = new Date(2022, 1, 1, 11) @@ -105,20 +105,20 @@ const invalidSessions: Sessions = { }, } -vi.mock('../../public/node/context/local.js') -vi.mock('./session/identity') +vi.mock('../../shared/node/context/local.js') +vi.mock('./identity.js') vi.mock('./session/authorize') -vi.mock('./session/exchange') -vi.mock('./session/scopes') -vi.mock('./session/store') -vi.mock('./session/validate') -vi.mock('../../public/node/api/partners.js') -vi.mock('../../public/node/api/business-platform.js') +vi.mock('./exchange.js') +vi.mock('./scopes.js') +vi.mock('./store.js') +vi.mock('./validate.js') +vi.mock('../../partners/api.js') +vi.mock('../../business-platform/api.js') vi.mock('../../store') -vi.mock('../../public/node/environment.js') -vi.mock('./session/device-authorization') -vi.mock('./conf-store') -vi.mock('../../public/node/system.js') +vi.mock('../../shared/node/environment.js') +vi.mock('./device-authorization.js') +vi.mock('../../shared/node/internal/conf-store.js') +vi.mock('../../shared/node/system.js') beforeEach(() => { vi.spyOn(fqdnModule, 'identityFqdn').mockResolvedValue(fqdn) diff --git a/packages/cli-kit/src/private/node/session.ts b/packages/cli-kit/src/identity/core/session.ts similarity index 93% rename from packages/cli-kit/src/private/node/session.ts rename to packages/cli-kit/src/identity/core/session.ts index 41409c83e69..79003240337 100644 --- a/packages/cli-kit/src/private/node/session.ts +++ b/packages/cli-kit/src/identity/core/session.ts @@ -1,6 +1,6 @@ -import {applicationId} from './session/identity.js' -import {validateSession} from './session/validate.js' -import {allDefaultScopes, apiScopes} from './session/scopes.js' +import {applicationId} from './identity.js' +import {validateSession} from './validate.js' +import {allDefaultScopes, apiScopes} from './scopes.js' import { exchangeAccessForApplicationTokens, exchangeCustomPartnerToken, @@ -8,22 +8,22 @@ import { refreshAccessToken, InvalidGrantError, InvalidRequestError, -} from './session/exchange.js' -import {IdentityToken, Session, Sessions} from './session/schema.js' -import * as sessionStore from './session/store.js' -import {pollForDeviceAuthorization, requestDeviceAuthorization} from './session/device-authorization.js' -import {isThemeAccessSession} from './api/rest.js' -import {getCurrentSessionId, setCurrentSessionId} from './conf-store.js' -import {UserEmailQueryString, UserEmailQuery} from './api/graphql/business-platform-destinations/user-email.js' -import {outputContent, outputToken, outputDebug, outputCompleted} from '../../public/node/output.js' -import {firstPartyDev, themeToken} from '../../public/node/context/local.js' -import {AbortError} from '../../public/node/error.js' -import {normalizeStoreFqdn, identityFqdn} from '../../public/node/context/fqdn.js' -import {getIdentityTokenInformation, getPartnersToken} from '../../public/node/environment.js' -import {AdminSession, logout} from '../../public/node/session.js' -import {nonRandomUUID} from '../../public/node/crypto.js' -import {isEmpty} from '../../public/common/object.js' -import {businessPlatformRequest} from '../../public/node/api/business-platform.js' +} from './exchange.js' +import {IdentityToken, Session, Sessions} from './schema.js' +import * as sessionStore from './store.js' +import {pollForDeviceAuthorization, requestDeviceAuthorization} from './device-authorization.js' +import {isThemeAccessSession} from '../../admin/rest.js' +import {getCurrentSessionId, setCurrentSessionId} from '../../shared/node/internal/conf-store.js' +import {UserEmailQueryString, UserEmailQuery} from '../../business-platform/graphql/user-email.js' +import {outputContent, outputToken, outputDebug, outputCompleted} from '../../shared/node/output.js' +import {firstPartyDev, themeToken} from '../../shared/node/context/local.js' +import {AbortError} from '../../shared/node/error.js' +import {normalizeStoreFqdn, identityFqdn} from '../../shared/node/context/fqdn.js' +import {getIdentityTokenInformation, getPartnersToken} from '../../shared/node/environment.js' +import {AdminSession, logout} from '../session.js' +import {nonRandomUUID} from '../../shared/node/crypto.js' +import {isEmpty} from '../../shared/common/object.js' +import {businessPlatformRequest} from '../../business-platform/api.js' /** * Fetches the user's email from the Business Platform API diff --git a/packages/cli-kit/src/private/node/session/store.test.ts b/packages/cli-kit/src/identity/core/store.test.ts similarity index 94% rename from packages/cli-kit/src/private/node/session/store.test.ts rename to packages/cli-kit/src/identity/core/store.test.ts index 429c2d842c5..6805846f3c5 100644 --- a/packages/cli-kit/src/private/node/session/store.test.ts +++ b/packages/cli-kit/src/identity/core/store.test.ts @@ -1,11 +1,16 @@ import {Sessions} from './schema.js' import {store, fetch, remove, getSessionAlias, findSessionByAlias} from './store.js' -import {getSessions, removeSessions, setSessions, removeCurrentSessionId} from '../conf-store.js' -import {identityFqdn} from '../../../public/node/context/fqdn.js' +import { + getSessions, + removeSessions, + setSessions, + removeCurrentSessionId, +} from '../../shared/node/internal/conf-store.js' +import {identityFqdn} from '../../shared/node/context/fqdn.js' import {describe, expect, vi, test, beforeEach} from 'vitest' -vi.mock('../conf-store.js') -vi.mock('../../../public/node/context/fqdn.js') +vi.mock('../../shared/node/internal/conf-store.js') +vi.mock('../../shared/node/context/fqdn.js') const mockSessions: Sessions = { 'identity.fqdn.com': { diff --git a/packages/cli-kit/src/private/node/session/store.ts b/packages/cli-kit/src/identity/core/store.ts similarity index 91% rename from packages/cli-kit/src/private/node/session/store.ts rename to packages/cli-kit/src/identity/core/store.ts index 6a867fdf687..152be64ed06 100644 --- a/packages/cli-kit/src/private/node/session/store.ts +++ b/packages/cli-kit/src/identity/core/store.ts @@ -1,6 +1,11 @@ import {SessionsSchema} from './schema.js' -import {getSessions, removeCurrentSessionId, removeSessions, setSessions} from '../conf-store.js' -import {identityFqdn} from '../../../public/node/context/fqdn.js' +import { + getSessions, + removeCurrentSessionId, + removeSessions, + setSessions, +} from '../../shared/node/internal/conf-store.js' +import {identityFqdn} from '../../shared/node/context/fqdn.js' import type {Sessions} from './schema.js' /** diff --git a/packages/cli-kit/src/private/node/session/validate.test.ts b/packages/cli-kit/src/identity/core/validate.test.ts similarity index 98% rename from packages/cli-kit/src/private/node/session/validate.test.ts rename to packages/cli-kit/src/identity/core/validate.test.ts index 12f8300b683..b15bb123244 100644 --- a/packages/cli-kit/src/private/node/session/validate.test.ts +++ b/packages/cli-kit/src/identity/core/validate.test.ts @@ -1,7 +1,7 @@ import {validateSession} from './validate.js' import {applicationId} from './identity.js' import {IdentityToken, validateCachedIdentityTokenStructure} from './schema.js' -import {OAuthApplications} from '../session.js' +import {OAuthApplications} from './session.js' import {expect, describe, test, vi, afterAll, beforeEach} from 'vitest' const pastDate = new Date(2022, 1, 1, 9) @@ -71,8 +71,8 @@ const defaultApps: OAuthApplications = { } vi.mock('./identity-token-validation') -vi.mock('./identity') -vi.mock('./schema') +vi.mock('./identity.js') +vi.mock('./schema.js') beforeEach(() => { vi.mocked(applicationId).mockImplementation((id: any) => id) diff --git a/packages/cli-kit/src/private/node/session/validate.ts b/packages/cli-kit/src/identity/core/validate.ts similarity index 92% rename from packages/cli-kit/src/private/node/session/validate.ts rename to packages/cli-kit/src/identity/core/validate.ts index 2dd97f2480e..d270fcbb0cc 100644 --- a/packages/cli-kit/src/private/node/session/validate.ts +++ b/packages/cli-kit/src/identity/core/validate.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import {applicationId} from './identity.js' import {ApplicationToken, IdentityToken, Session, validateCachedIdentityTokenStructure} from './schema.js' -import {sessionConstants} from '../constants.js' -import {firstPartyDev} from '../../../public/node/context/local.js' -import {OAuthApplications} from '../session.js' -import {outputDebug} from '../../../public/node/output.js' +import {OAuthApplications} from './session.js' +import {sessionConstants} from '../../shared/node/internal/constants.js' +import {firstPartyDev} from '../../shared/node/context/local.js' +import {outputDebug} from '../../shared/node/output.js' type ValidationResult = 'needs_refresh' | 'needs_full_auth' | 'ok' diff --git a/packages/cli-kit/src/public/node/session-prompt.test.ts b/packages/cli-kit/src/identity/session-prompt.test.ts similarity index 94% rename from packages/cli-kit/src/public/node/session-prompt.test.ts rename to packages/cli-kit/src/identity/session-prompt.test.ts index 6c249ca3a4e..bf39c6b66f5 100644 --- a/packages/cli-kit/src/public/node/session-prompt.test.ts +++ b/packages/cli-kit/src/identity/session-prompt.test.ts @@ -1,17 +1,17 @@ import {promptSessionSelect} from './session-prompt.js' -import {renderSelectPrompt} from './ui.js' import {ensureAuthenticatedUser} from './session.js' -import {identityFqdn} from './context/fqdn.js' -import {setCurrentSessionId} from '../../private/node/conf-store.js' -import * as sessionStore from '../../private/node/session/store.js' -import {Sessions} from '../../private/node/session/schema.js' +import * as sessionStore from './core/store.js' +import {Sessions} from './core/schema.js' +import {renderSelectPrompt} from '../shared/node/ui.js' +import {identityFqdn} from '../shared/node/context/fqdn.js' +import {setCurrentSessionId} from '../shared/node/internal/conf-store.js' import {describe, expect, vi, test, beforeEach} from 'vitest' -vi.mock('./ui.js') +vi.mock('../shared/node/ui.js') vi.mock('./session.js') -vi.mock('./context/fqdn.js') -vi.mock('../../private/node/conf-store.js') -vi.mock('../../private/node/session/store.js') +vi.mock('../shared/node/context/fqdn.js') +vi.mock('../shared/node/internal/conf-store.js') +vi.mock('./core/store.js') const mockSessions: Sessions = { 'identity.fqdn.com': { diff --git a/packages/cli-kit/src/public/node/session-prompt.ts b/packages/cli-kit/src/identity/session-prompt.ts similarity index 90% rename from packages/cli-kit/src/public/node/session-prompt.ts rename to packages/cli-kit/src/identity/session-prompt.ts index bb78d17218b..98b9fd600b7 100644 --- a/packages/cli-kit/src/public/node/session-prompt.ts +++ b/packages/cli-kit/src/identity/session-prompt.ts @@ -1,9 +1,9 @@ -import {renderSelectPrompt} from './ui.js' import {ensureAuthenticatedUser} from './session.js' -import {identityFqdn} from './context/fqdn.js' -import * as sessionStore from '../../private/node/session/store.js' -import {setCurrentSessionId} from '../../private/node/conf-store.js' -import type {Sessions} from '../../private/node/session/schema.js' +import * as sessionStore from './core/store.js' +import {renderSelectPrompt} from '../shared/node/ui.js' +import {identityFqdn} from '../shared/node/context/fqdn.js' +import {setCurrentSessionId} from '../shared/node/internal/conf-store.js' +import type {Sessions} from './core/schema.js' const NEW_LOGIN_VALUE = 'NEW_LOGIN' diff --git a/packages/cli-kit/src/public/node/session.test.ts b/packages/cli-kit/src/identity/session.test.ts similarity index 95% rename from packages/cli-kit/src/public/node/session.test.ts rename to packages/cli-kit/src/identity/session.test.ts index 13c6f0fb278..7cedad26e37 100644 --- a/packages/cli-kit/src/public/node/session.test.ts +++ b/packages/cli-kit/src/identity/session.test.ts @@ -8,15 +8,15 @@ import { ensureAuthenticatedThemes, } from './session.js' -import {getPartnersToken} from './environment.js' -import {shopifyFetch} from './http.js' -import {ApplicationToken} from '../../private/node/session/schema.js' -import {ensureAuthenticated, setLastSeenAuthMethod, setLastSeenUserIdAfterAuth} from '../../private/node/session.js' +import {ApplicationToken} from './core/schema.js' +import {ensureAuthenticated, setLastSeenAuthMethod, setLastSeenUserIdAfterAuth} from './core/session.js' import { exchangeCustomPartnerToken, exchangeCliTokenForAppManagementAccessToken, exchangeCliTokenForBusinessPlatformAccessToken, -} from '../../private/node/session/exchange.js' +} from './core/exchange.js' +import {shopifyFetch} from '../shared/node/http.js' +import {getPartnersToken} from '../shared/node/environment.js' import {vi, describe, expect, test} from 'vitest' const futureDate = new Date(2022, 1, 1, 11) @@ -27,11 +27,11 @@ const partnersToken: ApplicationToken = { scopes: ['scope2'], } -vi.mock('../../private/node/session.js') -vi.mock('../../private/node/session/exchange.js') -vi.mock('../../private/node/session/store.js') -vi.mock('./environment.js') -vi.mock('./http.js') +vi.mock('./core/session.js') +vi.mock('./core/exchange.js') +vi.mock('./core/store.js') +vi.mock('../shared/node/environment.js') +vi.mock('../shared/node/http.js') describe('ensureAuthenticatedStorefront', () => { test('returns only storefront token if success', async () => { diff --git a/packages/cli-kit/src/public/node/session.ts b/packages/cli-kit/src/identity/session.ts similarity index 95% rename from packages/cli-kit/src/public/node/session.ts rename to packages/cli-kit/src/identity/session.ts index f7550df0f58..ef49a519918 100644 --- a/packages/cli-kit/src/public/node/session.ts +++ b/packages/cli-kit/src/identity/session.ts @@ -1,14 +1,9 @@ -import {AbortError, BugError} from './error.js' -import {getPartnersToken} from './environment.js' -import {nonRandomUUID} from './crypto.js' -import {shopifyFetch} from './http.js' -import * as sessionStore from '../../private/node/session/store.js' +import * as sessionStore from './core/store.js' import { exchangeCustomPartnerToken, exchangeCliTokenForAppManagementAccessToken, exchangeCliTokenForBusinessPlatformAccessToken, -} from '../../private/node/session/exchange.js' -import {outputContent, outputToken, outputDebug} from '../../public/node/output.js' +} from './core/exchange.js' import { AdminAPIScope, AppManagementAPIScope, @@ -19,8 +14,13 @@ import { ensureAuthenticated, setLastSeenAuthMethod, setLastSeenUserIdAfterAuth, -} from '../../private/node/session.js' -import {isThemeAccessSession} from '../../private/node/api/rest.js' +} from './core/session.js' +import {AbortError, BugError} from '../shared/node/error.js' +import {getPartnersToken} from '../shared/node/environment.js' +import {nonRandomUUID} from '../shared/node/crypto.js' +import {shopifyFetch} from '../shared/node/http.js' +import {outputContent, outputToken, outputDebug} from '../shared/node/output.js' +import {isThemeAccessSession} from '../admin/rest.js' /** * Session Object to access the Admin API, includes the token and the store FQDN. diff --git a/packages/cli-kit/src/public/node/api/partners.test.ts b/packages/cli-kit/src/partners/api.test.ts similarity index 80% rename from packages/cli-kit/src/public/node/api/partners.test.ts rename to packages/cli-kit/src/partners/api.test.ts index d287b4d4539..c51516cbe2d 100644 --- a/packages/cli-kit/src/public/node/api/partners.test.ts +++ b/packages/cli-kit/src/partners/api.test.ts @@ -1,15 +1,15 @@ -import {partnersRequest, handleDeprecations} from './partners.js' -import {graphqlRequest, GraphQLResponse} from './graphql.js' -import {partnersFqdn} from '../context/fqdn.js' -import {blockPartnersAccess} from '../environment.js' -import {BugError} from '../error.js' -import {setNextDeprecationDate} from '../../../private/node/context/deprecations-store.js' +import {partnersRequest, handleDeprecations} from './api.js' +import {graphqlRequest, GraphQLResponse} from '../shared/node/api/graphql.js' +import {partnersFqdn} from '../shared/node/context/fqdn.js' +import {blockPartnersAccess} from '../shared/node/environment.js' +import {BugError} from '../shared/node/error.js' +import {setNextDeprecationDate} from '../shared/node/internal/context/deprecations-store.js' import {test, vi, expect, describe, beforeEach, beforeAll} from 'vitest' -vi.mock('./graphql.js') -vi.mock('../../../private/node/context/deprecations-store.js') -vi.mock('../context/fqdn.js') -vi.mock('../environment.js') +vi.mock('../shared/node/api/graphql.js') +vi.mock('../shared/node/internal/context/deprecations-store.js') +vi.mock('../shared/node/context/fqdn.js') +vi.mock('../shared/node/environment.js') const mockedResult = 'OK' const partnersFQDN = 'partners.shopify.com' diff --git a/packages/cli-kit/src/public/node/api/partners.ts b/packages/cli-kit/src/partners/api.ts similarity index 87% rename from packages/cli-kit/src/public/node/api/partners.ts rename to packages/cli-kit/src/partners/api.ts index 82903a392cf..277a14e6bb1 100644 --- a/packages/cli-kit/src/public/node/api/partners.ts +++ b/packages/cli-kit/src/partners/api.ts @@ -5,16 +5,16 @@ import { graphqlRequestDoc, CacheOptions, UnauthorizedHandler, -} from './graphql.js' -import {addCursorAndFiltersToAppLogsUrl} from './utilities.js' -import {partnersFqdn} from '../context/fqdn.js' -import {setNextDeprecationDate} from '../../../private/node/context/deprecations-store.js' -import {getPackageManager} from '../node-package-manager.js' -import {cwd} from '../path.js' -import {AbortError, BugError} from '../error.js' -import {formatPackageManagerCommand} from '../output.js' -import {RequestModeInput} from '../http.js' -import {blockPartnersAccess} from '../environment.js' +} from '../shared/node/api/graphql.js' +import {addCursorAndFiltersToAppLogsUrl} from '../shared/node/api/utilities.js' +import {partnersFqdn} from '../shared/node/context/fqdn.js' +import {setNextDeprecationDate} from '../shared/node/internal/context/deprecations-store.js' +import {getPackageManager} from '../shared/node/node-package-manager.js' +import {cwd} from '../shared/node/path.js' +import {AbortError, BugError} from '../shared/node/error.js' +import {formatPackageManagerCommand} from '../shared/node/output.js' +import {RequestModeInput} from '../shared/node/http.js' +import {blockPartnersAccess} from '../shared/node/environment.js' import Bottleneck from 'bottleneck' import {Variables} from 'graphql-request' import {TypedDocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/cli-kit/src/public/node/ui/components.ts b/packages/cli-kit/src/public/node/ui/components.ts deleted file mode 100644 index bd94ff0ff25..00000000000 --- a/packages/cli-kit/src/public/node/ui/components.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { - ConcurrentOutput, - ConcurrentOutputContext, - useConcurrentOutputContext, -} from '../../../private/node/ui/components/ConcurrentOutput.js' -export {Alert} from '../../../private/node/ui/components/Alert.js' -export {Link} from '../../../private/node/ui/components/Link.js' -export {TabularData} from '../../../private/node/ui/components/TabularData.js' diff --git a/packages/cli-kit/src/public/node/ui/hooks.ts b/packages/cli-kit/src/public/node/ui/hooks.ts deleted file mode 100644 index b2a25fae055..00000000000 --- a/packages/cli-kit/src/public/node/ui/hooks.ts +++ /dev/null @@ -1 +0,0 @@ -export {default as useAbortSignal} from '../../../private/node/ui/hooks/use-abort-signal.js' diff --git a/packages/cli-kit/src/public/common/array.test.ts b/packages/cli-kit/src/shared/common/array.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/array.test.ts rename to packages/cli-kit/src/shared/common/array.test.ts diff --git a/packages/cli-kit/src/public/common/array.ts b/packages/cli-kit/src/shared/common/array.ts similarity index 100% rename from packages/cli-kit/src/public/common/array.ts rename to packages/cli-kit/src/shared/common/array.ts diff --git a/packages/cli-kit/src/public/common/collection.test.ts b/packages/cli-kit/src/shared/common/collection.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/collection.test.ts rename to packages/cli-kit/src/shared/common/collection.test.ts diff --git a/packages/cli-kit/src/public/common/collection.ts b/packages/cli-kit/src/shared/common/collection.ts similarity index 100% rename from packages/cli-kit/src/public/common/collection.ts rename to packages/cli-kit/src/shared/common/collection.ts diff --git a/packages/cli-kit/src/public/common/function.test.ts b/packages/cli-kit/src/shared/common/function.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/function.test.ts rename to packages/cli-kit/src/shared/common/function.test.ts diff --git a/packages/cli-kit/src/public/common/function.ts b/packages/cli-kit/src/shared/common/function.ts similarity index 100% rename from packages/cli-kit/src/public/common/function.ts rename to packages/cli-kit/src/shared/common/function.ts diff --git a/packages/cli-kit/src/private/common/array.ts b/packages/cli-kit/src/shared/common/internal/array.ts similarity index 100% rename from packages/cli-kit/src/private/common/array.ts rename to packages/cli-kit/src/shared/common/internal/array.ts diff --git a/packages/cli-kit/src/private/common/json.ts b/packages/cli-kit/src/shared/common/internal/json.ts similarity index 100% rename from packages/cli-kit/src/private/common/json.ts rename to packages/cli-kit/src/shared/common/internal/json.ts diff --git a/packages/cli-kit/src/private/common/ts/overloaded-parameters.ts b/packages/cli-kit/src/shared/common/internal/ts/overloaded-parameters.ts similarity index 100% rename from packages/cli-kit/src/private/common/ts/overloaded-parameters.ts rename to packages/cli-kit/src/shared/common/internal/ts/overloaded-parameters.ts diff --git a/packages/cli-kit/src/public/common/json.test.ts b/packages/cli-kit/src/shared/common/json.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/json.test.ts rename to packages/cli-kit/src/shared/common/json.test.ts diff --git a/packages/cli-kit/src/public/common/json.ts b/packages/cli-kit/src/shared/common/json.ts similarity index 100% rename from packages/cli-kit/src/public/common/json.ts rename to packages/cli-kit/src/shared/common/json.ts diff --git a/packages/cli-kit/src/public/common/lang.test.ts b/packages/cli-kit/src/shared/common/lang.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/lang.test.ts rename to packages/cli-kit/src/shared/common/lang.test.ts diff --git a/packages/cli-kit/src/public/common/lang.ts b/packages/cli-kit/src/shared/common/lang.ts similarity index 100% rename from packages/cli-kit/src/public/common/lang.ts rename to packages/cli-kit/src/shared/common/lang.ts diff --git a/packages/cli-kit/src/public/common/object.test.ts b/packages/cli-kit/src/shared/common/object.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/object.test.ts rename to packages/cli-kit/src/shared/common/object.test.ts diff --git a/packages/cli-kit/src/public/common/object.ts b/packages/cli-kit/src/shared/common/object.ts similarity index 98% rename from packages/cli-kit/src/public/common/object.ts rename to packages/cli-kit/src/shared/common/object.ts index 23e6e122df8..92beffcbcb2 100644 --- a/packages/cli-kit/src/public/common/object.ts +++ b/packages/cli-kit/src/shared/common/object.ts @@ -1,4 +1,4 @@ -import {unionArrayStrategy} from '../../private/common/array.js' +import {unionArrayStrategy} from './internal/array.js' import deepMerge from 'deepmerge' import {Dictionary, ObjectIterator, PropertyPath, ValueKeyIteratee} from 'lodash' import lodashPickBy from 'lodash/pickBy.js' diff --git a/packages/cli-kit/src/public/common/retry.test.ts b/packages/cli-kit/src/shared/common/retry.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/retry.test.ts rename to packages/cli-kit/src/shared/common/retry.test.ts diff --git a/packages/cli-kit/src/public/common/retry.ts b/packages/cli-kit/src/shared/common/retry.ts similarity index 100% rename from packages/cli-kit/src/public/common/retry.ts rename to packages/cli-kit/src/shared/common/retry.ts diff --git a/packages/cli-kit/src/public/common/string.test.ts b/packages/cli-kit/src/shared/common/string.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/string.test.ts rename to packages/cli-kit/src/shared/common/string.test.ts diff --git a/packages/cli-kit/src/public/common/string.ts b/packages/cli-kit/src/shared/common/string.ts similarity index 98% rename from packages/cli-kit/src/public/common/string.ts rename to packages/cli-kit/src/shared/common/string.ts index 89e6bac52eb..7098ede0aaf 100644 --- a/packages/cli-kit/src/public/common/string.ts +++ b/packages/cli-kit/src/shared/common/string.ts @@ -1,6 +1,6 @@ import {takeRandomFromArray} from './array.js' -import {unstyled} from '../../public/node/output.js' -import {Token, TokenItem} from '../../private/node/ui/components/TokenizedText.js' +import {unstyled} from '../node/output.js' +import {Token, TokenItem} from '../ui/components/TokenizedText.js' import {camelCase, capitalCase, constantCase, paramCase, snakeCase, pascalCase} from 'change-case' const SAFE_RANDOM_BUSINESS_ADJECTIVES = [ diff --git a/packages/cli-kit/src/public/common/ts/deep-required.ts b/packages/cli-kit/src/shared/common/ts/deep-required.ts similarity index 100% rename from packages/cli-kit/src/public/common/ts/deep-required.ts rename to packages/cli-kit/src/shared/common/ts/deep-required.ts diff --git a/packages/cli-kit/src/public/common/ts/json-narrowing.test.ts b/packages/cli-kit/src/shared/common/ts/json-narrowing.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/ts/json-narrowing.test.ts rename to packages/cli-kit/src/shared/common/ts/json-narrowing.test.ts diff --git a/packages/cli-kit/src/public/common/ts/json-narrowing.ts b/packages/cli-kit/src/shared/common/ts/json-narrowing.ts similarity index 100% rename from packages/cli-kit/src/public/common/ts/json-narrowing.ts rename to packages/cli-kit/src/shared/common/ts/json-narrowing.ts diff --git a/packages/cli-kit/src/public/common/ts/pick-by-prefix.ts b/packages/cli-kit/src/shared/common/ts/pick-by-prefix.ts similarity index 100% rename from packages/cli-kit/src/public/common/ts/pick-by-prefix.ts rename to packages/cli-kit/src/shared/common/ts/pick-by-prefix.ts diff --git a/packages/cli-kit/src/public/common/url.test.ts b/packages/cli-kit/src/shared/common/url.test.ts similarity index 100% rename from packages/cli-kit/src/public/common/url.test.ts rename to packages/cli-kit/src/shared/common/url.test.ts diff --git a/packages/cli-kit/src/public/common/url.ts b/packages/cli-kit/src/shared/common/url.ts similarity index 100% rename from packages/cli-kit/src/public/common/url.ts rename to packages/cli-kit/src/shared/common/url.ts diff --git a/packages/cli-kit/src/public/common/version.ts b/packages/cli-kit/src/shared/common/version.ts similarity index 100% rename from packages/cli-kit/src/public/common/version.ts rename to packages/cli-kit/src/shared/common/version.ts diff --git a/packages/cli-kit/src/public/node/abort.ts b/packages/cli-kit/src/shared/node/abort.ts similarity index 100% rename from packages/cli-kit/src/public/node/abort.ts rename to packages/cli-kit/src/shared/node/abort.ts diff --git a/packages/cli-kit/src/public/node/analytics.test.ts b/packages/cli-kit/src/shared/node/analytics.test.ts similarity index 98% rename from packages/cli-kit/src/public/node/analytics.test.ts rename to packages/cli-kit/src/shared/node/analytics.test.ts index 437ee1bb93e..007e6b3c720 100644 --- a/packages/cli-kit/src/public/node/analytics.test.ts +++ b/packages/cli-kit/src/shared/node/analytics.test.ts @@ -14,18 +14,18 @@ import {joinPath, dirname} from './path.js' import {publishMonorailEvent} from './monorail.js' import {mockAndCaptureOutput} from './testing/output.js' import {addPublicMetadata} from './metadata.js' -import * as store from '../../private/node/analytics/storage.js' -import {startAnalytics} from '../../private/node/analytics.js' -import {hashString} from '../../public/node/crypto.js' +import * as store from './internal/analytics/storage.js' +import {startAnalytics} from './internal/analytics.js' +import {hashString} from './crypto.js' import {CLI_KIT_VERSION} from '../common/version.js' -import {setLastSeenAuthMethod, setLastSeenUserIdAfterAuth} from '../../private/node/session.js' +import {setLastSeenAuthMethod, setLastSeenUserIdAfterAuth} from '../../identity/core/session.js' import {test, expect, describe, vi, beforeEach, afterEach, MockedFunction} from 'vitest' vi.mock('./context/local.js') vi.mock('./os.js') vi.mock('../../store.js') -vi.mock('../../private/node/analytics/storage.js') -vi.mock('../../public/node/crypto.js') +vi.mock('./internal/analytics/storage.js') +vi.mock('./crypto.js') vi.mock('../../version.js') vi.mock('./monorail.js') vi.mock('./cli.js') diff --git a/packages/cli-kit/src/public/node/analytics.ts b/packages/cli-kit/src/shared/node/analytics.ts similarity index 94% rename from packages/cli-kit/src/public/node/analytics.ts rename to packages/cli-kit/src/shared/node/analytics.ts index 03345a195be..282cdc20e29 100644 --- a/packages/cli-kit/src/public/node/analytics.ts +++ b/packages/cli-kit/src/shared/node/analytics.ts @@ -9,15 +9,15 @@ import { recordEvent as storageRecordEvent, compileData as storageCompileData, RuntimeData, -} from '../../private/node/analytics/storage.js' -import {outputContent, outputDebug, outputToken} from '../../public/node/output.js' -import {getEnvironmentData, getSensitiveEnvironmentData} from '../../private/node/analytics.js' +} from './internal/analytics/storage.js' +import {outputContent, outputDebug, outputToken} from './output.js' +import {getEnvironmentData, getSensitiveEnvironmentData} from './internal/analytics.js' +import {recordMetrics} from './internal/otel-metrics.js' +import {runWithRateLimit} from './internal/conf-store.js' +import {reportingRateLimit} from './internal/constants.js' +import {requestIdsCollection} from './internal/request-ids.js' +import {getLastSeenUserIdAfterAuth} from '../../identity/core/session.js' import {CLI_KIT_VERSION} from '../common/version.js' -import {recordMetrics} from '../../private/node/otel-metrics.js' -import {runWithRateLimit} from '../../private/node/conf-store.js' -import {reportingRateLimit} from '../../private/node/constants.js' -import {getLastSeenUserIdAfterAuth} from '../../private/node/session.js' -import {requestIdsCollection} from '../../private/node/request-ids.js' import {Interfaces} from '@oclif/core' export type CommandExitMode = diff --git a/packages/cli-kit/src/public/node/api/graphql.test.ts b/packages/cli-kit/src/shared/node/api/graphql.test.ts similarity index 98% rename from packages/cli-kit/src/public/node/api/graphql.test.ts rename to packages/cli-kit/src/shared/node/api/graphql.test.ts index 619719a26e4..ac5286833a6 100644 --- a/packages/cli-kit/src/public/node/api/graphql.test.ts +++ b/packages/cli-kit/src/shared/node/api/graphql.test.ts @@ -1,12 +1,12 @@ import {graphqlRequest, graphqlRequestDoc} from './graphql.js' -import * as api from '../../../private/node/api.js' -import * as debugRequest from '../../../private/node/api/graphql.js' -import {requestIdsCollection} from '../../../private/node/request-ids.js' +import * as api from '../internal/api.js' +import * as debugRequest from '../internal/api/graphql.js' +import {requestIdsCollection} from '../internal/request-ids.js' import * as metadata from '../metadata.js' -import * as confStore from '../../../private/node/conf-store.js' +import * as confStore from '../internal/conf-store.js' import {inTemporaryDirectory} from '../fs.js' import {LocalStorage} from '../local-storage.js' -import {ConfSchema, GraphQLRequestKey} from '../../../private/node/conf-store.js' +import {ConfSchema, GraphQLRequestKey} from '../internal/conf-store.js' import {nonRandomUUID} from '../crypto.js' import {CLI_KIT_VERSION} from '../../common/version.js' import * as system from '../system.js' diff --git a/packages/cli-kit/src/public/node/api/graphql.ts b/packages/cli-kit/src/shared/node/api/graphql.ts similarity index 96% rename from packages/cli-kit/src/public/node/api/graphql.ts rename to packages/cli-kit/src/shared/node/api/graphql.ts index ad1ca5a28cc..ee0ec51815c 100644 --- a/packages/cli-kit/src/public/node/api/graphql.ts +++ b/packages/cli-kit/src/shared/node/api/graphql.ts @@ -1,8 +1,8 @@ -import {buildHeaders, httpsAgent} from '../../../private/node/api/headers.js' -import {debugLogRequestInfo, errorHandler} from '../../../private/node/api/graphql.js' +import {buildHeaders, httpsAgent} from '../internal/api/headers.js' +import {debugLogRequestInfo, errorHandler} from '../internal/api/graphql.js' import {addPublicMetadata, runWithTimer} from '../metadata.js' -import {retryAwareRequest} from '../../../private/node/api.js' -import {requestIdsCollection} from '../../../private/node/request-ids.js' +import {retryAwareRequest} from '../internal/api.js' +import {requestIdsCollection} from '../internal/request-ids.js' import {nonRandomUUID} from '../crypto.js' import { cacheRetrieveOrRepopulate, @@ -10,7 +10,7 @@ import { GraphQLRequestKey, TimeInterval, timeIntervalToMilliseconds, -} from '../../../private/node/conf-store.js' +} from '../internal/conf-store.js' import {LocalStorage} from '../local-storage.js' import {abortSignalFromRequestBehaviour, RequestBehaviour, requestMode, RequestModeInput} from '../http.js' import {CLI_KIT_VERSION} from '../../common/version.js' diff --git a/packages/cli-kit/src/public/node/api/utilities.ts b/packages/cli-kit/src/shared/node/api/utilities.ts similarity index 100% rename from packages/cli-kit/src/public/node/api/utilities.ts rename to packages/cli-kit/src/shared/node/api/utilities.ts diff --git a/packages/cli-kit/src/public/node/archiver.integration.test.ts b/packages/cli-kit/src/shared/node/archiver.integration.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/archiver.integration.test.ts rename to packages/cli-kit/src/shared/node/archiver.integration.test.ts diff --git a/packages/cli-kit/src/public/node/archiver.ts b/packages/cli-kit/src/shared/node/archiver.ts similarity index 98% rename from packages/cli-kit/src/public/node/archiver.ts rename to packages/cli-kit/src/shared/node/archiver.ts index dda288526aa..4ed9a2a8eec 100644 --- a/packages/cli-kit/src/public/node/archiver.ts +++ b/packages/cli-kit/src/shared/node/archiver.ts @@ -1,6 +1,6 @@ import {relativePath, joinPath, dirname} from './path.js' import {glob, removeFile} from './fs.js' -import {outputDebug, outputContent, outputToken} from '../../public/node/output.js' +import {outputDebug, outputContent, outputToken} from './output.js' import archiver from 'archiver' import {createWriteStream, readFileSync, writeFileSync} from 'fs' import {readFile} from 'fs/promises' diff --git a/packages/cli-kit/src/public/node/base-command.test.ts b/packages/cli-kit/src/shared/node/base-command.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/base-command.test.ts rename to packages/cli-kit/src/shared/node/base-command.test.ts diff --git a/packages/cli-kit/src/public/node/base-command.ts b/packages/cli-kit/src/shared/node/base-command.ts similarity index 99% rename from packages/cli-kit/src/public/node/base-command.ts rename to packages/cli-kit/src/shared/node/base-command.ts index f4236e53e94..20555ebdf24 100644 --- a/packages/cli-kit/src/public/node/base-command.ts +++ b/packages/cli-kit/src/shared/node/base-command.ts @@ -10,7 +10,7 @@ import {hashString} from './crypto.js' import {isTruthy} from './context/utilities.js' import {showNotificationsIfNeeded} from './notifications-system.js' import {setCurrentCommandId} from './global-context.js' -import {JsonMap} from '../../private/common/json.js' +import {JsonMap} from '../common/internal/json.js' import {underscore} from '../common/string.js' import {Command, Config, Errors} from '@oclif/core' import {OutputFlags, Input, ParserOutput, FlagInput, OutputArgs} from '@oclif/core/parser' diff --git a/packages/cli-kit/src/public/node/cli-launcher.test.ts b/packages/cli-kit/src/shared/node/cli-launcher.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/cli-launcher.test.ts rename to packages/cli-kit/src/shared/node/cli-launcher.test.ts diff --git a/packages/cli-kit/src/public/node/cli-launcher.ts b/packages/cli-kit/src/shared/node/cli-launcher.ts similarity index 100% rename from packages/cli-kit/src/public/node/cli-launcher.ts rename to packages/cli-kit/src/shared/node/cli-launcher.ts diff --git a/packages/cli-kit/src/public/node/cli.test.ts b/packages/cli-kit/src/shared/node/cli.test.ts similarity index 98% rename from packages/cli-kit/src/public/node/cli.test.ts rename to packages/cli-kit/src/shared/node/cli.test.ts index 7e6af517d3c..a928e8954ec 100644 --- a/packages/cli-kit/src/public/node/cli.test.ts +++ b/packages/cli-kit/src/shared/node/cli.test.ts @@ -1,7 +1,7 @@ import {clearCache, runCLI, runCreateCLI} from './cli.js' import {findUpAndReadPackageJson} from './node-package-manager.js' import {mockAndCaptureOutput} from './testing/output.js' -import * as confStore from '../../private/node/conf-store.js' +import * as confStore from './internal/conf-store.js' import {describe, expect, test, vi} from 'vitest' vi.mock('./node-package-manager.js') diff --git a/packages/cli-kit/src/public/node/cli.ts b/packages/cli-kit/src/shared/node/cli.ts similarity index 97% rename from packages/cli-kit/src/public/node/cli.ts rename to packages/cli-kit/src/shared/node/cli.ts index e047e11421e..5249fca54bd 100644 --- a/packages/cli-kit/src/public/node/cli.ts +++ b/packages/cli-kit/src/shared/node/cli.ts @@ -1,7 +1,7 @@ import {isTruthy} from './context/utilities.js' import {launchCLI as defaultLaunchCli} from './cli-launcher.js' -import {cacheClear} from '../../private/node/conf-store.js' -import {environmentVariables} from '../../private/node/constants.js' +import {cacheClear} from './internal/conf-store.js' +import {environmentVariables} from './internal/constants.js' import {Flags} from '@oclif/core' /** diff --git a/packages/cli-kit/src/public/node/colors.ts b/packages/cli-kit/src/shared/node/colors.ts similarity index 100% rename from packages/cli-kit/src/public/node/colors.ts rename to packages/cli-kit/src/shared/node/colors.ts diff --git a/packages/cli-kit/src/public/node/context/fqdn.test.ts b/packages/cli-kit/src/shared/node/context/fqdn.test.ts similarity index 96% rename from packages/cli-kit/src/public/node/context/fqdn.test.ts rename to packages/cli-kit/src/shared/node/context/fqdn.test.ts index 72f51b35dda..0bba905bbae 100644 --- a/packages/cli-kit/src/public/node/context/fqdn.test.ts +++ b/packages/cli-kit/src/shared/node/context/fqdn.test.ts @@ -7,12 +7,12 @@ import { appDevFqdn, adminFqdn, } from './fqdn.js' -import {Environment, serviceEnvironment} from '../../../private/node/context/service.js' +import {Environment, serviceEnvironment} from '../internal/context/service.js' import {expect, describe, test, vi} from 'vitest' -vi.mock('../../../private/node/context/service.js') +vi.mock('../internal/context/service.js') -vi.mock('../vendor/dev_server/index.js', () => { +vi.mock('../../vendor/dev_server/index.js', () => { return { DevServerCore: class { host(serviceName: string) { diff --git a/packages/cli-kit/src/public/node/context/fqdn.ts b/packages/cli-kit/src/shared/node/context/fqdn.ts similarity index 96% rename from packages/cli-kit/src/public/node/context/fqdn.ts rename to packages/cli-kit/src/shared/node/context/fqdn.ts index 54673e86454..b08e7d2ba8a 100644 --- a/packages/cli-kit/src/public/node/context/fqdn.ts +++ b/packages/cli-kit/src/shared/node/context/fqdn.ts @@ -1,6 +1,6 @@ import {AbortError} from '../error.js' -import {serviceEnvironment} from '../../../private/node/context/service.js' -import {DevServer, DevServerCore} from '../vendor/dev_server/index.js' +import {serviceEnvironment} from '../internal/context/service.js' +import {DevServer, DevServerCore} from '../../vendor/dev_server/index.js' export const NotProvidedStoreFQDNError = new AbortError( "Couldn't obtain the Shopify FQDN because the store FQDN was not provided.", diff --git a/packages/cli-kit/src/public/node/context/local.integration.test.ts b/packages/cli-kit/src/shared/node/context/local.integration.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/context/local.integration.test.ts rename to packages/cli-kit/src/shared/node/context/local.integration.test.ts diff --git a/packages/cli-kit/src/public/node/context/local.test.ts b/packages/cli-kit/src/shared/node/context/local.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/context/local.test.ts rename to packages/cli-kit/src/shared/node/context/local.test.ts diff --git a/packages/cli-kit/src/public/node/context/local.ts b/packages/cli-kit/src/shared/node/context/local.ts similarity index 98% rename from packages/cli-kit/src/public/node/context/local.ts rename to packages/cli-kit/src/shared/node/context/local.ts index 6ab4755a4a5..c1fc4afa479 100644 --- a/packages/cli-kit/src/public/node/context/local.ts +++ b/packages/cli-kit/src/shared/node/context/local.ts @@ -1,6 +1,6 @@ import {isTruthy} from './utilities.js' -import {getCIMetadata, isSet, Metadata} from '../../../private/node/context/utilities.js' -import {defaultThemeKitAccessDomain, environmentVariables, pathConstants} from '../../../private/node/constants.js' +import {getCIMetadata, isSet, Metadata} from '../internal/context/utilities.js' +import {defaultThemeKitAccessDomain, environmentVariables, pathConstants} from '../internal/constants.js' import {fileExists} from '../fs.js' import {exec} from '../system.js' import isInteractive from 'is-interactive' diff --git a/packages/cli-kit/src/public/node/context/utilities.ts b/packages/cli-kit/src/shared/node/context/utilities.ts similarity index 100% rename from packages/cli-kit/src/public/node/context/utilities.ts rename to packages/cli-kit/src/shared/node/context/utilities.ts diff --git a/packages/cli-kit/src/public/node/crypto.test.ts b/packages/cli-kit/src/shared/node/crypto.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/crypto.test.ts rename to packages/cli-kit/src/shared/node/crypto.test.ts diff --git a/packages/cli-kit/src/public/node/crypto.ts b/packages/cli-kit/src/shared/node/crypto.ts similarity index 100% rename from packages/cli-kit/src/public/node/crypto.ts rename to packages/cli-kit/src/shared/node/crypto.ts diff --git a/packages/cli-kit/src/public/node/custom-oclif-loader.ts b/packages/cli-kit/src/shared/node/custom-oclif-loader.ts similarity index 100% rename from packages/cli-kit/src/public/node/custom-oclif-loader.ts rename to packages/cli-kit/src/shared/node/custom-oclif-loader.ts diff --git a/packages/cli-kit/src/public/node/doctor/framework.test.ts b/packages/cli-kit/src/shared/node/doctor/framework.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/doctor/framework.test.ts rename to packages/cli-kit/src/shared/node/doctor/framework.test.ts diff --git a/packages/cli-kit/src/public/node/doctor/framework.ts b/packages/cli-kit/src/shared/node/doctor/framework.ts similarity index 100% rename from packages/cli-kit/src/public/node/doctor/framework.ts rename to packages/cli-kit/src/shared/node/doctor/framework.ts diff --git a/packages/cli-kit/src/public/node/doctor/reporter.ts b/packages/cli-kit/src/shared/node/doctor/reporter.ts similarity index 100% rename from packages/cli-kit/src/public/node/doctor/reporter.ts rename to packages/cli-kit/src/shared/node/doctor/reporter.ts diff --git a/packages/cli-kit/src/public/node/doctor/types.ts b/packages/cli-kit/src/shared/node/doctor/types.ts similarity index 100% rename from packages/cli-kit/src/public/node/doctor/types.ts rename to packages/cli-kit/src/shared/node/doctor/types.ts diff --git a/packages/cli-kit/src/public/node/dot-env.test.ts b/packages/cli-kit/src/shared/node/dot-env.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/dot-env.test.ts rename to packages/cli-kit/src/shared/node/dot-env.test.ts diff --git a/packages/cli-kit/src/public/node/dot-env.ts b/packages/cli-kit/src/shared/node/dot-env.ts similarity index 97% rename from packages/cli-kit/src/public/node/dot-env.ts rename to packages/cli-kit/src/shared/node/dot-env.ts index 9f22b17904b..23841fa71e0 100644 --- a/packages/cli-kit/src/public/node/dot-env.ts +++ b/packages/cli-kit/src/shared/node/dot-env.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import {AbortError} from './error.js' import {fileExists, readFile, writeFile} from './fs.js' -import {outputDebug, outputContent, outputToken} from '../../public/node/output.js' +import {outputDebug, outputContent, outputToken} from './output.js' import {parse} from 'dotenv' /** diff --git a/packages/cli-kit/src/public/node/environment.ts b/packages/cli-kit/src/shared/node/environment.ts similarity index 99% rename from packages/cli-kit/src/public/node/environment.ts rename to packages/cli-kit/src/shared/node/environment.ts index 653b4895d75..4321347744b 100644 --- a/packages/cli-kit/src/public/node/environment.ts +++ b/packages/cli-kit/src/shared/node/environment.ts @@ -1,7 +1,7 @@ import {nonRandomUUID} from './crypto.js' import {isTruthy} from './context/utilities.js' import {sniffForJson} from './path.js' -import {environmentVariables, systemEnvironmentVariables} from '../../private/node/constants.js' +import {environmentVariables, systemEnvironmentVariables} from './internal/constants.js' /** * It returns the environment variables of the environment diff --git a/packages/cli-kit/src/public/node/environments.test.ts b/packages/cli-kit/src/shared/node/environments.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/environments.test.ts rename to packages/cli-kit/src/shared/node/environments.test.ts diff --git a/packages/cli-kit/src/public/node/environments.ts b/packages/cli-kit/src/shared/node/environments.ts similarity index 97% rename from packages/cli-kit/src/public/node/environments.ts rename to packages/cli-kit/src/shared/node/environments.ts index 2555f7cc775..6c9bcd7a906 100644 --- a/packages/cli-kit/src/public/node/environments.ts +++ b/packages/cli-kit/src/shared/node/environments.ts @@ -3,7 +3,7 @@ import {findPathUp, readFile} from './fs.js' import {cwd} from './path.js' import * as metadata from './metadata.js' import {renderWarning} from './ui.js' -import {JsonMap} from '../../private/common/json.js' +import {JsonMap} from '../common/internal/json.js' export interface Environments { [name: string]: JsonMap diff --git a/packages/cli-kit/src/public/node/error-handler.test.ts b/packages/cli-kit/src/shared/node/error-handler.test.ts similarity index 96% rename from packages/cli-kit/src/public/node/error-handler.test.ts rename to packages/cli-kit/src/shared/node/error-handler.test.ts index 490cb631ea2..68bd2ce877c 100644 --- a/packages/cli-kit/src/public/node/error-handler.test.ts +++ b/packages/cli-kit/src/shared/node/error-handler.test.ts @@ -3,9 +3,9 @@ import * as metadata from './metadata.js' import {ciPlatform, cloudEnvironment, isUnitTest, macAddress} from './context/local.js' import {mockAndCaptureOutput} from './testing/output.js' import * as error from './error.js' -import {hashString} from '../../public/node/crypto.js' -import {isLocalEnvironment} from '../../private/node/context/service.js' -import {getLastSeenUserIdAfterAuth} from '../../private/node/session.js' +import {hashString} from './crypto.js' +import {isLocalEnvironment} from './internal/context/service.js' +import {getLastSeenUserIdAfterAuth} from '../../identity/core/session.js' import {settings} from '@oclif/core' import {beforeEach, describe, expect, test, vi} from 'vitest' @@ -38,9 +38,9 @@ vi.mock('@bugsnag/js', () => { }) vi.mock('./cli.js') vi.mock('./context/local.js') -vi.mock('../../public/node/crypto.js') -vi.mock('../../private/node/context/service.js') -vi.mock('../../private/node/session.js') +vi.mock('./crypto.js') +vi.mock('./internal/context/service.js') +vi.mock('../../identity/core/session.js') vi.mock('@oclif/core', () => ({ settings: { debug: false, diff --git a/packages/cli-kit/src/public/node/error-handler.ts b/packages/cli-kit/src/shared/node/error-handler.ts similarity index 95% rename from packages/cli-kit/src/public/node/error-handler.ts rename to packages/cli-kit/src/shared/node/error-handler.ts index 29803ec26ca..bad56cbcf3a 100644 --- a/packages/cli-kit/src/public/node/error-handler.ts +++ b/packages/cli-kit/src/shared/node/error-handler.ts @@ -10,13 +10,13 @@ import { handler, cleanSingleStackTracePath, } from './error.js' -import {isLocalEnvironment} from '../../private/node/context/service.js' -import {getEnvironmentData} from '../../private/node/analytics.js' -import {outputDebug, outputInfo} from '../../public/node/output.js' -import {bugsnagApiKey, reportingRateLimit} from '../../private/node/constants.js' +import {isLocalEnvironment} from './internal/context/service.js' +import {getEnvironmentData} from './internal/analytics.js' +import {outputDebug, outputInfo} from './output.js' +import {bugsnagApiKey, reportingRateLimit} from './internal/constants.js' +import {runWithRateLimit} from './internal/conf-store.js' import {CLI_KIT_VERSION} from '../common/version.js' -import {runWithRateLimit} from '../../private/node/conf-store.js' -import {getLastSeenUserIdAfterAuth} from '../../private/node/session.js' +import {getLastSeenUserIdAfterAuth} from '../../identity/core/session.js' import {settings, Interfaces} from '@oclif/core' import StackTracey from 'stacktracey' import Bugsnag, {Event} from '@bugsnag/js' @@ -232,7 +232,7 @@ export async function registerCleanBugsnagErrorsFromWithinPlugins(config: Interf }) } -// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any +// eslint-disable-next-line @typescript-eslint/no-explicit-any export async function addBugsnagMetadata(event: any, config: Interfaces.Config): Promise { const publicData = metadata.getAllPublicMetadata() const {commandStartOptions} = metadata.getAllSensitiveMetadata() diff --git a/packages/cli-kit/src/public/node/error.test.ts b/packages/cli-kit/src/shared/node/error.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/error.test.ts rename to packages/cli-kit/src/shared/node/error.test.ts diff --git a/packages/cli-kit/src/public/node/error.ts b/packages/cli-kit/src/shared/node/error.ts similarity index 97% rename from packages/cli-kit/src/public/node/error.ts rename to packages/cli-kit/src/shared/node/error.ts index c8ada6f48e8..ea801904f3a 100644 --- a/packages/cli-kit/src/public/node/error.ts +++ b/packages/cli-kit/src/shared/node/error.ts @@ -1,7 +1,7 @@ import {AlertCustomSection, renderFatalError} from './ui.js' -import {OutputMessage, stringifyMessage, TokenizedString} from '../../public/node/output.js' -import {normalizePath} from '../../public/node/path.js' -import {InlineToken, TokenItem, tokenItemToString} from '../../private/node/ui/components/TokenizedText.js' +import {OutputMessage, stringifyMessage, TokenizedString} from './output.js' +import {normalizePath} from './path.js' +import {InlineToken, TokenItem, tokenItemToString} from '../ui/components/TokenizedText.js' import {Errors} from '@oclif/core' export {ExtendableError} from 'ts-error' diff --git a/packages/cli-kit/src/public/node/figures.ts b/packages/cli-kit/src/shared/node/figures.ts similarity index 100% rename from packages/cli-kit/src/public/node/figures.ts rename to packages/cli-kit/src/shared/node/figures.ts diff --git a/packages/cli-kit/src/public/node/framework.test.ts b/packages/cli-kit/src/shared/node/framework.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/framework.test.ts rename to packages/cli-kit/src/shared/node/framework.test.ts diff --git a/packages/cli-kit/src/public/node/framework.ts b/packages/cli-kit/src/shared/node/framework.ts similarity index 100% rename from packages/cli-kit/src/public/node/framework.ts rename to packages/cli-kit/src/shared/node/framework.ts diff --git a/packages/cli-kit/src/public/node/fs.test.ts b/packages/cli-kit/src/shared/node/fs.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/fs.test.ts rename to packages/cli-kit/src/shared/node/fs.test.ts diff --git a/packages/cli-kit/src/public/node/fs.ts b/packages/cli-kit/src/shared/node/fs.ts similarity index 99% rename from packages/cli-kit/src/public/node/fs.ts rename to packages/cli-kit/src/shared/node/fs.ts index 09c16a4ce35..14ea5a91d0a 100644 --- a/packages/cli-kit/src/public/node/fs.ts +++ b/packages/cli-kit/src/shared/node/fs.ts @@ -1,7 +1,7 @@ import {joinPath, normalizePath} from './path.js' -import {outputContent, outputToken, outputDebug} from '../../public/node/output.js' +import {outputContent, outputToken, outputDebug} from './output.js' import {getRandomName, RandomNameFamily} from '../common/string.js' -import {OverloadParameters} from '../../private/common/ts/overloaded-parameters.js' +import {OverloadParameters} from '../common/internal/ts/overloaded-parameters.js' import { copy as fsCopy, ensureFile as fsEnsureFile, diff --git a/packages/cli-kit/src/public/node/git.test.ts b/packages/cli-kit/src/shared/node/git.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/git.test.ts rename to packages/cli-kit/src/shared/node/git.test.ts diff --git a/packages/cli-kit/src/public/node/git.ts b/packages/cli-kit/src/shared/node/git.ts similarity index 99% rename from packages/cli-kit/src/public/node/git.ts rename to packages/cli-kit/src/shared/node/git.ts index e095aa01150..22175296994 100644 --- a/packages/cli-kit/src/public/node/git.ts +++ b/packages/cli-kit/src/shared/node/git.ts @@ -13,7 +13,7 @@ import { import {AbortError} from './error.js' import {cwd, joinPath} from './path.js' import {runWithTimer} from './metadata.js' -import {outputContent, outputToken, outputDebug} from '../../public/node/output.js' +import {outputContent, outputToken, outputDebug} from './output.js' import git, {TaskOptions, SimpleGitProgressEvent, DefaultLogFields, ListLogLine, SimpleGit} from 'simple-git' import ignore from 'ignore' diff --git a/packages/cli-kit/src/public/node/github.test.ts b/packages/cli-kit/src/shared/node/github.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/github.test.ts rename to packages/cli-kit/src/shared/node/github.test.ts diff --git a/packages/cli-kit/src/public/node/github.ts b/packages/cli-kit/src/shared/node/github.ts similarity index 98% rename from packages/cli-kit/src/public/node/github.ts rename to packages/cli-kit/src/shared/node/github.ts index 9214dafd754..9052e04d517 100644 --- a/packages/cli-kit/src/public/node/github.ts +++ b/packages/cli-kit/src/shared/node/github.ts @@ -5,7 +5,7 @@ import {writeFile, mkdir, inTemporaryDirectory, moveFile, chmod} from './fs.js' import {dirname, joinPath} from './path.js' import {runWithTimer} from './metadata.js' import {AbortError} from './error.js' -import {outputContent, outputDebug, outputToken} from '../../public/node/output.js' +import {outputContent, outputDebug, outputToken} from './output.js' class GitHubClientError extends Error { // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/cli-kit/src/public/node/global-context.ts b/packages/cli-kit/src/shared/node/global-context.ts similarity index 100% rename from packages/cli-kit/src/public/node/global-context.ts rename to packages/cli-kit/src/shared/node/global-context.ts diff --git a/packages/cli-kit/src/public/node/hidden-folder.test.ts b/packages/cli-kit/src/shared/node/hidden-folder.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/hidden-folder.test.ts rename to packages/cli-kit/src/shared/node/hidden-folder.test.ts diff --git a/packages/cli-kit/src/public/node/hidden-folder.ts b/packages/cli-kit/src/shared/node/hidden-folder.ts similarity index 100% rename from packages/cli-kit/src/public/node/hidden-folder.ts rename to packages/cli-kit/src/shared/node/hidden-folder.ts diff --git a/packages/cli-kit/src/public/node/hooks/deprecations.ts b/packages/cli-kit/src/shared/node/hooks/deprecations.ts similarity index 94% rename from packages/cli-kit/src/public/node/hooks/deprecations.ts rename to packages/cli-kit/src/shared/node/hooks/deprecations.ts index 16d01eca0f4..4cc1e84c194 100644 --- a/packages/cli-kit/src/public/node/hooks/deprecations.ts +++ b/packages/cli-kit/src/shared/node/hooks/deprecations.ts @@ -1,4 +1,4 @@ -import {getNextDeprecationDate} from '../../../private/node/context/deprecations-store.js' +import {getNextDeprecationDate} from '../internal/context/deprecations-store.js' import {renderWarning} from '../ui.js' import {Command} from '@oclif/core' diff --git a/packages/cli-kit/src/public/node/hooks/postrun.ts b/packages/cli-kit/src/shared/node/hooks/postrun.ts similarity index 93% rename from packages/cli-kit/src/public/node/hooks/postrun.ts rename to packages/cli-kit/src/shared/node/hooks/postrun.ts index 6c67eb858df..04af8bb9b34 100644 --- a/packages/cli-kit/src/public/node/hooks/postrun.ts +++ b/packages/cli-kit/src/shared/node/hooks/postrun.ts @@ -1,8 +1,8 @@ import {postrun as deprecationsHook} from './deprecations.js' import {reportAnalyticsEvent} from '../analytics.js' -import {outputDebug} from '../../../public/node/output.js' +import {outputDebug} from '../output.js' import BaseCommand from '../base-command.js' -import * as metadata from '../../../public/node/metadata.js' +import * as metadata from '../metadata.js' import {Command, Hook} from '@oclif/core' let postRunHookCompleted = false diff --git a/packages/cli-kit/src/public/node/hooks/prerun.test.ts b/packages/cli-kit/src/shared/node/hooks/prerun.test.ts similarity index 96% rename from packages/cli-kit/src/public/node/hooks/prerun.test.ts rename to packages/cli-kit/src/shared/node/hooks/prerun.test.ts index d242ddacfbc..b6ff8a845f3 100644 --- a/packages/cli-kit/src/public/node/hooks/prerun.test.ts +++ b/packages/cli-kit/src/shared/node/hooks/prerun.test.ts @@ -1,10 +1,10 @@ import {parseCommandContent, warnOnAvailableUpgrade} from './prerun.js' import {checkForCachedNewVersion, packageManagerFromUserAgent} from '../node-package-manager.js' -import {cacheClear} from '../../../private/node/conf-store.js' +import {cacheClear} from '../internal/conf-store.js' import {mockAndCaptureOutput} from '../testing/output.js' import {describe, expect, test, vi, afterEach, beforeEach} from 'vitest' -vi.mock('../node-package-manager') +vi.mock('../node-package-manager.js') beforeEach(() => { cacheClear() diff --git a/packages/cli-kit/src/public/node/hooks/prerun.ts b/packages/cli-kit/src/shared/node/hooks/prerun.ts similarity index 91% rename from packages/cli-kit/src/public/node/hooks/prerun.ts rename to packages/cli-kit/src/shared/node/hooks/prerun.ts index 298df53a913..f889b1e8661 100644 --- a/packages/cli-kit/src/public/node/hooks/prerun.ts +++ b/packages/cli-kit/src/shared/node/hooks/prerun.ts @@ -1,10 +1,10 @@ import {CLI_KIT_VERSION} from '../../common/version.js' import {checkForNewVersion, checkForCachedNewVersion} from '../node-package-manager.js' -import {startAnalytics} from '../../../private/node/analytics.js' -import {outputDebug, outputWarn} from '../../../public/node/output.js' -import {getOutputUpdateCLIReminder} from '../../../public/node/upgrade.js' -import Command from '../../../public/node/base-command.js' -import {runAtMinimumInterval} from '../../../private/node/conf-store.js' +import {startAnalytics} from '../internal/analytics.js' +import {outputDebug, outputWarn} from '../output.js' +import {getOutputUpdateCLIReminder} from '../upgrade.js' +import Command from '../base-command.js' +import {runAtMinimumInterval} from '../internal/conf-store.js' import {fetchNotificationsInBackground} from '../notifications-system.js' import {isPreReleaseVersion} from '../version.js' import {Hook} from '@oclif/core' diff --git a/packages/cli-kit/src/public/node/hrtime.ts b/packages/cli-kit/src/shared/node/hrtime.ts similarity index 100% rename from packages/cli-kit/src/public/node/hrtime.ts rename to packages/cli-kit/src/shared/node/hrtime.ts diff --git a/packages/cli-kit/src/public/node/http.test.ts b/packages/cli-kit/src/shared/node/http.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/http.test.ts rename to packages/cli-kit/src/shared/node/http.test.ts diff --git a/packages/cli-kit/src/public/node/http.ts b/packages/cli-kit/src/shared/node/http.ts similarity index 96% rename from packages/cli-kit/src/public/node/http.ts rename to packages/cli-kit/src/shared/node/http.ts index 12c344343e3..5b4b80d7056 100644 --- a/packages/cli-kit/src/public/node/http.ts +++ b/packages/cli-kit/src/shared/node/http.ts @@ -3,11 +3,11 @@ import {dirname} from './path.js' import {createFileWriteStream, fileExistsSync, mkdirSync, unlinkFileSync} from './fs.js' import {runWithTimer} from './metadata.js' import {maxRequestTimeForNetworkCallsMs, skipNetworkLevelRetry} from './environment.js' -import {httpsAgent, sanitizedHeadersOutput} from '../../private/node/api/headers.js' -import {sanitizeURL} from '../../private/node/api/urls.js' -import {outputContent, outputDebug, outputToken} from '../../public/node/output.js' -import {NetworkRetryBehaviour, simpleRequestWithDebugLog} from '../../private/node/api.js' -import {DEFAULT_MAX_TIME_MS} from '../../private/node/sleep-with-backoff.js' +import {httpsAgent, sanitizedHeadersOutput} from './internal/api/headers.js' +import {sanitizeURL} from './internal/api/urls.js' +import {outputContent, outputDebug, outputToken} from './output.js' +import {NetworkRetryBehaviour, simpleRequestWithDebugLog} from './internal/api.js' +import {DEFAULT_MAX_TIME_MS} from './internal/sleep-with-backoff.js' import FormData from 'form-data' import nodeFetch, {RequestInfo, RequestInit, Response} from 'node-fetch' diff --git a/packages/cli-kit/src/public/node/import-extractor.test.ts b/packages/cli-kit/src/shared/node/import-extractor.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/import-extractor.test.ts rename to packages/cli-kit/src/shared/node/import-extractor.test.ts diff --git a/packages/cli-kit/src/public/node/import-extractor.ts b/packages/cli-kit/src/shared/node/import-extractor.ts similarity index 100% rename from packages/cli-kit/src/public/node/import-extractor.ts rename to packages/cli-kit/src/shared/node/import-extractor.ts diff --git a/packages/cli-kit/src/public/node/ink.ts b/packages/cli-kit/src/shared/node/ink.ts similarity index 100% rename from packages/cli-kit/src/public/node/ink.ts rename to packages/cli-kit/src/shared/node/ink.ts diff --git a/packages/cli-kit/src/private/node/__snapshots__/otel-metrics.test.ts.snap b/packages/cli-kit/src/shared/node/internal/__snapshots__/otel-metrics.test.ts.snap similarity index 100% rename from packages/cli-kit/src/private/node/__snapshots__/otel-metrics.test.ts.snap rename to packages/cli-kit/src/shared/node/internal/__snapshots__/otel-metrics.test.ts.snap diff --git a/packages/cli-kit/src/private/node/analytics.ts b/packages/cli-kit/src/shared/node/internal/analytics.ts similarity index 84% rename from packages/cli-kit/src/private/node/analytics.ts rename to packages/cli-kit/src/shared/node/internal/analytics.ts index 67a869ee8d8..11df954587d 100644 --- a/packages/cli-kit/src/private/node/analytics.ts +++ b/packages/cli-kit/src/shared/node/internal/analytics.ts @@ -1,14 +1,14 @@ -import {getLastSeenAuthMethod} from './session.js' -import {hashString} from '../../public/node/crypto.js' -import {getPackageManager, packageManagerFromUserAgent} from '../../public/node/node-package-manager.js' -import BaseCommand from '../../public/node/base-command.js' -import {CommandContent} from '../../public/node/hooks/prerun.js' -import * as metadata from '../../public/node/metadata.js' -import {platformAndArch} from '../../public/node/os.js' -import {ciPlatform, cloudEnvironment, macAddress} from '../../public/node/context/local.js' -import {cwd} from '../../public/node/path.js' -import {currentProcessIsGlobal} from '../../public/node/is-global.js' -import {isWsl} from '../../public/node/system.js' +import {getLastSeenAuthMethod} from '../../../identity/core/session.js' +import {hashString} from '../crypto.js' +import {getPackageManager, packageManagerFromUserAgent} from '../node-package-manager.js' +import BaseCommand from '../base-command.js' +import {CommandContent} from '../hooks/prerun.js' +import * as metadata from '../metadata.js' +import {platformAndArch} from '../os.js' +import {ciPlatform, cloudEnvironment, macAddress} from '../context/local.js' +import {cwd} from '../path.js' +import {currentProcessIsGlobal} from '../is-global.js' +import {isWsl} from '../system.js' import {Command, Interfaces} from '@oclif/core' interface StartOptions { diff --git a/packages/cli-kit/src/private/node/analytics/bounded-collections.test.ts b/packages/cli-kit/src/shared/node/internal/analytics/bounded-collections.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/analytics/bounded-collections.test.ts rename to packages/cli-kit/src/shared/node/internal/analytics/bounded-collections.test.ts diff --git a/packages/cli-kit/src/private/node/analytics/bounded-collections.ts b/packages/cli-kit/src/shared/node/internal/analytics/bounded-collections.ts similarity index 100% rename from packages/cli-kit/src/private/node/analytics/bounded-collections.ts rename to packages/cli-kit/src/shared/node/internal/analytics/bounded-collections.ts diff --git a/packages/cli-kit/src/private/node/analytics/error-categorizer.test.ts b/packages/cli-kit/src/shared/node/internal/analytics/error-categorizer.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/analytics/error-categorizer.test.ts rename to packages/cli-kit/src/shared/node/internal/analytics/error-categorizer.test.ts diff --git a/packages/cli-kit/src/private/node/analytics/error-categorizer.ts b/packages/cli-kit/src/shared/node/internal/analytics/error-categorizer.ts similarity index 100% rename from packages/cli-kit/src/private/node/analytics/error-categorizer.ts rename to packages/cli-kit/src/shared/node/internal/analytics/error-categorizer.ts diff --git a/packages/cli-kit/src/private/node/analytics/storage.test.ts b/packages/cli-kit/src/shared/node/internal/analytics/storage.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/analytics/storage.test.ts rename to packages/cli-kit/src/shared/node/internal/analytics/storage.test.ts diff --git a/packages/cli-kit/src/private/node/analytics/storage.ts b/packages/cli-kit/src/shared/node/internal/analytics/storage.ts similarity index 100% rename from packages/cli-kit/src/private/node/analytics/storage.ts rename to packages/cli-kit/src/shared/node/internal/analytics/storage.ts diff --git a/packages/cli-kit/src/private/node/api.test.ts b/packages/cli-kit/src/shared/node/internal/api.test.ts similarity index 99% rename from packages/cli-kit/src/private/node/api.test.ts rename to packages/cli-kit/src/shared/node/internal/api.test.ts index 5dd325be6ca..185a8f4340e 100644 --- a/packages/cli-kit/src/private/node/api.test.ts +++ b/packages/cli-kit/src/shared/node/internal/api.test.ts @@ -1,9 +1,9 @@ import {retryAwareRequest, isNetworkError, isTransientNetworkError} from './api.js' -import {recordRetry} from '../../public/node/analytics.js' +import {recordRetry} from '../analytics.js' import {ClientError} from 'graphql-request' import {describe, test, vi, expect, beforeEach, afterEach} from 'vitest' -vi.mock('../../public/node/analytics.js', () => ({ +vi.mock('../analytics.js', () => ({ recordRetry: vi.fn(), })) diff --git a/packages/cli-kit/src/private/node/api.ts b/packages/cli-kit/src/shared/node/internal/api.ts similarity index 99% rename from packages/cli-kit/src/private/node/api.ts rename to packages/cli-kit/src/shared/node/internal/api.ts index 6a493350e23..80217f2281b 100644 --- a/packages/cli-kit/src/private/node/api.ts +++ b/packages/cli-kit/src/shared/node/internal/api.ts @@ -1,8 +1,8 @@ import {sanitizedHeadersOutput} from './api/headers.js' import {sanitizeURL} from './api/urls.js' import {sleepWithBackoffUntil} from './sleep-with-backoff.js' -import {outputDebug} from '../../public/node/output.js' -import {recordRetry} from '../../public/node/analytics.js' +import {outputDebug} from '../output.js' +import {recordRetry} from '../analytics.js' import {Headers} from 'form-data' import {ClientError} from 'graphql-request' import {performance} from 'perf_hooks' diff --git a/packages/cli-kit/src/private/node/api/graphql.ts b/packages/cli-kit/src/shared/node/internal/api/graphql.ts similarity index 96% rename from packages/cli-kit/src/private/node/api/graphql.ts rename to packages/cli-kit/src/shared/node/internal/api/graphql.ts index 9a0136db2c6..1e78b71bea6 100644 --- a/packages/cli-kit/src/private/node/api/graphql.ts +++ b/packages/cli-kit/src/shared/node/internal/api/graphql.ts @@ -1,7 +1,7 @@ import {GraphQLClientError, sanitizedHeadersOutput} from './headers.js' import {sanitizeURL} from './urls.js' -import {stringifyMessage, outputContent, outputToken, outputDebug} from '../../../public/node/output.js' -import {AbortError} from '../../../public/node/error.js' +import {stringifyMessage, outputContent, outputToken, outputDebug} from '../../output.js' +import {AbortError} from '../../error.js' import {ClientError, Variables} from 'graphql-request' export function debugLogRequestInfo( diff --git a/packages/cli-kit/src/private/node/api/headers.test.ts b/packages/cli-kit/src/shared/node/internal/api/headers.test.ts similarity index 92% rename from packages/cli-kit/src/private/node/api/headers.test.ts rename to packages/cli-kit/src/shared/node/internal/api/headers.test.ts index be8ca5ff495..8e61216fee0 100644 --- a/packages/cli-kit/src/private/node/api/headers.test.ts +++ b/packages/cli-kit/src/shared/node/internal/api/headers.test.ts @@ -1,11 +1,11 @@ import {buildHeaders, sanitizedHeadersOutput, GraphQLClientError} from './headers.js' -import {CLI_KIT_VERSION} from '../../../public/common/version.js' -import {randomUUID} from '../../../public/node/crypto.js' -import {firstPartyDev, isUnitTest} from '../../../public/node/context/local.js' +import {CLI_KIT_VERSION} from '../../../common/version.js' +import {randomUUID} from '../../crypto.js' +import {firstPartyDev, isUnitTest} from '../../context/local.js' import {test, vi, expect, describe, beforeEach} from 'vitest' -vi.mock('../../../public/node/crypto.js') -vi.mock('../../../public/node/context/local.js') +vi.mock('../../crypto.js') +vi.mock('../../context/local.js') vi.mock('../version') beforeEach(() => { diff --git a/packages/cli-kit/src/private/node/api/headers.ts b/packages/cli-kit/src/shared/node/internal/api/headers.ts similarity index 92% rename from packages/cli-kit/src/private/node/api/headers.ts rename to packages/cli-kit/src/shared/node/internal/api/headers.ts index e743b3258c2..68642babad5 100644 --- a/packages/cli-kit/src/private/node/api/headers.ts +++ b/packages/cli-kit/src/shared/node/internal/api/headers.ts @@ -1,6 +1,6 @@ -import {CLI_KIT_VERSION} from '../../../public/common/version.js' -import {firstPartyDev} from '../../../public/node/context/local.js' -import {AbortError} from '../../../public/node/error.js' +import {CLI_KIT_VERSION} from '../../../common/version.js' +import {firstPartyDev} from '../../context/local.js' +import {AbortError} from '../../error.js' import https from 'https' class RequestClientError extends AbortError { diff --git a/packages/cli-kit/src/private/node/api/urls.test.ts b/packages/cli-kit/src/shared/node/internal/api/urls.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/api/urls.test.ts rename to packages/cli-kit/src/shared/node/internal/api/urls.test.ts diff --git a/packages/cli-kit/src/private/node/api/urls.ts b/packages/cli-kit/src/shared/node/internal/api/urls.ts similarity index 100% rename from packages/cli-kit/src/private/node/api/urls.ts rename to packages/cli-kit/src/shared/node/internal/api/urls.ts diff --git a/packages/cli-kit/src/private/node/conf-store.test.ts b/packages/cli-kit/src/shared/node/internal/conf-store.test.ts similarity index 98% rename from packages/cli-kit/src/private/node/conf-store.test.ts rename to packages/cli-kit/src/shared/node/internal/conf-store.test.ts index 8e714a34062..8d1438adad2 100644 --- a/packages/cli-kit/src/private/node/conf-store.test.ts +++ b/packages/cli-kit/src/shared/node/internal/conf-store.test.ts @@ -14,8 +14,8 @@ import { setCachedPartnerAccountStatus, runWithRateLimit, } from './conf-store.js' -import {LocalStorage} from '../../public/node/local-storage.js' -import {inTemporaryDirectory} from '../../public/node/fs.js' +import {LocalStorage} from '../local-storage.js' +import {inTemporaryDirectory} from '../fs.js' import {afterEach, beforeEach, describe, expect, test, vi} from 'vitest' describe('getSession', () => { diff --git a/packages/cli-kit/src/private/node/conf-store.ts b/packages/cli-kit/src/shared/node/internal/conf-store.ts similarity index 97% rename from packages/cli-kit/src/private/node/conf-store.ts rename to packages/cli-kit/src/shared/node/internal/conf-store.ts index e5cae2306de..b3488983d40 100644 --- a/packages/cli-kit/src/private/node/conf-store.ts +++ b/packages/cli-kit/src/shared/node/internal/conf-store.ts @@ -1,6 +1,6 @@ -import {isUnitTest} from '../../public/node/context/local.js' -import {LocalStorage} from '../../public/node/local-storage.js' -import {outputContent, outputDebug} from '../../public/node/output.js' +import {isUnitTest} from '../context/local.js' +import {LocalStorage} from '../local-storage.js' +import {outputContent, outputDebug} from '../output.js' interface CacheValue { value: T diff --git a/packages/cli-kit/src/private/node/constants.ts b/packages/cli-kit/src/shared/node/internal/constants.ts similarity index 98% rename from packages/cli-kit/src/private/node/constants.ts rename to packages/cli-kit/src/shared/node/internal/constants.ts index 3672b8b4c29..f8f977c6a0a 100644 --- a/packages/cli-kit/src/private/node/constants.ts +++ b/packages/cli-kit/src/shared/node/internal/constants.ts @@ -1,4 +1,4 @@ -import {joinPath} from '../../public/node/path.js' +import {joinPath} from '../path.js' import envPaths from 'env-paths' const identifier = 'shopify-cli' diff --git a/packages/cli-kit/src/private/node/content-tokens.test.ts b/packages/cli-kit/src/shared/node/internal/content-tokens.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/content-tokens.test.ts rename to packages/cli-kit/src/shared/node/internal/content-tokens.test.ts diff --git a/packages/cli-kit/src/private/node/content-tokens.ts b/packages/cli-kit/src/shared/node/internal/content-tokens.ts similarity index 94% rename from packages/cli-kit/src/private/node/content-tokens.ts rename to packages/cli-kit/src/shared/node/internal/content-tokens.ts index 932c53389c0..b167e8d7694 100644 --- a/packages/cli-kit/src/private/node/content-tokens.ts +++ b/packages/cli-kit/src/shared/node/internal/content-tokens.ts @@ -1,6 +1,6 @@ -import colors from '../../public/node/colors.js' -import {OutputMessage, stringifyMessage} from '../../public/node/output.js' -import {relativizePath} from '../../public/node/path.js' +import colors from '../colors.js' +import {OutputMessage, stringifyMessage} from '../output.js' +import {relativizePath} from '../path.js' import terminalLink from 'terminal-link' import cjs from 'color-json' import type {Change} from 'diff' diff --git a/packages/cli-kit/src/private/node/context/deprecations-store.ts b/packages/cli-kit/src/shared/node/internal/context/deprecations-store.ts similarity index 100% rename from packages/cli-kit/src/private/node/context/deprecations-store.ts rename to packages/cli-kit/src/shared/node/internal/context/deprecations-store.ts diff --git a/packages/cli-kit/src/private/node/context/service.test.ts b/packages/cli-kit/src/shared/node/internal/context/service.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/context/service.test.ts rename to packages/cli-kit/src/shared/node/internal/context/service.test.ts diff --git a/packages/cli-kit/src/private/node/context/service.ts b/packages/cli-kit/src/shared/node/internal/context/service.ts similarity index 100% rename from packages/cli-kit/src/private/node/context/service.ts rename to packages/cli-kit/src/shared/node/internal/context/service.ts diff --git a/packages/cli-kit/src/private/node/context/utilities.ts b/packages/cli-kit/src/shared/node/internal/context/utilities.ts similarity index 100% rename from packages/cli-kit/src/private/node/context/utilities.ts rename to packages/cli-kit/src/shared/node/internal/context/utilities.ts diff --git a/packages/cli-kit/src/private/node/otel-metrics.test.ts b/packages/cli-kit/src/shared/node/internal/otel-metrics.test.ts similarity index 94% rename from packages/cli-kit/src/private/node/otel-metrics.test.ts rename to packages/cli-kit/src/shared/node/internal/otel-metrics.test.ts index 0209846d62a..17fbee06770 100644 --- a/packages/cli-kit/src/private/node/otel-metrics.test.ts +++ b/packages/cli-kit/src/shared/node/internal/otel-metrics.test.ts @@ -1,5 +1,5 @@ import {recordMetrics} from './otel-metrics.js' -import {mockAndCaptureOutput} from '../../public/node/testing/output.js' +import {mockAndCaptureOutput} from '../testing/output.js' import {describe, expect, test, vi} from 'vitest' describe('otel-metrics', () => { diff --git a/packages/cli-kit/src/private/node/otel-metrics.ts b/packages/cli-kit/src/shared/node/internal/otel-metrics.ts similarity index 93% rename from packages/cli-kit/src/private/node/otel-metrics.ts rename to packages/cli-kit/src/shared/node/internal/otel-metrics.ts index 9f0dd3a3f56..d67198e4c16 100644 --- a/packages/cli-kit/src/private/node/otel-metrics.ts +++ b/packages/cli-kit/src/shared/node/internal/otel-metrics.ts @@ -1,10 +1,10 @@ -import {MetricInstrumentType, OtelService} from '../../public/node/vendor/otel-js/service/types.js' -import {outputContent, outputDebug, outputToken} from '../../public/node/output.js' +import {MetricInstrumentType, OtelService} from '../../vendor/otel-js/service/types.js' +import {outputContent, outputDebug, outputToken} from '../output.js' import { DefaultOtelService, DefaultOtelServiceOptions, -} from '../../public/node/vendor/otel-js/service/DefaultOtelService/DefaultOtelService.js' -import {isUnitTest, opentelemetryDomain} from '../../public/node/context/local.js' +} from '../../vendor/otel-js/service/DefaultOtelService/DefaultOtelService.js' +import {isUnitTest, opentelemetryDomain} from '../context/local.js' import {ValueType} from '@opentelemetry/api' type MetricRecorder = diff --git a/packages/cli-kit/src/private/node/output.ts b/packages/cli-kit/src/shared/node/internal/output.ts similarity index 93% rename from packages/cli-kit/src/private/node/output.ts rename to packages/cli-kit/src/shared/node/internal/output.ts index db114e71e43..35dc4e28b6e 100644 --- a/packages/cli-kit/src/private/node/output.ts +++ b/packages/cli-kit/src/shared/node/internal/output.ts @@ -1,4 +1,4 @@ -import {isUnitTest} from '../../public/node/context/local.js' +import {isUnitTest} from '../context/local.js' import { OutputMessage, LogLevel, @@ -8,7 +8,7 @@ import { Logger, shouldDisplayColors, unstyled, -} from '../../public/node/output.js' +} from '../output.js' /** * Returns a colored or uncolored version of a message, depending on the environment. diff --git a/packages/cli-kit/src/private/node/request-ids.test.ts b/packages/cli-kit/src/shared/node/internal/request-ids.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/request-ids.test.ts rename to packages/cli-kit/src/shared/node/internal/request-ids.test.ts diff --git a/packages/cli-kit/src/private/node/request-ids.ts b/packages/cli-kit/src/shared/node/internal/request-ids.ts similarity index 100% rename from packages/cli-kit/src/private/node/request-ids.ts rename to packages/cli-kit/src/shared/node/internal/request-ids.ts diff --git a/packages/cli-kit/src/private/node/sleep-with-backoff.test.ts b/packages/cli-kit/src/shared/node/internal/sleep-with-backoff.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/sleep-with-backoff.test.ts rename to packages/cli-kit/src/shared/node/internal/sleep-with-backoff.test.ts diff --git a/packages/cli-kit/src/private/node/sleep-with-backoff.ts b/packages/cli-kit/src/shared/node/internal/sleep-with-backoff.ts similarity index 97% rename from packages/cli-kit/src/private/node/sleep-with-backoff.ts rename to packages/cli-kit/src/shared/node/internal/sleep-with-backoff.ts index 8d077039ea3..483dedd8c44 100644 --- a/packages/cli-kit/src/private/node/sleep-with-backoff.ts +++ b/packages/cli-kit/src/shared/node/internal/sleep-with-backoff.ts @@ -1,4 +1,4 @@ -import {sleep} from '../../public/node/system.js' +import {sleep} from '../system.js' const DEFAULT_RETRY_DELAY_MS = 300 // 10 seconds default diff --git a/packages/cli-kit/src/public/node/is-global.test.ts b/packages/cli-kit/src/shared/node/is-global.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/is-global.test.ts rename to packages/cli-kit/src/shared/node/is-global.test.ts diff --git a/packages/cli-kit/src/public/node/is-global.ts b/packages/cli-kit/src/shared/node/is-global.ts similarity index 100% rename from packages/cli-kit/src/public/node/is-global.ts rename to packages/cli-kit/src/shared/node/is-global.ts diff --git a/packages/cli-kit/src/public/node/json-schema.test.ts b/packages/cli-kit/src/shared/node/json-schema.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/json-schema.test.ts rename to packages/cli-kit/src/shared/node/json-schema.test.ts diff --git a/packages/cli-kit/src/public/node/json-schema.ts b/packages/cli-kit/src/shared/node/json-schema.ts similarity index 100% rename from packages/cli-kit/src/public/node/json-schema.ts rename to packages/cli-kit/src/shared/node/json-schema.ts diff --git a/packages/cli-kit/src/public/node/liquid.test.ts b/packages/cli-kit/src/shared/node/liquid.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/liquid.test.ts rename to packages/cli-kit/src/shared/node/liquid.test.ts diff --git a/packages/cli-kit/src/public/node/liquid.ts b/packages/cli-kit/src/shared/node/liquid.ts similarity index 97% rename from packages/cli-kit/src/public/node/liquid.ts rename to packages/cli-kit/src/shared/node/liquid.ts index 95640c0a442..47cdb18ff27 100644 --- a/packages/cli-kit/src/public/node/liquid.ts +++ b/packages/cli-kit/src/shared/node/liquid.ts @@ -11,7 +11,7 @@ import { matchGlob, } from './fs.js' import {joinPath, dirname, relativePath} from './path.js' -import {outputContent, outputToken, outputDebug} from '../../public/node/output.js' +import {outputContent, outputToken, outputDebug} from './output.js' import {Liquid} from 'liquidjs' /** diff --git a/packages/cli-kit/src/public/node/local-storage.test.ts b/packages/cli-kit/src/shared/node/local-storage.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/local-storage.test.ts rename to packages/cli-kit/src/shared/node/local-storage.test.ts diff --git a/packages/cli-kit/src/public/node/local-storage.ts b/packages/cli-kit/src/shared/node/local-storage.ts similarity index 100% rename from packages/cli-kit/src/public/node/local-storage.ts rename to packages/cli-kit/src/shared/node/local-storage.ts diff --git a/packages/cli-kit/src/public/node/logs.ts b/packages/cli-kit/src/shared/node/logs.ts similarity index 87% rename from packages/cli-kit/src/public/node/logs.ts rename to packages/cli-kit/src/shared/node/logs.ts index 64d29a3041b..ebe4f92f9be 100644 --- a/packages/cli-kit/src/public/node/logs.ts +++ b/packages/cli-kit/src/shared/node/logs.ts @@ -1,6 +1,6 @@ import {joinPath} from './path.js' import {mkdir, writeFile} from './fs.js' -import {logsFolder} from '../../private/node/constants.js' +import {logsFolder} from './internal/constants.js' export const getLogsDir = (): string => { return logsFolder() diff --git a/packages/cli-kit/src/public/node/metadata.test.ts b/packages/cli-kit/src/shared/node/metadata.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/metadata.test.ts rename to packages/cli-kit/src/shared/node/metadata.test.ts diff --git a/packages/cli-kit/src/public/node/metadata.ts b/packages/cli-kit/src/shared/node/metadata.ts similarity index 99% rename from packages/cli-kit/src/public/node/metadata.ts rename to packages/cli-kit/src/shared/node/metadata.ts index 63747f1980c..d8fb8dd420e 100644 --- a/packages/cli-kit/src/public/node/metadata.ts +++ b/packages/cli-kit/src/shared/node/metadata.ts @@ -1,7 +1,7 @@ import {isUnitTest} from './context/local.js' import {performance} from 'node:perf_hooks' import type {PickByPrefix} from '../common/ts/pick-by-prefix.js' -import type {AnyJson} from '../../private/common/json.js' +import type {AnyJson} from '../common/internal/json.js' import type {MonorailEventPublic, MonorailEventSensitive} from './monorail.js' type ProvideMetadata = () => Partial | Promise> diff --git a/packages/cli-kit/src/public/node/mimes.test.ts b/packages/cli-kit/src/shared/node/mimes.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/mimes.test.ts rename to packages/cli-kit/src/shared/node/mimes.test.ts diff --git a/packages/cli-kit/src/public/node/mimes.ts b/packages/cli-kit/src/shared/node/mimes.ts similarity index 100% rename from packages/cli-kit/src/public/node/mimes.ts rename to packages/cli-kit/src/shared/node/mimes.ts diff --git a/packages/cli-kit/src/public/node/monorail.test.ts b/packages/cli-kit/src/shared/node/monorail.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/monorail.test.ts rename to packages/cli-kit/src/shared/node/monorail.test.ts diff --git a/packages/cli-kit/src/public/node/monorail.ts b/packages/cli-kit/src/shared/node/monorail.ts similarity index 98% rename from packages/cli-kit/src/public/node/monorail.ts rename to packages/cli-kit/src/shared/node/monorail.ts index 10f1ecf1b8c..5d88713a584 100644 --- a/packages/cli-kit/src/public/node/monorail.ts +++ b/packages/cli-kit/src/shared/node/monorail.ts @@ -1,6 +1,6 @@ import {fetch} from './http.js' -import {JsonMap} from '../../private/common/json.js' -import {outputDebug, outputContent, outputToken} from '../../public/node/output.js' +import {outputDebug, outputContent, outputToken} from './output.js' +import {JsonMap} from '../common/internal/json.js' import {DeepRequired} from '../common/ts/deep-required.js' export {DeepRequired} diff --git a/packages/cli-kit/src/public/node/multiple-installation-warning.ts b/packages/cli-kit/src/shared/node/multiple-installation-warning.ts similarity index 96% rename from packages/cli-kit/src/public/node/multiple-installation-warning.ts rename to packages/cli-kit/src/shared/node/multiple-installation-warning.ts index 4e6e72e345e..2c66429d9fc 100644 --- a/packages/cli-kit/src/public/node/multiple-installation-warning.ts +++ b/packages/cli-kit/src/shared/node/multiple-installation-warning.ts @@ -2,8 +2,8 @@ import {jsonOutputEnabled} from './environment.js' import {currentProcessIsGlobal} from './is-global.js' import {renderInfo} from './ui.js' import {globalCLIVersion, localCLIVersion} from './version.js' +import {runAtMinimumInterval} from './internal/conf-store.js' import {CLI_KIT_VERSION} from '../common/version.js' -import {runAtMinimumInterval} from '../../private/node/conf-store.js' /** * Shows a warning if there are two Shopify CLI installations found (global and local). diff --git a/packages/cli-kit/src/public/node/node-package-manager.test.ts b/packages/cli-kit/src/shared/node/node-package-manager.test.ts similarity index 99% rename from packages/cli-kit/src/public/node/node-package-manager.test.ts rename to packages/cli-kit/src/shared/node/node-package-manager.test.ts index cbd5b629c96..a00ec4134fc 100644 --- a/packages/cli-kit/src/public/node/node-package-manager.test.ts +++ b/packages/cli-kit/src/shared/node/node-package-manager.test.ts @@ -25,14 +25,14 @@ import {captureOutput, exec} from './system.js' import {inTemporaryDirectory, mkdir, touchFile, writeFile} from './fs.js' import {joinPath, dirname, normalizePath} from './path.js' import {inferPackageManagerForGlobalCLI} from './is-global.js' -import {cacheClear} from '../../private/node/conf-store.js' +import {cacheClear} from './internal/conf-store.js' import latestVersion from 'latest-version' import {vi, describe, test, expect, beforeEach, afterEach} from 'vitest' vi.mock('./version.js') vi.mock('./system.js') vi.mock('latest-version') -vi.mock('./is-global') +vi.mock('./is-global.js') const mockedExec = vi.mocked(exec) const mockedCaptureOutput = vi.mocked(captureOutput) diff --git a/packages/cli-kit/src/public/node/node-package-manager.ts b/packages/cli-kit/src/shared/node/node-package-manager.ts similarity index 99% rename from packages/cli-kit/src/public/node/node-package-manager.ts rename to packages/cli-kit/src/shared/node/node-package-manager.ts index 5aa52ef72aa..4eaf9b7531c 100644 --- a/packages/cli-kit/src/public/node/node-package-manager.ts +++ b/packages/cli-kit/src/shared/node/node-package-manager.ts @@ -5,8 +5,8 @@ import {fileExists, readFile, writeFile, findPathUp, glob} from './fs.js' import {dirname, joinPath} from './path.js' import {runWithTimer} from './metadata.js' import {inferPackageManagerForGlobalCLI} from './is-global.js' -import {outputToken, outputContent, outputDebug} from '../../public/node/output.js' -import {PackageVersionKey, cacheRetrieve, cacheRetrieveOrRepopulate} from '../../private/node/conf-store.js' +import {outputToken, outputContent, outputDebug} from './output.js' +import {PackageVersionKey, cacheRetrieve, cacheRetrieveOrRepopulate} from './internal/conf-store.js' import {parseJSON} from '../common/json.js' import latestVersion from 'latest-version' import {SemVer, satisfies as semverSatisfies} from 'semver' diff --git a/packages/cli-kit/src/public/node/notifications-system.test.ts b/packages/cli-kit/src/shared/node/notifications-system.test.ts similarity index 99% rename from packages/cli-kit/src/public/node/notifications-system.test.ts rename to packages/cli-kit/src/shared/node/notifications-system.test.ts index 1eefbe57a37..6cc09e6b1c1 100644 --- a/packages/cli-kit/src/public/node/notifications-system.test.ts +++ b/packages/cli-kit/src/shared/node/notifications-system.test.ts @@ -7,11 +7,11 @@ import { import {renderError, renderInfo, renderWarning} from './ui.js' import {sniffForJson} from './path.js' import {exec} from './system.js' -import {cacheRetrieve} from '../../private/node/conf-store.js' +import {cacheRetrieve} from './internal/conf-store.js' import {afterEach, describe, expect, test, vi} from 'vitest' vi.mock('./ui.js') -vi.mock('../../private/node/conf-store.js') +vi.mock('./internal/conf-store.js') vi.mock('./path.js') vi.mock('./system.js') diff --git a/packages/cli-kit/src/public/node/notifications-system.ts b/packages/cli-kit/src/shared/node/notifications-system.ts similarity index 99% rename from packages/cli-kit/src/public/node/notifications-system.ts rename to packages/cli-kit/src/shared/node/notifications-system.ts index d9eade1f1cb..fe07b6692f7 100644 --- a/packages/cli-kit/src/public/node/notifications-system.ts +++ b/packages/cli-kit/src/shared/node/notifications-system.ts @@ -8,8 +8,8 @@ import {isTruthy} from './context/utilities.js' import {exec} from './system.js' import {jsonOutputEnabled} from './environment.js' import {fetch} from './http.js' +import {NotificationKey, NotificationsKey, cacheRetrieve, cacheStore} from './internal/conf-store.js' import {CLI_KIT_VERSION} from '../common/version.js' -import {NotificationKey, NotificationsKey, cacheRetrieve, cacheStore} from '../../private/node/conf-store.js' const URL = 'https://cdn.shopify.com/static/cli/notifications.json' const EMPTY_CACHE_MESSAGE = 'Cache is empty' diff --git a/packages/cli-kit/src/public/node/os.test.ts b/packages/cli-kit/src/shared/node/os.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/os.test.ts rename to packages/cli-kit/src/shared/node/os.test.ts diff --git a/packages/cli-kit/src/public/node/os.ts b/packages/cli-kit/src/shared/node/os.ts similarity index 97% rename from packages/cli-kit/src/public/node/os.ts rename to packages/cli-kit/src/shared/node/os.ts index a05fbf6e9e7..5c84c96964a 100644 --- a/packages/cli-kit/src/public/node/os.ts +++ b/packages/cli-kit/src/shared/node/os.ts @@ -1,4 +1,4 @@ -import {outputDebug, outputContent} from '../../public/node/output.js' +import {outputDebug, outputContent} from './output.js' import {execa} from 'execa' import {userInfo as osUserInfo} from 'os' diff --git a/packages/cli-kit/src/public/node/output.test.ts b/packages/cli-kit/src/shared/node/output.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/output.test.ts rename to packages/cli-kit/src/shared/node/output.test.ts diff --git a/packages/cli-kit/src/public/node/output.ts b/packages/cli-kit/src/shared/node/output.ts similarity index 98% rename from packages/cli-kit/src/public/node/output.ts rename to packages/cli-kit/src/shared/node/output.ts index db95c2ebd14..b81d63a14cd 100644 --- a/packages/cli-kit/src/public/node/output.ts +++ b/packages/cli-kit/src/shared/node/output.ts @@ -18,9 +18,9 @@ import { PathContentToken, RawContentToken, SubHeadingContentToken, -} from '../../private/node/content-tokens.js' -import {tokenItemToString} from '../../private/node/ui/components/TokenizedText.js' -import {consoleLog, consoleWarn, output} from '../../private/node/output.js' +} from './internal/content-tokens.js' +import {consoleLog, consoleWarn, output} from './internal/output.js' +import {tokenItemToString} from '../ui/components/TokenizedText.js' import stripAnsi from 'strip-ansi' import {Writable} from 'stream' import type {Change} from 'diff' diff --git a/packages/cli-kit/src/public/node/path.test.ts b/packages/cli-kit/src/shared/node/path.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/path.test.ts rename to packages/cli-kit/src/shared/node/path.test.ts diff --git a/packages/cli-kit/src/public/node/path.ts b/packages/cli-kit/src/shared/node/path.ts similarity index 100% rename from packages/cli-kit/src/public/node/path.ts rename to packages/cli-kit/src/shared/node/path.ts diff --git a/packages/cli-kit/src/public/node/plugins.test.ts b/packages/cli-kit/src/shared/node/plugins.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/plugins.test.ts rename to packages/cli-kit/src/shared/node/plugins.test.ts diff --git a/packages/cli-kit/src/public/node/plugins.ts b/packages/cli-kit/src/shared/node/plugins.ts similarity index 98% rename from packages/cli-kit/src/public/node/plugins.ts rename to packages/cli-kit/src/shared/node/plugins.ts index d8752d2617a..0af40d180b0 100644 --- a/packages/cli-kit/src/public/node/plugins.ts +++ b/packages/cli-kit/src/shared/node/plugins.ts @@ -2,7 +2,7 @@ import {HookReturnPerTunnelPlugin} from './plugins/tunnel.js' import {MonorailEventPublic, MonorailEventSensitive} from './monorail.js' import {getArrayContainsDuplicates, getArrayRejectingUndefined} from '../common/array.js' import {PickByPrefix} from '../common/ts/pick-by-prefix.js' -import {JsonMap} from '../../private/common/json.js' +import {JsonMap} from '../common/internal/json.js' import {Config, Interfaces} from '@oclif/core' /** diff --git a/packages/cli-kit/src/public/node/plugins/multiple-installation-warning.test.ts b/packages/cli-kit/src/shared/node/plugins/multiple-installation-warning.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/plugins/multiple-installation-warning.test.ts rename to packages/cli-kit/src/shared/node/plugins/multiple-installation-warning.test.ts diff --git a/packages/cli-kit/src/public/node/plugins/tunnel.test.ts b/packages/cli-kit/src/shared/node/plugins/tunnel.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/plugins/tunnel.test.ts rename to packages/cli-kit/src/shared/node/plugins/tunnel.test.ts diff --git a/packages/cli-kit/src/public/node/plugins/tunnel.ts b/packages/cli-kit/src/shared/node/plugins/tunnel.ts similarity index 100% rename from packages/cli-kit/src/public/node/plugins/tunnel.ts rename to packages/cli-kit/src/shared/node/plugins/tunnel.ts diff --git a/packages/cli-kit/src/public/node/promises.ts b/packages/cli-kit/src/shared/node/promises.ts similarity index 100% rename from packages/cli-kit/src/public/node/promises.ts rename to packages/cli-kit/src/shared/node/promises.ts diff --git a/packages/cli-kit/src/public/node/result.test.ts b/packages/cli-kit/src/shared/node/result.test.ts similarity index 97% rename from packages/cli-kit/src/public/node/result.test.ts rename to packages/cli-kit/src/shared/node/result.test.ts index 89428e0b749..67486603925 100644 --- a/packages/cli-kit/src/public/node/result.test.ts +++ b/packages/cli-kit/src/shared/node/result.test.ts @@ -1,6 +1,6 @@ import {err, ok} from './result.js' import {mockAndCaptureOutput} from './testing/output.js' -import {outputSuccess} from '../../public/node/output.js' +import {outputSuccess} from './output.js' import {describe, expect, test} from 'vitest' describe('ok', () => { diff --git a/packages/cli-kit/src/public/node/result.ts b/packages/cli-kit/src/shared/node/result.ts similarity index 100% rename from packages/cli-kit/src/public/node/result.ts rename to packages/cli-kit/src/shared/node/result.ts diff --git a/packages/cli-kit/src/public/node/schema.test.ts b/packages/cli-kit/src/shared/node/schema.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/schema.test.ts rename to packages/cli-kit/src/shared/node/schema.test.ts diff --git a/packages/cli-kit/src/public/node/schema.ts b/packages/cli-kit/src/shared/node/schema.ts similarity index 100% rename from packages/cli-kit/src/public/node/schema.ts rename to packages/cli-kit/src/shared/node/schema.ts diff --git a/packages/cli-kit/src/public/node/serial-batch-processor.test.ts b/packages/cli-kit/src/shared/node/serial-batch-processor.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/serial-batch-processor.test.ts rename to packages/cli-kit/src/shared/node/serial-batch-processor.test.ts diff --git a/packages/cli-kit/src/public/node/serial-batch-processor.ts b/packages/cli-kit/src/shared/node/serial-batch-processor.ts similarity index 100% rename from packages/cli-kit/src/public/node/serial-batch-processor.ts rename to packages/cli-kit/src/shared/node/serial-batch-processor.ts diff --git a/packages/cli-kit/src/public/node/system.test.ts b/packages/cli-kit/src/shared/node/system.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/system.test.ts rename to packages/cli-kit/src/shared/node/system.test.ts diff --git a/packages/cli-kit/src/public/node/system.ts b/packages/cli-kit/src/shared/node/system.ts similarity index 99% rename from packages/cli-kit/src/public/node/system.ts rename to packages/cli-kit/src/shared/node/system.ts index b4750c3b076..e8dee40bdce 100644 --- a/packages/cli-kit/src/public/node/system.ts +++ b/packages/cli-kit/src/shared/node/system.ts @@ -5,7 +5,7 @@ import {treeKill} from './tree-kill.js' import {isTruthy} from './context/utilities.js' import {renderWarning} from './ui.js' import {platformAndArch} from './os.js' -import {shouldDisplayColors, outputDebug} from '../../public/node/output.js' +import {shouldDisplayColors, outputDebug} from './output.js' import {execa, execaCommand, ExecaChildProcess} from 'execa' import which from 'which' import {delimiter} from 'pathe' diff --git a/packages/cli-kit/src/public/node/tcp.test.ts b/packages/cli-kit/src/shared/node/tcp.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/tcp.test.ts rename to packages/cli-kit/src/shared/node/tcp.test.ts diff --git a/packages/cli-kit/src/public/node/tcp.ts b/packages/cli-kit/src/shared/node/tcp.ts similarity index 97% rename from packages/cli-kit/src/public/node/tcp.ts rename to packages/cli-kit/src/shared/node/tcp.ts index 81f9f9f23e7..86d05ec552e 100644 --- a/packages/cli-kit/src/public/node/tcp.ts +++ b/packages/cli-kit/src/shared/node/tcp.ts @@ -1,6 +1,6 @@ import {sleep} from './system.js' import {AbortError} from './error.js' -import {outputDebug, outputContent, outputToken} from '../../public/node/output.js' +import {outputDebug, outputContent, outputToken} from './output.js' import * as port from 'get-port-please' interface GetTCPPortOptions { diff --git a/packages/cli-kit/src/public/node/testing/output.ts b/packages/cli-kit/src/shared/node/testing/output.ts similarity index 91% rename from packages/cli-kit/src/public/node/testing/output.ts rename to packages/cli-kit/src/shared/node/testing/output.ts index b22c4fc3eed..75fd042d41a 100644 --- a/packages/cli-kit/src/public/node/testing/output.ts +++ b/packages/cli-kit/src/shared/node/testing/output.ts @@ -1,4 +1,4 @@ -import {collectedLogs, clearCollectedLogs} from '../../../public/node/output.js' +import {collectedLogs, clearCollectedLogs} from '../output.js' interface OutputMock { output: () => string diff --git a/packages/cli-kit/src/public/node/testing/test-with-temp-dir.ts b/packages/cli-kit/src/shared/node/testing/test-with-temp-dir.ts similarity index 100% rename from packages/cli-kit/src/public/node/testing/test-with-temp-dir.ts rename to packages/cli-kit/src/shared/node/testing/test-with-temp-dir.ts diff --git a/packages/cli-kit/src/public/node/testing/ui.ts b/packages/cli-kit/src/shared/node/testing/ui.ts similarity index 79% rename from packages/cli-kit/src/public/node/testing/ui.ts rename to packages/cli-kit/src/shared/node/testing/ui.ts index f471a025755..3ce832b790b 100644 --- a/packages/cli-kit/src/public/node/testing/ui.ts +++ b/packages/cli-kit/src/shared/node/testing/ui.ts @@ -7,4 +7,4 @@ export { sendInputAndWait, sendInputAndWaitForChange, sendInputAndWaitForContent, -} from '../../../private/node/testing/ui.js' +} from '../../ui/testing.js' diff --git a/packages/cli-kit/src/public/node/toml.test.ts b/packages/cli-kit/src/shared/node/toml.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/toml.test.ts rename to packages/cli-kit/src/shared/node/toml.test.ts diff --git a/packages/cli-kit/src/public/node/toml.ts b/packages/cli-kit/src/shared/node/toml.ts similarity index 93% rename from packages/cli-kit/src/public/node/toml.ts rename to packages/cli-kit/src/shared/node/toml.ts index ecc00e9204f..a507bb1dabf 100644 --- a/packages/cli-kit/src/public/node/toml.ts +++ b/packages/cli-kit/src/shared/node/toml.ts @@ -1,4 +1,4 @@ -import {JsonMap} from '../../private/common/json.js' +import {JsonMap} from '../common/internal/json.js' import * as toml from '@iarna/toml' export type JsonMapType = JsonMap diff --git a/packages/cli-kit/src/public/node/tree-kill.ts b/packages/cli-kit/src/shared/node/tree-kill.ts similarity index 100% rename from packages/cli-kit/src/public/node/tree-kill.ts rename to packages/cli-kit/src/shared/node/tree-kill.ts diff --git a/packages/cli-kit/src/public/node/ui.test.ts b/packages/cli-kit/src/shared/node/ui.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/ui.test.ts rename to packages/cli-kit/src/shared/node/ui.test.ts diff --git a/packages/cli-kit/src/public/node/ui.tsx b/packages/cli-kit/src/shared/node/ui.tsx similarity index 92% rename from packages/cli-kit/src/public/node/ui.tsx rename to packages/cli-kit/src/shared/node/ui.tsx index 7f234a77f9c..074e7930998 100644 --- a/packages/cli-kit/src/public/node/ui.tsx +++ b/packages/cli-kit/src/shared/node/ui.tsx @@ -5,32 +5,25 @@ import {outputContent, outputDebug, outputToken, TokenizedString} from './output import {terminalSupportsPrompting} from './system.js' import {AbortController} from './abort.js' import {runWithTimer} from './metadata.js' -import {ConcurrentOutput, ConcurrentOutputProps} from '../../private/node/ui/components/ConcurrentOutput.js' -import {handleCtrlC, render, renderOnce} from '../../private/node/ui.js' -import {alert, AlertOptions} from '../../private/node/ui/alert.js' -import {CustomSection} from '../../private/node/ui/components/Alert.js' -import {FatalError} from '../../private/node/ui/components/FatalError.js' -import ScalarDict from '../../private/node/ui/components/Table/ScalarDict.js' -import {Table, TableColumn, TableProps} from '../../private/node/ui/components/Table/Table.js' -import { - Token, - tokenItemToString, - InlineToken, - LinkToken, - ListToken, - TokenItem, -} from '../../private/node/ui/components/TokenizedText.js' +import {ConcurrentOutput, ConcurrentOutputProps} from '../ui/components/ConcurrentOutput.js' +import {handleCtrlC, render, renderOnce} from '../ui/ui.js' +import {alert, AlertOptions} from '../ui/alert.js' +import {CustomSection} from '../ui/components/Alert.js' +import {FatalError} from '../ui/components/FatalError.js' +import ScalarDict from '../ui/components/Table/ScalarDict.js' +import {Table, TableColumn, TableProps} from '../ui/components/Table/Table.js' +import {Token, tokenItemToString, InlineToken, LinkToken, ListToken, TokenItem} from '../ui/components/TokenizedText.js' import { DangerousConfirmationPrompt, DangerousConfirmationPromptProps, -} from '../../private/node/ui/components/DangerousConfirmationPrompt.js' -import {SelectPrompt, SelectPromptProps} from '../../private/node/ui/components/SelectPrompt.js' -import {Tasks, Task} from '../../private/node/ui/components/Tasks.js' -import {TextPrompt, TextPromptProps} from '../../private/node/ui/components/TextPrompt.js' -import {AutocompletePromptProps, AutocompletePrompt} from '../../private/node/ui/components/AutocompletePrompt.js' -import {InfoTableSection} from '../../private/node/ui/components/Prompts/InfoTable.js' -import {InfoMessageProps} from '../../private/node/ui/components/Prompts/InfoMessage.js' -import {SingleTask} from '../../private/node/ui/components/SingleTask.js' +} from '../ui/components/DangerousConfirmationPrompt.js' +import {SelectPrompt, SelectPromptProps} from '../ui/components/SelectPrompt.js' +import {Tasks, Task} from '../ui/components/Tasks.js' +import {TextPrompt, TextPromptProps} from '../ui/components/TextPrompt.js' +import {AutocompletePromptProps, AutocompletePrompt} from '../ui/components/AutocompletePrompt.js' +import {InfoTableSection} from '../ui/components/Prompts/InfoTable.js' +import {InfoMessageProps} from '../ui/components/Prompts/InfoMessage.js' +import {SingleTask} from '../ui/components/SingleTask.js' import React from 'react' import {Key as InkKey, RenderOptions} from 'ink' @@ -235,7 +228,7 @@ interface RenderFatalErrorOptions { * [1] https://partners.shopify.com/signup * */ -// eslint-disable-next-line max-params + export function renderFatalError(error: Fatal, {renderOptions}: RenderFatalErrorOptions = {}) { return renderOnce(, {logLevel: 'error', renderOptions}) } @@ -276,7 +269,7 @@ export interface RenderSelectPromptOptions extends Omit, * Press ↑↓ arrows to select, enter to confirm. * */ -// eslint-disable-next-line max-params + export async function renderSelectPrompt( {renderOptions, isConfirmationPrompt, ...props}: RenderSelectPromptOptions, uiDebugOptions: UIDebugOptions = defaultUIDebugOptions, @@ -406,7 +399,7 @@ export interface RenderAutocompleteOptions * Press ↑↓ arrows to select, enter to confirm. * */ -// eslint-disable-next-line max-params + export async function renderAutocompletePrompt( {renderOptions, ...props}: RenderAutocompleteOptions, uiDebugOptions: UIDebugOptions = defaultUIDebugOptions, @@ -478,12 +471,11 @@ interface RenderTasksOptions { * ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ * Installing dependencies ... */ -// eslint-disable-next-line max-params + export async function renderTasks( tasks: Task[], {renderOptions, noProgressBar}: RenderTasksOptions = {}, ) { - // eslint-disable-next-line max-params return new Promise((resolve, reject) => { render(, { ...renderOptions, @@ -518,7 +510,6 @@ export async function renderSingleTask({ onAbort, renderOptions, }: RenderSingleTaskOptions): Promise { - // eslint-disable-next-line max-params return new Promise((resolve, reject) => { render(, { ...renderOptions, @@ -539,7 +530,7 @@ export interface RenderTextPromptOptions extends Omit { throwInNonTTY({message: 'Press any key'}, uiDebugOptions) return runWithTimer('cmd_all_timing_prompts_ms')(() => { - // eslint-disable-next-line max-params return new Promise((resolve, reject) => { const handler = (buffer: Buffer) => { stdin.setRawMode(false) @@ -661,7 +651,6 @@ interface ThrowInNonTTYOptions { stdin?: NodeJS.ReadStream } -// eslint-disable-next-line max-params function throwInNonTTY({message, stdin = undefined}: ThrowInNonTTYOptions, uiDebugOptions: UIDebugOptions) { if (isTTY({stdin, uiDebugOptions})) return diff --git a/packages/cli-kit/src/shared/node/ui/components.ts b/packages/cli-kit/src/shared/node/ui/components.ts new file mode 100644 index 00000000000..d988060c070 --- /dev/null +++ b/packages/cli-kit/src/shared/node/ui/components.ts @@ -0,0 +1,8 @@ +export { + ConcurrentOutput, + ConcurrentOutputContext, + useConcurrentOutputContext, +} from '../../ui/components/ConcurrentOutput.js' +export {Alert} from '../../ui/components/Alert.js' +export {Link} from '../../ui/components/Link.js' +export {TabularData} from '../../ui/components/TabularData.js' diff --git a/packages/cli-kit/src/shared/node/ui/hooks.ts b/packages/cli-kit/src/shared/node/ui/hooks.ts new file mode 100644 index 00000000000..9cf84a130d8 --- /dev/null +++ b/packages/cli-kit/src/shared/node/ui/hooks.ts @@ -0,0 +1 @@ +export {default as useAbortSignal} from '../../ui/hooks/use-abort-signal.js' diff --git a/packages/cli-kit/src/public/node/upgrade.test.ts b/packages/cli-kit/src/shared/node/upgrade.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/upgrade.test.ts rename to packages/cli-kit/src/shared/node/upgrade.test.ts diff --git a/packages/cli-kit/src/public/node/upgrade.ts b/packages/cli-kit/src/shared/node/upgrade.ts similarity index 100% rename from packages/cli-kit/src/public/node/upgrade.ts rename to packages/cli-kit/src/shared/node/upgrade.ts diff --git a/packages/cli-kit/src/public/node/version.test.ts b/packages/cli-kit/src/shared/node/version.test.ts similarity index 95% rename from packages/cli-kit/src/public/node/version.test.ts rename to packages/cli-kit/src/shared/node/version.test.ts index 99bced0963f..ce40b36033f 100644 --- a/packages/cli-kit/src/public/node/version.test.ts +++ b/packages/cli-kit/src/shared/node/version.test.ts @@ -1,10 +1,10 @@ import {localCLIVersion, globalCLIVersion, isPreReleaseVersion} from './version.js' -import {inTemporaryDirectory} from '../node/fs.js' -import {captureOutput} from '../node/system.js' +import {inTemporaryDirectory} from './fs.js' +import {captureOutput} from './system.js' import {describe, expect, test, vi} from 'vitest' import which from 'which' -vi.mock('../node/system.js') +vi.mock('./system.js') vi.mock('which') describe('localCLIVersion', () => { diff --git a/packages/cli-kit/src/public/node/version.ts b/packages/cli-kit/src/shared/node/version.ts similarity index 97% rename from packages/cli-kit/src/public/node/version.ts rename to packages/cli-kit/src/shared/node/version.ts index 3c958889471..fa91dfe54d3 100644 --- a/packages/cli-kit/src/public/node/version.ts +++ b/packages/cli-kit/src/shared/node/version.ts @@ -1,4 +1,4 @@ -import {captureOutput} from '../node/system.js' +import {captureOutput} from './system.js' import which from 'which' import {satisfies} from 'semver' /** diff --git a/packages/cli-kit/src/public/node/vscode.test.ts b/packages/cli-kit/src/shared/node/vscode.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/vscode.test.ts rename to packages/cli-kit/src/shared/node/vscode.test.ts diff --git a/packages/cli-kit/src/public/node/vscode.ts b/packages/cli-kit/src/shared/node/vscode.ts similarity index 95% rename from packages/cli-kit/src/public/node/vscode.ts rename to packages/cli-kit/src/shared/node/vscode.ts index 1417e47defe..0962bf9c10f 100644 --- a/packages/cli-kit/src/public/node/vscode.ts +++ b/packages/cli-kit/src/shared/node/vscode.ts @@ -1,6 +1,6 @@ import {fileExists, writeFile, readFile, findPathUp} from './fs.js' import {joinPath, cwd} from './path.js' -import {outputContent, outputToken, outputDebug} from '../../public/node/output.js' +import {outputContent, outputToken, outputDebug} from './output.js' /** * Check if user editor is VS Code. diff --git a/packages/cli-kit/src/private/node/ui/alert.tsx b/packages/cli-kit/src/shared/ui/alert.tsx similarity index 91% rename from packages/cli-kit/src/private/node/ui/alert.tsx rename to packages/cli-kit/src/shared/ui/alert.tsx index 675650c6ae0..b2231c542e9 100644 --- a/packages/cli-kit/src/private/node/ui/alert.tsx +++ b/packages/cli-kit/src/shared/ui/alert.tsx @@ -1,6 +1,6 @@ import {Alert, AlertProps} from './components/Alert.js' -import {renderOnce} from '../ui.js' -import {LogLevel} from '../../../public/node/output.js' +import {renderOnce} from './ui.js' +import {LogLevel} from '../node/output.js' import React from 'react' import {RenderOptions} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/Alert.test.tsx b/packages/cli-kit/src/shared/ui/components/Alert.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/Alert.test.tsx rename to packages/cli-kit/src/shared/ui/components/Alert.test.tsx index 18589cb79bb..a8b2fe4264d 100644 --- a/packages/cli-kit/src/private/node/ui/components/Alert.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Alert.test.tsx @@ -1,6 +1,6 @@ import {Alert} from './Alert.js' -import {unstyled} from '../../../../public/node/output.js' -import {render} from '../../testing/ui.js' +import {unstyled} from '../../node/output.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Alert.tsx b/packages/cli-kit/src/shared/ui/components/Alert.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/Alert.tsx rename to packages/cli-kit/src/shared/ui/components/Alert.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/AutocompletePrompt.test.tsx b/packages/cli-kit/src/shared/ui/components/AutocompletePrompt.test.tsx similarity index 99% rename from packages/cli-kit/src/private/node/ui/components/AutocompletePrompt.test.tsx rename to packages/cli-kit/src/shared/ui/components/AutocompletePrompt.test.tsx index 44386351e15..35b8ba786a9 100644 --- a/packages/cli-kit/src/private/node/ui/components/AutocompletePrompt.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/AutocompletePrompt.test.tsx @@ -6,9 +6,9 @@ import { sendInputAndWaitForContent, waitForInputsToBeReady, render, -} from '../../testing/ui.js' -import {Stdout} from '../../ui.js' -import {AbortController} from '../../../../public/node/abort.js' +} from '../testing.js' +import {Stdout} from '../ui.js' +import {AbortController} from '../../node/abort.js' import {beforeEach, describe, expect, test, vi} from 'vitest' import React from 'react' import {useStdout} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/AutocompletePrompt.tsx b/packages/cli-kit/src/shared/ui/components/AutocompletePrompt.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/AutocompletePrompt.tsx rename to packages/cli-kit/src/shared/ui/components/AutocompletePrompt.tsx index e44394f8aa0..6dcbc01078b 100644 --- a/packages/cli-kit/src/private/node/ui/components/AutocompletePrompt.tsx +++ b/packages/cli-kit/src/shared/ui/components/AutocompletePrompt.tsx @@ -3,8 +3,8 @@ import {InfoTableProps} from './Prompts/InfoTable.js' import {TextInput} from './TextInput.js' import {InfoMessageProps} from './Prompts/InfoMessage.js' import {Message, PromptLayout} from './Prompts/PromptLayout.js' -import {throttle} from '../../../../public/common/function.js' -import {AbortSignal} from '../../../../public/node/abort.js' +import {throttle} from '../../common/function.js' +import {AbortSignal} from '../../node/abort.js' import usePrompt, {PromptState} from '../hooks/use-prompt.js' import React, {ReactElement, useCallback, useEffect, useRef, useState} from 'react' import {Box, useApp} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/Banner.test.tsx b/packages/cli-kit/src/shared/ui/components/Banner.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/Banner.test.tsx rename to packages/cli-kit/src/shared/ui/components/Banner.test.tsx index 9aa12b6b2d0..f084270ea76 100644 --- a/packages/cli-kit/src/private/node/ui/components/Banner.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Banner.test.tsx @@ -1,7 +1,7 @@ import {Banner} from './Banner.js' import {List} from './List.js' -import {render} from '../../testing/ui.js' -import {unstyled} from '../../../../public/node/output.js' +import {render} from '../testing.js' +import {unstyled} from '../../node/output.js' import {describe, expect, test} from 'vitest' import React from 'react' import {Text} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/Banner.tsx b/packages/cli-kit/src/shared/ui/components/Banner.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/Banner.tsx rename to packages/cli-kit/src/shared/ui/components/Banner.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/Command.test.tsx b/packages/cli-kit/src/shared/ui/components/Command.test.tsx similarity index 88% rename from packages/cli-kit/src/private/node/ui/components/Command.test.tsx rename to packages/cli-kit/src/shared/ui/components/Command.test.tsx index c4b7e22cfb8..7e7afb048a6 100644 --- a/packages/cli-kit/src/private/node/ui/components/Command.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Command.test.tsx @@ -1,5 +1,5 @@ import {Command} from './Command.js' -import {render} from '../../testing/ui.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Command.tsx b/packages/cli-kit/src/shared/ui/components/Command.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/Command.tsx rename to packages/cli-kit/src/shared/ui/components/Command.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/ConcurrentOutput.test.tsx b/packages/cli-kit/src/shared/ui/components/ConcurrentOutput.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/ConcurrentOutput.test.tsx rename to packages/cli-kit/src/shared/ui/components/ConcurrentOutput.test.tsx index 719c2820dc4..2db9a140938 100644 --- a/packages/cli-kit/src/private/node/ui/components/ConcurrentOutput.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/ConcurrentOutput.test.tsx @@ -1,7 +1,7 @@ import {ConcurrentOutput, useConcurrentOutputContext} from './ConcurrentOutput.js' -import {render} from '../../testing/ui.js' -import {AbortController, AbortSignal} from '../../../../public/node/abort.js' -import {unstyled} from '../../../../public/node/output.js' +import {render} from '../testing.js' +import {AbortController, AbortSignal} from '../../node/abort.js' +import {unstyled} from '../../node/output.js' import React from 'react' import {describe, expect, test} from 'vitest' import {Writable} from 'stream' diff --git a/packages/cli-kit/src/private/node/ui/components/ConcurrentOutput.tsx b/packages/cli-kit/src/shared/ui/components/ConcurrentOutput.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/ConcurrentOutput.tsx rename to packages/cli-kit/src/shared/ui/components/ConcurrentOutput.tsx index da83738b860..02a50c92fb8 100644 --- a/packages/cli-kit/src/private/node/ui/components/ConcurrentOutput.tsx +++ b/packages/cli-kit/src/shared/ui/components/ConcurrentOutput.tsx @@ -1,5 +1,5 @@ -import {OutputProcess} from '../../../../public/node/output.js' -import {AbortSignal} from '../../../../public/node/abort.js' +import {OutputProcess} from '../../node/output.js' +import {AbortSignal} from '../../node/abort.js' import React, {FunctionComponent, useCallback, useEffect, useMemo, useState} from 'react' import {Box, Static, Text, TextProps, useApp} from 'ink' import figures from 'figures' diff --git a/packages/cli-kit/src/private/node/ui/components/DangerousConfirmationPrompt.test.tsx b/packages/cli-kit/src/shared/ui/components/DangerousConfirmationPrompt.test.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/DangerousConfirmationPrompt.test.tsx rename to packages/cli-kit/src/shared/ui/components/DangerousConfirmationPrompt.test.tsx index b265086218c..c5c04bf2f6b 100644 --- a/packages/cli-kit/src/private/node/ui/components/DangerousConfirmationPrompt.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/DangerousConfirmationPrompt.test.tsx @@ -1,6 +1,6 @@ import {DangerousConfirmationPrompt} from './DangerousConfirmationPrompt.js' -import {getLastFrameAfterUnmount, sendInputAndWaitForChange, waitForInputsToBeReady, render} from '../../testing/ui.js' -import {unstyled} from '../../../../public/node/output.js' +import {getLastFrameAfterUnmount, sendInputAndWaitForChange, waitForInputsToBeReady, render} from '../testing.js' +import {unstyled} from '../../node/output.js' import React from 'react' import {describe, expect, test, vi} from 'vitest' diff --git a/packages/cli-kit/src/private/node/ui/components/DangerousConfirmationPrompt.tsx b/packages/cli-kit/src/shared/ui/components/DangerousConfirmationPrompt.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/DangerousConfirmationPrompt.tsx rename to packages/cli-kit/src/shared/ui/components/DangerousConfirmationPrompt.tsx index e09a1853e9a..6cedb066809 100644 --- a/packages/cli-kit/src/private/node/ui/components/DangerousConfirmationPrompt.tsx +++ b/packages/cli-kit/src/shared/ui/components/DangerousConfirmationPrompt.tsx @@ -1,10 +1,10 @@ import {TextInput} from './TextInput.js' import {InlineToken, TokenItem, TokenizedText} from './TokenizedText.js' import {InfoTable, InfoTableProps} from './Prompts/InfoTable.js' -import {handleCtrlC} from '../../ui.js' +import {handleCtrlC} from '../ui.js' import useLayout from '../hooks/use-layout.js' import {messageWithPunctuation} from '../utilities.js' -import {AbortSignal} from '../../../../public/node/abort.js' +import {AbortSignal} from '../../node/abort.js' import useAbortSignal from '../hooks/use-abort-signal.js' import usePrompt, {PromptState} from '../hooks/use-prompt.js' import React, {FunctionComponent, useCallback, useEffect, useState} from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/FatalError.test.tsx b/packages/cli-kit/src/shared/ui/components/FatalError.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/FatalError.test.tsx rename to packages/cli-kit/src/shared/ui/components/FatalError.test.tsx index af7b6755be3..eb46e4c5c79 100644 --- a/packages/cli-kit/src/private/node/ui/components/FatalError.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/FatalError.test.tsx @@ -1,7 +1,7 @@ import {FatalError} from './FatalError.js' -import {unstyled} from '../../../../public/node/output.js' -import {AbortError, BugError, ExternalError} from '../../../../public/node/error.js' -import {render} from '../../testing/ui.js' +import {unstyled} from '../../node/output.js' +import {AbortError, BugError, ExternalError} from '../../node/error.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/FatalError.tsx b/packages/cli-kit/src/shared/ui/components/FatalError.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/FatalError.tsx rename to packages/cli-kit/src/shared/ui/components/FatalError.tsx index b632ac0d177..ce550a4c050 100644 --- a/packages/cli-kit/src/private/node/ui/components/FatalError.tsx +++ b/packages/cli-kit/src/shared/ui/components/FatalError.tsx @@ -3,7 +3,7 @@ import {TokenizedText} from './TokenizedText.js' import {Command} from './Command.js' import {List} from './List.js' import {TabularData} from './TabularData.js' -import {BugError, cleanSingleStackTracePath, ExternalError, FatalError as Fatal} from '../../../../public/node/error.js' +import {BugError, cleanSingleStackTracePath, ExternalError, FatalError as Fatal} from '../../node/error.js' import {Box, Text} from 'ink' import React, {FunctionComponent} from 'react' import StackTracey from 'stacktracey' diff --git a/packages/cli-kit/src/private/node/ui/components/FilePath.test.tsx b/packages/cli-kit/src/shared/ui/components/FilePath.test.tsx similarity index 89% rename from packages/cli-kit/src/private/node/ui/components/FilePath.test.tsx rename to packages/cli-kit/src/shared/ui/components/FilePath.test.tsx index 1344ae31f84..fbb3b95d3ce 100644 --- a/packages/cli-kit/src/private/node/ui/components/FilePath.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/FilePath.test.tsx @@ -1,5 +1,5 @@ import {FilePath} from './FilePath.js' -import {render} from '../../testing/ui.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/FilePath.tsx b/packages/cli-kit/src/shared/ui/components/FilePath.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/FilePath.tsx rename to packages/cli-kit/src/shared/ui/components/FilePath.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/Link.test.tsx b/packages/cli-kit/src/shared/ui/components/Link.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/Link.test.tsx rename to packages/cli-kit/src/shared/ui/components/Link.test.tsx index 00fb8a8b7c0..5027626ca7d 100644 --- a/packages/cli-kit/src/private/node/ui/components/Link.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Link.test.tsx @@ -1,5 +1,5 @@ import {Link} from './Link.js' -import {render} from '../../testing/ui.js' +import {render} from '../testing.js' import {describe, expect, test, vi} from 'vitest' import React from 'react' import supportsHyperlinks from 'supports-hyperlinks' diff --git a/packages/cli-kit/src/private/node/ui/components/Link.tsx b/packages/cli-kit/src/shared/ui/components/Link.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/Link.tsx rename to packages/cli-kit/src/shared/ui/components/Link.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/List.test.tsx b/packages/cli-kit/src/shared/ui/components/List.test.tsx similarity index 96% rename from packages/cli-kit/src/private/node/ui/components/List.test.tsx rename to packages/cli-kit/src/shared/ui/components/List.test.tsx index 1b91c3950ae..cdfa0382451 100644 --- a/packages/cli-kit/src/private/node/ui/components/List.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/List.test.tsx @@ -1,6 +1,6 @@ import {List} from './List.js' -import {unstyled} from '../../../../public/node/output.js' -import {render} from '../../testing/ui.js' +import {unstyled} from '../../node/output.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/List.tsx b/packages/cli-kit/src/shared/ui/components/List.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/List.tsx rename to packages/cli-kit/src/shared/ui/components/List.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/LoadingBar.test.tsx b/packages/cli-kit/src/shared/ui/components/LoadingBar.test.tsx similarity index 96% rename from packages/cli-kit/src/private/node/ui/components/LoadingBar.test.tsx rename to packages/cli-kit/src/shared/ui/components/LoadingBar.test.tsx index 308871afbf4..ca76d4cd281 100644 --- a/packages/cli-kit/src/private/node/ui/components/LoadingBar.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/LoadingBar.test.tsx @@ -1,13 +1,13 @@ import {LoadingBar} from './LoadingBar.js' -import {render} from '../../testing/ui.js' -import {shouldDisplayColors, unstyled} from '../../../../public/node/output.js' +import {render} from '../testing.js' +import {shouldDisplayColors, unstyled} from '../../node/output.js' import useLayout from '../hooks/use-layout.js' import React from 'react' import {beforeEach, describe, expect, test, vi} from 'vitest' vi.mock('../hooks/use-layout.js') -vi.mock('../../../../public/node/output.js', async () => { - const original: any = await vi.importActual('../../../../public/node/output.js') +vi.mock('../../node/output.js', async () => { + const original: any = await vi.importActual('../../node/output.js') return { ...original, shouldDisplayColors: vi.fn(), diff --git a/packages/cli-kit/src/private/node/ui/components/LoadingBar.tsx b/packages/cli-kit/src/shared/ui/components/LoadingBar.tsx similarity index 92% rename from packages/cli-kit/src/private/node/ui/components/LoadingBar.tsx rename to packages/cli-kit/src/shared/ui/components/LoadingBar.tsx index db0aa496743..3d4f616e348 100644 --- a/packages/cli-kit/src/private/node/ui/components/LoadingBar.tsx +++ b/packages/cli-kit/src/shared/ui/components/LoadingBar.tsx @@ -1,6 +1,6 @@ import {TextAnimation} from './TextAnimation.js' import useLayout from '../hooks/use-layout.js' -import {shouldDisplayColors} from '../../../../public/node/output.js' +import {shouldDisplayColors} from '../../node/output.js' import React from 'react' import {Box, Text} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/Prompts/InfoMessage.test.tsx b/packages/cli-kit/src/shared/ui/components/Prompts/InfoMessage.test.tsx similarity index 93% rename from packages/cli-kit/src/private/node/ui/components/Prompts/InfoMessage.test.tsx rename to packages/cli-kit/src/shared/ui/components/Prompts/InfoMessage.test.tsx index 2363f40d328..a01c03aad63 100644 --- a/packages/cli-kit/src/private/node/ui/components/Prompts/InfoMessage.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Prompts/InfoMessage.test.tsx @@ -1,5 +1,5 @@ import {InfoMessage} from './InfoMessage.js' -import {render} from '../../../testing/ui.js' +import {render} from '../../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Prompts/InfoMessage.tsx b/packages/cli-kit/src/shared/ui/components/Prompts/InfoMessage.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/Prompts/InfoMessage.tsx rename to packages/cli-kit/src/shared/ui/components/Prompts/InfoMessage.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/Prompts/InfoTable.test.tsx b/packages/cli-kit/src/shared/ui/components/Prompts/InfoTable.test.tsx similarity index 94% rename from packages/cli-kit/src/private/node/ui/components/Prompts/InfoTable.test.tsx rename to packages/cli-kit/src/shared/ui/components/Prompts/InfoTable.test.tsx index eddaf80ecb0..7877ad5ffcf 100644 --- a/packages/cli-kit/src/private/node/ui/components/Prompts/InfoTable.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Prompts/InfoTable.test.tsx @@ -1,6 +1,6 @@ import {InfoTable} from './InfoTable.js' -import {unstyled} from '../../../../../public/node/output.js' -import {render} from '../../../testing/ui.js' +import {unstyled} from '../../../node/output.js' +import {render} from '../../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Prompts/InfoTable.tsx b/packages/cli-kit/src/shared/ui/components/Prompts/InfoTable.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/Prompts/InfoTable.tsx rename to packages/cli-kit/src/shared/ui/components/Prompts/InfoTable.tsx index 4670c8cae21..2130f5879f9 100644 --- a/packages/cli-kit/src/private/node/ui/components/Prompts/InfoTable.tsx +++ b/packages/cli-kit/src/shared/ui/components/Prompts/InfoTable.tsx @@ -1,5 +1,5 @@ import {CustomListItem, List} from '../List.js' -import {capitalize} from '../../../../../public/common/string.js' +import {capitalize} from '../../../common/string.js' import {InlineToken, TokenItem, TokenizedText} from '../TokenizedText.js' import {Box, Text, TextProps} from 'ink' import React, {FunctionComponent} from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Prompts/PromptLayout.test.tsx b/packages/cli-kit/src/shared/ui/components/Prompts/PromptLayout.test.tsx similarity index 99% rename from packages/cli-kit/src/private/node/ui/components/Prompts/PromptLayout.test.tsx rename to packages/cli-kit/src/shared/ui/components/Prompts/PromptLayout.test.tsx index 8067ce672c2..de547aef058 100644 --- a/packages/cli-kit/src/private/node/ui/components/Prompts/PromptLayout.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Prompts/PromptLayout.test.tsx @@ -1,5 +1,5 @@ import {PromptLayout} from './PromptLayout.js' -import {render} from '../../../testing/ui.js' +import {render} from '../../testing.js' import {PromptState} from '../../hooks/use-prompt.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Prompts/PromptLayout.tsx b/packages/cli-kit/src/shared/ui/components/Prompts/PromptLayout.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/Prompts/PromptLayout.tsx rename to packages/cli-kit/src/shared/ui/components/Prompts/PromptLayout.tsx index 740b4bafa6d..4f67d995726 100644 --- a/packages/cli-kit/src/private/node/ui/components/Prompts/PromptLayout.tsx +++ b/packages/cli-kit/src/shared/ui/components/Prompts/PromptLayout.tsx @@ -2,7 +2,7 @@ import {InfoMessage, InfoMessageProps} from './InfoMessage.js' import {InfoTable, InfoTableProps} from './InfoTable.js' import {InlineToken, LinkToken, TokenItem, TokenizedText} from '../TokenizedText.js' import {messageWithPunctuation} from '../../utilities.js' -import {AbortSignal} from '../../../../../public/node/abort.js' +import {AbortSignal} from '../../../node/abort.js' import useAbortSignal from '../../hooks/use-abort-signal.js' import {PromptState} from '../../hooks/use-prompt.js' import React, {ReactElement, cloneElement, useCallback, useLayoutEffect, useState} from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Scrollbar.test.tsx b/packages/cli-kit/src/shared/ui/components/Scrollbar.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/Scrollbar.test.tsx rename to packages/cli-kit/src/shared/ui/components/Scrollbar.test.tsx index 13f1da50885..ffc6df55ccc 100644 --- a/packages/cli-kit/src/private/node/ui/components/Scrollbar.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Scrollbar.test.tsx @@ -1,5 +1,5 @@ import {Scrollbar} from './Scrollbar.js' -import {render} from '../../testing/ui.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Scrollbar.tsx b/packages/cli-kit/src/shared/ui/components/Scrollbar.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/Scrollbar.tsx rename to packages/cli-kit/src/shared/ui/components/Scrollbar.tsx index 07a94402289..ee09c8b8087 100644 --- a/packages/cli-kit/src/private/node/ui/components/Scrollbar.tsx +++ b/packages/cli-kit/src/shared/ui/components/Scrollbar.tsx @@ -1,4 +1,4 @@ -import {shouldDisplayColors} from '../../../../public/node/output.js' +import {shouldDisplayColors} from '../../node/output.js' import {Box, Text} from 'ink' import React, {FunctionComponent} from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/SelectInput.test.tsx b/packages/cli-kit/src/shared/ui/components/SelectInput.test.tsx similarity index 99% rename from packages/cli-kit/src/private/node/ui/components/SelectInput.test.tsx rename to packages/cli-kit/src/shared/ui/components/SelectInput.test.tsx index d4966ea3ee2..f6f842ed070 100644 --- a/packages/cli-kit/src/private/node/ui/components/SelectInput.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/SelectInput.test.tsx @@ -5,8 +5,8 @@ import { waitForInputsToBeReady, render, getLastFrameAfterUnmount, -} from '../../testing/ui.js' -import {platformAndArch} from '../../../../public/node/os.js' +} from '../testing.js' +import {platformAndArch} from '../../node/os.js' import {describe, expect, test, vi} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/SelectInput.tsx b/packages/cli-kit/src/shared/ui/components/SelectInput.tsx similarity index 99% rename from packages/cli-kit/src/private/node/ui/components/SelectInput.tsx rename to packages/cli-kit/src/shared/ui/components/SelectInput.tsx index 6155d66ab43..997e77a88ea 100644 --- a/packages/cli-kit/src/private/node/ui/components/SelectInput.tsx +++ b/packages/cli-kit/src/shared/ui/components/SelectInput.tsx @@ -1,7 +1,7 @@ import {Scrollbar} from './Scrollbar.js' import {useSelectState} from '../hooks/use-select-state.js' import useLayout from '../hooks/use-layout.js' -import {handleCtrlC} from '../../ui.js' +import {handleCtrlC} from '../ui.js' import React, {useCallback, forwardRef, useEffect} from 'react' import {Box, Key, useInput, Text, DOMElement} from 'ink' import chalk from 'chalk' diff --git a/packages/cli-kit/src/private/node/ui/components/SelectPrompt.test.tsx b/packages/cli-kit/src/shared/ui/components/SelectPrompt.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/SelectPrompt.test.tsx rename to packages/cli-kit/src/shared/ui/components/SelectPrompt.test.tsx index d553ee40e7b..567b9f005d4 100644 --- a/packages/cli-kit/src/private/node/ui/components/SelectPrompt.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/SelectPrompt.test.tsx @@ -1,8 +1,8 @@ import {SelectPrompt} from './SelectPrompt.js' -import {getLastFrameAfterUnmount, sendInputAndWaitForChange, waitForInputsToBeReady, render} from '../../testing/ui.js' -import {unstyled} from '../../../../public/node/output.js' -import {Stdout} from '../../ui.js' -import {AbortController} from '../../../../public/node/abort.js' +import {getLastFrameAfterUnmount, sendInputAndWaitForChange, waitForInputsToBeReady, render} from '../testing.js' +import {unstyled} from '../../node/output.js' +import {Stdout} from '../ui.js' +import {AbortController} from '../../node/abort.js' import {beforeEach, describe, expect, test, vi} from 'vitest' import React from 'react' import {useStdout} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/SelectPrompt.tsx b/packages/cli-kit/src/shared/ui/components/SelectPrompt.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/SelectPrompt.tsx rename to packages/cli-kit/src/shared/ui/components/SelectPrompt.tsx index bbaf35d2ae2..954449eaae3 100644 --- a/packages/cli-kit/src/private/node/ui/components/SelectPrompt.tsx +++ b/packages/cli-kit/src/shared/ui/components/SelectPrompt.tsx @@ -2,7 +2,7 @@ import {SelectInput, SelectInputProps, Item as SelectItem} from './SelectInput.j import {InfoTableProps} from './Prompts/InfoTable.js' import {InfoMessageProps} from './Prompts/InfoMessage.js' import {Message, PromptLayout} from './Prompts/PromptLayout.js' -import {AbortSignal} from '../../../../public/node/abort.js' +import {AbortSignal} from '../../node/abort.js' import usePrompt, {PromptState} from '../hooks/use-prompt.js' import React, {ReactElement, useCallback, useEffect} from 'react' import {useApp} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/SingleTask.test.tsx b/packages/cli-kit/src/shared/ui/components/SingleTask.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/SingleTask.test.tsx rename to packages/cli-kit/src/shared/ui/components/SingleTask.test.tsx index 89c95f0c1f0..306158a20e8 100644 --- a/packages/cli-kit/src/private/node/ui/components/SingleTask.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/SingleTask.test.tsx @@ -1,6 +1,6 @@ import {SingleTask} from './SingleTask.js' -import {render} from '../../testing/ui.js' -import {TokenizedString} from '../../../../public/node/output.js' +import {render} from '../testing.js' +import {TokenizedString} from '../../node/output.js' import React from 'react' import {describe, expect, test} from 'vitest' diff --git a/packages/cli-kit/src/private/node/ui/components/SingleTask.tsx b/packages/cli-kit/src/shared/ui/components/SingleTask.tsx similarity index 92% rename from packages/cli-kit/src/private/node/ui/components/SingleTask.tsx rename to packages/cli-kit/src/shared/ui/components/SingleTask.tsx index 563f4f4001e..061f7d10a41 100644 --- a/packages/cli-kit/src/private/node/ui/components/SingleTask.tsx +++ b/packages/cli-kit/src/shared/ui/components/SingleTask.tsx @@ -1,6 +1,6 @@ import {LoadingBar} from './LoadingBar.js' -import {handleCtrlC} from '../../ui.js' -import {TokenizedString} from '../../../../public/node/output.js' +import {handleCtrlC} from '../ui.js' +import {TokenizedString} from '../../node/output.js' import React, {useEffect, useState} from 'react' import {useApp, useInput, useStdin} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/Subdued.test.tsx b/packages/cli-kit/src/shared/ui/components/Subdued.test.tsx similarity index 87% rename from packages/cli-kit/src/private/node/ui/components/Subdued.test.tsx rename to packages/cli-kit/src/shared/ui/components/Subdued.test.tsx index 59ff6154acd..662632f4be8 100644 --- a/packages/cli-kit/src/private/node/ui/components/Subdued.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Subdued.test.tsx @@ -1,5 +1,5 @@ import {Subdued} from './Subdued.js' -import {render} from '../../testing/ui.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Subdued.tsx b/packages/cli-kit/src/shared/ui/components/Subdued.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/Subdued.tsx rename to packages/cli-kit/src/shared/ui/components/Subdued.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/Table/Column.ts b/packages/cli-kit/src/shared/ui/components/Table/Column.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/Table/Column.ts rename to packages/cli-kit/src/shared/ui/components/Table/Column.ts diff --git a/packages/cli-kit/src/private/node/ui/components/Table/Row.tsx b/packages/cli-kit/src/shared/ui/components/Table/Row.tsx similarity index 95% rename from packages/cli-kit/src/private/node/ui/components/Table/Row.tsx rename to packages/cli-kit/src/shared/ui/components/Table/Row.tsx index 7e64b1cd253..7fb4476257a 100644 --- a/packages/cli-kit/src/private/node/ui/components/Table/Row.tsx +++ b/packages/cli-kit/src/shared/ui/components/Table/Row.tsx @@ -1,6 +1,6 @@ import ScalarDict from './ScalarDict.js' import {Column} from './Column.js' -import {unstyled} from '../../../../../public/node/output.js' +import {unstyled} from '../../../node/output.js' import {Box, Text} from 'ink' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Table/ScalarDict.ts b/packages/cli-kit/src/shared/ui/components/Table/ScalarDict.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/Table/ScalarDict.ts rename to packages/cli-kit/src/shared/ui/components/Table/ScalarDict.ts diff --git a/packages/cli-kit/src/private/node/ui/components/Table/Table.test.tsx b/packages/cli-kit/src/shared/ui/components/Table/Table.test.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/Table/Table.test.tsx rename to packages/cli-kit/src/shared/ui/components/Table/Table.test.tsx index 5ebdca30e2b..28502f74d54 100644 --- a/packages/cli-kit/src/private/node/ui/components/Table/Table.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Table/Table.test.tsx @@ -1,6 +1,6 @@ import {Table, TableColumn} from './Table.js' import ScalarDict from './ScalarDict.js' -import {render} from '../../../testing/ui.js' +import {render} from '../../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Table/Table.tsx b/packages/cli-kit/src/shared/ui/components/Table/Table.tsx similarity index 96% rename from packages/cli-kit/src/private/node/ui/components/Table/Table.tsx rename to packages/cli-kit/src/shared/ui/components/Table/Table.tsx index 175cfb4d9ad..c0d2e8e97d7 100644 --- a/packages/cli-kit/src/private/node/ui/components/Table/Table.tsx +++ b/packages/cli-kit/src/shared/ui/components/Table/Table.tsx @@ -1,6 +1,6 @@ import ScalarDict from './ScalarDict.js' import {Row} from './Row.js' -import {unstyled} from '../../../../../public/node/output.js' +import {unstyled} from '../../../node/output.js' import React from 'react' import {Box} from 'ink' import {ForegroundColor} from 'chalk' diff --git a/packages/cli-kit/src/private/node/ui/components/TabularData.tsx b/packages/cli-kit/src/shared/ui/components/TabularData.tsx similarity index 94% rename from packages/cli-kit/src/private/node/ui/components/TabularData.tsx rename to packages/cli-kit/src/shared/ui/components/TabularData.tsx index a228308af54..3e04d27630d 100644 --- a/packages/cli-kit/src/private/node/ui/components/TabularData.tsx +++ b/packages/cli-kit/src/shared/ui/components/TabularData.tsx @@ -1,5 +1,5 @@ import {InlineToken, TokenizedText, tokenItemToString} from './TokenizedText.js' -import {unstyled} from '../../../../public/node/output.js' +import {unstyled} from '../../node/output.js' import {Box} from 'ink' import React, {FunctionComponent} from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/Tasks.test.tsx b/packages/cli-kit/src/shared/ui/components/Tasks.test.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/Tasks.test.tsx rename to packages/cli-kit/src/shared/ui/components/Tasks.test.tsx index ab192ca1a45..c54e2e329a9 100644 --- a/packages/cli-kit/src/private/node/ui/components/Tasks.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/Tasks.test.tsx @@ -1,8 +1,8 @@ import {Task, Tasks} from './Tasks.js' -import {getLastFrameAfterUnmount, render} from '../../testing/ui.js' -import {unstyled, TokenizedString} from '../../../../public/node/output.js' -import {AbortController} from '../../../../public/node/abort.js' -import {Stdout} from '../../ui.js' +import {getLastFrameAfterUnmount, render} from '../testing.js' +import {unstyled, TokenizedString} from '../../node/output.js' +import {AbortController} from '../../node/abort.js' +import {Stdout} from '../ui.js' import React from 'react' import {beforeEach, describe, expect, test, vi} from 'vitest' import {useStdout} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/Tasks.tsx b/packages/cli-kit/src/shared/ui/components/Tasks.tsx similarity index 94% rename from packages/cli-kit/src/private/node/ui/components/Tasks.tsx rename to packages/cli-kit/src/shared/ui/components/Tasks.tsx index cb5153d1793..5d0b1048e5c 100644 --- a/packages/cli-kit/src/private/node/ui/components/Tasks.tsx +++ b/packages/cli-kit/src/shared/ui/components/Tasks.tsx @@ -1,10 +1,10 @@ import {LoadingBar} from './LoadingBar.js' import useAsyncAndUnmount from '../hooks/use-async-and-unmount.js' -import {isUnitTest} from '../../../../public/node/context/local.js' -import {AbortSignal} from '../../../../public/node/abort.js' +import {isUnitTest} from '../../node/context/local.js' +import {AbortSignal} from '../../node/abort.js' import useAbortSignal from '../hooks/use-abort-signal.js' import {useExitOnCtrlC} from '../hooks/use-exit-on-ctrl-c.js' -import {TokenizedString} from '../../../../public/node/output.js' +import {TokenizedString} from '../../node/output.js' import React, {useRef, useState} from 'react' export interface Task { diff --git a/packages/cli-kit/src/private/node/ui/components/TextAnimation.test.tsx b/packages/cli-kit/src/shared/ui/components/TextAnimation.test.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/TextAnimation.test.tsx rename to packages/cli-kit/src/shared/ui/components/TextAnimation.test.tsx index 8b2ca4ac910..a05fbc3ae4d 100644 --- a/packages/cli-kit/src/private/node/ui/components/TextAnimation.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/TextAnimation.test.tsx @@ -1,6 +1,6 @@ import {TextAnimation} from './TextAnimation.js' -import {render} from '../../testing/ui.js' -import {Stdout} from '../../ui.js' +import {render} from '../testing.js' +import {Stdout} from '../ui.js' import React from 'react' import {beforeEach, describe, expect, test, vi} from 'vitest' import {useStdout} from 'ink' diff --git a/packages/cli-kit/src/private/node/ui/components/TextAnimation.tsx b/packages/cli-kit/src/shared/ui/components/TextAnimation.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/TextAnimation.tsx rename to packages/cli-kit/src/shared/ui/components/TextAnimation.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/TextInput.test.tsx b/packages/cli-kit/src/shared/ui/components/TextInput.test.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/TextInput.test.tsx rename to packages/cli-kit/src/shared/ui/components/TextInput.test.tsx index 2f7e8a48a6d..778db79d1b6 100644 --- a/packages/cli-kit/src/private/node/ui/components/TextInput.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/TextInput.test.tsx @@ -1,11 +1,5 @@ import {TextInput} from './TextInput.js' -import { - sendInputAndWait, - sendInputAndWaitForChange, - waitForChange, - waitForInputsToBeReady, - render, -} from '../../testing/ui.js' +import {sendInputAndWait, sendInputAndWaitForChange, waitForChange, waitForInputsToBeReady, render} from '../testing.js' import React, {useState} from 'react' import {describe, test, expect, vi} from 'vitest' diff --git a/packages/cli-kit/src/private/node/ui/components/TextInput.tsx b/packages/cli-kit/src/shared/ui/components/TextInput.tsx similarity index 98% rename from packages/cli-kit/src/private/node/ui/components/TextInput.tsx rename to packages/cli-kit/src/shared/ui/components/TextInput.tsx index 95cee6c85d9..9072a8825b7 100644 --- a/packages/cli-kit/src/private/node/ui/components/TextInput.tsx +++ b/packages/cli-kit/src/shared/ui/components/TextInput.tsx @@ -1,5 +1,5 @@ /* eslint-disable no-nested-ternary */ -import {shouldDisplayColors} from '../../../../public/node/output.js' +import {shouldDisplayColors} from '../../node/output.js' import React, {useEffect, useState} from 'react' import {Text, useInput} from 'ink' import chalk from 'chalk' diff --git a/packages/cli-kit/src/private/node/ui/components/TextPrompt.test.tsx b/packages/cli-kit/src/shared/ui/components/TextPrompt.test.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/TextPrompt.test.tsx rename to packages/cli-kit/src/shared/ui/components/TextPrompt.test.tsx index da4804114e3..402da897bc5 100644 --- a/packages/cli-kit/src/private/node/ui/components/TextPrompt.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/TextPrompt.test.tsx @@ -1,8 +1,8 @@ import {TextPrompt} from './TextPrompt.js' -import {getLastFrameAfterUnmount, sendInputAndWaitForChange, waitForInputsToBeReady, render} from '../../testing/ui.js' -import {unstyled} from '../../../../public/node/output.js' -import {AbortController} from '../../../../public/node/abort.js' -import colors from '../../../../public/node/colors.js' +import {getLastFrameAfterUnmount, sendInputAndWaitForChange, waitForInputsToBeReady, render} from '../testing.js' +import {unstyled} from '../../node/output.js' +import {AbortController} from '../../node/abort.js' +import colors from '../../node/colors.js' import React from 'react' import {describe, expect, test, vi} from 'vitest' diff --git a/packages/cli-kit/src/private/node/ui/components/TextPrompt.tsx b/packages/cli-kit/src/shared/ui/components/TextPrompt.tsx similarity index 97% rename from packages/cli-kit/src/private/node/ui/components/TextPrompt.tsx rename to packages/cli-kit/src/shared/ui/components/TextPrompt.tsx index a3cb482e38b..4ec70feac5d 100644 --- a/packages/cli-kit/src/private/node/ui/components/TextPrompt.tsx +++ b/packages/cli-kit/src/shared/ui/components/TextPrompt.tsx @@ -1,9 +1,9 @@ import {TextInput} from './TextInput.js' import {InlineToken, TokenItem, TokenizedText} from './TokenizedText.js' -import {handleCtrlC} from '../../ui.js' +import {handleCtrlC} from '../ui.js' import useLayout from '../hooks/use-layout.js' import {messageWithPunctuation} from '../utilities.js' -import {AbortSignal} from '../../../../public/node/abort.js' +import {AbortSignal} from '../../node/abort.js' import useAbortSignal from '../hooks/use-abort-signal.js' import usePrompt, {PromptState} from '../hooks/use-prompt.js' import React, {FunctionComponent, useCallback, useEffect, useState} from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/TokenizedText.test.tsx b/packages/cli-kit/src/shared/ui/components/TokenizedText.test.tsx similarity index 94% rename from packages/cli-kit/src/private/node/ui/components/TokenizedText.test.tsx rename to packages/cli-kit/src/shared/ui/components/TokenizedText.test.tsx index f0dfefc46e0..31205899b0e 100644 --- a/packages/cli-kit/src/private/node/ui/components/TokenizedText.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/TokenizedText.test.tsx @@ -1,6 +1,6 @@ import {tokenItemToString, TokenizedText} from './TokenizedText.js' -import {unstyled} from '../../../../public/node/output.js' -import {render} from '../../testing/ui.js' +import {unstyled} from '../../node/output.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/TokenizedText.tsx b/packages/cli-kit/src/shared/ui/components/TokenizedText.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/TokenizedText.tsx rename to packages/cli-kit/src/shared/ui/components/TokenizedText.tsx diff --git a/packages/cli-kit/src/private/node/ui/components/UserInput.test.tsx b/packages/cli-kit/src/shared/ui/components/UserInput.test.tsx similarity index 88% rename from packages/cli-kit/src/private/node/ui/components/UserInput.test.tsx rename to packages/cli-kit/src/shared/ui/components/UserInput.test.tsx index 35144a251e4..e3b920dd7a7 100644 --- a/packages/cli-kit/src/private/node/ui/components/UserInput.test.tsx +++ b/packages/cli-kit/src/shared/ui/components/UserInput.test.tsx @@ -1,5 +1,5 @@ import {UserInput} from './UserInput.js' -import {render} from '../../testing/ui.js' +import {render} from '../testing.js' import {describe, expect, test} from 'vitest' import React from 'react' diff --git a/packages/cli-kit/src/private/node/ui/components/UserInput.tsx b/packages/cli-kit/src/shared/ui/components/UserInput.tsx similarity index 100% rename from packages/cli-kit/src/private/node/ui/components/UserInput.tsx rename to packages/cli-kit/src/shared/ui/components/UserInput.tsx diff --git a/packages/cli-kit/src/private/node/ui/contexts/LinksContext.ts b/packages/cli-kit/src/shared/ui/contexts/LinksContext.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/contexts/LinksContext.ts rename to packages/cli-kit/src/shared/ui/contexts/LinksContext.ts diff --git a/packages/cli-kit/src/private/node/ui/hooks/use-abort-signal.ts b/packages/cli-kit/src/shared/ui/hooks/use-abort-signal.ts similarity index 92% rename from packages/cli-kit/src/private/node/ui/hooks/use-abort-signal.ts rename to packages/cli-kit/src/shared/ui/hooks/use-abort-signal.ts index 64e908ef34a..2a655b51fc9 100644 --- a/packages/cli-kit/src/private/node/ui/hooks/use-abort-signal.ts +++ b/packages/cli-kit/src/shared/ui/hooks/use-abort-signal.ts @@ -1,4 +1,4 @@ -import {AbortSignal} from '../../../../public/node/abort.js' +import {AbortSignal} from '../../node/abort.js' import {useApp} from 'ink' import {useLayoutEffect, useState} from 'react' diff --git a/packages/cli-kit/src/private/node/ui/hooks/use-async-and-unmount.ts b/packages/cli-kit/src/shared/ui/hooks/use-async-and-unmount.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/hooks/use-async-and-unmount.ts rename to packages/cli-kit/src/shared/ui/hooks/use-async-and-unmount.ts diff --git a/packages/cli-kit/src/private/node/ui/hooks/use-exit-on-ctrl-c.test.ts b/packages/cli-kit/src/shared/ui/hooks/use-exit-on-ctrl-c.test.ts similarity index 97% rename from packages/cli-kit/src/private/node/ui/hooks/use-exit-on-ctrl-c.test.ts rename to packages/cli-kit/src/shared/ui/hooks/use-exit-on-ctrl-c.test.ts index bea454f7c77..ff763e3d4bf 100644 --- a/packages/cli-kit/src/private/node/ui/hooks/use-exit-on-ctrl-c.test.ts +++ b/packages/cli-kit/src/shared/ui/hooks/use-exit-on-ctrl-c.test.ts @@ -1,5 +1,5 @@ import {useExitOnCtrlC} from './use-exit-on-ctrl-c.js' -import {handleCtrlC} from '../../ui.js' +import {handleCtrlC} from '../ui.js' import {describe, expect, test, vi} from 'vitest' import {useInput, useStdin} from 'ink' @@ -8,7 +8,7 @@ vi.mock('ink', () => ({ useStdin: vi.fn(), })) -vi.mock('../../ui.js', () => ({ +vi.mock('../ui.js', () => ({ handleCtrlC: vi.fn(), })) diff --git a/packages/cli-kit/src/private/node/ui/hooks/use-exit-on-ctrl-c.ts b/packages/cli-kit/src/shared/ui/hooks/use-exit-on-ctrl-c.ts similarity index 90% rename from packages/cli-kit/src/private/node/ui/hooks/use-exit-on-ctrl-c.ts rename to packages/cli-kit/src/shared/ui/hooks/use-exit-on-ctrl-c.ts index 7bb625f1418..a5cc04ca136 100644 --- a/packages/cli-kit/src/private/node/ui/hooks/use-exit-on-ctrl-c.ts +++ b/packages/cli-kit/src/shared/ui/hooks/use-exit-on-ctrl-c.ts @@ -1,4 +1,4 @@ -import {handleCtrlC} from '../../ui.js' +import {handleCtrlC} from '../ui.js' import {useInput, useStdin} from 'ink' /** diff --git a/packages/cli-kit/src/private/node/ui/hooks/use-layout.test.ts b/packages/cli-kit/src/shared/ui/hooks/use-layout.test.ts similarity index 98% rename from packages/cli-kit/src/private/node/ui/hooks/use-layout.test.ts rename to packages/cli-kit/src/shared/ui/hooks/use-layout.test.ts index d1c212c368a..fa6c6260f60 100644 --- a/packages/cli-kit/src/private/node/ui/hooks/use-layout.test.ts +++ b/packages/cli-kit/src/shared/ui/hooks/use-layout.test.ts @@ -1,5 +1,5 @@ import {calculateLayout} from './use-layout.js' -import {Stdout} from '../../ui.js' +import {Stdout} from '../ui.js' import {describe, expect, test, vi} from 'vitest' vi.mock('ink') diff --git a/packages/cli-kit/src/private/node/ui/hooks/use-layout.ts b/packages/cli-kit/src/shared/ui/hooks/use-layout.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/hooks/use-layout.ts rename to packages/cli-kit/src/shared/ui/hooks/use-layout.ts diff --git a/packages/cli-kit/src/private/node/ui/hooks/use-prompt.ts b/packages/cli-kit/src/shared/ui/hooks/use-prompt.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/hooks/use-prompt.ts rename to packages/cli-kit/src/shared/ui/hooks/use-prompt.ts diff --git a/packages/cli-kit/src/private/node/ui/hooks/use-select-state.ts b/packages/cli-kit/src/shared/ui/hooks/use-select-state.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/hooks/use-select-state.ts rename to packages/cli-kit/src/shared/ui/hooks/use-select-state.ts diff --git a/packages/cli-kit/src/private/node/testing/ui.ts b/packages/cli-kit/src/shared/ui/testing.ts similarity index 95% rename from packages/cli-kit/src/private/node/testing/ui.ts rename to packages/cli-kit/src/shared/ui/testing.ts index 70c7fa9ffc9..65178f74745 100644 --- a/packages/cli-kit/src/private/node/testing/ui.ts +++ b/packages/cli-kit/src/shared/ui/testing.ts @@ -1,5 +1,5 @@ -import {isTruthy} from '../../../public/node/context/utilities.js' -import {Stdout} from '../ui.js' +import {Stdout} from './ui.js' +import {isTruthy} from '../node/context/utilities.js' import {ReactElement} from 'react' import {render as inkRender} from 'ink' import {EventEmitter} from 'events' @@ -67,10 +67,11 @@ export const render = (tree: ReactElement, options: RenderOptions = {}): Instanc const stdin = new Stdin() const instance = inkRender(tree, { + // eslint-disable-next-line @typescript-eslint/no-explicit-any stdout: options.stdout ?? (stdout as any), - + // eslint-disable-next-line @typescript-eslint/no-explicit-any stderr: options.stderr ?? (stderr as any), - + // eslint-disable-next-line @typescript-eslint/no-explicit-any stdin: options.stdin ?? (stdin as any), debug: true, exitOnCtrlC: false, diff --git a/packages/cli-kit/src/private/node/ui.tsx b/packages/cli-kit/src/shared/ui/ui.tsx similarity index 90% rename from packages/cli-kit/src/private/node/ui.tsx rename to packages/cli-kit/src/shared/ui/ui.tsx index 7df2c5e09ee..158f88e96b0 100644 --- a/packages/cli-kit/src/private/node/ui.tsx +++ b/packages/cli-kit/src/shared/ui/ui.tsx @@ -1,7 +1,7 @@ -import {output} from './output.js' -import {Logger, LogLevel} from '../../public/node/output.js' -import {isUnitTest} from '../../public/node/context/local.js' -import {treeKill} from '../../public/node/tree-kill.js' +import {output} from '../node/internal/output.js' +import {Logger, LogLevel} from '../node/output.js' +import {isUnitTest} from '../node/context/local.js' +import {treeKill} from '../node/tree-kill.js' import {ReactElement} from 'react' import {Key, render as inkRender, RenderOptions} from 'ink' import {EventEmitter} from 'events' diff --git a/packages/cli-kit/src/private/node/ui/utilities.test.ts b/packages/cli-kit/src/shared/ui/utilities.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/utilities.test.ts rename to packages/cli-kit/src/shared/ui/utilities.test.ts diff --git a/packages/cli-kit/src/private/node/ui/utilities.ts b/packages/cli-kit/src/shared/ui/utilities.ts similarity index 100% rename from packages/cli-kit/src/private/node/ui/utilities.ts rename to packages/cli-kit/src/shared/ui/utilities.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/dev-server-2016.ts b/packages/cli-kit/src/shared/vendor/dev_server/dev-server-2016.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/dev-server-2016.ts rename to packages/cli-kit/src/shared/vendor/dev_server/dev-server-2016.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/dev-server-2024.ts b/packages/cli-kit/src/shared/vendor/dev_server/dev-server-2024.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/dev-server-2024.ts rename to packages/cli-kit/src/shared/vendor/dev_server/dev-server-2024.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/dev-server.ts b/packages/cli-kit/src/shared/vendor/dev_server/dev-server.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/dev-server.ts rename to packages/cli-kit/src/shared/vendor/dev_server/dev-server.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/env.ts b/packages/cli-kit/src/shared/vendor/dev_server/env.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/env.ts rename to packages/cli-kit/src/shared/vendor/dev_server/env.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/index.ts b/packages/cli-kit/src/shared/vendor/dev_server/index.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/index.ts rename to packages/cli-kit/src/shared/vendor/dev_server/index.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/network-interfaces.d.ts b/packages/cli-kit/src/shared/vendor/dev_server/network-interfaces.d.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/network-interfaces.d.ts rename to packages/cli-kit/src/shared/vendor/dev_server/network-interfaces.d.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/network/host.ts b/packages/cli-kit/src/shared/vendor/dev_server/network/host.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/network/host.ts rename to packages/cli-kit/src/shared/vendor/dev_server/network/host.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/network/index.ts b/packages/cli-kit/src/shared/vendor/dev_server/network/index.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/network/index.ts rename to packages/cli-kit/src/shared/vendor/dev_server/network/index.ts diff --git a/packages/cli-kit/src/public/node/vendor/dev_server/types.ts b/packages/cli-kit/src/shared/vendor/dev_server/types.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/dev_server/types.ts rename to packages/cli-kit/src/shared/vendor/dev_server/types.ts diff --git a/packages/cli-kit/src/public/node/vendor/otel-js/export/InstantaneousMetricReader.ts b/packages/cli-kit/src/shared/vendor/otel-js/export/InstantaneousMetricReader.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/otel-js/export/InstantaneousMetricReader.ts rename to packages/cli-kit/src/shared/vendor/otel-js/export/InstantaneousMetricReader.ts diff --git a/packages/cli-kit/src/public/node/vendor/otel-js/service/BaseOtelService/BaseOtelService.ts b/packages/cli-kit/src/shared/vendor/otel-js/service/BaseOtelService/BaseOtelService.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/otel-js/service/BaseOtelService/BaseOtelService.ts rename to packages/cli-kit/src/shared/vendor/otel-js/service/BaseOtelService/BaseOtelService.ts diff --git a/packages/cli-kit/src/public/node/vendor/otel-js/service/DefaultOtelService/DefaultMeterProvider.ts b/packages/cli-kit/src/shared/vendor/otel-js/service/DefaultOtelService/DefaultMeterProvider.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/otel-js/service/DefaultOtelService/DefaultMeterProvider.ts rename to packages/cli-kit/src/shared/vendor/otel-js/service/DefaultOtelService/DefaultMeterProvider.ts diff --git a/packages/cli-kit/src/public/node/vendor/otel-js/service/DefaultOtelService/DefaultOtelService.ts b/packages/cli-kit/src/shared/vendor/otel-js/service/DefaultOtelService/DefaultOtelService.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/otel-js/service/DefaultOtelService/DefaultOtelService.ts rename to packages/cli-kit/src/shared/vendor/otel-js/service/DefaultOtelService/DefaultOtelService.ts diff --git a/packages/cli-kit/src/public/node/vendor/otel-js/service/types.ts b/packages/cli-kit/src/shared/vendor/otel-js/service/types.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/otel-js/service/types.ts rename to packages/cli-kit/src/shared/vendor/otel-js/service/types.ts diff --git a/packages/cli-kit/src/public/node/vendor/otel-js/utils/throttle.ts b/packages/cli-kit/src/shared/vendor/otel-js/utils/throttle.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/otel-js/utils/throttle.ts rename to packages/cli-kit/src/shared/vendor/otel-js/utils/throttle.ts diff --git a/packages/cli-kit/src/public/node/vendor/otel-js/utils/validators.ts b/packages/cli-kit/src/shared/vendor/otel-js/utils/validators.ts similarity index 100% rename from packages/cli-kit/src/public/node/vendor/otel-js/utils/validators.ts rename to packages/cli-kit/src/shared/vendor/otel-js/utils/validators.ts diff --git a/packages/cli-kit/src/public/node/themes/api.test.ts b/packages/cli-kit/src/themes/api.test.ts similarity index 94% rename from packages/cli-kit/src/public/node/themes/api.test.ts rename to packages/cli-kit/src/themes/api.test.ts index 819f1599338..5861a103107 100644 --- a/packages/cli-kit/src/public/node/themes/api.test.ts +++ b/packages/cli-kit/src/themes/api.test.ts @@ -14,23 +14,23 @@ import { parseThemeFileContent, } from './api.js' import {Operation} from './types.js' -import {ThemeDelete} from '../../../cli/api/graphql/admin/generated/theme_delete.js' -import {ThemeDuplicate} from '../../../cli/api/graphql/admin/generated/theme_duplicate.js' -import {ThemeUpdate} from '../../../cli/api/graphql/admin/generated/theme_update.js' -import {ThemePublish} from '../../../cli/api/graphql/admin/generated/theme_publish.js' -import {ThemeCreate} from '../../../cli/api/graphql/admin/generated/theme_create.js' -import {GetThemeFileChecksums} from '../../../cli/api/graphql/admin/generated/get_theme_file_checksums.js' -import {ThemeFilesUpsert} from '../../../cli/api/graphql/admin/generated/theme_files_upsert.js' -import {ThemeFilesDelete} from '../../../cli/api/graphql/admin/generated/theme_files_delete.js' -import {GetThemes} from '../../../cli/api/graphql/admin/generated/get_themes.js' -import {GetTheme} from '../../../cli/api/graphql/admin/generated/get_theme.js' -import {adminRequestDoc, supportedApiVersions} from '../api/admin.js' -import {AbortError} from '../error.js' +import {ThemeDelete} from '../admin/graphql/generated/theme_delete.js' +import {ThemeDuplicate} from '../admin/graphql/generated/theme_duplicate.js' +import {ThemeUpdate} from '../admin/graphql/generated/theme_update.js' +import {ThemePublish} from '../admin/graphql/generated/theme_publish.js' +import {ThemeCreate} from '../admin/graphql/generated/theme_create.js' +import {GetThemeFileChecksums} from '../admin/graphql/generated/get_theme_file_checksums.js' +import {ThemeFilesUpsert} from '../admin/graphql/generated/theme_files_upsert.js' +import {ThemeFilesDelete} from '../admin/graphql/generated/theme_files_delete.js' +import {GetThemes} from '../admin/graphql/generated/get_themes.js' +import {GetTheme} from '../admin/graphql/generated/get_theme.js' +import {adminRequestDoc, supportedApiVersions} from '../admin/api.js' +import {AbortError} from '../shared/node/error.js' import {test, vi, expect, describe, beforeEach} from 'vitest' import {ClientError} from 'graphql-request' -vi.mock('@shopify/cli-kit/node/api/admin') -vi.mock('@shopify/cli-kit/node/system') +vi.mock('../admin/api.js') +vi.mock('../shared/node/system.js') vi.stubGlobal('fetch', vi.fn()) const session = {token: 'token', storeFqdn: 'my-shop.myshopify.com', refresh: async () => {}} diff --git a/packages/cli-kit/src/public/node/themes/api.ts b/packages/cli-kit/src/themes/api.ts similarity index 91% rename from packages/cli-kit/src/public/node/themes/api.ts rename to packages/cli-kit/src/themes/api.ts index 4084c4fcebc..80492026e2a 100644 --- a/packages/cli-kit/src/public/node/themes/api.ts +++ b/packages/cli-kit/src/themes/api.ts @@ -1,34 +1,31 @@ import {composeThemeGid, parseGid, DEVELOPMENT_THEME_ROLE} from './utils.js' import {buildTheme} from './factories.js' import {Result, Checksum, Key, Theme, ThemeAsset, Operation} from './types.js' -import {ThemeUpdate} from '../../../cli/api/graphql/admin/generated/theme_update.js' -import {ThemeDelete} from '../../../cli/api/graphql/admin/generated/theme_delete.js' -import {ThemeDuplicate} from '../../../cli/api/graphql/admin/generated/theme_duplicate.js' -import {ThemePublish} from '../../../cli/api/graphql/admin/generated/theme_publish.js' -import {ThemeCreate} from '../../../cli/api/graphql/admin/generated/theme_create.js' -import {GetThemeFileBodies} from '../../../cli/api/graphql/admin/generated/get_theme_file_bodies.js' -import {GetThemeFileChecksums} from '../../../cli/api/graphql/admin/generated/get_theme_file_checksums.js' -import { - ThemeFilesUpsert, - ThemeFilesUpsertMutation, -} from '../../../cli/api/graphql/admin/generated/theme_files_upsert.js' -import {ThemeFilesDelete} from '../../../cli/api/graphql/admin/generated/theme_files_delete.js' +import {ThemeUpdate} from '../admin/graphql/generated/theme_update.js' +import {ThemeDelete} from '../admin/graphql/generated/theme_delete.js' +import {ThemeDuplicate} from '../admin/graphql/generated/theme_duplicate.js' +import {ThemePublish} from '../admin/graphql/generated/theme_publish.js' +import {ThemeCreate} from '../admin/graphql/generated/theme_create.js' +import {GetThemeFileBodies} from '../admin/graphql/generated/get_theme_file_bodies.js' +import {GetThemeFileChecksums} from '../admin/graphql/generated/get_theme_file_checksums.js' +import {ThemeFilesUpsert, ThemeFilesUpsertMutation} from '../admin/graphql/generated/theme_files_upsert.js' +import {ThemeFilesDelete} from '../admin/graphql/generated/theme_files_delete.js' import { OnlineStoreThemeFileBodyInputType, OnlineStoreThemeFilesUpsertFileInput, MetafieldOwnerType, ThemeRole, -} from '../../../cli/api/graphql/admin/generated/types.js' -import {MetafieldDefinitionsByOwnerType} from '../../../cli/api/graphql/admin/generated/metafield_definitions_by_owner_type.js' -import {GetThemes} from '../../../cli/api/graphql/admin/generated/get_themes.js' -import {GetTheme} from '../../../cli/api/graphql/admin/generated/get_theme.js' -import {OnlineStorePasswordProtection} from '../../../cli/api/graphql/admin/generated/online_store_password_protection.js' -import {RequestModeInput} from '../http.js' -import {adminRequestDoc} from '../api/admin.js' -import {AdminSession} from '../session.js' -import {AbortError} from '../error.js' -import {outputDebug} from '../output.js' -import {recordTiming, recordEvent, recordError} from '../analytics.js' +} from '../admin/graphql/generated/types.js' +import {MetafieldDefinitionsByOwnerType} from '../admin/graphql/generated/metafield_definitions_by_owner_type.js' +import {GetThemes} from '../admin/graphql/generated/get_themes.js' +import {GetTheme} from '../admin/graphql/generated/get_theme.js' +import {OnlineStorePasswordProtection} from '../admin/graphql/generated/online_store_password_protection.js' +import {RequestModeInput} from '../shared/node/http.js' +import {adminRequestDoc} from '../admin/api.js' +import {AdminSession} from '../identity/session.js' +import {AbortError} from '../shared/node/error.js' +import {outputDebug} from '../shared/node/output.js' +import {recordTiming, recordEvent, recordError} from '../shared/node/analytics.js' export type ThemeParams = Partial> export type AssetParams = Pick & Partial> diff --git a/packages/cli-kit/src/public/node/themes/conf.ts b/packages/cli-kit/src/themes/conf.ts similarity index 85% rename from packages/cli-kit/src/public/node/themes/conf.ts rename to packages/cli-kit/src/themes/conf.ts index 936aeec1805..95f3d867c95 100644 --- a/packages/cli-kit/src/public/node/themes/conf.ts +++ b/packages/cli-kit/src/themes/conf.ts @@ -1,6 +1,6 @@ -import {LocalStorage} from '../local-storage.js' -import {AdminSession} from '../session.js' -import {outputDebug, outputContent} from '../output.js' +import {LocalStorage} from '../shared/node/local-storage.js' +import {AdminSession} from '../identity/session.js' +import {outputDebug, outputContent} from '../shared/node/output.js' type HostThemeId = string type StoreFqdn = AdminSession['storeFqdn'] diff --git a/packages/cli-kit/src/public/node/themes/factories.ts b/packages/cli-kit/src/themes/factories.ts similarity index 100% rename from packages/cli-kit/src/public/node/themes/factories.ts rename to packages/cli-kit/src/themes/factories.ts diff --git a/packages/cli-kit/src/private/node/themes/generate-theme-name.test.ts b/packages/cli-kit/src/themes/generate-theme-name.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/themes/generate-theme-name.test.ts rename to packages/cli-kit/src/themes/generate-theme-name.test.ts diff --git a/packages/cli-kit/src/private/node/themes/generate-theme-name.ts b/packages/cli-kit/src/themes/generate-theme-name.ts similarity index 100% rename from packages/cli-kit/src/private/node/themes/generate-theme-name.ts rename to packages/cli-kit/src/themes/generate-theme-name.ts diff --git a/packages/cli-kit/src/private/node/themes/replace-invalid-characters.test.ts b/packages/cli-kit/src/themes/replace-invalid-characters.test.ts similarity index 100% rename from packages/cli-kit/src/private/node/themes/replace-invalid-characters.test.ts rename to packages/cli-kit/src/themes/replace-invalid-characters.test.ts diff --git a/packages/cli-kit/src/private/node/themes/replace-invalid-characters.ts b/packages/cli-kit/src/themes/replace-invalid-characters.ts similarity index 100% rename from packages/cli-kit/src/private/node/themes/replace-invalid-characters.ts rename to packages/cli-kit/src/themes/replace-invalid-characters.ts diff --git a/packages/cli-kit/src/public/node/themes/theme-manager.ts b/packages/cli-kit/src/themes/theme-manager.ts similarity index 88% rename from packages/cli-kit/src/public/node/themes/theme-manager.ts rename to packages/cli-kit/src/themes/theme-manager.ts index 2a40aa46912..1b18c6b9b96 100644 --- a/packages/cli-kit/src/public/node/themes/theme-manager.ts +++ b/packages/cli-kit/src/themes/theme-manager.ts @@ -1,9 +1,9 @@ import {fetchTheme, themeCreate} from './api.js' import {Theme} from './types.js' import {DEVELOPMENT_THEME_ROLE, Role} from './utils.js' -import {generateThemeName} from '../../../private/node/themes/generate-theme-name.js' -import {AdminSession} from '../session.js' -import {BugError} from '../error.js' +import {generateThemeName} from './generate-theme-name.js' +import {AdminSession} from '../identity/session.js' +import {BugError} from '../shared/node/error.js' export abstract class ThemeManager { protected themeId: string | undefined diff --git a/packages/cli-kit/src/public/node/themes/types.ts b/packages/cli-kit/src/themes/types.ts similarity index 99% rename from packages/cli-kit/src/public/node/themes/types.ts rename to packages/cli-kit/src/themes/types.ts index 55f4a2ffefe..c3c419a1e55 100644 --- a/packages/cli-kit/src/public/node/themes/types.ts +++ b/packages/cli-kit/src/themes/types.ts @@ -1,4 +1,4 @@ -import {AdminSession} from '../session.js' +import {AdminSession} from '../identity/session.js' /** * {@link Key} represents the unique identifier of a file in a theme. diff --git a/packages/cli-kit/src/public/node/themes/urls.test.ts b/packages/cli-kit/src/themes/urls.test.ts similarity index 100% rename from packages/cli-kit/src/public/node/themes/urls.test.ts rename to packages/cli-kit/src/themes/urls.test.ts diff --git a/packages/cli-kit/src/public/node/themes/urls.ts b/packages/cli-kit/src/themes/urls.ts similarity index 94% rename from packages/cli-kit/src/public/node/themes/urls.ts rename to packages/cli-kit/src/themes/urls.ts index d26a8eb1ca8..06b01285fbf 100644 --- a/packages/cli-kit/src/public/node/themes/urls.ts +++ b/packages/cli-kit/src/themes/urls.ts @@ -1,5 +1,5 @@ import {Theme} from './types.js' -import {AdminSession} from '../session.js' +import {AdminSession} from '../identity/session.js' export function themePreviewUrl(theme: Theme, session: AdminSession) { const store = session.storeFqdn diff --git a/packages/cli-kit/src/public/node/themes/utils.ts b/packages/cli-kit/src/themes/utils.ts similarity index 89% rename from packages/cli-kit/src/public/node/themes/utils.ts rename to packages/cli-kit/src/themes/utils.ts index bee6ad98ed8..d8c2eb91dc0 100644 --- a/packages/cli-kit/src/public/node/themes/utils.ts +++ b/packages/cli-kit/src/themes/utils.ts @@ -1,6 +1,6 @@ import {Theme} from './types.js' -import {renderTextPrompt} from '../ui.js' -import {getRandomName} from '../../common/string.js' +import {renderTextPrompt} from '../shared/node/ui.js' +import {getRandomName} from '../shared/common/string.js' const GID_REGEXP = /gid:\/\/shopify\/\w*\/(\d+)/ diff --git a/packages/cli-kit/src/public/node/api/webhooks.ts b/packages/cli-kit/src/webhooks/api.ts similarity index 90% rename from packages/cli-kit/src/public/node/api/webhooks.ts rename to packages/cli-kit/src/webhooks/api.ts index 572e551c413..5e3345715e6 100644 --- a/packages/cli-kit/src/public/node/api/webhooks.ts +++ b/packages/cli-kit/src/webhooks/api.ts @@ -1,5 +1,5 @@ -import {graphqlRequestDoc, UnauthorizedHandler} from './graphql.js' -import {appManagementFqdn} from '../context/fqdn.js' +import {graphqlRequestDoc, UnauthorizedHandler} from '../shared/node/api/graphql.js' +import {appManagementFqdn} from '../shared/node/context/fqdn.js' import Bottleneck from 'bottleneck' import {Variables} from 'graphql-request' import {TypedDocumentNode} from '@graphql-typed-document-node/core' diff --git a/packages/cli/src/cli/commands/auth/login.test.ts b/packages/cli/src/cli/commands/auth/login.test.ts index 29401713c58..87eb6b0ddf8 100644 --- a/packages/cli/src/cli/commands/auth/login.test.ts +++ b/packages/cli/src/cli/commands/auth/login.test.ts @@ -1,9 +1,9 @@ import Login from './login.js' import {describe, expect, vi, test} from 'vitest' -import {promptSessionSelect} from '@shopify/cli-kit/node/session-prompt' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {promptSessionSelect} from '@shopify/cli-kit/identity/session-prompt' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' -vi.mock('@shopify/cli-kit/node/session-prompt') +vi.mock('@shopify/cli-kit/identity/session-prompt') describe('Login command', () => { test('runs login without alias flag', async () => { diff --git a/packages/cli/src/cli/commands/auth/login.ts b/packages/cli/src/cli/commands/auth/login.ts index 992b311dd26..0b70766a823 100644 --- a/packages/cli/src/cli/commands/auth/login.ts +++ b/packages/cli/src/cli/commands/auth/login.ts @@ -1,7 +1,7 @@ -import Command from '@shopify/cli-kit/node/base-command' -import {promptSessionSelect} from '@shopify/cli-kit/node/session-prompt' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {promptSessionSelect} from '@shopify/cli-kit/identity/session-prompt' import {Flags} from '@oclif/core' -import {outputCompleted} from '@shopify/cli-kit/node/output' +import {outputCompleted} from '@shopify/cli-kit/shared/node/output' export default class Login extends Command { static description = 'Logs you in to your Shopify account.' diff --git a/packages/cli/src/cli/commands/auth/logout.test.ts b/packages/cli/src/cli/commands/auth/logout.test.ts index 6894fd8fadc..93f4bb27310 100644 --- a/packages/cli/src/cli/commands/auth/logout.test.ts +++ b/packages/cli/src/cli/commands/auth/logout.test.ts @@ -1,9 +1,9 @@ import Logout from './logout.js' import {describe, expect, vi, test} from 'vitest' -import {logout} from '@shopify/cli-kit/node/session' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {logout} from '@shopify/cli-kit/identity/session' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' -vi.mock('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/identity/session') describe('logs out', () => { test('clears the session', async () => { diff --git a/packages/cli/src/cli/commands/auth/logout.ts b/packages/cli/src/cli/commands/auth/logout.ts index de1ce42c00b..5db4bcc69f8 100644 --- a/packages/cli/src/cli/commands/auth/logout.ts +++ b/packages/cli/src/cli/commands/auth/logout.ts @@ -1,6 +1,6 @@ -import Command from '@shopify/cli-kit/node/base-command' -import {outputSuccess} from '@shopify/cli-kit/node/output' -import {logout} from '@shopify/cli-kit/node/session' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {outputSuccess} from '@shopify/cli-kit/shared/node/output' +import {logout} from '@shopify/cli-kit/identity/session' export default class Logout extends Command { static description = 'Logs you out of the Shopify account or Partner account and store.' diff --git a/packages/cli/src/cli/commands/cache/clear.ts b/packages/cli/src/cli/commands/cache/clear.ts index ea901b071c8..99c729f196f 100644 --- a/packages/cli/src/cli/commands/cache/clear.ts +++ b/packages/cli/src/cli/commands/cache/clear.ts @@ -1,5 +1,5 @@ -import Command from '@shopify/cli-kit/node/base-command' -import {clearCache} from '@shopify/cli-kit/node/cli' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {clearCache} from '@shopify/cli-kit/shared/node/cli' export default class ClearCache extends Command { static description = 'Clear the CLI cache, used to store some API responses and handle notifications status' diff --git a/packages/cli/src/cli/commands/debug/command-flags.ts b/packages/cli/src/cli/commands/debug/command-flags.ts index 1f303c11585..ed13b5028aa 100644 --- a/packages/cli/src/cli/commands/debug/command-flags.ts +++ b/packages/cli/src/cli/commands/debug/command-flags.ts @@ -1,6 +1,6 @@ -import Command from '@shopify/cli-kit/node/base-command' -import {outputResult} from '@shopify/cli-kit/node/output' -import {renderTable} from '@shopify/cli-kit/node/ui' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {outputResult} from '@shopify/cli-kit/shared/node/output' +import {renderTable} from '@shopify/cli-kit/shared/node/ui' import {Flags} from '@oclif/core' export default class CommandFlags extends Command { diff --git a/packages/cli/src/cli/commands/docs/generate.test.ts b/packages/cli/src/cli/commands/docs/generate.test.ts index ea56dec56d9..d79bb3b8764 100644 --- a/packages/cli/src/cli/commands/docs/generate.test.ts +++ b/packages/cli/src/cli/commands/docs/generate.test.ts @@ -6,10 +6,10 @@ import { writeCommandFlagInterface, writeCommandUsageExampleFile, } from './generate.js' -import {writeFile} from '@shopify/cli-kit/node/fs' +import {writeFile} from '@shopify/cli-kit/shared/node/fs' import {describe, test, vi, expect} from 'vitest' -vi.mock('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/fs') const testCommand: CommandWithMarkdown = { aliases: [], diff --git a/packages/cli/src/cli/commands/docs/generate.ts b/packages/cli/src/cli/commands/docs/generate.ts index 2c5e90d8b2b..88767a47d8b 100644 --- a/packages/cli/src/cli/commands/docs/generate.ts +++ b/packages/cli/src/cli/commands/docs/generate.ts @@ -1,8 +1,8 @@ -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' import {Command as oclifCommand} from '@oclif/core' -import {mkdir, rmdir, writeFile} from '@shopify/cli-kit/node/fs' -import {cwd, joinPath} from '@shopify/cli-kit/node/path' -import {outputInfo} from '@shopify/cli-kit/node/output' +import {mkdir, rmdir, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {cwd, joinPath} from '@shopify/cli-kit/shared/node/path' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' const docsPath = joinPath(cwd(), '/docs-shopify.dev/commands') diff --git a/packages/cli/src/cli/commands/doctor-release/doctor-release.ts b/packages/cli/src/cli/commands/doctor-release/doctor-release.ts index b7e701877e7..f8d0ff08921 100644 --- a/packages/cli/src/cli/commands/doctor-release/doctor-release.ts +++ b/packages/cli/src/cli/commands/doctor-release/doctor-release.ts @@ -1,6 +1,6 @@ -import Command from '@shopify/cli-kit/node/base-command' -import {canRunDoctorRelease} from '@shopify/cli-kit/node/context/local' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {canRunDoctorRelease} from '@shopify/cli-kit/shared/node/context/local' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' export default class DoctorRelease extends Command { static description = 'Run CLI doctor-release tests' diff --git a/packages/cli/src/cli/commands/doctor-release/theme/index.ts b/packages/cli/src/cli/commands/doctor-release/theme/index.ts index 026a1f0eeab..2508e8be958 100644 --- a/packages/cli/src/cli/commands/doctor-release/theme/index.ts +++ b/packages/cli/src/cli/commands/doctor-release/theme/index.ts @@ -1,9 +1,9 @@ import {runThemeDoctor} from '../../../services/doctor-release/theme/runner.js' -import Command from '@shopify/cli-kit/node/base-command' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' import {Flags} from '@oclif/core' -import {resolvePath, cwd} from '@shopify/cli-kit/node/path' -import {canRunDoctorRelease} from '@shopify/cli-kit/node/context/local' +import {resolvePath, cwd} from '@shopify/cli-kit/shared/node/path' +import {canRunDoctorRelease} from '@shopify/cli-kit/shared/node/context/local' export default class DoctorReleaseTheme extends Command { static description = 'Run all theme command doctor-release tests' diff --git a/packages/cli/src/cli/commands/help.ts b/packages/cli/src/cli/commands/help.ts index 6590a5ce5ce..e0b4051d613 100644 --- a/packages/cli/src/cli/commands/help.ts +++ b/packages/cli/src/cli/commands/help.ts @@ -1,5 +1,5 @@ import {Args, Flags, loadHelpClass} from '@oclif/core' -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' export default class HelpCommand extends Command { static args = { diff --git a/packages/cli/src/cli/commands/kitchen-sink/async.ts b/packages/cli/src/cli/commands/kitchen-sink/async.ts index 5b20360e3b8..249a887abe0 100644 --- a/packages/cli/src/cli/commands/kitchen-sink/async.ts +++ b/packages/cli/src/cli/commands/kitchen-sink/async.ts @@ -1,5 +1,5 @@ import {asyncTasks} from '../../services/kitchen-sink/async.js' -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' /** * This command is used to output all the async UI components of the CLI. diff --git a/packages/cli/src/cli/commands/kitchen-sink/index.ts b/packages/cli/src/cli/commands/kitchen-sink/index.ts index a61e69678b8..2b19f5711a6 100644 --- a/packages/cli/src/cli/commands/kitchen-sink/index.ts +++ b/packages/cli/src/cli/commands/kitchen-sink/index.ts @@ -1,7 +1,7 @@ import {asyncTasks} from '../../services/kitchen-sink/async.js' import {staticService} from '../../services/kitchen-sink/static.js' import {prompts} from '../../services/kitchen-sink/prompts.js' -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' /** * This command is used to output all the UI components of the CLI. diff --git a/packages/cli/src/cli/commands/kitchen-sink/prompts.ts b/packages/cli/src/cli/commands/kitchen-sink/prompts.ts index 9627f999991..0438a1ffeb1 100644 --- a/packages/cli/src/cli/commands/kitchen-sink/prompts.ts +++ b/packages/cli/src/cli/commands/kitchen-sink/prompts.ts @@ -1,5 +1,5 @@ import {prompts} from '../../services/kitchen-sink/prompts.js' -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' /** * This command is used to output all the UI prompt components of the CLI. diff --git a/packages/cli/src/cli/commands/kitchen-sink/static.ts b/packages/cli/src/cli/commands/kitchen-sink/static.ts index 6b6ebec9bba..ec9423acf5f 100644 --- a/packages/cli/src/cli/commands/kitchen-sink/static.ts +++ b/packages/cli/src/cli/commands/kitchen-sink/static.ts @@ -1,5 +1,5 @@ import {staticService} from '../../services/kitchen-sink/static.js' -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' /** * This command is used to output all the banner UI components of the CLI. diff --git a/packages/cli/src/cli/commands/notifications/generate.ts b/packages/cli/src/cli/commands/notifications/generate.ts index 30637c72180..a31df510fbc 100644 --- a/packages/cli/src/cli/commands/notifications/generate.ts +++ b/packages/cli/src/cli/commands/notifications/generate.ts @@ -1,5 +1,5 @@ import {generate} from '../../services/commands/notifications.js' -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' export default class Generate extends Command { static description = diff --git a/packages/cli/src/cli/commands/notifications/list.ts b/packages/cli/src/cli/commands/notifications/list.ts index ef721cb137e..9f8be2c89d1 100644 --- a/packages/cli/src/cli/commands/notifications/list.ts +++ b/packages/cli/src/cli/commands/notifications/list.ts @@ -1,7 +1,7 @@ import {list} from '../../services/commands/notifications.js' import {Flags} from '@oclif/core' -import Command from '@shopify/cli-kit/node/base-command' -import {sendErrorToBugsnag} from '@shopify/cli-kit/node/error-handler' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {sendErrorToBugsnag} from '@shopify/cli-kit/shared/node/error-handler' export default class List extends Command { static description = 'List current notifications configured for the CLI.' diff --git a/packages/cli/src/cli/commands/search.ts b/packages/cli/src/cli/commands/search.ts index bb1346b8341..687fcad2505 100644 --- a/packages/cli/src/cli/commands/search.ts +++ b/packages/cli/src/cli/commands/search.ts @@ -1,5 +1,5 @@ import {searchService} from '../services/commands/search.js' -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' import {Args} from '@oclif/core' export default class Search extends Command { diff --git a/packages/cli/src/cli/commands/upgrade.ts b/packages/cli/src/cli/commands/upgrade.ts index 6472ea9b6dc..1be78207765 100644 --- a/packages/cli/src/cli/commands/upgrade.ts +++ b/packages/cli/src/cli/commands/upgrade.ts @@ -1,6 +1,6 @@ -import {cliInstallCommand} from '@shopify/cli-kit/node/upgrade' -import Command from '@shopify/cli-kit/node/base-command' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import {cliInstallCommand} from '@shopify/cli-kit/shared/node/upgrade' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' export default class Upgrade extends Command { static summary = 'Shows details on how to upgrade Shopify CLI.' diff --git a/packages/cli/src/cli/commands/version.ts b/packages/cli/src/cli/commands/version.ts index 482eeb7ec50..47f6febaa22 100644 --- a/packages/cli/src/cli/commands/version.ts +++ b/packages/cli/src/cli/commands/version.ts @@ -1,5 +1,5 @@ import {versionService} from '../services/commands/version.js' -import Command from '@shopify/cli-kit/node/base-command' +import Command from '@shopify/cli-kit/shared/node/base-command' export default class Version extends Command { static description = 'Shopify CLI version currently installed.' diff --git a/packages/cli/src/cli/services/commands/notifications.ts b/packages/cli/src/cli/services/commands/notifications.ts index aa712a7b466..fdd503e1a93 100644 --- a/packages/cli/src/cli/services/commands/notifications.ts +++ b/packages/cli/src/cli/services/commands/notifications.ts @@ -1,15 +1,15 @@ -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' -import {randomUUID} from '@shopify/cli-kit/node/crypto' -import {writeFile} from '@shopify/cli-kit/node/fs' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' +import {randomUUID} from '@shopify/cli-kit/shared/node/crypto' +import {writeFile} from '@shopify/cli-kit/shared/node/fs' import { Notifications, Notification, stringifyFilters, getNotifications, fetchNotifications, -} from '@shopify/cli-kit/node/notifications-system' -import {outputInfo} from '@shopify/cli-kit/node/output' -import {renderSelectPrompt, renderTextPrompt, renderSuccess, renderTable, TableColumn} from '@shopify/cli-kit/node/ui' +} from '@shopify/cli-kit/shared/node/notifications-system' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' +import {renderSelectPrompt, renderTextPrompt, renderSuccess, renderTable, TableColumn} from '@shopify/cli-kit/shared/node/ui' export async function generate() { const today = new Date() diff --git a/packages/cli/src/cli/services/commands/search.test.ts b/packages/cli/src/cli/services/commands/search.test.ts index 31c2ca30fd1..86ce7ae417e 100644 --- a/packages/cli/src/cli/services/commands/search.test.ts +++ b/packages/cli/src/cli/services/commands/search.test.ts @@ -1,8 +1,8 @@ import {searchService} from './search.js' import {describe, expect, test, vi} from 'vitest' -import {openURL} from '@shopify/cli-kit/node/system' +import {openURL} from '@shopify/cli-kit/shared/node/system' -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system') describe('searchService', () => { test('the right URL is open in the system when a query is passed', async () => { diff --git a/packages/cli/src/cli/services/commands/search.ts b/packages/cli/src/cli/services/commands/search.ts index 23109da229b..cf6484f0dd3 100644 --- a/packages/cli/src/cli/services/commands/search.ts +++ b/packages/cli/src/cli/services/commands/search.ts @@ -1,4 +1,4 @@ -import {openURL} from '@shopify/cli-kit/node/system' +import {openURL} from '@shopify/cli-kit/shared/node/system' export async function searchService(query?: string) { const searchParams = new URLSearchParams() diff --git a/packages/cli/src/cli/services/commands/version.test.ts b/packages/cli/src/cli/services/commands/version.test.ts index 4e3680b310e..e87fed98ab1 100644 --- a/packages/cli/src/cli/services/commands/version.test.ts +++ b/packages/cli/src/cli/services/commands/version.test.ts @@ -1,9 +1,9 @@ import {versionService} from './version.js' import {afterEach, describe, expect, vi, test} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' -vi.mock('@shopify/cli-kit/node/node-package-manager') -vi.mock('@shopify/cli-kit/common/version', () => ({CLI_KIT_VERSION: '2.2.2'})) +vi.mock('@shopify/cli-kit/shared/node/node-package-manager') +vi.mock('@shopify/cli-kit/shared/common/version', () => ({CLI_KIT_VERSION: '2.2.2'})) afterEach(() => { mockAndCaptureOutput().clear() diff --git a/packages/cli/src/cli/services/commands/version.ts b/packages/cli/src/cli/services/commands/version.ts index df92a13da06..28ee7147242 100644 --- a/packages/cli/src/cli/services/commands/version.ts +++ b/packages/cli/src/cli/services/commands/version.ts @@ -1,5 +1,5 @@ -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' -import {outputResult} from '@shopify/cli-kit/node/output' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' +import {outputResult} from '@shopify/cli-kit/shared/node/output' export async function versionService(): Promise { outputResult(CLI_KIT_VERSION) diff --git a/packages/cli/src/cli/services/doctor-release/context.ts b/packages/cli/src/cli/services/doctor-release/context.ts index c4c35c8e406..f5fbe955042 100644 --- a/packages/cli/src/cli/services/doctor-release/context.ts +++ b/packages/cli/src/cli/services/doctor-release/context.ts @@ -1,5 +1,5 @@ -import {cwd} from '@shopify/cli-kit/node/path' -import type {DoctorContext} from '@shopify/cli-kit/node/doctor/types' +import {cwd} from '@shopify/cli-kit/shared/node/path' +import type {DoctorContext} from '@shopify/cli-kit/shared/node/doctor/types' export interface ThemeDoctorContext extends DoctorContext { // Environment name from shopify.theme.toml (required) diff --git a/packages/cli/src/cli/services/doctor-release/theme/runner.ts b/packages/cli/src/cli/services/doctor-release/theme/runner.ts index dfaf013cf4d..30471cffe6d 100644 --- a/packages/cli/src/cli/services/doctor-release/theme/runner.ts +++ b/packages/cli/src/cli/services/doctor-release/theme/runner.ts @@ -7,10 +7,10 @@ import { reportSuiteStart, reportSummary, initReporter, -} from '@shopify/cli-kit/node/doctor/reporter' -import {DoctorSuite} from '@shopify/cli-kit/node/doctor/framework' +} from '@shopify/cli-kit/shared/node/doctor/reporter' +import {DoctorSuite} from '@shopify/cli-kit/shared/node/doctor/framework' import type {ThemeDoctorContext, ThemeDoctorOptions} from '../context.js' -import type {TestResult} from '@shopify/cli-kit/node/doctor/types' +import type {TestResult} from '@shopify/cli-kit/shared/node/doctor/types' // Test suites run in order. If a test relies on another, ensure that test runs after it's dependency. const themeSuites: (new () => DoctorSuite)[] = [ThemeInitTests, ThemePushTests] diff --git a/packages/cli/src/cli/services/doctor-release/theme/tests/init.ts b/packages/cli/src/cli/services/doctor-release/theme/tests/init.ts index b768fb97911..21e04453ffc 100644 --- a/packages/cli/src/cli/services/doctor-release/theme/tests/init.ts +++ b/packages/cli/src/cli/services/doctor-release/theme/tests/init.ts @@ -1,6 +1,6 @@ -import {DoctorSuite} from '@shopify/cli-kit/node/doctor/framework' -import {joinPath} from '@shopify/cli-kit/node/path' -import {getRandomName} from '@shopify/cli-kit/common/string' +import {DoctorSuite} from '@shopify/cli-kit/shared/node/doctor/framework' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {getRandomName} from '@shopify/cli-kit/shared/common/string' import type {ThemeDoctorContext} from '../../context.js' /** diff --git a/packages/cli/src/cli/services/doctor-release/theme/tests/push.ts b/packages/cli/src/cli/services/doctor-release/theme/tests/push.ts index 4bd4b0c806f..f11b85cfcdf 100644 --- a/packages/cli/src/cli/services/doctor-release/theme/tests/push.ts +++ b/packages/cli/src/cli/services/doctor-release/theme/tests/push.ts @@ -1,4 +1,4 @@ -import {DoctorSuite} from '@shopify/cli-kit/node/doctor/framework' +import {DoctorSuite} from '@shopify/cli-kit/shared/node/doctor/framework' import type {ThemeDoctorContext} from '../../context.js' interface PushJsonOutput { diff --git a/packages/cli/src/cli/services/kitchen-sink/async.ts b/packages/cli/src/cli/services/kitchen-sink/async.ts index 89154e4be34..be105a22ccb 100644 --- a/packages/cli/src/cli/services/kitchen-sink/async.ts +++ b/packages/cli/src/cli/services/kitchen-sink/async.ts @@ -1,6 +1,6 @@ -import {renderConcurrent, renderSingleTask, renderTasks} from '@shopify/cli-kit/node/ui' -import {AbortSignal} from '@shopify/cli-kit/node/abort' -import {outputContent, outputToken, TokenizedString} from '@shopify/cli-kit/node/output' +import {renderConcurrent, renderSingleTask, renderTasks} from '@shopify/cli-kit/shared/node/ui' +import {AbortSignal} from '@shopify/cli-kit/shared/node/abort' +import {outputContent, outputToken, TokenizedString} from '@shopify/cli-kit/shared/node/output' import {Writable} from 'stream' export async function asyncTasks() { diff --git a/packages/cli/src/cli/services/kitchen-sink/prompts.ts b/packages/cli/src/cli/services/kitchen-sink/prompts.ts index e40f5f2d846..dd4c5a31420 100644 --- a/packages/cli/src/cli/services/kitchen-sink/prompts.ts +++ b/packages/cli/src/cli/services/kitchen-sink/prompts.ts @@ -4,8 +4,8 @@ import { renderSelectPrompt, renderTextPrompt, renderDangerousConfirmationPrompt, -} from '@shopify/cli-kit/node/ui' -import figures from '@shopify/cli-kit/node/figures' +} from '@shopify/cli-kit/shared/node/ui' +import figures from '@shopify/cli-kit/shared/node/figures' export async function prompts() { // renderSelectPrompt diff --git a/packages/cli/src/cli/services/kitchen-sink/static.ts b/packages/cli/src/cli/services/kitchen-sink/static.ts index 32a01e8c1e6..58f0b793d54 100644 --- a/packages/cli/src/cli/services/kitchen-sink/static.ts +++ b/packages/cli/src/cli/services/kitchen-sink/static.ts @@ -1,4 +1,4 @@ -import {AbortError, BugError} from '@shopify/cli-kit/node/error' +import {AbortError, BugError} from '@shopify/cli-kit/shared/node/error' import { renderError, renderFatalError, @@ -6,7 +6,7 @@ import { renderSuccess, renderTable, renderWarning, -} from '@shopify/cli-kit/node/ui' +} from '@shopify/cli-kit/shared/node/ui' export async function staticService() { // Banners diff --git a/packages/cli/src/cli/services/upgrade.test.ts b/packages/cli/src/cli/services/upgrade.test.ts index 08407731792..9b51322e048 100644 --- a/packages/cli/src/cli/services/upgrade.test.ts +++ b/packages/cli/src/cli/services/upgrade.test.ts @@ -1,24 +1,24 @@ import {upgrade} from './upgrade.js' import * as upgradeService from './upgrade.js' import {afterEach, beforeEach, describe, expect, vi, test} from 'vitest' -import {platformAndArch} from '@shopify/cli-kit/node/os' -import * as nodePackageManager from '@shopify/cli-kit/node/node-package-manager' -import {exec, captureOutput} from '@shopify/cli-kit/node/system' -import {inTemporaryDirectory, touchFile, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath, normalizePath} from '@shopify/cli-kit/node/path' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' -import {AbortError} from '@shopify/cli-kit/node/error' +import {platformAndArch} from '@shopify/cli-kit/shared/node/os' +import * as nodePackageManager from '@shopify/cli-kit/shared/node/node-package-manager' +import {exec, captureOutput} from '@shopify/cli-kit/shared/node/system' +import {inTemporaryDirectory, touchFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, normalizePath} from '@shopify/cli-kit/shared/node/path' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' const oldCliVersion = '3.0.0' // just needs to be higher than oldCliVersion for these tests const currentCliVersion = '3.10.0' -vi.mock('@shopify/cli-kit/node/os', async () => { +vi.mock('@shopify/cli-kit/shared/node/os', async () => { return { platformAndArch: vi.fn(), } }) -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system') beforeEach(async () => { vi.mocked(platformAndArch).mockReturnValue({platform: 'windows', arch: 'amd64'}) diff --git a/packages/cli/src/cli/services/upgrade.ts b/packages/cli/src/cli/services/upgrade.ts index 0ae3524bd3d..414f3f7b937 100644 --- a/packages/cli/src/cli/services/upgrade.ts +++ b/packages/cli/src/cli/services/upgrade.ts @@ -7,12 +7,12 @@ import { getPackageManager, PackageJson, usesWorkspaces, -} from '@shopify/cli-kit/node/node-package-manager' -import {exec} from '@shopify/cli-kit/node/system' -import {dirname, joinPath, moduleDirectory} from '@shopify/cli-kit/node/path' -import {findPathUp, glob} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputInfo, outputSuccess, outputToken, outputWarn} from '@shopify/cli-kit/node/output' +} from '@shopify/cli-kit/shared/node/node-package-manager' +import {exec} from '@shopify/cli-kit/shared/node/system' +import {dirname, joinPath, moduleDirectory} from '@shopify/cli-kit/shared/node/path' +import {findPathUp, glob} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputInfo, outputSuccess, outputToken, outputWarn} from '@shopify/cli-kit/shared/node/output' type HomebrewPackageName = 'shopify-cli' | 'shopify-cli@3' diff --git a/packages/cli/src/hooks/postrun.ts b/packages/cli/src/hooks/postrun.ts index 9beb6f15d90..fadd41a6a72 100644 --- a/packages/cli/src/hooks/postrun.ts +++ b/packages/cli/src/hooks/postrun.ts @@ -1 +1 @@ -export {hook as default} from '@shopify/cli-kit/node/hooks/postrun' +export {hook as default} from '@shopify/cli-kit/shared/node/hooks/postrun' diff --git a/packages/cli/src/hooks/prerun.ts b/packages/cli/src/hooks/prerun.ts index c3283a474cb..62ac3afcbb5 100644 --- a/packages/cli/src/hooks/prerun.ts +++ b/packages/cli/src/hooks/prerun.ts @@ -1 +1 @@ -export {hook as default} from '@shopify/cli-kit/node/hooks/prerun' +export {hook as default} from '@shopify/cli-kit/shared/node/hooks/prerun' diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 6b361f0aeb5..b00a9a37d0e 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -23,9 +23,9 @@ import {commands as AppCommands} from '@shopify/app' import {commands as PluginCommandsCommands} from '@oclif/plugin-commands' import {commands as PluginPluginsCommands} from '@oclif/plugin-plugins' import {DidYouMeanCommands} from '@shopify/plugin-did-you-mean' -import {runCLI} from '@shopify/cli-kit/node/cli' -import {renderFatalError} from '@shopify/cli-kit/node/ui' -import {FatalError} from '@shopify/cli-kit/node/error' +import {runCLI} from '@shopify/cli-kit/shared/node/cli' +import {renderFatalError} from '@shopify/cli-kit/shared/node/ui' +import {FatalError} from '@shopify/cli-kit/shared/node/error' import fs from 'fs' export {DidYouMeanHook} from '@shopify/plugin-did-you-mean' diff --git a/packages/create-app/src/hooks/postrun.ts b/packages/create-app/src/hooks/postrun.ts index 9beb6f15d90..fadd41a6a72 100644 --- a/packages/create-app/src/hooks/postrun.ts +++ b/packages/create-app/src/hooks/postrun.ts @@ -1 +1 @@ -export {hook as default} from '@shopify/cli-kit/node/hooks/postrun' +export {hook as default} from '@shopify/cli-kit/shared/node/hooks/postrun' diff --git a/packages/create-app/src/hooks/prerun.ts b/packages/create-app/src/hooks/prerun.ts index c3283a474cb..62ac3afcbb5 100644 --- a/packages/create-app/src/hooks/prerun.ts +++ b/packages/create-app/src/hooks/prerun.ts @@ -1 +1 @@ -export {hook as default} from '@shopify/cli-kit/node/hooks/prerun' +export {hook as default} from '@shopify/cli-kit/shared/node/hooks/prerun' diff --git a/packages/create-app/src/index.ts b/packages/create-app/src/index.ts index b3bdbcce8a0..fb148e638c6 100644 --- a/packages/create-app/src/index.ts +++ b/packages/create-app/src/index.ts @@ -1,5 +1,5 @@ import {commands} from '@shopify/app' -import {runCreateCLI} from '@shopify/cli-kit/node/cli' +import {runCreateCLI} from '@shopify/cli-kit/shared/node/cli' async function runCreateAppCLI(development: boolean) { await runCreateCLI({ diff --git a/packages/plugin-cloudflare/src/install-cloudflared.test.ts b/packages/plugin-cloudflare/src/install-cloudflared.test.ts index 412cbcbeb5a..f989f07719c 100644 --- a/packages/plugin-cloudflare/src/install-cloudflared.test.ts +++ b/packages/plugin-cloudflare/src/install-cloudflared.test.ts @@ -1,6 +1,6 @@ import install, {CURRENT_CLOUDFLARE_VERSION, versionIsGreaterThan} from './install-cloudflared.js' -import * as fsActions from '@shopify/cli-kit/node/fs' -import * as http from '@shopify/cli-kit/node/http' +import * as fsActions from '@shopify/cli-kit/shared/node/fs' +import * as http from '@shopify/cli-kit/shared/node/http' import {beforeEach, describe, expect, test, vi} from 'vitest' import util from 'util' import {WriteStream} from 'fs' diff --git a/packages/plugin-cloudflare/src/install-cloudflared.ts b/packages/plugin-cloudflare/src/install-cloudflared.ts index d96d3ef8960..7dabdc1897e 100644 --- a/packages/plugin-cloudflare/src/install-cloudflared.ts +++ b/packages/plugin-cloudflare/src/install-cloudflared.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ // Install script for cloudflared, derived from https://github.com/JacobLinCool/node-cloudflared -import {basename, dirname, joinPath} from '@shopify/cli-kit/node/path' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {fetch} from '@shopify/cli-kit/node/http' +import {basename, dirname, joinPath} from '@shopify/cli-kit/shared/node/path' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {fetch} from '@shopify/cli-kit/shared/node/http' import { chmod, fileExistsSync, @@ -10,7 +10,7 @@ import { renameFile, unlinkFileSync, createFileWriteStream, -} from '@shopify/cli-kit/node/fs' +} from '@shopify/cli-kit/shared/node/fs' import {fileURLToPath} from 'url' import util from 'util' import {pipeline} from 'stream' diff --git a/packages/plugin-cloudflare/src/provider.ts b/packages/plugin-cloudflare/src/provider.ts index d3cd81a277b..7f20d5dc04c 100644 --- a/packages/plugin-cloudflare/src/provider.ts +++ b/packages/plugin-cloudflare/src/provider.ts @@ -1,4 +1,4 @@ -import {defineProvider} from '@shopify/cli-kit/node/plugins/tunnel' +import {defineProvider} from '@shopify/cli-kit/shared/node/plugins/tunnel' export const TUNNEL_PROVIDER = 'cloudflare' export default defineProvider({name: TUNNEL_PROVIDER}) diff --git a/packages/plugin-cloudflare/src/tunnel.test.ts b/packages/plugin-cloudflare/src/tunnel.test.ts index d7479a9526f..cf8d472c010 100644 --- a/packages/plugin-cloudflare/src/tunnel.test.ts +++ b/packages/plugin-cloudflare/src/tunnel.test.ts @@ -1,11 +1,11 @@ import {hookStart} from './tunnel.js' import install from './install-cloudflared.js' import {describe, vi, expect, test, beforeAll} from 'vitest' -import {exec} from '@shopify/cli-kit/node/system' +import {exec} from '@shopify/cli-kit/shared/node/system' import {Writable} from 'stream' const port = 1234 -vi.mock('@shopify/cli-kit/node/system') +vi.mock('@shopify/cli-kit/shared/node/system') vi.mock('./install-cloudflared.js') describe('hookStart', () => { diff --git a/packages/plugin-cloudflare/src/tunnel.ts b/packages/plugin-cloudflare/src/tunnel.ts index 73b5432e65f..472145b06a1 100644 --- a/packages/plugin-cloudflare/src/tunnel.ts +++ b/packages/plugin-cloudflare/src/tunnel.ts @@ -6,14 +6,14 @@ import { TunnelStartReturn, TunnelStatusType, TunnelClient, -} from '@shopify/cli-kit/node/plugins/tunnel' -import {err, ok} from '@shopify/cli-kit/node/result' -import {exec, sleep} from '@shopify/cli-kit/node/system' -import {AbortController} from '@shopify/cli-kit/node/abort' -import {joinPath, dirname} from '@shopify/cli-kit/node/path' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {isUnitTest} from '@shopify/cli-kit/node/context/local' -import {BugError} from '@shopify/cli-kit/node/error' +} from '@shopify/cli-kit/shared/node/plugins/tunnel' +import {err, ok} from '@shopify/cli-kit/shared/node/result' +import {exec, sleep} from '@shopify/cli-kit/shared/node/system' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' +import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import {BugError} from '@shopify/cli-kit/shared/node/error' import {Writable} from 'stream' import {fileURLToPath} from 'url' diff --git a/packages/plugin-did-you-mean/src/commands/config/autocorrect/off.test.ts b/packages/plugin-did-you-mean/src/commands/config/autocorrect/off.test.ts index f55cd877fe8..3aa6730ecf8 100644 --- a/packages/plugin-did-you-mean/src/commands/config/autocorrect/off.test.ts +++ b/packages/plugin-did-you-mean/src/commands/config/autocorrect/off.test.ts @@ -2,7 +2,7 @@ import AutocorrectOff from './off.js' import {setAutocorrect} from '../../../services/conf.js' import {Config} from '@oclif/core' import {describe, expect, vi, test} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' vi.mock('../../../services/conf.js') diff --git a/packages/plugin-did-you-mean/src/commands/config/autocorrect/off.ts b/packages/plugin-did-you-mean/src/commands/config/autocorrect/off.ts index 5cd30d4b0c4..df546a095f4 100644 --- a/packages/plugin-did-you-mean/src/commands/config/autocorrect/off.ts +++ b/packages/plugin-did-you-mean/src/commands/config/autocorrect/off.ts @@ -1,7 +1,7 @@ import {autocorrectStatus} from '../../../services/constants.js' import {setAutocorrect} from '../../../services/conf.js' -import Command from '@shopify/cli-kit/node/base-command' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' export default class AutocorrectOff extends Command { static summary = 'Disable autocorrect. Off by default.' diff --git a/packages/plugin-did-you-mean/src/commands/config/autocorrect/on.test.ts b/packages/plugin-did-you-mean/src/commands/config/autocorrect/on.test.ts index 59025187a8c..9bc05c157a3 100644 --- a/packages/plugin-did-you-mean/src/commands/config/autocorrect/on.test.ts +++ b/packages/plugin-did-you-mean/src/commands/config/autocorrect/on.test.ts @@ -2,7 +2,7 @@ import AutocorrectOn from './on.js' import {setAutocorrect} from '../../../services/conf.js' import {Config} from '@oclif/core' import {describe, expect, vi, test} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' vi.mock('../../../services/conf.js') diff --git a/packages/plugin-did-you-mean/src/commands/config/autocorrect/on.ts b/packages/plugin-did-you-mean/src/commands/config/autocorrect/on.ts index 0129817cdf5..c4fc44a9143 100644 --- a/packages/plugin-did-you-mean/src/commands/config/autocorrect/on.ts +++ b/packages/plugin-did-you-mean/src/commands/config/autocorrect/on.ts @@ -1,7 +1,7 @@ import {autocorrectStatus} from '../../../services/constants.js' import {setAutocorrect} from '../../../services/conf.js' -import Command from '@shopify/cli-kit/node/base-command' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' export default class AutocorrectOn extends Command { static summary = 'Enable autocorrect. Off by default.' diff --git a/packages/plugin-did-you-mean/src/commands/config/autocorrect/status.test.ts b/packages/plugin-did-you-mean/src/commands/config/autocorrect/status.test.ts index 59e6ea86c45..1e06a45c093 100644 --- a/packages/plugin-did-you-mean/src/commands/config/autocorrect/status.test.ts +++ b/packages/plugin-did-you-mean/src/commands/config/autocorrect/status.test.ts @@ -2,7 +2,7 @@ import AutocorrectStatus from './status.js' import {isAutocorrectEnabled} from '../../../services/conf.js' import {Config} from '@oclif/core' import {describe, expect, vi, test} from 'vitest' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' vi.mock('../../../services/conf.js') diff --git a/packages/plugin-did-you-mean/src/commands/config/autocorrect/status.ts b/packages/plugin-did-you-mean/src/commands/config/autocorrect/status.ts index 41796495c13..53ce8362f3a 100644 --- a/packages/plugin-did-you-mean/src/commands/config/autocorrect/status.ts +++ b/packages/plugin-did-you-mean/src/commands/config/autocorrect/status.ts @@ -1,7 +1,7 @@ import {autocorrectStatus} from '../../../services/constants.js' import {isAutocorrectEnabled} from '../../../services/conf.js' -import Command from '@shopify/cli-kit/node/base-command' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' export default class AutocorrectStatus extends Command { static summary = 'Check whether autocorrect is enabled or disabled. On by default.' diff --git a/packages/plugin-did-you-mean/src/index.test.ts b/packages/plugin-did-you-mean/src/index.test.ts index dfd938444d9..dfba615669b 100644 --- a/packages/plugin-did-you-mean/src/index.test.ts +++ b/packages/plugin-did-you-mean/src/index.test.ts @@ -1,7 +1,7 @@ import {findAlternativeCommand, shouldRunCommand} from './index.js' import {isAutocorrectEnabled} from './services/conf.js' import {describe, expect, vi, test} from 'vitest' -import {renderConfirmationPrompt} from '@shopify/cli-kit/node/ui' +import {renderConfirmationPrompt} from '@shopify/cli-kit/shared/node/ui' interface Config { commandIDs: string[] @@ -20,7 +20,7 @@ function buildConfig(commands: {id: string; hidden: boolean; aliases: string[]}[ } vi.mock('./services/conf.js') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('commandNotFound hook', () => { test('returns a probable match', () => { diff --git a/packages/plugin-did-you-mean/src/index.ts b/packages/plugin-did-you-mean/src/index.ts index a7472df62f1..02476223270 100644 --- a/packages/plugin-did-you-mean/src/index.ts +++ b/packages/plugin-did-you-mean/src/index.ts @@ -5,9 +5,9 @@ import AutocorrectStatus from './commands/config/autocorrect/status.js' import AutocorrectOn from './commands/config/autocorrect/on.js' import {Hook} from '@oclif/core' import {bigram} from 'n-gram' -import {renderConfirmationPrompt, renderFatalError, renderInfo} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputDebug} from '@shopify/cli-kit/node/output' +import {renderConfirmationPrompt, renderFatalError, renderInfo} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' function sanitizeCmd(cmd: string): string { return cmd.replace(/:/g, ' ') diff --git a/packages/plugin-did-you-mean/src/services/conf.test.ts b/packages/plugin-did-you-mean/src/services/conf.test.ts index 1bdae9a659c..f7ee1238761 100644 --- a/packages/plugin-did-you-mean/src/services/conf.test.ts +++ b/packages/plugin-did-you-mean/src/services/conf.test.ts @@ -1,7 +1,7 @@ import {ConfigSchema, isAutocorrectEnabled, setAutocorrect} from './conf.js' import {describe, expect, test} from 'vitest' -import {inTemporaryDirectory} from '@shopify/cli-kit/node/fs' -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' +import {inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' describe('did-you-mean config', async () => { test('isAutocorrectEnabled returns false if no cached value exists', async () => { diff --git a/packages/plugin-did-you-mean/src/services/conf.ts b/packages/plugin-did-you-mean/src/services/conf.ts index 631db7730f7..6be1b722b65 100644 --- a/packages/plugin-did-you-mean/src/services/conf.ts +++ b/packages/plugin-did-you-mean/src/services/conf.ts @@ -1,4 +1,4 @@ -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' export function isAutocorrectEnabled(conf: LocalStorage = getConfig()): boolean { return Boolean(conf.get('autocorrectEnabled')) diff --git a/packages/theme/src/cli/commands/theme/check.ts b/packages/theme/src/cli/commands/theme/check.ts index 52581848e37..ca80d4a4b90 100644 --- a/packages/theme/src/cli/commands/theme/check.ts +++ b/packages/theme/src/cli/commands/theme/check.ts @@ -14,15 +14,15 @@ import { } from '../../services/check.js' import ThemeCommand, {RequiredFlags} from '../../utilities/theme-command.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {outputResult, outputDebug} from '@shopify/cli-kit/node/output' -import {renderInfo, renderSuccess} from '@shopify/cli-kit/node/ui' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {outputResult, outputDebug} from '@shopify/cli-kit/shared/node/output' +import {renderInfo, renderSuccess} from '@shopify/cli-kit/shared/node/ui' import {themeCheckRun, LegacyIdentifiers} from '@shopify/theme-check-node' -import {findPathUp} from '@shopify/cli-kit/node/fs' -import {moduleDirectory, joinPath} from '@shopify/cli-kit/node/path' -import {getPackageVersion} from '@shopify/cli-kit/node/node-package-manager' +import {findPathUp} from '@shopify/cli-kit/shared/node/fs' +import {moduleDirectory, joinPath} from '@shopify/cli-kit/shared/node/path' +import {getPackageVersion} from '@shopify/cli-kit/shared/node/node-package-manager' import {InferredFlags} from '@oclif/core/interfaces' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' type CheckFlags = InferredFlags export default class Check extends ThemeCommand { diff --git a/packages/theme/src/cli/commands/theme/console.ts b/packages/theme/src/cli/commands/theme/console.ts index ac86ac094db..c97f8a22f44 100644 --- a/packages/theme/src/cli/commands/theme/console.ts +++ b/packages/theme/src/cli/commands/theme/console.ts @@ -1,10 +1,10 @@ import {themeFlags} from '../../flags.js' import ThemeCommand, {RequiredFlags} from '../../utilities/theme-command.js' import {ensureReplEnv, initializeRepl} from '../../services/console.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {AdminSession} from '@shopify/cli-kit/identity/session' import {Flags} from '@oclif/core' -import {recordEvent} from '@shopify/cli-kit/node/analytics' +import {recordEvent} from '@shopify/cli-kit/shared/node/analytics' import {InferredFlags} from '@oclif/core/interfaces' type ConsoleFlags = InferredFlags diff --git a/packages/theme/src/cli/commands/theme/delete.ts b/packages/theme/src/cli/commands/theme/delete.ts index 09f0f8a43a9..563a4556323 100644 --- a/packages/theme/src/cli/commands/theme/delete.ts +++ b/packages/theme/src/cli/commands/theme/delete.ts @@ -2,9 +2,9 @@ import ThemeCommand from '../../utilities/theme-command.js' import {themeFlags} from '../../flags.js' import {themesDelete} from '../../services/delete.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' import {OutputFlags} from '@oclif/core/interfaces' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' type DeleteFlags = OutputFlags export default class Delete extends ThemeCommand { diff --git a/packages/theme/src/cli/commands/theme/dev.ts b/packages/theme/src/cli/commands/theme/dev.ts index dafb12d03f1..5704073e892 100644 --- a/packages/theme/src/cli/commands/theme/dev.ts +++ b/packages/theme/src/cli/commands/theme/dev.ts @@ -6,10 +6,10 @@ import {findOrSelectTheme} from '../../utilities/theme-selector.js' import {metafieldsPull} from '../../services/metafields-pull.js' import {ensureLiveThemeConfirmed} from '../../utilities/theme-ui.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {recordEvent} from '@shopify/cli-kit/node/analytics' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {Theme} from '@shopify/cli-kit/themes/types' +import {recordEvent} from '@shopify/cli-kit/shared/node/analytics' +import {AdminSession} from '@shopify/cli-kit/identity/session' import {InferredFlags} from '@oclif/core/interfaces' import type {ErrorOverlayMode, LiveReload} from '../../utilities/theme-environment/types.js' diff --git a/packages/theme/src/cli/commands/theme/duplicate.ts b/packages/theme/src/cli/commands/theme/duplicate.ts index ab39b96c6df..c4498c10522 100644 --- a/packages/theme/src/cli/commands/theme/duplicate.ts +++ b/packages/theme/src/cli/commands/theme/duplicate.ts @@ -3,8 +3,8 @@ import {themeFlags} from '../../flags.js' import ThemeCommand from '../../utilities/theme-command.js' import {duplicate} from '../../services/duplicate.js' import {Flags} from '@oclif/core' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' -import {ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' +import {ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' export default class Duplicate extends ThemeCommand { static summary = 'Duplicates a theme from your theme library.' diff --git a/packages/theme/src/cli/commands/theme/info.ts b/packages/theme/src/cli/commands/theme/info.ts index 56a36833fa3..a8d73b86997 100644 --- a/packages/theme/src/cli/commands/theme/info.ts +++ b/packages/theme/src/cli/commands/theme/info.ts @@ -2,13 +2,13 @@ import {themeFlags} from '../../flags.js' import {fetchThemeInfo, fetchDevInfo, formatThemeInfo} from '../../services/info.js' import ThemeCommand from '../../utilities/theme-command.js' import {Flags} from '@oclif/core' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {AbortError} from '@shopify/cli-kit/node/error' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' -import {outputResult} from '@shopify/cli-kit/node/output' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' +import {outputResult} from '@shopify/cli-kit/shared/node/output' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' import {OutputFlags} from '@oclif/core/interfaces' -import {recordTiming} from '@shopify/cli-kit/node/analytics' +import {recordTiming} from '@shopify/cli-kit/shared/node/analytics' type InfoFlags = OutputFlags diff --git a/packages/theme/src/cli/commands/theme/init.ts b/packages/theme/src/cli/commands/theme/init.ts index a97206bf853..e784a639ade 100644 --- a/packages/theme/src/cli/commands/theme/init.ts +++ b/packages/theme/src/cli/commands/theme/init.ts @@ -8,13 +8,13 @@ import { promptAIInstruction, } from '../../services/init.js' import {Args, Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {generateRandomNameForSubdirectory} from '@shopify/cli-kit/node/fs' -import {renderTextPrompt} from '@shopify/cli-kit/node/ui' -import {joinPath} from '@shopify/cli-kit/node/path' -import {terminalSupportsPrompting} from '@shopify/cli-kit/node/system' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {generateRandomNameForSubdirectory} from '@shopify/cli-kit/shared/node/fs' +import {renderTextPrompt} from '@shopify/cli-kit/shared/node/ui' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {terminalSupportsPrompting} from '@shopify/cli-kit/shared/node/system' import {InferredArgs, InferredFlags} from '@oclif/core/interfaces' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' type InitFlags = InferredFlags type InitArgs = InferredArgs diff --git a/packages/theme/src/cli/commands/theme/language-server.ts b/packages/theme/src/cli/commands/theme/language-server.ts index 25f644a8aa5..74dd3620164 100644 --- a/packages/theme/src/cli/commands/theme/language-server.ts +++ b/packages/theme/src/cli/commands/theme/language-server.ts @@ -1,5 +1,5 @@ import ThemeCommand, {RequiredFlags} from '../../utilities/theme-command.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' import {startServer} from '@shopify/theme-language-server-node' export default class LanguageServer extends ThemeCommand { diff --git a/packages/theme/src/cli/commands/theme/list.ts b/packages/theme/src/cli/commands/theme/list.ts index 531be086d93..b07a2befee9 100644 --- a/packages/theme/src/cli/commands/theme/list.ts +++ b/packages/theme/src/cli/commands/theme/list.ts @@ -3,9 +3,9 @@ import {themeFlags} from '../../flags.js' import ThemeCommand from '../../utilities/theme-command.js' import {list} from '../../services/list.js' import {Flags} from '@oclif/core' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' import {OutputFlags} from '@oclif/core/interfaces' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' type ListFlags = OutputFlags diff --git a/packages/theme/src/cli/commands/theme/metafields/pull.ts b/packages/theme/src/cli/commands/theme/metafields/pull.ts index 7a0f3e6d426..0ac6e0db46e 100644 --- a/packages/theme/src/cli/commands/theme/metafields/pull.ts +++ b/packages/theme/src/cli/commands/theme/metafields/pull.ts @@ -1,7 +1,7 @@ import {themeFlags} from '../../../flags.js' import {metafieldsPull, MetafieldsPullFlags} from '../../../services/metafields-pull.js' import ThemeCommand, {RequiredFlags} from '../../../utilities/theme-command.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' import {Flags} from '@oclif/core' import {InferredFlags} from '@oclif/core/interfaces' diff --git a/packages/theme/src/cli/commands/theme/open.ts b/packages/theme/src/cli/commands/theme/open.ts index 67f73bc9f4b..4d3290fed0b 100644 --- a/packages/theme/src/cli/commands/theme/open.ts +++ b/packages/theme/src/cli/commands/theme/open.ts @@ -2,8 +2,8 @@ import ThemeCommand, {RequiredFlags} from '../../utilities/theme-command.js' import {themeFlags} from '../../flags.js' import {open} from '../../services/open.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {AdminSession} from '@shopify/cli-kit/identity/session' import {InferredFlags} from '@oclif/core/interfaces' type OpenFlags = InferredFlags diff --git a/packages/theme/src/cli/commands/theme/package.ts b/packages/theme/src/cli/commands/theme/package.ts index aaf1303518e..6ea46fcac97 100644 --- a/packages/theme/src/cli/commands/theme/package.ts +++ b/packages/theme/src/cli/commands/theme/package.ts @@ -1,7 +1,7 @@ import {themeFlags} from '../../flags.js' import ThemeCommand, {RequiredFlags} from '../../utilities/theme-command.js' import {packageTheme} from '../../services/package.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' import {InferredFlags} from '@oclif/core/interfaces' type PackageFlags = InferredFlags diff --git a/packages/theme/src/cli/commands/theme/profile.ts b/packages/theme/src/cli/commands/theme/profile.ts index 182e84479e8..9e6cde36e52 100644 --- a/packages/theme/src/cli/commands/theme/profile.ts +++ b/packages/theme/src/cli/commands/theme/profile.ts @@ -4,10 +4,10 @@ import {profile} from '../../services/profile.js' import {findOrSelectTheme} from '../../utilities/theme-selector.js' import {renderTasksToStdErr} from '../../utilities/theme-ui.js' import {Flags} from '@oclif/core' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' -import {Task} from '@shopify/cli-kit/node/ui' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' +import {Task} from '@shopify/cli-kit/shared/node/ui' import {InferredFlags} from '@oclif/core/interfaces' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' type ProfileFlags = InferredFlags export default class Profile extends ThemeCommand { diff --git a/packages/theme/src/cli/commands/theme/publish.ts b/packages/theme/src/cli/commands/theme/publish.ts index c55a94725a0..ecae3eed580 100644 --- a/packages/theme/src/cli/commands/theme/publish.ts +++ b/packages/theme/src/cli/commands/theme/publish.ts @@ -2,9 +2,9 @@ import ThemeCommand from '../../utilities/theme-command.js' import {themeFlags} from '../../flags.js' import {publish} from '../../services/publish.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' import {OutputFlags} from '@oclif/core/interfaces' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' type PublishFlags = OutputFlags diff --git a/packages/theme/src/cli/commands/theme/pull.ts b/packages/theme/src/cli/commands/theme/pull.ts index 77e853ded10..215f67540a9 100644 --- a/packages/theme/src/cli/commands/theme/pull.ts +++ b/packages/theme/src/cli/commands/theme/pull.ts @@ -1,12 +1,12 @@ import {globFlags, themeFlags} from '../../flags.js' import ThemeCommand, {RequiredFlags} from '../../utilities/theme-command.js' import {pull} from '../../services/pull.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' import {Flags} from '@oclif/core' -import {recordTiming} from '@shopify/cli-kit/node/analytics' +import {recordTiming} from '@shopify/cli-kit/shared/node/analytics' import {InferredFlags} from '@oclif/core/interfaces' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {ArgOutput} from '@shopify/cli-kit/node/base-command' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {ArgOutput} from '@shopify/cli-kit/shared/node/base-command' import {Writable} from 'stream' type PullFlags = InferredFlags diff --git a/packages/theme/src/cli/commands/theme/push.ts b/packages/theme/src/cli/commands/theme/push.ts index ea275cd7a95..cfc3c3b8fe9 100644 --- a/packages/theme/src/cli/commands/theme/push.ts +++ b/packages/theme/src/cli/commands/theme/push.ts @@ -2,11 +2,11 @@ import {globFlags, themeFlags} from '../../flags.js' import ThemeCommand from '../../utilities/theme-command.js' import {push} from '../../services/push.js' import {Flags} from '@oclif/core' -import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' -import {recordTiming} from '@shopify/cli-kit/node/analytics' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/shared/node/cli' +import {recordTiming} from '@shopify/cli-kit/shared/node/analytics' +import {AdminSession} from '@shopify/cli-kit/identity/session' import {InferredFlags} from '@oclif/core/interfaces' -import {ArgOutput} from '@shopify/cli-kit/node/base-command' +import {ArgOutput} from '@shopify/cli-kit/shared/node/base-command' import {Writable} from 'stream' type PushFlags = InferredFlags diff --git a/packages/theme/src/cli/commands/theme/rename.ts b/packages/theme/src/cli/commands/theme/rename.ts index 6244d678b18..a961dc08b56 100644 --- a/packages/theme/src/cli/commands/theme/rename.ts +++ b/packages/theme/src/cli/commands/theme/rename.ts @@ -2,8 +2,8 @@ import ThemeCommand, {RequiredFlags} from '../../utilities/theme-command.js' import {themeFlags} from '../../flags.js' import {RenameOptions, renameTheme} from '../../services/rename.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {AdminSession} from '@shopify/cli-kit/identity/session' export default class Rename extends ThemeCommand { static summary = 'Renames an existing theme.' diff --git a/packages/theme/src/cli/commands/theme/serve.ts b/packages/theme/src/cli/commands/theme/serve.ts index df5b755eb81..f79761e2ba7 100644 --- a/packages/theme/src/cli/commands/theme/serve.ts +++ b/packages/theme/src/cli/commands/theme/serve.ts @@ -1,5 +1,5 @@ import Dev from './dev.js' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' export default class Serve extends Dev { static hidden = true diff --git a/packages/theme/src/cli/commands/theme/share.ts b/packages/theme/src/cli/commands/theme/share.ts index 49af1a76be0..a4d583c2bf4 100644 --- a/packages/theme/src/cli/commands/theme/share.ts +++ b/packages/theme/src/cli/commands/theme/share.ts @@ -2,12 +2,12 @@ import {themeFlags} from '../../flags.js' import ThemeCommand from '../../utilities/theme-command.js' import {push, PushFlags} from '../../services/push.js' import {Flags} from '@oclif/core' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import {getRandomName} from '@shopify/cli-kit/common/string' -import {recordTiming} from '@shopify/cli-kit/node/analytics' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import {getRandomName} from '@shopify/cli-kit/shared/common/string' +import {recordTiming} from '@shopify/cli-kit/shared/node/analytics' import {InferredFlags} from '@oclif/core/interfaces' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {ArgOutput} from '@shopify/cli-kit/node/base-command' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {ArgOutput} from '@shopify/cli-kit/shared/node/base-command' import {Writable} from 'stream' type ShareFlags = InferredFlags diff --git a/packages/theme/src/cli/flags.test.ts b/packages/theme/src/cli/flags.test.ts index fc9c1be8d86..2b48c08fcd5 100644 --- a/packages/theme/src/cli/flags.test.ts +++ b/packages/theme/src/cli/flags.test.ts @@ -1,9 +1,9 @@ import {themeFlags} from './flags.js' import {describe, expect, test} from 'vitest' -import Command from '@shopify/cli-kit/node/base-command' -import {inTemporaryDirectory} from '@shopify/cli-kit/node/fs' -import {cwd, resolvePath} from '@shopify/cli-kit/node/path' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import Command from '@shopify/cli-kit/shared/node/base-command' +import {inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' +import {cwd, resolvePath} from '@shopify/cli-kit/shared/node/path' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' class MockCommand extends Command { static flags = { diff --git a/packages/theme/src/cli/flags.ts b/packages/theme/src/cli/flags.ts index c78a406341d..4a71157de24 100644 --- a/packages/theme/src/cli/flags.ts +++ b/packages/theme/src/cli/flags.ts @@ -1,8 +1,8 @@ import {Flags} from '@oclif/core' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' -import {resolvePath, cwd} from '@shopify/cli-kit/node/path' -import {fileExistsSync} from '@shopify/cli-kit/node/fs' -import {renderError} from '@shopify/cli-kit/node/ui' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' +import {resolvePath, cwd} from '@shopify/cli-kit/shared/node/path' +import {fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {renderError} from '@shopify/cli-kit/shared/node/ui' /** * An object that contains the flags that diff --git a/packages/theme/src/cli/services/check.test.ts b/packages/theme/src/cli/services/check.test.ts index d00e36ab646..84a69916b2c 100644 --- a/packages/theme/src/cli/services/check.test.ts +++ b/packages/theme/src/cli/services/check.test.ts @@ -7,9 +7,9 @@ import { renderOffensesText, sortOffenses, } from './check.js' -import {fileExists, readFileSync, writeFile} from '@shopify/cli-kit/node/fs' -import {outputInfo, outputSuccess} from '@shopify/cli-kit/node/output' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import {fileExists, readFileSync, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {outputInfo, outputSuccess} from '@shopify/cli-kit/shared/node/output' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' import { Severity, SourceCodeType, @@ -20,13 +20,13 @@ import { } from '@shopify/theme-check-node' import {Mock, beforeEach, describe, expect, test, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/fs', async () => ({ +vi.mock('@shopify/cli-kit/shared/node/fs', async () => ({ fileExists: vi.fn(), writeFile: vi.fn(), readFileSync: vi.fn(), })) -vi.mock('@shopify/cli-kit/node/output', async () => ({ +vi.mock('@shopify/cli-kit/shared/node/output', async () => ({ outputInfo: vi.fn(), outputSuccess: vi.fn(), })) @@ -39,7 +39,7 @@ vi.mock('@shopify/theme-check-node', async () => { } }) -vi.mock('@shopify/cli-kit/node/ui', async () => ({ +vi.mock('@shopify/cli-kit/shared/node/ui', async () => ({ renderInfo: vi.fn(), })) diff --git a/packages/theme/src/cli/services/check.ts b/packages/theme/src/cli/services/check.ts index 210f5177599..fe03d17e2bb 100644 --- a/packages/theme/src/cli/services/check.ts +++ b/packages/theme/src/cli/services/check.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import {fileExists, readFileSync, writeFile} from '@shopify/cli-kit/node/fs' -import {outputResult, outputInfo, outputSuccess} from '@shopify/cli-kit/node/output' -import {joinPath} from '@shopify/cli-kit/node/path' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import {fileExists, readFileSync, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {outputResult, outputInfo, outputSuccess} from '@shopify/cli-kit/shared/node/output' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' import { Severity, applyFixToString, diff --git a/packages/theme/src/cli/services/console.test.ts b/packages/theme/src/cli/services/console.test.ts index bb341ddcaa5..cefd0edac01 100644 --- a/packages/theme/src/cli/services/console.test.ts +++ b/packages/theme/src/cli/services/console.test.ts @@ -5,8 +5,8 @@ import { } from '../utilities/theme-environment/storefront-session.js' import {ensureValidPassword} from '../utilities/theme-environment/storefront-password-prompt.js' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {AbortError} from '@shopify/cli-kit/shared/node/error' vi.mock('../utilities/theme-environment/storefront-password-prompt.js') vi.mock('../utilities/theme-environment/storefront-session.js') diff --git a/packages/theme/src/cli/services/console.ts b/packages/theme/src/cli/services/console.ts index 4ad2674ed7f..88cc235b329 100644 --- a/packages/theme/src/cli/services/console.ts +++ b/packages/theme/src/cli/services/console.ts @@ -3,9 +3,9 @@ import {REPLThemeManager} from '../utilities/repl/repl-theme-manager.js' import {ensureValidPassword} from '../utilities/theme-environment/storefront-password-prompt.js' import {replLoop} from '../utilities/repl/repl.js' import {initializeDevServerSession} from '../utilities/theme-environment/dev-server-session.js' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {outputInfo} from '@shopify/cli-kit/node/output' -import {AbortError} from '@shopify/cli-kit/node/error' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export async function ensureReplEnv(adminSession: AdminSession, storePasswordFlag?: string) { const themeId = await findOrCreateReplTheme(adminSession) diff --git a/packages/theme/src/cli/services/delete.test.ts b/packages/theme/src/cli/services/delete.test.ts index 0c17407802c..8a7d493ca61 100644 --- a/packages/theme/src/cli/services/delete.test.ts +++ b/packages/theme/src/cli/services/delete.test.ts @@ -1,12 +1,12 @@ import {themesDelete} from './delete.js' import {findOrSelectTheme, findThemes} from '../utilities/theme-selector.js' -import {themeDelete} from '@shopify/cli-kit/node/themes/api' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {themeDelete} from '@shopify/cli-kit/themes/api' +import {Theme} from '@shopify/cli-kit/themes/types' import {test, describe, expect, vi} from 'vitest' -import {renderConfirmationPrompt, renderSuccess} from '@shopify/cli-kit/node/ui' +import {renderConfirmationPrompt, renderSuccess} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('../utilities/theme-selector.js') vi.mock('../utilities/development-theme-manager.js', () => { const DevelopmentThemeManager = vi.fn() diff --git a/packages/theme/src/cli/services/delete.ts b/packages/theme/src/cli/services/delete.ts index 3bdd1287c8b..c306ee17a86 100644 --- a/packages/theme/src/cli/services/delete.ts +++ b/packages/theme/src/cli/services/delete.ts @@ -2,18 +2,18 @@ import {removeDevelopmentTheme} from './local-storage.js' import {findOrSelectTheme, findThemes} from '../utilities/theme-selector.js' import {themeComponent, themesComponent} from '../utilities/theme-ui.js' import {DevelopmentThemeManager} from '../utilities/development-theme-manager.js' -import {themeDelete} from '@shopify/cli-kit/node/themes/api' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {themeDelete} from '@shopify/cli-kit/themes/api' +import {AdminSession} from '@shopify/cli-kit/identity/session' import { renderConfirmationPrompt, RenderConfirmationPromptOptions, renderSuccess, InlineToken, LinkToken, -} from '@shopify/cli-kit/node/ui' -import {pluralize} from '@shopify/cli-kit/common/string' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {isDevelopmentTheme} from '@shopify/cli-kit/node/themes/utils' +} from '@shopify/cli-kit/shared/node/ui' +import {pluralize} from '@shopify/cli-kit/shared/common/string' +import {Theme} from '@shopify/cli-kit/themes/types' +import {isDevelopmentTheme} from '@shopify/cli-kit/themes/utils' interface DeleteOptions { selectTheme: boolean diff --git a/packages/theme/src/cli/services/dev.test.ts b/packages/theme/src/cli/services/dev.test.ts index f0ebf6f3e90..55802ff9459 100644 --- a/packages/theme/src/cli/services/dev.test.ts +++ b/packages/theme/src/cli/services/dev.test.ts @@ -1,19 +1,19 @@ import {openURLSafely, renderLinks, createKeypressHandler} from './dev.js' import {describe, expect, test, vi, beforeEach, afterEach} from 'vitest' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {renderSuccess, renderWarning} from '@shopify/cli-kit/node/ui' -import {openURL} from '@shopify/cli-kit/node/system' +import {buildTheme} from '@shopify/cli-kit/themes/factories' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {renderSuccess, renderWarning} from '@shopify/cli-kit/shared/node/ui' +import {openURL} from '@shopify/cli-kit/shared/node/system' -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/colors', () => ({ +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/shared/node/colors', () => ({ default: { bold: (str: string) => str, cyan: (str: string) => str, gray: (str: string) => str, }, })) -vi.mock('@shopify/cli-kit/node/system', () => ({ +vi.mock('@shopify/cli-kit/shared/node/system', () => ({ openURL: vi.fn(), })) diff --git a/packages/theme/src/cli/services/dev.ts b/packages/theme/src/cli/services/dev.ts index 36605935f35..9a6f6e1c79c 100644 --- a/packages/theme/src/cli/services/dev.ts +++ b/packages/theme/src/cli/services/dev.ts @@ -7,14 +7,14 @@ import {ensureValidPassword} from '../utilities/theme-environment/storefront-pas import {emptyThemeExtFileSystem} from '../utilities/theme-fs-empty.js' import {initializeDevServerSession} from '../utilities/theme-environment/dev-server-session.js' import {ensureListingExists} from '../utilities/theme-listing.js' -import {renderSuccess, renderWarning} from '@shopify/cli-kit/node/ui' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {checkPortAvailability, getAvailableTCPPort} from '@shopify/cli-kit/node/tcp' -import {AbortError} from '@shopify/cli-kit/node/error' -import {openURL} from '@shopify/cli-kit/node/system' -import {debounce} from '@shopify/cli-kit/common/function' -import chalk from '@shopify/cli-kit/node/colors' +import {renderSuccess, renderWarning} from '@shopify/cli-kit/shared/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {Theme} from '@shopify/cli-kit/themes/types' +import {checkPortAvailability, getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {openURL} from '@shopify/cli-kit/shared/node/system' +import {debounce} from '@shopify/cli-kit/shared/common/function' +import chalk from '@shopify/cli-kit/shared/node/colors' import readline from 'readline' const DEFAULT_HOST = '127.0.0.1' diff --git a/packages/theme/src/cli/services/duplicate.test.ts b/packages/theme/src/cli/services/duplicate.test.ts index 9072f03c757..afaad5b5aca 100644 --- a/packages/theme/src/cli/services/duplicate.test.ts +++ b/packages/theme/src/cli/services/duplicate.test.ts @@ -3,18 +3,18 @@ import {duplicate} from './duplicate.js' import {findThemeById, findOrSelectTheme} from '../utilities/theme-selector.js' import {themeComponent} from '../utilities/theme-ui.js' import {configureCLIEnvironment} from '../utilities/cli-config.js' -import {themeDuplicate} from '@shopify/cli-kit/node/themes/api' -import {renderConfirmationPrompt, renderError, renderSuccess} from '@shopify/cli-kit/node/ui' -import {outputResult} from '@shopify/cli-kit/node/output' -import {isCI} from '@shopify/cli-kit/node/system' +import {themeDuplicate} from '@shopify/cli-kit/themes/api' +import {renderConfirmationPrompt, renderError, renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {outputResult} from '@shopify/cli-kit/shared/node/output' +import {isCI} from '@shopify/cli-kit/shared/node/system' import {vi, describe, test, expect, beforeEach} from 'vitest' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {Theme} from '@shopify/cli-kit/themes/types' +import {AdminSession} from '@shopify/cli-kit/identity/session' -vi.mock('@shopify/cli-kit/node/system') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/system') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/output') vi.mock('../utilities/theme-selector.js') vi.mock('../utilities/theme-ui.js') vi.mock('../utilities/cli-config.js') diff --git a/packages/theme/src/cli/services/duplicate.ts b/packages/theme/src/cli/services/duplicate.ts index 98a786f4315..a8aec225973 100644 --- a/packages/theme/src/cli/services/duplicate.ts +++ b/packages/theme/src/cli/services/duplicate.ts @@ -1,13 +1,13 @@ import {themeComponent} from '../utilities/theme-ui.js' import {configureCLIEnvironment} from '../utilities/cli-config.js' import {findOrSelectTheme, findThemeById} from '../utilities/theme-selector.js' -import {renderConfirmationPrompt, renderError, renderSuccess} from '@shopify/cli-kit/node/ui' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {outputResult} from '@shopify/cli-kit/node/output' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {themePreviewUrl} from '@shopify/cli-kit/node/themes/urls' -import {themeDuplicate, ThemeDuplicateResult} from '@shopify/cli-kit/node/themes/api' -import {isCI} from '@shopify/cli-kit/node/system' +import {renderConfirmationPrompt, renderError, renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {outputResult} from '@shopify/cli-kit/shared/node/output' +import {Theme} from '@shopify/cli-kit/themes/types' +import {themePreviewUrl} from '@shopify/cli-kit/themes/urls' +import {themeDuplicate, ThemeDuplicateResult} from '@shopify/cli-kit/themes/api' +import {isCI} from '@shopify/cli-kit/shared/node/system' interface DuplicateFlags { /** Password generated from the Theme Access app. */ diff --git a/packages/theme/src/cli/services/info.test.ts b/packages/theme/src/cli/services/info.test.ts index f7f95b1bc6e..2a0ee0e02ce 100644 --- a/packages/theme/src/cli/services/info.test.ts +++ b/packages/theme/src/cli/services/info.test.ts @@ -1,8 +1,8 @@ import {themeInfoJSON, fetchThemeInfo} from './info.js' import {findOrSelectTheme} from '../utilities/theme-selector.js' import {DevelopmentThemeManager} from '../utilities/development-theme-manager.js' -import {themePreviewUrl, themeEditorUrl} from '@shopify/cli-kit/node/themes/urls' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {themePreviewUrl, themeEditorUrl} from '@shopify/cli-kit/themes/urls' +import {Theme} from '@shopify/cli-kit/themes/types' import {describe, vi, test, expect} from 'vitest' vi.mock('../utilities/development-theme-manager.js') diff --git a/packages/theme/src/cli/services/info.ts b/packages/theme/src/cli/services/info.ts index ab7c752cc7d..f9a867f4674 100644 --- a/packages/theme/src/cli/services/info.ts +++ b/packages/theme/src/cli/services/info.ts @@ -1,12 +1,12 @@ import {getDevelopmentTheme, getThemeStore} from './local-storage.js' import {findOrSelectTheme} from '../utilities/theme-selector.js' import {DevelopmentThemeManager} from '../utilities/development-theme-manager.js' -import {platformAndArch} from '@shopify/cli-kit/node/os' -import {themeEditorUrl, themePreviewUrl} from '@shopify/cli-kit/node/themes/urls' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {AlertCustomSection, InlineToken} from '@shopify/cli-kit/node/ui' -import {recordEvent} from '@shopify/cli-kit/node/analytics' +import {platformAndArch} from '@shopify/cli-kit/shared/node/os' +import {themeEditorUrl, themePreviewUrl} from '@shopify/cli-kit/themes/urls' +import {Theme} from '@shopify/cli-kit/themes/types' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {AlertCustomSection, InlineToken} from '@shopify/cli-kit/shared/node/ui' +import {recordEvent} from '@shopify/cli-kit/shared/node/analytics' interface ThemeInfo { theme: { diff --git a/packages/theme/src/cli/services/init.test.ts b/packages/theme/src/cli/services/init.test.ts index 41254efed68..71f7008cfb1 100644 --- a/packages/theme/src/cli/services/init.test.ts +++ b/packages/theme/src/cli/services/init.test.ts @@ -1,12 +1,12 @@ import {cloneRepoAndCheckoutLatestTag, cloneRepo, createAIInstructions, createAIInstructionFiles} from './init.js' import {describe, expect, vi, test, beforeEach} from 'vitest' -import {downloadGitRepository, removeGitRemote} from '@shopify/cli-kit/node/git' -import {rmdir, fileExists, readFile, writeFile, symlink} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {downloadGitRepository, removeGitRemote} from '@shopify/cli-kit/shared/node/git' +import {rmdir, fileExists, readFile, writeFile, symlink} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' -vi.mock('@shopify/cli-kit/node/git') -vi.mock('@shopify/cli-kit/node/fs', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/git') +vi.mock('@shopify/cli-kit/shared/node/fs', async () => { + const actual = await vi.importActual('@shopify/cli-kit/shared/node/fs') return { ...actual, fileExists: vi.fn(), @@ -20,10 +20,10 @@ vi.mock('@shopify/cli-kit/node/fs', async () => { }), } }) -vi.mock('@shopify/cli-kit/node/http') -vi.mock('@shopify/cli-kit/node/path') -vi.mock('@shopify/cli-kit/node/ui', async () => { - const actual = await vi.importActual('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/http') +vi.mock('@shopify/cli-kit/shared/node/path') +vi.mock('@shopify/cli-kit/shared/node/ui', async () => { + const actual = await vi.importActual('@shopify/cli-kit/shared/node/ui') return { ...actual, renderSelectPrompt: vi.fn(), diff --git a/packages/theme/src/cli/services/init.ts b/packages/theme/src/cli/services/init.ts index 42e554827e2..16f5b83894e 100644 --- a/packages/theme/src/cli/services/init.ts +++ b/packages/theme/src/cli/services/init.ts @@ -1,8 +1,8 @@ -import {renderSelectPrompt, renderWarning, renderTasks} from '@shopify/cli-kit/node/ui' -import {downloadGitRepository, removeGitRemote} from '@shopify/cli-kit/node/git' -import {joinPath} from '@shopify/cli-kit/node/path' -import {rmdir, fileExists, inTemporaryDirectory, readFile, writeFile, symlink} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' +import {renderSelectPrompt, renderWarning, renderTasks} from '@shopify/cli-kit/shared/node/ui' +import {downloadGitRepository, removeGitRemote} from '@shopify/cli-kit/shared/node/git' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {rmdir, fileExists, inTemporaryDirectory, readFile, writeFile, symlink} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export const SKELETON_THEME_URL = 'https://github.com/Shopify/skeleton-theme.git' const AI_INSTRUCTIONS_REPO_URL = 'https://github.com/Shopify/theme-liquid-docs.git' diff --git a/packages/theme/src/cli/services/list.test.ts b/packages/theme/src/cli/services/list.test.ts index 87ba5b4fa33..9a7aed621e2 100644 --- a/packages/theme/src/cli/services/list.test.ts +++ b/packages/theme/src/cli/services/list.test.ts @@ -1,15 +1,15 @@ import {list} from './list.js' import {getDevelopmentTheme} from './local-storage.js' import {fetchStoreThemes} from '../utilities/theme-selector/fetch.js' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import {Theme} from '@shopify/cli-kit/themes/types' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' import {describe, expect, vi, test} from 'vitest' -import {getHostTheme} from '@shopify/cli-kit/node/themes/conf' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' +import {getHostTheme} from '@shopify/cli-kit/themes/conf' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' vi.mock('../utilities/theme-selector/fetch.js') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/themes/conf') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/themes/conf') vi.mock('./local-storage.js') const session = { diff --git a/packages/theme/src/cli/services/list.ts b/packages/theme/src/cli/services/list.ts index bd9809ec7d3..f593f5d9d57 100644 --- a/packages/theme/src/cli/services/list.ts +++ b/packages/theme/src/cli/services/list.ts @@ -1,10 +1,10 @@ import {getDevelopmentTheme} from './local-storage.js' import {ALLOWED_ROLES, fetchStoreThemes, Role} from '../utilities/theme-selector/fetch.js' import {Filter, FilterProps, filterThemes} from '../utilities/theme-selector/filter.js' -import {InlineToken, renderInfo} from '@shopify/cli-kit/node/ui' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {getHostTheme} from '@shopify/cli-kit/node/themes/conf' -import {outputResult} from '@shopify/cli-kit/node/output' +import {InlineToken, renderInfo} from '@shopify/cli-kit/shared/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {getHostTheme} from '@shopify/cli-kit/themes/conf' +import {outputResult} from '@shopify/cli-kit/shared/node/output' interface Options { role?: Role diff --git a/packages/theme/src/cli/services/local-storage.test.ts b/packages/theme/src/cli/services/local-storage.test.ts index 63f06938187..d02da845816 100644 --- a/packages/theme/src/cli/services/local-storage.test.ts +++ b/packages/theme/src/cli/services/local-storage.test.ts @@ -13,8 +13,8 @@ import { getThemeStore, useThemeStoreContext, } from './local-storage.js' -import {inTemporaryDirectory} from '@shopify/cli-kit/node/fs' -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' +import {inTemporaryDirectory} from '@shopify/cli-kit/shared/node/fs' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' import {describe, expect, test} from 'vitest' describe('local-storage', () => { diff --git a/packages/theme/src/cli/services/local-storage.ts b/packages/theme/src/cli/services/local-storage.ts index 6ad8824a9ef..5e54a94da60 100644 --- a/packages/theme/src/cli/services/local-storage.ts +++ b/packages/theme/src/cli/services/local-storage.ts @@ -1,6 +1,6 @@ -import {BugError} from '@shopify/cli-kit/node/error' -import {LocalStorage} from '@shopify/cli-kit/node/local-storage' -import {outputDebug, outputContent} from '@shopify/cli-kit/node/output' +import {BugError} from '@shopify/cli-kit/shared/node/error' +import {LocalStorage} from '@shopify/cli-kit/shared/node/local-storage' +import {outputDebug, outputContent} from '@shopify/cli-kit/shared/node/output' import {AsyncLocalStorage} from 'node:async_hooks' type DevelopmentThemeId = string diff --git a/packages/theme/src/cli/services/metafields-pull.test.ts b/packages/theme/src/cli/services/metafields-pull.test.ts index d0d9aefbecf..daa7ab11798 100644 --- a/packages/theme/src/cli/services/metafields-pull.test.ts +++ b/packages/theme/src/cli/services/metafields-pull.test.ts @@ -3,17 +3,17 @@ import {metafieldsPull} from './metafields-pull.js' import {ensureThemeStore} from '../utilities/theme-store.js' import {hasRequiredThemeDirectories} from '../utilities/theme-fs.js' import {ensureDirectoryConfirmed} from '../utilities/theme-ui.js' -import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {mockAndCaptureOutput} from '@shopify/cli-kit/node/testing/output' -import {metafieldDefinitionsByOwnerType} from '@shopify/cli-kit/node/themes/api' +import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {mockAndCaptureOutput} from '@shopify/cli-kit/shared/node/testing/output' +import {metafieldDefinitionsByOwnerType} from '@shopify/cli-kit/themes/api' import {describe, test, vi, beforeEach, expect, afterEach} from 'vitest' -import {fileExists, inTemporaryDirectory, readFile} from '@shopify/cli-kit/node/fs' +import {fileExists, inTemporaryDirectory, readFile} from '@shopify/cli-kit/shared/node/fs' vi.mock('../utilities/theme-store.js') vi.mock('../utilities/theme-fs.js') vi.mock('../utilities/theme-ui.js') -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/themes/api') const metafieldDefinitionPath = (path: string) => `${path}/.shopify/metafields.json` diff --git a/packages/theme/src/cli/services/metafields-pull.ts b/packages/theme/src/cli/services/metafields-pull.ts index d6e296fe512..d8f2b38ef78 100644 --- a/packages/theme/src/cli/services/metafields-pull.ts +++ b/packages/theme/src/cli/services/metafields-pull.ts @@ -2,13 +2,13 @@ import {hasRequiredThemeDirectories} from '../utilities/theme-fs.js' import {ensureDirectoryConfirmed} from '../utilities/theme-ui.js' import {ensureThemeStore} from '../utilities/theme-store.js' import {configureCLIEnvironment} from '../utilities/cli-config.js' -import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {cwd, joinPath} from '@shopify/cli-kit/node/path' -import {metafieldDefinitionsByOwnerType} from '@shopify/cli-kit/node/themes/api' -import {renderError, renderSuccess} from '@shopify/cli-kit/node/ui' -import {writeFileSync} from '@shopify/cli-kit/node/fs' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {getOrCreateHiddenShopifyFolder} from '@shopify/cli-kit/node/hidden-folder' +import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {cwd, joinPath} from '@shopify/cli-kit/shared/node/path' +import {metafieldDefinitionsByOwnerType} from '@shopify/cli-kit/themes/api' +import {renderError, renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {writeFileSync} from '@shopify/cli-kit/shared/node/fs' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {getOrCreateHiddenShopifyFolder} from '@shopify/cli-kit/shared/node/hidden-folder' interface MetafieldsPullOptions { path: string diff --git a/packages/theme/src/cli/services/open.test.ts b/packages/theme/src/cli/services/open.test.ts index a6867503dc0..a8b16922a6b 100644 --- a/packages/theme/src/cli/services/open.test.ts +++ b/packages/theme/src/cli/services/open.test.ts @@ -1,15 +1,15 @@ import {open} from './open.js' import {findOrSelectTheme} from '../utilities/theme-selector.js' import {DevelopmentThemeManager} from '../utilities/development-theme-manager.js' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {Theme} from '@shopify/cli-kit/themes/types' import {test, describe, expect, vi, beforeEach} from 'vitest' -import {openURL} from '@shopify/cli-kit/node/system' -import {renderInfo} from '@shopify/cli-kit/node/ui' +import {openURL} from '@shopify/cli-kit/shared/node/system' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/system', () => { +vi.mock('@shopify/cli-kit/shared/node/system', () => { return {openURL: vi.fn()} }) -vi.mock('@shopify/cli-kit/node/ui', () => { +vi.mock('@shopify/cli-kit/shared/node/ui', () => { return {renderInfo: vi.fn()} }) vi.mock('../utilities/development-theme-manager.js') diff --git a/packages/theme/src/cli/services/open.ts b/packages/theme/src/cli/services/open.ts index 741315c85d9..5f7b9100340 100644 --- a/packages/theme/src/cli/services/open.ts +++ b/packages/theme/src/cli/services/open.ts @@ -1,10 +1,10 @@ import {findOrSelectTheme} from '../utilities/theme-selector.js' import {themeComponent} from '../utilities/theme-ui.js' import {DevelopmentThemeManager} from '../utilities/development-theme-manager.js' -import {themeEditorUrl, themePreviewUrl} from '@shopify/cli-kit/node/themes/urls' -import {openURL} from '@shopify/cli-kit/node/system' -import {renderInfo} from '@shopify/cli-kit/node/ui' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {themeEditorUrl, themePreviewUrl} from '@shopify/cli-kit/themes/urls' +import {openURL} from '@shopify/cli-kit/shared/node/system' +import {renderInfo} from '@shopify/cli-kit/shared/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' export async function open( adminSession: AdminSession, diff --git a/packages/theme/src/cli/services/package.test.ts b/packages/theme/src/cli/services/package.test.ts index b2250a256b6..778cb1367c6 100644 --- a/packages/theme/src/cli/services/package.test.ts +++ b/packages/theme/src/cli/services/package.test.ts @@ -1,12 +1,12 @@ import {packageTheme} from './package.js' import {describe, expect, vi, test} from 'vitest' -import {joinPath, dirname} from '@shopify/cli-kit/node/path' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {mkdir, writeFile, inTemporaryDirectory, touchFile, fileExists} from '@shopify/cli-kit/node/fs' +import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {mkdir, writeFile, inTemporaryDirectory, touchFile, fileExists} from '@shopify/cli-kit/shared/node/fs' const StreamZip = require('node-stream-zip') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('packageTheme', () => { test('creates zip file from theme', async () => { diff --git a/packages/theme/src/cli/services/package.ts b/packages/theme/src/cli/services/package.ts index b0188516dd1..162587f70ba 100644 --- a/packages/theme/src/cli/services/package.ts +++ b/packages/theme/src/cli/services/package.ts @@ -1,8 +1,8 @@ -import {zip} from '@shopify/cli-kit/node/archiver' -import {fileExists, readFile} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {resolvePath, relativizePath} from '@shopify/cli-kit/node/path' +import {zip} from '@shopify/cli-kit/shared/node/archiver' +import {fileExists, readFile} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {resolvePath, relativizePath} from '@shopify/cli-kit/shared/node/path' import {parseJSON} from '@shopify/theme-check-node' const themeFilesPattern = [ diff --git a/packages/theme/src/cli/services/profile.test.ts b/packages/theme/src/cli/services/profile.test.ts index fdf86ce1af1..a797c1bf870 100644 --- a/packages/theme/src/cli/services/profile.test.ts +++ b/packages/theme/src/cli/services/profile.test.ts @@ -1,15 +1,15 @@ import {profile} from './profile.js' import {render} from '../utilities/theme-environment/storefront-renderer.js' -import {ensureAuthenticatedStorefront} from '@shopify/cli-kit/node/session' -import {openURL} from '@shopify/cli-kit/node/system' +import {ensureAuthenticatedStorefront} from '@shopify/cli-kit/identity/session' +import {openURL} from '@shopify/cli-kit/shared/node/system' import {vi, describe, expect, beforeEach, test} from 'vitest' -import {outputResult} from '@shopify/cli-kit/node/output' -import {AbortError} from '@shopify/cli-kit/node/error' +import {outputResult} from '@shopify/cli-kit/shared/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {readFile} from 'fs/promises' -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/system') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/shared/node/system') +vi.mock('@shopify/cli-kit/shared/node/output') vi.mock('../utilities/theme-environment/storefront-password-prompt.js') vi.mock('../utilities/theme-environment/storefront-session.js') vi.mock('../utilities/theme-environment/storefront-renderer.js') diff --git a/packages/theme/src/cli/services/profile.ts b/packages/theme/src/cli/services/profile.ts index 5aa13179c8a..9953bf6769e 100644 --- a/packages/theme/src/cli/services/profile.ts +++ b/packages/theme/src/cli/services/profile.ts @@ -3,12 +3,12 @@ import {ensureValidPassword} from '../utilities/theme-environment/storefront-pas import {fetchDevServerSession} from '../utilities/theme-environment/dev-server-session.js' import {render} from '../utilities/theme-environment/storefront-renderer.js' import {resolveAssetPath} from '../utilities/asset-path.js' -import {openURL} from '@shopify/cli-kit/node/system' -import {joinPath} from '@shopify/cli-kit/node/path' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {writeFile, tempDirectory} from '@shopify/cli-kit/node/fs' -import {outputResult, outputDebug} from '@shopify/cli-kit/node/output' -import {AbortError} from '@shopify/cli-kit/node/error' +import {openURL} from '@shopify/cli-kit/shared/node/system' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {writeFile, tempDirectory} from '@shopify/cli-kit/shared/node/fs' +import {outputResult, outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export async function profile( adminSession: AdminSession, diff --git a/packages/theme/src/cli/services/publish.test.ts b/packages/theme/src/cli/services/publish.test.ts index fe2af71f2e0..72cc3ab17bb 100644 --- a/packages/theme/src/cli/services/publish.test.ts +++ b/packages/theme/src/cli/services/publish.test.ts @@ -1,13 +1,13 @@ import {publish} from './publish.js' import {findOrSelectTheme} from '../utilities/theme-selector.js' -import {renderSuccess, renderConfirmationPrompt} from '@shopify/cli-kit/node/ui' +import {renderSuccess, renderConfirmationPrompt} from '@shopify/cli-kit/shared/node/ui' import {test, describe, expect, vi} from 'vitest' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {themePublish} from '@shopify/cli-kit/node/themes/api' +import {Theme} from '@shopify/cli-kit/themes/types' +import {themePublish} from '@shopify/cli-kit/themes/api' -vi.mock('@shopify/cli-kit/node/system') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/shared/node/system') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('../utilities/theme-selector.js') const session = { diff --git a/packages/theme/src/cli/services/publish.ts b/packages/theme/src/cli/services/publish.ts index 7e2da4c1118..b8066be2c1c 100644 --- a/packages/theme/src/cli/services/publish.ts +++ b/packages/theme/src/cli/services/publish.ts @@ -1,10 +1,10 @@ import {findOrSelectTheme} from '../utilities/theme-selector.js' import {themeComponent} from '../utilities/theme-ui.js' -import {themePublish} from '@shopify/cli-kit/node/themes/api' -import {themePreviewUrl} from '@shopify/cli-kit/node/themes/urls' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {renderConfirmationPrompt, renderSuccess} from '@shopify/cli-kit/node/ui' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {themePublish} from '@shopify/cli-kit/themes/api' +import {themePreviewUrl} from '@shopify/cli-kit/themes/urls' +import {Theme} from '@shopify/cli-kit/themes/types' +import {renderConfirmationPrompt, renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' interface PublishServiceOptions { theme: string | undefined diff --git a/packages/theme/src/cli/services/pull.test.ts b/packages/theme/src/cli/services/pull.test.ts index 24fec497628..17ba0e33994 100644 --- a/packages/theme/src/cli/services/pull.test.ts +++ b/packages/theme/src/cli/services/pull.test.ts @@ -7,13 +7,13 @@ import {hasRequiredThemeDirectories, mountThemeFileSystem} from '../utilities/th import {fakeThemeFileSystem} from '../utilities/theme-fs/theme-fs-mock-factory.js' import {downloadTheme} from '../utilities/theme-downloader.js' import {themeComponent, ensureDirectoryConfirmed} from '../utilities/theme-ui.js' -import {mkTmpDir, rmdir} from '@shopify/cli-kit/node/fs' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' -import {ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {fetchChecksums} from '@shopify/cli-kit/node/themes/api' -import {insideGitDirectory, isClean} from '@shopify/cli-kit/node/git' +import {mkTmpDir, rmdir} from '@shopify/cli-kit/shared/node/fs' +import {buildTheme} from '@shopify/cli-kit/themes/factories' +import {ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {fetchChecksums} from '@shopify/cli-kit/themes/api' +import {insideGitDirectory, isClean} from '@shopify/cli-kit/shared/node/git' import {test, describe, expect, vi, beforeEach} from 'vitest' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' import {fileURLToPath} from 'node:url' vi.mock('../utilities/theme-selector.js') @@ -21,11 +21,11 @@ vi.mock('../utilities/theme-store.js') vi.mock('../utilities/theme-fs.js') vi.mock('../utilities/theme-downloader.js') vi.mock('../utilities/theme-ui.js') -vi.mock('@shopify/cli-kit/node/context/local') -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/git') +vi.mock('@shopify/cli-kit/shared/node/context/local') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/shared/node/git') const adminSession = {token: '', storeFqdn: ''} const path = '/my-theme' diff --git a/packages/theme/src/cli/services/pull.ts b/packages/theme/src/cli/services/pull.ts index 677fbb5355e..dc4a439d95c 100644 --- a/packages/theme/src/cli/services/pull.ts +++ b/packages/theme/src/cli/services/pull.ts @@ -6,14 +6,14 @@ import {ensureThemeStore} from '../utilities/theme-store.js' import {DevelopmentThemeManager} from '../utilities/development-theme-manager.js' import {findOrSelectTheme} from '../utilities/theme-selector.js' import {configureCLIEnvironment} from '../utilities/cli-config.js' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {fetchChecksums} from '@shopify/cli-kit/node/themes/api' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {glob} from '@shopify/cli-kit/node/fs' -import {cwd} from '@shopify/cli-kit/node/path' -import {insideGitDirectory, isClean} from '@shopify/cli-kit/node/git' -import {recordTiming} from '@shopify/cli-kit/node/analytics' +import {Theme} from '@shopify/cli-kit/themes/types' +import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {fetchChecksums} from '@shopify/cli-kit/themes/api' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {glob} from '@shopify/cli-kit/shared/node/fs' +import {cwd} from '@shopify/cli-kit/shared/node/path' +import {insideGitDirectory, isClean} from '@shopify/cli-kit/shared/node/git' +import {recordTiming} from '@shopify/cli-kit/shared/node/analytics' import {Writable} from 'stream' interface PullOptions { diff --git a/packages/theme/src/cli/services/push.test.ts b/packages/theme/src/cli/services/push.test.ts index 2d3d4b27068..e0ae1a62b17 100644 --- a/packages/theme/src/cli/services/push.test.ts +++ b/packages/theme/src/cli/services/push.test.ts @@ -6,32 +6,32 @@ import {ensureThemeStore} from '../utilities/theme-store.js' import {findOrSelectTheme} from '../utilities/theme-selector.js' import {runThemeCheck} from '../commands/theme/check.js' import {mountThemeFileSystem} from '../utilities/theme-fs.js' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' +import {buildTheme} from '@shopify/cli-kit/themes/factories' import {test, describe, vi, expect, beforeEach} from 'vitest' -import {themeCreate, fetchTheme, themePublish} from '@shopify/cli-kit/node/themes/api' -import {ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' +import {themeCreate, fetchTheme, themePublish} from '@shopify/cli-kit/themes/api' +import {ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' import { DEVELOPMENT_THEME_ROLE, LIVE_THEME_ROLE, UNPUBLISHED_THEME_ROLE, promptThemeName, -} from '@shopify/cli-kit/node/themes/utils' -import {renderConfirmationPrompt, renderError} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' +} from '@shopify/cli-kit/themes/utils' +import {renderConfirmationPrompt, renderError} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {Severity, SourceCodeType} from '@shopify/theme-check-node' -import {outputResult} from '@shopify/cli-kit/node/output' +import {outputResult} from '@shopify/cli-kit/shared/node/output' vi.mock('../utilities/theme-uploader.js') vi.mock('../utilities/theme-store.js') vi.mock('../utilities/theme-selector.js') vi.mock('./local-storage.js') vi.mock('../utilities/theme-listing.js') -vi.mock('@shopify/cli-kit/node/themes/utils') -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/themes/utils') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../commands/theme/check.js') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') vi.mock('../utilities/theme-fs.js') const path = '/my-theme' diff --git a/packages/theme/src/cli/services/push.ts b/packages/theme/src/cli/services/push.ts index fde42ac60cd..79c7bebb10c 100644 --- a/packages/theme/src/cli/services/push.ts +++ b/packages/theme/src/cli/services/push.ts @@ -9,23 +9,23 @@ import {configureCLIEnvironment} from '../utilities/cli-config.js' import {runThemeCheck} from '../commands/theme/check.js' import {ensureThemeStore} from '../utilities/theme-store.js' import {ensureListingExists} from '../utilities/theme-listing.js' -import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {themeCreate, fetchChecksums, themePublish} from '@shopify/cli-kit/node/themes/api' -import {Result, Theme} from '@shopify/cli-kit/node/themes/types' -import {outputResult} from '@shopify/cli-kit/node/output' +import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {themeCreate, fetchChecksums, themePublish} from '@shopify/cli-kit/themes/api' +import {Result, Theme} from '@shopify/cli-kit/themes/types' +import {outputResult} from '@shopify/cli-kit/shared/node/output' import { renderConfirmationPrompt, RenderConfirmationPromptOptions, renderError, renderSuccess, renderWarning, -} from '@shopify/cli-kit/node/ui' -import {themeEditorUrl, themePreviewUrl} from '@shopify/cli-kit/node/themes/urls' -import {cwd, resolvePath} from '@shopify/cli-kit/node/path' -import {LIVE_THEME_ROLE, promptThemeName, UNPUBLISHED_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {AbortError} from '@shopify/cli-kit/node/error' +} from '@shopify/cli-kit/shared/node/ui' +import {themeEditorUrl, themePreviewUrl} from '@shopify/cli-kit/themes/urls' +import {cwd, resolvePath} from '@shopify/cli-kit/shared/node/path' +import {LIVE_THEME_ROLE, promptThemeName, UNPUBLISHED_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {Severity} from '@shopify/theme-check-node' -import {recordError, recordTiming} from '@shopify/cli-kit/node/analytics' +import {recordError, recordTiming} from '@shopify/cli-kit/shared/node/analytics' import {Writable} from 'stream' interface PushOptions { diff --git a/packages/theme/src/cli/services/rename.test.ts b/packages/theme/src/cli/services/rename.test.ts index 48ee84ba80f..51f9d86b819 100644 --- a/packages/theme/src/cli/services/rename.test.ts +++ b/packages/theme/src/cli/services/rename.test.ts @@ -1,12 +1,12 @@ import {RenameOptions, renameTheme} from './rename.js' import {findOrSelectTheme} from '../utilities/theme-selector.js' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {Theme} from '@shopify/cli-kit/themes/types' import {test, describe, expect, vi} from 'vitest' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {themeUpdate} from '@shopify/cli-kit/node/themes/api' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {themeUpdate} from '@shopify/cli-kit/themes/api' -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('../utilities/theme-selector.js', () => { return {findOrSelectTheme: vi.fn()} }) diff --git a/packages/theme/src/cli/services/rename.ts b/packages/theme/src/cli/services/rename.ts index c45cc4ce16c..cb32f23f119 100644 --- a/packages/theme/src/cli/services/rename.ts +++ b/packages/theme/src/cli/services/rename.ts @@ -1,9 +1,9 @@ import {findOrSelectTheme} from '../utilities/theme-selector.js' import {themeComponent} from '../utilities/theme-ui.js' -import {themeUpdate} from '@shopify/cli-kit/node/themes/api' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {renderSuccess} from '@shopify/cli-kit/node/ui' -import {promptThemeName} from '@shopify/cli-kit/node/themes/utils' +import {themeUpdate} from '@shopify/cli-kit/themes/api' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {renderSuccess} from '@shopify/cli-kit/shared/node/ui' +import {promptThemeName} from '@shopify/cli-kit/themes/utils' export interface RenameOptions { name?: string diff --git a/packages/theme/src/cli/utilities/asset-checksum.test.ts b/packages/theme/src/cli/utilities/asset-checksum.test.ts index a6fc14791b0..15869dcc181 100644 --- a/packages/theme/src/cli/utilities/asset-checksum.test.ts +++ b/packages/theme/src/cli/utilities/asset-checksum.test.ts @@ -1,7 +1,7 @@ import {calculateChecksum, rejectGeneratedStaticAssets} from './asset-checksum.js' import {readThemeFile} from './theme-fs.js' import {describe, expect, test} from 'vitest' -import {joinPath, dirname} from '@shopify/cli-kit/node/path' +import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' import {fileURLToPath} from 'node:url' describe('asset-checksum', () => { diff --git a/packages/theme/src/cli/utilities/asset-checksum.ts b/packages/theme/src/cli/utilities/asset-checksum.ts index e80a5f86257..761e3cf2113 100644 --- a/packages/theme/src/cli/utilities/asset-checksum.ts +++ b/packages/theme/src/cli/utilities/asset-checksum.ts @@ -1,6 +1,6 @@ import {isTextFile} from './theme-fs.js' -import {Checksum} from '@shopify/cli-kit/node/themes/types' -import {fileHash} from '@shopify/cli-kit/node/crypto' +import {Checksum} from '@shopify/cli-kit/themes/types' +import {fileHash} from '@shopify/cli-kit/shared/node/crypto' export function calculateChecksum(fileKey: string, fileContent: string | Buffer | undefined) { if (!fileContent) { diff --git a/packages/theme/src/cli/utilities/asset-ignore.test.ts b/packages/theme/src/cli/utilities/asset-ignore.test.ts index c3940e28001..4068cab59f2 100644 --- a/packages/theme/src/cli/utilities/asset-ignore.test.ts +++ b/packages/theme/src/cli/utilities/asset-ignore.test.ts @@ -1,10 +1,10 @@ import {applyIgnoreFilters, getPatternsFromShopifyIgnore} from './asset-ignore.js' -import {ReadOptions, fileExists, readFile} from '@shopify/cli-kit/node/fs' +import {ReadOptions, fileExists, readFile} from '@shopify/cli-kit/shared/node/fs' import {test, describe, beforeEach, vi, expect} from 'vitest' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/fs', async () => { - const originalFs: any = await vi.importActual('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/fs', async () => { + const originalFs: any = await vi.importActual('@shopify/cli-kit/shared/node/fs') return { ...originalFs, matchGlob: originalFs.matchGlob, @@ -13,11 +13,11 @@ vi.mock('@shopify/cli-kit/node/fs', async () => { } }) -vi.mock('@shopify/cli-kit/node/ui', () => ({ +vi.mock('@shopify/cli-kit/shared/node/ui', () => ({ renderWarning: vi.fn(), })) -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') describe('asset-ignore', () => { const checksums = [ diff --git a/packages/theme/src/cli/utilities/asset-ignore.ts b/packages/theme/src/cli/utilities/asset-ignore.ts index 1dd557ab387..85edcf2299d 100644 --- a/packages/theme/src/cli/utilities/asset-ignore.ts +++ b/packages/theme/src/cli/utilities/asset-ignore.ts @@ -1,8 +1,8 @@ -import {uniqBy} from '@shopify/cli-kit/common/array' -import {fileExists, readFile, matchGlob as originalMatchGlob} from '@shopify/cli-kit/node/fs' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {joinPath} from '@shopify/cli-kit/node/path' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {uniqBy} from '@shopify/cli-kit/shared/common/array' +import {fileExists, readFile, matchGlob as originalMatchGlob} from '@shopify/cli-kit/shared/node/fs' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' const SHOPIFY_IGNORE = '.shopifyignore' const templatesRegex = /templates\/\*(\.(json|liquid))?$/ diff --git a/packages/theme/src/cli/utilities/asset-path.ts b/packages/theme/src/cli/utilities/asset-path.ts index 5f2137f738c..3acc5be14d2 100644 --- a/packages/theme/src/cli/utilities/asset-path.ts +++ b/packages/theme/src/cli/utilities/asset-path.ts @@ -1,5 +1,5 @@ -import {findPathUp} from '@shopify/cli-kit/node/fs' -import {joinPath, dirname} from '@shopify/cli-kit/node/path' +import {findPathUp} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' import {fileURLToPath} from 'node:url' export async function resolveAssetPath(...subpaths: string[]) { diff --git a/packages/theme/src/cli/utilities/cli-config.test.ts b/packages/theme/src/cli/utilities/cli-config.test.ts index cc08f0d1c3f..c6fd433edfc 100644 --- a/packages/theme/src/cli/utilities/cli-config.test.ts +++ b/packages/theme/src/cli/utilities/cli-config.test.ts @@ -1,6 +1,6 @@ import {configureCLIEnvironment} from './cli-config.js' -import {globalFlags} from '@shopify/cli-kit/node/cli' -import colors from '@shopify/cli-kit/node/colors' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import colors from '@shopify/cli-kit/shared/node/colors' import {describe, expect, beforeEach, afterAll, test} from 'vitest' describe('configureCLIEnvironment', () => { diff --git a/packages/theme/src/cli/utilities/cli-config.ts b/packages/theme/src/cli/utilities/cli-config.ts index a803eb6617d..4f7422bd70f 100644 --- a/packages/theme/src/cli/utilities/cli-config.ts +++ b/packages/theme/src/cli/utilities/cli-config.ts @@ -1,5 +1,5 @@ -import {globalFlags} from '@shopify/cli-kit/node/cli' -import colors from '@shopify/cli-kit/node/colors' +import {globalFlags} from '@shopify/cli-kit/shared/node/cli' +import colors from '@shopify/cli-kit/shared/node/colors' interface CLIConfigOptions { verbose?: boolean diff --git a/packages/theme/src/cli/utilities/development-theme-manager.test.ts b/packages/theme/src/cli/utilities/development-theme-manager.test.ts index 3914b350491..b5fdd046995 100644 --- a/packages/theme/src/cli/utilities/development-theme-manager.test.ts +++ b/packages/theme/src/cli/utilities/development-theme-manager.test.ts @@ -4,13 +4,13 @@ import { DEVELOPMENT_THEME_NOT_FOUND, } from './development-theme-manager.js' import {getDevelopmentTheme, setDevelopmentTheme, removeDevelopmentTheme} from '../services/local-storage.js' -import {themeCreate, fetchTheme} from '@shopify/cli-kit/node/themes/api' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' +import {themeCreate, fetchTheme} from '@shopify/cli-kit/themes/api' +import {buildTheme} from '@shopify/cli-kit/themes/factories' import {beforeEach, describe, expect, vi, test} from 'vitest' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' +import {Theme} from '@shopify/cli-kit/themes/types' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('../services/local-storage.js') describe('DevelopmentThemeManager', () => { diff --git a/packages/theme/src/cli/utilities/development-theme-manager.ts b/packages/theme/src/cli/utilities/development-theme-manager.ts index 092e0066100..9e1dd3d6519 100644 --- a/packages/theme/src/cli/utilities/development-theme-manager.ts +++ b/packages/theme/src/cli/utilities/development-theme-manager.ts @@ -1,8 +1,8 @@ import {getDevelopmentTheme, setDevelopmentTheme, removeDevelopmentTheme} from '../services/local-storage.js' -import {ThemeManager} from '@shopify/cli-kit/node/themes/theme-manager' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {AbortError} from '@shopify/cli-kit/node/error' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {ThemeManager} from '@shopify/cli-kit/themes/theme-manager' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {Theme} from '@shopify/cli-kit/themes/types' export const DEVELOPMENT_THEME_NOT_FOUND = (themeId: string) => `Development theme #${themeId} could not be found. Please create a new development theme.` diff --git a/packages/theme/src/cli/utilities/errors.test.ts b/packages/theme/src/cli/utilities/errors.test.ts index 7bf42be2b28..bf278f88424 100644 --- a/packages/theme/src/cli/utilities/errors.test.ts +++ b/packages/theme/src/cli/utilities/errors.test.ts @@ -6,11 +6,11 @@ import { extractFetchErrorInfo, } from './errors.js' import {describe, test, expect, vi, beforeEach, afterEach} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {renderError, renderFatalError} from '@shopify/cli-kit/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {renderError, renderFatalError} from '@shopify/cli-kit/shared/node/ui' -vi.mock('@shopify/cli-kit/node/output') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/output') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('errors', () => { describe('renderThrownError', () => { diff --git a/packages/theme/src/cli/utilities/errors.ts b/packages/theme/src/cli/utilities/errors.ts index 7fef4661b07..40052ded44a 100644 --- a/packages/theme/src/cli/utilities/errors.ts +++ b/packages/theme/src/cli/utilities/errors.ts @@ -1,7 +1,7 @@ -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {recordError} from '@shopify/cli-kit/node/analytics' -import {renderError, renderFatalError} from '@shopify/cli-kit/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {recordError} from '@shopify/cli-kit/shared/node/analytics' +import {renderError, renderFatalError} from '@shopify/cli-kit/shared/node/ui' import {createError as createH3Error, type H3Error} from 'h3' /** diff --git a/packages/theme/src/cli/utilities/log-request-line.ts b/packages/theme/src/cli/utilities/log-request-line.ts index 4c0f35d6e96..da146825522 100644 --- a/packages/theme/src/cli/utilities/log-request-line.ts +++ b/packages/theme/src/cli/utilities/log-request-line.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/unbound-method */ import {EXTENSION_CDN_PREFIX, VANITY_CDN_PREFIX} from './theme-environment/proxy.js' import {timestampDateFormat} from '../constants.js' -import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/node/output' +import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/shared/node/output' import {H3Event} from 'h3' -import {extname} from '@shopify/cli-kit/node/path' +import {extname} from '@shopify/cli-kit/shared/node/path' import type {DevServerContext} from './theme-environment/types.js' const CHARACTER_TRUNCATION_LIMIT = 80 diff --git a/packages/theme/src/cli/utilities/notifier.test.ts b/packages/theme/src/cli/utilities/notifier.test.ts index a055e450da1..3b4eec6c61c 100644 --- a/packages/theme/src/cli/utilities/notifier.test.ts +++ b/packages/theme/src/cli/utilities/notifier.test.ts @@ -1,10 +1,10 @@ import {Notifier} from './notifier.js' import {vi, describe, expect, test} from 'vitest' -import {outputWarn} from '@shopify/cli-kit/node/output' +import {outputWarn} from '@shopify/cli-kit/shared/node/output' import fs from 'fs/promises' vi.mock('fs/promises') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') describe('Notifier', () => { let notifier: Notifier diff --git a/packages/theme/src/cli/utilities/notifier.ts b/packages/theme/src/cli/utilities/notifier.ts index c47736eefa4..9267511016f 100644 --- a/packages/theme/src/cli/utilities/notifier.ts +++ b/packages/theme/src/cli/utilities/notifier.ts @@ -1,5 +1,5 @@ -import {recordError} from '@shopify/cli-kit/node/analytics' -import {outputDebug, outputWarn} from '@shopify/cli-kit/node/output' +import {recordError} from '@shopify/cli-kit/shared/node/analytics' +import {outputDebug, outputWarn} from '@shopify/cli-kit/shared/node/output' import fs from 'fs/promises' // A valid NotifyPath can be: diff --git a/packages/theme/src/cli/utilities/repl/evaluator.test.ts b/packages/theme/src/cli/utilities/repl/evaluator.test.ts index d0e745348fc..cf7aebc8c66 100644 --- a/packages/theme/src/cli/utilities/repl/evaluator.test.ts +++ b/packages/theme/src/cli/utilities/repl/evaluator.test.ts @@ -2,11 +2,11 @@ import {evaluate, EvaluationConfig} from './evaluator.js' import {DevServerSession} from '../theme-environment/types.js' import {render} from '../theme-environment/storefront-renderer.js' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/node/output' -import {AbortError} from '@shopify/cli-kit/node/error' +import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/shared/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' vi.mock('../theme-environment/storefront-renderer') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') describe('evaluate', () => { let mockConfig: EvaluationConfig diff --git a/packages/theme/src/cli/utilities/repl/evaluator.ts b/packages/theme/src/cli/utilities/repl/evaluator.ts index 1624750715e..d006b06df78 100644 --- a/packages/theme/src/cli/utilities/repl/evaluator.ts +++ b/packages/theme/src/cli/utilities/repl/evaluator.ts @@ -1,7 +1,7 @@ import {render} from '../theme-environment/storefront-renderer.js' import {DevServerSession} from '../theme-environment/types.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputDebug, outputInfo, outputToken} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputDebug, outputInfo, outputToken} from '@shopify/cli-kit/shared/node/output' export interface SessionItem { type: string diff --git a/packages/theme/src/cli/utilities/repl/presenter.test.ts b/packages/theme/src/cli/utilities/repl/presenter.test.ts index f9234a061dd..7588eb9dde6 100644 --- a/packages/theme/src/cli/utilities/repl/presenter.test.ts +++ b/packages/theme/src/cli/utilities/repl/presenter.test.ts @@ -1,8 +1,8 @@ import {presentValue} from './presenter.js' -import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/node/output' +import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/shared/node/output' import {describe, expect, test, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') describe('presentValue', () => { const cantBePrintedMessage = diff --git a/packages/theme/src/cli/utilities/repl/presenter.ts b/packages/theme/src/cli/utilities/repl/presenter.ts index 72bae9827e4..b4fcd176fa5 100644 --- a/packages/theme/src/cli/utilities/repl/presenter.ts +++ b/packages/theme/src/cli/utilities/repl/presenter.ts @@ -1,4 +1,4 @@ -import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/node/output' +import {outputContent, outputInfo, outputToken} from '@shopify/cli-kit/shared/node/output' export function presentValue(value?: unknown) { if (hasJsonError(value)) { diff --git a/packages/theme/src/cli/utilities/repl/repl-theme-manager.test.ts b/packages/theme/src/cli/utilities/repl/repl-theme-manager.test.ts index 8c9b2594b38..ff19465b73f 100644 --- a/packages/theme/src/cli/utilities/repl/repl-theme-manager.test.ts +++ b/packages/theme/src/cli/utilities/repl/repl-theme-manager.test.ts @@ -1,11 +1,11 @@ import {REPLThemeManager} from './repl-theme-manager.js' import {setREPLTheme, removeREPLTheme, getREPLTheme, getDevelopmentTheme} from '../../services/local-storage.js' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {bulkUploadThemeAssets, themeCreate, fetchTheme} from '@shopify/cli-kit/node/themes/api' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {bulkUploadThemeAssets, themeCreate, fetchTheme} from '@shopify/cli-kit/themes/api' -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('../../services/local-storage') describe('REPLThemeManager', () => { diff --git a/packages/theme/src/cli/utilities/repl/repl-theme-manager.ts b/packages/theme/src/cli/utilities/repl/repl-theme-manager.ts index 555e7eaeb3c..33b9adde99b 100644 --- a/packages/theme/src/cli/utilities/repl/repl-theme-manager.ts +++ b/packages/theme/src/cli/utilities/repl/repl-theme-manager.ts @@ -1,10 +1,10 @@ import {getREPLTheme, setREPLTheme, removeREPLTheme} from '../../services/local-storage.js' -import {ThemeManager} from '@shopify/cli-kit/node/themes/theme-manager' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {DEVELOPMENT_THEME_ROLE, Role} from '@shopify/cli-kit/node/themes/utils' -import {bulkUploadThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' +import {ThemeManager} from '@shopify/cli-kit/themes/theme-manager' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {DEVELOPMENT_THEME_ROLE, Role} from '@shopify/cli-kit/themes/utils' +import {bulkUploadThemeAssets} from '@shopify/cli-kit/themes/api' +import {Theme} from '@shopify/cli-kit/themes/types' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' export class REPLThemeManager extends ThemeManager { protected context = 'REPL' diff --git a/packages/theme/src/cli/utilities/repl/repl.test.ts b/packages/theme/src/cli/utilities/repl/repl.test.ts index ebe605ce990..60a51dd7bf1 100644 --- a/packages/theme/src/cli/utilities/repl/repl.test.ts +++ b/packages/theme/src/cli/utilities/repl/repl.test.ts @@ -3,10 +3,10 @@ import {evaluate} from './evaluator.js' import {presentValue} from './presenter.js' import {DevServerSession} from '../theme-environment/types.js' import {describe, expect, test, vi} from 'vitest' -import {outputInfo} from '@shopify/cli-kit/node/output' +import {outputInfo} from '@shopify/cli-kit/shared/node/output' import {createInterface} from 'readline' -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/shared/node/output') vi.mock('./evaluator.js') vi.mock('./presenter.js') diff --git a/packages/theme/src/cli/utilities/repl/repl.ts b/packages/theme/src/cli/utilities/repl/repl.ts index d8ab76a370b..0bcf7ac4e49 100644 --- a/packages/theme/src/cli/utilities/repl/repl.ts +++ b/packages/theme/src/cli/utilities/repl/repl.ts @@ -1,8 +1,8 @@ import {evaluate, SessionItem} from './evaluator.js' import {presentValue} from './presenter.js' import {DevServerSession} from '../theme-environment/types.js' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputDebug, outputInfo} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputDebug, outputInfo} from '@shopify/cli-kit/shared/node/output' import {createInterface, Interface} from 'readline' export const DELIMITER_WARNING = diff --git a/packages/theme/src/cli/utilities/theme-command.test.ts b/packages/theme/src/cli/utilities/theme-command.test.ts index 60bbb828e46..8533f43ef57 100644 --- a/packages/theme/src/cli/utilities/theme-command.test.ts +++ b/packages/theme/src/cli/utilities/theme-command.test.ts @@ -2,19 +2,19 @@ import ThemeCommand, {RequiredFlags} from './theme-command.js' import {ensureThemeStore} from './theme-store.js' import {describe, vi, expect, test, beforeEach} from 'vitest' import {Config, Flags} from '@oclif/core' -import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {loadEnvironment} from '@shopify/cli-kit/node/environments' -import {fileExistsSync} from '@shopify/cli-kit/node/fs' -import {AbortError} from '@shopify/cli-kit/node/error' -import {resolvePath} from '@shopify/cli-kit/node/path' -import {renderConcurrent, renderConfirmationPrompt, renderError, renderWarning} from '@shopify/cli-kit/node/ui' +import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {loadEnvironment} from '@shopify/cli-kit/shared/node/environments' +import {fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {resolvePath} from '@shopify/cli-kit/shared/node/path' +import {renderConcurrent, renderConfirmationPrompt, renderError, renderWarning} from '@shopify/cli-kit/shared/node/ui' import type {Writable} from 'stream' -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/environments') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/shared/node/environments') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('./theme-store.js') -vi.mock('@shopify/cli-kit/node/fs') +vi.mock('@shopify/cli-kit/shared/node/fs') const CommandConfig = new Config({root: __dirname}) diff --git a/packages/theme/src/cli/utilities/theme-command.ts b/packages/theme/src/cli/utilities/theme-command.ts index 930b8585817..b62ad9c6128 100644 --- a/packages/theme/src/cli/utilities/theme-command.ts +++ b/packages/theme/src/cli/utilities/theme-command.ts @@ -1,25 +1,25 @@ import {ensureThemeStore} from './theme-store.js' import {configurationFileName} from '../constants.js' import {useThemeStoreContext} from '../services/local-storage.js' -import {hashString} from '@shopify/cli-kit/node/crypto' +import {hashString} from '@shopify/cli-kit/shared/node/crypto' import {Input} from '@oclif/core/interfaces' -import Command, {ArgOutput, FlagOutput, noDefaultsOptions} from '@shopify/cli-kit/node/base-command' -import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {loadEnvironment} from '@shopify/cli-kit/node/environments' +import Command, {ArgOutput, FlagOutput, noDefaultsOptions} from '@shopify/cli-kit/shared/node/base-command' +import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {loadEnvironment} from '@shopify/cli-kit/shared/node/environments' import { renderWarning, renderConcurrent, renderConfirmationPrompt, RenderConfirmationPromptOptions, renderError, -} from '@shopify/cli-kit/node/ui' -import {AbortController} from '@shopify/cli-kit/node/abort' -import {AbortError} from '@shopify/cli-kit/node/error' -import {recordEvent, compileData} from '@shopify/cli-kit/node/analytics' -import {addPublicMetadata, addSensitiveMetadata} from '@shopify/cli-kit/node/metadata' -import {cwd, joinPath, resolvePath} from '@shopify/cli-kit/node/path' -import {fileExistsSync} from '@shopify/cli-kit/node/fs' -import {normalizeStoreFqdn} from '@shopify/cli-kit/node/context/fqdn' +} from '@shopify/cli-kit/shared/node/ui' +import {AbortController} from '@shopify/cli-kit/shared/node/abort' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {recordEvent, compileData} from '@shopify/cli-kit/shared/node/analytics' +import {addPublicMetadata, addSensitiveMetadata} from '@shopify/cli-kit/shared/node/metadata' +import {cwd, joinPath, resolvePath} from '@shopify/cli-kit/shared/node/path' +import {fileExistsSync} from '@shopify/cli-kit/shared/node/fs' +import {normalizeStoreFqdn} from '@shopify/cli-kit/shared/node/context/fqdn' import type {Writable} from 'stream' interface FlagValues { diff --git a/packages/theme/src/cli/utilities/theme-downloader.test.ts b/packages/theme/src/cli/utilities/theme-downloader.test.ts index bde58d971d6..94055061bf4 100644 --- a/packages/theme/src/cli/utilities/theme-downloader.test.ts +++ b/packages/theme/src/cli/utilities/theme-downloader.test.ts @@ -1,11 +1,11 @@ import {downloadTheme} from './theme-downloader.js' import {fakeThemeFileSystem} from './theme-fs/theme-fs-mock-factory.js' -import {fetchThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {Checksum, ThemeAsset} from '@shopify/cli-kit/node/themes/types' +import {fetchThemeAssets} from '@shopify/cli-kit/themes/api' +import {Checksum, ThemeAsset} from '@shopify/cli-kit/themes/types' import {test, describe, expect, vi} from 'vitest' vi.mock('./theme-fs.js') -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/themes/api') describe('theme-downloader', () => { describe('downloadTheme', () => { diff --git a/packages/theme/src/cli/utilities/theme-downloader.ts b/packages/theme/src/cli/utilities/theme-downloader.ts index fae80deb311..1f1b7cbd492 100644 --- a/packages/theme/src/cli/utilities/theme-downloader.ts +++ b/packages/theme/src/cli/utilities/theme-downloader.ts @@ -1,9 +1,9 @@ import {batchedTasks, Task} from './batching.js' import {MAX_GRAPHQL_THEME_FILES} from '../constants.js' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {fetchThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {ThemeFileSystem, Theme, Checksum, ThemeAsset} from '@shopify/cli-kit/node/themes/types' -import {renderTasks} from '@shopify/cli-kit/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {fetchThemeAssets} from '@shopify/cli-kit/themes/api' +import {ThemeFileSystem, Theme, Checksum, ThemeAsset} from '@shopify/cli-kit/themes/types' +import {renderTasks} from '@shopify/cli-kit/shared/node/ui' import {Writable} from 'stream' interface DownloadOptions { diff --git a/packages/theme/src/cli/utilities/theme-environment/dev-server-session.test.ts b/packages/theme/src/cli/utilities/theme-environment/dev-server-session.test.ts index ed40429c3df..e7dc5b02abc 100644 --- a/packages/theme/src/cli/utilities/theme-environment/dev-server-session.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/dev-server-session.test.ts @@ -5,14 +5,14 @@ import { fetchDevServerSession, } from './dev-server-session.js' import {getStorefrontSessionCookies, ShopifyEssentialError} from './storefront-session.js' -import {ensureAuthenticatedStorefront, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {fetchThemeAssets, themeDelete} from '@shopify/cli-kit/node/themes/api' +import {ensureAuthenticatedStorefront, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {fetchThemeAssets, themeDelete} from '@shopify/cli-kit/themes/api' import {describe, expect, test, vi, beforeEach} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' -vi.mock('@shopify/cli-kit/node/session') -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/identity/session') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('./storefront-session.js') const storeFqdn = 'my-shop.myshopify.com' diff --git a/packages/theme/src/cli/utilities/theme-environment/dev-server-session.ts b/packages/theme/src/cli/utilities/theme-environment/dev-server-session.ts index 39911f23eb3..7768163d554 100644 --- a/packages/theme/src/cli/utilities/theme-environment/dev-server-session.ts +++ b/packages/theme/src/cli/utilities/theme-environment/dev-server-session.ts @@ -1,11 +1,11 @@ import {buildBaseStorefrontUrl} from './storefront-renderer.js' import {getStorefrontSessionCookies, ShopifyEssentialError} from './storefront-session.js' import {DevServerSession} from './types.js' -import {fetchThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputDebug, outputContent, outputToken} from '@shopify/cli-kit/node/output' -import {AdminSession, ensureAuthenticatedStorefront, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {recordError, recordEvent} from '@shopify/cli-kit/node/analytics' +import {fetchThemeAssets} from '@shopify/cli-kit/themes/api' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputDebug, outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' +import {AdminSession, ensureAuthenticatedStorefront, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {recordError, recordEvent} from '@shopify/cli-kit/shared/node/analytics' // 30 minutes in miliseconds. const SESSION_TIMEOUT_IN_MS = 30 * 60 * 1000 diff --git a/packages/theme/src/cli/utilities/theme-environment/hot-reload/server.test.ts b/packages/theme/src/cli/utilities/theme-environment/hot-reload/server.test.ts index 441e46408d6..a7432f5701d 100644 --- a/packages/theme/src/cli/utilities/theme-environment/hot-reload/server.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/hot-reload/server.test.ts @@ -14,11 +14,11 @@ import {render} from '../storefront-renderer.js' import {emptyThemeExtFileSystem} from '../../theme-fs-empty.js' import {describe, test, expect, vi, beforeEach} from 'vitest' import {createEvent} from 'h3' -import * as output from '@shopify/cli-kit/node/output' +import * as output from '@shopify/cli-kit/shared/node/output' import {IncomingMessage, ServerResponse} from 'node:http' import {Socket} from 'node:net' import type {DevServerContext} from '../types.js' -import type {Theme, ThemeFSEventName, ThemeAsset} from '@shopify/cli-kit/node/themes/types' +import type {Theme, ThemeFSEventName, ThemeAsset} from '@shopify/cli-kit/themes/types' vi.mock('../storefront-renderer.js') vi.spyOn(output, 'outputDebug') diff --git a/packages/theme/src/cli/utilities/theme-environment/hot-reload/server.ts b/packages/theme/src/cli/utilities/theme-environment/hot-reload/server.ts index 60173e5eb7f..55011ec2a4a 100644 --- a/packages/theme/src/cli/utilities/theme-environment/hot-reload/server.ts +++ b/packages/theme/src/cli/utilities/theme-environment/hot-reload/server.ts @@ -14,11 +14,11 @@ import { sendError, type EventHandler, } from 'h3' -import {renderError, renderInfo, renderWarning} from '@shopify/cli-kit/node/ui' -import {extname, joinPath} from '@shopify/cli-kit/node/path' +import {renderError, renderInfo, renderWarning} from '@shopify/cli-kit/shared/node/ui' +import {extname, joinPath} from '@shopify/cli-kit/shared/node/path' import {parseJSON} from '@shopify/theme-check-node' -import {readFile} from '@shopify/cli-kit/node/fs' -import {recordError, recordEvent} from '@shopify/cli-kit/node/analytics' +import {readFile} from '@shopify/cli-kit/shared/node/fs' +import {recordError, recordEvent} from '@shopify/cli-kit/shared/node/analytics' import EventEmitter from 'node:events' import type { HotReloadEvent, @@ -26,7 +26,7 @@ import type { HotReloadOpenEvent, HotReloadFullEvent, } from '@shopify/theme-hot-reload' -import type {Theme, ThemeAsset, ThemeFSEventPayload} from '@shopify/cli-kit/node/themes/types' +import type {Theme, ThemeAsset, ThemeFSEventPayload} from '@shopify/cli-kit/themes/types' import type {DevServerContext} from '../types.js' // --- Section tag content cache --- diff --git a/packages/theme/src/cli/utilities/theme-environment/html.test.ts b/packages/theme/src/cli/utilities/theme-environment/html.test.ts index fdfedf958c4..6a72b22db58 100644 --- a/packages/theme/src/cli/utilities/theme-environment/html.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/html.test.ts @@ -4,7 +4,7 @@ import {DevServerContext} from './types.js' import {emptyThemeExtFileSystem, emptyThemeFileSystem} from '../theme-fs-empty.js' import {createEvent} from 'h3' import {describe, expect, test, vi} from 'vitest' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {Theme} from '@shopify/cli-kit/themes/types' import {IncomingMessage, ServerResponse} from 'node:http' import {Socket} from 'node:net' diff --git a/packages/theme/src/cli/utilities/theme-environment/html.ts b/packages/theme/src/cli/utilities/theme-environment/html.ts index 6bb2f056096..1b9d51f6f8c 100644 --- a/packages/theme/src/cli/utilities/theme-environment/html.ts +++ b/packages/theme/src/cli/utilities/theme-environment/html.ts @@ -6,11 +6,11 @@ import {getExtensionInMemoryTemplates} from '../theme-ext-environment/theme-ext- import {logRequestLine} from '../log-request-line.js' import {extractFetchErrorInfo} from '../errors.js' import {defineEventHandler, getCookie, type H3Event, type EventHandler} from 'h3' -import {renderError, renderFatalError} from '@shopify/cli-kit/node/ui' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {AbortError} from '@shopify/cli-kit/node/error' -import {recordEvent} from '@shopify/cli-kit/node/analytics' -import type {Theme} from '@shopify/cli-kit/node/themes/types' +import {renderError, renderFatalError} from '@shopify/cli-kit/shared/node/ui' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {recordEvent} from '@shopify/cli-kit/shared/node/analytics' +import type {Theme} from '@shopify/cli-kit/themes/types' import type {DevServerContext} from './types.js' /** Tracks the number of consecutive theme ID mismatch redirects */ diff --git a/packages/theme/src/cli/utilities/theme-environment/local-assets.ts b/packages/theme/src/cli/utilities/theme-environment/local-assets.ts index 2c3f676fdc3..635a156dafd 100644 --- a/packages/theme/src/cli/utilities/theme-environment/local-assets.ts +++ b/packages/theme/src/cli/utilities/theme-environment/local-assets.ts @@ -1,10 +1,10 @@ import {injectCdnProxy} from './proxy.js' import {parseServerEvent} from './server-utils.js' import {getLiquidTagContent} from './liquid-tag-content.js' -import {lookupMimeType} from '@shopify/cli-kit/node/mimes' +import {lookupMimeType} from '@shopify/cli-kit/shared/node/mimes' import {defineEventHandler, H3Event, serveStatic, setResponseHeader, sendError, createError} from 'h3' -import {joinPath} from '@shopify/cli-kit/node/path' -import type {Theme, ThemeAsset, VirtualFileSystem} from '@shopify/cli-kit/node/themes/types' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import type {Theme, ThemeAsset, VirtualFileSystem} from '@shopify/cli-kit/themes/types' import type {DevServerContext} from './types.js' const tagContentCache = { diff --git a/packages/theme/src/cli/utilities/theme-environment/proxy.ts b/packages/theme/src/cli/utilities/theme-environment/proxy.ts index a2d2e81b6bd..25e3fee3f00 100644 --- a/packages/theme/src/cli/utilities/theme-environment/proxy.ts +++ b/packages/theme/src/cli/utilities/theme-environment/proxy.ts @@ -3,12 +3,12 @@ import {buildCookies} from './storefront-renderer.js' import {cleanHeader, defaultHeaders} from './storefront-utils.js' import {logRequestLine} from '../log-request-line.js' import {createFetchError, extractFetchErrorInfo} from '../errors.js' -import {renderWarning} from '@shopify/cli-kit/node/ui' +import {renderWarning} from '@shopify/cli-kit/shared/node/ui' import {defineEventHandler, getRequestHeaders, getRequestWebStream, getRequestIP, type H3Event} from 'h3' -import {extname} from '@shopify/cli-kit/node/path' -import {lookupMimeType} from '@shopify/cli-kit/node/mimes' -import {recordError} from '@shopify/cli-kit/node/analytics' -import type {Theme} from '@shopify/cli-kit/node/themes/types' +import {extname} from '@shopify/cli-kit/shared/node/path' +import {lookupMimeType} from '@shopify/cli-kit/shared/node/mimes' +import {recordError} from '@shopify/cli-kit/shared/node/analytics' +import type {Theme} from '@shopify/cli-kit/themes/types' import type {DevServerContext} from './types.js' export const VANITY_CDN_PREFIX = '/cdn/' diff --git a/packages/theme/src/cli/utilities/theme-environment/remote-theme-watcher.test.ts b/packages/theme/src/cli/utilities/theme-environment/remote-theme-watcher.test.ts index a37cbeb83c5..d324171d203 100644 --- a/packages/theme/src/cli/utilities/theme-environment/remote-theme-watcher.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/remote-theme-watcher.test.ts @@ -2,13 +2,13 @@ import {reconcileJsonFiles} from './theme-reconciliation.js' import {reconcileAndPollThemeEditorChanges} from './remote-theme-watcher.js' import {pollThemeEditorChanges} from './theme-polling.js' import {fakeThemeFileSystem} from '../theme-fs/theme-fs-mock-factory.js' -import {fetchChecksums} from '@shopify/cli-kit/node/themes/api' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' -import {ThemeAsset} from '@shopify/cli-kit/node/themes/types' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' +import {fetchChecksums} from '@shopify/cli-kit/themes/api' +import {buildTheme} from '@shopify/cli-kit/themes/factories' +import {ThemeAsset} from '@shopify/cli-kit/themes/types' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' import {beforeEach, describe, expect, test, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('./theme-reconciliation.js') vi.mock('./theme-polling.js') vi.mock('../theme-fs.js') diff --git a/packages/theme/src/cli/utilities/theme-environment/remote-theme-watcher.ts b/packages/theme/src/cli/utilities/theme-environment/remote-theme-watcher.ts index 7e129d20348..b7c5fcd05f8 100644 --- a/packages/theme/src/cli/utilities/theme-environment/remote-theme-watcher.ts +++ b/packages/theme/src/cli/utilities/theme-environment/remote-theme-watcher.ts @@ -1,9 +1,9 @@ import {pollThemeEditorChanges} from './theme-polling.js' import {reconcileJsonFiles} from './theme-reconciliation.js' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {Checksum, Theme, ThemeFileSystem} from '@shopify/cli-kit/node/themes/types' -import {fetchChecksums} from '@shopify/cli-kit/node/themes/api' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {Checksum, Theme, ThemeFileSystem} from '@shopify/cli-kit/themes/types' +import {fetchChecksums} from '@shopify/cli-kit/themes/api' export const LOCAL_STRATEGY = 'local' export const REMOTE_STRATEGY = 'remote' diff --git a/packages/theme/src/cli/utilities/theme-environment/storefront-password-prompt.test.ts b/packages/theme/src/cli/utilities/theme-environment/storefront-password-prompt.test.ts index d451cfcb55c..57a718e87ca 100644 --- a/packages/theme/src/cli/utilities/theme-environment/storefront-password-prompt.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/storefront-password-prompt.test.ts @@ -7,10 +7,10 @@ import { setStorefrontPassword, } from '../../services/local-storage.js' import {ensureThemeStore} from '../theme-store.js' -import {renderTextPrompt} from '@shopify/cli-kit/node/ui' +import {renderTextPrompt} from '@shopify/cli-kit/shared/node/ui' import {describe, beforeEach, vi, test, expect} from 'vitest' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('../theme-environment/storefront-session.js') vi.mock('../../services/local-storage.js') vi.mock('../theme-store.js') diff --git a/packages/theme/src/cli/utilities/theme-environment/storefront-password-prompt.ts b/packages/theme/src/cli/utilities/theme-environment/storefront-password-prompt.ts index 29e8af5ad35..510eb9afc04 100644 --- a/packages/theme/src/cli/utilities/theme-environment/storefront-password-prompt.ts +++ b/packages/theme/src/cli/utilities/theme-environment/storefront-password-prompt.ts @@ -6,8 +6,8 @@ import { setStorefrontPassword, } from '../../services/local-storage.js' import {ensureThemeStore} from '../theme-store.js' -import {renderTextPrompt, TokenItem} from '@shopify/cli-kit/node/ui' -import {storePasswordPage} from '@shopify/cli-kit/node/themes/urls' +import {renderTextPrompt, TokenItem} from '@shopify/cli-kit/shared/node/ui' +import {storePasswordPage} from '@shopify/cli-kit/themes/urls' export async function ensureValidPassword(password: string | undefined, store: string) { /* diff --git a/packages/theme/src/cli/utilities/theme-environment/storefront-renderer.test.ts b/packages/theme/src/cli/utilities/theme-environment/storefront-renderer.test.ts index 87e32234bea..733317a6263 100644 --- a/packages/theme/src/cli/utilities/theme-environment/storefront-renderer.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/storefront-renderer.test.ts @@ -2,7 +2,7 @@ import {render} from './storefront-renderer.js' import {DevServerRenderContext, DevServerSession} from './types.js' import {describe, expect, test, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/identity/session') vi.stubGlobal('fetch', vi.fn()) const session: DevServerSession = { diff --git a/packages/theme/src/cli/utilities/theme-environment/storefront-renderer.ts b/packages/theme/src/cli/utilities/theme-environment/storefront-renderer.ts index ed66b4e8ae0..a1f5aeb301f 100644 --- a/packages/theme/src/cli/utilities/theme-environment/storefront-renderer.ts +++ b/packages/theme/src/cli/utilities/theme-environment/storefront-renderer.ts @@ -2,10 +2,10 @@ import {parseCookies, serializeCookies} from './cookies.js' import {cleanHeader, defaultHeaders, storefrontReplaceTemplatesParams} from './storefront-utils.js' import {DevServerSession, DevServerRenderContext} from './types.js' import {createFetchError} from '../errors.js' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {getThemeKitAccessDomain} from '@shopify/cli-kit/node/context/local' -import {recordError} from '@shopify/cli-kit/node/analytics' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {getThemeKitAccessDomain} from '@shopify/cli-kit/shared/node/context/local' +import {recordError} from '@shopify/cli-kit/shared/node/analytics' export async function render(session: DevServerSession, context: DevServerRenderContext): Promise { const url = buildStorefrontUrl(session, context) diff --git a/packages/theme/src/cli/utilities/theme-environment/storefront-session.test.ts b/packages/theme/src/cli/utilities/theme-environment/storefront-session.test.ts index 89284f28ee0..630f8d783f9 100644 --- a/packages/theme/src/cli/utilities/theme-environment/storefront-session.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/storefront-session.test.ts @@ -5,15 +5,15 @@ import { ShopifyEssentialError, } from './storefront-session.js' import {describe, expect, test, vi} from 'vitest' -import {shopifyFetch} from '@shopify/cli-kit/node/http' -import {AbortError} from '@shopify/cli-kit/node/error' -import {passwordProtected} from '@shopify/cli-kit/node/themes/api' -import {type AdminSession} from '@shopify/cli-kit/node/session' -import {getThemeKitAccessDomain} from '@shopify/cli-kit/node/context/local' - -vi.mock('@shopify/cli-kit/node/http') -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/system') +import {shopifyFetch} from '@shopify/cli-kit/shared/node/http' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {passwordProtected} from '@shopify/cli-kit/themes/api' +import {type AdminSession} from '@shopify/cli-kit/identity/session' +import {getThemeKitAccessDomain} from '@shopify/cli-kit/shared/node/context/local' + +vi.mock('@shopify/cli-kit/shared/node/http') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/system') describe('Storefront API', () => { describe('isStorefrontPasswordProtected', () => { diff --git a/packages/theme/src/cli/utilities/theme-environment/storefront-session.ts b/packages/theme/src/cli/utilities/theme-environment/storefront-session.ts index ad7aafea2b2..cf4db534ba6 100644 --- a/packages/theme/src/cli/utilities/theme-environment/storefront-session.ts +++ b/packages/theme/src/cli/utilities/theme-environment/storefront-session.ts @@ -1,12 +1,12 @@ import {parseCookies, serializeCookies} from './cookies.js' import {defaultHeaders} from './storefront-utils.js' -import {shopifyFetch, Response} from '@shopify/cli-kit/node/http' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {type AdminSession} from '@shopify/cli-kit/node/session' -import {passwordProtected} from '@shopify/cli-kit/node/themes/api' -import {sleep} from '@shopify/cli-kit/node/system' -import {recordError, recordEvent} from '@shopify/cli-kit/node/analytics' +import {shopifyFetch, Response} from '@shopify/cli-kit/shared/node/http' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {type AdminSession} from '@shopify/cli-kit/identity/session' +import {passwordProtected} from '@shopify/cli-kit/themes/api' +import {sleep} from '@shopify/cli-kit/shared/node/system' +import {recordError, recordEvent} from '@shopify/cli-kit/shared/node/analytics' export class ShopifyEssentialError extends AbortError {} diff --git a/packages/theme/src/cli/utilities/theme-environment/storefront-utils.ts b/packages/theme/src/cli/utilities/theme-environment/storefront-utils.ts index c18b30a9be2..1c3dce7dd7f 100644 --- a/packages/theme/src/cli/utilities/theme-environment/storefront-utils.ts +++ b/packages/theme/src/cli/utilities/theme-environment/storefront-utils.ts @@ -1,5 +1,5 @@ import {DevServerRenderContext} from './types.js' -import {CLI_KIT_VERSION} from '@shopify/cli-kit/common/version' +import {CLI_KIT_VERSION} from '@shopify/cli-kit/shared/common/version' export function storefrontReplaceTemplatesParams(context: DevServerRenderContext): URLSearchParams { /** diff --git a/packages/theme/src/cli/utilities/theme-environment/theme-environment.test.ts b/packages/theme/src/cli/utilities/theme-environment/theme-environment.test.ts index 02508a5ee67..60ab04efa98 100644 --- a/packages/theme/src/cli/utilities/theme-environment/theme-environment.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/theme-environment.test.ts @@ -6,16 +6,16 @@ import {hotReloadScriptId} from './hot-reload/server.js' import {uploadTheme} from '../theme-uploader.js' import {fakeThemeFileSystem} from '../theme-fs/theme-fs-mock-factory.js' import {emptyThemeExtFileSystem} from '../theme-fs-empty.js' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' import {describe, expect, test, vi, beforeEach, afterEach} from 'vitest' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' +import {buildTheme} from '@shopify/cli-kit/themes/factories' import {createEvent} from 'h3' -import * as output from '@shopify/cli-kit/node/output' -import {fetchChecksums} from '@shopify/cli-kit/node/themes/api' +import * as output from '@shopify/cli-kit/shared/node/output' +import {fetchChecksums} from '@shopify/cli-kit/themes/api' import {IncomingMessage, ServerResponse} from 'node:http' import {Socket} from 'node:net' -vi.mock('@shopify/cli-kit/node/themes/api', () => ({fetchChecksums: vi.fn(() => Promise.resolve([]))})) +vi.mock('@shopify/cli-kit/themes/api', () => ({fetchChecksums: vi.fn(() => Promise.resolve([]))})) vi.mock('./remote-theme-watcher.js') vi.mock('./storefront-renderer.js') vi.spyOn(output, 'outputDebug') diff --git a/packages/theme/src/cli/utilities/theme-environment/theme-environment.ts b/packages/theme/src/cli/utilities/theme-environment/theme-environment.ts index 34bbd14d710..60fc221c762 100644 --- a/packages/theme/src/cli/utilities/theme-environment/theme-environment.ts +++ b/packages/theme/src/cli/utilities/theme-environment/theme-environment.ts @@ -8,9 +8,9 @@ import {renderTasksToStdErr} from '../theme-ui.js' import {renderThrownError} from '../errors.js' import {promiseWithResolvers} from '../../polyfills/promiseWithResolvers.js' import {createApp, defineEventHandler, defineLazyEventHandler, toNodeListener, handleCors} from 'h3' -import {fetchChecksums} from '@shopify/cli-kit/node/themes/api' +import {fetchChecksums} from '@shopify/cli-kit/themes/api' import {createServer} from 'node:http' -import type {Checksum, Theme} from '@shopify/cli-kit/node/themes/types' +import type {Checksum, Theme} from '@shopify/cli-kit/themes/types' import type {DevServerContext} from './types.js' export function setupDevServer(theme: Theme, ctx: DevServerContext) { diff --git a/packages/theme/src/cli/utilities/theme-environment/theme-polling.test.ts b/packages/theme/src/cli/utilities/theme-environment/theme-polling.test.ts index 4576fba4a98..e4bc279cab1 100644 --- a/packages/theme/src/cli/utilities/theme-environment/theme-polling.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/theme-polling.test.ts @@ -1,12 +1,12 @@ import {PollingOptions, pollRemoteJsonChanges, deleteRemovedAssets} from './theme-polling.js' import {fakeThemeFileSystem} from '../theme-fs/theme-fs-mock-factory.js' -import {fetchChecksums, fetchThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {Checksum, ThemeAsset} from '@shopify/cli-kit/node/themes/types' +import {fetchChecksums, fetchThemeAssets} from '@shopify/cli-kit/themes/api' +import {Checksum, ThemeAsset} from '@shopify/cli-kit/themes/types' import {describe, expect, test, vi, afterEach} from 'vitest' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' +import {buildTheme} from '@shopify/cli-kit/themes/factories' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('../theme-fs.js') describe('pollRemoteJsonChanges', async () => { diff --git a/packages/theme/src/cli/utilities/theme-environment/theme-polling.ts b/packages/theme/src/cli/utilities/theme-environment/theme-polling.ts index c8de4126687..72b81917c8f 100644 --- a/packages/theme/src/cli/utilities/theme-environment/theme-polling.ts +++ b/packages/theme/src/cli/utilities/theme-environment/theme-polling.ts @@ -1,12 +1,12 @@ import {MAX_GRAPHQL_THEME_FILES, timestampDateFormat} from '../../constants.js' import {batchedRequests} from '../batching.js' import {renderThrownError} from '../errors.js' -import {Checksum, Theme, ThemeFileSystem} from '@shopify/cli-kit/node/themes/types' -import {fetchChecksums, fetchThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {outputDebug, outputInfo, outputContent, outputToken} from '@shopify/cli-kit/node/output' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {renderFatalError} from '@shopify/cli-kit/node/ui' -import {AbortError} from '@shopify/cli-kit/node/error' +import {Checksum, Theme, ThemeFileSystem} from '@shopify/cli-kit/themes/types' +import {fetchChecksums, fetchThemeAssets} from '@shopify/cli-kit/themes/api' +import {outputDebug, outputInfo, outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {renderFatalError} from '@shopify/cli-kit/shared/node/ui' +import {AbortError} from '@shopify/cli-kit/shared/node/error' const POLLING_INTERVAL = 3000 class PollingError extends Error {} diff --git a/packages/theme/src/cli/utilities/theme-environment/theme-reconciliation.test.ts b/packages/theme/src/cli/utilities/theme-environment/theme-reconciliation.test.ts index 0083c373b40..caf2824e482 100644 --- a/packages/theme/src/cli/utilities/theme-environment/theme-reconciliation.test.ts +++ b/packages/theme/src/cli/utilities/theme-environment/theme-reconciliation.test.ts @@ -1,15 +1,15 @@ import {reconcileJsonFiles} from './theme-reconciliation.js' import {REMOTE_STRATEGY, LOCAL_STRATEGY} from './remote-theme-watcher.js' import {fakeThemeFileSystem} from '../theme-fs/theme-fs-mock-factory.js' -import {deleteThemeAssets, fetchThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' -import {Checksum, ThemeAsset, ThemeFileSystem} from '@shopify/cli-kit/node/themes/types' -import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {renderSelectPrompt} from '@shopify/cli-kit/node/ui' +import {deleteThemeAssets, fetchThemeAssets} from '@shopify/cli-kit/themes/api' +import {buildTheme} from '@shopify/cli-kit/themes/factories' +import {Checksum, ThemeAsset, ThemeFileSystem} from '@shopify/cli-kit/themes/types' +import {DEVELOPMENT_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {renderSelectPrompt} from '@shopify/cli-kit/shared/node/ui' import {beforeEach, describe, expect, test, vi} from 'vitest' -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/themes/api') vi.mock('./theme-fs.js') vi.mock('./theme-downloader.js') vi.mock('./theme-uploader.js') diff --git a/packages/theme/src/cli/utilities/theme-environment/theme-reconciliation.ts b/packages/theme/src/cli/utilities/theme-environment/theme-reconciliation.ts index 2d5079938b3..2a0fe6d095b 100644 --- a/packages/theme/src/cli/utilities/theme-environment/theme-reconciliation.ts +++ b/packages/theme/src/cli/utilities/theme-environment/theme-reconciliation.ts @@ -1,12 +1,12 @@ import {REMOTE_STRATEGY, LOCAL_STRATEGY} from './remote-theme-watcher.js' import {batchedRequests} from '../batching.js' import {MAX_GRAPHQL_THEME_FILES} from '../../constants.js' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {deleteThemeAssets, fetchThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {Checksum, ThemeFileSystem, ThemeAsset, Theme} from '@shopify/cli-kit/node/themes/types' -import {renderInfo, renderSelectPrompt} from '@shopify/cli-kit/node/ui' -import {recordEvent} from '@shopify/cli-kit/node/analytics' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {deleteThemeAssets, fetchThemeAssets} from '@shopify/cli-kit/themes/api' +import {Checksum, ThemeFileSystem, ThemeAsset, Theme} from '@shopify/cli-kit/themes/types' +import {renderInfo, renderSelectPrompt} from '@shopify/cli-kit/shared/node/ui' +import {recordEvent} from '@shopify/cli-kit/shared/node/analytics' type ReconciliationStrategy = typeof LOCAL_STRATEGY | typeof REMOTE_STRATEGY | undefined diff --git a/packages/theme/src/cli/utilities/theme-environment/types.ts b/packages/theme/src/cli/utilities/theme-environment/types.ts index 39d4bdee5e1..08d7783bcd9 100644 --- a/packages/theme/src/cli/utilities/theme-environment/types.ts +++ b/packages/theme/src/cli/utilities/theme-environment/types.ts @@ -1,5 +1,5 @@ -import {AdminSession} from '@shopify/cli-kit/node/session' -import {ThemeExtensionFileSystem, ThemeFileSystem} from '@shopify/cli-kit/node/themes/types' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {ThemeExtensionFileSystem, ThemeFileSystem} from '@shopify/cli-kit/themes/types' /** * Defines an authentication session for the theme development server. diff --git a/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-fs.test.ts b/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-fs.test.ts index b41ac516f54..10b73b9d2d0 100644 --- a/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-fs.test.ts +++ b/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-fs.test.ts @@ -1,8 +1,8 @@ import {mountThemeExtensionFileSystem} from './theme-ext-fs.js' import {test, describe, expect} from 'vitest' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' import {fileURLToPath} from 'node:url' -import type {Checksum, ThemeAsset} from '@shopify/cli-kit/node/themes/types' +import type {Checksum, ThemeAsset} from '@shopify/cli-kit/themes/types' describe('theme-ext-fs', () => { const locationOfThisFile = dirname(fileURLToPath(import.meta.url)) diff --git a/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-fs.ts b/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-fs.ts index 4f21a324ab4..1841b62637f 100644 --- a/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-fs.ts +++ b/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-fs.ts @@ -1,17 +1,17 @@ import {readThemeFile} from '../theme-fs.js' import {calculateChecksum} from '../asset-checksum.js' import {DEFAULT_IGNORE_PATTERNS} from '../../constants.js' -import {glob} from '@shopify/cli-kit/node/fs' -import {joinPath, relativePath} from '@shopify/cli-kit/node/path' -import {sleep} from '@shopify/cli-kit/node/system' -import {buildThemeAsset} from '@shopify/cli-kit/node/themes/factories' +import {glob} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, relativePath} from '@shopify/cli-kit/shared/node/path' +import {sleep} from '@shopify/cli-kit/shared/node/system' +import {buildThemeAsset} from '@shopify/cli-kit/themes/factories' import EventEmitter from 'node:events' import type { ThemeAsset, ThemeExtensionFileSystem, ThemeFSEventName, ThemeFSEventPayload, -} from '@shopify/cli-kit/node/themes/types' +} from '@shopify/cli-kit/themes/types' const THEME_EXT_DIRECTORY_PATTERNS = [ 'assets/**/*.*', diff --git a/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-server.ts b/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-server.ts index 5ed6a0d420f..c64db820b73 100644 --- a/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-server.ts +++ b/packages/theme/src/cli/utilities/theme-ext-environment/theme-ext-server.ts @@ -7,9 +7,9 @@ import {getHotReloadHandler, triggerHotReload} from '../theme-environment/hot-re import {emptyThemeFileSystem} from '../theme-fs-empty.js' import {initializeDevServerSession} from '../theme-environment/dev-server-session.js' import {createApp, toNodeListener} from 'h3' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' import {createServer} from 'node:http' -import type {Theme, ThemeFSEventPayload} from '@shopify/cli-kit/node/themes/types' +import type {Theme, ThemeFSEventPayload} from '@shopify/cli-kit/themes/types' interface DevelopmentServerInstance { close: () => Promise diff --git a/packages/theme/src/cli/utilities/theme-fs-empty.ts b/packages/theme/src/cli/utilities/theme-fs-empty.ts index 126170fb0b3..ad188647a25 100644 --- a/packages/theme/src/cli/utilities/theme-fs-empty.ts +++ b/packages/theme/src/cli/utilities/theme-fs-empty.ts @@ -1,4 +1,4 @@ -import {ThemeAsset, ThemeExtensionFileSystem, ThemeFileSystem} from '@shopify/cli-kit/node/themes/types' +import {ThemeAsset, ThemeExtensionFileSystem, ThemeFileSystem} from '@shopify/cli-kit/themes/types' export function emptyThemeFileSystem(): ThemeFileSystem { return emptyFileSystem() diff --git a/packages/theme/src/cli/utilities/theme-fs.test.ts b/packages/theme/src/cli/utilities/theme-fs.test.ts index 3c498383acf..1666589d0b8 100644 --- a/packages/theme/src/cli/utilities/theme-fs.test.ts +++ b/packages/theme/src/cli/utilities/theme-fs.test.ts @@ -10,28 +10,28 @@ import { } from './theme-fs.js' import {getPatternsFromShopifyIgnore, applyIgnoreFilters} from './asset-ignore.js' import {triggerBrowserFullReload} from './theme-environment/hot-reload/server.js' -import {removeFile, writeFile} from '@shopify/cli-kit/node/fs' -import * as fsKit from '@shopify/cli-kit/node/fs' +import {removeFile, writeFile} from '@shopify/cli-kit/shared/node/fs' +import * as fsKit from '@shopify/cli-kit/shared/node/fs' import {test, describe, expect, vi, beforeEach} from 'vitest' import chokidar from 'chokidar' -import {bulkUploadThemeAssets, deleteThemeAssets, fetchThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {renderError} from '@shopify/cli-kit/node/ui' -import {Operation, type Checksum, type ThemeAsset} from '@shopify/cli-kit/node/themes/types' -import {dirname, joinPath} from '@shopify/cli-kit/node/path' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {bulkUploadThemeAssets, deleteThemeAssets, fetchThemeAssets} from '@shopify/cli-kit/themes/api' +import {renderError} from '@shopify/cli-kit/shared/node/ui' +import {Operation, type Checksum, type ThemeAsset} from '@shopify/cli-kit/themes/types' +import {dirname, joinPath} from '@shopify/cli-kit/shared/node/path' +import {AdminSession} from '@shopify/cli-kit/identity/session' import EventEmitter from 'events' import {fileURLToPath} from 'node:url' -vi.mock('@shopify/cli-kit/node/fs', async (realImport) => { - const realModule = await realImport() +vi.mock('@shopify/cli-kit/shared/node/fs', async (realImport) => { + const realModule = await realImport() const mockModule = {removeFile: vi.fn(), writeFile: vi.fn()} return {...realModule, ...mockModule} }) vi.mock('./asset-ignore.js') -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/output') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/shared/node/output') vi.mock('./theme-environment/hot-reload/server.js') beforeEach(async () => { diff --git a/packages/theme/src/cli/utilities/theme-fs.ts b/packages/theme/src/cli/utilities/theme-fs.ts index 967856e61e0..61a89ca768b 100644 --- a/packages/theme/src/cli/utilities/theme-fs.ts +++ b/packages/theme/src/cli/utilities/theme-fs.ts @@ -5,13 +5,13 @@ import {createSyncingCatchError} from './errors.js' import {triggerBrowserFullReload} from './theme-environment/hot-reload/server.js' import {getListingFilePath, updateSettingsDataForListing} from './theme-listing.js' import {DEFAULT_IGNORE_PATTERNS, timestampDateFormat} from '../constants.js' -import {glob, readFile, ReadOptions, fileExists, mkdir, writeFile, removeFile} from '@shopify/cli-kit/node/fs' -import {joinPath, basename, relativePath} from '@shopify/cli-kit/node/path' -import {lookupMimeType, setMimeTypes} from '@shopify/cli-kit/node/mimes' -import {outputContent, outputDebug, outputInfo, outputToken, outputWarn} from '@shopify/cli-kit/node/output' -import {buildThemeAsset} from '@shopify/cli-kit/node/themes/factories' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {bulkUploadThemeAssets, deleteThemeAssets} from '@shopify/cli-kit/node/themes/api' +import {glob, readFile, ReadOptions, fileExists, mkdir, writeFile, removeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath, basename, relativePath} from '@shopify/cli-kit/shared/node/path' +import {lookupMimeType, setMimeTypes} from '@shopify/cli-kit/shared/node/mimes' +import {outputContent, outputDebug, outputInfo, outputToken, outputWarn} from '@shopify/cli-kit/shared/node/output' +import {buildThemeAsset} from '@shopify/cli-kit/themes/factories' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {bulkUploadThemeAssets, deleteThemeAssets} from '@shopify/cli-kit/themes/api' import EventEmitter from 'node:events' import {fileURLToPath} from 'node:url' import type { @@ -21,7 +21,7 @@ import type { ThemeAsset, ThemeFSEventName, ThemeFSEventPayload, -} from '@shopify/cli-kit/node/themes/types' +} from '@shopify/cli-kit/themes/types' const THEME_DIRECTORY_PATTERNS = [ 'assets/**/*.*', diff --git a/packages/theme/src/cli/utilities/theme-fs/theme-fs-mock-factory.ts b/packages/theme/src/cli/utilities/theme-fs/theme-fs-mock-factory.ts index e870c8d190c..c3fe8ba328c 100644 --- a/packages/theme/src/cli/utilities/theme-fs/theme-fs-mock-factory.ts +++ b/packages/theme/src/cli/utilities/theme-fs/theme-fs-mock-factory.ts @@ -1,5 +1,5 @@ import {applyIgnoreFilters} from '../asset-ignore.js' -import type {ThemeAsset, ThemeFileSystem, ThemeFileSystemOptions} from '@shopify/cli-kit/node/themes/types' +import type {ThemeAsset, ThemeFileSystem, ThemeFileSystemOptions} from '@shopify/cli-kit/themes/types' export function fakeThemeFileSystem( root: string, diff --git a/packages/theme/src/cli/utilities/theme-listing.test.ts b/packages/theme/src/cli/utilities/theme-listing.test.ts index c19b7d94d71..260dbf58a55 100644 --- a/packages/theme/src/cli/utilities/theme-listing.test.ts +++ b/packages/theme/src/cli/utilities/theme-listing.test.ts @@ -1,7 +1,7 @@ import {getListingFilePath, updateSettingsDataForListing, ensureListingExists} from './theme-listing.js' import {test, describe, expect} from 'vitest' -import {inTemporaryDirectory, mkdir, writeFile} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' +import {inTemporaryDirectory, mkdir, writeFile} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' describe('theme-listing', () => { describe('getListingFilePath', () => { diff --git a/packages/theme/src/cli/utilities/theme-listing.ts b/packages/theme/src/cli/utilities/theme-listing.ts index 72da5ce2951..d063cf45d38 100644 --- a/packages/theme/src/cli/utilities/theme-listing.ts +++ b/packages/theme/src/cli/utilities/theme-listing.ts @@ -1,7 +1,7 @@ -import {fileExists, readFile, glob} from '@shopify/cli-kit/node/fs' -import {joinPath} from '@shopify/cli-kit/node/path' -import {capitalizeWords} from '@shopify/cli-kit/common/string' -import {AbortError} from '@shopify/cli-kit/node/error' +import {fileExists, readFile, glob} from '@shopify/cli-kit/shared/node/fs' +import {joinPath} from '@shopify/cli-kit/shared/node/path' +import {capitalizeWords} from '@shopify/cli-kit/shared/common/string' +import {AbortError} from '@shopify/cli-kit/shared/node/error' import {parseJSON} from '@shopify/theme-check-node' function isListingFile(fileKey: string): boolean { diff --git a/packages/theme/src/cli/utilities/theme-selector.test.ts b/packages/theme/src/cli/utilities/theme-selector.test.ts index 4acb517e603..8315d3f1a14 100644 --- a/packages/theme/src/cli/utilities/theme-selector.test.ts +++ b/packages/theme/src/cli/utilities/theme-selector.test.ts @@ -2,16 +2,16 @@ import {fetchStoreThemes} from './theme-selector/fetch.js' import {findOrSelectTheme, findThemeById, findThemes, newThemeOption} from './theme-selector.js' import {getDevelopmentTheme} from '../services/local-storage.js' import {test, describe, vi, expect} from 'vitest' -import {renderAutocompletePrompt} from '@shopify/cli-kit/node/ui' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {promptThemeName} from '@shopify/cli-kit/node/themes/utils' -import {themeCreate} from '@shopify/cli-kit/node/themes/api' +import {renderAutocompletePrompt} from '@shopify/cli-kit/shared/node/ui' +import {Theme} from '@shopify/cli-kit/themes/types' +import {promptThemeName} from '@shopify/cli-kit/themes/utils' +import {themeCreate} from '@shopify/cli-kit/themes/api' vi.mock('./theme-selector/fetch.js') vi.mock('../services/local-storage.js') -vi.mock('@shopify/cli-kit/node/ui') -vi.mock('@shopify/cli-kit/node/themes/utils') -vi.mock('@shopify/cli-kit/node/themes/api') +vi.mock('@shopify/cli-kit/shared/node/ui') +vi.mock('@shopify/cli-kit/themes/utils') +vi.mock('@shopify/cli-kit/themes/api') const session = { token: 'token', diff --git a/packages/theme/src/cli/utilities/theme-selector.ts b/packages/theme/src/cli/utilities/theme-selector.ts index feefa366110..74221fb2db2 100644 --- a/packages/theme/src/cli/utilities/theme-selector.ts +++ b/packages/theme/src/cli/utilities/theme-selector.ts @@ -1,13 +1,13 @@ import {fetchStoreThemes} from './theme-selector/fetch.js' import {Filter, FilterProps, filterThemes} from './theme-selector/filter.js' import {getDevelopmentTheme} from '../services/local-storage.js' -import {renderAutocompletePrompt} from '@shopify/cli-kit/node/ui' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {capitalize} from '@shopify/cli-kit/common/string' -import {themeCreate} from '@shopify/cli-kit/node/themes/api' -import {promptThemeName, UNPUBLISHED_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {AbortError} from '@shopify/cli-kit/node/error' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {renderAutocompletePrompt} from '@shopify/cli-kit/shared/node/ui' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {capitalize} from '@shopify/cli-kit/shared/common/string' +import {themeCreate} from '@shopify/cli-kit/themes/api' +import {promptThemeName, UNPUBLISHED_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {Theme} from '@shopify/cli-kit/themes/types' /** * Options to find or select a theme. diff --git a/packages/theme/src/cli/utilities/theme-selector/fetch.test.ts b/packages/theme/src/cli/utilities/theme-selector/fetch.test.ts index 30c3b5a831b..fdd4990b1fc 100644 --- a/packages/theme/src/cli/utilities/theme-selector/fetch.test.ts +++ b/packages/theme/src/cli/utilities/theme-selector/fetch.test.ts @@ -1,14 +1,14 @@ import {fetchStoreThemes, publicFetchStoreThemes} from './fetch.js' -import {fetchThemes} from '@shopify/cli-kit/node/themes/api' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {fetchThemes} from '@shopify/cli-kit/themes/api' +import {Theme} from '@shopify/cli-kit/themes/types' import {test, vi, describe, expect} from 'vitest' -import {AbortError} from '@shopify/cli-kit/node/error' -import {ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' const session = {token: 'token', storeFqdn: 'my-shop.myshopify.com'} -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/session') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/identity/session') // This function serves as a wrapper around fetchStoreThemes // which allows library users to pass a password to authenticate with the Theme API. diff --git a/packages/theme/src/cli/utilities/theme-selector/fetch.ts b/packages/theme/src/cli/utilities/theme-selector/fetch.ts index 0ec4dbee22d..add3abe8318 100644 --- a/packages/theme/src/cli/utilities/theme-selector/fetch.ts +++ b/packages/theme/src/cli/utilities/theme-selector/fetch.ts @@ -1,7 +1,7 @@ -import {fetchThemes} from '@shopify/cli-kit/node/themes/api' -import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' -import {AbortError} from '@shopify/cli-kit/node/error' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {fetchThemes} from '@shopify/cli-kit/themes/api' +import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/identity/session' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {Theme} from '@shopify/cli-kit/themes/types' export type Role = 'live' | 'development' | 'unpublished' export const ALLOWED_ROLES: Role[] = ['live', 'unpublished', 'development'] diff --git a/packages/theme/src/cli/utilities/theme-selector/filter.test.ts b/packages/theme/src/cli/utilities/theme-selector/filter.test.ts index 80c6dbff769..20065237d7b 100644 --- a/packages/theme/src/cli/utilities/theme-selector/filter.test.ts +++ b/packages/theme/src/cli/utilities/theme-selector/filter.test.ts @@ -1,5 +1,5 @@ import {Filter, filterThemes} from './filter.js' -import {Theme} from '@shopify/cli-kit/node/themes/types' +import {Theme} from '@shopify/cli-kit/themes/types' import {test, describe, expect} from 'vitest' const store = 'my-shop.myshopify.com' diff --git a/packages/theme/src/cli/utilities/theme-selector/filter.ts b/packages/theme/src/cli/utilities/theme-selector/filter.ts index 7300f610977..4e3e9161aa7 100644 --- a/packages/theme/src/cli/utilities/theme-selector/filter.ts +++ b/packages/theme/src/cli/utilities/theme-selector/filter.ts @@ -1,6 +1,6 @@ import {ALLOWED_ROLES} from './fetch.js' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {AbortError} from '@shopify/cli-kit/node/error' +import {Theme} from '@shopify/cli-kit/themes/types' +import {AbortError} from '@shopify/cli-kit/shared/node/error' export function filterThemes(store: string, themes: Theme[], filter: Filter): Theme[] { return filterByRole(store, themes, filter) || filterByTheme(store, themes, filter) diff --git a/packages/theme/src/cli/utilities/theme-store.ts b/packages/theme/src/cli/utilities/theme-store.ts index b3cbc905bdd..69c3216db40 100644 --- a/packages/theme/src/cli/utilities/theme-store.ts +++ b/packages/theme/src/cli/utilities/theme-store.ts @@ -1,8 +1,8 @@ import {themeFlags} from '../flags.js' import {getThemeStore, setThemeStore} from '../services/local-storage.js' -import {recordError} from '@shopify/cli-kit/node/analytics' -import {AbortError} from '@shopify/cli-kit/node/error' -import {outputContent, outputToken} from '@shopify/cli-kit/node/output' +import {recordError} from '@shopify/cli-kit/shared/node/analytics' +import {AbortError} from '@shopify/cli-kit/shared/node/error' +import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' export function ensureThemeStore(flags: {store: string | undefined}): string { const store = flags.store ?? getThemeStore() diff --git a/packages/theme/src/cli/utilities/theme-ui.test.ts b/packages/theme/src/cli/utilities/theme-ui.test.ts index 9797540c8c3..d2f703b5613 100644 --- a/packages/theme/src/cli/utilities/theme-ui.test.ts +++ b/packages/theme/src/cli/utilities/theme-ui.test.ts @@ -1,11 +1,11 @@ import {themeComponent, themesComponent, ensureDirectoryConfirmed, ensureLiveThemeConfirmed} from './theme-ui.js' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {renderConfirmationPrompt, renderError, renderWarning} from '@shopify/cli-kit/node/ui' +import {Theme} from '@shopify/cli-kit/themes/types' +import {renderConfirmationPrompt, renderError, renderWarning} from '@shopify/cli-kit/shared/node/ui' import {test, describe, expect, vi, beforeEach} from 'vitest' -import {DEVELOPMENT_THEME_ROLE, LIVE_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {buildTheme} from '@shopify/cli-kit/node/themes/factories' +import {DEVELOPMENT_THEME_ROLE, LIVE_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {buildTheme} from '@shopify/cli-kit/themes/factories' -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/shared/node/ui') describe('themeComponent', () => { test('returns the ui for a theme', async () => { diff --git a/packages/theme/src/cli/utilities/theme-ui.ts b/packages/theme/src/cli/utilities/theme-ui.ts index 3782a550327..fed8792f2ab 100644 --- a/packages/theme/src/cli/utilities/theme-ui.ts +++ b/packages/theme/src/cli/utilities/theme-ui.ts @@ -1,7 +1,7 @@ -import {recordEvent} from '@shopify/cli-kit/node/analytics' -import {Theme} from '@shopify/cli-kit/node/themes/types' -import {LIVE_THEME_ROLE} from '@shopify/cli-kit/node/themes/utils' -import {Task, renderConfirmationPrompt, renderError, renderTasks, renderWarning} from '@shopify/cli-kit/node/ui' +import {recordEvent} from '@shopify/cli-kit/shared/node/analytics' +import {Theme} from '@shopify/cli-kit/themes/types' +import {LIVE_THEME_ROLE} from '@shopify/cli-kit/themes/utils' +import {Task, renderConfirmationPrompt, renderError, renderTasks, renderWarning} from '@shopify/cli-kit/shared/node/ui' import {Writable} from 'stream' export function themeComponent(theme: Theme) { diff --git a/packages/theme/src/cli/utilities/theme-uploader.test.ts b/packages/theme/src/cli/utilities/theme-uploader.test.ts index 5b5b3fae062..8a13d4d5b4e 100644 --- a/packages/theme/src/cli/utilities/theme-uploader.test.ts +++ b/packages/theme/src/cli/utilities/theme-uploader.test.ts @@ -8,13 +8,13 @@ import { } from './theme-uploader.js' import {fakeThemeFileSystem} from './theme-fs/theme-fs-mock-factory.js' import {renderTasksToStdErr} from './theme-ui.js' -import {bulkUploadThemeAssets, deleteThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {Result, Checksum, Key, ThemeAsset, Operation} from '@shopify/cli-kit/node/themes/types' +import {bulkUploadThemeAssets, deleteThemeAssets} from '@shopify/cli-kit/themes/api' +import {Result, Checksum, Key, ThemeAsset, Operation} from '@shopify/cli-kit/themes/types' import {beforeEach, describe, expect, test, vi} from 'vitest' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession} from '@shopify/cli-kit/identity/session' -vi.mock('@shopify/cli-kit/node/themes/api') -vi.mock('@shopify/cli-kit/node/ui') +vi.mock('@shopify/cli-kit/themes/api') +vi.mock('@shopify/cli-kit/shared/node/ui') vi.mock('./theme-ui.js') beforeEach(() => { diff --git a/packages/theme/src/cli/utilities/theme-uploader.ts b/packages/theme/src/cli/utilities/theme-uploader.ts index aa860ef5c3e..2412b7ed750 100644 --- a/packages/theme/src/cli/utilities/theme-uploader.ts +++ b/packages/theme/src/cli/utilities/theme-uploader.ts @@ -3,12 +3,12 @@ import {rejectGeneratedStaticAssets} from './asset-checksum.js' import {createSyncingCatchError, renderThrownError} from './errors.js' import {triggerBrowserFullReload} from './theme-environment/hot-reload/server.js' import {renderTasksToStdErr} from './theme-ui.js' -import {AdminSession} from '@shopify/cli-kit/node/session' -import {Result, Checksum, Theme, ThemeFileSystem} from '@shopify/cli-kit/node/themes/types' -import {AssetParams, bulkUploadThemeAssets, deleteThemeAssets} from '@shopify/cli-kit/node/themes/api' -import {Task} from '@shopify/cli-kit/node/ui' -import {outputDebug} from '@shopify/cli-kit/node/output' -import {recordEvent} from '@shopify/cli-kit/node/analytics' +import {AdminSession} from '@shopify/cli-kit/identity/session' +import {Result, Checksum, Theme, ThemeFileSystem} from '@shopify/cli-kit/themes/types' +import {AssetParams, bulkUploadThemeAssets, deleteThemeAssets} from '@shopify/cli-kit/themes/api' +import {Task} from '@shopify/cli-kit/shared/node/ui' +import {outputDebug} from '@shopify/cli-kit/shared/node/output' +import {recordEvent} from '@shopify/cli-kit/shared/node/analytics' import {Writable} from 'stream' interface UploadOptions { From 4913c5ecb765131087f6b250585bd1e2b82ac89a Mon Sep 17 00:00:00 2001 From: Ryan Bahan Date: Thu, 12 Feb 2026 10:01:21 -0700 Subject: [PATCH 2/8] ensure bundling and backwards compat works --- .../cli-kit/bin/documentation/examples.ts | 14 +- .../cli-kit/bin/refresh-code-documentation.ts | 2 +- packages/cli-kit/package.json | 14 +- packages/cli-kit/project.json | 2 +- packages/cli-kit/scripts/generate-compat.mjs | 160 + packages/cli/bin/bundle.js | 2 +- packages/cli/oclif.manifest.json | 10777 ++++++++-------- packages/eslint-plugin-cli/config.js | 10 +- 8 files changed, 5418 insertions(+), 5563 deletions(-) create mode 100644 packages/cli-kit/scripts/generate-compat.mjs diff --git a/packages/cli-kit/bin/documentation/examples.ts b/packages/cli-kit/bin/documentation/examples.ts index 3c70e51b9ce..22cbc94e023 100644 --- a/packages/cli-kit/bin/documentation/examples.ts +++ b/packages/cli-kit/bin/documentation/examples.ts @@ -15,14 +15,14 @@ import { renderSingleTask, renderTextPrompt, renderWarning, -} from '../../src/public/node/ui.js' -import {outputContent, unstyled} from '../../src/public/node/output.js' -import {AbortError, BugError} from '../../src/public/node/error.js' -import {AbortSignal} from '../../src/public/node/abort.js' -import {Stdout} from '../../src/private/node/ui.js' -import {Stdin, waitFor} from '../../src/private/node/testing/ui.js' +} from '../../src/shared/node/ui.js' +import {outputContent, unstyled} from '../../src/shared/node/output.js' +import {AbortError, BugError} from '../../src/shared/node/error.js' +import {AbortSignal} from '../../src/shared/node/abort.js' +import {Stdout} from '../../src/shared/ui/ui.js' +import {Stdin, waitFor} from '../../src/shared/ui/testing.js' import {Writable} from 'node:stream' -import { sleep } from '../../src/public/node/system.js' +import { sleep } from '../../src/shared/node/system.js' interface Example { type: 'static' | 'async' | 'prompt' diff --git a/packages/cli-kit/bin/refresh-code-documentation.ts b/packages/cli-kit/bin/refresh-code-documentation.ts index 02693e11cc9..bc61aa94563 100644 --- a/packages/cli-kit/bin/refresh-code-documentation.ts +++ b/packages/cli-kit/bin/refresh-code-documentation.ts @@ -1,5 +1,5 @@ import {examples} from './documentation/examples.js' -import {unstyled} from '../src/public/node/output.js' +import {unstyled} from '../src/shared/node/output.js' import {FunctionDeclaration, JSDocTag, Project} from 'ts-morph' import difference from 'lodash/difference.js' diff --git a/packages/cli-kit/package.json b/packages/cli-kit/package.json index e77a9ed93fb..d9bec857175 100644 --- a/packages/cli-kit/package.json +++ b/packages/cli-kit/package.json @@ -64,7 +64,19 @@ "node": "./dist/shared/*.js", "types": "./dist/shared/*.d.ts" }, - "./assets/*": "./assets/*" + "./assets/*": "./assets/*", + "./node/*": { + "node": "./dist/compat/node/*.js", + "types": "./dist/compat/node/*.d.ts" + }, + "./common/*": { + "node": "./dist/compat/common/*.js", + "types": "./dist/compat/common/*.d.ts" + }, + "./testing/*": { + "node": "./dist/compat/testing/*.js", + "types": "./dist/compat/testing/*.d.ts" + } }, "module": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/cli-kit/project.json b/packages/cli-kit/project.json index 633559a95ce..8359fb20359 100644 --- a/packages/cli-kit/project.json +++ b/packages/cli-kit/project.json @@ -23,7 +23,7 @@ "{projectRoot}/src/**/*" ], "options": { - "command": "pnpm tsc -b ./tsconfig.build.json", + "command": "pnpm tsc -b ./tsconfig.build.json && node scripts/generate-compat.mjs", "cwd": "packages/cli-kit" } }, diff --git a/packages/cli-kit/scripts/generate-compat.mjs b/packages/cli-kit/scripts/generate-compat.mjs new file mode 100644 index 00000000000..b8e55f57ae3 --- /dev/null +++ b/packages/cli-kit/scripts/generate-compat.mjs @@ -0,0 +1,160 @@ +/** + * Generates backward-compatible re-export files at old import paths. + * These allow external consumers (e.g. @shopify/cli-hydrogen) to keep + * using @shopify/cli-kit/node/* paths while we migrate to the new structure. + * + * Run this after building to populate dist/compat/. + */ + +import {mkdirSync, writeFileSync, readFileSync, existsSync} from 'fs' +import {dirname, join} from 'path' + +const DIST = 'dist' +const COMPAT = join(DIST, 'compat') + +const mapping = { + // Identity + 'node/session': 'identity/session', + 'node/session-prompt': 'identity/session-prompt', + // Admin + 'node/api/admin': 'admin/api', + 'node/api/rest-api-throttler': 'admin/rest-api-throttler', + // Partners + 'node/api/partners': 'partners/api', + // App Management + 'node/api/app-management': 'app-management/api', + // App Dev + 'node/api/app-dev': 'app-dev/api', + // Business Platform + 'node/api/business-platform': 'business-platform/api', + // Functions + 'node/api/functions': 'functions/api', + // Webhooks + 'node/api/webhooks': 'webhooks/api', + // Themes + 'node/themes/api': 'themes/api', + 'node/themes/conf': 'themes/conf', + 'node/themes/factories': 'themes/factories', + 'node/themes/theme-manager': 'themes/theme-manager', + 'node/themes/types': 'themes/types', + 'node/themes/urls': 'themes/urls', + 'node/themes/utils': 'themes/utils', + // Shared node + 'node/abort': 'shared/node/abort', + 'node/analytics': 'shared/node/analytics', + 'node/api/graphql': 'shared/node/api/graphql', + 'node/api/utilities': 'shared/node/api/utilities', + 'node/archiver': 'shared/node/archiver', + 'node/base-command': 'shared/node/base-command', + 'node/cli': 'shared/node/cli', + 'node/cli-launcher': 'shared/node/cli-launcher', + 'node/colors': 'shared/node/colors', + 'node/context/fqdn': 'shared/node/context/fqdn', + 'node/context/local': 'shared/node/context/local', + 'node/context/utilities': 'shared/node/context/utilities', + 'node/crypto': 'shared/node/crypto', + 'node/custom-oclif-loader': 'shared/node/custom-oclif-loader', + 'node/dot-env': 'shared/node/dot-env', + 'node/environment': 'shared/node/environment', + 'node/environments': 'shared/node/environments', + 'node/error': 'shared/node/error', + 'node/error-handler': 'shared/node/error-handler', + 'node/figures': 'shared/node/figures', + 'node/framework': 'shared/node/framework', + 'node/fs': 'shared/node/fs', + 'node/git': 'shared/node/git', + 'node/github': 'shared/node/github', + 'node/global-context': 'shared/node/global-context', + 'node/hidden-folder': 'shared/node/hidden-folder', + 'node/hooks/deprecations': 'shared/node/hooks/deprecations', + 'node/hooks/postrun': 'shared/node/hooks/postrun', + 'node/hooks/prerun': 'shared/node/hooks/prerun', + 'node/hrtime': 'shared/node/hrtime', + 'node/http': 'shared/node/http', + 'node/import-extractor': 'shared/node/import-extractor', + 'node/ink': 'shared/node/ink', + 'node/is-global': 'shared/node/is-global', + 'node/json-schema': 'shared/node/json-schema', + 'node/liquid': 'shared/node/liquid', + 'node/local-storage': 'shared/node/local-storage', + 'node/logs': 'shared/node/logs', + 'node/metadata': 'shared/node/metadata', + 'node/mimes': 'shared/node/mimes', + 'node/monorail': 'shared/node/monorail', + 'node/multiple-installation-warning': 'shared/node/multiple-installation-warning', + 'node/node-package-manager': 'shared/node/node-package-manager', + 'node/notifications-system': 'shared/node/notifications-system', + 'node/os': 'shared/node/os', + 'node/output': 'shared/node/output', + 'node/path': 'shared/node/path', + 'node/plugins': 'shared/node/plugins', + 'node/plugins/tunnel': 'shared/node/plugins/tunnel', + 'node/promises': 'shared/node/promises', + 'node/result': 'shared/node/result', + 'node/schema': 'shared/node/schema', + 'node/serial-batch-processor': 'shared/node/serial-batch-processor', + 'node/system': 'shared/node/system', + 'node/tcp': 'shared/node/tcp', + 'node/testing/output': 'shared/node/testing/output', + 'node/testing/test-with-temp-dir': 'shared/node/testing/test-with-temp-dir', + 'node/testing/ui': 'shared/node/testing/ui', + 'node/toml': 'shared/node/toml', + 'node/tree-kill': 'shared/node/tree-kill', + 'node/ui': 'shared/node/ui', + 'node/ui/components': 'shared/node/ui/components', + 'node/ui/hooks': 'shared/node/ui/hooks', + 'node/upgrade': 'shared/node/upgrade', + 'node/version': 'shared/node/version', + 'node/vscode': 'shared/node/vscode', + 'node/doctor/framework': 'shared/node/doctor/framework', + 'node/doctor/reporter': 'shared/node/doctor/reporter', + 'node/doctor/types': 'shared/node/doctor/types', + // Shared common + 'common/array': 'shared/common/array', + 'common/collection': 'shared/common/collection', + 'common/function': 'shared/common/function', + 'common/json': 'shared/common/json', + 'common/lang': 'shared/common/lang', + 'common/object': 'shared/common/object', + 'common/retry': 'shared/common/retry', + 'common/string': 'shared/common/string', + 'common/url': 'shared/common/url', + 'common/version': 'shared/common/version', + 'common/ts/deep-required': 'shared/common/ts/deep-required', + 'common/ts/json-narrowing': 'shared/common/ts/json-narrowing', + 'common/ts/pick-by-prefix': 'shared/common/ts/pick-by-prefix', +} + +let count = 0 +for (const [oldPath, newPath] of Object.entries(mapping)) { + const compatFile = join(COMPAT, `${oldPath}.js`) + const compatDir = dirname(compatFile) + + // Compute relative path from compat location to actual dist location + const depth = oldPath.split('/').length + const prefix = '../'.repeat(depth) + const target = `${prefix}${newPath}.js` + + // Check if the target module has a default export + const targetFile = join(DIST, `${newPath}.js`) + let hasDefault = false + if (existsSync(targetFile)) { + const content = readFileSync(targetFile, 'utf8') + hasDefault = /export\s*\{[^}]*\bdefault\b|export\s+default\b/.test(content) + } + + mkdirSync(compatDir, {recursive: true}) + let jsContent = `export * from '${target}';\n` + let dtsContent = `export * from '${target.replace('.js', '')}';\n` + if (hasDefault) { + jsContent += `export { default } from '${target}';\n` + dtsContent += `export { default } from '${target.replace('.js', '')}';\n` + } + + writeFileSync(compatFile, jsContent) + writeFileSync(join(COMPAT, `${oldPath}.d.ts`), dtsContent) + + count++ +} + +console.log(`Generated ${count} compat re-export files in dist/compat/`) diff --git a/packages/cli/bin/bundle.js b/packages/cli/bin/bundle.js index 78de3e4ace5..09c0688dcdb 100644 --- a/packages/cli/bin/bundle.js +++ b/packages/cli/bin/bundle.js @@ -6,7 +6,7 @@ import CliKitDedupPlugin from '../../../bin/bundling/esbuild-plugin-dedup-cli-ki import {build as esBuild} from 'esbuild' import {copy} from 'esbuild-plugin-copy' import glob from 'fast-glob' -import {joinPath, dirname} from '@shopify/cli-kit/node/path' +import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' import {createRequire} from 'module' const require = createRequire(import.meta.url) diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index 105fd1e3678..05e095ee5ee 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -1,55 +1,58 @@ { "commands": { "app:build": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "aliases": [], + "args": {}, "description": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to \"App configuration\" (https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a \"theme app extension\" (https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", - "descriptionWithMarkdown": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a [theme app extension](https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -57,93 +60,82 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, "skip-dependencies-installation": { - "allowNo": false, "description": "Skips the installation of dependencies. Deprecated, use workspaces instead.", "env": "SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION", "hidden": false, "name": "skip-dependencies-installation", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "app:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Build the app, including extensions." + "summary": "Build the app, including extensions.", + "descriptionWithMarkdown": "This command executes the build script specified in the element's TOML file. You can specify a custom script in the file. To learn about configuration files in Shopify apps, refer to [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration).\n\n If you're building a [theme app extension](https://shopify.dev/docs/apps/online-store/theme-app-extensions), then running the `build` command runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) against your extension to ensure that it's valid.", + "customPluginName": "@shopify/app" }, "app:bulk:cancel": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "aliases": [], + "args": {}, "description": "Cancels a running bulk operation by ID.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "id": { - "description": "The bulk operation ID to cancel (numeric ID or full GID).", - "env": "SHOPIFY_FLAG_ID", "hasDynamicHelp": false, "multiple": false, - "name": "id", - "required": true, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -151,115 +143,91 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, + "id": { + "description": "The bulk operation ID to cancel (numeric ID or full GID).", + "env": "SHOPIFY_FLAG_ID", + "name": "id", + "required": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, "store": { "char": "s", "description": "The store domain. Must be an existing dev store.", "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], + "hiddenAliases": [], "id": "app:bulk:cancel", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Cancel a bulk operation." + "summary": "Cancel a bulk operation.", + "customPluginName": "@shopify/app" }, - "app:bulk:execute": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk status`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", - "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk status`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", + "app:bulk:status": { + "aliases": [], + "args": {}, + "description": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "output-file": { - "dependsOn": [ - "watch" - ], - "description": "The file path where results should be written if --watch is specified. If not specified, results will be written to STDOUT.", - "env": "SHOPIFY_FLAG_OUTPUT_FILE", - "hasDynamicHelp": false, - "multiple": false, - "name": "output-file", - "type": "option" + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "query": { - "char": "q", - "description": "The GraphQL query or mutation to run as a bulk operation.", - "env": "SHOPIFY_FLAG_QUERY", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "query", - "required": false, "type": "option" }, - "query-file": { - "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", - "env": "SHOPIFY_FLAG_QUERY_FILE", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "query-file", "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -267,132 +235,91 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, + "id": { + "description": "The bulk operation ID (numeric ID or full GID). If not provided, lists all bulk operations belonging to this app on this store in the last 7 days.", + "env": "SHOPIFY_FLAG_ID", + "name": "id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, "store": { "char": "s", "description": "The store domain. Must be an existing dev store.", "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, "name": "store", - "type": "option" - }, - "variable-file": { - "description": "Path to a file containing GraphQL variables in JSONL format (one JSON object per line). Can't be used with --variables.", - "env": "SHOPIFY_FLAG_VARIABLE_FILE", - "exclusive": [ - "variables" - ], "hasDynamicHelp": false, "multiple": false, - "name": "variable-file", "type": "option" - }, - "variables": { - "char": "v", - "description": "The values for any GraphQL variables in your mutation, in JSON format. Can be specified multiple times.", - "env": "SHOPIFY_FLAG_VARIABLES", - "exclusive": [ - "variable-file" - ], - "hasDynamicHelp": false, - "multiple": true, - "name": "variables", - "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" - }, - "version": { - "description": "The API version to use for the bulk operation. If not specified, uses the latest stable version.", - "env": "SHOPIFY_FLAG_VERSION", - "hasDynamicHelp": false, - "multiple": false, - "name": "version", - "type": "option" - }, - "watch": { - "allowNo": false, - "description": "Wait for bulk operation results before exiting. Defaults to false.", - "env": "SHOPIFY_FLAG_WATCH", - "name": "watch", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:bulk:execute", + "hiddenAliases": [], + "id": "app:bulk:status", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Execute bulk operations." - }, - "app:bulk:status": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", + "summary": "Check the status of bulk operations.", "descriptionWithMarkdown": "Check the status of a specific bulk operation by ID, or list all bulk operations belonging to this app on this store in the last 7 days.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) to start a new bulk operation.", + "customPluginName": "@shopify/app" + }, + "app:deploy": { + "aliases": [], + "args": {}, + "description": "\"Builds the app\" (https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your \"web app\" (https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to \"deploy your web app\" (https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "id": { - "description": "The bulk operation ID (numeric ID or full GID). If not provided, lists all bulk operations belonging to this app on this store in the last 7 days.", - "env": "SHOPIFY_FLAG_ID", "hasDynamicHelp": false, "multiple": false, - "name": "id", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -400,86 +327,145 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "store": { - "char": "s", - "description": "The store domain. Must be an existing dev store.", - "env": "SHOPIFY_FLAG_STORE", + "force": { + "char": "f", + "description": "Deploy without asking for confirmation. Equivalent to --allow-updates --allow-deletes. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": false, + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "allow-updates": { + "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", + "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "hidden": false, + "name": "allow-updates", + "allowNo": false, + "type": "boolean" + }, + "allow-deletes": { + "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "hidden": false, + "name": "allow-deletes", + "allowNo": false, + "type": "boolean" + }, + "no-release": { + "description": "Creates a version but doesn't release it - it's not made available to merchants. With this flag, a user confirmation is not required.", + "env": "SHOPIFY_FLAG_NO_RELEASE", + "exclusive": [ + "allow-updates", + "allow-deletes" + ], + "hidden": false, + "name": "no-release", + "allowNo": false, + "type": "boolean" + }, + "no-build": { + "description": "Use with caution: Skips building any elements of the app that require building. You should ensure your app has been prepared in advance, such as by running `shopify app build` or by caching build artifacts.", + "env": "SHOPIFY_FLAG_NO_BUILD", + "name": "no-build", + "allowNo": false, + "type": "boolean" + }, + "message": { + "description": "Optional message that will be associated with this version. This is for internal use only and won't be available externally.", + "env": "SHOPIFY_FLAG_MESSAGE", + "hidden": false, + "name": "message", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "version": { + "description": "Optional version tag that will be associated with this app version. If not provided, an auto-generated identifier will be generated for this app version.", + "env": "SHOPIFY_FLAG_VERSION", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "version", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "source-control-url": { + "description": "URL associated with the new app version.", + "env": "SHOPIFY_FLAG_SOURCE_CONTROL_URL", + "hidden": false, + "name": "source-control-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:bulk:status", + "hiddenAliases": [], + "id": "app:deploy", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Check the status of bulk operations." + "summary": "Deploy your Shopify app.", + "descriptionWithMarkdown": "[Builds the app](https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your [web app](https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to [deploy your web app](https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", + "customPluginName": "@shopify/app" }, - "app:config:link": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the \"App configuration\" (https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", - "descriptionWithMarkdown": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", + "app:dev": { + "aliases": [], + "args": {}, + "description": "Builds and previews your app on a dev store, and watches for changes. \"Read more about testing apps locally\" (https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -487,77 +473,185 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:config:link", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Fetch your app configuration from the Developer Dashboard." - }, - "app:config:pull": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", - "descriptionWithMarkdown": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", - "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", + }, + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "skip-dependencies-installation": { + "description": "Skips the installation of dependencies. Deprecated, use workspaces instead.", + "env": "SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION", + "name": "skip-dependencies-installation", + "allowNo": false, + "type": "boolean" + }, + "no-update": { + "description": "Uses the app URL from the toml file instead an autogenerated URL for dev.", + "env": "SHOPIFY_FLAG_NO_UPDATE", + "name": "no-update", + "allowNo": false, + "type": "boolean" + }, + "subscription-product-url": { + "description": "Resource URL for subscription UI extension. Format: \"/products/{productId}\"", + "env": "SHOPIFY_FLAG_SUBSCRIPTION_PRODUCT_URL", + "name": "subscription-product-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "checkout-cart-url": { + "description": "Resource URL for checkout UI extension. Format: \"/cart/{productVariantID}:{productQuantity}\"", + "env": "SHOPIFY_FLAG_CHECKOUT_CART_URL", + "name": "checkout-cart-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "tunnel-url": { + "description": "Use a custom tunnel, it must be running before executing dev. Format: \"https://my-tunnel-url:port\".", + "env": "SHOPIFY_FLAG_TUNNEL_URL", "exclusive": [ - "config" + "tunnel" ], + "name": "tunnel-url", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "use-localhost": { + "description": "Service entry point will listen to localhost. A tunnel won't be used. Will work for testing many app features, but not those that directly invoke your app (E.g: Webhooks)", + "env": "SHOPIFY_FLAG_USE_LOCALHOST", + "exclusive": [ + "tunnel-url" + ], + "name": "use-localhost", + "allowNo": false, + "type": "boolean" + }, + "localhost-port": { + "description": "Port to use for localhost.", + "env": "SHOPIFY_FLAG_LOCALHOST_PORT", + "name": "localhost-port", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the theme app extension host theme.", + "env": "SHOPIFY_FLAG_THEME", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "theme-app-extension-port": { + "description": "Local port of the theme app extension development server.", + "env": "SHOPIFY_FLAG_THEME_APP_EXTENSION_PORT", + "name": "theme-app-extension-port", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "name": "notify", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "graphiql-port": { + "description": "Local port of the GraphiQL development server.", + "env": "SHOPIFY_FLAG_GRAPHIQL_PORT", + "hidden": true, + "name": "graphiql-port", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, + "graphiql-key": { + "description": "Key used to authenticate GraphiQL requests. Should be specified if exposing GraphiQL on a publicly accessible URL. By default, no key is required.", + "env": "SHOPIFY_FLAG_GRAPHIQL_KEY", + "hidden": true, + "name": "graphiql-key", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:dev", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Run the app.", + "descriptionWithMarkdown": "Builds and previews your app on a dev store, and watches for changes. [Read more about testing apps locally](https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", + "customPluginName": "@shopify/app" + }, + "app:dev:clean": { + "aliases": [], + "args": {}, + "description": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", + "flags": { "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -565,203 +659,197 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "store": { + "char": "s", + "description": "Store URL. Must be an existing development store.", + "env": "SHOPIFY_FLAG_STORE", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:config:pull", + "hiddenAliases": [], + "id": "app:dev:clean", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Refresh an already-linked app configuration without prompts." + "summary": "Cleans up the dev preview from the selected store.", + "descriptionWithMarkdown": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", + "customPluginName": "@shopify/app" }, - "app:config:use": { - "aliases": [ - ], - "args": { - "config": { - "description": "The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'.", - "name": "config" - } - }, - "customPluginName": "@shopify/app", - "description": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", - "descriptionWithMarkdown": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", + "app:logs": { + "aliases": [], + "args": {}, + "description": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", "exclusive": [ "config" ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "verbose", + "name": "json", + "allowNo": false, "type": "boolean" + }, + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "source": { + "description": "Filters output to the specified log source.", + "env": "SHOPIFY_FLAG_SOURCE", + "name": "source", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "status": { + "description": "Filters output to the specified status (success or failure).", + "env": "SHOPIFY_FLAG_STATUS", + "name": "status", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "success", + "failure" + ], + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:config:use", + "hiddenAliases": [], + "id": "app:logs", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Activate an app configuration.", - "usage": "app config use [config] [flags]" + "summary": "Stream detailed logs for your Shopify app.", + "descriptionWithMarkdown": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", + "customPluginName": "@shopify/app" }, - "app:deploy": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "\"Builds the app\" (https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your \"web app\" (https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to \"deploy your web app\" (https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", - "descriptionWithMarkdown": "[Builds the app](https://shopify.dev/docs/api/shopify-cli/app/app-build), then deploys your app configuration and extensions.\n\n This command creates an app version, which is a snapshot of your app configuration and all extensions. This version is then released to users.\n\n This command doesn't deploy your [web app](https://shopify.dev/docs/apps/tools/cli/structure#web-components). You need to [deploy your web app](https://shopify.dev/docs/apps/deployment/web) to your own hosting solution.\n ", + "app:logs:sources": { + "aliases": [], + "args": {}, + "description": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", "flags": { - "allow-deletes": { - "allowNo": false, - "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", - "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "name": "allow-deletes", + "name": "no-color", + "allowNo": false, "type": "boolean" }, - "allow-updates": { - "allowNo": false, - "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", - "env": "SHOPIFY_FLAG_ALLOW_UPDATES", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "allow-updates", + "name": "verbose", + "allowNo": false, "type": "boolean" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "force": { - "allowNo": false, - "char": "f", - "description": "Deploy without asking for confirmation. Equivalent to --allow-updates --allow-deletes. For CI/CD environments, the recommended flag is --allow-updates.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": false, - "name": "force", - "type": "boolean" - }, - "message": { - "description": "Optional message that will be associated with this version. This is for internal use only and won't be available externally.", - "env": "SHOPIFY_FLAG_MESSAGE", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "message", "type": "option" }, - "no-build": { - "allowNo": false, - "description": "Use with caution: Skips building any elements of the app that require building. You should ensure your app has been prepared in advance, such as by running `shopify app build` or by caching build artifacts.", - "env": "SHOPIFY_FLAG_NO_BUILD", - "name": "no-build", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "no-release": { - "allowNo": false, - "description": "Creates a version but doesn't release it - it's not made available to merchants. With this flag, a user confirmation is not required.", - "env": "SHOPIFY_FLAG_NO_RELEASE", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ - "allow-updates", - "allow-deletes" + "config" ], "hidden": false, - "name": "no-release", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -769,60 +857,59 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" - }, - "source-control-url": { - "description": "URL associated with the new app version.", - "env": "SHOPIFY_FLAG_SOURCE_CONTROL_URL", - "hasDynamicHelp": false, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:logs:sources", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Print out a list of sources that may be used with the logs command.", + "descriptionWithMarkdown": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", + "customPluginName": "@shopify/app" + }, + "app:import-custom-data-definitions": { + "aliases": [], + "args": {}, + "description": "Import metafield and metaobject definitions from your development store. \"Read more about declarative custom data definitions\" (https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "multiple": false, - "name": "source-control-url", - "type": "option" + "name": "no-color", + "allowNo": false, + "type": "boolean" }, "verbose": { - "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", + "allowNo": false, "type": "boolean" }, - "version": { - "description": "Optional version tag that will be associated with this app version. If not provided, an auto-generated identifier will be generated for this app version.", - "env": "SHOPIFY_FLAG_VERSION", + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "version", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:deploy", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Deploy your Shopify app." - }, - "app:dev": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Builds and previews your app on a dev store, and watches for changes. \"Read more about testing apps locally\" (https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", - "descriptionWithMarkdown": "Builds and previews your app on a dev store, and watches for changes. [Read more about testing apps locally](https://shopify.dev/docs/apps/build/cli-for-apps/test-apps-locally).", - "flags": { - "checkout-cart-url": { - "description": "Resource URL for checkout UI extension. Format: \"/cart/{productVariantID}:{productQuantity}\"", - "env": "SHOPIFY_FLAG_CHECKOUT_CART_URL", + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "checkout-cart-url", "type": "option" }, "client-id": { @@ -831,222 +918,177 @@ "exclusive": [ "config" ], - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "graphiql-key": { - "description": "Key used to authenticate GraphiQL requests. Should be specified if exposing GraphiQL on a publicly accessible URL. By default, no key is required.", - "env": "SHOPIFY_FLAG_GRAPHIQL_KEY", + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "allowNo": false, + "type": "boolean" + }, + "store": { + "char": "s", + "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, - "hidden": true, "multiple": false, - "name": "graphiql-key", "type": "option" }, - "graphiql-port": { - "description": "Local port of the GraphiQL development server.", - "env": "SHOPIFY_FLAG_GRAPHIQL_PORT", - "hasDynamicHelp": false, - "hidden": true, - "multiple": false, - "name": "graphiql-port", - "type": "option" - }, - "localhost-port": { - "description": "Port to use for localhost.", - "env": "SHOPIFY_FLAG_LOCALHOST_PORT", - "hasDynamicHelp": false, - "multiple": false, - "name": "localhost-port", - "type": "option" - }, - "no-color": { + "include-existing": { + "description": "Include existing declared definitions in the output.", + "env": "SHOPIFY_FLAG_INCLUDE_EXISTING", + "name": "include-existing", "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:import-custom-data-definitions", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Import metafield and metaobject definitions.", + "descriptionWithMarkdown": "Import metafield and metaobject definitions from your development store. [Read more about declarative custom data definitions](https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "customPluginName": "@shopify/app" + }, + "app:import-extensions": { + "aliases": [], + "args": {}, + "description": "Import dashboard-managed extensions into your app.", + "flags": { + "no-color": { "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "no-update": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "description": "Uses the app URL from the toml file instead an autogenerated URL for dev.", - "env": "SHOPIFY_FLAG_NO_UPDATE", - "name": "no-update", "type": "boolean" }, - "notify": { - "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", - "env": "SHOPIFY_FLAG_NOTIFY", - "hasDynamicHelp": false, - "multiple": false, - "name": "notify", - "type": "option" - }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, - "type": "option" - }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", - "type": "boolean" - }, - "skip-dependencies-installation": { - "allowNo": false, - "description": "Skips the installation of dependencies. Deprecated, use workspaces instead.", - "env": "SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION", - "name": "skip-dependencies-installation", - "type": "boolean" - }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "subscription-product-url": { - "description": "Resource URL for subscription UI extension. Format: \"/products/{productId}\"", - "env": "SHOPIFY_FLAG_SUBSCRIPTION_PRODUCT_URL", - "hasDynamicHelp": false, - "multiple": false, - "name": "subscription-product-url", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the theme app extension host theme.", - "env": "SHOPIFY_FLAG_THEME", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" }, - "theme-app-extension-port": { - "description": "Local port of the theme app extension development server.", - "env": "SHOPIFY_FLAG_THEME_APP_EXTENSION_PORT", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "theme-app-extension-port", "type": "option" }, - "tunnel-url": { - "description": "Use a custom tunnel, it must be running before executing dev. Format: \"https://my-tunnel-url:port\".", - "env": "SHOPIFY_FLAG_TUNNEL_URL", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ - "tunnel" + "config" ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "tunnel-url", "type": "option" }, - "use-localhost": { - "allowNo": false, - "description": "Service entry point will listen to localhost. A tunnel won't be used. Will work for testing many app features, but not those that directly invoke your app (E.g: Webhooks)", - "env": "SHOPIFY_FLAG_USE_LOCALHOST", + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", "exclusive": [ - "tunnel-url" + "config" ], - "name": "use-localhost", - "type": "boolean" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "verbose", + "name": "reset", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:dev", + "hiddenAliases": [], + "id": "app:import-extensions", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Run the app." + "customPluginName": "@shopify/app" }, - "app:dev:clean": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", - "descriptionWithMarkdown": "Stop the dev preview that was started with `shopify app dev`.\n\n It restores the app's active version to the selected development store.\n ", + "app:info": { + "aliases": [], + "args": {}, + "description": "The information returned includes the following:\n\n - The app and dev store that's used when you run the \"dev\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using \"`dev --reset`\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The \"structure\" (https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The \"access scopes\" (https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1054,96 +1096,192 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development store.", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "verbose": { + "name": "json", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "type": "boolean" + }, + "web-env": { + "description": "Outputs environment variables necessary for running and deploying web/.", + "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", "hidden": false, - "name": "verbose", + "name": "web-env", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:dev:clean", + "hiddenAliases": [], + "id": "app:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Cleans up the dev preview from the selected store." + "summary": "Print basic information about your app and extensions.", + "descriptionWithMarkdown": "The information returned includes the following:\n\n - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [`dev --reset`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "customPluginName": "@shopify/app" }, - "app:env:pull": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", - "descriptionWithMarkdown": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", + "app:init": { + "aliases": [], + "args": {}, "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "name": { + "char": "n", + "env": "SHOPIFY_FLAG_NAME", + "hidden": false, + "name": "name", "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "path": { + "char": "p", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "default": "/Users/ryan/src/github.com/Shopify/cli/packages/cli", + "hasDynamicHelp": false, "multiple": false, - "name": "config", "type": "option" }, - "env-file": { - "description": "Specify an environment file to update if the update flag is set", - "env": "SHOPIFY_FLAG_ENV_FILE", + "template": { + "description": "The app template. Accepts one of the following:\n - \n - Any GitHub repo with optional branch and subpath, e.g., https://github.com/Shopify//[subpath]#[branch]", + "env": "SHOPIFY_FLAG_TEMPLATE", + "name": "template", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "flavor": { + "description": "Which flavor of the given template to use.", + "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", + "name": "flavor", "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "package-manager": { + "char": "d", + "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", "hidden": false, + "name": "package-manager", + "hasDynamicHelp": false, "multiple": false, - "name": "env-file", + "options": [ + "npm", + "yarn", + "pnpm", + "bun" + ], "type": "option" }, - "no-color": { + "local": { + "char": "l", + "env": "SHOPIFY_FLAG_LOCAL", + "hidden": true, + "name": "local", "allowNo": false, + "type": "boolean" + }, + "client-id": { + "description": "The Client ID of your app. Use this to automatically link your new project to an existing app. Using this flag avoids the app selection prompt.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:init", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Create a new app project", + "customPluginName": "@shopify/app" + }, + "app:release": { + "aliases": [], + "args": {}, + "description": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "flags": { + "no-color": { "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1151,77 +1289,110 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { + "force": { + "char": "f", + "description": "Release without asking for confirmation. Equivalent to --allow-updates --allow-deletes. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": false, + "name": "force", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "type": "boolean" + }, + "allow-updates": { + "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", + "env": "SHOPIFY_FLAG_ALLOW_UPDATES", "hidden": false, - "name": "verbose", + "name": "allow-updates", + "allowNo": false, + "type": "boolean" + }, + "allow-deletes": { + "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", + "env": "SHOPIFY_FLAG_ALLOW_DELETES", + "hidden": false, + "name": "allow-deletes", + "allowNo": false, "type": "boolean" + }, + "version": { + "description": "The name of the app version to release.", + "env": "SHOPIFY_FLAG_VERSION", + "hidden": false, + "name": "version", + "required": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:env:pull", + "hiddenAliases": [], + "id": "app:release", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Pull app and extensions environment variables." + "summary": "Release an app version.", + "usage": "app release --version ", + "descriptionWithMarkdown": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", + "customPluginName": "@shopify/app" }, - "app:env:show": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Displays environment variables that can be used to deploy apps and app extensions.", - "descriptionWithMarkdown": "Displays environment variables that can be used to deploy apps and app extensions.", + "app:config:link": { + "aliases": [], + "args": {}, + "description": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the \"App configuration\" (https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1229,103 +1400,69 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:env:show", + "hiddenAliases": [], + "id": "app:config:link", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Display app and extensions environment variables." + "summary": "Fetch your app configuration from the Developer Dashboard.", + "descriptionWithMarkdown": "Pulls app configuration from the Developer Dashboard and creates or overwrites a configuration file. You can create a new app with this command to start with a default configuration file.\n\n For more information on the format of the created TOML configuration file, refer to the [App configuration](https://shopify.dev/docs/apps/tools/cli/configuration) page.\n ", + "customPluginName": "@shopify/app" }, - "app:execute": { - "aliases": [ - ], + "app:config:use": { + "aliases": [], "args": { + "config": { + "description": "The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'.", + "name": "config" + } }, - "customPluginName": "@shopify/app", - "description": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", - "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", + "description": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "output-file": { - "description": "The file name where results should be written, instead of STDOUT.", - "env": "SHOPIFY_FLAG_OUTPUT_FILE", - "hasDynamicHelp": false, - "multiple": false, - "name": "output-file", - "type": "option" + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, - "type": "option" - }, - "query": { - "char": "q", - "description": "The GraphQL query or mutation, as a string.", - "env": "SHOPIFY_FLAG_QUERY", "hasDynamicHelp": false, "multiple": false, - "name": "query", - "required": false, "type": "option" }, - "query-file": { - "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", - "env": "SHOPIFY_FLAG_QUERY_FILE", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "query-file", "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1333,118 +1470,150 @@ ], "hidden": false, "name": "reset", + "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:config:use", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Activate an app configuration.", + "usage": "app config use [config] [flags]", + "descriptionWithMarkdown": "Sets default configuration when you run app-related CLI commands. If you omit the `config-name` parameter, then you'll be prompted to choose from the configuration files in your project.", + "customPluginName": "@shopify/app" + }, + "app:config:pull": { + "aliases": [], + "args": {}, + "description": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, "type": "boolean" }, - "store": { - "char": "s", - "description": "The myshopify.com domain of the store to execute against. The app must be installed on the store. If not specified, you will be prompted to select a store.", - "env": "SHOPIFY_FLAG_STORE", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "variable-file": { - "description": "Path to a file containing GraphQL variables in JSON format. Can't be used with --variables.", - "env": "SHOPIFY_FLAG_VARIABLE_FILE", - "exclusive": [ - "variables" - ], + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, "multiple": false, - "name": "variable-file", "type": "option" }, - "variables": { - "char": "v", - "description": "The values for any GraphQL variables in your query or mutation, in JSON format.", - "env": "SHOPIFY_FLAG_VARIABLES", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ - "variable-file" + "config" ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "variables", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], "hidden": false, - "name": "verbose", + "name": "reset", + "allowNo": false, "type": "boolean" - }, - "version": { - "description": "The API version to use for the query or mutation. Defaults to the latest stable version.", - "env": "SHOPIFY_FLAG_VERSION", - "hasDynamicHelp": false, - "multiple": false, - "name": "version", - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:execute", + "hiddenAliases": [], + "id": "app:config:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Execute GraphQL queries and mutations." + "summary": "Refresh an already-linked app configuration without prompts.", + "descriptionWithMarkdown": "Pulls the latest configuration from the already-linked Shopify app and updates the selected configuration file.\n\nThis command reuses the existing linked app and organization and skips all interactive prompts. Use `--config` to target a specific configuration file, or omit it to use the default one.", + "customPluginName": "@shopify/app" }, - "app:function:build": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", - "descriptionWithMarkdown": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", + "app:env:pull": { + "aliases": [], + "args": {}, + "description": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1452,87 +1621,83 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "env-file": { + "description": "Specify an environment file to update if the update flag is set", + "env": "SHOPIFY_FLAG_ENV_FILE", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "env-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:build", + "hiddenAliases": [], + "id": "app:env:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Compile a function to wasm." + "summary": "Pull app and extensions environment variables.", + "descriptionWithMarkdown": "Creates or updates an `.env` files that contains app and app extension environment variables.\n\n When an existing `.env` file is updated, changes to the variables are displayed in the terminal output. Existing variables and commented variables are preserved.", + "customPluginName": "@shopify/app" }, - "app:function:info": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", - "descriptionWithMarkdown": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", + "app:env:show": { + "aliases": [], + "args": {}, + "description": "Displays environment variables that can be used to deploy apps and app extensions.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, - "json": { + "name": "no-color", "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", "type": "boolean" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "name": "no-color", + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { - "description": "The path to your function directory.", + "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1540,96 +1705,74 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:info", + "hiddenAliases": [], + "id": "app:env:show", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Print basic information about your function." + "summary": "Display app and extensions environment variables.", + "descriptionWithMarkdown": "Displays environment variables that can be used to deploy apps and app extensions.", + "customPluginName": "@shopify/app" }, - "app:function:replay": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", - "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", + "app:execute": { + "aliases": [], + "args": {}, + "description": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use \"`bulk execute`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "log": { - "char": "l", - "description": "Specifies a log identifier to replay instead of selecting from a list. The identifier is provided in the output of `shopify app dev` and is the suffix of the log file name.", - "env": "SHOPIFY_FLAG_LOG", "hasDynamicHelp": false, "multiple": false, - "name": "log", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1637,194 +1780,140 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" }, - "watch": { - "allowNo": true, - "char": "w", - "description": "Re-run the function when the source code changes.", - "env": "SHOPIFY_FLAG_WATCH", - "hidden": false, - "name": "watch", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:replay", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Replays a function run from an app log." - }, - "app:function:run": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", - "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", - "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "query": { + "char": "q", + "description": "The GraphQL query or mutation, as a string.", + "env": "SHOPIFY_FLAG_QUERY", + "name": "query", + "required": false, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "query-file": { + "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", + "env": "SHOPIFY_FLAG_QUERY_FILE", + "name": "query-file", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "export": { - "char": "e", - "description": "Name of the WebAssembly export to invoke.", - "env": "SHOPIFY_FLAG_EXPORT", + "variables": { + "char": "v", + "description": "The values for any GraphQL variables in your query or mutation, in JSON format.", + "env": "SHOPIFY_FLAG_VARIABLES", + "exclusive": [ + "variable-file" + ], + "name": "variables", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "export", "type": "option" }, - "input": { - "char": "i", - "description": "The input JSON to pass to the function. If omitted, standard input is used.", - "env": "SHOPIFY_FLAG_INPUT", + "variable-file": { + "description": "Path to a file containing GraphQL variables in JSON format. Can't be used with --variables.", + "env": "SHOPIFY_FLAG_VARIABLE_FILE", + "exclusive": [ + "variables" + ], + "name": "variable-file", "hasDynamicHelp": false, "multiple": false, - "name": "input", "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "store": { + "char": "s", + "description": "The myshopify.com domain of the store to execute against. The app must be installed on the store. If not specified, you will be prompted to select a store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", - "type": "boolean" + "version": { + "description": "The API version to use for the query or mutation. Defaults to the latest stable version.", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" + "output-file": { + "description": "The file name where results should be written, instead of STDOUT.", + "env": "SHOPIFY_FLAG_OUTPUT_FILE", + "name": "output-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:run", + "hiddenAliases": [], + "id": "app:execute", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Run a function locally for testing." + "summary": "Execute GraphQL queries and mutations.", + "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store. Mutations are only allowed on dev stores.\n\n For operations that process large amounts of data, use [`bulk execute`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-execute) instead.", + "customPluginName": "@shopify/app" }, - "app:function:schema": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Generates the latest \"GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "descriptionWithMarkdown": "Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "app:bulk:execute": { + "aliases": [], + "args": {}, + "description": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about \"bulk query operations\" (https://shopify.dev/docs/api/usage/bulk-operations/queries) and \"bulk mutation operations\" (https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use \"`bulk status`\" (https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1832,86 +1921,151 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "stdout": { - "allowNo": false, - "description": "Output the schema to stdout instead of writing to a file.", - "env": "SHOPIFY_FLAG_STDOUT", - "name": "stdout", + "query": { + "char": "q", + "description": "The GraphQL query or mutation to run as a bulk operation.", + "env": "SHOPIFY_FLAG_QUERY", + "name": "query", "required": false, - "type": "boolean" + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "verbose": { + "query-file": { + "description": "Path to a file containing the GraphQL query or mutation. Can't be used with --query.", + "env": "SHOPIFY_FLAG_QUERY_FILE", + "name": "query-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "variables": { + "char": "v", + "description": "The values for any GraphQL variables in your mutation, in JSON format. Can be specified multiple times.", + "env": "SHOPIFY_FLAG_VARIABLES", + "exclusive": [ + "variable-file" + ], + "name": "variables", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "variable-file": { + "description": "Path to a file containing GraphQL variables in JSONL format (one JSON object per line). Can't be used with --variables.", + "env": "SHOPIFY_FLAG_VARIABLE_FILE", + "exclusive": [ + "variables" + ], + "name": "variable-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store": { + "char": "s", + "description": "The store domain. Must be an existing dev store.", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "watch": { + "description": "Wait for bulk operation results before exiting. Defaults to false.", + "env": "SHOPIFY_FLAG_WATCH", + "name": "watch", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" + }, + "output-file": { + "dependsOn": [ + "watch" + ], + "description": "The file path where results should be written if --watch is specified. If not specified, results will be written to STDOUT.", + "env": "SHOPIFY_FLAG_OUTPUT_FILE", + "name": "output-file", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "version": { + "description": "The API version to use for the bulk operation. If not specified, uses the latest stable version.", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:schema", + "hiddenAliases": [], + "id": "app:bulk:execute", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Fetch the latest GraphQL schema for a function." + "summary": "Execute bulk operations.", + "descriptionWithMarkdown": "Executes an Admin API GraphQL query or mutation on the specified store, as a bulk operation. Mutations are only allowed on dev stores.\n\n Bulk operations allow you to process large amounts of data asynchronously. Learn more about [bulk query operations](https://shopify.dev/docs/api/usage/bulk-operations/queries) and [bulk mutation operations](https://shopify.dev/docs/api/usage/bulk-operations/imports).\n\n Use [`bulk status`](https://shopify.dev/docs/api/shopify-cli/app/app-bulk-status) to check the status of your bulk operations.", + "customPluginName": "@shopify/app" }, - "app:function:typegen": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Creates GraphQL types based on your \"input query\" (https://shopify.dev/docs/apps/functions/input-output#input) for a function written in JavaScript.", - "descriptionWithMarkdown": "Creates GraphQL types based on your [input query](https://shopify.dev/docs/apps/functions/input-output#input) for a function written in JavaScript.", + "app:generate:schema": { + "aliases": [], + "args": {}, + "description": "\"DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -1919,114 +2073,83 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "stdout": { + "description": "Output the schema to stdout instead of writing to a file.", + "env": "SHOPIFY_FLAG_STDOUT", + "name": "stdout", + "required": false, + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:function:typegen", + "hidden": true, + "hiddenAliases": [], + "id": "app:generate:schema", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "summary": "Generate GraphQL types for a JavaScript function." + "summary": "Fetch the latest GraphQL schema for a function.", + "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "customPluginName": "@shopify/app" }, - "app:generate:extension": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Generates a new \"app extension\" (https://shopify.dev/docs/apps/app-extensions). For a list of app extensions that you can generate using this command, refer to \"Supported extensions\" (https://shopify.dev/docs/apps/structure/app-extensions/list).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to \"App structure\" (https://shopify.dev/docs/apps/tools/cli/structure) and the documentation for your extension.\n ", - "descriptionWithMarkdown": "Generates a new [app extension](https://shopify.dev/docs/apps/app-extensions). For a list of app extensions that you can generate using this command, refer to [Supported extensions](https://shopify.dev/docs/apps/structure/app-extensions/list).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to [App structure](https://shopify.dev/docs/apps/tools/cli/structure) and the documentation for your extension.\n ", + "app:function:build": { + "aliases": [], + "args": {}, + "description": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "clone-url": { - "char": "u", - "description": "The Git URL to clone the function extensions templates from. Defaults to: https://github.com/Shopify/function-examples", - "env": "SHOPIFY_FLAG_CLONE_URL", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", + "hidden": false, + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": true, "multiple": false, - "name": "clone-url", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", - "type": "option" - }, - "flavor": { - "description": "Choose a starting template for your extension, where applicable", - "env": "SHOPIFY_FLAG_FLAVOR", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "flavor", - "options": [ - "vanilla-js", - "react", - "typescript", - "typescript-react", - "wasm", - "rust" - ], - "type": "option" - }, - "name": { - "char": "n", - "description": "name of your Extension", - "env": "SHOPIFY_FLAG_NAME", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "name", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2034,98 +2157,75 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "template": { - "char": "t", - "description": "Extension template", - "env": "SHOPIFY_FLAG_EXTENSION_TEMPLATE", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "template", - "type": "option" - }, - "type": { - "char": "t", - "description": "Deprecated. Please use --template", - "env": "SHOPIFY_FLAG_EXTENSION_TYPE", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "type", - "type": "option" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:generate:extension", + "hiddenAliases": [], + "id": "app:function:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Generate a new app Extension." + "summary": "Compile a function to wasm.", + "descriptionWithMarkdown": "Compiles the function in your current directory to WebAssembly (Wasm) for testing purposes.", + "customPluginName": "@shopify/app" }, - "app:generate:schema": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "\"DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", - "descriptionWithMarkdown": "[DEPRECATED, use `app function schema`] Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "app:function:replay": { + "aliases": [], + "args": {}, + "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your function directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2133,92 +2233,102 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "stdout": { + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "allowNo": false, - "description": "Output the schema to stdout instead of writing to a file.", - "env": "SHOPIFY_FLAG_STDOUT", - "name": "stdout", - "required": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "log": { + "char": "l", + "description": "Specifies a log identifier to replay instead of selecting from a list. The identifier is provided in the output of `shopify app dev` and is the suffix of the log file name.", + "env": "SHOPIFY_FLAG_LOG", + "name": "log", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "watch": { + "char": "w", + "description": "Re-run the function when the source code changes.", + "env": "SHOPIFY_FLAG_WATCH", "hidden": false, - "name": "verbose", + "name": "watch", + "allowNo": true, "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "app:generate:schema", + "hiddenAliases": [], + "id": "app:function:replay", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "summary": "Fetch the latest GraphQL schema for a function." + "strict": true, + "summary": "Replays a function run from an app log.", + "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", + "customPluginName": "@shopify/app" }, - "app:import-custom-data-definitions": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Import metafield and metaobject definitions from your development store. \"Read more about declarative custom data definitions\" (https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", - "descriptionWithMarkdown": "Import metafield and metaobject definitions from your development store. [Read more about declarative custom data definitions](https://shopify.dev/docs/apps/build/custom-data/declarative-custom-data-definitions).", + "app:function:run": { + "aliases": [], + "args": {}, + "description": "Runs the function from your current directory for \"testing purposes\" (https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to \"Shopify Functions error handling\" (https://shopify.dev/docs/api/functions/errors).", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "include-existing": { - "allowNo": false, - "description": "Include existing declared definitions in the output.", - "env": "SHOPIFY_FLAG_INCLUDE_EXISTING", - "name": "include-existing", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2226,85 +2336,103 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", - "env": "SHOPIFY_FLAG_STORE", + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" + }, + "input": { + "char": "i", + "description": "The input JSON to pass to the function. If omitted, standard input is used.", + "env": "SHOPIFY_FLAG_INPUT", + "name": "input", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "export": { + "char": "e", + "description": "Name of the WebAssembly export to invoke.", + "env": "SHOPIFY_FLAG_EXPORT", "hidden": false, - "name": "verbose", - "type": "boolean" + "name": "export", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:import-custom-data-definitions", + "hiddenAliases": [], + "id": "app:function:run", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Import metafield and metaobject definitions." + "summary": "Run a function locally for testing.", + "descriptionWithMarkdown": "Runs the function from your current directory for [testing purposes](https://shopify.dev/docs/apps/functions/testing-and-debugging). To learn how you can monitor and debug functions when errors occur, refer to [Shopify Functions error handling](https://shopify.dev/docs/api/functions/errors).", + "customPluginName": "@shopify/app" }, - "app:import-extensions": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Import dashboard-managed extensions into your app.", + "app:function:info": { + "aliases": [], + "args": {}, + "description": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2312,85 +2440,84 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "name": "verbose", + "name": "json", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:import-extensions", + "hiddenAliases": [], + "id": "app:function:info", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Print basic information about your function.", + "descriptionWithMarkdown": "The information returned includes the following:\n\n - The function handle\n - The function name\n - The function API version\n - The targeting configuration\n - The schema path\n - The WASM path\n - The function runner path", + "customPluginName": "@shopify/app" }, - "app:info": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "The information returned includes the following:\n\n - The app and dev store that's used when you run the \"dev\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using \"`dev --reset`\" (https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The \"structure\" (https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The \"access scopes\" (https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", - "descriptionWithMarkdown": "The information returned includes the following:\n\n - The app and dev store that's used when you run the [dev](https://shopify.dev/docs/api/shopify-cli/app/app-dev) command. You can reset these configurations using [`dev --reset`](https://shopify.dev/docs/api/shopify-cli/app/app-dev#flags-propertydetail-reset).\n - The [structure](https://shopify.dev/docs/apps/tools/cli/structure) of your app project.\n - The [access scopes](https://shopify.dev/docs/api/usage) your app has requested.\n - System information, including the package manager and version of Shopify CLI used in the project.", + "app:function:schema": { + "aliases": [], + "args": {}, + "description": "Generates the latest \"GraphQL schema\" (https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your function directory.", + "env": "SHOPIFY_FLAG_PATH", "hidden": false, + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2398,198 +2525,158 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" }, - "web-env": { - "allowNo": false, - "description": "Outputs environment variables necessary for running and deploying web/.", - "env": "SHOPIFY_FLAG_OUTPUT_WEB_ENV", - "hidden": false, - "name": "web-env", + "stdout": { + "description": "Output the schema to stdout instead of writing to a file.", + "env": "SHOPIFY_FLAG_STDOUT", + "name": "stdout", + "required": false, + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:info", + "hiddenAliases": [], + "id": "app:function:schema", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Print basic information about your app and extensions." + "summary": "Fetch the latest GraphQL schema for a function.", + "descriptionWithMarkdown": "Generates the latest [GraphQL schema](https://shopify.dev/docs/apps/functions/input-output#graphql-schema) for a function in your app. Run this command from the function directory.\n\n This command uses the API type and version of your function, as defined in your extension TOML file, to generate the latest GraphQL schema. The schema is written to the `schema.graphql` file.", + "customPluginName": "@shopify/app" }, - "app:init": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", + "app:function:typegen": { + "aliases": [], + "args": {}, + "description": "Creates GraphQL types based on your \"input query\" (https://shopify.dev/docs/apps/functions/input-output#input) for a function written in JavaScript.", "flags": { - "client-id": { - "description": "The Client ID of your app. Use this to automatically link your new project to an existing app. Using this flag avoids the app selection prompt.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "flavor": { - "description": "Which flavor of the given template to use.", - "env": "SHOPIFY_FLAG_TEMPLATE_FLAVOR", - "hasDynamicHelp": false, - "multiple": false, - "name": "flavor", - "type": "option" - }, - "local": { - "allowNo": false, - "char": "l", - "env": "SHOPIFY_FLAG_LOCAL", - "hidden": true, - "name": "local", - "type": "boolean" - }, - "name": { - "char": "n", - "env": "SHOPIFY_FLAG_NAME", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "name", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "package-manager": { - "char": "d", - "env": "SHOPIFY_FLAG_PACKAGE_MANAGER", - "hasDynamicHelp": false, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "multiple": false, - "name": "package-manager", - "options": [ - "npm", - "yarn", - "pnpm", - "bun" - ], - "type": "option" + "name": "verbose", + "allowNo": false, + "type": "boolean" }, "path": { - "char": "p", - "default": ".", + "description": "The path to your function directory.", "env": "SHOPIFY_FLAG_PATH", + "hidden": false, + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hidden": false, + "name": "config", + "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "template": { - "description": "The app template. Accepts one of the following:\n - \n - Any GitHub repo with optional branch and subpath, e.g., https://github.com/Shopify//[subpath]#[branch]", - "env": "SHOPIFY_FLAG_TEMPLATE", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "template", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], "hidden": false, - "name": "verbose", + "name": "reset", + "allowNo": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:init", + "hiddenAliases": [], + "id": "app:function:typegen", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Create a new app project" + "summary": "Generate GraphQL types for a JavaScript function.", + "descriptionWithMarkdown": "Creates GraphQL types based on your [input query](https://shopify.dev/docs/apps/functions/input-output#input) for a function written in JavaScript.", + "customPluginName": "@shopify/app" }, - "app:logs": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", - "descriptionWithMarkdown": "\n Opens a real-time stream of detailed app logs from the selected app and store.\n Use the `--source` argument to limit output to a particular log source, such as a specific Shopify Function handle. Use the `shopify app logs sources` command to view a list of sources.\n Use the `--status` argument to filter on status, either `success` or `failure`.\n ```\n shopify app logs --status=success --source=extension.discount-function\n ```\n ", + "app:generate:extension": { + "aliases": [], + "args": {}, + "description": "Generates a new \"app extension\" (https://shopify.dev/docs/apps/app-extensions). For a list of app extensions that you can generate using this command, refer to \"Supported extensions\" (https://shopify.dev/docs/apps/structure/app-extensions/list).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to \"App structure\" (https://shopify.dev/docs/apps/tools/cli/structure) and the documentation for your extension.\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2597,209 +2684,131 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "source": { - "description": "Filters output to the specified log source.", - "env": "SHOPIFY_FLAG_SOURCE", + "type": { + "char": "t", + "description": "Deprecated. Please use --template", + "env": "SHOPIFY_FLAG_EXTENSION_TYPE", + "hidden": false, + "name": "type", "hasDynamicHelp": false, - "multiple": true, - "name": "source", + "multiple": false, "type": "option" }, - "status": { - "description": "Filters output to the specified status (success or failure).", - "env": "SHOPIFY_FLAG_STATUS", + "template": { + "char": "t", + "description": "Extension template", + "env": "SHOPIFY_FLAG_EXTENSION_TEMPLATE", + "hidden": false, + "name": "template", "hasDynamicHelp": false, "multiple": false, - "name": "status", - "options": [ - "success", - "failure" - ], "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. Must be an existing development or Shopify Plus sandbox store.", - "env": "SHOPIFY_FLAG_STORE", + "name": { + "char": "n", + "description": "name of your Extension", + "env": "SHOPIFY_FLAG_NAME", + "hidden": false, + "name": "name", "hasDynamicHelp": false, - "multiple": true, - "name": "store", + "multiple": false, "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "clone-url": { + "char": "u", + "description": "The Git URL to clone the function extensions templates from. Defaults to: https://github.com/Shopify/function-examples", + "env": "SHOPIFY_FLAG_CLONE_URL", + "hidden": true, + "name": "clone-url", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "flavor": { + "description": "Choose a starting template for your extension, where applicable", + "env": "SHOPIFY_FLAG_FLAVOR", "hidden": false, - "name": "verbose", - "type": "boolean" - } + "name": "flavor", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "vanilla-js", + "react", + "typescript", + "typescript-react", + "wasm", + "rust" + ], + "type": "option" + } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:logs", + "hiddenAliases": [], + "id": "app:generate:extension", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Stream detailed logs for your Shopify app." + "summary": "Generate a new app Extension.", + "descriptionWithMarkdown": "Generates a new [app extension](https://shopify.dev/docs/apps/app-extensions). For a list of app extensions that you can generate using this command, refer to [Supported extensions](https://shopify.dev/docs/apps/structure/app-extensions/list).\n\n Each new app extension is created in a folder under `extensions/`. To learn more about the extensions file structure, refer to [App structure](https://shopify.dev/docs/apps/tools/cli/structure) and the documentation for your extension.\n ", + "customPluginName": "@shopify/app" }, - "app:logs:sources": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", - "descriptionWithMarkdown": "The output source names can be used with the `--source` argument of `shopify app logs` to filter log output. Currently only function extensions are supported as sources.", + "app:versions:list": { + "aliases": [], + "args": {}, + "description": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "client-id", - "type": "option" - }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "config", - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "reset": { "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", "type": "boolean" }, "verbose": { - "allowNo": false, "description": "Increase the verbosity of the output.", "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, "name": "verbose", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:logs:sources", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Print out a list of sources that may be used with the logs command." - }, - "app:release": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", - "descriptionWithMarkdown": "Releases an existing app version. Pass the name of the version that you want to release using the `--version` flag.", - "flags": { - "allow-deletes": { - "allowNo": false, - "description": "Allows removing extensions and configuration without requiring user confirmation. For CI/CD environments, the recommended flag is --allow-updates.", - "env": "SHOPIFY_FLAG_ALLOW_DELETES", - "hidden": false, - "name": "allow-deletes", - "type": "boolean" - }, - "allow-updates": { "allowNo": false, - "description": "Allows adding and updating extensions and configuration without requiring user confirmation. Recommended option for CI/CD environments.", - "env": "SHOPIFY_FLAG_ALLOW_UPDATES", - "hidden": false, - "name": "allow-updates", "type": "boolean" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "Release without asking for confirmation. Equivalent to --allow-updates --allow-deletes. For CI/CD environments, the recommended flag is --allow-updates.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": false, - "name": "force", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2807,97 +2816,67 @@ ], "hidden": false, "name": "reset", - "type": "boolean" - }, - "verbose": { "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" }, - "version": { - "description": "The name of the app version to release.", - "env": "SHOPIFY_FLAG_VERSION", - "hasDynamicHelp": false, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", "hidden": false, - "multiple": false, - "name": "version", - "required": true, - "type": "option" + "name": "json", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:release", + "hiddenAliases": [], + "id": "app:versions:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Release an app version.", - "usage": "app release --version " - }, - "app:versions:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", + "summary": "List deployed versions of your app.", "descriptionWithMarkdown": "Lists the deployed app versions. An app version is a snapshot of your app extensions.", + "customPluginName": "@shopify/app" + }, + "app:webhook:trigger": { + "aliases": [], + "args": {}, + "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "config", + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "name": "client-id", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, "reset": { - "allowNo": false, "description": "Reset all your settings.", "env": "SHOPIFY_FLAG_RESET", "exclusive": [ @@ -2905,5039 +2884,4743 @@ ], "hidden": false, "name": "reset", + "allowNo": false, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "help": { + "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", + "env": "SHOPIFY_FLAG_HELP", "hidden": false, - "name": "verbose", + "name": "help", + "required": false, + "allowNo": false, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:versions:list", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "List deployed versions of your app." - }, - "app:webhook:trigger": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", - "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", - "flags": { - "address": { - "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n · For remote HTTP testing, use a URL that starts with https://\n · For local HTTP testing, use http://localhost:{port}/{url-path}\n · For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n · For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", - "env": "SHOPIFY_FLAG_ADDRESS", - "hasDynamicHelp": false, + }, + "topic": { + "description": "The requested webhook topic.", + "env": "SHOPIFY_FLAG_TOPIC", "hidden": false, - "multiple": false, - "name": "address", + "name": "topic", "required": false, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, "api-version": { "description": "The API Version of the webhook topic.", "env": "SHOPIFY_FLAG_API_VERSION", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "api-version", "required": false, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "delivery-method": { + "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", + "env": "SHOPIFY_FLAG_DELIVERY_METHOD", + "hidden": false, + "name": "delivery-method", + "required": false, "hasDynamicHelp": false, + "multiple": false, + "options": [ + "http", + "google-pub-sub", + "event-bridge" + ], + "type": "option" + }, + "shared-secret": { + "description": "Deprecated. Please use client-secret.", + "env": "SHOPIFY_FLAG_SHARED_SECRET", "hidden": false, + "name": "shared-secret", + "required": false, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, "client-secret": { "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", "env": "SHOPIFY_FLAG_CLIENT_SECRET", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "client-secret", "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "address": { + "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n · For remote HTTP testing, use a URL that starts with https://\n · For local HTTP testing, use http://localhost:{port}/{url-path}\n · For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n · For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", + "env": "SHOPIFY_FLAG_ADDRESS", + "hidden": false, + "name": "address", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "app:webhook:trigger", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Trigger delivery of a sample webhook topic payload to a designated address.", + "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "customPluginName": "@shopify/app" + }, + "webhook:trigger": { + "aliases": [], + "args": {}, + "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "flags": { + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, "config": { "char": "c", "description": "The name of the app configuration.", "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hidden": false, + "name": "client-id", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", + "allowNo": false, + "type": "boolean" + }, + "help": { + "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", + "env": "SHOPIFY_FLAG_HELP", + "hidden": false, + "name": "help", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "topic": { + "description": "The requested webhook topic.", + "env": "SHOPIFY_FLAG_TOPIC", + "hidden": false, + "name": "topic", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "api-version": { + "description": "The API Version of the webhook topic.", + "env": "SHOPIFY_FLAG_API_VERSION", + "hidden": false, + "name": "api-version", + "required": false, + "hasDynamicHelp": false, "multiple": false, - "name": "config", "type": "option" }, "delivery-method": { "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", "env": "SHOPIFY_FLAG_DELIVERY_METHOD", - "hasDynamicHelp": false, "hidden": false, - "multiple": false, "name": "delivery-method", + "required": false, + "hasDynamicHelp": false, + "multiple": false, "options": [ "http", "google-pub-sub", "event-bridge" ], + "type": "option" + }, + "shared-secret": { + "description": "Deprecated. Please use client-secret.", + "env": "SHOPIFY_FLAG_SHARED_SECRET", + "hidden": false, + "name": "shared-secret", "required": false, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "help": { - "allowNo": false, - "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", - "env": "SHOPIFY_FLAG_HELP", + "client-secret": { + "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", + "env": "SHOPIFY_FLAG_CLIENT_SECRET", "hidden": false, - "name": "help", + "name": "client-secret", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "address": { + "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n · For remote HTTP testing, use a URL that starts with https://\n · For local HTTP testing, use http://localhost:{port}/{url-path}\n · For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n · For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", + "env": "SHOPIFY_FLAG_ADDRESS", + "hidden": false, + "name": "address", "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "webhook:trigger", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "summary": "Trigger delivery of a sample webhook topic payload to a designated address.", + "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "customPluginName": "@shopify/app" + }, + "demo:watcher": { + "aliases": [], + "args": {}, + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, "path": { "description": "The path to your app directory.", "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, "name": "path", "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", + "hidden": false, + "name": "config", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", "exclusive": [ "config" ], "hidden": false, - "name": "reset", - "type": "boolean" - }, - "shared-secret": { - "description": "Deprecated. Please use client-secret.", - "env": "SHOPIFY_FLAG_SHARED_SECRET", + "name": "client-id", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "shared-secret", - "required": false, "type": "option" }, - "topic": { - "description": "The requested webhook topic.", - "env": "SHOPIFY_FLAG_TOPIC", - "hasDynamicHelp": false, + "reset": { + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], "hidden": false, - "multiple": false, - "name": "topic", - "required": false, - "type": "option" + "name": "reset", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "app:webhook:trigger", + "hidden": true, + "hiddenAliases": [], + "id": "demo:watcher", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Trigger delivery of a sample webhook topic payload to a designated address." + "summary": "Watch and prints out changes to an app.", + "customPluginName": "@shopify/app" }, - "auth:login": { - "aliases": [ - ], + "theme:init": { + "aliases": [], "args": { + "name": { + "description": "Name of the new theme", + "name": "name", + "required": false + } }, - "description": "Logs you in to your Shopify account.", - "enableJsonFlag": false, + "description": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's \"Skeleton theme\" (https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be \"substantively different from existing themes\" (https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", "flags": { - "alias": { - "description": "Alias of the session you want to login to.", - "env": "SHOPIFY_FLAG_AUTH_ALIAS", + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "clone-url": { + "char": "u", + "description": "The Git URL to clone from. Defaults to Shopify's Skeleton theme.", + "env": "SHOPIFY_FLAG_CLONE_URL", + "name": "clone-url", + "default": "https://github.com/Shopify/skeleton-theme.git", "hasDynamicHelp": false, "multiple": false, - "name": "alias", "type": "option" + }, + "latest": { + "char": "l", + "description": "Downloads the latest release of the `clone-url`", + "env": "SHOPIFY_FLAG_LATEST", + "name": "latest", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "auth:login", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "auth:logout": { - "aliases": [ - ], - "args": { - }, - "description": "Logs you out of the Shopify account or Partner account and store.", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "auth:logout", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "cache:clear": { - "aliases": [ - ], - "args": { - }, - "description": "Clear the CLI cache, used to store some API responses and handle notifications status", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "cache:clear", + "hiddenAliases": [], + "id": "theme:init", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Clones a Git repository to use as a starting point for building a new theme.", + "usage": "theme init [name] [flags]", + "descriptionWithMarkdown": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's [Skeleton theme](https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be [substantively different from existing themes](https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "commands": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@oclif/plugin-commands", - "description": "List all <%= config.bin %> commands.", - "enableJsonFlag": true, + "theme:check": { + "aliases": [], + "args": {}, + "description": "Calls and runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. \"Learn more about the checks that Theme Check runs.\" (https://shopify.dev/docs/themes/tools/theme-check/checks)", "flags": { - "columns": { - "char": "c", - "delimiter": ",", - "description": "Only show provided columns (comma-separated).", - "exclusive": [ - "tree" - ], - "hasDynamicHelp": false, - "multiple": true, - "name": "columns", - "options": [ - "id", - "plugin", - "summary", - "type" - ], - "type": "option" - }, - "deprecated": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Show deprecated commands.", - "name": "deprecated", "type": "boolean" }, - "extended": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "char": "x", - "description": "Show extra columns.", - "exclusive": [ - "tree" - ], - "name": "extended", "type": "boolean" }, - "hidden": { + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "auto-correct": { + "char": "a", + "description": "Automatically fix offenses", + "env": "SHOPIFY_FLAG_AUTO_CORRECT", + "name": "auto-correct", + "required": false, "allowNo": false, - "description": "Show hidden commands.", - "name": "hidden", "type": "boolean" }, - "json": { + "config": { + "char": "C", + "description": "Use the config provided, overriding .theme-check.yml if present\n Supports all theme-check: config values, e.g., theme-check:theme-app-extension,\n theme-check:recommended, theme-check:all\n For backwards compatibility, :theme_app_extension is also supported ", + "env": "SHOPIFY_FLAG_CONFIG", + "name": "config", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "fail-level": { + "description": "Minimum severity for exit with error code", + "env": "SHOPIFY_FLAG_FAIL_LEVEL", + "name": "fail-level", + "required": false, + "default": "error", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "crash", + "error", + "suggestion", + "style", + "warning", + "info" + ], + "type": "option" + }, + "init": { + "description": "Generate a .theme-check.yml file", + "env": "SHOPIFY_FLAG_INIT", + "name": "init", + "required": false, "allowNo": false, - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", "type": "boolean" }, - "no-truncate": { + "list": { + "description": "List enabled checks", + "env": "SHOPIFY_FLAG_LIST", + "name": "list", + "required": false, "allowNo": false, - "description": "Do not truncate output.", - "exclusive": [ - "tree" - ], - "name": "no-truncate", "type": "boolean" }, - "sort": { - "default": "id", - "description": "Property to sort by.", - "exclusive": [ - "tree" - ], + "output": { + "char": "o", + "description": "The output format to use", + "env": "SHOPIFY_FLAG_OUTPUT", + "name": "output", + "required": false, + "default": "text", "hasDynamicHelp": false, "multiple": false, - "name": "sort", "options": [ - "id", - "plugin", - "summary", - "type" + "text", + "json" ], "type": "option" }, - "tree": { + "print": { + "description": "Output active config to STDOUT", + "env": "SHOPIFY_FLAG_PRINT", + "name": "print", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "version": { + "char": "v", + "description": "Print Theme Check version", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", + "required": false, "allowNo": false, - "description": "Show tree of commands.", - "name": "tree", "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "commands", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "config:autocorrect:off": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/plugin-did-you-mean", - "description": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "descriptionWithMarkdown": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "config:autocorrect:off", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Disable autocorrect. Off by default." - }, - "config:autocorrect:on": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/plugin-did-you-mean", - "description": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "descriptionWithMarkdown": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "config:autocorrect:on", + "hiddenAliases": [], + "id": "theme:check", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Enable autocorrect. Off by default." - }, - "config:autocorrect:status": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/plugin-did-you-mean", - "description": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "descriptionWithMarkdown": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hiddenAliases": [ + "summary": "Validate the theme.", + "descriptionWithMarkdown": "Calls and runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. [Learn more about the checks that Theme Check runs.](https://shopify.dev/docs/themes/tools/theme-check/checks)", + "multiEnvironmentsFlags": [ + "path" ], - "id": "config:autocorrect:status", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Check whether autocorrect is enabled or disabled. On by default." + "customPluginName": "@shopify/theme" }, - "debug:command-flags": { - "aliases": [ - ], - "args": { - }, - "description": "View all the available command flags", - "enableJsonFlag": false, + "theme:console": { + "aliases": [], + "args": {}, + "description": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", "flags": { - "csv": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Output as CSV", - "env": "SHOPIFY_FLAG_OUTPUT_CSV", - "name": "csv", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "debug:command-flags", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "demo:watcher": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "flags": { - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], - "hasDynamicHelp": false, + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, "multiple": false, - "name": "client-id", "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "reset": { - "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", - "type": "boolean" + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" + "url": { + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", + "name": "url", + "default": "/", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "name": "store-password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "demo:watcher", + "hiddenAliases": [], + "id": "theme:console", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Watch and prints out changes to an app." - }, - "docs:generate": { - "aliases": [ - ], - "args": { - }, - "description": "Generate CLI commands documentation", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "docs:generate", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "doctor-release": { - "aliases": [ - ], - "args": { - }, - "description": "Run CLI doctor-release tests", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ + "summary": "Shopify Liquid REPL (read-eval-print loop) tool", + "usage": [ + "theme console", + "theme console --url /products/classic-leather-jacket" ], - "id": "doctor-release", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true + "descriptionWithMarkdown": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "doctor-release:theme": { - "aliases": [ - ], - "args": { - }, - "description": "Run all theme command doctor-release tests", - "enableJsonFlag": false, + "theme:delete": { + "aliases": [], + "args": {}, + "description": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", "flags": { - "environment": { - "char": "e", - "description": "The environment to use from shopify.theme.toml (required for store-connected tests).", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": false, - "name": "environment", - "required": true, - "type": "option" - }, "no-color": { - "allowNo": false, "description": "Disable color output.", "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, "name": "no-color", + "allowNo": false, "type": "boolean" }, - "password": { - "description": "Password from Theme Access app (overrides environment).", - "env": "SHOPIFY_FLAG_PASSWORD", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "char": "p", - "default": ".", - "description": "The path to run tests in. Defaults to current directory.", - "env": "SHOPIFY_FLAG_PATH", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, "store": { "char": "s", - "description": "Store URL (overrides environment).", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "development": { + "char": "d", + "description": "Delete your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "doctor-release:theme", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "help": { - "aliases": [ - ], - "args": { - "command": { - "description": "Command to show help for.", - "name": "command", - "required": false - } - }, - "description": "Display help for Shopify CLI", - "enableJsonFlag": false, - "flags": { - "nested-commands": { + }, + "show-all": { + "char": "a", + "description": "Include others development themes in theme list.", + "env": "SHOPIFY_FLAG_SHOW_ALL", + "name": "show-all", + "allowNo": false, + "type": "boolean" + }, + "force": { + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", "allowNo": false, - "char": "n", - "description": "Include all nested commands in the output.", - "env": "SHOPIFY_FLAG_CLI_NESTED_COMMANDS", - "name": "nested-commands", "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "help", + "hiddenAliases": [], + "id": "theme:delete", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false, - "usage": "help [command] [flags]" - }, - "hydrogen:build": { - "aliases": [ + "strict": true, + "summary": "Delete remote themes from the connected store. This command can't be undone.", + "descriptionWithMarkdown": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", + "multiEnvironmentsFlags": [ + "store", + "password", + [ + "development", + "theme" + ] ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Builds a Hydrogen storefront for production.", - "descriptionWithMarkdown": "Builds a Hydrogen storefront for production. The client and app worker files are compiled to a `/dist` folder in your Hydrogen project directory.", - "enableJsonFlag": false, + "customPluginName": "@shopify/theme" + }, + "theme:dev": { + "aliases": [], + "args": {}, + "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", "flags": { - "bundle-stats": { - "allowNo": true, - "description": "Show a bundle size summary after building. Defaults to true, use `--no-bundle-stats` to disable.", - "name": "bundle-stats", + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, "type": "boolean" }, - "codegen": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", - "name": "codegen", - "required": false, "type": "boolean" }, - "codegen-config-path": { - "dependsOn": [ - "codegen" - ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "codegen-config-path", - "required": false, "type": "option" }, - "disable-route-warning": { - "allowNo": false, - "description": "Disables any warnings about missing standard routes.", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_ROUTE_WARNING", - "name": "disable-route-warning", - "type": "boolean" + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "entry", "type": "option" }, - "force-client-sourcemap": { - "allowNo": false, - "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", - "name": "force-client-sourcemap", - "type": "boolean" + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" }, - "lockfile-check": { - "allowNo": true, - "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", - "name": "lockfile-check", - "type": "boolean" + "host": { + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", + "env": "SHOPIFY_FLAG_HOST", + "name": "host", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "live-reload": { + "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", + "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "name": "live-reload", + "default": "hot-reload", "hasDynamicHelp": false, "multiple": false, - "name": "path", + "options": [ + "hot-reload", + "full-page", + "off" + ], "type": "option" }, - "sourcemap": { - "allowNo": true, - "description": "Controls whether server sourcemaps are generated. Default to `true`. Deactivate `--no-sourcemaps`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP", - "name": "sourcemap", + "error-overlay": { + "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", + "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "name": "error-overlay", + "default": "default", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "silent", + "default" + ], + "type": "option" + }, + "poll": { + "description": "Force polling to detect file changes.", + "env": "SHOPIFY_FLAG_POLL", + "hidden": true, + "name": "poll", + "allowNo": false, "type": "boolean" }, - "watch": { + "theme-editor-sync": { + "description": "Synchronize Theme Editor updates in the local theme files.", + "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", + "name": "theme-editor-sync", "allowNo": false, - "description": "Watches for changes and rebuilds the project writing output to disk.", - "env": "SHOPIFY_HYDROGEN_FLAG_WATCH", - "name": "watch", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:build", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:check": { - "aliases": [ - ], - "args": { - "resource": { - "description": "The resource to check. Currently only 'routes' is supported.", - "name": "resource", - "options": [ - "routes" - ], - "required": true - } - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Returns diagnostic information about a Hydrogen storefront.", - "descriptionWithMarkdown": "Checks whether your Hydrogen app includes a set of standard Shopify routes.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "port": { + "description": "Local port to serve theme preview from.", + "env": "SHOPIFY_FLAG_PORT", + "name": "port", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:check", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:codegen": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Generate types for the Storefront API queries found in your project.", - "descriptionWithMarkdown": "Automatically generates GraphQL types for your project’s Storefront API queries.", - "enableJsonFlag": false, - "flags": { - "codegen-config-path": { - "description": "Specify a path to a codegen configuration file. Defaults to `/codegen.ts` if it exists.", + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "codegen-config-path", - "required": false, "type": "option" }, - "force-sfapi-version": { - "description": "Force generating Storefront API types for a specific version instead of using the one provided in Hydrogen. A token can also be provided with this format: `:`.", + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "name": "listing", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "nodelete": { + "char": "n", + "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "allowNo": false, + "type": "boolean" + }, + "only": { + "char": "o", + "description": "Hot reload only files that match the specified pattern.", + "env": "SHOPIFY_FLAG_ONLY", + "name": "only", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "ignore": { + "char": "x", + "description": "Skip hot reloading any files that match the specified pattern.", + "env": "SHOPIFY_FLAG_IGNORE", + "name": "ignore", "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", "hidden": true, + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "name": "notify", + "hasDynamicHelp": false, "multiple": false, - "name": "force-sfapi-version", "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "open": { + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "allowNo": false, + "type": "boolean" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "name": "store-password", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "watch": { + "allow-live": { + "char": "a", + "description": "Allow development on a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", "allowNo": false, - "description": "Watch the project for changes to update types on file save.", - "name": "watch", - "required": false, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:codegen", + "hiddenAliases": [], + "id": "theme:dev", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time.", + "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "hydrogen:customer-account-push": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Push project configuration to admin", - "enableJsonFlag": false, + "theme:duplicate": { + "aliases": [], + "args": {}, + "description": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", "flags": { - "dev-origin": { - "description": "The development domain of your application.", + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "dev-origin", - "required": true, "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "relative-logout-uri": { - "description": "The relative url of allowed url that will be redirected to post-logout for Customer Account API OAuth flow. Default to nothing.", + "name": { + "char": "n", + "description": "Name of the newly duplicated theme.", + "env": "SHOPIFY_FLAG_NAME", + "name": "name", "hasDynamicHelp": false, "multiple": false, - "name": "relative-logout-uri", "type": "option" }, - "relative-redirect-uri": { - "description": "The relative url of allowed callback url for Customer Account API OAuth flow. Default is '/account/authorize'", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "relative-redirect-uri", "type": "option" }, - "storefront-id": { - "description": "The id of the storefront the configuration should be pushed to. Must start with 'gid://shopify/HydrogenStorefront/'", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "storefront-id", + "multiple": true, "type": "option" + }, + "force": { + "char": "f", + "description": "Force the duplicate operation to run without prompts or confirmations.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:customer-account-push", + "hiddenAliases": [], + "id": "theme:duplicate", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:debug:cpu": { - "aliases": [ + "strict": true, + "summary": "Duplicates a theme from your theme library.", + "usage": [ + "theme duplicate", + "theme duplicate --theme 10 --name 'New Theme'" ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Builds and profiles the server startup time the app.", - "descriptionWithMarkdown": "Builds the app and runs the resulting code to profile the server startup time, watching for changes. This command can be used to [debug slow app startup times](https://shopify.dev/docs/custom-storefronts/hydrogen/debugging/cpu-startup) that cause failed deployments in Oxygen.\n\n The profiling results are written to a `.cpuprofile` file that can be viewed with certain tools such as [Flame Chart Visualizer for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-js-profile-flame).", - "enableJsonFlag": false, + "descriptionWithMarkdown": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", + "customPluginName": "@shopify/theme" + }, + "theme:info": { + "aliases": [], + "args": {}, + "description": "Displays information about your theme environment, including your current store. Can also retrieve information about a specific theme.", "flags": { - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "hasDynamicHelp": false, - "multiple": false, - "name": "entry", - "type": "option" - }, - "output": { - "default": "startup.cpuprofile", - "description": "Specify a path to generate the profile file. Defaults to \"startup.cpuprofile\".", - "hasDynamicHelp": false, - "multiple": false, - "name": "output", - "required": false, - "type": "option" + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:debug:cpu", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:deploy": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Builds and deploys a Hydrogen storefront to Oxygen.", - "descriptionWithMarkdown": "Builds and deploys your Hydrogen storefront to Oxygen. Requires an Oxygen deployment token to be set with the `--token` flag or an environment variable (`SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN`). If the storefront is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) then the Oxygen deployment token for the linked storefront will be used automatically.", - "enableJsonFlag": false, - "flags": { - "auth-bypass-token": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "description": "Generate an authentication bypass token, which can be used to perform end-to-end tests against the deployment.", - "env": "AUTH_BYPASS_TOKEN", - "name": "auth-bypass-token", - "required": false, "type": "boolean" }, - "auth-bypass-token-duration": { - "dependsOn": [ - "auth-bypass-token" - ], - "description": "Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`", - "env": "AUTH_BYPASS_TOKEN_DURATION", - "hasDynamicHelp": false, - "multiple": false, - "name": "auth-bypass-token-duration", - "required": false, - "type": "option" + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" }, - "build-command": { - "description": "Specify a build command to run before deploying. If not specified, `shopify hydrogen build` will be used.", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "build-command", - "required": false, "type": "option" }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "entry", "type": "option" }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "env", "type": "option" }, - "env-branch": { - "deprecated": { - "message": "--env-branch is deprecated. Use --env instead.", - "to": "env" - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "env-branch", + "multiple": true, "type": "option" }, - "env-file": { - "description": "Path to an environment file to override existing environment variables for the deployment.", + "development": { + "char": "d", + "description": "Retrieve info from your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "env-file", - "required": false, "type": "option" - }, - "force": { + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "theme:info", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "multiEnvironmentsFlags": [ + "store", + "password" + ], + "customPluginName": "@shopify/theme" + }, + "theme:language-server": { + "aliases": [], + "args": {}, + "description": "Starts the \"Language Server\" (https://shopify.dev/docs/themes/tools/cli/language-server).", + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "char": "f", - "description": "Forces a deployment to proceed if there are uncommited changes in its Git repository.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "required": false, "type": "boolean" }, - "force-client-sourcemap": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "theme:language-server", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Start a Language Server Protocol server.", + "descriptionWithMarkdown": "Starts the [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server).", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" + }, + "theme:list": { + "aliases": [], + "args": {}, + "description": "Lists the themes in your store, along with their IDs and statuses.", + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", - "name": "force-client-sourcemap", "type": "boolean" }, - "json-output": { - "allowNo": true, - "description": "Create a JSON file containing the deployment details in CI environments. Defaults to true, use `--no-json-output` to disable.", - "name": "json-output", - "required": false, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, - "lockfile-check": { - "allowNo": true, - "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", - "name": "lockfile-check", + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, "type": "boolean" }, - "metadata-description": { - "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommited changes.", - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_DESCRIPTION", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "metadata-description", - "required": false, "type": "option" }, - "metadata-url": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_URL", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, - "hidden": true, "multiple": false, - "name": "metadata-url", - "required": false, "type": "option" }, - "metadata-user": { - "description": "User that initiated the deployment. Will be saved and displayed in the Shopify admin", - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_USER", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "metadata-user", - "required": false, "type": "option" }, - "metadata-version": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "hidden": true, - "multiple": false, - "name": "metadata-version", - "required": false, + "multiple": true, "type": "option" }, - "no-verify": { - "allowNo": false, - "description": "Skip the routability verification step after deployment.", - "name": "no-verify", - "required": false, - "type": "boolean" - }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "role": { + "description": "Only list themes with the given role.", + "env": "SHOPIFY_FLAG_ROLE", + "name": "role", "hasDynamicHelp": false, "multiple": false, - "name": "path", + "options": [ + "live", + "unpublished", + "development" + ], "type": "option" }, - "preview": { - "allowNo": false, - "description": "Deploys to the Preview environment.", - "name": "preview", - "required": false, - "type": "boolean" - }, - "shop": { - "char": "s", - "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", - "env": "SHOPIFY_SHOP", + "name": { + "description": "Only list themes that contain the given name.", + "env": "SHOPIFY_FLAG_NAME", + "name": "name", "hasDynamicHelp": false, "multiple": false, - "name": "shop", "type": "option" }, - "token": { - "char": "t", - "description": "Oxygen deployment token. Defaults to the linked storefront's token if available.", - "env": "SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN", + "id": { + "description": "Only list theme with the given ID.", + "env": "SHOPIFY_FLAG_ID", + "name": "id", "hasDynamicHelp": false, "multiple": false, - "name": "token", - "required": false, "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:deploy", + "hiddenAliases": [], + "id": "theme:list", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:dev": { - "aliases": [ + "strict": true, + "multiEnvironmentsFlags": [ + "store", + "password" ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Runs Hydrogen storefront in an Oxygen worker for development.", - "descriptionWithMarkdown": "Runs a Hydrogen storefront in a local runtime that emulates an Oxygen worker for development.\n\n If your project is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) to a Hydrogen storefront, then its environment variables will be loaded with the runtime.", - "enableJsonFlag": false, + "customPluginName": "@shopify/theme" + }, + "theme:metafields:pull": { + "aliases": [], + "args": {}, + "description": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", "flags": { - "codegen": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", - "name": "codegen", - "required": false, "type": "boolean" }, - "codegen-config-path": { - "dependsOn": [ - "codegen" - ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "codegen-config-path", - "required": false, "type": "option" }, - "customer-account-push": { - "allowNo": false, - "description": "Use tunneling for local development and push the tunneling domain to admin. Required to use Customer Account API's OAuth flow", - "env": "SHOPIFY_HYDROGEN_FLAG_CUSTOMER_ACCOUNT_PUSH", - "name": "customer-account-push", - "required": false, - "type": "boolean" + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "debug": { - "allowNo": false, - "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", - "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", - "name": "debug", - "type": "boolean" + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "disable-deps-optimizer": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", "allowNo": false, - "description": "Disable adding dependencies to Vite's `ssr.optimizeDeps.include` automatically", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_DEPS_OPTIMIZER", - "name": "disable-deps-optimizer", "type": "boolean" - }, - "disable-version-check": { + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "theme:metafields:pull", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Download metafields definitions from your shop into a local file.", + "descriptionWithMarkdown": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" + }, + "theme:open": { + "aliases": [], + "args": {}, + "description": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", + "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Skip the version check when running `hydrogen dev`", - "name": "disable-version-check", - "required": false, "type": "boolean" }, - "disable-virtual-routes": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "description": "Disable rendering fallback routes when a route file doesn't exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_VIRTUAL_ROUTES", - "name": "disable-virtual-routes", "type": "boolean" }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "entry", "type": "option" }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "env", "type": "option" }, - "env-branch": { - "deprecated": { - "message": "--env-branch is deprecated. Use --env instead.", - "to": "env" - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "env-branch", "type": "option" }, - "env-file": { - "default": ".env", - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "env-file", - "required": false, + "multiple": true, "type": "option" }, - "host": { + "development": { + "char": "d", + "description": "Open your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "allowNo": false, - "description": "Expose the server to the local network", - "name": "host", - "required": false, "type": "boolean" }, - "inspector-port": { - "description": "The port where the inspector is available. Defaults to 9229.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", - "hasDynamicHelp": false, - "multiple": false, - "name": "inspector-port", - "type": "option" + "editor": { + "char": "E", + "description": "Open the theme editor for the specified theme in the browser.", + "env": "SHOPIFY_FLAG_EDITOR", + "name": "editor", + "allowNo": false, + "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" + "live": { + "char": "l", + "description": "Open your live (published) theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "allowNo": false, + "type": "boolean" }, - "port": { - "description": "The port to run the server on. Defaults to 3000.", - "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "port", - "required": false, "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Outputs more information about the command's execution.", - "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", - "name": "verbose", - "required": false, - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:dev", + "hiddenAliases": [], + "id": "theme:open", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Opens the preview of your remote theme.", + "descriptionWithMarkdown": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "hydrogen:env:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "List the environments on your linked Hydrogen storefront.", - "descriptionWithMarkdown": "Lists all environments available on the linked Hydrogen storefront.", - "enableJsonFlag": false, + "theme:package": { + "aliases": [], + "args": {}, + "description": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the \"default Shopify theme folder structure\" (https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per \"Theme Store requirements\" (https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your \"settings_schema.json\" (https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", "flags": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:env:list", + "hiddenAliases": [], + "id": "theme:package", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Package your theme into a .zip file, ready to upload to the Online Store.", + "descriptionWithMarkdown": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the [default Shopify theme folder structure](https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per [Theme Store requirements](https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your [settings_schema.json](https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "hydrogen:env:pull": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Populate your .env with variables from your Hydrogen storefront.", - "descriptionWithMarkdown": "Pulls environment variables from the linked Hydrogen storefront and writes them to an `.env` file.", - "enableJsonFlag": false, + "theme:profile": { + "aliases": [], + "args": {}, + "description": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", "flags": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "env", "type": "option" }, - "env-branch": { - "deprecated": { - "message": "--env-branch is deprecated. Use --env instead.", - "to": "env" - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "env-branch", "type": "option" }, - "env-file": { - "default": ".env", - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "env-file", - "required": false, "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "type": "boolean" + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "url": { + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", + "name": "url", + "default": "/", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "name": "store-password", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" + }, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:env:pull", + "hiddenAliases": [], + "id": "theme:profile", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:env:push": { - "aliases": [ + "strict": true, + "summary": "Profile the Liquid rendering of a theme page.", + "usage": [ + "theme profile", + "theme profile --url /products/classic-leather-jacket" ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Push environment variables from the local .env file to your linked Hydrogen storefront.", - "enableJsonFlag": false, + "descriptionWithMarkdown": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" + }, + "theme:publish": { + "aliases": [], + "args": {}, + "description": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", "flags": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "env", "type": "option" }, - "env-file": { - "default": ".env", - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "env-file", - "required": false, "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:env:push", + "hiddenAliases": [], + "id": "theme:publish", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:g": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Shortcut for `hydrogen generate`. See `hydrogen generate --help` for more information.", - "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ + "strict": true, + "summary": "Set a remote theme as the live theme.", + "descriptionWithMarkdown": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", + "multiEnvironmentsFlags": [ + "store", + "password", + "theme" ], - "id": "hydrogen:g", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false + "customPluginName": "@shopify/theme" }, - "hydrogen:generate:route": { - "aliases": [ - ], - "args": { - "routeName": { - "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,tokenlessApi,all.", - "name": "routeName", - "options": [ - "home", - "page", - "cart", - "products", - "collections", - "policies", - "blogs", - "account", - "search", - "robots", - "sitemap", - "tokenlessApi", - "all" - ], - "required": true - } - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Generates a standard Shopify route.", - "descriptionWithMarkdown": "Generates a set of default routes from the starter template.", - "enableJsonFlag": false, + "theme:pull": { + "aliases": [], + "args": {}, + "description": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", "flags": { - "adapter": { - "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "hasDynamicHelp": false, - "multiple": false, - "name": "adapter", - "type": "option" + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "force": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "locale-param", "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "typescript": { - "allowNo": false, - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:generate:route", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:generate:routes": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Generates all supported standard shopify routes.", - "enableJsonFlag": false, - "flags": { - "adapter": { - "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "adapter", "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "type": "boolean" + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "only": { + "char": "o", + "description": "Download only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_ONLY", + "name": "only", "hasDynamicHelp": false, - "multiple": false, - "name": "locale-param", + "multiple": true, "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "ignore": { + "char": "x", + "description": "Skip downloading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_IGNORE", + "name": "ignore", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "typescript": { + "development": { + "char": "d", + "description": "Pull theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, + "type": "boolean" + }, + "live": { + "char": "l", + "description": "Pull theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "allowNo": false, + "type": "boolean" + }, + "nodelete": { + "char": "n", + "description": "Prevent deleting local files that don't exist remotely.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "allowNo": false, + "type": "boolean" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", "allowNo": false, - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:generate:routes", + "hiddenAliases": [], + "id": "theme:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:init": { - "aliases": [ + "strict": true, + "summary": "Download your remote theme files locally.", + "descriptionWithMarkdown": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", + "multiEnvironmentsFlags": [ + "store", + "password", + "path", + [ + "live", + "development", + "theme" + ] ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Creates a new Hydrogen storefront.", - "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", - "enableJsonFlag": false, + "customPluginName": "@shopify/theme" + }, + "theme:push": { + "aliases": [], + "args": {}, + "description": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", "flags": { - "force": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, - "git": { - "allowNo": true, - "description": "Init Git and create initial commits.", - "env": "SHOPIFY_HYDROGEN_FLAG_GIT", - "name": "git", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, - "install-deps": { - "allowNo": true, - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", - "type": "boolean" + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "language": { - "description": "Sets the template language to use. One of `js` or `ts`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LANGUAGE", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "language", "type": "option" }, - "markets": { - "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", - "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "markets", "type": "option" }, - "mock-shop": { - "allowNo": false, - "description": "Use mock.shop as the data source for the storefront.", - "env": "SHOPIFY_HYDROGEN_FLAG_MOCK_DATA", - "name": "mock-shop", - "type": "boolean" + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" }, - "package-manager": { - "env": "SHOPIFY_HYDROGEN_FLAG_PACKAGE_MANAGER", + "only": { + "char": "o", + "description": "Upload only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_ONLY", + "name": "only", "hasDynamicHelp": false, - "hidden": true, - "multiple": false, - "name": "package-manager", - "options": [ - "npm", - "yarn", - "pnpm", - "unknown" - ], + "multiple": true, "type": "option" }, - "path": { - "description": "The path to the directory of the new Hydrogen storefront.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "ignore": { + "char": "x", + "description": "Skip uploading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_IGNORE", + "name": "ignore", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "json": { + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "allowNo": false, + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "quickstart": { + "development": { + "char": "d", + "description": "Push theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "allowNo": false, - "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --routes --markets none`", - "env": "SHOPIFY_HYDROGEN_FLAG_QUICKSTART", - "name": "quickstart", "type": "boolean" }, - "routes": { - "allowNo": true, - "description": "Generate routes for all pages.", - "env": "SHOPIFY_HYDROGEN_FLAG_ROUTES", - "name": "routes", + "live": { + "char": "l", + "description": "Push theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "allowNo": false, "type": "boolean" }, - "shortcut": { - "allowNo": true, - "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", - "name": "shortcut", + "unpublished": { + "char": "u", + "description": "Create a new unpublished theme and push to it.", + "env": "SHOPIFY_FLAG_UNPUBLISHED", + "name": "unpublished", + "allowNo": false, "type": "boolean" }, - "styling": { - "description": "Sets the styling strategy to use. One of `tailwind`, `vanilla-extract`, `css-modules`, `postcss`, `none`.", - "env": "SHOPIFY_HYDROGEN_FLAG_STYLING", - "hasDynamicHelp": false, - "multiple": false, - "name": "styling", - "type": "option" + "nodelete": { + "char": "n", + "description": "Prevent deleting remote files that don't exist locally.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "allowNo": false, + "type": "boolean" }, - "template": { - "description": "Scaffolds project based on an existing template or example from the Hydrogen repository.", - "env": "SHOPIFY_HYDROGEN_FLAG_TEMPLATE", + "allow-live": { + "char": "a", + "description": "Allow push to a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "allowNo": false, + "type": "boolean" + }, + "publish": { + "char": "p", + "description": "Publish as the live theme after uploading.", + "env": "SHOPIFY_FLAG_PUBLISH", + "name": "publish", + "allowNo": false, + "type": "boolean" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "strict": { + "description": "Require theme check to pass without errors before pushing. Warnings are allowed.", + "env": "SHOPIFY_FLAG_STRICT_PUSH", + "name": "strict", + "allowNo": false, + "type": "boolean" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "name": "listing", "hasDynamicHelp": false, "multiple": false, - "name": "template", "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:init", + "hiddenAliases": [], + "id": "theme:push", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:link": { - "aliases": [ + "strict": true, + "summary": "Uploads your local theme files to the connected store, overwriting the remote version if specified.", + "usage": [ + "theme push", + "theme push --unpublished --json" ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Link a local project to one of your shop's Hydrogen storefronts.", - "descriptionWithMarkdown": "Links your local development environment to a remote Hydrogen storefront. You can link an unlimited number of development environments to a single Hydrogen storefront.\n\n Linking to a Hydrogen storefront enables you to run [dev](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-dev) and automatically inject your linked Hydrogen storefront's environment variables directly into the server runtime.\n\n After you run the `link` command, you can access the [env list](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-list), [env pull](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-pull), and [unlink](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-unlink) commands.", - "enableJsonFlag": false, + "descriptionWithMarkdown": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", + "multiEnvironmentsFlags": [ + "store", + "password", + "path", + [ + "live", + "development", + "theme" + ] + ], + "customPluginName": "@shopify/theme" + }, + "theme:rename": { + "aliases": [], + "args": {}, + "description": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", "flags": { - "force": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "storefront": { - "description": "The name of a Hydrogen Storefront (e.g. \"Jane's Apparel\")", - "env": "SHOPIFY_HYDROGEN_STOREFRONT", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "storefront", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:link", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Returns a list of Hydrogen storefronts available on a given shop.", - "descriptionWithMarkdown": "Lists all remote Hydrogen storefronts available to link to your local development environment.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:list", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:login": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Login to your Shopify account.", - "descriptionWithMarkdown": "Logs in to the specified shop and saves the shop domain to the project.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "path", + "multiple": true, "type": "option" }, - "shop": { - "char": "s", - "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", - "env": "SHOPIFY_SHOP", + "name": { + "char": "n", + "description": "The new name for the theme.", + "env": "SHOPIFY_FLAG_NEW_NAME", + "name": "name", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "shop", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:login", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "hydrogen:logout": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Logout of your local session.", - "descriptionWithMarkdown": "Log out from the current shop.", - "enableJsonFlag": false, - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + }, + "development": { + "char": "d", + "description": "Rename your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "allowNo": false, + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" + }, + "live": { + "char": "l", + "description": "Rename your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:logout", + "hiddenAliases": [], + "id": "theme:rename", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:preview": { - "aliases": [ + "strict": true, + "summary": "Renames an existing theme.", + "descriptionWithMarkdown": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", + "multiEnvironmentsFlags": [ + "store", + "password", + "name", + [ + "live", + "development", + "theme" + ] ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Runs a Hydrogen storefront in an Oxygen worker for production.", - "descriptionWithMarkdown": "Runs a server in your local development environment that serves your Hydrogen app's production build. Requires running the [build](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-build) command first.", - "enableJsonFlag": false, + "customPluginName": "@shopify/theme" + }, + "theme:serve": { + "aliases": [], + "args": {}, + "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", "flags": { - "build": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "description": "Builds the app before starting the preview server.", - "name": "build", "type": "boolean" }, - "codegen": { + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "allowNo": false, - "dependsOn": [ - "build" - ], - "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", - "name": "codegen", - "required": false, "type": "boolean" }, - "codegen-config-path": { - "dependsOn": [ - "codegen" - ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "codegen-config-path", - "required": false, "type": "option" }, - "debug": { - "allowNo": false, - "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", - "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", - "name": "debug", - "type": "boolean" - }, - "entry": { - "dependsOn": [ - "build" - ], - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "entry", "type": "option" }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, "multiple": false, - "name": "env", "type": "option" }, - "env-branch": { - "deprecated": { - "message": "--env-branch is deprecated. Use --env instead.", - "to": "env" - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", "hasDynamicHelp": false, - "multiple": false, - "name": "env-branch", + "multiple": true, "type": "option" }, - "env-file": { - "default": ".env", - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "host": { + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", + "env": "SHOPIFY_FLAG_HOST", + "name": "host", "hasDynamicHelp": false, "multiple": false, - "name": "env-file", - "required": false, "type": "option" }, - "inspector-port": { - "description": "The port where the inspector is available. Defaults to 9229.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "live-reload": { + "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", + "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "name": "live-reload", + "default": "hot-reload", "hasDynamicHelp": false, "multiple": false, - "name": "inspector-port", + "options": [ + "hot-reload", + "full-page", + "off" + ], "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "error-overlay": { + "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", + "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "name": "error-overlay", + "default": "default", "hasDynamicHelp": false, "multiple": false, - "name": "path", + "options": [ + "silent", + "default" + ], "type": "option" }, + "poll": { + "description": "Force polling to detect file changes.", + "env": "SHOPIFY_FLAG_POLL", + "hidden": true, + "name": "poll", + "allowNo": false, + "type": "boolean" + }, + "theme-editor-sync": { + "description": "Synchronize Theme Editor updates in the local theme files.", + "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", + "name": "theme-editor-sync", + "allowNo": false, + "type": "boolean" + }, "port": { - "description": "The port to run the server on. Defaults to 3000.", - "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "description": "Local port to serve theme preview from.", + "env": "SHOPIFY_FLAG_PORT", + "name": "port", "hasDynamicHelp": false, "multiple": false, - "name": "port", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Outputs more information about the command's execution.", - "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", - "name": "verbose", - "required": false, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "name": "theme", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "name": "listing", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "nodelete": { + "char": "n", + "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "allowNo": false, "type": "boolean" }, - "watch": { + "only": { + "char": "o", + "description": "Hot reload only files that match the specified pattern.", + "env": "SHOPIFY_FLAG_ONLY", + "name": "only", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "ignore": { + "char": "x", + "description": "Skip hot reloading any files that match the specified pattern.", + "env": "SHOPIFY_FLAG_IGNORE", + "name": "ignore", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "name": "notify", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "open": { + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "allowNo": false, + "type": "boolean" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "name": "store-password", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "allow-live": { + "char": "a", + "description": "Allow development on a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", "allowNo": false, - "dependsOn": [ - "build" - ], - "description": "Watches for changes and rebuilds the project.", - "name": "watch", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:preview", + "hidden": true, + "hiddenAliases": [], + "id": "theme:serve", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time.", + "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "multiEnvironmentsFlags": null, + "customPluginName": "@shopify/theme" }, - "hydrogen:setup": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Scaffold routes and core functionality.", - "enableJsonFlag": false, + "theme:share": { + "aliases": [], + "args": {}, + "description": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", "flags": { - "force": { + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, - "install-deps": { - "allowNo": true, - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "allowNo": false, "type": "boolean" }, - "markets": { - "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", - "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "noCacheDefault": true, "hasDynamicHelp": false, "multiple": false, - "name": "markets", "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "name": "password", "hasDynamicHelp": false, "multiple": false, - "name": "path", "type": "option" }, - "shortcut": { - "allowNo": true, - "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", - "name": "shortcut", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "hasDynamicHelp": false, + "multiple": true, + "type": "option" + }, + "force": { + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "allowNo": false, "type": "boolean" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "name": "listing", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup", + "hiddenAliases": [], + "id": "theme:share", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Creates a shareable, unpublished, and new theme on your theme library with a randomized name.", + "descriptionWithMarkdown": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", + "multiEnvironmentsFlags": [ + "store", + "password", + "path" + ], + "customPluginName": "@shopify/theme" }, - "hydrogen:setup:css": { - "aliases": [ + "plugins": { + "aliases": [], + "args": {}, + "description": "List installed plugins.", + "examples": [ + "<%= config.bin %> <%= command.id %>" ], - "args": { - "strategy": { - "description": "The CSS strategy to setup. One of tailwind,vanilla-extract,css-modules,postcss", - "name": "strategy", - "options": [ - "tailwind", - "vanilla-extract", - "css-modules", - "postcss" - ] - } - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Setup CSS strategies for your project.", - "descriptionWithMarkdown": "Adds support for certain CSS strategies to your project.", - "enableJsonFlag": false, "flags": { - "force": { + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", "allowNo": false, - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, - "install-deps": { - "allowNo": true, - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", + "core": { + "description": "Show core plugins.", + "name": "core", + "allowNo": false, "type": "boolean" - }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup:css", + "hidden": true, + "hiddenAliases": [], + "id": "plugins", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" }, - "hydrogen:setup:markets": { - "aliases": [ - ], + "plugins:inspect": { + "aliases": [], "args": { - "strategy": { - "description": "The URL structure strategy to setup multiple markets. One of subfolders,domains,subdomains", - "name": "strategy", - "options": [ - "subfolders", - "domains", - "subdomains" - ] + "plugin": { + "default": ".", + "description": "Plugin to inspect.", + "name": "plugin", + "required": true } }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Setup support for multiple markets in your project.", - "descriptionWithMarkdown": "Adds support for multiple [markets](https://shopify.dev/docs/custom-storefronts/hydrogen/markets) to your project by using the URL structure.", - "enableJsonFlag": false, + "description": "Displays installation properties of a plugin.", + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " + ], "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", + "allowNo": false, + "type": "boolean" + }, + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "char": "v", + "name": "verbose", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup:markets", + "hiddenAliases": [], + "id": "plugins:inspect", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": false, + "usage": "plugins:inspect PLUGIN...", + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" }, - "hydrogen:setup:vite": { + "plugins:install": { "aliases": [ + "plugins:add" ], "args": { + "plugin": { + "description": "Plugin to install.", + "name": "plugin", + "required": true + } }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "EXPERIMENTAL: Upgrades the project to use Vite.", - "enableJsonFlag": false, + "description": "", + "examples": [ + { + "command": "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> ", + "description": "Install a plugin from npm registry." + }, + { + "command": "<%= config.bin %> <%= command.id %> https://github.com/someuser/someplugin", + "description": "Install a plugin from a github url." + }, + { + "command": "<%= config.bin %> <%= command.id %> someuser/someplugin", + "description": "Install a plugin from a github slug." + } + ], "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", + "allowNo": false, + "type": "boolean" + }, + "force": { + "char": "f", + "description": "Force npm to fetch remote resources even if a local copy exists on disk.", + "name": "force", + "allowNo": false, + "type": "boolean" + }, + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", + "allowNo": false, + "type": "boolean" + }, + "jit": { + "hidden": true, + "name": "jit", + "allowNo": false, + "type": "boolean" + }, + "silent": { + "char": "s", + "description": "Silences npm output.", + "exclusive": [ + "verbose" + ], + "name": "silent", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "char": "v", + "description": "Show verbose npm output.", + "exclusive": [ + "silent" + ], + "name": "verbose", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:setup:vite", + "hiddenAliases": [], + "id": "plugins:install", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": false, + "summary": "Installs a plugin into <%= config.bin %>.", + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-plugins" }, - "hydrogen:shortcut": { - "aliases": [ - ], + "plugins:link": { + "aliases": [], "args": { + "path": { + "default": ".", + "description": "path to plugin", + "name": "path", + "required": true + } }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Creates a global `h2` shortcut for the Hydrogen CLI", - "descriptionWithMarkdown": "Creates a global h2 shortcut for Shopify CLI using shell aliases.\n\n The following shells are supported:\n\n - Bash (using `~/.bashrc`)\n - ZSH (using `~/.zshrc`)\n - Fish (using `~/.config/fish/functions`)\n - PowerShell (added to `$PROFILE`)\n\n After the alias is created, you can call Shopify CLI from anywhere in your project using `h2 `.", - "enableJsonFlag": false, + "description": "Installation of a linked plugin will override a user-installed or core plugin.\n\ne.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' command will override the user-installed or core plugin implementation. This is useful for development work.\n", + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " + ], "flags": { + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", + "allowNo": false, + "type": "boolean" + }, + "install": { + "description": "Install dependencies after linking the plugin.", + "name": "install", + "allowNo": true, + "type": "boolean" + }, + "verbose": { + "char": "v", + "name": "verbose", + "allowNo": false, + "type": "boolean" + } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:shortcut", + "hiddenAliases": [], + "id": "plugins:link", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "hydrogen:unlink": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Unlink a local project from a Hydrogen storefront.", - "descriptionWithMarkdown": "Unlinks your local development environment from a remote Hydrogen storefront.", + "strict": true, + "summary": "Links a plugin into the CLI for development.", "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" + }, + "plugins:reset": { + "aliases": [], + "args": {}, "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" + "hard": { + "name": "hard", + "summary": "Delete node_modules and package manager related files in addition to uninstalling plugins.", + "allowNo": false, + "type": "boolean" + }, + "reinstall": { + "name": "reinstall", + "summary": "Reinstall all plugins after uninstalling.", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:unlink", + "hiddenAliases": [], + "id": "plugins:reset", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "summary": "Remove all user-installed and linked plugins.", + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" }, - "hydrogen:upgrade": { + "plugins:uninstall": { "aliases": [ + "plugins:unlink", + "plugins:remove" ], "args": { + "plugin": { + "description": "plugin to uninstall", + "name": "plugin" + } }, - "customPluginName": "@shopify/cli-hydrogen", - "description": "Upgrade Remix and Hydrogen npm dependencies.", - "descriptionWithMarkdown": "Upgrade Hydrogen project dependencies, preview features, fixes and breaking changes. The command also generates an instruction file for each upgrade.", - "enableJsonFlag": false, + "description": "Removes a plugin from the CLI.", + "examples": [ + "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %>" + ], "flags": { - "force": { + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", "allowNo": false, - "char": "f", - "description": "Ignore warnings and force the upgrade to the target version", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "type": "option" - }, - "version": { + "verbose": { "char": "v", - "description": "A target hydrogen version to update to", - "hasDynamicHelp": false, - "multiple": false, - "name": "version", - "required": false, - "type": "option" + "name": "verbose", + "allowNo": false, + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "hydrogen:upgrade", + "hiddenAliases": [], + "id": "plugins:uninstall", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": false, + "enableJsonFlag": false, + "customPluginName": "@oclif/plugin-plugins" }, - "kitchen-sink": { - "aliases": [ - ], - "args": { - }, - "description": "View all the available UI kit components", - "enableJsonFlag": false, + "plugins:update": { + "aliases": [], + "args": {}, + "description": "Update installed plugins.", "flags": { + "help": { + "char": "h", + "description": "Show CLI help.", + "name": "help", + "allowNo": false, + "type": "boolean" + }, + "verbose": { + "char": "v", + "name": "verbose", + "allowNo": false, + "type": "boolean" + } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - "kitchen-sink all" - ], - "id": "kitchen-sink", + "hiddenAliases": [], + "id": "plugins:update", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "kitchen-sink:async": { - "aliases": [ - ], - "args": { - }, - "description": "View the UI kit components that process async tasks", + "strict": true, "enableJsonFlag": false, - "flags": { - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "kitchen-sink:async", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true + "customPluginName": "@oclif/plugin-plugins" }, - "kitchen-sink:prompts": { - "aliases": [ - ], - "args": { - }, - "description": "View the UI kit components prompts", - "enableJsonFlag": false, - "flags": { - }, + "config:autocorrect:off": { + "aliases": [], + "args": {}, + "description": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "flags": {}, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "kitchen-sink:prompts", + "hiddenAliases": [], + "id": "config:autocorrect:off", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "kitchen-sink:static": { - "aliases": [ - ], - "args": { - }, - "description": "View the UI kit components that display static output", + "strict": true, + "summary": "Disable autocorrect. Off by default.", "enableJsonFlag": false, - "flags": { - }, + "descriptionWithMarkdown": "Disable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "customPluginName": "@shopify/plugin-did-you-mean" + }, + "config:autocorrect:status": { + "aliases": [], + "args": {}, + "description": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "flags": {}, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "kitchen-sink:static", + "hiddenAliases": [], + "id": "config:autocorrect:status", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "notifications:generate": { - "aliases": [ - ], - "args": { - }, - "description": "Generate a notifications.json file for the the CLI, appending a new notification to the current file.", + "strict": true, + "summary": "Check whether autocorrect is enabled or disabled. On by default.", "enableJsonFlag": false, - "flags": { - }, + "descriptionWithMarkdown": "Check whether autocorrect is enabled or disabled. On by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "customPluginName": "@shopify/plugin-did-you-mean" + }, + "config:autocorrect:on": { + "aliases": [], + "args": {}, + "description": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "flags": {}, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "notifications:generate", + "hiddenAliases": [], + "id": "config:autocorrect:on", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "notifications:list": { - "aliases": [ - ], - "args": { - }, - "description": "List current notifications configured for the CLI.", + "strict": true, + "summary": "Enable autocorrect. Off by default.", "enableJsonFlag": false, + "descriptionWithMarkdown": "Enable autocorrect. Off by default.\n\n When autocorrection is enabled, Shopify CLI automatically runs a corrected version of your command if a correction is available.\n\n When autocorrection is disabled, you need to confirm that you want to run corrections for mistyped commands.\n", + "customPluginName": "@shopify/plugin-did-you-mean" + }, + "commands": { + "aliases": [], + "args": {}, + "description": "List all <%= config.bin %> commands.", "flags": { - "ignore-errors": { + "json": { + "description": "Format output as json.", + "helpGroup": "GLOBAL", + "name": "json", "allowNo": false, - "description": "Don't fail if an error occurs.", - "env": "SHOPIFY_FLAG_IGNORE_ERRORS", - "hidden": false, - "name": "ignore-errors", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "notifications:list", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "plugins": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "List installed plugins.", - "enableJsonFlag": true, - "examples": [ - "<%= config.bin %> <%= command.id %>" - ], - "flags": { - "core": { + }, + "columns": { + "char": "c", + "description": "Only show provided columns (comma-separated).", + "exclusive": [ + "tree" + ], + "name": "columns", + "delimiter": ",", + "hasDynamicHelp": false, + "multiple": true, + "options": [ + "id", + "plugin", + "summary", + "type" + ], + "type": "option" + }, + "deprecated": { + "description": "Show deprecated commands.", + "name": "deprecated", "allowNo": false, - "description": "Show core plugins.", - "name": "core", "type": "boolean" }, - "json": { + "extended": { + "char": "x", + "description": "Show extra columns.", + "exclusive": [ + "tree" + ], + "name": "extended", "allowNo": false, - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "plugins", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true - }, - "plugins:inspect": { - "aliases": [ - ], - "args": { - "plugin": { - "default": ".", - "description": "Plugin to inspect.", - "name": "plugin", - "required": true - } - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "Displays installation properties of a plugin.", - "enableJsonFlag": true, - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " - ], - "flags": { - "help": { + }, + "hidden": { + "description": "Show hidden commands.", + "name": "hidden", "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, - "json": { + "no-truncate": { + "description": "Do not truncate output.", + "exclusive": [ + "tree" + ], + "name": "no-truncate", "allowNo": false, - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", "type": "boolean" }, - "verbose": { + "sort": { + "description": "Property to sort by.", + "exclusive": [ + "tree" + ], + "name": "sort", + "default": "id", + "hasDynamicHelp": false, + "multiple": false, + "options": [ + "id", + "plugin", + "summary", + "type" + ], + "type": "option" + }, + "tree": { + "description": "Show tree of commands.", + "name": "tree", "allowNo": false, - "char": "v", - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:inspect", + "hiddenAliases": [], + "id": "commands", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false, - "usage": "plugins:inspect PLUGIN..." + "strict": true, + "enableJsonFlag": true, + "customPluginName": "@oclif/plugin-commands" }, - "plugins:install": { - "aliases": [ - "plugins:add" - ], - "args": { - "plugin": { - "description": "Plugin to install.", - "name": "plugin", - "required": true - } - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "", - "enableJsonFlag": true, - "examples": [ - { - "command": "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> ", - "description": "Install a plugin from npm registry." + "hydrogen:dev": { + "aliases": [], + "args": {}, + "description": "Runs Hydrogen storefront in an Oxygen worker for development.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - { - "command": "<%= config.bin %> <%= command.id %> https://github.com/someuser/someplugin", - "description": "Install a plugin from a github url." + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - { - "command": "<%= config.bin %> <%= command.id %> someuser/someplugin", - "description": "Install a plugin from a github slug." - } - ], - "flags": { - "force": { + "port": { + "description": "The port to run the server on. Defaults to 3000.", + "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "name": "port", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "codegen": { + "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", + "name": "codegen", + "required": false, "allowNo": false, - "char": "f", - "description": "Force npm to fetch remote resources even if a local copy exists on disk.", - "name": "force", "type": "boolean" }, - "help": { + "codegen-config-path": { + "dependsOn": [ + "codegen" + ], + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "name": "codegen-config-path", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "disable-virtual-routes": { + "description": "Disable rendering fallback routes when a route file doesn't exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_VIRTUAL_ROUTES", + "name": "disable-virtual-routes", "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, - "jit": { + "debug": { + "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", + "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", + "name": "debug", "allowNo": false, - "hidden": true, - "name": "jit", "type": "boolean" }, - "json": { + "inspector-port": { + "description": "The port where the inspector is available. Defaults to 9229.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "name": "inspector-port", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "env-branch": { + "deprecated": { + "to": "env", + "message": "--env-branch is deprecated. Use --env instead." + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "name": "env-branch", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "env-file": { + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "name": "env-file", + "required": false, + "default": ".env", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "disable-version-check": { + "description": "Skip the version check when running `hydrogen dev`", + "name": "disable-version-check", + "required": false, "allowNo": false, - "description": "Format output as json.", - "helpGroup": "GLOBAL", - "name": "json", "type": "boolean" }, - "silent": { + "customer-account-push": { + "description": "Use tunneling for local development and push the tunneling domain to admin. Required to use Customer Account API's OAuth flow", + "env": "SHOPIFY_HYDROGEN_FLAG_CUSTOMER_ACCOUNT_PUSH", + "name": "customer-account-push", + "required": false, "allowNo": false, - "char": "s", - "description": "Silences npm output.", - "exclusive": [ - "verbose" - ], - "name": "silent", "type": "boolean" }, "verbose": { - "allowNo": false, - "char": "v", - "description": "Show verbose npm output.", - "exclusive": [ - "silent" - ], + "description": "Outputs more information about the command's execution.", + "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", "name": "verbose", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:install", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false, - "summary": "Installs a plugin into <%= config.bin %>." - }, - "plugins:link": { - "aliases": [ - ], - "args": { - "path": { - "default": ".", - "description": "path to plugin", - "name": "path", - "required": true - } - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "Installation of a linked plugin will override a user-installed or core plugin.\n\ne.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello' command will override the user-installed or core plugin implementation. This is useful for development work.\n", - "enableJsonFlag": false, - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %> " - ], - "flags": { - "help": { + "required": false, "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, - "install": { - "allowNo": true, - "description": "Install dependencies after linking the plugin.", - "name": "install", + "host": { + "description": "Expose the server to the local network", + "name": "host", + "required": false, + "allowNo": false, "type": "boolean" }, - "verbose": { + "disable-deps-optimizer": { + "description": "Disable adding dependencies to Vite's `ssr.optimizeDeps.include` automatically", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_DEPS_OPTIMIZER", + "name": "disable-deps-optimizer", "allowNo": false, - "char": "v", - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:link", + "hiddenAliases": [], + "id": "hydrogen:dev", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Links a plugin into the CLI for development." - }, - "plugins:reset": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@oclif/plugin-plugins", "enableJsonFlag": false, + "descriptionWithMarkdown": "Runs a Hydrogen storefront in a local runtime that emulates an Oxygen worker for development.\n\n If your project is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) to a Hydrogen storefront, then its environment variables will be loaded with the runtime.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:build": { + "aliases": [], + "args": {}, + "description": "Builds a Hydrogen storefront for production.", "flags": { - "hard": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "sourcemap": { + "description": "Controls whether server sourcemaps are generated. Default to `true`. Deactivate `--no-sourcemaps`.", + "env": "SHOPIFY_HYDROGEN_FLAG_SOURCEMAP", + "name": "sourcemap", + "allowNo": true, + "type": "boolean" + }, + "lockfile-check": { + "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", + "name": "lockfile-check", + "allowNo": true, + "type": "boolean" + }, + "disable-route-warning": { + "description": "Disables any warnings about missing standard routes.", + "env": "SHOPIFY_HYDROGEN_FLAG_DISABLE_ROUTE_WARNING", + "name": "disable-route-warning", "allowNo": false, - "name": "hard", - "summary": "Delete node_modules and package manager related files in addition to uninstalling plugins.", "type": "boolean" }, - "reinstall": { + "codegen": { + "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", + "name": "codegen", + "required": false, "allowNo": false, - "name": "reinstall", - "summary": "Reinstall all plugins after uninstalling.", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:reset", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Remove all user-installed and linked plugins." - }, - "plugins:uninstall": { - "aliases": [ - "plugins:unlink", - "plugins:remove" - ], - "args": { - "plugin": { - "description": "plugin to uninstall", - "name": "plugin" - } - }, - "customPluginName": "@oclif/plugin-plugins", - "description": "Removes a plugin from the CLI.", - "enableJsonFlag": false, - "examples": [ - "<%= config.bin %> <%= command.id %> <%- config.pjson.oclif.examplePlugin || \"myplugin\" %>" - ], - "flags": { - "help": { + }, + "codegen-config-path": { + "dependsOn": [ + "codegen" + ], + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "name": "codegen-config-path", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "watch": { + "description": "Watches for changes and rebuilds the project writing output to disk.", + "env": "SHOPIFY_HYDROGEN_FLAG_WATCH", + "name": "watch", "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", "type": "boolean" }, - "verbose": { + "bundle-stats": { + "description": "Show a bundle size summary after building. Defaults to true, use `--no-bundle-stats` to disable.", + "name": "bundle-stats", + "allowNo": true, + "type": "boolean" + }, + "force-client-sourcemap": { + "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", + "name": "force-client-sourcemap", "allowNo": false, - "char": "v", - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:uninstall", + "hiddenAliases": [], + "id": "hydrogen:build", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Builds a Hydrogen storefront for production. The client and app worker files are compiled to a `/dist` folder in your Hydrogen project directory.", + "customPluginName": "@shopify/cli-hydrogen" }, - "plugins:update": { - "aliases": [ - ], + "hydrogen:check": { + "aliases": [], "args": { + "resource": { + "description": "The resource to check. Currently only 'routes' is supported.", + "name": "resource", + "options": [ + "routes" + ], + "required": true + } }, - "customPluginName": "@oclif/plugin-plugins", - "description": "Update installed plugins.", - "enableJsonFlag": false, + "description": "Returns diagnostic information about a Hydrogen storefront.", "flags": { - "help": { - "allowNo": false, - "char": "h", - "description": "Show CLI help.", - "name": "help", - "type": "boolean" - }, - "verbose": { - "allowNo": false, - "char": "v", - "name": "verbose", - "type": "boolean" + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "plugins:update", + "hiddenAliases": [], + "id": "hydrogen:check", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true - }, - "search": { - "aliases": [ - ], - "args": { - "query": { - "name": "query" - } - }, - "description": "Starts a search on shopify.dev.", + "strict": true, "enableJsonFlag": false, - "examples": [ - "# open the search modal on Shopify.dev\n shopify search\n\n # search for a term on Shopify.dev\n shopify search \n\n # search for a phrase on Shopify.dev\n shopify search \"\"\n " - ], + "descriptionWithMarkdown": "Checks whether your Hydrogen app includes a set of standard Shopify routes.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:codegen": { + "aliases": [], + "args": {}, + "description": "Generate types for the Storefront API queries found in your project.", "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "codegen-config-path": { + "description": "Specify a path to a codegen configuration file. Defaults to `/codegen.ts` if it exists.", + "name": "codegen-config-path", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "force-sfapi-version": { + "description": "Force generating Storefront API types for a specific version instead of using the one provided in Hydrogen. A token can also be provided with this format: `:`.", + "hidden": true, + "name": "force-sfapi-version", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "watch": { + "description": "Watch the project for changes to update types on file save.", + "name": "watch", + "required": false, + "allowNo": false, + "type": "boolean" + } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "search", + "hiddenAliases": [], + "id": "hydrogen:codegen", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "usage": "search [query]" + "enableJsonFlag": false, + "descriptionWithMarkdown": "Automatically generates GraphQL types for your project’s Storefront API queries.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:check": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Calls and runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. \"Learn more about the checks that Theme Check runs.\" (https://shopify.dev/docs/themes/tools/theme-check/checks)", - "descriptionWithMarkdown": "Calls and runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. [Learn more about the checks that Theme Check runs.](https://shopify.dev/docs/themes/tools/theme-check/checks)", + "hydrogen:deploy": { + "aliases": [], + "args": {}, + "description": "Builds and deploys a Hydrogen storefront to Oxygen.", "flags": { - "auto-correct": { - "allowNo": false, - "char": "a", - "description": "Automatically fix offenses", - "env": "SHOPIFY_FLAG_AUTO_CORRECT", - "name": "auto-correct", - "required": false, - "type": "boolean" - }, - "config": { - "char": "C", - "description": "Use the config provided, overriding .theme-check.yml if present\n Supports all theme-check: config values, e.g., theme-check:theme-app-extension,\n theme-check:recommended, theme-check:all\n For backwards compatibility, :theme_app_extension is also supported ", - "env": "SHOPIFY_FLAG_CONFIG", + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "hasDynamicHelp": false, "multiple": false, - "name": "config", - "required": false, "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "fail-level": { - "default": "error", - "description": "Minimum severity for exit with error code", - "env": "SHOPIFY_FLAG_FAIL_LEVEL", + "env-branch": { + "deprecated": { + "to": "env", + "message": "--env-branch is deprecated. Use --env instead." + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "name": "env-branch", "hasDynamicHelp": false, "multiple": false, - "name": "fail-level", - "options": [ - "crash", - "error", - "suggestion", - "style", - "warning", - "info" - ], + "type": "option" + }, + "env-file": { + "description": "Path to an environment file to override existing environment variables for the deployment.", + "name": "env-file", "required": false, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "init": { - "allowNo": false, - "description": "Generate a .theme-check.yml file", - "env": "SHOPIFY_FLAG_INIT", - "name": "init", + "preview": { + "description": "Deploys to the Preview environment.", + "name": "preview", "required": false, + "allowNo": false, "type": "boolean" }, - "list": { - "allowNo": false, - "description": "List enabled checks", - "env": "SHOPIFY_FLAG_LIST", - "name": "list", + "force": { + "char": "f", + "description": "Forces a deployment to proceed if there are uncommited changes in its Git repository.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "required": false, + "allowNo": false, "type": "boolean" }, - "no-color": { + "no-verify": { + "description": "Skip the routability verification step after deployment.", + "name": "no-verify", + "required": false, "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "output": { - "char": "o", - "default": "text", - "description": "The output format to use", - "env": "SHOPIFY_FLAG_OUTPUT", - "hasDynamicHelp": false, - "multiple": false, - "name": "output", - "options": [ - "text", - "json" + "auth-bypass-token": { + "description": "Generate an authentication bypass token, which can be used to perform end-to-end tests against the deployment.", + "env": "AUTH_BYPASS_TOKEN", + "name": "auth-bypass-token", + "required": false, + "allowNo": false, + "type": "boolean" + }, + "auth-bypass-token-duration": { + "dependsOn": [ + "auth-bypass-token" ], + "description": "Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`", + "env": "AUTH_BYPASS_TOKEN_DURATION", + "name": "auth-bypass-token-duration", "required": false, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "build-command": { + "description": "Specify a build command to run before deploying. If not specified, `shopify hydrogen build` will be used.", + "name": "build-command", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "print": { - "allowNo": false, - "description": "Output active config to STDOUT", - "env": "SHOPIFY_FLAG_PRINT", - "name": "print", - "required": false, + "lockfile-check": { + "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", + "name": "lockfile-check", + "allowNo": true, "type": "boolean" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "version": { - "allowNo": false, - "char": "v", - "description": "Print Theme Check version", - "env": "SHOPIFY_FLAG_VERSION", - "name": "version", - "required": false, - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:check", - "multiEnvironmentsFlags": [ - "path" - ], - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Validate the theme." - }, - "theme:console": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", - "descriptionWithMarkdown": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", - "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "shop": { + "char": "s", + "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", + "env": "SHOPIFY_SHOP", + "name": "shop", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", + "json-output": { + "description": "Create a JSON file containing the deployment details in CI environments. Defaults to true, use `--no-json-output` to disable.", + "name": "json-output", + "required": false, + "allowNo": true, "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "token": { + "char": "t", + "description": "Oxygen deployment token. Defaults to the linked storefront's token if available.", + "env": "SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN", + "name": "token", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "metadata-description": { + "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommited changes.", + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_DESCRIPTION", + "name": "metadata-description", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "metadata-url": { + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_URL", + "hidden": true, + "name": "metadata-url", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "metadata-user": { + "description": "User that initiated the deployment. Will be saved and displayed in the Shopify admin", + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_USER", + "name": "metadata-user", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "store-password", "type": "option" }, - "url": { - "default": "/", - "description": "The url to be used as context", - "env": "SHOPIFY_FLAG_URL", + "metadata-version": { + "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", + "hidden": true, + "name": "metadata-version", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "url", "type": "option" }, - "verbose": { + "force-client-sourcemap": { + "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", + "name": "force-client-sourcemap", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:console", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:deploy", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Shopify Liquid REPL (read-eval-print loop) tool", - "usage": [ - "theme console", - "theme console --url /products/classic-leather-jacket" - ] + "enableJsonFlag": false, + "descriptionWithMarkdown": "Builds and deploys your Hydrogen storefront to Oxygen. Requires an Oxygen deployment token to be set with the `--token` flag or an environment variable (`SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN`). If the storefront is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) then the Oxygen deployment token for the linked storefront will be used automatically.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:delete": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", - "descriptionWithMarkdown": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", + "hydrogen:g": { + "aliases": [], + "args": {}, + "description": "Shortcut for `hydrogen generate`. See `hydrogen generate --help` for more information.", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "hydrogen:g", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": false, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:init": { + "aliases": [], + "args": {}, + "description": "Creates a new Hydrogen storefront.", "flags": { - "development": { - "allowNo": false, - "char": "d", - "description": "Delete your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, "force": { - "allowNo": false, "char": "f", - "description": "Skip confirmation.", - "env": "SHOPIFY_FLAG_FORCE", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", "name": "force", - "type": "boolean" - }, - "no-color": { "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "path": { + "description": "The path to the directory of the new Hydrogen storefront.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "language": { + "description": "Sets the template language to use. One of `js` or `ts`.", + "env": "SHOPIFY_HYDROGEN_FLAG_LANGUAGE", + "name": "language", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "show-all": { - "allowNo": false, - "char": "a", - "description": "Include others development themes in theme list.", - "env": "SHOPIFY_FLAG_SHOW_ALL", - "name": "show-all", - "type": "boolean" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "template": { + "description": "Scaffolds project based on an existing template or example from the Hydrogen repository.", + "env": "SHOPIFY_HYDROGEN_FLAG_TEMPLATE", + "name": "template", "hasDynamicHelp": false, "multiple": false, - "name": "store", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": true, - "name": "theme", "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "install-deps": { + "description": "Auto installs dependencies using the active package manager.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", + "name": "install-deps", + "allowNo": true, "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:delete", - "multiEnvironmentsFlags": [ - "store", - "password", - [ - "development", - "theme" - ] - ], - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Delete remote themes from the connected store. This command can't be undone." - }, - "theme:dev": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", - "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", - "flags": { - "allow-live": { + }, + "mock-shop": { + "description": "Use mock.shop as the data source for the storefront.", + "env": "SHOPIFY_HYDROGEN_FLAG_MOCK_DATA", + "name": "mock-shop", "allowNo": false, - "char": "a", - "description": "Allow development on a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", "type": "boolean" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "styling": { + "description": "Sets the styling strategy to use. One of `tailwind`, `vanilla-extract`, `css-modules`, `postcss`, `none`.", + "env": "SHOPIFY_HYDROGEN_FLAG_STYLING", + "name": "styling", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "error-overlay": { - "default": "default", - "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", - "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "markets": { + "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", + "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "name": "markets", "hasDynamicHelp": false, "multiple": false, - "name": "error-overlay", - "options": [ - "silent", - "default" - ], "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", + "shortcut": { + "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", + "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", + "name": "shortcut", + "allowNo": true, "type": "boolean" }, - "host": { - "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", - "env": "SHOPIFY_FLAG_HOST", - "hasDynamicHelp": false, - "multiple": false, - "name": "host", - "type": "option" + "routes": { + "description": "Generate routes for all pages.", + "env": "SHOPIFY_HYDROGEN_FLAG_ROUTES", + "name": "routes", + "allowNo": true, + "type": "boolean" }, - "ignore": { - "char": "x", - "description": "Skip hot reloading any files that match the specified pattern.", - "env": "SHOPIFY_FLAG_IGNORE", - "hasDynamicHelp": false, - "multiple": true, - "name": "ignore", - "type": "option" + "git": { + "description": "Init Git and create initial commits.", + "env": "SHOPIFY_HYDROGEN_FLAG_GIT", + "name": "git", + "allowNo": true, + "type": "boolean" }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "hasDynamicHelp": false, - "multiple": false, - "name": "listing", - "type": "option" + "quickstart": { + "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --routes --markets none`", + "env": "SHOPIFY_HYDROGEN_FLAG_QUICKSTART", + "name": "quickstart", + "allowNo": false, + "type": "boolean" }, - "live-reload": { - "default": "hot-reload", - "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", - "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "package-manager": { + "env": "SHOPIFY_HYDROGEN_FLAG_PACKAGE_MANAGER", + "hidden": true, + "name": "package-manager", "hasDynamicHelp": false, "multiple": false, - "name": "live-reload", "options": [ - "hot-reload", - "full-page", - "off" + "npm", + "yarn", + "pnpm", + "unknown" ], "type": "option" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "nodelete": { + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:init", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:link": { + "aliases": [], + "args": {}, + "description": "Link a local project to one of your shop's Hydrogen storefronts.", + "flags": { + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "char": "n", - "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", "type": "boolean" }, - "notify": { - "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", - "env": "SHOPIFY_FLAG_NOTIFY", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "notify", - "type": "option" - }, - "only": { - "char": "o", - "description": "Hot reload only files that match the specified pattern.", - "env": "SHOPIFY_FLAG_ONLY", - "hasDynamicHelp": false, - "multiple": true, - "name": "only", "type": "option" }, - "open": { - "allowNo": false, - "description": "Automatically launch the theme preview in your default web browser.", - "env": "SHOPIFY_FLAG_OPEN", - "name": "open", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "storefront": { + "description": "The name of a Hydrogen Storefront (e.g. \"Jane's Apparel\")", + "env": "SHOPIFY_HYDROGEN_STOREFRONT", + "name": "storefront", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" - }, + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:link", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Links your local development environment to a remote Hydrogen storefront. You can link an unlimited number of development environments to a single Hydrogen storefront.\n\n Linking to a Hydrogen storefront enables you to run [dev](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-dev) and automatically inject your linked Hydrogen storefront's environment variables directly into the server runtime.\n\n After you run the `link` command, you can access the [env list](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-list), [env pull](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-pull), and [unlink](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-unlink) commands.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:list": { + "aliases": [], + "args": {}, + "description": "Returns a list of Hydrogen storefronts available on a given shop.", + "flags": { "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" - }, - "poll": { - "allowNo": false, - "description": "Force polling to detect file changes.", - "env": "SHOPIFY_FLAG_POLL", - "hidden": true, - "name": "poll", - "type": "boolean" - }, - "port": { - "description": "Local port to serve theme preview from.", - "env": "SHOPIFY_FLAG_PORT", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:list", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Lists all remote Hydrogen storefronts available to link to your local development environment.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:login": { + "aliases": [], + "args": {}, + "description": "Login to your Shopify account.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "port", "type": "option" }, - "store": { + "shop": { "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", + "env": "SHOPIFY_SHOP", + "name": "shop", "hasDynamicHelp": false, "multiple": false, - "name": "store-password", "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:login", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Logs in to the specified shop and saves the shop domain to the project.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:logout": { + "aliases": [], + "args": {}, + "description": "Logout of your local session.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" - }, - "theme-editor-sync": { - "allowNo": false, - "description": "Synchronize Theme Editor updates in the local theme files.", - "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", - "name": "theme-editor-sync", - "type": "boolean" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:dev", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:logout", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Log out from the current shop.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:duplicate": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", - "descriptionWithMarkdown": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", + "hydrogen:preview": { + "aliases": [], + "args": {}, + "description": "Runs a Hydrogen storefront in an Oxygen worker for production.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "Force the duplicate operation to run without prompts or confirmations.", - "env": "SHOPIFY_FLAG_FORCE", - "name": "force", - "type": "boolean" - }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "name": { - "char": "n", - "description": "Name of the newly duplicated theme.", - "env": "SHOPIFY_FLAG_NAME", + "port": { + "description": "The port to run the server on. Defaults to 3000.", + "env": "SHOPIFY_HYDROGEN_FLAG_PORT", + "name": "port", "hasDynamicHelp": false, "multiple": false, - "name": "name", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "env-branch": { + "deprecated": { + "to": "env", + "message": "--env-branch is deprecated. Use --env instead." + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "name": "env-branch", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "env-file": { + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "name": "env-file", + "required": false, + "default": ".env", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "inspector-port": { + "description": "The port where the inspector is available. Defaults to 9229.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", + "name": "inspector-port", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" }, - "verbose": { + "debug": { + "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", + "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", + "name": "debug", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:duplicate", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Duplicates a theme from your theme library.", - "usage": [ - "theme duplicate", - "theme duplicate --theme 10 --name 'New Theme'" - ] - }, - "theme:info": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Displays information about your theme environment, including your current store. Can also retrieve information about a specific theme.", - "flags": { - "development": { + }, + "verbose": { + "description": "Outputs more information about the command's execution.", + "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", + "name": "verbose", + "required": false, "allowNo": false, - "char": "d", - "description": "Retrieve info from your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", "type": "boolean" }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, - "json": { + "build": { + "description": "Builds the app before starting the preview server.", + "name": "build", "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", "type": "boolean" }, - "no-color": { + "watch": { + "dependsOn": [ + "build" + ], + "description": "Watches for changes and rebuilds the project.", + "name": "watch", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "entry": { + "dependsOn": [ + "build" + ], + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" + "codegen": { + "dependsOn": [ + "build" + ], + "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", + "name": "codegen", + "required": false, + "allowNo": false, + "type": "boolean" }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + "codegen-config-path": { + "dependsOn": [ + "codegen" + ], + "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", + "name": "codegen-config-path", + "required": false, "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:info", - "multiEnvironmentsFlags": [ - "store", - "password" - ], + "hiddenAliases": [], + "id": "hydrogen:preview", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Runs a server in your local development environment that serves your Hydrogen app's production build. Requires running the [build](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-build) command first.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:init": { - "aliases": [ - ], - "args": { - "name": { - "description": "Name of the new theme", - "name": "name", - "required": false - } - }, - "customPluginName": "@shopify/theme", - "description": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's \"Skeleton theme\" (https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be \"substantively different from existing themes\" (https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", - "descriptionWithMarkdown": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's [Skeleton theme](https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be [substantively different from existing themes](https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", + "hydrogen:setup": { + "aliases": [], + "args": {}, + "description": "Scaffold routes and core functionality.", "flags": { - "clone-url": { - "char": "u", - "default": "https://github.com/Shopify/skeleton-theme.git", - "description": "The Git URL to clone from. Defaults to Shopify's Skeleton theme.", - "env": "SHOPIFY_FLAG_CLONE_URL", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "clone-url", "type": "option" }, - "latest": { - "allowNo": false, - "char": "l", - "description": "Downloads the latest release of the `clone-url`", - "env": "SHOPIFY_FLAG_LATEST", - "name": "latest", - "type": "boolean" - }, - "no-color": { + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "markets": { + "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", + "env": "SHOPIFY_HYDROGEN_FLAG_I18N", + "name": "markets", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "shortcut": { + "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", + "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", + "name": "shortcut", + "allowNo": true, + "type": "boolean" + }, + "install-deps": { + "description": "Auto installs dependencies using the active package manager.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", + "name": "install-deps", + "allowNo": true, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:init", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:setup", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Clones a Git repository to use as a starting point for building a new theme.", - "usage": "theme init [name] [flags]" + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:language-server": { - "aliases": [ - ], - "args": { + "hydrogen:shortcut": { + "aliases": [], + "args": {}, + "description": "Creates a global `h2` shortcut for the Hydrogen CLI", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:shortcut", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Creates a global h2 shortcut for Shopify CLI using shell aliases.\n\n The following shells are supported:\n\n - Bash (using `~/.bashrc`)\n - ZSH (using `~/.zshrc`)\n - Fish (using `~/.config/fish/functions`)\n - PowerShell (added to `$PROFILE`)\n\n After the alias is created, you can call Shopify CLI from anywhere in your project using `h2 `.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:unlink": { + "aliases": [], + "args": {}, + "description": "Unlink a local project from a Hydrogen storefront.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } }, - "customPluginName": "@shopify/theme", - "description": "Starts the \"Language Server\" (https://shopify.dev/docs/themes/tools/cli/language-server).", - "descriptionWithMarkdown": "Starts the [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server).", + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:unlink", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Unlinks your local development environment from a remote Hydrogen storefront.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:upgrade": { + "aliases": [], + "args": {}, + "description": "Upgrade Remix and Hydrogen npm dependencies.", "flags": { - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" }, - "verbose": { + "version": { + "char": "v", + "description": "A target hydrogen version to update to", + "name": "version", + "required": false, + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "force": { + "char": "f", + "description": "Ignore warnings and force the upgrade to the target version", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:language-server", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:upgrade", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Start a Language Server Protocol server." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Upgrade Hydrogen project dependencies, preview features, fixes and breaking changes. The command also generates an instruction file for each upgrade.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:list": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Lists the themes in your store, along with their IDs and statuses.", + "hydrogen:customer-account-push": { + "aliases": [], + "args": {}, + "description": "Push project configuration to admin", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "id": { - "description": "Only list theme with the given ID.", - "env": "SHOPIFY_FLAG_ID", + "storefront-id": { + "description": "The id of the storefront the configuration should be pushed to. Must start with 'gid://shopify/HydrogenStorefront/'", + "name": "storefront-id", "hasDynamicHelp": false, "multiple": false, - "name": "id", "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "name": { - "description": "Only list themes that contain the given name.", - "env": "SHOPIFY_FLAG_NAME", + "dev-origin": { + "description": "The development domain of your application.", + "name": "dev-origin", + "required": true, "hasDynamicHelp": false, "multiple": false, - "name": "name", "type": "option" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "relative-redirect-uri": { + "description": "The relative url of allowed callback url for Customer Account API OAuth flow. Default is '/account/authorize'", + "name": "relative-redirect-uri", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "relative-logout-uri": { + "description": "The relative url of allowed url that will be redirected to post-logout for Customer Account API OAuth flow. Default to nothing.", + "name": "relative-logout-uri", "hasDynamicHelp": false, "multiple": false, + "type": "option" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:customer-account-push", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:debug:cpu": { + "aliases": [], + "args": {}, + "description": "Builds and profiles the server startup time the app.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "name": "path", - "noCacheDefault": true, + "hasDynamicHelp": false, + "multiple": false, "type": "option" }, - "role": { - "description": "Only list themes with the given role.", - "env": "SHOPIFY_FLAG_ROLE", + "entry": { + "description": "Entry file for the worker. Defaults to `./server`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", + "name": "entry", "hasDynamicHelp": false, "multiple": false, - "name": "role", - "options": [ - "live", - "unpublished", - "development" - ], "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "output": { + "description": "Specify a path to generate the profile file. Defaults to \"startup.cpuprofile\".", + "name": "output", + "required": false, + "default": "startup.cpuprofile", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:list", - "multiEnvironmentsFlags": [ - "store", - "password" - ], + "hiddenAliases": [], + "id": "hydrogen:debug:cpu", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Builds the app and runs the resulting code to profile the server startup time, watching for changes. This command can be used to [debug slow app startup times](https://shopify.dev/docs/custom-storefronts/hydrogen/debugging/cpu-startup) that cause failed deployments in Oxygen.\n\n The profiling results are written to a `.cpuprofile` file that can be viewed with certain tools such as [Flame Chart Visualizer for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-js-profile-flame).", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:metafields:pull": { - "aliases": [ - ], - "args": { + "hydrogen:env:list": { + "aliases": [], + "args": {}, + "description": "List the environments on your linked Hydrogen storefront.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + } }, - "customPluginName": "@shopify/theme", - "description": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", - "descriptionWithMarkdown": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:env:list", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Lists all environments available on the linked Hydrogen storefront.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:env:pull": { + "aliases": [], + "args": {}, + "description": "Populate your .env with variables from your Hydrogen storefront.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "force": { - "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "env-branch": { + "deprecated": { + "to": "env", + "message": "--env-branch is deprecated. Use --env instead." + }, + "description": "Specifies the environment to perform the operation using its Git branch name.", + "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", + "name": "env-branch", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "env-file": { + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "name": "env-file", + "required": false, + "default": ".env", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" }, - "verbose": { + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:metafields:pull", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:env:pull", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Download metafields definitions from your shop into a local file." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Pulls environment variables from the linked Hydrogen storefront and writes them to an `.env` file.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:open": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", - "descriptionWithMarkdown": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", + "hydrogen:env:push": { + "aliases": [], + "args": {}, + "description": "Push environment variables from the local .env file to your linked Hydrogen storefront.", "flags": { - "development": { - "allowNo": false, - "char": "d", - "description": "Open your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, - "editor": { - "allowNo": false, - "char": "E", - "description": "Open the theme editor for the specified theme in the browser.", - "env": "SHOPIFY_FLAG_EDITOR", - "name": "editor", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "env": { + "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", + "exclusive": [ + "env-branch" + ], + "name": "env", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "live": { - "allowNo": false, - "char": "l", - "description": "Open your live (published) theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "env-file": { + "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", + "name": "env-file", + "required": false, + "default": ".env", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:open", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:env:push", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Opens the preview of your remote theme." + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:package": { - "aliases": [ - ], + "hydrogen:generate:route": { + "aliases": [], "args": { + "routeName": { + "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,tokenlessApi,all.", + "name": "routeName", + "options": [ + "home", + "page", + "cart", + "products", + "collections", + "policies", + "blogs", + "account", + "search", + "robots", + "sitemap", + "tokenlessApi", + "all" + ], + "required": true + } }, - "customPluginName": "@shopify/theme", - "description": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the \"default Shopify theme folder structure\" (https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per \"Theme Store requirements\" (https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your \"settings_schema.json\" (https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", - "descriptionWithMarkdown": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the [default Shopify theme folder structure](https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per [Theme Store requirements](https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your [settings_schema.json](https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", + "description": "Generates a standard Shopify route.", "flags": { - "no-color": { + "adapter": { + "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "adapter", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" + }, + "typescript": { + "description": "Generate TypeScript files", + "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", + "name": "typescript", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", + "locale-param": { + "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "locale-param", "hasDynamicHelp": false, "multiple": false, - "name": "path", - "noCacheDefault": true, "type": "option" }, - "verbose": { + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" + }, + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", + "hasDynamicHelp": false, + "multiple": false, + "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:package", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:generate:route", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Package your theme into a .zip file, ready to upload to the Online Store." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Generates a set of default routes from the starter template.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:profile": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", - "descriptionWithMarkdown": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", + "hydrogen:generate:routes": { + "aliases": [], + "args": {}, + "description": "Generates all supported standard shopify routes.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "adapter": { + "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "adapter", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "no-color": { + "typescript": { + "description": "Generate TypeScript files", + "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", + "name": "typescript", "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", "type": "boolean" }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", + "locale-param": { + "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", + "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", + "name": "locale-param", "hasDynamicHelp": false, "multiple": false, - "name": "password", "type": "option" }, + "force": { + "char": "f", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "name": "force", + "allowNo": false, + "type": "boolean" + }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", - "hasDynamicHelp": false, - "multiple": false, - "name": "store-password", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" - }, - "url": { - "default": "/", - "description": "The url to be used as context", - "env": "SHOPIFY_FLAG_URL", "hasDynamicHelp": false, "multiple": false, - "name": "url", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:profile", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "hydrogen:generate:routes", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Profile the Liquid rendering of a theme page.", - "usage": [ - "theme profile", - "theme profile --url /products/classic-leather-jacket" - ] + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:publish": { - "aliases": [ - ], + "hydrogen:setup:css": { + "aliases": [], "args": { + "strategy": { + "description": "The CSS strategy to setup. One of tailwind,vanilla-extract,css-modules,postcss", + "name": "strategy", + "options": [ + "tailwind", + "vanilla-extract", + "css-modules", + "postcss" + ] + } }, - "customPluginName": "@shopify/theme", - "description": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", - "descriptionWithMarkdown": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", + "description": "Setup CSS strategies for your project.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, - "multiple": true, - "name": "environment", + "multiple": false, "type": "option" }, "force": { - "allowNo": false, "char": "f", - "description": "Skip confirmation.", - "env": "SHOPIFY_FLAG_FORCE", + "description": "Overwrites the destination directory and files if they already exist.", + "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", "name": "force", + "allowNo": false, "type": "boolean" }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", + "install-deps": { + "description": "Auto installs dependencies using the active package manager.", + "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", + "name": "install-deps", + "allowNo": true, "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:publish", - "multiEnvironmentsFlags": [ - "store", - "password", - "theme" - ], + "hiddenAliases": [], + "id": "hydrogen:setup:css", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Set a remote theme as the live theme." + "enableJsonFlag": false, + "descriptionWithMarkdown": "Adds support for certain CSS strategies to your project.", + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:pull": { - "aliases": [ - ], + "hydrogen:setup:markets": { + "aliases": [], "args": { + "strategy": { + "description": "The URL structure strategy to setup multiple markets. One of subfolders,domains,subdomains", + "name": "strategy", + "options": [ + "subfolders", + "domains", + "subdomains" + ] + } }, - "customPluginName": "@shopify/theme", - "description": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", - "descriptionWithMarkdown": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", + "description": "Setup support for multiple markets in your project.", "flags": { - "development": { - "allowNo": false, - "char": "d", - "description": "Pull theme files from your remote development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, - "force": { - "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "type": "boolean" - }, - "ignore": { - "char": "x", - "description": "Skip downloading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_IGNORE", - "hasDynamicHelp": false, - "multiple": true, - "name": "ignore", - "type": "option" - }, - "live": { - "allowNo": false, - "char": "l", - "description": "Pull theme files from your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "nodelete": { - "allowNo": false, - "char": "n", - "description": "Prevent deleting local files that don't exist remotely.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", - "type": "boolean" - }, - "only": { - "char": "o", - "description": "Download only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_ONLY", - "hasDynamicHelp": false, - "multiple": true, - "name": "only", - "type": "option" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "hydrogen:setup:markets", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false, + "descriptionWithMarkdown": "Adds support for multiple [markets](https://shopify.dev/docs/custom-storefronts/hydrogen/markets) to your project by using the URL structure.", + "customPluginName": "@shopify/cli-hydrogen" + }, + "hydrogen:setup:vite": { + "aliases": [], + "args": {}, + "description": "EXPERIMENTAL: Upgrades the project to use Vite.", + "flags": { + "path": { + "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", + "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "name": "path", "hasDynamicHelp": false, "multiple": false, - "name": "theme", "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:pull", - "multiEnvironmentsFlags": [ - "store", - "password", - "path", - [ - "live", - "development", - "theme" - ] - ], + "hiddenAliases": [], + "id": "hydrogen:setup:vite", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Download your remote theme files locally." + "enableJsonFlag": false, + "customPluginName": "@shopify/cli-hydrogen" }, - "theme:push": { - "aliases": [ - ], + "search": { + "aliases": [], "args": { + "query": { + "name": "query" + } }, - "customPluginName": "@shopify/theme", - "description": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", - "descriptionWithMarkdown": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", - "flags": { - "allow-live": { - "allowNo": false, - "char": "a", - "description": "Allow push to a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", - "type": "boolean" - }, - "development": { - "allowNo": false, - "char": "d", - "description": "Push theme files from your remote development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, - "force": { - "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "type": "boolean" - }, - "ignore": { - "char": "x", - "description": "Skip uploading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_IGNORE", - "hasDynamicHelp": false, - "multiple": true, - "name": "ignore", - "type": "option" - }, - "json": { - "allowNo": false, - "char": "j", - "description": "Output the result as JSON.", - "env": "SHOPIFY_FLAG_JSON", - "hidden": false, - "name": "json", - "type": "boolean" - }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "hasDynamicHelp": false, - "multiple": false, - "name": "listing", - "type": "option" - }, - "live": { - "allowNo": false, - "char": "l", - "description": "Push theme files from your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", - "type": "boolean" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "nodelete": { - "allowNo": false, - "char": "n", - "description": "Prevent deleting remote files that don't exist locally.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", - "type": "boolean" - }, - "only": { - "char": "o", - "description": "Upload only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", - "env": "SHOPIFY_FLAG_ONLY", - "hasDynamicHelp": false, - "multiple": true, - "name": "only", - "type": "option" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "publish": { - "allowNo": false, - "char": "p", - "description": "Publish as the live theme after uploading.", - "env": "SHOPIFY_FLAG_PUBLISH", - "name": "publish", - "type": "boolean" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "strict": { - "allowNo": false, - "description": "Require theme check to pass without errors before pushing. Warnings are allowed.", - "env": "SHOPIFY_FLAG_STRICT_PUSH", - "name": "strict", - "type": "boolean" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" - }, - "unpublished": { - "allowNo": false, - "char": "u", - "description": "Create a new unpublished theme and push to it.", - "env": "SHOPIFY_FLAG_UNPUBLISHED", - "name": "unpublished", - "type": "boolean" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:push", - "multiEnvironmentsFlags": [ - "store", - "password", - "path", - [ - "live", - "development", - "theme" - ] - ], - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Uploads your local theme files to the connected store, overwriting the remote version if specified.", - "usage": [ - "theme push", - "theme push --unpublished --json" - ] - }, - "theme:rename": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", - "descriptionWithMarkdown": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", - "flags": { - "development": { - "allowNo": false, - "char": "d", - "description": "Rename your development theme.", - "env": "SHOPIFY_FLAG_DEVELOPMENT", - "name": "development", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, - "live": { - "allowNo": false, - "char": "l", - "description": "Rename your remote live theme.", - "env": "SHOPIFY_FLAG_LIVE", - "name": "live", - "type": "boolean" - }, - "name": { - "char": "n", - "description": "The new name for the theme.", - "env": "SHOPIFY_FLAG_NEW_NAME", - "hasDynamicHelp": false, - "multiple": false, - "name": "name", - "required": false, - "type": "option" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" - }, - "verbose": { - "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "theme:rename", - "multiEnvironmentsFlags": [ - "store", - "password", - "name", - [ - "live", - "development", - "theme" - ] - ], - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Renames an existing theme." - }, - "theme:serve": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", - "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", - "flags": { - "allow-live": { - "allowNo": false, - "char": "a", - "description": "Allow development on a live theme.", - "env": "SHOPIFY_FLAG_ALLOW_LIVE", - "name": "allow-live", - "type": "boolean" - }, - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, - "error-overlay": { - "default": "default", - "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", - "env": "SHOPIFY_FLAG_ERROR_OVERLAY", - "hasDynamicHelp": false, - "multiple": false, - "name": "error-overlay", - "options": [ - "silent", - "default" - ], - "type": "option" - }, - "force": { - "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "type": "boolean" - }, - "host": { - "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", - "env": "SHOPIFY_FLAG_HOST", - "hasDynamicHelp": false, - "multiple": false, - "name": "host", - "type": "option" - }, - "ignore": { - "char": "x", - "description": "Skip hot reloading any files that match the specified pattern.", - "env": "SHOPIFY_FLAG_IGNORE", - "hasDynamicHelp": false, - "multiple": true, - "name": "ignore", - "type": "option" - }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "hasDynamicHelp": false, - "multiple": false, - "name": "listing", - "type": "option" - }, - "live-reload": { - "default": "hot-reload", - "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", - "env": "SHOPIFY_FLAG_LIVE_RELOAD", - "hasDynamicHelp": false, - "multiple": false, - "name": "live-reload", - "options": [ - "hot-reload", - "full-page", - "off" - ], - "type": "option" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "nodelete": { - "allowNo": false, + "description": "Starts a search on shopify.dev.", + "examples": [ + "# open the search modal on Shopify.dev\n shopify search\n\n # search for a term on Shopify.dev\n shopify search \n\n # search for a phrase on Shopify.dev\n shopify search \"\"\n " + ], + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "search", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "usage": "search [query]", + "enableJsonFlag": false + }, + "upgrade": { + "aliases": [], + "args": {}, + "description": "Shows details on how to upgrade Shopify CLI.", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "upgrade", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Shows details on how to upgrade Shopify CLI.", + "enableJsonFlag": false, + "descriptionWithMarkdown": "Shows details on how to upgrade Shopify CLI." + }, + "version": { + "aliases": [], + "args": {}, + "description": "Shopify CLI version currently installed.", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "version", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "help": { + "aliases": [], + "args": { + "command": { + "description": "Command to show help for.", + "name": "command", + "required": false + } + }, + "description": "Display help for Shopify CLI", + "flags": { + "nested-commands": { "char": "n", - "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", - "env": "SHOPIFY_FLAG_NODELETE", - "name": "nodelete", - "type": "boolean" - }, - "notify": { - "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", - "env": "SHOPIFY_FLAG_NOTIFY", - "hasDynamicHelp": false, - "multiple": false, - "name": "notify", - "type": "option" - }, - "only": { - "char": "o", - "description": "Hot reload only files that match the specified pattern.", - "env": "SHOPIFY_FLAG_ONLY", - "hasDynamicHelp": false, - "multiple": true, - "name": "only", - "type": "option" - }, - "open": { - "allowNo": false, - "description": "Automatically launch the theme preview in your default web browser.", - "env": "SHOPIFY_FLAG_OPEN", - "name": "open", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "poll": { - "allowNo": false, - "description": "Force polling to detect file changes.", - "env": "SHOPIFY_FLAG_POLL", - "hidden": true, - "name": "poll", - "type": "boolean" - }, - "port": { - "description": "Local port to serve theme preview from.", - "env": "SHOPIFY_FLAG_PORT", - "hasDynamicHelp": false, - "multiple": false, - "name": "port", - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", - "hasDynamicHelp": false, - "multiple": false, - "name": "store", - "type": "option" - }, - "store-password": { - "description": "The password for storefronts with password protection.", - "env": "SHOPIFY_FLAG_STORE_PASSWORD", - "hasDynamicHelp": false, - "multiple": false, - "name": "store-password", - "type": "option" - }, - "theme": { - "char": "t", - "description": "Theme ID or name of the remote theme.", - "env": "SHOPIFY_FLAG_THEME_ID", - "hasDynamicHelp": false, - "multiple": false, - "name": "theme", - "type": "option" - }, - "theme-editor-sync": { - "allowNo": false, - "description": "Synchronize Theme Editor updates in the local theme files.", - "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", - "name": "theme-editor-sync", - "type": "boolean" - }, - "verbose": { + "description": "Include all nested commands in the output.", + "env": "SHOPIFY_FLAG_CLI_NESTED_COMMANDS", + "name": "nested-commands", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [ - ], - "id": "theme:serve", - "multiEnvironmentsFlags": null, + "hiddenAliases": [], + "id": "help", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time." + "strict": false, + "usage": "help [command] [flags]", + "enableJsonFlag": false }, - "theme:share": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/theme", - "description": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", - "descriptionWithMarkdown": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", + "auth:logout": { + "aliases": [], + "args": {}, + "description": "Logs you out of the Shopify account or Partner account and store.", + "flags": {}, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "auth:logout", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "auth:login": { + "aliases": [], + "args": {}, + "description": "Logs you in to your Shopify account.", "flags": { - "environment": { - "char": "e", - "description": "The environment to apply to the current command.", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "hasDynamicHelp": false, - "multiple": true, - "name": "environment", - "type": "option" - }, - "force": { - "allowNo": false, - "char": "f", - "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", - "env": "SHOPIFY_FLAG_FORCE", - "hidden": true, - "name": "force", - "type": "boolean" - }, - "listing": { - "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", - "env": "SHOPIFY_FLAG_LISTING", - "hasDynamicHelp": false, - "multiple": false, - "name": "listing", - "type": "option" - }, - "no-color": { - "allowNo": false, - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", - "hidden": false, - "name": "no-color", - "type": "boolean" - }, - "password": { - "description": "Password generated from the Theme Access app or an Admin API token.", - "env": "SHOPIFY_CLI_THEME_TOKEN", - "hasDynamicHelp": false, - "multiple": false, - "name": "password", - "type": "option" - }, - "path": { - "description": "The path where you want to run the command. Defaults to the current working directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "store": { - "char": "s", - "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", - "env": "SHOPIFY_FLAG_STORE", + "alias": { + "description": "Alias of the session you want to login to.", + "env": "SHOPIFY_FLAG_AUTH_ALIAS", + "name": "alias", "hasDynamicHelp": false, "multiple": false, - "name": "store", "type": "option" - }, - "verbose": { + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [], + "id": "auth:login", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "debug:command-flags": { + "aliases": [], + "args": {}, + "description": "View all the available command flags", + "flags": { + "csv": { + "description": "Output as CSV", + "env": "SHOPIFY_FLAG_OUTPUT_CSV", + "name": "csv", "allowNo": false, - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", - "hidden": false, - "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "debug:command-flags", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "kitchen-sink": { + "aliases": [], + "args": {}, + "description": "View all the available UI kit components", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, "hiddenAliases": [ + "kitchen-sink all" ], - "id": "theme:share", - "multiEnvironmentsFlags": [ - "store", - "password", - "path" - ], + "id": "kitchen-sink", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Creates a shareable, unpublished, and new theme on your theme library with a randomized name." + "enableJsonFlag": false }, - "upgrade": { - "aliases": [ - ], - "args": { - }, - "description": "Shows details on how to upgrade Shopify CLI.", - "descriptionWithMarkdown": "Shows details on how to upgrade Shopify CLI.", - "enableJsonFlag": false, - "flags": { - }, + "kitchen-sink:async": { + "aliases": [], + "args": {}, + "description": "View the UI kit components that process async tasks", + "flags": {}, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "upgrade", + "hidden": true, + "hiddenAliases": [], + "id": "kitchen-sink:async", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "summary": "Shows details on how to upgrade Shopify CLI." + "enableJsonFlag": false }, - "version": { - "aliases": [ - ], - "args": { - }, - "description": "Shopify CLI version currently installed.", - "enableJsonFlag": false, - "flags": { - }, + "kitchen-sink:prompts": { + "aliases": [], + "args": {}, + "description": "View the UI kit components prompts", + "flags": {}, "hasDynamicHelp": false, - "hiddenAliases": [ - ], - "id": "version", + "hidden": true, + "hiddenAliases": [], + "id": "kitchen-sink:prompts", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true + "strict": true, + "enableJsonFlag": false }, - "webhook:trigger": { - "aliases": [ - ], - "args": { - }, - "customPluginName": "@shopify/app", - "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", - "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "kitchen-sink:static": { + "aliases": [], + "args": {}, + "description": "View the UI kit components that display static output", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "kitchen-sink:static", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "doctor-release": { + "aliases": [], + "args": {}, + "description": "Run CLI doctor-release tests", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "doctor-release", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "doctor-release:theme": { + "aliases": [], + "args": {}, + "description": "Run all theme command doctor-release tests", "flags": { - "address": { - "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n · For remote HTTP testing, use a URL that starts with https://\n · For local HTTP testing, use http://localhost:{port}/{url-path}\n · For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n · For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", - "env": "SHOPIFY_FLAG_ADDRESS", - "hasDynamicHelp": false, + "no-color": { + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", "hidden": false, - "multiple": false, - "name": "address", - "required": false, - "type": "option" + "name": "no-color", + "allowNo": false, + "type": "boolean" }, - "api-version": { - "description": "The API Version of the webhook topic.", - "env": "SHOPIFY_FLAG_API_VERSION", - "hasDynamicHelp": false, + "verbose": { + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", "hidden": false, - "multiple": false, - "name": "api-version", - "required": false, - "type": "option" + "name": "verbose", + "allowNo": false, + "type": "boolean" }, - "client-id": { - "description": "The Client ID of your app.", - "env": "SHOPIFY_FLAG_CLIENT_ID", - "exclusive": [ - "config" - ], + "path": { + "char": "p", + "description": "The path to run tests in. Defaults to current directory.", + "env": "SHOPIFY_FLAG_PATH", + "name": "path", + "default": "/Users/ryan/src/github.com/Shopify/cli/packages/cli", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-id", "type": "option" }, - "client-secret": { - "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", - "env": "SHOPIFY_FLAG_CLIENT_SECRET", + "environment": { + "char": "e", + "description": "The environment to use from shopify.theme.toml (required for store-connected tests).", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "name": "environment", + "required": true, "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "client-secret", - "required": false, "type": "option" }, - "config": { - "char": "c", - "description": "The name of the app configuration.", - "env": "SHOPIFY_FLAG_APP_CONFIG", + "store": { + "char": "s", + "description": "Store URL (overrides environment).", + "env": "SHOPIFY_FLAG_STORE", + "name": "store", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "config", "type": "option" }, - "delivery-method": { - "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", - "env": "SHOPIFY_FLAG_DELIVERY_METHOD", + "password": { + "description": "Password from Theme Access app (overrides environment).", + "env": "SHOPIFY_FLAG_PASSWORD", + "name": "password", "hasDynamicHelp": false, - "hidden": false, "multiple": false, - "name": "delivery-method", - "options": [ - "http", - "google-pub-sub", - "event-bridge" - ], - "required": false, "type": "option" - }, - "help": { - "allowNo": false, - "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", - "env": "SHOPIFY_FLAG_HELP", + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "doctor-release:theme", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "docs:generate": { + "aliases": [], + "args": {}, + "description": "Generate CLI commands documentation", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "docs:generate", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "notifications:list": { + "aliases": [], + "args": {}, + "description": "List current notifications configured for the CLI.", + "flags": { + "ignore-errors": { + "description": "Don't fail if an error occurs.", + "env": "SHOPIFY_FLAG_IGNORE_ERRORS", "hidden": false, - "name": "help", - "required": false, - "type": "boolean" - }, - "path": { - "description": "The path to your app directory.", - "env": "SHOPIFY_FLAG_PATH", - "hasDynamicHelp": false, - "multiple": false, - "name": "path", - "noCacheDefault": true, - "type": "option" - }, - "reset": { + "name": "ignore-errors", "allowNo": false, - "description": "Reset all your settings.", - "env": "SHOPIFY_FLAG_RESET", - "exclusive": [ - "config" - ], - "hidden": false, - "name": "reset", "type": "boolean" - }, - "shared-secret": { - "description": "Deprecated. Please use client-secret.", - "env": "SHOPIFY_FLAG_SHARED_SECRET", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "shared-secret", - "required": false, - "type": "option" - }, - "topic": { - "description": "The requested webhook topic.", - "env": "SHOPIFY_FLAG_TOPIC", - "hasDynamicHelp": false, - "hidden": false, - "multiple": false, - "name": "topic", - "required": false, - "type": "option" } }, "hasDynamicHelp": false, "hidden": true, - "hiddenAliases": [ - ], - "id": "webhook:trigger", + "hiddenAliases": [], + "id": "notifications:list", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "notifications:generate": { + "aliases": [], + "args": {}, + "description": "Generate a notifications.json file for the the CLI, appending a new notification to the current file.", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "notifications:generate", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "enableJsonFlag": false + }, + "cache:clear": { + "aliases": [], + "args": {}, + "description": "Clear the CLI cache, used to store some API responses and handle notifications status", + "flags": {}, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [], + "id": "cache:clear", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "summary": "Trigger delivery of a sample webhook topic payload to a designated address." + "strict": true, + "enableJsonFlag": false } }, "version": "3.90.0" diff --git a/packages/eslint-plugin-cli/config.js b/packages/eslint-plugin-cli/config.js index c38bc7854aa..efa5328fdf9 100644 --- a/packages/eslint-plugin-cli/config.js +++ b/packages/eslint-plugin-cli/config.js @@ -86,19 +86,19 @@ module.exports = { paths: [ { name: 'path', - message: "Please use: import { joinPath } from '@shopify/cli-kit/node/path'", + message: "Please use: import { joinPath } from '@shopify/cli-kit/shared/node/path'", }, { name: 'node:path', - message: "Please use: import { joinPath } from '@shopify/cli-kit/node/path'", + message: "Please use: import { joinPath } from '@shopify/cli-kit/shared/node/path'", }, { name: 'child_process', - message: "Please use: import { exec } from '@shopify/cli-kit/node/system'", + message: "Please use: import { exec } from '@shopify/cli-kit/shared/node/system'", }, { name: 'node:child_process', - message: "Please use: import { exec } from '@shopify/cli-kit/node/system'", + message: "Please use: import { exec } from '@shopify/cli-kit/shared/node/system'", }, ], }, @@ -188,7 +188,7 @@ module.exports = { { name: 'fetch', message: - 'Please use our alternative fetch implementation in @shopify/cli-kit/node/http instead of Node.js built-in fetch. Built-in fetch does not support HTTP proxies.', + 'Please use our alternative fetch implementation in @shopify/cli-kit/shared/node/http instead of Node.js built-in fetch. Built-in fetch does not support HTTP proxies.', }, ], }, From 3cf4deabfbc4c8edc29c0d9b5208fd2a92103286 Mon Sep 17 00:00:00 2001 From: Ryan Bahan Date: Thu, 12 Feb 2026 10:22:16 -0700 Subject: [PATCH 3/8] update ci steps --- .changeset/config.json | 22 +- .../run-and-save-test-coverage/action.yml | 14 +- .github/dependabot.yml | 40 +- .github/workflows/changelog-reminder.yml | 7 +- .github/workflows/cla.yml | 6 +- .github/workflows/codeql.yml | 8 +- .github/workflows/pages.yml | 8 +- .github/workflows/release.yml | 4 +- .github/workflows/stale.yml | 2 - .github/workflows/tests-main.yml | 8 +- .github/workflows/tests-pr.yml | 12 +- .github/workflows/workflow-cleaner.yml | 8 +- .vscode/extensions.json | 2 +- .vscode/launch.json | 270 +- .vscode/settings.json | 2 +- bin/get-graphql-schemas.js | 2 +- configurations/tsconfig.json | 54 +- dev.yml | 2 +- docs-shopify.dev/commands/app-build.doc.ts | 15 +- .../commands/app-bulk-cancel.doc.ts | 15 +- .../commands/app-bulk-execute.doc.ts | 15 +- .../commands/app-bulk-status.doc.ts | 15 +- .../commands/app-config-link.doc.ts | 15 +- .../commands/app-config-pull.doc.ts | 15 +- .../commands/app-config-use.doc.ts | 15 +- docs-shopify.dev/commands/app-deploy.doc.ts | 15 +- .../commands/app-dev-clean.doc.ts | 15 +- docs-shopify.dev/commands/app-dev.doc.ts | 15 +- docs-shopify.dev/commands/app-env-pull.doc.ts | 15 +- docs-shopify.dev/commands/app-env-show.doc.ts | 15 +- docs-shopify.dev/commands/app-execute.doc.ts | 15 +- .../commands/app-function-build.doc.ts | 15 +- .../commands/app-function-info.doc.ts | 15 +- .../commands/app-function-replay.doc.ts | 15 +- .../commands/app-function-run.doc.ts | 15 +- .../commands/app-function-schema.doc.ts | 15 +- .../commands/app-function-typegen.doc.ts | 15 +- .../commands/app-generate-extension.doc.ts | 15 +- .../app-import-custom-data-definitions.doc.ts | 15 +- .../commands/app-import-extensions.doc.ts | 15 +- docs-shopify.dev/commands/app-info.doc.ts | 15 +- docs-shopify.dev/commands/app-init.doc.ts | 15 +- .../commands/app-logs-sources.doc.ts | 15 +- docs-shopify.dev/commands/app-logs.doc.ts | 15 +- docs-shopify.dev/commands/app-release.doc.ts | 15 +- .../commands/app-versions-list.doc.ts | 15 +- .../commands/app-webhook-trigger.doc.ts | 15 +- docs-shopify.dev/commands/auth-login.doc.ts | 15 +- docs-shopify.dev/commands/auth-logout.doc.ts | 8 +- docs-shopify.dev/commands/commands.doc.ts | 15 +- .../commands/config-autocorrect-off.doc.ts | 8 +- .../commands/config-autocorrect-on.doc.ts | 8 +- .../commands/config-autocorrect-status.doc.ts | 8 +- docs-shopify.dev/commands/help.doc.ts | 15 +- .../commands/hydrogen-build.doc.ts | 15 +- .../commands/hydrogen-check.doc.ts | 15 +- .../commands/hydrogen-codegen.doc.ts | 15 +- .../hydrogen-customer-account-push.doc.ts | 15 +- .../commands/hydrogen-debug-cpu.doc.ts | 15 +- .../commands/hydrogen-deploy.doc.ts | 15 +- docs-shopify.dev/commands/hydrogen-dev.doc.ts | 15 +- .../commands/hydrogen-env-list.doc.ts | 15 +- .../commands/hydrogen-env-pull.doc.ts | 15 +- .../commands/hydrogen-env-push.doc.ts | 15 +- .../commands/hydrogen-generate-route.doc.ts | 15 +- .../commands/hydrogen-generate-routes.doc.ts | 15 +- .../commands/hydrogen-init.doc.ts | 15 +- .../commands/hydrogen-link.doc.ts | 15 +- .../commands/hydrogen-list.doc.ts | 15 +- .../commands/hydrogen-login.doc.ts | 15 +- .../commands/hydrogen-logout.doc.ts | 15 +- .../commands/hydrogen-preview.doc.ts | 15 +- .../commands/hydrogen-setup-css.doc.ts | 15 +- .../commands/hydrogen-setup-markets.doc.ts | 15 +- .../commands/hydrogen-setup-vite.doc.ts | 15 +- .../commands/hydrogen-setup.doc.ts | 15 +- .../commands/hydrogen-shortcut.doc.ts | 8 +- .../commands/hydrogen-unlink.doc.ts | 15 +- .../commands/hydrogen-upgrade.doc.ts | 15 +- .../commands/interfaces/app-init.interface.ts | 6 +- .../interfaces/auth-logout.interface.ts | 4 +- .../config-autocorrect-off.interface.ts | 4 +- .../config-autocorrect-on.interface.ts | 4 +- .../config-autocorrect-status.interface.ts | 4 +- .../interfaces/hydrogen-shortcut.interface.ts | 4 +- .../commands/interfaces/search.interface.ts | 4 +- .../commands/interfaces/upgrade.interface.ts | 4 +- .../commands/interfaces/version.interface.ts | 4 +- docs-shopify.dev/commands/search.doc.ts | 8 +- docs-shopify.dev/commands/theme-check.doc.ts | 15 +- .../commands/theme-console.doc.ts | 15 +- docs-shopify.dev/commands/theme-delete.doc.ts | 15 +- docs-shopify.dev/commands/theme-dev.doc.ts | 15 +- .../commands/theme-duplicate.doc.ts | 15 +- docs-shopify.dev/commands/theme-info.doc.ts | 15 +- docs-shopify.dev/commands/theme-init.doc.ts | 15 +- .../commands/theme-language-server.doc.ts | 15 +- docs-shopify.dev/commands/theme-list.doc.ts | 15 +- .../commands/theme-metafields-pull.doc.ts | 15 +- docs-shopify.dev/commands/theme-open.doc.ts | 15 +- .../commands/theme-package.doc.ts | 15 +- .../commands/theme-profile.doc.ts | 15 +- .../commands/theme-publish.doc.ts | 15 +- docs-shopify.dev/commands/theme-pull.doc.ts | 15 +- docs-shopify.dev/commands/theme-push.doc.ts | 15 +- docs-shopify.dev/commands/theme-rename.doc.ts | 15 +- docs-shopify.dev/commands/theme-share.doc.ts | 15 +- docs-shopify.dev/commands/upgrade.doc.ts | 8 +- docs-shopify.dev/commands/version.doc.ts | 8 +- .../generated/generated_category_pages.json | 2 +- .../generated/generated_docs_data.json | 2 +- .../generated/generated_static_pages.json | 2 +- graphql.config.ts | 5 +- nx.json | 39 +- packages/app/assets/graphiql/style.css | 12 +- packages/app/project.json | 50 +- .../queries/dev-session-update.graphql | 7 +- .../queries/app-versions.graphql | 2 +- .../app-management/queries/apps.graphql | 6 +- .../mutations/bulk-operation-cancel.graphql | 1 - .../bulk-operation-run-mutation.graphql | 7 +- .../bulk-operation-run-query.graphql | 5 +- .../mutations/staged-uploads-create.graphql | 1 - .../queries/user-info.graphql | 2 +- .../queries/provision_shop_access.graphql | 2 +- .../queries/dev-stores-by-org.graphql | 24 +- .../webhooks/queries/cli-testing.graphql | 18 +- packages/app/src/cli/models/app/app.ts | 6 +- .../app/src/cli/models/app/loader.test.ts | 10 +- .../dev/app-events/file-watcher.test.ts | 4 +- .../app/src/cli/services/dev/urls.test.ts | 7 +- .../app/src/cli/services/function/binaries.ts | 9 +- packages/app/tsconfig.build.json | 9 +- packages/cli-kit/project.json | 57 +- packages/cli-kit/scripts/build-api-docs.js | 5 +- .../graphql/mutations/theme_duplicate.graphql | 2 +- .../graphql/mutations/theme_publish.graphql | 2 +- .../graphql/mutations/theme_update.graphql | 4 +- .../admin/graphql/queries/get_theme.graphql | 1 - .../queries/get_theme_file_bodies.graphql | 14 +- .../admin/graphql/queries/get_themes.graphql | 1 - packages/cli-kit/tsconfig.build.json | 6 +- packages/cli/README.md | 1324 +- packages/cli/oclif.manifest.json | 10761 ++++++++-------- .../cli/services/commands/notifications.ts | 8 +- packages/cli/tsconfig.build.json | 5 +- packages/cli/tsconfig.json | 5 +- packages/create-app/tsconfig.build.json | 4 +- packages/create-app/tsconfig.json | 4 +- packages/features/tsconfig.json | 4 +- .../plugin-cloudflare/tsconfig.build.json | 4 +- packages/plugin-cloudflare/tsconfig.json | 4 +- .../plugin-did-you-mean/tsconfig.build.json | 4 +- packages/plugin-did-you-mean/tsconfig.json | 4 +- .../speedscope/demangle-cpp.1768f4cc.js | 94 +- .../assets/speedscope/file-format-schema.json | 547 +- .../assets/speedscope/import.bcbb2033.js | 10076 ++++++++++++++- packages/theme/assets/speedscope/index.html | 19 +- .../assets/speedscope/reset.8c46b7a1.css | 136 +- .../speedscope/source-code-pro.52b1676f.css | 10 +- .../assets/speedscope/source-map.438fa06b.js | 1296 +- .../assets/speedscope/speedscope.6f107512.js | 10673 ++++++++++++++- .../utilities/fixtures/theme/.theme-check.yml | 13 +- .../utilities/fixtures/theme/assets/base.css | 20 +- .../fixtures/theme/config/settings_data.json | 2 +- .../theme/config/settings_schema.json | 6 +- .../fixtures/theme/locales/en.default.json | 32 +- .../fixtures/theme/templates/404.json | 9 +- packages/theme/tsconfig.build.json | 4 +- packages/theme/tsconfig.json | 4 +- packages/ui-extensions-dev-console/index.html | 14 +- .../ui-extensions-dev-console/project.json | 2 +- .../src/assets/favicon/site.webmanifest | 34 +- .../src/components/Button/Button.module.scss | 5 +- .../IconButton/IconButton.module.scss | 3 +- .../components/Backdrop/Backdrop.module.scss | 8 +- .../components/Dialog/Dialog.module.scss | 3 +- .../src/components/Tooltip/Tooltip.module.css | 2 +- .../Tooltip/TooltipPopover.module.css | 3 +- .../src/foundation/Layout/Layout.module.scss | 1 - .../src/foundation/Theme/Theme.module.scss | 2 +- .../src/foundation/Toast/Toast.module.scss | 6 +- .../Extensions/Extensions.module.scss | 10 +- .../QRCodeModal/QRCodeModal.module.scss | 46 +- .../Extensions/components/Row/Row.module.scss | 4 +- .../components/Status/Status.module.scss | 2 +- .../tsconfig.build.json | 2 +- .../ui-extensions-dev-console/tsconfig.json | 2 +- .../scripts/create-entry-files.ts | 34 +- .../ui-extensions-server-kit/tsconfig.json | 2 +- pnpm-lock.yaml | 6267 ++++++--- tsconfig.json | 26 +- 192 files changed, 33612 insertions(+), 9945 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index b7767ea2657..56b8ce7f35e 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -3,16 +3,18 @@ "changelog": "@changesets/cli/changelog", "commit": false, "__comment": "//All versions must be fixed, we read cli-kit version and assume all other packages have the same one//", - "fixed": [[ - "@shopify/cli", - "@shopify/app", - "@shopify/create-app", - "@shopify/cli-kit", - "@shopify/theme", - "@shopify/ui-extensions-dev-console-app", - "@shopify/plugin-cloudflare", - "@shopify/plugin-did-you-mean" - ]], + "fixed": [ + [ + "@shopify/cli", + "@shopify/app", + "@shopify/create-app", + "@shopify/cli-kit", + "@shopify/theme", + "@shopify/ui-extensions-dev-console-app", + "@shopify/plugin-cloudflare", + "@shopify/plugin-did-you-mean" + ] + ], "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", diff --git a/.github/actions/run-and-save-test-coverage/action.yml b/.github/actions/run-and-save-test-coverage/action.yml index e2f80d915be..afaba636bd6 100644 --- a/.github/actions/run-and-save-test-coverage/action.yml +++ b/.github/actions/run-and-save-test-coverage/action.yml @@ -1,18 +1,18 @@ -name: "Run and save test coverage" -description: "Runs unit tests in coverage mode, merges results across packages, and uploads for future comparisons" +name: 'Run and save test coverage' +description: 'Runs unit tests in coverage mode, merges results across packages, and uploads for future comparisons' inputs: branch-name: required: true - description: "Name of the branch being tested" + description: 'Name of the branch being tested' runs: - using: "composite" + using: 'composite' steps: - name: Unit tests with coverage run: pnpm vitest run --coverage --reporter json --outputFile ./coverage/report.json shell: bash env: - VITEST_MIN_THREADS: "1" - VITEST_MAX_THREADS: "4" + VITEST_MIN_THREADS: '1' + VITEST_MAX_THREADS: '4' - name: Convert coverage to Jest run: ./bin/save-coverage-file.js shell: bash @@ -23,7 +23,7 @@ runs: - name: Clean ref name shell: bash env: - SAFE_REF_NAME: "${{ inputs.branch-name }}" + SAFE_REF_NAME: '${{ inputs.branch-name }}' run: | SAFE_REF_NAME="${SAFE_REF_NAME//[\/.]/}" echo "SAFE_REF_NAME=${SAFE_REF_NAME}" >> $GITHUB_ENV diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 175ffe93ae2..4fae5ac4bb0 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,49 +1,49 @@ version: 2 updates: - - package-ecosystem: "npm" + - package-ecosystem: 'npm' versioning-strategy: increase directories: - - "/" - - "packages/*" + - '/' + - 'packages/*' schedule: - interval: "weekly" + interval: 'weekly' labels: - - "dependencies" + - 'dependencies' open-pull-requests-limit: 100 pull-request-branch-name: - separator: "-" + separator: '-' ignore: - - dependency-name: "fs-extra" - - dependency-name: "*" - update-types: ["version-update:semver-major"] + - dependency-name: 'fs-extra' + - dependency-name: '*' + update-types: ['version-update:semver-major'] groups: oclif: patterns: - - "oclif" - - "@oclif/*" + - 'oclif' + - '@oclif/*' nx: patterns: - - "nx" - - "@nx/*" + - 'nx' + - '@nx/*' esbuild: patterns: - - "esbuild" + - 'esbuild' babel: patterns: - - "@babel/*" + - '@babel/*' typescript: patterns: - - "typescript" + - 'typescript' minor_versions: - dependency-type: "production" + dependency-type: 'production' update-types: - 'minor' - 'patch' exclude-patterns: - - "ink" - - "react" + - 'ink' + - 'react' development_dependencies: - dependency-type: "development" + dependency-type: 'development' update-types: - 'minor' - 'patch' diff --git a/.github/workflows/changelog-reminder.yml b/.github/workflows/changelog-reminder.yml index c16ce28c167..540c4e50ee9 100644 --- a/.github/workflows/changelog-reminder.yml +++ b/.github/workflows/changelog-reminder.yml @@ -1,11 +1,11 @@ on: pull_request: - types: [ opened, synchronize, reopened, ready_for_review ] - paths: [ 'packages/*/src/**' ] + types: [opened, synchronize, reopened, ready_for_review] + paths: ['packages/*/src/**'] name: Changelog Reminder jobs: remind: - name: "[PR] Changelog Reminder" + name: '[PR] Changelog Reminder' runs-on: ubuntu-latest if: ${{ github.event.pull_request.head.repo.full_name == github.repository && !github.event.pull_request.draft }} steps: @@ -19,4 +19,3 @@ jobs: > [!CAUTION] > DO NOT create changesets for features which you do not wish to be included in the public changelog of the next CLI release. - diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 9af7e943ae1..1f2502587e6 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -2,13 +2,13 @@ name: Contributor License Agreement (CLA) on: pull_request_target: - types: [ opened, synchronize ] + types: [opened, synchronize] issue_comment: - types: [ created ] + types: [created] jobs: cla: - name: "[PR] CLA" + name: '[PR] CLA' runs-on: ubuntu-latest if: | (github.event.issue.pull_request diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index fefaf646a54..573343592f0 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -9,13 +9,13 @@ # the `language` matrix defined below to confirm you have the correct set of # supported CodeQL languages. # -name: "CodeQL Advanced" +name: 'CodeQL Advanced' on: push: - branches: [ "main" ] + branches: ['main'] pull_request: - branches: [ "main" ] + branches: ['main'] schedule: - cron: '40 5 * * 6' @@ -89,4 +89,4 @@ jobs: - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@4bdb89f48054571735e3792627da6195c57459e2 # v3 with: - category: "/language:${{matrix.language}}" + category: '/language:${{matrix.language}}' diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index 5fe784625dc..56d2b87866e 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -2,10 +2,10 @@ name: Build and Deploy GitHub Pages Site on: push: - branches: [ "main" ] + branches: ['main'] paths: - packages/cli-kit/package.json - - "docs/**" + - 'docs/**' workflow_dispatch: @@ -18,7 +18,7 @@ permissions: # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. concurrency: - group: "pages" + group: 'pages' cancel-in-progress: false # Necessary for setup-cli-deps action to work @@ -37,7 +37,7 @@ jobs: - name: Setup deps uses: ./.github/actions/setup-cli-deps with: - node-version: "22" + node-version: '22' - name: Build TSDoc docs run: pnpm build-api-docs --output-style=stream - name: Build Markdown files into HTML diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8ec47ce5fc1..d70b119992a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -57,7 +57,7 @@ jobs: with: node-version: 24.12.0 - name: Force snapshot changeset - run: "mv .changeset/force-snapshot-build.md.ignore .changeset/force-snapshot-build.md" + run: 'mv .changeset/force-snapshot-build.md.ignore .changeset/force-snapshot-build.md' - name: Create snapshot version uses: Shopify/snapit@ee98df3a4a2b221fc3f06d56b9a6b60996613102 # registry-and-package-manager with: @@ -73,7 +73,7 @@ jobs: > Use `which shopify` to find out which one you are running and uninstall it." comment_package_manager: 'npm' comment_command_flags: '--@shopify:registry=https://registry.npmjs.org' - build_script: "pnpm nx run-many --target=bundle --all --skip-nx-cache --output-style=stream && pnpm refresh-manifests" + build_script: 'pnpm nx run-many --target=bundle --all --skip-nx-cache --output-style=stream && pnpm refresh-manifests' env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: '' diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f3997af3143..a0d690bfba4 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -10,10 +10,8 @@ on: - cron: '31 3 * * *' # randomly chosen time of day workflow_dispatch: - jobs: stale: - runs-on: ubuntu-latest permissions: issues: write diff --git a/.github/workflows/tests-main.yml b/.github/workflows/tests-main.yml index c8398a1af1e..8b38cf660af 100644 --- a/.github/workflows/tests-main.yml +++ b/.github/workflows/tests-main.yml @@ -32,8 +32,8 @@ jobs: timeout-minutes: 30 strategy: matrix: - os: [ 'ubuntu-latest', 'windows-latest', 'macos-latest' ] - node: [ '20.14.0', '22.2.0', '24.1.0' ] + os: ['ubuntu-latest', 'windows-latest', 'macos-latest'] + node: ['20.14.0', '22.2.0', '24.1.0'] steps: - uses: actions/checkout@v3 name: Checkout [${{ github.ref_name }}] @@ -58,8 +58,8 @@ jobs: - name: Unit tests run: pnpm vitest run env: - VITEST_MIN_THREADS: "1" - VITEST_MAX_THREADS: "4" + VITEST_MIN_THREADS: '1' + VITEST_MAX_THREADS: '4' - name: Acceptance tests if: ${{ matrix.node == '24.1.0' }} env: diff --git a/.github/workflows/tests-pr.yml b/.github/workflows/tests-pr.yml index 7ac2b783bb7..5c92d1eacf7 100644 --- a/.github/workflows/tests-pr.yml +++ b/.github/workflows/tests-pr.yml @@ -153,8 +153,8 @@ jobs: timeout-minutes: 30 strategy: matrix: - os: [ 'ubuntu-latest', 'windows-latest', 'macos-latest' ] - node: [ '20.14.0', '22.2.0', '24.1.0' ] + os: ['ubuntu-latest', 'windows-latest', 'macos-latest'] + node: ['20.14.0', '22.2.0', '24.1.0'] steps: - uses: actions/checkout@v3 with: @@ -168,8 +168,8 @@ jobs: - name: Unit tests run: pnpm vitest run env: - VITEST_MIN_THREADS: "1" - VITEST_MAX_THREADS: "4" + VITEST_MIN_THREADS: '1' + VITEST_MAX_THREADS: '4' acceptance-tests: name: 'Acceptance tests with Node ${{ matrix.node }} in ${{ matrix.os }}' @@ -177,8 +177,8 @@ jobs: timeout-minutes: 30 strategy: matrix: - os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] - node: [ '24.1.0' ] + os: ['ubuntu-latest', 'macos-latest', 'windows-latest'] + node: ['24.1.0'] steps: - uses: actions/checkout@v3 with: diff --git a/.github/workflows/workflow-cleaner.yml b/.github/workflows/workflow-cleaner.yml index 49f09a92012..926fb836de9 100644 --- a/.github/workflows/workflow-cleaner.yml +++ b/.github/workflows/workflow-cleaner.yml @@ -19,10 +19,10 @@ on: delete_workflow_by_state_pattern: description: 'Remove workflow by state: active, deleted, disabled_fork, disabled_inactivity, disabled_manually' required: true - default: "All" + default: 'All' type: choice options: - - "All" + - 'All' - active - deleted - disabled_inactivity @@ -30,10 +30,10 @@ on: delete_run_by_conclusion_pattern: description: 'Remove workflow by conclusion: action_required, cancelled, failure, skipped, success' required: true - default: "All" + default: 'All' type: choice options: - - "All" + - 'All' - action_required - cancelled - failure diff --git a/.vscode/extensions.json b/.vscode/extensions.json index f25b0bbb6fe..f36bdc6915c 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["esbenp.prettier-vscode","dbaeumer.vscode-eslint","nrwl.angular-console","vitest.explorer"] + "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint", "nrwl.angular-console", "vitest.explorer"] } diff --git a/.vscode/launch.json b/.vscode/launch.json index 85b80a1e21f..4b6d7b87f98 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,165 +1,129 @@ { - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - - { - "type": "node", - "request": "launch", - "name": "shopify app {command}", - "cwd": "${workspaceFolder}", - "console" : "integratedTerminal", - "runtimeExecutable": "pnpm", - "runtimeArgs": [ - "shopify", - "app", - "${input:command}", - "--path=${input:appDir}", - ], - "env": { - "DEBUG": "\"*\"", - }, - "skipFiles": [ - "/**", - ], - }, - { - "type": "node", - "request": "launch", - "name": "shopify theme {command}", - "cwd": "${workspaceFolder}", - "runtimeExecutable": "pnpm", - "runtimeArgs": [ - "shopify", - "theme", - "${input:command}", - ], - }, - { - "type": "node", - "request": "launch", - "name": "shopify app build", - "cwd": "${workspaceFolder}", - "console" : "integratedTerminal", - "runtimeExecutable": "pnpm", - "runtimeArgs": [ - "shopify", - "app", - "build", - "--path=${input:appDir}", - ], - "env": { - "DEBUG": "\"*\"", - }, - "skipFiles": [ - "/**", - ], - }, - { - "type": "node", - "request": "launch", - "name": "shopify app dev", - "cwd": "${workspaceFolder}", - "console" : "integratedTerminal", - "runtimeExecutable": "pnpm", - "runtimeArgs": [ - "shopify", - "app", - "dev", - "--no-update", - "--path=${input:appDir}", - ], - "env": { - "DEBUG": "\"*\"", - }, - "skipFiles": [ - "/**", - ], - }, - { - "type": "node", - "request": "launch", - "name": "shopify app generate extension", - "console" : "integratedTerminal", - "runtimeExecutable": "pnpm", - "runtimeArgs": [ - "run", - "shopify", - "app", - "generate", - "extension", - "--path=${input:appDir}", - "--name=${input:extensionName}", - "--type=${input:extensionType}", - "--template=${input:extensionTemplate}", - ], - "env": { - "DEBUG": "\"*\"", - }, - "skipFiles": [ - "/**" - ], + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "shopify app {command}", + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "runtimeExecutable": "pnpm", + "runtimeArgs": ["shopify", "app", "${input:command}", "--path=${input:appDir}"], + "env": { + "DEBUG": "\"*\"" }, - ], - "inputs": [ - { - "id": "appDir", - "type": "promptString", - "description": "App Directory: ", - "default": ".", + "skipFiles": ["/**"] + }, + { + "type": "node", + "request": "launch", + "name": "shopify theme {command}", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "pnpm", + "runtimeArgs": ["shopify", "theme", "${input:command}"] + }, + { + "type": "node", + "request": "launch", + "name": "shopify app build", + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "runtimeExecutable": "pnpm", + "runtimeArgs": ["shopify", "app", "build", "--path=${input:appDir}"], + "env": { + "DEBUG": "\"*\"" }, - { - "id": "command", - "type": "promptString", - "description": "Command: ", + "skipFiles": ["/**"] + }, + { + "type": "node", + "request": "launch", + "name": "shopify app dev", + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "runtimeExecutable": "pnpm", + "runtimeArgs": ["shopify", "app", "dev", "--no-update", "--path=${input:appDir}"], + "env": { + "DEBUG": "\"*\"" }, - { - "id": "extensionName", - "type": "promptString", - "description": "Extension Name: ", + "skipFiles": ["/**"] + }, + { + "type": "node", + "request": "launch", + "name": "shopify app generate extension", + "console": "integratedTerminal", + "runtimeExecutable": "pnpm", + "runtimeArgs": [ + "run", + "shopify", + "app", + "generate", + "extension", + "--path=${input:appDir}", + "--name=${input:extensionName}", + "--type=${input:extensionType}", + "--template=${input:extensionTemplate}" + ], + "env": { + "DEBUG": "\"*\"" }, - { - "id": "extensionType", - "type": "pickString", - "description": "Extension Type: ", - "options": [ - "theme", - "product_subscription", - "checkout_ui_extension", - "checkout_post_purchase", - "web_pixel_extension", - "pos_ui_extension", - "product_discounts", - "order_discounts", - "shipping_discounts", - "payment_customization", - "shipping_rate_presenter", - "delivery_customization", - "order_routing_location_rule", - "cart_transform", - "tax_calculation", - "fulfillment_constraints", - "local_pickup_delivery_option_generator", - "pickup_point_delivery_option_generator", - "marketing_activity" - ], - "default": "checkout_ui_extension", + "skipFiles": ["/**"] + } + ], + "inputs": [ + { + "id": "appDir", + "type": "promptString", + "description": "App Directory: ", + "default": "." }, { - "id": "extensionTemplate", + "id": "command", + "type": "promptString", + "description": "Command: " + }, + { + "id": "extensionName", + "type": "promptString", + "description": "Extension Name: " + }, + { + "id": "extensionType", "type": "pickString", - "description": "Extension Template: ", + "description": "Extension Type: ", "options": [ - "vanilla-js", - "react", - "typescript", - "typescript-react", - "wasm", - "rust", + "theme", + "product_subscription", + "checkout_ui_extension", + "checkout_post_purchase", + "web_pixel_extension", + "pos_ui_extension", + "product_discounts", + "order_discounts", + "shipping_discounts", + "payment_customization", + "shipping_rate_presenter", + "delivery_customization", + "order_routing_location_rule", + "cart_transform", + "tax_calculation", + "fulfillment_constraints", + "local_pickup_delivery_option_generator", + "pickup_point_delivery_option_generator", + "marketing_activity" ], - "default": "react", + "default": "checkout_ui_extension" }, - ], + { + "id": "extensionTemplate", + "type": "pickString", + "description": "Extension Template: ", + "options": ["vanilla-js", "react", "typescript", "typescript-react", "wasm", "rust"], + "default": "react" + } + ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 2136b94aac9..7b532acde5b 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -33,7 +33,7 @@ "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" }, - "eslint.workingDirectories": [{ "pattern": "packages/*" }], + "eslint.workingDirectories": [{"pattern": "packages/*"}], "vitest.enable": true, "testing.automaticallyOpenPeekView": "never", "javascript.preferences.importModuleSpecifierEnding": "js", diff --git a/bin/get-graphql-schemas.js b/bin/get-graphql-schemas.js index 70330283853..3f042282094 100755 --- a/bin/get-graphql-schemas.js +++ b/bin/get-graphql-schemas.js @@ -56,7 +56,7 @@ const schemas = [ owner: 'shop', repo: 'world', pathToFile: 'areas/core/shopify/db/graphql/admin_schema_unstable_public.graphql', - localPath: './packages/cli-kit/src/cli/api/graphql/admin/admin_schema.graphql', + localPath: './packages/cli-kit/src/admin/graphql/admin_schema.graphql', usesLfs: true, }, { diff --git a/configurations/tsconfig.json b/configurations/tsconfig.json index d9f19af433a..5956bd7511a 100644 --- a/configurations/tsconfig.json +++ b/configurations/tsconfig.json @@ -1,31 +1,29 @@ { - "compileOnSave": false, - "compilerOptions": { - "lib": ["ES2020"], - "target": "ES2020", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "esModuleInterop": true, - "strict": true, - "strictNullChecks": true, - "resolveJsonModule": true, - "skipDefaultLibCheck": true, - "skipLibCheck": true, - "declaration": true, - "isolatedModules": false, - "composite": true, - "sourceMap": true, - "inlineSources": true, - "noUncheckedIndexedAccess": true, - "jsx": "react", - "paths": { - "@shopify/cli-kit/*": ["../packages/cli-kit/src/public/*"], - "@shopify/theme/*": ["../packages/theme/src/*"], - "@shopify/cli-kit/typing/*": ["../packages/cli-kit/src/typing/*"], - }, - "types": [ - "vitest/importMeta" - ] + "compileOnSave": false, + "compilerOptions": { + "lib": ["ES2020"], + "target": "ES2020", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "esModuleInterop": true, + "strict": true, + "strictNullChecks": true, + "resolveJsonModule": true, + "skipDefaultLibCheck": true, + "skipLibCheck": true, + "declaration": true, + "isolatedModules": false, + "composite": true, + "sourceMap": true, + "inlineSources": true, + "noUncheckedIndexedAccess": true, + "jsx": "react", + "paths": { + "@shopify/cli-kit/*": ["../packages/cli-kit/src/public/*"], + "@shopify/theme/*": ["../packages/theme/src/*"], + "@shopify/cli-kit/typing/*": ["../packages/cli-kit/src/typing/*"] }, - "exclude": ["**/dist/**"] + "types": ["vitest/importMeta"] + }, + "exclude": ["**/dist/**"] } diff --git a/dev.yml b/dev.yml index 14b16712653..bd9ec38f692 100644 --- a/dev.yml +++ b/dev.yml @@ -5,7 +5,7 @@ up: version: 24.1.0 package_manager: pnpm@10.11.1 - packages: - - jq + - jq - custom: name: 'Install PNPM dependencies' # we flip these two conditions to always run `pnpm install` diff --git a/docs-shopify.dev/commands/app-build.doc.ts b/docs-shopify.dev/commands/app-build.doc.ts index ffbf4de20d5..3252731a9ac 100644 --- a/docs-shopify.dev/commands/app-build.doc.ts +++ b/docs-shopify.dev/commands/app-build.doc.ts @@ -22,15 +22,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app build` command:', - type: 'appbuild', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app build` command:', + type: 'appbuild', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-bulk-cancel.doc.ts b/docs-shopify.dev/commands/app-bulk-cancel.doc.ts index 184427c825e..bc37ed98c08 100644 --- a/docs-shopify.dev/commands/app-bulk-cancel.doc.ts +++ b/docs-shopify.dev/commands/app-bulk-cancel.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app bulk cancel` command:', - type: 'appbulkcancel', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app bulk cancel` command:', + type: 'appbulkcancel', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-bulk-execute.doc.ts b/docs-shopify.dev/commands/app-bulk-execute.doc.ts index 0e87c9afa31..aa877535ce0 100644 --- a/docs-shopify.dev/commands/app-bulk-execute.doc.ts +++ b/docs-shopify.dev/commands/app-bulk-execute.doc.ts @@ -24,15 +24,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app bulk execute` command:', - type: 'appbulkexecute', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app bulk execute` command:', + type: 'appbulkexecute', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-bulk-status.doc.ts b/docs-shopify.dev/commands/app-bulk-status.doc.ts index 410da037721..0d73e96fcad 100644 --- a/docs-shopify.dev/commands/app-bulk-status.doc.ts +++ b/docs-shopify.dev/commands/app-bulk-status.doc.ts @@ -24,15 +24,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app bulk status` command:', - type: 'appbulkstatus', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app bulk status` command:', + type: 'appbulkstatus', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-config-link.doc.ts b/docs-shopify.dev/commands/app-config-link.doc.ts index d5aedec9dea..7393cdd17b5 100644 --- a/docs-shopify.dev/commands/app-config-link.doc.ts +++ b/docs-shopify.dev/commands/app-config-link.doc.ts @@ -23,15 +23,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app config link` command:', - type: 'appconfiglink', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app config link` command:', + type: 'appconfiglink', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-config-pull.doc.ts b/docs-shopify.dev/commands/app-config-pull.doc.ts index 9780b60bdb5..54d900c30ab 100644 --- a/docs-shopify.dev/commands/app-config-pull.doc.ts +++ b/docs-shopify.dev/commands/app-config-pull.doc.ts @@ -22,15 +22,14 @@ This command reuses the existing linked app and organization and skips all inter }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app config pull` command:', - type: 'appconfigpull', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app config pull` command:', + type: 'appconfigpull', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-config-use.doc.ts b/docs-shopify.dev/commands/app-config-use.doc.ts index 2f73c63186f..57a4f83fb89 100644 --- a/docs-shopify.dev/commands/app-config-use.doc.ts +++ b/docs-shopify.dev/commands/app-config-use.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app config use` command:', - type: 'appconfiguse', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app config use` command:', + type: 'appconfiguse', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-deploy.doc.ts b/docs-shopify.dev/commands/app-deploy.doc.ts index 2542c30fc6d..1b54a707c06 100644 --- a/docs-shopify.dev/commands/app-deploy.doc.ts +++ b/docs-shopify.dev/commands/app-deploy.doc.ts @@ -25,15 +25,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app deploy` command:', - type: 'appdeploy', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app deploy` command:', + type: 'appdeploy', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-dev-clean.doc.ts b/docs-shopify.dev/commands/app-dev-clean.doc.ts index 371ff666e26..0a2485b4c99 100644 --- a/docs-shopify.dev/commands/app-dev-clean.doc.ts +++ b/docs-shopify.dev/commands/app-dev-clean.doc.ts @@ -23,15 +23,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app dev clean` command:', - type: 'appdevclean', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app dev clean` command:', + type: 'appdevclean', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-dev.doc.ts b/docs-shopify.dev/commands/app-dev.doc.ts index 254424cbaf4..dea51e91754 100644 --- a/docs-shopify.dev/commands/app-dev.doc.ts +++ b/docs-shopify.dev/commands/app-dev.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app dev` command:', - type: 'appdev', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app dev` command:', + type: 'appdev', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-env-pull.doc.ts b/docs-shopify.dev/commands/app-env-pull.doc.ts index 57acedf8771..dd0a71c46da 100644 --- a/docs-shopify.dev/commands/app-env-pull.doc.ts +++ b/docs-shopify.dev/commands/app-env-pull.doc.ts @@ -22,15 +22,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app env pull` command:', - type: 'appenvpull', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app env pull` command:', + type: 'appenvpull', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-env-show.doc.ts b/docs-shopify.dev/commands/app-env-show.doc.ts index 2ea5804a5fb..76e2b492673 100644 --- a/docs-shopify.dev/commands/app-env-show.doc.ts +++ b/docs-shopify.dev/commands/app-env-show.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app env show` command:', - type: 'appenvshow', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app env show` command:', + type: 'appenvshow', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-execute.doc.ts b/docs-shopify.dev/commands/app-execute.doc.ts index 78b2334de54..341e921de0c 100644 --- a/docs-shopify.dev/commands/app-execute.doc.ts +++ b/docs-shopify.dev/commands/app-execute.doc.ts @@ -22,15 +22,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app execute` command:', - type: 'appexecute', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app execute` command:', + type: 'appexecute', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-function-build.doc.ts b/docs-shopify.dev/commands/app-function-build.doc.ts index 7e32c8aad1a..b2136d5b605 100644 --- a/docs-shopify.dev/commands/app-function-build.doc.ts +++ b/docs-shopify.dev/commands/app-function-build.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app function build` command:', - type: 'appfunctionbuild', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app function build` command:', + type: 'appfunctionbuild', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-function-info.doc.ts b/docs-shopify.dev/commands/app-function-info.doc.ts index 2f82b630422..3cecad1597d 100644 --- a/docs-shopify.dev/commands/app-function-info.doc.ts +++ b/docs-shopify.dev/commands/app-function-info.doc.ts @@ -28,15 +28,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app function info` command:', - type: 'appfunctioninfo', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app function info` command:', + type: 'appfunctioninfo', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-function-replay.doc.ts b/docs-shopify.dev/commands/app-function-replay.doc.ts index eee47ad890e..eabcd8ccb3d 100644 --- a/docs-shopify.dev/commands/app-function-replay.doc.ts +++ b/docs-shopify.dev/commands/app-function-replay.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app function replay` command:', - type: 'appfunctionreplay', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app function replay` command:', + type: 'appfunctionreplay', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-function-run.doc.ts b/docs-shopify.dev/commands/app-function-run.doc.ts index c44aba9c475..02dca82fbe9 100644 --- a/docs-shopify.dev/commands/app-function-run.doc.ts +++ b/docs-shopify.dev/commands/app-function-run.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app function run` command:', - type: 'appfunctionrun', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app function run` command:', + type: 'appfunctionrun', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-function-schema.doc.ts b/docs-shopify.dev/commands/app-function-schema.doc.ts index e48c9f92cdc..c554e2427ab 100644 --- a/docs-shopify.dev/commands/app-function-schema.doc.ts +++ b/docs-shopify.dev/commands/app-function-schema.doc.ts @@ -22,15 +22,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app function schema` command:', - type: 'appfunctionschema', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app function schema` command:', + type: 'appfunctionschema', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-function-typegen.doc.ts b/docs-shopify.dev/commands/app-function-typegen.doc.ts index ad0be3e5a2a..c2f5a31e311 100644 --- a/docs-shopify.dev/commands/app-function-typegen.doc.ts +++ b/docs-shopify.dev/commands/app-function-typegen.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app function typegen` command:', - type: 'appfunctiontypegen', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app function typegen` command:', + type: 'appfunctiontypegen', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-generate-extension.doc.ts b/docs-shopify.dev/commands/app-generate-extension.doc.ts index 6d12ec0dde8..6e38c4dfaf0 100644 --- a/docs-shopify.dev/commands/app-generate-extension.doc.ts +++ b/docs-shopify.dev/commands/app-generate-extension.doc.ts @@ -23,15 +23,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app generate extension` command:', - type: 'appgenerateextension', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app generate extension` command:', + type: 'appgenerateextension', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-import-custom-data-definitions.doc.ts b/docs-shopify.dev/commands/app-import-custom-data-definitions.doc.ts index a1b101a5295..a892f5fa35a 100644 --- a/docs-shopify.dev/commands/app-import-custom-data-definitions.doc.ts +++ b/docs-shopify.dev/commands/app-import-custom-data-definitions.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app import-custom-data-definitions` command:', - type: 'appimportcustomdatadefinitions', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app import-custom-data-definitions` command:', + type: 'appimportcustomdatadefinitions', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-import-extensions.doc.ts b/docs-shopify.dev/commands/app-import-extensions.doc.ts index a6e83e7934a..c2d2c627ebd 100644 --- a/docs-shopify.dev/commands/app-import-extensions.doc.ts +++ b/docs-shopify.dev/commands/app-import-extensions.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app import-extensions` command:', - type: 'appimportextensions', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app import-extensions` command:', + type: 'appimportextensions', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-info.doc.ts b/docs-shopify.dev/commands/app-info.doc.ts index 22fe4fd1cde..d814745b413 100644 --- a/docs-shopify.dev/commands/app-info.doc.ts +++ b/docs-shopify.dev/commands/app-info.doc.ts @@ -25,15 +25,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app info` command:', - type: 'appinfo', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app info` command:', + type: 'appinfo', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-init.doc.ts b/docs-shopify.dev/commands/app-init.doc.ts index 1d34efb7468..d93f9f13cb4 100644 --- a/docs-shopify.dev/commands/app-init.doc.ts +++ b/docs-shopify.dev/commands/app-init.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app init` command:', - type: 'appinit', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app init` command:', + type: 'appinit', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-logs-sources.doc.ts b/docs-shopify.dev/commands/app-logs-sources.doc.ts index c06bb362395..8efa9f021a3 100644 --- a/docs-shopify.dev/commands/app-logs-sources.doc.ts +++ b/docs-shopify.dev/commands/app-logs-sources.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app logs sources` command:', - type: 'applogssources', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app logs sources` command:', + type: 'applogssources', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-logs.doc.ts b/docs-shopify.dev/commands/app-logs.doc.ts index 6829609ed9e..4e11bd5e9fe 100644 --- a/docs-shopify.dev/commands/app-logs.doc.ts +++ b/docs-shopify.dev/commands/app-logs.doc.ts @@ -27,15 +27,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app logs` command:', - type: 'applogs', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app logs` command:', + type: 'applogs', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-release.doc.ts b/docs-shopify.dev/commands/app-release.doc.ts index 8dbdf937e8e..4a8a5c28fc2 100644 --- a/docs-shopify.dev/commands/app-release.doc.ts +++ b/docs-shopify.dev/commands/app-release.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app release` command:', - type: 'apprelease', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app release` command:', + type: 'apprelease', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-versions-list.doc.ts b/docs-shopify.dev/commands/app-versions-list.doc.ts index 8d598775b21..7e88a119c42 100644 --- a/docs-shopify.dev/commands/app-versions-list.doc.ts +++ b/docs-shopify.dev/commands/app-versions-list.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app versions list` command:', - type: 'appversionslist', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app versions list` command:', + type: 'appversionslist', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/app-webhook-trigger.doc.ts b/docs-shopify.dev/commands/app-webhook-trigger.doc.ts index f7b9213abdd..5333aca9743 100644 --- a/docs-shopify.dev/commands/app-webhook-trigger.doc.ts +++ b/docs-shopify.dev/commands/app-webhook-trigger.doc.ts @@ -35,15 +35,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `app webhook trigger` command:', - type: 'appwebhooktrigger', - }, + { + title: 'Flags', + description: 'The following flags are available for the `app webhook trigger` command:', + type: 'appwebhooktrigger', + }, ], category: 'app', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/auth-login.doc.ts b/docs-shopify.dev/commands/auth-login.doc.ts index 673b91e0aa5..893154253f9 100644 --- a/docs-shopify.dev/commands/auth-login.doc.ts +++ b/docs-shopify.dev/commands/auth-login.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `auth login` command:', - type: 'authlogin', - }, + { + title: 'Flags', + description: 'The following flags are available for the `auth login` command:', + type: 'authlogin', + }, ], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/auth-logout.doc.ts b/docs-shopify.dev/commands/auth-logout.doc.ts index 41e1dac47b2..0e29d41086b 100644 --- a/docs-shopify.dev/commands/auth-logout.doc.ts +++ b/docs-shopify.dev/commands/auth-logout.doc.ts @@ -19,11 +19,9 @@ const data: ReferenceEntityTemplateSchema = { title: 'auth logout', }, }, - definitions: [ - ], + definitions: [], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/commands.doc.ts b/docs-shopify.dev/commands/commands.doc.ts index 98653f60bbc..8bae5b5f160 100644 --- a/docs-shopify.dev/commands/commands.doc.ts +++ b/docs-shopify.dev/commands/commands.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `commands` command:', - type: 'commands', - }, + { + title: 'Flags', + description: 'The following flags are available for the `commands` command:', + type: 'commands', + }, ], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/config-autocorrect-off.doc.ts b/docs-shopify.dev/commands/config-autocorrect-off.doc.ts index d3b908743a1..4b5d83114cb 100644 --- a/docs-shopify.dev/commands/config-autocorrect-off.doc.ts +++ b/docs-shopify.dev/commands/config-autocorrect-off.doc.ts @@ -24,11 +24,9 @@ const data: ReferenceEntityTemplateSchema = { title: 'config autocorrect off', }, }, - definitions: [ - ], + definitions: [], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/config-autocorrect-on.doc.ts b/docs-shopify.dev/commands/config-autocorrect-on.doc.ts index cf91e96abee..d8fd58b302e 100644 --- a/docs-shopify.dev/commands/config-autocorrect-on.doc.ts +++ b/docs-shopify.dev/commands/config-autocorrect-on.doc.ts @@ -24,11 +24,9 @@ const data: ReferenceEntityTemplateSchema = { title: 'config autocorrect on', }, }, - definitions: [ - ], + definitions: [], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/config-autocorrect-status.doc.ts b/docs-shopify.dev/commands/config-autocorrect-status.doc.ts index e9283298097..71f250459f0 100644 --- a/docs-shopify.dev/commands/config-autocorrect-status.doc.ts +++ b/docs-shopify.dev/commands/config-autocorrect-status.doc.ts @@ -24,11 +24,9 @@ const data: ReferenceEntityTemplateSchema = { title: 'config autocorrect status', }, }, - definitions: [ - ], + definitions: [], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/help.doc.ts b/docs-shopify.dev/commands/help.doc.ts index 2b55e498435..90bfaf0983b 100644 --- a/docs-shopify.dev/commands/help.doc.ts +++ b/docs-shopify.dev/commands/help.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `help` command:', - type: 'help', - }, + { + title: 'Flags', + description: 'The following flags are available for the `help` command:', + type: 'help', + }, ], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-build.doc.ts b/docs-shopify.dev/commands/hydrogen-build.doc.ts index 7c5699814b7..5d2fe9305d6 100644 --- a/docs-shopify.dev/commands/hydrogen-build.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-build.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen build` command:', - type: 'hydrogenbuild', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen build` command:', + type: 'hydrogenbuild', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-check.doc.ts b/docs-shopify.dev/commands/hydrogen-check.doc.ts index afd53f9304d..ab167975872 100644 --- a/docs-shopify.dev/commands/hydrogen-check.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-check.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen check` command:', - type: 'hydrogencheck', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen check` command:', + type: 'hydrogencheck', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-codegen.doc.ts b/docs-shopify.dev/commands/hydrogen-codegen.doc.ts index 00b9233f8ac..071b1dc0997 100644 --- a/docs-shopify.dev/commands/hydrogen-codegen.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-codegen.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen codegen` command:', - type: 'hydrogencodegen', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen codegen` command:', + type: 'hydrogencodegen', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-customer-account-push.doc.ts b/docs-shopify.dev/commands/hydrogen-customer-account-push.doc.ts index 0a5279d137c..a7a8f0960e4 100644 --- a/docs-shopify.dev/commands/hydrogen-customer-account-push.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-customer-account-push.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen customer-account-push` command:', - type: 'hydrogencustomeraccountpush', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen customer-account-push` command:', + type: 'hydrogencustomeraccountpush', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-debug-cpu.doc.ts b/docs-shopify.dev/commands/hydrogen-debug-cpu.doc.ts index 21c9ba36b28..bea5509b561 100644 --- a/docs-shopify.dev/commands/hydrogen-debug-cpu.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-debug-cpu.doc.ts @@ -24,15 +24,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen debug cpu` command:', - type: 'hydrogendebugcpu', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen debug cpu` command:', + type: 'hydrogendebugcpu', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-deploy.doc.ts b/docs-shopify.dev/commands/hydrogen-deploy.doc.ts index 5d014c407fd..198478d6b9d 100644 --- a/docs-shopify.dev/commands/hydrogen-deploy.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-deploy.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen deploy` command:', - type: 'hydrogendeploy', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen deploy` command:', + type: 'hydrogendeploy', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-dev.doc.ts b/docs-shopify.dev/commands/hydrogen-dev.doc.ts index 5d55c8df2c2..9543af8f92f 100644 --- a/docs-shopify.dev/commands/hydrogen-dev.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-dev.doc.ts @@ -24,15 +24,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen dev` command:', - type: 'hydrogendev', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen dev` command:', + type: 'hydrogendev', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-env-list.doc.ts b/docs-shopify.dev/commands/hydrogen-env-list.doc.ts index 4e8d12af3bf..ed5d4e737ee 100644 --- a/docs-shopify.dev/commands/hydrogen-env-list.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-env-list.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen env list` command:', - type: 'hydrogenenvlist', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen env list` command:', + type: 'hydrogenenvlist', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-env-pull.doc.ts b/docs-shopify.dev/commands/hydrogen-env-pull.doc.ts index 195847967bf..8d3caa7bccb 100644 --- a/docs-shopify.dev/commands/hydrogen-env-pull.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-env-pull.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen env pull` command:', - type: 'hydrogenenvpull', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen env pull` command:', + type: 'hydrogenenvpull', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-env-push.doc.ts b/docs-shopify.dev/commands/hydrogen-env-push.doc.ts index 29fe7c9eacc..0728f35472e 100644 --- a/docs-shopify.dev/commands/hydrogen-env-push.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-env-push.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen env push` command:', - type: 'hydrogenenvpush', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen env push` command:', + type: 'hydrogenenvpush', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-generate-route.doc.ts b/docs-shopify.dev/commands/hydrogen-generate-route.doc.ts index 00c4510a958..3354af9af84 100644 --- a/docs-shopify.dev/commands/hydrogen-generate-route.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-generate-route.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen generate route` command:', - type: 'hydrogengenerateroute', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen generate route` command:', + type: 'hydrogengenerateroute', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-generate-routes.doc.ts b/docs-shopify.dev/commands/hydrogen-generate-routes.doc.ts index 4e95d749369..77eb2a5f558 100644 --- a/docs-shopify.dev/commands/hydrogen-generate-routes.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-generate-routes.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen generate routes` command:', - type: 'hydrogengenerateroutes', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen generate routes` command:', + type: 'hydrogengenerateroutes', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-init.doc.ts b/docs-shopify.dev/commands/hydrogen-init.doc.ts index f37e249196a..645ba1847eb 100644 --- a/docs-shopify.dev/commands/hydrogen-init.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-init.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen init` command:', - type: 'hydrogeninit', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen init` command:', + type: 'hydrogeninit', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-link.doc.ts b/docs-shopify.dev/commands/hydrogen-link.doc.ts index 3ff4996948f..8bcdb0a1898 100644 --- a/docs-shopify.dev/commands/hydrogen-link.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-link.doc.ts @@ -28,15 +28,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen link` command:', - type: 'hydrogenlink', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen link` command:', + type: 'hydrogenlink', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-list.doc.ts b/docs-shopify.dev/commands/hydrogen-list.doc.ts index f82ee79597a..cbd9ddc37b4 100644 --- a/docs-shopify.dev/commands/hydrogen-list.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-list.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen list` command:', - type: 'hydrogenlist', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen list` command:', + type: 'hydrogenlist', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-login.doc.ts b/docs-shopify.dev/commands/hydrogen-login.doc.ts index bd204bff875..c1b27acde7c 100644 --- a/docs-shopify.dev/commands/hydrogen-login.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-login.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen login` command:', - type: 'hydrogenlogin', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen login` command:', + type: 'hydrogenlogin', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-logout.doc.ts b/docs-shopify.dev/commands/hydrogen-logout.doc.ts index fc0c866410a..e979521a446 100644 --- a/docs-shopify.dev/commands/hydrogen-logout.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-logout.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen logout` command:', - type: 'hydrogenlogout', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen logout` command:', + type: 'hydrogenlogout', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-preview.doc.ts b/docs-shopify.dev/commands/hydrogen-preview.doc.ts index e504feaf1e4..29305974f47 100644 --- a/docs-shopify.dev/commands/hydrogen-preview.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-preview.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen preview` command:', - type: 'hydrogenpreview', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen preview` command:', + type: 'hydrogenpreview', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-setup-css.doc.ts b/docs-shopify.dev/commands/hydrogen-setup-css.doc.ts index fb10471f71d..d14e6455f5f 100644 --- a/docs-shopify.dev/commands/hydrogen-setup-css.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-setup-css.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen setup css` command:', - type: 'hydrogensetupcss', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen setup css` command:', + type: 'hydrogensetupcss', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-setup-markets.doc.ts b/docs-shopify.dev/commands/hydrogen-setup-markets.doc.ts index 5cf2ec57d8d..78394446c2f 100644 --- a/docs-shopify.dev/commands/hydrogen-setup-markets.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-setup-markets.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen setup markets` command:', - type: 'hydrogensetupmarkets', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen setup markets` command:', + type: 'hydrogensetupmarkets', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-setup-vite.doc.ts b/docs-shopify.dev/commands/hydrogen-setup-vite.doc.ts index c70a69522dd..fe75b8e354d 100644 --- a/docs-shopify.dev/commands/hydrogen-setup-vite.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-setup-vite.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen setup vite` command:', - type: 'hydrogensetupvite', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen setup vite` command:', + type: 'hydrogensetupvite', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-setup.doc.ts b/docs-shopify.dev/commands/hydrogen-setup.doc.ts index 1b842947999..a7a5b8d0696 100644 --- a/docs-shopify.dev/commands/hydrogen-setup.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-setup.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen setup` command:', - type: 'hydrogensetup', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen setup` command:', + type: 'hydrogensetup', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-shortcut.doc.ts b/docs-shopify.dev/commands/hydrogen-shortcut.doc.ts index a3da5b3a35b..84262932a2c 100644 --- a/docs-shopify.dev/commands/hydrogen-shortcut.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-shortcut.doc.ts @@ -37,11 +37,9 @@ const data: ReferenceEntityTemplateSchema = { title: 'hydrogen shortcut', }, }, - definitions: [ - ], + definitions: [], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-unlink.doc.ts b/docs-shopify.dev/commands/hydrogen-unlink.doc.ts index fb6fadaed58..97579d1668d 100644 --- a/docs-shopify.dev/commands/hydrogen-unlink.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-unlink.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen unlink` command:', - type: 'hydrogenunlink', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen unlink` command:', + type: 'hydrogenunlink', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/hydrogen-upgrade.doc.ts b/docs-shopify.dev/commands/hydrogen-upgrade.doc.ts index ac0609d6ec7..e1b2b8b67fc 100644 --- a/docs-shopify.dev/commands/hydrogen-upgrade.doc.ts +++ b/docs-shopify.dev/commands/hydrogen-upgrade.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `hydrogen upgrade` command:', - type: 'hydrogenupgrade', - }, + { + title: 'Flags', + description: 'The following flags are available for the `hydrogen upgrade` command:', + type: 'hydrogenupgrade', + }, ], category: 'hydrogen', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/interfaces/app-init.interface.ts b/docs-shopify.dev/commands/interfaces/app-init.interface.ts index 7e2265bb453..e0c222ed21b 100644 --- a/docs-shopify.dev/commands/interfaces/app-init.interface.ts +++ b/docs-shopify.dev/commands/interfaces/app-init.interface.ts @@ -13,7 +13,7 @@ export interface appinit { '--flavor '?: string /** - * + * * @environment SHOPIFY_FLAG_NAME */ '-n, --name '?: string @@ -25,13 +25,13 @@ export interface appinit { '--no-color'?: '' /** - * + * * @environment SHOPIFY_FLAG_PACKAGE_MANAGER */ '-d, --package-manager '?: string /** - * + * * @environment SHOPIFY_FLAG_PATH */ '-p, --path '?: string diff --git a/docs-shopify.dev/commands/interfaces/auth-logout.interface.ts b/docs-shopify.dev/commands/interfaces/auth-logout.interface.ts index b4a87270a99..132ad8ca99c 100644 --- a/docs-shopify.dev/commands/interfaces/auth-logout.interface.ts +++ b/docs-shopify.dev/commands/interfaces/auth-logout.interface.ts @@ -1,4 +1,2 @@ // This is an autogenerated file. Don't edit this file manually. -export interface authlogout { - -} +export interface authlogout {} diff --git a/docs-shopify.dev/commands/interfaces/config-autocorrect-off.interface.ts b/docs-shopify.dev/commands/interfaces/config-autocorrect-off.interface.ts index f0990f32dd4..d05189ed3a3 100644 --- a/docs-shopify.dev/commands/interfaces/config-autocorrect-off.interface.ts +++ b/docs-shopify.dev/commands/interfaces/config-autocorrect-off.interface.ts @@ -1,4 +1,2 @@ // This is an autogenerated file. Don't edit this file manually. -export interface configautocorrectoff { - -} +export interface configautocorrectoff {} diff --git a/docs-shopify.dev/commands/interfaces/config-autocorrect-on.interface.ts b/docs-shopify.dev/commands/interfaces/config-autocorrect-on.interface.ts index 0d9e7d2a28e..f28a216d055 100644 --- a/docs-shopify.dev/commands/interfaces/config-autocorrect-on.interface.ts +++ b/docs-shopify.dev/commands/interfaces/config-autocorrect-on.interface.ts @@ -1,4 +1,2 @@ // This is an autogenerated file. Don't edit this file manually. -export interface configautocorrecton { - -} +export interface configautocorrecton {} diff --git a/docs-shopify.dev/commands/interfaces/config-autocorrect-status.interface.ts b/docs-shopify.dev/commands/interfaces/config-autocorrect-status.interface.ts index 57bd33c1492..55b77b760d7 100644 --- a/docs-shopify.dev/commands/interfaces/config-autocorrect-status.interface.ts +++ b/docs-shopify.dev/commands/interfaces/config-autocorrect-status.interface.ts @@ -1,4 +1,2 @@ // This is an autogenerated file. Don't edit this file manually. -export interface configautocorrectstatus { - -} +export interface configautocorrectstatus {} diff --git a/docs-shopify.dev/commands/interfaces/hydrogen-shortcut.interface.ts b/docs-shopify.dev/commands/interfaces/hydrogen-shortcut.interface.ts index 730e5a4d0a6..d135c61dc19 100644 --- a/docs-shopify.dev/commands/interfaces/hydrogen-shortcut.interface.ts +++ b/docs-shopify.dev/commands/interfaces/hydrogen-shortcut.interface.ts @@ -1,4 +1,2 @@ // This is an autogenerated file. Don't edit this file manually. -export interface hydrogenshortcut { - -} +export interface hydrogenshortcut {} diff --git a/docs-shopify.dev/commands/interfaces/search.interface.ts b/docs-shopify.dev/commands/interfaces/search.interface.ts index f36caccb6b0..0aaecfb0869 100644 --- a/docs-shopify.dev/commands/interfaces/search.interface.ts +++ b/docs-shopify.dev/commands/interfaces/search.interface.ts @@ -1,4 +1,2 @@ // This is an autogenerated file. Don't edit this file manually. -export interface search { - -} +export interface search {} diff --git a/docs-shopify.dev/commands/interfaces/upgrade.interface.ts b/docs-shopify.dev/commands/interfaces/upgrade.interface.ts index 7c7d0f0f105..5210450b5ae 100644 --- a/docs-shopify.dev/commands/interfaces/upgrade.interface.ts +++ b/docs-shopify.dev/commands/interfaces/upgrade.interface.ts @@ -1,4 +1,2 @@ // This is an autogenerated file. Don't edit this file manually. -export interface upgrade { - -} +export interface upgrade {} diff --git a/docs-shopify.dev/commands/interfaces/version.interface.ts b/docs-shopify.dev/commands/interfaces/version.interface.ts index 7c282657383..939124fb1af 100644 --- a/docs-shopify.dev/commands/interfaces/version.interface.ts +++ b/docs-shopify.dev/commands/interfaces/version.interface.ts @@ -1,4 +1,2 @@ // This is an autogenerated file. Don't edit this file manually. -export interface version { - -} +export interface version {} diff --git a/docs-shopify.dev/commands/search.doc.ts b/docs-shopify.dev/commands/search.doc.ts index 63c2346c566..ed876bbe5fb 100644 --- a/docs-shopify.dev/commands/search.doc.ts +++ b/docs-shopify.dev/commands/search.doc.ts @@ -19,11 +19,9 @@ const data: ReferenceEntityTemplateSchema = { title: 'search', }, }, - definitions: [ - ], + definitions: [], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-check.doc.ts b/docs-shopify.dev/commands/theme-check.doc.ts index baf51103617..4c2d0c462fd 100644 --- a/docs-shopify.dev/commands/theme-check.doc.ts +++ b/docs-shopify.dev/commands/theme-check.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme check` command:', - type: 'themecheck', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme check` command:', + type: 'themecheck', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-console.doc.ts b/docs-shopify.dev/commands/theme-console.doc.ts index a2eb67dfbce..7039167be7b 100644 --- a/docs-shopify.dev/commands/theme-console.doc.ts +++ b/docs-shopify.dev/commands/theme-console.doc.ts @@ -22,15 +22,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme console` command:', - type: 'themeconsole', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme console` command:', + type: 'themeconsole', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-delete.doc.ts b/docs-shopify.dev/commands/theme-delete.doc.ts index 69cb5755939..f31cefe601b 100644 --- a/docs-shopify.dev/commands/theme-delete.doc.ts +++ b/docs-shopify.dev/commands/theme-delete.doc.ts @@ -24,15 +24,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme delete` command:', - type: 'themedelete', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme delete` command:', + type: 'themedelete', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-dev.doc.ts b/docs-shopify.dev/commands/theme-dev.doc.ts index 3f6a1c3029a..a9a9c420cf7 100644 --- a/docs-shopify.dev/commands/theme-dev.doc.ts +++ b/docs-shopify.dev/commands/theme-dev.doc.ts @@ -39,15 +39,14 @@ You can run this command only in a directory that matches the [default Shopify t }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme dev` command:', - type: 'themedev', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme dev` command:', + type: 'themedev', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-duplicate.doc.ts b/docs-shopify.dev/commands/theme-duplicate.doc.ts index 722901b7246..732c8ccbc30 100644 --- a/docs-shopify.dev/commands/theme-duplicate.doc.ts +++ b/docs-shopify.dev/commands/theme-duplicate.doc.ts @@ -49,15 +49,14 @@ Sample JSON output: }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme duplicate` command:', - type: 'themeduplicate', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme duplicate` command:', + type: 'themeduplicate', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-info.doc.ts b/docs-shopify.dev/commands/theme-info.doc.ts index b1942001df2..ad49c468c0d 100644 --- a/docs-shopify.dev/commands/theme-info.doc.ts +++ b/docs-shopify.dev/commands/theme-info.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme info` command:', - type: 'themeinfo', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme info` command:', + type: 'themeinfo', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-init.doc.ts b/docs-shopify.dev/commands/theme-init.doc.ts index 80257b39bce..f3c4085f5ab 100644 --- a/docs-shopify.dev/commands/theme-init.doc.ts +++ b/docs-shopify.dev/commands/theme-init.doc.ts @@ -25,15 +25,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme init` command:', - type: 'themeinit', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme init` command:', + type: 'themeinit', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-language-server.doc.ts b/docs-shopify.dev/commands/theme-language-server.doc.ts index 5b77ace2b3f..c8262c1b17a 100644 --- a/docs-shopify.dev/commands/theme-language-server.doc.ts +++ b/docs-shopify.dev/commands/theme-language-server.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme language-server` command:', - type: 'themelanguageserver', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme language-server` command:', + type: 'themelanguageserver', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-list.doc.ts b/docs-shopify.dev/commands/theme-list.doc.ts index 10b1a3bfcc9..108b662b7b3 100644 --- a/docs-shopify.dev/commands/theme-list.doc.ts +++ b/docs-shopify.dev/commands/theme-list.doc.ts @@ -20,15 +20,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme list` command:', - type: 'themelist', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme list` command:', + type: 'themelist', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-metafields-pull.doc.ts b/docs-shopify.dev/commands/theme-metafields-pull.doc.ts index fdaaf381aee..01d97a04a40 100644 --- a/docs-shopify.dev/commands/theme-metafields-pull.doc.ts +++ b/docs-shopify.dev/commands/theme-metafields-pull.doc.ts @@ -22,15 +22,14 @@ If the metafields file already exists, it will be overwritten.`, }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme metafields pull` command:', - type: 'thememetafieldspull', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme metafields pull` command:', + type: 'thememetafieldspull', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-open.doc.ts b/docs-shopify.dev/commands/theme-open.doc.ts index b96adde3cc7..9565b3265d7 100644 --- a/docs-shopify.dev/commands/theme-open.doc.ts +++ b/docs-shopify.dev/commands/theme-open.doc.ts @@ -25,15 +25,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme open` command:', - type: 'themeopen', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme open` command:', + type: 'themeopen', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-package.doc.ts b/docs-shopify.dev/commands/theme-package.doc.ts index 8e46a4a597c..5ec9b2eb40a 100644 --- a/docs-shopify.dev/commands/theme-package.doc.ts +++ b/docs-shopify.dev/commands/theme-package.doc.ts @@ -26,15 +26,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme package` command:', - type: 'themepackage', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme package` command:', + type: 'themepackage', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-profile.doc.ts b/docs-shopify.dev/commands/theme-profile.doc.ts index e4427c67a61..16f8ae9e723 100644 --- a/docs-shopify.dev/commands/theme-profile.doc.ts +++ b/docs-shopify.dev/commands/theme-profile.doc.ts @@ -22,15 +22,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme profile` command:', - type: 'themeprofile', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme profile` command:', + type: 'themeprofile', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-publish.doc.ts b/docs-shopify.dev/commands/theme-publish.doc.ts index e1df64c2492..42d1102ab44 100644 --- a/docs-shopify.dev/commands/theme-publish.doc.ts +++ b/docs-shopify.dev/commands/theme-publish.doc.ts @@ -26,15 +26,14 @@ If you want to publish your local theme, then you need to run \`shopify theme pu }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme publish` command:', - type: 'themepublish', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme publish` command:', + type: 'themepublish', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-pull.doc.ts b/docs-shopify.dev/commands/theme-pull.doc.ts index 7c53070de3e..e7f0631b966 100644 --- a/docs-shopify.dev/commands/theme-pull.doc.ts +++ b/docs-shopify.dev/commands/theme-pull.doc.ts @@ -22,15 +22,14 @@ If no theme is specified, then you're prompted to select the theme to pull from }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme pull` command:', - type: 'themepull', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme pull` command:', + type: 'themepull', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-push.doc.ts b/docs-shopify.dev/commands/theme-push.doc.ts index 023c5c42edd..150b4059caf 100644 --- a/docs-shopify.dev/commands/theme-push.doc.ts +++ b/docs-shopify.dev/commands/theme-push.doc.ts @@ -47,15 +47,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme push` command:', - type: 'themepush', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme push` command:', + type: 'themepush', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-rename.doc.ts b/docs-shopify.dev/commands/theme-rename.doc.ts index 2425ac9ced1..8a32edb409d 100644 --- a/docs-shopify.dev/commands/theme-rename.doc.ts +++ b/docs-shopify.dev/commands/theme-rename.doc.ts @@ -23,15 +23,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme rename` command:', - type: 'themerename', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme rename` command:', + type: 'themerename', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/theme-share.doc.ts b/docs-shopify.dev/commands/theme-share.doc.ts index cd7ef590295..cc61bb8d9d0 100644 --- a/docs-shopify.dev/commands/theme-share.doc.ts +++ b/docs-shopify.dev/commands/theme-share.doc.ts @@ -22,15 +22,14 @@ const data: ReferenceEntityTemplateSchema = { }, }, definitions: [ - { - title: 'Flags', - description: 'The following flags are available for the `theme share` command:', - type: 'themeshare', - }, + { + title: 'Flags', + description: 'The following flags are available for the `theme share` command:', + type: 'themeshare', + }, ], category: 'theme', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/upgrade.doc.ts b/docs-shopify.dev/commands/upgrade.doc.ts index c0f307ed08a..fb2f111c4f1 100644 --- a/docs-shopify.dev/commands/upgrade.doc.ts +++ b/docs-shopify.dev/commands/upgrade.doc.ts @@ -19,11 +19,9 @@ const data: ReferenceEntityTemplateSchema = { title: 'upgrade', }, }, - definitions: [ - ], + definitions: [], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/commands/version.doc.ts b/docs-shopify.dev/commands/version.doc.ts index b37597fb9c0..8e1a6610629 100644 --- a/docs-shopify.dev/commands/version.doc.ts +++ b/docs-shopify.dev/commands/version.doc.ts @@ -19,11 +19,9 @@ const data: ReferenceEntityTemplateSchema = { title: 'version', }, }, - definitions: [ - ], + definitions: [], category: 'general commands', - related: [ - ], + related: [], } -export default data \ No newline at end of file +export default data diff --git a/docs-shopify.dev/generated/generated_category_pages.json b/docs-shopify.dev/generated/generated_category_pages.json index 7d90a1310bc..7804fdb88d0 100644 --- a/docs-shopify.dev/generated/generated_category_pages.json +++ b/docs-shopify.dev/generated/generated_category_pages.json @@ -19,4 +19,4 @@ "title": "Shopify CLI Theme commands", "sections": [] } -] \ No newline at end of file +] diff --git a/docs-shopify.dev/generated/generated_docs_data.json b/docs-shopify.dev/generated/generated_docs_data.json index 5d51044f3a6..b140646d136 100644 --- a/docs-shopify.dev/generated/generated_docs_data.json +++ b/docs-shopify.dev/generated/generated_docs_data.json @@ -7857,4 +7857,4 @@ "category": "general commands", "related": [] } -] \ No newline at end of file +] diff --git a/docs-shopify.dev/generated/generated_static_pages.json b/docs-shopify.dev/generated/generated_static_pages.json index 79a6d9141ba..058cc5539a2 100644 --- a/docs-shopify.dev/generated/generated_static_pages.json +++ b/docs-shopify.dev/generated/generated_static_pages.json @@ -118,4 +118,4 @@ } ] } -] \ No newline at end of file +] diff --git a/graphql.config.ts b/graphql.config.ts index 2f81f6c0d75..44fc0aa9214 100644 --- a/graphql.config.ts +++ b/graphql.config.ts @@ -10,10 +10,7 @@ function projectFactory(name: string, schemaName: string, project: string = 'app const basePath = graphqlBasePath(name, project) return { schema: `${basePath}/${schemaName}`, - documents: [ - `${basePath}/queries/**/*.graphql`, - `${basePath}/mutations/**/*.graphql`, - ], + documents: [`${basePath}/queries/**/*.graphql`, `${basePath}/mutations/**/*.graphql`], extensions: { codegen: { generates: { diff --git a/nx.json b/nx.json index 552311e2e7f..0581ed87c9e 100644 --- a/nx.json +++ b/nx.json @@ -1,41 +1,25 @@ { "targetDefaults": { "clean": { - "dependsOn": [ - "^clean" - ] + "dependsOn": ["^clean"] }, "build": { - "dependsOn": [ - "^build" - ], - "inputs": [ - "production", - "^production" - ] + "dependsOn": ["^build"], + "inputs": ["production", "^production"] }, "refresh-manifests": { - "dependsOn": [ - "build", - "refresh-readme" - ] + "dependsOn": ["build", "refresh-readme"] }, "refresh-readme": { - "dependsOn": [ - "build" - ] + "dependsOn": ["build"] }, "lint": {}, "lint:fix": {}, "type-check": { - "dependsOn": [ - "^build" - ] + "dependsOn": ["^build"] }, "bundle": { - "dependsOn": [ - "build" - ] + "dependsOn": ["build"] } }, "extends": "@nx/workspace/presets/npm.json", @@ -65,14 +49,9 @@ "defaultBase": "main", "$schema": "./node_modules/nx/schemas/nx-schema.json", "namedInputs": { - "default": [ - "{projectRoot}/**/*", - "sharedGlobals" - ], + "default": ["{projectRoot}/**/*", "sharedGlobals"], "sharedGlobals": [], - "production": [ - "default" - ] + "production": ["default"] }, "tui": { "autoExit": true diff --git a/packages/app/assets/graphiql/style.css b/packages/app/assets/graphiql/style.css index aa894a2495e..76951b6cd19 100644 --- a/packages/app/assets/graphiql/style.css +++ b/packages/app/assets/graphiql/style.css @@ -13,7 +13,11 @@ body { padding: 0; } -button, input, optgroup, select, textarea { +button, +input, +optgroup, +select, +textarea { font-family: inherit; } @@ -27,7 +31,7 @@ p { } .body-success { - color: #F6F6F7; + color: #f6f6f7; } .body-error { @@ -37,14 +41,14 @@ p { .app-success { width: 100vw; height: 100vh; - background-color: #054A49; + background-color: #054a49; display: flex; } .app-error { width: 100vw; height: 100vh; - background-color: #F6F6F7; + background-color: #f6f6f7; display: flex; } diff --git a/packages/app/project.json b/packages/app/project.json index 6a26cf6d458..c05e0ceef9f 100644 --- a/packages/app/project.json +++ b/packages/app/project.json @@ -50,7 +50,7 @@ "graphql-codegen:formatting": { "executor": "nx:run-commands", "dependsOn": ["graphql-codegen:postfix"], - "inputs": [{ "dependentTasksOutputFiles": "**/*.ts" }], + "inputs": [{"dependentTasksOutputFiles": "**/*.ts"}], "outputs": [ "{projectRoot}/src/cli/api/graphql/partners/generated/**/*.ts", "{projectRoot}/src/cli/api/graphql/business-platform-destinations/generated/**/*.ts", @@ -82,31 +82,31 @@ "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/partners/**/*.graphql"], "outputs": ["{projectRoot}/src/cli/api/graphql/partners/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=partners" - ], + "commands": ["pnpm exec graphql-codegen --project=partners"], "cwd": "{workspaceRoot}" } }, "graphql-codegen:generate:business-platform-destinations": { "executor": "nx:run-commands", - "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/business-platform-destinations/**/*.graphql"], + "inputs": [ + "{workspaceRoot}/graphql.config.ts", + "{projectRoot}/src/cli/api/graphql/business-platform-destinations/**/*.graphql" + ], "outputs": ["{projectRoot}/src/cli/api/graphql/business-platform-destinations/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=businessPlatformDestinations" - ], + "commands": ["pnpm exec graphql-codegen --project=businessPlatformDestinations"], "cwd": "{workspaceRoot}" } }, "graphql-codegen:generate:business-platform-organizations": { "executor": "nx:run-commands", - "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/business-platform-organizations/**/*.graphql"], + "inputs": [ + "{workspaceRoot}/graphql.config.ts", + "{projectRoot}/src/cli/api/graphql/business-platform-organizations/**/*.graphql" + ], "outputs": ["{projectRoot}/src/cli/api/graphql/business-platform-organizations/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=businessPlatformOrganizations" - ], + "commands": ["pnpm exec graphql-codegen --project=businessPlatformOrganizations"], "cwd": "{workspaceRoot}" } }, @@ -115,9 +115,7 @@ "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/app-dev/**/*.graphql"], "outputs": ["{projectRoot}/src/cli/api/graphql/app-dev/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=appDev" - ], + "commands": ["pnpm exec graphql-codegen --project=appDev"], "cwd": "{workspaceRoot}" } }, @@ -126,9 +124,7 @@ "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/webhooks/**/*.graphql"], "outputs": ["{projectRoot}/src/cli/api/graphql/webhooks/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=webhooks" - ], + "commands": ["pnpm exec graphql-codegen --project=webhooks"], "cwd": "{workspaceRoot}" } }, @@ -137,9 +133,7 @@ "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/app-management/**/*.graphql"], "outputs": ["{projectRoot}/src/cli/api/graphql/app-management/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=appManagement" - ], + "commands": ["pnpm exec graphql-codegen --project=appManagement"], "cwd": "{workspaceRoot}" } }, @@ -148,9 +142,7 @@ "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/functions/**/*.graphql"], "outputs": ["{projectRoot}/src/cli/api/graphql/functions/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=functions" - ], + "commands": ["pnpm exec graphql-codegen --project=functions"], "cwd": "{workspaceRoot}" } }, @@ -159,9 +151,7 @@ "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/bulk-operations/**/*.graphql"], "outputs": ["{projectRoot}/src/cli/api/graphql/bulk-operations/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=bulkOperations" - ], + "commands": ["pnpm exec graphql-codegen --project=bulkOperations"], "cwd": "{workspaceRoot}" } }, @@ -170,9 +160,7 @@ "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/admin/**/*.graphql"], "outputs": ["{projectRoot}/src/cli/api/graphql/admin/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=adminAsApp" - ], + "commands": ["pnpm exec graphql-codegen --project=adminAsApp"], "cwd": "{workspaceRoot}" } }, @@ -189,7 +177,7 @@ "graphql-codegen:generate:bulk-operations", "graphql-codegen:generate:admin-as-app" ], - "inputs": [{ "dependentTasksOutputFiles": "**/*.ts" }], + "inputs": [{"dependentTasksOutputFiles": "**/*.ts"}], "outputs": [ "{projectRoot}/src/cli/api/graphql/partners/generated/**/*.ts", "{projectRoot}/src/cli/api/graphql/business-platform-destinations/generated/**/*.ts", diff --git a/packages/app/src/cli/api/graphql/app-dev/queries/dev-session-update.graphql b/packages/app/src/cli/api/graphql/app-dev/queries/dev-session-update.graphql index 6d58ddbf1c9..17db8e63795 100644 --- a/packages/app/src/cli/api/graphql/app-dev/queries/dev-session-update.graphql +++ b/packages/app/src/cli/api/graphql/app-dev/queries/dev-session-update.graphql @@ -1,5 +1,10 @@ mutation DevSessionUpdate($appId: String!, $assetsUrl: String, $manifest: JSON, $inheritedModuleUids: [String!]!) { - devSessionUpdate(appId: $appId, assetsUrl: $assetsUrl, manifest: $manifest, inheritedModuleUids: $inheritedModuleUids) { + devSessionUpdate( + appId: $appId + assetsUrl: $assetsUrl + manifest: $manifest + inheritedModuleUids: $inheritedModuleUids + ) { userErrors { message on diff --git a/packages/app/src/cli/api/graphql/app-management/queries/app-versions.graphql b/packages/app/src/cli/api/graphql/app-management/queries/app-versions.graphql index 3917f18c2ae..a3f6651f2f1 100644 --- a/packages/app/src/cli/api/graphql/app-management/queries/app-versions.graphql +++ b/packages/app/src/cli/api/graphql/app-management/queries/app-versions.graphql @@ -15,7 +15,7 @@ query AppVersions($appId: ID!) { createdBy metadata { message - versionTag + versionTag } } } diff --git a/packages/app/src/cli/api/graphql/app-management/queries/apps.graphql b/packages/app/src/cli/api/graphql/app-management/queries/apps.graphql index 3de1881cd5a..1cda4a9fcaa 100644 --- a/packages/app/src/cli/api/graphql/app-management/queries/apps.graphql +++ b/packages/app/src/cli/api/graphql/app-management/queries/apps.graphql @@ -6,9 +6,9 @@ query listApps($query: String) { key activeRelease { id - version { - name - } + version { + name + } } } } diff --git a/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-cancel.graphql b/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-cancel.graphql index 2aac9022a35..96a69685d14 100644 --- a/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-cancel.graphql +++ b/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-cancel.graphql @@ -20,4 +20,3 @@ mutation BulkOperationCancel($id: ID!) { } } } - diff --git a/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-mutation.graphql b/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-mutation.graphql index 9e039700229..8f4a692956f 100644 --- a/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-mutation.graphql +++ b/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-mutation.graphql @@ -1,8 +1,4 @@ -mutation BulkOperationRunMutation( - $mutation: String! - $stagedUploadPath: String! - $clientIdentifier: String -) { +mutation BulkOperationRunMutation($mutation: String!, $stagedUploadPath: String!, $clientIdentifier: String) { bulkOperationRunMutation( mutation: $mutation stagedUploadPath: $stagedUploadPath @@ -26,4 +22,3 @@ mutation BulkOperationRunMutation( } } } - diff --git a/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-query.graphql b/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-query.graphql index 8a2101ade8e..9f70794175b 100644 --- a/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-query.graphql +++ b/packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-query.graphql @@ -1,7 +1,5 @@ mutation BulkOperationRunQuery($query: String!) { - bulkOperationRunQuery( - query: $query - ) { + bulkOperationRunQuery(query: $query) { bulkOperation { type completedAt @@ -20,4 +18,3 @@ mutation BulkOperationRunQuery($query: String!) { } } } - diff --git a/packages/app/src/cli/api/graphql/bulk-operations/mutations/staged-uploads-create.graphql b/packages/app/src/cli/api/graphql/bulk-operations/mutations/staged-uploads-create.graphql index 7e2c51d7e6b..87aa1ea0f58 100644 --- a/packages/app/src/cli/api/graphql/bulk-operations/mutations/staged-uploads-create.graphql +++ b/packages/app/src/cli/api/graphql/bulk-operations/mutations/staged-uploads-create.graphql @@ -14,4 +14,3 @@ mutation StagedUploadsCreate($input: [StagedUploadInput!]!) { } } } - diff --git a/packages/app/src/cli/api/graphql/business-platform-destinations/queries/user-info.graphql b/packages/app/src/cli/api/graphql/business-platform-destinations/queries/user-info.graphql index 6115f8e9e10..39f011b2c54 100644 --- a/packages/app/src/cli/api/graphql/business-platform-destinations/queries/user-info.graphql +++ b/packages/app/src/cli/api/graphql/business-platform-destinations/queries/user-info.graphql @@ -2,7 +2,7 @@ query UserInfo { currentUserAccount { uuid email - organizations(first: 2){ + organizations(first: 2) { nodes { name } diff --git a/packages/app/src/cli/api/graphql/business-platform-organizations/queries/provision_shop_access.graphql b/packages/app/src/cli/api/graphql/business-platform-organizations/queries/provision_shop_access.graphql index 5c80d135fc6..d2e6a75ddc2 100644 --- a/packages/app/src/cli/api/graphql/business-platform-organizations/queries/provision_shop_access.graphql +++ b/packages/app/src/cli/api/graphql/business-platform-organizations/queries/provision_shop_access.graphql @@ -1,6 +1,6 @@ mutation ProvisionShopAccess($input: OrganizationUserProvisionShopAccessInput!) { organizationUserProvisionShopAccess(organizationUserProvisionShopAccessInput: $input) { - success, + success userErrors { message } diff --git a/packages/app/src/cli/api/graphql/partners/queries/dev-stores-by-org.graphql b/packages/app/src/cli/api/graphql/partners/queries/dev-stores-by-org.graphql index a4f0dd56a46..376ecf27643 100644 --- a/packages/app/src/cli/api/graphql/partners/queries/dev-stores-by-org.graphql +++ b/packages/app/src/cli/api/graphql/partners/queries/dev-stores-by-org.graphql @@ -1,17 +1,17 @@ query DevStoresByOrg($id: ID!) { - organizations(id: $id, first: 1) { - nodes { - id - stores(first: 500, archived: false, type: [DEVELOPMENT, MANAGED, PLUS_SANDBOX]) { - nodes { - shopId - link - shopDomain - shopName - transferDisabled - convertableToPartnerTest - } + organizations(id: $id, first: 1) { + nodes { + id + stores(first: 500, archived: false, type: [DEVELOPMENT, MANAGED, PLUS_SANDBOX]) { + nodes { + shopId + link + shopDomain + shopName + transferDisabled + convertableToPartnerTest } } } + } } diff --git a/packages/app/src/cli/api/graphql/webhooks/queries/cli-testing.graphql b/packages/app/src/cli/api/graphql/webhooks/queries/cli-testing.graphql index 06b29c75bd8..80aebb54e7f 100644 --- a/packages/app/src/cli/api/graphql/webhooks/queries/cli-testing.graphql +++ b/packages/app/src/cli/api/graphql/webhooks/queries/cli-testing.graphql @@ -1,5 +1,19 @@ -mutation CliTesting($address: String!, $apiKey: String, $apiVersion: String!, $deliveryMethod: String!, $sharedSecret: String!, $topic: String!) { - cliTesting(address: $address, apiKey: $apiKey, apiVersion: $apiVersion, deliveryMethod: $deliveryMethod, sharedSecret: $sharedSecret, topic: $topic) { +mutation CliTesting( + $address: String! + $apiKey: String + $apiVersion: String! + $deliveryMethod: String! + $sharedSecret: String! + $topic: String! +) { + cliTesting( + address: $address + apiKey: $apiKey + apiVersion: $apiVersion + deliveryMethod: $deliveryMethod + sharedSecret: $sharedSecret + topic: $topic + ) { headers samplePayload success diff --git a/packages/app/src/cli/models/app/app.ts b/packages/app/src/cli/models/app/app.ts index 4a837e9aa0f..e18791c4e36 100644 --- a/packages/app/src/cli/models/app/app.ts +++ b/packages/app/src/cli/models/app/app.ts @@ -18,7 +18,11 @@ import {patchAppHiddenConfigFile} from '../../services/app/patch-app-configurati import {joinPath} from '@shopify/cli-kit/shared/node/path' import {ZodObjectOf, zod} from '@shopify/cli-kit/shared/node/schema' import {DotEnvFile} from '@shopify/cli-kit/shared/node/dot-env' -import {getDependencies, PackageManager, readAndParsePackageJson} from '@shopify/cli-kit/shared/node/node-package-manager' +import { + getDependencies, + PackageManager, + readAndParsePackageJson, +} from '@shopify/cli-kit/shared/node/node-package-manager' import { fileExistsSync, fileRealPath, diff --git a/packages/app/src/cli/models/app/loader.test.ts b/packages/app/src/cli/models/app/loader.test.ts index 3e661487929..c408389f925 100644 --- a/packages/app/src/cli/models/app/loader.test.ts +++ b/packages/app/src/cli/models/app/loader.test.ts @@ -32,7 +32,15 @@ import { PackageJson, pnpmWorkspaceFile, } from '@shopify/cli-kit/shared/node/node-package-manager' -import {inTemporaryDirectory, moveFile, mkdir, mkTmpDir, rmdir, writeFile, readFile} from '@shopify/cli-kit/shared/node/fs' +import { + inTemporaryDirectory, + moveFile, + mkdir, + mkTmpDir, + rmdir, + writeFile, + readFile, +} from '@shopify/cli-kit/shared/node/fs' import {joinPath, dirname, cwd, normalizePath} from '@shopify/cli-kit/shared/node/path' import {platformAndArch} from '@shopify/cli-kit/shared/node/os' import {outputContent, outputToken} from '@shopify/cli-kit/shared/node/output' diff --git a/packages/app/src/cli/services/dev/app-events/file-watcher.test.ts b/packages/app/src/cli/services/dev/app-events/file-watcher.test.ts index f3e94fbcbb6..a88c3737c6a 100644 --- a/packages/app/src/cli/services/dev/app-events/file-watcher.test.ts +++ b/packages/app/src/cli/services/dev/app-events/file-watcher.test.ts @@ -25,7 +25,9 @@ vi.mock('@shopify/cli-kit/shared/node/import-extractor', () => ({ // Mock fs module for fileExistsSync vi.mock('@shopify/cli-kit/shared/node/fs', async () => { - const actual = await vi.importActual('@shopify/cli-kit/shared/node/fs') + const actual = await vi.importActual( + '@shopify/cli-kit/shared/node/fs', + ) return { ...actual, fileExistsSync: vi.fn(), diff --git a/packages/app/src/cli/services/dev/urls.test.ts b/packages/app/src/cli/services/dev/urls.test.ts index b2cab3e70eb..fc7143f89b1 100644 --- a/packages/app/src/cli/services/dev/urls.test.ts +++ b/packages/app/src/cli/services/dev/urls.test.ts @@ -20,7 +20,12 @@ import {AppLinkedInterface} from '../../models/app/app.js' import {beforeEach, describe, expect, vi, test} from 'vitest' import {AbortError} from '@shopify/cli-kit/shared/node/error' import {getAvailableTCPPort} from '@shopify/cli-kit/shared/node/tcp' -import {codespacePortForwardingDomain, codespaceURL, gitpodURL, isUnitTest} from '@shopify/cli-kit/shared/node/context/local' +import { + codespacePortForwardingDomain, + codespaceURL, + gitpodURL, + isUnitTest, +} from '@shopify/cli-kit/shared/node/context/local' import {renderConfirmationPrompt, renderSelectPrompt} from '@shopify/cli-kit/shared/node/ui' import {terminalSupportsPrompting} from '@shopify/cli-kit/shared/node/system' diff --git a/packages/app/src/cli/services/function/binaries.ts b/packages/app/src/cli/services/function/binaries.ts index ec4926f56c4..602b047c484 100644 --- a/packages/app/src/cli/services/function/binaries.ts +++ b/packages/app/src/cli/services/function/binaries.ts @@ -1,5 +1,12 @@ import {joinPath, dirname} from '@shopify/cli-kit/shared/node/path' -import {chmod, createFileWriteStream, fileExists, inTemporaryDirectory, mkdir, moveFile} from '@shopify/cli-kit/shared/node/fs' +import { + chmod, + createFileWriteStream, + fileExists, + inTemporaryDirectory, + mkdir, + moveFile, +} from '@shopify/cli-kit/shared/node/fs' import {outputDebug} from '@shopify/cli-kit/shared/node/output' import {performActionWithRetryAfterRecovery} from '@shopify/cli-kit/shared/common/retry' import {fetch} from '@shopify/cli-kit/shared/node/http' diff --git a/packages/app/tsconfig.build.json b/packages/app/tsconfig.build.json index 677bc4b992b..7041f630943 100644 --- a/packages/app/tsconfig.build.json +++ b/packages/app/tsconfig.build.json @@ -1,8 +1,5 @@ { - "extends": "./tsconfig.json", - "exclude": ["**/*.test.ts"], - "references": [ - {"path": "../cli-kit"}, - {"path": "../theme"} - ] + "extends": "./tsconfig.json", + "exclude": ["**/*.test.ts"], + "references": [{"path": "../cli-kit"}, {"path": "../theme"}] } diff --git a/packages/cli-kit/project.json b/packages/cli-kit/project.json index 8359fb20359..7b9fcc16dd9 100644 --- a/packages/cli-kit/project.json +++ b/packages/cli-kit/project.json @@ -3,9 +3,7 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "packages/cli-kit/src", "projectType": "library", - "tags": [ - "scope:foundation" - ], + "tags": ["scope:foundation"], "targets": { "clean": { "executor": "nx:run-commands", @@ -16,12 +14,8 @@ }, "build": { "executor": "nx:run-commands", - "outputs": [ - "{workspaceRoot}/dist" - ], - "inputs": [ - "{projectRoot}/src/**/*" - ], + "outputs": ["{workspaceRoot}/dist"], + "inputs": ["{projectRoot}/src/**/*"], "options": { "command": "pnpm tsc -b ./tsconfig.build.json && node scripts/generate-compat.mjs", "cwd": "packages/cli-kit" @@ -29,9 +23,7 @@ }, "build-api-docs": { "executor": "nx:run-commands", - "outputs": [ - "{workspaceRoot}/docs" - ], + "outputs": ["{workspaceRoot}/docs"], "options": { "command": "node ./scripts/build-api-docs.js", "cwd": "packages/cli-kit" @@ -39,9 +31,7 @@ }, "open-api-docs": { "executor": "nx:run-commands", - "dependsOn": [ - "build-api-docs" - ], + "dependsOn": ["build-api-docs"], "options": { "command": "open ../../docs/api/cli-kit/index.html", "cwd": "packages/cli-kit" @@ -77,59 +67,40 @@ }, "graphql-codegen": { "executor": "nx:noop", - "dependsOn": [ - "graphql-codegen:formatting" - ] + "dependsOn": ["graphql-codegen:formatting"] }, "graphql-codegen:formatting": { "executor": "nx:run-commands", - "dependsOn": [ - "graphql-codegen:postfix" - ], + "dependsOn": ["graphql-codegen:postfix"], "inputs": [ { "dependentTasksOutputFiles": "**/*.ts" } ], - "outputs": [ - "{projectRoot}/src/admin/graphql/generated/**/*.ts" - ], + "outputs": ["{projectRoot}/src/admin/graphql/generated/**/*.ts"], "options": { - "commands": [ - "pnpm eslint 'src/admin/graphql/generated/**/*.{ts,tsx}' --fix" - ], + "commands": ["pnpm eslint 'src/admin/graphql/generated/**/*.{ts,tsx}' --fix"], "cwd": "packages/cli-kit" } }, "graphql-codegen:generate:admin": { "executor": "nx:run-commands", - "inputs": [ - "{workspaceRoot}/graphql.config.ts", - "{projectRoot}/src/admin/graphql/**/*.graphql" - ], - "outputs": [ - "{projectRoot}/src/admin/graphql/generated/**/*.ts" - ], + "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/admin/graphql/**/*.graphql"], + "outputs": ["{projectRoot}/src/admin/graphql/generated/**/*.ts"], "options": { - "commands": [ - "pnpm exec graphql-codegen --project=admin" - ], + "commands": ["pnpm exec graphql-codegen --project=admin"], "cwd": "{workspaceRoot}" } }, "graphql-codegen:postfix": { "executor": "nx:run-commands", - "dependsOn": [ - "graphql-codegen:generate:admin" - ], + "dependsOn": ["graphql-codegen:generate:admin"], "inputs": [ { "dependentTasksOutputFiles": "**/*.ts" } ], - "outputs": [ - "{projectRoot}/src/admin/graphql/generated/**/*.ts" - ], + "outputs": ["{projectRoot}/src/admin/graphql/generated/**/*.ts"], "options": { "commands": [ "find ./packages/cli-kit/src/admin/graphql/generated/ -type f -name '*.ts' -exec sh -c 'sed -i \"\" \"s|import \\* as Types from '\\''./types'\\'';|import \\* as Types from '\\''./types.js'\\'';|g; s|export const \\([A-Za-z0-9_]*\\)Document =|export const \\1 =|g\" \"$0\"' {} \\;" diff --git a/packages/cli-kit/scripts/build-api-docs.js b/packages/cli-kit/scripts/build-api-docs.js index 476823a0775..d0bfdeb0e11 100644 --- a/packages/cli-kit/scripts/build-api-docs.js +++ b/packages/cli-kit/scripts/build-api-docs.js @@ -8,8 +8,9 @@ const __dirname = path.dirname(__filename) async function main() { const cliKitRoot = path.join(__dirname, '..') - const entryPoints = (await glob('src/public/**/*.(ts|tsx)', {cwd: cliKitRoot})) - .filter((file) => !file.endsWith('.test.ts') && !file.endsWith('.test.tsx')) + const entryPoints = (await glob('src/public/**/*.(ts|tsx)', {cwd: cliKitRoot})).filter( + (file) => !file.endsWith('.test.ts') && !file.endsWith('.test.tsx'), + ) const app = await TypeDocApp.bootstrapWithPlugins({ excludeExternals: true, diff --git a/packages/cli-kit/src/admin/graphql/mutations/theme_duplicate.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_duplicate.graphql index 51a600b8b43..4c30bbf6955 100644 --- a/packages/cli-kit/src/admin/graphql/mutations/theme_duplicate.graphql +++ b/packages/cli-kit/src/admin/graphql/mutations/theme_duplicate.graphql @@ -1,4 +1,4 @@ - mutation themeDuplicate($id: ID!, $name: String) { +mutation themeDuplicate($id: ID!, $name: String) { themeDuplicate(id: $id, name: $name) { newTheme { id diff --git a/packages/cli-kit/src/admin/graphql/mutations/theme_publish.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_publish.graphql index b6dfe274561..3c9e63764ff 100644 --- a/packages/cli-kit/src/admin/graphql/mutations/theme_publish.graphql +++ b/packages/cli-kit/src/admin/graphql/mutations/theme_publish.graphql @@ -5,7 +5,7 @@ mutation themePublish($id: ID!) { name role } - userErrors{ + userErrors { field message } diff --git a/packages/cli-kit/src/admin/graphql/mutations/theme_update.graphql b/packages/cli-kit/src/admin/graphql/mutations/theme_update.graphql index 26f3a8204ed..55582e30503 100644 --- a/packages/cli-kit/src/admin/graphql/mutations/theme_update.graphql +++ b/packages/cli-kit/src/admin/graphql/mutations/theme_update.graphql @@ -1,11 +1,11 @@ mutation themeUpdate($id: ID!, $input: OnlineStoreThemeInput!) { - themeUpdate(id: $id, input: $input ) { + themeUpdate(id: $id, input: $input) { theme { id name role } - userErrors{ + userErrors { field message } diff --git a/packages/cli-kit/src/admin/graphql/queries/get_theme.graphql b/packages/cli-kit/src/admin/graphql/queries/get_theme.graphql index 10e760dce81..77d838b7fdd 100644 --- a/packages/cli-kit/src/admin/graphql/queries/get_theme.graphql +++ b/packages/cli-kit/src/admin/graphql/queries/get_theme.graphql @@ -1,4 +1,3 @@ - query getTheme($id: ID!) { theme(id: $id) { id diff --git a/packages/cli-kit/src/admin/graphql/queries/get_theme_file_bodies.graphql b/packages/cli-kit/src/admin/graphql/queries/get_theme_file_bodies.graphql index 5e27bc05388..d86ee2ea013 100644 --- a/packages/cli-kit/src/admin/graphql/queries/get_theme_file_bodies.graphql +++ b/packages/cli-kit/src/admin/graphql/queries/get_theme_file_bodies.graphql @@ -2,14 +2,20 @@ query getThemeFileBodies($id: ID!, $after: String, $filenames: [String!]) { theme(id: $id) { files(first: 250, after: $after, filenames: $filenames) { nodes { - filename + filename size checksumMd5 body { __typename - ... on OnlineStoreThemeFileBodyText { content } - ... on OnlineStoreThemeFileBodyBase64 { contentBase64 } - ... on OnlineStoreThemeFileBodyUrl { url } + ... on OnlineStoreThemeFileBodyText { + content + } + ... on OnlineStoreThemeFileBodyBase64 { + contentBase64 + } + ... on OnlineStoreThemeFileBodyUrl { + url + } } } userErrors { diff --git a/packages/cli-kit/src/admin/graphql/queries/get_themes.graphql b/packages/cli-kit/src/admin/graphql/queries/get_themes.graphql index b8d15dfbea7..7bd4faa8a64 100644 --- a/packages/cli-kit/src/admin/graphql/queries/get_themes.graphql +++ b/packages/cli-kit/src/admin/graphql/queries/get_themes.graphql @@ -1,4 +1,3 @@ - query getThemes($after: String) { themes(first: 50, after: $after) { nodes { diff --git a/packages/cli-kit/tsconfig.build.json b/packages/cli-kit/tsconfig.build.json index 40252e3e2a9..d472b2c2aa0 100644 --- a/packages/cli-kit/tsconfig.build.json +++ b/packages/cli-kit/tsconfig.build.json @@ -1,4 +1,4 @@ { - "extends": "./tsconfig.json", - "exclude": ["**/*.test.ts"], - } + "extends": "./tsconfig.json", + "exclude": ["**/*.test.ts"] +} diff --git a/packages/cli/README.md b/packages/cli/README.md index 82416a8fed7..3c02585b24c 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -102,14 +102,13 @@ USAGE [--skip-dependencies-installation] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --skip-dependencies-installation [env: SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION] Skips the installation of - dependencies. Deprecated, use workspaces instead. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --skip-dependencies-installation Skips the installation of dependencies. Deprecated, use workspaces instead. + --verbose Increase the verbosity of the output. DESCRIPTION Build the app, including extensions. @@ -133,14 +132,14 @@ USAGE ] [-s ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -s, --store= [env: SHOPIFY_FLAG_STORE] The store domain. Must be an existing dev store. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --id= (required) [env: SHOPIFY_FLAG_ID] The bulk operation ID to cancel (numeric ID or full GID). - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + -s, --store= The store domain. Must be an existing dev store. + --client-id= The Client ID of your app. + --id= (required) The bulk operation ID to cancel (numeric ID or full GID). + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Cancel a bulk operation. @@ -159,26 +158,24 @@ USAGE [--verbose] [--version ] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -q, --query= [env: SHOPIFY_FLAG_QUERY] The GraphQL query or mutation to run as a bulk operation. - -s, --store= [env: SHOPIFY_FLAG_STORE] The store domain. Must be an existing dev store. - -v, --variables=... [env: SHOPIFY_FLAG_VARIABLES] The values for any GraphQL variables in your mutation, in - JSON format. Can be specified multiple times. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --output-file= [env: SHOPIFY_FLAG_OUTPUT_FILE] The file path where results should be written if --watch - is specified. If not specified, results will be written to STDOUT. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --query-file= [env: SHOPIFY_FLAG_QUERY_FILE] Path to a file containing the GraphQL query or mutation. - Can't be used with --query. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --variable-file= [env: SHOPIFY_FLAG_VARIABLE_FILE] Path to a file containing GraphQL variables in JSONL - format (one JSON object per line). Can't be used with --variables. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. - --version= [env: SHOPIFY_FLAG_VERSION] The API version to use for the bulk operation. If not - specified, uses the latest stable version. - --watch [env: SHOPIFY_FLAG_WATCH] Wait for bulk operation results before exiting. Defaults to - false. + -c, --config= The name of the app configuration. + -q, --query= The GraphQL query or mutation to run as a bulk operation. + -s, --store= The store domain. Must be an existing dev store. + -v, --variables=... The values for any GraphQL variables in your mutation, in JSON format. Can be specified + multiple times. + --client-id= The Client ID of your app. + --no-color Disable color output. + --output-file= The file path where results should be written if --watch is specified. If not specified, + results will be written to STDOUT. + --path= The path to your app directory. + --query-file= Path to a file containing the GraphQL query or mutation. Can't be used with --query. + --reset Reset all your settings. + --variable-file= Path to a file containing GraphQL variables in JSONL format (one JSON object per line). + Can't be used with --variables. + --verbose Increase the verbosity of the output. + --version= The API version to use for the bulk operation. If not specified, uses the latest stable + version. + --watch Wait for bulk operation results before exiting. Defaults to false. DESCRIPTION Execute bulk operations. @@ -204,15 +201,15 @@ USAGE | ] [-s ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -s, --store= [env: SHOPIFY_FLAG_STORE] The store domain. Must be an existing dev store. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --id= [env: SHOPIFY_FLAG_ID] The bulk operation ID (numeric ID or full GID). If not provided, lists - all bulk operations belonging to this app on this store in the last 7 days. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + -s, --store= The store domain. Must be an existing dev store. + --client-id= The Client ID of your app. + --id= The bulk operation ID (numeric ID or full GID). If not provided, lists all bulk operations + belonging to this app on this store in the last 7 days. + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Check the status of bulk operations. @@ -236,12 +233,12 @@ USAGE $ shopify app config link [--client-id | -c ] [--no-color] [--path ] [--reset | ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Fetch your app configuration from the Developer Dashboard. @@ -262,12 +259,12 @@ USAGE $ shopify app config pull [--client-id | -c ] [--no-color] [--path ] [--reset | ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Refresh an already-linked app configuration without prompts. @@ -287,14 +284,14 @@ USAGE $ shopify app config use [config] [flags] ARGUMENTS - [CONFIG] The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'. + CONFIG The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'. FLAGS - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Activate an app configuration. @@ -314,32 +311,28 @@ USAGE [--verbose] [--version ] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -f, --force [env: SHOPIFY_FLAG_FORCE] Deploy without asking for confirmation. Equivalent to - --allow-updates --allow-deletes. For CI/CD environments, the recommended flag is - --allow-updates. - --allow-deletes [env: SHOPIFY_FLAG_ALLOW_DELETES] Allows removing extensions and configuration - without requiring user confirmation. For CI/CD environments, the recommended flag is - --allow-updates. - --allow-updates [env: SHOPIFY_FLAG_ALLOW_UPDATES] Allows adding and updating extensions and - configuration without requiring user confirmation. Recommended option for CI/CD - environments. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --message= [env: SHOPIFY_FLAG_MESSAGE] Optional message that will be associated with this - version. This is for internal use only and won't be available externally. - --no-build [env: SHOPIFY_FLAG_NO_BUILD] Use with caution: Skips building any elements of the - app that require building. You should ensure your app has been prepared in advance, - such as by running `shopify app build` or by caching build artifacts. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --no-release [env: SHOPIFY_FLAG_NO_RELEASE] Creates a version but doesn't release it - it's not - made available to merchants. With this flag, a user confirmation is not required. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --source-control-url= [env: SHOPIFY_FLAG_SOURCE_CONTROL_URL] URL associated with the new app version. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. - --version= [env: SHOPIFY_FLAG_VERSION] Optional version tag that will be associated with this - app version. If not provided, an auto-generated identifier will be generated for - this app version. + -c, --config= The name of the app configuration. + -f, --force Deploy without asking for confirmation. Equivalent to --allow-updates + --allow-deletes. For CI/CD environments, the recommended flag is --allow-updates. + --allow-deletes Allows removing extensions and configuration without requiring user confirmation. + For CI/CD environments, the recommended flag is --allow-updates. + --allow-updates Allows adding and updating extensions and configuration without requiring user + confirmation. Recommended option for CI/CD environments. + --client-id= The Client ID of your app. + --message= Optional message that will be associated with this version. This is for internal use + only and won't be available externally. + --no-build Use with caution: Skips building any elements of the app that require building. You + should ensure your app has been prepared in advance, such as by running `shopify app + build` or by caching build artifacts. + --no-color Disable color output. + --no-release Creates a version but doesn't release it - it's not made available to merchants. + With this flag, a user confirmation is not required. + --path= The path to your app directory. + --reset Reset all your settings. + --source-control-url= URL associated with the new app version. + --verbose Increase the verbosity of the output. + --version= Optional version tag that will be associated with this app version. If not provided, + an auto-generated identifier will be generated for this app version. DESCRIPTION Deploy your Shopify app. @@ -366,35 +359,29 @@ USAGE [--theme-app-extension-port ] [--use-localhost | [--tunnel-url | ]] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -s, --store= [env: SHOPIFY_FLAG_STORE] Store URL. Must be an existing development or - Shopify Plus sandbox store. - -t, --theme= [env: SHOPIFY_FLAG_THEME] Theme ID or name of the theme app extension host - theme. - --checkout-cart-url= [env: SHOPIFY_FLAG_CHECKOUT_CART_URL] Resource URL for checkout UI extension. - Format: "/cart/{productVariantID}:{productQuantity}" - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --localhost-port= [env: SHOPIFY_FLAG_LOCALHOST_PORT] Port to use for localhost. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --no-update [env: SHOPIFY_FLAG_NO_UPDATE] Uses the app URL from the toml file instead an - autogenerated URL for dev. - --notify= [env: SHOPIFY_FLAG_NOTIFY] The file path or URL. The file path is to a file - that you want updated on idle. The URL path is where you want a webhook posted - to report on file changes. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --skip-dependencies-installation [env: SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION] Skips the installation of - dependencies. Deprecated, use workspaces instead. - --subscription-product-url= [env: SHOPIFY_FLAG_SUBSCRIPTION_PRODUCT_URL] Resource URL for subscription UI - extension. Format: "/products/{productId}" - --theme-app-extension-port= [env: SHOPIFY_FLAG_THEME_APP_EXTENSION_PORT] Local port of the theme app - extension development server. - --tunnel-url= [env: SHOPIFY_FLAG_TUNNEL_URL] Use a custom tunnel, it must be running before - executing dev. Format: "https://my-tunnel-url:port". - --use-localhost [env: SHOPIFY_FLAG_USE_LOCALHOST] Service entry point will listen to - localhost. A tunnel won't be used. Will work for testing many app features, - but not those that directly invoke your app (E.g: Webhooks) - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + -s, --store= Store URL. Must be an existing development or Shopify Plus sandbox store. + -t, --theme= Theme ID or name of the theme app extension host theme. + --checkout-cart-url= Resource URL for checkout UI extension. Format: + "/cart/{productVariantID}:{productQuantity}" + --client-id= The Client ID of your app. + --localhost-port= Port to use for localhost. + --no-color Disable color output. + --no-update Uses the app URL from the toml file instead an autogenerated URL for dev. + --notify= The file path or URL. The file path is to a file that you want updated on + idle. The URL path is where you want a webhook posted to report on file + changes. + --path= The path to your app directory. + --reset Reset all your settings. + --skip-dependencies-installation Skips the installation of dependencies. Deprecated, use workspaces instead. + --subscription-product-url= Resource URL for subscription UI extension. Format: "/products/{productId}" + --theme-app-extension-port= Local port of the theme app extension development server. + --tunnel-url= Use a custom tunnel, it must be running before executing dev. Format: + "https://my-tunnel-url:port". + --use-localhost Service entry point will listen to localhost. A tunnel won't be used. Will + work for testing many app features, but not those that directly invoke your + app (E.g: Webhooks) + --verbose Increase the verbosity of the output. DESCRIPTION Run the app. @@ -413,13 +400,13 @@ USAGE ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -s, --store= [env: SHOPIFY_FLAG_STORE] Store URL. Must be an existing development store. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + -s, --store= Store URL. Must be an existing development store. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Cleans up the dev preview from the selected store. @@ -439,13 +426,13 @@ USAGE [--reset | ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --env-file= [env: SHOPIFY_FLAG_ENV_FILE] Specify an environment file to update if the update flag is set - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + --client-id= The Client ID of your app. + --env-file= Specify an environment file to update if the update flag is set + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Pull app and extensions environment variables. @@ -465,12 +452,12 @@ USAGE $ shopify app env show [--client-id | -c ] [--no-color] [--path ] [--reset | ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your app directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Display app and extensions environment variables. @@ -489,26 +476,21 @@ USAGE [--version ] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -q, --query= [env: SHOPIFY_FLAG_QUERY] The GraphQL query or mutation, as a string. - -s, --store= [env: SHOPIFY_FLAG_STORE] The myshopify.com domain of the store to execute against. The - app must be installed on the store. If not specified, you will be prompted to select a - store. - -v, --variables= [env: SHOPIFY_FLAG_VARIABLES] The values for any GraphQL variables in your query or - mutation, in JSON format. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --output-file= [env: SHOPIFY_FLAG_OUTPUT_FILE] The file name where results should be written, instead of - STDOUT. - --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. - --query-file= [env: SHOPIFY_FLAG_QUERY_FILE] Path to a file containing the GraphQL query or mutation. - Can't be used with --query. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --variable-file= [env: SHOPIFY_FLAG_VARIABLE_FILE] Path to a file containing GraphQL variables in JSON - format. Can't be used with --variables. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. - --version= [env: SHOPIFY_FLAG_VERSION] The API version to use for the query or mutation. Defaults to - the latest stable version. + -c, --config= The name of the app configuration. + -q, --query= The GraphQL query or mutation, as a string. + -s, --store= The myshopify.com domain of the store to execute against. The app must be installed on + the store. If not specified, you will be prompted to select a store. + -v, --variables= The values for any GraphQL variables in your query or mutation, in JSON format. + --client-id= The Client ID of your app. + --no-color Disable color output. + --output-file= The file name where results should be written, instead of STDOUT. + --path= The path to your app directory. + --query-file= Path to a file containing the GraphQL query or mutation. Can't be used with --query. + --reset Reset all your settings. + --variable-file= Path to a file containing GraphQL variables in JSON format. Can't be used with + --variables. + --verbose Increase the verbosity of the output. + --version= The API version to use for the query or mutation. Defaults to the latest stable version. DESCRIPTION Execute GraphQL queries and mutations. @@ -528,12 +510,12 @@ USAGE $ shopify app function build [--client-id | -c ] [--no-color] [--path ] [--reset | ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your function directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Compile a function to wasm. @@ -551,13 +533,13 @@ USAGE [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -j, --json [env: SHOPIFY_FLAG_JSON] Output the result as JSON. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + -j, --json Output the result as JSON. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your function directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Print basic information about your function. @@ -583,17 +565,16 @@ USAGE [--reset | ] [--verbose] [-w] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -j, --json [env: SHOPIFY_FLAG_JSON] Output the result as JSON. - -l, --log= [env: SHOPIFY_FLAG_LOG] Specifies a log identifier to replay instead of selecting from a - list. The identifier is provided in the output of `shopify app dev` and is the suffix of the - log file name. - -w, --[no-]watch [env: SHOPIFY_FLAG_WATCH] Re-run the function when the source code changes. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + -j, --json Output the result as JSON. + -l, --log= Specifies a log identifier to replay instead of selecting from a list. The identifier is + provided in the output of `shopify app dev` and is the suffix of the log file name. + -w, --[no-]watch Re-run the function when the source code changes. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your function directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Replays a function run from an app log. @@ -613,16 +594,15 @@ USAGE ] [--reset | ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -e, --export= [env: SHOPIFY_FLAG_EXPORT] Name of the WebAssembly export to invoke. - -i, --input= [env: SHOPIFY_FLAG_INPUT] The input JSON to pass to the function. If omitted, standard input - is used. - -j, --json [env: SHOPIFY_FLAG_JSON] Output the result as JSON. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + -e, --export= Name of the WebAssembly export to invoke. + -i, --input= The input JSON to pass to the function. If omitted, standard input is used. + -j, --json Output the result as JSON. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your function directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Run a function locally for testing. @@ -642,13 +622,13 @@ USAGE [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --stdout [env: SHOPIFY_FLAG_STDOUT] Output the schema to stdout instead of writing to a file. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your function directory. + --reset Reset all your settings. + --stdout Output the schema to stdout instead of writing to a file. + --verbose Increase the verbosity of the output. DESCRIPTION Fetch the latest GraphQL schema for a function. @@ -670,12 +650,12 @@ USAGE [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. - --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. - --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. - --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + -c, --config= The name of the app configuration. + --client-id= The Client ID of your app. + --no-color Disable color output. + --path= The path to your function directory. + --reset Reset all your settings. + --verbose Increase the verbosity of the output. DESCRIPTION Generate GraphQL types for a JavaScript function. @@ -695,17 +675,17 @@ USAGE ] [-t ] [--verbose] FLAGS - -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. - -n, --name= [env: SHOPIFY_FLAG_NAME] name of your Extension - -t, --template= [env: SHOPIFY_FLAG_EXTENSION_TEMPLATE] Extension template - -t, --type= [env: SHOPIFY_FLAG_EXTENSION_TYPE] Deprecated. Please use --template - --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. - --flavor=\"\n " + ], + "flags": { + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "search", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "usage": "search [query]" }, - "hydrogen:deploy": { - "aliases": [], - "args": {}, - "description": "Builds and deploys a Hydrogen storefront to Oxygen.", + "theme:check": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Calls and runs \"Theme Check\" (https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. \"Learn more about the checks that Theme Check runs.\" (https://shopify.dev/docs/themes/tools/theme-check/checks)", + "descriptionWithMarkdown": "Calls and runs [Theme Check](https://shopify.dev/docs/themes/tools/theme-check) to analyze your theme code for errors and to ensure that it follows theme and Liquid best practices. [Learn more about the checks that Theme Check runs.](https://shopify.dev/docs/themes/tools/theme-check/checks)", "flags": { - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "name": "entry", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "auto-correct": { + "allowNo": false, + "char": "a", + "description": "Automatically fix offenses", + "env": "SHOPIFY_FLAG_AUTO_CORRECT", + "name": "auto-correct", + "required": false, + "type": "boolean" }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", + "config": { + "char": "C", + "description": "Use the config provided, overriding .theme-check.yml if present\n Supports all theme-check: config values, e.g., theme-check:theme-app-extension,\n theme-check:recommended, theme-check:all\n For backwards compatibility, :theme_app_extension is also supported ", + "env": "SHOPIFY_FLAG_CONFIG", "hasDynamicHelp": false, "multiple": false, + "name": "config", + "required": false, "type": "option" }, - "env-branch": { - "deprecated": { - "to": "env", - "message": "--env-branch is deprecated. Use --env instead." - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", - "name": "env-branch", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, - "env-file": { - "description": "Path to an environment file to override existing environment variables for the deployment.", - "name": "env-file", - "required": false, + "fail-level": { + "default": "error", + "description": "Minimum severity for exit with error code", + "env": "SHOPIFY_FLAG_FAIL_LEVEL", "hasDynamicHelp": false, "multiple": false, + "name": "fail-level", + "options": [ + "crash", + "error", + "suggestion", + "style", + "warning", + "info" + ], + "required": false, "type": "option" }, - "preview": { - "description": "Deploys to the Preview environment.", - "name": "preview", - "required": false, + "init": { "allowNo": false, - "type": "boolean" - }, - "force": { - "char": "f", - "description": "Forces a deployment to proceed if there are uncommited changes in its Git repository.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + "description": "Generate a .theme-check.yml file", + "env": "SHOPIFY_FLAG_INIT", + "name": "init", "required": false, - "allowNo": false, "type": "boolean" }, - "no-verify": { - "description": "Skip the routability verification step after deployment.", - "name": "no-verify", - "required": false, + "list": { "allowNo": false, + "description": "List enabled checks", + "env": "SHOPIFY_FLAG_LIST", + "name": "list", + "required": false, "type": "boolean" }, - "auth-bypass-token": { - "description": "Generate an authentication bypass token, which can be used to perform end-to-end tests against the deployment.", - "env": "AUTH_BYPASS_TOKEN", - "name": "auth-bypass-token", - "required": false, + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, - "auth-bypass-token-duration": { - "dependsOn": [ - "auth-bypass-token" - ], - "description": "Specify the duration (in hours) up to 12 hours for the authentication bypass token. Defaults to `2`", - "env": "AUTH_BYPASS_TOKEN_DURATION", - "name": "auth-bypass-token-duration", - "required": false, + "output": { + "char": "o", + "default": "text", + "description": "The output format to use", + "env": "SHOPIFY_FLAG_OUTPUT", "hasDynamicHelp": false, "multiple": false, + "name": "output", + "options": [ + "text", + "json" + ], + "required": false, "type": "option" }, - "build-command": { - "description": "Specify a build command to run before deploying. If not specified, `shopify hydrogen build` will be used.", - "name": "build-command", - "required": false, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "lockfile-check": { - "description": "Checks that there is exactly one valid lockfile in the project. Defaults to `true`. Deactivate with `--no-lockfile-check`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LOCKFILE_CHECK", - "name": "lockfile-check", - "allowNo": true, + "print": { + "allowNo": false, + "description": "Output active config to STDOUT", + "env": "SHOPIFY_FLAG_PRINT", + "name": "print", + "required": false, "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" }, - "shop": { - "char": "s", - "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", - "env": "SHOPIFY_SHOP", - "name": "shop", + "version": { + "allowNo": false, + "char": "v", + "description": "Print Theme Check version", + "env": "SHOPIFY_FLAG_VERSION", + "name": "version", + "required": false, + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:check", + "multiEnvironmentsFlags": [ + "path" + ], + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Validate the theme." + }, + "theme:console": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", + "descriptionWithMarkdown": "Starts the Shopify Liquid REPL (read-eval-print loop) tool. This tool provides an interactive terminal interface for evaluating Liquid code and exploring Liquid objects, filters, and tags using real store data.\n\n You can also provide context to the console using a URL, as some Liquid objects are context-specific", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, - "json-output": { - "description": "Create a JSON file containing the deployment details in CI environments. Defaults to true, use `--no-json-output` to disable.", - "name": "json-output", - "required": false, - "allowNo": true, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, - "token": { - "char": "t", - "description": "Oxygen deployment token. Defaults to the linked storefront's token if available.", - "env": "SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN", - "name": "token", - "required": false, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "password", "type": "option" }, - "metadata-description": { - "description": "Description of the changes in the deployment. Defaults to the commit message of the latest commit if there are no uncommited changes.", - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_DESCRIPTION", - "name": "metadata-description", - "required": false, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "metadata-url": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_URL", - "hidden": true, - "name": "metadata-url", - "required": false, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "metadata-user": { - "description": "User that initiated the deployment. Will be saved and displayed in the Shopify admin", - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_USER", - "name": "metadata-user", - "required": false, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", "hasDynamicHelp": false, "multiple": false, + "name": "store-password", "type": "option" }, - "metadata-version": { - "env": "SHOPIFY_HYDROGEN_FLAG_METADATA_VERSION", - "hidden": true, - "name": "metadata-version", - "required": false, + "url": { + "default": "/", + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", "hasDynamicHelp": false, "multiple": false, + "name": "url", "type": "option" }, - "force-client-sourcemap": { - "description": "Client sourcemapping is avoided by default because it makes backend code visible in the browser. Use this flag to force enabling it.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE_CLIENT_SOURCEMAP", - "name": "force-client-sourcemap", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:deploy", + "hiddenAliases": [ + ], + "id": "theme:console", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Builds and deploys your Hydrogen storefront to Oxygen. Requires an Oxygen deployment token to be set with the `--token` flag or an environment variable (`SHOPIFY_HYDROGEN_DEPLOYMENT_TOKEN`). If the storefront is [linked](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-link) then the Oxygen deployment token for the linked storefront will be used automatically.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:g": { - "aliases": [], - "args": {}, - "description": "Shortcut for `hydrogen generate`. See `hydrogen generate --help` for more information.", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "hydrogen:g", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": false, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Shopify Liquid REPL (read-eval-print loop) tool", + "usage": [ + "theme console", + "theme console --url /products/classic-leather-jacket" + ] }, - "hydrogen:init": { - "aliases": [], - "args": {}, - "description": "Creates a new Hydrogen storefront.", + "theme:delete": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", + "descriptionWithMarkdown": "Deletes a theme from your store.\n\n You can specify multiple themes by ID. If no theme is specified, then you're prompted to select the theme that you want to delete from the list of themes in your store.\n\n You're asked to confirm that you want to delete the specified themes before they are deleted. You can skip this confirmation using the `--force` flag.", "flags": { - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + "development": { "allowNo": false, + "char": "d", + "description": "Delete your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "type": "boolean" }, - "path": { - "description": "The path to the directory of the new Hydrogen storefront.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, - "language": { - "description": "Sets the template language to use. One of `js` or `ts`.", - "env": "SHOPIFY_HYDROGEN_FLAG_LANGUAGE", - "name": "language", + "force": { + "allowNo": false, + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "password", "type": "option" }, - "template": { - "description": "Scaffolds project based on an existing template or example from the Hydrogen repository.", - "env": "SHOPIFY_HYDROGEN_FLAG_TEMPLATE", - "name": "template", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "install-deps": { - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", - "allowNo": true, - "type": "boolean" - }, - "mock-shop": { - "description": "Use mock.shop as the data source for the storefront.", - "env": "SHOPIFY_HYDROGEN_FLAG_MOCK_DATA", - "name": "mock-shop", + "show-all": { "allowNo": false, + "char": "a", + "description": "Include others development themes in theme list.", + "env": "SHOPIFY_FLAG_SHOW_ALL", + "name": "show-all", "type": "boolean" }, - "styling": { - "description": "Sets the styling strategy to use. One of `tailwind`, `vanilla-extract`, `css-modules`, `postcss`, `none`.", - "env": "SHOPIFY_HYDROGEN_FLAG_STYLING", - "name": "styling", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "markets": { - "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", - "env": "SHOPIFY_HYDROGEN_FLAG_I18N", - "name": "markets", - "hasDynamicHelp": false, - "multiple": false, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": true, + "name": "theme", "type": "option" }, - "shortcut": { - "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", - "name": "shortcut", - "allowNo": true, - "type": "boolean" - }, - "routes": { - "description": "Generate routes for all pages.", - "env": "SHOPIFY_HYDROGEN_FLAG_ROUTES", - "name": "routes", - "allowNo": true, - "type": "boolean" - }, - "git": { - "description": "Init Git and create initial commits.", - "env": "SHOPIFY_HYDROGEN_FLAG_GIT", - "name": "git", - "allowNo": true, - "type": "boolean" - }, - "quickstart": { - "description": "Scaffolds a new Hydrogen project with a set of sensible defaults. Equivalent to `shopify hydrogen init --path hydrogen-quickstart --mock-shop --language js --shortcut --routes --markets none`", - "env": "SHOPIFY_HYDROGEN_FLAG_QUICKSTART", - "name": "quickstart", + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" - }, - "package-manager": { - "env": "SHOPIFY_HYDROGEN_FLAG_PACKAGE_MANAGER", - "hidden": true, - "name": "package-manager", - "hasDynamicHelp": false, - "multiple": false, - "options": [ - "npm", - "yarn", - "pnpm", - "unknown" - ], - "type": "option" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:init", + "hiddenAliases": [ + ], + "id": "theme:delete", + "multiEnvironmentsFlags": [ + "store", + "password", + [ + "development", + "theme" + ] + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Creates a new Hydrogen storefront.", - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Delete remote themes from the connected store. This command can't be undone." }, - "hydrogen:link": { - "aliases": [], - "args": {}, - "description": "Link a local project to one of your shop's Hydrogen storefronts.", + "theme:dev": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", "flags": { - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + "allow-live": { "allowNo": false, + "char": "a", + "description": "Allow development on a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", "type": "boolean" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, - "storefront": { - "description": "The name of a Hydrogen Storefront (e.g. \"Jane's Apparel\")", - "env": "SHOPIFY_HYDROGEN_STOREFRONT", - "name": "storefront", + "error-overlay": { + "default": "default", + "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", + "env": "SHOPIFY_FLAG_ERROR_OVERLAY", "hasDynamicHelp": false, "multiple": false, + "name": "error-overlay", + "options": [ + "silent", + "default" + ], "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:link", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Links your local development environment to a remote Hydrogen storefront. You can link an unlimited number of development environments to a single Hydrogen storefront.\n\n Linking to a Hydrogen storefront enables you to run [dev](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-dev) and automatically inject your linked Hydrogen storefront's environment variables directly into the server runtime.\n\n After you run the `link` command, you can access the [env list](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-list), [env pull](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-env-pull), and [unlink](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-unlink) commands.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:list": { - "aliases": [], - "args": {}, - "description": "Returns a list of Hydrogen storefronts available on a given shop.", - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "host": { + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", + "env": "SHOPIFY_FLAG_HOST", "hasDynamicHelp": false, "multiple": false, + "name": "host", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:list", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Lists all remote Hydrogen storefronts available to link to your local development environment.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:login": { - "aliases": [], - "args": {}, - "description": "Login to your Shopify account.", - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + }, + "ignore": { + "char": "x", + "description": "Skip hot reloading any files that match the specified pattern.", + "env": "SHOPIFY_FLAG_IGNORE", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "ignore", "type": "option" }, - "shop": { - "char": "s", - "description": "Shop URL. It can be the shop prefix (janes-apparel) or the full myshopify.com URL (janes-apparel.myshopify.com, https://janes-apparel.myshopify.com).", - "env": "SHOPIFY_SHOP", - "name": "shop", + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", "hasDynamicHelp": false, "multiple": false, + "name": "listing", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:login", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Logs in to the specified shop and saves the shop domain to the project.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:logout": { - "aliases": [], - "args": {}, - "description": "Logout of your local session.", - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + }, + "live-reload": { + "default": "hot-reload", + "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", + "env": "SHOPIFY_FLAG_LIVE_RELOAD", "hasDynamicHelp": false, "multiple": false, + "name": "live-reload", + "options": [ + "hot-reload", + "full-page", + "off" + ], "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:logout", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Log out from the current shop.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:preview": { - "aliases": [], - "args": {}, - "description": "Runs a Hydrogen storefront in an Oxygen worker for production.", - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "nodelete": { + "allowNo": false, + "char": "n", + "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "type": "boolean" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", "hasDynamicHelp": false, "multiple": false, + "name": "notify", "type": "option" }, - "port": { - "description": "The port to run the server on. Defaults to 3000.", - "env": "SHOPIFY_HYDROGEN_FLAG_PORT", - "name": "port", + "only": { + "char": "o", + "description": "Hot reload only files that match the specified pattern.", + "env": "SHOPIFY_FLAG_ONLY", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "only", "type": "option" }, - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", + "open": { + "allowNo": false, + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "password", "type": "option" }, - "env-branch": { - "deprecated": { - "to": "env", - "message": "--env-branch is deprecated. Use --env instead." - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", - "name": "env-branch", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "env-file": { - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", - "name": "env-file", - "required": false, - "default": ".env", + "poll": { + "allowNo": false, + "description": "Force polling to detect file changes.", + "env": "SHOPIFY_FLAG_POLL", + "hidden": true, + "name": "poll", + "type": "boolean" + }, + "port": { + "description": "Local port to serve theme preview from.", + "env": "SHOPIFY_FLAG_PORT", "hasDynamicHelp": false, "multiple": false, + "name": "port", "type": "option" }, - "inspector-port": { - "description": "The port where the inspector is available. Defaults to 9229.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSPECTOR_PORT", - "name": "inspector-port", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "debug": { - "description": "Enables inspector connections to the server with a debugger such as Visual Studio Code or Chrome DevTools.", - "env": "SHOPIFY_HYDROGEN_FLAG_DEBUG", - "name": "debug", - "allowNo": false, - "type": "boolean" - }, - "verbose": { - "description": "Outputs more information about the command's execution.", - "env": "SHOPIFY_HYDROGEN_FLAG_VERBOSE", - "name": "verbose", - "required": false, - "allowNo": false, - "type": "boolean" - }, - "build": { - "description": "Builds the app before starting the preview server.", - "name": "build", - "allowNo": false, - "type": "boolean" - }, - "watch": { - "dependsOn": [ - "build" - ], - "description": "Watches for changes and rebuilds the project.", - "name": "watch", - "allowNo": false, - "type": "boolean" + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "hasDynamicHelp": false, + "multiple": false, + "name": "store-password", + "type": "option" }, - "entry": { - "dependsOn": [ - "build" - ], - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "name": "entry", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", "hasDynamicHelp": false, "multiple": false, + "name": "theme", "type": "option" }, - "codegen": { - "dependsOn": [ - "build" - ], - "description": "Automatically generates GraphQL types for your project’s Storefront API queries.", - "name": "codegen", - "required": false, + "theme-editor-sync": { "allowNo": false, + "description": "Synchronize Theme Editor updates in the local theme files.", + "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", + "name": "theme-editor-sync", "type": "boolean" }, - "codegen-config-path": { - "dependsOn": [ - "codegen" - ], - "description": "Specifies a path to a codegen configuration file. Defaults to `/codegen.ts` if this file exists.", - "name": "codegen-config-path", - "required": false, - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:preview", + "hiddenAliases": [ + ], + "id": "theme:dev", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Runs a server in your local development environment that serves your Hydrogen app's production build. Requires running the [build](https://shopify.dev/docs/api/shopify-cli/hydrogen/hydrogen-build) command first.", - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time." }, - "hydrogen:setup": { - "aliases": [], - "args": {}, - "description": "Scaffold routes and core functionality.", + "theme:duplicate": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", + "descriptionWithMarkdown": "If you want to duplicate your local theme, you need to run `shopify theme push` first.\n\nIf no theme ID is specified, you're prompted to select the theme that you want to duplicate from the list of themes in your store. You're asked to confirm that you want to duplicate the specified theme.\n\nPrompts and confirmations are not shown when duplicate is run in a CI environment or the `--force` flag is used, therefore you must specify a theme ID using the `--theme` flag.\n\nYou can optionally name the duplicated theme using the `--name` flag.\n\nIf you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\nSample JSON output:\n\n```json\n{\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"A Duplicated Theme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\"\n }\n}\n```\n\n```json\n{\n \"message\": \"The theme 'Summer Edition' could not be duplicated due to errors\",\n \"errors\": [\"Maximum number of themes reached\"],\n \"requestId\": \"12345-abcde-67890\"\n}\n```", "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, "force": { + "allowNo": false, "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", + "description": "Force the duplicate operation to run without prompts or confirmations.", + "env": "SHOPIFY_FLAG_FORCE", "name": "force", + "type": "boolean" + }, + "json": { "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "type": "boolean" }, - "markets": { - "description": "Sets the URL structure to support multiple markets. Must be one of: `subfolders`, `domains`, `subdomains`, `none`. Example: `--markets subfolders`.", - "env": "SHOPIFY_HYDROGEN_FLAG_I18N", - "name": "markets", + "name": { + "char": "n", + "description": "Name of the newly duplicated theme.", + "env": "SHOPIFY_FLAG_NAME", "hasDynamicHelp": false, "multiple": false, + "name": "name", "type": "option" }, - "shortcut": { - "description": "Creates a global h2 shortcut for Shopify CLI using shell aliases. Deactivate with `--no-shortcut`.", - "env": "SHOPIFY_HYDROGEN_FLAG_SHORTCUT", - "name": "shortcut", - "allowNo": true, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, - "install-deps": { - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", - "allowNo": true, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:setup", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:shortcut": { - "aliases": [], - "args": {}, - "description": "Creates a global `h2` shortcut for the Hydrogen CLI", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:shortcut", + "hiddenAliases": [ + ], + "id": "theme:duplicate", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Creates a global h2 shortcut for Shopify CLI using shell aliases.\n\n The following shells are supported:\n\n - Bash (using `~/.bashrc`)\n - ZSH (using `~/.zshrc`)\n - Fish (using `~/.config/fish/functions`)\n - PowerShell (added to `$PROFILE`)\n\n After the alias is created, you can call Shopify CLI from anywhere in your project using `h2 `.", - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Duplicates a theme from your theme library.", + "usage": [ + "theme duplicate", + "theme duplicate --theme 10 --name 'New Theme'" + ] }, - "hydrogen:unlink": { - "aliases": [], - "args": {}, - "description": "Unlink a local project from a Hydrogen storefront.", + "theme:info": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Displays information about your theme environment, including your current store. Can also retrieve information about a specific theme.", "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:unlink", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Unlinks your local development environment from a remote Hydrogen storefront.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:upgrade": { - "aliases": [], - "args": {}, - "description": "Upgrade Remix and Hydrogen npm dependencies.", - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "development": { + "allowNo": false, + "char": "d", + "description": "Retrieve info from your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" }, - "version": { - "char": "v", - "description": "A target hydrogen version to update to", - "name": "version", - "required": false, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, - "force": { - "char": "f", - "description": "Ignore warnings and force the upgrade to the target version", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + "json": { "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:upgrade", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Upgrade Hydrogen project dependencies, preview features, fixes and breaking changes. The command also generates an instruction file for each upgrade.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:customer-account-push": { - "aliases": [], - "args": {}, - "description": "Push project configuration to admin", - "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" }, - "storefront-id": { - "description": "The id of the storefront the configuration should be pushed to. Must start with 'gid://shopify/HydrogenStorefront/'", - "name": "storefront-id", + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "password", "type": "option" }, - "dev-origin": { - "description": "The development domain of your application.", - "name": "dev-origin", - "required": true, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "relative-redirect-uri": { - "description": "The relative url of allowed callback url for Customer Account API OAuth flow. Default is '/account/authorize'", - "name": "relative-redirect-uri", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" }, - "relative-logout-uri": { - "description": "The relative url of allowed url that will be redirected to post-logout for Customer Account API OAuth flow. Default to nothing.", - "name": "relative-logout-uri", + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", "hasDynamicHelp": false, "multiple": false, + "name": "theme", "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:customer-account-push", + "hiddenAliases": [ + ], + "id": "theme:info", + "multiEnvironmentsFlags": [ + "store", + "password" + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:debug:cpu": { - "aliases": [], - "args": {}, - "description": "Builds and profiles the server startup time the app.", + "theme:init": { + "aliases": [ + ], + "args": { + "name": { + "description": "Name of the new theme", + "name": "name", + "required": false + } + }, + "customPluginName": "@shopify/theme", + "description": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's \"Skeleton theme\" (https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be \"substantively different from existing themes\" (https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", + "descriptionWithMarkdown": "Clones a Git repository to your local machine to use as the starting point for building a theme.\n\n If no Git repository is specified, then this command creates a copy of Shopify's [Skeleton theme](https://github.com/Shopify/skeleton-theme.git), with the specified name in the current folder. If no name is provided, then you're prompted to enter one.\n\n > Caution: If you're building a theme for the Shopify Theme Store, then you can use our example theme as a starting point. However, the theme that you submit needs to be [substantively different from existing themes](https://shopify.dev/docs/themes/store/requirements#uniqueness) so that it provides added value for users.\n ", "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "clone-url": { + "char": "u", + "default": "https://github.com/Shopify/skeleton-theme.git", + "description": "The Git URL to clone from. Defaults to Shopify's Skeleton theme.", + "env": "SHOPIFY_FLAG_CLONE_URL", "hasDynamicHelp": false, "multiple": false, + "name": "clone-url", "type": "option" }, - "entry": { - "description": "Entry file for the worker. Defaults to `./server`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ENTRY", - "name": "entry", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "latest": { + "allowNo": false, + "char": "l", + "description": "Downloads the latest release of the `clone-url`", + "env": "SHOPIFY_FLAG_LATEST", + "name": "latest", + "type": "boolean" }, - "output": { - "description": "Specify a path to generate the profile file. Defaults to \"startup.cpuprofile\".", - "name": "output", - "required": false, - "default": "startup.cpuprofile", + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:debug:cpu", + "hiddenAliases": [ + ], + "id": "theme:init", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Builds the app and runs the resulting code to profile the server startup time, watching for changes. This command can be used to [debug slow app startup times](https://shopify.dev/docs/custom-storefronts/hydrogen/debugging/cpu-startup) that cause failed deployments in Oxygen.\n\n The profiling results are written to a `.cpuprofile` file that can be viewed with certain tools such as [Flame Chart Visualizer for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-js-profile-flame).", - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Clones a Git repository to use as a starting point for building a new theme.", + "usage": "theme init [name] [flags]" }, - "hydrogen:env:list": { - "aliases": [], - "args": {}, - "description": "List the environments on your linked Hydrogen storefront.", + "theme:language-server": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Starts the \"Language Server\" (https://shopify.dev/docs/themes/tools/cli/language-server).", + "descriptionWithMarkdown": "Starts the [Language Server](https://shopify.dev/docs/themes/tools/cli/language-server).", "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:env:list", + "hiddenAliases": [ + ], + "id": "theme:language-server", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Lists all environments available on the linked Hydrogen storefront.", - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Start a Language Server Protocol server." }, - "hydrogen:env:pull": { - "aliases": [], - "args": {}, - "description": "Populate your .env with variables from your Hydrogen storefront.", + "theme:list": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Lists the themes in your store, along with their IDs and statuses.", "flags": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, - "env-branch": { - "deprecated": { - "to": "env", - "message": "--env-branch is deprecated. Use --env instead." - }, - "description": "Specifies the environment to perform the operation using its Git branch name.", - "env": "SHOPIFY_HYDROGEN_ENVIRONMENT_BRANCH", - "name": "env-branch", + "id": { + "description": "Only list theme with the given ID.", + "env": "SHOPIFY_FLAG_ID", "hasDynamicHelp": false, "multiple": false, + "name": "id", "type": "option" }, - "env-file": { - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", - "name": "env-file", - "required": false, - "default": ".env", + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "name": { + "description": "Only list themes that contain the given name.", + "env": "SHOPIFY_FLAG_NAME", "hasDynamicHelp": false, "multiple": false, + "name": "name", "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "password", "type": "option" }, - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "allowNo": false, - "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:env:pull", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Pulls environment variables from the linked Hydrogen storefront and writes them to an `.env` file.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:env:push": { - "aliases": [], - "args": {}, - "description": "Push environment variables from the local .env file to your linked Hydrogen storefront.", - "flags": { - "env": { - "description": "Specifies the environment to perform the operation using its handle. Fetch the handle using the `env list` command.", - "exclusive": [ - "env-branch" - ], - "name": "env", + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "env-file": { - "description": "Path to an environment file to override existing environment variables. Defaults to the '.env' located in your project path `--path`.", - "name": "env-file", - "required": false, - "default": ".env", + "role": { + "description": "Only list themes with the given role.", + "env": "SHOPIFY_FLAG_ROLE", "hasDynamicHelp": false, "multiple": false, + "name": "role", + "options": [ + "live", + "unpublished", + "development" + ], "type": "option" }, - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:env:push", + "hiddenAliases": [ + ], + "id": "theme:list", + "multiEnvironmentsFlags": [ + "store", + "password" + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" + "strict": true }, - "hydrogen:generate:route": { - "aliases": [], + "theme:metafields:pull": { + "aliases": [ + ], "args": { - "routeName": { - "description": "The route to generate. One of home,page,cart,products,collections,policies,blogs,account,search,robots,sitemap,tokenlessApi,all.", - "name": "routeName", - "options": [ - "home", - "page", - "cart", - "products", - "collections", - "policies", - "blogs", - "account", - "search", - "robots", - "sitemap", - "tokenlessApi", - "all" - ], - "required": true - } }, - "description": "Generates a standard Shopify route.", + "customPluginName": "@shopify/theme", + "description": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", + "descriptionWithMarkdown": "Retrieves metafields from Shopify Admin.\n\nIf the metafields file already exists, it will be overwritten.", "flags": { - "adapter": { - "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "name": "adapter", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, - "typescript": { - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", + "force": { "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", "type": "boolean" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "name": "locale-param", + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "password", "type": "option" }, - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", - "allowNo": false, - "type": "boolean" - }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", "hasDynamicHelp": false, "multiple": false, + "name": "store", "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:generate:route", + "hiddenAliases": [ + ], + "id": "theme:metafields:pull", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Generates a set of default routes from the starter template.", - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Download metafields definitions from your shop into a local file." }, - "hydrogen:generate:routes": { - "aliases": [], - "args": {}, - "description": "Generates all supported standard shopify routes.", + "theme:open": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", + "descriptionWithMarkdown": "Returns links that let you preview the specified theme. The following links are returned:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\n If you don't specify a theme, then you're prompted to select the theme to open from the list of the themes in your store.", "flags": { - "adapter": { - "description": "Remix adapter used in the route. The default is `@shopify/remix-oxygen`.", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "name": "adapter", - "hasDynamicHelp": false, - "multiple": false, - "type": "option" - }, - "typescript": { - "description": "Generate TypeScript files", - "env": "SHOPIFY_HYDROGEN_FLAG_TYPESCRIPT", - "name": "typescript", + "development": { "allowNo": false, + "char": "d", + "description": "Open your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "type": "boolean" }, - "locale-param": { - "description": "The param name in Remix routes for the i18n locale, if any. Example: `locale` becomes ($locale).", - "env": "SHOPIFY_HYDROGEN_FLAG_ADAPTER", - "name": "locale-param", + "editor": { + "allowNo": false, + "char": "E", + "description": "Open the theme editor for the specified theme in the browser.", + "env": "SHOPIFY_FLAG_EDITOR", + "name": "editor", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", "hasDynamicHelp": false, - "multiple": false, + "multiple": true, + "name": "environment", "type": "option" }, - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + "live": { + "allowNo": false, + "char": "l", + "description": "Open your live (published) theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "type": "boolean" + }, + "no-color": { "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", "type": "boolean" }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", "hasDynamicHelp": false, "multiple": false, + "name": "theme", "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:generate:routes", + "hiddenAliases": [ + ], + "id": "theme:open", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Opens the preview of your remote theme." }, - "hydrogen:setup:css": { - "aliases": [], + "theme:package": { + "aliases": [ + ], "args": { - "strategy": { - "description": "The CSS strategy to setup. One of tailwind,vanilla-extract,css-modules,postcss", - "name": "strategy", - "options": [ - "tailwind", - "vanilla-extract", - "css-modules", - "postcss" - ] - } }, - "description": "Setup CSS strategies for your project.", + "customPluginName": "@shopify/theme", + "description": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the \"default Shopify theme folder structure\" (https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per \"Theme Store requirements\" (https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your \"settings_schema.json\" (https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", + "descriptionWithMarkdown": "Packages your local theme files into a ZIP file that can be uploaded to Shopify.\n\n Only folders that match the [default Shopify theme folder structure](https://shopify.dev/docs/storefronts/themes/tools/cli#directory-structure) are included in the package.\n\n The package includes the `listings` directory if present (required for multi-preset themes per [Theme Store requirements](https://shopify.dev/docs/storefronts/themes/store/requirements#adding-presets-to-your-theme-zip-submission)).\n\n The ZIP file uses the name `theme_name-theme_version.zip`, based on parameters in your [settings_schema.json](https://shopify.dev/docs/storefronts/themes/architecture/config/settings-schema-json) file.", "flags": { + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", "hasDynamicHelp": false, "multiple": false, + "name": "path", + "noCacheDefault": true, "type": "option" }, - "force": { - "char": "f", - "description": "Overwrites the destination directory and files if they already exist.", - "env": "SHOPIFY_HYDROGEN_FLAG_FORCE", - "name": "force", + "verbose": { "allowNo": false, - "type": "boolean" - }, - "install-deps": { - "description": "Auto installs dependencies using the active package manager.", - "env": "SHOPIFY_HYDROGEN_FLAG_INSTALL_DEPS", - "name": "install-deps", - "allowNo": true, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:setup:css", + "hiddenAliases": [ + ], + "id": "theme:package", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Adds support for certain CSS strategies to your project.", - "customPluginName": "@shopify/cli-hydrogen" + "summary": "Package your theme into a .zip file, ready to upload to the Online Store." }, - "hydrogen:setup:markets": { - "aliases": [], + "theme:profile": { + "aliases": [ + ], "args": { - "strategy": { - "description": "The URL structure strategy to setup multiple markets. One of subfolders,domains,subdomains", - "name": "strategy", - "options": [ - "subfolders", - "domains", - "subdomains" - ] - } }, - "description": "Setup support for multiple markets in your project.", + "customPluginName": "@shopify/theme", + "description": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", + "descriptionWithMarkdown": "Profile the Shopify Liquid on a given page.\n\n This command will open a web page with the Speedscope profiler detailing the time spent executing Liquid on the given page.", "flags": { - "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", - "name": "path", + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", "hasDynamicHelp": false, "multiple": false, + "name": "password", "type": "option" - } - }, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:setup:markets", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false, - "descriptionWithMarkdown": "Adds support for multiple [markets](https://shopify.dev/docs/custom-storefronts/hydrogen/markets) to your project by using the URL structure.", - "customPluginName": "@shopify/cli-hydrogen" - }, - "hydrogen:setup:vite": { - "aliases": [], - "args": {}, - "description": "EXPERIMENTAL: Upgrades the project to use Vite.", - "flags": { + }, "path": { - "description": "The path to the directory of the Hydrogen storefront. Defaults to the current directory where the command is run.", - "env": "SHOPIFY_HYDROGEN_FLAG_PATH", + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "hasDynamicHelp": false, + "multiple": false, + "name": "store-password", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "url": { + "default": "/", + "description": "The url to be used as context", + "env": "SHOPIFY_FLAG_URL", "hasDynamicHelp": false, "multiple": false, + "name": "url", "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "hydrogen:setup:vite", + "hiddenAliases": [ + ], + "id": "theme:profile", + "multiEnvironmentsFlags": null, "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false, - "customPluginName": "@shopify/cli-hydrogen" - }, - "search": { - "aliases": [], + "summary": "Profile the Liquid rendering of a theme page.", + "usage": [ + "theme profile", + "theme profile --url /products/classic-leather-jacket" + ] + }, + "theme:publish": { + "aliases": [ + ], "args": { - "query": { - "name": "query" + }, + "customPluginName": "@shopify/theme", + "description": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", + "descriptionWithMarkdown": "Publishes an unpublished theme from your theme library.\n\nIf no theme ID is specified, then you're prompted to select the theme that you want to publish from the list of themes in your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\nIf you want to publish your local theme, then you need to run `shopify theme push` first. You're asked to confirm that you want to publish the specified theme. You can skip this confirmation using the `--force` flag.", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Skip confirmation.", + "env": "SHOPIFY_FLAG_FORCE", + "name": "force", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, - "description": "Starts a search on shopify.dev.", - "examples": [ - "# open the search modal on Shopify.dev\n shopify search\n\n # search for a term on Shopify.dev\n shopify search \n\n # search for a phrase on Shopify.dev\n shopify search \"\"\n " - ], - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "search", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "usage": "search [query]", - "enableJsonFlag": false - }, - "upgrade": { - "aliases": [], - "args": {}, - "description": "Shows details on how to upgrade Shopify CLI.", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "upgrade", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "summary": "Shows details on how to upgrade Shopify CLI.", - "enableJsonFlag": false, - "descriptionWithMarkdown": "Shows details on how to upgrade Shopify CLI." - }, - "version": { - "aliases": [], - "args": {}, - "description": "Shopify CLI version currently installed.", - "flags": {}, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "version", + "hiddenAliases": [ + ], + "id": "theme:publish", + "multiEnvironmentsFlags": [ + "store", + "password", + "theme" + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Set a remote theme as the live theme." }, - "help": { - "aliases": [], + "theme:pull": { + "aliases": [ + ], "args": { - "command": { - "description": "Command to show help for.", - "name": "command", - "required": false - } }, - "description": "Display help for Shopify CLI", + "customPluginName": "@shopify/theme", + "description": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", + "descriptionWithMarkdown": "Retrieves theme files from Shopify.\n\nIf no theme is specified, then you're prompted to select the theme to pull from the list of the themes in your store.", "flags": { - "nested-commands": { + "development": { + "allowNo": false, + "char": "d", + "description": "Pull theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "ignore": { + "char": "x", + "description": "Skip downloading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_IGNORE", + "hasDynamicHelp": false, + "multiple": true, + "name": "ignore", + "type": "option" + }, + "live": { + "allowNo": false, + "char": "l", + "description": "Pull theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "nodelete": { + "allowNo": false, "char": "n", - "description": "Include all nested commands in the output.", - "env": "SHOPIFY_FLAG_CLI_NESTED_COMMANDS", - "name": "nested-commands", + "description": "Prevent deleting local files that don't exist remotely.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "type": "boolean" + }, + "only": { + "char": "o", + "description": "Download only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_ONLY", + "hasDynamicHelp": false, + "multiple": true, + "name": "only", + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "help", + "hiddenAliases": [ + ], + "id": "theme:pull", + "multiEnvironmentsFlags": [ + "store", + "password", + "path", + [ + "live", + "development", + "theme" + ] + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": false, - "usage": "help [command] [flags]", - "enableJsonFlag": false + "strict": true, + "summary": "Download your remote theme files locally." }, - "auth:logout": { - "aliases": [], - "args": {}, - "description": "Logs you out of the Shopify account or Partner account and store.", - "flags": {}, - "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "auth:logout", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "auth:login": { - "aliases": [], - "args": {}, - "description": "Logs you in to your Shopify account.", + "theme:push": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", + "descriptionWithMarkdown": "Uploads your local theme files to Shopify, overwriting the remote version if specified.\n\n If no theme is specified, then you're prompted to select the theme to overwrite from the list of the themes in your store.\n\n You can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).\n\n This command returns the following information:\n\n - A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n - A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.\n\n If you use the `--json` flag, then theme information is returned in JSON format, which can be used as a machine-readable input for scripts or continuous integration.\n\n Sample output:\n\n ```json\n {\n \"theme\": {\n \"id\": 108267175958,\n \"name\": \"MyTheme\",\n \"role\": \"unpublished\",\n \"shop\": \"mystore.myshopify.com\",\n \"editor_url\": \"https://mystore.myshopify.com/admin/themes/108267175958/editor\",\n \"preview_url\": \"https://mystore.myshopify.com/?preview_theme_id=108267175958\"\n }\n }\n ```\n ", "flags": { - "alias": { - "description": "Alias of the session you want to login to.", - "env": "SHOPIFY_FLAG_AUTH_ALIAS", - "name": "alias", + "allow-live": { + "allowNo": false, + "char": "a", + "description": "Allow push to a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "type": "boolean" + }, + "development": { + "allowNo": false, + "char": "d", + "description": "Push theme files from your remote development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "ignore": { + "char": "x", + "description": "Skip uploading the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_IGNORE", + "hasDynamicHelp": false, + "multiple": true, + "name": "ignore", + "type": "option" + }, + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "hasDynamicHelp": false, + "multiple": false, + "name": "listing", + "type": "option" + }, + "live": { + "allowNo": false, + "char": "l", + "description": "Push theme files from your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "type": "boolean" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "nodelete": { + "allowNo": false, + "char": "n", + "description": "Prevent deleting remote files that don't exist locally.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "type": "boolean" + }, + "only": { + "char": "o", + "description": "Upload only the specified files (Multiple flags allowed). Wrap the value in double quotes if you're using wildcards.", + "env": "SHOPIFY_FLAG_ONLY", + "hasDynamicHelp": false, + "multiple": true, + "name": "only", + "type": "option" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "publish": { + "allowNo": false, + "char": "p", + "description": "Publish as the live theme after uploading.", + "env": "SHOPIFY_FLAG_PUBLISH", + "name": "publish", + "type": "boolean" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "strict": { + "allowNo": false, + "description": "Require theme check to pass without errors before pushing. Warnings are allowed.", + "env": "SHOPIFY_FLAG_STRICT_PUSH", + "name": "strict", + "type": "boolean" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", "hasDynamicHelp": false, "multiple": false, + "name": "theme", "type": "option" + }, + "unpublished": { + "allowNo": false, + "char": "u", + "description": "Create a new unpublished theme and push to it.", + "env": "SHOPIFY_FLAG_UNPUBLISHED", + "name": "unpublished", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" } }, "hasDynamicHelp": false, - "hiddenAliases": [], - "id": "auth:login", + "hiddenAliases": [ + ], + "id": "theme:push", + "multiEnvironmentsFlags": [ + "store", + "password", + "path", + [ + "live", + "development", + "theme" + ] + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Uploads your local theme files to the connected store, overwriting the remote version if specified.", + "usage": [ + "theme push", + "theme push --unpublished --json" + ] }, - "debug:command-flags": { - "aliases": [], - "args": {}, - "description": "View all the available command flags", + "theme:rename": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", + "descriptionWithMarkdown": "Renames a theme in your store.\n\n If no theme is specified, then you're prompted to select the theme that you want to rename from the list of themes in your store.\n ", "flags": { - "csv": { - "description": "Output as CSV", - "env": "SHOPIFY_FLAG_OUTPUT_CSV", - "name": "csv", + "development": { "allowNo": false, + "char": "d", + "description": "Rename your development theme.", + "env": "SHOPIFY_FLAG_DEVELOPMENT", + "name": "development", "type": "boolean" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "debug:command-flags", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "kitchen-sink": { - "aliases": [], - "args": {}, - "description": "View all the available UI kit components", - "flags": {}, + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "live": { + "allowNo": false, + "char": "l", + "description": "Rename your remote live theme.", + "env": "SHOPIFY_FLAG_LIVE", + "name": "live", + "type": "boolean" + }, + "name": { + "char": "n", + "description": "The new name for the theme.", + "env": "SHOPIFY_FLAG_NEW_NAME", + "hasDynamicHelp": false, + "multiple": false, + "name": "name", + "required": false, + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "theme:rename", + "multiEnvironmentsFlags": [ + "store", + "password", + "name", + [ + "live", + "development", + "theme" + ] + ], + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Renames an existing theme." + }, + "theme:serve": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "\n Uploads the current theme as the specified theme, or a \"development theme\" (https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the \"editor\" (https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should \"share\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or \"push\" (https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the \"default Shopify theme folder structure\" (https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "descriptionWithMarkdown": "\n Uploads the current theme as the specified theme, or a [development theme](https://shopify.dev/docs/themes/tools/cli#development-themes), to a store so you can preview it.\n\nThis command returns the following information:\n\n- A link to your development theme at http://127.0.0.1:9292. This URL can hot reload local changes to CSS and sections, or refresh the entire page when a file changes, enabling you to preview changes in real time using the store's data.\n\n You can specify a different network interface and port using `--host` and `--port`.\n\n- A link to the [editor](https://shopify.dev/docs/themes/tools/online-editor) for the theme in the Shopify admin.\n\n- A [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with other developers.\n\nIf you already have a development theme for your current environment, then this command replaces the development theme with your local theme. You can override this using the `--theme-editor-sync` flag.\n\n> Note: You can't preview checkout customizations using http://127.0.0.1:9292.\n\nDevelopment themes are deleted when you run `shopify auth logout`. If you need a preview link that can be used after you log out, then you should [share](https://shopify.dev/docs/api/shopify-cli/theme/theme-share) your theme or [push](https://shopify.dev/docs/api/shopify-cli/theme/theme-push) to an unpublished theme on your store.\n\nYou can run this command only in a directory that matches the [default Shopify theme folder structure](https://shopify.dev/docs/themes/tools/cli#directory-structure).", + "flags": { + "allow-live": { + "allowNo": false, + "char": "a", + "description": "Allow development on a live theme.", + "env": "SHOPIFY_FLAG_ALLOW_LIVE", + "name": "allow-live", + "type": "boolean" + }, + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "error-overlay": { + "default": "default", + "description": "Controls the visibility of the error overlay when an theme asset upload fails:\n- silent Prevents the error overlay from appearing.\n- default Displays the error overlay.\n ", + "env": "SHOPIFY_FLAG_ERROR_OVERLAY", + "hasDynamicHelp": false, + "multiple": false, + "name": "error-overlay", + "options": [ + "silent", + "default" + ], + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "host": { + "description": "Set which network interface the web server listens on. The default value is 127.0.0.1.", + "env": "SHOPIFY_FLAG_HOST", + "hasDynamicHelp": false, + "multiple": false, + "name": "host", + "type": "option" + }, + "ignore": { + "char": "x", + "description": "Skip hot reloading any files that match the specified pattern.", + "env": "SHOPIFY_FLAG_IGNORE", + "hasDynamicHelp": false, + "multiple": true, + "name": "ignore", + "type": "option" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "hasDynamicHelp": false, + "multiple": false, + "name": "listing", + "type": "option" + }, + "live-reload": { + "default": "hot-reload", + "description": "The live reload mode switches the server behavior when a file is modified:\n- hot-reload Hot reloads local changes to CSS and sections (default)\n- full-page Always refreshes the entire page\n- off Deactivate live reload", + "env": "SHOPIFY_FLAG_LIVE_RELOAD", + "hasDynamicHelp": false, + "multiple": false, + "name": "live-reload", + "options": [ + "hot-reload", + "full-page", + "off" + ], + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "nodelete": { + "allowNo": false, + "char": "n", + "description": "Prevents files from being deleted in the remote theme when a file has been deleted locally. This applies to files that are deleted while the command is running, and files that have been deleted locally before the command is run.", + "env": "SHOPIFY_FLAG_NODELETE", + "name": "nodelete", + "type": "boolean" + }, + "notify": { + "description": "The file path or URL. The file path is to a file that you want updated on idle. The URL path is where you want a webhook posted to report on file changes.", + "env": "SHOPIFY_FLAG_NOTIFY", + "hasDynamicHelp": false, + "multiple": false, + "name": "notify", + "type": "option" + }, + "only": { + "char": "o", + "description": "Hot reload only files that match the specified pattern.", + "env": "SHOPIFY_FLAG_ONLY", + "hasDynamicHelp": false, + "multiple": true, + "name": "only", + "type": "option" + }, + "open": { + "allowNo": false, + "description": "Automatically launch the theme preview in your default web browser.", + "env": "SHOPIFY_FLAG_OPEN", + "name": "open", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "poll": { + "allowNo": false, + "description": "Force polling to detect file changes.", + "env": "SHOPIFY_FLAG_POLL", + "hidden": true, + "name": "poll", + "type": "boolean" + }, + "port": { + "description": "Local port to serve theme preview from.", + "env": "SHOPIFY_FLAG_PORT", + "hasDynamicHelp": false, + "multiple": false, + "name": "port", + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "store-password": { + "description": "The password for storefronts with password protection.", + "env": "SHOPIFY_FLAG_STORE_PASSWORD", + "hasDynamicHelp": false, + "multiple": false, + "name": "store-password", + "type": "option" + }, + "theme": { + "char": "t", + "description": "Theme ID or name of the remote theme.", + "env": "SHOPIFY_FLAG_THEME_ID", + "hasDynamicHelp": false, + "multiple": false, + "name": "theme", + "type": "option" + }, + "theme-editor-sync": { + "allowNo": false, + "description": "Synchronize Theme Editor updates in the local theme files.", + "env": "SHOPIFY_FLAG_THEME_EDITOR_SYNC", + "name": "theme-editor-sync", + "type": "boolean" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hidden": true, + "hiddenAliases": [ + ], + "id": "theme:serve", + "multiEnvironmentsFlags": null, + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "summary": "Uploads the current theme as a development theme to the connected store, then prints theme editor and preview URLs to your terminal. While running, changes will push to the store in real time." + }, + "theme:share": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/theme", + "description": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a \"preview link\" (https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", + "descriptionWithMarkdown": "Uploads your theme as a new, unpublished theme in your theme library. The theme is given a randomized name.\n\n This command returns a [preview link](https://help.shopify.com/manual/online-store/themes/adding-themes#share-a-theme-preview-with-others) that you can share with others.", + "flags": { + "environment": { + "char": "e", + "description": "The environment to apply to the current command.", + "env": "SHOPIFY_FLAG_ENVIRONMENT", + "hasDynamicHelp": false, + "multiple": true, + "name": "environment", + "type": "option" + }, + "force": { + "allowNo": false, + "char": "f", + "description": "Proceed without confirmation, if current directory does not seem to be theme directory.", + "env": "SHOPIFY_FLAG_FORCE", + "hidden": true, + "name": "force", + "type": "boolean" + }, + "listing": { + "description": "The listing preset to use for multi-preset themes. Applies preset files from listings/[preset-name] directory.", + "env": "SHOPIFY_FLAG_LISTING", + "hasDynamicHelp": false, + "multiple": false, + "name": "listing", + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "password": { + "description": "Password generated from the Theme Access app or an Admin API token.", + "env": "SHOPIFY_CLI_THEME_TOKEN", + "hasDynamicHelp": false, + "multiple": false, + "name": "password", + "type": "option" + }, + "path": { + "description": "The path where you want to run the command. Defaults to the current working directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "store": { + "char": "s", + "description": "Store URL. It can be the store prefix (example) or the full myshopify.com URL (example.myshopify.com, https://example.myshopify.com).", + "env": "SHOPIFY_FLAG_STORE", + "hasDynamicHelp": false, + "multiple": false, + "name": "store", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, "hasDynamicHelp": false, - "hidden": true, "hiddenAliases": [ - "kitchen-sink all" ], - "id": "kitchen-sink", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "kitchen-sink:async": { - "aliases": [], - "args": {}, - "description": "View the UI kit components that process async tasks", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "kitchen-sink:async", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "kitchen-sink:prompts": { - "aliases": [], - "args": {}, - "description": "View the UI kit components prompts", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "kitchen-sink:prompts", + "id": "theme:share", + "multiEnvironmentsFlags": [ + "store", + "password", + "path" + ], "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Creates a shareable, unpublished, and new theme on your theme library with a randomized name." }, - "kitchen-sink:static": { - "aliases": [], - "args": {}, - "description": "View the UI kit components that display static output", - "flags": {}, + "upgrade": { + "aliases": [ + ], + "args": { + }, + "description": "Shows details on how to upgrade Shopify CLI.", + "descriptionWithMarkdown": "Shows details on how to upgrade Shopify CLI.", + "enableJsonFlag": false, + "flags": { + }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "kitchen-sink:static", + "hiddenAliases": [ + ], + "id": "upgrade", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", "strict": true, - "enableJsonFlag": false + "summary": "Shows details on how to upgrade Shopify CLI." }, - "doctor-release": { - "aliases": [], - "args": {}, - "description": "Run CLI doctor-release tests", - "flags": {}, + "version": { + "aliases": [ + ], + "args": { + }, + "description": "Shopify CLI version currently installed.", + "enableJsonFlag": false, + "flags": { + }, "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "doctor-release", + "hiddenAliases": [ + ], + "id": "version", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false + "strict": true }, - "doctor-release:theme": { - "aliases": [], - "args": {}, - "description": "Run all theme command doctor-release tests", + "webhook:trigger": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/app", + "description": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to \"Webhooks overview\" (https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the \"Partner API rate limit\" (https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", + "descriptionWithMarkdown": "\n Triggers the delivery of a sample Admin API event topic payload to a designated address.\n\n You should use this command to experiment with webhooks, to initially test your webhook configuration, or for unit testing. However, to test your webhook configuration from end to end, you should always trigger webhooks by performing the related action in Shopify.\n\n Because most webhook deliveries use remote endpoints, you can trigger the command from any directory where you can use Shopify CLI, and send the webhook to any of the supported endpoint types. For example, you can run the command from your app's local directory, but send the webhook to a staging environment endpoint.\n\n To learn more about using webhooks in a Shopify app, refer to [Webhooks overview](https://shopify.dev/docs/apps/webhooks).\n\n ### Limitations\n\n - Webhooks triggered using this method always have the same payload, so they can't be used to test scenarios that differ based on the payload contents.\n - Webhooks triggered using this method aren't retried when they fail.\n - Trigger requests are rate-limited using the [Partner API rate limit](https://shopify.dev/docs/api/partner#rate_limits).\n - You can't use this method to validate your API webhook subscriptions.\n ", "flags": { - "no-color": { - "description": "Disable color output.", - "env": "SHOPIFY_FLAG_NO_COLOR", + "address": { + "description": "The URL where the webhook payload should be sent.\n You will need a different address type for each delivery-method:\n · For remote HTTP testing, use a URL that starts with https://\n · For local HTTP testing, use http://localhost:{port}/{url-path}\n · For Google Pub/Sub, use pubsub://{project-id}:{topic-id}\n · For Amazon EventBridge, use an Amazon Resource Name (ARN) starting with arn:aws:events:", + "env": "SHOPIFY_FLAG_ADDRESS", + "hasDynamicHelp": false, "hidden": false, - "name": "no-color", - "allowNo": false, - "type": "boolean" + "multiple": false, + "name": "address", + "required": false, + "type": "option" }, - "verbose": { - "description": "Increase the verbosity of the output.", - "env": "SHOPIFY_FLAG_VERBOSE", + "api-version": { + "description": "The API Version of the webhook topic.", + "env": "SHOPIFY_FLAG_API_VERSION", + "hasDynamicHelp": false, "hidden": false, - "name": "verbose", - "allowNo": false, - "type": "boolean" + "multiple": false, + "name": "api-version", + "required": false, + "type": "option" }, - "path": { - "char": "p", - "description": "The path to run tests in. Defaults to current directory.", - "env": "SHOPIFY_FLAG_PATH", - "name": "path", - "default": "/Users/ryan/src/github.com/Shopify/cli/packages/cli", + "client-id": { + "description": "The Client ID of your app.", + "env": "SHOPIFY_FLAG_CLIENT_ID", + "exclusive": [ + "config" + ], "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-id", "type": "option" }, - "environment": { - "char": "e", - "description": "The environment to use from shopify.theme.toml (required for store-connected tests).", - "env": "SHOPIFY_FLAG_ENVIRONMENT", - "name": "environment", - "required": true, + "client-secret": { + "description": "Your app's client secret. This secret allows us to return the X-Shopify-Hmac-SHA256 header that lets you validate the origin of the response that you receive.", + "env": "SHOPIFY_FLAG_CLIENT_SECRET", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "client-secret", + "required": false, "type": "option" }, - "store": { - "char": "s", - "description": "Store URL (overrides environment).", - "env": "SHOPIFY_FLAG_STORE", - "name": "store", + "config": { + "char": "c", + "description": "The name of the app configuration.", + "env": "SHOPIFY_FLAG_APP_CONFIG", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "config", "type": "option" }, - "password": { - "description": "Password from Theme Access app (overrides environment).", - "env": "SHOPIFY_FLAG_PASSWORD", - "name": "password", + "delivery-method": { + "description": "Method chosen to deliver the topic payload. If not passed, it's inferred from the address.", + "env": "SHOPIFY_FLAG_DELIVERY_METHOD", "hasDynamicHelp": false, + "hidden": false, "multiple": false, + "name": "delivery-method", + "options": [ + "http", + "google-pub-sub", + "event-bridge" + ], + "required": false, "type": "option" - } - }, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "doctor-release:theme", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "docs:generate": { - "aliases": [], - "args": {}, - "description": "Generate CLI commands documentation", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "docs:generate", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "notifications:list": { - "aliases": [], - "args": {}, - "description": "List current notifications configured for the CLI.", - "flags": { - "ignore-errors": { - "description": "Don't fail if an error occurs.", - "env": "SHOPIFY_FLAG_IGNORE_ERRORS", + }, + "help": { + "allowNo": false, + "description": "This help. When you run the trigger command the CLI will prompt you for any information that isn't passed using flags.", + "env": "SHOPIFY_FLAG_HELP", "hidden": false, - "name": "ignore-errors", + "name": "help", + "required": false, + "type": "boolean" + }, + "path": { + "description": "The path to your app directory.", + "env": "SHOPIFY_FLAG_PATH", + "hasDynamicHelp": false, + "multiple": false, + "name": "path", + "noCacheDefault": true, + "type": "option" + }, + "reset": { "allowNo": false, + "description": "Reset all your settings.", + "env": "SHOPIFY_FLAG_RESET", + "exclusive": [ + "config" + ], + "hidden": false, + "name": "reset", "type": "boolean" + }, + "shared-secret": { + "description": "Deprecated. Please use client-secret.", + "env": "SHOPIFY_FLAG_SHARED_SECRET", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "shared-secret", + "required": false, + "type": "option" + }, + "topic": { + "description": "The requested webhook topic.", + "env": "SHOPIFY_FLAG_TOPIC", + "hasDynamicHelp": false, + "hidden": false, + "multiple": false, + "name": "topic", + "required": false, + "type": "option" } }, "hasDynamicHelp": false, "hidden": true, - "hiddenAliases": [], - "id": "notifications:list", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "notifications:generate": { - "aliases": [], - "args": {}, - "description": "Generate a notifications.json file for the the CLI, appending a new notification to the current file.", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "notifications:generate", - "pluginAlias": "@shopify/cli", - "pluginName": "@shopify/cli", - "pluginType": "core", - "strict": true, - "enableJsonFlag": false - }, - "cache:clear": { - "aliases": [], - "args": {}, - "description": "Clear the CLI cache, used to store some API responses and handle notifications status", - "flags": {}, - "hasDynamicHelp": false, - "hidden": true, - "hiddenAliases": [], - "id": "cache:clear", + "hiddenAliases": [ + ], + "id": "webhook:trigger", "pluginAlias": "@shopify/cli", "pluginName": "@shopify/cli", "pluginType": "core", - "strict": true, - "enableJsonFlag": false + "summary": "Trigger delivery of a sample webhook topic payload to a designated address." } }, "version": "3.90.0" diff --git a/packages/cli/src/cli/services/commands/notifications.ts b/packages/cli/src/cli/services/commands/notifications.ts index fdd503e1a93..4686efed260 100644 --- a/packages/cli/src/cli/services/commands/notifications.ts +++ b/packages/cli/src/cli/services/commands/notifications.ts @@ -9,7 +9,13 @@ import { fetchNotifications, } from '@shopify/cli-kit/shared/node/notifications-system' import {outputInfo} from '@shopify/cli-kit/shared/node/output' -import {renderSelectPrompt, renderTextPrompt, renderSuccess, renderTable, TableColumn} from '@shopify/cli-kit/shared/node/ui' +import { + renderSelectPrompt, + renderTextPrompt, + renderSuccess, + renderTable, + TableColumn, +} from '@shopify/cli-kit/shared/node/ui' export async function generate() { const today = new Date() diff --git a/packages/cli/tsconfig.build.json b/packages/cli/tsconfig.build.json index e4ba62bb218..3e38b2e7f7c 100644 --- a/packages/cli/tsconfig.build.json +++ b/packages/cli/tsconfig.build.json @@ -1,8 +1,5 @@ { "extends": "./tsconfig.json", "exclude": ["**/*.test.ts"], - "references": [ - {"path": "../cli-kit"}, - {"path": "../plugin-did-you-mean"} - ] + "references": [{"path": "../cli-kit"}, {"path": "../plugin-did-you-mean"}] } diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index bf1343e50c8..4b3530516e6 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -7,8 +7,5 @@ "rootDir": "src", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" }, - "references": [ - {"path": "../cli-kit"}, - {"path": "../plugin-did-you-mean"} - ] + "references": [{"path": "../cli-kit"}, {"path": "../plugin-did-you-mean"}] } diff --git a/packages/create-app/tsconfig.build.json b/packages/create-app/tsconfig.build.json index 16506ad61a2..9b6783c3430 100644 --- a/packages/create-app/tsconfig.build.json +++ b/packages/create-app/tsconfig.build.json @@ -1,7 +1,5 @@ { "extends": "./tsconfig.json", "exclude": ["**/*.test.ts"], - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/create-app/tsconfig.json b/packages/create-app/tsconfig.json index ea7490fa22f..049b388e278 100644 --- a/packages/create-app/tsconfig.json +++ b/packages/create-app/tsconfig.json @@ -7,7 +7,5 @@ "rootDir": "src", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" }, - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/features/tsconfig.json b/packages/features/tsconfig.json index 524e8f51583..2e8369bd2f0 100644 --- a/packages/features/tsconfig.json +++ b/packages/features/tsconfig.json @@ -6,7 +6,5 @@ "outDir": "dist", "types": ["node", "vitest/importMeta"] }, - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/plugin-cloudflare/tsconfig.build.json b/packages/plugin-cloudflare/tsconfig.build.json index 16506ad61a2..9b6783c3430 100644 --- a/packages/plugin-cloudflare/tsconfig.build.json +++ b/packages/plugin-cloudflare/tsconfig.build.json @@ -1,7 +1,5 @@ { "extends": "./tsconfig.json", "exclude": ["**/*.test.ts"], - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/plugin-cloudflare/tsconfig.json b/packages/plugin-cloudflare/tsconfig.json index 752cbc820ff..3dbb69f3b62 100644 --- a/packages/plugin-cloudflare/tsconfig.json +++ b/packages/plugin-cloudflare/tsconfig.json @@ -8,7 +8,5 @@ "rootDir": "src", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" }, - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/plugin-did-you-mean/tsconfig.build.json b/packages/plugin-did-you-mean/tsconfig.build.json index 16506ad61a2..9b6783c3430 100644 --- a/packages/plugin-did-you-mean/tsconfig.build.json +++ b/packages/plugin-did-you-mean/tsconfig.build.json @@ -1,7 +1,5 @@ { "extends": "./tsconfig.json", "exclude": ["**/*.test.ts"], - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/plugin-did-you-mean/tsconfig.json b/packages/plugin-did-you-mean/tsconfig.json index ea7490fa22f..049b388e278 100644 --- a/packages/plugin-did-you-mean/tsconfig.json +++ b/packages/plugin-did-you-mean/tsconfig.json @@ -7,7 +7,5 @@ "rootDir": "src", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" }, - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/theme/assets/speedscope/demangle-cpp.1768f4cc.js b/packages/theme/assets/speedscope/demangle-cpp.1768f4cc.js index 282dbd04139..21c24449320 100644 --- a/packages/theme/assets/speedscope/demangle-cpp.1768f4cc.js +++ b/packages/theme/assets/speedscope/demangle-cpp.1768f4cc.js @@ -1,4 +1,90 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c0&&$e.streams[2].object.output("\\n".charCodeAt(0)),$e.streams[3]&&$e.streams[3].object.output.buffer.length>0&&$e.streams[3].object.output("\\n".charCodeAt(0)))}},Je=Ja;Ve.unshift({func:function(){$e.ignorePermissions=!1,$e.init.initialized||$e.init()}}),Be.push({func:function(){$e.quit()}}),Ya(0),ae.buf=_(12,"void*",we),Module.callMain=function(r){function a(){for(var r=0;r<3;r++)i.push(0)}var e=r.length+1,i=[_(p("/bin/this.program"),"i8",we)];a();for(var v=0;v>2]=0|He.__str,Se[ri+4>>2]=0|He.__str1,Se[ri+16>>2]=0|He.__str2,Se[ri+20>>2]=0|He.__str3,Se[ri+32>>2]=0|He.__str4,Se[ri+36>>2]=0|He.__str5,Se[ri+48>>2]=0|He.__str6,Se[ri+52>>2]=0|He.__str7,Se[ri+64>>2]=0|He.__str8,Se[ri+68>>2]=0|He.__str7,Se[ri+80>>2]=0|He.__str9,Se[ri+84>>2]=0|He.__str10,Se[ri+96>>2]=0|He.__str11,Se[ri+100>>2]=0|He.__str12,Se[ri+112>>2]=0|He.__str13,Se[ri+116>>2]=0|He.__str14,Se[ri+128>>2]=0|He.__str15,Se[ri+132>>2]=0|He.__str16,Se[ri+144>>2]=0|He.__str17,Se[ri+148>>2]=0|He.__str18,Se[ri+160>>2]=0|He.__str19,Se[ri+164>>2]=0|He.__str20,Se[ri+176>>2]=0|He.__str21,Se[ri+180>>2]=0|He.__str22,Se[ri+192>>2]=0|He.__str23,Se[ri+196>>2]=0|He.__str24,Se[ri+208>>2]=0|He.__str25,Se[ri+212>>2]=0|He.__str26,Se[ri+224>>2]=0|He.__str27,Se[ri+228>>2]=0|He.__str28,Se[ri+240>>2]=0|He.__str29,Se[ri+244>>2]=0|He.__str30,Se[ri+256>>2]=0|He.__str31,Se[ri+260>>2]=0|He.__str32,Se[ri+272>>2]=0|He.__str33,Se[ri+276>>2]=0|He.__str34,Se[ri+288>>2]=0|He.__str35,Se[ri+292>>2]=0|He.__str36,Se[ri+304>>2]=0|He.__str37,Se[ri+308>>2]=0|He.__str38,Se[ri+320>>2]=0|He.__str39,Se[ri+324>>2]=0|He.__str40,Se[ri+336>>2]=0|He.__str41,Se[ri+340>>2]=0|He.__str42,Se[ri+352>>2]=0|He.__str43,Se[ri+356>>2]=0|He.__str44,Se[ri+368>>2]=0|He.__str45,Se[ri+372>>2]=0|He.__str46,Se[ri+384>>2]=0|He.__str47,Se[ri+388>>2]=0|He.__str48,Se[ri+400>>2]=0|He.__str49,Se[ri+404>>2]=0|He.__str119289,Se[ri+416>>2]=0|He.__str51,Se[ri+420>>2]=0|He.__str20,Se[ri+432>>2]=0|He.__str52,Se[ri+436>>2]=0|He.__str53,Se[ri+448>>2]=0|He.__str54,Se[ri+452>>2]=0|He.__str55,Se[ri+464>>2]=0|He.__str56,Se[ri+468>>2]=0|He.__str57,Se[ri+480>>2]=0|He.__str58,Se[ri+484>>2]=0|He.__str119289,Se[ri+496>>2]=0|He.__str59,Se[ri+500>>2]=0|He.__str60,Se[ri+512>>2]=0|He.__str61,Se[ri+516>>2]=0|He.__str62,Se[ri+528>>2]=0|He.__str63,Se[ri+532>>2]=0|He.__str64,Se[ri+544>>2]=0|He.__str65,Se[ri+548>>2]=0|He.__str66,Se[ri+560>>2]=0|He.__str67,Se[ri+564>>2]=0|He.__str68,Se[ri+576>>2]=0|He.__str69,Se[ri+580>>2]=0|He.__str70,Se[ri+592>>2]=0|He.__str71,Se[ri+596>>2]=0|He.__str72,Se[ri+608>>2]=0|He.__str73,Se[ri+612>>2]=0|He.__str74,Se[ri+624>>2]=0|He.__str75,Se[ri+628>>2]=0|He.__str76,Se[ri+640>>2]=0|He.__str77,Se[ri+644>>2]=0|He.__str72,Se[ri+656>>2]=0|He.__str78,Se[ri+660>>2]=0|He.__str79,Se[ri+672>>2]=0|He.__str80,Se[ri+676>>2]=0|He.__str81,Se[ri+688>>2]=0|He.__str82,Se[ri+692>>2]=0|He.__str83,Se[ri+704>>2]=0|He.__str84,Se[ri+708>>2]=0|He.__str85,Se[ri+720>>2]=0|He.__str86,Se[ri+724>>2]=0|He.__str87,Se[ri+736>>2]=0|He.__str88,Se[ri+740>>2]=0|He.__str89,Se[ri+752>>2]=0|He.__str90,Se[ri+756>>2]=0|He.__str91,Se[ri+768>>2]=0|He.__str92,Se[ri+772>>2]=0|He.__str91,Se[ai>>2]=0|He.__str145315,Se[ai+8>>2]=0|He.__str145315,Se[ai+20>>2]=0|He.__str167337,Se[ai+28>>2]=0|He.__str95,Se[ai+40>>2]=0|He.__str146316,Se[ai+48>>2]=0|He.__str97,Se[ai+60>>2]=0|He.__str155325,Se[ai+68>>2]=0|He.__str155325,Se[ai+80>>2]=0|He.__str156326,Se[ai+88>>2]=0|He.__str156326,Se[ai+100>>2]=0|He.__str154324,Se[ai+108>>2]=0|He.__str154324,Se[ai+120>>2]=0|He.__str101,Se[ai+128>>2]=0|He.__str101,Se[ai+140>>2]=0|He.__str147317,Se[ai+148>>2]=0|He.__str147317,Se[ai+160>>2]=0|He.__str150320,Se[ai+168>>2]=0|He.__str150320,Se[ai+180>>2]=0|He.__str151321,Se[ai+188>>2]=0|He.__str105,Se[ai+220>>2]=0|He.__str152322,Se[ai+228>>2]=0|He.__str152322,Se[ai+240>>2]=0|He.__str153323,Se[ai+248>>2]=0|He.__str153323,Se[ai+260>>2]=0|He.__str165335,Se[ai+268>>2]=0|He.__str165335,Se[ai+280>>2]=0|He.__str166336,Se[ai+288>>2]=0|He.__str166336,Se[ai+360>>2]=0|He.__str148318,Se[ai+368>>2]=0|He.__str148318,Se[ai+380>>2]=0|He.__str149319,Se[ai+388>>2]=0|He.__str149319,Se[ai+420>>2]=0|He.__str84254,Se[ai+428>>2]=0|He.__str84254,Se[ai+440>>2]=0|He.__str168338,Se[ai+448>>2]=0|He.__str146316,Se[ai+460>>2]=0|He.__str114,Se[ai+468>>2]=0|He.__str152322,Se[ai+480>>2]=0|He.__str115,Se[ai+488>>2]=0|He.__str115,Se[ai+500>>2]=0|He.__str110280,Se[ai+508>>2]=0|He.__str110280,Se[ei+4>>2]=0|He.__str152,Se[ei+12>>2]=0|He.__str152,Se[ei+32>>2]=0|He.__str153,Se[ei+40>>2]=0|He.__str153,Se[ei+48>>2]=0|He.__str154,Se[ei+60>>2]=0|He.__str155,Se[ei+68>>2]=0|He.__str155,Se[ei+76>>2]=0|He.__str156,Se[ei+88>>2]=0|He.__str157,Se[ei+96>>2]=0|He.__str158,Se[ei+104>>2]=0|He.__str156,Se[ei+116>>2]=0|He.__str159,Se[ei+124>>2]=0|He.__str160,Se[ei+132>>2]=0|He.__str161,Se[ei+144>>2]=0|He.__str162,Se[ei+152>>2]=0|He.__str163,Se[ei+160>>2]=0|He.__str164,Se[ei+172>>2]=0|He.__str165,Se[ei+180>>2]=0|He.__str166,Se[ei+188>>2]=0|He.__str167,Se[si+4>>2]=bi,Se[ni+4>>2]=ki,oi=_([2,0,0,0,0],["i8*",0,0,0,0],we),Se[bi>>2]=oi+8|0,Se[bi+4>>2]=0|He.__ZTSSt9bad_alloc,Se[bi+8>>2]=li,Se[ki>>2]=oi+8|0,Se[ki+4>>2]=0|He.__ZTSSt20bad_array_new_length,Se[ki+8>>2]=bi,ui=16,ci=6,hi=18,di=6,wi=6,pe=[0,0,Jr,0,va,0,ya,0,ga,0,wa,0,Sa,0,pa,0,Ea,0,ma,0],Module.FUNCTION_TABLE=pe,Module.run=ee,Module.preRun&&Module.preRun(),0==Ke){ee()}Module.postRun&&Module.postRun(),Module.___cxa_demangle=G;var pi=v("__cxa_demangle","string",["string","string","number","number"]);return function(r){return pi(r,"",1,0)}}();\n'; -},{}]},{},["bS28"], null) -//# sourceMappingURL=demangle-cpp.1768f4cc.js.map \ No newline at end of file +parcelRequire = (function (e, r, t, n) { + var i, + o = 'function' == typeof parcelRequire && parcelRequire, + u = 'function' == typeof require && require + function f(t, n) { + if (!r[t]) { + if (!e[t]) { + var i = 'function' == typeof parcelRequire && parcelRequire + if (!n && i) return i(t, !0) + if (o) return o(t, !0) + if (u && 'string' == typeof t) return u(t) + var c = new Error("Cannot find module '" + t + "'") + throw ((c.code = 'MODULE_NOT_FOUND'), c) + } + ;(p.resolve = function (r) { + return e[t][1][r] || r + }), + (p.cache = {}) + var l = (r[t] = new f.Module(t)) + e[t][0].call(l.exports, p, l, l.exports, this) + } + return r[t].exports + function p(e) { + return f(p.resolve(e)) + } + } + ;(f.isParcelRequire = !0), + (f.Module = function (e) { + ;(this.id = e), (this.bundle = f), (this.exports = {}) + }), + (f.modules = e), + (f.cache = r), + (f.parent = o), + (f.register = function (r, t) { + e[r] = [ + function (e, r) { + r.exports = t + }, + {}, + ] + }) + for (var c = 0; c < t.length; c++) + try { + f(t[c]) + } catch (e) { + i || (i = e) + } + if (t.length) { + var l = f(t[t.length - 1]) + 'object' == typeof exports && 'undefined' != typeof module + ? (module.exports = l) + : 'function' == typeof define && define.amd + ? define(function () { + return l + }) + : n && (this[n] = l) + } + if (((parcelRequire = f), i)) throw i + return f +})( + { + bS28: [ + function (require, module, exports) { + 'use strict' + let e + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.demangleCpp = a) + const r = new Map() + function a(a) { + if (a.startsWith('__Z')) { + let v = r.get(a) + void 0 !== v + ? (a = v) + : (e || (e = new Function('exports', i)()), + (v = '(null)' === (v = e(a.slice(1))) ? a : v), + r.set(a, v), + (a = v)) + } + return a + } + const i = + '\nreturn function(){function r(r){eval.call(null,r)}function a(r){throw print(r+":\\n"+(new Error).stack),ke=!0,"Assertion: "+r}function e(r,e){r||a("Assertion failed: "+e)}function i(r,a,i,v){function t(r,a){if("string"==a){var e=Oe;return le.stackAlloc(r.length+1),A(r,e),e}return r}function f(r,a){return"string"==a?s(r):r}try{func=ce.Module["_"+r]}catch(r){}e(func,"Cannot call unknown function "+r+" (perhaps LLVM optimizations or closure removed it?)");var _=0,n=v?v.map(function(r){return t(r,i[_++])}):[];return f(func.apply(null,n),a)}function v(r,a,e){return function(){return i(r,a,e,Array.prototype.slice.call(arguments))}}function t(r,e,i,v){switch(i=i||"i8","*"===i[i.length-1]&&(i="i32"),i){case"i1":Ae[r]=e;break;case"i8":Ae[r]=e;break;case"i16":ye[r>>1]=e;break;case"i32":Se[r>>2]=e;break;case"i64":Se[r>>2]=e;break;case"float":Ce[r>>2]=e;break;case"double":ze[0]=e,Se[r>>2]=xe[0],Se[r+4>>2]=xe[1];break;default:a("invalid type for setValue: "+i)}}function f(r,e,i){switch(e=e||"i8","*"===e[e.length-1]&&(e="i32"),e){case"i1":return Ae[r];case"i8":return Ae[r];case"i16":return ye[r>>1];case"i32":return Se[r>>2];case"i64":return Se[r>>2];case"float":return Ce[r>>2];case"double":return xe[0]=Se[r>>2],xe[1]=Se[r+4>>2],ze[0];default:a("invalid type for setValue: "+e)}return null}function _(r,a,e){var i,v;"number"==typeof r?(i=!0,v=r):(i=!1,v=r.length);var f="string"==typeof a?a:null,_=[Jr,le.stackAlloc,le.staticAlloc][void 0===e?we:e](Math.max(v,f?1:a.length));if(i)return Fa(_,0,v),_;for(var s,n=0;n>12<<12}function l(){for(;Le<=Ie;)Le=o(2*Le);var r=Ae,a=new ArrayBuffer(Le);Ae=new Int8Array(a),ye=new Int16Array(a),Se=new Int32Array(a),ge=new Uint8Array(a),me=new Uint16Array(a),Me=new Uint32Array(a),Ce=new Float32Array(a),Re=new Float64Array(a),Ae.set(r)}function b(r){for(;r.length>0;){var a=r.shift(),e=a.func;"number"==typeof e&&(e=pe[e]),e(void 0===a.arg?null:a.arg)}}function k(){b(Ve)}function u(){b(Be),be.print()}function c(r,a){return Array.prototype.slice.call(Ae.subarray(r,r+a))}function h(r,a){for(var e=new Uint8Array(a),i=0;i255&&(v&=255),e.push(v),i+=1}return a||e.push(0),e}function E(r){for(var a=[],e=0;e255&&(i&=255),a.push(String.fromCharCode(i))}return a.join("")}function A(r,a,e){for(var i=0;i255&&(v&=255),Ae[a+i]=v,i+=1}e||(Ae[a+i]=0)}function g(r,a,e,i){return r>=0?r:a<=32?2*Math.abs(1<=v&&(a<=32||r>v)&&(r=-2*v+r),r}function m(r,a,e){if(0==(0|r)|0==(0|a)|0==(0|e))var i=0;else{Se[r>>2]=0,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function S(r,a,e){if(0==(0|r)|(0|a)<0|0==(0|e))var i=0;else{Se[r>>2]=41,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function M(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=6,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function C(r,a,e){if(0==(0|r)|0==(0|e))var i=0;else{Se[r>>2]=7,Se[r+4>>2]=a,Se[r+8>>2]=e;var i=1}var i;return i}function R(r,a){var e,i=0==(0|a);do if(i)var v=0;else{var e=(r+32|0)>>2,t=Se[e];if((0|t)>=(0|Se[r+36>>2])){var v=0;break}var f=(t<<2)+Se[r+28>>2]|0;Se[f>>2]=a;var _=Se[e]+1|0;Se[e]=_;var v=1}while(0);var v;return v}function T(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==95;do if(t){var f=i+2|0;if(Se[e]=f,Ae[v]<<24>>24!=90){var _=0;break}var s=O(r,a),_=s}else var _=0;while(0);var _;return _}function O(r,a){var e=r+12|0,i=Ae[Se[e>>2]];r:do if(i<<24>>24==71||i<<24>>24==84)var v=Tr(r),t=v;else{var f=Ar(r),_=0==(0|f)|0==(0|a);do if(!_){if(0!=(1&Se[r+8>>2]|0))break;var s=Me[f>>2],n=(s-25|0)>>>0<3;a:do if(n)for(var o=f;;){var o,l=Me[o+4>>2],b=Me[l>>2];if((b-25|0)>>>0>=3){var k=l,u=b;break a}var o=l}else var k=f,u=s;while(0);var u,k;if(2!=(0|u)){var t=k;break r}var c=k+8|0,h=Me[c>>2],d=(Se[h>>2]-25|0)>>>0<3;a:do if(d)for(var w=h;;){var w,p=Me[w+4>>2];if((Se[p>>2]-25|0)>>>0>=3){var E=p;break a}var w=p}else var E=h;while(0);var E;Se[c>>2]=E;var t=k;break r}while(0);var A=Ae[Se[e>>2]];if(A<<24>>24==0||A<<24>>24==69){var t=f;break}var g=Or(f),y=Sr(r,g),m=D(r,3,f,y),t=m}while(0);var t;return t}function N(r){var a,e,i=Oe;Oe+=4;var v=i,e=v>>2,a=(r+12|0)>>2,t=Me[a],f=Ae[t],_=f<<24>>24;r:do if(f<<24>>24==114||f<<24>>24==86||f<<24>>24==75){var s=I(r,v,0);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=Se[e],b=R(r,l);if(0==(0|b)){var n=0;break}var n=Se[e]}else{do{if(97==(0|_)||98==(0|_)||99==(0|_)||100==(0|_)||101==(0|_)||102==(0|_)||103==(0|_)||104==(0|_)||105==(0|_)||106==(0|_)||108==(0|_)||109==(0|_)||110==(0|_)||111==(0|_)||115==(0|_)||116==(0|_)||118==(0|_)||119==(0|_)||120==(0|_)||121==(0|_)||122==(0|_)){var k=ai+20*(_-97)|0,u=P(r,k);Se[e]=u;var c=r+48|0,h=Se[c>>2]+Se[Se[u+4>>2]+4>>2]|0;Se[c>>2]=h;var d=Se[a]+1|0;Se[a]=d;var n=u;break r}if(117==(0|_)){Se[a]=t+1|0;var w=L(r),p=D(r,34,w,0);Se[e]=p;var E=p}else if(70==(0|_)){var A=F(r);Se[e]=A;var E=A}else if(48==(0|_)||49==(0|_)||50==(0|_)||51==(0|_)||52==(0|_)||53==(0|_)||54==(0|_)||55==(0|_)||56==(0|_)||57==(0|_)||78==(0|_)||90==(0|_)){var g=X(r);Se[e]=g;var E=g}else if(65==(0|_)){var y=j(r);Se[e]=y;var E=y}else if(77==(0|_)){var m=U(r);Se[e]=m;var E=m}else if(84==(0|_)){var S=x(r);if(Se[e]=S,Ae[Se[a]]<<24>>24!=73){var E=S;break}var M=R(r,S);if(0==(0|M)){var n=0;break r}var C=Se[e],T=z(r),O=D(r,4,C,T);Se[e]=O;var E=O}else if(83==(0|_)){var B=ge[t+1|0];if((B-48&255&255)<10|B<<24>>24==95|(B-65&255&255)<26){var H=V(r,0);if(Se[e]=H,Ae[Se[a]]<<24>>24!=73){var n=H;break r}var K=z(r),Y=D(r,4,H,K);Se[e]=Y;var E=Y}else{var G=X(r);if(Se[e]=G,0==(0|G)){var E=0;break}if(21==(0|Se[G>>2])){var n=G;break r}var E=G}}else if(80==(0|_)){Se[a]=t+1|0;var W=N(r),Z=D(r,29,W,0);Se[e]=Z;var E=Z}else if(82==(0|_)){Se[a]=t+1|0;var Q=N(r),q=D(r,30,Q,0);Se[e]=q;var E=q}else if(67==(0|_)){Se[a]=t+1|0;var $=N(r),J=D(r,31,$,0);Se[e]=J;var E=J}else if(71==(0|_)){Se[a]=t+1|0;var rr=N(r),ar=D(r,32,rr,0);Se[e]=ar;var E=ar}else{if(85!=(0|_)){var n=0;break r}Se[a]=t+1|0;var er=L(r);Se[e]=er;var ir=N(r),vr=Se[e],tr=D(r,28,ir,vr);Se[e]=tr;var E=tr}}while(0);var E,fr=R(r,E);if(0==(0|fr)){var n=0;break}var n=Se[e]}while(0);var n;return Oe=i,n}function I(r,a,e){for(var i,v=r+12|0,t=0!=(0|e),f=t?25:22,i=(r+48|0)>>2,_=t?26:23,s=t?27:24,n=a;;){var n,o=Se[v>>2],l=Ae[o];if(l<<24>>24!=114&&l<<24>>24!=86&&l<<24>>24!=75){var b=n;break}var k=o+1|0;if(Se[v>>2]=k,l<<24>>24==114){var u=Se[i]+9|0;Se[i]=u;var c=f}else if(l<<24>>24==86){var h=Se[i]+9|0;Se[i]=h;var c=_}else{var d=Se[i]+6|0;Se[i]=d;var c=s}var c,w=D(r,c,0,0);if(Se[n>>2]=w,0==(0|w)){var b=0;break}var n=w+4|0}var b;return b}function P(r,a){var e=0==(0|a);do if(e)var i=0;else{var v=J(r);if(0==(0|v)){var i=0;break}Se[v>>2]=33,Se[v+4>>2]=a;var i=v}while(0);var i;return i}function D(r,a,e,i){var v,t;do{if(1==(0|a)||2==(0|a)||3==(0|a)||4==(0|a)||10==(0|a)||28==(0|a)||37==(0|a)||43==(0|a)||44==(0|a)||45==(0|a)||46==(0|a)||47==(0|a)||48==(0|a)||49==(0|a)||50==(0|a)){if(0==(0|e)|0==(0|i)){var f=0;t=7;break}t=5;break}if(8==(0|a)||9==(0|a)||11==(0|a)||12==(0|a)||13==(0|a)||14==(0|a)||15==(0|a)||16==(0|a)||17==(0|a)||18==(0|a)||19==(0|a)||20==(0|a)||29==(0|a)||30==(0|a)||31==(0|a)||32==(0|a)||34==(0|a)||38==(0|a)||39==(0|a)||42==(0|a)){if(0==(0|e)){var f=0;t=7;break}t=5;break}if(36==(0|a)){if(0==(0|i)){var f=0;t=7;break}t=5;break}if(35==(0|a)||22==(0|a)||23==(0|a)||24==(0|a)||25==(0|a)||26==(0|a)||27==(0|a))t=5;else{var f=0;t=7}}while(0);do if(5==t){var _=J(r),v=_>>2;if(0==(0|_)){var f=0;break}Se[v]=a,Se[v+1]=e,Se[v+2]=i;var f=_}while(0);var f;return f}function L(r){var a=sr(r);if((0|a)<1)var e=0;else{var i=Rr(r,a);Se[r+44>>2]=i;var e=i}var e;return e}function F(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;if(Se[a]=i,Ae[e]<<24>>24==70){if(Ae[i]<<24>>24==89){var v=e+2|0;Se[a]=v}var t=Sr(r,1),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else var n=0;var n;return n}function X(r){var a=Ar(r);return a}function j(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==65;do if(v){var t=Ae[i];if(t<<24>>24==95)var f=0;else if((t-48&255&255)<10){for(var _=i;;){var _,s=_+1|0;if(Se[a]=s,(Ae[s]-48&255&255)>=10)break;var _=s}var n=s-i|0,o=lr(r,i,n);if(0==(0|o)){var l=0;break}var f=o}else{var b=nr(r);if(0==(0|b)){var l=0;break}var f=b}var f,k=Se[a],u=k+1|0;if(Se[a]=u,Ae[k]<<24>>24!=95){var l=0;break}var c=N(r),h=D(r,36,f,c),l=h}else var l=0;while(0);var l;return l}function U(r){var a=Oe;Oe+=4;var e=a,i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24==77;r:do if(f){var _=N(r),s=I(r,e,1);if(0==(0|s)){var n=0;break}var o=N(r);Se[s>>2]=o;var l=(0|s)==(0|e);do if(!l){if(35==(0|Se[o>>2]))break;var b=Se[e>>2],k=R(r,b);if(0==(0|k)){var n=0;break r}}while(0);var u=Se[e>>2],c=D(r,37,_,u),n=c}else var n=0;while(0);var n;return Oe=a,n}function x(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==84;do if(v){if(Ae[i]<<24>>24==95)var t=0,f=i;else{var _=sr(r);if((0|_)<0){var s=0;break}var t=_+1|0,f=Se[a]}var f,t;if(Se[a]=f+1|0,Ae[f]<<24>>24!=95){var s=0;break}var n=r+40|0,o=Se[n>>2]+1|0;Se[n>>2]=o;var l=Er(r,t),s=l}else var s=0;while(0);var s;return s}function z(r){var a,e=Oe;Oe+=4;var i=e,v=r+44|0,t=Se[v>>2],a=(r+12|0)>>2,f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==73;r:do if(s){Se[i>>2]=0;for(var n=i;;){var n,o=_r(r);if(0==(0|o)){var l=0;break r}var b=D(r,39,o,0);if(Se[n>>2]=b,0==(0|b)){var l=0;break r}var k=Se[a];if(Ae[k]<<24>>24==69)break;var n=b+8|0}var u=k+1|0;Se[a]=u,Se[v>>2]=t;var l=Se[i>>2]}else var l=0;while(0);var l;return Oe=e,l}function V(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=i+1|0;Se[e]=v;var t=Ae[i]<<24>>24==83;r:do if(t){var f=i+2|0;Se[e]=f;var _=ge[v];if(_<<24>>24==95)var s=0;else{if(!((_-48&255&255)<10|(_-65&255&255)<26)){var n=8&Se[r+8>>2],o=n>>>3,l=0!=(0|n)|0==(0|a);do if(l)var b=o;else{if((Ae[f]-67&255&255)>=2){var b=o;break}var b=1}while(0);for(var b,k=0|ei;;){var k;if(k>>>0>=(ei+196|0)>>>0){var u=0;break r}if(_<<24>>24==Ae[0|k]<<24>>24)break;var k=k+28|0}var c=Se[k+20>>2];if(0!=(0|c)){var h=Se[k+24>>2],d=fr(r,c,h);Se[r+44>>2]=d}if(0==(0|b))var w=k+8|0,p=k+4|0;else var w=k+16|0,p=k+12|0;var p,w,E=Se[w>>2],A=Se[p>>2],g=r+48|0,y=Se[g>>2]+E|0;Se[g>>2]=y;var m=fr(r,A,E),u=m;break}for(var S=_,M=0,C=f;;){var C,M,S;if((S-48&255&255)<10)var R=36*M-48|0;else{if((S-65&255&255)>=26){var u=0;break r}var R=36*M-55|0}var R,T=(S<<24>>24)+R|0;if((0|T)<0){var u=0;break r}var O=C+1|0;Se[e]=O;var N=ge[C];if(N<<24>>24==95)break;var S=N,M=T,C=O}var s=T+1|0}var s;if((0|s)>=(0|Se[r+32>>2])){var u=0;break}var I=r+40|0,P=Se[I>>2]+1|0;Se[I>>2]=P;var u=Se[Se[r+28>>2]+(s<<2)>>2]}else var u=0;while(0);var u;return u}function B(r,a,e,i){var v,t,f,_,s=Oe;Oe+=28;var n,o=s,_=o>>2;Se[_]=r;var l=e+1|0,f=(o+12|0)>>2;Se[f]=l;var b=Jr(l),t=(o+4|0)>>2;if(Se[t]=b,0==(0|b))var k=0,u=1;else{var v=(o+8|0)>>2;Se[v]=0,Se[_+4]=0,Se[_+5]=0;var c=o+24|0;Se[c>>2]=0,H(o,a);var h=Me[t],d=0==(0|h);do{if(!d){var w=Me[v];if(w>>>0>=Me[f]>>>0){n=5;break}Se[v]=w+1|0,Ae[h+w|0]=0,n=6;break}n=5}while(0);5==n&&Y(o,0);var p=Se[t],E=0==(0|p)?Se[c>>2]:Se[f],k=p,u=E}var u,k;return Se[i>>2]=u,Oe=s,k}function H(r,a){var e,i,v,t,f,_,s,n,o,l,b,k,u,c,h,d,w,p,E,A,g,y,m,S,M,C,R,T,O,N,I,P,D,L,F,X,j,U,x,z,V,B,K,G,W,J,vr,tr,fr,_r,sr,nr,or,lr,br,kr,ur,cr,hr,dr,wr,pr=a>>2,Er=r>>2,Ar=Oe;Oe+=184;var gr,yr=Ar,wr=yr>>2,mr=Ar+64,dr=mr>>2,Sr=Ar+72,Mr=Ar+88,Cr=Ar+104,hr=Cr>>2,Rr=Ar+168,Tr=0==(0|a);r:do if(Tr)Z(r);else{var cr=(r+4|0)>>2,Or=Me[cr];if(0==(0|Or))break;var Nr=0|a,Ir=Me[Nr>>2];a:do{if(0==(0|Ir)){if(0!=(4&Se[Er]|0)){var Pr=Se[pr+1],Dr=Se[pr+2];q(r,Pr,Dr);break r}var ur=(r+8|0)>>2,Lr=Me[ur],Fr=a+8|0,Xr=Me[Fr>>2];if((Xr+Lr|0)>>>0>Me[Er+3]>>>0){var jr=Se[pr+1];Q(r,jr,Xr);break r}var Ur=Or+Lr|0,xr=Se[pr+1];Pa(Ur,xr,Xr,1);var zr=Se[ur]+Se[Fr>>2]|0;Se[ur]=zr;break r}if(1==(0|Ir)||2==(0|Ir)){var Vr=Se[pr+1];H(r,Vr);var Br=0==(4&Se[Er]|0),Hr=Me[cr],Kr=0!=(0|Hr);e:do if(Br){do if(Kr){var kr=(r+8|0)>>2,Yr=Me[kr];if((Yr+2|0)>>>0>Me[Er+3]>>>0)break;var Gr=Hr+Yr|0;oe=14906,Ae[Gr]=255&oe,oe>>=8,Ae[Gr+1]=255&oe;var Wr=Se[kr]+2|0;Se[kr]=Wr;break e}while(0);Q(r,0|He.__str120,2)}else{do if(Kr){var Zr=r+8|0,Qr=Me[Zr>>2];if(Qr>>>0>=Me[Er+3]>>>0)break;Se[Zr>>2]=Qr+1|0,Ae[Hr+Qr|0]=46;break e}while(0);Y(r,46)}while(0);var qr=Se[pr+2];H(r,qr);break r}if(3==(0|Ir)){for(var br=(r+20|0)>>2,$r=Me[br],lr=(r+16|0)>>2,Jr=a,ra=0,aa=$r;;){var aa,ra,Jr,ea=Me[Jr+4>>2];if(0==(0|ea)){var ia=ra,va=0;gr=33;break}if(ra>>>0>3){Z(r);break r}var ta=(ra<<4)+yr|0;Se[ta>>2]=aa,Se[br]=ta,Se[((ra<<4)+4>>2)+wr]=ea,Se[((ra<<4)+8>>2)+wr]=0;var fa=Me[lr];Se[((ra<<4)+12>>2)+wr]=fa;var _a=ra+1|0,sa=0|ea,na=Me[sa>>2];if((na-25|0)>>>0>=3){gr=25;break}var Jr=ea,ra=_a,aa=ta}e:do if(25==gr){if(4==(0|na)){Se[dr]=fa,Se[lr]=mr,Se[dr+1]=ea;var oa=Se[sa>>2],la=mr}else var oa=na,la=fa;var la,oa;if(2!=(0|oa)){var ia=_a,va=sa;break}for(var ba=_a,ka=ea+8|0;;){var ka,ba,ua=Me[ka>>2];if((Se[ua>>2]-25|0)>>>0>=3){var ia=ba,va=sa;break e}if(ba>>>0>3)break;var ca=(ba<<4)+yr|0,ha=ba-1|0,da=(ha<<4)+yr|0,or=ca>>2,nr=da>>2;Se[or]=Se[nr],Se[or+1]=Se[nr+1],Se[or+2]=Se[nr+2],Se[or+3]=Se[nr+3],Se[ca>>2]=da,Se[br]=ca,Se[((ha<<4)+4>>2)+wr]=ua,Se[((ha<<4)+8>>2)+wr]=0,Se[((ha<<4)+12>>2)+wr]=la;var ba=ba+1|0,ka=ua+4|0}Z(r);break r}while(0);var va,ia,wa=Se[pr+2];if(H(r,wa),4==(0|Se[va>>2])){var pa=Se[dr];Se[lr]=pa}var Ea=0==(0|ia);e:do if(!Ea)for(var Aa=r+8|0,ga=r+12|0,ya=ia;;){var ya,ma=ya-1|0;if(0==(0|Se[((ma<<4)+8>>2)+wr])){var Sa=Me[cr],Ma=0==(0|Sa);do{if(!Ma){var Ca=Me[Aa>>2];if(Ca>>>0>=Me[ga>>2]>>>0){gr=41;break}Se[Aa>>2]=Ca+1|0,Ae[Sa+Ca|0]=32,gr=42;break}gr=41}while(0);41==gr&&Y(r,32);var Ra=Se[((ma<<4)+4>>2)+wr];$(r,Ra)}if(0==(0|ma))break e;var ya=ma}while(0);Se[br]=$r;break r}if(4==(0|Ir)){var sr=(r+20|0)>>2,Ta=Se[sr];Se[sr]=0;var Oa=Se[pr+1];H(r,Oa);var Na=Me[cr],Ia=0==(0|Na);do{if(!Ia){var _r=(r+8|0)>>2,Da=Me[_r],La=0==(0|Da);do if(!La){if(Ae[Na+(Da-1)|0]<<24>>24!=60)break;Da>>>0>>0?(Se[_r]=Da+1|0,Ae[Na+Da|0]=32):Y(r,32)}while(0);var Fa=Me[cr];if(0==(0|Fa)){gr=54;break}var Xa=Me[_r];if(Xa>>>0>=Me[Er+3]>>>0){gr=54;break}Se[_r]=Xa+1|0,Ae[Fa+Xa|0]=60,gr=55;break}gr=54}while(0);54==gr&&Y(r,60);var ja=Se[pr+2];H(r,ja);var Ua=Me[cr],xa=0==(0|Ua);do{if(!xa){var fr=(r+8|0)>>2,za=Me[fr],Va=0==(0|za);do if(!Va){if(Ae[Ua+(za-1)|0]<<24>>24!=62)break;za>>>0>>0?(Se[fr]=za+1|0,Ae[Ua+za|0]=32):Y(r,32)}while(0);var Ba=Me[cr];if(0==(0|Ba)){gr=64;break}var Ha=Me[fr];if(Ha>>>0>=Me[Er+3]>>>0){gr=64;break}Se[fr]=Ha+1|0,Ae[Ba+Ha|0]=62,gr=65;break}gr=64}while(0);64==gr&&Y(r,62),Se[sr]=Ta;break r}if(5==(0|Ir)){var tr=(r+16|0)>>2,Ka=Me[tr];if(0==(0|Ka)){Z(r);break r}for(var Ya=Se[pr+1],Ga=Se[Ka+4>>2];;){var Ga,Ya,Wa=Se[Ga+8>>2];if(0==(0|Wa))break;if(39!=(0|Se[Wa>>2])){Z(r);break r}if((0|Ya)<1){if(0!=(0|Ya))break;var Za=Se[Ka>>2];Se[tr]=Za;var Qa=Se[Wa+4>>2];H(r,Qa),Se[tr]=Ka;break r}var Ya=Ya-1|0,Ga=Wa}Z(r);break r}if(6==(0|Ir)){var qa=Se[pr+2];H(r,qa);break r}if(7==(0|Ir)){var $a=r+8|0,Ja=Me[$a>>2];Ja>>>0>>0?(Se[$a>>2]=Ja+1|0,Ae[Or+Ja|0]=126):Y(r,126);var re=Se[pr+2];H(r,re);break r}if(8==(0|Ir)){var vr=(r+8|0)>>2,ae=Me[vr];if((ae+11|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str121,11);else{for(var ee=Or+ae|0,ie=0|He.__str121,ve=ee,te=ie+11;ie>2,se=Me[J];if((se+8|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str122,8);else{var ne=Or+se|0,le=0|ne;oe=542397526,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=ne+4|0;oe=544370534,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var ke=Se[J]+8|0;Se[J]=ke}var ue=Se[pr+1];H(r,ue);break r}if(10==(0|Ir)){var W=(r+8|0)>>2,ce=Me[W],he=r+12|0;if((ce+24|0)>>>0>Me[he>>2]>>>0)Q(r,0|He.__str123,24);else{var de=Or+ce|0;Pa(de,0|He.__str123,24,1);var we=Se[W]+24|0;Se[W]=we}var pe=Se[pr+1];H(r,pe);var Ee=Me[cr],ge=0==(0|Ee);do{if(!ge){var ye=Me[W];if((ye+4|0)>>>0>Me[he>>2]>>>0){gr=96;break}var me=Ee+ye|0;oe=762210605,Ae[me]=255&oe,oe>>=8,Ae[me+1]=255&oe,oe>>=8,Ae[me+2]=255&oe,oe>>=8,Ae[me+3]=255&oe;var Ce=Se[W]+4|0;Se[W]=Ce,gr=97;break}gr=96}while(0);96==gr&&Q(r,0|He.__str124,4);var Re=Se[pr+2];H(r,Re);break r}if(11==(0|Ir)){var G=(r+8|0)>>2,Te=Me[G];if((Te+13|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str125,13);else{for(var Ne=Or+Te|0,ie=0|He.__str125,ve=Ne,te=ie+13;ie>2,De=Me[K];if((De+18|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str126,18);else{for(var Le=Or+De|0,ie=0|He.__str126,ve=Le,te=ie+18;ie>2,je=Me[B];if((je+16|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str127,16);else{for(var Ue=Or+je|0,ie=0|He.__str127,ve=Ue,te=ie+16;ie>2,Ve=Me[V];if((Ve+21|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str128,21);else{var Be=Or+Ve|0;Pa(Be,0|He.__str128,21,1);var Ke=Se[V]+21|0;Se[V]=Ke}var Ye=Se[pr+1];H(r,Ye);break r}if(15==(0|Ir)){var z=(r+8|0)>>2,Ge=Me[z];if((Ge+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str129,17);else{for(var We=Or+Ge|0,ie=0|He.__str129,ve=We,te=ie+17;ie>2,qe=Me[x];if((qe+26|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str130,26);else{var $e=Or+qe|0;Pa($e,0|He.__str130,26,1);var Je=Se[x]+26|0;Se[x]=Je}var ri=Se[pr+1];H(r,ri);break r}if(17==(0|Ir)){var U=(r+8|0)>>2,ai=Me[U];if((ai+15|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str131,15);else{for(var ei=Or+ai|0,ie=0|He.__str131,ve=ei,te=ie+15;ie>2,ti=Me[j];if((ti+19|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str132,19);else{for(var fi=Or+ti|0,ie=0|He.__str132,ve=fi,te=ie+19;ie>2,ni=Me[X];if((ni+24|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str133,24);else{var oi=Or+ni|0;Pa(oi,0|He.__str133,24,1);var li=Se[X]+24|0;Se[X]=li}var bi=Se[pr+1];H(r,bi);break r}if(20==(0|Ir)){var F=(r+8|0)>>2,ki=Me[F];if((ki+17|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str134,17);else{for(var ui=Or+ki|0,ie=0|He.__str134,ve=ui,te=ie+17;ie>2,di=Me[L],wi=a+8|0,pi=Me[wi>>2];if((pi+di|0)>>>0>Me[Er+3]>>>0){var Ei=Se[pr+1];Q(r,Ei,pi);break r}var Ai=Or+di|0,gi=Se[pr+1];Pa(Ai,gi,pi,1);var yi=Se[L]+Se[wi>>2]|0;Se[L]=yi;break r}if(22==(0|Ir)||23==(0|Ir)||24==(0|Ir)){for(var mi=r+20|0;;){var mi,Si=Me[mi>>2];if(0==(0|Si))break a;if(0==(0|Se[Si+8>>2])){var Mi=Me[Se[Si+4>>2]>>2];if((Mi-22|0)>>>0>=3)break a;if((0|Mi)==(0|Ir))break}var mi=0|Si}var Ci=Se[pr+1];H(r,Ci);break r}if(25!=(0|Ir)&&26!=(0|Ir)&&27!=(0|Ir)&&28!=(0|Ir)&&29!=(0|Ir)&&30!=(0|Ir)&&31!=(0|Ir)&&32!=(0|Ir)){if(33==(0|Ir)){var D=(r+8|0)>>2,Ri=Me[D],P=(a+4|0)>>2,I=Me[P]>>2;if(0==(4&Se[Er]|0)){var Ti=Me[I+1];if((Ti+Ri|0)>>>0>Me[Er+3]>>>0){var Oi=Se[I];Q(r,Oi,Ti);break r}var Ni=Or+Ri|0,Ii=Se[I];Pa(Ni,Ii,Ti,1);var Pi=Se[D]+Se[Se[P]+4>>2]|0;Se[D]=Pi;break r}var Di=Me[I+3];if((Di+Ri|0)>>>0>Me[Er+3]>>>0){var Li=Se[I+2];Q(r,Li,Di);break r}var Fi=Or+Ri|0,Xi=Se[I+2];Pa(Fi,Xi,Di,1);var ji=Se[D]+Se[Se[P]+12>>2]|0;Se[D]=ji;break r}if(34==(0|Ir)){var Ui=Se[pr+1];H(r,Ui);break r}if(35==(0|Ir)){var N=(0|r)>>2;if(0!=(32&Se[N]|0)){var xi=Se[Er+5];rr(r,a,xi)}var zi=a+4|0,Vi=0==(0|Se[zi>>2]);e:do if(!Vi){var O=(r+20|0)>>2,Bi=Se[O],Hi=0|Mr;Se[Hi>>2]=Bi,Se[O]=Mr,Se[Mr+4>>2]=a;var Ki=Mr+8|0;Se[Ki>>2]=0;var Yi=Se[Er+4];Se[Mr+12>>2]=Yi;var Gi=Se[zi>>2];H(r,Gi);var Wi=Se[Hi>>2];if(Se[O]=Wi,0!=(0|Se[Ki>>2]))break r;if(0!=(32&Se[N]|0))break;var Zi=Me[cr],Qi=0==(0|Zi);do if(!Qi){var qi=r+8|0,$i=Me[qi>>2];if($i>>>0>=Me[Er+3]>>>0)break;Se[qi>>2]=$i+1|0,Ae[Zi+$i|0]=32;break e}while(0);Y(r,32)}while(0);if(0!=(32&Se[N]|0))break r;var Ji=Se[Er+5];rr(r,a,Ji);break r}if(36==(0|Ir)){var T=(r+20|0)>>2,rv=Me[T],av=0|Cr;Se[hr]=rv,Se[T]=av,Se[hr+1]=a;var ev=Cr+8|0;Se[ev>>2]=0;var iv=Se[Er+4];Se[hr+3]=iv;for(var vv=rv,tv=1;;){var tv,vv;if(0==(0|vv))break;if((Se[Se[vv+4>>2]>>2]-22|0)>>>0>=3)break;var fv=vv+8|0;if(0==(0|Se[fv>>2])){if(tv>>>0>3){Z(r);break r}var _v=(tv<<4)+Cr|0,R=_v>>2,C=vv>>2;Se[R]=Se[C],Se[R+1]=Se[C+1],Se[R+2]=Se[C+2],Se[R+3]=Se[C+3];var sv=Se[T];Se[_v>>2]=sv,Se[T]=_v,Se[fv>>2]=1;var nv=tv+1|0}else var nv=tv;var nv,vv=Se[vv>>2],tv=nv}var ov=Se[pr+2];if(H(r,ov),Se[T]=rv,0!=(0|Se[ev>>2]))break r;if(tv>>>0>1){for(var lv=tv;;){var lv,bv=lv-1|0,kv=Se[((bv<<4)+4>>2)+hr];if($(r,kv),bv>>>0<=1)break;var lv=bv}var uv=Se[T]}else var uv=rv;var uv;ar(r,a,uv);break r}if(37==(0|Ir)){var M=(r+20|0)>>2,cv=Se[M],hv=0|Rr;Se[hv>>2]=cv,Se[M]=Rr,Se[Rr+4>>2]=a;var dv=Rr+8|0;Se[dv>>2]=0;var wv=Se[Er+4];Se[Rr+12>>2]=wv;var pv=a+4|0,Ev=Se[pr+2];H(r,Ev);var Av=0==(0|Se[dv>>2]);e:do if(Av){var gv=Me[cr],yv=0==(0|gv);do{if(!yv){var mv=r+8|0,Sv=Me[mv>>2];if(Sv>>>0>=Me[Er+3]>>>0){gr=187;break}Se[mv>>2]=Sv+1|0,Ae[gv+Sv|0]=32,gr=188;break}gr=187}while(0);187==gr&&Y(r,32);var Mv=Se[pv>>2];H(r,Mv);var Cv=Me[cr],Rv=0==(0|Cv);do if(!Rv){var S=(r+8|0)>>2,Tv=Me[S];if((Tv+3|0)>>>0>Me[Er+3]>>>0)break;var Ov=Cv+Tv|0;Ae[Ov]=Ae[0|He.__str135],Ae[Ov+1]=Ae[(0|He.__str135)+1],Ae[Ov+2]=Ae[(0|He.__str135)+2];var Nv=Se[S]+3|0;Se[S]=Nv;break e}while(0);Q(r,0|He.__str135,3)}while(0);var Iv=Se[hv>>2];Se[M]=Iv;break r}if(38==(0|Ir)||39==(0|Ir)){var Pv=Se[pr+1];H(r,Pv);var Dv=a+8|0;if(0==(0|Se[Dv>>2]))break r;var Lv=Me[cr],Fv=0==(0|Lv);do{if(!Fv){var m=(r+8|0)>>2,Xv=Me[m];if((Xv+2|0)>>>0>Me[Er+3]>>>0){gr=197;break}var jv=Lv+Xv|0;oe=8236,Ae[jv]=255&oe,oe>>=8,Ae[jv+1]=255&oe;var Uv=Se[m]+2|0;Se[m]=Uv,gr=198;break}gr=197}while(0);197==gr&&Q(r,0|He.__str136,2);var xv=Se[Dv>>2];H(r,xv);break r}if(40==(0|Ir)){var y=(r+8|0)>>2,zv=Me[y],g=(r+12|0)>>2;if((zv+8|0)>>>0>Me[g]>>>0)Q(r,0|He.__str137,8);else{var Vv=Or+zv|0,le=0|Vv;oe=1919250543,Ae[le]=255&oe,oe>>=8,Ae[le+1]=255&oe,oe>>=8,Ae[le+2]=255&oe,oe>>=8,Ae[le+3]=255&oe;var be=Vv+4|0;oe=1919906913,Ae[be]=255&oe,oe>>=8,Ae[be+1]=255&oe,oe>>=8,Ae[be+2]=255&oe,oe>>=8,Ae[be+3]=255&oe;var Bv=Se[y]+8|0;Se[y]=Bv}var A=(a+4|0)>>2,Hv=(Ae[Se[Se[A]+4>>2]]-97&255&255)<26;e:do if(Hv){var Kv=Me[cr],Yv=0==(0|Kv);do if(!Yv){var Gv=Me[y];if(Gv>>>0>=Me[g]>>>0)break;Se[y]=Gv+1|0,Ae[Kv+Gv|0]=32;break e}while(0);Y(r,32)}while(0);var Wv=Me[cr],Zv=0==(0|Wv);do{if(!Zv){var Qv=Me[y],qv=Me[A],$v=Me[qv+8>>2];if(($v+Qv|0)>>>0>Me[g]>>>0){var Jv=qv,rt=$v;break}var at=Wv+Qv|0,et=Se[qv+4>>2];Pa(at,et,$v,1);var it=Se[y]+Se[Se[A]+8>>2]|0;Se[y]=it;break r}var vt=Me[A],Jv=vt,rt=Se[vt+8>>2]}while(0);var rt,Jv,tt=Se[Jv+4>>2];Q(r,tt,rt);break r}if(41==(0|Ir)){var E=(r+8|0)>>2,ft=Me[E];if((ft+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var _t=Or+ft|0,ie=0|He.__str10180,ve=_t,te=ie+9;ie>2,ot=Me[p];if((ot+9|0)>>>0>Me[Er+3]>>>0)Q(r,0|He.__str10180,9);else{for(var lt=Or+ot|0,ie=0|He.__str10180,ve=lt,te=ie+9;ie>2],ct=42==(0|Se[ut>>2]);e:do if(ct){var w=(r+8|0)>>2,ht=Me[w],dt=r+12|0;ht>>>0>2]>>>0?(Se[w]=ht+1|0,Ae[Or+ht|0]=40):Y(r,40);var wt=Se[kt>>2];er(r,wt);var pt=Me[cr],Et=0==(0|pt);do if(!Et){var At=Me[w];if(At>>>0>=Me[dt>>2]>>>0)break;Se[w]=At+1|0,Ae[pt+At|0]=41;break e}while(0);Y(r,41)}else ir(r,ut);while(0);var gt=Me[cr],yt=0==(0|gt);do{if(!yt){var mt=r+8|0,St=Me[mt>>2];if(St>>>0>=Me[Er+3]>>>0){gr=232;break}Se[mt>>2]=St+1|0,Ae[gt+St|0]=40,gr=233;break}gr=232}while(0);232==gr&&Y(r,40);var Mt=Se[pr+2];H(r,Mt);var Ct=Me[cr],Rt=0==(0|Ct);do if(!Rt){var Tt=r+8|0,Ot=Me[Tt>>2];if(Ot>>>0>=Me[Er+3]>>>0)break;Se[Tt>>2]=Ot+1|0,Ae[Ct+Ot|0]=41;break r}while(0);Y(r,41);break r}if(44==(0|Ir)){var d=(a+8|0)>>2;if(45==(0|Se[Se[d]>>2])){var h=(a+4|0)>>2,Nt=Se[h],It=40==(0|Se[Nt>>2]);do if(It){var Pt=Se[Nt+4>>2];if(1!=(0|Se[Pt+8>>2]))break;if(Ae[Se[Pt+4>>2]]<<24>>24!=62)break;var Dt=r+8|0,Lt=Me[Dt>>2];Lt>>>0>>0?(Se[Dt>>2]=Lt+1|0,Ae[Or+Lt|0]=40):Y(r,40)}while(0);var Ft=Me[cr],Xt=0==(0|Ft);do{if(!Xt){var jt=r+8|0,Ut=Me[jt>>2];if(Ut>>>0>=Me[Er+3]>>>0){gr=248;break}Se[jt>>2]=Ut+1|0,Ae[Ft+Ut|0]=40,gr=249;break}gr=248}while(0);248==gr&&Y(r,40);var xt=Se[Se[d]+4>>2];H(r,xt);var zt=Me[cr],Vt=0==(0|zt);do{if(!Vt){var c=(r+8|0)>>2,Bt=Me[c];if((Bt+2|0)>>>0>Me[Er+3]>>>0){gr=252;break}var Ht=zt+Bt|0;oe=8233,Ae[Ht]=255&oe,oe>>=8,Ae[Ht+1]=255&oe;var Kt=Se[c]+2|0;Se[c]=Kt,gr=253;break}gr=252}while(0);252==gr&&Q(r,0|He.__str139,2);var Yt=Se[h];ir(r,Yt);var Gt=Me[cr],Wt=0==(0|Gt);do{if(!Wt){var u=(r+8|0)>>2,Zt=Me[u];if((Zt+2|0)>>>0>Me[Er+3]>>>0){gr=256;break}var Qt=Gt+Zt|0;oe=10272,Ae[Qt]=255&oe,oe>>=8,Ae[Qt+1]=255&oe;var qt=Se[u]+2|0;Se[u]=qt,gr=257;break}gr=256}while(0);256==gr&&Q(r,0|He.__str140,2);var $t=Se[Se[d]+8>>2];H(r,$t);var Jt=Me[cr],rf=0==(0|Jt);do{if(!rf){var af=r+8|0,ef=Me[af>>2];if(ef>>>0>=Me[Er+3]>>>0){gr=260;break}Se[af>>2]=ef+1|0,Ae[Jt+ef|0]=41,gr=261;break}gr=260}while(0);260==gr&&Y(r,41);var vf=Se[h];if(40!=(0|Se[vf>>2]))break r;var tf=Se[vf+4>>2];if(1!=(0|Se[tf+8>>2]))break r;if(Ae[Se[tf+4>>2]]<<24>>24!=62)break r;var ff=Me[cr],_f=0==(0|ff);do if(!_f){var sf=r+8|0,nf=Me[sf>>2];if(nf>>>0>=Me[Er+3]>>>0)break;Se[sf>>2]=nf+1|0,Ae[ff+nf|0]=41;break r}while(0);Y(r,41);break r}Z(r);break r}if(45==(0|Ir)){Z(r);break r}if(46==(0|Ir)){var of=a+4|0,k=(a+8|0)>>2,lf=Se[k],bf=47==(0|Se[lf>>2]);do if(bf){if(48!=(0|Se[Se[lf+8>>2]>>2]))break;var b=(r+8|0)>>2,kf=Me[b],l=(r+12|0)>>2;kf>>>0>>0?(Se[b]=kf+1|0,Ae[Or+kf|0]=40):Y(r,40);var uf=Se[Se[k]+4>>2];H(r,uf);var cf=Me[cr],hf=0==(0|cf);do{if(!hf){var df=Me[b];if((df+2|0)>>>0>Me[l]>>>0){gr=278;break}var wf=cf+df|0;oe=8233,Ae[wf]=255&oe,oe>>=8,Ae[wf+1]=255&oe;var pf=Se[b]+2|0;Se[b]=pf,gr=279;break}gr=278}while(0);278==gr&&Q(r,0|He.__str139,2);var Ef=Se[of>>2];ir(r,Ef);var Af=Me[cr],gf=0==(0|Af);do{if(!gf){var yf=Me[b];if((yf+2|0)>>>0>Me[l]>>>0){gr=282;break}var mf=Af+yf|0;oe=10272,Ae[mf]=255&oe,oe>>=8,Ae[mf+1]=255&oe;var Sf=Se[b]+2|0;Se[b]=Sf,gr=283;break}gr=282}while(0);282==gr&&Q(r,0|He.__str140,2);var Mf=Se[Se[Se[k]+8>>2]+4>>2];H(r,Mf);var Cf=Me[cr],Rf=0==(0|Cf);do{if(!Rf){var Tf=Me[b];if((Tf+5|0)>>>0>Me[l]>>>0){gr=286;break}var Of=Cf+Tf|0;Ae[Of]=Ae[0|He.__str141],Ae[Of+1]=Ae[(0|He.__str141)+1],Ae[Of+2]=Ae[(0|He.__str141)+2],Ae[Of+3]=Ae[(0|He.__str141)+3],Ae[Of+4]=Ae[(0|He.__str141)+4];var Nf=Se[b]+5|0;Se[b]=Nf,gr=287;break}gr=286}while(0);286==gr&&Q(r,0|He.__str141,5);var If=Se[Se[Se[k]+8>>2]+8>>2];H(r,If);var Pf=Me[cr],Df=0==(0|Pf);do if(!Df){var Lf=Me[b];if(Lf>>>0>=Me[l]>>>0)break;Se[b]=Lf+1|0,Ae[Pf+Lf|0]=41;break r}while(0);Y(r,41);break r}while(0);Z(r);break r}if(47==(0|Ir)||48==(0|Ir)){Z(r);break r}if(49==(0|Ir)||50==(0|Ir)){var Ff=a+4|0,Xf=Se[Ff>>2],jf=33==(0|Se[Xf>>2]);do{if(jf){var Uf=Me[Se[Xf+4>>2]+16>>2];if(1==(0|Uf)||2==(0|Uf)||3==(0|Uf)||4==(0|Uf)||5==(0|Uf)||6==(0|Uf)){var xf=a+8|0;if(0!=(0|Se[Se[xf>>2]>>2])){var zf=Uf;break}if(50==(0|Ir)){var Vf=r+8|0,Bf=Me[Vf>>2];Bf>>>0>>0?(Se[Vf>>2]=Bf+1|0,Ae[Or+Bf|0]=45):Y(r,45)}var Hf=Se[xf>>2];if(H(r,Hf),2==(0|Uf)){var Kf=Me[cr],Yf=0==(0|Kf);do if(!Yf){var Gf=r+8|0,Wf=Me[Gf>>2];if(Wf>>>0>=Me[Er+3]>>>0)break;Se[Gf>>2]=Wf+1|0,Ae[Kf+Wf|0]=117;break r}while(0);Y(r,117);break r}if(3==(0|Uf)){var Zf=Me[cr],Qf=0==(0|Zf);do if(!Qf){var qf=r+8|0,$f=Me[qf>>2];if($f>>>0>=Me[Er+3]>>>0)break;Se[qf>>2]=$f+1|0,Ae[Zf+$f|0]=108;break r}while(0);Y(r,108);break r}if(4==(0|Uf)){var Jf=Me[cr],r_=0==(0|Jf);do if(!r_){var o=(r+8|0)>>2,a_=Me[o];if((a_+2|0)>>>0>Me[Er+3]>>>0)break;var e_=Jf+a_|0;oe=27765,Ae[e_]=255&oe,oe>>=8,Ae[e_+1]=255&oe;var i_=Se[o]+2|0;Se[o]=i_;break r}while(0);Q(r,0|He.__str142,2);break r}if(5==(0|Uf)){var v_=Me[cr],t_=0==(0|v_);do if(!t_){var n=(r+8|0)>>2,f_=Me[n];if((f_+2|0)>>>0>Me[Er+3]>>>0)break;var __=v_+f_|0;oe=27756,Ae[__]=255&oe,oe>>=8,Ae[__+1]=255&oe;var s_=Se[n]+2|0;Se[n]=s_;break r}while(0);Q(r,0|He.__str143,2);break r}if(6==(0|Uf)){var n_=Me[cr],o_=0==(0|n_);do if(!o_){var s=(r+8|0)>>2,l_=Me[s];if((l_+3|0)>>>0>Me[Er+3]>>>0)break;var b_=n_+l_|0;Ae[b_]=Ae[0|He.__str144],Ae[b_+1]=Ae[(0|He.__str144)+1],Ae[b_+2]=Ae[(0|He.__str144)+2];var k_=Se[s]+3|0;Se[s]=k_;break r}while(0);Q(r,0|He.__str144,3);break r}break r}if(7==(0|Uf)){var _=Se[pr+2]>>2;if(0!=(0|Se[_])){var zf=7;break}if(!(1==(0|Se[_+2])&49==(0|Ir))){var zf=Uf;break}var u_=Ae[Se[_+1]]<<24>>24;if(48==(0|u_)){var f=(r+8|0)>>2,c_=Me[f];if((c_+5|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str145,5);break r}var h_=Or+c_|0;Ae[h_]=Ae[0|He.__str145],Ae[h_+1]=Ae[(0|He.__str145)+1],Ae[h_+2]=Ae[(0|He.__str145)+2],Ae[h_+3]=Ae[(0|He.__str145)+3],Ae[h_+4]=Ae[(0|He.__str145)+4];var d_=Se[f]+5|0;Se[f]=d_;break r}if(49==(0|u_)){var t=(r+8|0)>>2,w_=Me[t];if((w_+4|0)>>>0>Me[Er+3]>>>0){Q(r,0|He.__str146,4);break r}var p_=Or+w_|0;oe=1702195828,Ae[p_]=255&oe,oe>>=8,Ae[p_+1]=255&oe,oe>>=8,Ae[p_+2]=255&oe,oe>>=8,Ae[p_+3]=255&oe;var E_=Se[t]+4|0;Se[t]=E_;break r}var zf=Uf;break}var zf=Uf;break}var zf=0}while(0);var zf,v=(r+8|0)>>2,A_=Me[v],i=(r+12|0)>>2;A_>>>0>>0?(Se[v]=A_+1|0,Ae[Or+A_|0]=40):Y(r,40);var g_=Se[Ff>>2];H(r,g_);var y_=Me[cr],m_=0==(0|y_);do{if(!m_){var S_=Me[v];if(S_>>>0>=Me[i]>>>0){gr=335;break}Se[v]=S_+1|0,Ae[y_+S_|0]=41,gr=336;break}gr=335}while(0);335==gr&&Y(r,41);var M_=50==(0|Se[Nr>>2]);e:do if(M_){var C_=Me[cr],R_=0==(0|C_);do if(!R_){var T_=Me[v];if(T_>>>0>=Me[i]>>>0)break;Se[v]=T_+1|0,Ae[C_+T_|0]=45;break e}while(0);Y(r,45)}while(0);if(8==(0|zf)){var O_=Me[cr],N_=0==(0|O_);do{if(!N_){var I_=Me[v];if(I_>>>0>=Me[i]>>>0){gr=345;break}Se[v]=I_+1|0,Ae[O_+I_|0]=91,gr=346;break}gr=345}while(0);345==gr&&Y(r,91);var P_=Se[pr+2];H(r,P_);var D_=Me[cr],L_=0==(0|D_);do if(!L_){var F_=Me[v];if(F_>>>0>=Me[i]>>>0)break;Se[v]=F_+1|0,Ae[D_+F_|0]=93;break r}while(0);Y(r,93);break r}var X_=Se[pr+2];H(r,X_);break r}Z(r);break r}}while(0);var e=(r+20|0)>>2,j_=Se[e],U_=0|Sr;Se[U_>>2]=j_,Se[e]=Sr,Se[Sr+4>>2]=a;var x_=Sr+8|0;Se[x_>>2]=0;var z_=Se[Er+4];Se[Sr+12>>2]=z_;var V_=Se[pr+1];H(r,V_),0==(0|Se[x_>>2])&&$(r,a);var B_=Se[U_>>2];Se[e]=B_}while(0);Oe=Ar}function K(r,a,e,i){var v=i>>2;Se[v]=r,Se[v+1]=r+e|0,Se[v+2]=a,Se[v+3]=r,Se[v+6]=e<<1,Se[v+5]=0,Se[v+9]=e,Se[v+8]=0,Se[v+10]=0,Se[v+11]=0,Se[v+12]=0}function Y(r,a){var e,i=r+4|0,v=Me[i>>2],t=0==(0|v);do if(!t){var e=(r+8|0)>>2,f=Me[e];if(f>>>0>2]>>>0)var _=v,s=f;else{tr(r,1);var n=Me[i>>2];if(0==(0|n))break;var _=n,s=Se[e]}var s,_;Ae[_+s|0]=255&a;var o=Se[e]+1|0;Se[e]=o}while(0)}function G(r,a,e,i){var v,t=i>>2,f=Oe;Oe+=4;var _=f,v=_>>2,s=0==(0|r);do if(s){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var o=0==(0|e);if(0!=(0|a)&o){if(0==(0|i)){var n=0;break}Se[t]=-3;var n=0}else{var l=W(r,_);if(0==(0|l)){if(0==(0|i)){var n=0;break}if(1==(0|Se[v])){Se[t]=-1;var n=0}else{Se[t]=-2;var n=0}}else{var b=0==(0|a);do if(b){if(o){var k=l;break}var u=Se[v];Se[e>>2]=u;var k=l}else{var c=Ca(l);if(c>>>0>2]>>>0){Ra(a,l);va(l);var k=a}else{va(a);var h=Se[v];Se[e>>2]=h;var k=l}}while(0);var k;if(0==(0|i)){var n=k;break}Se[t]=0;var n=k}}}while(0);var n;return Oe=f,n}function W(r,a){var e,i=Oe;Oe+=52;var v,t=i,e=t>>2;Se[a>>2]=0;var f=Ca(r),_=Ae[r]<<24>>24==95;do{if(_){if(Ae[r+1|0]<<24>>24==90){var s=0;v=13;break}v=3;break}v=3}while(0);do if(3==v){var n=Na(r,0|He.__str117,8);if(0!=(0|n)){var s=1;v=13;break}var o=Ae[r+8|0];if(o<<24>>24!=46&&o<<24>>24!=95&&o<<24>>24!=36){var s=1;v=13;break}var l=r+9|0,b=Ae[l];if(b<<24>>24!=68&&b<<24>>24!=73){\nvar s=1;v=13;break}if(Ae[r+10|0]<<24>>24!=95){var s=1;v=13;break}var k=f+29|0,u=Jr(k);if(0==(0|u)){Se[a>>2]=1;var c=0;v=19;break}Ae[l]<<24>>24==73?Pa(u,0|He.__str118,30,1):Pa(u,0|He.__str119,29,1);var h=r+11|0,c=(Ia(u,h),u);v=19;break}while(0);if(13==v){var s;K(r,17,f,t);var d=Se[e+6],w=Ta(),p=Oe;Oe+=12*d,Oe=Oe+3>>2<<2;var E=Oe;if(Oe+=4*Se[e+9],Oe=Oe+3>>2<<2,Se[e+4]=p,Se[e+7]=E,s)var A=N(t),g=A;else var y=T(t,1),g=y;var g,m=Ae[Se[e+3]]<<24>>24==0?g:0,S=Se[e+12]+f+10*Se[e+10]|0;if(0==(0|m))var M=0;else var C=S/8+S|0,R=B(17,m,C,a),M=R;var M;Oa(w);var c=M}var c;return Oe=i,c}function Z(r){var a=r+4|0,e=Se[a>>2];va(e),Se[a>>2]=0}function Q(r,a,e){var i,v=r+4|0,t=Me[v>>2],f=0==(0|t);do if(!f){var i=(r+8|0)>>2,_=Me[i];if((_+e|0)>>>0>Me[r+12>>2]>>>0){tr(r,e);var s=Me[v>>2];if(0==(0|s))break;var n=s,o=Se[i]}else var n=t,o=_;var o,n;Pa(n+o|0,a,e,1);var l=Se[i]+e|0;Se[i]=l}while(0)}function q(r,a,e){var i,v,t=a+e|0,f=(0|e)>0;r:do if(f)for(var _=t,s=r+4|0,i=(r+8|0)>>2,n=r+12|0,o=a;;){var o,l=(_-o|0)>3;a:do{if(l){if(Ae[o]<<24>>24!=95){v=21;break}if(Ae[o+1|0]<<24>>24!=95){v=21;break}if(Ae[o+2|0]<<24>>24!=85){v=21;break}for(var b=o+3|0,k=0;;){var k,b;if(b>>>0>=t>>>0){v=21;break a}var u=ge[b],c=u<<24>>24;if((u-48&255&255)<10)var h=c-48|0;else if((u-65&255&255)<6)var h=c-55|0;else{if((u-97&255&255)>=6)break;var h=c-87|0}var h,b=b+1|0,k=(k<<4)+h|0}if(!(u<<24>>24==95&k>>>0<256)){v=21;break}var d=Me[s>>2],w=0==(0|d);do if(!w){var p=Me[i];if(p>>>0>=Me[n>>2]>>>0)break;Se[i]=p+1|0,Ae[d+p|0]=255&k;var E=b;v=25;break a}while(0);Y(r,k);var E=b;v=25;break}v=21}while(0);a:do if(21==v){var A=Me[s>>2],g=0==(0|A);do if(!g){var y=Me[i];if(y>>>0>=Me[n>>2]>>>0)break;var m=Ae[o];Se[i]=y+1|0,Ae[A+y|0]=m;var E=o;break a}while(0);var S=Ae[o]<<24>>24;Y(r,S);var E=o}while(0);var E,M=E+1|0;if(M>>>0>=t>>>0)break r;var o=M}while(0)}function $(r,a){var e,i,v,t,f,_,s,n=r>>2,o=Se[a>>2];r:do if(22==(0|o)||25==(0|o)){var l=Me[n+1],b=0==(0|l);do if(!b){var _=(r+8|0)>>2,k=Me[_];if((k+9|0)>>>0>Me[n+3]>>>0)break;for(var u=l+k|0,c=0|He.__str147,h=u,d=c+9;c>2,A=Me[f];if((A+9|0)>>>0>Me[n+3]>>>0)break;for(var g=p+A|0,c=0|He.__str148,h=g,d=c+9;c>2,M=Me[t];if((M+6|0)>>>0>Me[n+3]>>>0)break;var C=m+M|0;Ae[C]=Ae[0|He.__str149],Ae[C+1]=Ae[(0|He.__str149)+1],Ae[C+2]=Ae[(0|He.__str149)+2],Ae[C+3]=Ae[(0|He.__str149)+3],Ae[C+4]=Ae[(0|He.__str149)+4],Ae[C+5]=Ae[(0|He.__str149)+5];var R=Se[t]+6|0;Se[t]=R;break r}while(0);Q(r,0|He.__str149,6)}else if(28==(0|o)){var T=Me[n+1],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[n+3]>>>0){s=17;break}Se[N>>2]=I+1|0,Ae[T+I|0]=32,s=18;break}s=17}while(0);17==s&&Y(r,32);var P=Se[a+8>>2];H(r,P)}else if(29==(0|o)){if(0!=(4&Se[n]|0))break;var D=Me[n+1],L=0==(0|D);do if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[n+3]>>>0)break;Se[F>>2]=X+1|0,Ae[D+X|0]=42;break r}while(0);Y(r,42)}else if(30==(0|o)){var j=Me[n+1],U=0==(0|j);do if(!U){var x=r+8|0,z=Me[x>>2];if(z>>>0>=Me[n+3]>>>0)break;Se[x>>2]=z+1|0,Ae[j+z|0]=38;break r}while(0);Y(r,38)}else if(31==(0|o)){var V=Me[n+1],B=0==(0|V);do if(!B){var v=(r+8|0)>>2,K=Me[v];if((K+8|0)>>>0>Me[n+3]>>>0)break;var G=V+K|0,W=0|G;oe=1886220131,Ae[W]=255&oe,oe>>=8,Ae[W+1]=255&oe,oe>>=8,Ae[W+2]=255&oe,oe>>=8,Ae[W+3]=255&oe;var Z=G+4|0;oe=544761196,Ae[Z]=255&oe,oe>>=8,Ae[Z+1]=255&oe,oe>>=8,Ae[Z+2]=255&oe,oe>>=8,Ae[Z+3]=255&oe;var q=Se[v]+8|0;Se[v]=q;break r}while(0);Q(r,0|He.__str150,8)}else if(32==(0|o)){var $=Me[n+1],J=0==(0|$);do if(!J){var i=(r+8|0)>>2,rr=Me[i];if((rr+10|0)>>>0>Me[n+3]>>>0)break;for(var ar=$+rr|0,c=0|He.__str151,h=ar,d=c+10;c>2],tr=0==(0|vr);do{if(!tr){var fr=r+8|0,_r=Me[fr>>2];if(0!=(0|_r)&&Ae[vr+(_r-1)|0]<<24>>24==40){s=42;break}if(_r>>>0>=Me[n+3]>>>0){s=41;break}Se[fr>>2]=_r+1|0,Ae[vr+_r|0]=32,s=42;break}s=41}while(0);41==s&&Y(r,32);var sr=Se[a+4>>2];H(r,sr);var nr=Me[ir>>2],or=0==(0|nr);do if(!or){var e=(r+8|0)>>2,lr=Me[e];if((lr+3|0)>>>0>Me[n+3]>>>0)break;var br=nr+lr|0;Ae[br]=Ae[0|He.__str135],Ae[br+1]=Ae[(0|He.__str135)+1],Ae[br+2]=Ae[(0|He.__str135)+2];var kr=Se[e]+3|0;Se[e]=kr;break r}while(0);Q(r,0|He.__str135,3)}else if(3==(0|o)){var ur=Se[a+4>>2];H(r,ur)}else H(r,a);while(0)}function J(r){var a=r+20|0,e=Se[a>>2];if((0|e)<(0|Se[r+24>>2])){var i=Se[r+16>>2]+12*e|0,v=e+1|0;Se[a>>2]=v;var t=i}else var t=0;var t;return t}function rr(r,a,e){var i,v,t,f,_=r>>2,s=e,t=s>>2,n=0;r:for(;;){var n,s,o=0==(0|s);do if(!o){if(0!=(0|Se[t+2]))break;var l=Se[Se[t+1]>>2];if(29==(0|l)||30==(0|l)){f=9;break r}if(22==(0|l)||23==(0|l)||24==(0|l)||28==(0|l)||31==(0|l)||32==(0|l)||37==(0|l)){var b=Se[_+1];f=12;break r}var s=Se[t],t=s>>2,n=1;continue r}while(0);if(0!=(0|Se[a+4>>2])&0==(0|n)){f=9;break}var k=0,u=r+4|0,v=u>>2;f=22;break}do if(9==f){var c=Se[_+1];if(0==(0|c)){f=17;break}var h=Se[_+2];if(0==(0|h)){var d=c;f=13;break}var w=Ae[c+(h-1)|0];if(w<<24>>24==40||w<<24>>24==42){f=18;break}var b=c;f=12;break}while(0);do if(12==f){var b;if(0==(0|b)){f=17;break}var d=b;f=13;break}while(0);do if(13==f){var d,p=r+8|0,E=Me[p>>2];if(0!=(0|E)&&Ae[d+(E-1)|0]<<24>>24==32){f=18;break}if(E>>>0>=Me[_+3]>>>0){f=17;break}Se[p>>2]=E+1|0,Ae[d+E|0]=32,f=18;break}while(0);do if(17==f){Y(r,32),f=18;break}while(0);r:do if(18==f){var A=r+4|0,g=Me[A>>2],y=0==(0|g);do if(!y){var m=r+8|0,S=Me[m>>2];if(S>>>0>=Me[_+3]>>>0)break;Se[m>>2]=S+1|0,Ae[g+S|0]=40;var k=1,u=A,v=u>>2;break r}while(0);Y(r,40);var k=1,u=A,v=u>>2}while(0);var u,k,i=(r+20|0)>>2,M=Se[i];Se[i]=0,vr(r,e,0);r:do if(k){var C=Me[v],R=0==(0|C);do if(!R){var T=r+8|0,O=Me[T>>2];if(O>>>0>=Me[_+3]>>>0)break;Se[T>>2]=O+1|0,Ae[C+O|0]=41;break r}while(0);Y(r,41)}while(0);var N=Me[v],I=0==(0|N);do{if(!I){var P=r+8|0,D=Me[P>>2];if(D>>>0>=Me[_+3]>>>0){f=30;break}Se[P>>2]=D+1|0,Ae[N+D|0]=40,f=31;break}f=30}while(0);30==f&&Y(r,40);var L=Se[a+8>>2];0!=(0|L)&&H(r,L);var F=Me[v],X=0==(0|F);do{if(!X){var j=r+8|0,U=Me[j>>2];if(U>>>0>=Me[_+3]>>>0){f=36;break}Se[j>>2]=U+1|0,Ae[F+U|0]=41,f=37;break}f=36}while(0);36==f&&Y(r,41),vr(r,e,1),Se[i]=M}function ar(r,a,e){var i,v,t,f=r>>2,_=0==(0|e);do{if(!_){var s=e,v=s>>2;r:for(;;){var s;if(0==(0|s)){var n=1;t=14;break}if(0==(0|Se[v+2])){var o=36==(0|Se[Se[v+1]>>2]),l=1&o^1;if(o){var n=l;t=14;break}var b=r+4|0,k=Me[b>>2],u=0==(0|k);do{if(!u){var i=(r+8|0)>>2,c=Me[i];if((c+2|0)>>>0>Me[f+3]>>>0){t=9;break}var h=k+c|0;oe=10272,Ae[h]=255&oe,oe>>=8,Ae[h+1]=255&oe;var d=Se[i]+2|0;Se[i]=d,vr(r,e,0),t=10;break}t=9}while(0);9==t&&(Q(r,0|He.__str140,2),vr(r,e,0));var w=Me[b>>2],p=0==(0|w);do if(!p){var E=r+8|0,A=Me[E>>2];if(A>>>0>=Me[f+3]>>>0)break;Se[E>>2]=A+1|0,Ae[w+A|0]=41;var g=l;t=15;break r}while(0);Y(r,41);var g=l;t=15;break}var s=Se[v],v=s>>2}if(14==t){var n;vr(r,e,0);var g=n}var g;if(0!=(0|g)){t=17;break}var y=r+4|0;t=21;break}t=17}while(0);r:do if(17==t){var m=r+4|0,S=Me[m>>2],M=0==(0|S);do if(!M){var C=r+8|0,R=Me[C>>2];if(R>>>0>=Me[f+3]>>>0)break;Se[C>>2]=R+1|0,Ae[S+R|0]=32;var y=m;break r}while(0);Y(r,32);var y=m}while(0);var y,T=Me[y>>2],O=0==(0|T);do{if(!O){var N=r+8|0,I=Me[N>>2];if(I>>>0>=Me[f+3]>>>0){t=24;break}Se[N>>2]=I+1|0,Ae[T+I|0]=91,t=25;break}t=24}while(0);24==t&&Y(r,91);var P=Se[a+4>>2];0!=(0|P)&&H(r,P);var D=Me[y>>2],L=0==(0|D);do{if(!L){var F=r+8|0,X=Me[F>>2];if(X>>>0>=Me[f+3]>>>0){t=30;break}Se[F>>2]=X+1|0,Ae[D+X|0]=93,t=31;break}t=30}while(0);30==t&&Y(r,93)}function er(r,a){var e,i,v,t,f,_,s=Oe;Oe+=8;var n,o=s,_=(a+4|0)>>2,l=Se[_];if(4==(0|Se[l>>2])){var f=(r+20|0)>>2,b=Se[f];Se[f]=0;var t=(r+16|0)>>2,k=Se[t],u=0|o;Se[u>>2]=k,Se[t]=o;var c=Se[_];Se[o+4>>2]=c;var h=Se[c+4>>2];H(r,h);var d=Se[u>>2];Se[t]=d;var v=(r+4|0)>>2,w=Me[v],p=0==(0|w);do{if(!p){var i=(r+8|0)>>2,E=Me[i],A=0==(0|E);do if(!A){if(Ae[w+(E-1)|0]<<24>>24!=60)break;E>>>0>2]>>>0?(Se[i]=E+1|0,Ae[w+E|0]=32):Y(r,32)}while(0);var g=Me[v];if(0==(0|g)){n=12;break}var y=Me[i];if(y>>>0>=Me[r+12>>2]>>>0){n=12;break}Se[i]=y+1|0,Ae[g+y|0]=60,n=13;break}n=12}while(0);12==n&&Y(r,60);var m=Se[Se[_]+8>>2];H(r,m);var S=Me[v],M=0==(0|S);do{if(!M){var e=(r+8|0)>>2,C=Me[e],R=0==(0|C);do if(!R){if(Ae[S+(C-1)|0]<<24>>24!=62)break;C>>>0>2]>>>0?(Se[e]=C+1|0,Ae[S+C|0]=32):Y(r,32)}while(0);var T=Me[v];if(0==(0|T)){n=22;break}var O=Me[e];if(O>>>0>=Me[r+12>>2]>>>0){n=22;break}Se[e]=O+1|0,Ae[T+O|0]=62,n=23;break}n=22}while(0);22==n&&Y(r,62),Se[f]=b}else H(r,l);Oe=s}function ir(r,a){var e,i=40==(0|Se[a>>2]);r:do if(i){var v=Me[r+4>>2],t=0==(0|v);do{if(!t){var e=(r+8|0)>>2,f=Me[e],_=a+4|0,s=Me[_>>2],n=Me[s+8>>2];if((n+f|0)>>>0>Me[r+12>>2]>>>0){var o=s,l=n;break}var b=v+f|0,k=Se[s+4>>2];Pa(b,k,n,1);var u=Se[e]+Se[Se[_>>2]+8>>2]|0;Se[e]=u;break r}var c=Me[a+4>>2],o=c,l=Se[c+8>>2]}while(0);var l,o,h=Se[o+4>>2];Q(r,h,l)}else H(r,a);while(0)}function vr(r,a,e){var i,v,t,f,_,f=(r+4|0)>>2,s=0==(0|e),t=(r+16|0)>>2;r:do if(s)for(var n=a;;){var n;if(0==(0|n)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var o=n+8|0,l=0==(0|Se[o>>2]);do if(l){var b=n+4|0;if((Se[Se[b>>2]>>2]-25|0)>>>0<3)break;Se[o>>2]=1;var k=Me[t],u=Se[n+12>>2];Se[t]=u;var c=Me[b>>2],h=Se[c>>2];if(35==(0|h)){var d=n,w=k,p=c;_=14;break r}if(36==(0|h)){var E=n,A=k,g=c;_=15;break r}if(2==(0|h)){var y=k,m=b;_=16;break r}$(r,c),Se[t]=k}while(0);var n=Se[n>>2]}else for(var S=a;;){var S;if(0==(0|S)){_=29;break r}if(0==(0|Se[f])){_=29;break r}var M=S+8|0;if(0==(0|Se[M>>2])){Se[M>>2]=1;var C=Me[t],R=Se[S+12>>2];Se[t]=R;var T=S+4|0,O=Me[T>>2],N=Se[O>>2];if(35==(0|N)){var d=S,w=C,p=O;_=14;break r}if(36==(0|N)){var E=S,A=C,g=O;_=15;break r}if(2==(0|N)){var y=C,m=T;_=16;break r}$(r,O),Se[t]=C}var S=Se[S>>2]}while(0);if(14==_){var p,w,d,I=Se[d>>2];rr(r,p,I),Se[t]=w}else if(15==_){var g,A,E,P=Se[E>>2];ar(r,g,P),Se[t]=A}else if(16==_){var m,y,v=(r+20|0)>>2,D=Se[v];Se[v]=0;var L=Se[Se[m>>2]+4>>2];H(r,L),Se[v]=D;var F=0==(4&Se[r>>2]|0),X=Me[f],j=0!=(0|X);r:do if(F){do if(j){var i=(r+8|0)>>2,U=Me[i];if((U+2|0)>>>0>Me[r+12>>2]>>>0)break;var x=X+U|0;oe=14906,Ae[x]=255&oe,oe>>=8,Ae[x+1]=255&oe;var z=Se[i]+2|0;Se[i]=z;break r}while(0);Q(r,0|He.__str120,2)}else{do if(j){var V=r+8|0,B=Me[V>>2];if(B>>>0>=Me[r+12>>2]>>>0)break;Se[V>>2]=B+1|0,Ae[X+B|0]=46;break r}while(0);Y(r,46)}while(0);var K=Me[Se[m>>2]+8>>2],G=(Se[K>>2]-25|0)>>>0<3;r:do if(G)for(var W=K;;){var W,Z=Me[W+4>>2];if((Se[Z>>2]-25|0)>>>0>=3){var q=Z;break r}var W=Z}else var q=K;while(0);var q;H(r,q),Se[t]=y}}function tr(r,a){var e,e=(r+4|0)>>2,i=Se[e],v=0==(0|i);r:do if(!v){for(var t=Se[r+8>>2]+a|0,f=r+12|0,_=Se[f>>2],s=i;;){var s,_;if(t>>>0<=_>>>0)break r;var n=_<<1,o=fa(s,n);if(0==(0|o))break;Se[e]=o,Se[f>>2]=n;var _=n,s=o}var l=Se[e];va(l),Se[e]=0,Se[r+24>>2]=1}while(0)}function fr(r,a,e){var i,v=J(r),i=v>>2;return 0!=(0|v)&&(Se[i]=21,Se[i+1]=a,Se[i+2]=e),v}function _r(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;if(88==(0|i)){var v=e+1|0;Se[a]=v;var t=nr(r),f=Se[a],_=f+1|0;Se[a]=_;var s=Ae[f]<<24>>24==69?t:0,n=s}else if(76==(0|i))var o=or(r),n=o;else var l=N(r),n=l;var n;return n}function sr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==110){var v=e+1|0;Se[a]=v;var t=1,f=Ae[v],_=v}else var t=0,f=i,_=e;var _,f,t,s=(f-48&255&255)<10;r:do if(s)for(var n=f,o=0,l=_;;){var l,o,n,b=(n<<24>>24)-48+10*o|0,k=l+1|0;Se[a]=k;var u=ge[k];if((u-48&255&255)>=10){var c=b;break r}var n=u,o=b,l=k}else var c=0;while(0);var c,h=0==(0|t)?c:0|-c;return h}function nr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=Ae[i];do{if(v<<24>>24==76){var t=or(r),f=t;e=21;break}if(v<<24>>24==84){var _=x(r),f=_;e=21;break}if(v<<24>>24==115){if(Ae[i+1|0]<<24>>24!=114){e=8;break}var s=i+2|0;Se[a]=s;var n=N(r),o=br(r);if(Ae[Se[a]]<<24>>24==73){var l=z(r),b=D(r,4,o,l),k=D(r,1,n,b),f=k;e=21;break}var u=D(r,1,n,o),f=u;e=21;break}e=8}while(0);r:do if(8==e){var c=kr(r);if(0==(0|c)){var f=0;break}var h=0|c,d=Se[h>>2],w=40==(0|d);do{if(w){var p=c+4|0,E=r+48|0,A=Se[Se[p>>2]+8>>2]-2+Se[E>>2]|0;Se[E>>2]=A;var g=Se[h>>2];if(40!=(0|g)){var y=g;e=13;break}var m=Se[p>>2],S=Se[m>>2],M=Da(S,0|He.__str90);if(0!=(0|M)){var C=m;e=15;break}var R=N(r),T=D(r,43,c,R),f=T;break r}var y=d;e=13}while(0);do if(13==e){var y;if(40==(0|y)){var C=Se[c+4>>2];e=15;break}if(41==(0|y)){var O=c+4|0;e=17;break}if(42==(0|y)){e=18;break}var f=0;break r}while(0);do if(15==e){var C,O=C+12|0;e=17;break}while(0);do if(17==e){var O,I=Se[O>>2];if(1==(0|I))break;if(2==(0|I)){var P=nr(r),L=nr(r),F=D(r,45,P,L),X=D(r,44,c,F);return X}if(3==(0|I)){var j=nr(r),U=nr(r),V=nr(r),B=D(r,48,U,V),H=D(r,47,j,B),K=D(r,46,c,H);return K}var f=0;break r}while(0);var Y=nr(r),G=D(r,43,c,Y);return G}while(0);var f;return f}function or(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==76;r:do if(v){if(Ae[i]<<24>>24==95)var t=T(r,0),f=t;else{var _=N(r);if(0==(0|_)){var s=0;break}var n=33==(0|Se[_>>2]);do if(n){var o=Se[_+4>>2];if(0==(0|Se[o+16>>2]))break;var l=r+48|0,b=Se[l>>2]-Se[o+4>>2]|0;Se[l>>2]=b}while(0);var k=Se[a];if(Ae[k]<<24>>24==110){var u=k+1|0;Se[a]=u;var c=50,h=u}else var c=49,h=k;for(var h,c,d=h;;){var d,w=Ae[d];if(w<<24>>24==69)break;if(w<<24>>24==0){var s=0;break r}var p=d+1|0;Se[a]=p;var d=p}var E=lr(r,h,d-h|0),A=D(r,c,_,E),f=A}var f,g=Se[a],y=g+1|0;Se[a]=y;var m=Ae[g]<<24>>24==69?f:0,s=m}else var s=0;while(0);var s;return s}function lr(r,a,e){var i=J(r),v=m(i,a,e),t=0==(0|v)?0:i;return t}function br(r){var a=r+12|0,e=Me[a>>2],i=ge[e],v=(i-48&255&255)<10;do if(v)var t=L(r),f=t;else if((i-97&255&255)<26){var _=kr(r);if(0==(0|_)){var f=0;break}if(40!=(0|Se[_>>2])){var f=_;break}var s=r+48|0,n=Se[Se[_+4>>2]+8>>2]+Se[s>>2]+7|0;Se[s>>2]=n;var f=_}else if(i<<24>>24==67||i<<24>>24==68)var o=hr(r),f=o;else{if(i<<24>>24!=76){var f=0;break}Se[a>>2]=e+1|0;var l=L(r);if(0==(0|l)){var f=0;break}var b=dr(r),k=0==(0|b)?0:l,f=k}while(0);var f;return f}function kr(r){var a,e,a=(r+12|0)>>2,i=Se[a],v=i+1|0;Se[a]=v;var t=ge[i],f=i+2|0;Se[a]=f;var _=ge[v];do{if(t<<24>>24==118){if((_-48&255&255)>=10){var s=49,n=0;e=6;break}var o=(_<<24>>24)-48|0,l=L(r),b=ur(r,o,l),k=b;e=14;break}if(t<<24>>24==99){if(_<<24>>24!=118){var s=49,n=0;e=6;break}var u=N(r),c=D(r,42,u,0),k=c;e=14;break}var s=49,n=0;e=6}while(0);r:do if(6==e){for(;;){var n,s,h=(s-n)/2+n|0,d=(h<<4)+ri|0,w=Se[d>>2],p=Ae[w],E=t<<24>>24==p<<24>>24;if(E&&_<<24>>24==Ae[w+1|0]<<24>>24)break;var A=t<<24>>24>24;do if(A)var g=h,y=n;else{if(E&&_<<24>>24>24){var g=h,y=n;break}var g=s,y=h+1|0}while(0);var y,g;if((0|y)==(0|g)){var k=0;break r}var s=g,n=y}var m=cr(r,d),k=m}while(0);var k;return k}function ur(r,a,e){var i=J(r),v=S(i,a,e),t=0==(0|v)?0:i;return t}function cr(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=40,Se[e+4>>2]=a),e}function hr(r){var a,e,i=Se[r+44>>2],e=i>>2,v=0==(0|i);do if(!v){var t=Se[e];if(0==(0|t)){var f=r+48|0,_=Se[f>>2]+Se[e+2]|0;Se[f>>2]=_}else{if(21!=(0|t))break;var s=r+48|0,n=Se[s>>2]+Se[e+2]|0;Se[s>>2]=n}}while(0);var a=(r+12|0)>>2,o=Se[a],l=o+1|0;Se[a]=l;var b=Ae[o]<<24>>24;do if(67==(0|b)){var k=o+2|0;Se[a]=k;var u=Ae[l]<<24>>24;if(49==(0|u))var c=1;else if(50==(0|u))var c=2;else{if(51!=(0|u)){var h=0;break}var c=3}var c,d=wr(r,c,i),h=d}else if(68==(0|b)){var w=o+2|0;Se[a]=w;var p=Ae[l]<<24>>24;if(48==(0|p))var E=1;else if(49==(0|p))var E=2;else{if(50!=(0|p)){var h=0;break}var E=3}var E,A=pr(r,E,i),h=A}else var h=0;while(0);var h;return h}function dr(r){var a=r+12|0,e=Se[a>>2];if(Ae[e]<<24>>24==95){var i=e+1|0;Se[a>>2]=i;var v=sr(r),t=v>>>31^1}else var t=1;var t;return t}function wr(r,a,e){var i=J(r),v=M(i,a,e),t=0==(0|v)?0:i;return t}function pr(r,a,e){var i=J(r),v=C(i,a,e),t=0==(0|v)?0:i;return t}function Er(r,a){var e=J(r);return 0!=(0|e)&&(Se[e>>2]=5,Se[e+4>>2]=a),e}function Ar(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e]<<24>>24;do if(78==(0|i))var v=gr(r),t=v;else if(90==(0|i))var f=yr(r),t=f;else if(76==(0|i))var _=br(r),t=_;else if(83==(0|i)){if(Ae[e+1|0]<<24>>24==116){var s=e+2|0;Se[a]=s;var n=lr(r,0|He.__str152,3),o=br(r),l=D(r,1,n,o),b=r+48|0,k=Se[b>>2]+3|0;Se[b>>2]=k;var u=0,c=l}else var h=V(r,0),u=1,c=h;var c,u;if(Ae[Se[a]]<<24>>24!=73){var t=c;break}if(0==(0|u)){var d=R(r,c);if(0==(0|d)){var t=0;break}}var w=z(r),p=D(r,4,c,w),t=p}else{var E=br(r);if(Ae[Se[a]]<<24>>24!=73){var t=E;break}var A=R(r,E);if(0==(0|A)){var t=0;break}var g=z(r),y=D(r,4,E,g),t=y}while(0);var t;return t}function gr(r){var a,e=Oe;Oe+=4;var i=e,a=(r+12|0)>>2,v=Se[a],t=v+1|0;Se[a]=t;var f=Ae[v]<<24>>24==78;do if(f){var _=I(r,i,1);if(0==(0|_)){var s=0;break}var n=mr(r);if(Se[_>>2]=n,0==(0|n)){var s=0;break}var o=Se[a],l=o+1|0;if(Se[a]=l,Ae[o]<<24>>24!=69){var s=0;break}var s=Se[i>>2]}else var s=0;while(0);var s;return Oe=e,s}function yr(r){var a,a=(r+12|0)>>2,e=Se[a],i=e+1|0;Se[a]=i;var v=Ae[e]<<24>>24==90;do if(v){var t=O(r,0),f=Se[a],_=f+1|0;if(Se[a]=_,Ae[f]<<24>>24!=69){var s=0;break}if(Ae[_]<<24>>24==115){var n=f+2|0;Se[a]=n;var o=dr(r);if(0==(0|o)){var s=0;break}var l=lr(r,0|He.__str168,14),b=D(r,2,t,l),s=b}else{var k=Ar(r),u=dr(r);if(0==(0|u)){var s=0;break}var c=D(r,2,t,k),s=c}}else var s=0;while(0);var s;return s}function mr(r){var a,e=r+12|0,i=0;r:for(;;){var i,v=ge[Se[e>>2]];if(v<<24>>24==0){var t=0;break}var f=(v-48&255&255)<10|(v-97&255&255)<26;do{if(!f){if(v<<24>>24==76||v<<24>>24==68||v<<24>>24==67){a=5;break}if(v<<24>>24==83){var _=V(r,1),s=_;a=10;break}if(v<<24>>24==73){if(0==(0|i)){var t=0;break r}var n=z(r),o=4,l=n;a=11;break}if(v<<24>>24==84){var b=x(r),s=b;a=10;break}if(v<<24>>24==69){var t=i;break r}var t=0;break r}a=5}while(0);do if(5==a){var k=br(r),s=k;a=10;break}while(0);do if(10==a){var s;if(0==(0|i)){var u=s;a=12;break}var o=1,l=s;a=11;break}while(0);if(11==a)var l,o,c=D(r,o,i,l),u=c;var u;if(v<<24>>24!=83)if(Ae[Se[e>>2]]<<24>>24!=69){var h=R(r,u);if(0==(0|h)){var t=0;break}var i=u}else var i=u;else var i=u}var t;return t}function Sr(r,a){var e,i,v=Oe;Oe+=4;var t=v,i=t>>2,e=(r+12|0)>>2,f=Se[e];if(Ae[f]<<24>>24==74){var _=f+1|0;Se[e]=_;var s=1}else var s=a;var s;Se[i]=0;var n=s,o=0,l=t;r:for(;;)for(var l,o,n,b=n,k=o;;){var k,b,u=Ae[Se[e]];if(u<<24>>24==0||u<<24>>24==69){var c=Se[i];if(0==(0|c)){var h=0;break r}var d=0==(0|Se[c+8>>2]);do if(d){var w=Se[c+4>>2];if(33!=(0|Se[w>>2])){var p=c;break}var E=Se[w+4>>2];if(9!=(0|Se[E+16>>2])){var p=c;break}var A=r+48|0,g=Se[A>>2]-Se[E+4>>2]|0;Se[A>>2]=g,Se[i]=0;var p=0}else var p=c;while(0);var p,y=D(r,35,k,p),h=y;break r}var m=N(r);if(0==(0|m)){var h=0;break r}if(0==(0|b)){var S=D(r,38,m,0);if(Se[l>>2]=S,0==(0|S)){var h=0;break r}var n=0,o=k,l=S+8|0;continue r}var b=0,k=m}var h;return Oe=v,h}function Mr(r){for(var a=r;;){var a;if(0==(0|a)){var e=0;break}var i=Se[a>>2];if(1!=(0|i)&&2!=(0|i)){if(6==(0|i)||7==(0|i)||42==(0|i)){var e=1;break}var e=0;break}var a=Se[a+8>>2]}var e;return e}function Cr(r){var a=r>>2;Se[a+3]=0,Se[a+2]=0,Se[a+1]=0,Se[a]=0,Se[a+4]=0}function Rr(r,a){var e,e=(r+12|0)>>2,i=Se[e],v=(Se[r+4>>2]-i|0)<(0|a);r:do if(v)var t=0;else{var f=i+a|0;Se[e]=f;var _=0==(4&Se[r+8>>2]|0);do if(!_){if(Ae[f]<<24>>24!=36)break;var s=a+(i+1)|0;Se[e]=s}while(0);var n=(0|a)>9;do if(n){var o=La(i,0|He.__str117,8);if(0!=(0|o))break;var l=Ae[i+8|0];if(l<<24>>24!=46&&l<<24>>24!=95&&l<<24>>24!=36)break;if(Ae[i+9|0]<<24>>24!=78)break;var b=r+48|0,k=22-a+Se[b>>2]|0;Se[b>>2]=k;var u=lr(r,0|He.__str169,21),t=u;break r}while(0);var c=lr(r,i,a),t=c}while(0);var t;return t}function Tr(r){var a,e,e=(r+48|0)>>2,i=Se[e],v=i+20|0;Se[e]=v;var a=(r+12|0)>>2,t=Se[a],f=t+1|0;Se[a]=f;var _=Ae[t];do if(_<<24>>24==84){var s=t+2|0;Se[a]=s;var n=Ae[f]<<24>>24;if(86==(0|n)){var o=i+15|0;Se[e]=o;var l=N(r),b=D(r,8,l,0),k=b}else if(84==(0|n)){var u=i+10|0;Se[e]=u;var c=N(r),h=D(r,9,c,0),k=h}else if(73==(0|n))var d=N(r),w=D(r,11,d,0),k=w;else if(83==(0|n))var p=N(r),E=D(r,12,p,0),k=E;else if(104==(0|n)){var A=Nr(r,104);if(0==(0|A)){var k=0;break}var g=O(r,0),y=D(r,14,g,0),k=y}else if(118==(0|n)){var m=Nr(r,118);if(0==(0|m)){var k=0;break}var S=O(r,0),M=D(r,15,S,0),k=M}else if(99==(0|n)){var C=Nr(r,0);if(0==(0|C)){var k=0;break}var R=Nr(r,0);if(0==(0|R)){var k=0;break}var T=O(r,0),I=D(r,16,T,0),k=I}else if(67==(0|n)){var P=N(r),L=sr(r);if((0|L)<0){var k=0;break}var F=Se[a],X=F+1|0;if(Se[a]=X,Ae[F]<<24>>24!=95){var k=0;break}var j=N(r),U=Se[e]+5|0;Se[e]=U;var x=D(r,10,j,P),k=x}else if(70==(0|n))var z=N(r),V=D(r,13,z,0),k=V;else{if(74!=(0|n)){var k=0;break}var B=N(r),H=D(r,17,B,0),k=H}}else if(_<<24>>24==71){var K=t+2|0;Se[a]=K;var Y=Ae[f]<<24>>24;if(86==(0|Y))var G=Ar(r),W=D(r,18,G,0),k=W;else if(82==(0|Y))var Z=Ar(r),Q=D(r,19,Z,0),k=Q;else{if(65!=(0|Y)){var k=0;break}var q=O(r,0),$=D(r,20,q,0),k=$}}else var k=0;while(0);var k;return k}function Or(r){for(var a,e=r,a=e>>2;;){var e;if(0==(0|e)){var i=0;break}var v=Se[a];if(4==(0|v)){var t=Se[a+1],f=Mr(t),i=0==(0|f)&1;break}if(25!=(0|v)&&26!=(0|v)&&27!=(0|v)){var i=0;break}var e=Se[a+1],a=e>>2}var i;return i}function Nr(r,a){var e;if(0==(0|a)){var i=r+12|0,v=Se[i>>2],t=v+1|0;Se[i>>2]=t;var f=Ae[v]<<24>>24}else var f=a;var f;do{if(104==(0|f)){var _=(sr(r),r+12|0);e=7;break}if(118==(0|f)){var s=(sr(r),r+12|0),n=Se[s>>2],o=n+1|0;if(Se[s>>2]=o,Ae[n]<<24>>24!=95){var l=0;e=8;break}var _=(sr(r),s);e=7;break}var l=0;e=8}while(0);if(7==e){var _,b=Se[_>>2],k=b+1|0;Se[_>>2]=k;var l=Ae[b]<<24>>24==95&1}var l;return l}function Ir(r){var a,e,i=r>>2,v=Oe;Oe+=56;var t,f=v,_=v+8,s=v+16,n=v+36,e=(0|r)>>2,o=Se[e],l=0==(8192&o|0);r:do{if(l){var a=(r+12|0)>>2,b=Se[a];if(Ae[b]<<24>>24!=63){var k=0;t=111;break}var u=b+1|0;Se[a]=u;var c=Ae[u];do if(c<<24>>24==63){if(Ae[b+2|0]<<24>>24==36){var h=b+3|0;if(Ae[h]<<24>>24!=63){var d=5;t=90;break}Se[a]=h;var w=6,p=h}else var w=0,p=u;var p,w,E=p+1|0;Se[a]=E;var A=Ae[E]<<24>>24;do if(48==(0|A)){var g=1;t=81}else{if(49==(0|A)){var g=2;t=81;break}if(50!=(0|A)){if(51==(0|A)){var y=0|He.__str2172,m=E;t=82;break}if(52==(0|A)){var y=0|He.__str3173,m=E;t=82;break}if(53==(0|A)){var y=0|He.__str4174,m=E;t=82;break}if(54==(0|A)){var y=0|He.__str5175,m=E;t=82;break}if(55==(0|A)){var y=0|He.__str6176,m=E;t=82;break}if(56==(0|A)){var y=0|He.__str7177,m=E;t=82;break}if(57==(0|A)){var y=0|He.__str8178,m=E;t=82;break}if(65==(0|A)){var y=0|He.__str9179,m=E;t=82;break}if(66==(0|A)){Se[a]=p+2|0;var S=0|He.__str10180,M=3;t=88;break}if(67==(0|A)){var y=0|He.__str11181,m=E;t=82;break}if(68==(0|A)){var y=0|He.__str12182,m=E;t=82;break}if(69==(0|A)){var y=0|He.__str13183,m=E;t=82;break}if(70==(0|A)){var y=0|He.__str14184,m=E;t=82;break}if(71==(0|A)){var y=0|He.__str15185,m=E;t=82;break}if(72==(0|A)){var y=0|He.__str16186,m=E;t=82;break}if(73==(0|A)){var y=0|He.__str17187,m=E;t=82;break}if(74==(0|A)){var y=0|He.__str18188,m=E;t=82;break}if(75==(0|A)){var y=0|He.__str19189,m=E;t=82;break}if(76==(0|A)){var y=0|He.__str20190,m=E;t=82;break}if(77==(0|A)){var y=0|He.__str21191,m=E;t=82;break}if(78==(0|A)){var y=0|He.__str22192,m=E;t=82;break}if(79==(0|A)){var y=0|He.__str23193,m=E;t=82;break}if(80==(0|A)){var y=0|He.__str24194,m=E;t=82;break}if(81==(0|A)){var y=0|He.__str25195,m=E;t=82;break}if(82==(0|A)){var y=0|He.__str26196,m=E;t=82;break}if(83==(0|A)){var y=0|He.__str27197,m=E;t=82;break}if(84==(0|A)){var y=0|He.__str28198,m=E;t=82;break}if(85==(0|A)){var y=0|He.__str29199,m=E;t=82;break}if(86==(0|A)){var y=0|He.__str30200,m=E;t=82;break}if(87==(0|A)){var y=0|He.__str31201,m=E;t=82;break}if(88==(0|A)){var y=0|He.__str32202,m=E;t=82;break}if(89==(0|A)){var y=0|He.__str33203,m=E;t=82;break}if(90==(0|A)){var y=0|He.__str34204,m=E;t=82;break}if(95==(0|A)){var C=p+2|0;Se[a]=C;var R=Ae[C]<<24>>24;if(48==(0|R)){var y=0|He.__str35205,m=C;t=82;break}if(49==(0|R)){var y=0|He.__str36206,m=C;t=82;break}if(50==(0|R)){var y=0|He.__str37207,m=C;t=82;break}if(51==(0|R)){var y=0|He.__str38208,m=C;t=82;break}if(52==(0|R)){var y=0|He.__str39209,m=C;t=82;break}if(53==(0|R)){var y=0|He.__str40210,m=C;t=82;break}if(54==(0|R)){var y=0|He.__str41211,m=C;t=82;break}if(55==(0|R)){var y=0|He.__str42212,m=C;t=82;break}if(56==(0|R)){var y=0|He.__str43213,m=C;t=82;break}if(57==(0|R)){var y=0|He.__str44214,m=C;t=82;break}if(65==(0|R)){var y=0|He.__str45215,m=C;t=82;break}if(66==(0|R)){var y=0|He.__str46216,m=C;t=82;break}if(67==(0|R)){Se[a]=p+3|0;var T=0|He.__str47217;t=84;break}if(68==(0|R)){var y=0|He.__str48218,m=C;t=82;break}if(69==(0|R)){var y=0|He.__str49219,m=C;t=82;break}if(70==(0|R)){var y=0|He.__str50220,m=C;t=82;break}if(71==(0|R)){var y=0|He.__str51221,m=C;t=82;break}if(72==(0|R)){var y=0|He.__str52222,m=C;t=82;break}if(73==(0|R)){var y=0|He.__str53223,m=C;t=82;break}if(74==(0|R)){var y=0|He.__str54224,m=C;t=82;break}if(75==(0|R)){var y=0|He.__str55225,m=C;t=82;break}if(76==(0|R)){var y=0|He.__str56226,m=C;t=82;break}if(77==(0|R)){var y=0|He.__str57227,m=C;t=82;break}if(78==(0|R)){var y=0|He.__str58228,m=C;t=82;break}if(79==(0|R)){var y=0|He.__str59229,m=C;t=82;break}if(82==(0|R)){var O=4|o;Se[e]=O;var N=p+3|0;Se[a]=N;var I=Ae[N]<<24>>24;if(48==(0|I)){Se[a]=p+4|0,Cr(s);var P=(Pr(r,_,s,0),Se[_>>2]),D=Se[_+4>>2],L=Dr(r,0|He.__str60230,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=D,ne)),F=Se[a]-1|0;Se[a]=F;var y=L,m=F;t=82;break}if(49==(0|I)){Se[a]=p+4|0;var X=Lr(r),j=Lr(r),U=Lr(r),x=Lr(r),z=Se[a]-1|0;Se[a]=z;var V=Dr(r,0|He.__str61231,(ne=Oe,Oe+=16,Se[ne>>2]=X,Se[ne+4>>2]=j,Se[ne+8>>2]=U,Se[ne+12>>2]=x,ne)),y=V,m=Se[a];t=82;break}if(50==(0|I)){var y=0|He.__str62232,m=N;t=82;break}if(51==(0|I)){var y=0|He.__str63233,m=N;t=82;break}if(52==(0|I)){var y=0|He.__str64234,m=N;t=82;break}var y=0,m=N;t=82;break}if(83==(0|R)){var y=0|He.__str65235,m=C;t=82;break}if(84==(0|R)){var y=0|He.__str66236,m=C;t=82;break}if(85==(0|R)){var y=0|He.__str67237,m=C;t=82;break}if(86==(0|R)){var y=0|He.__str68238,m=C;t=82;break}if(88==(0|R)){var y=0|He.__str69239,m=C;t=82;break}if(89==(0|R)){var y=0|He.__str70240,m=C;t=82;break}var k=0;t=111;break r}var k=0;t=111;break r}var y=0|He.__str1171,m=E;t=82}while(0);do{if(81==t){var g;Se[a]=p+2|0;var B=g;t=83;break}if(82==t){var m,y;if(Se[a]=m+1|0,1==(0|w)||2==(0|w)){var B=w;t=83;break}if(4==(0|w)){var T=y;t=84;break}if(6!=(0|w)){var S=y,M=w;t=88;break}Cr(n);var H=Xr(r,n,0,60,62);if(0==(0|H))var K=y;else var Y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=y,Se[ne+4>>2]=H,ne)),K=Y;var K;Se[i+6]=0;var S=K,M=w;t=88;break}}while(0);if(83==t){var B,G=r+40|0,W=Fr(r,0|He._symbol_demangle_dashed_null,-1,G);if(0==(0|W)){var k=0;t=111;break r}var d=B;t=90;break}if(84==t){var T;Se[i+4]=T;var Z=1,Q=T;t=109;break r}if(88==t){var M,S,q=r+40|0,$=Fr(r,S,-1,q);if(0==(0|$)){var k=0;t=111;break r}var d=M;t=90;break}}else{if(c<<24>>24==36){var J=b+2|0;Se[a]=J;var rr=jr(r);Se[i+4]=rr;var ar=0!=(0|rr)&1;t=107;break}var d=0;t=90}while(0);if(90==t){var d,er=Me[a],ir=Ae[er]<<24>>24;if(64==(0|ir))Se[a]=er+1|0;else if(36==(0|ir))t=93;else{var vr=zr(r);if(0==(0|vr)){var k=-1;t=111;break}}if(5==(0|d)){var tr=r+20|0,fr=Se[tr>>2]+1|0;Se[tr>>2]=fr}else if(1==(0|d)||2==(0|d)){if(Me[i+11]>>>0<2){var k=-1;t=111;break}var _r=r+56|0,sr=Me[_r>>2],nr=Se[sr+4>>2];if(1==(0|d))Se[sr>>2]=nr;else{var or=Dr(r,0|He.__str71241,(ne=Oe,Oe+=4,Se[ne>>2]=nr,ne)),lr=Se[_r>>2];Se[lr>>2]=or}var br=4|Se[e];Se[e]=br}else if(3==(0|d)){var kr=Se[e]&-5;Se[e]=kr}var ur=ge[Se[a]];if((ur-48&255&255)<10)var cr=Vr(r),ar=cr;else if((ur-65&255&255)<26)var hr=Br(r,3==(0|d)&1),ar=hr;else{if(ur<<24>>24!=36){var k=-1;t=111;break}var dr=Hr(r),ar=dr}}var ar;if(0==(0|ar)){var k=-1;t=111;break}var Z=ar,Q=Se[i+4];t=109;break}var wr=Pr(r,f,0,0);if(0==(0|wr)){var k=-1;t=111;break}var pr=Se[f>>2],Er=Se[f+4>>2],Ar=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=pr,Se[ne+4>>2]=Er,ne));Se[i+4]=Ar;var Z=1,Q=Ar;t=109;break}while(0);do if(109==t){var Q,Z;if(0!=(0|Q)){var k=Z;break}Xa(0|He.__str72242,1499,0|He.___func___symbol_demangle,0|He.__str73243);var k=Z}while(0);var k;return Oe=v,k}function Pr(r,a,e,i){var v,t,f,_=Oe;Oe+=24;var s=_,n=_+4,o=_+8,l=_+16,b=_+20;0==(0|a)&&Xa(0|He.__str72242,829,0|He.___func___demangle_datatype,0|He.__str121291);var f=(a+4|0)>>2;Se[f]=0;var t=(0|a)>>2;Se[t]=0;var v=(r+12|0)>>2,k=Me[v],u=k+1|0;Se[v]=u;var c=Ae[k],h=c<<24>>24;do if(95==(0|h)){Se[v]=k+2|0;var d=Ae[u],w=Zr(d);Se[t]=w}else if(67==(0|h)||68==(0|h)||69==(0|h)||70==(0|h)||71==(0|h)||72==(0|h)||73==(0|h)||74==(0|h)||75==(0|h)||77==(0|h)||78==(0|h)||79==(0|h)||88==(0|h)||90==(0|h)){var p=Qr(c);Se[t]=p}else if(84==(0|h)||85==(0|h)||86==(0|h)||89==(0|h)){var E=qr(r);if(0==(0|E))break;var A=0==(32768&Se[r>>2]|0);do if(A)if(84==(0|h))var g=0|He.__str122292;else if(85==(0|h))var g=0|He.__str123293;else if(86==(0|h))var g=0|He.__str124294;else{if(89!=(0|h)){var g=0;break}var g=0|He.__str125295}else var g=0;while(0);var g,y=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=g,Se[ne+4>>2]=E,ne));Se[t]=y}else if(63==(0|h))if(0==(0|i))$r(a,r,e,63,0);else{var m=Lr(r);if(0==(0|m))break;var S=Dr(r,0|He.__str126296,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne));Se[t]=S}else if(65==(0|h)||66==(0|h))$r(a,r,e,c,i);else if(81==(0|h)||82==(0|h)||83==(0|h)){var M=0==(0|i)?80:c;$r(a,r,e,M,i)}else if(80==(0|h))if(((Ae[u]<<24>>24)-48|0)>>>0<10){var C=k+2|0;if(Se[v]=C,Ae[u]<<24>>24!=54)break;var R=r+44|0,T=Se[R>>2];Se[v]=k+3|0;var O=Ae[C],N=Se[r>>2]&-17,I=Ur(O,s,n,N);if(0==(0|I))break;var P=Pr(r,o,e,0);if(0==(0|P))break;var D=Xr(r,e,1,40,41);if(0==(0|D))break;Se[R>>2]=T;var L=Se[o>>2],F=Se[o+4>>2],X=Se[s>>2],j=Dr(r,0|He.__str127297,(ne=Oe,Oe+=12,Se[ne>>2]=L,Se[ne+4>>2]=F,Se[ne+8>>2]=X,ne));Se[t]=j;var U=Dr(r,0|He.__str128298,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[f]=U}else $r(a,r,e,80,i);else if(87==(0|h)){if(Ae[u]<<24>>24!=52)break;Se[v]=k+2|0;var x=qr(r);if(0==(0|x))break;if(0==(32768&Se[r>>2]|0)){var z=Dr(r,0|He.__str129299,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne));Se[t]=z}else Se[t]=x}else if(48==(0|h)||49==(0|h)||50==(0|h)||51==(0|h)||52==(0|h)||53==(0|h)||54==(0|h)||55==(0|h)||56==(0|h)||57==(0|h)){var V=h<<1,B=V-96|0,H=Yr(e,B);Se[t]=H;var K=V-95|0,Y=Yr(e,K);Se[f]=Y}else if(36==(0|h)){var G=k+2|0;Se[v]=G;var W=Ae[u]<<24>>24;if(48==(0|W)){var Z=Lr(r);Se[t]=Z}else if(68==(0|W)){var Q=Lr(r);if(0==(0|Q))break;var q=Dr(r,0|He.__str130300,(ne=Oe,Oe+=4,Se[ne>>2]=Q,ne));Se[t]=q}else if(70==(0|W)){var $=Lr(r);if(0==(0|$))break;var J=Lr(r);if(0==(0|J))break;var rr=Dr(r,0|He.__str131301,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=J,ne));Se[t]=rr}else if(71==(0|W)){var ar=Lr(r);if(0==(0|ar))break;var er=Lr(r);if(0==(0|er))break;var ir=Lr(r);if(0==(0|ir))break;var vr=Dr(r,0|He.__str132302,(ne=Oe,Oe+=12,Se[ne>>2]=ar,Se[ne+4>>2]=er,Se[ne+8>>2]=ir,ne));Se[t]=vr}else if(81==(0|W)){var tr=Lr(r);if(0==(0|tr))break;var fr=Dr(r,0|He.__str133303,(ne=Oe,Oe+=4,Se[ne>>2]=tr,ne));Se[t]=fr}else{if(36!=(0|W))break;if(Ae[G]<<24>>24!=67)break;Se[v]=k+3|0;var _r=xr(r,l,b);if(0==(0|_r))break;var sr=Pr(r,a,e,i);if(0==(0|sr))break;var nr=Se[t],or=Se[l>>2],lr=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=nr,Se[ne+4>>2]=or,ne));Se[t]=lr}}while(0);var br=0!=(0|Se[t])&1;return Oe=_,br}function Dr(r,a){var e,i=Oe;Oe+=4;var v=i,e=v>>2,t=v;Se[t>>2]=arguments[Dr.length];var f=1,_=0;r:for(;;){var _,f,s=Ae[a+_|0];do{if(s<<24>>24==0)break r;if(s<<24>>24==37){var n=_+1|0,o=Ae[a+n|0]<<24>>24;if(115==(0|o)){var l=Se[e],b=l,k=l+4|0;Se[e]=k;var u=Se[b>>2];if(0==(0|u)){var c=f,h=n;break}var d=Ca(u),c=d+f|0,h=n;break}if(99==(0|o)){var w=Se[e]+4|0;Se[e]=w;var c=f+1|0,h=n;break}if(37==(0|o))var p=n;else var p=_;var p,c=f+1|0,h=p}else var c=f+1|0,h=_}while(0);var h,c,f=c,_=h+1|0}var E=Wr(r,f);if(0==(0|E))var A=0;else{Se[t>>2]=arguments[Dr.length];var g=E,y=0;r:for(;;){var y,g,m=Ae[a+y|0];do{if(m<<24>>24==0)break r;if(m<<24>>24==37){var S=y+1|0,M=Ae[a+S|0]<<24>>24;if(115==(0|M)){var C=Se[e],R=C,T=C+4|0;Se[e]=T;var O=Se[R>>2];if(0==(0|O)){var N=g,I=S;break}var P=Ca(O);Pa(g,O,P,1);var N=g+P|0,I=S;break}if(99==(0|M)){var D=Se[e],L=D,F=D+4|0;Se[e]=F,Ae[g]=255&Se[L>>2];var N=g+1|0,I=S;break}if(37==(0|M))var X=S;else var X=y;var X;Ae[g]=37;var N=g+1|0,I=X}else{Ae[g]=m;var N=g+1|0,I=y}}while(0);var I,N,g=N,y=I+1|0}Ae[g]=0;var A=E}var A;return Oe=i,A}function Lr(r){var a,a=(r+12|0)>>2,e=Se[a],i=Ae[e];if(i<<24>>24==63){var v=e+1|0;Se[a]=v;var t=1,f=v,_=Ae[v]}else var t=0,f=e,_=i;var _,f,t,s=(_-48&255&255)<9;do if(s){var n=Wr(r,3),o=0!=(0|t);o&&(Ae[n]=45);var l=Ae[Se[a]]+1&255;Ae[n+t|0]=l;var b=o?2:1;\nAe[n+b|0]=0;var k=Se[a]+1|0;Se[a]=k;var u=n}else if(_<<24>>24==57){var c=Wr(r,4),h=0!=(0|t);h&&(Ae[c]=45),Ae[c+t|0]=49;var d=h?2:1;Ae[c+d|0]=48;var w=h?3:2;Ae[c+w|0]=0;var p=Se[a]+1|0;Se[a]=p;var u=c}else{if((_-65&255&255)>=16){var u=0;break}for(var E=0,A=f;;){var A,E,g=A+1|0;Se[a]=g;var y=(Ae[A]<<24>>24)+((E<<4)-65)|0,m=ge[g];if((m-65&255&255)>=16)break;var E=y,A=g}if(m<<24>>24!=64){var u=0;break}var S=Wr(r,17),M=0!=(0|t)?0|He.__str119289:0|ii,C=(za(S,0|He.__str118288,(ne=Oe,Oe+=8,Se[ne>>2]=M,Se[ne+4>>2]=y,ne)),Se[a]+1|0);Se[a]=C;var u=S}while(0);var u;return u}function Fr(r,a,e,i){var v,t,f,_;0==(0|a)&&Xa(0|He.__str72242,212,0|He.___func___str_array_push,0|He.__str115285),0==(0|i)&&Xa(0|He.__str72242,213,0|He.___func___str_array_push,0|He.__str116286);var f=(i+12|0)>>2,s=Me[f],n=0==(0|s);do{if(n){Se[f]=32;var o=Wr(r,128);if(0==(0|o)){var l=0;_=17;break}Se[i+16>>2]=o,_=11;break}if(Me[i+8>>2]>>>0>>0){_=11;break}var b=s<<3,k=Wr(r,b);if(0==(0|k)){var l=0;_=17;break}var u=k,c=i+16|0,h=Se[c>>2],d=Se[f]<<2;Pa(k,h,d,1);var w=Se[f]<<1;Se[f]=w,Se[c>>2]=u,_=11;break}while(0);do if(11==_){if((0|e)==-1)var p=Ca(a),E=p;else var E=e;var E,A=ja(a),g=E+1|0,y=Wr(r,g),t=(i+4|0)>>2,v=(i+16|0)>>2,m=(Se[t]<<2)+Se[v]|0;Se[m>>2]=y;var S=Se[Se[v]+(Se[t]<<2)>>2];if(0==(0|S)){Xa(0|He.__str72242,233,0|He.___func___str_array_push,0|He.__str117287);var M=Se[Se[v]+(Se[t]<<2)>>2]}else var M=S;var M;Pa(M,A,E,1),va(A),Ae[Se[Se[v]+(Se[t]<<2)>>2]+g|0]=0;var C=Se[t]+1|0;Se[t]=C;var R=i+8|0;if(C>>>0>2]>>>0){var l=1;break}Se[R>>2]=C;var l=1}while(0);var l;return l}function Xr(r,a,e,i,v){var t,f,_=Oe;Oe+=28;var s,n=_,o=_+8;Cr(o);var f=(r+12|0)>>2,l=0==(0|e),t=(0|n)>>2,b=n+4|0;r:do if(l)for(;;){var k=Se[f],u=Ae[k];if(u<<24>>24==0){s=12;break r}if(u<<24>>24==64){var c=k;s=7;break r}var h=Pr(r,n,a,1);if(0==(0|h)){var d=0;s=25;break r}var w=Se[t],p=Se[b>>2],E=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=w,Se[ne+4>>2]=p,ne)),A=Fr(r,E,-1,o);if(0==(0|A)){var d=0;s=25;break r}var g=Se[t],y=Da(g,0|He.__str110280);if(0==(0|y)){s=12;break r}}else for(;;){var m=Se[f],S=Ae[m];if(S<<24>>24==0){s=12;break r}if(S<<24>>24==64){var c=m;s=7;break r}var M=Pr(r,n,a,1);if(0==(0|M)){var d=0;s=25;break r}var C=Se[t],R=Da(C,0|He.__str84254);if(0==(0|R)){s=13;break r}var T=Se[b>>2],O=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=C,Se[ne+4>>2]=T,ne)),N=Fr(r,O,-1,o);if(0==(0|N)){var d=0;s=25;break r}var I=Se[t],P=Da(I,0|He.__str110280);if(0==(0|P)){s=12;break r}}while(0);do if(7==s){var c;Se[f]=c+1|0,s=12;break}while(0);do if(12==s){if(l){s=14;break}s=13;break}while(0);do if(13==s){var D=Se[f],L=D+1|0;if(Se[f]=L,Ae[D]<<24>>24==90){s=14;break}var d=0;s=25;break}while(0);r:do if(14==s){var F=o+4|0,X=Me[F>>2];do{if(0!=(0|X)){if(1==(0|X)){var j=o+16|0,U=Se[Se[j>>2]>>2],x=Da(U,0|He.__str84254);if(0==(0|x)){s=17;break}var z=j;s=20;break}var V=o+16|0;if(X>>>0<=1){var z=V;s=20;break}for(var B=0,H=1;;){var H,B,K=Se[Se[V>>2]+(H<<2)>>2],Y=Dr(r,0|He.__str112282,(ne=Oe,Oe+=8,Se[ne>>2]=B,Se[ne+4>>2]=K,ne)),G=H+1|0;if(G>>>0>=Me[F>>2]>>>0)break;var B=Y,H=G}if(0==(0|Y)){var z=V;s=20;break}var W=Y,Z=Y;s=21;break}s=17}while(0);if(17==s){var Q=i<<24>>24,q=v<<24>>24,$=Dr(r,0|He.__str111281,(ne=Oe,Oe+=8,Se[ne>>2]=Q,Se[ne+4>>2]=q,ne)),d=$;break}if(20==s)var z,W=Se[Se[z>>2]>>2],Z=0;var Z,W,J=v<<24>>24,rr=v<<24>>24==62;do if(rr){var ar=Ca(W);if(Ae[W+(ar-1)|0]<<24>>24!=62)break;var er=i<<24>>24,ir=Se[Se[o+16>>2]>>2],vr=Dr(r,0|He.__str113283,(ne=Oe,Oe+=16,Se[ne>>2]=er,Se[ne+4>>2]=ir,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=vr;break r}while(0);var tr=i<<24>>24,fr=Se[Se[o+16>>2]>>2],_r=Dr(r,0|He.__str114284,(ne=Oe,Oe+=16,Se[ne>>2]=tr,Se[ne+4>>2]=fr,Se[ne+8>>2]=Z,Se[ne+12>>2]=J,ne)),d=_r}while(0);var d;return Oe=_,d}function jr(r){var a,e=Oe;Oe+=20;var i=e,v=r+24|0,t=Se[v>>2],a=(r+20|0)>>2,f=Se[a],_=r+44|0,s=Se[_>>2];Se[a]=t;var n=Kr(r);if(0==(0|n))var o=0;else{Cr(i);var l=Xr(r,i,0,60,62);if(0==(0|l))var b=n;else var k=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=n,Se[ne+4>>2]=l,ne)),b=k;var b;Se[v>>2]=t,Se[a]=f,Se[_>>2]=s;var o=b}var o;return Oe=e,o}function Ur(r,a,e,i){var v,t=a>>2;Se[e>>2]=0,Se[t]=0;var f=0==(18&i|0);do{if(f){var _=r<<24>>24,s=1==((_-65)%2|0);if(0==(1&i|0)){if(s?Se[e>>2]=0|He.__str95265:v=14,65==(0|_)||66==(0|_)){Se[t]=0|He.__str96266,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str97267,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str98268,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str99269,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str100270,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str101271,v=21;break}var n=0;v=22;break}if(s?Se[e>>2]=0|He.__str88258:v=5,65==(0|_)||66==(0|_)){Se[t]=0|He.__str89259,v=21;break}if(67==(0|_)||68==(0|_)){Se[t]=0|He.__str90260,v=21;break}if(69==(0|_)||70==(0|_)){Se[t]=0|He.__str91261,v=21;break}if(71==(0|_)||72==(0|_)){Se[t]=0|He.__str92262,v=21;break}if(73==(0|_)||74==(0|_)){Se[t]=0|He.__str93263,v=21;break}if(75==(0|_)||76==(0|_)){v=21;break}if(77==(0|_)){Se[t]=0|He.__str94264,v=21;break}var n=0;v=22;break}v=21}while(0);if(21==v)var n=1;var n;return n}function xr(r,a,e){var i;Se[e>>2]=0;var i=(r+12|0)>>2,v=Se[i];if(Ae[v]<<24>>24==69){Se[e>>2]=0|He.__str102272;var t=Se[i]+1|0;Se[i]=t;var f=t}else var f=v;var f;Se[i]=f+1|0;var _=Ae[f]<<24>>24;if(65==(0|_)){Se[a>>2]=0;var s=1}else if(66==(0|_)){Se[a>>2]=0|He.__str103273;var s=1}else if(67==(0|_)){Se[a>>2]=0|He.__str104274;var s=1}else if(68==(0|_)){Se[a>>2]=0|He.__str105275;var s=1}else var s=0;var s;return s}function zr(r){var a,e,a=(r+12|0)>>2,i=r+40|0,v=r+20|0,t=0|i,f=r+44|0,_=r+48|0,s=r+52|0,n=r+56|0,o=r+20|0,l=r+24|0,b=r+16|0,k=0;r:for(;;){var k,u=Se[a],c=Ae[u];if(c<<24>>24==64){var h=u+1|0;Se[a]=h;var d=1;break}var w=c<<24>>24;do{if(0==(0|w)){var d=0;break r}if(48==(0|w)||49==(0|w)||50==(0|w)||51==(0|w)||52==(0|w)||53==(0|w)||54==(0|w)||55==(0|w)||56==(0|w)||57==(0|w)){var p=u+1|0;Se[a]=p;var E=(Ae[u]<<24>>24)-48|0,A=Yr(v,E),g=A;e=14;break}if(63==(0|w)){var y=u+1|0;Se[a]=y;var m=Ae[y]<<24>>24;if(36==(0|m)){var S=u+2|0;Se[a]=S;var M=jr(r);if(0==(0|M)){var d=0;break r}var C=Fr(r,M,-1,v);if(0==(0|C)){var d=0;break r}var R=M;e=15;break}if(63==(0|m)){var T=Se[t>>2],O=Se[f>>2],N=Se[_>>2],I=Se[s>>2],P=Se[n>>2],D=Se[o>>2],L=Se[l>>2];Cr(i);var F=Ir(r);if(0==(0|F))var X=k;else var j=Se[b>>2],U=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=j,ne)),X=U;var X;Se[o>>2]=D,Se[l>>2]=L,Se[t>>2]=T,Se[f>>2]=O,Se[_>>2]=N,Se[s>>2]=I,Se[n>>2]=P;var g=X;e=14;break}var x=Lr(r);if(0==(0|x)){var d=0;break r}var z=Dr(r,0|He.__str109279,(ne=Oe,Oe+=4,Se[ne>>2]=x,ne)),g=z;e=14;break}var V=Kr(r),g=V;e=14;break}while(0);if(14==e){var g;if(0==(0|g)){var d=0;break}var R=g}var R,B=Fr(r,R,-1,i);if(0==(0|B)){var d=0;break}var k=R}var d;return d}function Vr(r){var a,e,i,v=Oe;Oe+=36;var t,f=v,i=f>>2,_=v+4,s=v+8,e=s>>2,n=v+16;Se[i]=0;var o=0|r,l=Se[o>>2],b=0==(128&l|0),k=r+12|0;do if(b){var u=Ae[Se[k>>2]]<<24>>24;if(48==(0|u))var c=0|He.__str76246,h=k,a=h>>2;else if(49==(0|u))var c=0|He.__str77247,h=k,a=h>>2;else{if(50!=(0|u)){var c=0,h=k,a=h>>2;break}var c=0|He.__str78248,h=k,a=h>>2}}else var c=0,h=k,a=h>>2;while(0);var h,c,d=0==(512&l|0);do if(d){if((Ae[Se[a]]-48&255&255)>=3){var w=0;break}var w=0|He.__str79249}else var w=0;while(0);var w,p=Gr(r,0),E=Se[a],A=E+1|0;Se[a]=A;var g=Ae[E]<<24>>24;do{if(48==(0|g)||49==(0|g)||50==(0|g)||51==(0|g)||52==(0|g)||53==(0|g)){var y=r+44|0,m=Se[y>>2];Cr(n);var S=Pr(r,s,n,0);if(0==(0|S)){var M=0;t=28;break}var C=xr(r,f,_);if(0==(0|C)){var M=0;t=28;break}var R=Se[i],T=0==(0|R),O=Se[_>>2];do if(T)Se[i]=O;else{if(0==(0|O))break;var N=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=R,Se[ne+4>>2]=O,ne));Se[i]=N}while(0);Se[y>>2]=m,t=22;break}if(54==(0|g)||55==(0|g)){var I=s+4|0;Se[I>>2]=0,Se[e]=0;var P=xr(r,f,_);if(0==(0|P)){var M=0;t=28;break}if(Ae[Se[a]]<<24>>24==64){t=22;break}var D=qr(r);if(0==(0|D)){var M=0;t=28;break}var L=Dr(r,0|He.__str107277,(ne=Oe,Oe+=4,Se[ne>>2]=D,ne));Se[I>>2]=L,t=22;break}if(56==(0|g)||57==(0|g)){Se[e+1]=0,Se[e]=0,Se[i]=0,t=22;break}var M=0;t=28}while(0);if(22==t){var F=0==(4096&Se[o>>2]|0);do{if(F){var X=Se[e],j=Se[i];if(0==(0|j)){var U=X;t=26;break}var x=0!=(0|X)?0|He.__str87257:0,z=0|He.__str87257,V=j,B=x,H=X;t=27;break}Se[i]=0,Se[e+1]=0,Se[e]=0;var U=0;t=26;break}while(0);if(26==t)var U,K=0!=(0|U)?0|He.__str87257:0,z=K,V=0,B=0,H=U;var H,B,V,z,Y=Se[e+1],G=Dr(r,0|He.__str108278,(ne=Oe,Oe+=32,Se[ne>>2]=c,Se[ne+4>>2]=w,Se[ne+8>>2]=H,Se[ne+12>>2]=B,Se[ne+16>>2]=V,Se[ne+20>>2]=z,Se[ne+24>>2]=p,Se[ne+28>>2]=Y,ne));Se[r+16>>2]=G;var M=1}var M;return Oe=v,M}function Br(r,a){var e,i,v,t,f=Oe;Oe+=44;var _,s=f,t=s>>2,n=f+8,o=f+12,v=o>>2,l=f+16,b=f+20,k=f+40;Se[v]=0;var i=(r+12|0)>>2,u=Se[i],c=u+1|0;Se[i]=c;var h=ge[u],d=h<<24>>24,w=(h-65&255&255)>25;r:do if(w)var p=0;else{var e=(0|r)>>2,E=Me[e],A=0==(128&E|0),g=d-65|0;do if(A){var y=g/8|0;if(0==(0|y))var m=0|He.__str76246,S=g;else if(1==(0|y))var m=0|He.__str77247,S=g;else{if(2!=(0|y)){var m=0,S=g;break}var m=0|He.__str78248,S=g}}else var m=0,S=g;while(0);var S,m,M=0==(512&E|0)&h<<24>>24<89,C=(0|S)%8;do if(M)if(2==(0|C)||3==(0|C))var R=m,T=0|He.__str79249;else if(4==(0|C)||5==(0|C))var R=m,T=0|He.__str80250;else{if(6!=(0|C)&&7!=(0|C)){var R=m,T=0;break}var O=Dr(r,0|He.__str81251,(ne=Oe,Oe+=4,Se[ne>>2]=m,ne)),R=O,T=0|He.__str80250}else var R=m,T=0;while(0);var T,R,N=Gr(r,0),I=6==(0|C);do{if(!I){if(7==((d-56)%8|0)){_=14;break}var P=N;_=15;break}_=14}while(0);if(14==_)var D=Lr(r),L=Dr(r,0|He.__str82252,(ne=Oe,Oe+=8,Se[ne>>2]=N,Se[ne+4>>2]=D,ne)),P=L;var P,F=h<<24>>24>88;do if(F)var X=0;else{if((C-2|0)>>>0<2){var X=0;break}var j=xr(r,o,k);if(0==(0|j)){var p=0;break r}var U=Me[v],x=Se[k>>2];if(0==(0|U)&0==(0|x)){var X=0;break}var z=Dr(r,0|He.__str83253,(ne=Oe,Oe+=8,Se[ne>>2]=U,Se[ne+4>>2]=x,ne));Se[v]=z;var X=z}while(0);var X,V=Se[i],B=V+1|0;Se[i]=B;var H=Ae[V],K=Se[e],Y=Ur(H,n,l,K);if(0==(0|Y)){var p=0;break}Cr(b);var G=Se[i];if(Ae[G]<<24>>24==64){Se[t]=0|He.__str84254,Se[t+1]=0;var W=G+1|0;Se[i]=W}else{var Z=Pr(r,s,b,0);if(0==(0|Z)){var p=0;break}}if(0!=(4&Se[e]|0)&&(Se[t+1]=0,Se[t]=0),0==(0|a))var Q=P;else{var q=0|s,$=Se[q>>2],J=s+4|0,rr=Se[J>>2],ar=Dr(r,0|He.__str85255,(ne=Oe,Oe+=12,Se[ne>>2]=P,Se[ne+4>>2]=$,Se[ne+8>>2]=rr,ne));Se[J>>2]=0,Se[q>>2]=0;var Q=ar}var Q,er=r+44|0,ir=Se[er>>2],vr=Xr(r,b,1,40,41);if(0==(0|vr)){var p=0;break}if(0==(4096&Se[e]|0))var tr=vr,fr=X;else{Se[v]=0;var tr=0,fr=0}var fr,tr;Se[er>>2]=ir;var _r=Se[t],sr=Se[t+1];if(0==(0|_r))var nr=0;else var or=0!=(0|sr)?0:0|He.__str87257,nr=or;var nr,lr=Se[n>>2],br=0!=(0|lr)?0|He.__str87257:0,kr=Se[l>>2],ur=Dr(r,0|He.__str86256,(ne=Oe,Oe+=44,Se[ne>>2]=R,Se[ne+4>>2]=T,Se[ne+8>>2]=_r,Se[ne+12>>2]=nr,Se[ne+16>>2]=lr,Se[ne+20>>2]=br,Se[ne+24>>2]=kr,Se[ne+28>>2]=Q,Se[ne+32>>2]=tr,Se[ne+36>>2]=fr,Se[ne+40>>2]=sr,ne));Se[r+16>>2]=ur;var p=1}while(0);var p;return Oe=f,p}function Hr(r){var a,a=(r+12|0)>>2,e=Se[a];if(Ae[e]<<24>>24==36)var i=e;else{Xa(0|He.__str72242,1252,0|He.___func___handle_template,0|He.__str74244);var i=Se[a]}var i;Se[a]=i+1|0;var v=Kr(r),t=0==(0|v);do if(t)var f=0;else{var _=Xr(r,0,0,60,62);if(0==(0|_)){var f=0;break}var s=Dr(r,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=v,Se[ne+4>>2]=_,ne));Se[r+16>>2]=s;var f=1}while(0);var f;return f}function Kr(r){for(var a,a=(r+12|0)>>2,e=Me[a],i=e,v=Ae[e];;){var v,i;if(!((v-65&255&255)<26|(v-97&255&255)<26|(v-48&255&255)<10)&&v<<24>>24!=95&&v<<24>>24!=36){var t=0;break}var f=i+1|0;Se[a]=f;var _=ge[f];if(_<<24>>24==64){Se[a]=i+2|0;var s=f-e|0,n=r+20|0,o=Fr(r,e,s,n);if(0==(0|o)){var t=0;break}var l=Se[r+24>>2]-1-Se[n>>2]|0,b=Yr(n,l),t=b;break}var i=f,v=_}var t;return t}function Yr(r,a){0==(0|r)&&Xa(0|He.__str72242,263,0|He.___func___str_array_get_ref,0|He.__str75245);var e=Se[r>>2]+a|0;if(e>>>0>2]>>>0)var i=Se[Se[r+16>>2]+(e<<2)>>2];else var i=0;var i;return i}function Gr(r,a){var e,e=(r+44|0)>>2,i=Me[e];if(i>>>0>a>>>0){for(var v=r+56|0,t=a,f=0,_=Se[v>>2],s=i;;){var s,_,f,t,n=Me[_+(t<<2)>>2];if(0==(0|n)){Xa(0|He.__str72242,680,0|He.___func___get_class_string,0|He.__str106276);var o=Se[v>>2],l=o,b=Se[o+(t<<2)>>2],k=Se[e]}else var l=_,b=n,k=s;var k,b,l,u=Ca(b),c=u+(f+2)|0,h=t+1|0;if(h>>>0>=k>>>0)break;var t=h,f=c,_=l,s=k}var d=c-1|0}else var d=-1;var d,w=Wr(r,d);if(0==(0|w))var p=0;else{var E=Se[e]-1|0,A=(0|E)<(0|a);r:do if(A)var g=0;else for(var y=r+56|0,m=0,S=E;;){var S,m,M=Se[Se[y>>2]+(S<<2)>>2],C=Ca(M),R=w+m|0;Pa(R,M,C,1);var T=C+m|0;if((0|S)>(0|a)){var O=T+1|0;Ae[w+T|0]=58;var N=T+2|0;Ae[w+O|0]=58;var I=N}else var I=T;var I,P=S-1|0;if((0|P)<(0|a)){var g=I;break r}var m=I,S=P}while(0);var g;Ae[w+g|0]=0;var p=w}var p;return p}function Wr(r,a){var e,i=a>>>0>1020;do if(i){var v=Se[r+4>>2],t=a+4|0,f=pe[v](t);if(0==(0|f)){var _=0;break}var s=r+60|0,n=Se[s>>2],o=f;Se[o>>2]=n,Se[s>>2]=f,Se[r+64>>2]=0;var _=f+4|0}else{var e=(r+64|0)>>2,l=Me[e];if(l>>>0>>0){var b=Se[r+4>>2],k=pe[b](1024);if(0==(0|k)){var _=0;break}var u=r+60|0,c=Se[u>>2],h=k;Se[h>>2]=c,Se[u>>2]=k,Se[e]=1020;var d=1020,w=k}else var d=l,w=Se[r+60>>2];var w,d;Se[e]=d-a|0;var _=w+(1024-d)|0}while(0);var _;return _}function Zr(r){var a=r<<24>>24;if(68==(0|a))var e=0|He.__str157327;else if(69==(0|a))var e=0|He.__str158328;else if(70==(0|a))var e=0|He.__str159329;else if(71==(0|a))var e=0|He.__str160330;else if(72==(0|a))var e=0|He.__str161331;else if(73==(0|a))var e=0|He.__str162332;else if(74==(0|a))var e=0|He.__str163333;else if(75==(0|a))var e=0|He.__str164334;else if(76==(0|a))var e=0|He.__str165335;else if(77==(0|a))var e=0|He.__str166336;else if(78==(0|a))var e=0|He.__str167337;else if(87==(0|a))var e=0|He.__str168338;else var e=0;var e;return e}function Qr(r){var a=r<<24>>24;if(67==(0|a))var e=0|He.__str145315;else if(68==(0|a))var e=0|He.__str146316;else if(69==(0|a))var e=0|He.__str147317;else if(70==(0|a))var e=0|He.__str148318;else if(71==(0|a))var e=0|He.__str149319;else if(72==(0|a))var e=0|He.__str150320;else if(73==(0|a))var e=0|He.__str151321;else if(74==(0|a))var e=0|He.__str152322;else if(75==(0|a))var e=0|He.__str153323;else if(77==(0|a))var e=0|He.__str154324;else if(78==(0|a))var e=0|He.__str155325;else if(79==(0|a))var e=0|He.__str156326;else if(88==(0|a))var e=0|He.__str84254;else if(90==(0|a))var e=0|He.__str110280;else var e=0;var e;return e}function qr(r){var a=r+44|0,e=Se[a>>2],i=zr(r);if(0==(0|i))var v=0;else var t=Gr(r,e),v=t;var v;return Se[a>>2]=e,v}function $r(r,a,e,i,v){var t,f,_,s=Oe;Oe+=16;var n,o=s,_=o>>2,l=s+4,b=s+8,f=b>>2;Se[l>>2]=0|ii;var t=(a+12|0)>>2,k=Se[t];if(Ae[k]<<24>>24==69){Se[l>>2]=0|He.__str134304;var u=k+1|0;Se[t]=u;var c=0|He.__str134304}else var c=0|ii;var c,h=i<<24>>24;do{if(65==(0|h)){var d=Dr(a,0|He.__str135305,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=d;n=10;break}if(66==(0|h)){var p=Dr(a,0|He.__str136306,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=p;n=10;break}if(80==(0|h)){var E=Dr(a,0|He.__str137307,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=E;n=10;break}if(81==(0|h)){var A=Dr(a,0|He.__str138308,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=A;n=10;break}if(82==(0|h)){var g=Dr(a,0|He.__str139309,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=g;n=10;break}if(83==(0|h)){var y=Dr(a,0|He.__str140310,(ne=Oe,Oe+=4,Se[ne>>2]=c,ne)),w=y;n=10;break}if(63==(0|h)){var w=0|ii;n=10}else n=31}while(0);r:do if(10==n){var w,m=xr(a,o,l);if(0==(0|m))break;var S=a+44|0,M=Se[S>>2],C=Se[t],R=Ae[C]<<24>>24==89;a:do if(R){var T=C+1|0;Se[t]=T;var O=Lr(a);if(0==(0|O))break r;var N=Ha(O),I=Ae[w]<<24>>24==32,P=Se[_],D=0==(0|P);do{if(I){if(!D){n=17;break}var L=w+1|0;n=18;break}if(D){var L=w;n=18;break}n=17;break}while(0);if(17==n){var F=Dr(a,0|He.__str141311,(ne=Oe,Oe+=8,Se[ne>>2]=P,Se[ne+4>>2]=w,ne));Se[_]=0;var X=F}else if(18==n)var L,j=Dr(a,0|He.__str142312,(ne=Oe,Oe+=4,Se[ne>>2]=L,ne)),X=j;var X;if(0==(0|N)){var U=X;break}for(var x=X,z=N;;){var z,x,V=z-1|0,B=Lr(a),H=Dr(a,0|He.__str143313,(ne=Oe,Oe+=8,Se[ne>>2]=x,Se[ne+4>>2]=B,ne));if(0==(0|V)){var U=H;break a}var x=H,z=V}}else var U=w;while(0);var U,K=Pr(a,b,e,0);if(0==(0|K))break;var Y=Se[_];if(0==(0|Y)){var G=0==(0|v);do if(G){if(Ae[U]<<24>>24==0){var W=U;break}var Z=U+1|0;if(Ae[Z]<<24>>24!=42){var W=U;break}var Q=Se[f],q=Ca(Q);if(Ae[Q+(q-1)|0]<<24>>24!=42){var W=U;break}var W=Z}else var W=U;while(0);var W,$=Se[f],J=Dr(a,0|He.__str170,(ne=Oe,Oe+=8,Se[ne>>2]=$,Se[ne+4>>2]=W,ne));Se[r>>2]=J}else{var rr=Se[f],ar=Dr(a,0|He.__str144314,(ne=Oe,Oe+=12,Se[ne>>2]=rr,Se[ne+4>>2]=Y,Se[ne+8>>2]=U,ne));Se[r>>2]=ar}var er=Se[f+1];Se[r+4>>2]=er,Se[S>>2]=M}while(0);Oe=s}function Jr(r){var a,e=r>>>0<245;do{if(e){if(r>>>0<11)var i=16;else var i=r+11&-8;var i,v=i>>>3,t=Me[vi>>2],f=t>>>(v>>>0);if(0!=(3&f|0)){var _=(1&f^1)+v|0,s=_<<1,n=(s<<2)+vi+40|0,o=(s+2<<2)+vi+40|0,l=Me[o>>2],b=l+8|0,k=Me[b>>2];if((0|n)==(0|k))Se[vi>>2]=t&(1<<_^-1);else{if(k>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[o>>2]=k,Se[k+12>>2]=n}var u=_<<3;Se[l+4>>2]=3|u;var c=l+(4|u)|0,h=1|Se[c>>2];Se[c>>2]=h;var d=b;a=38;break}if(i>>>0<=Me[vi+8>>2]>>>0){var w=i;a=30;break}if(0!=(0|f)){var p=2<>>12&16,y=A>>>(g>>>0),m=y>>>5&8,S=y>>>(m>>>0),M=S>>>2&4,C=S>>>(M>>>0),R=C>>>1&2,T=C>>>(R>>>0),O=T>>>1&1,N=(m|g|M|R|O)+(T>>>(O>>>0))|0,I=N<<1,P=(I<<2)+vi+40|0,D=(I+2<<2)+vi+40|0,L=Me[D>>2],F=L+8|0,X=Me[F>>2];if((0|P)==(0|X))Se[vi>>2]=t&(1<>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[D>>2]=X,Se[X+12>>2]=P}var j=N<<3,U=j-i|0;Se[L+4>>2]=3|i;var x=L,z=x+i|0;Se[x+(4|i)>>2]=1|U,Se[x+j>>2]=U;var V=Me[vi+8>>2];if(0!=(0|V)){var B=Se[vi+20>>2],H=V>>>2&1073741822,K=(H<<2)+vi+40|0,Y=Me[vi>>2],G=1<<(V>>>3),W=0==(Y&G|0);do{if(!W){var Z=(H+2<<2)+vi+40|0,Q=Me[Z>>2];if(Q>>>0>=Me[vi+16>>2]>>>0){var q=Q,$=Z;break}throw Ka(),"Reached an unreachable!"}Se[vi>>2]=Y|G;var q=K,$=(H+2<<2)+vi+40|0}while(0);var $,q;Se[$>>2]=B,Se[q+12>>2]=B;var J=B+8|0;Se[J>>2]=q;var rr=B+12|0;Se[rr>>2]=K}Se[vi+8>>2]=U,Se[vi+20>>2]=z;var d=F;a=38;break}if(0==(0|Se[vi+4>>2])){var w=i;a=30;break}var ar=ra(i);if(0==(0|ar)){var w=i;a=30;break}var d=ar;a=38;break}if(r>>>0>4294967231){var w=-1;a=30;break}var er=r+11&-8;if(0==(0|Se[vi+4>>2])){var w=er;a=30;break}var ir=ea(er);if(0==(0|ir)){var w=er;a=30;break}var d=ir;a=38;break}while(0);if(30==a){var w,vr=Me[vi+8>>2];if(w>>>0>vr>>>0){var tr=Me[vi+12>>2];if(w>>>0>>0){var fr=tr-w|0;Se[vi+12>>2]=fr;var _r=Me[vi+24>>2],sr=_r;Se[vi+24>>2]=sr+w|0,Se[w+(sr+4)>>2]=1|fr,Se[_r+4>>2]=3|w;var d=_r+8|0}else var nr=aa(w),d=nr}else{var or=vr-w|0,lr=Me[vi+20>>2];if(or>>>0>15){var br=lr;Se[vi+20>>2]=br+w|0,Se[vi+8>>2]=or,Se[w+(br+4)>>2]=1|or,Se[br+vr>>2]=or,Se[lr+4>>2]=3|w}else{Se[vi+8>>2]=0,Se[vi+20>>2]=0,Se[lr+4>>2]=3|vr;var kr=vr+(lr+4)|0,ur=1|Se[kr>>2];Se[kr>>2]=ur}var d=lr+8|0}}var d;return d}function ra(r){var a,e,i,v=Se[vi+4>>2],t=(v&-v)-1|0,f=t>>>12&16,_=t>>>(f>>>0),s=_>>>5&8,n=_>>>(s>>>0),o=n>>>2&4,l=n>>>(o>>>0),b=l>>>1&2,k=l>>>(b>>>0),u=k>>>1&1,c=Me[vi+((s|f|o|b|u)+(k>>>(u>>>0))<<2)+304>>2],h=c,e=h>>2,d=(Se[c+4>>2]&-8)-r|0;r:for(;;)for(var d,h,w=h;;){var w,p=Se[w+16>>2];if(0==(0|p)){var E=Se[w+20>>2];if(0==(0|E))break r;var A=E}else var A=p;var A,g=(Se[A+4>>2]&-8)-r|0;if(g>>>0>>0){var h=A,e=h>>2,d=g;continue r}var w=A}var y=h,m=Me[vi+16>>2],S=y>>>0>>0;do if(!S){var M=y+r|0,C=M;if(y>>>0>=M>>>0)break;var R=Me[e+6],T=Me[e+3],O=(0|T)==(0|h);do if(O){var N=h+20|0,I=Se[N>>2];if(0==(0|I)){var P=h+16|0,D=Se[P>>2];if(0==(0|D)){var L=0,a=L>>2;break}var F=P,X=D}else{var F=N,X=I;i=14}for(;;){var X,F,j=X+20|0,U=Se[j>>2];if(0==(0|U)){var x=X+16|0,z=Me[x>>2];if(0==(0|z))break;var F=x,X=z}else var F=j,X=U}if(F>>>0>>0)throw Ka(),"Reached an unreachable!";Se[F>>2]=0;var L=X,a=L>>2}else{var V=Me[e+2];if(V>>>0>>0)throw Ka(),"Reached an unreachable!";Se[V+12>>2]=T,Se[T+8>>2]=V;var L=T,a=L>>2}while(0);var L,B=0==(0|R);r:do if(!B){var H=h+28|0,K=(Se[H>>2]<<2)+vi+304|0,Y=(0|h)==(0|Se[K>>2]);do{if(Y){if(Se[K>>2]=L,0!=(0|L))break;var G=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=G;break r}if(R>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";var W=R+16|0;if((0|Se[W>>2])==(0|h)?Se[W>>2]=L:Se[R+20>>2]=L,0==(0|L))break r}while(0);if(L>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+6]=R;var Z=Me[e+4];if(0!=(0|Z)){if(Z>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+4]=Z,Se[Z+24>>2]=L}var Q=Me[e+5];if(0==(0|Q))break;if(Q>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+5]=Q,Se[Q+24>>2]=L}while(0);if(d>>>0<16){var q=d+r|0;Se[e+1]=3|q;var $=q+(y+4)|0,J=1|Se[$>>2];Se[$>>2]=J}else{Se[e+1]=3|r,Se[r+(y+4)>>2]=1|d,Se[y+d+r>>2]=d;var rr=Me[vi+8>>2];if(0!=(0|rr)){var ar=Me[vi+20>>2],er=rr>>>2&1073741822,ir=(er<<2)+vi+40|0,vr=Me[vi>>2],tr=1<<(rr>>>3),fr=0==(vr&tr|0);do{if(!fr){var _r=(er+2<<2)+vi+40|0,sr=Me[_r>>2];if(sr>>>0>=Me[vi+16>>2]>>>0){var nr=sr,or=_r;break}throw Ka(),"Reached an unreachable!"}Se[vi>>2]=vr|tr;var nr=ir,or=(er+2<<2)+vi+40|0}while(0);var or,nr;Se[or>>2]=ar,Se[nr+12>>2]=ar,Se[ar+8>>2]=nr,Se[ar+12>>2]=ir}Se[vi+8>>2]=d,Se[vi+20>>2]=C}return h+8|0}while(0);throw Ka(),"Reached an unreachable!"}function aa(r){var a,e;0==(0|Se[ti>>2])&&ba();var i=0==(4&Se[vi+440>>2]|0);do{if(i){var v=Se[vi+24>>2],t=0==(0|v);do{if(!t){var f=v,_=ua(f);if(0==(0|_)){e=6;break}var s=Se[ti+8>>2],n=r+47-Se[vi+12>>2]+s&-s;if(n>>>0>=2147483647){e=14;break}var o=re(n);if((0|o)==(Se[_>>2]+Se[_+4>>2]|0)){var l=o,b=n,k=o;e=13;break}var u=o,c=n;e=15;break}e=6}while(0);do if(6==e){var h=re(0);if((0|h)==-1){e=14;break}var d=Se[ti+8>>2],w=d+(r+47)&-d,p=h,E=Se[ti+4>>2],A=E-1|0;if(0==(A&p|0))var g=w;else var g=w-p+(A+p&-E)|0;var g;if(g>>>0>=2147483647){e=14;break}var y=re(g);if((0|y)==(0|h)){var l=h,b=g,k=y;e=13;break}var u=y,c=g;e=15;break}while(0);if(13==e){var k,b,l;if((0|l)!=-1){var m=b,S=l;e=26;break}var u=k,c=b}else if(14==e){var M=4|Se[vi+440>>2];Se[vi+440>>2]=M,e=23;break}var c,u,C=0|-c,R=(0|u)!=-1&c>>>0<2147483647;do{if(R){if(c>>>0>=(r+48|0)>>>0){var T=c;e=21;break}var O=Se[ti+8>>2],N=r+47-c+O&-O;if(N>>>0>=2147483647){var T=c;e=21;break}var I=re(N);if((0|I)==-1){re(C);e=22;break}var T=N+c|0;e=21;break}var T=c;e=21}while(0);if(21==e){var T;if((0|u)!=-1){var m=T,S=u;e=26;break}}var P=4|Se[vi+440>>2];Se[vi+440>>2]=P,e=23;break}e=23}while(0);do if(23==e){var D=Se[ti+8>>2],L=D+(r+47)&-D;if(L>>>0>=2147483647){e=49;break}var F=re(L),X=re(0);if(!((0|X)!=-1&(0|F)!=-1&F>>>0>>0)){e=49;break}var j=X-F|0;if(j>>>0<=(r+40|0)>>>0|(0|F)==-1){e=49;break}var m=j,S=F;e=26;break}while(0);r:do if(26==e){var S,m,U=Se[vi+432>>2]+m|0;Se[vi+432>>2]=U,U>>>0>Me[vi+436>>2]>>>0&&(Se[vi+436>>2]=U);var x=Me[vi+24>>2],z=0==(0|x);a:do if(z){var V=Me[vi+16>>2];0==(0|V)|S>>>0>>0&&(Se[vi+16>>2]=S),Se[vi+444>>2]=S,Se[vi+448>>2]=m,Se[vi+456>>2]=0;var B=Se[ti>>2];Se[vi+36>>2]=B,Se[vi+32>>2]=-1,ha(),ca(S,m-40|0)}else{for(var H=vi+444|0,a=H>>2;;){var H;if(0==(0|H))break;var K=Me[a],Y=H+4|0,G=Me[Y>>2],W=K+G|0;if((0|S)==(0|W)){if(0!=(8&Se[a+3]|0))break;var Z=x;if(!(Z>>>0>=K>>>0&Z>>>0>>0))break;Se[Y>>2]=G+m|0;var Q=Se[vi+24>>2],q=Se[vi+12>>2]+m|0;ca(Q,q);break a}var H=Se[a+2],a=H>>2}S>>>0>2]>>>0&&(Se[vi+16>>2]=S);for(var $=S+m|0,J=vi+444|0;;){var J;if(0==(0|J))break;var rr=0|J,ar=Me[rr>>2];if((0|ar)==(0|$)){if(0!=(8&Se[J+12>>2]|0))break;Se[rr>>2]=S;var er=J+4|0,ir=Se[er>>2]+m|0;Se[er>>2]=ir;var vr=da(S,ar,r),tr=vr;e=50;break r}var J=Se[J+8>>2]}Ma(S,m)}while(0);var fr=Me[vi+12>>2];if(fr>>>0<=r>>>0){e=49;break}var _r=fr-r|0;Se[vi+12>>2]=_r;var sr=Me[vi+24>>2],nr=sr;Se[vi+24>>2]=nr+r|0,Se[r+(nr+4)>>2]=1|_r,Se[sr+4>>2]=3|r;var tr=sr+8|0;e=50;break}while(0);if(49==e){var or=Je();Se[or>>2]=12;var tr=0}var tr;return tr}function ea(r){var a,e,i,v,t,f,_=r>>2,s=0|-r,n=r>>>8,o=0==(0|n);do if(o)var l=0;else{if(r>>>0>16777215){var l=31;break}var b=(n+1048320|0)>>>16&8,k=n<>>16&4,c=k<>>16&2,d=14-(u|b|h)+(c<>>15)|0,l=r>>>((d+7|0)>>>0)&1|d<<1}while(0);var l,w=Me[vi+(l<<2)+304>>2],p=0==(0|w);r:do if(p)var E=0,A=s,g=0;else{if(31==(0|l))var y=0;else var y=25-(l>>>1)|0;for(var y,m=0,S=s,M=w,t=M>>2,C=r<>>0>>0){if((0|T)==(0|r)){var E=M,A=O,g=M;break r}var N=M,I=O}else var N=m,I=S;var I,N,P=Me[t+5],D=Me[((C>>>31<<2)+16>>2)+t],L=0==(0|P)|(0|P)==(0|D)?R:P;if(0==(0|D)){var E=N,A=I,g=L;break r}var m=N,S=I,M=D,t=M>>2,C=C<<1,R=L}}while(0);var g,A,E,F=0==(0|g)&0==(0|E);do if(F){var X=2<>2]&(X|-X);if(0==(0|j)){var U=g;break}var x=(j&-j)-1|0,z=x>>>12&16,V=x>>>(z>>>0),B=V>>>5&8,H=V>>>(B>>>0),K=H>>>2&4,Y=H>>>(K>>>0),G=Y>>>1&2,W=Y>>>(G>>>0),Z=W>>>1&1,U=Se[vi+((B|z|K|G|Z)+(W>>>(Z>>>0))<<2)+304>>2]}else var U=g;while(0);var U,Q=0==(0|U);r:do if(Q)var q=A,$=E,v=$>>2;else for(var J=U,i=J>>2,rr=A,ar=E;;){var ar,rr,J,er=(Se[i+1]&-8)-r|0,ir=er>>>0>>0,vr=ir?er:rr,tr=ir?J:ar,fr=Me[i+4];if(0==(0|fr)){var _r=Me[i+5];if(0==(0|_r)){var q=vr,$=tr,v=$>>2;break r}var J=_r,i=J>>2,rr=vr,ar=tr}else var J=fr,i=J>>2,rr=vr,ar=tr}while(0);var $,q,sr=0==(0|$);r:do{if(!sr){if(q>>>0>=(Se[vi+8>>2]-r|0)>>>0){var nr=0;break}var or=$,e=or>>2,lr=Me[vi+16>>2],br=or>>>0>>0;do if(!br){var kr=or+r|0,ur=kr;if(or>>>0>=kr>>>0)break;var cr=Me[v+6],hr=Me[v+3],dr=(0|hr)==(0|$);do if(dr){var wr=$+20|0,pr=Se[wr>>2];if(0==(0|pr)){var Er=$+16|0,Ar=Se[Er>>2];if(0==(0|Ar)){var gr=0,a=gr>>2;break}var yr=Er,mr=Ar}else{var yr=wr,mr=pr;f=28}for(;;){var mr,yr,Sr=mr+20|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=mr+16|0,Rr=Me[Cr>>2];if(0==(0|Rr))break;var yr=Cr,mr=Rr}else var yr=Sr,mr=Mr}if(yr>>>0>>0)throw Ka(),"Reached an unreachable!";Se[yr>>2]=0;var gr=mr,a=gr>>2}else{var Tr=Me[v+2];if(Tr>>>0>>0)throw Ka(),"Reached an unreachable!";Se[Tr+12>>2]=hr,Se[hr+8>>2]=Tr;var gr=hr,a=gr>>2}while(0);var gr,Or=0==(0|cr);a:do if(!Or){var Nr=$+28|0,Ir=(Se[Nr>>2]<<2)+vi+304|0,Pr=(0|$)==(0|Se[Ir>>2]);do{if(Pr){if(Se[Ir>>2]=gr,0!=(0|gr))break;var Dr=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=Dr;break a}if(cr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";var Lr=cr+16|0;if((0|Se[Lr>>2])==(0|$)?Se[Lr>>2]=gr:Se[cr+20>>2]=gr,0==(0|gr))break a}while(0);if(gr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+6]=cr;var Fr=Me[v+4];if(0!=(0|Fr)){if(Fr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+4]=Fr,Se[Fr+24>>2]=gr}var Xr=Me[v+5];if(0==(0|Xr))break;if(Xr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+5]=Xr,Se[Xr+24>>2]=gr}while(0);var jr=q>>>0<16;a:do if(jr){var Ur=q+r|0;Se[v+1]=3|Ur;var xr=Ur+(or+4)|0,zr=1|Se[xr>>2];Se[xr>>2]=zr}else if(Se[v+1]=3|r,Se[_+(e+1)]=1|q,Se[(q>>2)+e+_]=q,q>>>0<256){var Vr=q>>>2&1073741822,Br=(Vr<<2)+vi+40|0,Hr=Me[vi>>2],Kr=1<<(q>>>3),Yr=0==(Hr&Kr|0);do{if(!Yr){var Gr=(Vr+2<<2)+vi+40|0,Wr=Me[Gr>>2];if(Wr>>>0>=Me[vi+16>>2]>>>0){var Zr=Wr,Qr=Gr;break}throw Ka(),"Reached an unreachable!"}Se[vi>>2]=Hr|Kr;var Zr=Br,Qr=(Vr+2<<2)+vi+40|0}while(0);var Qr,Zr;Se[Qr>>2]=ur,Se[Zr+12>>2]=ur,Se[_+(e+2)]=Zr,Se[_+(e+3)]=Br}else{var qr=kr,$r=q>>>8,Jr=0==(0|$r);do if(Jr)var ra=0;else{if(q>>>0>16777215){var ra=31;break}var aa=($r+1048320|0)>>>16&8,ea=$r<>>16&4,va=ea<>>16&2,fa=14-(ia|aa|ta)+(va<>>15)|0,ra=q>>>((fa+7|0)>>>0)&1|fa<<1}while(0);var ra,_a=(ra<<2)+vi+304|0;Se[_+(e+7)]=ra;var sa=r+(or+16)|0;Se[_+(e+5)]=0,Se[sa>>2]=0;var na=Se[vi+4>>2],oa=1<>2]=la,Se[_a>>2]=qr,Se[_+(e+6)]=_a,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr}else{if(31==(0|ra))var ba=0;else var ba=25-(ra>>>1)|0;for(var ba,ka=q<>2];;){var ua,ka;if((Se[ua+4>>2]&-8|0)==(0|q)){var ca=ua+8|0,ha=Me[ca>>2],da=Me[vi+16>>2],wa=ua>>>0>>0;do if(!wa){if(ha>>>0>>0)break;Se[ha+12>>2]=qr,Se[ca>>2]=qr,Se[_+(e+2)]=ha,Se[_+(e+3)]=ua,Se[_+(e+6)]=0;break a}while(0);throw Ka(),"Reached an unreachable!"}var pa=(ka>>>31<<2)+ua+16|0,Ea=Me[pa>>2];if(0==(0|Ea)){if(pa>>>0>=Me[vi+16>>2]>>>0){Se[pa>>2]=qr,Se[_+(e+6)]=ua,Se[_+(e+3)]=qr,Se[_+(e+2)]=qr;break a}throw Ka(),"Reached an unreachable!"}var ka=ka<<1,ua=Ea}}}while(0);var nr=$+8|0;break r}while(0);throw Ka(),"Reached an unreachable!"}var nr=0}while(0);var nr;return nr}function ia(r){var a;0==(0|Se[ti>>2])&&ba();var e=r>>>0<4294967232;r:do if(e){var i=Me[vi+24>>2];if(0==(0|i)){var v=0;break}var t=Me[vi+12>>2],f=t>>>0>(r+40|0)>>>0;do if(f){var _=Me[ti+8>>2],s=-40-r-1+t+_|0,n=Math.floor((s>>>0)/(_>>>0)),o=(n-1)*_|0,l=i,b=ua(l);if(0!=(8&Se[b+12>>2]|0))break;var k=re(0),a=(b+4|0)>>2;if((0|k)!=(Se[b>>2]+Se[a]|0))break;var u=o>>>0>2147483646?-2147483648-_|0:o,c=0|-u,h=re(c),d=re(0);if(!((0|h)!=-1&d>>>0>>0))break;var w=k-d|0;if((0|k)==(0|d))break;var p=Se[a]-w|0;Se[a]=p;var E=Se[vi+432>>2]-w|0;Se[vi+432>>2]=E;var A=Se[vi+24>>2],g=Se[vi+12>>2]-w|0;ca(A,g);var v=(0|k)!=(0|d);break r}while(0);if(Me[vi+12>>2]>>>0<=Me[vi+28>>2]>>>0){var v=0;break}Se[vi+28>>2]=-1;var v=0}else var v=0;while(0);var v;return 1&v}function va(r){var a,e,i,v,t,f,_,s=r>>2,n=0==(0|r);r:do if(!n){var o=r-8|0,l=o,b=Me[vi+16>>2],k=o>>>0>>0;a:do if(!k){var u=Me[r-4>>2],c=3&u;if(1==(0|c))break;var h=u&-8,f=h>>2,d=r+(h-8)|0,w=d,p=0==(1&u|0);e:do if(p){var E=Me[o>>2];if(0==(0|c))break r;var A=-8-E|0,t=A>>2,g=r+A|0,y=g,m=E+h|0;if(g>>>0>>0)break a;if((0|y)==(0|Se[vi+20>>2])){var v=(r+(h-4)|0)>>2;if(3!=(3&Se[v]|0)){var S=y,i=S>>2,M=m;break}Se[vi+8>>2]=m;var C=Se[v]&-2;Se[v]=C,Se[t+(s+1)]=1|m,Se[d>>2]=m;break r}if(E>>>0<256){var R=Me[t+(s+2)],T=Me[t+(s+3)];if((0|R)!=(0|T)){var O=((E>>>2&1073741822)<<2)+vi+40|0,N=(0|R)!=(0|O)&R>>>0>>0;do if(!N){if(!((0|T)==(0|O)|T>>>0>=b>>>0))break;Se[R+12>>2]=T,Se[T+8>>2]=R;var S=y,i=S>>2,M=m;break e}while(0);throw Ka(),"Reached an unreachable!"}var I=Se[vi>>2]&(1<<(E>>>3)^-1);Se[vi>>2]=I;var S=y,i=S>>2,M=m}else{var P=g,D=Me[t+(s+6)],L=Me[t+(s+3)],F=(0|L)==(0|P);do if(F){var X=A+(r+20)|0,j=Se[X>>2];if(0==(0|j)){var U=A+(r+16)|0,x=Se[U>>2];if(0==(0|x)){var z=0,e=z>>2;break}var V=U,B=x}else{var V=X,B=j;_=21}for(;;){var B,V,H=B+20|0,K=Se[H>>2];if(0==(0|K)){var Y=B+16|0,G=Me[Y>>2];if(0==(0|G))break;var V=Y,B=G}else var V=H,B=K}if(V>>>0>>0)throw Ka(),"Reached an unreachable!";Se[V>>2]=0;var z=B,e=z>>2}else{var W=Me[t+(s+2)];if(W>>>0>>0)throw Ka(),"Reached an unreachable!";Se[W+12>>2]=L,Se[L+8>>2]=W;var z=L,e=z>>2}while(0);var z;if(0==(0|D)){var S=y,i=S>>2,M=m;break}var Z=A+(r+28)|0,Q=(Se[Z>>2]<<2)+vi+304|0,q=(0|P)==(0|Se[Q>>2]);do{if(q){if(Se[Q>>2]=z,0!=(0|z))break;var $=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=$;var S=y,i=S>>2,M=m;break e}if(D>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";var J=D+16|0;if((0|Se[J>>2])==(0|P)?Se[J>>2]=z:Se[D+20>>2]=z,0==(0|z)){var S=y,i=S>>2,M=m;break e}}while(0);if(z>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[e+6]=D;var rr=Me[t+(s+4)];if(0!=(0|rr)){if(rr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[e+4]=rr,Se[rr+24>>2]=z}var ar=Me[t+(s+5)];if(0==(0|ar)){var S=y,i=S>>2,M=m;break}if(ar>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[e+5]=ar,Se[ar+24>>2]=z;var S=y,i=S>>2,M=m}}else var S=l,i=S>>2,M=h;while(0);var M,S,er=S;if(er>>>0>=d>>>0)break;var ir=r+(h-4)|0,vr=Me[ir>>2];if(0==(1&vr|0))break;var tr=0==(2&vr|0);do{if(tr){if((0|w)==(0|Se[vi+24>>2])){var fr=Se[vi+12>>2]+M|0;Se[vi+12>>2]=fr,Se[vi+24>>2]=S;var _r=1|fr;if(Se[i+1]=_r,(0|S)==(0|Se[vi+20>>2])&&(Se[vi+20>>2]=0,Se[vi+8>>2]=0),fr>>>0<=Me[vi+28>>2]>>>0)break r;ia(0);break r}if((0|w)==(0|Se[vi+20>>2])){var sr=Se[vi+8>>2]+M|0;Se[vi+8>>2]=sr,Se[vi+20>>2]=S;var nr=1|sr;Se[i+1]=nr;var or=er+sr|0;Se[or>>2]=sr;break r}var lr=(vr&-8)+M|0,br=vr>>>3,kr=vr>>>0<256;e:do if(kr){var ur=Me[s+f],cr=Me[((4|h)>>2)+s];if((0|ur)!=(0|cr)){var hr=((vr>>>2&1073741822)<<2)+vi+40|0,dr=(0|ur)==(0|hr);do{if(!dr){if(ur>>>0>2]>>>0){_=66;break}_=63;break}_=63}while(0);do if(63==_){if((0|cr)!=(0|hr)&&cr>>>0>2]>>>0)break;Se[ur+12>>2]=cr,Se[cr+8>>2]=ur;break e}while(0);throw Ka(),"Reached an unreachable!"}var wr=Se[vi>>2]&(1<>2]=wr}else{var pr=d,Er=Me[f+(s+4)],Ar=Me[((4|h)>>2)+s],gr=(0|Ar)==(0|pr);do if(gr){var yr=h+(r+12)|0,mr=Se[yr>>2];if(0==(0|mr)){var Sr=h+(r+8)|0,Mr=Se[Sr>>2];if(0==(0|Mr)){var Cr=0,a=Cr>>2;break}var Rr=Sr,Tr=Mr}else{var Rr=yr,Tr=mr;_=73}for(;;){var Tr,Rr,Or=Tr+20|0,Nr=Se[Or>>2];if(0==(0|Nr)){var Ir=Tr+16|0,Pr=Me[Ir>>2];if(0==(0|Pr))break;var Rr=Ir,Tr=Pr}else var Rr=Or,Tr=Nr}if(Rr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[Rr>>2]=0;var Cr=Tr,a=Cr>>2}else{var Dr=Me[s+f];if(Dr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[Dr+12>>2]=Ar,\nSe[Ar+8>>2]=Dr;var Cr=Ar,a=Cr>>2}while(0);var Cr;if(0==(0|Er))break;var Lr=h+(r+20)|0,Fr=(Se[Lr>>2]<<2)+vi+304|0,Xr=(0|pr)==(0|Se[Fr>>2]);do{if(Xr){if(Se[Fr>>2]=Cr,0!=(0|Cr))break;var jr=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=jr;break e}if(Er>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";var Ur=Er+16|0;if((0|Se[Ur>>2])==(0|pr)?Se[Ur>>2]=Cr:Se[Er+20>>2]=Cr,0==(0|Cr))break e}while(0);if(Cr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+6]=Er;var xr=Me[f+(s+2)];if(0!=(0|xr)){if(xr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+4]=xr,Se[xr+24>>2]=Cr}var zr=Me[f+(s+3)];if(0==(0|zr))break;if(zr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[a+5]=zr,Se[zr+24>>2]=Cr}while(0);if(Se[i+1]=1|lr,Se[er+lr>>2]=lr,(0|S)!=(0|Se[vi+20>>2])){var Vr=lr;break}Se[vi+8>>2]=lr;break r}Se[ir>>2]=vr&-2,Se[i+1]=1|M,Se[er+M>>2]=M;var Vr=M}while(0);var Vr;if(Vr>>>0<256){var Br=Vr>>>2&1073741822,Hr=(Br<<2)+vi+40|0,Kr=Me[vi>>2],Yr=1<<(Vr>>>3),Gr=0==(Kr&Yr|0);do{if(!Gr){var Wr=(Br+2<<2)+vi+40|0,Zr=Me[Wr>>2];if(Zr>>>0>=Me[vi+16>>2]>>>0){var Qr=Zr,qr=Wr;break}throw Ka(),"Reached an unreachable!"}Se[vi>>2]=Kr|Yr;var Qr=Hr,qr=(Br+2<<2)+vi+40|0}while(0);var qr,Qr;Se[qr>>2]=S,Se[Qr+12>>2]=S,Se[i+2]=Qr,Se[i+3]=Hr;break r}var $r=S,Jr=Vr>>>8,ra=0==(0|Jr);do if(ra)var aa=0;else{if(Vr>>>0>16777215){var aa=31;break}var ea=(Jr+1048320|0)>>>16&8,va=Jr<>>16&4,_a=va<>>16&2,na=14-(fa|ea|sa)+(_a<>>15)|0,aa=Vr>>>((na+7|0)>>>0)&1|na<<1}while(0);var aa,oa=(aa<<2)+vi+304|0;Se[i+7]=aa,Se[i+5]=0,Se[i+4]=0;var la=Se[vi+4>>2],ba=1<>2]=ua,Se[oa>>2]=$r,Se[i+6]=oa,Se[i+3]=S,Se[i+2]=S}else{if(31==(0|aa))var ca=0;else var ca=25-(aa>>>1)|0;for(var ca,ha=Vr<>2];;){var da,ha;if((Se[da+4>>2]&-8|0)==(0|Vr)){var wa=da+8|0,pa=Me[wa>>2],Ea=Me[vi+16>>2],Aa=da>>>0>>0;do if(!Aa){if(pa>>>0>>0)break;Se[pa+12>>2]=$r,Se[wa>>2]=$r,Se[i+2]=pa,Se[i+3]=da,Se[i+6]=0;break e}while(0);throw Ka(),"Reached an unreachable!"}var ga=(ha>>>31<<2)+da+16|0,ya=Me[ga>>2];if(0==(0|ya)){if(ga>>>0>=Me[vi+16>>2]>>>0){Se[ga>>2]=$r,Se[i+6]=da,Se[i+3]=S,Se[i+2]=S;break e}throw Ka(),"Reached an unreachable!"}var ha=ha<<1,da=ya}}while(0);var ma=Se[vi+32>>2]-1|0;if(Se[vi+32>>2]=ma,0!=(0|ma))break r;ta();break r}while(0);throw Ka(),"Reached an unreachable!"}while(0)}function ta(){var r=Se[vi+452>>2],a=0==(0|r);r:do if(!a)for(var e=r;;){var e,i=Se[e+8>>2];if(0==(0|i))break r;var e=i}while(0);Se[vi+32>>2]=-1}function fa(r,a){if(0==(0|r))var e=Jr(a),i=e;else var v=la(r,a),i=v;var i;return i}function _a(r,a){var e,i=r>>>0<9;do if(i)var v=Jr(a),t=v;else{var f=r>>>0<16?16:r,_=0==(f-1&f|0);r:do if(_)var s=f;else{if(f>>>0<=16){var s=16;break}for(var n=16;;){var n,o=n<<1;if(o>>>0>=f>>>0){var s=o;break r}var n=o}}while(0);var s;if((-64-s|0)>>>0>a>>>0){if(a>>>0<11)var l=16;else var l=a+11&-8;var l,b=Jr(l+(s+12)|0);if(0==(0|b)){var t=0;break}var k=b-8|0;if(0==((b>>>0)%(s>>>0)|0))var u=k,c=0;else{var h=b+(s-1)&-s,d=h-8|0,w=k;if((d-w|0)>>>0>15)var p=d;else var p=h+(s-8)|0;var p,E=p-w|0,e=(b-4|0)>>2,A=Se[e],g=(A&-8)-E|0;if(0==(3&A|0)){var y=Se[k>>2]+E|0;Se[p>>2]=y,Se[p+4>>2]=g;var u=p,c=0}else{var m=p+4|0,S=g|1&Se[m>>2]|2;Se[m>>2]=S;var M=g+(p+4)|0,C=1|Se[M>>2];Se[M>>2]=C;var R=E|1&Se[e]|2;Se[e]=R;var T=b+(E-4)|0,O=1|Se[T>>2];Se[T>>2]=O;var u=p,c=b}}var c,u,N=u+4|0,I=Me[N>>2],P=0==(3&I|0);do if(P)var D=0;else{var L=I&-8;if(L>>>0<=(l+16|0)>>>0){var D=0;break}var F=L-l|0;Se[N>>2]=l|1&I|2,Se[u+(4|l)>>2]=3|F;var X=u+(4|L)|0,j=1|Se[X>>2];Se[X>>2]=j;var D=l+(u+8)|0}while(0);var D;0!=(0|c)&&va(c),0!=(0|D)&&va(D);var t=u+8|0}else{var U=Je();Se[U>>2]=12;var t=0}}while(0);var t;return t}function sa(r,a,e,i){var v,t;0==(0|Se[ti>>2])&&ba();var f=0==(0|i),_=0==(0|r);do{if(f){if(_){var s=Jr(0),n=s;t=30;break}var o=r<<2;if(o>>>0<11){var l=0,b=16;t=9;break}var l=0,b=o+11&-8;t=9;break}if(_){var n=i;t=30;break}var l=i,b=0;t=9;break}while(0);do if(9==t){var b,l,k=0==(1&e|0);r:do if(k){if(_){var u=0,c=0;break}for(var h=0,d=0;;){var d,h,w=Me[a+(d<<2)>>2];if(w>>>0<11)var p=16;else var p=w+11&-8;var p,E=p+h|0,A=d+1|0;if((0|A)==(0|r)){var u=0,c=E;break r}var h=E,d=A}}else{var g=Me[a>>2];if(g>>>0<11)var y=16;else var y=g+11&-8;var y,u=y,c=y*r|0}while(0);var c,u,m=Jr(b-4+c|0);if(0==(0|m)){var n=0;break}var S=m-8|0,M=Se[m-4>>2]&-8;if(0!=(2&e|0)){var C=-4-b+M|0;Fa(m,0,C,1)}if(0==(0|l)){var R=m+c|0,T=M-c|3;Se[m+(c-4)>>2]=T;var O=R,v=O>>2,N=c}else var O=l,v=O>>2,N=M;var N,O;Se[v]=m;var I=r-1|0,P=0==(0|I);r:do if(P)var D=S,L=N;else if(0==(0|u))for(var F=S,X=N,j=0;;){var j,X,F,U=Me[a+(j<<2)>>2];if(U>>>0<11)var x=16;else var x=U+11&-8;var x,z=X-x|0;Se[F+4>>2]=3|x;var V=F+x|0,B=j+1|0;if(Se[(B<<2>>2)+v]=x+(F+8)|0,(0|B)==(0|I)){var D=V,L=z;break r}var F=V,X=z,j=B}else for(var H=3|u,K=u+8|0,Y=S,G=N,W=0;;){var W,G,Y,Z=G-u|0;Se[Y+4>>2]=H;var Q=Y+u|0,q=W+1|0;if(Se[(q<<2>>2)+v]=Y+K|0,(0|q)==(0|I)){var D=Q,L=Z;break r}var Y=Q,G=Z,W=q}while(0);var L,D;Se[D+4>>2]=3|L;var n=O}while(0);var n;return n}function na(r){var a=r>>2;0==(0|Se[ti>>2])&&ba();var e=Me[vi+24>>2];if(0==(0|e))var i=0,v=0,t=0,f=0,_=0,s=0,n=0;else{for(var o=Me[vi+12>>2],l=o+40|0,b=vi+444|0,k=l,u=l,c=1;;){var c,u,k,b,h=Me[b>>2],d=h+8|0;if(0==(7&d|0))var w=0;else var w=7&-d;for(var w,p=b+4|0,E=h+w|0,A=c,g=u,y=k;;){var y,g,A,E;if(E>>>0>>0)break;if(E>>>0>=(h+Se[p>>2]|0)>>>0|(0|E)==(0|e))break;var m=Se[E+4>>2];if(7==(0|m))break;var S=m&-8,M=S+y|0;if(1==(3&m|0))var C=A+1|0,R=S+g|0;else var C=A,R=g;var R,C,E=E+S|0,A=C,g=R,y=M}var T=Me[b+8>>2];if(0==(0|T))break;var b=T,k=y,u=g,c=A}var O=Se[vi+432>>2],i=y,v=A,t=o,f=g,_=O-y|0,s=Se[vi+436>>2],n=O-g|0}var n,s,_,f,t,v,i;Se[a]=i,Se[a+1]=v,Se[a+2]=0,Se[a+3]=0,Se[a+4]=_,Se[a+5]=s,Se[a+6]=0,Se[a+7]=n,Se[a+8]=f,Se[a+9]=t}function oa(){0==(0|Se[ti>>2])&&ba();var r=Me[vi+24>>2],a=0==(0|r);r:do if(a)var e=0,i=0,v=0;else for(var t=Se[vi+436>>2],f=Me[vi+432>>2],_=vi+444|0,s=f-40-Se[vi+12>>2]|0;;){var s,_,n=Me[_>>2],o=n+8|0;if(0==(7&o|0))var l=0;else var l=7&-o;for(var l,b=_+4|0,k=n+l|0,u=s;;){var u,k;if(k>>>0>>0)break;if(k>>>0>=(n+Se[b>>2]|0)>>>0|(0|k)==(0|r))break;var c=Se[k+4>>2];if(7==(0|c))break;var h=c&-8,d=1==(3&c|0)?h:0,w=u-d|0,k=k+h|0,u=w}var p=Me[_+8>>2];if(0==(0|p)){var e=t,i=f,v=u;break r}var _=p,s=u}while(0);var v,i,e,E=Se[Se[qe>>2]+12>>2],A=(Qa(E,0|He.__str339,(ne=Oe,Oe+=4,Se[ne>>2]=e,ne)),Se[Se[qe>>2]+12>>2]),g=(Qa(A,0|He.__str1340,(ne=Oe,Oe+=4,Se[ne>>2]=i,ne)),Se[Se[qe>>2]+12>>2]);Qa(g,0|He.__str2341,(ne=Oe,Oe+=4,Se[ne>>2]=v,ne))}function la(r,a){var e,i,v,t=a>>>0>4294967231;r:do{if(!t){var f=r-8|0,_=f,i=(r-4|0)>>2,s=Me[i],n=s&-8,o=n-8|0,l=r+o|0,b=f>>>0>2]>>>0;do if(!b){var k=3&s;if(!(1!=(0|k)&(0|o)>-8))break;var e=(r+(n-4)|0)>>2;if(0==(1&Se[e]|0))break;if(a>>>0<11)var u=16;else var u=a+11&-8;var u,c=0==(0|k);do{if(c){var h=ka(_,u),d=0,w=h;v=17;break}if(n>>>0>>0){if((0|l)!=(0|Se[vi+24>>2])){v=21;break}var p=Se[vi+12>>2]+n|0;if(p>>>0<=u>>>0){v=21;break}var E=p-u|0,A=r+(u-8)|0;Se[i]=u|1&s|2;var g=1|E;Se[r+(u-4)>>2]=g,Se[vi+24>>2]=A,Se[vi+12>>2]=E;var d=0,w=_;v=17;break}var y=n-u|0;if(y>>>0<=15){var d=0,w=_;v=17;break}Se[i]=u|1&s|2,Se[r+(u-4)>>2]=3|y;var m=1|Se[e];Se[e]=m;var d=r+u|0,w=_;v=17;break}while(0);do if(17==v){var w,d;if(0==(0|w))break;0!=(0|d)&&va(d);var S=w+8|0;break r}while(0);var M=Jr(a);if(0==(0|M)){var S=0;break r}var C=0==(3&Se[i]|0)?8:4,R=n-C|0,T=R>>>0>>0?R:a;Pa(M,r,T,1),va(r);var S=M;break r}while(0);throw Ka(),"Reached an unreachable!"}var O=Je();Se[O>>2]=12;var S=0}while(0);var S;return S}function ba(){if(0==(0|Se[ti>>2])){var r=qa(8);if(0!=(r-1&r|0))throw Ka(),"Reached an unreachable!";Se[ti+8>>2]=r,Se[ti+4>>2]=r,Se[ti+12>>2]=-1,Se[ti+16>>2]=2097152,Se[ti+20>>2]=0,Se[vi+440>>2]=0;var a=$a(0);Se[ti>>2]=a&-16^1431655768}}function ka(r,a){var e=Se[r+4>>2]&-8,i=a>>>0<256;do if(i)var v=0;else{if(e>>>0>=(a+4|0)>>>0&&(e-a|0)>>>0<=Se[ti+8>>2]<<1>>>0){var v=r;break}var v=0}while(0);var v;return v}function ua(r){for(var a,e=vi+444|0,a=e>>2;;){var e,i=Me[a];if(i>>>0<=r>>>0&&(i+Se[a+1]|0)>>>0>r>>>0){var v=e;break}var t=Me[a+2];if(0==(0|t)){var v=0;break}var e=t,a=e>>2}var v;return v}function ca(r,a){var e=r,i=r+8|0;if(0==(7&i|0))var v=0;else var v=7&-i;var v,t=a-v|0;Se[vi+24>>2]=e+v|0,Se[vi+12>>2]=t,Se[v+(e+4)>>2]=1|t,Se[a+(e+4)>>2]=40;var f=Se[ti+16>>2];Se[vi+28>>2]=f}function ha(){for(var r=0;;){var r,a=r<<1,e=(a<<2)+vi+40|0;Se[vi+(a+3<<2)+40>>2]=e,Se[vi+(a+2<<2)+40>>2]=e;var i=r+1|0;if(32==(0|i))break;var r=i}}function da(r,a,e){var i,v,t,f,_=a>>2,s=r>>2,n=r+8|0;if(0==(7&n|0))var o=0;else var o=7&-n;var o,l=a+8|0;if(0==(7&l|0))var b=0,t=b>>2;else var b=7&-l,t=b>>2;var b,k=a+b|0,u=k,c=o+e|0,v=c>>2,h=r+c|0,d=h,w=k-(r+o)-e|0;Se[(o+4>>2)+s]=3|e;var p=(0|u)==(0|Se[vi+24>>2]);r:do if(p){var E=Se[vi+12>>2]+w|0;Se[vi+12>>2]=E,Se[vi+24>>2]=d;var A=1|E;Se[v+(s+1)]=A}else if((0|u)==(0|Se[vi+20>>2])){var g=Se[vi+8>>2]+w|0;Se[vi+8>>2]=g,Se[vi+20>>2]=d;var y=1|g;Se[v+(s+1)]=y;var m=r+g+c|0;Se[m>>2]=g}else{var S=Me[t+(_+1)];if(1==(3&S|0)){var M=S&-8,C=S>>>3,R=S>>>0<256;a:do if(R){var T=Me[((8|b)>>2)+_],O=Me[t+(_+3)];if((0|T)!=(0|O)){var N=((S>>>2&1073741822)<<2)+vi+40|0,I=(0|T)==(0|N);do{if(!I){if(T>>>0>2]>>>0){f=18;break}f=15;break}f=15}while(0);do if(15==f){if((0|O)!=(0|N)&&O>>>0>2]>>>0)break;Se[T+12>>2]=O,Se[O+8>>2]=T;break a}while(0);throw Ka(),"Reached an unreachable!"}var P=Se[vi>>2]&(1<>2]=P}else{var D=k,L=Me[((24|b)>>2)+_],F=Me[t+(_+3)],X=(0|F)==(0|D);do if(X){var j=16|b,U=j+(a+4)|0,x=Se[U>>2];if(0==(0|x)){var z=a+j|0,V=Se[z>>2];if(0==(0|V)){var B=0,i=B>>2;break}var H=z,K=V}else{var H=U,K=x;f=25}for(;;){var K,H,Y=K+20|0,G=Se[Y>>2];if(0==(0|G)){var W=K+16|0,Z=Me[W>>2];if(0==(0|Z))break;var H=W,K=Z}else var H=Y,K=G}if(H>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[H>>2]=0;var B=K,i=B>>2}else{var Q=Me[((8|b)>>2)+_];if(Q>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[Q+12>>2]=F,Se[F+8>>2]=Q;var B=F,i=B>>2}while(0);var B;if(0==(0|L))break;var q=b+(a+28)|0,$=(Se[q>>2]<<2)+vi+304|0,J=(0|D)==(0|Se[$>>2]);do{if(J){if(Se[$>>2]=B,0!=(0|B))break;var rr=Se[vi+4>>2]&(1<>2]^-1);Se[vi+4>>2]=rr;break a}if(L>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";var ar=L+16|0;if((0|Se[ar>>2])==(0|D)?Se[ar>>2]=B:Se[L+20>>2]=B,0==(0|B))break a}while(0);if(B>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[i+6]=L;var er=16|b,ir=Me[(er>>2)+_];if(0!=(0|ir)){if(ir>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[i+4]=ir,Se[ir+24>>2]=B}var vr=Me[(er+4>>2)+_];if(0==(0|vr))break;if(vr>>>0>2]>>>0)throw Ka(),"Reached an unreachable!";Se[i+5]=vr,Se[vr+24>>2]=B}while(0);var tr=a+(M|b)|0,fr=M+w|0}else var tr=u,fr=w;var fr,tr,_r=tr+4|0,sr=Se[_r>>2]&-2;if(Se[_r>>2]=sr,Se[v+(s+1)]=1|fr,Se[(fr>>2)+s+v]=fr,fr>>>0<256){var nr=fr>>>2&1073741822,or=(nr<<2)+vi+40|0,lr=Me[vi>>2],br=1<<(fr>>>3),kr=0==(lr&br|0);do{if(!kr){var ur=(nr+2<<2)+vi+40|0,cr=Me[ur>>2];if(cr>>>0>=Me[vi+16>>2]>>>0){var hr=cr,dr=ur;break}throw Ka(),"Reached an unreachable!"}Se[vi>>2]=lr|br;var hr=or,dr=(nr+2<<2)+vi+40|0}while(0);var dr,hr;Se[dr>>2]=d,Se[hr+12>>2]=d,Se[v+(s+2)]=hr,Se[v+(s+3)]=or}else{var wr=h,pr=fr>>>8,Er=0==(0|pr);do if(Er)var Ar=0;else{if(fr>>>0>16777215){var Ar=31;break}var gr=(pr+1048320|0)>>>16&8,yr=pr<>>16&4,Sr=yr<>>16&2,Cr=14-(mr|gr|Mr)+(Sr<>>15)|0,Ar=fr>>>((Cr+7|0)>>>0)&1|Cr<<1}while(0);var Ar,Rr=(Ar<<2)+vi+304|0;Se[v+(s+7)]=Ar;var Tr=c+(r+16)|0;Se[v+(s+5)]=0,Se[Tr>>2]=0;var Or=Se[vi+4>>2],Nr=1<>2]=Ir,Se[Rr>>2]=wr,Se[v+(s+6)]=Rr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr}else{if(31==(0|Ar))var Pr=0;else var Pr=25-(Ar>>>1)|0;for(var Pr,Dr=fr<>2];;){var Lr,Dr;if((Se[Lr+4>>2]&-8|0)==(0|fr)){var Fr=Lr+8|0,Xr=Me[Fr>>2],jr=Me[vi+16>>2],Ur=Lr>>>0>>0;do if(!Ur){if(Xr>>>0>>0)break;Se[Xr+12>>2]=wr,Se[Fr>>2]=wr,Se[v+(s+2)]=Xr,Se[v+(s+3)]=Lr,Se[v+(s+6)]=0;break r}while(0);throw Ka(),"Reached an unreachable!"}var xr=(Dr>>>31<<2)+Lr+16|0,zr=Me[xr>>2];if(0==(0|zr)){if(xr>>>0>=Me[vi+16>>2]>>>0){Se[xr>>2]=wr,Se[v+(s+6)]=Lr,Se[v+(s+3)]=wr,Se[v+(s+2)]=wr;break r}throw Ka(),"Reached an unreachable!"}var Dr=Dr<<1,Lr=zr}}}}while(0);return r+(8|o)|0}function wa(r){return 0|He.__str3342}function pa(r){return 0|He.__str14343}function Ea(r){Se[r>>2]=si+8|0}function Aa(r){0!=(0|r)&&va(r)}function ga(r){ya(r);var a=r;Aa(a)}function ya(r){var a=0|r;Ye(a)}function ma(r){var a=0|r;Ea(a),Se[r>>2]=ni+8|0}function Sa(r){var a=0|r;ya(a);var e=r;Aa(e)}function Ma(r,a){var e,i,v=Me[vi+24>>2],i=v>>2,t=v,f=ua(t),_=Se[f>>2],s=Se[f+4>>2],n=_+s|0,o=_+(s-39)|0;if(0==(7&o|0))var l=0;else var l=7&-o;var l,b=_+(s-47)+l|0,k=b>>>0<(v+16|0)>>>0?t:b,u=k+8|0,e=u>>2,c=u,h=r,d=a-40|0;ca(h,d);var w=k+4|0;Se[w>>2]=27,Se[e]=Se[vi+444>>2],Se[e+1]=Se[vi+448>>2],Se[e+2]=Se[vi+452>>2],Se[e+3]=Se[vi+456>>2],Se[vi+444>>2]=r,Se[vi+448>>2]=a,Se[vi+456>>2]=0,Se[vi+452>>2]=c;var p=k+28|0;Se[p>>2]=7;var E=(k+32|0)>>>0>>0;r:do if(E)for(var A=p;;){var A,g=A+4|0;if(Se[g>>2]=7,(A+8|0)>>>0>=n>>>0)break r;var A=g}while(0);var y=(0|k)==(0|t);r:do if(!y){var m=k-v|0,S=t+m|0,M=m+(t+4)|0,C=Se[M>>2]&-2;Se[M>>2]=C;var R=1|m;Se[i+1]=R;var T=S;if(Se[T>>2]=m,m>>>0<256){var O=m>>>2&1073741822,N=(O<<2)+vi+40|0,I=Me[vi>>2],P=1<<(m>>>3),D=0==(I&P|0);do{if(!D){var L=(O+2<<2)+vi+40|0,F=Me[L>>2];if(F>>>0>=Me[vi+16>>2]>>>0){var X=F,j=L;break}throw Ka(),"Reached an unreachable!"}var U=I|P;Se[vi>>2]=U;var X=N,j=(O+2<<2)+vi+40|0}while(0);var j,X;Se[j>>2]=v,Se[X+12>>2]=v,Se[i+2]=X,Se[i+3]=N}else{var x=v,z=m>>>8,V=0==(0|z);do if(V)var B=0;else{if(m>>>0>16777215){var B=31;break}var H=(z+1048320|0)>>>16&8,K=z<>>16&4,G=K<>>16&2,Z=14-(Y|H|W)+(G<>>15)|0,B=m>>>((Z+7|0)>>>0)&1|Z<<1}while(0);var B,Q=(B<<2)+vi+304|0;Se[i+7]=B,Se[i+5]=0,Se[i+4]=0;var q=Se[vi+4>>2],$=1<>2]=J,Se[Q>>2]=x,Se[i+6]=Q,Se[i+3]=v,Se[i+2]=v}else{if(31==(0|B))var rr=0;else var rr=25-(B>>>1)|0;for(var rr,ar=m<>2];;){var er,ar;if((Se[er+4>>2]&-8|0)==(0|m)){var ir=er+8|0,vr=Me[ir>>2],tr=Me[vi+16>>2],fr=er>>>0>>0;do if(!fr){if(vr>>>0>>0)break;Se[vr+12>>2]=x,Se[ir>>2]=x,Se[i+2]=vr,Se[i+3]=er,Se[i+6]=0;break r}while(0);throw Ka(),"Reached an unreachable!"}var _r=(ar>>>31<<2)+er+16|0,sr=Me[_r>>2];if(0==(0|sr)){if(_r>>>0>=Me[vi+16>>2]>>>0){Se[_r>>2]=x,Se[i+6]=er,Se[i+3]=v,Se[i+2]=v;break r}throw Ka(),"Reached an unreachable!"}var ar=ar<<1,er=sr}}}}while(0)}function Ca(r){return d(r)}function Ra(r,a){var e=0;do Ae[r+e]=Ae[a+e],e++;while(0!=Ae[a+e-1]);return r}function Ta(){var r=Ta;return r.LLVM_SAVEDSTACKS||(r.LLVM_SAVEDSTACKS=[]),r.LLVM_SAVEDSTACKS.push(le.stackSave()),r.LLVM_SAVEDSTACKS.length-1}function Oa(r){var a=Ta,e=a.LLVM_SAVEDSTACKS[r];a.LLVM_SAVEDSTACKS.splice(r,1),le.stackRestore(e)}function Na(r,a,e){for(var i=0;it?1:-1;i++}return 0}function Ia(r,a){var e=Ca(r),i=0;do Ae[r+e+i]=Ae[a+i],i++;while(0!=Ae[a+i-1]);return r}function Pa(r,a,e,i){if(e>=20&&a%2==r%2)if(a%4==r%4){for(var v=a+e;a%4;)Ae[r++]=Ae[a++];for(var t=a>>2,f=r>>2,_=v>>2;t<_;)Se[f++]=Se[t++];for(a=t<<2,r=f<<2;a>1,n=r>>1,o=v>>1;st?1:-1}return 0}function Fa(r,a,e,i){if(e>=20){for(var v=r+e;r%4;)Ae[r++]=a;a<0&&(a+=256);for(var t=r>>2,f=v>>2,_=a|a<<8|a<<16|a<<24;t>2],xe[1]=Se[a+_+4>>2],e=ze[0]):"i64"==r?e=[Se[a+_>>2],Se[a+_+4>>2]]:(r="i32",e=Se[a+_>>2]),_+=le.getNativeFieldSize(r),e}for(var i,v,t,f=r,_=0,s=[];;){var n=f;if(i=Ae[f],0===i)break;if(v=Ae[f+1],i=="%".charCodeAt(0)){var o=!1,l=!1,b=!1,k=!1;r:for(;;){switch(v){case"+".charCodeAt(0):o=!0;break;case"-".charCodeAt(0):l=!0;break;case"#".charCodeAt(0):b=!0;break;case"0".charCodeAt(0):if(k)break r;k=!0;break;default:break r}f++,v=Ae[f+1]}var u=0;if(v=="*".charCodeAt(0))u=e("i32"),f++,v=Ae[f+1];else for(;v>="0".charCodeAt(0)&&v<="9".charCodeAt(0);)u=10*u+(v-"0".charCodeAt(0)),f++,v=Ae[f+1];var c=!1;if(v==".".charCodeAt(0)){var h=0;if(c=!0,f++,v=Ae[f+1],v=="*".charCodeAt(0))h=e("i32"),f++;else for(;;){var d=Ae[f+1];if(d<"0".charCodeAt(0)||d>"9".charCodeAt(0))break;h=10*h+(d-"0".charCodeAt(0)),f++}v=Ae[f+1]}else var h=6;var E;switch(String.fromCharCode(v)){case"h":var A=Ae[f+2];A=="h".charCodeAt(0)?(f++,E=1):E=2;break;case"l":var A=Ae[f+2];A=="l".charCodeAt(0)?(f++,E=8):E=4;break;case"L":case"q":case"j":E=8;break;case"z":case"t":case"I":E=4;break;default:E=null}if(E&&f++,v=Ae[f+1],["d","i","u","o","x","X","p"].indexOf(String.fromCharCode(v))!=-1){var m=v=="d".charCodeAt(0)||v=="i".charCodeAt(0);E=E||4;var t=e("i"+8*E);if(8==E&&(t=le.makeBigInt(t[0],t[1],v=="u".charCodeAt(0))),E<=4){var S=Math.pow(256,E)-1;t=(m?y:g)(t&S,8*E)}var M,C=Math.abs(t),R="";if(v=="d".charCodeAt(0)||v=="i".charCodeAt(0))M=y(t,8*E,1).toString(10);else if(v=="u".charCodeAt(0))M=g(t,8*E,1).toString(10),t=Math.abs(t);else if(v=="o".charCodeAt(0))M=(b?"0":"")+C.toString(8);else if(v=="x".charCodeAt(0)||v=="X".charCodeAt(0)){if(R=b?"0x":"",t<0){t=-t,M=(C-1).toString(16);for(var T=[],O=0;OP&&P>=-4?(v=(v=="g".charCodeAt(0)?"f":"F").charCodeAt(0),h-=P+1):(v=(v=="g".charCodeAt(0)?"e":"E").charCodeAt(0),h--),I=Math.min(h,20)}v=="e".charCodeAt(0)||v=="E".charCodeAt(0)?(M=t.toExponential(I),/[eE][-+]\\d$/.test(M)&&(M=M.slice(0,-1)+"0"+M.slice(-1))):v!="f".charCodeAt(0)&&v!="F".charCodeAt(0)||(M=t.toFixed(I));var D=M.split("e");if(N&&!b)for(;D[0].length>1&&D[0].indexOf(".")!=-1&&("0"==D[0].slice(-1)||"."==D[0].slice(-1));)D[0]=D[0].slice(0,-1);else for(b&&M.indexOf(".")==-1&&(D[0]+=".");h>I++;)D[0]+="0";M=D[0]+(D.length>1?"e"+D[1]:""),v=="E".charCodeAt(0)&&(M=M.toUpperCase()),o&&t>=0&&(M="+"+M)}else M=(t<0?"-":"")+"inf",k=!1;for(;M.lengthh&&(L=L.slice(0,h))):L=p("(null)",!0),!l)for(;L.length0;)s.push(" ".charCodeAt(0));l||s.push(e("i8"))}else if(v=="n".charCodeAt(0)){var X=e("i32*");Se[X>>2]=s.length}else if(v=="%".charCodeAt(0))s.push(i);else for(var O=n;O="0".charCodeAt(0)&&r<="9".charCodeAt(0)}function Ha(r){for(var a;(a=Ae[r])&&Va(a);)r++;if(!a||!Ba(a))return 0;for(var e=r;(a=Ae[e])&&Ba(a);)e++;return Math.floor(Number(s(r).substr(0,e-r)))}function Ka(r){throw ke=!0,"ABORT: "+r+", at "+(new Error).stack}function Ya(r){return Ya.ret||(Ya.ret=_([0],"i32",we)),Se[Ya.ret>>2]=r,r}function Ga(r,a,e,i){var v=$e.streams[r];if(!v||v.object.isDevice)return Ya(Ge.EBADF),-1;if(v.isWrite){if(v.object.isFolder)return Ya(Ge.EISDIR),-1;if(e<0||i<0)return Ya(Ge.EINVAL),-1;for(var t=v.object.contents;t.length>2]=a),a}function Ja(){return Ya.ret}function re(r){var a=re;a.called||(Ie=o(Ie),a.called=!0);var e=Ie;return 0!=r&&le.staticAlloc(r),e}function ae(){return Se[ae.buf>>2]}function ee(r){r=r||Module.arguments,k();var a=null;return Module._main&&(a=Module.callMain(r),Module.noExitRuntime||u()),a}var ie=[],ve=false,te="object"==typeof window,fe="function"==typeof importScripts,_e=!te&&!ve&&!fe;if(ve){print=function(r){process.stdout.write(r+"\\n")},printErr=function(r){process.stderr.write(r+"\\n")};var se=require("fs");read=function(r){var a=se.readFileSync(r).toString();return a||"/"==r[0]||(r=__dirname.split("/").slice(0,-1).join("/")+"/src/"+r,a=se.readFileSync(r).toString()),a},load=function(a){r(read(a))},ie=process.argv.slice(2)}else if(_e)this.read||(this.read=function(r){snarf(r)}),"undefined"!=typeof scriptArgs?ie=scriptArgs:"undefined"!=typeof arguments&&(ie=arguments);else if(te)this.print=printErr=function(r){console.log(r)},this.read=function(r){var a=new XMLHttpRequest;return a.open("GET",r,!1),a.send(null),a.responseText},this.arguments&&(ie=arguments);else{if(!fe)throw"Unknown runtime environment. Where are we?";this.load=importScripts}"undefined"==typeof load&&"undefined"!=typeof read&&(this.load=function(a){r(read(a))}),"undefined"==typeof printErr&&(this.printErr=function(){}),"undefined"==typeof print&&(this.print=printErr);try{this.Module=Module}catch(r){this.Module=Module={}}Module.arguments||(Module.arguments=ie),Module.print&&(print=Module.print);var ne,oe,le={stackSave:function(){return Oe},stackRestore:function(r){Oe=r},forceAlign:function(r,a){if(a=a||4,1==a)return r;if(isNumber(r)&&isNumber(a))return Math.ceil(r/a)*a;if(isNumber(a)&&isPowerOfTwo(a)){var e=log2(a);return"(((("+r+")+"+(a-1)+")>>"+e+")<<"+e+")"}return"Math.ceil(("+r+")/"+a+")*"+a},isNumberType:function(r){return r in le.INT_TYPES||r in le.FLOAT_TYPES},isPointerType:function(r){return"*"==r[r.length-1]},isStructType:function(r){return!isPointerType(r)&&(!!/^\\[\\d+\\ x\\ (.*)\\]/.test(r)||(!!/?/.test(r)||"%"==r[0]))},INT_TYPES:{i1:0,i8:0,i16:0,i32:0,i64:0},FLOAT_TYPES:{float:0,double:0},bitshift64:function(r,e,i,v){var t=Math.pow(2,v)-1;if(v<32)switch(i){case"shl":return[r<>>32-v];case"ashr":return[(r>>>v|(e&t)<<32-v)>>0>>>0,e>>v>>>0];case"lshr":return[(r>>>v|(e&t)<<32-v)>>>0,e>>>v]}else if(32==v)switch(i){case"shl":return[0,r];case"ashr":return[e,(0|e)<0?t:0];case"lshr":return[e,0]}else switch(i){case"shl":return[0,r<>v-32>>>0,(0|e)<0?t:0];case"lshr":return[e>>>v-32,0]}a("unknown bitshift64 op: "+[value,i,v])},or64:function(r,a){var e=0|r|(0|a),i=4294967296*(Math.round(r/4294967296)|Math.round(a/4294967296));return e+i},and64:function(r,a){var e=(0|r)&(0|a),i=4294967296*(Math.round(r/4294967296)&Math.round(a/4294967296));return e+i},xor64:function(r,a){var e=(0|r)^(0|a),i=4294967296*(Math.round(r/4294967296)^Math.round(a/4294967296));return e+i},getNativeTypeSize:function(r,a){if(1==le.QUANTUM_SIZE)return 1;var i={"%i1":1,"%i8":1,"%i16":2,"%i32":4,"%i64":8,"%float":4,"%double":8}["%"+r];if(!i)if("*"==r[r.length-1])i=le.QUANTUM_SIZE;else if("i"==r[0]){var v=parseInt(r.substr(1));e(v%8==0),i=v/8}return i},getNativeFieldSize:function(r){return Math.max(le.getNativeTypeSize(r),le.QUANTUM_SIZE)},dedup:function(r,a){var e={};return a?r.filter(function(r){return!e[r[a]]&&(e[r[a]]=!0,!0)}):r.filter(function(r){return!e[r]&&(e[r]=!0,!0)})},set:function(){for(var r="object"==typeof arguments[0]?arguments[0]:arguments,a={},e=0;e=0&&a.push(f-e),e=f,f}),r.flatSize=le.alignMemory(r.flatSize,r.alignSize),0==a.length?r.flatFactor=r.flatSize:1==le.dedup(a).length&&(r.flatFactor=a[0]),r.needsFlattening=1!=r.flatFactor,r.flatIndexes},generateStructInfo:function(r,a,i){var v,t;if(a){if(i=i||0,v=("undefined"==typeof Types?le.typeInfo:Types.types)[a],!v)return null;e(v.fields.length===r.length,"Number of named fields must match the type for "+a),t=v.flatIndexes}else{var v={fields:r.map(function(r){return r[0]})};t=le.calculateStructAlignment(v)}var f={__size__:v.flatSize};return a?r.forEach(function(r,a){if("string"==typeof r)f[r]=t[a]+i;else{var e;for(var _ in r)e=_;f[e]=le.generateStructInfo(r[e],v.fields[a],t[a])}}):r.forEach(function(r,a){f[r[1]]=t[a]}),f},stackAlloc:function(r){var a=Oe;return Oe+=r,Oe=Oe+3>>2<<2,a},staticAlloc:function(r){var a=Ie;return Ie+=r,Ie=Ie+3>>2<<2,Ie>=Le&&l(),a},alignMemory:function(r,a){var e=r=Math.ceil(r/(a?a:4))*(a?a:4);return e},makeBigInt:function(r,a,e){var i=e?(r>>>0)+4294967296*(a>>>0):(r>>>0)+4294967296*(0|a);return i},QUANTUM_SIZE:4,__dummy__:0},be={MAX_ALLOWED:0,corrections:0,sigs:{},note:function(r,e,i){e||(this.corrections++,this.corrections>=this.MAX_ALLOWED&&a("\\n\\nToo many corrections!"))},print:function(){}},ke=!1,ue=0,ce=this;Module.ccall=i,Module.setValue=t,Module.getValue=f;var he=0,de=1,we=2;Module.ALLOC_NORMAL=he,Module.ALLOC_STACK=de,Module.ALLOC_STATIC=we,Module.allocate=_,Module.Pointer_stringify=s,Module.Array_stringify=n;var pe,Ee,Ae,ge,ye,me,Se,Me,Ce,Re,Te,Oe,Ne,Ie,Pe=4096,De=Module.TOTAL_STACK||5242880,Le=Module.TOTAL_MEMORY||10485760;Module.FAST_MEMORY||2097152;e(!!(Int32Array&&Float64Array&&new Int32Array(1).subarray&&new Int32Array(1).set),"Cannot fallback to non-typed array case: Code is too specialized");var Fe=new ArrayBuffer(Le);Ae=new Int8Array(Fe),ye=new Int16Array(Fe),Se=new Int32Array(Fe),ge=new Uint8Array(Fe),me=new Uint16Array(Fe),Me=new Uint32Array(Fe),Ce=new Float32Array(Fe),Re=new Float64Array(Fe),Se[0]=255,e(255===ge[0]&&0===ge[3],"Typed arrays 2 must be run on a little-endian system");var Xe=p("(null)");Ie=Xe.length;for(var je=0;je>2)),ze=(Ce.subarray(Ue>>2),Re.subarray(Ue>>3));Ne=Ue+8,Ie=o(Ne);var Ve=[],Be=[];Module.Array_copy=c,Module.TypedArray_copy=h,Module.String_len=d,Module.String_copy=w,Module.intArrayFromString=p,Module.intArrayToString=E,Module.writeStringToMemory=A;var He=[],Ke=0;O.X=1,N.X=1,V.X=1,H.X=1,G.X=1,W.X=1,q.X=1,$.X=1,rr.X=1,ar.X=1,er.X=1,vr.X=1,nr.X=1,or.X=1,kr.X=1,hr.X=1,Ar.X=1,Sr.X=1,Tr.X=1,Ir.X=1,Pr.X=1,Dr.X=1,Lr.X=1,Fr.X=1,Xr.X=1,zr.X=1,Vr.X=1,Br.X=1,Gr.X=1,$r.X=1,Module._malloc=Jr,Jr.X=1,ra.X=1,aa.X=1,ea.X=1,ia.X=1,Module._free=va,va.X=1,_a.X=1,sa.X=1,na.X=1,oa.X=1,la.X=1,da.X=1,Ma.X=1;var Ye,Ge={E2BIG:7,EACCES:13,EADDRINUSE:98,EADDRNOTAVAIL:99,EAFNOSUPPORT:97,EAGAIN:11,EALREADY:114,EBADF:9,EBADMSG:74,EBUSY:16,ECANCELED:125,ECHILD:10,ECONNABORTED:103,ECONNREFUSED:111,ECONNRESET:104,EDEADLK:35,EDESTADDRREQ:89,EDOM:33,EDQUOT:122,EEXIST:17,EFAULT:14,EFBIG:27,EHOSTUNREACH:113,EIDRM:43,EILSEQ:84,EINPROGRESS:115,EINTR:4,EINVAL:22,EIO:5,EISCONN:106,EISDIR:21,ELOOP:40,EMFILE:24,EMLINK:31,EMSGSIZE:90,EMULTIHOP:72,ENAMETOOLONG:36,ENETDOWN:100,ENETRESET:102,ENETUNREACH:101,ENFILE:23,ENOBUFS:105,ENODATA:61,ENODEV:19,ENOENT:2,ENOEXEC:8,ENOLCK:37,ENOLINK:67,ENOMEM:12,ENOMSG:42,ENOPROTOOPT:92,ENOSPC:28,ENOSR:63,ENOSTR:60,ENOSYS:38,ENOTCONN:107,ENOTDIR:20,ENOTEMPTY:39,ENOTRECOVERABLE:131,ENOTSOCK:88,ENOTSUP:95,ENOTTY:25,ENXIO:6,EOVERFLOW:75,EOWNERDEAD:130,EPERM:1,EPIPE:32,EPROTO:71,EPROTONOSUPPORT:93,EPROTOTYPE:91,ERANGE:34,EROFS:30,ESPIPE:29,ESRCH:3,ESTALE:116,ETIME:62,ETIMEDOUT:110,ETXTBSY:26,EWOULDBLOCK:11,EXDEV:18},We=0,Ze=0,Qe=0,qe=0,$e={currentPath:"/",nextInode:2,streams:[null],ignorePermissions:!0,absolutePath:function(r,a){if("string"!=typeof r)return null;void 0===a&&(a=$e.currentPath),r&&"/"==r[0]&&(a="");for(var e=a+"/"+r,i=e.split("/").reverse(),v=[""];i.length;){var t=i.pop();""==t||"."==t||(".."==t?v.length>1&&v.pop():v.push(t))}return 1==v.length?"/":v.join("/")},analyzePath:function(r,a,e){var i={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};if(r=$e.absolutePath(r),"/"==r)i.isRoot=!0,i.exists=i.parentExists=!0,i.name="/",i.path=i.parentPath="/",i.object=i.parentObject=$e.root;else if(null!==r){e=e||0,r=r.slice(1).split("/");for(var v=$e.root,t=[""];r.length;){1==r.length&&v.isFolder&&(i.parentExists=!0,i.parentPath=1==t.length?"/":t.join("/"),i.parentObject=v,i.name=r[0]);var f=r.shift();if(!v.isFolder){i.error=Ge.ENOTDIR;break}if(!v.read){i.error=Ge.EACCES;break}if(!v.contents.hasOwnProperty(f)){i.error=Ge.ENOENT;break}if(v=v.contents[f],v.link&&(!a||0!=r.length)){if(e>40){i.error=Ge.ELOOP;break}var _=$e.absolutePath(v.link,t.join("/"));return $e.analyzePath([_].concat(r).join("/"),a,e+1)}t.push(f),0==r.length&&(i.exists=!0,i.path=t.join("/"),i.object=v)}return i}return i},findObject:function(r,a){$e.ensureRoot();var e=$e.analyzePath(r,a);return e.exists?e.object:(Ya(e.error),null)},createObject:function(r,a,e,i,v){if(r||(r="/"),"string"==typeof r&&(r=$e.findObject(r)),!r)throw Ya(Ge.EACCES),new Error("Parent path must exist.");if(!r.isFolder)throw Ya(Ge.ENOTDIR),\nnew Error("Parent must be a folder.");if(!r.write&&!$e.ignorePermissions)throw Ya(Ge.EACCES),new Error("Parent folder must be writeable.");if(!a||"."==a||".."==a)throw Ya(Ge.ENOENT),new Error("Name must not be empty.");if(r.contents.hasOwnProperty(a))throw Ya(Ge.EEXIST),new Error("Can\'t overwrite object.");r.contents[a]={read:void 0===i||i,write:void 0!==v&&v,timestamp:Date.now(),inodeNumber:$e.nextInode++};for(var t in e)e.hasOwnProperty(t)&&(r.contents[a][t]=e[t]);return r.contents[a]},createFolder:function(r,a,e,i){var v={isFolder:!0,isDevice:!1,contents:{}};return $e.createObject(r,a,v,e,i)},createPath:function(r,a,e,i){var v=$e.findObject(r);if(null===v)throw new Error("Invalid parent.");for(a=a.split("/").reverse();a.length;){var t=a.pop();t&&(v.contents.hasOwnProperty(t)||$e.createFolder(v,t,e,i),v=v.contents[t])}return v},createFile:function(r,a,e,i,v){return e.isFolder=!1,$e.createObject(r,a,e,i,v)},createDataFile:function(r,a,e,i,v){if("string"==typeof e){for(var t=new Array(e.length),f=0,_=e.length;f<_;++f)t[f]=e.charCodeAt(f);e=t}var s={isDevice:!1,contents:e};return $e.createFile(r,a,s,i,v)},createLazyFile:function(r,a,e,i,v){var t={isDevice:!1,url:e};return $e.createFile(r,a,t,i,v)},createLink:function(r,a,e,i,v){var t={isDevice:!1,link:e};return $e.createFile(r,a,t,i,v)},createDevice:function(r,a,e,i){if(!e&&!i)throw new Error("A device must have at least one callback defined.");var v={isDevice:!0,input:e,output:i};return $e.createFile(r,a,v,Boolean(e),Boolean(i))},forceLoadFile:function(r){if(r.isDevice||r.isFolder||r.link||r.contents)return!0;var a=!0;if("undefined"!=typeof XMLHttpRequest)e("Cannot do synchronous binary XHRs in modern browsers. Use --embed-file or --preload-file in emcc");else{if("undefined"==typeof read)throw new Error("Cannot load without read() or XMLHttpRequest.");try{r.contents=p(read(r.url),!0)}catch(r){a=!1}}return a||Ya(Ge.EIO),a},ensureRoot:function(){$e.root||($e.root={read:!0,write:!0,isFolder:!0,isDevice:!1,timestamp:Date.now(),inodeNumber:1,contents:{}})},init:function(r,a,i){function v(r){null===r||r==="\\n".charCodeAt(0)?(a.printer(a.buffer.join("")),a.buffer=[]):a.buffer.push(String.fromCharCode(r))}e(!$e.init.initialized,"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),$e.init.initialized=!0,$e.ensureRoot(),r=r||Module.stdin,a=a||Module.stdout,i=i||Module.stderr;var t=!0,f=!0,s=!0;r||(t=!1,r=function(){if(!r.cache||!r.cache.length){var a;"undefined"!=typeof window&&"function"==typeof window.prompt?a=window.prompt("Input: "):"function"==typeof readline&&(a=readline()),a||(a=""),r.cache=p(a+"\\n",!0)}return r.cache.shift()}),a||(f=!1,a=v),a.printer||(a.printer=print),a.buffer||(a.buffer=[]),i||(s=!1,i=v),i.printer||(i.printer=print),i.buffer||(i.buffer=[]),$e.createFolder("/","tmp",!0,!0);var n=$e.createFolder("/","dev",!0,!0),o=$e.createDevice(n,"stdin",r),l=$e.createDevice(n,"stdout",null,a),b=$e.createDevice(n,"stderr",null,i);$e.createDevice(n,"tty",r,a),$e.streams[1]={path:"/dev/stdin",object:o,position:0,isRead:!0,isWrite:!1,isAppend:!1,isTerminal:!t,error:!1,eof:!1,ungotten:[]},$e.streams[2]={path:"/dev/stdout",object:l,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!f,error:!1,eof:!1,ungotten:[]},$e.streams[3]={path:"/dev/stderr",object:b,position:0,isRead:!1,isWrite:!0,isAppend:!1,isTerminal:!s,error:!1,eof:!1,ungotten:[]},We=_([1],"void*",we),Ze=_([2],"void*",we),Qe=_([3],"void*",we),$e.createPath("/","dev/shm/tmp",!0,!0),$e.streams[We]=$e.streams[1],$e.streams[Ze]=$e.streams[2],$e.streams[Qe]=$e.streams[3],qe=_([_([0,0,0,0,We,0,0,0,Ze,0,0,0,Qe,0,0,0],"void*",we)],"void*",we)},quit:function(){$e.init.initialized&&($e.streams[2]&&$e.streams[2].object.output.buffer.length>0&&$e.streams[2].object.output("\\n".charCodeAt(0)),$e.streams[3]&&$e.streams[3].object.output.buffer.length>0&&$e.streams[3].object.output("\\n".charCodeAt(0)))}},Je=Ja;Ve.unshift({func:function(){$e.ignorePermissions=!1,$e.init.initialized||$e.init()}}),Be.push({func:function(){$e.quit()}}),Ya(0),ae.buf=_(12,"void*",we),Module.callMain=function(r){function a(){for(var r=0;r<3;r++)i.push(0)}var e=r.length+1,i=[_(p("/bin/this.program"),"i8",we)];a();for(var v=0;v>2]=0|He.__str,Se[ri+4>>2]=0|He.__str1,Se[ri+16>>2]=0|He.__str2,Se[ri+20>>2]=0|He.__str3,Se[ri+32>>2]=0|He.__str4,Se[ri+36>>2]=0|He.__str5,Se[ri+48>>2]=0|He.__str6,Se[ri+52>>2]=0|He.__str7,Se[ri+64>>2]=0|He.__str8,Se[ri+68>>2]=0|He.__str7,Se[ri+80>>2]=0|He.__str9,Se[ri+84>>2]=0|He.__str10,Se[ri+96>>2]=0|He.__str11,Se[ri+100>>2]=0|He.__str12,Se[ri+112>>2]=0|He.__str13,Se[ri+116>>2]=0|He.__str14,Se[ri+128>>2]=0|He.__str15,Se[ri+132>>2]=0|He.__str16,Se[ri+144>>2]=0|He.__str17,Se[ri+148>>2]=0|He.__str18,Se[ri+160>>2]=0|He.__str19,Se[ri+164>>2]=0|He.__str20,Se[ri+176>>2]=0|He.__str21,Se[ri+180>>2]=0|He.__str22,Se[ri+192>>2]=0|He.__str23,Se[ri+196>>2]=0|He.__str24,Se[ri+208>>2]=0|He.__str25,Se[ri+212>>2]=0|He.__str26,Se[ri+224>>2]=0|He.__str27,Se[ri+228>>2]=0|He.__str28,Se[ri+240>>2]=0|He.__str29,Se[ri+244>>2]=0|He.__str30,Se[ri+256>>2]=0|He.__str31,Se[ri+260>>2]=0|He.__str32,Se[ri+272>>2]=0|He.__str33,Se[ri+276>>2]=0|He.__str34,Se[ri+288>>2]=0|He.__str35,Se[ri+292>>2]=0|He.__str36,Se[ri+304>>2]=0|He.__str37,Se[ri+308>>2]=0|He.__str38,Se[ri+320>>2]=0|He.__str39,Se[ri+324>>2]=0|He.__str40,Se[ri+336>>2]=0|He.__str41,Se[ri+340>>2]=0|He.__str42,Se[ri+352>>2]=0|He.__str43,Se[ri+356>>2]=0|He.__str44,Se[ri+368>>2]=0|He.__str45,Se[ri+372>>2]=0|He.__str46,Se[ri+384>>2]=0|He.__str47,Se[ri+388>>2]=0|He.__str48,Se[ri+400>>2]=0|He.__str49,Se[ri+404>>2]=0|He.__str119289,Se[ri+416>>2]=0|He.__str51,Se[ri+420>>2]=0|He.__str20,Se[ri+432>>2]=0|He.__str52,Se[ri+436>>2]=0|He.__str53,Se[ri+448>>2]=0|He.__str54,Se[ri+452>>2]=0|He.__str55,Se[ri+464>>2]=0|He.__str56,Se[ri+468>>2]=0|He.__str57,Se[ri+480>>2]=0|He.__str58,Se[ri+484>>2]=0|He.__str119289,Se[ri+496>>2]=0|He.__str59,Se[ri+500>>2]=0|He.__str60,Se[ri+512>>2]=0|He.__str61,Se[ri+516>>2]=0|He.__str62,Se[ri+528>>2]=0|He.__str63,Se[ri+532>>2]=0|He.__str64,Se[ri+544>>2]=0|He.__str65,Se[ri+548>>2]=0|He.__str66,Se[ri+560>>2]=0|He.__str67,Se[ri+564>>2]=0|He.__str68,Se[ri+576>>2]=0|He.__str69,Se[ri+580>>2]=0|He.__str70,Se[ri+592>>2]=0|He.__str71,Se[ri+596>>2]=0|He.__str72,Se[ri+608>>2]=0|He.__str73,Se[ri+612>>2]=0|He.__str74,Se[ri+624>>2]=0|He.__str75,Se[ri+628>>2]=0|He.__str76,Se[ri+640>>2]=0|He.__str77,Se[ri+644>>2]=0|He.__str72,Se[ri+656>>2]=0|He.__str78,Se[ri+660>>2]=0|He.__str79,Se[ri+672>>2]=0|He.__str80,Se[ri+676>>2]=0|He.__str81,Se[ri+688>>2]=0|He.__str82,Se[ri+692>>2]=0|He.__str83,Se[ri+704>>2]=0|He.__str84,Se[ri+708>>2]=0|He.__str85,Se[ri+720>>2]=0|He.__str86,Se[ri+724>>2]=0|He.__str87,Se[ri+736>>2]=0|He.__str88,Se[ri+740>>2]=0|He.__str89,Se[ri+752>>2]=0|He.__str90,Se[ri+756>>2]=0|He.__str91,Se[ri+768>>2]=0|He.__str92,Se[ri+772>>2]=0|He.__str91,Se[ai>>2]=0|He.__str145315,Se[ai+8>>2]=0|He.__str145315,Se[ai+20>>2]=0|He.__str167337,Se[ai+28>>2]=0|He.__str95,Se[ai+40>>2]=0|He.__str146316,Se[ai+48>>2]=0|He.__str97,Se[ai+60>>2]=0|He.__str155325,Se[ai+68>>2]=0|He.__str155325,Se[ai+80>>2]=0|He.__str156326,Se[ai+88>>2]=0|He.__str156326,Se[ai+100>>2]=0|He.__str154324,Se[ai+108>>2]=0|He.__str154324,Se[ai+120>>2]=0|He.__str101,Se[ai+128>>2]=0|He.__str101,Se[ai+140>>2]=0|He.__str147317,Se[ai+148>>2]=0|He.__str147317,Se[ai+160>>2]=0|He.__str150320,Se[ai+168>>2]=0|He.__str150320,Se[ai+180>>2]=0|He.__str151321,Se[ai+188>>2]=0|He.__str105,Se[ai+220>>2]=0|He.__str152322,Se[ai+228>>2]=0|He.__str152322,Se[ai+240>>2]=0|He.__str153323,Se[ai+248>>2]=0|He.__str153323,Se[ai+260>>2]=0|He.__str165335,Se[ai+268>>2]=0|He.__str165335,Se[ai+280>>2]=0|He.__str166336,Se[ai+288>>2]=0|He.__str166336,Se[ai+360>>2]=0|He.__str148318,Se[ai+368>>2]=0|He.__str148318,Se[ai+380>>2]=0|He.__str149319,Se[ai+388>>2]=0|He.__str149319,Se[ai+420>>2]=0|He.__str84254,Se[ai+428>>2]=0|He.__str84254,Se[ai+440>>2]=0|He.__str168338,Se[ai+448>>2]=0|He.__str146316,Se[ai+460>>2]=0|He.__str114,Se[ai+468>>2]=0|He.__str152322,Se[ai+480>>2]=0|He.__str115,Se[ai+488>>2]=0|He.__str115,Se[ai+500>>2]=0|He.__str110280,Se[ai+508>>2]=0|He.__str110280,Se[ei+4>>2]=0|He.__str152,Se[ei+12>>2]=0|He.__str152,Se[ei+32>>2]=0|He.__str153,Se[ei+40>>2]=0|He.__str153,Se[ei+48>>2]=0|He.__str154,Se[ei+60>>2]=0|He.__str155,Se[ei+68>>2]=0|He.__str155,Se[ei+76>>2]=0|He.__str156,Se[ei+88>>2]=0|He.__str157,Se[ei+96>>2]=0|He.__str158,Se[ei+104>>2]=0|He.__str156,Se[ei+116>>2]=0|He.__str159,Se[ei+124>>2]=0|He.__str160,Se[ei+132>>2]=0|He.__str161,Se[ei+144>>2]=0|He.__str162,Se[ei+152>>2]=0|He.__str163,Se[ei+160>>2]=0|He.__str164,Se[ei+172>>2]=0|He.__str165,Se[ei+180>>2]=0|He.__str166,Se[ei+188>>2]=0|He.__str167,Se[si+4>>2]=bi,Se[ni+4>>2]=ki,oi=_([2,0,0,0,0],["i8*",0,0,0,0],we),Se[bi>>2]=oi+8|0,Se[bi+4>>2]=0|He.__ZTSSt9bad_alloc,Se[bi+8>>2]=li,Se[ki>>2]=oi+8|0,Se[ki+4>>2]=0|He.__ZTSSt20bad_array_new_length,Se[ki+8>>2]=bi,ui=16,ci=6,hi=18,di=6,wi=6,pe=[0,0,Jr,0,va,0,ya,0,ga,0,wa,0,Sa,0,pa,0,Ea,0,ma,0],Module.FUNCTION_TABLE=pe,Module.run=ee,Module.preRun&&Module.preRun(),0==Ke){ee()}Module.postRun&&Module.postRun(),Module.___cxa_demangle=G;var pi=v("__cxa_demangle","string",["string","string","number","number"]);return function(r){return pi(r,"",1,0)}}();\n' + }, + {}, + ], + }, + {}, + ['bS28'], + null, +) +//# sourceMappingURL=demangle-cpp.1768f4cc.js.map diff --git a/packages/theme/assets/speedscope/file-format-schema.json b/packages/theme/assets/speedscope/file-format-schema.json index 332099169d5..ded8484a53e 100644 --- a/packages/theme/assets/speedscope/file-format-schema.json +++ b/packages/theme/assets/speedscope/file-format-schema.json @@ -1,324 +1,265 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "definitions": { - "CloseFrameEvent": { - "properties": { - "at": { - "title": "at", - "type": "number" - }, - "frame": { - "title": "frame", - "type": "number" - }, - "type": { - "enum": [ - "C" - ], - "title": "type", - "type": "string" - } - }, - "required": [ - "at", - "frame", - "type" - ], - "title": "CloseFrameEvent", - "type": "object" + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "CloseFrameEvent": { + "properties": { + "at": { + "title": "at", + "type": "number" }, - "FileFormat.EventType": { - "enum": [ - "C", - "O" - ], - "title": "FileFormat.EventType", - "type": "string" + "frame": { + "title": "frame", + "type": "number" }, - "FileFormat.EventedProfile": { - "properties": { - "endValue": { - "title": "endValue", - "type": "number" - }, - "events": { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/OpenFrameEvent" - }, - { - "$ref": "#/definitions/CloseFrameEvent" - } - ] - }, - "title": "events", - "type": "array" - }, - "name": { - "title": "name", - "type": "string" - }, - "startValue": { - "title": "startValue", - "type": "number" - }, - "type": { - "enum": [ - "evented" - ], - "title": "type", - "type": "string" - }, - "unit": { - "$ref": "#/definitions/FileFormat.ValueUnit", - "title": "unit" - } - }, - "required": [ - "endValue", - "events", - "name", - "startValue", - "type", - "unit" - ], - "title": "FileFormat.EventedProfile", - "type": "object" + "type": { + "enum": ["C"], + "title": "type", + "type": "string" + } + }, + "required": ["at", "frame", "type"], + "title": "CloseFrameEvent", + "type": "object" + }, + "FileFormat.EventType": { + "enum": ["C", "O"], + "title": "FileFormat.EventType", + "type": "string" + }, + "FileFormat.EventedProfile": { + "properties": { + "endValue": { + "title": "endValue", + "type": "number" }, - "FileFormat.File": { - "properties": { - "$schema": { - "enum": [ - "https://www.speedscope.app/file-format-schema.json" - ], - "title": "$schema", - "type": "string" - }, - "activeProfileIndex": { - "title": "activeProfileIndex", - "type": "number" - }, - "exporter": { - "title": "exporter", - "type": "string" - }, - "name": { - "title": "name", - "type": "string" - }, - "profiles": { - "items": { - "anyOf": [ - { - "$ref": "#/definitions/FileFormat.EventedProfile" - }, - { - "$ref": "#/definitions/FileFormat.SampledProfile" - } - ] - }, - "title": "profiles", - "type": "array" - }, - "shared": { - "properties": { - "frames": { - "items": { - "$ref": "#/definitions/FileFormat.Frame" - }, - "title": "frames", - "type": "array" - } - }, - "required": [ - "frames" - ], - "title": "shared", - "type": "object" - } - }, - "required": [ - "$schema", - "profiles", - "shared" - ], - "title": "FileFormat.File", - "type": "object" + "events": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/OpenFrameEvent" + }, + { + "$ref": "#/definitions/CloseFrameEvent" + } + ] + }, + "title": "events", + "type": "array" }, - "FileFormat.Frame": { - "properties": { - "col": { - "title": "col", - "type": "number" - }, - "file": { - "title": "file", - "type": "string" - }, - "line": { - "title": "line", - "type": "number" - }, - "name": { - "title": "name", - "type": "string" - } - }, - "required": [ - "name" - ], - "title": "FileFormat.Frame", - "type": "object" + "name": { + "title": "name", + "type": "string" }, - "FileFormat.IProfile": { - "properties": { - "type": { - "$ref": "#/definitions/FileFormat.ProfileType", - "title": "type" - } - }, - "required": [ - "type" - ], - "title": "FileFormat.IProfile", - "type": "object" + "startValue": { + "title": "startValue", + "type": "number" + }, + "type": { + "enum": ["evented"], + "title": "type", + "type": "string" }, - "FileFormat.Profile": { + "unit": { + "$ref": "#/definitions/FileFormat.ValueUnit", + "title": "unit" + } + }, + "required": ["endValue", "events", "name", "startValue", "type", "unit"], + "title": "FileFormat.EventedProfile", + "type": "object" + }, + "FileFormat.File": { + "properties": { + "$schema": { + "enum": ["https://www.speedscope.app/file-format-schema.json"], + "title": "$schema", + "type": "string" + }, + "activeProfileIndex": { + "title": "activeProfileIndex", + "type": "number" + }, + "exporter": { + "title": "exporter", + "type": "string" + }, + "name": { + "title": "name", + "type": "string" + }, + "profiles": { + "items": { "anyOf": [ - { - "$ref": "#/definitions/FileFormat.EventedProfile" - }, - { - "$ref": "#/definitions/FileFormat.SampledProfile" - } + { + "$ref": "#/definitions/FileFormat.EventedProfile" + }, + { + "$ref": "#/definitions/FileFormat.SampledProfile" + } ] + }, + "title": "profiles", + "type": "array" }, - "FileFormat.ProfileType": { - "enum": [ - "evented", - "sampled" - ], - "title": "FileFormat.ProfileType", - "type": "string" + "shared": { + "properties": { + "frames": { + "items": { + "$ref": "#/definitions/FileFormat.Frame" + }, + "title": "frames", + "type": "array" + } + }, + "required": ["frames"], + "title": "shared", + "type": "object" + } + }, + "required": ["$schema", "profiles", "shared"], + "title": "FileFormat.File", + "type": "object" + }, + "FileFormat.Frame": { + "properties": { + "col": { + "title": "col", + "type": "number" }, - "FileFormat.SampledProfile": { - "properties": { - "endValue": { - "title": "endValue", - "type": "number" - }, - "name": { - "title": "name", - "type": "string" - }, - "samples": { - "items": { - "items": { - "type": "number" - }, - "type": "array" - }, - "title": "samples", - "type": "array" - }, - "startValue": { - "title": "startValue", - "type": "number" - }, - "type": { - "enum": [ - "sampled" - ], - "title": "type", - "type": "string" - }, - "unit": { - "$ref": "#/definitions/FileFormat.ValueUnit", - "title": "unit" - }, - "weights": { - "items": { - "type": "number" - }, - "title": "weights", - "type": "array" - } - }, - "required": [ - "endValue", - "name", - "samples", - "startValue", - "type", - "unit", - "weights" - ], - "title": "FileFormat.SampledProfile", - "type": "object" + "file": { + "title": "file", + "type": "string" }, - "FileFormat.ValueUnit": { - "enum": [ - "bytes", - "microseconds", - "milliseconds", - "nanoseconds", - "none", - "seconds" - ], - "title": "FileFormat.ValueUnit", - "type": "string" + "line": { + "title": "line", + "type": "number" }, - "IEvent": { - "properties": { - "at": { - "title": "at", - "type": "number" - }, - "type": { - "$ref": "#/definitions/FileFormat.EventType", - "title": "type" - } - }, - "required": [ - "at", - "type" - ], - "title": "IEvent", - "type": "object" + "name": { + "title": "name", + "type": "string" + } + }, + "required": ["name"], + "title": "FileFormat.Frame", + "type": "object" + }, + "FileFormat.IProfile": { + "properties": { + "type": { + "$ref": "#/definitions/FileFormat.ProfileType", + "title": "type" + } + }, + "required": ["type"], + "title": "FileFormat.IProfile", + "type": "object" + }, + "FileFormat.Profile": { + "anyOf": [ + { + "$ref": "#/definitions/FileFormat.EventedProfile" }, - "OpenFrameEvent": { - "properties": { - "at": { - "title": "at", - "type": "number" - }, - "frame": { - "title": "frame", - "type": "number" - }, - "type": { - "enum": [ - "O" - ], - "title": "type", - "type": "string" - } - }, - "required": [ - "at", - "frame", - "type" - ], - "title": "OpenFrameEvent", - "type": "object" + { + "$ref": "#/definitions/FileFormat.SampledProfile" + } + ] + }, + "FileFormat.ProfileType": { + "enum": ["evented", "sampled"], + "title": "FileFormat.ProfileType", + "type": "string" + }, + "FileFormat.SampledProfile": { + "properties": { + "endValue": { + "title": "endValue", + "type": "number" + }, + "name": { + "title": "name", + "type": "string" }, - "SampledStack": { + "samples": { + "items": { "items": { - "type": "number" + "type": "number" }, "type": "array" + }, + "title": "samples", + "type": "array" + }, + "startValue": { + "title": "startValue", + "type": "number" + }, + "type": { + "enum": ["sampled"], + "title": "type", + "type": "string" + }, + "unit": { + "$ref": "#/definitions/FileFormat.ValueUnit", + "title": "unit" + }, + "weights": { + "items": { + "type": "number" + }, + "title": "weights", + "type": "array" + } + }, + "required": ["endValue", "name", "samples", "startValue", "type", "unit", "weights"], + "title": "FileFormat.SampledProfile", + "type": "object" + }, + "FileFormat.ValueUnit": { + "enum": ["bytes", "microseconds", "milliseconds", "nanoseconds", "none", "seconds"], + "title": "FileFormat.ValueUnit", + "type": "string" + }, + "IEvent": { + "properties": { + "at": { + "title": "at", + "type": "number" + }, + "type": { + "$ref": "#/definitions/FileFormat.EventType", + "title": "type" + } + }, + "required": ["at", "type"], + "title": "IEvent", + "type": "object" + }, + "OpenFrameEvent": { + "properties": { + "at": { + "title": "at", + "type": "number" + }, + "frame": { + "title": "frame", + "type": "number" + }, + "type": { + "enum": ["O"], + "title": "type", + "type": "string" } + }, + "required": ["at", "frame", "type"], + "title": "OpenFrameEvent", + "type": "object" }, - "$ref": "#/definitions/FileFormat.File" + "SampledStack": { + "items": { + "type": "number" + }, + "type": "array" + } + }, + "$ref": "#/definitions/FileFormat.File" } diff --git a/packages/theme/assets/speedscope/import.bcbb2033.js b/packages/theme/assets/speedscope/import.bcbb2033.js index 1dc0e5f6bfd..d07295be286 100644 --- a/packages/theme/assets/speedscope/import.bcbb2033.js +++ b/packages/theme/assets/speedscope/import.bcbb2033.js @@ -1,123 +1,9953 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;ce.id)}),r.children.forEach(e)}(e),t}function t(e,t){return e.map((r,n)=>{return r-(0===n?1e6*t:e[n-1])})}function r(r){return{samples:r.samples,startTime:1e6*r.startTime,endTime:1e6*r.endTime,nodes:e(r.head),timeDeltas:t(r.timestamps,r.startTime)}}Object.defineProperty(exports,"__esModule",{value:!0}),exports.chromeTreeToNodes=r; -},{}],"kWV1":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isChromeTimeline=i,exports.isChromeTimelineObject=o,exports.importFromChromeTimeline=l,exports.importFromChromeCPUProfile=c,exports.importFromOldV8CPUProfile=f;var e=require("../lib/profile"),t=require("../lib/utils"),n=require("../lib/value-formatters"),r=require("./v8cpuFormatter");function i(e){if(!Array.isArray(e))return!1;if(e.length<1)return!1;const t=e[0];return"pid"in t&&"tid"in t&&"ph"in t&&"cat"in t&&!!e.find(e=>"CpuProfile"===e.name||"Profile"===e.name||"ProfileChunk"===e.name)}function o(e){return"traceEvents"in e&&i(e.traceEvents)}function l(e,n){const r=new Map,i=new Map,o=new Map;(0,t.sortBy)(e,e=>e.ts);for(let t of e){if("CpuProfile"===t.name){const e=`${t.pid}:${t.tid}`,n=t.id||e;r.set(n,t.args.data.cpuProfile),i.set(n,e)}if("Profile"===t.name){const e=`${t.pid}:${t.tid}`;r.set(t.id||e,Object.assign({startTime:0,endTime:0,nodes:[],samples:[],timeDeltas:[]},t.args.data)),t.id&&i.set(t.id,`${t.pid}:${t.tid}`)}if("thread_name"===t.name&&o.set(`${t.pid}:${t.tid}`,t.args.name),"ProfileChunk"===t.name){const e=`${t.pid}:${t.tid}`,n=r.get(t.id||e);if(n){const e=t.args.data;e.cpuProfile&&(e.cpuProfile.nodes&&(n.nodes=n.nodes.concat(e.cpuProfile.nodes)),e.cpuProfile.samples&&(n.samples=n.samples.concat(e.cpuProfile.samples))),e.timeDeltas&&(n.timeDeltas=n.timeDeltas.concat(e.timeDeltas)),null!=e.startTime&&(n.startTime=e.startTime),null!=e.endTime&&(n.endTime=e.endTime)}else console.warn(`Ignoring ProfileChunk for undeclared Profile with id ${t.id||e}`)}}if(r.size>0){const e=[];let l=0;return(0,t.itForEach)(r.keys(),t=>{let s=null,a=i.get(t);a&&(s=o.get(a)||null);const m=c(r.get(t));s&&r.size>1?(m.setName(`${n} - ${s}`),"CrRendererMain"===s&&(l=e.length)):m.setName(`${n}`),e.push(m)}),{name:n,indexToView:l,profiles:e}}throw new Error("Could not find CPU profile in Timeline")}const s=new Map;function a(e){return(0,t.getOrInsert)(s,e,e=>{const t=e.url;let n=e.lineNumber;null!=n&&n++;let r=e.columnNumber;null!=r&&r++;const i=e.functionName||(t?`(anonymous ${t.split("/").pop()}:${n})`:"(anonymous)");return{key:`${i}:${t}:${n}:${r}`,name:i,file:t,line:n,col:r}})}function m(e){const{functionName:t,url:n}=e;return"native dummy.js"===n||("(root)"===t||"(idle)"===t)}function u(e){return"(garbage collector)"===e||"(program)"===e}function c(r){const i=new e.CallTreeProfileBuilder(r.endTime-r.startTime),o=new Map;for(let e of r.nodes)o.set(e.id,e);for(let e of r.nodes)if("number"==typeof e.parent&&(e.parent=o.get(e.parent)),e.children)for(let t of e.children){const n=o.get(t);n&&(n.parent=e)}const l=[],s=[];let c=r.timeDeltas[0],f=c,p=NaN;for(let e=0;e0&&(0,t.lastOf)(d)!=f;){const e=a(d.pop().callFrame);i.leaveFrame(e,n)}const p=[];for(let e=c;e&&e!=f&&!m(e.callFrame);e=u(e.callFrame.functionName)?(0,t.lastOf)(d):e.parent||null)p.push(e);p.reverse();for(let e of p)i.enterFrame(a(e.callFrame),n);d=d.concat(p)}for(let e=d.length-1;e>=0;e--)i.leaveFrame(a(d[e].callFrame),(0,t.lastOf)(s));return i.setValueFormatter(new n.TimeFormatter("microseconds")),i.build()}function f(e){return c((0,r.chromeTreeToNodes)(e))} -},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4","./v8cpuFormatter":"y1V0"}],"I37H":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromStackprof=a;var e=require("../lib/profile"),t=require("../lib/value-formatters");function a(a){const{frames:r,mode:l,raw:o,raw_timestamp_deltas:n,interval:i}=a,s=new e.StackListProfileBuilder;s.setValueFormatter(new t.TimeFormatter("microseconds"));let c=0,m=[];for(let e=0;e=0;)e[t]=0}var i=0,l=1,d=2,f=3,o=258,b=29,s=256,u=s+1+b,c=30,p=19,h=2*u+1,v=15,y=16,x=7,g=256,m=16,w=17,A=18,k=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],q=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],z=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],j=512,B=new Array(2*(u+2));a(B);var C=new Array(2*c);a(C);var D=new Array(j);a(D);var E=new Array(o-f+1);a(E);var F=new Array(b);a(F);var G,H,I,J=new Array(c);function K(e,t,n,_,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=_,this.max_length=r,this.has_stree=e&&e.length}function L(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function M(e){return e<256?D[e]:D[256+(e>>>7)]}function N(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function O(e,t,n){e.bi_valid>y-n?(e.bi_buf|=t<>y-e.bi_valid,e.bi_valid+=n-y):(e.bi_buf|=t<>>=1,n<<=1}while(--t>0);return n>>>1}function R(e){16===e.bi_valid?(N(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}function T(e,t){var n,_,r,a,i,l,d=t.dyn_tree,f=t.max_code,o=t.stat_desc.static_tree,b=t.stat_desc.has_stree,s=t.stat_desc.extra_bits,u=t.stat_desc.extra_base,c=t.stat_desc.max_length,p=0;for(a=0;a<=v;a++)e.bl_count[a]=0;for(d[2*e.heap[e.heap_max]+1]=0,n=e.heap_max+1;nc&&(a=c,p++),d[2*_+1]=a,_>f||(e.bl_count[a]++,i=0,_>=u&&(i=s[_-u]),l=d[2*_],e.opt_len+=l*(a+i),b&&(e.static_len+=l*(o[2*_+1]+i)));if(0!==p){do{for(a=c-1;0===e.bl_count[a];)a--;e.bl_count[a]--,e.bl_count[a+1]+=2,e.bl_count[c]--,p-=2}while(p>0);for(a=c;0!==a;a--)for(_=e.bl_count[a];0!==_;)(r=e.heap[--n])>f||(d[2*r+1]!==a&&(e.opt_len+=(a-d[2*r+1])*d[2*r],d[2*r+1]=a),_--)}}function U(e,t,n){var _,r,a=new Array(v+1),i=0;for(_=1;_<=v;_++)a[_]=i=i+n[_-1]<<1;for(r=0;r<=t;r++){var l=e[2*r+1];0!==l&&(e[2*r]=Q(a[l]++,l))}}function V(){var e,t,n,_,r,a=new Array(v+1);for(n=0,_=0;_>=7;_8?N(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function Y(t,n,_,r){X(t),r&&(N(t,_),N(t,~_)),e.arraySet(t.pending_buf,t.window,n,_,t.pending),t.pending+=_}function Z(e,t,n,_){var r=2*t,a=2*n;return e[r]>1;n>=1;n--)$(e,a,n);r=d;do{n=e.heap[1],e.heap[1]=e.heap[e.heap_len--],$(e,a,1),_=e.heap[1],e.heap[--e.heap_max]=n,e.heap[--e.heap_max]=_,a[2*r]=a[2*n]+a[2*_],e.depth[r]=(e.depth[n]>=e.depth[_]?e.depth[n]:e.depth[_])+1,a[2*n+1]=a[2*_+1]=r,e.heap[1]=r++,$(e,a,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],T(e,t),U(a,f,e.bl_count)}function ne(e,t,n){var _,r,a=-1,i=t[1],l=0,d=7,f=4;for(0===i&&(d=138,f=3),t[2*(n+1)+1]=65535,_=0;_<=n;_++)r=i,i=t[2*(_+1)+1],++l=3&&0===e.bl_tree[2*S[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}function ae(e,t,n,_){var r;for(O(e,t-257,5),O(e,n-1,5),O(e,_-4,4),r=0;r<_;r++)O(e,e.bl_tree[2*S[r]+1],3);_e(e,e.dyn_ltree,t-1),_e(e,e.dyn_dtree,n-1)}function ie(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return n;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return _;for(t=32;t0?(e.strm.data_type===r&&(e.strm.data_type=ie(e)),te(e,e.l_desc),te(e,e.d_desc),o=re(e),i=e.opt_len+3+7>>>3,(f=e.static_len+3+7>>>3)<=i&&(i=f)):i=f=_+5,_+4<=i&&-1!==n?fe(e,n,_,a):e.strategy===t||f===i?(O(e,(l<<1)+(a?1:0),3),ee(e,B,C)):(O(e,(d<<1)+(a?1:0),3),ae(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),ee(e,e.dyn_ltree,e.dyn_dtree)),W(e),a&&X(e)}function se(e,t,n){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&n,e.last_lit++,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(E[n]+s+1)]++,e.dyn_dtree[2*M(t)]++),e.last_lit===e.lit_bufsize-1}exports._tr_init=de,exports._tr_stored_block=fe,exports._tr_flush_block=be,exports._tr_tally=se,exports._tr_align=oe; -},{"../utils/common":"tbG5"}],"uxo6":[function(require,module,exports) { -"use strict";function e(e,r,o,t){for(var u=65535&e|0,i=e>>>16&65535|0,n=0;0!==o;){o-=n=o>2e3?2e3:o;do{i=i+(u=u+r[t++]|0)|0}while(--n);u%=65521,i%=65521}return u|i<<16|0}module.exports=e; -},{}],"X4kj":[function(require,module,exports) { -"use strict";function r(){for(var r,o=[],t=0;t<256;t++){r=t;for(var n=0;n<8;n++)r=1&r?3988292384^r>>>1:r>>>1;o[t]=r}return o}var o=r();function t(r,t,n,u){var a=o,e=u+n;r^=-1;for(var f=u;f>>8^a[255&(r^t[f])];return-1^r}module.exports=t; -},{}],"gMAY":[function(require,module,exports) { -"use strict";module.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}; -},{}],"BLBk":[function(require,module,exports) { -"use strict";var t,a=require("../utils/common"),e=require("./trees"),s=require("./adler32"),i=require("./crc32"),r=require("./messages"),n=0,h=1,l=3,_=4,d=5,o=0,u=1,g=-2,f=-3,c=-5,p=-1,m=1,w=2,v=3,k=4,z=0,b=2,x=8,y=9,B=15,S=8,q=29,I=256,A=I+1+q,C=30,R=19,j=2*A+1,D=15,E=3,H=258,K=H+E+1,N=32,F=42,G=69,J=73,L=91,M=103,O=113,P=666,Q=1,T=2,U=3,V=4,W=3;function X(t,a){return t.msg=r[a],a}function Y(t){return(t<<1)-(t>4?9:0)}function Z(t){for(var a=t.length;--a>=0;)t[a]=0}function $(t){var e=t.state,s=e.pending;s>t.avail_out&&(s=t.avail_out),0!==s&&(a.arraySet(t.output,e.pending_buf,e.pending_out,s,t.next_out),t.next_out+=s,e.pending_out+=s,t.total_out+=s,t.avail_out-=s,e.pending-=s,0===e.pending&&(e.pending_out=0))}function tt(t,a){e._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,a),t.block_start=t.strstart,$(t.strm)}function at(t,a){t.pending_buf[t.pending++]=a}function et(t,a){t.pending_buf[t.pending++]=a>>>8&255,t.pending_buf[t.pending++]=255&a}function st(t,e,r,n){var h=t.avail_in;return h>n&&(h=n),0===h?0:(t.avail_in-=h,a.arraySet(e,t.input,t.next_in,h,r),1===t.state.wrap?t.adler=s(t.adler,e,h,r):2===t.state.wrap&&(t.adler=i(t.adler,e,h,r)),t.next_in+=h,t.total_in+=h,h)}function it(t,a){var e,s,i=t.max_chain_length,r=t.strstart,n=t.prev_length,h=t.nice_match,l=t.strstart>t.w_size-K?t.strstart-(t.w_size-K):0,_=t.window,d=t.w_mask,o=t.prev,u=t.strstart+H,g=_[r+n-1],f=_[r+n];t.prev_length>=t.good_match&&(i>>=2),h>t.lookahead&&(h=t.lookahead);do{if(_[(e=a)+n]===f&&_[e+n-1]===g&&_[e]===_[r]&&_[++e]===_[r+1]){r+=2,e++;do{}while(_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&_[++r]===_[++e]&&rn){if(t.match_start=a,n=s,s>=h)break;g=_[r+n-1],f=_[r+n]}}}while((a=o[a&d])>l&&0!=--i);return n<=t.lookahead?n:t.lookahead}function rt(t){var e,s,i,r,n,h=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=h+(h-K)){a.arraySet(t.window,t.window,h,h,0),t.match_start-=h,t.strstart-=h,t.block_start-=h,e=s=t.hash_size;do{i=t.head[--e],t.head[e]=i>=h?i-h:0}while(--s);e=s=h;do{i=t.prev[--e],t.prev[e]=i>=h?i-h:0}while(--s);r+=h}if(0===t.strm.avail_in)break;if(s=st(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=s,t.lookahead+t.insert>=E)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=(t.ins_h<t.pending_buf_size-5&&(e=t.pending_buf_size-5);;){if(t.lookahead<=1){if(rt(t),0===t.lookahead&&a===n)return Q;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var s=t.block_start+e;if((0===t.strstart||t.strstart>=s)&&(t.lookahead=t.strstart-s,t.strstart=s,tt(t,!1),0===t.strm.avail_out))return Q;if(t.strstart-t.block_start>=t.w_size-K&&(tt(t,!1),0===t.strm.avail_out))return Q}return t.insert=0,a===_?(tt(t,!0),0===t.strm.avail_out?U:V):(t.strstart>t.block_start&&(tt(t,!1),t.strm.avail_out),Q)}function ht(t,a){for(var s,i;;){if(t.lookahead=E&&(t.ins_h=(t.ins_h<=E)if(i=e._tr_tally(t,t.strstart-t.match_start,t.match_length-E),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=E){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=E&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=E-1)),t.prev_length>=E&&t.match_length<=t.prev_length){r=t.strstart+t.lookahead-E,i=e._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-E),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=r&&(t.ins_h=(t.ins_h<=E&&t.strstart>0&&(i=l[r=t.strstart-1])===l[++r]&&i===l[++r]&&i===l[++r]){h=t.strstart+H;do{}while(i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&i===l[++r]&&rt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=E?(s=e._tr_tally(t,1,t.match_length-E),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(s=e._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),s&&(tt(t,!1),0===t.strm.avail_out))return Q}return t.insert=0,a===_?(tt(t,!0),0===t.strm.avail_out?U:V):t.last_lit&&(tt(t,!1),0===t.strm.avail_out)?Q:T}function dt(t,a){for(var s;;){if(0===t.lookahead&&(rt(t),0===t.lookahead)){if(a===n)return Q;break}if(t.match_length=0,s=e._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,s&&(tt(t,!1),0===t.strm.avail_out))return Q}return t.insert=0,a===_?(tt(t,!0),0===t.strm.avail_out?U:V):t.last_lit&&(tt(t,!1),0===t.strm.avail_out)?Q:T}function ot(t,a,e,s,i){this.good_length=t,this.max_lazy=a,this.nice_length=e,this.max_chain=s,this.func=i}function ut(a){a.window_size=2*a.w_size,Z(a.head),a.max_lazy_match=t[a.level].max_lazy,a.good_match=t[a.level].good_length,a.nice_match=t[a.level].nice_length,a.max_chain_length=t[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=E-1,a.match_available=0,a.ins_h=0}function gt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=x,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new a.Buf16(2*j),this.dyn_dtree=new a.Buf16(2*(2*C+1)),this.bl_tree=new a.Buf16(2*(2*R+1)),Z(this.dyn_ltree),Z(this.dyn_dtree),Z(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new a.Buf16(D+1),this.heap=new a.Buf16(2*A+1),Z(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new a.Buf16(2*A+1),Z(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function ft(t){var a;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=b,(a=t.state).pending=0,a.pending_out=0,a.wrap<0&&(a.wrap=-a.wrap),a.status=a.wrap?F:O,t.adler=2===a.wrap?0:1,a.last_flush=n,e._tr_init(a),o):X(t,g)}function ct(t){var a=ft(t);return a===o&&ut(t.state),a}function pt(t,a){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=a,o):g}function mt(t,e,s,i,r,n){if(!t)return g;var h=1;if(e===p&&(e=6),i<0?(h=0,i=-i):i>15&&(h=2,i-=16),r<1||r>y||s!==x||i<8||i>15||e<0||e>9||n<0||n>k)return X(t,g);8===i&&(i=9);var l=new gt;return t.state=l,l.strm=t,l.wrap=h,l.gzhead=null,l.w_bits=i,l.w_size=1<d||s<0)return a?X(a,g):g;if(f=a.state,!a.output||!a.input&&0!==a.avail_in||f.status===P&&s!==_)return X(a,0===a.avail_out?c:g);if(f.strm=a,r=f.last_flush,f.last_flush=s,f.status===F)if(2===f.wrap)a.adler=0,at(f,31),at(f,139),at(f,8),f.gzhead?(at(f,(f.gzhead.text?1:0)+(f.gzhead.hcrc?2:0)+(f.gzhead.extra?4:0)+(f.gzhead.name?8:0)+(f.gzhead.comment?16:0)),at(f,255&f.gzhead.time),at(f,f.gzhead.time>>8&255),at(f,f.gzhead.time>>16&255),at(f,f.gzhead.time>>24&255),at(f,9===f.level?2:f.strategy>=w||f.level<2?4:0),at(f,255&f.gzhead.os),f.gzhead.extra&&f.gzhead.extra.length&&(at(f,255&f.gzhead.extra.length),at(f,f.gzhead.extra.length>>8&255)),f.gzhead.hcrc&&(a.adler=i(a.adler,f.pending_buf,f.pending,0)),f.gzindex=0,f.status=G):(at(f,0),at(f,0),at(f,0),at(f,0),at(f,0),at(f,9===f.level?2:f.strategy>=w||f.level<2?4:0),at(f,W),f.status=O);else{var k=x+(f.w_bits-8<<4)<<8;k|=(f.strategy>=w||f.level<2?0:f.level<6?1:6===f.level?2:3)<<6,0!==f.strstart&&(k|=N),k+=31-k%31,f.status=O,et(f,k),0!==f.strstart&&(et(f,a.adler>>>16),et(f,65535&a.adler)),a.adler=1}if(f.status===G)if(f.gzhead.extra){for(p=f.pending;f.gzindex<(65535&f.gzhead.extra.length)&&(f.pending!==f.pending_buf_size||(f.gzhead.hcrc&&f.pending>p&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),$(a),p=f.pending,f.pending!==f.pending_buf_size));)at(f,255&f.gzhead.extra[f.gzindex]),f.gzindex++;f.gzhead.hcrc&&f.pending>p&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),f.gzindex===f.gzhead.extra.length&&(f.gzindex=0,f.status=J)}else f.status=J;if(f.status===J)if(f.gzhead.name){p=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>p&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),$(a),p=f.pending,f.pending===f.pending_buf_size)){m=1;break}m=f.gzindexp&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),0===m&&(f.gzindex=0,f.status=L)}else f.status=L;if(f.status===L)if(f.gzhead.comment){p=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>p&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),$(a),p=f.pending,f.pending===f.pending_buf_size)){m=1;break}m=f.gzindexp&&(a.adler=i(a.adler,f.pending_buf,f.pending-p,p)),0===m&&(f.status=M)}else f.status=M;if(f.status===M&&(f.gzhead.hcrc?(f.pending+2>f.pending_buf_size&&$(a),f.pending+2<=f.pending_buf_size&&(at(f,255&a.adler),at(f,a.adler>>8&255),a.adler=0,f.status=O)):f.status=O),0!==f.pending){if($(a),0===a.avail_out)return f.last_flush=-1,o}else if(0===a.avail_in&&Y(s)<=Y(r)&&s!==_)return X(a,c);if(f.status===P&&0!==a.avail_in)return X(a,c);if(0!==a.avail_in||0!==f.lookahead||s!==n&&f.status!==P){var z=f.strategy===w?dt(f,s):f.strategy===v?_t(f,s):t[f.level].func(f,s);if(z!==U&&z!==V||(f.status=P),z===Q||z===U)return 0===a.avail_out&&(f.last_flush=-1),o;if(z===T&&(s===h?e._tr_align(f):s!==d&&(e._tr_stored_block(f,0,0,!1),s===l&&(Z(f.head),0===f.lookahead&&(f.strstart=0,f.block_start=0,f.insert=0))),$(a),0===a.avail_out))return f.last_flush=-1,o}return s!==_?o:f.wrap<=0?u:(2===f.wrap?(at(f,255&a.adler),at(f,a.adler>>8&255),at(f,a.adler>>16&255),at(f,a.adler>>24&255),at(f,255&a.total_in),at(f,a.total_in>>8&255),at(f,a.total_in>>16&255),at(f,a.total_in>>24&255)):(et(f,a.adler>>>16),et(f,65535&a.adler)),$(a),f.wrap>0&&(f.wrap=-f.wrap),0!==f.pending?o:u)}function kt(t){var a;return t&&t.state?(a=t.state.status)!==F&&a!==G&&a!==J&&a!==L&&a!==M&&a!==O&&a!==P?X(t,g):(t.state=null,a===O?X(t,f):o):g}function zt(t,e){var i,r,n,h,l,_,d,u,f=e.length;if(!t||!t.state)return g;if(2===(h=(i=t.state).wrap)||1===h&&i.status!==F||i.lookahead)return g;for(1===h&&(t.adler=s(t.adler,e,f,0)),i.wrap=0,f>=i.w_size&&(0===h&&(Z(i.head),i.strstart=0,i.block_start=0,i.insert=0),u=new a.Buf8(i.w_size),a.arraySet(u,e,f-i.w_size,i.w_size,0),e=u,f=i.w_size),l=t.avail_in,_=t.next_in,d=t.input,t.avail_in=f,t.next_in=0,t.input=e,rt(i);i.lookahead>=E;){r=i.strstart,n=i.lookahead-(E-1);do{i.ins_h=(i.ins_h<=252?6:o>=248?5:o>=240?4:o>=224?3:o>=192?2:1;function f(e,o){if(o<65537&&(e.subarray&&t||!e.subarray&&n))return String.fromCharCode.apply(null,r.shrinkBuf(e,o));for(var f="",u=0;u>>6,t[u++]=128|63&e):e<65536?(t[u++]=224|e>>>12,t[u++]=128|e>>>6&63,t[u++]=128|63&e):(t[u++]=240|e>>>18,t[u++]=128|e>>>12&63,t[u++]=128|e>>>6&63,t[u++]=128|63&e);return t},exports.buf2binstring=function(r){return f(r,r.length)},exports.binstring2buf=function(n){for(var t=new r.Buf8(n.length),e=0,o=t.length;e4)h[o++]=65533,t+=a-1;else{for(u&=2===a?31:3===a?15:7;a>1&&t1?h[o++]=65533:u<65536?h[o++]=u:(u-=65536,h[o++]=55296|u>>10&1023,h[o++]=56320|1023&u)}return f(h,o)},exports.utf8border=function(r,n){var t;for((n=n||r.length)>r.length&&(n=r.length),t=n-1;t>=0&&128==(192&r[t]);)t--;return t<0?n:0===t?n:t+e[r[t]]>n?t:n}; -},{"./common":"tbG5"}],"bdtv":[function(require,module,exports) { -"use strict";function t(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}module.exports=t; -},{}],"nFS2":[function(require,module,exports) { -"use strict";var t=require("./zlib/deflate"),i=require("./utils/common"),e=require("./utils/strings"),n=require("./zlib/messages"),r=require("./zlib/zstream"),s=Object.prototype.toString,o=0,a=4,u=0,h=1,d=2,l=-1,f=0,p=8;function w(o){if(!(this instanceof w))return new w(o);this.options=i.assign({level:l,method:p,chunkSize:16384,windowBits:15,memLevel:8,strategy:f,to:""},o||{});var a=this.options;a.raw&&a.windowBits>0?a.windowBits=-a.windowBits:a.gzip&&a.windowBits>0&&a.windowBits<16&&(a.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new r,this.strm.avail_out=0;var h=t.deflateInit2(this.strm,a.level,a.method,a.windowBits,a.memLevel,a.strategy);if(h!==u)throw new Error(n[h]);if(a.header&&t.deflateSetHeader(this.strm,a.header),a.dictionary){var d;if(d="string"==typeof a.dictionary?e.string2buf(a.dictionary):"[object ArrayBuffer]"===s.call(a.dictionary)?new Uint8Array(a.dictionary):a.dictionary,(h=t.deflateSetDictionary(this.strm,d))!==u)throw new Error(n[h]);this._dict_set=!0}}function c(t,i){var e=new w(i);if(e.push(t,!0),e.err)throw e.msg||n[e.err];return e.result}function m(t,i){return(i=i||{}).raw=!0,c(t,i)}function g(t,i){return(i=i||{}).gzip=!0,c(t,i)}w.prototype.push=function(n,r){var l,f,p=this.strm,w=this.options.chunkSize;if(this.ended)return!1;f=r===~~r?r:!0===r?a:o,"string"==typeof n?p.input=e.string2buf(n):"[object ArrayBuffer]"===s.call(n)?p.input=new Uint8Array(n):p.input=n,p.next_in=0,p.avail_in=p.input.length;do{if(0===p.avail_out&&(p.output=new i.Buf8(w),p.next_out=0,p.avail_out=w),(l=t.deflate(p,f))!==h&&l!==u)return this.onEnd(l),this.ended=!0,!1;0!==p.avail_out&&(0!==p.avail_in||f!==a&&f!==d)||("string"===this.options.to?this.onData(e.buf2binstring(i.shrinkBuf(p.output,p.next_out))):this.onData(i.shrinkBuf(p.output,p.next_out)))}while((p.avail_in>0||0===p.avail_out)&&l!==h);return f===a?(l=t.deflateEnd(this.strm),this.onEnd(l),this.ended=!0,l===u):f!==d||(this.onEnd(u),p.avail_out=0,!0)},w.prototype.onData=function(t){this.chunks.push(t)},w.prototype.onEnd=function(t){t===u&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},exports.Deflate=w,exports.deflate=c,exports.deflateRaw=m,exports.gzip=g; -},{"./zlib/deflate":"BLBk","./utils/common":"tbG5","./utils/strings":"Q3ZD","./zlib/messages":"gMAY","./zlib/zstream":"bdtv"}],"LP5M":[function(require,module,exports) { -"use strict";var i=30,e=12;module.exports=function(o,a){var t,d,n,l,s,f,r,b,c,u,v,m,w,h,k,_,x,g,p,z,j,q,y,A,B;t=o.state,d=o.next_in,A=o.input,n=d+(o.avail_in-5),l=o.next_out,B=o.output,s=l-(a-o.avail_out),f=l+(o.avail_out-257),r=t.dmax,b=t.wsize,c=t.whave,u=t.wnext,v=t.window,m=t.hold,w=t.bits,h=t.lencode,k=t.distcode,_=(1<>>=p=g>>>24,w-=p,0===(p=g>>>16&255))B[l++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=h[(65535&g)+(m&(1<>>=p,w-=p),w<15&&(m+=A[d++]<>>=p=g>>>24,w-=p,!(16&(p=g>>>16&255))){if(0==(64&p)){g=k[(65535&g)+(m&(1<r){o.msg="invalid distance too far back",t.mode=i;break i}if(m>>>=p,w-=p,j>(p=l-s)){if((p=j-p)>c&&t.sane){o.msg="invalid distance too far back",t.mode=i;break i}if(q=0,y=v,0===u){if(q+=b-p,p2;)B[l++]=y[q++],B[l++]=y[q++],B[l++]=y[q++],z-=3;z&&(B[l++]=y[q++],z>1&&(B[l++]=y[q++]))}else{q=l-j;do{B[l++]=B[q++],B[l++]=B[q++],B[l++]=B[q++],z-=3}while(z>2);z&&(B[l++]=B[q++],z>1&&(B[l++]=B[q++]))}break}}break}}while(d>3,m&=(1<<(w-=z<<3))-1,o.next_in=d,o.next_out=l,o.avail_in=d=1&&0===P[G];G--);if(H>G&&(H=G),0===G)return d[v++]=20971520,d[v++]=20971520,h.bits=1,0;for(F=1;F0&&(a===e||1!==G))return-1;for(Q[1]=0,D=1;Di||a===t&&L>o)return 1;for(;;){y=D-J,B[E]j?(z=R[S+B[E]],A=N[O+B[E]]):(z=96,A=0),k=1<>J)+(p-=k)]=y<<24|z<<16|A|0}while(0!==p);for(k=1<>=1;if(0!==k?(M&=k-1,M+=k):M=0,E++,0==--P[D]){if(D===G)break;D=c[m+B[E]]}if(D>H&&(M&x)!==q){for(0===J&&(J=H),g+=F,K=1<<(I=D-J);I+Ji||a===t&&L>o)return 1;d[q=M&x]=H<<24|I<<16|g-v|0}}return 0!==M&&(d[g+M]=D-J<<24|64<<16|0),h.bits=H,0}; -},{"../utils/common":"tbG5"}],"GIDK":[function(require,module,exports) { -"use strict";var e=require("../utils/common"),a=require("./adler32"),t=require("./crc32"),i=require("./inffast"),s=require("./inftrees"),n=0,r=1,o=2,d=4,l=5,f=6,c=0,h=1,k=2,b=-2,m=-3,w=-4,u=-5,g=8,v=1,x=2,p=3,_=4,y=5,z=6,B=7,S=8,q=9,C=10,I=11,R=12,j=13,A=14,D=15,E=16,G=17,H=18,K=19,N=20,F=21,J=22,L=23,M=24,O=25,P=26,Q=27,T=28,U=29,V=30,W=31,X=32,Y=852,Z=592,$=15,ee=$;function ae(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function te(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new e.Buf16(320),this.work=new e.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ie(a){var t;return a&&a.state?(t=a.state,a.total_in=a.total_out=t.total=0,a.msg="",t.wrap&&(a.adler=1&t.wrap),t.mode=v,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new e.Buf32(Y),t.distcode=t.distdyn=new e.Buf32(Z),t.sane=1,t.back=-1,c):b}function se(e){var a;return e&&e.state?((a=e.state).wsize=0,a.whave=0,a.wnext=0,ie(e)):b}function ne(e,a){var t,i;return e&&e.state?(i=e.state,a<0?(t=0,a=-a):(t=1+(a>>4),a<48&&(a&=15)),a&&(a<8||a>15)?b:(null!==i.window&&i.wbits!==a&&(i.window=null),i.wrap=t,i.wbits=a,se(e))):b}function re(e,a){var t,i;return e?(i=new te,e.state=i,i.window=null,(t=ne(e,a))!==c&&(e.state=null),t):b}function oe(e){return re(e,ee)}var de,le,fe=!0;function ce(a){if(fe){var t;for(de=new e.Buf32(512),le=new e.Buf32(32),t=0;t<144;)a.lens[t++]=8;for(;t<256;)a.lens[t++]=9;for(;t<280;)a.lens[t++]=7;for(;t<288;)a.lens[t++]=8;for(s(r,a.lens,0,288,de,0,a.work,{bits:9}),t=0;t<32;)a.lens[t++]=5;s(o,a.lens,0,32,le,0,a.work,{bits:5}),fe=!1}a.lencode=de,a.lenbits=9,a.distcode=le,a.distbits=5}function he(a,t,i,s){var n,r=a.state;return null===r.window&&(r.wsize=1<=r.wsize?(e.arraySet(r.window,t,i-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):((n=r.wsize-r.wnext)>s&&(n=s),e.arraySet(r.window,t,i-s,n,r.wnext),(s-=n)?(e.arraySet(r.window,t,i-s,s,0),r.wnext=s,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave>>8&255,$.check=t($.check,qe,2,0),oe=0,de=0,$.mode=x;break}if($.flags=0,$.head&&($.head.done=!1),!(1&$.wrap)||(((255&oe)<<8)+(oe>>8))%31){Y.msg="incorrect header check",$.mode=V;break}if((15&oe)!==g){Y.msg="unknown compression method",$.mode=V;break}if(de-=4,_e=8+(15&(oe>>>=4)),0===$.wbits)$.wbits=_e;else if(_e>$.wbits){Y.msg="invalid window size",$.mode=V;break}$.dmax=1<<_e,Y.adler=$.check=1,$.mode=512&oe?C:R,oe=0,de=0;break;case x:for(;de<16;){if(0===ne)break e;ne--,oe+=ee[ie++]<>8&1),512&$.flags&&(qe[0]=255&oe,qe[1]=oe>>>8&255,$.check=t($.check,qe,2,0)),oe=0,de=0,$.mode=p;case p:for(;de<32;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>8&255,qe[2]=oe>>>16&255,qe[3]=oe>>>24&255,$.check=t($.check,qe,4,0)),oe=0,de=0,$.mode=_;case _:for(;de<16;){if(0===ne)break e;ne--,oe+=ee[ie++]<>8),512&$.flags&&(qe[0]=255&oe,qe[1]=oe>>>8&255,$.check=t($.check,qe,2,0)),oe=0,de=0,$.mode=y;case y:if(1024&$.flags){for(;de<16;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>8&255,$.check=t($.check,qe,2,0)),oe=0,de=0}else $.head&&($.head.extra=null);$.mode=z;case z:if(1024&$.flags&&((ke=$.length)>ne&&(ke=ne),ke&&($.head&&(_e=$.head.extra_len-$.length,$.head.extra||($.head.extra=new Array($.head.extra_len)),e.arraySet($.head.extra,ee,ie,ke,_e)),512&$.flags&&($.check=t($.check,ee,ke,ie)),ne-=ke,ie+=ke,$.length-=ke),$.length))break e;$.length=0,$.mode=B;case B:if(2048&$.flags){if(0===ne)break e;ke=0;do{_e=ee[ie+ke++],$.head&&_e&&$.length<65536&&($.head.name+=String.fromCharCode(_e))}while(_e&&ke>9&1,$.head.done=!0),Y.adler=$.check=0,$.mode=R;break;case C:for(;de<32;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=7&de,de-=7&de,$.mode=Q;break}for(;de<3;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=1)){case 0:$.mode=A;break;case 1:if(ce($),$.mode=N,Z===f){oe>>>=2,de-=2;break e}break;case 2:$.mode=G;break;case 3:Y.msg="invalid block type",$.mode=V}oe>>>=2,de-=2;break;case A:for(oe>>>=7&de,de-=7&de;de<32;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>16^65535)){Y.msg="invalid stored block lengths",$.mode=V;break}if($.length=65535&oe,oe=0,de=0,$.mode=D,Z===f)break e;case D:$.mode=E;case E:if(ke=$.length){if(ke>ne&&(ke=ne),ke>re&&(ke=re),0===ke)break e;e.arraySet(te,ee,ie,ke,se),ne-=ke,ie+=ke,re-=ke,se+=ke,$.length-=ke;break}$.mode=R;break;case G:for(;de<14;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=5,de-=5,$.ndist=1+(31&oe),oe>>>=5,de-=5,$.ncode=4+(15&oe),oe>>>=4,de-=4,$.nlen>286||$.ndist>30){Y.msg="too many length or distance symbols",$.mode=V;break}$.have=0,$.mode=H;case H:for(;$.have<$.ncode;){for(;de<3;){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=3,de-=3}for(;$.have<19;)$.lens[Ce[$.have++]]=0;if($.lencode=$.lendyn,$.lenbits=7,ze={bits:$.lenbits},ye=s(n,$.lens,0,19,$.lencode,0,$.work,ze),$.lenbits=ze.bits,ye){Y.msg="invalid code lengths set",$.mode=V;break}$.have=0,$.mode=K;case K:for(;$.have<$.nlen+$.ndist;){for(;ue=(Se=$.lencode[oe&(1<<$.lenbits)-1])>>>16&255,ge=65535&Se,!((we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=we,de-=we,$.lens[$.have++]=ge;else{if(16===ge){for(Be=we+2;de>>=we,de-=we,0===$.have){Y.msg="invalid bit length repeat",$.mode=V;break}_e=$.lens[$.have-1],ke=3+(3&oe),oe>>>=2,de-=2}else if(17===ge){for(Be=we+3;de>>=we)),oe>>>=3,de-=3}else{for(Be=we+7;de>>=we)),oe>>>=7,de-=7}if($.have+ke>$.nlen+$.ndist){Y.msg="invalid bit length repeat",$.mode=V;break}for(;ke--;)$.lens[$.have++]=_e}}if($.mode===V)break;if(0===$.lens[256]){Y.msg="invalid code -- missing end-of-block",$.mode=V;break}if($.lenbits=9,ze={bits:$.lenbits},ye=s(r,$.lens,0,$.nlen,$.lencode,0,$.work,ze),$.lenbits=ze.bits,ye){Y.msg="invalid literal/lengths set",$.mode=V;break}if($.distbits=6,$.distcode=$.distdyn,ze={bits:$.distbits},ye=s(o,$.lens,$.nlen,$.ndist,$.distcode,0,$.work,ze),$.distbits=ze.bits,ye){Y.msg="invalid distances set",$.mode=V;break}if($.mode=N,Z===f)break e;case N:$.mode=F;case F:if(ne>=6&&re>=258){Y.next_out=se,Y.avail_out=re,Y.next_in=ie,Y.avail_in=ne,$.hold=oe,$.bits=de,i(Y,fe),se=Y.next_out,te=Y.output,re=Y.avail_out,ie=Y.next_in,ee=Y.input,ne=Y.avail_in,oe=$.hold,de=$.bits,$.mode===R&&($.back=-1);break}for($.back=0;ue=(Se=$.lencode[oe&(1<<$.lenbits)-1])>>>16&255,ge=65535&Se,!((we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>ve)])>>>16&255,ge=65535&Se,!(ve+(we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=ve,de-=ve,$.back+=ve}if(oe>>>=we,de-=we,$.back+=we,$.length=ge,0===ue){$.mode=P;break}if(32&ue){$.back=-1,$.mode=R;break}if(64&ue){Y.msg="invalid literal/length code",$.mode=V;break}$.extra=15&ue,$.mode=J;case J:if($.extra){for(Be=$.extra;de>>=$.extra,de-=$.extra,$.back+=$.extra}$.was=$.length,$.mode=L;case L:for(;ue=(Se=$.distcode[oe&(1<<$.distbits)-1])>>>16&255,ge=65535&Se,!((we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>ve)])>>>16&255,ge=65535&Se,!(ve+(we=Se>>>24)<=de);){if(0===ne)break e;ne--,oe+=ee[ie++]<>>=ve,de-=ve,$.back+=ve}if(oe>>>=we,de-=we,$.back+=we,64&ue){Y.msg="invalid distance code",$.mode=V;break}$.offset=ge,$.extra=15&ue,$.mode=M;case M:if($.extra){for(Be=$.extra;de>>=$.extra,de-=$.extra,$.back+=$.extra}if($.offset>$.dmax){Y.msg="invalid distance too far back",$.mode=V;break}$.mode=O;case O:if(0===re)break e;if(ke=fe-re,$.offset>ke){if((ke=$.offset-ke)>$.whave&&$.sane){Y.msg="invalid distance too far back",$.mode=V;break}ke>$.wnext?(ke-=$.wnext,be=$.wsize-ke):be=$.wnext-ke,ke>$.length&&(ke=$.length),me=$.window}else me=te,be=se-$.offset,ke=$.length;ke>re&&(ke=re),re-=ke,$.length-=ke;do{te[se++]=me[be++]}while(--ke);0===$.length&&($.mode=F);break;case P:if(0===re)break e;te[se++]=$.length,re--,$.mode=F;break;case Q:if($.wrap){for(;de<32;){if(0===ne)break e;ne--,oe|=ee[ie++]<=0&&u.windowBits<16&&(u.windowBits=-u.windowBits,0===u.windowBits&&(u.windowBits=-15)),!(u.windowBits>=0&&u.windowBits<16)||n&&n.windowBits||(u.windowBits+=32),u.windowBits>15&&u.windowBits<48&&0==(15&u.windowBits)&&(u.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new e,this.strm.avail_out=0;var h=t.inflateInit2(this.strm,u.windowBits);if(h!==s.Z_OK)throw new Error(r[h]);this.header=new o,t.inflateGetHeader(this.strm,this.header)}function h(t,i){var n=new a(i);if(n.push(t,!0),n.err)throw n.msg||r[n.err];return n.result}function _(t,i){return(i=i||{}).raw=!0,h(t,i)}a.prototype.push=function(r,e){var o,a,h,_,w,l,d=this.strm,f=this.options.chunkSize,p=this.options.dictionary,c=!1;if(this.ended)return!1;a=e===~~e?e:!0===e?s.Z_FINISH:s.Z_NO_FLUSH,"string"==typeof r?d.input=n.binstring2buf(r):"[object ArrayBuffer]"===u.call(r)?d.input=new Uint8Array(r):d.input=r,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new i.Buf8(f),d.next_out=0,d.avail_out=f),(o=t.inflate(d,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&p&&(l="string"==typeof p?n.string2buf(p):"[object ArrayBuffer]"===u.call(p)?new Uint8Array(p):p,o=t.inflateSetDictionary(this.strm,l)),o===s.Z_BUF_ERROR&&!0===c&&(o=s.Z_OK,c=!1),o!==s.Z_STREAM_END&&o!==s.Z_OK)return this.onEnd(o),this.ended=!0,!1;d.next_out&&(0!==d.avail_out&&o!==s.Z_STREAM_END&&(0!==d.avail_in||a!==s.Z_FINISH&&a!==s.Z_SYNC_FLUSH)||("string"===this.options.to?(h=n.utf8border(d.output,d.next_out),_=d.next_out-h,w=n.buf2string(d.output,h),d.next_out=_,d.avail_out=f-_,_&&i.arraySet(d.output,d.output,h,_,0),this.onData(w)):this.onData(i.shrinkBuf(d.output,d.next_out)))),0===d.avail_in&&0===d.avail_out&&(c=!0)}while((d.avail_in>0||0===d.avail_out)&&o!==s.Z_STREAM_END);return o===s.Z_STREAM_END&&(a=s.Z_FINISH),a===s.Z_FINISH?(o=t.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,o===s.Z_OK):a!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),d.avail_out=0,!0)},a.prototype.onData=function(t){this.chunks.push(t)},a.prototype.onEnd=function(t){t===s.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},exports.Inflate=a,exports.inflate=h,exports.inflateRaw=_,exports.ungzip=h; -},{"./zlib/inflate":"GIDK","./utils/common":"tbG5","./utils/strings":"Q3ZD","./zlib/constants":"xUUw","./zlib/messages":"gMAY","./zlib/zstream":"bdtv","./zlib/gzheader":"WIli"}],"f4vO":[function(require,module,exports) { -"use strict";var e=require("./lib/utils/common").assign,i=require("./lib/deflate"),r=require("./lib/inflate"),l=require("./lib/zlib/constants"),s={};e(s,i,r,l),module.exports=s; -},{"./lib/utils/common":"tbG5","./lib/deflate":"nFS2","./lib/inflate":"faQk","./lib/zlib/constants":"xUUw"}],"DstG":[function(require,module,exports) { -!function(e){var a=String.fromCharCode;function s(e,s,c){for(var n=e[s],r=1,i=0,t=0;t=32&&n<=126?"Unexpected character "+a(n)+" in JSON at position "+s+" (line "+r+", column "+i+")":"Unexpected byte 0x"+n.toString(16)+" in JSON at position "+s+" (line "+r+", column "+i+")"))}e.JSON_parse=function(e){if(!(e instanceof Uint8Array))throw new Error("JSON input must be a Uint8Array");for(var c,n=[],r=[],i=[],t=e.length,o=null,u=0,f=0;f=t&&s(e,t),34!==(p=e[f++]);)if(92===p)switch(e[f++]){case 34:l+='"';break;case 47:l+="/";break;case 92:l+="\\";break;case 98:l+="\b";break;case 102:l+="\f";break;case 110:l+="\n";break;case 114:l+="\r";break;case 116:l+="\t";break;case 117:for(var k=0,h=0;h<4;h++)k<<=4,(p=e[f++])>=48&&p<=57?k|=p-48:p>=97&&p<=102?k|=p+-87:p>=65&&p<=70?k|=p+-55:s(e,--f);l+=a(k);break;default:s(e,--f)}else if(p<=127)l+=a(p);else if(192==(224&p))l+=a((31&p)<<6|63&e[f++]);else if(224==(240&p))l+=a((15&p)<<12|(63&e[f++])<<6|63&e[f++]);else if(240==(248&p)){var d=(7&p)<<18|(63&e[f++])<<12|(63&e[f++])<<6|63&e[f++];d>65535&&(l+=a((d-=65536)>>10&1023|55296),d=56320|1023&d),l+=a(d)}l[0];break;case 91:l=[],n.push(o),r.push(c),i.push(u),o=null,c=l,u=1;continue;case 123:l={},n.push(o),r.push(c),i.push(u),o=null,c=l,u=2;continue;case 93:1!==u&&s(e,--f),l=c,o=n.pop(),c=r.pop(),u=i.pop();break;case 125:2!==u&&s(e,--f),l=c,o=n.pop(),c=r.pop(),u=i.pop();break;default:s(e,--f)}for(p=e[f];p<=32;)p=e[++f];switch(u){case 0:if(f===t)return l;break;case 1:if(c.push(l),44===p){f++;continue}if(93===p)continue;break;case 2:if(null===o){if(o=l,58===p){f++;continue}}else{if(c[o]=l,o=null,44===p){f++;continue}if(125===p)continue}}break}}s(e,f)}}("undefined"!=typeof exports?exports:this); -},{}],"QTYz":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.withMockedFileChunkSizeForTests=o,exports.MaybeCompressedDataReader=exports.TextProfileDataSource=exports.StringBackedTextFileContent=exports.BufferBackedTextFileContent=void 0;var e=n(require("pako")),t=require("uint8array-json-parser");function r(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return r=function(){return e},e}function n(e){if(e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=r();if(t&&t.has(e))return t.get(e);var n={},s=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var o=s?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(n,i,o):n[i]=e[i]}return n.default=e,t&&t.set(e,n),n}var s=function(e,t,r,n){return new(r||(r=Promise))(function(s,i){function o(e){try{a(n.next(e))}catch(t){i(t)}}function u(e){try{a(n.throw(e))}catch(t){i(t)}}function a(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,u)}a((n=n.apply(e,t||[])).next())})};let i=1<<27;function o(e,t){return s(this,void 0,void 0,function*(){const r=i;i=e;try{yield t()}finally{i=r}})}function u(e){return"["===(e=e.trim())[0]&&"]"!==(e=e.replace(/,\s*$/,""))[e.length-1]&&(e+="]"),JSON.parse(e)}function a(e){let r=0;for(let t=0;t0&&/\s/.exec(String.fromCharCode(e[t-1]));)t--;if(","===String.fromCharCode(e[t-1])&&t--,"]"!==String.fromCharCode(e[t-1])){const r=new Uint8Array(t+1);r.set(e.subarray(0,t)),r[t]="]".charCodeAt(0),e=r}}return(0,t.JSON_parse)(e)}class c{constructor(e){this.chunks=[];const t=this.byteArray=new Uint8Array(e);let r="utf-8";if(t.length>2&&(255===t[0]&&254===t[1]?r="utf-16le":254===t[0]&&255===t[1]&&(r="utf-16be")),"undefined"!=typeof TextDecoder){const t=new TextDecoder(r);for(let r=0;r=i&&this.chunks.push("")}}splitLines(){return{[Symbol.iterator]:function*(){let e="";for(let t of this.chunks){const r=t.split("\n");for(let t=0;ts(this,void 0,void 0,function*(){try{return e.inflate(new Uint8Array(t)).buffer}catch(r){return t}}))}name(){return s(this,void 0,void 0,function*(){return yield this.namePromise})}readAsArrayBuffer(){return s(this,void 0,void 0,function*(){return yield this.uncompressedData})}readAsText(){return s(this,void 0,void 0,function*(){const e=yield this.readAsArrayBuffer();return new c(e)})}static fromFile(e){const t=new Promise(t=>{const r=new FileReader;r.addEventListener("loadend",()=>{if(!(r.result instanceof ArrayBuffer))throw new Error("Expected reader.result to be an instance of ArrayBuffer");t(r.result)}),r.readAsArrayBuffer(e)});return new l(Promise.resolve(e.name),t)}static fromArrayBuffer(e,t){return new l(Promise.resolve(e),Promise.resolve(t))}}exports.MaybeCompressedDataReader=l; -},{"pako":"f4vO","uint8array-json-parser":"DstG"}],"G28U":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromInstrumentsDeepCopy=a,exports.importFromInstrumentsTrace=w,exports.importRunFromInstrumentsTrace=g,exports.importThreadFromInstrumentsTrace=b,exports.readInstrumentsKeyedArchive=y,exports.decodeUTF8=v,exports.UID=void 0;var e=require("../lib/profile"),t=require("../lib/utils"),r=require("../lib/value-formatters"),n=require("./utils"),s=function(e,t,r,n){return new(r||(r=Promise))(function(s,i){function o(e){try{c(n.next(e))}catch(t){i(t)}}function a(e){try{c(n.throw(e))}catch(t){i(t)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(o,a)}c((n=n.apply(e,t||[])).next())})};function i(e){const t=[...e.splitLines()].map(e=>e.split("\t")),r=t.shift();if(!r)return[];const n=new Map;for(let i=0;i0;){const e=c.pop();l=Math.max(l,e.endValue),s.leaveFrame(e,l)}return"Bytes Used"in a[0]?s.setValueFormatter(new r.ByteFormatter):("Weight"in a[0]||"Running Time"in a[0])&&s.setValueFormatter(new r.TimeFormatter("milliseconds")),s.build()}function c(e){return s(this,void 0,void 0,function*(){const t={name:e.name,files:new Map,subdirectories:new Map},r=yield new Promise((t,r)=>{e.createReader().readEntries(e=>{t(e)},r)});for(let e of r)if(e.isDirectory){const r=yield c(e);t.subdirectories.set(r.name,r)}else{const r=yield new Promise((t,r)=>{e.file(t,r)});t.files.set(r.name,r)}return t})}function l(e){return n.MaybeCompressedDataReader.fromFile(e).readAsArrayBuffer()}function u(e){return n.MaybeCompressedDataReader.fromFile(e).readAsText()}function f(e,r){const n=(0,t.getOrThrow)(e.subdirectories,"corespace"),s=(0,t.getOrThrow)(n.subdirectories,`run${r}`);return(0,t.getOrThrow)(s.subdirectories,"core")}class h{constructor(e){this.bytePos=0,this.view=new DataView(e)}seek(e){this.bytePos=e}skip(e){this.bytePos+=e}hasMore(){return this.bytePosthis.view.byteLength?0:this.view.getUint8(this.bytePos-1)}readUint32(){return this.bytePos+=4,this.bytePos>this.view.byteLength?0:this.view.getUint32(this.bytePos-4,!0)}readUint48(){return this.bytePos+=6,this.bytePos>this.view.byteLength?0:this.view.getUint32(this.bytePos-6,!0)+this.view.getUint16(this.bytePos-2,!0)*Math.pow(2,32)}readUint64(){return this.bytePos+=8,this.bytePos>this.view.byteLength?0:this.view.getUint32(this.bytePos-8,!0)+this.view.getUint32(this.bytePos-4,!0)*Math.pow(2,32)}}function p(e){return s(this,void 0,void 0,function*(){const r=(0,t.getOrThrow)(e.subdirectories,"stores");for(let e of r.subdirectories.values()){const r=e.files.get("schema.xml");if(!r)continue;const n=yield u(r);if(!/name="time-profile"/.exec(n.firstChunk()))continue;const s=new h(yield l((0,t.getOrThrow)(e.files,"bulkstore")));s.readUint32(),s.readUint32(),s.readUint32();const i=s.readUint32(),o=s.readUint32();s.seek(i);const a=[];for(;;){const e=s.readUint48();if(0===e)break;const t=s.readUint32();s.skip(o-6-4-4);const r=s.readUint32();a.push({timestamp:e,threadID:t,backtraceID:r})}return a}throw new Error("Could not find sample list")})}function d(e,r){return s(this,void 0,void 0,function*(){const e=(0,t.getOrThrow)(r.subdirectories,"uniquing"),n=(0,t.getOrThrow)(e.subdirectories,"arrayUniquer"),s=(0,t.getOrThrow)(n.files,"integeruniquer.index"),i=(0,t.getOrThrow)(n.files,"integeruniquer.data"),o=new h(yield l(s)),a=new h(yield l(i));o.seek(32);let c=[];for(;o.hasMore();){const e=o.readUint32()+1048576*o.readUint32();if(0===e)continue;a.seek(e);let t=a.readUint32(),r=[];for(;t--;)r.push(a.readUint64());c.push(r)}return c})}function m(e){return s(this,void 0,void 0,function*(){const r=(0,t.getOrThrow)(e.files,"form.template"),n=y(yield l(r)),s=n["com.apple.xray.owner.template.version"];let i=1;"com.apple.xray.owner.template"in n&&(i=n["com.apple.xray.owner.template"].get("_selectedRunNumber"));let o=n.$1;"stubInfoByUUID"in n&&(o=Array.from(n.stubInfoByUUID.keys())[0]);const a=n["com.apple.xray.run.data"],c=[];for(let e of a.runNumbers){const r=(0,t.getOrThrow)(a.runData,e),n=(0,t.getOrThrow)(r,"symbolsByPid"),s=new Map;for(let i of n.values()){for(let e of i.symbols){if(!e)continue;const{sourcePath:r,symbolName:n,addressToLine:i}=e;for(let e of i.keys())(0,t.getOrInsert)(s,e,()=>{const s=n||`0x${(0,t.zeroPad)(e.toString(16),16)}`,i={key:`${r}:${s}`,name:s};return r&&(i.file=r),i})}c.push({number:e,addressToFrameMap:s})}}return{version:s,instrument:o,selectedRunNumber:i,runs:c}})}function w(e){return s(this,void 0,void 0,function*(){const t=yield c(e),{version:r,runs:n,instrument:s,selectedRunNumber:i}=yield m(t);if("com.apple.xray.instrument-type.coresampler2"!==s)throw new Error(`The only supported instrument from .trace import is "com.apple.xray.instrument-type.coresampler2". Got ${s}`);console.log("version: ",r),console.log("Importing time profile");const o=[];let a=0;for(let c of n){const{addressToFrameMap:r,number:n}=c,s=yield g({fileName:e.name,tree:t,addressToFrameMap:r,runNumber:n});c.number===i&&(a=o.length+s.indexToView),o.push(...s.profiles)}return{name:e.name,indexToView:a,profiles:o}})}function g(e){return s(this,void 0,void 0,function*(){const{fileName:r,tree:n,addressToFrameMap:s,runNumber:i}=e,o=f(n,i);let a=yield p(o);const c=yield d(a,o),l=new Map;for(let e of a)l.set(e.threadID,(0,t.getOrElse)(l,e.threadID,()=>0)+1);const u=Array.from(l.entries());(0,t.sortBy)(u,e=>-e[1]);const h=u.map(e=>e[0]);return{name:r,indexToView:0,profiles:h.map(e=>b({threadID:e,fileName:r,arrays:c,addressToFrameMap:s,samples:a}))}})}function b(n){let{fileName:s,addressToFrameMap:i,arrays:o,threadID:a,samples:c}=n;const l=new Map;c=c.filter(e=>e.threadID===a);const u=new e.StackListProfileBuilder((0,t.lastOf)(c).timestamp);function f(e,r){const n=i.get(e);if(n)r.push(n);else if(e in o)for(let t of o[e])f(t,r);else{const n={key:e,name:`0x${(0,t.zeroPad)(e.toString(16),16)}`};i.set(e,n),r.push(n)}}u.setName(`${s} - thread ${a}`);let h=null;for(let e of c){const r=(0,t.getOrInsert)(l,e.backtraceID,e=>{const t=[];return f(e,t),t.reverse(),t});if(null===h&&(u.appendSampleWithWeight([],e.timestamp),h=e.timestamp),e.timestamp{switch(e){case"NSTextStorage":case"NSParagraphStyle":case"NSFont":return null;case"PFTSymbolData":{const e=Object.create(null);e.symbolName=t.$0,e.sourcePath=t.$1,e.addressToLine=new Map;for(let r=3;;r+=2){const n=t["$"+r],s=t["$"+(r+1)];if(null==n||null==s)break;e.addressToLine.set(n,s)}return e}case"PFTOwnerData":{const e=Object.create(null);return e.ownerName=t.$0,e.ownerPath=t.$1,e}case"PFTPersistentSymbols":{const e=Object.create(null),r=t.$4;e.threadNames=t.$3,e.symbols=[];for(let n=1;ne)){if(1e5!==e.$version||"NSKeyedArchiver"!==e.$archiver||!U(e.$top)||!S(e.$objects))throw new Error("Invalid keyed archive");"$null"===e.$objects[0]&&(e.$objects[0]=null);for(let n=0;n{if(t instanceof x)return e.$objects[t.index];if(S(t))for(let e=0;ee)){if(U(t)&&t.$class){let n=N(e,t.$class).$classname;switch(n){case"NSDecimalNumberPlaceholder":{let e=t["NS.length"],r=t["NS.exponent"],n=t["NS.mantissa.bo"],s=t["NS.negative"],i=new Uint16Array(new Uint8Array(t["NS.mantissa"]).buffer),o=0;for(let t=0;t>8|(255&e)<<8),o+=e*Math.pow(65536,t)}return o*=Math.pow(10,r),s?-o:o}case"NSData":case"NSMutableData":return t["NS.bytes"]||t["NS.data"];case"NSString":case"NSMutableString":return t["NS.string"]?t["NS.string"]:t["NS.bytes"]?v(t["NS.bytes"]):(console.warn(`Unexpected ${n} format: `,t),null);case"NSArray":case"NSMutableArray":if("NS.objects"in t)return t["NS.objects"];let e=[];for(;;){let r="NS.object."+e.length;if(!(r in t))break;e.push(t[r])}return e;case"_NSKeyedCoderOldStyleArray":{const e=t["NS.count"];let r=[];for(let n=0;n>4){case 0:return this.parseSingleton(e,r);case 1:return this.parseInteger(e,1<({key:e,name:e})),duration:parseInt(i,10)})}return t}function r(r){const n=t(r),i=n.reduce((e,t)=>e+t.duration,0),o=new e.StackListProfileBuilder(i);if(0===n.length)return null;for(let e of n)o.appendSampleWithWeight(e.stack,e.duration);return o.build()} -},{"../lib/profile":"YG8z"}],"uNW1":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromFirefox=l;var e=require("../lib/profile"),t=require("../lib/utils"),r=require("../lib/value-formatters");function l(l){const n=l.profile,s=1===n.threads.length?n.threads[0]:n.threads.filter(e=>"GeckoMain"===e.name)[0],a=new Map;function o(e){let r=e[0];const l=[];for(;null!=r;){const e=s.stackTable.data[r],[t,n]=e;l.push(n),r=t}return l.reverse(),l.map(e=>{const r=s.frameTable.data[e],l=s.stringTable[r[0]],n=/(.*)\s+\((.*?)(?::(\d+))?(?::(\d+))?\)$/.exec(l);return n?n[2].startsWith("resource:")||"self-hosted"===n[2]||n[2].startsWith("self-hosted:")?null:(0,t.getOrInsert)(a,l,()=>({key:l,name:n[1],file:n[2],line:n[3]?parseInt(n[3]):void 0,col:n[4]?parseInt(n[4])+1:void 0})):null}).filter(e=>null!=e)}const i=new e.CallTreeProfileBuilder(l.duration);let u=[];for(let e of s.samples.data){const t=o(e),r=e[1];let l=-1;for(let e=0;el;e--)i.leaveFrame(u[e],r);for(let e=l+1;e0?e[1]:t?`(anonymous ${t.split("/").pop()}:${a})`:"(anonymous)",file:t.length>0?t:"(unknown file)",line:a,col:n}}break}case"CODE":switch(e.kind){case"LoadIC":case"StoreIC":case"KeyedStoreIC":case"KeyedLoadIC":case"LoadGlobalIC":case"Handler":r="(IC) "+r;break;case"BytecodeHandler":r="(bytecode) ~"+r;break;case"Stub":r="(stub) "+r;break;case"Builtin":r="(builtin) "+r;break;case"RegExp":r="(regexp) "+r}break;default:r=`(${e.type}) ${r}`}return{key:r,name:r}}function n(n){const o=new e.StackListProfileBuilder,s=new Map;let c=0;(0,t.sortBy)(n.ticks,e=>e.tm);for(let e of n.ticks){const r=[];for(let o=e.s.length-2;o>=0;o-=2){const c=e.s[o];-1!==c&&(c>n.code.length?r.push({key:c,name:`0x${c.toString(16)}`}):r.push((i=c,(0,t.getOrInsert)(s,i,e=>a(n.code[e],n)))))}o.appendSampleWithWeight(r,e.tm-c),c=e.tm}var i;return o.setValueFormatter(new r.TimeFormatter("microseconds")),o.build()} -},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4"}],"f2sa":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromLinuxPerf=l;var e=require("../lib/profile"),t=require("../lib/utils"),n=require("../lib/value-formatters");function*r(e){let t=[];for(let n of e.splitLines())""===n?(yield s(t),t=[]):t.push(n);t.length>0&&(yield s(t))}function s(e){const t=e.filter(e=>!/^\s*#/.exec(e)),n={command:null,processID:null,threadID:null,time:null,eventType:"",stack:[]},r=t.shift();if(!r)return null;const s=/^(\S.+?)\s+(\d+)(?:\/?(\d+))?\s+/.exec(r);if(!s)return null;n.command=s[1],s[3]?(n.processID=parseInt(s[2],10),n.threadID=parseInt(s[3],10)):n.threadID=parseInt(s[2],10);const l=/\s+(\d+\.\d+):\s+/.exec(r);l&&(n.time=parseFloat(l[1]));const i=/(\S+):\s*$/.exec(r);i&&(n.eventType=i[1]);for(let o of t){const e=/^\s*(\w+)\s*(.+) \((\S*)\)/.exec(o);if(!e)continue;let[,t,r,s]=e;r=r.replace(/\+0x[\da-f]+$/,""),n.stack.push({address:`0x${t}`,symbolName:r,file:s})}return n.stack.reverse(),n}function l(s){const l=new Map;let i=null;for(let o of r(s)){if(null==o)continue;if(null!=i&&i!=o.eventType)continue;if(null==o.time)continue;i=o.eventType;let r=[];o.command&&r.push(o.command),o.processID&&r.push(`pid: ${o.processID}`),o.threadID&&r.push(`tid: ${o.threadID}`);const s=r.join(" ");(0,t.getOrInsert)(l,s,()=>{const t=new e.StackListProfileBuilder;return t.setName(s),t.setValueFormatter(new n.TimeFormatter("seconds")),t}).appendSampleWithTimestamp(o.stack.map(({symbolName:e,file:t})=>({key:`${e} (${t})`,name:"[unknown]"===e?`??? (${t})`:e,file:t})),o.time)}return 0===l.size?null:{name:1===l.size?Array.from(l.keys())[0]:"",indexToView:0,profiles:Array.from((0,t.itMap)(l.values(),e=>e.build()))}} -},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4"}],"jm73":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromHaskell=l;var e=require("../lib/profile"),r=require("../lib/value-formatters");function t(e,r,l,o,i){if(0===e.ticks&&0===e.entries&&0===e.alloc&&0===e.children.length)return r;let a=r,s=o.get(e.id);l.enterFrame(s,a);for(let n of e.children)a=t(n,a,l,o,i);return a+=i(e),l.leaveFrame(s,a),a}function l(l){const o=new Map;for(let e of l.cost_centres){const r={key:e.id,name:`${e.module}.${e.label}`};e.src_loc.startsWith("<")||(r.file=e.src_loc),o.set(e.id,r)}const i=new e.CallTreeProfileBuilder(l.total_ticks);t(l.profile,0,i,o,e=>e.ticks),i.setValueFormatter(new r.TimeFormatter("milliseconds")),i.setName(`${l.program} time`);const a=new e.CallTreeProfileBuilder(l.total_ticks);return t(l.profile,0,a,o,e=>e.alloc),a.setValueFormatter(new r.ByteFormatter),a.setName(`${l.program} allocation`),{name:l.program,indexToView:0,profiles:[i.build(),a.build()]}} -},{"../lib/profile":"YG8z","../lib/value-formatters":"LsM4"}],"jP3w":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromSafari=i;var e=require("../lib/profile"),r=require("../lib/value-formatters");function t(e){return e.map(({name:e,url:r,line:t,column:i})=>({key:`${e}:${r}:${t}:${i}`,file:r,line:t,col:i,name:e||(r?`(anonymous ${r.split("/").pop()}:${t})`:"(anonymous)")})).reverse()}function i(i){1!==i.version&&console.warn(`Unknown Safari profile version ${i.version}... Might be incompatible.`);const{recording:n}=i,{sampleStackTraces:a,sampleDurations:o}=n,s=a.length;if(s<1)return console.warn("Empty profile"),null;const l=a[s-1].timestamp-a[0].timestamp+o[0],m=new e.StackListProfileBuilder(l);let p=Number.MAX_VALUE;return a.forEach((e,r)=>{const i=e.timestamp,n=o[r],a=i-n-p;a>.002&&m.appendSampleWithWeight([],a),m.appendSampleWithWeight(t(e.stackFrames),n),p=i}),m.setValueFormatter(new r.TimeFormatter("seconds")),m.setName(n.displayName),m.build()} -},{"../lib/profile":"YG8z","../lib/value-formatters":"LsM4"}],"oU4k":[function(require,module,exports) { -"use strict";function n(n,e){for(var r=new Array(arguments.length-1),t=0,l=2,o=!0;l1&&"="===r.charAt(e);)++a;return Math.ceil(3*r.length)/4-a};for(var e=new Array(64),a=new Array(123),t=0;t<64;)a[e[t]=t<26?t+65:t<52?t+71:t<62?t-4:t-59|43]=t++;r.encode=function(r,a,t){for(var n,i=null,o=[],c=0,s=0;a>2],n=(3&h)<<4,s=1;break;case 1:o[c++]=e[n|h>>4],n=(15&h)<<2,s=2;break;case 2:o[c++]=e[n|h>>6],o[c++]=e[63&h],s=0}c>8191&&((i||(i=[])).push(String.fromCharCode.apply(String,o)),c=0)}return s&&(o[c++]=e[n],o[c++]=61,1===s&&(o[c++]=61)),i?(c&&i.push(String.fromCharCode.apply(String,o.slice(0,c))),i.join("")):String.fromCharCode.apply(String,o.slice(0,c))};var n="invalid encoding";r.decode=function(r,e,t){for(var i,o=t,c=0,s=0;s1)break;if(void 0===(h=a[h]))throw Error(n);switch(c){case 0:i=h,c=1;break;case 1:e[t++]=i<<2|(48&h)>>4,i=h,c=2;break;case 2:e[t++]=(15&i)<<4|(60&h)>>2,i=h,c=3;break;case 3:e[t++]=(3&i)<<6|h,c=0}}if(1===c)throw Error(n);return t-o},r.test=function(r){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(r)}; -},{}],"wJQW":[function(require,module,exports) { -"use strict";function t(){this._listeners={}}module.exports=t,t.prototype.on=function(t,s,e){return(this._listeners[t]||(this._listeners[t]=[])).push({fn:s,ctx:e||this}),this},t.prototype.off=function(t,s){if(void 0===t)this._listeners={};else if(void 0===s)this._listeners[t]=[];else for(var e=this._listeners[t],i=0;i0?0:2147483648,t,r);else if(isNaN(e))n(2143289344,t,r);else if(e>3.4028234663852886e38)n((o<<31|2139095040)>>>0,t,r);else if(e<1.1754943508222875e-38)n((o<<31|Math.round(e/1.401298464324817e-45))>>>0,t,r);else{var u=Math.floor(Math.log(e)/Math.LN2);n((o<<31|u+127<<23|8388607&Math.round(e*Math.pow(2,-u)*8388608))>>>0,t,r)}}function i(n,e,t){var r=n(e,t),o=2*(r>>31)+1,u=r>>>23&255,i=8388607&r;return 255===u?i?NaN:o*(1/0):0===u?1.401298464324817e-45*o*i:o*Math.pow(2,u-150)*(i+8388608)}n.writeFloatLE=u.bind(null,e),n.writeFloatBE=u.bind(null,t),n.readFloatLE=i.bind(null,r),n.readFloatBE=i.bind(null,o)}(),"undefined"!=typeof Float64Array?function(){var e=new Float64Array([-0]),t=new Uint8Array(e.buffer),r=128===t[7];function o(n,r,o){e[0]=n,r[o]=t[0],r[o+1]=t[1],r[o+2]=t[2],r[o+3]=t[3],r[o+4]=t[4],r[o+5]=t[5],r[o+6]=t[6],r[o+7]=t[7]}function u(n,r,o){e[0]=n,r[o]=t[7],r[o+1]=t[6],r[o+2]=t[5],r[o+3]=t[4],r[o+4]=t[3],r[o+5]=t[2],r[o+6]=t[1],r[o+7]=t[0]}function i(n,r){return t[0]=n[r],t[1]=n[r+1],t[2]=n[r+2],t[3]=n[r+3],t[4]=n[r+4],t[5]=n[r+5],t[6]=n[r+6],t[7]=n[r+7],e[0]}function a(n,r){return t[7]=n[r],t[6]=n[r+1],t[5]=n[r+2],t[4]=n[r+3],t[3]=n[r+4],t[2]=n[r+5],t[1]=n[r+6],t[0]=n[r+7],e[0]}n.writeDoubleLE=r?o:u,n.writeDoubleBE=r?u:o,n.readDoubleLE=r?i:a,n.readDoubleBE=r?a:i}():function(){function u(n,e,t,r,o,u){var i=r<0?1:0;if(i&&(r=-r),0===r)n(0,o,u+e),n(1/r>0?0:2147483648,o,u+t);else if(isNaN(r))n(0,o,u+e),n(2146959360,o,u+t);else if(r>1.7976931348623157e308)n(0,o,u+e),n((i<<31|2146435072)>>>0,o,u+t);else{var a;if(r<2.2250738585072014e-308)n((a=r/5e-324)>>>0,o,u+e),n((i<<31|a/4294967296)>>>0,o,u+t);else{var l=Math.floor(Math.log(r)/Math.LN2);1024===l&&(l=1023),n(4503599627370496*(a=r*Math.pow(2,-l))>>>0,o,u+e),n((i<<31|l+1023<<20|1048576*a&1048575)>>>0,o,u+t)}}}function i(n,e,t,r,o){var u=n(r,o+e),i=n(r,o+t),a=2*(i>>31)+1,l=i>>>20&2047,f=4294967296*(1048575&i)+u;return 2047===l?f?NaN:a*(1/0):0===l?5e-324*a*f:a*Math.pow(2,l-1075)*(f+4503599627370496)}n.writeDoubleLE=u.bind(null,e,0,4),n.writeDoubleBE=u.bind(null,t,4,0),n.readDoubleLE=i.bind(null,r,0,4),n.readDoubleBE=i.bind(null,o,4,0)}(),n}function e(n,e,t){e[t]=255&n,e[t+1]=n>>>8&255,e[t+2]=n>>>16&255,e[t+3]=n>>>24}function t(n,e,t){e[t]=n>>>24,e[t+1]=n>>>16&255,e[t+2]=n>>>8&255,e[t+3]=255&n}function r(n,e){return(n[e]|n[e+1]<<8|n[e+2]<<16|n[e+3]<<24)>>>0}function o(n,e){return(n[e]<<24|n[e+1]<<16|n[e+2]<<8|n[e+3])>>>0}module.exports=n(n); -},{}],"XRF3":[function(require,module,exports) { -"use strict";function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}module.exports=inquire; -},{}],"nie5":[function(require,module,exports) { -"use strict";var r=exports;r.length=function(r){for(var t=0,n=0,e=0;e191&&e<224?a[i++]=(31&e)<<6|63&r[t++]:e>239&&e<365?(e=((7&e)<<18|(63&r[t++])<<12|(63&r[t++])<<6|63&r[t++])-65536,a[i++]=55296+(e>>10),a[i++]=56320+(1023&e)):a[i++]=(15&e)<<12|(63&r[t++])<<6|63&r[t++],i>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,a)),i=0);return o?(i&&o.push(String.fromCharCode.apply(String,a.slice(0,i))),o.join("")):String.fromCharCode.apply(String,a.slice(0,i))},r.write=function(r,t,n){for(var e,o,a=n,i=0;i>6|192,t[n++]=63&e|128):55296==(64512&e)&&56320==(64512&(o=r.charCodeAt(i+1)))?(e=65536+((1023&e)<<10)+(1023&o),++i,t[n++]=e>>18|240,t[n++]=e>>12&63|128,t[n++]=e>>6&63|128,t[n++]=63&e|128):(t[n++]=e>>12|224,t[n++]=e>>6&63|128,t[n++]=63&e|128);return n-a}; -},{}],"YX4y":[function(require,module,exports) { -"use strict";function r(r,n,t){var u=t||8192,e=u>>>1,l=null,c=u;return function(t){if(t<1||t>e)return r(t);c+t>u&&(l=r(u),c=0);var i=n.call(l,c,c+=t);return 7&c&&(c=1+(7|c)),i}}module.exports=r; -},{}],"Ty7D":[function(require,module,exports) { -"use strict";module.exports=i;var t=require("../util/minimal");function i(t,i){this.lo=t>>>0,this.hi=i>>>0}var o=i.zero=new i(0,0);o.toNumber=function(){return 0},o.zzEncode=o.zzDecode=function(){return this},o.length=function(){return 1};var r=i.zeroHash="\0\0\0\0\0\0\0\0";i.fromNumber=function(t){if(0===t)return o;var r=t<0;r&&(t=-t);var h=t>>>0,n=(t-h)/4294967296>>>0;return r&&(n=~n>>>0,h=~h>>>0,++h>4294967295&&(h=0,++n>4294967295&&(n=0))),new i(h,n)},i.from=function(r){if("number"==typeof r)return i.fromNumber(r);if(t.isString(r)){if(!t.Long)return i.fromNumber(parseInt(r,10));r=t.Long.fromString(r)}return r.low||r.high?new i(r.low>>>0,r.high>>>0):o},i.prototype.toNumber=function(t){if(!t&&this.hi>>>31){var i=1+~this.lo>>>0,o=~this.hi>>>0;return i||(o=o+1>>>0),-(i+4294967296*o)}return this.lo+4294967296*this.hi},i.prototype.toLong=function(i){return t.Long?new t.Long(0|this.lo,0|this.hi,Boolean(i)):{low:0|this.lo,high:0|this.hi,unsigned:Boolean(i)}};var h=String.prototype.charCodeAt;i.fromHash=function(t){return t===r?o:new i((h.call(t,0)|h.call(t,1)<<8|h.call(t,2)<<16|h.call(t,3)<<24)>>>0,(h.call(t,4)|h.call(t,5)<<8|h.call(t,6)<<16|h.call(t,7)<<24)>>>0)},i.prototype.toHash=function(){return String.fromCharCode(255&this.lo,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,255&this.hi,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},i.prototype.zzEncode=function(){var t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this},i.prototype.zzDecode=function(){var t=-(1&this.lo);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this},i.prototype.length=function(){var t=this.lo,i=(this.lo>>>28|this.hi<<4)>>>0,o=this.hi>>>24;return 0===o?0===i?t<16384?t<128?1:2:t<2097152?3:4:i<16384?i<128?5:6:i<2097152?7:8:o<128?9:10}; -},{"../util/minimal":"KgKa"}],"yh9p":[function(require,module,exports) { -"use strict";exports.byteLength=u,exports.toByteArray=i,exports.fromByteArray=d;for(var r=[],t=[],e="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,a=n.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var e=r.indexOf("=");return-1===e&&(e=t),[e,e===t?0:4-e%4]}function u(r){var t=h(r),e=t[0],n=t[1];return 3*(e+n)/4-n}function c(r,t,e){return 3*(t+e)/4-e}function i(r){var n,o,a=h(r),u=a[0],i=a[1],f=new e(c(r,u,i)),A=0,d=i>0?u-4:u;for(o=0;o>16&255,f[A++]=n>>8&255,f[A++]=255&n;return 2===i&&(n=t[r.charCodeAt(o)]<<2|t[r.charCodeAt(o+1)]>>4,f[A++]=255&n),1===i&&(n=t[r.charCodeAt(o)]<<10|t[r.charCodeAt(o+1)]<<4|t[r.charCodeAt(o+2)]>>2,f[A++]=n>>8&255,f[A++]=255&n),f}function f(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function A(r,t,e){for(var n,o=[],a=t;au?u:h+16383));return 1===o?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===o&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")}t["-".charCodeAt(0)]=62,t["_".charCodeAt(0)]=63; -},{}],"JgNJ":[function(require,module,exports) { -exports.read=function(a,o,t,r,h){var M,p,w=8*h-r-1,f=(1<>1,i=-7,N=t?h-1:0,n=t?-1:1,s=a[o+N];for(N+=n,M=s&(1<<-i)-1,s>>=-i,i+=w;i>0;M=256*M+a[o+N],N+=n,i-=8);for(p=M&(1<<-i)-1,M>>=-i,i+=r;i>0;p=256*p+a[o+N],N+=n,i-=8);if(0===M)M=1-e;else{if(M===f)return p?NaN:1/0*(s?-1:1);p+=Math.pow(2,r),M-=e}return(s?-1:1)*p*Math.pow(2,M-r)},exports.write=function(a,o,t,r,h,M){var p,w,f,e=8*M-h-1,i=(1<>1,n=23===h?Math.pow(2,-24)-Math.pow(2,-77):0,s=r?0:M-1,u=r?1:-1,l=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(w=isNaN(o)?1:0,p=i):(p=Math.floor(Math.log(o)/Math.LN2),o*(f=Math.pow(2,-p))<1&&(p--,f*=2),(o+=p+N>=1?n/f:n*Math.pow(2,1-N))*f>=2&&(p++,f/=2),p+N>=i?(w=0,p=i):p+N>=1?(w=(o*f-1)*Math.pow(2,h),p+=N):(w=o*Math.pow(2,N-1)*Math.pow(2,h),p=0));h>=8;a[t+s]=255&w,s+=u,w/=256,h-=8);for(p=p<0;a[t+s]=255&p,s+=u,p/=256,e-=8);a[t+s-u]|=128*l}; -},{}],"REa7":[function(require,module,exports) { -var r={}.toString;module.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}; -},{}],"dskh":[function(require,module,exports) { - -var global = arguments[3]; -var t=arguments[3],r=require("base64-js"),e=require("ieee754"),n=require("isarray");function i(){try{var t=new Uint8Array(1);return t.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===t.foo()&&"function"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(r){return!1}}function o(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function u(t,r){if(o()=o())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o().toString(16)+" bytes");return 0|t}function d(t){return+t!=t&&(t=0),f.alloc(+t)}function v(t,r){if(f.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var e=t.length;if(0===e)return 0;for(var n=!1;;)switch(r){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":case void 0:return $(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*e;case"hex":return e>>>1;case"base64":return K(t).length;default:if(n)return $(t).length;r=(""+r).toLowerCase(),n=!0}}function E(t,r,e){var n=!1;if((void 0===r||r<0)&&(r=0),r>this.length)return"";if((void 0===e||e>this.length)&&(e=this.length),e<=0)return"";if((e>>>=0)<=(r>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return x(this,r,e);case"utf8":case"utf-8":return Y(this,r,e);case"ascii":return L(this,r,e);case"latin1":case"binary":return D(this,r,e);case"base64":return S(this,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,r,e);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function b(t,r,e){var n=t[r];t[r]=t[e],t[e]=n}function R(t,r,e,n,i){if(0===t.length)return-1;if("string"==typeof e?(n=e,e=0):e>2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,isNaN(e)&&(e=i?0:t.length-1),e<0&&(e=t.length+e),e>=t.length){if(i)return-1;e=t.length-1}else if(e<0){if(!i)return-1;e=0}if("string"==typeof r&&(r=f.from(r,n)),f.isBuffer(r))return 0===r.length?-1:_(t,r,e,n,i);if("number"==typeof r)return r&=255,f.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,r,e):Uint8Array.prototype.lastIndexOf.call(t,r,e):_(t,[r],e,n,i);throw new TypeError("val must be string, number or Buffer")}function _(t,r,e,n,i){var o,u=1,f=t.length,s=r.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||r.length<2)return-1;u=2,f/=2,s/=2,e/=2}function h(t,r){return 1===u?t[r]:t.readUInt16BE(r*u)}if(i){var a=-1;for(o=e;of&&(e=f-s),o=e;o>=0;o--){for(var c=!0,l=0;li&&(n=i):n=i;var o=r.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var u=0;u239?4:h>223?3:h>191?2:1;if(i+c<=e)switch(c){case 1:h<128&&(a=h);break;case 2:128==(192&(o=t[i+1]))&&(s=(31&h)<<6|63&o)>127&&(a=s);break;case 3:o=t[i+1],u=t[i+2],128==(192&o)&&128==(192&u)&&(s=(15&h)<<12|(63&o)<<6|63&u)>2047&&(s<55296||s>57343)&&(a=s);break;case 4:o=t[i+1],u=t[i+2],f=t[i+3],128==(192&o)&&128==(192&u)&&128==(192&f)&&(s=(15&h)<<18|(63&o)<<12|(63&u)<<6|63&f)>65535&&s<1114112&&(a=s)}null===a?(a=65533,c=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=c}return O(n)}exports.Buffer=f,exports.SlowBuffer=d,exports.INSPECT_MAX_BYTES=50,f.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:i(),exports.kMaxLength=o(),f.poolSize=8192,f._augment=function(t){return t.__proto__=f.prototype,t},f.from=function(t,r,e){return s(null,t,r,e)},f.TYPED_ARRAY_SUPPORT&&(f.prototype.__proto__=Uint8Array.prototype,f.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&f[Symbol.species]===f&&Object.defineProperty(f,Symbol.species,{value:null,configurable:!0})),f.alloc=function(t,r,e){return a(null,t,r,e)},f.allocUnsafe=function(t){return c(null,t)},f.allocUnsafeSlow=function(t){return c(null,t)},f.isBuffer=function(t){return!(null==t||!t._isBuffer)},f.compare=function(t,r){if(!f.isBuffer(t)||!f.isBuffer(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var e=t.length,n=r.length,i=0,o=Math.min(e,n);i0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},f.prototype.compare=function(t,r,e,n,i){if(!f.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===r&&(r=0),void 0===e&&(e=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),r<0||e>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&r>=e)return 0;if(n>=i)return-1;if(r>=e)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),u=(e>>>=0)-(r>>>=0),s=Math.min(o,u),h=this.slice(n,i),a=t.slice(r,e),c=0;ci)&&(e=i),t.length>0&&(e<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return A(this,t,r,e);case"utf8":case"utf-8":return m(this,t,r,e);case"ascii":return P(this,t,r,e);case"latin1":case"binary":return T(this,t,r,e);case"base64":return B(this,t,r,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return U(this,t,r,e);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var I=4096;function O(t){var r=t.length;if(r<=I)return String.fromCharCode.apply(String,t);for(var e="",n=0;nn)&&(e=n);for(var i="",o=r;oe)throw new RangeError("Trying to access beyond buffer length")}function k(t,r,e,n,i,o){if(!f.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>i||rt.length)throw new RangeError("Index out of range")}function N(t,r,e,n){r<0&&(r=65535+r+1);for(var i=0,o=Math.min(t.length-e,2);i>>8*(n?i:1-i)}function z(t,r,e,n){r<0&&(r=4294967295+r+1);for(var i=0,o=Math.min(t.length-e,4);i>>8*(n?i:3-i)&255}function F(t,r,e,n,i,o){if(e+n>t.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function j(t,r,n,i,o){return o||F(t,r,n,4,3.4028234663852886e38,-3.4028234663852886e38),e.write(t,r,n,i,23,4),n+4}function q(t,r,n,i,o){return o||F(t,r,n,8,1.7976931348623157e308,-1.7976931348623157e308),e.write(t,r,n,i,52,8),n+8}f.prototype.slice=function(t,r){var e,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r0&&(i*=256);)n+=this[t+--r]*i;return n},f.prototype.readUInt8=function(t,r){return r||M(t,1,this.length),this[t]},f.prototype.readUInt16LE=function(t,r){return r||M(t,2,this.length),this[t]|this[t+1]<<8},f.prototype.readUInt16BE=function(t,r){return r||M(t,2,this.length),this[t]<<8|this[t+1]},f.prototype.readUInt32LE=function(t,r){return r||M(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},f.prototype.readUInt32BE=function(t,r){return r||M(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},f.prototype.readIntLE=function(t,r,e){t|=0,r|=0,e||M(t,r,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*r)),n},f.prototype.readIntBE=function(t,r,e){t|=0,r|=0,e||M(t,r,this.length);for(var n=r,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*r)),o},f.prototype.readInt8=function(t,r){return r||M(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},f.prototype.readInt16LE=function(t,r){r||M(t,2,this.length);var e=this[t]|this[t+1]<<8;return 32768&e?4294901760|e:e},f.prototype.readInt16BE=function(t,r){r||M(t,2,this.length);var e=this[t+1]|this[t]<<8;return 32768&e?4294901760|e:e},f.prototype.readInt32LE=function(t,r){return r||M(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},f.prototype.readInt32BE=function(t,r){return r||M(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},f.prototype.readFloatLE=function(t,r){return r||M(t,4,this.length),e.read(this,t,!0,23,4)},f.prototype.readFloatBE=function(t,r){return r||M(t,4,this.length),e.read(this,t,!1,23,4)},f.prototype.readDoubleLE=function(t,r){return r||M(t,8,this.length),e.read(this,t,!0,52,8)},f.prototype.readDoubleBE=function(t,r){return r||M(t,8,this.length),e.read(this,t,!1,52,8)},f.prototype.writeUIntLE=function(t,r,e,n){(t=+t,r|=0,e|=0,n)||k(this,t,r,e,Math.pow(2,8*e)-1,0);var i=1,o=0;for(this[r]=255&t;++o=0&&(o*=256);)this[r+i]=t/o&255;return r+e},f.prototype.writeUInt8=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,1,255,0),f.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=255&t,r+1},f.prototype.writeUInt16LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):N(this,t,r,!0),r+2},f.prototype.writeUInt16BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):N(this,t,r,!1),r+2},f.prototype.writeUInt32LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=255&t):z(this,t,r,!0),r+4},f.prototype.writeUInt32BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):z(this,t,r,!1),r+4},f.prototype.writeIntLE=function(t,r,e,n){if(t=+t,r|=0,!n){var i=Math.pow(2,8*e-1);k(this,t,r,e,i-1,-i)}var o=0,u=1,f=0;for(this[r]=255&t;++o>0)-f&255;return r+e},f.prototype.writeIntBE=function(t,r,e,n){if(t=+t,r|=0,!n){var i=Math.pow(2,8*e-1);k(this,t,r,e,i-1,-i)}var o=e-1,u=1,f=0;for(this[r+o]=255&t;--o>=0&&(u*=256);)t<0&&0===f&&0!==this[r+o+1]&&(f=1),this[r+o]=(t/u>>0)-f&255;return r+e},f.prototype.writeInt8=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,1,127,-128),f.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=255&t,r+1},f.prototype.writeInt16LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8):N(this,t,r,!0),r+2},f.prototype.writeInt16BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=255&t):N(this,t,r,!1),r+2},f.prototype.writeInt32LE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[r]=255&t,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):z(this,t,r,!0),r+4},f.prototype.writeInt32BE=function(t,r,e){return t=+t,r|=0,e||k(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),f.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=255&t):z(this,t,r,!1),r+4},f.prototype.writeFloatLE=function(t,r,e){return j(this,t,r,!0,e)},f.prototype.writeFloatBE=function(t,r,e){return j(this,t,r,!1,e)},f.prototype.writeDoubleLE=function(t,r,e){return q(this,t,r,!0,e)},f.prototype.writeDoubleBE=function(t,r,e){return q(this,t,r,!1,e)},f.prototype.copy=function(t,r,e,n){if(e||(e=0),n||0===n||(n=this.length),r>=t.length&&(r=t.length),r||(r=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-r=0;--i)t[i+r]=this[i+e];else if(o<1e3||!f.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,e=void 0===e?this.length:e>>>0,t||(t=0),"number"==typeof t)for(o=r;o55295&&e<57344){if(!i){if(e>56319){(r-=3)>-1&&o.push(239,191,189);continue}if(u+1===n){(r-=3)>-1&&o.push(239,191,189);continue}i=e;continue}if(e<56320){(r-=3)>-1&&o.push(239,191,189),i=e;continue}e=65536+(i-55296<<10|e-56320)}else i&&(r-=3)>-1&&o.push(239,191,189);if(i=null,e<128){if((r-=1)<0)break;o.push(e)}else if(e<2048){if((r-=2)<0)break;o.push(e>>6|192,63&e|128)}else if(e<65536){if((r-=3)<0)break;o.push(e>>12|224,e>>6&63|128,63&e|128)}else{if(!(e<1114112))throw new Error("Invalid code point");if((r-=4)<0)break;o.push(e>>18|240,e>>12&63|128,e>>6&63|128,63&e|128)}}return o}function G(t){for(var r=[],e=0;e>8,i=e%256,o.push(i),o.push(n);return o}function K(t){return r.toByteArray(X(t))}function Q(t,r,e,n){for(var i=0;i=r.length||i>=t.length);++i)r[i+e]=t[i];return i}function W(t){return t!=t} -},{"base64-js":"yh9p","ieee754":"JgNJ","isarray":"REa7","buffer":"dskh"}],"KgKa":[function(require,module,exports) { -var global = arguments[3]; -var Buffer = require("buffer").Buffer; -var e=arguments[3],r=require("buffer").Buffer,t=exports;function n(e,r,t){for(var n=Object.keys(r),o=0;o0)},t.Buffer=function(){try{var e=t.inquire("buffer").Buffer;return e.prototype.utf8Write?e:null}catch(r){return null}}(),t._Buffer_from=null,t._Buffer_allocUnsafe=null,t.newBuffer=function(e){return"number"==typeof e?t.Buffer?t._Buffer_allocUnsafe(e):new t.Array(e):t.Buffer?t._Buffer_from(e):"undefined"==typeof Uint8Array?e:new Uint8Array(e)},t.Array="undefined"!=typeof Uint8Array?Uint8Array:Array,t.Long=t.global.dcodeIO&&t.global.dcodeIO.Long||t.global.Long||t.inquire("long"),t.key2Re=/^true|false|0|1$/,t.key32Re=/^-?(?:0|[1-9][0-9]*)$/,t.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,t.longToHash=function(e){return e?t.LongBits.from(e).toHash():t.LongBits.zeroHash},t.longFromHash=function(e,r){var n=t.LongBits.fromHash(e);return t.Long?t.Long.fromBits(n.lo,n.hi,r):n.toNumber(Boolean(r))},t.merge=n,t.lcFirst=function(e){return e.charAt(0).toLowerCase()+e.substring(1)},t.newError=o,t.ProtocolError=o("ProtocolError"),t.oneOfGetter=function(e){for(var r={},t=0;t-1;--t)if(1===r[e[t]]&&void 0!==this[e[t]]&&null!==this[e[t]])return e[t]}},t.oneOfSetter=function(e){return function(r){for(var t=0;t127;)i[n++]=127&t|128,t>>>=7;i[n]=t}function a(t,i){this.len=t,this.next=void 0,this.val=i}function f(t,i,n){for(;t.hi;)i[n++]=127&t.lo|128,t.lo=(t.lo>>>7|t.hi<<25)>>>0,t.hi>>>=7;for(;t.lo>127;)i[n++]=127&t.lo|128,t.lo=t.lo>>>7;i[n++]=t.lo}function c(t,i,n){i[n]=255&t,i[n+1]=t>>>8&255,i[n+2]=t>>>16&255,i[n+3]=t>>>24}u.create=i.Buffer?function(){return(u.create=function(){return new t})()}:function(){return new u},u.alloc=function(t){return new i.Array(t)},i.Array!==Array&&(u.alloc=i.pool(u.alloc,i.Array.prototype.subarray)),u.prototype._push=function(t,i,n){return this.tail=this.tail.next=new r(t,i,n),this.len+=i,this},a.prototype=Object.create(r.prototype),a.prototype.fn=p,u.prototype.uint32=function(t){return this.len+=(this.tail=this.tail.next=new a((t>>>=0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this},u.prototype.int32=function(t){return t<0?this._push(f,10,n.fromNumber(t)):this.uint32(t)},u.prototype.sint32=function(t){return this.uint32((t<<1^t>>31)>>>0)},u.prototype.uint64=function(t){var i=n.from(t);return this._push(f,i.length(),i)},u.prototype.int64=u.prototype.uint64,u.prototype.sint64=function(t){var i=n.from(t).zzEncode();return this._push(f,i.length(),i)},u.prototype.bool=function(t){return this._push(l,1,t?1:0)},u.prototype.fixed32=function(t){return this._push(c,4,t>>>0)},u.prototype.sfixed32=u.prototype.fixed32,u.prototype.fixed64=function(t){var i=n.from(t);return this._push(c,4,i.lo)._push(c,4,i.hi)},u.prototype.sfixed64=u.prototype.fixed64,u.prototype.float=function(t){return this._push(i.float.writeFloatLE,4,t)},u.prototype.double=function(t){return this._push(i.float.writeDoubleLE,8,t)};var y=i.Array.prototype.set?function(t,i,n){i.set(t,n)}:function(t,i,n){for(var e=0;e>>0;if(!n)return this._push(l,1,0);if(i.isString(t)){var o=u.alloc(n=e.length(t));e.decode(t,o,0),t=o}return this.uint32(n)._push(y,n,t)},u.prototype.string=function(t){var i=o.length(t);return i?this.uint32(i)._push(o.write,i,t):this._push(l,1,0)},u.prototype.fork=function(){return this.states=new h(this),this.head=this.tail=new r(s,0,0),this.len=0,this},u.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new r(s,0,0),this.len=0),this},u.prototype.ldelim=function(){var t=this.head,i=this.tail,n=this.len;return this.reset().uint32(n),n&&(this.tail.next=t.next,this.tail=i,this.len+=n),this},u.prototype.finish=function(){for(var t=this.head.next,i=this.constructor.alloc(this.len),n=0;t;)t.fn(t.val,i,n),n+=t.len,t=t.next;return i},u._configure=function(i){t=i}; -},{"./util/minimal":"KgKa"}],"BjCp":[function(require,module,exports) { - -"use strict";module.exports=n;var t=require("./writer");(n.prototype=Object.create(t.prototype)).constructor=n;var e=require("./util/minimal"),r=e.Buffer;function n(){t.call(this)}n.alloc=function(t){return(n.alloc=e._Buffer_allocUnsafe)(t)};var i=r&&r.prototype instanceof Uint8Array&&"set"===r.prototype.set.name?function(t,e,r){e.set(t,r)}:function(t,e,r){if(t.copy)t.copy(e,r,0,t.length);else for(var n=0;n>>0;return this.uint32(r),r&&this._push(i,r,t),this},n.prototype.string=function(t){var e=r.byteLength(t);return this.uint32(e),e&&this._push(o,e,t),this}; -},{"./writer":"DEsF","./util/minimal":"KgKa"}],"z4LV":[function(require,module,exports) { -"use strict";module.exports=h;var t,i=require("./util/minimal"),s=i.LongBits,r=i.utf8;function o(t,i){return RangeError("index out of range: "+t.pos+" + "+(i||1)+" > "+t.len)}function h(t){this.buf=t,this.pos=0,this.len=t.length}var n="undefined"!=typeof Uint8Array?function(t){if(t instanceof Uint8Array||Array.isArray(t))return new h(t);throw Error("illegal buffer")}:function(t){if(Array.isArray(t))return new h(t);throw Error("illegal buffer")};function e(){var t=new s(0,0),i=0;if(!(this.len-this.pos>4)){for(;i<3;++i){if(this.pos>=this.len)throw o(this);if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(127&this.buf[this.pos++])<<7*i)>>>0,t}for(;i<4;++i)if(t.lo=(t.lo|(127&this.buf[this.pos])<<7*i)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(127&this.buf[this.pos])<<28)>>>0,t.hi=(t.hi|(127&this.buf[this.pos])>>4)>>>0,this.buf[this.pos++]<128)return t;if(i=0,this.len-this.pos>4){for(;i<5;++i)if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}else for(;i<5;++i){if(this.pos>=this.len)throw o(this);if(t.hi=(t.hi|(127&this.buf[this.pos])<<7*i+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}function u(t,i){return(t[i-4]|t[i-3]<<8|t[i-2]<<16|t[i-1]<<24)>>>0}function f(){if(this.pos+8>this.len)throw o(this,8);return new s(u(this.buf,this.pos+=4),u(this.buf,this.pos+=4))}h.create=i.Buffer?function(s){return(h.create=function(s){return i.Buffer.isBuffer(s)?new t(s):n(s)})(s)}:n,h.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,h.prototype.uint32=function(){var t=4294967295;return function(){if(t=(127&this.buf[this.pos])>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<7)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<14)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(127&this.buf[this.pos])<<21)>>>0,this.buf[this.pos++]<128)return t;if(t=(t|(15&this.buf[this.pos])<<28)>>>0,this.buf[this.pos++]<128)return t;if((this.pos+=5)>this.len)throw this.pos=this.len,o(this,10);return t}}(),h.prototype.int32=function(){return 0|this.uint32()},h.prototype.sint32=function(){var t=this.uint32();return t>>>1^-(1&t)|0},h.prototype.bool=function(){return 0!==this.uint32()},h.prototype.fixed32=function(){if(this.pos+4>this.len)throw o(this,4);return u(this.buf,this.pos+=4)},h.prototype.sfixed32=function(){if(this.pos+4>this.len)throw o(this,4);return 0|u(this.buf,this.pos+=4)},h.prototype.float=function(){if(this.pos+4>this.len)throw o(this,4);var t=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,t},h.prototype.double=function(){if(this.pos+8>this.len)throw o(this,4);var t=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,t},h.prototype.bytes=function(){var t=this.uint32(),i=this.pos,s=this.pos+t;if(s>this.len)throw o(this,t);return this.pos+=t,Array.isArray(this.buf)?this.buf.slice(i,s):i===s?new this.buf.constructor(0):this._slice.call(this.buf,i,s)},h.prototype.string=function(){var t=this.bytes();return r.read(t,0,t.length)},h.prototype.skip=function(t){if("number"==typeof t){if(this.pos+t>this.len)throw o(this,t);this.pos+=t}else do{if(this.pos>=this.len)throw o(this)}while(128&this.buf[this.pos++]);return this},h.prototype.skipType=function(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;4!=(t=7&this.uint32());)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+t+" at offset "+this.pos)}return this},h._configure=function(s){t=s;var r=i.Long?"toLong":"toNumber";i.merge(h.prototype,{int64:function(){return e.call(this)[r](!1)},uint64:function(){return e.call(this)[r](!0)},sint64:function(){return e.call(this).zzDecode()[r](!1)},fixed64:function(){return f.call(this)[r](!0)},sfixed64:function(){return f.call(this)[r](!1)}})}; -},{"./util/minimal":"KgKa"}],"Rkr2":[function(require,module,exports) { -"use strict";module.exports=r;var t=require("./reader");(r.prototype=Object.create(t.prototype)).constructor=r;var e=require("./util/minimal");function r(e){t.call(this,e)}e.Buffer&&(r.prototype._slice=e.Buffer.prototype.slice),r.prototype.string=function(){var t=this.uint32();return this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+t,this.len))}; -},{"./reader":"z4LV","./util/minimal":"KgKa"}],"eoks":[function(require,module,exports) { -"use strict";module.exports=t;var e=require("../util/minimal");function t(t,r,i){if("function"!=typeof t)throw TypeError("rpcImpl must be a function");e.EventEmitter.call(this),this.rpcImpl=t,this.requestDelimited=Boolean(r),this.responseDelimited=Boolean(i)}(t.prototype=Object.create(e.EventEmitter.prototype)).constructor=t,t.prototype.rpcCall=function t(r,i,n,o,l){if(!o)throw TypeError("request must be specified");var u=this;if(!l)return e.asPromise(t,u,r,i,n,o);if(u.rpcImpl)try{return u.rpcImpl(r,i[u.requestDelimited?"encodeDelimited":"encode"](o).finish(),function(e,t){if(e)return u.emit("error",e,r),l(e);if(null!==t){if(!(t instanceof n))try{t=n[u.responseDelimited?"decodeDelimited":"decode"](t)}catch(e){return u.emit("error",e,r),l(e)}return u.emit("data",t,r),l(null,t)}u.end(!0)})}catch(c){return u.emit("error",c,r),void setTimeout(function(){l(c)},0)}else setTimeout(function(){l(Error("already ended"))},0)},t.prototype.end=function(e){return this.rpcImpl&&(e||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}; -},{"../util/minimal":"KgKa"}],"ay75":[function(require,module,exports) { -"use strict";var e=exports;e.Service=require("./rpc/service"); -},{"./rpc/service":"eoks"}],"Nr0F":[function(require,module,exports) { -"use strict";module.exports={}; -},{}],"qETn":[function(require,module,exports) { -"use strict";var r=exports;function e(){r.Reader._configure(r.BufferReader),r.util._configure()}r.build="minimal",r.Writer=require("./writer"),r.BufferWriter=require("./writer_buffer"),r.Reader=require("./reader"),r.BufferReader=require("./reader_buffer"),r.util=require("./util/minimal"),r.rpc=require("./rpc"),r.roots=require("./roots"),r.configure=e,r.Writer._configure(r.BufferWriter),e(); -},{"./writer":"DEsF","./writer_buffer":"BjCp","./reader":"z4LV","./reader_buffer":"Rkr2","./util/minimal":"KgKa","./rpc":"ay75","./roots":"Nr0F"}],"Myh2":[function(require,module,exports) { -"use strict";module.exports=require("./src/index-minimal"); -},{"./src/index-minimal":"qETn"}],"YdJi":[function(require,module,exports) { -"use strict";var e=require("protobufjs/minimal"),n=e.Reader,t=e.Writer,o=e.util,r=e.roots.default||(e.roots.default={});r.perftools=function(){var i,l={};return l.profiles=((i={}).Profile=function(){function i(e){if(this.sampleType=[],this.sample=[],this.mapping=[],this.location=[],this.function=[],this.stringTable=[],this.comment=[],e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.sampleType&&i.sampleType.length||(i.sampleType=[]),i.sampleType.push(r.perftools.profiles.ValueType.decode(e,e.uint32()));break;case 2:i.sample&&i.sample.length||(i.sample=[]),i.sample.push(r.perftools.profiles.Sample.decode(e,e.uint32()));break;case 3:i.mapping&&i.mapping.length||(i.mapping=[]),i.mapping.push(r.perftools.profiles.Mapping.decode(e,e.uint32()));break;case 4:i.location&&i.location.length||(i.location=[]),i.location.push(r.perftools.profiles.Location.decode(e,e.uint32()));break;case 5:i.function&&i.function.length||(i.function=[]),i.function.push(r.perftools.profiles.Function.decode(e,e.uint32()));break;case 6:i.stringTable&&i.stringTable.length||(i.stringTable=[]),i.stringTable.push(e.string());break;case 7:i.dropFrames=e.int64();break;case 8:i.keepFrames=e.int64();break;case 9:i.timeNanos=e.int64();break;case 10:i.durationNanos=e.int64();break;case 11:i.periodType=r.perftools.profiles.ValueType.decode(e,e.uint32());break;case 12:i.period=e.int64();break;case 13:if(i.comment&&i.comment.length||(i.comment=[]),2==(7&l))for(var s=e.uint32()+e.pos;e.pos>>0,e.dropFrames.high>>>0).toNumber())),null!=e.keepFrames&&(o.Long?(n.keepFrames=o.Long.fromValue(e.keepFrames)).unsigned=!1:"string"==typeof e.keepFrames?n.keepFrames=parseInt(e.keepFrames,10):"number"==typeof e.keepFrames?n.keepFrames=e.keepFrames:"object"==typeof e.keepFrames&&(n.keepFrames=new o.LongBits(e.keepFrames.low>>>0,e.keepFrames.high>>>0).toNumber())),null!=e.timeNanos&&(o.Long?(n.timeNanos=o.Long.fromValue(e.timeNanos)).unsigned=!1:"string"==typeof e.timeNanos?n.timeNanos=parseInt(e.timeNanos,10):"number"==typeof e.timeNanos?n.timeNanos=e.timeNanos:"object"==typeof e.timeNanos&&(n.timeNanos=new o.LongBits(e.timeNanos.low>>>0,e.timeNanos.high>>>0).toNumber())),null!=e.durationNanos&&(o.Long?(n.durationNanos=o.Long.fromValue(e.durationNanos)).unsigned=!1:"string"==typeof e.durationNanos?n.durationNanos=parseInt(e.durationNanos,10):"number"==typeof e.durationNanos?n.durationNanos=e.durationNanos:"object"==typeof e.durationNanos&&(n.durationNanos=new o.LongBits(e.durationNanos.low>>>0,e.durationNanos.high>>>0).toNumber())),null!=e.periodType){if("object"!=typeof e.periodType)throw TypeError(".perftools.profiles.Profile.periodType: object expected");n.periodType=r.perftools.profiles.ValueType.fromObject(e.periodType)}if(null!=e.period&&(o.Long?(n.period=o.Long.fromValue(e.period)).unsigned=!1:"string"==typeof e.period?n.period=parseInt(e.period,10):"number"==typeof e.period?n.period=e.period:"object"==typeof e.period&&(n.period=new o.LongBits(e.period.low>>>0,e.period.high>>>0).toNumber())),e.comment){if(!Array.isArray(e.comment))throw TypeError(".perftools.profiles.Profile.comment: array expected");for(n.comment=[],t=0;t>>0,e.comment[t].high>>>0).toNumber())}return null!=e.defaultSampleType&&(o.Long?(n.defaultSampleType=o.Long.fromValue(e.defaultSampleType)).unsigned=!1:"string"==typeof e.defaultSampleType?n.defaultSampleType=parseInt(e.defaultSampleType,10):"number"==typeof e.defaultSampleType?n.defaultSampleType=e.defaultSampleType:"object"==typeof e.defaultSampleType&&(n.defaultSampleType=new o.LongBits(e.defaultSampleType.low>>>0,e.defaultSampleType.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if((n.arrays||n.defaults)&&(t.sampleType=[],t.sample=[],t.mapping=[],t.location=[],t.function=[],t.stringTable=[],t.comment=[]),n.defaults){if(o.Long){var i=new o.Long(0,0,!1);t.dropFrames=n.longs===String?i.toString():n.longs===Number?i.toNumber():i}else t.dropFrames=n.longs===String?"0":0;o.Long?(i=new o.Long(0,0,!1),t.keepFrames=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.keepFrames=n.longs===String?"0":0,o.Long?(i=new o.Long(0,0,!1),t.timeNanos=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.timeNanos=n.longs===String?"0":0,o.Long?(i=new o.Long(0,0,!1),t.durationNanos=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.durationNanos=n.longs===String?"0":0,t.periodType=null,o.Long?(i=new o.Long(0,0,!1),t.period=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.period=n.longs===String?"0":0,o.Long?(i=new o.Long(0,0,!1),t.defaultSampleType=n.longs===String?i.toString():n.longs===Number?i.toNumber():i):t.defaultSampleType=n.longs===String?"0":0}if(e.sampleType&&e.sampleType.length){t.sampleType=[];for(var l=0;l>>0,e.dropFrames.high>>>0).toNumber():e.dropFrames),null!=e.keepFrames&&e.hasOwnProperty("keepFrames")&&("number"==typeof e.keepFrames?t.keepFrames=n.longs===String?String(e.keepFrames):e.keepFrames:t.keepFrames=n.longs===String?o.Long.prototype.toString.call(e.keepFrames):n.longs===Number?new o.LongBits(e.keepFrames.low>>>0,e.keepFrames.high>>>0).toNumber():e.keepFrames),null!=e.timeNanos&&e.hasOwnProperty("timeNanos")&&("number"==typeof e.timeNanos?t.timeNanos=n.longs===String?String(e.timeNanos):e.timeNanos:t.timeNanos=n.longs===String?o.Long.prototype.toString.call(e.timeNanos):n.longs===Number?new o.LongBits(e.timeNanos.low>>>0,e.timeNanos.high>>>0).toNumber():e.timeNanos),null!=e.durationNanos&&e.hasOwnProperty("durationNanos")&&("number"==typeof e.durationNanos?t.durationNanos=n.longs===String?String(e.durationNanos):e.durationNanos:t.durationNanos=n.longs===String?o.Long.prototype.toString.call(e.durationNanos):n.longs===Number?new o.LongBits(e.durationNanos.low>>>0,e.durationNanos.high>>>0).toNumber():e.durationNanos),null!=e.periodType&&e.hasOwnProperty("periodType")&&(t.periodType=r.perftools.profiles.ValueType.toObject(e.periodType,n)),null!=e.period&&e.hasOwnProperty("period")&&("number"==typeof e.period?t.period=n.longs===String?String(e.period):e.period:t.period=n.longs===String?o.Long.prototype.toString.call(e.period):n.longs===Number?new o.LongBits(e.period.low>>>0,e.period.high>>>0).toNumber():e.period),e.comment&&e.comment.length)for(t.comment=[],l=0;l>>0,e.comment[l].high>>>0).toNumber():e.comment[l];return null!=e.defaultSampleType&&e.hasOwnProperty("defaultSampleType")&&("number"==typeof e.defaultSampleType?t.defaultSampleType=n.longs===String?String(e.defaultSampleType):e.defaultSampleType:t.defaultSampleType=n.longs===String?o.Long.prototype.toString.call(e.defaultSampleType):n.longs===Number?new o.LongBits(e.defaultSampleType.low>>>0,e.defaultSampleType.high>>>0).toNumber():e.defaultSampleType),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.ValueType=function(){function i(e){if(e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.type=e.int64();break;case 2:i.unit=e.int64();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.type&&e.hasOwnProperty("type")&&!(o.isInteger(e.type)||e.type&&o.isInteger(e.type.low)&&o.isInteger(e.type.high))?"type: integer|Long expected":null!=e.unit&&e.hasOwnProperty("unit")&&!(o.isInteger(e.unit)||e.unit&&o.isInteger(e.unit.low)&&o.isInteger(e.unit.high))?"unit: integer|Long expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.ValueType)return e;var n=new r.perftools.profiles.ValueType;return null!=e.type&&(o.Long?(n.type=o.Long.fromValue(e.type)).unsigned=!1:"string"==typeof e.type?n.type=parseInt(e.type,10):"number"==typeof e.type?n.type=e.type:"object"==typeof e.type&&(n.type=new o.LongBits(e.type.low>>>0,e.type.high>>>0).toNumber())),null!=e.unit&&(o.Long?(n.unit=o.Long.fromValue(e.unit)).unsigned=!1:"string"==typeof e.unit?n.unit=parseInt(e.unit,10):"number"==typeof e.unit?n.unit=e.unit:"object"==typeof e.unit&&(n.unit=new o.LongBits(e.unit.low>>>0,e.unit.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!1);t.type=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.type=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!1),t.unit=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.unit=n.longs===String?"0":0}return null!=e.type&&e.hasOwnProperty("type")&&("number"==typeof e.type?t.type=n.longs===String?String(e.type):e.type:t.type=n.longs===String?o.Long.prototype.toString.call(e.type):n.longs===Number?new o.LongBits(e.type.low>>>0,e.type.high>>>0).toNumber():e.type),null!=e.unit&&e.hasOwnProperty("unit")&&("number"==typeof e.unit?t.unit=n.longs===String?String(e.unit):e.unit:t.unit=n.longs===String?o.Long.prototype.toString.call(e.unit):n.longs===Number?new o.LongBits(e.unit.low>>>0,e.unit.high>>>0).toNumber():e.unit),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.Sample=function(){function i(e){if(this.locationId=[],this.value=[],this.label=[],e)for(var n=Object.keys(e),t=0;t>>3){case 1:if(i.locationId&&i.locationId.length||(i.locationId=[]),2==(7&l))for(var s=e.uint32()+e.pos;e.pos>>0,e.locationId[t].high>>>0).toNumber(!0))}if(e.value){if(!Array.isArray(e.value))throw TypeError(".perftools.profiles.Sample.value: array expected");for(n.value=[],t=0;t>>0,e.value[t].high>>>0).toNumber())}if(e.label){if(!Array.isArray(e.label))throw TypeError(".perftools.profiles.Sample.label: array expected");for(n.label=[],t=0;t>>0,e.locationId[i].high>>>0).toNumber(!0):e.locationId[i]}if(e.value&&e.value.length)for(t.value=[],i=0;i>>0,e.value[i].high>>>0).toNumber():e.value[i];if(e.label&&e.label.length)for(t.label=[],i=0;i>>3){case 1:i.key=e.int64();break;case 2:i.str=e.int64();break;case 3:i.num=e.int64();break;case 4:i.numUnit=e.int64();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.key&&e.hasOwnProperty("key")&&!(o.isInteger(e.key)||e.key&&o.isInteger(e.key.low)&&o.isInteger(e.key.high))?"key: integer|Long expected":null!=e.str&&e.hasOwnProperty("str")&&!(o.isInteger(e.str)||e.str&&o.isInteger(e.str.low)&&o.isInteger(e.str.high))?"str: integer|Long expected":null!=e.num&&e.hasOwnProperty("num")&&!(o.isInteger(e.num)||e.num&&o.isInteger(e.num.low)&&o.isInteger(e.num.high))?"num: integer|Long expected":null!=e.numUnit&&e.hasOwnProperty("numUnit")&&!(o.isInteger(e.numUnit)||e.numUnit&&o.isInteger(e.numUnit.low)&&o.isInteger(e.numUnit.high))?"numUnit: integer|Long expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.Label)return e;var n=new r.perftools.profiles.Label;return null!=e.key&&(o.Long?(n.key=o.Long.fromValue(e.key)).unsigned=!1:"string"==typeof e.key?n.key=parseInt(e.key,10):"number"==typeof e.key?n.key=e.key:"object"==typeof e.key&&(n.key=new o.LongBits(e.key.low>>>0,e.key.high>>>0).toNumber())),null!=e.str&&(o.Long?(n.str=o.Long.fromValue(e.str)).unsigned=!1:"string"==typeof e.str?n.str=parseInt(e.str,10):"number"==typeof e.str?n.str=e.str:"object"==typeof e.str&&(n.str=new o.LongBits(e.str.low>>>0,e.str.high>>>0).toNumber())),null!=e.num&&(o.Long?(n.num=o.Long.fromValue(e.num)).unsigned=!1:"string"==typeof e.num?n.num=parseInt(e.num,10):"number"==typeof e.num?n.num=e.num:"object"==typeof e.num&&(n.num=new o.LongBits(e.num.low>>>0,e.num.high>>>0).toNumber())),null!=e.numUnit&&(o.Long?(n.numUnit=o.Long.fromValue(e.numUnit)).unsigned=!1:"string"==typeof e.numUnit?n.numUnit=parseInt(e.numUnit,10):"number"==typeof e.numUnit?n.numUnit=e.numUnit:"object"==typeof e.numUnit&&(n.numUnit=new o.LongBits(e.numUnit.low>>>0,e.numUnit.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!1);t.key=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.key=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!1),t.str=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.str=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.num=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.num=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.numUnit=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.numUnit=n.longs===String?"0":0}return null!=e.key&&e.hasOwnProperty("key")&&("number"==typeof e.key?t.key=n.longs===String?String(e.key):e.key:t.key=n.longs===String?o.Long.prototype.toString.call(e.key):n.longs===Number?new o.LongBits(e.key.low>>>0,e.key.high>>>0).toNumber():e.key),null!=e.str&&e.hasOwnProperty("str")&&("number"==typeof e.str?t.str=n.longs===String?String(e.str):e.str:t.str=n.longs===String?o.Long.prototype.toString.call(e.str):n.longs===Number?new o.LongBits(e.str.low>>>0,e.str.high>>>0).toNumber():e.str),null!=e.num&&e.hasOwnProperty("num")&&("number"==typeof e.num?t.num=n.longs===String?String(e.num):e.num:t.num=n.longs===String?o.Long.prototype.toString.call(e.num):n.longs===Number?new o.LongBits(e.num.low>>>0,e.num.high>>>0).toNumber():e.num),null!=e.numUnit&&e.hasOwnProperty("numUnit")&&("number"==typeof e.numUnit?t.numUnit=n.longs===String?String(e.numUnit):e.numUnit:t.numUnit=n.longs===String?o.Long.prototype.toString.call(e.numUnit):n.longs===Number?new o.LongBits(e.numUnit.low>>>0,e.numUnit.high>>>0).toNumber():e.numUnit),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.Mapping=function(){function i(e){if(e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.id=e.uint64();break;case 2:i.memoryStart=e.uint64();break;case 3:i.memoryLimit=e.uint64();break;case 4:i.fileOffset=e.uint64();break;case 5:i.filename=e.int64();break;case 6:i.buildId=e.int64();break;case 7:i.hasFunctions=e.bool();break;case 8:i.hasFilenames=e.bool();break;case 9:i.hasLineNumbers=e.bool();break;case 10:i.hasInlineFrames=e.bool();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.id&&e.hasOwnProperty("id")&&!(o.isInteger(e.id)||e.id&&o.isInteger(e.id.low)&&o.isInteger(e.id.high))?"id: integer|Long expected":null!=e.memoryStart&&e.hasOwnProperty("memoryStart")&&!(o.isInteger(e.memoryStart)||e.memoryStart&&o.isInteger(e.memoryStart.low)&&o.isInteger(e.memoryStart.high))?"memoryStart: integer|Long expected":null!=e.memoryLimit&&e.hasOwnProperty("memoryLimit")&&!(o.isInteger(e.memoryLimit)||e.memoryLimit&&o.isInteger(e.memoryLimit.low)&&o.isInteger(e.memoryLimit.high))?"memoryLimit: integer|Long expected":null!=e.fileOffset&&e.hasOwnProperty("fileOffset")&&!(o.isInteger(e.fileOffset)||e.fileOffset&&o.isInteger(e.fileOffset.low)&&o.isInteger(e.fileOffset.high))?"fileOffset: integer|Long expected":null!=e.filename&&e.hasOwnProperty("filename")&&!(o.isInteger(e.filename)||e.filename&&o.isInteger(e.filename.low)&&o.isInteger(e.filename.high))?"filename: integer|Long expected":null!=e.buildId&&e.hasOwnProperty("buildId")&&!(o.isInteger(e.buildId)||e.buildId&&o.isInteger(e.buildId.low)&&o.isInteger(e.buildId.high))?"buildId: integer|Long expected":null!=e.hasFunctions&&e.hasOwnProperty("hasFunctions")&&"boolean"!=typeof e.hasFunctions?"hasFunctions: boolean expected":null!=e.hasFilenames&&e.hasOwnProperty("hasFilenames")&&"boolean"!=typeof e.hasFilenames?"hasFilenames: boolean expected":null!=e.hasLineNumbers&&e.hasOwnProperty("hasLineNumbers")&&"boolean"!=typeof e.hasLineNumbers?"hasLineNumbers: boolean expected":null!=e.hasInlineFrames&&e.hasOwnProperty("hasInlineFrames")&&"boolean"!=typeof e.hasInlineFrames?"hasInlineFrames: boolean expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.Mapping)return e;var n=new r.perftools.profiles.Mapping;return null!=e.id&&(o.Long?(n.id=o.Long.fromValue(e.id)).unsigned=!0:"string"==typeof e.id?n.id=parseInt(e.id,10):"number"==typeof e.id?n.id=e.id:"object"==typeof e.id&&(n.id=new o.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0))),null!=e.memoryStart&&(o.Long?(n.memoryStart=o.Long.fromValue(e.memoryStart)).unsigned=!0:"string"==typeof e.memoryStart?n.memoryStart=parseInt(e.memoryStart,10):"number"==typeof e.memoryStart?n.memoryStart=e.memoryStart:"object"==typeof e.memoryStart&&(n.memoryStart=new o.LongBits(e.memoryStart.low>>>0,e.memoryStart.high>>>0).toNumber(!0))),null!=e.memoryLimit&&(o.Long?(n.memoryLimit=o.Long.fromValue(e.memoryLimit)).unsigned=!0:"string"==typeof e.memoryLimit?n.memoryLimit=parseInt(e.memoryLimit,10):"number"==typeof e.memoryLimit?n.memoryLimit=e.memoryLimit:"object"==typeof e.memoryLimit&&(n.memoryLimit=new o.LongBits(e.memoryLimit.low>>>0,e.memoryLimit.high>>>0).toNumber(!0))),null!=e.fileOffset&&(o.Long?(n.fileOffset=o.Long.fromValue(e.fileOffset)).unsigned=!0:"string"==typeof e.fileOffset?n.fileOffset=parseInt(e.fileOffset,10):"number"==typeof e.fileOffset?n.fileOffset=e.fileOffset:"object"==typeof e.fileOffset&&(n.fileOffset=new o.LongBits(e.fileOffset.low>>>0,e.fileOffset.high>>>0).toNumber(!0))),null!=e.filename&&(o.Long?(n.filename=o.Long.fromValue(e.filename)).unsigned=!1:"string"==typeof e.filename?n.filename=parseInt(e.filename,10):"number"==typeof e.filename?n.filename=e.filename:"object"==typeof e.filename&&(n.filename=new o.LongBits(e.filename.low>>>0,e.filename.high>>>0).toNumber())),null!=e.buildId&&(o.Long?(n.buildId=o.Long.fromValue(e.buildId)).unsigned=!1:"string"==typeof e.buildId?n.buildId=parseInt(e.buildId,10):"number"==typeof e.buildId?n.buildId=e.buildId:"object"==typeof e.buildId&&(n.buildId=new o.LongBits(e.buildId.low>>>0,e.buildId.high>>>0).toNumber())),null!=e.hasFunctions&&(n.hasFunctions=Boolean(e.hasFunctions)),null!=e.hasFilenames&&(n.hasFilenames=Boolean(e.hasFilenames)),null!=e.hasLineNumbers&&(n.hasLineNumbers=Boolean(e.hasLineNumbers)),null!=e.hasInlineFrames&&(n.hasInlineFrames=Boolean(e.hasInlineFrames)),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!0);t.id=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.id=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!0),t.memoryStart=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.memoryStart=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!0),t.memoryLimit=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.memoryLimit=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!0),t.fileOffset=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.fileOffset=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.filename=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.filename=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.buildId=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.buildId=n.longs===String?"0":0,t.hasFunctions=!1,t.hasFilenames=!1,t.hasLineNumbers=!1,t.hasInlineFrames=!1}return null!=e.id&&e.hasOwnProperty("id")&&("number"==typeof e.id?t.id=n.longs===String?String(e.id):e.id:t.id=n.longs===String?o.Long.prototype.toString.call(e.id):n.longs===Number?new o.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0):e.id),null!=e.memoryStart&&e.hasOwnProperty("memoryStart")&&("number"==typeof e.memoryStart?t.memoryStart=n.longs===String?String(e.memoryStart):e.memoryStart:t.memoryStart=n.longs===String?o.Long.prototype.toString.call(e.memoryStart):n.longs===Number?new o.LongBits(e.memoryStart.low>>>0,e.memoryStart.high>>>0).toNumber(!0):e.memoryStart),null!=e.memoryLimit&&e.hasOwnProperty("memoryLimit")&&("number"==typeof e.memoryLimit?t.memoryLimit=n.longs===String?String(e.memoryLimit):e.memoryLimit:t.memoryLimit=n.longs===String?o.Long.prototype.toString.call(e.memoryLimit):n.longs===Number?new o.LongBits(e.memoryLimit.low>>>0,e.memoryLimit.high>>>0).toNumber(!0):e.memoryLimit),null!=e.fileOffset&&e.hasOwnProperty("fileOffset")&&("number"==typeof e.fileOffset?t.fileOffset=n.longs===String?String(e.fileOffset):e.fileOffset:t.fileOffset=n.longs===String?o.Long.prototype.toString.call(e.fileOffset):n.longs===Number?new o.LongBits(e.fileOffset.low>>>0,e.fileOffset.high>>>0).toNumber(!0):e.fileOffset),null!=e.filename&&e.hasOwnProperty("filename")&&("number"==typeof e.filename?t.filename=n.longs===String?String(e.filename):e.filename:t.filename=n.longs===String?o.Long.prototype.toString.call(e.filename):n.longs===Number?new o.LongBits(e.filename.low>>>0,e.filename.high>>>0).toNumber():e.filename),null!=e.buildId&&e.hasOwnProperty("buildId")&&("number"==typeof e.buildId?t.buildId=n.longs===String?String(e.buildId):e.buildId:t.buildId=n.longs===String?o.Long.prototype.toString.call(e.buildId):n.longs===Number?new o.LongBits(e.buildId.low>>>0,e.buildId.high>>>0).toNumber():e.buildId),null!=e.hasFunctions&&e.hasOwnProperty("hasFunctions")&&(t.hasFunctions=e.hasFunctions),null!=e.hasFilenames&&e.hasOwnProperty("hasFilenames")&&(t.hasFilenames=e.hasFilenames),null!=e.hasLineNumbers&&e.hasOwnProperty("hasLineNumbers")&&(t.hasLineNumbers=e.hasLineNumbers),null!=e.hasInlineFrames&&e.hasOwnProperty("hasInlineFrames")&&(t.hasInlineFrames=e.hasInlineFrames),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.Location=function(){function i(e){if(this.line=[],e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.id=e.uint64();break;case 2:i.mappingId=e.uint64();break;case 3:i.address=e.uint64();break;case 4:i.line&&i.line.length||(i.line=[]),i.line.push(r.perftools.profiles.Line.decode(e,e.uint32()));break;case 5:i.isFolded=e.bool();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){if("object"!=typeof e||null===e)return"object expected";if(null!=e.id&&e.hasOwnProperty("id")&&!(o.isInteger(e.id)||e.id&&o.isInteger(e.id.low)&&o.isInteger(e.id.high)))return"id: integer|Long expected";if(null!=e.mappingId&&e.hasOwnProperty("mappingId")&&!(o.isInteger(e.mappingId)||e.mappingId&&o.isInteger(e.mappingId.low)&&o.isInteger(e.mappingId.high)))return"mappingId: integer|Long expected";if(null!=e.address&&e.hasOwnProperty("address")&&!(o.isInteger(e.address)||e.address&&o.isInteger(e.address.low)&&o.isInteger(e.address.high)))return"address: integer|Long expected";if(null!=e.line&&e.hasOwnProperty("line")){if(!Array.isArray(e.line))return"line: array expected";for(var n=0;n>>0,e.id.high>>>0).toNumber(!0))),null!=e.mappingId&&(o.Long?(n.mappingId=o.Long.fromValue(e.mappingId)).unsigned=!0:"string"==typeof e.mappingId?n.mappingId=parseInt(e.mappingId,10):"number"==typeof e.mappingId?n.mappingId=e.mappingId:"object"==typeof e.mappingId&&(n.mappingId=new o.LongBits(e.mappingId.low>>>0,e.mappingId.high>>>0).toNumber(!0))),null!=e.address&&(o.Long?(n.address=o.Long.fromValue(e.address)).unsigned=!0:"string"==typeof e.address?n.address=parseInt(e.address,10):"number"==typeof e.address?n.address=e.address:"object"==typeof e.address&&(n.address=new o.LongBits(e.address.low>>>0,e.address.high>>>0).toNumber(!0))),e.line){if(!Array.isArray(e.line))throw TypeError(".perftools.profiles.Location.line: array expected");n.line=[];for(var t=0;t>>0,e.id.high>>>0).toNumber(!0):e.id),null!=e.mappingId&&e.hasOwnProperty("mappingId")&&("number"==typeof e.mappingId?t.mappingId=n.longs===String?String(e.mappingId):e.mappingId:t.mappingId=n.longs===String?o.Long.prototype.toString.call(e.mappingId):n.longs===Number?new o.LongBits(e.mappingId.low>>>0,e.mappingId.high>>>0).toNumber(!0):e.mappingId),null!=e.address&&e.hasOwnProperty("address")&&("number"==typeof e.address?t.address=n.longs===String?String(e.address):e.address:t.address=n.longs===String?o.Long.prototype.toString.call(e.address):n.longs===Number?new o.LongBits(e.address.low>>>0,e.address.high>>>0).toNumber(!0):e.address),e.line&&e.line.length){t.line=[];for(var l=0;l>>3){case 1:i.functionId=e.uint64();break;case 2:i.line=e.int64();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.functionId&&e.hasOwnProperty("functionId")&&!(o.isInteger(e.functionId)||e.functionId&&o.isInteger(e.functionId.low)&&o.isInteger(e.functionId.high))?"functionId: integer|Long expected":null!=e.line&&e.hasOwnProperty("line")&&!(o.isInteger(e.line)||e.line&&o.isInteger(e.line.low)&&o.isInteger(e.line.high))?"line: integer|Long expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.Line)return e;var n=new r.perftools.profiles.Line;return null!=e.functionId&&(o.Long?(n.functionId=o.Long.fromValue(e.functionId)).unsigned=!0:"string"==typeof e.functionId?n.functionId=parseInt(e.functionId,10):"number"==typeof e.functionId?n.functionId=e.functionId:"object"==typeof e.functionId&&(n.functionId=new o.LongBits(e.functionId.low>>>0,e.functionId.high>>>0).toNumber(!0))),null!=e.line&&(o.Long?(n.line=o.Long.fromValue(e.line)).unsigned=!1:"string"==typeof e.line?n.line=parseInt(e.line,10):"number"==typeof e.line?n.line=e.line:"object"==typeof e.line&&(n.line=new o.LongBits(e.line.low>>>0,e.line.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!0);t.functionId=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.functionId=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!1),t.line=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.line=n.longs===String?"0":0}return null!=e.functionId&&e.hasOwnProperty("functionId")&&("number"==typeof e.functionId?t.functionId=n.longs===String?String(e.functionId):e.functionId:t.functionId=n.longs===String?o.Long.prototype.toString.call(e.functionId):n.longs===Number?new o.LongBits(e.functionId.low>>>0,e.functionId.high>>>0).toNumber(!0):e.functionId),null!=e.line&&e.hasOwnProperty("line")&&("number"==typeof e.line?t.line=n.longs===String?String(e.line):e.line:t.line=n.longs===String?o.Long.prototype.toString.call(e.line):n.longs===Number?new o.LongBits(e.line.low>>>0,e.line.high>>>0).toNumber():e.line),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i.Function=function(){function i(e){if(e)for(var n=Object.keys(e),t=0;t>>3){case 1:i.id=e.uint64();break;case 2:i.name=e.int64();break;case 3:i.systemName=e.int64();break;case 4:i.filename=e.int64();break;case 5:i.startLine=e.int64();break;default:e.skipType(7&l)}}return i},i.decodeDelimited=function(e){return e instanceof n||(e=new n(e)),this.decode(e,e.uint32())},i.verify=function(e){return"object"!=typeof e||null===e?"object expected":null!=e.id&&e.hasOwnProperty("id")&&!(o.isInteger(e.id)||e.id&&o.isInteger(e.id.low)&&o.isInteger(e.id.high))?"id: integer|Long expected":null!=e.name&&e.hasOwnProperty("name")&&!(o.isInteger(e.name)||e.name&&o.isInteger(e.name.low)&&o.isInteger(e.name.high))?"name: integer|Long expected":null!=e.systemName&&e.hasOwnProperty("systemName")&&!(o.isInteger(e.systemName)||e.systemName&&o.isInteger(e.systemName.low)&&o.isInteger(e.systemName.high))?"systemName: integer|Long expected":null!=e.filename&&e.hasOwnProperty("filename")&&!(o.isInteger(e.filename)||e.filename&&o.isInteger(e.filename.low)&&o.isInteger(e.filename.high))?"filename: integer|Long expected":null!=e.startLine&&e.hasOwnProperty("startLine")&&!(o.isInteger(e.startLine)||e.startLine&&o.isInteger(e.startLine.low)&&o.isInteger(e.startLine.high))?"startLine: integer|Long expected":null},i.fromObject=function(e){if(e instanceof r.perftools.profiles.Function)return e;var n=new r.perftools.profiles.Function;return null!=e.id&&(o.Long?(n.id=o.Long.fromValue(e.id)).unsigned=!0:"string"==typeof e.id?n.id=parseInt(e.id,10):"number"==typeof e.id?n.id=e.id:"object"==typeof e.id&&(n.id=new o.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0))),null!=e.name&&(o.Long?(n.name=o.Long.fromValue(e.name)).unsigned=!1:"string"==typeof e.name?n.name=parseInt(e.name,10):"number"==typeof e.name?n.name=e.name:"object"==typeof e.name&&(n.name=new o.LongBits(e.name.low>>>0,e.name.high>>>0).toNumber())),null!=e.systemName&&(o.Long?(n.systemName=o.Long.fromValue(e.systemName)).unsigned=!1:"string"==typeof e.systemName?n.systemName=parseInt(e.systemName,10):"number"==typeof e.systemName?n.systemName=e.systemName:"object"==typeof e.systemName&&(n.systemName=new o.LongBits(e.systemName.low>>>0,e.systemName.high>>>0).toNumber())),null!=e.filename&&(o.Long?(n.filename=o.Long.fromValue(e.filename)).unsigned=!1:"string"==typeof e.filename?n.filename=parseInt(e.filename,10):"number"==typeof e.filename?n.filename=e.filename:"object"==typeof e.filename&&(n.filename=new o.LongBits(e.filename.low>>>0,e.filename.high>>>0).toNumber())),null!=e.startLine&&(o.Long?(n.startLine=o.Long.fromValue(e.startLine)).unsigned=!1:"string"==typeof e.startLine?n.startLine=parseInt(e.startLine,10):"number"==typeof e.startLine?n.startLine=e.startLine:"object"==typeof e.startLine&&(n.startLine=new o.LongBits(e.startLine.low>>>0,e.startLine.high>>>0).toNumber())),n},i.toObject=function(e,n){n||(n={});var t={};if(n.defaults){if(o.Long){var r=new o.Long(0,0,!0);t.id=n.longs===String?r.toString():n.longs===Number?r.toNumber():r}else t.id=n.longs===String?"0":0;o.Long?(r=new o.Long(0,0,!1),t.name=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.name=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.systemName=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.systemName=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.filename=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.filename=n.longs===String?"0":0,o.Long?(r=new o.Long(0,0,!1),t.startLine=n.longs===String?r.toString():n.longs===Number?r.toNumber():r):t.startLine=n.longs===String?"0":0}return null!=e.id&&e.hasOwnProperty("id")&&("number"==typeof e.id?t.id=n.longs===String?String(e.id):e.id:t.id=n.longs===String?o.Long.prototype.toString.call(e.id):n.longs===Number?new o.LongBits(e.id.low>>>0,e.id.high>>>0).toNumber(!0):e.id),null!=e.name&&e.hasOwnProperty("name")&&("number"==typeof e.name?t.name=n.longs===String?String(e.name):e.name:t.name=n.longs===String?o.Long.prototype.toString.call(e.name):n.longs===Number?new o.LongBits(e.name.low>>>0,e.name.high>>>0).toNumber():e.name),null!=e.systemName&&e.hasOwnProperty("systemName")&&("number"==typeof e.systemName?t.systemName=n.longs===String?String(e.systemName):e.systemName:t.systemName=n.longs===String?o.Long.prototype.toString.call(e.systemName):n.longs===Number?new o.LongBits(e.systemName.low>>>0,e.systemName.high>>>0).toNumber():e.systemName),null!=e.filename&&e.hasOwnProperty("filename")&&("number"==typeof e.filename?t.filename=n.longs===String?String(e.filename):e.filename:t.filename=n.longs===String?o.Long.prototype.toString.call(e.filename):n.longs===Number?new o.LongBits(e.filename.low>>>0,e.filename.high>>>0).toNumber():e.filename),null!=e.startLine&&e.hasOwnProperty("startLine")&&("number"==typeof e.startLine?t.startLine=n.longs===String?String(e.startLine):e.startLine:t.startLine=n.longs===String?o.Long.prototype.toString.call(e.startLine):n.longs===Number?new o.LongBits(e.startLine.low>>>0,e.startLine.high>>>0).toNumber():e.startLine),t},i.prototype.toJSON=function(){return this.constructor.toObject(this,e.util.toJSONOptions)},i}(),i),l}(),module.exports=r; -},{"protobufjs/minimal":"Myh2"}],"YvD4":[function(require,module,exports) { -module.exports=t;var i=null;try{i=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(L){}function t(i,t,n){this.low=0|i,this.high=0|t,this.unsigned=!!n}function n(i){return!0===(i&&i.__isLong__)}t.prototype.__isLong__,Object.defineProperty(t.prototype,"__isLong__",{value:!0}),t.isLong=n;var h={},s={};function e(i,t){var n,e,r;return t?(r=0<=(i>>>=0)&&i<256)&&(e=s[i])?e:(n=u(i,(0|i)<0?-1:0,!0),r&&(s[i]=n),n):(r=-128<=(i|=0)&&i<128)&&(e=h[i])?e:(n=u(i,i<0?-1:0,!1),r&&(h[i]=n),n)}function r(i,t){if(isNaN(i))return t?N:m;if(t){if(i<0)return N;if(i>=c)return p}else{if(i<=-w)return _;if(i+1>=w)return q}return i<0?r(-i,t).neg():u(i%d|0,i/d|0,t)}function u(i,n,h){return new t(i,n,h)}t.fromInt=e,t.fromNumber=r,t.fromBits=u;var o=Math.pow;function g(i,t,n){if(0===i.length)throw Error("empty string");if("NaN"===i||"Infinity"===i||"+Infinity"===i||"-Infinity"===i)return m;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||360)throw Error("interior hyphen");if(0===h)return g(i.substring(1),t,n).neg();for(var s=r(o(n,8)),e=m,u=0;u>>0:this.low},B.toNumber=function(){return this.unsigned?(this.high>>>0)*d+(this.low>>>0):this.high*d+(this.low>>>0)},B.toString=function(i){if((i=i||10)<2||36>>0).toString(i);if((e=g).isZero())return f+u;for(;f.length<6;)f="0"+f;u=""+f+u}},B.getHighBits=function(){return this.high},B.getHighBitsUnsigned=function(){return this.high>>>0},B.getLowBits=function(){return this.low},B.getLowBitsUnsigned=function(){return this.low>>>0},B.getNumBitsAbs=function(){if(this.isNegative())return this.eq(_)?64:this.neg().getNumBitsAbs();for(var i=0!=this.high?this.high:this.low,t=31;t>0&&0==(i&1<=0},B.isOdd=function(){return 1==(1&this.low)},B.isEven=function(){return 0==(1&this.low)},B.equals=function(i){return n(i)||(i=f(i)),(this.unsigned===i.unsigned||this.high>>>31!=1||i.high>>>31!=1)&&(this.high===i.high&&this.low===i.low)},B.eq=B.equals,B.notEquals=function(i){return!this.eq(i)},B.neq=B.notEquals,B.ne=B.notEquals,B.lessThan=function(i){return this.comp(i)<0},B.lt=B.lessThan,B.lessThanOrEqual=function(i){return this.comp(i)<=0},B.lte=B.lessThanOrEqual,B.le=B.lessThanOrEqual,B.greaterThan=function(i){return this.comp(i)>0},B.gt=B.greaterThan,B.greaterThanOrEqual=function(i){return this.comp(i)>=0},B.gte=B.greaterThanOrEqual,B.ge=B.greaterThanOrEqual,B.compare=function(i){if(n(i)||(i=f(i)),this.eq(i))return 0;var t=this.isNegative(),h=i.isNegative();return t&&!h?-1:!t&&h?1:this.unsigned?i.high>>>0>this.high>>>0||i.high===this.high&&i.low>>>0>this.low>>>0?-1:1:this.sub(i).isNegative()?-1:1},B.comp=B.compare,B.negate=function(){return!this.unsigned&&this.eq(_)?_:this.not().add(E)},B.neg=B.negate,B.add=function(i){n(i)||(i=f(i));var t=this.high>>>16,h=65535&this.high,s=this.low>>>16,e=65535&this.low,r=i.high>>>16,o=65535&i.high,g=i.low>>>16,l=0,a=0,d=0,c=0;return d+=(c+=e+(65535&i.low))>>>16,a+=(d+=s+g)>>>16,l+=(a+=h+o)>>>16,l+=t+r,u((d&=65535)<<16|(c&=65535),(l&=65535)<<16|(a&=65535),this.unsigned)},B.subtract=function(i){return n(i)||(i=f(i)),this.add(i.neg())},B.sub=B.subtract,B.multiply=function(t){if(this.isZero())return m;if(n(t)||(t=f(t)),i)return u(i.mul(this.low,this.high,t.low,t.high),i.get_high(),this.unsigned);if(t.isZero())return m;if(this.eq(_))return t.isOdd()?_:m;if(t.eq(_))return this.isOdd()?_:m;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(v)&&t.lt(v))return r(this.toNumber()*t.toNumber(),this.unsigned);var h=this.high>>>16,s=65535&this.high,e=this.low>>>16,o=65535&this.low,g=t.high>>>16,l=65535&t.high,a=t.low>>>16,d=65535&t.low,c=0,w=0,N=0,E=0;return N+=(E+=o*d)>>>16,w+=(N+=e*d)>>>16,N&=65535,w+=(N+=o*a)>>>16,c+=(w+=s*d)>>>16,w&=65535,c+=(w+=e*a)>>>16,w&=65535,c+=(w+=o*l)>>>16,c+=h*d+s*a+e*l+o*g,u((N&=65535)<<16|(E&=65535),(c&=65535)<<16|(w&=65535),this.unsigned)},B.mul=B.multiply,B.divide=function(t){if(n(t)||(t=f(t)),t.isZero())throw Error("division by zero");var h,s,e;if(i)return this.unsigned||-2147483648!==this.high||-1!==t.low||-1!==t.high?u((this.unsigned?i.div_u:i.div_s)(this.low,this.high,t.low,t.high),i.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?N:m;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return N;if(t.gt(this.shru(1)))return y;e=N}else{if(this.eq(_))return t.eq(E)||t.eq(b)?_:t.eq(_)?E:(h=this.shr(1).div(t).shl(1)).eq(m)?t.isNegative()?E:b:(s=this.sub(t.mul(h)),e=h.add(s.div(t)));if(t.eq(_))return this.unsigned?N:m;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();e=m}for(s=this;s.gte(t);){h=Math.max(1,Math.floor(s.toNumber()/t.toNumber()));for(var g=Math.ceil(Math.log(h)/Math.LN2),l=g<=48?1:o(2,g-48),a=r(h),d=a.mul(t);d.isNegative()||d.gt(s);)d=(a=r(h-=l,this.unsigned)).mul(t);a.isZero()&&(a=E),e=e.add(a),s=s.sub(d)}return e},B.div=B.divide,B.modulo=function(t){return n(t)||(t=f(t)),i?u((this.unsigned?i.rem_u:i.rem_s)(this.low,this.high,t.low,t.high),i.get_high(),this.unsigned):this.sub(this.div(t).mul(t))},B.mod=B.modulo,B.rem=B.modulo,B.not=function(){return u(~this.low,~this.high,this.unsigned)},B.and=function(i){return n(i)||(i=f(i)),u(this.low&i.low,this.high&i.high,this.unsigned)},B.or=function(i){return n(i)||(i=f(i)),u(this.low|i.low,this.high|i.high,this.unsigned)},B.xor=function(i){return n(i)||(i=f(i)),u(this.low^i.low,this.high^i.high,this.unsigned)},B.shiftLeft=function(i){return n(i)&&(i=i.toInt()),0==(i&=63)?this:i<32?u(this.low<>>32-i,this.unsigned):u(0,this.low<>>i|this.high<<32-i,this.high>>i,this.unsigned):u(this.high>>i-32,this.high>=0?0:-1,this.unsigned)},B.shr=B.shiftRight,B.shiftRightUnsigned=function(i){if(n(i)&&(i=i.toInt()),0===(i&=63))return this;var t=this.high;return i<32?u(this.low>>>i|t<<32-i,t>>>i,this.unsigned):u(32===i?t:t>>>i-32,0,this.unsigned)},B.shru=B.shiftRightUnsigned,B.shr_u=B.shiftRightUnsigned,B.toSigned=function(){return this.unsigned?u(this.low,this.high,!1):this},B.toUnsigned=function(){return this.unsigned?this:u(this.low,this.high,!0)},B.toBytes=function(i){return i?this.toBytesLE():this.toBytesBE()},B.toBytesLE=function(){var i=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&i,i>>>8&255,i>>>16&255,i>>>24]},B.toBytesBE=function(){var i=this.high,t=this.low;return[i>>>24,i>>>16&255,i>>>8&255,255&i,t>>>24,t>>>16&255,t>>>8&255,255&t]},t.fromBytes=function(i,n,h){return h?t.fromBytesLE(i,n):t.fromBytesBE(i,n)},t.fromBytesLE=function(i,n){return new t(i[0]|i[1]<<8|i[2]<<16|i[3]<<24,i[4]|i[5]<<8|i[6]<<16|i[7]<<24,n)},t.fromBytesBE=function(i,n){return new t(i[4]<<24|i[5]<<16|i[6]<<8|i[7],i[0]<<24|i[1]<<16|i[2]<<8|i[3],n)}; -},{}],"VmHy":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importAsPprofProfile=o;var e=require("./profile.proto.js"),n=require("../lib/profile"),t=require("../lib/utils"),l=require("../lib/value-formatters"),r=u(require("long"));function u(e){return e&&e.__esModule?e:{default:e}}function i(e){const n=e.defaultSampleType,t=e.sampleType,l=t.length-1;if(!n||!+n)return l;const r=t.findIndex(e=>e.type===n);return-1===r?l:r}function o(u){if(0===u.byteLength)return null;let o;try{o=e.perftools.profiles.Profile.decode(new Uint8Array(u))}catch(w){return null}function s(e){return"number"==typeof e?e:e.low}function a(e){return o.stringTable[s(e)]||null}const c=new Map;function f(e){const{name:n,filename:t,startLine:l}=e,r=null!=n&&a(n)||"(unknown)",u=null!=t?a(t):null,i=null!=l?+l:null,o={key:`${r}:${u}:${i}`,name:r};return null!=u&&(o.file=u),null!=i&&(o.line=i),o}for(let e of o.function)if(e.id){const n=f(e);null!=n&&c.set(s(e.id),n)}function p(e){const{line:n}=e;if(null==n)return null;const l=(0,t.lastOf)(n);if(null==l)return null;if(l.functionId){let e=c.get(s(l.functionId));const n=l.line instanceof r.default?l.line.toNumber():l.line;return n&&n>0&&null!=e&&(e.line=n),e||null}return null}const d=new Map;for(let e of o.location)if(null!=e.id){const n=p(e);n&&d.set(s(e.id),n)}const m=o.sampleType.map(e=>({type:e.type&&a(e.type)||"samples",unit:e.unit&&a(e.unit)||"count"})),y=i(o);if(y<0||y>=m.length)return null;const b=m[y],g=new n.StackListProfileBuilder;switch(b.unit){case"nanoseconds":case"microseconds":case"milliseconds":case"seconds":g.setValueFormatter(new l.TimeFormatter(b.unit));break;case"bytes":g.setValueFormatter(new l.ByteFormatter)}for(let e of o.sample){const n=e.locationId?e.locationId.map(e=>d.get(s(e))):[];if(n.reverse(),null==e.value||e.value.length<=y)return null;const t=e.value[y];g.appendSampleWithWeight(n.filter(e=>null!=e),+t)}return g.build()} -},{"./profile.proto.js":"YdJi","../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4","long":"YvD4"}],"bNW7":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromChromeHeapProfile=i;var e=require("../lib/profile"),t=require("../lib/utils"),r=require("../lib/value-formatters");const n=new Map;function o(e){return(0,t.getOrInsert)(n,e,e=>{const t=e.url,r=e.lineNumber,n=e.columnNumber,o=e.functionName||(t?`(anonymous ${t.split("/").pop()}:${r})`:"(anonymous)");return{key:`${o}:${t}:${r}:${n}`,name:o,file:t,line:r,col:n}})}function i(t){const n=new Map;let i=0;const l=(e,t)=>{e.id=i++,n.set(e.id,e),t&&(e.parent=t.id),e.children.forEach(t=>l(t,e))};l(t.head);const s=e=>{if(0===e.children.length)return e.selfSize||0;const t=e.children.reduce((e,t)=>e+=s(t),e.selfSize);return e.totalSize=t,t},u=s(t.head),a=[];for(let e of n.values()){let t=[];for(t.push(e);void 0!==e.parent;){const r=n.get(e.parent);if(void 0===r)break;t.unshift(r),e=r}a.push(t)}const c=new e.StackListProfileBuilder(u);for(let e of a){const t=e[e.length-1];c.appendSampleWithWeight(e.map(e=>o(e.callFrame)),t.selfSize)}return c.setValueFormatter(new r.ByteFormatter),c.build()} -},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4"}],"KFvE":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.isTraceEventFormatted=S,exports.importTraceEvents=W;var e,t=require("../lib/utils"),n=require("../lib/profile"),r=require("../lib/value-formatters");!function(e){e.HERMES="HERMES",e.UNKNOWN="UNKNOWN"}(e||(e={}));const s=["line","column","name","category","url","params","allocatedCategory","allocatedName"];function o(e,n){return`${(0,t.zeroPad)(""+e,10)}:${(0,t.zeroPad)(""+n,10)}`}function i(e){const n=new Map;for(let r of e){(0,t.getOrInsert)(n,o(Number(r.pid),Number(r.tid)),()=>[]).push(r)}return n}function a(e,t){if(0===e.length&&0===t.length)throw new Error("This method should not be given both queues empty");if(0===t.length)return"B";if(0===e.length)return"E";const n=e[0],r=t[0],s=n.ts,o=r.ts;return s0){let t=Number.MAX_SAFE_INTEGER;for(let n of e)t=Math.min(t,n.ts);for(let n of e)n.ts-=t}const r=[];for(let i of e)switch(i.ph){case"B":t.push(i);break;case"E":n.push(i);break;case"X":r.push(i);break;default:return i}function s(e){var t,n;return null!==(n=null!==(t=e.dur)&&void 0!==t?t:e.tdur)&&void 0!==n?n:0}r.sort((e,t)=>{if(e.tst.ts)return 1;const n=s(e),r=s(t);return n>r?-1:nt.ts?1:0}return t.sort(o),n.sort(o),[t,n]}function c(e){const t=[];for(let n of e)switch(n.ph){case"B":case"E":case"X":t.push(n)}return t}function f(e){const t=new Map;for(let n of e)"M"===n.ph&&"process_name"===n.name&&n.args&&n.args.name&&t.set(n.pid,n.args.name);return t}function l(e){const t=new Map;for(let n of e)"M"===n.ph&&"thread_name"===n.name&&n.args&&n.args.name&&t.set(o(n.pid,n.tid),n.args.name);return t}function h(e){return`${e.name||"(unnamed)"}`}function m(e){let t=h(e);return e.args&&(t+=` ${JSON.stringify(e.args)}`),t}function d(t,n=e.UNKNOWN){if(n===e.HERMES){const e=`${t.name}:${t.args.url}:${t.args.line}:${t.args.column}`;return{name:h(t),key:e,file:t.args.url,line:t.args.line,col:t.args.column}}const r=m(t);return{name:r,key:r}}function p(e,t,n,r){return null!=e&&null!=t?`${e} (pid ${n}), ${t} (tid ${r})`:null!=e?`${e} (pid ${n}, tid ${r})`:null!=t?`${t} (pid ${n}, tid ${r})`:`pid ${n}, tid ${r}`}function g(e,t){const n=f(e),r=l(e),s=new Map;return t.forEach(e=>{if(0===e.length)return;const t=Number(e[0].pid),i=Number(e[0].tid),a=o(t,i),u=p(n.get(t),r.get(a),t,i);s.set(a,u)}),s}function E(e,t){const n=f(e),r=l(e),s=new Map;return t.forEach(e=>{if(0===e.length)return;const{pid:t,tid:i}=e[0],a=o(t,i),u=p(n.get(t),r.get(a),t,i);s.set(a,u)}),s}function $(s,o,i=e.UNKNOWN){const[c,f]=u(s),l=new n.CallTreeProfileBuilder;l.setValueFormatter(new r.TimeFormatter("microseconds")),l.setName(o);const h=[],m=e=>{const n=(0,t.lastOf)(h);if(null==n)return void console.warn(`Tried to end frame "${d(e,i).key}", but the stack was empty. Doing nothing instead.`);const r=d(e,i),s=d(n,i);e.name===n.name?(r.key!==s.key&&console.warn(`ts=${e.ts}: Tried to end "${r.key}" when "${s.key}" was on the top of the stack. Ending ${s.key} instead.`),h.pop(),l.leaveFrame(s,e.ts)):console.warn(`ts=${e.ts}: Tried to end "${r.key}" when "${s.key}" was on the top of the stack. Doing nothing instead.`)};for(;c.length>0||f.length>0;){const e=a(c,f);switch(e){case"B":p=c.shift(),h.push(p),l.enterFrame(d(p,i),p.ts);break;case"E":{const e=(0,t.lastOf)(h);if(null!=e){const t=d(e,i);let n=!1;for(let e=1;ef[0].ts)break;const s=d(r,i);if(t.key===s.key){const t=f[0];f[0]=f[e],f[e]=t,n=!0;break}}if(!n)for(let r=1;rf[0].ts)break;if(t.name===e.name){const e=f[0];f[0]=f[r],f[r]=e,n=!0;break}}}m(f.shift());break}default:return e}}var p;for(let e=h.length-1;e>=0;e--){const t=d(h[e],i);console.warn(`Frame "${t.key}" was still open at end of profile. Closing automatically.`),l.leaveFrame(t,l.getTotalWeight())}return l.build()}function w(e){const t=[];let n=Number(e[0].ts);return e.forEach((e,r)=>{if(0===r)return;const s=Number(e.ts)-n;n=Number(e.ts),t.push(s)}),t.push(0),t}function k({name:e,category:t}){return{key:`${e}:${t}`,name:e}}function b(e,t){const n=[];let r=t;for(;r;){const t=e[r];if(!t)throw new Error(`Could not find frame for id ${r}`);n.push(k(t)),r=t.parent}return n.reverse()}function y(e,t,s){const o=new n.StackListProfileBuilder;o.setValueFormatter(new r.TimeFormatter("microseconds")),o.setName(s);const i=w(t);return t.forEach((t,n)=>{const r=i[n],s=b(e.stackFrames,t.sf);o.appendSampleWithWeight(s,r)}),o.build()}function N(n,r=e.UNKNOWN){const s=i(c(n)),o=E(n,s),a=[];return o.forEach((e,t)=>{const n=s.get(t);if(!n)throw new Error(`Could not find events for key: ${n}`);a.push([t,$(n,e,r)])}),(0,t.sortBy)(a,e=>e[0]),{name:"",indexToView:0,profiles:a.map(e=>e[1])}}function v(e){const n=i(e.samples),r=g(e.traceEvents,n),s=[];return r.forEach((t,r)=>{const o=n.get(r);if(!o)throw new Error(`Could not find samples for key: ${o}`);0!==o.length&&s.push([r,y(e,o,t)])}),(0,t.sortBy)(s,e=>e[0]),{name:"",indexToView:0,profiles:s.map(e=>e[1])}}function M(e){if(!Array.isArray(e))return!1;if(0===e.length)return!1;for(let t of e){if(!("ph"in t))return!1;switch(t.ph){case"B":case"E":case"X":if(!("ts"in t))return!1}}return!0}function O(e){return!!e&&s.every(t=>t in e)}function T(e){return!!M(e)&&O(e[0].args)}function B(e){return"traceEvents"in e&&M(e.traceEvents)}function F(e){return"traceEvents"in e&&"stackFrames"in e&&"samples"in e&&M(e.traceEvents)}function S(e){return B(e)||M(e)}function W(t){if(F(t))return v(t);if(B(t))return N(t.traceEvents);if(T(t))return N(t,e.HERMES);if(M(t))return N(t);return t} -},{"../lib/utils":"ucYa","../lib/profile":"YG8z","../lib/value-formatters":"LsM4"}],"TZYa":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importFromCallgrind=r;var e=require("../lib/profile"),t=require("../lib/utils"),i=require("../lib/value-formatters");class s{constructor(e,i){this.fileName=e,this.fieldName=i,this.frameSet=new t.KeyedSet,this.totalWeights=new Map,this.childrenTotalWeights=new Map}getOrInsertFrame(t){return e.Frame.getOrInsert(this.frameSet,t)}addToTotalWeight(e,t){this.totalWeights.has(e)?this.totalWeights.set(e,this.totalWeights.get(e)+t):this.totalWeights.set(e,t)}addSelfWeight(e,t){this.addToTotalWeight(this.getOrInsertFrame(e),t)}addChildWithTotalWeight(e,i,s){const n=this.getOrInsertFrame(e),r=this.getOrInsertFrame(i),a=(0,t.getOrInsert)(this.childrenTotalWeights,n,e=>new Map);a.has(r)?a.set(r,a.get(r)+s):a.set(r,s),this.addToTotalWeight(n,s)}toProfile(){const s=new e.CallTreeProfileBuilder;let n=1;"Time_(10ns)"===this.fieldName?(s.setName(`${this.fileName} -- Time`),n=10,s.setValueFormatter(new i.TimeFormatter("nanoseconds"))):"Memory_(bytes)"==this.fieldName?(s.setName(`${this.fileName} -- Memory`),s.setValueFormatter(new i.ByteFormatter)):s.setName(`${this.fileName} -- ${this.fieldName}`);let r=0;const a=new Set;let l=0;for(let[e,t]of this.totalWeights)l=Math.max(l,t);const o=(e,i)=>{if(a.has(e))return;if(i<1e-4*l)return;const h=(0,t.getOrElse)(this.totalWeights,e,()=>0);if(0===h)return;let m=i;s.enterFrame(e,Math.round(r*n)),a.add(e);for(let[t,s]of this.childrenTotalWeights.get(e)||[]){let e=r;o(t,i*(s/h)),m-=r-e}a.delete(e),r+=m,s.leaveFrame(e,Math.round(r*n))},h=new Set(this.frameSet);for(let[e,t]of this.childrenTotalWeights)for(let[i,s]of t)h.delete(i);for(let e of h)o(e,this.totalWeights.get(e));return s.build()}}class n{constructor(e,t){this.importedFileName=t,this.callGraphs=null,this.eventsLine=null,this.filename=null,this.functionName=null,this.calleeFilename=null,this.calleeFunctionName=null,this.savedFileNames={},this.savedFunctionNames={},this.prevCostLineNumbers=[],this.lines=[...e.splitLines()],this.lineNum=0}parse(){for(;this.lineNume.toProfile())}:null}frameInfo(){const e=this.filename||"(unknown)",t=this.functionName||"(unknown)";return{key:`${e}:${t}`,name:t,file:e}}calleeFrameInfo(){const e=this.calleeFilename||this.filename||"(unknown)",t=this.calleeFunctionName||"(unknown)";return{key:`${e}:${t}`,name:t,file:e}}parseHeaderLine(e){const t=/^\s*(\w+):\s*(.*)+$/.exec(e);if(!t)return!1;if("events"!==t[1])return!0;const i=t[2].split(" ");if(null!=this.callGraphs)throw new Error(`Duplicate "events: " lines specified. First was "${this.eventsLine}", now received "${e}" on ${this.lineNum}.`);return this.callGraphs=i.map(e=>new s(this.importedFileName,e)),!0}parseAssignmentLine(e){const t=/^(\w+)=\s*(.*)$/.exec(e);if(!t)return!1;const i=t[1],s=t[2];switch(i){case"fe":case"fi":this.parseNameWithCompression(s,this.savedFileNames);break;case"fl":this.filename=this.parseNameWithCompression(s,this.savedFileNames);break;case"fn":this.functionName=this.parseNameWithCompression(s,this.savedFunctionNames);break;case"cfi":case"cfl":this.calleeFilename=this.parseNameWithCompression(s,this.savedFileNames);break;case"cfn":this.calleeFunctionName=this.parseNameWithCompression(s,this.savedFunctionNames);break;case"calls":this.parseCostLine(this.lines[this.lineNum++],"child"),this.calleeFilename=null,this.calleeFunctionName=null;break;case"cob":case"ob":break;default:console.log(`Ignoring assignment to unrecognized key "${e}" on line ${this.lineNum}`)}return!0}parseNameWithCompression(e,t){{const i=/^\((\d+)\)\s*(.+)$/.exec(e);if(i){const e=i[1],s=i[2];if(e in t)throw new Error(`Redefinition of name with id: ${e}. Original value was "${t[e]}". Tried to redefine as "${s}" on line ${this.lineNum}.`);return t[e]=s,s}}{const i=/^\((\d+)\)$/.exec(e);if(i){const e=i[1];if(!(e in t))throw new Error(`Tried to use name with id ${e} on line ${this.lineNum} before it was defined.`);return t[e]}}return e}parseCostLine(e,t){const i=e.split(/\s+/),s=[];for(let n=0;n!/^$|^Log closed$|log opened/.exec(e));let s=-1;const o=I(l[0]);if(null===o)throw Error;s=o.at;const i=(0,t.lastOf)(l);if(null===i)throw Error;const c=I(i);if(null===c)throw Error;const u=c.at,f=new t.KeyedSet,h=[];let m,p=0,v=-1;function d(t,n,r){function l(t,n){h.push(n),a.enterFrame(e.Frame.getOrInsert(f,{name:n,key:n}),t),p=t}v>-1&&(v=-1,m===r&&v>=p&&d(t,v,`QUEUE ${r}`));const s=`STACK ${t}`;[...h].reverse().find(e=>e.startsWith("STACK "))!==s&&(1===h.length&&g(p),l(n,s)),l(n,r)}function g(n){const r=h.pop();if(void 0===r)throw Error("Tried to leave frame when nothing was on stack.");a.leaveFrame(e.Frame.getOrInsert(f,{name:r,key:r}),n);let l=(0,t.lastOf)(h);null!==l&&l.startsWith("QUEUE ")&&(g(n),l=(0,t.lastOf)(h)),h.length>1&&null!==l&&l.startsWith("STACK ")&&g(n),p=n}function w(e,n,r){(0,t.lastOf)(h)===r?g(n):0===p?(console.log(`Tried to leave frame "${r}" which was never entered. Assuming it has been running since the start.`),d(e,0,r),g(n)):console.log(`Tried to leave frame "${r}" which was never entered. Other events have happened since the start, ignoring line.`)}function I(e){if(void 0===e)throw Error("Probably tried to import empty file.");const t=e.split(":");return t.length<3?null:-1!==s?{at:parseInt(t[0])-s,event:t[1],stackInt:parseInt(t[2]),name:t[5]}:{at:parseInt(t[0]),event:t[1],stackInt:parseInt(t[2]),name:t[5]}}for(l.forEach((e,t,n)=>{const r=I(e);if(null!==r)if("PUSH"===r.event){d(r.stackInt,r.at,r.name);let e=I(n[t+=1]);for(;null!==e&&e.at===r.at;)e.name===r.name&&e.stackInt===r.stackInt&&"POP"===e.event?(w(e.stackInt,e.at,e.name),n.splice(t,1),e=null):(t+=1)0;)g(u);return a.build()} -},{"../lib/profile":"YG8z","../lib/utils":"ucYa","../lib/value-formatters":"LsM4"}],"uRa7":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importProfileGroupFromText=C,exports.importProfileGroupFromBase64=I,exports.importProfilesFromFile=x,exports.importProfilesFromArrayBuffer=y,exports.importFromFileSystemDirectoryEntry=T;var r=require("./chrome"),e=require("./stackprof"),o=require("./instruments"),i=require("./bg-flamegraph"),t=require("./firefox"),n=require("../lib/file-format"),s=require("./v8proflog"),l=require("./linux-tools-perf"),m=require("./haskell"),p=require("./safari"),a=require("./utils"),f=require("./pprof"),c=require("../lib/utils"),u=require("./v8heapalloc"),d=require("./trace-event"),g=require("./callgrind"),h=require("./papyrus"),F=function(r,e,o,i){return new(o||(o=Promise))(function(t,n){function s(r){try{m(i.next(r))}catch(e){n(e)}}function l(r){try{m(i.throw(r))}catch(e){n(e)}}function m(r){var e;r.done?t(r.value):(e=r.value,e instanceof o?e:new o(function(r){r(e)})).then(s,l)}m((i=i.apply(r,e||[])).next())})};function C(r,e){return F(this,void 0,void 0,function*(){return yield P(new a.TextProfileDataSource(r,e))})}function I(r,e){return F(this,void 0,void 0,function*(){return yield P(a.MaybeCompressedDataReader.fromArrayBuffer(r,(0,c.decodeBase64)(e).buffer))})}function x(r){return F(this,void 0,void 0,function*(){return P(a.MaybeCompressedDataReader.fromFile(r))})}function y(r,e){return F(this,void 0,void 0,function*(){return P(a.MaybeCompressedDataReader.fromArrayBuffer(r,e))})}function P(r){return F(this,void 0,void 0,function*(){const e=yield r.name(),o=yield S(r);if(o){o.name||(o.name=e);for(let r of o.profiles)r&&!r.getName()&&r.setName(e);return o}return null})}function v(r){return r?{name:r.getName(),indexToView:0,profiles:[r]}:null}function S(a){return F(this,void 0,void 0,function*(){const c=yield a.name(),F=yield a.readAsArrayBuffer();{const r=(0,f.importAsPprofProfile)(F);if(r)return console.log("Importing as protobuf encoded pprof file"),v(r)}const C=yield a.readAsText();if(c.endsWith(".speedscope.json"))return console.log("Importing as speedscope json file"),(0,n.importSpeedscopeProfiles)(C.parseAsJSON());if(/Trace-\d{8}T\d{6}/.exec(c))return console.log("Importing as Chrome Timeline Object"),(0,r.importFromChromeTimeline)(C.parseAsJSON().traceEvents,c);if(c.endsWith(".chrome.json")||/Profile-\d{8}T\d{6}/.exec(c))return console.log("Importing as Chrome Timeline"),(0,r.importFromChromeTimeline)(C.parseAsJSON(),c);if(c.endsWith(".stackprof.json"))return console.log("Importing as stackprof profile"),v((0,e.importFromStackprof)(C.parseAsJSON()));if(c.endsWith(".instruments.txt"))return console.log("Importing as Instruments.app deep copy"),v((0,o.importFromInstrumentsDeepCopy)(C));if(c.endsWith(".linux-perf.txt"))return console.log("Importing as output of linux perf script"),(0,l.importFromLinuxPerf)(C);if(c.endsWith(".collapsedstack.txt"))return console.log("Importing as collapsed stack format"),v((0,i.importFromBGFlameGraph)(C));if(c.endsWith(".v8log.json"))return console.log("Importing as --prof-process v8 log"),v((0,s.importFromV8ProfLog)(C.parseAsJSON()));if(c.endsWith(".heapprofile"))return console.log("Importing as Chrome Heap Profile"),v((0,u.importFromChromeHeapProfile)(C.parseAsJSON()));if(c.endsWith("-recording.json"))return console.log("Importing as Safari profile"),v((0,p.importFromSafari)(C.parseAsJSON()));if(c.startsWith("callgrind."))return console.log("Importing as Callgrind profile"),(0,g.importFromCallgrind)(C,c);let I;try{I=C.parseAsJSON()}catch(x){}if(I){if("https://www.speedscope.app/file-format-schema.json"===I.$schema)return console.log("Importing as speedscope json file"),(0,n.importSpeedscopeProfiles)(I);if(I.systemHost&&"Firefox"==I.systemHost.name)return console.log("Importing as Firefox profile"),v((0,t.importFromFirefox)(I));if((0,r.isChromeTimeline)(I))return console.log("Importing as Chrome Timeline"),(0,r.importFromChromeTimeline)(I,c);if((0,r.isChromeTimelineObject)(I))return console.log("Importing as Chrome Timeline Object"),(0,r.importFromChromeTimeline)(I.traceEvents,c);if("nodes"in I&&"samples"in I&&"timeDeltas"in I)return console.log("Importing as Chrome CPU Profile"),v((0,r.importFromChromeCPUProfile)(I));if((0,d.isTraceEventFormatted)(I))return console.log("Importing as Trace Event Format profile"),(0,d.importTraceEvents)(I);if("head"in I&&"samples"in I&&"timestamps"in I)return console.log("Importing as Chrome CPU Profile (old format)"),v((0,r.importFromOldV8CPUProfile)(I));if("mode"in I&&"frames"in I&&"raw_timestamp_deltas"in I)return console.log("Importing as stackprof profile"),v((0,e.importFromStackprof)(I));if("code"in I&&"functions"in I&&"ticks"in I)return console.log("Importing as --prof-process v8 log"),v((0,s.importFromV8ProfLog)(I));if("head"in I&&"selfSize"in I.head)return console.log("Importing as Chrome Heap Profile"),v((0,u.importFromChromeHeapProfile)(I));if("rts_arguments"in I&&"initial_capabilities"in I)return console.log("Importing as Haskell GHC JSON Profile"),(0,m.importFromHaskell)(I);if("recording"in I&&"sampleStackTraces"in I.recording)return console.log("Importing as Safari profile"),v((0,p.importFromSafari)(I))}else{if(/^# callgrind format/.exec(C.firstChunk())||/^events:/m.exec(C.firstChunk())&&/^fn=/m.exec(C.firstChunk()))return console.log("Importing as Callgrind profile"),(0,g.importFromCallgrind)(C,c);if(/^[\w \t\(\)]*\tSymbol Name/.exec(C.firstChunk()))return console.log("Importing as Instruments.app deep copy"),v((0,o.importFromInstrumentsDeepCopy)(C));if(/^(Stack_|Script_|Obj_)\S+ log opened \(PC\)\n/.exec(C.firstChunk()))return console.log("Importing as Papyrus profile"),v((0,h.importFromPapyrus)(C));const r=(0,l.importFromLinuxPerf)(C);if(r)return console.log("Importing from linux perf script output"),r;const e=(0,i.importFromBGFlameGraph)(C);if(e)return console.log("Importing as collapsed stack format"),v(e)}return null})}function T(r){return F(this,void 0,void 0,function*(){return(0,o.importFromInstrumentsTrace)(r)})} -},{"./chrome":"kWV1","./stackprof":"I37H","./instruments":"G28U","./bg-flamegraph":"flbo","./firefox":"uNW1","../lib/file-format":"Xzb6","./v8proflog":"QV03","./linux-tools-perf":"f2sa","./haskell":"jm73","./safari":"jP3w","./utils":"QTYz","./pprof":"VmHy","../lib/utils":"ucYa","./v8heapalloc":"bNW7","./trace-event":"KFvE","./callgrind":"TZYa","./papyrus":"duFC"}]},{},[], null) -//# sourceMappingURL=import.bcbb2033.js.map \ No newline at end of file +parcelRequire = (function (e, r, t, n) { + var i, + o = 'function' == typeof parcelRequire && parcelRequire, + u = 'function' == typeof require && require + function f(t, n) { + if (!r[t]) { + if (!e[t]) { + var i = 'function' == typeof parcelRequire && parcelRequire + if (!n && i) return i(t, !0) + if (o) return o(t, !0) + if (u && 'string' == typeof t) return u(t) + var c = new Error("Cannot find module '" + t + "'") + throw ((c.code = 'MODULE_NOT_FOUND'), c) + } + ;(p.resolve = function (r) { + return e[t][1][r] || r + }), + (p.cache = {}) + var l = (r[t] = new f.Module(t)) + e[t][0].call(l.exports, p, l, l.exports, this) + } + return r[t].exports + function p(e) { + return f(p.resolve(e)) + } + } + ;(f.isParcelRequire = !0), + (f.Module = function (e) { + ;(this.id = e), (this.bundle = f), (this.exports = {}) + }), + (f.modules = e), + (f.cache = r), + (f.parent = o), + (f.register = function (r, t) { + e[r] = [ + function (e, r) { + r.exports = t + }, + {}, + ] + }) + for (var c = 0; c < t.length; c++) + try { + f(t[c]) + } catch (e) { + i || (i = e) + } + if (t.length) { + var l = f(t[t.length - 1]) + 'object' == typeof exports && 'undefined' != typeof module + ? (module.exports = l) + : 'function' == typeof define && define.amd + ? define(function () { + return l + }) + : n && (this[n] = l) + } + if (((parcelRequire = f), i)) throw i + return f +})( + { + y1V0: [ + function (require, module, exports) { + 'use strict' + function e(e) { + const t = [] + return ( + (function e(r) { + t.push({ + id: r.id, + callFrame: { + columnNumber: 0, + functionName: r.functionName, + lineNumber: r.lineNumber, + scriptId: r.scriptId, + url: r.url, + }, + hitCount: r.hitCount, + children: r.children.map((e) => e.id), + }), + r.children.forEach(e) + })(e), + t + ) + } + function t(e, t) { + return e.map((r, n) => { + return r - (0 === n ? 1e6 * t : e[n - 1]) + }) + } + function r(r) { + return { + samples: r.samples, + startTime: 1e6 * r.startTime, + endTime: 1e6 * r.endTime, + nodes: e(r.head), + timeDeltas: t(r.timestamps, r.startTime), + } + } + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.chromeTreeToNodes = r) + }, + {}, + ], + kWV1: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.isChromeTimeline = i), + (exports.isChromeTimelineObject = o), + (exports.importFromChromeTimeline = l), + (exports.importFromChromeCPUProfile = c), + (exports.importFromOldV8CPUProfile = f) + var e = require('../lib/profile'), + t = require('../lib/utils'), + n = require('../lib/value-formatters'), + r = require('./v8cpuFormatter') + function i(e) { + if (!Array.isArray(e)) return !1 + if (e.length < 1) return !1 + const t = e[0] + return ( + 'pid' in t && + 'tid' in t && + 'ph' in t && + 'cat' in t && + !!e.find((e) => 'CpuProfile' === e.name || 'Profile' === e.name || 'ProfileChunk' === e.name) + ) + } + function o(e) { + return 'traceEvents' in e && i(e.traceEvents) + } + function l(e, n) { + const r = new Map(), + i = new Map(), + o = new Map() + ;(0, t.sortBy)(e, (e) => e.ts) + for (let t of e) { + if ('CpuProfile' === t.name) { + const e = `${t.pid}:${t.tid}`, + n = t.id || e + r.set(n, t.args.data.cpuProfile), i.set(n, e) + } + if ('Profile' === t.name) { + const e = `${t.pid}:${t.tid}` + r.set( + t.id || e, + Object.assign({startTime: 0, endTime: 0, nodes: [], samples: [], timeDeltas: []}, t.args.data), + ), + t.id && i.set(t.id, `${t.pid}:${t.tid}`) + } + if (('thread_name' === t.name && o.set(`${t.pid}:${t.tid}`, t.args.name), 'ProfileChunk' === t.name)) { + const e = `${t.pid}:${t.tid}`, + n = r.get(t.id || e) + if (n) { + const e = t.args.data + e.cpuProfile && + (e.cpuProfile.nodes && (n.nodes = n.nodes.concat(e.cpuProfile.nodes)), + e.cpuProfile.samples && (n.samples = n.samples.concat(e.cpuProfile.samples))), + e.timeDeltas && (n.timeDeltas = n.timeDeltas.concat(e.timeDeltas)), + null != e.startTime && (n.startTime = e.startTime), + null != e.endTime && (n.endTime = e.endTime) + } else console.warn(`Ignoring ProfileChunk for undeclared Profile with id ${t.id || e}`) + } + } + if (r.size > 0) { + const e = [] + let l = 0 + return ( + (0, t.itForEach)(r.keys(), (t) => { + let s = null, + a = i.get(t) + a && (s = o.get(a) || null) + const m = c(r.get(t)) + s && r.size > 1 + ? (m.setName(`${n} - ${s}`), 'CrRendererMain' === s && (l = e.length)) + : m.setName(`${n}`), + e.push(m) + }), + {name: n, indexToView: l, profiles: e} + ) + } + throw new Error('Could not find CPU profile in Timeline') + } + const s = new Map() + function a(e) { + return (0, t.getOrInsert)(s, e, (e) => { + const t = e.url + let n = e.lineNumber + null != n && n++ + let r = e.columnNumber + null != r && r++ + const i = e.functionName || (t ? `(anonymous ${t.split('/').pop()}:${n})` : '(anonymous)') + return {key: `${i}:${t}:${n}:${r}`, name: i, file: t, line: n, col: r} + }) + } + function m(e) { + const {functionName: t, url: n} = e + return 'native dummy.js' === n || '(root)' === t || '(idle)' === t + } + function u(e) { + return '(garbage collector)' === e || '(program)' === e + } + function c(r) { + const i = new e.CallTreeProfileBuilder(r.endTime - r.startTime), + o = new Map() + for (let e of r.nodes) o.set(e.id, e) + for (let e of r.nodes) + if (('number' == typeof e.parent && (e.parent = o.get(e.parent)), e.children)) + for (let t of e.children) { + const n = o.get(t) + n && (n.parent = e) + } + const l = [], + s = [] + let c = r.timeDeltas[0], + f = c, + p = NaN + for (let e = 0; e < r.samples.length; e++) { + const t = r.samples[e] + if ((t != p && (l.push(t), c < f ? s.push(f) : (s.push(c), (f = c))), e === r.samples.length - 1)) + isNaN(p) || (l.push(p), c < f ? s.push(f) : (s.push(c), (f = c))) + else { + ;(c += r.timeDeltas[e + 1]), (p = t) + } + } + let d = [] + for (let e = 0; e < l.length; e++) { + const n = s[e], + r = l[e] + let c = o.get(r) + if (!c) continue + let f = null + for ( + f = c; + f && -1 === d.indexOf(f); + f = u(f.callFrame.functionName) ? (0, t.lastOf)(d) : f.parent || null + ); + for (; d.length > 0 && (0, t.lastOf)(d) != f; ) { + const e = a(d.pop().callFrame) + i.leaveFrame(e, n) + } + const p = [] + for ( + let e = c; + e && e != f && !m(e.callFrame); + e = u(e.callFrame.functionName) ? (0, t.lastOf)(d) : e.parent || null + ) + p.push(e) + p.reverse() + for (let e of p) i.enterFrame(a(e.callFrame), n) + d = d.concat(p) + } + for (let e = d.length - 1; e >= 0; e--) i.leaveFrame(a(d[e].callFrame), (0, t.lastOf)(s)) + return i.setValueFormatter(new n.TimeFormatter('microseconds')), i.build() + } + function f(e) { + return c((0, r.chromeTreeToNodes)(e)) + } + }, + {'../lib/profile': 'YG8z', '../lib/utils': 'ucYa', '../lib/value-formatters': 'LsM4', './v8cpuFormatter': 'y1V0'}, + ], + I37H: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromStackprof = a) + var e = require('../lib/profile'), + t = require('../lib/value-formatters') + function a(a) { + const {frames: r, mode: l, raw: o, raw_timestamp_deltas: n, interval: i} = a, + s = new e.StackListProfileBuilder() + s.setValueFormatter(new t.TimeFormatter('microseconds')) + let c = 0, + m = [] + for (let e = 0; e < o.length; ) { + const a = o[e++] + let p = [] + for (let t = 0; t < a; t++) { + const t = o[e++] + let a = r[t].name + null == a && (a = '(unknown)') + const l = Object.assign(Object.assign({key: t}, r[t]), {name: a}) + p.push(l) + } + 1 === p.length && '(garbage collection)' === p[0].name && (p = m.concat(p)) + const u = o[e++] + switch (l) { + case 'object': + s.appendSampleWithWeight(p, u), s.setValueFormatter(new t.RawValueFormatter()) + break + case 'cpu': + s.appendSampleWithWeight(p, u * i) + break + default: + let e = 0 + for (let t = 0; t < u; t++) e += n[c++] + s.appendSampleWithWeight(p, e) + } + m = p + } + return s.build() + } + }, + {'../lib/profile': 'YG8z', '../lib/value-formatters': 'LsM4'}, + ], + tbG5: [ + function (require, module, exports) { + 'use strict' + var r = + 'undefined' != typeof Uint8Array && 'undefined' != typeof Uint16Array && 'undefined' != typeof Int32Array + function t(r, t) { + return Object.prototype.hasOwnProperty.call(r, t) + } + ;(exports.assign = function (r) { + for (var e = Array.prototype.slice.call(arguments, 1); e.length; ) { + var n = e.shift() + if (n) { + if ('object' != typeof n) throw new TypeError(n + 'must be non-object') + for (var a in n) t(n, a) && (r[a] = n[a]) + } + } + return r + }), + (exports.shrinkBuf = function (r, t) { + return r.length === t ? r : r.subarray ? r.subarray(0, t) : ((r.length = t), r) + }) + var e = { + arraySet: function (r, t, e, n, a) { + if (t.subarray && r.subarray) r.set(t.subarray(e, e + n), a) + else for (var o = 0; o < n; o++) r[a + o] = t[e + o] + }, + flattenChunks: function (r) { + var t, e, n, a, o, s + for (n = 0, t = 0, e = r.length; t < e; t++) n += r[t].length + for (s = new Uint8Array(n), a = 0, t = 0, e = r.length; t < e; t++) + (o = r[t]), s.set(o, a), (a += o.length) + return s + }, + }, + n = { + arraySet: function (r, t, e, n, a) { + for (var o = 0; o < n; o++) r[a + o] = t[e + o] + }, + flattenChunks: function (r) { + return [].concat.apply([], r) + }, + } + ;(exports.setTyped = function (r) { + r + ? ((exports.Buf8 = Uint8Array), + (exports.Buf16 = Uint16Array), + (exports.Buf32 = Int32Array), + exports.assign(exports, e)) + : ((exports.Buf8 = Array), (exports.Buf16 = Array), (exports.Buf32 = Array), exports.assign(exports, n)) + }), + exports.setTyped(r) + }, + {}, + ], + sRJQ: [ + function (require, module, exports) { + 'use strict' + var e = require('../utils/common'), + t = 4, + n = 0, + _ = 1, + r = 2 + function a(e) { + for (var t = e.length; --t >= 0; ) e[t] = 0 + } + var i = 0, + l = 1, + d = 2, + f = 3, + o = 258, + b = 29, + s = 256, + u = s + 1 + b, + c = 30, + p = 19, + h = 2 * u + 1, + v = 15, + y = 16, + x = 7, + g = 256, + m = 16, + w = 17, + A = 18, + k = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], + q = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], + z = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], + S = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], + j = 512, + B = new Array(2 * (u + 2)) + a(B) + var C = new Array(2 * c) + a(C) + var D = new Array(j) + a(D) + var E = new Array(o - f + 1) + a(E) + var F = new Array(b) + a(F) + var G, + H, + I, + J = new Array(c) + function K(e, t, n, _, r) { + ;(this.static_tree = e), + (this.extra_bits = t), + (this.extra_base = n), + (this.elems = _), + (this.max_length = r), + (this.has_stree = e && e.length) + } + function L(e, t) { + ;(this.dyn_tree = e), (this.max_code = 0), (this.stat_desc = t) + } + function M(e) { + return e < 256 ? D[e] : D[256 + (e >>> 7)] + } + function N(e, t) { + ;(e.pending_buf[e.pending++] = 255 & t), (e.pending_buf[e.pending++] = (t >>> 8) & 255) + } + function O(e, t, n) { + e.bi_valid > y - n + ? ((e.bi_buf |= (t << e.bi_valid) & 65535), + N(e, e.bi_buf), + (e.bi_buf = t >> (y - e.bi_valid)), + (e.bi_valid += n - y)) + : ((e.bi_buf |= (t << e.bi_valid) & 65535), (e.bi_valid += n)) + } + function P(e, t, n) { + O(e, n[2 * t], n[2 * t + 1]) + } + function Q(e, t) { + var n = 0 + do { + ;(n |= 1 & e), (e >>>= 1), (n <<= 1) + } while (--t > 0) + return n >>> 1 + } + function R(e) { + 16 === e.bi_valid + ? (N(e, e.bi_buf), (e.bi_buf = 0), (e.bi_valid = 0)) + : e.bi_valid >= 8 && ((e.pending_buf[e.pending++] = 255 & e.bi_buf), (e.bi_buf >>= 8), (e.bi_valid -= 8)) + } + function T(e, t) { + var n, + _, + r, + a, + i, + l, + d = t.dyn_tree, + f = t.max_code, + o = t.stat_desc.static_tree, + b = t.stat_desc.has_stree, + s = t.stat_desc.extra_bits, + u = t.stat_desc.extra_base, + c = t.stat_desc.max_length, + p = 0 + for (a = 0; a <= v; a++) e.bl_count[a] = 0 + for (d[2 * e.heap[e.heap_max] + 1] = 0, n = e.heap_max + 1; n < h; n++) + (a = d[2 * d[2 * (_ = e.heap[n]) + 1] + 1] + 1) > c && ((a = c), p++), + (d[2 * _ + 1] = a), + _ > f || + (e.bl_count[a]++, + (i = 0), + _ >= u && (i = s[_ - u]), + (l = d[2 * _]), + (e.opt_len += l * (a + i)), + b && (e.static_len += l * (o[2 * _ + 1] + i))) + if (0 !== p) { + do { + for (a = c - 1; 0 === e.bl_count[a]; ) a-- + e.bl_count[a]--, (e.bl_count[a + 1] += 2), e.bl_count[c]--, (p -= 2) + } while (p > 0) + for (a = c; 0 !== a; a--) + for (_ = e.bl_count[a]; 0 !== _; ) + (r = e.heap[--n]) > f || + (d[2 * r + 1] !== a && ((e.opt_len += (a - d[2 * r + 1]) * d[2 * r]), (d[2 * r + 1] = a)), _--) + } + } + function U(e, t, n) { + var _, + r, + a = new Array(v + 1), + i = 0 + for (_ = 1; _ <= v; _++) a[_] = i = (i + n[_ - 1]) << 1 + for (r = 0; r <= t; r++) { + var l = e[2 * r + 1] + 0 !== l && (e[2 * r] = Q(a[l]++, l)) + } + } + function V() { + var e, + t, + n, + _, + r, + a = new Array(v + 1) + for (n = 0, _ = 0; _ < b - 1; _++) for (F[_] = n, e = 0; e < 1 << k[_]; e++) E[n++] = _ + for (E[n - 1] = _, r = 0, _ = 0; _ < 16; _++) for (J[_] = r, e = 0; e < 1 << q[_]; e++) D[r++] = _ + for (r >>= 7; _ < c; _++) for (J[_] = r << 7, e = 0; e < 1 << (q[_] - 7); e++) D[256 + r++] = _ + for (t = 0; t <= v; t++) a[t] = 0 + for (e = 0; e <= 143; ) (B[2 * e + 1] = 8), e++, a[8]++ + for (; e <= 255; ) (B[2 * e + 1] = 9), e++, a[9]++ + for (; e <= 279; ) (B[2 * e + 1] = 7), e++, a[7]++ + for (; e <= 287; ) (B[2 * e + 1] = 8), e++, a[8]++ + for (U(B, u + 1, a), e = 0; e < c; e++) (C[2 * e + 1] = 5), (C[2 * e] = Q(e, 5)) + ;(G = new K(B, k, s + 1, u, v)), (H = new K(C, q, 0, c, v)), (I = new K(new Array(0), z, 0, p, x)) + } + function W(e) { + var t + for (t = 0; t < u; t++) e.dyn_ltree[2 * t] = 0 + for (t = 0; t < c; t++) e.dyn_dtree[2 * t] = 0 + for (t = 0; t < p; t++) e.bl_tree[2 * t] = 0 + ;(e.dyn_ltree[2 * g] = 1), (e.opt_len = e.static_len = 0), (e.last_lit = e.matches = 0) + } + function X(e) { + e.bi_valid > 8 ? N(e, e.bi_buf) : e.bi_valid > 0 && (e.pending_buf[e.pending++] = e.bi_buf), + (e.bi_buf = 0), + (e.bi_valid = 0) + } + function Y(t, n, _, r) { + X(t), r && (N(t, _), N(t, ~_)), e.arraySet(t.pending_buf, t.window, n, _, t.pending), (t.pending += _) + } + function Z(e, t, n, _) { + var r = 2 * t, + a = 2 * n + return e[r] < e[a] || (e[r] === e[a] && _[t] <= _[n]) + } + function $(e, t, n) { + for ( + var _ = e.heap[n], r = n << 1; + r <= e.heap_len && + (r < e.heap_len && Z(t, e.heap[r + 1], e.heap[r], e.depth) && r++, !Z(t, _, e.heap[r], e.depth)); + + ) + (e.heap[n] = e.heap[r]), (n = r), (r <<= 1) + e.heap[n] = _ + } + function ee(e, t, n) { + var _, + r, + a, + i, + l = 0 + if (0 !== e.last_lit) + do { + ;(_ = (e.pending_buf[e.d_buf + 2 * l] << 8) | e.pending_buf[e.d_buf + 2 * l + 1]), + (r = e.pending_buf[e.l_buf + l]), + l++, + 0 === _ + ? P(e, r, t) + : (P(e, (a = E[r]) + s + 1, t), + 0 !== (i = k[a]) && O(e, (r -= F[a]), i), + P(e, (a = M(--_)), n), + 0 !== (i = q[a]) && O(e, (_ -= J[a]), i)) + } while (l < e.last_lit) + P(e, g, t) + } + function te(e, t) { + var n, + _, + r, + a = t.dyn_tree, + i = t.stat_desc.static_tree, + l = t.stat_desc.has_stree, + d = t.stat_desc.elems, + f = -1 + for (e.heap_len = 0, e.heap_max = h, n = 0; n < d; n++) + 0 !== a[2 * n] ? ((e.heap[++e.heap_len] = f = n), (e.depth[n] = 0)) : (a[2 * n + 1] = 0) + for (; e.heap_len < 2; ) + (a[2 * (r = e.heap[++e.heap_len] = f < 2 ? ++f : 0)] = 1), + (e.depth[r] = 0), + e.opt_len--, + l && (e.static_len -= i[2 * r + 1]) + for (t.max_code = f, n = e.heap_len >> 1; n >= 1; n--) $(e, a, n) + r = d + do { + ;(n = e.heap[1]), + (e.heap[1] = e.heap[e.heap_len--]), + $(e, a, 1), + (_ = e.heap[1]), + (e.heap[--e.heap_max] = n), + (e.heap[--e.heap_max] = _), + (a[2 * r] = a[2 * n] + a[2 * _]), + (e.depth[r] = (e.depth[n] >= e.depth[_] ? e.depth[n] : e.depth[_]) + 1), + (a[2 * n + 1] = a[2 * _ + 1] = r), + (e.heap[1] = r++), + $(e, a, 1) + } while (e.heap_len >= 2) + ;(e.heap[--e.heap_max] = e.heap[1]), T(e, t), U(a, f, e.bl_count) + } + function ne(e, t, n) { + var _, + r, + a = -1, + i = t[1], + l = 0, + d = 7, + f = 4 + for (0 === i && ((d = 138), (f = 3)), t[2 * (n + 1) + 1] = 65535, _ = 0; _ <= n; _++) + (r = i), + (i = t[2 * (_ + 1) + 1]), + (++l < d && r === i) || + (l < f + ? (e.bl_tree[2 * r] += l) + : 0 !== r + ? (r !== a && e.bl_tree[2 * r]++, e.bl_tree[2 * m]++) + : l <= 10 + ? e.bl_tree[2 * w]++ + : e.bl_tree[2 * A]++, + (l = 0), + (a = r), + 0 === i ? ((d = 138), (f = 3)) : r === i ? ((d = 6), (f = 3)) : ((d = 7), (f = 4))) + } + function _e(e, t, n) { + var _, + r, + a = -1, + i = t[1], + l = 0, + d = 7, + f = 4 + for (0 === i && ((d = 138), (f = 3)), _ = 0; _ <= n; _++) + if (((r = i), (i = t[2 * (_ + 1) + 1]), !(++l < d && r === i))) { + if (l < f) + do { + P(e, r, e.bl_tree) + } while (0 != --l) + else + 0 !== r + ? (r !== a && (P(e, r, e.bl_tree), l--), P(e, m, e.bl_tree), O(e, l - 3, 2)) + : l <= 10 + ? (P(e, w, e.bl_tree), O(e, l - 3, 3)) + : (P(e, A, e.bl_tree), O(e, l - 11, 7)) + ;(l = 0), (a = r), 0 === i ? ((d = 138), (f = 3)) : r === i ? ((d = 6), (f = 3)) : ((d = 7), (f = 4)) + } + } + function re(e) { + var t + for ( + ne(e, e.dyn_ltree, e.l_desc.max_code), ne(e, e.dyn_dtree, e.d_desc.max_code), te(e, e.bl_desc), t = p - 1; + t >= 3 && 0 === e.bl_tree[2 * S[t] + 1]; + t-- + ); + return (e.opt_len += 3 * (t + 1) + 5 + 5 + 4), t + } + function ae(e, t, n, _) { + var r + for (O(e, t - 257, 5), O(e, n - 1, 5), O(e, _ - 4, 4), r = 0; r < _; r++) O(e, e.bl_tree[2 * S[r] + 1], 3) + _e(e, e.dyn_ltree, t - 1), _e(e, e.dyn_dtree, n - 1) + } + function ie(e) { + var t, + r = 4093624447 + for (t = 0; t <= 31; t++, r >>>= 1) if (1 & r && 0 !== e.dyn_ltree[2 * t]) return n + if (0 !== e.dyn_ltree[18] || 0 !== e.dyn_ltree[20] || 0 !== e.dyn_ltree[26]) return _ + for (t = 32; t < s; t++) if (0 !== e.dyn_ltree[2 * t]) return _ + return n + } + a(J) + var le = !1 + function de(e) { + le || (V(), (le = !0)), + (e.l_desc = new L(e.dyn_ltree, G)), + (e.d_desc = new L(e.dyn_dtree, H)), + (e.bl_desc = new L(e.bl_tree, I)), + (e.bi_buf = 0), + (e.bi_valid = 0), + W(e) + } + function fe(e, t, n, _) { + O(e, (i << 1) + (_ ? 1 : 0), 3), Y(e, t, n, !0) + } + function oe(e) { + O(e, l << 1, 3), P(e, g, B), R(e) + } + function be(e, n, _, a) { + var i, + f, + o = 0 + e.level > 0 + ? (e.strm.data_type === r && (e.strm.data_type = ie(e)), + te(e, e.l_desc), + te(e, e.d_desc), + (o = re(e)), + (i = (e.opt_len + 3 + 7) >>> 3), + (f = (e.static_len + 3 + 7) >>> 3) <= i && (i = f)) + : (i = f = _ + 5), + _ + 4 <= i && -1 !== n + ? fe(e, n, _, a) + : e.strategy === t || f === i + ? (O(e, (l << 1) + (a ? 1 : 0), 3), ee(e, B, C)) + : (O(e, (d << 1) + (a ? 1 : 0), 3), + ae(e, e.l_desc.max_code + 1, e.d_desc.max_code + 1, o + 1), + ee(e, e.dyn_ltree, e.dyn_dtree)), + W(e), + a && X(e) + } + function se(e, t, n) { + return ( + (e.pending_buf[e.d_buf + 2 * e.last_lit] = (t >>> 8) & 255), + (e.pending_buf[e.d_buf + 2 * e.last_lit + 1] = 255 & t), + (e.pending_buf[e.l_buf + e.last_lit] = 255 & n), + e.last_lit++, + 0 === t + ? e.dyn_ltree[2 * n]++ + : (e.matches++, t--, e.dyn_ltree[2 * (E[n] + s + 1)]++, e.dyn_dtree[2 * M(t)]++), + e.last_lit === e.lit_bufsize - 1 + ) + } + ;(exports._tr_init = de), + (exports._tr_stored_block = fe), + (exports._tr_flush_block = be), + (exports._tr_tally = se), + (exports._tr_align = oe) + }, + {'../utils/common': 'tbG5'}, + ], + uxo6: [ + function (require, module, exports) { + 'use strict' + function e(e, r, o, t) { + for (var u = (65535 & e) | 0, i = ((e >>> 16) & 65535) | 0, n = 0; 0 !== o; ) { + o -= n = o > 2e3 ? 2e3 : o + do { + i = (i + (u = (u + r[t++]) | 0)) | 0 + } while (--n) + ;(u %= 65521), (i %= 65521) + } + return u | (i << 16) | 0 + } + module.exports = e + }, + {}, + ], + X4kj: [ + function (require, module, exports) { + 'use strict' + function r() { + for (var r, o = [], t = 0; t < 256; t++) { + r = t + for (var n = 0; n < 8; n++) r = 1 & r ? 3988292384 ^ (r >>> 1) : r >>> 1 + o[t] = r + } + return o + } + var o = r() + function t(r, t, n, u) { + var a = o, + e = u + n + r ^= -1 + for (var f = u; f < e; f++) r = (r >>> 8) ^ a[255 & (r ^ t[f])] + return -1 ^ r + } + module.exports = t + }, + {}, + ], + gMAY: [ + function (require, module, exports) { + 'use strict' + module.exports = { + 2: 'need dictionary', + 1: 'stream end', + 0: '', + '-1': 'file error', + '-2': 'stream error', + '-3': 'data error', + '-4': 'insufficient memory', + '-5': 'buffer error', + '-6': 'incompatible version', + } + }, + {}, + ], + BLBk: [ + function (require, module, exports) { + 'use strict' + var t, + a = require('../utils/common'), + e = require('./trees'), + s = require('./adler32'), + i = require('./crc32'), + r = require('./messages'), + n = 0, + h = 1, + l = 3, + _ = 4, + d = 5, + o = 0, + u = 1, + g = -2, + f = -3, + c = -5, + p = -1, + m = 1, + w = 2, + v = 3, + k = 4, + z = 0, + b = 2, + x = 8, + y = 9, + B = 15, + S = 8, + q = 29, + I = 256, + A = I + 1 + q, + C = 30, + R = 19, + j = 2 * A + 1, + D = 15, + E = 3, + H = 258, + K = H + E + 1, + N = 32, + F = 42, + G = 69, + J = 73, + L = 91, + M = 103, + O = 113, + P = 666, + Q = 1, + T = 2, + U = 3, + V = 4, + W = 3 + function X(t, a) { + return (t.msg = r[a]), a + } + function Y(t) { + return (t << 1) - (t > 4 ? 9 : 0) + } + function Z(t) { + for (var a = t.length; --a >= 0; ) t[a] = 0 + } + function $(t) { + var e = t.state, + s = e.pending + s > t.avail_out && (s = t.avail_out), + 0 !== s && + (a.arraySet(t.output, e.pending_buf, e.pending_out, s, t.next_out), + (t.next_out += s), + (e.pending_out += s), + (t.total_out += s), + (t.avail_out -= s), + (e.pending -= s), + 0 === e.pending && (e.pending_out = 0)) + } + function tt(t, a) { + e._tr_flush_block(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, a), + (t.block_start = t.strstart), + $(t.strm) + } + function at(t, a) { + t.pending_buf[t.pending++] = a + } + function et(t, a) { + ;(t.pending_buf[t.pending++] = (a >>> 8) & 255), (t.pending_buf[t.pending++] = 255 & a) + } + function st(t, e, r, n) { + var h = t.avail_in + return ( + h > n && (h = n), + 0 === h + ? 0 + : ((t.avail_in -= h), + a.arraySet(e, t.input, t.next_in, h, r), + 1 === t.state.wrap + ? (t.adler = s(t.adler, e, h, r)) + : 2 === t.state.wrap && (t.adler = i(t.adler, e, h, r)), + (t.next_in += h), + (t.total_in += h), + h) + ) + } + function it(t, a) { + var e, + s, + i = t.max_chain_length, + r = t.strstart, + n = t.prev_length, + h = t.nice_match, + l = t.strstart > t.w_size - K ? t.strstart - (t.w_size - K) : 0, + _ = t.window, + d = t.w_mask, + o = t.prev, + u = t.strstart + H, + g = _[r + n - 1], + f = _[r + n] + t.prev_length >= t.good_match && (i >>= 2), h > t.lookahead && (h = t.lookahead) + do { + if (_[(e = a) + n] === f && _[e + n - 1] === g && _[e] === _[r] && _[++e] === _[r + 1]) { + ;(r += 2), e++ + do {} while ( + _[++r] === _[++e] && + _[++r] === _[++e] && + _[++r] === _[++e] && + _[++r] === _[++e] && + _[++r] === _[++e] && + _[++r] === _[++e] && + _[++r] === _[++e] && + _[++r] === _[++e] && + r < u + ) + if (((s = H - (u - r)), (r = u - H), s > n)) { + if (((t.match_start = a), (n = s), s >= h)) break + ;(g = _[r + n - 1]), (f = _[r + n]) + } + } + } while ((a = o[a & d]) > l && 0 != --i) + return n <= t.lookahead ? n : t.lookahead + } + function rt(t) { + var e, + s, + i, + r, + n, + h = t.w_size + do { + if (((r = t.window_size - t.lookahead - t.strstart), t.strstart >= h + (h - K))) { + a.arraySet(t.window, t.window, h, h, 0), + (t.match_start -= h), + (t.strstart -= h), + (t.block_start -= h), + (e = s = t.hash_size) + do { + ;(i = t.head[--e]), (t.head[e] = i >= h ? i - h : 0) + } while (--s) + e = s = h + do { + ;(i = t.prev[--e]), (t.prev[e] = i >= h ? i - h : 0) + } while (--s) + r += h + } + if (0 === t.strm.avail_in) break + if ( + ((s = st(t.strm, t.window, t.strstart + t.lookahead, r)), (t.lookahead += s), t.lookahead + t.insert >= E) + ) + for ( + n = t.strstart - t.insert, + t.ins_h = t.window[n], + t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[n + 1]) & t.hash_mask; + t.insert && + ((t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[n + E - 1]) & t.hash_mask), + (t.prev[n & t.w_mask] = t.head[t.ins_h]), + (t.head[t.ins_h] = n), + n++, + t.insert--, + !(t.lookahead + t.insert < E)); + + ); + } while (t.lookahead < K && 0 !== t.strm.avail_in) + } + function nt(t, a) { + var e = 65535 + for (e > t.pending_buf_size - 5 && (e = t.pending_buf_size - 5); ; ) { + if (t.lookahead <= 1) { + if ((rt(t), 0 === t.lookahead && a === n)) return Q + if (0 === t.lookahead) break + } + ;(t.strstart += t.lookahead), (t.lookahead = 0) + var s = t.block_start + e + if ( + (0 === t.strstart || t.strstart >= s) && + ((t.lookahead = t.strstart - s), (t.strstart = s), tt(t, !1), 0 === t.strm.avail_out) + ) + return Q + if (t.strstart - t.block_start >= t.w_size - K && (tt(t, !1), 0 === t.strm.avail_out)) return Q + } + return ( + (t.insert = 0), + a === _ + ? (tt(t, !0), 0 === t.strm.avail_out ? U : V) + : (t.strstart > t.block_start && (tt(t, !1), t.strm.avail_out), Q) + ) + } + function ht(t, a) { + for (var s, i; ; ) { + if (t.lookahead < K) { + if ((rt(t), t.lookahead < K && a === n)) return Q + if (0 === t.lookahead) break + } + if ( + ((s = 0), + t.lookahead >= E && + ((t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + E - 1]) & t.hash_mask), + (s = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h]), + (t.head[t.ins_h] = t.strstart)), + 0 !== s && t.strstart - s <= t.w_size - K && (t.match_length = it(t, s)), + t.match_length >= E) + ) + if ( + ((i = e._tr_tally(t, t.strstart - t.match_start, t.match_length - E)), + (t.lookahead -= t.match_length), + t.match_length <= t.max_lazy_match && t.lookahead >= E) + ) { + t.match_length-- + do { + t.strstart++, + (t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + E - 1]) & t.hash_mask), + (s = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h]), + (t.head[t.ins_h] = t.strstart) + } while (0 != --t.match_length) + t.strstart++ + } else + (t.strstart += t.match_length), + (t.match_length = 0), + (t.ins_h = t.window[t.strstart]), + (t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + 1]) & t.hash_mask) + else (i = e._tr_tally(t, 0, t.window[t.strstart])), t.lookahead--, t.strstart++ + if (i && (tt(t, !1), 0 === t.strm.avail_out)) return Q + } + return ( + (t.insert = t.strstart < E - 1 ? t.strstart : E - 1), + a === _ + ? (tt(t, !0), 0 === t.strm.avail_out ? U : V) + : t.last_lit && (tt(t, !1), 0 === t.strm.avail_out) + ? Q + : T + ) + } + function lt(t, a) { + for (var s, i, r; ; ) { + if (t.lookahead < K) { + if ((rt(t), t.lookahead < K && a === n)) return Q + if (0 === t.lookahead) break + } + if ( + ((s = 0), + t.lookahead >= E && + ((t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + E - 1]) & t.hash_mask), + (s = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h]), + (t.head[t.ins_h] = t.strstart)), + (t.prev_length = t.match_length), + (t.prev_match = t.match_start), + (t.match_length = E - 1), + 0 !== s && + t.prev_length < t.max_lazy_match && + t.strstart - s <= t.w_size - K && + ((t.match_length = it(t, s)), + t.match_length <= 5 && + (t.strategy === m || (t.match_length === E && t.strstart - t.match_start > 4096)) && + (t.match_length = E - 1)), + t.prev_length >= E && t.match_length <= t.prev_length) + ) { + ;(r = t.strstart + t.lookahead - E), + (i = e._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - E)), + (t.lookahead -= t.prev_length - 1), + (t.prev_length -= 2) + do { + ++t.strstart <= r && + ((t.ins_h = ((t.ins_h << t.hash_shift) ^ t.window[t.strstart + E - 1]) & t.hash_mask), + (s = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h]), + (t.head[t.ins_h] = t.strstart)) + } while (0 != --t.prev_length) + if ( + ((t.match_available = 0), + (t.match_length = E - 1), + t.strstart++, + i && (tt(t, !1), 0 === t.strm.avail_out)) + ) + return Q + } else if (t.match_available) { + if ( + ((i = e._tr_tally(t, 0, t.window[t.strstart - 1])) && tt(t, !1), + t.strstart++, + t.lookahead--, + 0 === t.strm.avail_out) + ) + return Q + } else (t.match_available = 1), t.strstart++, t.lookahead-- + } + return ( + t.match_available && ((i = e._tr_tally(t, 0, t.window[t.strstart - 1])), (t.match_available = 0)), + (t.insert = t.strstart < E - 1 ? t.strstart : E - 1), + a === _ + ? (tt(t, !0), 0 === t.strm.avail_out ? U : V) + : t.last_lit && (tt(t, !1), 0 === t.strm.avail_out) + ? Q + : T + ) + } + function _t(t, a) { + for (var s, i, r, h, l = t.window; ; ) { + if (t.lookahead <= H) { + if ((rt(t), t.lookahead <= H && a === n)) return Q + if (0 === t.lookahead) break + } + if ( + ((t.match_length = 0), + t.lookahead >= E && + t.strstart > 0 && + (i = l[(r = t.strstart - 1)]) === l[++r] && + i === l[++r] && + i === l[++r]) + ) { + h = t.strstart + H + do {} while ( + i === l[++r] && + i === l[++r] && + i === l[++r] && + i === l[++r] && + i === l[++r] && + i === l[++r] && + i === l[++r] && + i === l[++r] && + r < h + ) + ;(t.match_length = H - (h - r)), t.match_length > t.lookahead && (t.match_length = t.lookahead) + } + if ( + (t.match_length >= E + ? ((s = e._tr_tally(t, 1, t.match_length - E)), + (t.lookahead -= t.match_length), + (t.strstart += t.match_length), + (t.match_length = 0)) + : ((s = e._tr_tally(t, 0, t.window[t.strstart])), t.lookahead--, t.strstart++), + s && (tt(t, !1), 0 === t.strm.avail_out)) + ) + return Q + } + return ( + (t.insert = 0), + a === _ + ? (tt(t, !0), 0 === t.strm.avail_out ? U : V) + : t.last_lit && (tt(t, !1), 0 === t.strm.avail_out) + ? Q + : T + ) + } + function dt(t, a) { + for (var s; ; ) { + if (0 === t.lookahead && (rt(t), 0 === t.lookahead)) { + if (a === n) return Q + break + } + if ( + ((t.match_length = 0), + (s = e._tr_tally(t, 0, t.window[t.strstart])), + t.lookahead--, + t.strstart++, + s && (tt(t, !1), 0 === t.strm.avail_out)) + ) + return Q + } + return ( + (t.insert = 0), + a === _ + ? (tt(t, !0), 0 === t.strm.avail_out ? U : V) + : t.last_lit && (tt(t, !1), 0 === t.strm.avail_out) + ? Q + : T + ) + } + function ot(t, a, e, s, i) { + ;(this.good_length = t), (this.max_lazy = a), (this.nice_length = e), (this.max_chain = s), (this.func = i) + } + function ut(a) { + ;(a.window_size = 2 * a.w_size), + Z(a.head), + (a.max_lazy_match = t[a.level].max_lazy), + (a.good_match = t[a.level].good_length), + (a.nice_match = t[a.level].nice_length), + (a.max_chain_length = t[a.level].max_chain), + (a.strstart = 0), + (a.block_start = 0), + (a.lookahead = 0), + (a.insert = 0), + (a.match_length = a.prev_length = E - 1), + (a.match_available = 0), + (a.ins_h = 0) + } + function gt() { + ;(this.strm = null), + (this.status = 0), + (this.pending_buf = null), + (this.pending_buf_size = 0), + (this.pending_out = 0), + (this.pending = 0), + (this.wrap = 0), + (this.gzhead = null), + (this.gzindex = 0), + (this.method = x), + (this.last_flush = -1), + (this.w_size = 0), + (this.w_bits = 0), + (this.w_mask = 0), + (this.window = null), + (this.window_size = 0), + (this.prev = null), + (this.head = null), + (this.ins_h = 0), + (this.hash_size = 0), + (this.hash_bits = 0), + (this.hash_mask = 0), + (this.hash_shift = 0), + (this.block_start = 0), + (this.match_length = 0), + (this.prev_match = 0), + (this.match_available = 0), + (this.strstart = 0), + (this.match_start = 0), + (this.lookahead = 0), + (this.prev_length = 0), + (this.max_chain_length = 0), + (this.max_lazy_match = 0), + (this.level = 0), + (this.strategy = 0), + (this.good_match = 0), + (this.nice_match = 0), + (this.dyn_ltree = new a.Buf16(2 * j)), + (this.dyn_dtree = new a.Buf16(2 * (2 * C + 1))), + (this.bl_tree = new a.Buf16(2 * (2 * R + 1))), + Z(this.dyn_ltree), + Z(this.dyn_dtree), + Z(this.bl_tree), + (this.l_desc = null), + (this.d_desc = null), + (this.bl_desc = null), + (this.bl_count = new a.Buf16(D + 1)), + (this.heap = new a.Buf16(2 * A + 1)), + Z(this.heap), + (this.heap_len = 0), + (this.heap_max = 0), + (this.depth = new a.Buf16(2 * A + 1)), + Z(this.depth), + (this.l_buf = 0), + (this.lit_bufsize = 0), + (this.last_lit = 0), + (this.d_buf = 0), + (this.opt_len = 0), + (this.static_len = 0), + (this.matches = 0), + (this.insert = 0), + (this.bi_buf = 0), + (this.bi_valid = 0) + } + function ft(t) { + var a + return t && t.state + ? ((t.total_in = t.total_out = 0), + (t.data_type = b), + ((a = t.state).pending = 0), + (a.pending_out = 0), + a.wrap < 0 && (a.wrap = -a.wrap), + (a.status = a.wrap ? F : O), + (t.adler = 2 === a.wrap ? 0 : 1), + (a.last_flush = n), + e._tr_init(a), + o) + : X(t, g) + } + function ct(t) { + var a = ft(t) + return a === o && ut(t.state), a + } + function pt(t, a) { + return t && t.state ? (2 !== t.state.wrap ? g : ((t.state.gzhead = a), o)) : g + } + function mt(t, e, s, i, r, n) { + if (!t) return g + var h = 1 + if ( + (e === p && (e = 6), + i < 0 ? ((h = 0), (i = -i)) : i > 15 && ((h = 2), (i -= 16)), + r < 1 || r > y || s !== x || i < 8 || i > 15 || e < 0 || e > 9 || n < 0 || n > k) + ) + return X(t, g) + 8 === i && (i = 9) + var l = new gt() + return ( + (t.state = l), + (l.strm = t), + (l.wrap = h), + (l.gzhead = null), + (l.w_bits = i), + (l.w_size = 1 << l.w_bits), + (l.w_mask = l.w_size - 1), + (l.hash_bits = r + 7), + (l.hash_size = 1 << l.hash_bits), + (l.hash_mask = l.hash_size - 1), + (l.hash_shift = ~~((l.hash_bits + E - 1) / E)), + (l.window = new a.Buf8(2 * l.w_size)), + (l.head = new a.Buf16(l.hash_size)), + (l.prev = new a.Buf16(l.w_size)), + (l.lit_bufsize = 1 << (r + 6)), + (l.pending_buf_size = 4 * l.lit_bufsize), + (l.pending_buf = new a.Buf8(l.pending_buf_size)), + (l.d_buf = 1 * l.lit_bufsize), + (l.l_buf = 3 * l.lit_bufsize), + (l.level = e), + (l.strategy = n), + (l.method = s), + ct(t) + ) + } + function wt(t, a) { + return mt(t, a, x, B, S, z) + } + function vt(a, s) { + var r, f, p, m + if (!a || !a.state || s > d || s < 0) return a ? X(a, g) : g + if (((f = a.state), !a.output || (!a.input && 0 !== a.avail_in) || (f.status === P && s !== _))) + return X(a, 0 === a.avail_out ? c : g) + if (((f.strm = a), (r = f.last_flush), (f.last_flush = s), f.status === F)) + if (2 === f.wrap) + (a.adler = 0), + at(f, 31), + at(f, 139), + at(f, 8), + f.gzhead + ? (at( + f, + (f.gzhead.text ? 1 : 0) + + (f.gzhead.hcrc ? 2 : 0) + + (f.gzhead.extra ? 4 : 0) + + (f.gzhead.name ? 8 : 0) + + (f.gzhead.comment ? 16 : 0), + ), + at(f, 255 & f.gzhead.time), + at(f, (f.gzhead.time >> 8) & 255), + at(f, (f.gzhead.time >> 16) & 255), + at(f, (f.gzhead.time >> 24) & 255), + at(f, 9 === f.level ? 2 : f.strategy >= w || f.level < 2 ? 4 : 0), + at(f, 255 & f.gzhead.os), + f.gzhead.extra && + f.gzhead.extra.length && + (at(f, 255 & f.gzhead.extra.length), at(f, (f.gzhead.extra.length >> 8) & 255)), + f.gzhead.hcrc && (a.adler = i(a.adler, f.pending_buf, f.pending, 0)), + (f.gzindex = 0), + (f.status = G)) + : (at(f, 0), + at(f, 0), + at(f, 0), + at(f, 0), + at(f, 0), + at(f, 9 === f.level ? 2 : f.strategy >= w || f.level < 2 ? 4 : 0), + at(f, W), + (f.status = O)) + else { + var k = (x + ((f.w_bits - 8) << 4)) << 8 + ;(k |= (f.strategy >= w || f.level < 2 ? 0 : f.level < 6 ? 1 : 6 === f.level ? 2 : 3) << 6), + 0 !== f.strstart && (k |= N), + (k += 31 - (k % 31)), + (f.status = O), + et(f, k), + 0 !== f.strstart && (et(f, a.adler >>> 16), et(f, 65535 & a.adler)), + (a.adler = 1) + } + if (f.status === G) + if (f.gzhead.extra) { + for ( + p = f.pending; + f.gzindex < (65535 & f.gzhead.extra.length) && + (f.pending !== f.pending_buf_size || + (f.gzhead.hcrc && f.pending > p && (a.adler = i(a.adler, f.pending_buf, f.pending - p, p)), + $(a), + (p = f.pending), + f.pending !== f.pending_buf_size)); + + ) + at(f, 255 & f.gzhead.extra[f.gzindex]), f.gzindex++ + f.gzhead.hcrc && f.pending > p && (a.adler = i(a.adler, f.pending_buf, f.pending - p, p)), + f.gzindex === f.gzhead.extra.length && ((f.gzindex = 0), (f.status = J)) + } else f.status = J + if (f.status === J) + if (f.gzhead.name) { + p = f.pending + do { + if ( + f.pending === f.pending_buf_size && + (f.gzhead.hcrc && f.pending > p && (a.adler = i(a.adler, f.pending_buf, f.pending - p, p)), + $(a), + (p = f.pending), + f.pending === f.pending_buf_size) + ) { + m = 1 + break + } + ;(m = f.gzindex < f.gzhead.name.length ? 255 & f.gzhead.name.charCodeAt(f.gzindex++) : 0), at(f, m) + } while (0 !== m) + f.gzhead.hcrc && f.pending > p && (a.adler = i(a.adler, f.pending_buf, f.pending - p, p)), + 0 === m && ((f.gzindex = 0), (f.status = L)) + } else f.status = L + if (f.status === L) + if (f.gzhead.comment) { + p = f.pending + do { + if ( + f.pending === f.pending_buf_size && + (f.gzhead.hcrc && f.pending > p && (a.adler = i(a.adler, f.pending_buf, f.pending - p, p)), + $(a), + (p = f.pending), + f.pending === f.pending_buf_size) + ) { + m = 1 + break + } + ;(m = f.gzindex < f.gzhead.comment.length ? 255 & f.gzhead.comment.charCodeAt(f.gzindex++) : 0), + at(f, m) + } while (0 !== m) + f.gzhead.hcrc && f.pending > p && (a.adler = i(a.adler, f.pending_buf, f.pending - p, p)), + 0 === m && (f.status = M) + } else f.status = M + if ( + (f.status === M && + (f.gzhead.hcrc + ? (f.pending + 2 > f.pending_buf_size && $(a), + f.pending + 2 <= f.pending_buf_size && + (at(f, 255 & a.adler), at(f, (a.adler >> 8) & 255), (a.adler = 0), (f.status = O))) + : (f.status = O)), + 0 !== f.pending) + ) { + if (($(a), 0 === a.avail_out)) return (f.last_flush = -1), o + } else if (0 === a.avail_in && Y(s) <= Y(r) && s !== _) return X(a, c) + if (f.status === P && 0 !== a.avail_in) return X(a, c) + if (0 !== a.avail_in || 0 !== f.lookahead || (s !== n && f.status !== P)) { + var z = f.strategy === w ? dt(f, s) : f.strategy === v ? _t(f, s) : t[f.level].func(f, s) + if (((z !== U && z !== V) || (f.status = P), z === Q || z === U)) + return 0 === a.avail_out && (f.last_flush = -1), o + if ( + z === T && + (s === h + ? e._tr_align(f) + : s !== d && + (e._tr_stored_block(f, 0, 0, !1), + s === l && (Z(f.head), 0 === f.lookahead && ((f.strstart = 0), (f.block_start = 0), (f.insert = 0)))), + $(a), + 0 === a.avail_out) + ) + return (f.last_flush = -1), o + } + return s !== _ + ? o + : f.wrap <= 0 + ? u + : (2 === f.wrap + ? (at(f, 255 & a.adler), + at(f, (a.adler >> 8) & 255), + at(f, (a.adler >> 16) & 255), + at(f, (a.adler >> 24) & 255), + at(f, 255 & a.total_in), + at(f, (a.total_in >> 8) & 255), + at(f, (a.total_in >> 16) & 255), + at(f, (a.total_in >> 24) & 255)) + : (et(f, a.adler >>> 16), et(f, 65535 & a.adler)), + $(a), + f.wrap > 0 && (f.wrap = -f.wrap), + 0 !== f.pending ? o : u) + } + function kt(t) { + var a + return t && t.state + ? (a = t.state.status) !== F && a !== G && a !== J && a !== L && a !== M && a !== O && a !== P + ? X(t, g) + : ((t.state = null), a === O ? X(t, f) : o) + : g + } + function zt(t, e) { + var i, + r, + n, + h, + l, + _, + d, + u, + f = e.length + if (!t || !t.state) return g + if (2 === (h = (i = t.state).wrap) || (1 === h && i.status !== F) || i.lookahead) return g + for ( + 1 === h && (t.adler = s(t.adler, e, f, 0)), + i.wrap = 0, + f >= i.w_size && + (0 === h && (Z(i.head), (i.strstart = 0), (i.block_start = 0), (i.insert = 0)), + (u = new a.Buf8(i.w_size)), + a.arraySet(u, e, f - i.w_size, i.w_size, 0), + (e = u), + (f = i.w_size)), + l = t.avail_in, + _ = t.next_in, + d = t.input, + t.avail_in = f, + t.next_in = 0, + t.input = e, + rt(i); + i.lookahead >= E; + + ) { + ;(r = i.strstart), (n = i.lookahead - (E - 1)) + do { + ;(i.ins_h = ((i.ins_h << i.hash_shift) ^ i.window[r + E - 1]) & i.hash_mask), + (i.prev[r & i.w_mask] = i.head[i.ins_h]), + (i.head[i.ins_h] = r), + r++ + } while (--n) + ;(i.strstart = r), (i.lookahead = E - 1), rt(i) + } + return ( + (i.strstart += i.lookahead), + (i.block_start = i.strstart), + (i.insert = i.lookahead), + (i.lookahead = 0), + (i.match_length = i.prev_length = E - 1), + (i.match_available = 0), + (t.next_in = _), + (t.input = d), + (t.avail_in = l), + (i.wrap = h), + o + ) + } + ;(t = [ + new ot(0, 0, 0, 0, nt), + new ot(4, 4, 8, 4, ht), + new ot(4, 5, 16, 8, ht), + new ot(4, 6, 32, 32, ht), + new ot(4, 4, 16, 16, lt), + new ot(8, 16, 32, 32, lt), + new ot(8, 16, 128, 128, lt), + new ot(8, 32, 128, 256, lt), + new ot(32, 128, 258, 1024, lt), + new ot(32, 258, 258, 4096, lt), + ]), + (exports.deflateInit = wt), + (exports.deflateInit2 = mt), + (exports.deflateReset = ct), + (exports.deflateResetKeep = ft), + (exports.deflateSetHeader = pt), + (exports.deflate = vt), + (exports.deflateEnd = kt), + (exports.deflateSetDictionary = zt), + (exports.deflateInfo = 'pako deflate (from Nodeca project)') + }, + {'../utils/common': 'tbG5', './trees': 'sRJQ', './adler32': 'uxo6', './crc32': 'X4kj', './messages': 'gMAY'}, + ], + Q3ZD: [ + function (require, module, exports) { + 'use strict' + var r = require('./common'), + n = !0, + t = !0 + try { + String.fromCharCode.apply(null, [0]) + } catch (u) { + n = !1 + } + try { + String.fromCharCode.apply(null, new Uint8Array(1)) + } catch (u) { + t = !1 + } + for (var e = new r.Buf8(256), o = 0; o < 256; o++) + e[o] = o >= 252 ? 6 : o >= 248 ? 5 : o >= 240 ? 4 : o >= 224 ? 3 : o >= 192 ? 2 : 1 + function f(e, o) { + if (o < 65537 && ((e.subarray && t) || (!e.subarray && n))) + return String.fromCharCode.apply(null, r.shrinkBuf(e, o)) + for (var f = '', u = 0; u < o; u++) f += String.fromCharCode(e[u]) + return f + } + ;(e[254] = e[254] = 1), + (exports.string2buf = function (n) { + var t, + e, + o, + f, + u, + a = n.length, + i = 0 + for (f = 0; f < a; f++) + 55296 == (64512 & (e = n.charCodeAt(f))) && + f + 1 < a && + 56320 == (64512 & (o = n.charCodeAt(f + 1))) && + ((e = 65536 + ((e - 55296) << 10) + (o - 56320)), f++), + (i += e < 128 ? 1 : e < 2048 ? 2 : e < 65536 ? 3 : 4) + for (t = new r.Buf8(i), u = 0, f = 0; u < i; f++) + 55296 == (64512 & (e = n.charCodeAt(f))) && + f + 1 < a && + 56320 == (64512 & (o = n.charCodeAt(f + 1))) && + ((e = 65536 + ((e - 55296) << 10) + (o - 56320)), f++), + e < 128 + ? (t[u++] = e) + : e < 2048 + ? ((t[u++] = 192 | (e >>> 6)), (t[u++] = 128 | (63 & e))) + : e < 65536 + ? ((t[u++] = 224 | (e >>> 12)), (t[u++] = 128 | ((e >>> 6) & 63)), (t[u++] = 128 | (63 & e))) + : ((t[u++] = 240 | (e >>> 18)), + (t[u++] = 128 | ((e >>> 12) & 63)), + (t[u++] = 128 | ((e >>> 6) & 63)), + (t[u++] = 128 | (63 & e))) + return t + }), + (exports.buf2binstring = function (r) { + return f(r, r.length) + }), + (exports.binstring2buf = function (n) { + for (var t = new r.Buf8(n.length), e = 0, o = t.length; e < o; e++) t[e] = n.charCodeAt(e) + return t + }), + (exports.buf2string = function (r, n) { + var t, + o, + u, + a, + i = n || r.length, + h = new Array(2 * i) + for (o = 0, t = 0; t < i; ) + if ((u = r[t++]) < 128) h[o++] = u + else if ((a = e[u]) > 4) (h[o++] = 65533), (t += a - 1) + else { + for (u &= 2 === a ? 31 : 3 === a ? 15 : 7; a > 1 && t < i; ) (u = (u << 6) | (63 & r[t++])), a-- + a > 1 + ? (h[o++] = 65533) + : u < 65536 + ? (h[o++] = u) + : ((u -= 65536), (h[o++] = 55296 | ((u >> 10) & 1023)), (h[o++] = 56320 | (1023 & u))) + } + return f(h, o) + }), + (exports.utf8border = function (r, n) { + var t + for ((n = n || r.length) > r.length && (n = r.length), t = n - 1; t >= 0 && 128 == (192 & r[t]); ) t-- + return t < 0 ? n : 0 === t ? n : t + e[r[t]] > n ? t : n + }) + }, + {'./common': 'tbG5'}, + ], + bdtv: [ + function (require, module, exports) { + 'use strict' + function t() { + ;(this.input = null), + (this.next_in = 0), + (this.avail_in = 0), + (this.total_in = 0), + (this.output = null), + (this.next_out = 0), + (this.avail_out = 0), + (this.total_out = 0), + (this.msg = ''), + (this.state = null), + (this.data_type = 2), + (this.adler = 0) + } + module.exports = t + }, + {}, + ], + nFS2: [ + function (require, module, exports) { + 'use strict' + var t = require('./zlib/deflate'), + i = require('./utils/common'), + e = require('./utils/strings'), + n = require('./zlib/messages'), + r = require('./zlib/zstream'), + s = Object.prototype.toString, + o = 0, + a = 4, + u = 0, + h = 1, + d = 2, + l = -1, + f = 0, + p = 8 + function w(o) { + if (!(this instanceof w)) return new w(o) + this.options = i.assign( + {level: l, method: p, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: f, to: ''}, + o || {}, + ) + var a = this.options + a.raw && a.windowBits > 0 + ? (a.windowBits = -a.windowBits) + : a.gzip && a.windowBits > 0 && a.windowBits < 16 && (a.windowBits += 16), + (this.err = 0), + (this.msg = ''), + (this.ended = !1), + (this.chunks = []), + (this.strm = new r()), + (this.strm.avail_out = 0) + var h = t.deflateInit2(this.strm, a.level, a.method, a.windowBits, a.memLevel, a.strategy) + if (h !== u) throw new Error(n[h]) + if ((a.header && t.deflateSetHeader(this.strm, a.header), a.dictionary)) { + var d + if ( + ((d = + 'string' == typeof a.dictionary + ? e.string2buf(a.dictionary) + : '[object ArrayBuffer]' === s.call(a.dictionary) + ? new Uint8Array(a.dictionary) + : a.dictionary), + (h = t.deflateSetDictionary(this.strm, d)) !== u) + ) + throw new Error(n[h]) + this._dict_set = !0 + } + } + function c(t, i) { + var e = new w(i) + if ((e.push(t, !0), e.err)) throw e.msg || n[e.err] + return e.result + } + function m(t, i) { + return ((i = i || {}).raw = !0), c(t, i) + } + function g(t, i) { + return ((i = i || {}).gzip = !0), c(t, i) + } + ;(w.prototype.push = function (n, r) { + var l, + f, + p = this.strm, + w = this.options.chunkSize + if (this.ended) return !1 + ;(f = r === ~~r ? r : !0 === r ? a : o), + 'string' == typeof n + ? (p.input = e.string2buf(n)) + : '[object ArrayBuffer]' === s.call(n) + ? (p.input = new Uint8Array(n)) + : (p.input = n), + (p.next_in = 0), + (p.avail_in = p.input.length) + do { + if ( + (0 === p.avail_out && ((p.output = new i.Buf8(w)), (p.next_out = 0), (p.avail_out = w)), + (l = t.deflate(p, f)) !== h && l !== u) + ) + return this.onEnd(l), (this.ended = !0), !1 + ;(0 !== p.avail_out && (0 !== p.avail_in || (f !== a && f !== d))) || + ('string' === this.options.to + ? this.onData(e.buf2binstring(i.shrinkBuf(p.output, p.next_out))) + : this.onData(i.shrinkBuf(p.output, p.next_out))) + } while ((p.avail_in > 0 || 0 === p.avail_out) && l !== h) + return f === a + ? ((l = t.deflateEnd(this.strm)), this.onEnd(l), (this.ended = !0), l === u) + : f !== d || (this.onEnd(u), (p.avail_out = 0), !0) + }), + (w.prototype.onData = function (t) { + this.chunks.push(t) + }), + (w.prototype.onEnd = function (t) { + t === u && + ('string' === this.options.to + ? (this.result = this.chunks.join('')) + : (this.result = i.flattenChunks(this.chunks))), + (this.chunks = []), + (this.err = t), + (this.msg = this.strm.msg) + }), + (exports.Deflate = w), + (exports.deflate = c), + (exports.deflateRaw = m), + (exports.gzip = g) + }, + { + './zlib/deflate': 'BLBk', + './utils/common': 'tbG5', + './utils/strings': 'Q3ZD', + './zlib/messages': 'gMAY', + './zlib/zstream': 'bdtv', + }, + ], + LP5M: [ + function (require, module, exports) { + 'use strict' + var i = 30, + e = 12 + module.exports = function (o, a) { + var t, d, n, l, s, f, r, b, c, u, v, m, w, h, k, _, x, g, p, z, j, q, y, A, B + ;(t = o.state), + (d = o.next_in), + (A = o.input), + (n = d + (o.avail_in - 5)), + (l = o.next_out), + (B = o.output), + (s = l - (a - o.avail_out)), + (f = l + (o.avail_out - 257)), + (r = t.dmax), + (b = t.wsize), + (c = t.whave), + (u = t.wnext), + (v = t.window), + (m = t.hold), + (w = t.bits), + (h = t.lencode), + (k = t.distcode), + (_ = (1 << t.lenbits) - 1), + (x = (1 << t.distbits) - 1) + i: do { + w < 15 && ((m += A[d++] << w), (w += 8), (m += A[d++] << w), (w += 8)), (g = h[m & _]) + e: for (;;) { + if (((m >>>= p = g >>> 24), (w -= p), 0 === (p = (g >>> 16) & 255))) B[l++] = 65535 & g + else { + if (!(16 & p)) { + if (0 == (64 & p)) { + g = h[(65535 & g) + (m & ((1 << p) - 1))] + continue e + } + if (32 & p) { + t.mode = e + break i + } + ;(o.msg = 'invalid literal/length code'), (t.mode = i) + break i + } + ;(z = 65535 & g), + (p &= 15) && + (w < p && ((m += A[d++] << w), (w += 8)), (z += m & ((1 << p) - 1)), (m >>>= p), (w -= p)), + w < 15 && ((m += A[d++] << w), (w += 8), (m += A[d++] << w), (w += 8)), + (g = k[m & x]) + o: for (;;) { + if (((m >>>= p = g >>> 24), (w -= p), !(16 & (p = (g >>> 16) & 255)))) { + if (0 == (64 & p)) { + g = k[(65535 & g) + (m & ((1 << p) - 1))] + continue o + } + ;(o.msg = 'invalid distance code'), (t.mode = i) + break i + } + if ( + ((j = 65535 & g), + w < (p &= 15) && ((m += A[d++] << w), (w += 8) < p && ((m += A[d++] << w), (w += 8))), + (j += m & ((1 << p) - 1)) > r) + ) { + ;(o.msg = 'invalid distance too far back'), (t.mode = i) + break i + } + if (((m >>>= p), (w -= p), j > (p = l - s))) { + if ((p = j - p) > c && t.sane) { + ;(o.msg = 'invalid distance too far back'), (t.mode = i) + break i + } + if (((q = 0), (y = v), 0 === u)) { + if (((q += b - p), p < z)) { + z -= p + do { + B[l++] = v[q++] + } while (--p) + ;(q = l - j), (y = B) + } + } else if (u < p) { + if (((q += b + u - p), (p -= u) < z)) { + z -= p + do { + B[l++] = v[q++] + } while (--p) + if (((q = 0), u < z)) { + z -= p = u + do { + B[l++] = v[q++] + } while (--p) + ;(q = l - j), (y = B) + } + } + } else if (((q += u - p), p < z)) { + z -= p + do { + B[l++] = v[q++] + } while (--p) + ;(q = l - j), (y = B) + } + for (; z > 2; ) (B[l++] = y[q++]), (B[l++] = y[q++]), (B[l++] = y[q++]), (z -= 3) + z && ((B[l++] = y[q++]), z > 1 && (B[l++] = y[q++])) + } else { + q = l - j + do { + ;(B[l++] = B[q++]), (B[l++] = B[q++]), (B[l++] = B[q++]), (z -= 3) + } while (z > 2) + z && ((B[l++] = B[q++]), z > 1 && (B[l++] = B[q++])) + } + break + } + } + break + } + } while (d < n && l < f) + ;(d -= z = w >> 3), + (m &= (1 << (w -= z << 3)) - 1), + (o.next_in = d), + (o.next_out = l), + (o.avail_in = d < n ? n - d + 5 : 5 - (d - n)), + (o.avail_out = l < f ? f - l + 257 : 257 - (l - f)), + (t.hold = m), + (t.bits = w) + } + }, + {}, + ], + uNlq: [ + function (require, module, exports) { + 'use strict' + var r = require('../utils/common'), + f = 15, + i = 852, + o = 592, + e = 0, + u = 1, + t = 2, + n = [ + 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, + 227, 258, 0, 0, + ], + l = [ + 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, + 21, 16, 72, 78, + ], + s = [ + 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, + 6145, 8193, 12289, 16385, 24577, 0, 0, + ], + b = [ + 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, + 28, 29, 29, 64, 64, + ] + module.exports = function (a, c, m, w, d, v, B, h) { + var k, + p, + q, + x, + g, + j, + y, + z, + A, + C = h.bits, + D = 0, + E = 0, + F = 0, + G = 0, + H = 0, + I = 0, + J = 0, + K = 0, + L = 0, + M = 0, + N = null, + O = 0, + P = new r.Buf16(f + 1), + Q = new r.Buf16(f + 1), + R = null, + S = 0 + for (D = 0; D <= f; D++) P[D] = 0 + for (E = 0; E < w; E++) P[c[m + E]]++ + for (H = C, G = f; G >= 1 && 0 === P[G]; G--); + if ((H > G && (H = G), 0 === G)) return (d[v++] = 20971520), (d[v++] = 20971520), (h.bits = 1), 0 + for (F = 1; F < G && 0 === P[F]; F++); + for (H < F && (H = F), K = 1, D = 1; D <= f; D++) if (((K <<= 1), (K -= P[D]) < 0)) return -1 + if (K > 0 && (a === e || 1 !== G)) return -1 + for (Q[1] = 0, D = 1; D < f; D++) Q[D + 1] = Q[D] + P[D] + for (E = 0; E < w; E++) 0 !== c[m + E] && (B[Q[c[m + E]]++] = E) + if ( + (a === e + ? ((N = R = B), (j = 19)) + : a === u + ? ((N = n), (O -= 257), (R = l), (S -= 257), (j = 256)) + : ((N = s), (R = b), (j = -1)), + (M = 0), + (E = 0), + (D = F), + (g = v), + (I = H), + (J = 0), + (q = -1), + (x = (L = 1 << H) - 1), + (a === u && L > i) || (a === t && L > o)) + ) + return 1 + for (;;) { + ;(y = D - J), + B[E] < j + ? ((z = 0), (A = B[E])) + : B[E] > j + ? ((z = R[S + B[E]]), (A = N[O + B[E]])) + : ((z = 96), (A = 0)), + (k = 1 << (D - J)), + (F = p = 1 << I) + do { + d[g + (M >> J) + (p -= k)] = (y << 24) | (z << 16) | A | 0 + } while (0 !== p) + for (k = 1 << (D - 1); M & k; ) k >>= 1 + if ((0 !== k ? ((M &= k - 1), (M += k)) : (M = 0), E++, 0 == --P[D])) { + if (D === G) break + D = c[m + B[E]] + } + if (D > H && (M & x) !== q) { + for (0 === J && (J = H), g += F, K = 1 << (I = D - J); I + J < G && !((K -= P[I + J]) <= 0); ) + I++, (K <<= 1) + if (((L += 1 << I), (a === u && L > i) || (a === t && L > o))) return 1 + d[(q = M & x)] = (H << 24) | (I << 16) | (g - v) | 0 + } + } + return 0 !== M && (d[g + M] = ((D - J) << 24) | (64 << 16) | 0), (h.bits = H), 0 + } + }, + {'../utils/common': 'tbG5'}, + ], + GIDK: [ + function (require, module, exports) { + 'use strict' + var e = require('../utils/common'), + a = require('./adler32'), + t = require('./crc32'), + i = require('./inffast'), + s = require('./inftrees'), + n = 0, + r = 1, + o = 2, + d = 4, + l = 5, + f = 6, + c = 0, + h = 1, + k = 2, + b = -2, + m = -3, + w = -4, + u = -5, + g = 8, + v = 1, + x = 2, + p = 3, + _ = 4, + y = 5, + z = 6, + B = 7, + S = 8, + q = 9, + C = 10, + I = 11, + R = 12, + j = 13, + A = 14, + D = 15, + E = 16, + G = 17, + H = 18, + K = 19, + N = 20, + F = 21, + J = 22, + L = 23, + M = 24, + O = 25, + P = 26, + Q = 27, + T = 28, + U = 29, + V = 30, + W = 31, + X = 32, + Y = 852, + Z = 592, + $ = 15, + ee = $ + function ae(e) { + return ((e >>> 24) & 255) + ((e >>> 8) & 65280) + ((65280 & e) << 8) + ((255 & e) << 24) + } + function te() { + ;(this.mode = 0), + (this.last = !1), + (this.wrap = 0), + (this.havedict = !1), + (this.flags = 0), + (this.dmax = 0), + (this.check = 0), + (this.total = 0), + (this.head = null), + (this.wbits = 0), + (this.wsize = 0), + (this.whave = 0), + (this.wnext = 0), + (this.window = null), + (this.hold = 0), + (this.bits = 0), + (this.length = 0), + (this.offset = 0), + (this.extra = 0), + (this.lencode = null), + (this.distcode = null), + (this.lenbits = 0), + (this.distbits = 0), + (this.ncode = 0), + (this.nlen = 0), + (this.ndist = 0), + (this.have = 0), + (this.next = null), + (this.lens = new e.Buf16(320)), + (this.work = new e.Buf16(288)), + (this.lendyn = null), + (this.distdyn = null), + (this.sane = 0), + (this.back = 0), + (this.was = 0) + } + function ie(a) { + var t + return a && a.state + ? ((t = a.state), + (a.total_in = a.total_out = t.total = 0), + (a.msg = ''), + t.wrap && (a.adler = 1 & t.wrap), + (t.mode = v), + (t.last = 0), + (t.havedict = 0), + (t.dmax = 32768), + (t.head = null), + (t.hold = 0), + (t.bits = 0), + (t.lencode = t.lendyn = new e.Buf32(Y)), + (t.distcode = t.distdyn = new e.Buf32(Z)), + (t.sane = 1), + (t.back = -1), + c) + : b + } + function se(e) { + var a + return e && e.state ? (((a = e.state).wsize = 0), (a.whave = 0), (a.wnext = 0), ie(e)) : b + } + function ne(e, a) { + var t, i + return e && e.state + ? ((i = e.state), + a < 0 ? ((t = 0), (a = -a)) : ((t = 1 + (a >> 4)), a < 48 && (a &= 15)), + a && (a < 8 || a > 15) + ? b + : (null !== i.window && i.wbits !== a && (i.window = null), (i.wrap = t), (i.wbits = a), se(e))) + : b + } + function re(e, a) { + var t, i + return e ? ((i = new te()), (e.state = i), (i.window = null), (t = ne(e, a)) !== c && (e.state = null), t) : b + } + function oe(e) { + return re(e, ee) + } + var de, + le, + fe = !0 + function ce(a) { + if (fe) { + var t + for (de = new e.Buf32(512), le = new e.Buf32(32), t = 0; t < 144; ) a.lens[t++] = 8 + for (; t < 256; ) a.lens[t++] = 9 + for (; t < 280; ) a.lens[t++] = 7 + for (; t < 288; ) a.lens[t++] = 8 + for (s(r, a.lens, 0, 288, de, 0, a.work, {bits: 9}), t = 0; t < 32; ) a.lens[t++] = 5 + s(o, a.lens, 0, 32, le, 0, a.work, {bits: 5}), (fe = !1) + } + ;(a.lencode = de), (a.lenbits = 9), (a.distcode = le), (a.distbits = 5) + } + function he(a, t, i, s) { + var n, + r = a.state + return ( + null === r.window && + ((r.wsize = 1 << r.wbits), (r.wnext = 0), (r.whave = 0), (r.window = new e.Buf8(r.wsize))), + s >= r.wsize + ? (e.arraySet(r.window, t, i - r.wsize, r.wsize, 0), (r.wnext = 0), (r.whave = r.wsize)) + : ((n = r.wsize - r.wnext) > s && (n = s), + e.arraySet(r.window, t, i - s, n, r.wnext), + (s -= n) + ? (e.arraySet(r.window, t, i - s, s, 0), (r.wnext = s), (r.whave = r.wsize)) + : ((r.wnext += n), r.wnext === r.wsize && (r.wnext = 0), r.whave < r.wsize && (r.whave += n))), + 0 + ) + } + function ke(Y, Z) { + var $, + ee, + te, + ie, + se, + ne, + re, + oe, + de, + le, + fe, + ke, + be, + me, + we, + ue, + ge, + ve, + xe, + pe, + _e, + ye, + ze, + Be, + Se = 0, + qe = new e.Buf8(4), + Ce = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15] + if (!Y || !Y.state || !Y.output || (!Y.input && 0 !== Y.avail_in)) return b + ;($ = Y.state).mode === R && ($.mode = j), + (se = Y.next_out), + (te = Y.output), + (re = Y.avail_out), + (ie = Y.next_in), + (ee = Y.input), + (ne = Y.avail_in), + (oe = $.hold), + (de = $.bits), + (le = ne), + (fe = re), + (ye = c) + e: for (;;) + switch ($.mode) { + case v: + if (0 === $.wrap) { + $.mode = j + break + } + for (; de < 16; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if (2 & $.wrap && 35615 === oe) { + ;($.check = 0), + (qe[0] = 255 & oe), + (qe[1] = (oe >>> 8) & 255), + ($.check = t($.check, qe, 2, 0)), + (oe = 0), + (de = 0), + ($.mode = x) + break + } + if ( + (($.flags = 0), $.head && ($.head.done = !1), !(1 & $.wrap) || (((255 & oe) << 8) + (oe >> 8)) % 31) + ) { + ;(Y.msg = 'incorrect header check'), ($.mode = V) + break + } + if ((15 & oe) !== g) { + ;(Y.msg = 'unknown compression method'), ($.mode = V) + break + } + if (((de -= 4), (_e = 8 + (15 & (oe >>>= 4))), 0 === $.wbits)) $.wbits = _e + else if (_e > $.wbits) { + ;(Y.msg = 'invalid window size'), ($.mode = V) + break + } + ;($.dmax = 1 << _e), (Y.adler = $.check = 1), ($.mode = 512 & oe ? C : R), (oe = 0), (de = 0) + break + case x: + for (; de < 16; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if ((($.flags = oe), (255 & $.flags) !== g)) { + ;(Y.msg = 'unknown compression method'), ($.mode = V) + break + } + if (57344 & $.flags) { + ;(Y.msg = 'unknown header flags set'), ($.mode = V) + break + } + $.head && ($.head.text = (oe >> 8) & 1), + 512 & $.flags && ((qe[0] = 255 & oe), (qe[1] = (oe >>> 8) & 255), ($.check = t($.check, qe, 2, 0))), + (oe = 0), + (de = 0), + ($.mode = p) + case p: + for (; de < 32; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + $.head && ($.head.time = oe), + 512 & $.flags && + ((qe[0] = 255 & oe), + (qe[1] = (oe >>> 8) & 255), + (qe[2] = (oe >>> 16) & 255), + (qe[3] = (oe >>> 24) & 255), + ($.check = t($.check, qe, 4, 0))), + (oe = 0), + (de = 0), + ($.mode = _) + case _: + for (; de < 16; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + $.head && (($.head.xflags = 255 & oe), ($.head.os = oe >> 8)), + 512 & $.flags && ((qe[0] = 255 & oe), (qe[1] = (oe >>> 8) & 255), ($.check = t($.check, qe, 2, 0))), + (oe = 0), + (de = 0), + ($.mode = y) + case y: + if (1024 & $.flags) { + for (; de < 16; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;($.length = oe), + $.head && ($.head.extra_len = oe), + 512 & $.flags && ((qe[0] = 255 & oe), (qe[1] = (oe >>> 8) & 255), ($.check = t($.check, qe, 2, 0))), + (oe = 0), + (de = 0) + } else $.head && ($.head.extra = null) + $.mode = z + case z: + if ( + 1024 & $.flags && + ((ke = $.length) > ne && (ke = ne), + ke && + ($.head && + ((_e = $.head.extra_len - $.length), + $.head.extra || ($.head.extra = new Array($.head.extra_len)), + e.arraySet($.head.extra, ee, ie, ke, _e)), + 512 & $.flags && ($.check = t($.check, ee, ke, ie)), + (ne -= ke), + (ie += ke), + ($.length -= ke)), + $.length) + ) + break e + ;($.length = 0), ($.mode = B) + case B: + if (2048 & $.flags) { + if (0 === ne) break e + ke = 0 + do { + ;(_e = ee[ie + ke++]), $.head && _e && $.length < 65536 && ($.head.name += String.fromCharCode(_e)) + } while (_e && ke < ne) + if ((512 & $.flags && ($.check = t($.check, ee, ke, ie)), (ne -= ke), (ie += ke), _e)) break e + } else $.head && ($.head.name = null) + ;($.length = 0), ($.mode = S) + case S: + if (4096 & $.flags) { + if (0 === ne) break e + ke = 0 + do { + ;(_e = ee[ie + ke++]), + $.head && _e && $.length < 65536 && ($.head.comment += String.fromCharCode(_e)) + } while (_e && ke < ne) + if ((512 & $.flags && ($.check = t($.check, ee, ke, ie)), (ne -= ke), (ie += ke), _e)) break e + } else $.head && ($.head.comment = null) + $.mode = q + case q: + if (512 & $.flags) { + for (; de < 16; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if (oe !== (65535 & $.check)) { + ;(Y.msg = 'header crc mismatch'), ($.mode = V) + break + } + ;(oe = 0), (de = 0) + } + $.head && (($.head.hcrc = ($.flags >> 9) & 1), ($.head.done = !0)), + (Y.adler = $.check = 0), + ($.mode = R) + break + case C: + for (; de < 32; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;(Y.adler = $.check = ae(oe)), (oe = 0), (de = 0), ($.mode = I) + case I: + if (0 === $.havedict) + return ( + (Y.next_out = se), + (Y.avail_out = re), + (Y.next_in = ie), + (Y.avail_in = ne), + ($.hold = oe), + ($.bits = de), + k + ) + ;(Y.adler = $.check = 1), ($.mode = R) + case R: + if (Z === l || Z === f) break e + case j: + if ($.last) { + ;(oe >>>= 7 & de), (de -= 7 & de), ($.mode = Q) + break + } + for (; de < 3; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + switch ((($.last = 1 & oe), (de -= 1), 3 & (oe >>>= 1))) { + case 0: + $.mode = A + break + case 1: + if ((ce($), ($.mode = N), Z === f)) { + ;(oe >>>= 2), (de -= 2) + break e + } + break + case 2: + $.mode = G + break + case 3: + ;(Y.msg = 'invalid block type'), ($.mode = V) + } + ;(oe >>>= 2), (de -= 2) + break + case A: + for (oe >>>= 7 & de, de -= 7 & de; de < 32; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if ((65535 & oe) != ((oe >>> 16) ^ 65535)) { + ;(Y.msg = 'invalid stored block lengths'), ($.mode = V) + break + } + if ((($.length = 65535 & oe), (oe = 0), (de = 0), ($.mode = D), Z === f)) break e + case D: + $.mode = E + case E: + if ((ke = $.length)) { + if ((ke > ne && (ke = ne), ke > re && (ke = re), 0 === ke)) break e + e.arraySet(te, ee, ie, ke, se), (ne -= ke), (ie += ke), (re -= ke), (se += ke), ($.length -= ke) + break + } + $.mode = R + break + case G: + for (; de < 14; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if ( + (($.nlen = 257 + (31 & oe)), + (oe >>>= 5), + (de -= 5), + ($.ndist = 1 + (31 & oe)), + (oe >>>= 5), + (de -= 5), + ($.ncode = 4 + (15 & oe)), + (oe >>>= 4), + (de -= 4), + $.nlen > 286 || $.ndist > 30) + ) { + ;(Y.msg = 'too many length or distance symbols'), ($.mode = V) + break + } + ;($.have = 0), ($.mode = H) + case H: + for (; $.have < $.ncode; ) { + for (; de < 3; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;($.lens[Ce[$.have++]] = 7 & oe), (oe >>>= 3), (de -= 3) + } + for (; $.have < 19; ) $.lens[Ce[$.have++]] = 0 + if ( + (($.lencode = $.lendyn), + ($.lenbits = 7), + (ze = {bits: $.lenbits}), + (ye = s(n, $.lens, 0, 19, $.lencode, 0, $.work, ze)), + ($.lenbits = ze.bits), + ye) + ) { + ;(Y.msg = 'invalid code lengths set'), ($.mode = V) + break + } + ;($.have = 0), ($.mode = K) + case K: + for (; $.have < $.nlen + $.ndist; ) { + for ( + ; + (ue = ((Se = $.lencode[oe & ((1 << $.lenbits) - 1)]) >>> 16) & 255), + (ge = 65535 & Se), + !((we = Se >>> 24) <= de); + + ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if (ge < 16) (oe >>>= we), (de -= we), ($.lens[$.have++] = ge) + else { + if (16 === ge) { + for (Be = we + 2; de < Be; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if (((oe >>>= we), (de -= we), 0 === $.have)) { + ;(Y.msg = 'invalid bit length repeat'), ($.mode = V) + break + } + ;(_e = $.lens[$.have - 1]), (ke = 3 + (3 & oe)), (oe >>>= 2), (de -= 2) + } else if (17 === ge) { + for (Be = we + 3; de < Be; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;(de -= we), (_e = 0), (ke = 3 + (7 & (oe >>>= we))), (oe >>>= 3), (de -= 3) + } else { + for (Be = we + 7; de < Be; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;(de -= we), (_e = 0), (ke = 11 + (127 & (oe >>>= we))), (oe >>>= 7), (de -= 7) + } + if ($.have + ke > $.nlen + $.ndist) { + ;(Y.msg = 'invalid bit length repeat'), ($.mode = V) + break + } + for (; ke--; ) $.lens[$.have++] = _e + } + } + if ($.mode === V) break + if (0 === $.lens[256]) { + ;(Y.msg = 'invalid code -- missing end-of-block'), ($.mode = V) + break + } + if ( + (($.lenbits = 9), + (ze = {bits: $.lenbits}), + (ye = s(r, $.lens, 0, $.nlen, $.lencode, 0, $.work, ze)), + ($.lenbits = ze.bits), + ye) + ) { + ;(Y.msg = 'invalid literal/lengths set'), ($.mode = V) + break + } + if ( + (($.distbits = 6), + ($.distcode = $.distdyn), + (ze = {bits: $.distbits}), + (ye = s(o, $.lens, $.nlen, $.ndist, $.distcode, 0, $.work, ze)), + ($.distbits = ze.bits), + ye) + ) { + ;(Y.msg = 'invalid distances set'), ($.mode = V) + break + } + if ((($.mode = N), Z === f)) break e + case N: + $.mode = F + case F: + if (ne >= 6 && re >= 258) { + ;(Y.next_out = se), + (Y.avail_out = re), + (Y.next_in = ie), + (Y.avail_in = ne), + ($.hold = oe), + ($.bits = de), + i(Y, fe), + (se = Y.next_out), + (te = Y.output), + (re = Y.avail_out), + (ie = Y.next_in), + (ee = Y.input), + (ne = Y.avail_in), + (oe = $.hold), + (de = $.bits), + $.mode === R && ($.back = -1) + break + } + for ( + $.back = 0; + (ue = ((Se = $.lencode[oe & ((1 << $.lenbits) - 1)]) >>> 16) & 255), + (ge = 65535 & Se), + !((we = Se >>> 24) <= de); + + ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if (ue && 0 == (240 & ue)) { + for ( + ve = we, xe = ue, pe = ge; + (ue = ((Se = $.lencode[pe + ((oe & ((1 << (ve + xe)) - 1)) >> ve)]) >>> 16) & 255), + (ge = 65535 & Se), + !(ve + (we = Se >>> 24) <= de); + + ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;(oe >>>= ve), (de -= ve), ($.back += ve) + } + if (((oe >>>= we), (de -= we), ($.back += we), ($.length = ge), 0 === ue)) { + $.mode = P + break + } + if (32 & ue) { + ;($.back = -1), ($.mode = R) + break + } + if (64 & ue) { + ;(Y.msg = 'invalid literal/length code'), ($.mode = V) + break + } + ;($.extra = 15 & ue), ($.mode = J) + case J: + if ($.extra) { + for (Be = $.extra; de < Be; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;($.length += oe & ((1 << $.extra) - 1)), (oe >>>= $.extra), (de -= $.extra), ($.back += $.extra) + } + ;($.was = $.length), ($.mode = L) + case L: + for ( + ; + (ue = ((Se = $.distcode[oe & ((1 << $.distbits) - 1)]) >>> 16) & 255), + (ge = 65535 & Se), + !((we = Se >>> 24) <= de); + + ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if (0 == (240 & ue)) { + for ( + ve = we, xe = ue, pe = ge; + (ue = ((Se = $.distcode[pe + ((oe & ((1 << (ve + xe)) - 1)) >> ve)]) >>> 16) & 255), + (ge = 65535 & Se), + !(ve + (we = Se >>> 24) <= de); + + ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;(oe >>>= ve), (de -= ve), ($.back += ve) + } + if (((oe >>>= we), (de -= we), ($.back += we), 64 & ue)) { + ;(Y.msg = 'invalid distance code'), ($.mode = V) + break + } + ;($.offset = ge), ($.extra = 15 & ue), ($.mode = M) + case M: + if ($.extra) { + for (Be = $.extra; de < Be; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + ;($.offset += oe & ((1 << $.extra) - 1)), (oe >>>= $.extra), (de -= $.extra), ($.back += $.extra) + } + if ($.offset > $.dmax) { + ;(Y.msg = 'invalid distance too far back'), ($.mode = V) + break + } + $.mode = O + case O: + if (0 === re) break e + if (((ke = fe - re), $.offset > ke)) { + if ((ke = $.offset - ke) > $.whave && $.sane) { + ;(Y.msg = 'invalid distance too far back'), ($.mode = V) + break + } + ke > $.wnext ? ((ke -= $.wnext), (be = $.wsize - ke)) : (be = $.wnext - ke), + ke > $.length && (ke = $.length), + (me = $.window) + } else (me = te), (be = se - $.offset), (ke = $.length) + ke > re && (ke = re), (re -= ke), ($.length -= ke) + do { + te[se++] = me[be++] + } while (--ke) + 0 === $.length && ($.mode = F) + break + case P: + if (0 === re) break e + ;(te[se++] = $.length), re--, ($.mode = F) + break + case Q: + if ($.wrap) { + for (; de < 32; ) { + if (0 === ne) break e + ne--, (oe |= ee[ie++] << de), (de += 8) + } + if ( + ((fe -= re), + (Y.total_out += fe), + ($.total += fe), + fe && (Y.adler = $.check = $.flags ? t($.check, te, fe, se - fe) : a($.check, te, fe, se - fe)), + (fe = re), + ($.flags ? oe : ae(oe)) !== $.check) + ) { + ;(Y.msg = 'incorrect data check'), ($.mode = V) + break + } + ;(oe = 0), (de = 0) + } + $.mode = T + case T: + if ($.wrap && $.flags) { + for (; de < 32; ) { + if (0 === ne) break e + ne--, (oe += ee[ie++] << de), (de += 8) + } + if (oe !== (4294967295 & $.total)) { + ;(Y.msg = 'incorrect length check'), ($.mode = V) + break + } + ;(oe = 0), (de = 0) + } + $.mode = U + case U: + ye = h + break e + case V: + ye = m + break e + case W: + return w + case X: + default: + return b + } + return ( + (Y.next_out = se), + (Y.avail_out = re), + (Y.next_in = ie), + (Y.avail_in = ne), + ($.hold = oe), + ($.bits = de), + ($.wsize || (fe !== Y.avail_out && $.mode < V && ($.mode < Q || Z !== d))) && + he(Y, Y.output, Y.next_out, fe - Y.avail_out) + ? (($.mode = W), w) + : ((le -= Y.avail_in), + (fe -= Y.avail_out), + (Y.total_in += le), + (Y.total_out += fe), + ($.total += fe), + $.wrap && + fe && + (Y.adler = $.check = + $.flags ? t($.check, te, fe, Y.next_out - fe) : a($.check, te, fe, Y.next_out - fe)), + (Y.data_type = + $.bits + ($.last ? 64 : 0) + ($.mode === R ? 128 : 0) + ($.mode === N || $.mode === D ? 256 : 0)), + ((0 === le && 0 === fe) || Z === d) && ye === c && (ye = u), + ye) + ) + } + function be(e) { + if (!e || !e.state) return b + var a = e.state + return a.window && (a.window = null), (e.state = null), c + } + function me(e, a) { + var t + return e && e.state ? (0 == (2 & (t = e.state).wrap) ? b : ((t.head = a), (a.done = !1), c)) : b + } + function we(e, t) { + var i, + s = t.length + return e && e.state + ? 0 !== (i = e.state).wrap && i.mode !== I + ? b + : i.mode === I && a(1, t, s, 0) !== i.check + ? m + : he(e, t, s, s) + ? ((i.mode = W), w) + : ((i.havedict = 1), c) + : b + } + ;(exports.inflateReset = se), + (exports.inflateReset2 = ne), + (exports.inflateResetKeep = ie), + (exports.inflateInit = oe), + (exports.inflateInit2 = re), + (exports.inflate = ke), + (exports.inflateEnd = be), + (exports.inflateGetHeader = me), + (exports.inflateSetDictionary = we), + (exports.inflateInfo = 'pako inflate (from Nodeca project)') + }, + {'../utils/common': 'tbG5', './adler32': 'uxo6', './crc32': 'X4kj', './inffast': 'LP5M', './inftrees': 'uNlq'}, + ], + xUUw: [ + function (require, module, exports) { + 'use strict' + module.exports = { + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_TREES: 6, + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + Z_BUF_ERROR: -5, + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, + Z_BINARY: 0, + Z_TEXT: 1, + Z_UNKNOWN: 2, + Z_DEFLATED: 8, + } + }, + {}, + ], + WIli: [ + function (require, module, exports) { + 'use strict' + function t() { + ;(this.text = 0), + (this.time = 0), + (this.xflags = 0), + (this.os = 0), + (this.extra = null), + (this.extra_len = 0), + (this.name = ''), + (this.comment = ''), + (this.hcrc = 0), + (this.done = !1) + } + module.exports = t + }, + {}, + ], + faQk: [ + function (require, module, exports) { + 'use strict' + var t = require('./zlib/inflate'), + i = require('./utils/common'), + n = require('./utils/strings'), + s = require('./zlib/constants'), + r = require('./zlib/messages'), + e = require('./zlib/zstream'), + o = require('./zlib/gzheader'), + u = Object.prototype.toString + function a(n) { + if (!(this instanceof a)) return new a(n) + this.options = i.assign({chunkSize: 16384, windowBits: 0, to: ''}, n || {}) + var u = this.options + u.raw && + u.windowBits >= 0 && + u.windowBits < 16 && + ((u.windowBits = -u.windowBits), 0 === u.windowBits && (u.windowBits = -15)), + !(u.windowBits >= 0 && u.windowBits < 16) || (n && n.windowBits) || (u.windowBits += 32), + u.windowBits > 15 && u.windowBits < 48 && 0 == (15 & u.windowBits) && (u.windowBits |= 15), + (this.err = 0), + (this.msg = ''), + (this.ended = !1), + (this.chunks = []), + (this.strm = new e()), + (this.strm.avail_out = 0) + var h = t.inflateInit2(this.strm, u.windowBits) + if (h !== s.Z_OK) throw new Error(r[h]) + ;(this.header = new o()), t.inflateGetHeader(this.strm, this.header) + } + function h(t, i) { + var n = new a(i) + if ((n.push(t, !0), n.err)) throw n.msg || r[n.err] + return n.result + } + function _(t, i) { + return ((i = i || {}).raw = !0), h(t, i) + } + ;(a.prototype.push = function (r, e) { + var o, + a, + h, + _, + w, + l, + d = this.strm, + f = this.options.chunkSize, + p = this.options.dictionary, + c = !1 + if (this.ended) return !1 + ;(a = e === ~~e ? e : !0 === e ? s.Z_FINISH : s.Z_NO_FLUSH), + 'string' == typeof r + ? (d.input = n.binstring2buf(r)) + : '[object ArrayBuffer]' === u.call(r) + ? (d.input = new Uint8Array(r)) + : (d.input = r), + (d.next_in = 0), + (d.avail_in = d.input.length) + do { + if ( + (0 === d.avail_out && ((d.output = new i.Buf8(f)), (d.next_out = 0), (d.avail_out = f)), + (o = t.inflate(d, s.Z_NO_FLUSH)) === s.Z_NEED_DICT && + p && + ((l = + 'string' == typeof p + ? n.string2buf(p) + : '[object ArrayBuffer]' === u.call(p) + ? new Uint8Array(p) + : p), + (o = t.inflateSetDictionary(this.strm, l))), + o === s.Z_BUF_ERROR && !0 === c && ((o = s.Z_OK), (c = !1)), + o !== s.Z_STREAM_END && o !== s.Z_OK) + ) + return this.onEnd(o), (this.ended = !0), !1 + d.next_out && + ((0 !== d.avail_out && + o !== s.Z_STREAM_END && + (0 !== d.avail_in || (a !== s.Z_FINISH && a !== s.Z_SYNC_FLUSH))) || + ('string' === this.options.to + ? ((h = n.utf8border(d.output, d.next_out)), + (_ = d.next_out - h), + (w = n.buf2string(d.output, h)), + (d.next_out = _), + (d.avail_out = f - _), + _ && i.arraySet(d.output, d.output, h, _, 0), + this.onData(w)) + : this.onData(i.shrinkBuf(d.output, d.next_out)))), + 0 === d.avail_in && 0 === d.avail_out && (c = !0) + } while ((d.avail_in > 0 || 0 === d.avail_out) && o !== s.Z_STREAM_END) + return ( + o === s.Z_STREAM_END && (a = s.Z_FINISH), + a === s.Z_FINISH + ? ((o = t.inflateEnd(this.strm)), this.onEnd(o), (this.ended = !0), o === s.Z_OK) + : a !== s.Z_SYNC_FLUSH || (this.onEnd(s.Z_OK), (d.avail_out = 0), !0) + ) + }), + (a.prototype.onData = function (t) { + this.chunks.push(t) + }), + (a.prototype.onEnd = function (t) { + t === s.Z_OK && + ('string' === this.options.to + ? (this.result = this.chunks.join('')) + : (this.result = i.flattenChunks(this.chunks))), + (this.chunks = []), + (this.err = t), + (this.msg = this.strm.msg) + }), + (exports.Inflate = a), + (exports.inflate = h), + (exports.inflateRaw = _), + (exports.ungzip = h) + }, + { + './zlib/inflate': 'GIDK', + './utils/common': 'tbG5', + './utils/strings': 'Q3ZD', + './zlib/constants': 'xUUw', + './zlib/messages': 'gMAY', + './zlib/zstream': 'bdtv', + './zlib/gzheader': 'WIli', + }, + ], + f4vO: [ + function (require, module, exports) { + 'use strict' + var e = require('./lib/utils/common').assign, + i = require('./lib/deflate'), + r = require('./lib/inflate'), + l = require('./lib/zlib/constants'), + s = {} + e(s, i, r, l), (module.exports = s) + }, + {'./lib/utils/common': 'tbG5', './lib/deflate': 'nFS2', './lib/inflate': 'faQk', './lib/zlib/constants': 'xUUw'}, + ], + DstG: [ + function (require, module, exports) { + !(function (e) { + var a = String.fromCharCode + function s(e, s, c) { + for (var n = e[s], r = 1, i = 0, t = 0; t < s; t++) 10 === e[t] ? (r++, (i = 0)) : i++ + throw new SyntaxError( + c || + (s === e.length + ? 'Unexpected end of input while parsing JSON' + : n >= 32 && n <= 126 + ? 'Unexpected character ' + a(n) + ' in JSON at position ' + s + ' (line ' + r + ', column ' + i + ')' + : 'Unexpected byte 0x' + + n.toString(16) + + ' in JSON at position ' + + s + + ' (line ' + + r + + ', column ' + + i + + ')'), + ) + } + e.JSON_parse = function (e) { + if (!(e instanceof Uint8Array)) throw new Error('JSON input must be a Uint8Array') + for (var c, n = [], r = [], i = [], t = e.length, o = null, u = 0, f = 0; f < t; ) { + var p = e[f++] + if (!(p <= 32)) { + var l = void 0 + switch ((2 === u && null === o && 34 !== p && 125 !== p && s(e, --f), p)) { + case 116: + ;(114 === e[f++] && 117 === e[f++] && 101 === e[f++]) || s(e, --f), (l = !0) + break + case 102: + ;(97 === e[f++] && 108 === e[f++] && 115 === e[f++] && 101 === e[f++]) || s(e, --f), (l = !1) + break + case 110: + ;(117 === e[f++] && 108 === e[f++] && 108 === e[f++]) || s(e, --f), (l = null) + break + case 45: + case 46: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + var b = f + for (l = a(p), p = e[f]; ; ) { + switch (p) { + case 43: + case 45: + case 46: + case 48: + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + case 101: + case 69: + ;(l += a(p)), (p = e[++f]) + continue + } + break + } + ;(l = +l), isNaN(l) && s(e, --b, 'Invalid number') + break + case 34: + for (l = ''; f >= t && s(e, t), 34 !== (p = e[f++]); ) + if (92 === p) + switch (e[f++]) { + case 34: + l += '"' + break + case 47: + l += '/' + break + case 92: + l += '\\' + break + case 98: + l += '\b' + break + case 102: + l += '\f' + break + case 110: + l += '\n' + break + case 114: + l += '\r' + break + case 116: + l += '\t' + break + case 117: + for (var k = 0, h = 0; h < 4; h++) + (k <<= 4), + (p = e[f++]) >= 48 && p <= 57 + ? (k |= p - 48) + : p >= 97 && p <= 102 + ? (k |= p + -87) + : p >= 65 && p <= 70 + ? (k |= p + -55) + : s(e, --f) + l += a(k) + break + default: + s(e, --f) + } + else if (p <= 127) l += a(p) + else if (192 == (224 & p)) l += a(((31 & p) << 6) | (63 & e[f++])) + else if (224 == (240 & p)) l += a(((15 & p) << 12) | ((63 & e[f++]) << 6) | (63 & e[f++])) + else if (240 == (248 & p)) { + var d = ((7 & p) << 18) | ((63 & e[f++]) << 12) | ((63 & e[f++]) << 6) | (63 & e[f++]) + d > 65535 && ((l += a((((d -= 65536) >> 10) & 1023) | 55296)), (d = 56320 | (1023 & d))), + (l += a(d)) + } + l[0] + break + case 91: + ;(l = []), n.push(o), r.push(c), i.push(u), (o = null), (c = l), (u = 1) + continue + case 123: + ;(l = {}), n.push(o), r.push(c), i.push(u), (o = null), (c = l), (u = 2) + continue + case 93: + 1 !== u && s(e, --f), (l = c), (o = n.pop()), (c = r.pop()), (u = i.pop()) + break + case 125: + 2 !== u && s(e, --f), (l = c), (o = n.pop()), (c = r.pop()), (u = i.pop()) + break + default: + s(e, --f) + } + for (p = e[f]; p <= 32; ) p = e[++f] + switch (u) { + case 0: + if (f === t) return l + break + case 1: + if ((c.push(l), 44 === p)) { + f++ + continue + } + if (93 === p) continue + break + case 2: + if (null === o) { + if (((o = l), 58 === p)) { + f++ + continue + } + } else { + if (((c[o] = l), (o = null), 44 === p)) { + f++ + continue + } + if (125 === p) continue + } + } + break + } + } + s(e, f) + } + })('undefined' != typeof exports ? exports : this) + }, + {}, + ], + QTYz: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.withMockedFileChunkSizeForTests = o), + (exports.MaybeCompressedDataReader = + exports.TextProfileDataSource = + exports.StringBackedTextFileContent = + exports.BufferBackedTextFileContent = + void 0) + var e = n(require('pako')), + t = require('uint8array-json-parser') + function r() { + if ('function' != typeof WeakMap) return null + var e = new WeakMap() + return ( + (r = function () { + return e + }), + e + ) + } + function n(e) { + if (e && e.__esModule) return e + if (null === e || ('object' != typeof e && 'function' != typeof e)) return {default: e} + var t = r() + if (t && t.has(e)) return t.get(e) + var n = {}, + s = Object.defineProperty && Object.getOwnPropertyDescriptor + for (var i in e) + if (Object.prototype.hasOwnProperty.call(e, i)) { + var o = s ? Object.getOwnPropertyDescriptor(e, i) : null + o && (o.get || o.set) ? Object.defineProperty(n, i, o) : (n[i] = e[i]) + } + return (n.default = e), t && t.set(e, n), n + } + var s = function (e, t, r, n) { + return new (r || (r = Promise))(function (s, i) { + function o(e) { + try { + a(n.next(e)) + } catch (t) { + i(t) + } + } + function u(e) { + try { + a(n.throw(e)) + } catch (t) { + i(t) + } + } + function a(e) { + var t + e.done + ? s(e.value) + : ((t = e.value), + t instanceof r + ? t + : new r(function (e) { + e(t) + })).then(o, u) + } + a((n = n.apply(e, t || [])).next()) + }) + } + let i = 1 << 27 + function o(e, t) { + return s(this, void 0, void 0, function* () { + const r = i + i = e + try { + yield t() + } finally { + i = r + } + }) + } + function u(e) { + return ( + '[' === (e = e.trim())[0] && ']' !== (e = e.replace(/,\s*$/, ''))[e.length - 1] && (e += ']'), JSON.parse(e) + ) + } + function a(e) { + let r = 0 + for (let t = 0; t < e.length; t++) + if (!/\s/.exec(String.fromCharCode(e[t]))) { + r = t + break + } + if (e[r] === '['.charCodeAt(0) && e[e.length - 1] !== ']'.charCodeAt(0)) { + let t = e.length + for (; t > 0 && /\s/.exec(String.fromCharCode(e[t - 1])); ) t-- + if ((',' === String.fromCharCode(e[t - 1]) && t--, ']' !== String.fromCharCode(e[t - 1]))) { + const r = new Uint8Array(t + 1) + r.set(e.subarray(0, t)), (r[t] = ']'.charCodeAt(0)), (e = r) + } + } + return (0, t.JSON_parse)(e) + } + class c { + constructor(e) { + this.chunks = [] + const t = (this.byteArray = new Uint8Array(e)) + let r = 'utf-8' + if ( + (t.length > 2 && + (255 === t[0] && 254 === t[1] ? (r = 'utf-16le') : 254 === t[0] && 255 === t[1] && (r = 'utf-16be')), + 'undefined' != typeof TextDecoder) + ) { + const t = new TextDecoder(r) + for (let r = 0; r < e.byteLength / i; r++) { + const n = r * i, + s = new Uint8Array(e, n, Math.min(e.byteLength - n, i)), + o = t.decode(s, {stream: !0}) + this.chunks.push(o) + } + } else { + console.warn('This browser does not support TextDecoder. Decoding text as ASCII.'), this.chunks.push('') + for (let e = 0; e < t.length; e++) + (this.chunks[this.chunks.length - 1] += String.fromCharCode(t[e])), + this.chunks[this.chunks.length - 1], + this.chunks[this.chunks.length - 1].length >= i && this.chunks.push('') + } + } + splitLines() { + return { + [Symbol.iterator]: function* () { + let e = '' + for (let t of this.chunks) { + const r = t.split('\n') + for (let t = 0; t < r.length; t++) 0 === t ? (e += r[t]) : (yield e, (e = r[t])) + } + yield e + }.bind(this), + } + } + firstChunk() { + return this.chunks[0] || '' + } + parseAsJSON() { + return 1 === this.chunks.length ? u(this.chunks[0]) : a(this.byteArray) + } + } + exports.BufferBackedTextFileContent = c + class f { + constructor(e) { + this.s = e + } + splitLines() { + return this.s.split('\n') + } + firstChunk() { + return this.s + } + parseAsJSON() { + return u(this.s) + } + } + exports.StringBackedTextFileContent = f + class h { + constructor(e, t) { + ;(this.fileName = e), (this.contents = t) + } + name() { + return s(this, void 0, void 0, function* () { + return this.fileName + }) + } + readAsArrayBuffer() { + return s(this, void 0, void 0, function* () { + return new ArrayBuffer(0) + }) + } + readAsText() { + return s(this, void 0, void 0, function* () { + return new f(this.contents) + }) + } + } + exports.TextProfileDataSource = h + class l { + constructor(t, r) { + ;(this.namePromise = t), + (this.uncompressedData = r.then((t) => + s(this, void 0, void 0, function* () { + try { + return e.inflate(new Uint8Array(t)).buffer + } catch (r) { + return t + } + }), + )) + } + name() { + return s(this, void 0, void 0, function* () { + return yield this.namePromise + }) + } + readAsArrayBuffer() { + return s(this, void 0, void 0, function* () { + return yield this.uncompressedData + }) + } + readAsText() { + return s(this, void 0, void 0, function* () { + const e = yield this.readAsArrayBuffer() + return new c(e) + }) + } + static fromFile(e) { + const t = new Promise((t) => { + const r = new FileReader() + r.addEventListener('loadend', () => { + if (!(r.result instanceof ArrayBuffer)) + throw new Error('Expected reader.result to be an instance of ArrayBuffer') + t(r.result) + }), + r.readAsArrayBuffer(e) + }) + return new l(Promise.resolve(e.name), t) + } + static fromArrayBuffer(e, t) { + return new l(Promise.resolve(e), Promise.resolve(t)) + } + } + exports.MaybeCompressedDataReader = l + }, + {pako: 'f4vO', 'uint8array-json-parser': 'DstG'}, + ], + G28U: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.importFromInstrumentsDeepCopy = a), + (exports.importFromInstrumentsTrace = w), + (exports.importRunFromInstrumentsTrace = g), + (exports.importThreadFromInstrumentsTrace = b), + (exports.readInstrumentsKeyedArchive = y), + (exports.decodeUTF8 = v), + (exports.UID = void 0) + var e = require('../lib/profile'), + t = require('../lib/utils'), + r = require('../lib/value-formatters'), + n = require('./utils'), + s = function (e, t, r, n) { + return new (r || (r = Promise))(function (s, i) { + function o(e) { + try { + c(n.next(e)) + } catch (t) { + i(t) + } + } + function a(e) { + try { + c(n.throw(e)) + } catch (t) { + i(t) + } + } + function c(e) { + var t + e.done + ? s(e.value) + : ((t = e.value), + t instanceof r + ? t + : new r(function (e) { + e(t) + })).then(o, a) + } + c((n = n.apply(e, t || [])).next()) + }) + } + function i(e) { + const t = [...e.splitLines()].map((e) => e.split('\t')), + r = t.shift() + if (!r) return [] + const n = new Map() + for (let i = 0; i < r.length; i++) n.set(i, r[i]) + const s = [] + for (let i of t) { + const e = {} + for (let t = 0; t < i.length; t++) e[n.get(t)] = i[t] + s.push(e) + } + return s + } + function o(e) { + if ('Bytes Used' in e) { + const t = e['Bytes Used'], + r = /\s*(\d+(?:[.]\d+)?) (\w+)\s+(?:\d+(?:[.]\d+))%/.exec(t) + if (!r) return 0 + const n = parseInt(r[1], 10), + s = r[2] + switch (s) { + case 'Bytes': + return n + case 'KB': + return 1024 * n + case 'MB': + return 1048576 * n + case 'GB': + return 1073741824 * n + } + throw new Error(`Unrecognized units ${s}`) + } + if ('Weight' in e || 'Running Time' in e) { + const t = e.Weight || e['Running Time'], + r = /\s*(\d+(?:[.]\d+)?) ?(\w+)\s+(?:\d+(?:[.]\d+))%/.exec(t) + if (!r) return 0 + const n = parseInt(r[1], 10), + s = r[2] + switch (s) { + case 'ms': + return n + case 's': + return 1e3 * n + case 'min': + return 6e4 * n + case 'cycles': + return n + case 'Kc': + return 1e3 * n + case 'Mc': + return 1e6 * n + case 'Gc': + return 1e9 * n + } + throw new Error(`Unrecognized units ${s}`) + } + return -1 + } + function a(t) { + var n + const s = new e.CallTreeProfileBuilder(), + a = i(t), + c = [] + let l = 0, + u = a[0]['Symbol Names'] ? a[0]['Symbol Names'].lastIndexOf(' ') + 1 : 0 + for (let e of a) { + const t = e['Symbol Name'] || (null === (n = e['Symbol Names']) || void 0 === n ? void 0 : n.slice(u)) + if (!t) continue + const r = t.trim() + let i = t.length - r.length + if (c.length - i < 0) throw new Error('Invalid format') + let a = [] + for (; i < c.length; ) { + const e = c.pop() + a.push(e) + } + for (let e of a) (l = Math.max(l, e.endValue)), s.leaveFrame(e, l) + const f = {key: `${e['Source Path'] || ''}:${r}`, name: r, file: e['Source Path'], endValue: l + o(e)} + s.enterFrame(f, l), c.push(f) + } + for (; c.length > 0; ) { + const e = c.pop() + ;(l = Math.max(l, e.endValue)), s.leaveFrame(e, l) + } + return ( + 'Bytes Used' in a[0] + ? s.setValueFormatter(new r.ByteFormatter()) + : ('Weight' in a[0] || 'Running Time' in a[0]) && + s.setValueFormatter(new r.TimeFormatter('milliseconds')), + s.build() + ) + } + function c(e) { + return s(this, void 0, void 0, function* () { + const t = {name: e.name, files: new Map(), subdirectories: new Map()}, + r = yield new Promise((t, r) => { + e.createReader().readEntries((e) => { + t(e) + }, r) + }) + for (let e of r) + if (e.isDirectory) { + const r = yield c(e) + t.subdirectories.set(r.name, r) + } else { + const r = yield new Promise((t, r) => { + e.file(t, r) + }) + t.files.set(r.name, r) + } + return t + }) + } + function l(e) { + return n.MaybeCompressedDataReader.fromFile(e).readAsArrayBuffer() + } + function u(e) { + return n.MaybeCompressedDataReader.fromFile(e).readAsText() + } + function f(e, r) { + const n = (0, t.getOrThrow)(e.subdirectories, 'corespace'), + s = (0, t.getOrThrow)(n.subdirectories, `run${r}`) + return (0, t.getOrThrow)(s.subdirectories, 'core') + } + class h { + constructor(e) { + ;(this.bytePos = 0), (this.view = new DataView(e)) + } + seek(e) { + this.bytePos = e + } + skip(e) { + this.bytePos += e + } + hasMore() { + return this.bytePos < this.view.byteLength + } + bytesLeft() { + return this.view.byteLength - this.bytePos + } + readUint8() { + return this.bytePos++, this.bytePos > this.view.byteLength ? 0 : this.view.getUint8(this.bytePos - 1) + } + readUint32() { + return ( + (this.bytePos += 4), this.bytePos > this.view.byteLength ? 0 : this.view.getUint32(this.bytePos - 4, !0) + ) + } + readUint48() { + return ( + (this.bytePos += 6), + this.bytePos > this.view.byteLength + ? 0 + : this.view.getUint32(this.bytePos - 6, !0) + + this.view.getUint16(this.bytePos - 2, !0) * Math.pow(2, 32) + ) + } + readUint64() { + return ( + (this.bytePos += 8), + this.bytePos > this.view.byteLength + ? 0 + : this.view.getUint32(this.bytePos - 8, !0) + + this.view.getUint32(this.bytePos - 4, !0) * Math.pow(2, 32) + ) + } + } + function p(e) { + return s(this, void 0, void 0, function* () { + const r = (0, t.getOrThrow)(e.subdirectories, 'stores') + for (let e of r.subdirectories.values()) { + const r = e.files.get('schema.xml') + if (!r) continue + const n = yield u(r) + if (!/name="time-profile"/.exec(n.firstChunk())) continue + const s = new h(yield l((0, t.getOrThrow)(e.files, 'bulkstore'))) + s.readUint32(), s.readUint32(), s.readUint32() + const i = s.readUint32(), + o = s.readUint32() + s.seek(i) + const a = [] + for (;;) { + const e = s.readUint48() + if (0 === e) break + const t = s.readUint32() + s.skip(o - 6 - 4 - 4) + const r = s.readUint32() + a.push({timestamp: e, threadID: t, backtraceID: r}) + } + return a + } + throw new Error('Could not find sample list') + }) + } + function d(e, r) { + return s(this, void 0, void 0, function* () { + const e = (0, t.getOrThrow)(r.subdirectories, 'uniquing'), + n = (0, t.getOrThrow)(e.subdirectories, 'arrayUniquer'), + s = (0, t.getOrThrow)(n.files, 'integeruniquer.index'), + i = (0, t.getOrThrow)(n.files, 'integeruniquer.data'), + o = new h(yield l(s)), + a = new h(yield l(i)) + o.seek(32) + let c = [] + for (; o.hasMore(); ) { + const e = o.readUint32() + 1048576 * o.readUint32() + if (0 === e) continue + a.seek(e) + let t = a.readUint32(), + r = [] + for (; t--; ) r.push(a.readUint64()) + c.push(r) + } + return c + }) + } + function m(e) { + return s(this, void 0, void 0, function* () { + const r = (0, t.getOrThrow)(e.files, 'form.template'), + n = y(yield l(r)), + s = n['com.apple.xray.owner.template.version'] + let i = 1 + 'com.apple.xray.owner.template' in n && (i = n['com.apple.xray.owner.template'].get('_selectedRunNumber')) + let o = n.$1 + 'stubInfoByUUID' in n && (o = Array.from(n.stubInfoByUUID.keys())[0]) + const a = n['com.apple.xray.run.data'], + c = [] + for (let e of a.runNumbers) { + const r = (0, t.getOrThrow)(a.runData, e), + n = (0, t.getOrThrow)(r, 'symbolsByPid'), + s = new Map() + for (let i of n.values()) { + for (let e of i.symbols) { + if (!e) continue + const {sourcePath: r, symbolName: n, addressToLine: i} = e + for (let e of i.keys()) + (0, t.getOrInsert)(s, e, () => { + const s = n || `0x${(0, t.zeroPad)(e.toString(16), 16)}`, + i = {key: `${r}:${s}`, name: s} + return r && (i.file = r), i + }) + } + c.push({number: e, addressToFrameMap: s}) + } + } + return {version: s, instrument: o, selectedRunNumber: i, runs: c} + }) + } + function w(e) { + return s(this, void 0, void 0, function* () { + const t = yield c(e), + {version: r, runs: n, instrument: s, selectedRunNumber: i} = yield m(t) + if ('com.apple.xray.instrument-type.coresampler2' !== s) + throw new Error( + `The only supported instrument from .trace import is "com.apple.xray.instrument-type.coresampler2". Got ${s}`, + ) + console.log('version: ', r), console.log('Importing time profile') + const o = [] + let a = 0 + for (let c of n) { + const {addressToFrameMap: r, number: n} = c, + s = yield g({fileName: e.name, tree: t, addressToFrameMap: r, runNumber: n}) + c.number === i && (a = o.length + s.indexToView), o.push(...s.profiles) + } + return {name: e.name, indexToView: a, profiles: o} + }) + } + function g(e) { + return s(this, void 0, void 0, function* () { + const {fileName: r, tree: n, addressToFrameMap: s, runNumber: i} = e, + o = f(n, i) + let a = yield p(o) + const c = yield d(a, o), + l = new Map() + for (let e of a) l.set(e.threadID, (0, t.getOrElse)(l, e.threadID, () => 0) + 1) + const u = Array.from(l.entries()) + ;(0, t.sortBy)(u, (e) => -e[1]) + const h = u.map((e) => e[0]) + return { + name: r, + indexToView: 0, + profiles: h.map((e) => b({threadID: e, fileName: r, arrays: c, addressToFrameMap: s, samples: a})), + } + }) + } + function b(n) { + let {fileName: s, addressToFrameMap: i, arrays: o, threadID: a, samples: c} = n + const l = new Map() + c = c.filter((e) => e.threadID === a) + const u = new e.StackListProfileBuilder((0, t.lastOf)(c).timestamp) + function f(e, r) { + const n = i.get(e) + if (n) r.push(n) + else if (e in o) for (let t of o[e]) f(t, r) + else { + const n = {key: e, name: `0x${(0, t.zeroPad)(e.toString(16), 16)}`} + i.set(e, n), r.push(n) + } + } + u.setName(`${s} - thread ${a}`) + let h = null + for (let e of c) { + const r = (0, t.getOrInsert)(l, e.backtraceID, (e) => { + const t = [] + return f(e, t), t.reverse(), t + }) + if ((null === h && (u.appendSampleWithWeight([], e.timestamp), (h = e.timestamp)), e.timestamp < h)) + throw new Error('Timestamps out of order!') + u.appendSampleWithWeight(r, e.timestamp - h), (h = e.timestamp) + } + return u.setValueFormatter(new r.TimeFormatter('nanoseconds')), u.build() + } + function y(e) { + return T(I(new Uint8Array(e)), (e, t) => { + switch (e) { + case 'NSTextStorage': + case 'NSParagraphStyle': + case 'NSFont': + return null + case 'PFTSymbolData': { + const e = Object.create(null) + ;(e.symbolName = t.$0), (e.sourcePath = t.$1), (e.addressToLine = new Map()) + for (let r = 3; ; r += 2) { + const n = t['$' + r], + s = t['$' + (r + 1)] + if (null == n || null == s) break + e.addressToLine.set(n, s) + } + return e + } + case 'PFTOwnerData': { + const e = Object.create(null) + return (e.ownerName = t.$0), (e.ownerPath = t.$1), e + } + case 'PFTPersistentSymbols': { + const e = Object.create(null), + r = t.$4 + ;(e.threadNames = t.$3), (e.symbols = []) + for (let n = 1; n < r; n++) e.symbols.push(t['$' + (4 + n)]) + return e + } + case 'XRRunListData': { + const e = Object.create(null) + return (e.runNumbers = t.$0), (e.runData = t.$1), e + } + case 'XRIntKeyedDictionary': { + const e = new Map(), + r = t.$0 + for (let n = 0; n < r; n++) { + const r = t['$' + (1 + 2 * n)], + s = t['$' + (2 * n + 1 + 1)] + e.set(r, s) + } + return e + } + case 'XRCore': { + const e = Object.create(null) + return (e.number = t.$0), (e.name = t.$1), e + } + } + return t + }) + } + function v(e) { + let t = String.fromCharCode.apply(String, Array.from(e)) + return '\0' === t.slice(-1) && (t = t.slice(0, -1)), decodeURIComponent(escape(t)) + } + function S(e) { + return e instanceof Array + } + function U(e) { + return null !== e && 'object' == typeof e && null === Object.getPrototypeOf(e) + } + function N(e, t) { + return t instanceof x ? e[t.index] : t + } + function T(e, t = (e) => e) { + if (1e5 !== e.$version || 'NSKeyedArchiver' !== e.$archiver || !U(e.$top) || !S(e.$objects)) + throw new Error('Invalid keyed archive') + '$null' === e.$objects[0] && (e.$objects[0] = null) + for (let n = 0; n < e.$objects.length; n++) e.$objects[n] = $(e.$objects, e.$objects[n], t) + let r = (t) => { + if (t instanceof x) return e.$objects[t.index] + if (S(t)) for (let e = 0; e < t.length; e++) t[e] = r(t[e]) + else if (U(t)) for (let e in t) t[e] = r(t[e]) + else if (t instanceof Map) { + const e = new Map(t) + t.clear() + for (let [n, s] of e.entries()) t.set(r(n), r(s)) + } + return t + } + for (let n = 0; n < e.$objects.length; n++) r(e.$objects[n]) + return r(e.$top) + } + function $(e, t, r = (e) => e) { + if (U(t) && t.$class) { + let n = N(e, t.$class).$classname + switch (n) { + case 'NSDecimalNumberPlaceholder': { + let e = t['NS.length'], + r = t['NS.exponent'], + n = t['NS.mantissa.bo'], + s = t['NS.negative'], + i = new Uint16Array(new Uint8Array(t['NS.mantissa']).buffer), + o = 0 + for (let t = 0; t < e; t++) { + let e = i[t] + 1 !== n && (e = ((65280 & e) >> 8) | ((255 & e) << 8)), (o += e * Math.pow(65536, t)) + } + return (o *= Math.pow(10, r)), s ? -o : o + } + case 'NSData': + case 'NSMutableData': + return t['NS.bytes'] || t['NS.data'] + case 'NSString': + case 'NSMutableString': + return t['NS.string'] + ? t['NS.string'] + : t['NS.bytes'] + ? v(t['NS.bytes']) + : (console.warn(`Unexpected ${n} format: `, t), null) + case 'NSArray': + case 'NSMutableArray': + if ('NS.objects' in t) return t['NS.objects'] + let e = [] + for (;;) { + let r = 'NS.object.' + e.length + if (!(r in t)) break + e.push(t[r]) + } + return e + case '_NSKeyedCoderOldStyleArray': { + const e = t['NS.count'] + let r = [] + for (let n = 0; n < e; n++) { + const e = t['$' + n] + r.push(e) + } + return r + } + case 'NSDictionary': + case 'NSMutableDictionary': + let s = new Map() + if ('NS.keys' in t && 'NS.objects' in t) + for (let r = 0; r < t['NS.keys'].length; r++) s.set(t['NS.keys'][r], t['NS.objects'][r]) + else + for (;;) { + let e = 'NS.key.' + s.size, + r = 'NS.object.' + s.size + if (!(e in t && r in t)) break + s.set(t[e], t[r]) + } + return s + default: + const i = r(n, t) + if (i !== t) return i + } + } + return t + } + class x { + constructor(e) { + this.index = e + } + } + function I(e) { + for (let t = 0; t < 8; t++) + if (e[t] !== 'bplist00'.charCodeAt(t)) throw new Error('File is not a binary plist') + return new M(new DataView(e.buffer, e.byteOffset, e.byteLength)).parseRoot() + } + exports.UID = x + class M { + constructor(e) { + ;(this.view = e), (this.referenceSize = 0), (this.objects = []), (this.offsetTable = []) + } + parseRoot() { + let e = this.view.byteLength - 32, + t = this.view.getUint8(e + 6) + this.referenceSize = this.view.getUint8(e + 7) + let r = this.view.getUint32(e + 12, !1), + n = this.view.getUint32(e + 20, !1), + s = this.view.getUint32(e + 28, !1) + for (let i = 0; i < r; i++) this.offsetTable.push(this.parseInteger(s, t)), (s += t) + return this.parseObject(this.offsetTable[n]) + } + parseLengthAndOffset(e, t) { + if (15 !== t) return {length: t, offset: 0} + let r = this.view.getUint8(e++) + if (16 != (240 & r)) throw new Error('Unexpected non-integer length at offset ' + e) + let n = 1 << (15 & r) + return {length: this.parseInteger(e, n), offset: n + 1} + } + parseSingleton(e, t) { + if (0 === t) return null + if (8 === t) return !1 + if (9 === t) return !0 + throw new Error('Unexpected extra value ' + t + ' at offset ' + e) + } + parseInteger(e, t) { + if (1 === t) return this.view.getUint8(e) + if (2 === t) return this.view.getUint16(e, !1) + if (4 === t) return this.view.getUint32(e, !1) + if (8 === t) + return Math.pow(2, 32) * this.view.getUint32(e + 0, !1) + Math.pow(2, 0) * this.view.getUint32(e + 4, !1) + if (16 === t) + return ( + Math.pow(2, 96) * this.view.getUint32(e + 0, !1) + + Math.pow(2, 64) * this.view.getUint32(e + 4, !1) + + Math.pow(2, 32) * this.view.getUint32(e + 8, !1) + + Math.pow(2, 0) * this.view.getUint32(e + 12, !1) + ) + throw new Error('Unexpected integer of size ' + t + ' at offset ' + e) + } + parseFloat(e, t) { + if (4 === t) return this.view.getFloat32(e, !1) + if (8 === t) return this.view.getFloat64(e, !1) + throw new Error('Unexpected float of size ' + t + ' at offset ' + e) + } + parseDate(e, t) { + if (8 !== t) throw new Error('Unexpected date of size ' + t + ' at offset ' + e) + let r = this.view.getFloat64(e, !1) + return new Date(9783072e5 + 1e3 * r) + } + parseData(e, t) { + let r = this.parseLengthAndOffset(e, t) + return new Uint8Array(this.view.buffer, e + r.offset, r.length) + } + parseStringASCII(e, t) { + let r = this.parseLengthAndOffset(e, t), + n = '' + e += r.offset + for (let s = 0; s < r.length; s++) n += String.fromCharCode(this.view.getUint8(e++)) + return n + } + parseStringUTF16(e, t) { + let r = this.parseLengthAndOffset(e, t), + n = '' + e += r.offset + for (let s = 0; s < r.length; s++) (n += String.fromCharCode(this.view.getUint16(e, !1))), (e += 2) + return n + } + parseUID(e, t) { + return new x(this.parseInteger(e, t)) + } + parseArray(e, t) { + let r = this.parseLengthAndOffset(e, t), + n = [], + s = this.referenceSize + e += r.offset + for (let i = 0; i < r.length; i++) + n.push(this.parseObject(this.offsetTable[this.parseInteger(e, s)])), (e += s) + return n + } + parseDictionary(e, t) { + let r = this.parseLengthAndOffset(e, t), + n = Object.create(null), + s = this.referenceSize, + i = e + r.offset, + o = i + r.length * s + for (let a = 0; a < r.length; a++) { + let e = this.parseObject(this.offsetTable[this.parseInteger(i, s)]), + t = this.parseObject(this.offsetTable[this.parseInteger(o, s)]) + if ('string' != typeof e) throw new Error('Unexpected non-string key at offset ' + i) + ;(n[e] = t), (i += s), (o += s) + } + return n + } + parseObject(e) { + let t = this.view.getUint8(e++), + r = 15 & t + switch (t >> 4) { + case 0: + return this.parseSingleton(e, r) + case 1: + return this.parseInteger(e, 1 << r) + case 2: + return this.parseFloat(e, 1 << r) + case 3: + return this.parseDate(e, 1 << r) + case 4: + return this.parseData(e, r) + case 5: + return this.parseStringASCII(e, r) + case 6: + return this.parseStringUTF16(e, r) + case 8: + return this.parseUID(e, r + 1) + case 10: + return this.parseArray(e, r) + case 13: + return this.parseDictionary(e, r) + } + throw new Error('Unexpected marker ' + t + ' at offset ' + --e) + } + } + }, + {'../lib/profile': 'YG8z', '../lib/utils': 'ucYa', '../lib/value-formatters': 'LsM4', './utils': 'QTYz'}, + ], + flbo: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromBGFlameGraph = r) + var e = require('../lib/profile') + function t(e) { + const t = [] + for (const r of e.splitLines()) { + const e = /^(.*) (\d+)$/gm.exec(r) + if (!e) continue + const n = e[1], + i = e[2] + t.push({stack: n.split(';').map((e) => ({key: e, name: e})), duration: parseInt(i, 10)}) + } + return t + } + function r(r) { + const n = t(r), + i = n.reduce((e, t) => e + t.duration, 0), + o = new e.StackListProfileBuilder(i) + if (0 === n.length) return null + for (let e of n) o.appendSampleWithWeight(e.stack, e.duration) + return o.build() + } + }, + {'../lib/profile': 'YG8z'}, + ], + uNW1: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromFirefox = l) + var e = require('../lib/profile'), + t = require('../lib/utils'), + r = require('../lib/value-formatters') + function l(l) { + const n = l.profile, + s = 1 === n.threads.length ? n.threads[0] : n.threads.filter((e) => 'GeckoMain' === e.name)[0], + a = new Map() + function o(e) { + let r = e[0] + const l = [] + for (; null != r; ) { + const e = s.stackTable.data[r], + [t, n] = e + l.push(n), (r = t) + } + return ( + l.reverse(), + l + .map((e) => { + const r = s.frameTable.data[e], + l = s.stringTable[r[0]], + n = /(.*)\s+\((.*?)(?::(\d+))?(?::(\d+))?\)$/.exec(l) + return n + ? n[2].startsWith('resource:') || 'self-hosted' === n[2] || n[2].startsWith('self-hosted:') + ? null + : (0, t.getOrInsert)(a, l, () => ({ + key: l, + name: n[1], + file: n[2], + line: n[3] ? parseInt(n[3]) : void 0, + col: n[4] ? parseInt(n[4]) + 1 : void 0, + })) + : null + }) + .filter((e) => null != e) + ) + } + const i = new e.CallTreeProfileBuilder(l.duration) + let u = [] + for (let e of s.samples.data) { + const t = o(e), + r = e[1] + let l = -1 + for (let e = 0; e < Math.min(t.length, u.length) && u[e] === t[e]; e++) l = e + for (let e = u.length - 1; e > l; e--) i.leaveFrame(u[e], r) + for (let e = l + 1; e < t.length; e++) i.enterFrame(t[e], r) + u = t + } + return i.setValueFormatter(new r.TimeFormatter('milliseconds')), i.build() + } + }, + {'../lib/profile': 'YG8z', '../lib/utils': 'ucYa', '../lib/value-formatters': 'LsM4'}, + ], + QV03: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromV8ProfLog = n) + var e = require('../lib/profile'), + t = require('../lib/utils'), + r = require('../lib/value-formatters') + function a(e, t) { + if (!e || !e.type) return {key: '(unknown type)', name: '(unknown type)'} + let r = e.name + switch (e.type) { + case 'CPP': { + const e = r.match(/[tT] ([^(<]*)/) + e && (r = `(c++) ${e[1]}`) + break + } + case 'SHARED_LIB': + r = '(LIB) ' + r + break + case 'JS': { + const e = r.match(/([a-zA-Z0-9\._\-$]*) ([a-zA-Z0-9\.\-_\/$]*):(\d+):(\d+)/) + if (e) { + const t = e[2], + a = parseInt(e[3], 10), + n = parseInt(e[4], 10) + return { + key: r, + name: e[1].length > 0 ? e[1] : t ? `(anonymous ${t.split('/').pop()}:${a})` : '(anonymous)', + file: t.length > 0 ? t : '(unknown file)', + line: a, + col: n, + } + } + break + } + case 'CODE': + switch (e.kind) { + case 'LoadIC': + case 'StoreIC': + case 'KeyedStoreIC': + case 'KeyedLoadIC': + case 'LoadGlobalIC': + case 'Handler': + r = '(IC) ' + r + break + case 'BytecodeHandler': + r = '(bytecode) ~' + r + break + case 'Stub': + r = '(stub) ' + r + break + case 'Builtin': + r = '(builtin) ' + r + break + case 'RegExp': + r = '(regexp) ' + r + } + break + default: + r = `(${e.type}) ${r}` + } + return {key: r, name: r} + } + function n(n) { + const o = new e.StackListProfileBuilder(), + s = new Map() + let c = 0 + ;(0, t.sortBy)(n.ticks, (e) => e.tm) + for (let e of n.ticks) { + const r = [] + for (let o = e.s.length - 2; o >= 0; o -= 2) { + const c = e.s[o] + ;-1 !== c && + (c > n.code.length + ? r.push({key: c, name: `0x${c.toString(16)}`}) + : r.push(((i = c), (0, t.getOrInsert)(s, i, (e) => a(n.code[e], n))))) + } + o.appendSampleWithWeight(r, e.tm - c), (c = e.tm) + } + var i + return o.setValueFormatter(new r.TimeFormatter('microseconds')), o.build() + } + }, + {'../lib/profile': 'YG8z', '../lib/utils': 'ucYa', '../lib/value-formatters': 'LsM4'}, + ], + f2sa: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromLinuxPerf = l) + var e = require('../lib/profile'), + t = require('../lib/utils'), + n = require('../lib/value-formatters') + function* r(e) { + let t = [] + for (let n of e.splitLines()) '' === n ? (yield s(t), (t = [])) : t.push(n) + t.length > 0 && (yield s(t)) + } + function s(e) { + const t = e.filter((e) => !/^\s*#/.exec(e)), + n = {command: null, processID: null, threadID: null, time: null, eventType: '', stack: []}, + r = t.shift() + if (!r) return null + const s = /^(\S.+?)\s+(\d+)(?:\/?(\d+))?\s+/.exec(r) + if (!s) return null + ;(n.command = s[1]), + s[3] + ? ((n.processID = parseInt(s[2], 10)), (n.threadID = parseInt(s[3], 10))) + : (n.threadID = parseInt(s[2], 10)) + const l = /\s+(\d+\.\d+):\s+/.exec(r) + l && (n.time = parseFloat(l[1])) + const i = /(\S+):\s*$/.exec(r) + i && (n.eventType = i[1]) + for (let o of t) { + const e = /^\s*(\w+)\s*(.+) \((\S*)\)/.exec(o) + if (!e) continue + let [, t, r, s] = e + ;(r = r.replace(/\+0x[\da-f]+$/, '')), n.stack.push({address: `0x${t}`, symbolName: r, file: s}) + } + return n.stack.reverse(), n + } + function l(s) { + const l = new Map() + let i = null + for (let o of r(s)) { + if (null == o) continue + if (null != i && i != o.eventType) continue + if (null == o.time) continue + i = o.eventType + let r = [] + o.command && r.push(o.command), + o.processID && r.push(`pid: ${o.processID}`), + o.threadID && r.push(`tid: ${o.threadID}`) + const s = r.join(' ') + ;(0, t.getOrInsert)(l, s, () => { + const t = new e.StackListProfileBuilder() + return t.setName(s), t.setValueFormatter(new n.TimeFormatter('seconds')), t + }).appendSampleWithTimestamp( + o.stack.map(({symbolName: e, file: t}) => ({ + key: `${e} (${t})`, + name: '[unknown]' === e ? `??? (${t})` : e, + file: t, + })), + o.time, + ) + } + return 0 === l.size + ? null + : { + name: 1 === l.size ? Array.from(l.keys())[0] : '', + indexToView: 0, + profiles: Array.from((0, t.itMap)(l.values(), (e) => e.build())), + } + } + }, + {'../lib/profile': 'YG8z', '../lib/utils': 'ucYa', '../lib/value-formatters': 'LsM4'}, + ], + jm73: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromHaskell = l) + var e = require('../lib/profile'), + r = require('../lib/value-formatters') + function t(e, r, l, o, i) { + if (0 === e.ticks && 0 === e.entries && 0 === e.alloc && 0 === e.children.length) return r + let a = r, + s = o.get(e.id) + l.enterFrame(s, a) + for (let n of e.children) a = t(n, a, l, o, i) + return (a += i(e)), l.leaveFrame(s, a), a + } + function l(l) { + const o = new Map() + for (let e of l.cost_centres) { + const r = {key: e.id, name: `${e.module}.${e.label}`} + e.src_loc.startsWith('<') || (r.file = e.src_loc), o.set(e.id, r) + } + const i = new e.CallTreeProfileBuilder(l.total_ticks) + t(l.profile, 0, i, o, (e) => e.ticks), + i.setValueFormatter(new r.TimeFormatter('milliseconds')), + i.setName(`${l.program} time`) + const a = new e.CallTreeProfileBuilder(l.total_ticks) + return ( + t(l.profile, 0, a, o, (e) => e.alloc), + a.setValueFormatter(new r.ByteFormatter()), + a.setName(`${l.program} allocation`), + {name: l.program, indexToView: 0, profiles: [i.build(), a.build()]} + ) + } + }, + {'../lib/profile': 'YG8z', '../lib/value-formatters': 'LsM4'}, + ], + jP3w: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromSafari = i) + var e = require('../lib/profile'), + r = require('../lib/value-formatters') + function t(e) { + return e + .map(({name: e, url: r, line: t, column: i}) => ({ + key: `${e}:${r}:${t}:${i}`, + file: r, + line: t, + col: i, + name: e || (r ? `(anonymous ${r.split('/').pop()}:${t})` : '(anonymous)'), + })) + .reverse() + } + function i(i) { + 1 !== i.version && console.warn(`Unknown Safari profile version ${i.version}... Might be incompatible.`) + const {recording: n} = i, + {sampleStackTraces: a, sampleDurations: o} = n, + s = a.length + if (s < 1) return console.warn('Empty profile'), null + const l = a[s - 1].timestamp - a[0].timestamp + o[0], + m = new e.StackListProfileBuilder(l) + let p = Number.MAX_VALUE + return ( + a.forEach((e, r) => { + const i = e.timestamp, + n = o[r], + a = i - n - p + a > 0.002 && m.appendSampleWithWeight([], a), m.appendSampleWithWeight(t(e.stackFrames), n), (p = i) + }), + m.setValueFormatter(new r.TimeFormatter('seconds')), + m.setName(n.displayName), + m.build() + ) + } + }, + {'../lib/profile': 'YG8z', '../lib/value-formatters': 'LsM4'}, + ], + oU4k: [ + function (require, module, exports) { + 'use strict' + function n(n, e) { + for (var r = new Array(arguments.length - 1), t = 0, l = 2, o = !0; l < arguments.length; ) + r[t++] = arguments[l++] + return new Promise(function (l, u) { + r[t] = function (n) { + if (o) + if (((o = !1), n)) u(n) + else { + for (var e = new Array(arguments.length - 1), r = 0; r < e.length; ) e[r++] = arguments[r] + l.apply(null, e) + } + } + try { + n.apply(e || null, r) + } catch (a) { + o && ((o = !1), u(a)) + } + }) + } + module.exports = n + }, + {}, + ], + SASd: [ + function (require, module, exports) { + 'use strict' + var r = exports + r.length = function (r) { + var e = r.length + if (!e) return 0 + for (var a = 0; --e % 4 > 1 && '=' === r.charAt(e); ) ++a + return Math.ceil(3 * r.length) / 4 - a + } + for (var e = new Array(64), a = new Array(123), t = 0; t < 64; ) + a[(e[t] = t < 26 ? t + 65 : t < 52 ? t + 71 : t < 62 ? t - 4 : (t - 59) | 43)] = t++ + r.encode = function (r, a, t) { + for (var n, i = null, o = [], c = 0, s = 0; a < t; ) { + var h = r[a++] + switch (s) { + case 0: + ;(o[c++] = e[h >> 2]), (n = (3 & h) << 4), (s = 1) + break + case 1: + ;(o[c++] = e[n | (h >> 4)]), (n = (15 & h) << 2), (s = 2) + break + case 2: + ;(o[c++] = e[n | (h >> 6)]), (o[c++] = e[63 & h]), (s = 0) + } + c > 8191 && ((i || (i = [])).push(String.fromCharCode.apply(String, o)), (c = 0)) + } + return ( + s && ((o[c++] = e[n]), (o[c++] = 61), 1 === s && (o[c++] = 61)), + i + ? (c && i.push(String.fromCharCode.apply(String, o.slice(0, c))), i.join('')) + : String.fromCharCode.apply(String, o.slice(0, c)) + ) + } + var n = 'invalid encoding' + ;(r.decode = function (r, e, t) { + for (var i, o = t, c = 0, s = 0; s < r.length; ) { + var h = r.charCodeAt(s++) + if (61 === h && c > 1) break + if (void 0 === (h = a[h])) throw Error(n) + switch (c) { + case 0: + ;(i = h), (c = 1) + break + case 1: + ;(e[t++] = (i << 2) | ((48 & h) >> 4)), (i = h), (c = 2) + break + case 2: + ;(e[t++] = ((15 & i) << 4) | ((60 & h) >> 2)), (i = h), (c = 3) + break + case 3: + ;(e[t++] = ((3 & i) << 6) | h), (c = 0) + } + } + if (1 === c) throw Error(n) + return t - o + }), + (r.test = function (r) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(r) + }) + }, + {}, + ], + wJQW: [ + function (require, module, exports) { + 'use strict' + function t() { + this._listeners = {} + } + ;(module.exports = t), + (t.prototype.on = function (t, s, e) { + return (this._listeners[t] || (this._listeners[t] = [])).push({fn: s, ctx: e || this}), this + }), + (t.prototype.off = function (t, s) { + if (void 0 === t) this._listeners = {} + else if (void 0 === s) this._listeners[t] = [] + else for (var e = this._listeners[t], i = 0; i < e.length; ) e[i].fn === s ? e.splice(i, 1) : ++i + return this + }), + (t.prototype.emit = function (t) { + var s = this._listeners[t] + if (s) { + for (var e = [], i = 1; i < arguments.length; ) e.push(arguments[i++]) + for (i = 0; i < s.length; ) s[i].fn.apply(s[i++].ctx, e) + } + return this + }) + }, + {}, + ], + SGHJ: [ + function (require, module, exports) { + 'use strict' + function n(n) { + return ( + 'undefined' != typeof Float32Array + ? (function () { + var e = new Float32Array([-0]), + t = new Uint8Array(e.buffer), + r = 128 === t[3] + function o(n, r, o) { + ;(e[0] = n), (r[o] = t[0]), (r[o + 1] = t[1]), (r[o + 2] = t[2]), (r[o + 3] = t[3]) + } + function u(n, r, o) { + ;(e[0] = n), (r[o] = t[3]), (r[o + 1] = t[2]), (r[o + 2] = t[1]), (r[o + 3] = t[0]) + } + function i(n, r) { + return (t[0] = n[r]), (t[1] = n[r + 1]), (t[2] = n[r + 2]), (t[3] = n[r + 3]), e[0] + } + function a(n, r) { + return (t[3] = n[r]), (t[2] = n[r + 1]), (t[1] = n[r + 2]), (t[0] = n[r + 3]), e[0] + } + ;(n.writeFloatLE = r ? o : u), + (n.writeFloatBE = r ? u : o), + (n.readFloatLE = r ? i : a), + (n.readFloatBE = r ? a : i) + })() + : (function () { + function u(n, e, t, r) { + var o = e < 0 ? 1 : 0 + if ((o && (e = -e), 0 === e)) n(1 / e > 0 ? 0 : 2147483648, t, r) + else if (isNaN(e)) n(2143289344, t, r) + else if (e > 3.4028234663852886e38) n(((o << 31) | 2139095040) >>> 0, t, r) + else if (e < 1.1754943508222875e-38) + n(((o << 31) | Math.round(e / 1.401298464324817e-45)) >>> 0, t, r) + else { + var u = Math.floor(Math.log(e) / Math.LN2) + n( + ((o << 31) | ((u + 127) << 23) | (8388607 & Math.round(e * Math.pow(2, -u) * 8388608))) >>> 0, + t, + r, + ) + } + } + function i(n, e, t) { + var r = n(e, t), + o = 2 * (r >> 31) + 1, + u = (r >>> 23) & 255, + i = 8388607 & r + return 255 === u + ? i + ? NaN + : o * (1 / 0) + : 0 === u + ? 1.401298464324817e-45 * o * i + : o * Math.pow(2, u - 150) * (i + 8388608) + } + ;(n.writeFloatLE = u.bind(null, e)), + (n.writeFloatBE = u.bind(null, t)), + (n.readFloatLE = i.bind(null, r)), + (n.readFloatBE = i.bind(null, o)) + })(), + 'undefined' != typeof Float64Array + ? (function () { + var e = new Float64Array([-0]), + t = new Uint8Array(e.buffer), + r = 128 === t[7] + function o(n, r, o) { + ;(e[0] = n), + (r[o] = t[0]), + (r[o + 1] = t[1]), + (r[o + 2] = t[2]), + (r[o + 3] = t[3]), + (r[o + 4] = t[4]), + (r[o + 5] = t[5]), + (r[o + 6] = t[6]), + (r[o + 7] = t[7]) + } + function u(n, r, o) { + ;(e[0] = n), + (r[o] = t[7]), + (r[o + 1] = t[6]), + (r[o + 2] = t[5]), + (r[o + 3] = t[4]), + (r[o + 4] = t[3]), + (r[o + 5] = t[2]), + (r[o + 6] = t[1]), + (r[o + 7] = t[0]) + } + function i(n, r) { + return ( + (t[0] = n[r]), + (t[1] = n[r + 1]), + (t[2] = n[r + 2]), + (t[3] = n[r + 3]), + (t[4] = n[r + 4]), + (t[5] = n[r + 5]), + (t[6] = n[r + 6]), + (t[7] = n[r + 7]), + e[0] + ) + } + function a(n, r) { + return ( + (t[7] = n[r]), + (t[6] = n[r + 1]), + (t[5] = n[r + 2]), + (t[4] = n[r + 3]), + (t[3] = n[r + 4]), + (t[2] = n[r + 5]), + (t[1] = n[r + 6]), + (t[0] = n[r + 7]), + e[0] + ) + } + ;(n.writeDoubleLE = r ? o : u), + (n.writeDoubleBE = r ? u : o), + (n.readDoubleLE = r ? i : a), + (n.readDoubleBE = r ? a : i) + })() + : (function () { + function u(n, e, t, r, o, u) { + var i = r < 0 ? 1 : 0 + if ((i && (r = -r), 0 === r)) n(0, o, u + e), n(1 / r > 0 ? 0 : 2147483648, o, u + t) + else if (isNaN(r)) n(0, o, u + e), n(2146959360, o, u + t) + else if (r > 1.7976931348623157e308) n(0, o, u + e), n(((i << 31) | 2146435072) >>> 0, o, u + t) + else { + var a + if (r < 2.2250738585072014e-308) + n((a = r / 5e-324) >>> 0, o, u + e), n(((i << 31) | (a / 4294967296)) >>> 0, o, u + t) + else { + var l = Math.floor(Math.log(r) / Math.LN2) + 1024 === l && (l = 1023), + n((4503599627370496 * (a = r * Math.pow(2, -l))) >>> 0, o, u + e), + n(((i << 31) | ((l + 1023) << 20) | ((1048576 * a) & 1048575)) >>> 0, o, u + t) + } + } + } + function i(n, e, t, r, o) { + var u = n(r, o + e), + i = n(r, o + t), + a = 2 * (i >> 31) + 1, + l = (i >>> 20) & 2047, + f = 4294967296 * (1048575 & i) + u + return 2047 === l + ? f + ? NaN + : a * (1 / 0) + : 0 === l + ? 5e-324 * a * f + : a * Math.pow(2, l - 1075) * (f + 4503599627370496) + } + ;(n.writeDoubleLE = u.bind(null, e, 0, 4)), + (n.writeDoubleBE = u.bind(null, t, 4, 0)), + (n.readDoubleLE = i.bind(null, r, 0, 4)), + (n.readDoubleBE = i.bind(null, o, 4, 0)) + })(), + n + ) + } + function e(n, e, t) { + ;(e[t] = 255 & n), (e[t + 1] = (n >>> 8) & 255), (e[t + 2] = (n >>> 16) & 255), (e[t + 3] = n >>> 24) + } + function t(n, e, t) { + ;(e[t] = n >>> 24), (e[t + 1] = (n >>> 16) & 255), (e[t + 2] = (n >>> 8) & 255), (e[t + 3] = 255 & n) + } + function r(n, e) { + return (n[e] | (n[e + 1] << 8) | (n[e + 2] << 16) | (n[e + 3] << 24)) >>> 0 + } + function o(n, e) { + return ((n[e] << 24) | (n[e + 1] << 16) | (n[e + 2] << 8) | n[e + 3]) >>> 0 + } + module.exports = n(n) + }, + {}, + ], + XRF3: [ + function (require, module, exports) { + 'use strict' + function inquire(moduleName) { + try { + var mod = eval('quire'.replace(/^/, 're'))(moduleName) + if (mod && (mod.length || Object.keys(mod).length)) return mod + } catch (e) {} + return null + } + module.exports = inquire + }, + {}, + ], + nie5: [ + function (require, module, exports) { + 'use strict' + var r = exports + ;(r.length = function (r) { + for (var t = 0, n = 0, e = 0; e < r.length; ++e) + (n = r.charCodeAt(e)) < 128 + ? (t += 1) + : n < 2048 + ? (t += 2) + : 55296 == (64512 & n) && 56320 == (64512 & r.charCodeAt(e + 1)) + ? (++e, (t += 4)) + : (t += 3) + return t + }), + (r.read = function (r, t, n) { + if (n - t < 1) return '' + for (var e, o = null, a = [], i = 0; t < n; ) + (e = r[t++]) < 128 + ? (a[i++] = e) + : e > 191 && e < 224 + ? (a[i++] = ((31 & e) << 6) | (63 & r[t++])) + : e > 239 && e < 365 + ? ((e = (((7 & e) << 18) | ((63 & r[t++]) << 12) | ((63 & r[t++]) << 6) | (63 & r[t++])) - 65536), + (a[i++] = 55296 + (e >> 10)), + (a[i++] = 56320 + (1023 & e))) + : (a[i++] = ((15 & e) << 12) | ((63 & r[t++]) << 6) | (63 & r[t++])), + i > 8191 && ((o || (o = [])).push(String.fromCharCode.apply(String, a)), (i = 0)) + return o + ? (i && o.push(String.fromCharCode.apply(String, a.slice(0, i))), o.join('')) + : String.fromCharCode.apply(String, a.slice(0, i)) + }), + (r.write = function (r, t, n) { + for (var e, o, a = n, i = 0; i < r.length; ++i) + (e = r.charCodeAt(i)) < 128 + ? (t[n++] = e) + : e < 2048 + ? ((t[n++] = (e >> 6) | 192), (t[n++] = (63 & e) | 128)) + : 55296 == (64512 & e) && 56320 == (64512 & (o = r.charCodeAt(i + 1))) + ? ((e = 65536 + ((1023 & e) << 10) + (1023 & o)), + ++i, + (t[n++] = (e >> 18) | 240), + (t[n++] = ((e >> 12) & 63) | 128), + (t[n++] = ((e >> 6) & 63) | 128), + (t[n++] = (63 & e) | 128)) + : ((t[n++] = (e >> 12) | 224), (t[n++] = ((e >> 6) & 63) | 128), (t[n++] = (63 & e) | 128)) + return n - a + }) + }, + {}, + ], + YX4y: [ + function (require, module, exports) { + 'use strict' + function r(r, n, t) { + var u = t || 8192, + e = u >>> 1, + l = null, + c = u + return function (t) { + if (t < 1 || t > e) return r(t) + c + t > u && ((l = r(u)), (c = 0)) + var i = n.call(l, c, (c += t)) + return 7 & c && (c = 1 + (7 | c)), i + } + } + module.exports = r + }, + {}, + ], + Ty7D: [ + function (require, module, exports) { + 'use strict' + module.exports = i + var t = require('../util/minimal') + function i(t, i) { + ;(this.lo = t >>> 0), (this.hi = i >>> 0) + } + var o = (i.zero = new i(0, 0)) + ;(o.toNumber = function () { + return 0 + }), + (o.zzEncode = o.zzDecode = + function () { + return this + }), + (o.length = function () { + return 1 + }) + var r = (i.zeroHash = '\0\0\0\0\0\0\0\0') + ;(i.fromNumber = function (t) { + if (0 === t) return o + var r = t < 0 + r && (t = -t) + var h = t >>> 0, + n = ((t - h) / 4294967296) >>> 0 + return ( + r && ((n = ~n >>> 0), (h = ~h >>> 0), ++h > 4294967295 && ((h = 0), ++n > 4294967295 && (n = 0))), + new i(h, n) + ) + }), + (i.from = function (r) { + if ('number' == typeof r) return i.fromNumber(r) + if (t.isString(r)) { + if (!t.Long) return i.fromNumber(parseInt(r, 10)) + r = t.Long.fromString(r) + } + return r.low || r.high ? new i(r.low >>> 0, r.high >>> 0) : o + }), + (i.prototype.toNumber = function (t) { + if (!t && this.hi >>> 31) { + var i = (1 + ~this.lo) >>> 0, + o = ~this.hi >>> 0 + return i || (o = (o + 1) >>> 0), -(i + 4294967296 * o) + } + return this.lo + 4294967296 * this.hi + }), + (i.prototype.toLong = function (i) { + return t.Long + ? new t.Long(0 | this.lo, 0 | this.hi, Boolean(i)) + : {low: 0 | this.lo, high: 0 | this.hi, unsigned: Boolean(i)} + }) + var h = String.prototype.charCodeAt + ;(i.fromHash = function (t) { + return t === r + ? o + : new i( + (h.call(t, 0) | (h.call(t, 1) << 8) | (h.call(t, 2) << 16) | (h.call(t, 3) << 24)) >>> 0, + (h.call(t, 4) | (h.call(t, 5) << 8) | (h.call(t, 6) << 16) | (h.call(t, 7) << 24)) >>> 0, + ) + }), + (i.prototype.toHash = function () { + return String.fromCharCode( + 255 & this.lo, + (this.lo >>> 8) & 255, + (this.lo >>> 16) & 255, + this.lo >>> 24, + 255 & this.hi, + (this.hi >>> 8) & 255, + (this.hi >>> 16) & 255, + this.hi >>> 24, + ) + }), + (i.prototype.zzEncode = function () { + var t = this.hi >> 31 + return ( + (this.hi = (((this.hi << 1) | (this.lo >>> 31)) ^ t) >>> 0), (this.lo = ((this.lo << 1) ^ t) >>> 0), this + ) + }), + (i.prototype.zzDecode = function () { + var t = -(1 & this.lo) + return ( + (this.lo = (((this.lo >>> 1) | (this.hi << 31)) ^ t) >>> 0), (this.hi = ((this.hi >>> 1) ^ t) >>> 0), this + ) + }), + (i.prototype.length = function () { + var t = this.lo, + i = ((this.lo >>> 28) | (this.hi << 4)) >>> 0, + o = this.hi >>> 24 + return 0 === o + ? 0 === i + ? t < 16384 + ? t < 128 + ? 1 + : 2 + : t < 2097152 + ? 3 + : 4 + : i < 16384 + ? i < 128 + ? 5 + : 6 + : i < 2097152 + ? 7 + : 8 + : o < 128 + ? 9 + : 10 + }) + }, + {'../util/minimal': 'KgKa'}, + ], + yh9p: [ + function (require, module, exports) { + 'use strict' + ;(exports.byteLength = u), (exports.toByteArray = i), (exports.fromByteArray = d) + for ( + var r = [], + t = [], + e = 'undefined' != typeof Uint8Array ? Uint8Array : Array, + n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + o = 0, + a = n.length; + o < a; + ++o + ) + (r[o] = n[o]), (t[n.charCodeAt(o)] = o) + function h(r) { + var t = r.length + if (t % 4 > 0) throw new Error('Invalid string. Length must be a multiple of 4') + var e = r.indexOf('=') + return -1 === e && (e = t), [e, e === t ? 0 : 4 - (e % 4)] + } + function u(r) { + var t = h(r), + e = t[0], + n = t[1] + return (3 * (e + n)) / 4 - n + } + function c(r, t, e) { + return (3 * (t + e)) / 4 - e + } + function i(r) { + var n, + o, + a = h(r), + u = a[0], + i = a[1], + f = new e(c(r, u, i)), + A = 0, + d = i > 0 ? u - 4 : u + for (o = 0; o < d; o += 4) + (n = + (t[r.charCodeAt(o)] << 18) | + (t[r.charCodeAt(o + 1)] << 12) | + (t[r.charCodeAt(o + 2)] << 6) | + t[r.charCodeAt(o + 3)]), + (f[A++] = (n >> 16) & 255), + (f[A++] = (n >> 8) & 255), + (f[A++] = 255 & n) + return ( + 2 === i && ((n = (t[r.charCodeAt(o)] << 2) | (t[r.charCodeAt(o + 1)] >> 4)), (f[A++] = 255 & n)), + 1 === i && + ((n = (t[r.charCodeAt(o)] << 10) | (t[r.charCodeAt(o + 1)] << 4) | (t[r.charCodeAt(o + 2)] >> 2)), + (f[A++] = (n >> 8) & 255), + (f[A++] = 255 & n)), + f + ) + } + function f(t) { + return r[(t >> 18) & 63] + r[(t >> 12) & 63] + r[(t >> 6) & 63] + r[63 & t] + } + function A(r, t, e) { + for (var n, o = [], a = t; a < e; a += 3) + (n = ((r[a] << 16) & 16711680) + ((r[a + 1] << 8) & 65280) + (255 & r[a + 2])), o.push(f(n)) + return o.join('') + } + function d(t) { + for (var e, n = t.length, o = n % 3, a = [], h = 0, u = n - o; h < u; h += 16383) + a.push(A(t, h, h + 16383 > u ? u : h + 16383)) + return ( + 1 === o + ? ((e = t[n - 1]), a.push(r[e >> 2] + r[(e << 4) & 63] + '==')) + : 2 === o && + ((e = (t[n - 2] << 8) + t[n - 1]), a.push(r[e >> 10] + r[(e >> 4) & 63] + r[(e << 2) & 63] + '=')), + a.join('') + ) + } + ;(t['-'.charCodeAt(0)] = 62), (t['_'.charCodeAt(0)] = 63) + }, + {}, + ], + JgNJ: [ + function (require, module, exports) { + ;(exports.read = function (a, o, t, r, h) { + var M, + p, + w = 8 * h - r - 1, + f = (1 << w) - 1, + e = f >> 1, + i = -7, + N = t ? h - 1 : 0, + n = t ? -1 : 1, + s = a[o + N] + for (N += n, M = s & ((1 << -i) - 1), s >>= -i, i += w; i > 0; M = 256 * M + a[o + N], N += n, i -= 8); + for (p = M & ((1 << -i) - 1), M >>= -i, i += r; i > 0; p = 256 * p + a[o + N], N += n, i -= 8); + if (0 === M) M = 1 - e + else { + if (M === f) return p ? NaN : (1 / 0) * (s ? -1 : 1) + ;(p += Math.pow(2, r)), (M -= e) + } + return (s ? -1 : 1) * p * Math.pow(2, M - r) + }), + (exports.write = function (a, o, t, r, h, M) { + var p, + w, + f, + e = 8 * M - h - 1, + i = (1 << e) - 1, + N = i >> 1, + n = 23 === h ? Math.pow(2, -24) - Math.pow(2, -77) : 0, + s = r ? 0 : M - 1, + u = r ? 1 : -1, + l = o < 0 || (0 === o && 1 / o < 0) ? 1 : 0 + for ( + o = Math.abs(o), + isNaN(o) || o === 1 / 0 + ? ((w = isNaN(o) ? 1 : 0), (p = i)) + : ((p = Math.floor(Math.log(o) / Math.LN2)), + o * (f = Math.pow(2, -p)) < 1 && (p--, (f *= 2)), + (o += p + N >= 1 ? n / f : n * Math.pow(2, 1 - N)) * f >= 2 && (p++, (f /= 2)), + p + N >= i + ? ((w = 0), (p = i)) + : p + N >= 1 + ? ((w = (o * f - 1) * Math.pow(2, h)), (p += N)) + : ((w = o * Math.pow(2, N - 1) * Math.pow(2, h)), (p = 0))); + h >= 8; + a[t + s] = 255 & w, s += u, w /= 256, h -= 8 + ); + for (p = (p << h) | w, e += h; e > 0; a[t + s] = 255 & p, s += u, p /= 256, e -= 8); + a[t + s - u] |= 128 * l + }) + }, + {}, + ], + REa7: [ + function (require, module, exports) { + var r = {}.toString + module.exports = + Array.isArray || + function (t) { + return '[object Array]' == r.call(t) + } + }, + {}, + ], + dskh: [ + function (require, module, exports) { + var global = arguments[3] + var t = arguments[3], + r = require('base64-js'), + e = require('ieee754'), + n = require('isarray') + function i() { + try { + var t = new Uint8Array(1) + return ( + (t.__proto__ = { + __proto__: Uint8Array.prototype, + foo: function () { + return 42 + }, + }), + 42 === t.foo() && 'function' == typeof t.subarray && 0 === t.subarray(1, 1).byteLength + ) + } catch (r) { + return !1 + } + } + function o() { + return f.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 + } + function u(t, r) { + if (o() < r) throw new RangeError('Invalid typed array length') + return ( + f.TYPED_ARRAY_SUPPORT + ? ((t = new Uint8Array(r)).__proto__ = f.prototype) + : (null === t && (t = new f(r)), (t.length = r)), + t + ) + } + function f(t, r, e) { + if (!(f.TYPED_ARRAY_SUPPORT || this instanceof f)) return new f(t, r, e) + if ('number' == typeof t) { + if ('string' == typeof r) + throw new Error('If encoding is specified then the first argument must be a string') + return c(this, t) + } + return s(this, t, r, e) + } + function s(t, r, e, n) { + if ('number' == typeof r) throw new TypeError('"value" argument must not be a number') + return 'undefined' != typeof ArrayBuffer && r instanceof ArrayBuffer + ? g(t, r, e, n) + : 'string' == typeof r + ? l(t, r, e) + : y(t, r) + } + function h(t) { + if ('number' != typeof t) throw new TypeError('"size" argument must be a number') + if (t < 0) throw new RangeError('"size" argument must not be negative') + } + function a(t, r, e, n) { + return ( + h(r), + r <= 0 ? u(t, r) : void 0 !== e ? ('string' == typeof n ? u(t, r).fill(e, n) : u(t, r).fill(e)) : u(t, r) + ) + } + function c(t, r) { + if ((h(r), (t = u(t, r < 0 ? 0 : 0 | w(r))), !f.TYPED_ARRAY_SUPPORT)) for (var e = 0; e < r; ++e) t[e] = 0 + return t + } + function l(t, r, e) { + if ((('string' == typeof e && '' !== e) || (e = 'utf8'), !f.isEncoding(e))) + throw new TypeError('"encoding" must be a valid string encoding') + var n = 0 | v(r, e), + i = (t = u(t, n)).write(r, e) + return i !== n && (t = t.slice(0, i)), t + } + function p(t, r) { + var e = r.length < 0 ? 0 : 0 | w(r.length) + t = u(t, e) + for (var n = 0; n < e; n += 1) t[n] = 255 & r[n] + return t + } + function g(t, r, e, n) { + if ((r.byteLength, e < 0 || r.byteLength < e)) throw new RangeError("'offset' is out of bounds") + if (r.byteLength < e + (n || 0)) throw new RangeError("'length' is out of bounds") + return ( + (r = + void 0 === e && void 0 === n + ? new Uint8Array(r) + : void 0 === n + ? new Uint8Array(r, e) + : new Uint8Array(r, e, n)), + f.TYPED_ARRAY_SUPPORT ? ((t = r).__proto__ = f.prototype) : (t = p(t, r)), + t + ) + } + function y(t, r) { + if (f.isBuffer(r)) { + var e = 0 | w(r.length) + return 0 === (t = u(t, e)).length ? t : (r.copy(t, 0, 0, e), t) + } + if (r) { + if (('undefined' != typeof ArrayBuffer && r.buffer instanceof ArrayBuffer) || 'length' in r) + return 'number' != typeof r.length || W(r.length) ? u(t, 0) : p(t, r) + if ('Buffer' === r.type && n(r.data)) return p(t, r.data) + } + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') + } + function w(t) { + if (t >= o()) + throw new RangeError( + 'Attempt to allocate Buffer larger than maximum size: 0x' + o().toString(16) + ' bytes', + ) + return 0 | t + } + function d(t) { + return +t != t && (t = 0), f.alloc(+t) + } + function v(t, r) { + if (f.isBuffer(t)) return t.length + if ( + 'undefined' != typeof ArrayBuffer && + 'function' == typeof ArrayBuffer.isView && + (ArrayBuffer.isView(t) || t instanceof ArrayBuffer) + ) + return t.byteLength + 'string' != typeof t && (t = '' + t) + var e = t.length + if (0 === e) return 0 + for (var n = !1; ; ) + switch (r) { + case 'ascii': + case 'latin1': + case 'binary': + return e + case 'utf8': + case 'utf-8': + case void 0: + return $(t).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 2 * e + case 'hex': + return e >>> 1 + case 'base64': + return K(t).length + default: + if (n) return $(t).length + ;(r = ('' + r).toLowerCase()), (n = !0) + } + } + function E(t, r, e) { + var n = !1 + if (((void 0 === r || r < 0) && (r = 0), r > this.length)) return '' + if (((void 0 === e || e > this.length) && (e = this.length), e <= 0)) return '' + if ((e >>>= 0) <= (r >>>= 0)) return '' + for (t || (t = 'utf8'); ; ) + switch (t) { + case 'hex': + return x(this, r, e) + case 'utf8': + case 'utf-8': + return Y(this, r, e) + case 'ascii': + return L(this, r, e) + case 'latin1': + case 'binary': + return D(this, r, e) + case 'base64': + return S(this, r, e) + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return C(this, r, e) + default: + if (n) throw new TypeError('Unknown encoding: ' + t) + ;(t = (t + '').toLowerCase()), (n = !0) + } + } + function b(t, r, e) { + var n = t[r] + ;(t[r] = t[e]), (t[e] = n) + } + function R(t, r, e, n, i) { + if (0 === t.length) return -1 + if ( + ('string' == typeof e + ? ((n = e), (e = 0)) + : e > 2147483647 + ? (e = 2147483647) + : e < -2147483648 && (e = -2147483648), + (e = +e), + isNaN(e) && (e = i ? 0 : t.length - 1), + e < 0 && (e = t.length + e), + e >= t.length) + ) { + if (i) return -1 + e = t.length - 1 + } else if (e < 0) { + if (!i) return -1 + e = 0 + } + if (('string' == typeof r && (r = f.from(r, n)), f.isBuffer(r))) return 0 === r.length ? -1 : _(t, r, e, n, i) + if ('number' == typeof r) + return ( + (r &= 255), + f.TYPED_ARRAY_SUPPORT && 'function' == typeof Uint8Array.prototype.indexOf + ? i + ? Uint8Array.prototype.indexOf.call(t, r, e) + : Uint8Array.prototype.lastIndexOf.call(t, r, e) + : _(t, [r], e, n, i) + ) + throw new TypeError('val must be string, number or Buffer') + } + function _(t, r, e, n, i) { + var o, + u = 1, + f = t.length, + s = r.length + if ( + void 0 !== n && + ('ucs2' === (n = String(n).toLowerCase()) || 'ucs-2' === n || 'utf16le' === n || 'utf-16le' === n) + ) { + if (t.length < 2 || r.length < 2) return -1 + ;(u = 2), (f /= 2), (s /= 2), (e /= 2) + } + function h(t, r) { + return 1 === u ? t[r] : t.readUInt16BE(r * u) + } + if (i) { + var a = -1 + for (o = e; o < f; o++) + if (h(t, o) === h(r, -1 === a ? 0 : o - a)) { + if ((-1 === a && (a = o), o - a + 1 === s)) return a * u + } else -1 !== a && (o -= o - a), (a = -1) + } else + for (e + s > f && (e = f - s), o = e; o >= 0; o--) { + for (var c = !0, l = 0; l < s; l++) + if (h(t, o + l) !== h(r, l)) { + c = !1 + break + } + if (c) return o + } + return -1 + } + function A(t, r, e, n) { + e = Number(e) || 0 + var i = t.length - e + n ? (n = Number(n)) > i && (n = i) : (n = i) + var o = r.length + if (o % 2 != 0) throw new TypeError('Invalid hex string') + n > o / 2 && (n = o / 2) + for (var u = 0; u < n; ++u) { + var f = parseInt(r.substr(2 * u, 2), 16) + if (isNaN(f)) return u + t[e + u] = f + } + return u + } + function m(t, r, e, n) { + return Q($(r, t.length - e), t, e, n) + } + function P(t, r, e, n) { + return Q(G(r), t, e, n) + } + function T(t, r, e, n) { + return P(t, r, e, n) + } + function B(t, r, e, n) { + return Q(K(r), t, e, n) + } + function U(t, r, e, n) { + return Q(H(r, t.length - e), t, e, n) + } + function S(t, e, n) { + return 0 === e && n === t.length ? r.fromByteArray(t) : r.fromByteArray(t.slice(e, n)) + } + function Y(t, r, e) { + e = Math.min(t.length, e) + for (var n = [], i = r; i < e; ) { + var o, + u, + f, + s, + h = t[i], + a = null, + c = h > 239 ? 4 : h > 223 ? 3 : h > 191 ? 2 : 1 + if (i + c <= e) + switch (c) { + case 1: + h < 128 && (a = h) + break + case 2: + 128 == (192 & (o = t[i + 1])) && (s = ((31 & h) << 6) | (63 & o)) > 127 && (a = s) + break + case 3: + ;(o = t[i + 1]), + (u = t[i + 2]), + 128 == (192 & o) && + 128 == (192 & u) && + (s = ((15 & h) << 12) | ((63 & o) << 6) | (63 & u)) > 2047 && + (s < 55296 || s > 57343) && + (a = s) + break + case 4: + ;(o = t[i + 1]), + (u = t[i + 2]), + (f = t[i + 3]), + 128 == (192 & o) && + 128 == (192 & u) && + 128 == (192 & f) && + (s = ((15 & h) << 18) | ((63 & o) << 12) | ((63 & u) << 6) | (63 & f)) > 65535 && + s < 1114112 && + (a = s) + } + null === a + ? ((a = 65533), (c = 1)) + : a > 65535 && ((a -= 65536), n.push(((a >>> 10) & 1023) | 55296), (a = 56320 | (1023 & a))), + n.push(a), + (i += c) + } + return O(n) + } + ;(exports.Buffer = f), + (exports.SlowBuffer = d), + (exports.INSPECT_MAX_BYTES = 50), + (f.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : i()), + (exports.kMaxLength = o()), + (f.poolSize = 8192), + (f._augment = function (t) { + return (t.__proto__ = f.prototype), t + }), + (f.from = function (t, r, e) { + return s(null, t, r, e) + }), + f.TYPED_ARRAY_SUPPORT && + ((f.prototype.__proto__ = Uint8Array.prototype), + (f.__proto__ = Uint8Array), + 'undefined' != typeof Symbol && + Symbol.species && + f[Symbol.species] === f && + Object.defineProperty(f, Symbol.species, {value: null, configurable: !0})), + (f.alloc = function (t, r, e) { + return a(null, t, r, e) + }), + (f.allocUnsafe = function (t) { + return c(null, t) + }), + (f.allocUnsafeSlow = function (t) { + return c(null, t) + }), + (f.isBuffer = function (t) { + return !(null == t || !t._isBuffer) + }), + (f.compare = function (t, r) { + if (!f.isBuffer(t) || !f.isBuffer(r)) throw new TypeError('Arguments must be Buffers') + if (t === r) return 0 + for (var e = t.length, n = r.length, i = 0, o = Math.min(e, n); i < o; ++i) + if (t[i] !== r[i]) { + ;(e = t[i]), (n = r[i]) + break + } + return e < n ? -1 : n < e ? 1 : 0 + }), + (f.isEncoding = function (t) { + switch (String(t).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return !0 + default: + return !1 + } + }), + (f.concat = function (t, r) { + if (!n(t)) throw new TypeError('"list" argument must be an Array of Buffers') + if (0 === t.length) return f.alloc(0) + var e + if (void 0 === r) for (r = 0, e = 0; e < t.length; ++e) r += t[e].length + var i = f.allocUnsafe(r), + o = 0 + for (e = 0; e < t.length; ++e) { + var u = t[e] + if (!f.isBuffer(u)) throw new TypeError('"list" argument must be an Array of Buffers') + u.copy(i, o), (o += u.length) + } + return i + }), + (f.byteLength = v), + (f.prototype._isBuffer = !0), + (f.prototype.swap16 = function () { + var t = this.length + if (t % 2 != 0) throw new RangeError('Buffer size must be a multiple of 16-bits') + for (var r = 0; r < t; r += 2) b(this, r, r + 1) + return this + }), + (f.prototype.swap32 = function () { + var t = this.length + if (t % 4 != 0) throw new RangeError('Buffer size must be a multiple of 32-bits') + for (var r = 0; r < t; r += 4) b(this, r, r + 3), b(this, r + 1, r + 2) + return this + }), + (f.prototype.swap64 = function () { + var t = this.length + if (t % 8 != 0) throw new RangeError('Buffer size must be a multiple of 64-bits') + for (var r = 0; r < t; r += 8) + b(this, r, r + 7), b(this, r + 1, r + 6), b(this, r + 2, r + 5), b(this, r + 3, r + 4) + return this + }), + (f.prototype.toString = function () { + var t = 0 | this.length + return 0 === t ? '' : 0 === arguments.length ? Y(this, 0, t) : E.apply(this, arguments) + }), + (f.prototype.equals = function (t) { + if (!f.isBuffer(t)) throw new TypeError('Argument must be a Buffer') + return this === t || 0 === f.compare(this, t) + }), + (f.prototype.inspect = function () { + var t = '', + r = exports.INSPECT_MAX_BYTES + return ( + this.length > 0 && + ((t = this.toString('hex', 0, r).match(/.{2}/g).join(' ')), this.length > r && (t += ' ... ')), + '' + ) + }), + (f.prototype.compare = function (t, r, e, n, i) { + if (!f.isBuffer(t)) throw new TypeError('Argument must be a Buffer') + if ( + (void 0 === r && (r = 0), + void 0 === e && (e = t ? t.length : 0), + void 0 === n && (n = 0), + void 0 === i && (i = this.length), + r < 0 || e > t.length || n < 0 || i > this.length) + ) + throw new RangeError('out of range index') + if (n >= i && r >= e) return 0 + if (n >= i) return -1 + if (r >= e) return 1 + if (this === t) return 0 + for ( + var o = (i >>>= 0) - (n >>>= 0), + u = (e >>>= 0) - (r >>>= 0), + s = Math.min(o, u), + h = this.slice(n, i), + a = t.slice(r, e), + c = 0; + c < s; + ++c + ) + if (h[c] !== a[c]) { + ;(o = h[c]), (u = a[c]) + break + } + return o < u ? -1 : u < o ? 1 : 0 + }), + (f.prototype.includes = function (t, r, e) { + return -1 !== this.indexOf(t, r, e) + }), + (f.prototype.indexOf = function (t, r, e) { + return R(this, t, r, e, !0) + }), + (f.prototype.lastIndexOf = function (t, r, e) { + return R(this, t, r, e, !1) + }), + (f.prototype.write = function (t, r, e, n) { + if (void 0 === r) (n = 'utf8'), (e = this.length), (r = 0) + else if (void 0 === e && 'string' == typeof r) (n = r), (e = this.length), (r = 0) + else { + if (!isFinite(r)) + throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported') + ;(r |= 0), isFinite(e) ? ((e |= 0), void 0 === n && (n = 'utf8')) : ((n = e), (e = void 0)) + } + var i = this.length - r + if (((void 0 === e || e > i) && (e = i), (t.length > 0 && (e < 0 || r < 0)) || r > this.length)) + throw new RangeError('Attempt to write outside buffer bounds') + n || (n = 'utf8') + for (var o = !1; ; ) + switch (n) { + case 'hex': + return A(this, t, r, e) + case 'utf8': + case 'utf-8': + return m(this, t, r, e) + case 'ascii': + return P(this, t, r, e) + case 'latin1': + case 'binary': + return T(this, t, r, e) + case 'base64': + return B(this, t, r, e) + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return U(this, t, r, e) + default: + if (o) throw new TypeError('Unknown encoding: ' + n) + ;(n = ('' + n).toLowerCase()), (o = !0) + } + }), + (f.prototype.toJSON = function () { + return {type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0)} + }) + var I = 4096 + function O(t) { + var r = t.length + if (r <= I) return String.fromCharCode.apply(String, t) + for (var e = '', n = 0; n < r; ) e += String.fromCharCode.apply(String, t.slice(n, (n += I))) + return e + } + function L(t, r, e) { + var n = '' + e = Math.min(t.length, e) + for (var i = r; i < e; ++i) n += String.fromCharCode(127 & t[i]) + return n + } + function D(t, r, e) { + var n = '' + e = Math.min(t.length, e) + for (var i = r; i < e; ++i) n += String.fromCharCode(t[i]) + return n + } + function x(t, r, e) { + var n = t.length + ;(!r || r < 0) && (r = 0), (!e || e < 0 || e > n) && (e = n) + for (var i = '', o = r; o < e; ++o) i += Z(t[o]) + return i + } + function C(t, r, e) { + for (var n = t.slice(r, e), i = '', o = 0; o < n.length; o += 2) + i += String.fromCharCode(n[o] + 256 * n[o + 1]) + return i + } + function M(t, r, e) { + if (t % 1 != 0 || t < 0) throw new RangeError('offset is not uint') + if (t + r > e) throw new RangeError('Trying to access beyond buffer length') + } + function k(t, r, e, n, i, o) { + if (!f.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (r > i || r < o) throw new RangeError('"value" argument is out of bounds') + if (e + n > t.length) throw new RangeError('Index out of range') + } + function N(t, r, e, n) { + r < 0 && (r = 65535 + r + 1) + for (var i = 0, o = Math.min(t.length - e, 2); i < o; ++i) + t[e + i] = (r & (255 << (8 * (n ? i : 1 - i)))) >>> (8 * (n ? i : 1 - i)) + } + function z(t, r, e, n) { + r < 0 && (r = 4294967295 + r + 1) + for (var i = 0, o = Math.min(t.length - e, 4); i < o; ++i) t[e + i] = (r >>> (8 * (n ? i : 3 - i))) & 255 + } + function F(t, r, e, n, i, o) { + if (e + n > t.length) throw new RangeError('Index out of range') + if (e < 0) throw new RangeError('Index out of range') + } + function j(t, r, n, i, o) { + return o || F(t, r, n, 4, 3.4028234663852886e38, -3.4028234663852886e38), e.write(t, r, n, i, 23, 4), n + 4 + } + function q(t, r, n, i, o) { + return o || F(t, r, n, 8, 1.7976931348623157e308, -1.7976931348623157e308), e.write(t, r, n, i, 52, 8), n + 8 + } + ;(f.prototype.slice = function (t, r) { + var e, + n = this.length + if ( + ((t = ~~t) < 0 ? (t += n) < 0 && (t = 0) : t > n && (t = n), + (r = void 0 === r ? n : ~~r) < 0 ? (r += n) < 0 && (r = 0) : r > n && (r = n), + r < t && (r = t), + f.TYPED_ARRAY_SUPPORT) + ) + (e = this.subarray(t, r)).__proto__ = f.prototype + else { + var i = r - t + e = new f(i, void 0) + for (var o = 0; o < i; ++o) e[o] = this[o + t] + } + return e + }), + (f.prototype.readUIntLE = function (t, r, e) { + ;(t |= 0), (r |= 0), e || M(t, r, this.length) + for (var n = this[t], i = 1, o = 0; ++o < r && (i *= 256); ) n += this[t + o] * i + return n + }), + (f.prototype.readUIntBE = function (t, r, e) { + ;(t |= 0), (r |= 0), e || M(t, r, this.length) + for (var n = this[t + --r], i = 1; r > 0 && (i *= 256); ) n += this[t + --r] * i + return n + }), + (f.prototype.readUInt8 = function (t, r) { + return r || M(t, 1, this.length), this[t] + }), + (f.prototype.readUInt16LE = function (t, r) { + return r || M(t, 2, this.length), this[t] | (this[t + 1] << 8) + }), + (f.prototype.readUInt16BE = function (t, r) { + return r || M(t, 2, this.length), (this[t] << 8) | this[t + 1] + }), + (f.prototype.readUInt32LE = function (t, r) { + return ( + r || M(t, 4, this.length), (this[t] | (this[t + 1] << 8) | (this[t + 2] << 16)) + 16777216 * this[t + 3] + ) + }), + (f.prototype.readUInt32BE = function (t, r) { + return ( + r || M(t, 4, this.length), 16777216 * this[t] + ((this[t + 1] << 16) | (this[t + 2] << 8) | this[t + 3]) + ) + }), + (f.prototype.readIntLE = function (t, r, e) { + ;(t |= 0), (r |= 0), e || M(t, r, this.length) + for (var n = this[t], i = 1, o = 0; ++o < r && (i *= 256); ) n += this[t + o] * i + return n >= (i *= 128) && (n -= Math.pow(2, 8 * r)), n + }), + (f.prototype.readIntBE = function (t, r, e) { + ;(t |= 0), (r |= 0), e || M(t, r, this.length) + for (var n = r, i = 1, o = this[t + --n]; n > 0 && (i *= 256); ) o += this[t + --n] * i + return o >= (i *= 128) && (o -= Math.pow(2, 8 * r)), o + }), + (f.prototype.readInt8 = function (t, r) { + return r || M(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t] + }), + (f.prototype.readInt16LE = function (t, r) { + r || M(t, 2, this.length) + var e = this[t] | (this[t + 1] << 8) + return 32768 & e ? 4294901760 | e : e + }), + (f.prototype.readInt16BE = function (t, r) { + r || M(t, 2, this.length) + var e = this[t + 1] | (this[t] << 8) + return 32768 & e ? 4294901760 | e : e + }), + (f.prototype.readInt32LE = function (t, r) { + return r || M(t, 4, this.length), this[t] | (this[t + 1] << 8) | (this[t + 2] << 16) | (this[t + 3] << 24) + }), + (f.prototype.readInt32BE = function (t, r) { + return r || M(t, 4, this.length), (this[t] << 24) | (this[t + 1] << 16) | (this[t + 2] << 8) | this[t + 3] + }), + (f.prototype.readFloatLE = function (t, r) { + return r || M(t, 4, this.length), e.read(this, t, !0, 23, 4) + }), + (f.prototype.readFloatBE = function (t, r) { + return r || M(t, 4, this.length), e.read(this, t, !1, 23, 4) + }), + (f.prototype.readDoubleLE = function (t, r) { + return r || M(t, 8, this.length), e.read(this, t, !0, 52, 8) + }), + (f.prototype.readDoubleBE = function (t, r) { + return r || M(t, 8, this.length), e.read(this, t, !1, 52, 8) + }), + (f.prototype.writeUIntLE = function (t, r, e, n) { + ;((t = +t), (r |= 0), (e |= 0), n) || k(this, t, r, e, Math.pow(2, 8 * e) - 1, 0) + var i = 1, + o = 0 + for (this[r] = 255 & t; ++o < e && (i *= 256); ) this[r + o] = (t / i) & 255 + return r + e + }), + (f.prototype.writeUIntBE = function (t, r, e, n) { + ;((t = +t), (r |= 0), (e |= 0), n) || k(this, t, r, e, Math.pow(2, 8 * e) - 1, 0) + var i = e - 1, + o = 1 + for (this[r + i] = 255 & t; --i >= 0 && (o *= 256); ) this[r + i] = (t / o) & 255 + return r + e + }), + (f.prototype.writeUInt8 = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 1, 255, 0), + f.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), + (this[r] = 255 & t), + r + 1 + ) + }), + (f.prototype.writeUInt16LE = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 2, 65535, 0), + f.TYPED_ARRAY_SUPPORT ? ((this[r] = 255 & t), (this[r + 1] = t >>> 8)) : N(this, t, r, !0), + r + 2 + ) + }), + (f.prototype.writeUInt16BE = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 2, 65535, 0), + f.TYPED_ARRAY_SUPPORT ? ((this[r] = t >>> 8), (this[r + 1] = 255 & t)) : N(this, t, r, !1), + r + 2 + ) + }), + (f.prototype.writeUInt32LE = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 4, 4294967295, 0), + f.TYPED_ARRAY_SUPPORT + ? ((this[r + 3] = t >>> 24), (this[r + 2] = t >>> 16), (this[r + 1] = t >>> 8), (this[r] = 255 & t)) + : z(this, t, r, !0), + r + 4 + ) + }), + (f.prototype.writeUInt32BE = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 4, 4294967295, 0), + f.TYPED_ARRAY_SUPPORT + ? ((this[r] = t >>> 24), (this[r + 1] = t >>> 16), (this[r + 2] = t >>> 8), (this[r + 3] = 255 & t)) + : z(this, t, r, !1), + r + 4 + ) + }), + (f.prototype.writeIntLE = function (t, r, e, n) { + if (((t = +t), (r |= 0), !n)) { + var i = Math.pow(2, 8 * e - 1) + k(this, t, r, e, i - 1, -i) + } + var o = 0, + u = 1, + f = 0 + for (this[r] = 255 & t; ++o < e && (u *= 256); ) + t < 0 && 0 === f && 0 !== this[r + o - 1] && (f = 1), (this[r + o] = (((t / u) >> 0) - f) & 255) + return r + e + }), + (f.prototype.writeIntBE = function (t, r, e, n) { + if (((t = +t), (r |= 0), !n)) { + var i = Math.pow(2, 8 * e - 1) + k(this, t, r, e, i - 1, -i) + } + var o = e - 1, + u = 1, + f = 0 + for (this[r + o] = 255 & t; --o >= 0 && (u *= 256); ) + t < 0 && 0 === f && 0 !== this[r + o + 1] && (f = 1), (this[r + o] = (((t / u) >> 0) - f) & 255) + return r + e + }), + (f.prototype.writeInt8 = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 1, 127, -128), + f.TYPED_ARRAY_SUPPORT || (t = Math.floor(t)), + t < 0 && (t = 255 + t + 1), + (this[r] = 255 & t), + r + 1 + ) + }), + (f.prototype.writeInt16LE = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 2, 32767, -32768), + f.TYPED_ARRAY_SUPPORT ? ((this[r] = 255 & t), (this[r + 1] = t >>> 8)) : N(this, t, r, !0), + r + 2 + ) + }), + (f.prototype.writeInt16BE = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 2, 32767, -32768), + f.TYPED_ARRAY_SUPPORT ? ((this[r] = t >>> 8), (this[r + 1] = 255 & t)) : N(this, t, r, !1), + r + 2 + ) + }), + (f.prototype.writeInt32LE = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 4, 2147483647, -2147483648), + f.TYPED_ARRAY_SUPPORT + ? ((this[r] = 255 & t), (this[r + 1] = t >>> 8), (this[r + 2] = t >>> 16), (this[r + 3] = t >>> 24)) + : z(this, t, r, !0), + r + 4 + ) + }), + (f.prototype.writeInt32BE = function (t, r, e) { + return ( + (t = +t), + (r |= 0), + e || k(this, t, r, 4, 2147483647, -2147483648), + t < 0 && (t = 4294967295 + t + 1), + f.TYPED_ARRAY_SUPPORT + ? ((this[r] = t >>> 24), (this[r + 1] = t >>> 16), (this[r + 2] = t >>> 8), (this[r + 3] = 255 & t)) + : z(this, t, r, !1), + r + 4 + ) + }), + (f.prototype.writeFloatLE = function (t, r, e) { + return j(this, t, r, !0, e) + }), + (f.prototype.writeFloatBE = function (t, r, e) { + return j(this, t, r, !1, e) + }), + (f.prototype.writeDoubleLE = function (t, r, e) { + return q(this, t, r, !0, e) + }), + (f.prototype.writeDoubleBE = function (t, r, e) { + return q(this, t, r, !1, e) + }), + (f.prototype.copy = function (t, r, e, n) { + if ( + (e || (e = 0), + n || 0 === n || (n = this.length), + r >= t.length && (r = t.length), + r || (r = 0), + n > 0 && n < e && (n = e), + n === e) + ) + return 0 + if (0 === t.length || 0 === this.length) return 0 + if (r < 0) throw new RangeError('targetStart out of bounds') + if (e < 0 || e >= this.length) throw new RangeError('sourceStart out of bounds') + if (n < 0) throw new RangeError('sourceEnd out of bounds') + n > this.length && (n = this.length), t.length - r < n - e && (n = t.length - r + e) + var i, + o = n - e + if (this === t && e < r && r < n) for (i = o - 1; i >= 0; --i) t[i + r] = this[i + e] + else if (o < 1e3 || !f.TYPED_ARRAY_SUPPORT) for (i = 0; i < o; ++i) t[i + r] = this[i + e] + else Uint8Array.prototype.set.call(t, this.subarray(e, e + o), r) + return o + }), + (f.prototype.fill = function (t, r, e, n) { + if ('string' == typeof t) { + if ( + ('string' == typeof r + ? ((n = r), (r = 0), (e = this.length)) + : 'string' == typeof e && ((n = e), (e = this.length)), + 1 === t.length) + ) { + var i = t.charCodeAt(0) + i < 256 && (t = i) + } + if (void 0 !== n && 'string' != typeof n) throw new TypeError('encoding must be a string') + if ('string' == typeof n && !f.isEncoding(n)) throw new TypeError('Unknown encoding: ' + n) + } else 'number' == typeof t && (t &= 255) + if (r < 0 || this.length < r || this.length < e) throw new RangeError('Out of range index') + if (e <= r) return this + var o + if (((r >>>= 0), (e = void 0 === e ? this.length : e >>> 0), t || (t = 0), 'number' == typeof t)) + for (o = r; o < e; ++o) this[o] = t + else { + var u = f.isBuffer(t) ? t : $(new f(t, n).toString()), + s = u.length + for (o = 0; o < e - r; ++o) this[o + r] = u[o % s] + } + return this + }) + var V = /[^+\/0-9A-Za-z-_]/g + function X(t) { + if ((t = J(t).replace(V, '')).length < 2) return '' + for (; t.length % 4 != 0; ) t += '=' + return t + } + function J(t) { + return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, '') + } + function Z(t) { + return t < 16 ? '0' + t.toString(16) : t.toString(16) + } + function $(t, r) { + var e + r = r || 1 / 0 + for (var n = t.length, i = null, o = [], u = 0; u < n; ++u) { + if ((e = t.charCodeAt(u)) > 55295 && e < 57344) { + if (!i) { + if (e > 56319) { + ;(r -= 3) > -1 && o.push(239, 191, 189) + continue + } + if (u + 1 === n) { + ;(r -= 3) > -1 && o.push(239, 191, 189) + continue + } + i = e + continue + } + if (e < 56320) { + ;(r -= 3) > -1 && o.push(239, 191, 189), (i = e) + continue + } + e = 65536 + (((i - 55296) << 10) | (e - 56320)) + } else i && (r -= 3) > -1 && o.push(239, 191, 189) + if (((i = null), e < 128)) { + if ((r -= 1) < 0) break + o.push(e) + } else if (e < 2048) { + if ((r -= 2) < 0) break + o.push((e >> 6) | 192, (63 & e) | 128) + } else if (e < 65536) { + if ((r -= 3) < 0) break + o.push((e >> 12) | 224, ((e >> 6) & 63) | 128, (63 & e) | 128) + } else { + if (!(e < 1114112)) throw new Error('Invalid code point') + if ((r -= 4) < 0) break + o.push((e >> 18) | 240, ((e >> 12) & 63) | 128, ((e >> 6) & 63) | 128, (63 & e) | 128) + } + } + return o + } + function G(t) { + for (var r = [], e = 0; e < t.length; ++e) r.push(255 & t.charCodeAt(e)) + return r + } + function H(t, r) { + for (var e, n, i, o = [], u = 0; u < t.length && !((r -= 2) < 0); ++u) + (n = (e = t.charCodeAt(u)) >> 8), (i = e % 256), o.push(i), o.push(n) + return o + } + function K(t) { + return r.toByteArray(X(t)) + } + function Q(t, r, e, n) { + for (var i = 0; i < n && !(i + e >= r.length || i >= t.length); ++i) r[i + e] = t[i] + return i + } + function W(t) { + return t != t + } + }, + {'base64-js': 'yh9p', ieee754: 'JgNJ', isarray: 'REa7', buffer: 'dskh'}, + ], + KgKa: [ + function (require, module, exports) { + var global = arguments[3] + var Buffer = require('buffer').Buffer + var e = arguments[3], + r = require('buffer').Buffer, + t = exports + function n(e, r, t) { + for (var n = Object.keys(r), o = 0; o < n.length; ++o) (void 0 !== e[n[o]] && t) || (e[n[o]] = r[n[o]]) + return e + } + function o(e) { + function r(e, t) { + if (!(this instanceof r)) return new r(e, t) + Object.defineProperty(this, 'message', { + get: function () { + return e + }, + }), + Error.captureStackTrace + ? Error.captureStackTrace(this, r) + : Object.defineProperty(this, 'stack', {value: new Error().stack || ''}), + t && n(this, t) + } + return ( + ((r.prototype = Object.create(Error.prototype)).constructor = r), + Object.defineProperty(r.prototype, 'name', { + get: function () { + return e + }, + }), + (r.prototype.toString = function () { + return this.name + ': ' + this.message + }), + r + ) + } + ;(t.asPromise = require('@protobufjs/aspromise')), + (t.base64 = require('@protobufjs/base64')), + (t.EventEmitter = require('@protobufjs/eventemitter')), + (t.float = require('@protobufjs/float')), + (t.inquire = require('@protobufjs/inquire')), + (t.utf8 = require('@protobufjs/utf8')), + (t.pool = require('@protobufjs/pool')), + (t.LongBits = require('./longbits')), + (t.global = + ('undefined' != typeof window && window) || + (void 0 !== e && e) || + ('undefined' != typeof self && self) || + this), + (t.emptyArray = Object.freeze ? Object.freeze([]) : []), + (t.emptyObject = Object.freeze ? Object.freeze({}) : {}), + (t.isNode = Boolean(t.global.process && t.global.process.versions && t.global.process.versions.node)), + (t.isInteger = + Number.isInteger || + function (e) { + return 'number' == typeof e && isFinite(e) && Math.floor(e) === e + }), + (t.isString = function (e) { + return 'string' == typeof e || e instanceof String + }), + (t.isObject = function (e) { + return e && 'object' == typeof e + }), + (t.isset = t.isSet = + function (e, r) { + var t = e[r] + return ( + !(null == t || !e.hasOwnProperty(r)) && + ('object' != typeof t || (Array.isArray(t) ? t.length : Object.keys(t).length) > 0) + ) + }), + (t.Buffer = (function () { + try { + var e = t.inquire('buffer').Buffer + return e.prototype.utf8Write ? e : null + } catch (r) { + return null + } + })()), + (t._Buffer_from = null), + (t._Buffer_allocUnsafe = null), + (t.newBuffer = function (e) { + return 'number' == typeof e + ? t.Buffer + ? t._Buffer_allocUnsafe(e) + : new t.Array(e) + : t.Buffer + ? t._Buffer_from(e) + : 'undefined' == typeof Uint8Array + ? e + : new Uint8Array(e) + }), + (t.Array = 'undefined' != typeof Uint8Array ? Uint8Array : Array), + (t.Long = (t.global.dcodeIO && t.global.dcodeIO.Long) || t.global.Long || t.inquire('long')), + (t.key2Re = /^true|false|0|1$/), + (t.key32Re = /^-?(?:0|[1-9][0-9]*)$/), + (t.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/), + (t.longToHash = function (e) { + return e ? t.LongBits.from(e).toHash() : t.LongBits.zeroHash + }), + (t.longFromHash = function (e, r) { + var n = t.LongBits.fromHash(e) + return t.Long ? t.Long.fromBits(n.lo, n.hi, r) : n.toNumber(Boolean(r)) + }), + (t.merge = n), + (t.lcFirst = function (e) { + return e.charAt(0).toLowerCase() + e.substring(1) + }), + (t.newError = o), + (t.ProtocolError = o('ProtocolError')), + (t.oneOfGetter = function (e) { + for (var r = {}, t = 0; t < e.length; ++t) r[e[t]] = 1 + return function () { + for (var e = Object.keys(this), t = e.length - 1; t > -1; --t) + if (1 === r[e[t]] && void 0 !== this[e[t]] && null !== this[e[t]]) return e[t] + } + }), + (t.oneOfSetter = function (e) { + return function (r) { + for (var t = 0; t < e.length; ++t) e[t] !== r && delete this[e[t]] + } + }), + (t.toJSONOptions = {longs: String, enums: String, bytes: String, json: !0}), + (t._configure = function () { + var e = t.Buffer + e + ? ((t._Buffer_from = + (e.from !== Uint8Array.from && e.from) || + function (r, t) { + return new e(r, t) + }), + (t._Buffer_allocUnsafe = + e.allocUnsafe || + function (r) { + return new e(r) + })) + : (t._Buffer_from = t._Buffer_allocUnsafe = null) + }) + }, + { + '@protobufjs/aspromise': 'oU4k', + '@protobufjs/base64': 'SASd', + '@protobufjs/eventemitter': 'wJQW', + '@protobufjs/float': 'SGHJ', + '@protobufjs/inquire': 'XRF3', + '@protobufjs/utf8': 'nie5', + '@protobufjs/pool': 'YX4y', + './longbits': 'Ty7D', + buffer: 'dskh', + }, + ], + DEsF: [ + function (require, module, exports) { + 'use strict' + module.exports = u + var t, + i = require('./util/minimal'), + n = i.LongBits, + e = i.base64, + o = i.utf8 + function r(t, i, n) { + ;(this.fn = t), (this.len = i), (this.next = void 0), (this.val = n) + } + function s() {} + function h(t) { + ;(this.head = t.head), (this.tail = t.tail), (this.len = t.len), (this.next = t.states) + } + function u() { + ;(this.len = 0), (this.head = new r(s, 0, 0)), (this.tail = this.head), (this.states = null) + } + function l(t, i, n) { + i[n] = 255 & t + } + function p(t, i, n) { + for (; t > 127; ) (i[n++] = (127 & t) | 128), (t >>>= 7) + i[n] = t + } + function a(t, i) { + ;(this.len = t), (this.next = void 0), (this.val = i) + } + function f(t, i, n) { + for (; t.hi; ) (i[n++] = (127 & t.lo) | 128), (t.lo = ((t.lo >>> 7) | (t.hi << 25)) >>> 0), (t.hi >>>= 7) + for (; t.lo > 127; ) (i[n++] = (127 & t.lo) | 128), (t.lo = t.lo >>> 7) + i[n++] = t.lo + } + function c(t, i, n) { + ;(i[n] = 255 & t), (i[n + 1] = (t >>> 8) & 255), (i[n + 2] = (t >>> 16) & 255), (i[n + 3] = t >>> 24) + } + ;(u.create = i.Buffer + ? function () { + return (u.create = function () { + return new t() + })() + } + : function () { + return new u() + }), + (u.alloc = function (t) { + return new i.Array(t) + }), + i.Array !== Array && (u.alloc = i.pool(u.alloc, i.Array.prototype.subarray)), + (u.prototype._push = function (t, i, n) { + return (this.tail = this.tail.next = new r(t, i, n)), (this.len += i), this + }), + (a.prototype = Object.create(r.prototype)), + (a.prototype.fn = p), + (u.prototype.uint32 = function (t) { + return ( + (this.len += (this.tail = this.tail.next = + new a((t >>>= 0) < 128 ? 1 : t < 16384 ? 2 : t < 2097152 ? 3 : t < 268435456 ? 4 : 5, t)).len), + this + ) + }), + (u.prototype.int32 = function (t) { + return t < 0 ? this._push(f, 10, n.fromNumber(t)) : this.uint32(t) + }), + (u.prototype.sint32 = function (t) { + return this.uint32(((t << 1) ^ (t >> 31)) >>> 0) + }), + (u.prototype.uint64 = function (t) { + var i = n.from(t) + return this._push(f, i.length(), i) + }), + (u.prototype.int64 = u.prototype.uint64), + (u.prototype.sint64 = function (t) { + var i = n.from(t).zzEncode() + return this._push(f, i.length(), i) + }), + (u.prototype.bool = function (t) { + return this._push(l, 1, t ? 1 : 0) + }), + (u.prototype.fixed32 = function (t) { + return this._push(c, 4, t >>> 0) + }), + (u.prototype.sfixed32 = u.prototype.fixed32), + (u.prototype.fixed64 = function (t) { + var i = n.from(t) + return this._push(c, 4, i.lo)._push(c, 4, i.hi) + }), + (u.prototype.sfixed64 = u.prototype.fixed64), + (u.prototype.float = function (t) { + return this._push(i.float.writeFloatLE, 4, t) + }), + (u.prototype.double = function (t) { + return this._push(i.float.writeDoubleLE, 8, t) + }) + var y = i.Array.prototype.set + ? function (t, i, n) { + i.set(t, n) + } + : function (t, i, n) { + for (var e = 0; e < t.length; ++e) i[n + e] = t[e] + } + ;(u.prototype.bytes = function (t) { + var n = t.length >>> 0 + if (!n) return this._push(l, 1, 0) + if (i.isString(t)) { + var o = u.alloc((n = e.length(t))) + e.decode(t, o, 0), (t = o) + } + return this.uint32(n)._push(y, n, t) + }), + (u.prototype.string = function (t) { + var i = o.length(t) + return i ? this.uint32(i)._push(o.write, i, t) : this._push(l, 1, 0) + }), + (u.prototype.fork = function () { + return (this.states = new h(this)), (this.head = this.tail = new r(s, 0, 0)), (this.len = 0), this + }), + (u.prototype.reset = function () { + return ( + this.states + ? ((this.head = this.states.head), + (this.tail = this.states.tail), + (this.len = this.states.len), + (this.states = this.states.next)) + : ((this.head = this.tail = new r(s, 0, 0)), (this.len = 0)), + this + ) + }), + (u.prototype.ldelim = function () { + var t = this.head, + i = this.tail, + n = this.len + return this.reset().uint32(n), n && ((this.tail.next = t.next), (this.tail = i), (this.len += n)), this + }), + (u.prototype.finish = function () { + for (var t = this.head.next, i = this.constructor.alloc(this.len), n = 0; t; ) + t.fn(t.val, i, n), (n += t.len), (t = t.next) + return i + }), + (u._configure = function (i) { + t = i + }) + }, + {'./util/minimal': 'KgKa'}, + ], + BjCp: [ + function (require, module, exports) { + 'use strict' + module.exports = n + var t = require('./writer') + ;(n.prototype = Object.create(t.prototype)).constructor = n + var e = require('./util/minimal'), + r = e.Buffer + function n() { + t.call(this) + } + n.alloc = function (t) { + return (n.alloc = e._Buffer_allocUnsafe)(t) + } + var i = + r && r.prototype instanceof Uint8Array && 'set' === r.prototype.set.name + ? function (t, e, r) { + e.set(t, r) + } + : function (t, e, r) { + if (t.copy) t.copy(e, r, 0, t.length) + else for (var n = 0; n < t.length; ) e[r++] = t[n++] + } + function o(t, r, n) { + t.length < 40 ? e.utf8.write(t, r, n) : r.utf8Write(t, n) + } + ;(n.prototype.bytes = function (t) { + e.isString(t) && (t = e._Buffer_from(t, 'base64')) + var r = t.length >>> 0 + return this.uint32(r), r && this._push(i, r, t), this + }), + (n.prototype.string = function (t) { + var e = r.byteLength(t) + return this.uint32(e), e && this._push(o, e, t), this + }) + }, + {'./writer': 'DEsF', './util/minimal': 'KgKa'}, + ], + z4LV: [ + function (require, module, exports) { + 'use strict' + module.exports = h + var t, + i = require('./util/minimal'), + s = i.LongBits, + r = i.utf8 + function o(t, i) { + return RangeError('index out of range: ' + t.pos + ' + ' + (i || 1) + ' > ' + t.len) + } + function h(t) { + ;(this.buf = t), (this.pos = 0), (this.len = t.length) + } + var n = + 'undefined' != typeof Uint8Array + ? function (t) { + if (t instanceof Uint8Array || Array.isArray(t)) return new h(t) + throw Error('illegal buffer') + } + : function (t) { + if (Array.isArray(t)) return new h(t) + throw Error('illegal buffer') + } + function e() { + var t = new s(0, 0), + i = 0 + if (!(this.len - this.pos > 4)) { + for (; i < 3; ++i) { + if (this.pos >= this.len) throw o(this) + if (((t.lo = (t.lo | ((127 & this.buf[this.pos]) << (7 * i))) >>> 0), this.buf[this.pos++] < 128)) + return t + } + return (t.lo = (t.lo | ((127 & this.buf[this.pos++]) << (7 * i))) >>> 0), t + } + for (; i < 4; ++i) + if (((t.lo = (t.lo | ((127 & this.buf[this.pos]) << (7 * i))) >>> 0), this.buf[this.pos++] < 128)) return t + if ( + ((t.lo = (t.lo | ((127 & this.buf[this.pos]) << 28)) >>> 0), + (t.hi = (t.hi | ((127 & this.buf[this.pos]) >> 4)) >>> 0), + this.buf[this.pos++] < 128) + ) + return t + if (((i = 0), this.len - this.pos > 4)) { + for (; i < 5; ++i) + if (((t.hi = (t.hi | ((127 & this.buf[this.pos]) << (7 * i + 3))) >>> 0), this.buf[this.pos++] < 128)) + return t + } else + for (; i < 5; ++i) { + if (this.pos >= this.len) throw o(this) + if (((t.hi = (t.hi | ((127 & this.buf[this.pos]) << (7 * i + 3))) >>> 0), this.buf[this.pos++] < 128)) + return t + } + throw Error('invalid varint encoding') + } + function u(t, i) { + return (t[i - 4] | (t[i - 3] << 8) | (t[i - 2] << 16) | (t[i - 1] << 24)) >>> 0 + } + function f() { + if (this.pos + 8 > this.len) throw o(this, 8) + return new s(u(this.buf, (this.pos += 4)), u(this.buf, (this.pos += 4))) + } + ;(h.create = i.Buffer + ? function (s) { + return (h.create = function (s) { + return i.Buffer.isBuffer(s) ? new t(s) : n(s) + })(s) + } + : n), + (h.prototype._slice = i.Array.prototype.subarray || i.Array.prototype.slice), + (h.prototype.uint32 = (function () { + var t = 4294967295 + return function () { + if (((t = (127 & this.buf[this.pos]) >>> 0), this.buf[this.pos++] < 128)) return t + if (((t = (t | ((127 & this.buf[this.pos]) << 7)) >>> 0), this.buf[this.pos++] < 128)) return t + if (((t = (t | ((127 & this.buf[this.pos]) << 14)) >>> 0), this.buf[this.pos++] < 128)) return t + if (((t = (t | ((127 & this.buf[this.pos]) << 21)) >>> 0), this.buf[this.pos++] < 128)) return t + if (((t = (t | ((15 & this.buf[this.pos]) << 28)) >>> 0), this.buf[this.pos++] < 128)) return t + if ((this.pos += 5) > this.len) throw ((this.pos = this.len), o(this, 10)) + return t + } + })()), + (h.prototype.int32 = function () { + return 0 | this.uint32() + }), + (h.prototype.sint32 = function () { + var t = this.uint32() + return ((t >>> 1) ^ -(1 & t)) | 0 + }), + (h.prototype.bool = function () { + return 0 !== this.uint32() + }), + (h.prototype.fixed32 = function () { + if (this.pos + 4 > this.len) throw o(this, 4) + return u(this.buf, (this.pos += 4)) + }), + (h.prototype.sfixed32 = function () { + if (this.pos + 4 > this.len) throw o(this, 4) + return 0 | u(this.buf, (this.pos += 4)) + }), + (h.prototype.float = function () { + if (this.pos + 4 > this.len) throw o(this, 4) + var t = i.float.readFloatLE(this.buf, this.pos) + return (this.pos += 4), t + }), + (h.prototype.double = function () { + if (this.pos + 8 > this.len) throw o(this, 4) + var t = i.float.readDoubleLE(this.buf, this.pos) + return (this.pos += 8), t + }), + (h.prototype.bytes = function () { + var t = this.uint32(), + i = this.pos, + s = this.pos + t + if (s > this.len) throw o(this, t) + return ( + (this.pos += t), + Array.isArray(this.buf) + ? this.buf.slice(i, s) + : i === s + ? new this.buf.constructor(0) + : this._slice.call(this.buf, i, s) + ) + }), + (h.prototype.string = function () { + var t = this.bytes() + return r.read(t, 0, t.length) + }), + (h.prototype.skip = function (t) { + if ('number' == typeof t) { + if (this.pos + t > this.len) throw o(this, t) + this.pos += t + } else + do { + if (this.pos >= this.len) throw o(this) + } while (128 & this.buf[this.pos++]) + return this + }), + (h.prototype.skipType = function (t) { + switch (t) { + case 0: + this.skip() + break + case 1: + this.skip(8) + break + case 2: + this.skip(this.uint32()) + break + case 3: + for (; 4 != (t = 7 & this.uint32()); ) this.skipType(t) + break + case 5: + this.skip(4) + break + default: + throw Error('invalid wire type ' + t + ' at offset ' + this.pos) + } + return this + }), + (h._configure = function (s) { + t = s + var r = i.Long ? 'toLong' : 'toNumber' + i.merge(h.prototype, { + int64: function () { + return e.call(this)[r](!1) + }, + uint64: function () { + return e.call(this)[r](!0) + }, + sint64: function () { + return e.call(this).zzDecode()[r](!1) + }, + fixed64: function () { + return f.call(this)[r](!0) + }, + sfixed64: function () { + return f.call(this)[r](!1) + }, + }) + }) + }, + {'./util/minimal': 'KgKa'}, + ], + Rkr2: [ + function (require, module, exports) { + 'use strict' + module.exports = r + var t = require('./reader') + ;(r.prototype = Object.create(t.prototype)).constructor = r + var e = require('./util/minimal') + function r(e) { + t.call(this, e) + } + e.Buffer && (r.prototype._slice = e.Buffer.prototype.slice), + (r.prototype.string = function () { + var t = this.uint32() + return this.buf.utf8Slice(this.pos, (this.pos = Math.min(this.pos + t, this.len))) + }) + }, + {'./reader': 'z4LV', './util/minimal': 'KgKa'}, + ], + eoks: [ + function (require, module, exports) { + 'use strict' + module.exports = t + var e = require('../util/minimal') + function t(t, r, i) { + if ('function' != typeof t) throw TypeError('rpcImpl must be a function') + e.EventEmitter.call(this), + (this.rpcImpl = t), + (this.requestDelimited = Boolean(r)), + (this.responseDelimited = Boolean(i)) + } + ;((t.prototype = Object.create(e.EventEmitter.prototype)).constructor = t), + (t.prototype.rpcCall = function t(r, i, n, o, l) { + if (!o) throw TypeError('request must be specified') + var u = this + if (!l) return e.asPromise(t, u, r, i, n, o) + if (u.rpcImpl) + try { + return u.rpcImpl(r, i[u.requestDelimited ? 'encodeDelimited' : 'encode'](o).finish(), function (e, t) { + if (e) return u.emit('error', e, r), l(e) + if (null !== t) { + if (!(t instanceof n)) + try { + t = n[u.responseDelimited ? 'decodeDelimited' : 'decode'](t) + } catch (e) { + return u.emit('error', e, r), l(e) + } + return u.emit('data', t, r), l(null, t) + } + u.end(!0) + }) + } catch (c) { + return ( + u.emit('error', c, r), + void setTimeout(function () { + l(c) + }, 0) + ) + } + else + setTimeout(function () { + l(Error('already ended')) + }, 0) + }), + (t.prototype.end = function (e) { + return ( + this.rpcImpl && (e || this.rpcImpl(null, null, null), (this.rpcImpl = null), this.emit('end').off()), this + ) + }) + }, + {'../util/minimal': 'KgKa'}, + ], + ay75: [ + function (require, module, exports) { + 'use strict' + var e = exports + e.Service = require('./rpc/service') + }, + {'./rpc/service': 'eoks'}, + ], + Nr0F: [ + function (require, module, exports) { + 'use strict' + module.exports = {} + }, + {}, + ], + qETn: [ + function (require, module, exports) { + 'use strict' + var r = exports + function e() { + r.Reader._configure(r.BufferReader), r.util._configure() + } + ;(r.build = 'minimal'), + (r.Writer = require('./writer')), + (r.BufferWriter = require('./writer_buffer')), + (r.Reader = require('./reader')), + (r.BufferReader = require('./reader_buffer')), + (r.util = require('./util/minimal')), + (r.rpc = require('./rpc')), + (r.roots = require('./roots')), + (r.configure = e), + r.Writer._configure(r.BufferWriter), + e() + }, + { + './writer': 'DEsF', + './writer_buffer': 'BjCp', + './reader': 'z4LV', + './reader_buffer': 'Rkr2', + './util/minimal': 'KgKa', + './rpc': 'ay75', + './roots': 'Nr0F', + }, + ], + Myh2: [ + function (require, module, exports) { + 'use strict' + module.exports = require('./src/index-minimal') + }, + {'./src/index-minimal': 'qETn'}, + ], + YdJi: [ + function (require, module, exports) { + 'use strict' + var e = require('protobufjs/minimal'), + n = e.Reader, + t = e.Writer, + o = e.util, + r = e.roots.default || (e.roots.default = {}) + ;(r.perftools = (function () { + var i, + l = {} + return ( + (l.profiles = + (((i = {}).Profile = (function () { + function i(e) { + if ( + ((this.sampleType = []), + (this.sample = []), + (this.mapping = []), + (this.location = []), + (this.function = []), + (this.stringTable = []), + (this.comment = []), + e) + ) + for (var n = Object.keys(e), t = 0; t < n.length; ++t) null != e[n[t]] && (this[n[t]] = e[n[t]]) + } + return ( + (i.prototype.sampleType = o.emptyArray), + (i.prototype.sample = o.emptyArray), + (i.prototype.mapping = o.emptyArray), + (i.prototype.location = o.emptyArray), + (i.prototype.function = o.emptyArray), + (i.prototype.stringTable = o.emptyArray), + (i.prototype.dropFrames = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.keepFrames = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.timeNanos = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.durationNanos = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.periodType = null), + (i.prototype.period = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.comment = o.emptyArray), + (i.prototype.defaultSampleType = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.create = function (e) { + return new i(e) + }), + (i.encode = function (e, n) { + if ((n || (n = t.create()), null != e.sampleType && e.sampleType.length)) + for (var o = 0; o < e.sampleType.length; ++o) + r.perftools.profiles.ValueType.encode(e.sampleType[o], n.uint32(10).fork()).ldelim() + if (null != e.sample && e.sample.length) + for (o = 0; o < e.sample.length; ++o) + r.perftools.profiles.Sample.encode(e.sample[o], n.uint32(18).fork()).ldelim() + if (null != e.mapping && e.mapping.length) + for (o = 0; o < e.mapping.length; ++o) + r.perftools.profiles.Mapping.encode(e.mapping[o], n.uint32(26).fork()).ldelim() + if (null != e.location && e.location.length) + for (o = 0; o < e.location.length; ++o) + r.perftools.profiles.Location.encode(e.location[o], n.uint32(34).fork()).ldelim() + if (null != e.function && e.function.length) + for (o = 0; o < e.function.length; ++o) + r.perftools.profiles.Function.encode(e.function[o], n.uint32(42).fork()).ldelim() + if (null != e.stringTable && e.stringTable.length) + for (o = 0; o < e.stringTable.length; ++o) n.uint32(50).string(e.stringTable[o]) + if ( + (null != e.dropFrames && e.hasOwnProperty('dropFrames') && n.uint32(56).int64(e.dropFrames), + null != e.keepFrames && e.hasOwnProperty('keepFrames') && n.uint32(64).int64(e.keepFrames), + null != e.timeNanos && e.hasOwnProperty('timeNanos') && n.uint32(72).int64(e.timeNanos), + null != e.durationNanos && + e.hasOwnProperty('durationNanos') && + n.uint32(80).int64(e.durationNanos), + null != e.periodType && + e.hasOwnProperty('periodType') && + r.perftools.profiles.ValueType.encode(e.periodType, n.uint32(90).fork()).ldelim(), + null != e.period && e.hasOwnProperty('period') && n.uint32(96).int64(e.period), + null != e.comment && e.comment.length) + ) { + for (n.uint32(106).fork(), o = 0; o < e.comment.length; ++o) n.int64(e.comment[o]) + n.ldelim() + } + return ( + null != e.defaultSampleType && + e.hasOwnProperty('defaultSampleType') && + n.uint32(112).int64(e.defaultSampleType), + n + ) + }), + (i.encodeDelimited = function (e, n) { + return this.encode(e, n).ldelim() + }), + (i.decode = function (e, t) { + e instanceof n || (e = n.create(e)) + for ( + var o = void 0 === t ? e.len : e.pos + t, i = new r.perftools.profiles.Profile(); + e.pos < o; + + ) { + var l = e.uint32() + switch (l >>> 3) { + case 1: + ;(i.sampleType && i.sampleType.length) || (i.sampleType = []), + i.sampleType.push(r.perftools.profiles.ValueType.decode(e, e.uint32())) + break + case 2: + ;(i.sample && i.sample.length) || (i.sample = []), + i.sample.push(r.perftools.profiles.Sample.decode(e, e.uint32())) + break + case 3: + ;(i.mapping && i.mapping.length) || (i.mapping = []), + i.mapping.push(r.perftools.profiles.Mapping.decode(e, e.uint32())) + break + case 4: + ;(i.location && i.location.length) || (i.location = []), + i.location.push(r.perftools.profiles.Location.decode(e, e.uint32())) + break + case 5: + ;(i.function && i.function.length) || (i.function = []), + i.function.push(r.perftools.profiles.Function.decode(e, e.uint32())) + break + case 6: + ;(i.stringTable && i.stringTable.length) || (i.stringTable = []), + i.stringTable.push(e.string()) + break + case 7: + i.dropFrames = e.int64() + break + case 8: + i.keepFrames = e.int64() + break + case 9: + i.timeNanos = e.int64() + break + case 10: + i.durationNanos = e.int64() + break + case 11: + i.periodType = r.perftools.profiles.ValueType.decode(e, e.uint32()) + break + case 12: + i.period = e.int64() + break + case 13: + if (((i.comment && i.comment.length) || (i.comment = []), 2 == (7 & l))) + for (var s = e.uint32() + e.pos; e.pos < s; ) i.comment.push(e.int64()) + else i.comment.push(e.int64()) + break + case 14: + i.defaultSampleType = e.int64() + break + default: + e.skipType(7 & l) + } + } + return i + }), + (i.decodeDelimited = function (e) { + return e instanceof n || (e = new n(e)), this.decode(e, e.uint32()) + }), + (i.verify = function (e) { + if ('object' != typeof e || null === e) return 'object expected' + if (null != e.sampleType && e.hasOwnProperty('sampleType')) { + if (!Array.isArray(e.sampleType)) return 'sampleType: array expected' + for (var n = 0; n < e.sampleType.length; ++n) + if ((t = r.perftools.profiles.ValueType.verify(e.sampleType[n]))) return 'sampleType.' + t + } + if (null != e.sample && e.hasOwnProperty('sample')) { + if (!Array.isArray(e.sample)) return 'sample: array expected' + for (n = 0; n < e.sample.length; ++n) + if ((t = r.perftools.profiles.Sample.verify(e.sample[n]))) return 'sample.' + t + } + if (null != e.mapping && e.hasOwnProperty('mapping')) { + if (!Array.isArray(e.mapping)) return 'mapping: array expected' + for (n = 0; n < e.mapping.length; ++n) + if ((t = r.perftools.profiles.Mapping.verify(e.mapping[n]))) return 'mapping.' + t + } + if (null != e.location && e.hasOwnProperty('location')) { + if (!Array.isArray(e.location)) return 'location: array expected' + for (n = 0; n < e.location.length; ++n) + if ((t = r.perftools.profiles.Location.verify(e.location[n]))) return 'location.' + t + } + if (null != e.function && e.hasOwnProperty('function')) { + if (!Array.isArray(e.function)) return 'function: array expected' + for (n = 0; n < e.function.length; ++n) + if ((t = r.perftools.profiles.Function.verify(e.function[n]))) return 'function.' + t + } + if (null != e.stringTable && e.hasOwnProperty('stringTable')) { + if (!Array.isArray(e.stringTable)) return 'stringTable: array expected' + for (n = 0; n < e.stringTable.length; ++n) + if (!o.isString(e.stringTable[n])) return 'stringTable: string[] expected' + } + if ( + null != e.dropFrames && + e.hasOwnProperty('dropFrames') && + !( + o.isInteger(e.dropFrames) || + (e.dropFrames && o.isInteger(e.dropFrames.low) && o.isInteger(e.dropFrames.high)) + ) + ) + return 'dropFrames: integer|Long expected' + if ( + null != e.keepFrames && + e.hasOwnProperty('keepFrames') && + !( + o.isInteger(e.keepFrames) || + (e.keepFrames && o.isInteger(e.keepFrames.low) && o.isInteger(e.keepFrames.high)) + ) + ) + return 'keepFrames: integer|Long expected' + if ( + null != e.timeNanos && + e.hasOwnProperty('timeNanos') && + !( + o.isInteger(e.timeNanos) || + (e.timeNanos && o.isInteger(e.timeNanos.low) && o.isInteger(e.timeNanos.high)) + ) + ) + return 'timeNanos: integer|Long expected' + if ( + null != e.durationNanos && + e.hasOwnProperty('durationNanos') && + !( + o.isInteger(e.durationNanos) || + (e.durationNanos && o.isInteger(e.durationNanos.low) && o.isInteger(e.durationNanos.high)) + ) + ) + return 'durationNanos: integer|Long expected' + var t + if ( + null != e.periodType && + e.hasOwnProperty('periodType') && + (t = r.perftools.profiles.ValueType.verify(e.periodType)) + ) + return 'periodType.' + t + if ( + null != e.period && + e.hasOwnProperty('period') && + !(o.isInteger(e.period) || (e.period && o.isInteger(e.period.low) && o.isInteger(e.period.high))) + ) + return 'period: integer|Long expected' + if (null != e.comment && e.hasOwnProperty('comment')) { + if (!Array.isArray(e.comment)) return 'comment: array expected' + for (n = 0; n < e.comment.length; ++n) + if ( + !( + o.isInteger(e.comment[n]) || + (e.comment[n] && o.isInteger(e.comment[n].low) && o.isInteger(e.comment[n].high)) + ) + ) + return 'comment: integer|Long[] expected' + } + return null != e.defaultSampleType && + e.hasOwnProperty('defaultSampleType') && + !( + o.isInteger(e.defaultSampleType) || + (e.defaultSampleType && + o.isInteger(e.defaultSampleType.low) && + o.isInteger(e.defaultSampleType.high)) + ) + ? 'defaultSampleType: integer|Long expected' + : null + }), + (i.fromObject = function (e) { + if (e instanceof r.perftools.profiles.Profile) return e + var n = new r.perftools.profiles.Profile() + if (e.sampleType) { + if (!Array.isArray(e.sampleType)) + throw TypeError('.perftools.profiles.Profile.sampleType: array expected') + n.sampleType = [] + for (var t = 0; t < e.sampleType.length; ++t) { + if ('object' != typeof e.sampleType[t]) + throw TypeError('.perftools.profiles.Profile.sampleType: object expected') + n.sampleType[t] = r.perftools.profiles.ValueType.fromObject(e.sampleType[t]) + } + } + if (e.sample) { + if (!Array.isArray(e.sample)) + throw TypeError('.perftools.profiles.Profile.sample: array expected') + for (n.sample = [], t = 0; t < e.sample.length; ++t) { + if ('object' != typeof e.sample[t]) + throw TypeError('.perftools.profiles.Profile.sample: object expected') + n.sample[t] = r.perftools.profiles.Sample.fromObject(e.sample[t]) + } + } + if (e.mapping) { + if (!Array.isArray(e.mapping)) + throw TypeError('.perftools.profiles.Profile.mapping: array expected') + for (n.mapping = [], t = 0; t < e.mapping.length; ++t) { + if ('object' != typeof e.mapping[t]) + throw TypeError('.perftools.profiles.Profile.mapping: object expected') + n.mapping[t] = r.perftools.profiles.Mapping.fromObject(e.mapping[t]) + } + } + if (e.location) { + if (!Array.isArray(e.location)) + throw TypeError('.perftools.profiles.Profile.location: array expected') + for (n.location = [], t = 0; t < e.location.length; ++t) { + if ('object' != typeof e.location[t]) + throw TypeError('.perftools.profiles.Profile.location: object expected') + n.location[t] = r.perftools.profiles.Location.fromObject(e.location[t]) + } + } + if (e.function) { + if (!Array.isArray(e.function)) + throw TypeError('.perftools.profiles.Profile.function: array expected') + for (n.function = [], t = 0; t < e.function.length; ++t) { + if ('object' != typeof e.function[t]) + throw TypeError('.perftools.profiles.Profile.function: object expected') + n.function[t] = r.perftools.profiles.Function.fromObject(e.function[t]) + } + } + if (e.stringTable) { + if (!Array.isArray(e.stringTable)) + throw TypeError('.perftools.profiles.Profile.stringTable: array expected') + for (n.stringTable = [], t = 0; t < e.stringTable.length; ++t) + n.stringTable[t] = String(e.stringTable[t]) + } + if ( + (null != e.dropFrames && + (o.Long + ? ((n.dropFrames = o.Long.fromValue(e.dropFrames)).unsigned = !1) + : 'string' == typeof e.dropFrames + ? (n.dropFrames = parseInt(e.dropFrames, 10)) + : 'number' == typeof e.dropFrames + ? (n.dropFrames = e.dropFrames) + : 'object' == typeof e.dropFrames && + (n.dropFrames = new o.LongBits( + e.dropFrames.low >>> 0, + e.dropFrames.high >>> 0, + ).toNumber())), + null != e.keepFrames && + (o.Long + ? ((n.keepFrames = o.Long.fromValue(e.keepFrames)).unsigned = !1) + : 'string' == typeof e.keepFrames + ? (n.keepFrames = parseInt(e.keepFrames, 10)) + : 'number' == typeof e.keepFrames + ? (n.keepFrames = e.keepFrames) + : 'object' == typeof e.keepFrames && + (n.keepFrames = new o.LongBits( + e.keepFrames.low >>> 0, + e.keepFrames.high >>> 0, + ).toNumber())), + null != e.timeNanos && + (o.Long + ? ((n.timeNanos = o.Long.fromValue(e.timeNanos)).unsigned = !1) + : 'string' == typeof e.timeNanos + ? (n.timeNanos = parseInt(e.timeNanos, 10)) + : 'number' == typeof e.timeNanos + ? (n.timeNanos = e.timeNanos) + : 'object' == typeof e.timeNanos && + (n.timeNanos = new o.LongBits(e.timeNanos.low >>> 0, e.timeNanos.high >>> 0).toNumber())), + null != e.durationNanos && + (o.Long + ? ((n.durationNanos = o.Long.fromValue(e.durationNanos)).unsigned = !1) + : 'string' == typeof e.durationNanos + ? (n.durationNanos = parseInt(e.durationNanos, 10)) + : 'number' == typeof e.durationNanos + ? (n.durationNanos = e.durationNanos) + : 'object' == typeof e.durationNanos && + (n.durationNanos = new o.LongBits( + e.durationNanos.low >>> 0, + e.durationNanos.high >>> 0, + ).toNumber())), + null != e.periodType) + ) { + if ('object' != typeof e.periodType) + throw TypeError('.perftools.profiles.Profile.periodType: object expected') + n.periodType = r.perftools.profiles.ValueType.fromObject(e.periodType) + } + if ( + (null != e.period && + (o.Long + ? ((n.period = o.Long.fromValue(e.period)).unsigned = !1) + : 'string' == typeof e.period + ? (n.period = parseInt(e.period, 10)) + : 'number' == typeof e.period + ? (n.period = e.period) + : 'object' == typeof e.period && + (n.period = new o.LongBits(e.period.low >>> 0, e.period.high >>> 0).toNumber())), + e.comment) + ) { + if (!Array.isArray(e.comment)) + throw TypeError('.perftools.profiles.Profile.comment: array expected') + for (n.comment = [], t = 0; t < e.comment.length; ++t) + o.Long + ? ((n.comment[t] = o.Long.fromValue(e.comment[t])).unsigned = !1) + : 'string' == typeof e.comment[t] + ? (n.comment[t] = parseInt(e.comment[t], 10)) + : 'number' == typeof e.comment[t] + ? (n.comment[t] = e.comment[t]) + : 'object' == typeof e.comment[t] && + (n.comment[t] = new o.LongBits(e.comment[t].low >>> 0, e.comment[t].high >>> 0).toNumber()) + } + return ( + null != e.defaultSampleType && + (o.Long + ? ((n.defaultSampleType = o.Long.fromValue(e.defaultSampleType)).unsigned = !1) + : 'string' == typeof e.defaultSampleType + ? (n.defaultSampleType = parseInt(e.defaultSampleType, 10)) + : 'number' == typeof e.defaultSampleType + ? (n.defaultSampleType = e.defaultSampleType) + : 'object' == typeof e.defaultSampleType && + (n.defaultSampleType = new o.LongBits( + e.defaultSampleType.low >>> 0, + e.defaultSampleType.high >>> 0, + ).toNumber())), + n + ) + }), + (i.toObject = function (e, n) { + n || (n = {}) + var t = {} + if ( + ((n.arrays || n.defaults) && + ((t.sampleType = []), + (t.sample = []), + (t.mapping = []), + (t.location = []), + (t.function = []), + (t.stringTable = []), + (t.comment = [])), + n.defaults) + ) { + if (o.Long) { + var i = new o.Long(0, 0, !1) + t.dropFrames = n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i + } else t.dropFrames = n.longs === String ? '0' : 0 + o.Long + ? ((i = new o.Long(0, 0, !1)), + (t.keepFrames = n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i)) + : (t.keepFrames = n.longs === String ? '0' : 0), + o.Long + ? ((i = new o.Long(0, 0, !1)), + (t.timeNanos = n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i)) + : (t.timeNanos = n.longs === String ? '0' : 0), + o.Long + ? ((i = new o.Long(0, 0, !1)), + (t.durationNanos = + n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i)) + : (t.durationNanos = n.longs === String ? '0' : 0), + (t.periodType = null), + o.Long + ? ((i = new o.Long(0, 0, !1)), + (t.period = n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i)) + : (t.period = n.longs === String ? '0' : 0), + o.Long + ? ((i = new o.Long(0, 0, !1)), + (t.defaultSampleType = + n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i)) + : (t.defaultSampleType = n.longs === String ? '0' : 0) + } + if (e.sampleType && e.sampleType.length) { + t.sampleType = [] + for (var l = 0; l < e.sampleType.length; ++l) + t.sampleType[l] = r.perftools.profiles.ValueType.toObject(e.sampleType[l], n) + } + if (e.sample && e.sample.length) + for (t.sample = [], l = 0; l < e.sample.length; ++l) + t.sample[l] = r.perftools.profiles.Sample.toObject(e.sample[l], n) + if (e.mapping && e.mapping.length) + for (t.mapping = [], l = 0; l < e.mapping.length; ++l) + t.mapping[l] = r.perftools.profiles.Mapping.toObject(e.mapping[l], n) + if (e.location && e.location.length) + for (t.location = [], l = 0; l < e.location.length; ++l) + t.location[l] = r.perftools.profiles.Location.toObject(e.location[l], n) + if (e.function && e.function.length) + for (t.function = [], l = 0; l < e.function.length; ++l) + t.function[l] = r.perftools.profiles.Function.toObject(e.function[l], n) + if (e.stringTable && e.stringTable.length) + for (t.stringTable = [], l = 0; l < e.stringTable.length; ++l) t.stringTable[l] = e.stringTable[l] + if ( + (null != e.dropFrames && + e.hasOwnProperty('dropFrames') && + ('number' == typeof e.dropFrames + ? (t.dropFrames = n.longs === String ? String(e.dropFrames) : e.dropFrames) + : (t.dropFrames = + n.longs === String + ? o.Long.prototype.toString.call(e.dropFrames) + : n.longs === Number + ? new o.LongBits(e.dropFrames.low >>> 0, e.dropFrames.high >>> 0).toNumber() + : e.dropFrames)), + null != e.keepFrames && + e.hasOwnProperty('keepFrames') && + ('number' == typeof e.keepFrames + ? (t.keepFrames = n.longs === String ? String(e.keepFrames) : e.keepFrames) + : (t.keepFrames = + n.longs === String + ? o.Long.prototype.toString.call(e.keepFrames) + : n.longs === Number + ? new o.LongBits(e.keepFrames.low >>> 0, e.keepFrames.high >>> 0).toNumber() + : e.keepFrames)), + null != e.timeNanos && + e.hasOwnProperty('timeNanos') && + ('number' == typeof e.timeNanos + ? (t.timeNanos = n.longs === String ? String(e.timeNanos) : e.timeNanos) + : (t.timeNanos = + n.longs === String + ? o.Long.prototype.toString.call(e.timeNanos) + : n.longs === Number + ? new o.LongBits(e.timeNanos.low >>> 0, e.timeNanos.high >>> 0).toNumber() + : e.timeNanos)), + null != e.durationNanos && + e.hasOwnProperty('durationNanos') && + ('number' == typeof e.durationNanos + ? (t.durationNanos = n.longs === String ? String(e.durationNanos) : e.durationNanos) + : (t.durationNanos = + n.longs === String + ? o.Long.prototype.toString.call(e.durationNanos) + : n.longs === Number + ? new o.LongBits(e.durationNanos.low >>> 0, e.durationNanos.high >>> 0).toNumber() + : e.durationNanos)), + null != e.periodType && + e.hasOwnProperty('periodType') && + (t.periodType = r.perftools.profiles.ValueType.toObject(e.periodType, n)), + null != e.period && + e.hasOwnProperty('period') && + ('number' == typeof e.period + ? (t.period = n.longs === String ? String(e.period) : e.period) + : (t.period = + n.longs === String + ? o.Long.prototype.toString.call(e.period) + : n.longs === Number + ? new o.LongBits(e.period.low >>> 0, e.period.high >>> 0).toNumber() + : e.period)), + e.comment && e.comment.length) + ) + for (t.comment = [], l = 0; l < e.comment.length; ++l) + 'number' == typeof e.comment[l] + ? (t.comment[l] = n.longs === String ? String(e.comment[l]) : e.comment[l]) + : (t.comment[l] = + n.longs === String + ? o.Long.prototype.toString.call(e.comment[l]) + : n.longs === Number + ? new o.LongBits(e.comment[l].low >>> 0, e.comment[l].high >>> 0).toNumber() + : e.comment[l]) + return ( + null != e.defaultSampleType && + e.hasOwnProperty('defaultSampleType') && + ('number' == typeof e.defaultSampleType + ? (t.defaultSampleType = + n.longs === String ? String(e.defaultSampleType) : e.defaultSampleType) + : (t.defaultSampleType = + n.longs === String + ? o.Long.prototype.toString.call(e.defaultSampleType) + : n.longs === Number + ? new o.LongBits( + e.defaultSampleType.low >>> 0, + e.defaultSampleType.high >>> 0, + ).toNumber() + : e.defaultSampleType)), + t + ) + }), + (i.prototype.toJSON = function () { + return this.constructor.toObject(this, e.util.toJSONOptions) + }), + i + ) + })()), + (i.ValueType = (function () { + function i(e) { + if (e) + for (var n = Object.keys(e), t = 0; t < n.length; ++t) null != e[n[t]] && (this[n[t]] = e[n[t]]) + } + return ( + (i.prototype.type = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.unit = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.create = function (e) { + return new i(e) + }), + (i.encode = function (e, n) { + return ( + n || (n = t.create()), + null != e.type && e.hasOwnProperty('type') && n.uint32(8).int64(e.type), + null != e.unit && e.hasOwnProperty('unit') && n.uint32(16).int64(e.unit), + n + ) + }), + (i.encodeDelimited = function (e, n) { + return this.encode(e, n).ldelim() + }), + (i.decode = function (e, t) { + e instanceof n || (e = n.create(e)) + for ( + var o = void 0 === t ? e.len : e.pos + t, i = new r.perftools.profiles.ValueType(); + e.pos < o; + + ) { + var l = e.uint32() + switch (l >>> 3) { + case 1: + i.type = e.int64() + break + case 2: + i.unit = e.int64() + break + default: + e.skipType(7 & l) + } + } + return i + }), + (i.decodeDelimited = function (e) { + return e instanceof n || (e = new n(e)), this.decode(e, e.uint32()) + }), + (i.verify = function (e) { + return 'object' != typeof e || null === e + ? 'object expected' + : null != e.type && + e.hasOwnProperty('type') && + !(o.isInteger(e.type) || (e.type && o.isInteger(e.type.low) && o.isInteger(e.type.high))) + ? 'type: integer|Long expected' + : null != e.unit && + e.hasOwnProperty('unit') && + !(o.isInteger(e.unit) || (e.unit && o.isInteger(e.unit.low) && o.isInteger(e.unit.high))) + ? 'unit: integer|Long expected' + : null + }), + (i.fromObject = function (e) { + if (e instanceof r.perftools.profiles.ValueType) return e + var n = new r.perftools.profiles.ValueType() + return ( + null != e.type && + (o.Long + ? ((n.type = o.Long.fromValue(e.type)).unsigned = !1) + : 'string' == typeof e.type + ? (n.type = parseInt(e.type, 10)) + : 'number' == typeof e.type + ? (n.type = e.type) + : 'object' == typeof e.type && + (n.type = new o.LongBits(e.type.low >>> 0, e.type.high >>> 0).toNumber())), + null != e.unit && + (o.Long + ? ((n.unit = o.Long.fromValue(e.unit)).unsigned = !1) + : 'string' == typeof e.unit + ? (n.unit = parseInt(e.unit, 10)) + : 'number' == typeof e.unit + ? (n.unit = e.unit) + : 'object' == typeof e.unit && + (n.unit = new o.LongBits(e.unit.low >>> 0, e.unit.high >>> 0).toNumber())), + n + ) + }), + (i.toObject = function (e, n) { + n || (n = {}) + var t = {} + if (n.defaults) { + if (o.Long) { + var r = new o.Long(0, 0, !1) + t.type = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r + } else t.type = n.longs === String ? '0' : 0 + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.unit = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.unit = n.longs === String ? '0' : 0) + } + return ( + null != e.type && + e.hasOwnProperty('type') && + ('number' == typeof e.type + ? (t.type = n.longs === String ? String(e.type) : e.type) + : (t.type = + n.longs === String + ? o.Long.prototype.toString.call(e.type) + : n.longs === Number + ? new o.LongBits(e.type.low >>> 0, e.type.high >>> 0).toNumber() + : e.type)), + null != e.unit && + e.hasOwnProperty('unit') && + ('number' == typeof e.unit + ? (t.unit = n.longs === String ? String(e.unit) : e.unit) + : (t.unit = + n.longs === String + ? o.Long.prototype.toString.call(e.unit) + : n.longs === Number + ? new o.LongBits(e.unit.low >>> 0, e.unit.high >>> 0).toNumber() + : e.unit)), + t + ) + }), + (i.prototype.toJSON = function () { + return this.constructor.toObject(this, e.util.toJSONOptions) + }), + i + ) + })()), + (i.Sample = (function () { + function i(e) { + if (((this.locationId = []), (this.value = []), (this.label = []), e)) + for (var n = Object.keys(e), t = 0; t < n.length; ++t) null != e[n[t]] && (this[n[t]] = e[n[t]]) + } + return ( + (i.prototype.locationId = o.emptyArray), + (i.prototype.value = o.emptyArray), + (i.prototype.label = o.emptyArray), + (i.create = function (e) { + return new i(e) + }), + (i.encode = function (e, n) { + if ((n || (n = t.create()), null != e.locationId && e.locationId.length)) { + n.uint32(10).fork() + for (var o = 0; o < e.locationId.length; ++o) n.uint64(e.locationId[o]) + n.ldelim() + } + if (null != e.value && e.value.length) { + for (n.uint32(18).fork(), o = 0; o < e.value.length; ++o) n.int64(e.value[o]) + n.ldelim() + } + if (null != e.label && e.label.length) + for (o = 0; o < e.label.length; ++o) + r.perftools.profiles.Label.encode(e.label[o], n.uint32(26).fork()).ldelim() + return n + }), + (i.encodeDelimited = function (e, n) { + return this.encode(e, n).ldelim() + }), + (i.decode = function (e, t) { + e instanceof n || (e = n.create(e)) + for (var o = void 0 === t ? e.len : e.pos + t, i = new r.perftools.profiles.Sample(); e.pos < o; ) { + var l = e.uint32() + switch (l >>> 3) { + case 1: + if (((i.locationId && i.locationId.length) || (i.locationId = []), 2 == (7 & l))) + for (var s = e.uint32() + e.pos; e.pos < s; ) i.locationId.push(e.uint64()) + else i.locationId.push(e.uint64()) + break + case 2: + if (((i.value && i.value.length) || (i.value = []), 2 == (7 & l))) + for (s = e.uint32() + e.pos; e.pos < s; ) i.value.push(e.int64()) + else i.value.push(e.int64()) + break + case 3: + ;(i.label && i.label.length) || (i.label = []), + i.label.push(r.perftools.profiles.Label.decode(e, e.uint32())) + break + default: + e.skipType(7 & l) + } + } + return i + }), + (i.decodeDelimited = function (e) { + return e instanceof n || (e = new n(e)), this.decode(e, e.uint32()) + }), + (i.verify = function (e) { + if ('object' != typeof e || null === e) return 'object expected' + if (null != e.locationId && e.hasOwnProperty('locationId')) { + if (!Array.isArray(e.locationId)) return 'locationId: array expected' + for (var n = 0; n < e.locationId.length; ++n) + if ( + !( + o.isInteger(e.locationId[n]) || + (e.locationId[n] && o.isInteger(e.locationId[n].low) && o.isInteger(e.locationId[n].high)) + ) + ) + return 'locationId: integer|Long[] expected' + } + if (null != e.value && e.hasOwnProperty('value')) { + if (!Array.isArray(e.value)) return 'value: array expected' + for (n = 0; n < e.value.length; ++n) + if ( + !( + o.isInteger(e.value[n]) || + (e.value[n] && o.isInteger(e.value[n].low) && o.isInteger(e.value[n].high)) + ) + ) + return 'value: integer|Long[] expected' + } + if (null != e.label && e.hasOwnProperty('label')) { + if (!Array.isArray(e.label)) return 'label: array expected' + for (n = 0; n < e.label.length; ++n) { + var t = r.perftools.profiles.Label.verify(e.label[n]) + if (t) return 'label.' + t + } + } + return null + }), + (i.fromObject = function (e) { + if (e instanceof r.perftools.profiles.Sample) return e + var n = new r.perftools.profiles.Sample() + if (e.locationId) { + if (!Array.isArray(e.locationId)) + throw TypeError('.perftools.profiles.Sample.locationId: array expected') + n.locationId = [] + for (var t = 0; t < e.locationId.length; ++t) + o.Long + ? ((n.locationId[t] = o.Long.fromValue(e.locationId[t])).unsigned = !0) + : 'string' == typeof e.locationId[t] + ? (n.locationId[t] = parseInt(e.locationId[t], 10)) + : 'number' == typeof e.locationId[t] + ? (n.locationId[t] = e.locationId[t]) + : 'object' == typeof e.locationId[t] && + (n.locationId[t] = new o.LongBits( + e.locationId[t].low >>> 0, + e.locationId[t].high >>> 0, + ).toNumber(!0)) + } + if (e.value) { + if (!Array.isArray(e.value)) throw TypeError('.perftools.profiles.Sample.value: array expected') + for (n.value = [], t = 0; t < e.value.length; ++t) + o.Long + ? ((n.value[t] = o.Long.fromValue(e.value[t])).unsigned = !1) + : 'string' == typeof e.value[t] + ? (n.value[t] = parseInt(e.value[t], 10)) + : 'number' == typeof e.value[t] + ? (n.value[t] = e.value[t]) + : 'object' == typeof e.value[t] && + (n.value[t] = new o.LongBits(e.value[t].low >>> 0, e.value[t].high >>> 0).toNumber()) + } + if (e.label) { + if (!Array.isArray(e.label)) throw TypeError('.perftools.profiles.Sample.label: array expected') + for (n.label = [], t = 0; t < e.label.length; ++t) { + if ('object' != typeof e.label[t]) + throw TypeError('.perftools.profiles.Sample.label: object expected') + n.label[t] = r.perftools.profiles.Label.fromObject(e.label[t]) + } + } + return n + }), + (i.toObject = function (e, n) { + n || (n = {}) + var t = {} + if ( + ((n.arrays || n.defaults) && ((t.locationId = []), (t.value = []), (t.label = [])), + e.locationId && e.locationId.length) + ) { + t.locationId = [] + for (var i = 0; i < e.locationId.length; ++i) + 'number' == typeof e.locationId[i] + ? (t.locationId[i] = n.longs === String ? String(e.locationId[i]) : e.locationId[i]) + : (t.locationId[i] = + n.longs === String + ? o.Long.prototype.toString.call(e.locationId[i]) + : n.longs === Number + ? new o.LongBits(e.locationId[i].low >>> 0, e.locationId[i].high >>> 0).toNumber(!0) + : e.locationId[i]) + } + if (e.value && e.value.length) + for (t.value = [], i = 0; i < e.value.length; ++i) + 'number' == typeof e.value[i] + ? (t.value[i] = n.longs === String ? String(e.value[i]) : e.value[i]) + : (t.value[i] = + n.longs === String + ? o.Long.prototype.toString.call(e.value[i]) + : n.longs === Number + ? new o.LongBits(e.value[i].low >>> 0, e.value[i].high >>> 0).toNumber() + : e.value[i]) + if (e.label && e.label.length) + for (t.label = [], i = 0; i < e.label.length; ++i) + t.label[i] = r.perftools.profiles.Label.toObject(e.label[i], n) + return t + }), + (i.prototype.toJSON = function () { + return this.constructor.toObject(this, e.util.toJSONOptions) + }), + i + ) + })()), + (i.Label = (function () { + function i(e) { + if (e) + for (var n = Object.keys(e), t = 0; t < n.length; ++t) null != e[n[t]] && (this[n[t]] = e[n[t]]) + } + return ( + (i.prototype.key = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.str = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.num = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.numUnit = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.create = function (e) { + return new i(e) + }), + (i.encode = function (e, n) { + return ( + n || (n = t.create()), + null != e.key && e.hasOwnProperty('key') && n.uint32(8).int64(e.key), + null != e.str && e.hasOwnProperty('str') && n.uint32(16).int64(e.str), + null != e.num && e.hasOwnProperty('num') && n.uint32(24).int64(e.num), + null != e.numUnit && e.hasOwnProperty('numUnit') && n.uint32(32).int64(e.numUnit), + n + ) + }), + (i.encodeDelimited = function (e, n) { + return this.encode(e, n).ldelim() + }), + (i.decode = function (e, t) { + e instanceof n || (e = n.create(e)) + for (var o = void 0 === t ? e.len : e.pos + t, i = new r.perftools.profiles.Label(); e.pos < o; ) { + var l = e.uint32() + switch (l >>> 3) { + case 1: + i.key = e.int64() + break + case 2: + i.str = e.int64() + break + case 3: + i.num = e.int64() + break + case 4: + i.numUnit = e.int64() + break + default: + e.skipType(7 & l) + } + } + return i + }), + (i.decodeDelimited = function (e) { + return e instanceof n || (e = new n(e)), this.decode(e, e.uint32()) + }), + (i.verify = function (e) { + return 'object' != typeof e || null === e + ? 'object expected' + : null != e.key && + e.hasOwnProperty('key') && + !(o.isInteger(e.key) || (e.key && o.isInteger(e.key.low) && o.isInteger(e.key.high))) + ? 'key: integer|Long expected' + : null != e.str && + e.hasOwnProperty('str') && + !(o.isInteger(e.str) || (e.str && o.isInteger(e.str.low) && o.isInteger(e.str.high))) + ? 'str: integer|Long expected' + : null != e.num && + e.hasOwnProperty('num') && + !(o.isInteger(e.num) || (e.num && o.isInteger(e.num.low) && o.isInteger(e.num.high))) + ? 'num: integer|Long expected' + : null != e.numUnit && + e.hasOwnProperty('numUnit') && + !( + o.isInteger(e.numUnit) || + (e.numUnit && o.isInteger(e.numUnit.low) && o.isInteger(e.numUnit.high)) + ) + ? 'numUnit: integer|Long expected' + : null + }), + (i.fromObject = function (e) { + if (e instanceof r.perftools.profiles.Label) return e + var n = new r.perftools.profiles.Label() + return ( + null != e.key && + (o.Long + ? ((n.key = o.Long.fromValue(e.key)).unsigned = !1) + : 'string' == typeof e.key + ? (n.key = parseInt(e.key, 10)) + : 'number' == typeof e.key + ? (n.key = e.key) + : 'object' == typeof e.key && + (n.key = new o.LongBits(e.key.low >>> 0, e.key.high >>> 0).toNumber())), + null != e.str && + (o.Long + ? ((n.str = o.Long.fromValue(e.str)).unsigned = !1) + : 'string' == typeof e.str + ? (n.str = parseInt(e.str, 10)) + : 'number' == typeof e.str + ? (n.str = e.str) + : 'object' == typeof e.str && + (n.str = new o.LongBits(e.str.low >>> 0, e.str.high >>> 0).toNumber())), + null != e.num && + (o.Long + ? ((n.num = o.Long.fromValue(e.num)).unsigned = !1) + : 'string' == typeof e.num + ? (n.num = parseInt(e.num, 10)) + : 'number' == typeof e.num + ? (n.num = e.num) + : 'object' == typeof e.num && + (n.num = new o.LongBits(e.num.low >>> 0, e.num.high >>> 0).toNumber())), + null != e.numUnit && + (o.Long + ? ((n.numUnit = o.Long.fromValue(e.numUnit)).unsigned = !1) + : 'string' == typeof e.numUnit + ? (n.numUnit = parseInt(e.numUnit, 10)) + : 'number' == typeof e.numUnit + ? (n.numUnit = e.numUnit) + : 'object' == typeof e.numUnit && + (n.numUnit = new o.LongBits(e.numUnit.low >>> 0, e.numUnit.high >>> 0).toNumber())), + n + ) + }), + (i.toObject = function (e, n) { + n || (n = {}) + var t = {} + if (n.defaults) { + if (o.Long) { + var r = new o.Long(0, 0, !1) + t.key = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r + } else t.key = n.longs === String ? '0' : 0 + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.str = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.str = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.num = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.num = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.numUnit = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.numUnit = n.longs === String ? '0' : 0) + } + return ( + null != e.key && + e.hasOwnProperty('key') && + ('number' == typeof e.key + ? (t.key = n.longs === String ? String(e.key) : e.key) + : (t.key = + n.longs === String + ? o.Long.prototype.toString.call(e.key) + : n.longs === Number + ? new o.LongBits(e.key.low >>> 0, e.key.high >>> 0).toNumber() + : e.key)), + null != e.str && + e.hasOwnProperty('str') && + ('number' == typeof e.str + ? (t.str = n.longs === String ? String(e.str) : e.str) + : (t.str = + n.longs === String + ? o.Long.prototype.toString.call(e.str) + : n.longs === Number + ? new o.LongBits(e.str.low >>> 0, e.str.high >>> 0).toNumber() + : e.str)), + null != e.num && + e.hasOwnProperty('num') && + ('number' == typeof e.num + ? (t.num = n.longs === String ? String(e.num) : e.num) + : (t.num = + n.longs === String + ? o.Long.prototype.toString.call(e.num) + : n.longs === Number + ? new o.LongBits(e.num.low >>> 0, e.num.high >>> 0).toNumber() + : e.num)), + null != e.numUnit && + e.hasOwnProperty('numUnit') && + ('number' == typeof e.numUnit + ? (t.numUnit = n.longs === String ? String(e.numUnit) : e.numUnit) + : (t.numUnit = + n.longs === String + ? o.Long.prototype.toString.call(e.numUnit) + : n.longs === Number + ? new o.LongBits(e.numUnit.low >>> 0, e.numUnit.high >>> 0).toNumber() + : e.numUnit)), + t + ) + }), + (i.prototype.toJSON = function () { + return this.constructor.toObject(this, e.util.toJSONOptions) + }), + i + ) + })()), + (i.Mapping = (function () { + function i(e) { + if (e) + for (var n = Object.keys(e), t = 0; t < n.length; ++t) null != e[n[t]] && (this[n[t]] = e[n[t]]) + } + return ( + (i.prototype.id = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.memoryStart = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.memoryLimit = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.fileOffset = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.filename = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.buildId = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.hasFunctions = !1), + (i.prototype.hasFilenames = !1), + (i.prototype.hasLineNumbers = !1), + (i.prototype.hasInlineFrames = !1), + (i.create = function (e) { + return new i(e) + }), + (i.encode = function (e, n) { + return ( + n || (n = t.create()), + null != e.id && e.hasOwnProperty('id') && n.uint32(8).uint64(e.id), + null != e.memoryStart && e.hasOwnProperty('memoryStart') && n.uint32(16).uint64(e.memoryStart), + null != e.memoryLimit && e.hasOwnProperty('memoryLimit') && n.uint32(24).uint64(e.memoryLimit), + null != e.fileOffset && e.hasOwnProperty('fileOffset') && n.uint32(32).uint64(e.fileOffset), + null != e.filename && e.hasOwnProperty('filename') && n.uint32(40).int64(e.filename), + null != e.buildId && e.hasOwnProperty('buildId') && n.uint32(48).int64(e.buildId), + null != e.hasFunctions && e.hasOwnProperty('hasFunctions') && n.uint32(56).bool(e.hasFunctions), + null != e.hasFilenames && e.hasOwnProperty('hasFilenames') && n.uint32(64).bool(e.hasFilenames), + null != e.hasLineNumbers && + e.hasOwnProperty('hasLineNumbers') && + n.uint32(72).bool(e.hasLineNumbers), + null != e.hasInlineFrames && + e.hasOwnProperty('hasInlineFrames') && + n.uint32(80).bool(e.hasInlineFrames), + n + ) + }), + (i.encodeDelimited = function (e, n) { + return this.encode(e, n).ldelim() + }), + (i.decode = function (e, t) { + e instanceof n || (e = n.create(e)) + for ( + var o = void 0 === t ? e.len : e.pos + t, i = new r.perftools.profiles.Mapping(); + e.pos < o; + + ) { + var l = e.uint32() + switch (l >>> 3) { + case 1: + i.id = e.uint64() + break + case 2: + i.memoryStart = e.uint64() + break + case 3: + i.memoryLimit = e.uint64() + break + case 4: + i.fileOffset = e.uint64() + break + case 5: + i.filename = e.int64() + break + case 6: + i.buildId = e.int64() + break + case 7: + i.hasFunctions = e.bool() + break + case 8: + i.hasFilenames = e.bool() + break + case 9: + i.hasLineNumbers = e.bool() + break + case 10: + i.hasInlineFrames = e.bool() + break + default: + e.skipType(7 & l) + } + } + return i + }), + (i.decodeDelimited = function (e) { + return e instanceof n || (e = new n(e)), this.decode(e, e.uint32()) + }), + (i.verify = function (e) { + return 'object' != typeof e || null === e + ? 'object expected' + : null != e.id && + e.hasOwnProperty('id') && + !(o.isInteger(e.id) || (e.id && o.isInteger(e.id.low) && o.isInteger(e.id.high))) + ? 'id: integer|Long expected' + : null != e.memoryStart && + e.hasOwnProperty('memoryStart') && + !( + o.isInteger(e.memoryStart) || + (e.memoryStart && o.isInteger(e.memoryStart.low) && o.isInteger(e.memoryStart.high)) + ) + ? 'memoryStart: integer|Long expected' + : null != e.memoryLimit && + e.hasOwnProperty('memoryLimit') && + !( + o.isInteger(e.memoryLimit) || + (e.memoryLimit && o.isInteger(e.memoryLimit.low) && o.isInteger(e.memoryLimit.high)) + ) + ? 'memoryLimit: integer|Long expected' + : null != e.fileOffset && + e.hasOwnProperty('fileOffset') && + !( + o.isInteger(e.fileOffset) || + (e.fileOffset && o.isInteger(e.fileOffset.low) && o.isInteger(e.fileOffset.high)) + ) + ? 'fileOffset: integer|Long expected' + : null != e.filename && + e.hasOwnProperty('filename') && + !( + o.isInteger(e.filename) || + (e.filename && o.isInteger(e.filename.low) && o.isInteger(e.filename.high)) + ) + ? 'filename: integer|Long expected' + : null != e.buildId && + e.hasOwnProperty('buildId') && + !( + o.isInteger(e.buildId) || + (e.buildId && o.isInteger(e.buildId.low) && o.isInteger(e.buildId.high)) + ) + ? 'buildId: integer|Long expected' + : null != e.hasFunctions && e.hasOwnProperty('hasFunctions') && 'boolean' != typeof e.hasFunctions + ? 'hasFunctions: boolean expected' + : null != e.hasFilenames && e.hasOwnProperty('hasFilenames') && 'boolean' != typeof e.hasFilenames + ? 'hasFilenames: boolean expected' + : null != e.hasLineNumbers && + e.hasOwnProperty('hasLineNumbers') && + 'boolean' != typeof e.hasLineNumbers + ? 'hasLineNumbers: boolean expected' + : null != e.hasInlineFrames && + e.hasOwnProperty('hasInlineFrames') && + 'boolean' != typeof e.hasInlineFrames + ? 'hasInlineFrames: boolean expected' + : null + }), + (i.fromObject = function (e) { + if (e instanceof r.perftools.profiles.Mapping) return e + var n = new r.perftools.profiles.Mapping() + return ( + null != e.id && + (o.Long + ? ((n.id = o.Long.fromValue(e.id)).unsigned = !0) + : 'string' == typeof e.id + ? (n.id = parseInt(e.id, 10)) + : 'number' == typeof e.id + ? (n.id = e.id) + : 'object' == typeof e.id && + (n.id = new o.LongBits(e.id.low >>> 0, e.id.high >>> 0).toNumber(!0))), + null != e.memoryStart && + (o.Long + ? ((n.memoryStart = o.Long.fromValue(e.memoryStart)).unsigned = !0) + : 'string' == typeof e.memoryStart + ? (n.memoryStart = parseInt(e.memoryStart, 10)) + : 'number' == typeof e.memoryStart + ? (n.memoryStart = e.memoryStart) + : 'object' == typeof e.memoryStart && + (n.memoryStart = new o.LongBits(e.memoryStart.low >>> 0, e.memoryStart.high >>> 0).toNumber( + !0, + ))), + null != e.memoryLimit && + (o.Long + ? ((n.memoryLimit = o.Long.fromValue(e.memoryLimit)).unsigned = !0) + : 'string' == typeof e.memoryLimit + ? (n.memoryLimit = parseInt(e.memoryLimit, 10)) + : 'number' == typeof e.memoryLimit + ? (n.memoryLimit = e.memoryLimit) + : 'object' == typeof e.memoryLimit && + (n.memoryLimit = new o.LongBits(e.memoryLimit.low >>> 0, e.memoryLimit.high >>> 0).toNumber( + !0, + ))), + null != e.fileOffset && + (o.Long + ? ((n.fileOffset = o.Long.fromValue(e.fileOffset)).unsigned = !0) + : 'string' == typeof e.fileOffset + ? (n.fileOffset = parseInt(e.fileOffset, 10)) + : 'number' == typeof e.fileOffset + ? (n.fileOffset = e.fileOffset) + : 'object' == typeof e.fileOffset && + (n.fileOffset = new o.LongBits(e.fileOffset.low >>> 0, e.fileOffset.high >>> 0).toNumber( + !0, + ))), + null != e.filename && + (o.Long + ? ((n.filename = o.Long.fromValue(e.filename)).unsigned = !1) + : 'string' == typeof e.filename + ? (n.filename = parseInt(e.filename, 10)) + : 'number' == typeof e.filename + ? (n.filename = e.filename) + : 'object' == typeof e.filename && + (n.filename = new o.LongBits(e.filename.low >>> 0, e.filename.high >>> 0).toNumber())), + null != e.buildId && + (o.Long + ? ((n.buildId = o.Long.fromValue(e.buildId)).unsigned = !1) + : 'string' == typeof e.buildId + ? (n.buildId = parseInt(e.buildId, 10)) + : 'number' == typeof e.buildId + ? (n.buildId = e.buildId) + : 'object' == typeof e.buildId && + (n.buildId = new o.LongBits(e.buildId.low >>> 0, e.buildId.high >>> 0).toNumber())), + null != e.hasFunctions && (n.hasFunctions = Boolean(e.hasFunctions)), + null != e.hasFilenames && (n.hasFilenames = Boolean(e.hasFilenames)), + null != e.hasLineNumbers && (n.hasLineNumbers = Boolean(e.hasLineNumbers)), + null != e.hasInlineFrames && (n.hasInlineFrames = Boolean(e.hasInlineFrames)), + n + ) + }), + (i.toObject = function (e, n) { + n || (n = {}) + var t = {} + if (n.defaults) { + if (o.Long) { + var r = new o.Long(0, 0, !0) + t.id = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r + } else t.id = n.longs === String ? '0' : 0 + o.Long + ? ((r = new o.Long(0, 0, !0)), + (t.memoryStart = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.memoryStart = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !0)), + (t.memoryLimit = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.memoryLimit = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !0)), + (t.fileOffset = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.fileOffset = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.filename = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.filename = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.buildId = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.buildId = n.longs === String ? '0' : 0), + (t.hasFunctions = !1), + (t.hasFilenames = !1), + (t.hasLineNumbers = !1), + (t.hasInlineFrames = !1) + } + return ( + null != e.id && + e.hasOwnProperty('id') && + ('number' == typeof e.id + ? (t.id = n.longs === String ? String(e.id) : e.id) + : (t.id = + n.longs === String + ? o.Long.prototype.toString.call(e.id) + : n.longs === Number + ? new o.LongBits(e.id.low >>> 0, e.id.high >>> 0).toNumber(!0) + : e.id)), + null != e.memoryStart && + e.hasOwnProperty('memoryStart') && + ('number' == typeof e.memoryStart + ? (t.memoryStart = n.longs === String ? String(e.memoryStart) : e.memoryStart) + : (t.memoryStart = + n.longs === String + ? o.Long.prototype.toString.call(e.memoryStart) + : n.longs === Number + ? new o.LongBits(e.memoryStart.low >>> 0, e.memoryStart.high >>> 0).toNumber(!0) + : e.memoryStart)), + null != e.memoryLimit && + e.hasOwnProperty('memoryLimit') && + ('number' == typeof e.memoryLimit + ? (t.memoryLimit = n.longs === String ? String(e.memoryLimit) : e.memoryLimit) + : (t.memoryLimit = + n.longs === String + ? o.Long.prototype.toString.call(e.memoryLimit) + : n.longs === Number + ? new o.LongBits(e.memoryLimit.low >>> 0, e.memoryLimit.high >>> 0).toNumber(!0) + : e.memoryLimit)), + null != e.fileOffset && + e.hasOwnProperty('fileOffset') && + ('number' == typeof e.fileOffset + ? (t.fileOffset = n.longs === String ? String(e.fileOffset) : e.fileOffset) + : (t.fileOffset = + n.longs === String + ? o.Long.prototype.toString.call(e.fileOffset) + : n.longs === Number + ? new o.LongBits(e.fileOffset.low >>> 0, e.fileOffset.high >>> 0).toNumber(!0) + : e.fileOffset)), + null != e.filename && + e.hasOwnProperty('filename') && + ('number' == typeof e.filename + ? (t.filename = n.longs === String ? String(e.filename) : e.filename) + : (t.filename = + n.longs === String + ? o.Long.prototype.toString.call(e.filename) + : n.longs === Number + ? new o.LongBits(e.filename.low >>> 0, e.filename.high >>> 0).toNumber() + : e.filename)), + null != e.buildId && + e.hasOwnProperty('buildId') && + ('number' == typeof e.buildId + ? (t.buildId = n.longs === String ? String(e.buildId) : e.buildId) + : (t.buildId = + n.longs === String + ? o.Long.prototype.toString.call(e.buildId) + : n.longs === Number + ? new o.LongBits(e.buildId.low >>> 0, e.buildId.high >>> 0).toNumber() + : e.buildId)), + null != e.hasFunctions && e.hasOwnProperty('hasFunctions') && (t.hasFunctions = e.hasFunctions), + null != e.hasFilenames && e.hasOwnProperty('hasFilenames') && (t.hasFilenames = e.hasFilenames), + null != e.hasLineNumbers && + e.hasOwnProperty('hasLineNumbers') && + (t.hasLineNumbers = e.hasLineNumbers), + null != e.hasInlineFrames && + e.hasOwnProperty('hasInlineFrames') && + (t.hasInlineFrames = e.hasInlineFrames), + t + ) + }), + (i.prototype.toJSON = function () { + return this.constructor.toObject(this, e.util.toJSONOptions) + }), + i + ) + })()), + (i.Location = (function () { + function i(e) { + if (((this.line = []), e)) + for (var n = Object.keys(e), t = 0; t < n.length; ++t) null != e[n[t]] && (this[n[t]] = e[n[t]]) + } + return ( + (i.prototype.id = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.mappingId = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.address = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.line = o.emptyArray), + (i.prototype.isFolded = !1), + (i.create = function (e) { + return new i(e) + }), + (i.encode = function (e, n) { + if ( + (n || (n = t.create()), + null != e.id && e.hasOwnProperty('id') && n.uint32(8).uint64(e.id), + null != e.mappingId && e.hasOwnProperty('mappingId') && n.uint32(16).uint64(e.mappingId), + null != e.address && e.hasOwnProperty('address') && n.uint32(24).uint64(e.address), + null != e.line && e.line.length) + ) + for (var o = 0; o < e.line.length; ++o) + r.perftools.profiles.Line.encode(e.line[o], n.uint32(34).fork()).ldelim() + return null != e.isFolded && e.hasOwnProperty('isFolded') && n.uint32(40).bool(e.isFolded), n + }), + (i.encodeDelimited = function (e, n) { + return this.encode(e, n).ldelim() + }), + (i.decode = function (e, t) { + e instanceof n || (e = n.create(e)) + for ( + var o = void 0 === t ? e.len : e.pos + t, i = new r.perftools.profiles.Location(); + e.pos < o; + + ) { + var l = e.uint32() + switch (l >>> 3) { + case 1: + i.id = e.uint64() + break + case 2: + i.mappingId = e.uint64() + break + case 3: + i.address = e.uint64() + break + case 4: + ;(i.line && i.line.length) || (i.line = []), + i.line.push(r.perftools.profiles.Line.decode(e, e.uint32())) + break + case 5: + i.isFolded = e.bool() + break + default: + e.skipType(7 & l) + } + } + return i + }), + (i.decodeDelimited = function (e) { + return e instanceof n || (e = new n(e)), this.decode(e, e.uint32()) + }), + (i.verify = function (e) { + if ('object' != typeof e || null === e) return 'object expected' + if ( + null != e.id && + e.hasOwnProperty('id') && + !(o.isInteger(e.id) || (e.id && o.isInteger(e.id.low) && o.isInteger(e.id.high))) + ) + return 'id: integer|Long expected' + if ( + null != e.mappingId && + e.hasOwnProperty('mappingId') && + !( + o.isInteger(e.mappingId) || + (e.mappingId && o.isInteger(e.mappingId.low) && o.isInteger(e.mappingId.high)) + ) + ) + return 'mappingId: integer|Long expected' + if ( + null != e.address && + e.hasOwnProperty('address') && + !( + o.isInteger(e.address) || + (e.address && o.isInteger(e.address.low) && o.isInteger(e.address.high)) + ) + ) + return 'address: integer|Long expected' + if (null != e.line && e.hasOwnProperty('line')) { + if (!Array.isArray(e.line)) return 'line: array expected' + for (var n = 0; n < e.line.length; ++n) { + var t = r.perftools.profiles.Line.verify(e.line[n]) + if (t) return 'line.' + t + } + } + return null != e.isFolded && e.hasOwnProperty('isFolded') && 'boolean' != typeof e.isFolded + ? 'isFolded: boolean expected' + : null + }), + (i.fromObject = function (e) { + if (e instanceof r.perftools.profiles.Location) return e + var n = new r.perftools.profiles.Location() + if ( + (null != e.id && + (o.Long + ? ((n.id = o.Long.fromValue(e.id)).unsigned = !0) + : 'string' == typeof e.id + ? (n.id = parseInt(e.id, 10)) + : 'number' == typeof e.id + ? (n.id = e.id) + : 'object' == typeof e.id && + (n.id = new o.LongBits(e.id.low >>> 0, e.id.high >>> 0).toNumber(!0))), + null != e.mappingId && + (o.Long + ? ((n.mappingId = o.Long.fromValue(e.mappingId)).unsigned = !0) + : 'string' == typeof e.mappingId + ? (n.mappingId = parseInt(e.mappingId, 10)) + : 'number' == typeof e.mappingId + ? (n.mappingId = e.mappingId) + : 'object' == typeof e.mappingId && + (n.mappingId = new o.LongBits(e.mappingId.low >>> 0, e.mappingId.high >>> 0).toNumber(!0))), + null != e.address && + (o.Long + ? ((n.address = o.Long.fromValue(e.address)).unsigned = !0) + : 'string' == typeof e.address + ? (n.address = parseInt(e.address, 10)) + : 'number' == typeof e.address + ? (n.address = e.address) + : 'object' == typeof e.address && + (n.address = new o.LongBits(e.address.low >>> 0, e.address.high >>> 0).toNumber(!0))), + e.line) + ) { + if (!Array.isArray(e.line)) throw TypeError('.perftools.profiles.Location.line: array expected') + n.line = [] + for (var t = 0; t < e.line.length; ++t) { + if ('object' != typeof e.line[t]) + throw TypeError('.perftools.profiles.Location.line: object expected') + n.line[t] = r.perftools.profiles.Line.fromObject(e.line[t]) + } + } + return null != e.isFolded && (n.isFolded = Boolean(e.isFolded)), n + }), + (i.toObject = function (e, n) { + n || (n = {}) + var t = {} + if (((n.arrays || n.defaults) && (t.line = []), n.defaults)) { + if (o.Long) { + var i = new o.Long(0, 0, !0) + t.id = n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i + } else t.id = n.longs === String ? '0' : 0 + o.Long + ? ((i = new o.Long(0, 0, !0)), + (t.mappingId = n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i)) + : (t.mappingId = n.longs === String ? '0' : 0), + o.Long + ? ((i = new o.Long(0, 0, !0)), + (t.address = n.longs === String ? i.toString() : n.longs === Number ? i.toNumber() : i)) + : (t.address = n.longs === String ? '0' : 0), + (t.isFolded = !1) + } + if ( + (null != e.id && + e.hasOwnProperty('id') && + ('number' == typeof e.id + ? (t.id = n.longs === String ? String(e.id) : e.id) + : (t.id = + n.longs === String + ? o.Long.prototype.toString.call(e.id) + : n.longs === Number + ? new o.LongBits(e.id.low >>> 0, e.id.high >>> 0).toNumber(!0) + : e.id)), + null != e.mappingId && + e.hasOwnProperty('mappingId') && + ('number' == typeof e.mappingId + ? (t.mappingId = n.longs === String ? String(e.mappingId) : e.mappingId) + : (t.mappingId = + n.longs === String + ? o.Long.prototype.toString.call(e.mappingId) + : n.longs === Number + ? new o.LongBits(e.mappingId.low >>> 0, e.mappingId.high >>> 0).toNumber(!0) + : e.mappingId)), + null != e.address && + e.hasOwnProperty('address') && + ('number' == typeof e.address + ? (t.address = n.longs === String ? String(e.address) : e.address) + : (t.address = + n.longs === String + ? o.Long.prototype.toString.call(e.address) + : n.longs === Number + ? new o.LongBits(e.address.low >>> 0, e.address.high >>> 0).toNumber(!0) + : e.address)), + e.line && e.line.length) + ) { + t.line = [] + for (var l = 0; l < e.line.length; ++l) + t.line[l] = r.perftools.profiles.Line.toObject(e.line[l], n) + } + return null != e.isFolded && e.hasOwnProperty('isFolded') && (t.isFolded = e.isFolded), t + }), + (i.prototype.toJSON = function () { + return this.constructor.toObject(this, e.util.toJSONOptions) + }), + i + ) + })()), + (i.Line = (function () { + function i(e) { + if (e) + for (var n = Object.keys(e), t = 0; t < n.length; ++t) null != e[n[t]] && (this[n[t]] = e[n[t]]) + } + return ( + (i.prototype.functionId = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.line = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.create = function (e) { + return new i(e) + }), + (i.encode = function (e, n) { + return ( + n || (n = t.create()), + null != e.functionId && e.hasOwnProperty('functionId') && n.uint32(8).uint64(e.functionId), + null != e.line && e.hasOwnProperty('line') && n.uint32(16).int64(e.line), + n + ) + }), + (i.encodeDelimited = function (e, n) { + return this.encode(e, n).ldelim() + }), + (i.decode = function (e, t) { + e instanceof n || (e = n.create(e)) + for (var o = void 0 === t ? e.len : e.pos + t, i = new r.perftools.profiles.Line(); e.pos < o; ) { + var l = e.uint32() + switch (l >>> 3) { + case 1: + i.functionId = e.uint64() + break + case 2: + i.line = e.int64() + break + default: + e.skipType(7 & l) + } + } + return i + }), + (i.decodeDelimited = function (e) { + return e instanceof n || (e = new n(e)), this.decode(e, e.uint32()) + }), + (i.verify = function (e) { + return 'object' != typeof e || null === e + ? 'object expected' + : null != e.functionId && + e.hasOwnProperty('functionId') && + !( + o.isInteger(e.functionId) || + (e.functionId && o.isInteger(e.functionId.low) && o.isInteger(e.functionId.high)) + ) + ? 'functionId: integer|Long expected' + : null != e.line && + e.hasOwnProperty('line') && + !(o.isInteger(e.line) || (e.line && o.isInteger(e.line.low) && o.isInteger(e.line.high))) + ? 'line: integer|Long expected' + : null + }), + (i.fromObject = function (e) { + if (e instanceof r.perftools.profiles.Line) return e + var n = new r.perftools.profiles.Line() + return ( + null != e.functionId && + (o.Long + ? ((n.functionId = o.Long.fromValue(e.functionId)).unsigned = !0) + : 'string' == typeof e.functionId + ? (n.functionId = parseInt(e.functionId, 10)) + : 'number' == typeof e.functionId + ? (n.functionId = e.functionId) + : 'object' == typeof e.functionId && + (n.functionId = new o.LongBits(e.functionId.low >>> 0, e.functionId.high >>> 0).toNumber( + !0, + ))), + null != e.line && + (o.Long + ? ((n.line = o.Long.fromValue(e.line)).unsigned = !1) + : 'string' == typeof e.line + ? (n.line = parseInt(e.line, 10)) + : 'number' == typeof e.line + ? (n.line = e.line) + : 'object' == typeof e.line && + (n.line = new o.LongBits(e.line.low >>> 0, e.line.high >>> 0).toNumber())), + n + ) + }), + (i.toObject = function (e, n) { + n || (n = {}) + var t = {} + if (n.defaults) { + if (o.Long) { + var r = new o.Long(0, 0, !0) + t.functionId = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r + } else t.functionId = n.longs === String ? '0' : 0 + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.line = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.line = n.longs === String ? '0' : 0) + } + return ( + null != e.functionId && + e.hasOwnProperty('functionId') && + ('number' == typeof e.functionId + ? (t.functionId = n.longs === String ? String(e.functionId) : e.functionId) + : (t.functionId = + n.longs === String + ? o.Long.prototype.toString.call(e.functionId) + : n.longs === Number + ? new o.LongBits(e.functionId.low >>> 0, e.functionId.high >>> 0).toNumber(!0) + : e.functionId)), + null != e.line && + e.hasOwnProperty('line') && + ('number' == typeof e.line + ? (t.line = n.longs === String ? String(e.line) : e.line) + : (t.line = + n.longs === String + ? o.Long.prototype.toString.call(e.line) + : n.longs === Number + ? new o.LongBits(e.line.low >>> 0, e.line.high >>> 0).toNumber() + : e.line)), + t + ) + }), + (i.prototype.toJSON = function () { + return this.constructor.toObject(this, e.util.toJSONOptions) + }), + i + ) + })()), + (i.Function = (function () { + function i(e) { + if (e) + for (var n = Object.keys(e), t = 0; t < n.length; ++t) null != e[n[t]] && (this[n[t]] = e[n[t]]) + } + return ( + (i.prototype.id = o.Long ? o.Long.fromBits(0, 0, !0) : 0), + (i.prototype.name = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.systemName = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.filename = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.prototype.startLine = o.Long ? o.Long.fromBits(0, 0, !1) : 0), + (i.create = function (e) { + return new i(e) + }), + (i.encode = function (e, n) { + return ( + n || (n = t.create()), + null != e.id && e.hasOwnProperty('id') && n.uint32(8).uint64(e.id), + null != e.name && e.hasOwnProperty('name') && n.uint32(16).int64(e.name), + null != e.systemName && e.hasOwnProperty('systemName') && n.uint32(24).int64(e.systemName), + null != e.filename && e.hasOwnProperty('filename') && n.uint32(32).int64(e.filename), + null != e.startLine && e.hasOwnProperty('startLine') && n.uint32(40).int64(e.startLine), + n + ) + }), + (i.encodeDelimited = function (e, n) { + return this.encode(e, n).ldelim() + }), + (i.decode = function (e, t) { + e instanceof n || (e = n.create(e)) + for ( + var o = void 0 === t ? e.len : e.pos + t, i = new r.perftools.profiles.Function(); + e.pos < o; + + ) { + var l = e.uint32() + switch (l >>> 3) { + case 1: + i.id = e.uint64() + break + case 2: + i.name = e.int64() + break + case 3: + i.systemName = e.int64() + break + case 4: + i.filename = e.int64() + break + case 5: + i.startLine = e.int64() + break + default: + e.skipType(7 & l) + } + } + return i + }), + (i.decodeDelimited = function (e) { + return e instanceof n || (e = new n(e)), this.decode(e, e.uint32()) + }), + (i.verify = function (e) { + return 'object' != typeof e || null === e + ? 'object expected' + : null != e.id && + e.hasOwnProperty('id') && + !(o.isInteger(e.id) || (e.id && o.isInteger(e.id.low) && o.isInteger(e.id.high))) + ? 'id: integer|Long expected' + : null != e.name && + e.hasOwnProperty('name') && + !(o.isInteger(e.name) || (e.name && o.isInteger(e.name.low) && o.isInteger(e.name.high))) + ? 'name: integer|Long expected' + : null != e.systemName && + e.hasOwnProperty('systemName') && + !( + o.isInteger(e.systemName) || + (e.systemName && o.isInteger(e.systemName.low) && o.isInteger(e.systemName.high)) + ) + ? 'systemName: integer|Long expected' + : null != e.filename && + e.hasOwnProperty('filename') && + !( + o.isInteger(e.filename) || + (e.filename && o.isInteger(e.filename.low) && o.isInteger(e.filename.high)) + ) + ? 'filename: integer|Long expected' + : null != e.startLine && + e.hasOwnProperty('startLine') && + !( + o.isInteger(e.startLine) || + (e.startLine && o.isInteger(e.startLine.low) && o.isInteger(e.startLine.high)) + ) + ? 'startLine: integer|Long expected' + : null + }), + (i.fromObject = function (e) { + if (e instanceof r.perftools.profiles.Function) return e + var n = new r.perftools.profiles.Function() + return ( + null != e.id && + (o.Long + ? ((n.id = o.Long.fromValue(e.id)).unsigned = !0) + : 'string' == typeof e.id + ? (n.id = parseInt(e.id, 10)) + : 'number' == typeof e.id + ? (n.id = e.id) + : 'object' == typeof e.id && + (n.id = new o.LongBits(e.id.low >>> 0, e.id.high >>> 0).toNumber(!0))), + null != e.name && + (o.Long + ? ((n.name = o.Long.fromValue(e.name)).unsigned = !1) + : 'string' == typeof e.name + ? (n.name = parseInt(e.name, 10)) + : 'number' == typeof e.name + ? (n.name = e.name) + : 'object' == typeof e.name && + (n.name = new o.LongBits(e.name.low >>> 0, e.name.high >>> 0).toNumber())), + null != e.systemName && + (o.Long + ? ((n.systemName = o.Long.fromValue(e.systemName)).unsigned = !1) + : 'string' == typeof e.systemName + ? (n.systemName = parseInt(e.systemName, 10)) + : 'number' == typeof e.systemName + ? (n.systemName = e.systemName) + : 'object' == typeof e.systemName && + (n.systemName = new o.LongBits( + e.systemName.low >>> 0, + e.systemName.high >>> 0, + ).toNumber())), + null != e.filename && + (o.Long + ? ((n.filename = o.Long.fromValue(e.filename)).unsigned = !1) + : 'string' == typeof e.filename + ? (n.filename = parseInt(e.filename, 10)) + : 'number' == typeof e.filename + ? (n.filename = e.filename) + : 'object' == typeof e.filename && + (n.filename = new o.LongBits(e.filename.low >>> 0, e.filename.high >>> 0).toNumber())), + null != e.startLine && + (o.Long + ? ((n.startLine = o.Long.fromValue(e.startLine)).unsigned = !1) + : 'string' == typeof e.startLine + ? (n.startLine = parseInt(e.startLine, 10)) + : 'number' == typeof e.startLine + ? (n.startLine = e.startLine) + : 'object' == typeof e.startLine && + (n.startLine = new o.LongBits(e.startLine.low >>> 0, e.startLine.high >>> 0).toNumber())), + n + ) + }), + (i.toObject = function (e, n) { + n || (n = {}) + var t = {} + if (n.defaults) { + if (o.Long) { + var r = new o.Long(0, 0, !0) + t.id = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r + } else t.id = n.longs === String ? '0' : 0 + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.name = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.name = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.systemName = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.systemName = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.filename = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.filename = n.longs === String ? '0' : 0), + o.Long + ? ((r = new o.Long(0, 0, !1)), + (t.startLine = n.longs === String ? r.toString() : n.longs === Number ? r.toNumber() : r)) + : (t.startLine = n.longs === String ? '0' : 0) + } + return ( + null != e.id && + e.hasOwnProperty('id') && + ('number' == typeof e.id + ? (t.id = n.longs === String ? String(e.id) : e.id) + : (t.id = + n.longs === String + ? o.Long.prototype.toString.call(e.id) + : n.longs === Number + ? new o.LongBits(e.id.low >>> 0, e.id.high >>> 0).toNumber(!0) + : e.id)), + null != e.name && + e.hasOwnProperty('name') && + ('number' == typeof e.name + ? (t.name = n.longs === String ? String(e.name) : e.name) + : (t.name = + n.longs === String + ? o.Long.prototype.toString.call(e.name) + : n.longs === Number + ? new o.LongBits(e.name.low >>> 0, e.name.high >>> 0).toNumber() + : e.name)), + null != e.systemName && + e.hasOwnProperty('systemName') && + ('number' == typeof e.systemName + ? (t.systemName = n.longs === String ? String(e.systemName) : e.systemName) + : (t.systemName = + n.longs === String + ? o.Long.prototype.toString.call(e.systemName) + : n.longs === Number + ? new o.LongBits(e.systemName.low >>> 0, e.systemName.high >>> 0).toNumber() + : e.systemName)), + null != e.filename && + e.hasOwnProperty('filename') && + ('number' == typeof e.filename + ? (t.filename = n.longs === String ? String(e.filename) : e.filename) + : (t.filename = + n.longs === String + ? o.Long.prototype.toString.call(e.filename) + : n.longs === Number + ? new o.LongBits(e.filename.low >>> 0, e.filename.high >>> 0).toNumber() + : e.filename)), + null != e.startLine && + e.hasOwnProperty('startLine') && + ('number' == typeof e.startLine + ? (t.startLine = n.longs === String ? String(e.startLine) : e.startLine) + : (t.startLine = + n.longs === String + ? o.Long.prototype.toString.call(e.startLine) + : n.longs === Number + ? new o.LongBits(e.startLine.low >>> 0, e.startLine.high >>> 0).toNumber() + : e.startLine)), + t + ) + }), + (i.prototype.toJSON = function () { + return this.constructor.toObject(this, e.util.toJSONOptions) + }), + i + ) + })()), + i)), + l + ) + })()), + (module.exports = r) + }, + {'protobufjs/minimal': 'Myh2'}, + ], + YvD4: [ + function (require, module, exports) { + module.exports = t + var i = null + try { + i = new WebAssembly.Instance( + new WebAssembly.Module( + new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, + 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, + 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, + 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, + 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, + 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, + 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, + 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, + 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, + 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, + 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, + 167, 11, + ]), + ), + {}, + ).exports + } catch (L) {} + function t(i, t, n) { + ;(this.low = 0 | i), (this.high = 0 | t), (this.unsigned = !!n) + } + function n(i) { + return !0 === (i && i.__isLong__) + } + t.prototype.__isLong__, Object.defineProperty(t.prototype, '__isLong__', {value: !0}), (t.isLong = n) + var h = {}, + s = {} + function e(i, t) { + var n, e, r + return t + ? (r = 0 <= (i >>>= 0) && i < 256) && (e = s[i]) + ? e + : ((n = u(i, (0 | i) < 0 ? -1 : 0, !0)), r && (s[i] = n), n) + : (r = -128 <= (i |= 0) && i < 128) && (e = h[i]) + ? e + : ((n = u(i, i < 0 ? -1 : 0, !1)), r && (h[i] = n), n) + } + function r(i, t) { + if (isNaN(i)) return t ? N : m + if (t) { + if (i < 0) return N + if (i >= c) return p + } else { + if (i <= -w) return _ + if (i + 1 >= w) return q + } + return i < 0 ? r(-i, t).neg() : u(i % d | 0, (i / d) | 0, t) + } + function u(i, n, h) { + return new t(i, n, h) + } + ;(t.fromInt = e), (t.fromNumber = r), (t.fromBits = u) + var o = Math.pow + function g(i, t, n) { + if (0 === i.length) throw Error('empty string') + if ('NaN' === i || 'Infinity' === i || '+Infinity' === i || '-Infinity' === i) return m + if (('number' == typeof t ? ((n = t), (t = !1)) : (t = !!t), (n = n || 10) < 2 || 36 < n)) + throw RangeError('radix') + var h + if ((h = i.indexOf('-')) > 0) throw Error('interior hyphen') + if (0 === h) return g(i.substring(1), t, n).neg() + for (var s = r(o(n, 8)), e = m, u = 0; u < i.length; u += 8) { + var f = Math.min(8, i.length - u), + l = parseInt(i.substring(u, u + f), n) + if (f < 8) { + var a = r(o(n, f)) + e = e.mul(a).add(r(l)) + } else e = (e = e.mul(s)).add(r(l)) + } + return (e.unsigned = t), e + } + function f(i, t) { + return 'number' == typeof i + ? r(i, t) + : 'string' == typeof i + ? g(i, t) + : u(i.low, i.high, 'boolean' == typeof t ? t : i.unsigned) + } + ;(t.fromString = g), (t.fromValue = f) + var l = 65536, + a = 1 << 24, + d = l * l, + c = d * d, + w = c / 2, + v = e(a), + m = e(0) + t.ZERO = m + var N = e(0, !0) + t.UZERO = N + var E = e(1) + t.ONE = E + var y = e(1, !0) + t.UONE = y + var b = e(-1) + t.NEG_ONE = b + var q = u(-1, 2147483647, !1) + t.MAX_VALUE = q + var p = u(-1, -1, !0) + t.MAX_UNSIGNED_VALUE = p + var _ = u(0, -2147483648, !1) + t.MIN_VALUE = _ + var B = t.prototype + ;(B.toInt = function () { + return this.unsigned ? this.low >>> 0 : this.low + }), + (B.toNumber = function () { + return this.unsigned ? (this.high >>> 0) * d + (this.low >>> 0) : this.high * d + (this.low >>> 0) + }), + (B.toString = function (i) { + if ((i = i || 10) < 2 || 36 < i) throw RangeError('radix') + if (this.isZero()) return '0' + if (this.isNegative()) { + if (this.eq(_)) { + var t = r(i), + n = this.div(t), + h = n.mul(t).sub(this) + return n.toString(i) + h.toInt().toString(i) + } + return '-' + this.neg().toString(i) + } + for (var s = r(o(i, 6), this.unsigned), e = this, u = ''; ; ) { + var g = e.div(s), + f = (e.sub(g.mul(s)).toInt() >>> 0).toString(i) + if ((e = g).isZero()) return f + u + for (; f.length < 6; ) f = '0' + f + u = '' + f + u + } + }), + (B.getHighBits = function () { + return this.high + }), + (B.getHighBitsUnsigned = function () { + return this.high >>> 0 + }), + (B.getLowBits = function () { + return this.low + }), + (B.getLowBitsUnsigned = function () { + return this.low >>> 0 + }), + (B.getNumBitsAbs = function () { + if (this.isNegative()) return this.eq(_) ? 64 : this.neg().getNumBitsAbs() + for (var i = 0 != this.high ? this.high : this.low, t = 31; t > 0 && 0 == (i & (1 << t)); t--); + return 0 != this.high ? t + 33 : t + 1 + }), + (B.isZero = function () { + return 0 === this.high && 0 === this.low + }), + (B.eqz = B.isZero), + (B.isNegative = function () { + return !this.unsigned && this.high < 0 + }), + (B.isPositive = function () { + return this.unsigned || this.high >= 0 + }), + (B.isOdd = function () { + return 1 == (1 & this.low) + }), + (B.isEven = function () { + return 0 == (1 & this.low) + }), + (B.equals = function (i) { + return ( + n(i) || (i = f(i)), + (this.unsigned === i.unsigned || this.high >>> 31 != 1 || i.high >>> 31 != 1) && + this.high === i.high && + this.low === i.low + ) + }), + (B.eq = B.equals), + (B.notEquals = function (i) { + return !this.eq(i) + }), + (B.neq = B.notEquals), + (B.ne = B.notEquals), + (B.lessThan = function (i) { + return this.comp(i) < 0 + }), + (B.lt = B.lessThan), + (B.lessThanOrEqual = function (i) { + return this.comp(i) <= 0 + }), + (B.lte = B.lessThanOrEqual), + (B.le = B.lessThanOrEqual), + (B.greaterThan = function (i) { + return this.comp(i) > 0 + }), + (B.gt = B.greaterThan), + (B.greaterThanOrEqual = function (i) { + return this.comp(i) >= 0 + }), + (B.gte = B.greaterThanOrEqual), + (B.ge = B.greaterThanOrEqual), + (B.compare = function (i) { + if ((n(i) || (i = f(i)), this.eq(i))) return 0 + var t = this.isNegative(), + h = i.isNegative() + return t && !h + ? -1 + : !t && h + ? 1 + : this.unsigned + ? i.high >>> 0 > this.high >>> 0 || (i.high === this.high && i.low >>> 0 > this.low >>> 0) + ? -1 + : 1 + : this.sub(i).isNegative() + ? -1 + : 1 + }), + (B.comp = B.compare), + (B.negate = function () { + return !this.unsigned && this.eq(_) ? _ : this.not().add(E) + }), + (B.neg = B.negate), + (B.add = function (i) { + n(i) || (i = f(i)) + var t = this.high >>> 16, + h = 65535 & this.high, + s = this.low >>> 16, + e = 65535 & this.low, + r = i.high >>> 16, + o = 65535 & i.high, + g = i.low >>> 16, + l = 0, + a = 0, + d = 0, + c = 0 + return ( + (d += (c += e + (65535 & i.low)) >>> 16), + (a += (d += s + g) >>> 16), + (l += (a += h + o) >>> 16), + (l += t + r), + u(((d &= 65535) << 16) | (c &= 65535), ((l &= 65535) << 16) | (a &= 65535), this.unsigned) + ) + }), + (B.subtract = function (i) { + return n(i) || (i = f(i)), this.add(i.neg()) + }), + (B.sub = B.subtract), + (B.multiply = function (t) { + if (this.isZero()) return m + if ((n(t) || (t = f(t)), i)) + return u(i.mul(this.low, this.high, t.low, t.high), i.get_high(), this.unsigned) + if (t.isZero()) return m + if (this.eq(_)) return t.isOdd() ? _ : m + if (t.eq(_)) return this.isOdd() ? _ : m + if (this.isNegative()) return t.isNegative() ? this.neg().mul(t.neg()) : this.neg().mul(t).neg() + if (t.isNegative()) return this.mul(t.neg()).neg() + if (this.lt(v) && t.lt(v)) return r(this.toNumber() * t.toNumber(), this.unsigned) + var h = this.high >>> 16, + s = 65535 & this.high, + e = this.low >>> 16, + o = 65535 & this.low, + g = t.high >>> 16, + l = 65535 & t.high, + a = t.low >>> 16, + d = 65535 & t.low, + c = 0, + w = 0, + N = 0, + E = 0 + return ( + (N += (E += o * d) >>> 16), + (w += (N += e * d) >>> 16), + (N &= 65535), + (w += (N += o * a) >>> 16), + (c += (w += s * d) >>> 16), + (w &= 65535), + (c += (w += e * a) >>> 16), + (w &= 65535), + (c += (w += o * l) >>> 16), + (c += h * d + s * a + e * l + o * g), + u(((N &= 65535) << 16) | (E &= 65535), ((c &= 65535) << 16) | (w &= 65535), this.unsigned) + ) + }), + (B.mul = B.multiply), + (B.divide = function (t) { + if ((n(t) || (t = f(t)), t.isZero())) throw Error('division by zero') + var h, s, e + if (i) + return this.unsigned || -2147483648 !== this.high || -1 !== t.low || -1 !== t.high + ? u( + (this.unsigned ? i.div_u : i.div_s)(this.low, this.high, t.low, t.high), + i.get_high(), + this.unsigned, + ) + : this + if (this.isZero()) return this.unsigned ? N : m + if (this.unsigned) { + if ((t.unsigned || (t = t.toUnsigned()), t.gt(this))) return N + if (t.gt(this.shru(1))) return y + e = N + } else { + if (this.eq(_)) + return t.eq(E) || t.eq(b) + ? _ + : t.eq(_) + ? E + : (h = this.shr(1).div(t).shl(1)).eq(m) + ? t.isNegative() + ? E + : b + : ((s = this.sub(t.mul(h))), (e = h.add(s.div(t)))) + if (t.eq(_)) return this.unsigned ? N : m + if (this.isNegative()) return t.isNegative() ? this.neg().div(t.neg()) : this.neg().div(t).neg() + if (t.isNegative()) return this.div(t.neg()).neg() + e = m + } + for (s = this; s.gte(t); ) { + h = Math.max(1, Math.floor(s.toNumber() / t.toNumber())) + for ( + var g = Math.ceil(Math.log(h) / Math.LN2), l = g <= 48 ? 1 : o(2, g - 48), a = r(h), d = a.mul(t); + d.isNegative() || d.gt(s); + + ) + d = (a = r((h -= l), this.unsigned)).mul(t) + a.isZero() && (a = E), (e = e.add(a)), (s = s.sub(d)) + } + return e + }), + (B.div = B.divide), + (B.modulo = function (t) { + return ( + n(t) || (t = f(t)), + i + ? u( + (this.unsigned ? i.rem_u : i.rem_s)(this.low, this.high, t.low, t.high), + i.get_high(), + this.unsigned, + ) + : this.sub(this.div(t).mul(t)) + ) + }), + (B.mod = B.modulo), + (B.rem = B.modulo), + (B.not = function () { + return u(~this.low, ~this.high, this.unsigned) + }), + (B.and = function (i) { + return n(i) || (i = f(i)), u(this.low & i.low, this.high & i.high, this.unsigned) + }), + (B.or = function (i) { + return n(i) || (i = f(i)), u(this.low | i.low, this.high | i.high, this.unsigned) + }), + (B.xor = function (i) { + return n(i) || (i = f(i)), u(this.low ^ i.low, this.high ^ i.high, this.unsigned) + }), + (B.shiftLeft = function (i) { + return ( + n(i) && (i = i.toInt()), + 0 == (i &= 63) + ? this + : i < 32 + ? u(this.low << i, (this.high << i) | (this.low >>> (32 - i)), this.unsigned) + : u(0, this.low << (i - 32), this.unsigned) + ) + }), + (B.shl = B.shiftLeft), + (B.shiftRight = function (i) { + return ( + n(i) && (i = i.toInt()), + 0 == (i &= 63) + ? this + : i < 32 + ? u((this.low >>> i) | (this.high << (32 - i)), this.high >> i, this.unsigned) + : u(this.high >> (i - 32), this.high >= 0 ? 0 : -1, this.unsigned) + ) + }), + (B.shr = B.shiftRight), + (B.shiftRightUnsigned = function (i) { + if ((n(i) && (i = i.toInt()), 0 === (i &= 63))) return this + var t = this.high + return i < 32 + ? u((this.low >>> i) | (t << (32 - i)), t >>> i, this.unsigned) + : u(32 === i ? t : t >>> (i - 32), 0, this.unsigned) + }), + (B.shru = B.shiftRightUnsigned), + (B.shr_u = B.shiftRightUnsigned), + (B.toSigned = function () { + return this.unsigned ? u(this.low, this.high, !1) : this + }), + (B.toUnsigned = function () { + return this.unsigned ? this : u(this.low, this.high, !0) + }), + (B.toBytes = function (i) { + return i ? this.toBytesLE() : this.toBytesBE() + }), + (B.toBytesLE = function () { + var i = this.high, + t = this.low + return [ + 255 & t, + (t >>> 8) & 255, + (t >>> 16) & 255, + t >>> 24, + 255 & i, + (i >>> 8) & 255, + (i >>> 16) & 255, + i >>> 24, + ] + }), + (B.toBytesBE = function () { + var i = this.high, + t = this.low + return [ + i >>> 24, + (i >>> 16) & 255, + (i >>> 8) & 255, + 255 & i, + t >>> 24, + (t >>> 16) & 255, + (t >>> 8) & 255, + 255 & t, + ] + }), + (t.fromBytes = function (i, n, h) { + return h ? t.fromBytesLE(i, n) : t.fromBytesBE(i, n) + }), + (t.fromBytesLE = function (i, n) { + return new t( + i[0] | (i[1] << 8) | (i[2] << 16) | (i[3] << 24), + i[4] | (i[5] << 8) | (i[6] << 16) | (i[7] << 24), + n, + ) + }), + (t.fromBytesBE = function (i, n) { + return new t( + (i[4] << 24) | (i[5] << 16) | (i[6] << 8) | i[7], + (i[0] << 24) | (i[1] << 16) | (i[2] << 8) | i[3], + n, + ) + }) + }, + {}, + ], + VmHy: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importAsPprofProfile = o) + var e = require('./profile.proto.js'), + n = require('../lib/profile'), + t = require('../lib/utils'), + l = require('../lib/value-formatters'), + r = u(require('long')) + function u(e) { + return e && e.__esModule ? e : {default: e} + } + function i(e) { + const n = e.defaultSampleType, + t = e.sampleType, + l = t.length - 1 + if (!n || !+n) return l + const r = t.findIndex((e) => e.type === n) + return -1 === r ? l : r + } + function o(u) { + if (0 === u.byteLength) return null + let o + try { + o = e.perftools.profiles.Profile.decode(new Uint8Array(u)) + } catch (w) { + return null + } + function s(e) { + return 'number' == typeof e ? e : e.low + } + function a(e) { + return o.stringTable[s(e)] || null + } + const c = new Map() + function f(e) { + const {name: n, filename: t, startLine: l} = e, + r = (null != n && a(n)) || '(unknown)', + u = null != t ? a(t) : null, + i = null != l ? +l : null, + o = {key: `${r}:${u}:${i}`, name: r} + return null != u && (o.file = u), null != i && (o.line = i), o + } + for (let e of o.function) + if (e.id) { + const n = f(e) + null != n && c.set(s(e.id), n) + } + function p(e) { + const {line: n} = e + if (null == n) return null + const l = (0, t.lastOf)(n) + if (null == l) return null + if (l.functionId) { + let e = c.get(s(l.functionId)) + const n = l.line instanceof r.default ? l.line.toNumber() : l.line + return n && n > 0 && null != e && (e.line = n), e || null + } + return null + } + const d = new Map() + for (let e of o.location) + if (null != e.id) { + const n = p(e) + n && d.set(s(e.id), n) + } + const m = o.sampleType.map((e) => ({ + type: (e.type && a(e.type)) || 'samples', + unit: (e.unit && a(e.unit)) || 'count', + })), + y = i(o) + if (y < 0 || y >= m.length) return null + const b = m[y], + g = new n.StackListProfileBuilder() + switch (b.unit) { + case 'nanoseconds': + case 'microseconds': + case 'milliseconds': + case 'seconds': + g.setValueFormatter(new l.TimeFormatter(b.unit)) + break + case 'bytes': + g.setValueFormatter(new l.ByteFormatter()) + } + for (let e of o.sample) { + const n = e.locationId ? e.locationId.map((e) => d.get(s(e))) : [] + if ((n.reverse(), null == e.value || e.value.length <= y)) return null + const t = e.value[y] + g.appendSampleWithWeight( + n.filter((e) => null != e), + +t, + ) + } + return g.build() + } + }, + { + './profile.proto.js': 'YdJi', + '../lib/profile': 'YG8z', + '../lib/utils': 'ucYa', + '../lib/value-formatters': 'LsM4', + long: 'YvD4', + }, + ], + bNW7: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromChromeHeapProfile = i) + var e = require('../lib/profile'), + t = require('../lib/utils'), + r = require('../lib/value-formatters') + const n = new Map() + function o(e) { + return (0, t.getOrInsert)(n, e, (e) => { + const t = e.url, + r = e.lineNumber, + n = e.columnNumber, + o = e.functionName || (t ? `(anonymous ${t.split('/').pop()}:${r})` : '(anonymous)') + return {key: `${o}:${t}:${r}:${n}`, name: o, file: t, line: r, col: n} + }) + } + function i(t) { + const n = new Map() + let i = 0 + const l = (e, t) => { + ;(e.id = i++), n.set(e.id, e), t && (e.parent = t.id), e.children.forEach((t) => l(t, e)) + } + l(t.head) + const s = (e) => { + if (0 === e.children.length) return e.selfSize || 0 + const t = e.children.reduce((e, t) => (e += s(t)), e.selfSize) + return (e.totalSize = t), t + }, + u = s(t.head), + a = [] + for (let e of n.values()) { + let t = [] + for (t.push(e); void 0 !== e.parent; ) { + const r = n.get(e.parent) + if (void 0 === r) break + t.unshift(r), (e = r) + } + a.push(t) + } + const c = new e.StackListProfileBuilder(u) + for (let e of a) { + const t = e[e.length - 1] + c.appendSampleWithWeight( + e.map((e) => o(e.callFrame)), + t.selfSize, + ) + } + return c.setValueFormatter(new r.ByteFormatter()), c.build() + } + }, + {'../lib/profile': 'YG8z', '../lib/utils': 'ucYa', '../lib/value-formatters': 'LsM4'}, + ], + KFvE: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.isTraceEventFormatted = S), + (exports.importTraceEvents = W) + var e, + t = require('../lib/utils'), + n = require('../lib/profile'), + r = require('../lib/value-formatters') + !(function (e) { + ;(e.HERMES = 'HERMES'), (e.UNKNOWN = 'UNKNOWN') + })(e || (e = {})) + const s = ['line', 'column', 'name', 'category', 'url', 'params', 'allocatedCategory', 'allocatedName'] + function o(e, n) { + return `${(0, t.zeroPad)('' + e, 10)}:${(0, t.zeroPad)('' + n, 10)}` + } + function i(e) { + const n = new Map() + for (let r of e) { + ;(0, t.getOrInsert)(n, o(Number(r.pid), Number(r.tid)), () => []).push(r) + } + return n + } + function a(e, t) { + if (0 === e.length && 0 === t.length) throw new Error('This method should not be given both queues empty') + if (0 === t.length) return 'B' + if (0 === e.length) return 'E' + const n = e[0], + r = t[0], + s = n.ts, + o = r.ts + return s < o ? 'B' : o < s ? 'E' : m(n) === m(r) ? 'B' : 'E' + } + function u(e) { + const t = [], + n = [] + if (e.length > 0) { + let t = Number.MAX_SAFE_INTEGER + for (let n of e) t = Math.min(t, n.ts) + for (let n of e) n.ts -= t + } + const r = [] + for (let i of e) + switch (i.ph) { + case 'B': + t.push(i) + break + case 'E': + n.push(i) + break + case 'X': + r.push(i) + break + default: + return i + } + function s(e) { + var t, n + return null !== (n = null !== (t = e.dur) && void 0 !== t ? t : e.tdur) && void 0 !== n ? n : 0 + } + r.sort((e, t) => { + if (e.ts < t.ts) return -1 + if (e.ts > t.ts) return 1 + const n = s(e), + r = s(t) + return n > r ? -1 : n < r ? 1 : 0 + }) + for (let i of r) { + const e = s(i) + t.push(Object.assign(Object.assign({}, i), {ph: 'B'})), + n.push(Object.assign(Object.assign({}, i), {ph: 'E', ts: i.ts + e})) + } + function o(e, t) { + return e.ts < t.ts ? -1 : e.ts > t.ts ? 1 : 0 + } + return t.sort(o), n.sort(o), [t, n] + } + function c(e) { + const t = [] + for (let n of e) + switch (n.ph) { + case 'B': + case 'E': + case 'X': + t.push(n) + } + return t + } + function f(e) { + const t = new Map() + for (let n of e) + 'M' === n.ph && 'process_name' === n.name && n.args && n.args.name && t.set(n.pid, n.args.name) + return t + } + function l(e) { + const t = new Map() + for (let n of e) + 'M' === n.ph && 'thread_name' === n.name && n.args && n.args.name && t.set(o(n.pid, n.tid), n.args.name) + return t + } + function h(e) { + return `${e.name || '(unnamed)'}` + } + function m(e) { + let t = h(e) + return e.args && (t += ` ${JSON.stringify(e.args)}`), t + } + function d(t, n = e.UNKNOWN) { + if (n === e.HERMES) { + const e = `${t.name}:${t.args.url}:${t.args.line}:${t.args.column}` + return {name: h(t), key: e, file: t.args.url, line: t.args.line, col: t.args.column} + } + const r = m(t) + return {name: r, key: r} + } + function p(e, t, n, r) { + return null != e && null != t + ? `${e} (pid ${n}), ${t} (tid ${r})` + : null != e + ? `${e} (pid ${n}, tid ${r})` + : null != t + ? `${t} (pid ${n}, tid ${r})` + : `pid ${n}, tid ${r}` + } + function g(e, t) { + const n = f(e), + r = l(e), + s = new Map() + return ( + t.forEach((e) => { + if (0 === e.length) return + const t = Number(e[0].pid), + i = Number(e[0].tid), + a = o(t, i), + u = p(n.get(t), r.get(a), t, i) + s.set(a, u) + }), + s + ) + } + function E(e, t) { + const n = f(e), + r = l(e), + s = new Map() + return ( + t.forEach((e) => { + if (0 === e.length) return + const {pid: t, tid: i} = e[0], + a = o(t, i), + u = p(n.get(t), r.get(a), t, i) + s.set(a, u) + }), + s + ) + } + function $(s, o, i = e.UNKNOWN) { + const [c, f] = u(s), + l = new n.CallTreeProfileBuilder() + l.setValueFormatter(new r.TimeFormatter('microseconds')), l.setName(o) + const h = [], + m = (e) => { + const n = (0, t.lastOf)(h) + if (null == n) + return void console.warn( + `Tried to end frame "${d(e, i).key}", but the stack was empty. Doing nothing instead.`, + ) + const r = d(e, i), + s = d(n, i) + e.name === n.name + ? (r.key !== s.key && + console.warn( + `ts=${e.ts}: Tried to end "${r.key}" when "${s.key}" was on the top of the stack. Ending ${s.key} instead.`, + ), + h.pop(), + l.leaveFrame(s, e.ts)) + : console.warn( + `ts=${e.ts}: Tried to end "${r.key}" when "${s.key}" was on the top of the stack. Doing nothing instead.`, + ) + } + for (; c.length > 0 || f.length > 0; ) { + const e = a(c, f) + switch (e) { + case 'B': + ;(p = c.shift()), h.push(p), l.enterFrame(d(p, i), p.ts) + break + case 'E': { + const e = (0, t.lastOf)(h) + if (null != e) { + const t = d(e, i) + let n = !1 + for (let e = 1; e < f.length; e++) { + const r = f[e] + if (r.ts > f[0].ts) break + const s = d(r, i) + if (t.key === s.key) { + const t = f[0] + ;(f[0] = f[e]), (f[e] = t), (n = !0) + break + } + } + if (!n) + for (let r = 1; r < f.length; r++) { + const t = f[r] + if (t.ts > f[0].ts) break + if (t.name === e.name) { + const e = f[0] + ;(f[0] = f[r]), (f[r] = e), (n = !0) + break + } + } + } + m(f.shift()) + break + } + default: + return e + } + } + var p + for (let e = h.length - 1; e >= 0; e--) { + const t = d(h[e], i) + console.warn(`Frame "${t.key}" was still open at end of profile. Closing automatically.`), + l.leaveFrame(t, l.getTotalWeight()) + } + return l.build() + } + function w(e) { + const t = [] + let n = Number(e[0].ts) + return ( + e.forEach((e, r) => { + if (0 === r) return + const s = Number(e.ts) - n + ;(n = Number(e.ts)), t.push(s) + }), + t.push(0), + t + ) + } + function k({name: e, category: t}) { + return {key: `${e}:${t}`, name: e} + } + function b(e, t) { + const n = [] + let r = t + for (; r; ) { + const t = e[r] + if (!t) throw new Error(`Could not find frame for id ${r}`) + n.push(k(t)), (r = t.parent) + } + return n.reverse() + } + function y(e, t, s) { + const o = new n.StackListProfileBuilder() + o.setValueFormatter(new r.TimeFormatter('microseconds')), o.setName(s) + const i = w(t) + return ( + t.forEach((t, n) => { + const r = i[n], + s = b(e.stackFrames, t.sf) + o.appendSampleWithWeight(s, r) + }), + o.build() + ) + } + function N(n, r = e.UNKNOWN) { + const s = i(c(n)), + o = E(n, s), + a = [] + return ( + o.forEach((e, t) => { + const n = s.get(t) + if (!n) throw new Error(`Could not find events for key: ${n}`) + a.push([t, $(n, e, r)]) + }), + (0, t.sortBy)(a, (e) => e[0]), + {name: '', indexToView: 0, profiles: a.map((e) => e[1])} + ) + } + function v(e) { + const n = i(e.samples), + r = g(e.traceEvents, n), + s = [] + return ( + r.forEach((t, r) => { + const o = n.get(r) + if (!o) throw new Error(`Could not find samples for key: ${o}`) + 0 !== o.length && s.push([r, y(e, o, t)]) + }), + (0, t.sortBy)(s, (e) => e[0]), + {name: '', indexToView: 0, profiles: s.map((e) => e[1])} + ) + } + function M(e) { + if (!Array.isArray(e)) return !1 + if (0 === e.length) return !1 + for (let t of e) { + if (!('ph' in t)) return !1 + switch (t.ph) { + case 'B': + case 'E': + case 'X': + if (!('ts' in t)) return !1 + } + } + return !0 + } + function O(e) { + return !!e && s.every((t) => t in e) + } + function T(e) { + return !!M(e) && O(e[0].args) + } + function B(e) { + return 'traceEvents' in e && M(e.traceEvents) + } + function F(e) { + return 'traceEvents' in e && 'stackFrames' in e && 'samples' in e && M(e.traceEvents) + } + function S(e) { + return B(e) || M(e) + } + function W(t) { + if (F(t)) return v(t) + if (B(t)) return N(t.traceEvents) + if (T(t)) return N(t, e.HERMES) + if (M(t)) return N(t) + return t + } + }, + {'../lib/utils': 'ucYa', '../lib/profile': 'YG8z', '../lib/value-formatters': 'LsM4'}, + ], + TZYa: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromCallgrind = r) + var e = require('../lib/profile'), + t = require('../lib/utils'), + i = require('../lib/value-formatters') + class s { + constructor(e, i) { + ;(this.fileName = e), + (this.fieldName = i), + (this.frameSet = new t.KeyedSet()), + (this.totalWeights = new Map()), + (this.childrenTotalWeights = new Map()) + } + getOrInsertFrame(t) { + return e.Frame.getOrInsert(this.frameSet, t) + } + addToTotalWeight(e, t) { + this.totalWeights.has(e) + ? this.totalWeights.set(e, this.totalWeights.get(e) + t) + : this.totalWeights.set(e, t) + } + addSelfWeight(e, t) { + this.addToTotalWeight(this.getOrInsertFrame(e), t) + } + addChildWithTotalWeight(e, i, s) { + const n = this.getOrInsertFrame(e), + r = this.getOrInsertFrame(i), + a = (0, t.getOrInsert)(this.childrenTotalWeights, n, (e) => new Map()) + a.has(r) ? a.set(r, a.get(r) + s) : a.set(r, s), this.addToTotalWeight(n, s) + } + toProfile() { + const s = new e.CallTreeProfileBuilder() + let n = 1 + 'Time_(10ns)' === this.fieldName + ? (s.setName(`${this.fileName} -- Time`), + (n = 10), + s.setValueFormatter(new i.TimeFormatter('nanoseconds'))) + : 'Memory_(bytes)' == this.fieldName + ? (s.setName(`${this.fileName} -- Memory`), s.setValueFormatter(new i.ByteFormatter())) + : s.setName(`${this.fileName} -- ${this.fieldName}`) + let r = 0 + const a = new Set() + let l = 0 + for (let [e, t] of this.totalWeights) l = Math.max(l, t) + const o = (e, i) => { + if (a.has(e)) return + if (i < 1e-4 * l) return + const h = (0, t.getOrElse)(this.totalWeights, e, () => 0) + if (0 === h) return + let m = i + s.enterFrame(e, Math.round(r * n)), a.add(e) + for (let [t, s] of this.childrenTotalWeights.get(e) || []) { + let e = r + o(t, i * (s / h)), (m -= r - e) + } + a.delete(e), (r += m), s.leaveFrame(e, Math.round(r * n)) + }, + h = new Set(this.frameSet) + for (let [e, t] of this.childrenTotalWeights) for (let [i, s] of t) h.delete(i) + for (let e of h) o(e, this.totalWeights.get(e)) + return s.build() + } + } + class n { + constructor(e, t) { + ;(this.importedFileName = t), + (this.callGraphs = null), + (this.eventsLine = null), + (this.filename = null), + (this.functionName = null), + (this.calleeFilename = null), + (this.calleeFunctionName = null), + (this.savedFileNames = {}), + (this.savedFunctionNames = {}), + (this.prevCostLineNumbers = []), + (this.lines = [...e.splitLines()]), + (this.lineNum = 0) + } + parse() { + for (; this.lineNum < this.lines.length; ) { + const e = this.lines[this.lineNum++] + if ( + !/^\s*#/.exec(e) && + !( + /^\s*$/.exec(e) || + this.parseHeaderLine(e) || + this.parseAssignmentLine(e) || + this.parseCostLine(e, 'self') + ) + ) + throw new Error(`Unrecognized line "${e}" on line ${this.lineNum}`) + } + return this.callGraphs + ? {name: this.importedFileName, indexToView: 0, profiles: this.callGraphs.map((e) => e.toProfile())} + : null + } + frameInfo() { + const e = this.filename || '(unknown)', + t = this.functionName || '(unknown)' + return {key: `${e}:${t}`, name: t, file: e} + } + calleeFrameInfo() { + const e = this.calleeFilename || this.filename || '(unknown)', + t = this.calleeFunctionName || '(unknown)' + return {key: `${e}:${t}`, name: t, file: e} + } + parseHeaderLine(e) { + const t = /^\s*(\w+):\s*(.*)+$/.exec(e) + if (!t) return !1 + if ('events' !== t[1]) return !0 + const i = t[2].split(' ') + if (null != this.callGraphs) + throw new Error( + `Duplicate "events: " lines specified. First was "${this.eventsLine}", now received "${e}" on ${this.lineNum}.`, + ) + return (this.callGraphs = i.map((e) => new s(this.importedFileName, e))), !0 + } + parseAssignmentLine(e) { + const t = /^(\w+)=\s*(.*)$/.exec(e) + if (!t) return !1 + const i = t[1], + s = t[2] + switch (i) { + case 'fe': + case 'fi': + this.parseNameWithCompression(s, this.savedFileNames) + break + case 'fl': + this.filename = this.parseNameWithCompression(s, this.savedFileNames) + break + case 'fn': + this.functionName = this.parseNameWithCompression(s, this.savedFunctionNames) + break + case 'cfi': + case 'cfl': + this.calleeFilename = this.parseNameWithCompression(s, this.savedFileNames) + break + case 'cfn': + this.calleeFunctionName = this.parseNameWithCompression(s, this.savedFunctionNames) + break + case 'calls': + this.parseCostLine(this.lines[this.lineNum++], 'child'), + (this.calleeFilename = null), + (this.calleeFunctionName = null) + break + case 'cob': + case 'ob': + break + default: + console.log(`Ignoring assignment to unrecognized key "${e}" on line ${this.lineNum}`) + } + return !0 + } + parseNameWithCompression(e, t) { + { + const i = /^\((\d+)\)\s*(.+)$/.exec(e) + if (i) { + const e = i[1], + s = i[2] + if (e in t) + throw new Error( + `Redefinition of name with id: ${e}. Original value was "${t[e]}". Tried to redefine as "${s}" on line ${this.lineNum}.`, + ) + return (t[e] = s), s + } + } + { + const i = /^\((\d+)\)$/.exec(e) + if (i) { + const e = i[1] + if (!(e in t)) + throw new Error(`Tried to use name with id ${e} on line ${this.lineNum} before it was defined.`) + return t[e] + } + } + return e + } + parseCostLine(e, t) { + const i = e.split(/\s+/), + s = [] + for (let n = 0; n < i.length; n++) { + const t = i[n] + if (0 === t.length) return !1 + if ('*' === t || '-' === t[0] || '+' === t[1]) { + if (this.prevCostLineNumbers.length <= n) + throw new Error( + `Line ${this.lineNum} has a subposition on column ${n} but ` + + `previous cost line has only ${this.prevCostLineNumbers.length} ` + + `columns. Line contents: ${e}`, + ) + const i = this.prevCostLineNumbers[n] + if ('*' === t) s.push(i) + else { + const r = parseInt(t) + if (isNaN(r)) + throw new Error( + `Line ${this.lineNum} has a subposition on column ${n} but ` + + `the offset is not a number. Line contents: ${e}`, + ) + s.push(i + r) + } + } else { + const e = parseInt(t) + if (isNaN(e)) return !1 + s.push(e) + } + } + if (0 == s.length) return !1 + if (!this.callGraphs) + throw new Error( + `Encountered a cost line on line ${this.lineNum} before event specification was provided.`, + ) + for (let n = 0; n < this.callGraphs.length; n++) + 'self' === t + ? this.callGraphs[n].addSelfWeight(this.frameInfo(), s[1 + n]) + : 'child' === t && + this.callGraphs[n].addChildWithTotalWeight(this.frameInfo(), this.calleeFrameInfo(), s[1 + n] || 0) + return (this.prevCostLineNumbers = s), !0 + } + } + function r(e, t) { + return new n(e, t).parse() + } + }, + {'../lib/profile': 'YG8z', '../lib/utils': 'ucYa', '../lib/value-formatters': 'LsM4'}, + ], + duFC: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importFromPapyrus = r) + var e = require('../lib/profile'), + t = require('../lib/utils'), + n = require('../lib/value-formatters') + function r(r) { + const a = new e.CallTreeProfileBuilder() + a.setValueFormatter(new n.TimeFormatter('milliseconds')) + const l = [...r.splitLines()].filter((e) => !/^$|^Log closed$|log opened/.exec(e)) + let s = -1 + const o = I(l[0]) + if (null === o) throw Error + s = o.at + const i = (0, t.lastOf)(l) + if (null === i) throw Error + const c = I(i) + if (null === c) throw Error + const u = c.at, + f = new t.KeyedSet(), + h = [] + let m, + p = 0, + v = -1 + function d(t, n, r) { + function l(t, n) { + h.push(n), a.enterFrame(e.Frame.getOrInsert(f, {name: n, key: n}), t), (p = t) + } + v > -1 && ((v = -1), m === r && v >= p && d(t, v, `QUEUE ${r}`)) + const s = `STACK ${t}` + ;[...h].reverse().find((e) => e.startsWith('STACK ')) !== s && (1 === h.length && g(p), l(n, s)), l(n, r) + } + function g(n) { + const r = h.pop() + if (void 0 === r) throw Error('Tried to leave frame when nothing was on stack.') + a.leaveFrame(e.Frame.getOrInsert(f, {name: r, key: r}), n) + let l = (0, t.lastOf)(h) + null !== l && l.startsWith('QUEUE ') && (g(n), (l = (0, t.lastOf)(h))), + h.length > 1 && null !== l && l.startsWith('STACK ') && g(n), + (p = n) + } + function w(e, n, r) { + ;(0, t.lastOf)(h) === r + ? g(n) + : 0 === p + ? (console.log( + `Tried to leave frame "${r}" which was never entered. Assuming it has been running since the start.`, + ), + d(e, 0, r), + g(n)) + : console.log( + `Tried to leave frame "${r}" which was never entered. Other events have happened since the start, ignoring line.`, + ) + } + function I(e) { + if (void 0 === e) throw Error('Probably tried to import empty file.') + const t = e.split(':') + return t.length < 3 + ? null + : -1 !== s + ? {at: parseInt(t[0]) - s, event: t[1], stackInt: parseInt(t[2]), name: t[5]} + : {at: parseInt(t[0]), event: t[1], stackInt: parseInt(t[2]), name: t[5]} + } + for ( + l.forEach((e, t, n) => { + const r = I(e) + if (null !== r) + if ('PUSH' === r.event) { + d(r.stackInt, r.at, r.name) + let e = I(n[(t += 1)]) + for (; null !== e && e.at === r.at; ) + e.name === r.name && e.stackInt === r.stackInt && 'POP' === e.event + ? (w(e.stackInt, e.at, e.name), n.splice(t, 1), (e = null)) + : (t += 1) < n.length && (e = I(n[t])) + } else if ('POP' === r.event) w(r.stackInt, r.at, r.name) + else if ('QUEUE_PUSH' === r.event) return (m = r.name.replace(/\?/g, '')), void (v = r.at) + }); + h.length > 0; + + ) + g(u) + return a.build() + } + }, + {'../lib/profile': 'YG8z', '../lib/utils': 'ucYa', '../lib/value-formatters': 'LsM4'}, + ], + uRa7: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.importProfileGroupFromText = C), + (exports.importProfileGroupFromBase64 = I), + (exports.importProfilesFromFile = x), + (exports.importProfilesFromArrayBuffer = y), + (exports.importFromFileSystemDirectoryEntry = T) + var r = require('./chrome'), + e = require('./stackprof'), + o = require('./instruments'), + i = require('./bg-flamegraph'), + t = require('./firefox'), + n = require('../lib/file-format'), + s = require('./v8proflog'), + l = require('./linux-tools-perf'), + m = require('./haskell'), + p = require('./safari'), + a = require('./utils'), + f = require('./pprof'), + c = require('../lib/utils'), + u = require('./v8heapalloc'), + d = require('./trace-event'), + g = require('./callgrind'), + h = require('./papyrus'), + F = function (r, e, o, i) { + return new (o || (o = Promise))(function (t, n) { + function s(r) { + try { + m(i.next(r)) + } catch (e) { + n(e) + } + } + function l(r) { + try { + m(i.throw(r)) + } catch (e) { + n(e) + } + } + function m(r) { + var e + r.done + ? t(r.value) + : ((e = r.value), + e instanceof o + ? e + : new o(function (r) { + r(e) + })).then(s, l) + } + m((i = i.apply(r, e || [])).next()) + }) + } + function C(r, e) { + return F(this, void 0, void 0, function* () { + return yield P(new a.TextProfileDataSource(r, e)) + }) + } + function I(r, e) { + return F(this, void 0, void 0, function* () { + return yield P(a.MaybeCompressedDataReader.fromArrayBuffer(r, (0, c.decodeBase64)(e).buffer)) + }) + } + function x(r) { + return F(this, void 0, void 0, function* () { + return P(a.MaybeCompressedDataReader.fromFile(r)) + }) + } + function y(r, e) { + return F(this, void 0, void 0, function* () { + return P(a.MaybeCompressedDataReader.fromArrayBuffer(r, e)) + }) + } + function P(r) { + return F(this, void 0, void 0, function* () { + const e = yield r.name(), + o = yield S(r) + if (o) { + o.name || (o.name = e) + for (let r of o.profiles) r && !r.getName() && r.setName(e) + return o + } + return null + }) + } + function v(r) { + return r ? {name: r.getName(), indexToView: 0, profiles: [r]} : null + } + function S(a) { + return F(this, void 0, void 0, function* () { + const c = yield a.name(), + F = yield a.readAsArrayBuffer() + { + const r = (0, f.importAsPprofProfile)(F) + if (r) return console.log('Importing as protobuf encoded pprof file'), v(r) + } + const C = yield a.readAsText() + if (c.endsWith('.speedscope.json')) + return console.log('Importing as speedscope json file'), (0, n.importSpeedscopeProfiles)(C.parseAsJSON()) + if (/Trace-\d{8}T\d{6}/.exec(c)) + return ( + console.log('Importing as Chrome Timeline Object'), + (0, r.importFromChromeTimeline)(C.parseAsJSON().traceEvents, c) + ) + if (c.endsWith('.chrome.json') || /Profile-\d{8}T\d{6}/.exec(c)) + return console.log('Importing as Chrome Timeline'), (0, r.importFromChromeTimeline)(C.parseAsJSON(), c) + if (c.endsWith('.stackprof.json')) + return console.log('Importing as stackprof profile'), v((0, e.importFromStackprof)(C.parseAsJSON())) + if (c.endsWith('.instruments.txt')) + return console.log('Importing as Instruments.app deep copy'), v((0, o.importFromInstrumentsDeepCopy)(C)) + if (c.endsWith('.linux-perf.txt')) + return console.log('Importing as output of linux perf script'), (0, l.importFromLinuxPerf)(C) + if (c.endsWith('.collapsedstack.txt')) + return console.log('Importing as collapsed stack format'), v((0, i.importFromBGFlameGraph)(C)) + if (c.endsWith('.v8log.json')) + return console.log('Importing as --prof-process v8 log'), v((0, s.importFromV8ProfLog)(C.parseAsJSON())) + if (c.endsWith('.heapprofile')) + return ( + console.log('Importing as Chrome Heap Profile'), v((0, u.importFromChromeHeapProfile)(C.parseAsJSON())) + ) + if (c.endsWith('-recording.json')) + return console.log('Importing as Safari profile'), v((0, p.importFromSafari)(C.parseAsJSON())) + if (c.startsWith('callgrind.')) + return console.log('Importing as Callgrind profile'), (0, g.importFromCallgrind)(C, c) + let I + try { + I = C.parseAsJSON() + } catch (x) {} + if (I) { + if ('https://www.speedscope.app/file-format-schema.json' === I.$schema) + return console.log('Importing as speedscope json file'), (0, n.importSpeedscopeProfiles)(I) + if (I.systemHost && 'Firefox' == I.systemHost.name) + return console.log('Importing as Firefox profile'), v((0, t.importFromFirefox)(I)) + if ((0, r.isChromeTimeline)(I)) + return console.log('Importing as Chrome Timeline'), (0, r.importFromChromeTimeline)(I, c) + if ((0, r.isChromeTimelineObject)(I)) + return ( + console.log('Importing as Chrome Timeline Object'), (0, r.importFromChromeTimeline)(I.traceEvents, c) + ) + if ('nodes' in I && 'samples' in I && 'timeDeltas' in I) + return console.log('Importing as Chrome CPU Profile'), v((0, r.importFromChromeCPUProfile)(I)) + if ((0, d.isTraceEventFormatted)(I)) + return console.log('Importing as Trace Event Format profile'), (0, d.importTraceEvents)(I) + if ('head' in I && 'samples' in I && 'timestamps' in I) + return ( + console.log('Importing as Chrome CPU Profile (old format)'), v((0, r.importFromOldV8CPUProfile)(I)) + ) + if ('mode' in I && 'frames' in I && 'raw_timestamp_deltas' in I) + return console.log('Importing as stackprof profile'), v((0, e.importFromStackprof)(I)) + if ('code' in I && 'functions' in I && 'ticks' in I) + return console.log('Importing as --prof-process v8 log'), v((0, s.importFromV8ProfLog)(I)) + if ('head' in I && 'selfSize' in I.head) + return console.log('Importing as Chrome Heap Profile'), v((0, u.importFromChromeHeapProfile)(I)) + if ('rts_arguments' in I && 'initial_capabilities' in I) + return console.log('Importing as Haskell GHC JSON Profile'), (0, m.importFromHaskell)(I) + if ('recording' in I && 'sampleStackTraces' in I.recording) + return console.log('Importing as Safari profile'), v((0, p.importFromSafari)(I)) + } else { + if ( + /^# callgrind format/.exec(C.firstChunk()) || + (/^events:/m.exec(C.firstChunk()) && /^fn=/m.exec(C.firstChunk())) + ) + return console.log('Importing as Callgrind profile'), (0, g.importFromCallgrind)(C, c) + if (/^[\w \t\(\)]*\tSymbol Name/.exec(C.firstChunk())) + return console.log('Importing as Instruments.app deep copy'), v((0, o.importFromInstrumentsDeepCopy)(C)) + if (/^(Stack_|Script_|Obj_)\S+ log opened \(PC\)\n/.exec(C.firstChunk())) + return console.log('Importing as Papyrus profile'), v((0, h.importFromPapyrus)(C)) + const r = (0, l.importFromLinuxPerf)(C) + if (r) return console.log('Importing from linux perf script output'), r + const e = (0, i.importFromBGFlameGraph)(C) + if (e) return console.log('Importing as collapsed stack format'), v(e) + } + return null + }) + } + function T(r) { + return F(this, void 0, void 0, function* () { + return (0, o.importFromInstrumentsTrace)(r) + }) + } + }, + { + './chrome': 'kWV1', + './stackprof': 'I37H', + './instruments': 'G28U', + './bg-flamegraph': 'flbo', + './firefox': 'uNW1', + '../lib/file-format': 'Xzb6', + './v8proflog': 'QV03', + './linux-tools-perf': 'f2sa', + './haskell': 'jm73', + './safari': 'jP3w', + './utils': 'QTYz', + './pprof': 'VmHy', + '../lib/utils': 'ucYa', + './v8heapalloc': 'bNW7', + './trace-event': 'KFvE', + './callgrind': 'TZYa', + './papyrus': 'duFC', + }, + ], + }, + {}, + [], + null, +) +//# sourceMappingURL=import.bcbb2033.js.map diff --git a/packages/theme/assets/speedscope/index.html b/packages/theme/assets/speedscope/index.html index 1c9cc7bac76..865b8f9684a 100644 --- a/packages/theme/assets/speedscope/index.html +++ b/packages/theme/assets/speedscope/index.html @@ -1,2 +1,17 @@ -speedscope - \ No newline at end of file + + + + + + + speedscope + + + + + + + + + + diff --git a/packages/theme/assets/speedscope/reset.8c46b7a1.css b/packages/theme/assets/speedscope/reset.8c46b7a1.css index d88db9c0491..0218c926e93 100644 --- a/packages/theme/assets/speedscope/reset.8c46b7a1.css +++ b/packages/theme/assets/speedscope/reset.8c46b7a1.css @@ -1,2 +1,134 @@ -a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:initial}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}table{border-collapse:collapse;border-spacing:0}html{overflow:hidden}body,html{height:100%}body{overflow:auto} -/*# sourceMappingURL=reset.8c46b7a1.css.map */ \ No newline at end of file +a, +abbr, +acronym, +address, +applet, +article, +aside, +audio, +b, +big, +blockquote, +body, +canvas, +caption, +center, +cite, +code, +dd, +del, +details, +dfn, +div, +dl, +dt, +em, +embed, +fieldset, +figcaption, +figure, +footer, +form, +h1, +h2, +h3, +h4, +h5, +h6, +header, +hgroup, +html, +i, +iframe, +img, +ins, +kbd, +label, +legend, +li, +mark, +menu, +nav, +object, +ol, +output, +p, +pre, +q, +ruby, +s, +samp, +section, +small, +span, +strike, +strong, +sub, +summary, +sup, +table, +tbody, +td, +tfoot, +th, +thead, +time, +tr, +tt, +u, +ul, +var, +video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: initial; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; +} +body { + line-height: 1; +} +ol, +ul { + list-style: none; +} +blockquote, +q { + quotes: none; +} +blockquote:after, +blockquote:before, +q:after, +q:before { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +html { + overflow: hidden; +} +body, +html { + height: 100%; +} +body { + overflow: auto; +} +/*# sourceMappingURL=reset.8c46b7a1.css.map */ diff --git a/packages/theme/assets/speedscope/source-code-pro.52b1676f.css b/packages/theme/assets/speedscope/source-code-pro.52b1676f.css index ecda33355a3..8aabca3ca7f 100644 --- a/packages/theme/assets/speedscope/source-code-pro.52b1676f.css +++ b/packages/theme/assets/speedscope/source-code-pro.52b1676f.css @@ -1,2 +1,8 @@ -@font-face{font-family:Source Code Pro;font-weight:400;font-style:normal;font-stretch:normal;src:url(SourceCodePro-Regular.ttf.f546cbe0.woff2) format("woff2")} -/*# sourceMappingURL=source-code-pro.52b1676f.css.map */ \ No newline at end of file +@font-face { + font-family: Source Code Pro; + font-weight: 400; + font-style: normal; + font-stretch: normal; + src: url(SourceCodePro-Regular.ttf.f546cbe0.woff2) format('woff2'); +} +/*# sourceMappingURL=source-code-pro.52b1676f.css.map */ diff --git a/packages/theme/assets/speedscope/source-map.438fa06b.js b/packages/theme/assets/speedscope/source-map.438fa06b.js index 2ea3f37aa04..d6e7132327b 100644 --- a/packages/theme/assets/speedscope/source-map.438fa06b.js +++ b/packages/theme/assets/speedscope/source-map.438fa06b.js @@ -1,24 +1,1272 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c>1;return 1==(1&e)?-r:r}exports.encode=function(n){var d,a="",c=i(n);do{d=c&o,(c>>>=r)>0&&(d|=t),a+=e.encode(d)}while(c>0);return a},exports.decode=function(n,i,a){var c,u,h=n.length,s=0,v=0;do{if(i>=h)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(u=e.decode(n.charCodeAt(i++))))throw new Error("Invalid base64 digit: "+n.charAt(i-1));c=!!(u&t),s+=(u&=o)<=0;s--)"."===(a=u[s])?u.splice(s,1):".."===a?c++:c>0&&(""===a?(u.splice(s+1,c),c=0):(u.splice(s,2),c--));return""===(r=u.join("/"))&&(r=i?"/":"."),n?(n.path=r,o(n)):r}function i(e,r){""===e&&(e="."),""===r&&(r=".");var i=t(r),u=t(e);if(u&&(e=u.path||"/"),i&&!i.scheme)return u&&(i.scheme=u.scheme),o(i);if(i||r.match(n))return r;if(u&&!u.host&&!u.path)return u.host=r,o(u);var c="/"===r.charAt(0)?r:a(e.replace(/\/+$/,"")+"/"+r);return u?(u.path=c,o(u)):c}function u(e,r){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==r.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return r;if((e=e.slice(0,t)).match(/^([^\/]+:\/)?\/*$/))return r;++n}return Array(n+1).join("../")+r.substr(e.length+1)}exports.urlParse=t,exports.urlGenerate=o,exports.normalize=a,exports.join=i,exports.isAbsolute=function(e){return"/"===e.charAt(0)||r.test(e)},exports.relative=u;var c=!("__proto__"in Object.create(null));function s(e){return e}function l(e){return p(e)?"$"+e:e}function h(e){return p(e)?e.slice(1):e}function p(e){if(!e)return!1;var r=e.length;if(r<9)return!1;if(95!==e.charCodeAt(r-1)||95!==e.charCodeAt(r-2)||111!==e.charCodeAt(r-3)||116!==e.charCodeAt(r-4)||111!==e.charCodeAt(r-5)||114!==e.charCodeAt(r-6)||112!==e.charCodeAt(r-7)||95!==e.charCodeAt(r-8)||95!==e.charCodeAt(r-9))return!1;for(var n=r-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function f(e,r,n){var t=d(e.source,r.source);return 0!==t?t:0!==(t=e.originalLine-r.originalLine)?t:0!==(t=e.originalColumn-r.originalColumn)||n?t:0!==(t=e.generatedColumn-r.generatedColumn)?t:0!==(t=e.generatedLine-r.generatedLine)?t:d(e.name,r.name)}function g(e,r,n){var t=e.generatedLine-r.generatedLine;return 0!==t?t:0!==(t=e.generatedColumn-r.generatedColumn)||n?t:0!==(t=d(e.source,r.source))?t:0!==(t=e.originalLine-r.originalLine)?t:0!==(t=e.originalColumn-r.originalColumn)?t:d(e.name,r.name)}function d(e,r){return e===r?0:null===e?1:null===r?-1:e>r?1:-1}function m(e,r){var n=e.generatedLine-r.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-r.generatedColumn)?n:0!==(n=d(e.source,r.source))?n:0!==(n=e.originalLine-r.originalLine)?n:0!==(n=e.originalColumn-r.originalColumn)?n:d(e.name,r.name)}function C(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))}function v(e,r,n){if(r=r||"",e&&("/"!==e[e.length-1]&&"/"!==r[0]&&(e+="/"),r=e+r),n){var u=t(n);if(!u)throw new Error("sourceMapURL could not be parsed");if(u.path){var c=u.path.lastIndexOf("/");c>=0&&(u.path=u.path.substring(0,c+1))}r=i(o(u),r)}return a(r)}exports.toSetString=c?s:l,exports.fromSetString=c?s:h,exports.compareByOriginalPositions=f,exports.compareByGeneratedPositionsDeflated=g,exports.compareByGeneratedPositionsInflated=m,exports.parseSourceMapInput=C,exports.computeSourceURL=v; -},{}],"dghU":[function(require,module,exports) { -var t=require("./util"),e=Object.prototype.hasOwnProperty,r="undefined"!=typeof Map;function n(){this._array=[],this._set=r?new Map:Object.create(null)}n.fromArray=function(t,e){for(var r=new n,i=0,s=t.length;i=0)return i}else{var s=t.toSetString(n);if(e.call(this._set,s))return this._set[s]}throw new Error('"'+n+'" is not in the set.')},n.prototype.at=function(t){if(t>=0&&ta||n==a&&s>=o||t.compareByGeneratedPositionsInflated(e,r)<=0}function r(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}r.prototype.unsortedForEach=function(t,e){this._array.forEach(t,e)},r.prototype.add=function(t){e(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))},r.prototype.toArray=function(){return this._sorted||(this._array.sort(t.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},exports.MappingList=r; -},{"./util":"XUQW"}],"Wwhl":[function(require,module,exports) { -var e=require("./base64-vlq"),n=require("./util"),o=require("./array-set").ArraySet,t=require("./mapping-list").MappingList;function r(e){e||(e={}),this._file=n.getArg(e,"file",null),this._sourceRoot=n.getArg(e,"sourceRoot",null),this._skipValidation=n.getArg(e,"skipValidation",!1),this._sources=new o,this._names=new o,this._mappings=new t,this._sourcesContents=null}r.prototype._version=3,r.fromSourceMap=function(e){var o=e.sourceRoot,t=new r({file:e.file,sourceRoot:o});return e.eachMapping(function(e){var r={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(r.source=e.source,null!=o&&(r.source=n.relative(o,r.source)),r.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(r.name=e.name)),t.addMapping(r)}),e.sources.forEach(function(r){var i=r;null!==o&&(i=n.relative(o,r)),t._sources.has(i)||t._sources.add(i);var s=e.sourceContentFor(r);null!=s&&t.setSourceContent(r,s)}),t},r.prototype.addMapping=function(e){var o=n.getArg(e,"generated"),t=n.getArg(e,"original",null),r=n.getArg(e,"source",null),i=n.getArg(e,"name",null);this._skipValidation||this._validateMapping(o,t,r,i),null!=r&&(r=String(r),this._sources.has(r)||this._sources.add(r)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:o.line,generatedColumn:o.column,originalLine:null!=t&&t.line,originalColumn:null!=t&&t.column,source:r,name:i})},r.prototype.setSourceContent=function(e,o){var t=e;null!=this._sourceRoot&&(t=n.relative(this._sourceRoot,t)),null!=o?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[n.toSetString(t)]=o):this._sourcesContents&&(delete this._sourcesContents[n.toSetString(t)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},r.prototype.applySourceMap=function(e,t,r){var i=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');i=e.file}var s=this._sourceRoot;null!=s&&(i=n.relative(s,i));var l=new o,u=new o;this._mappings.unsortedForEach(function(o){if(o.source===i&&null!=o.originalLine){var t=e.originalPositionFor({line:o.originalLine,column:o.originalColumn});null!=t.source&&(o.source=t.source,null!=r&&(o.source=n.join(r,o.source)),null!=s&&(o.source=n.relative(s,o.source)),o.originalLine=t.line,o.originalColumn=t.column,null!=t.name&&(o.name=t.name))}var a=o.source;null==a||l.has(a)||l.add(a);var c=o.name;null==c||u.has(c)||u.add(c)},this),this._sources=l,this._names=u,e.sources.forEach(function(o){var t=e.sourceContentFor(o);null!=t&&(null!=r&&(o=n.join(r,o)),null!=s&&(o=n.relative(s,o)),this.setSourceContent(o,t))},this)},r.prototype._validateMapping=function(e,n,o,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||o||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&o))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:o,original:n,name:t}))},r.prototype._serializeMappings=function(){for(var o,t,r,i,s=0,l=1,u=0,a=0,c=0,p=0,g="",h=this._mappings.toArray(),m=0,f=h.length;m0){if(!n.compareByGeneratedPositionsInflated(t,h[m-1]))continue;o+=","}o+=e.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),o+=e.encode(i-p),p=i,o+=e.encode(t.originalLine-1-a),a=t.originalLine-1,o+=e.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),o+=e.encode(r-c),c=r)),g+=o}return g},r.prototype._generateSourcesContent=function(e,o){return e.map(function(e){if(!this._sourcesContents)return null;null!=o&&(e=n.relative(o,e));var t=n.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,t)?this._sourcesContents[t]:null},this)},r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},exports.SourceMapGenerator=r; -},{"./base64-vlq":"iWlY","./util":"XUQW","./array-set":"dghU","./mapping-list":"AUTm"}],"rdpJ":[function(require,module,exports) { -function r(t,e,E,n,o,_){var U=Math.floor((e-t)/2)+t,s=o(E,n[U],!0);return 0===s?U:s>0?e-U>1?r(U,e,E,n,o,_):_==exports.LEAST_UPPER_BOUND?e1?r(t,U,E,n,o,_):_==exports.LEAST_UPPER_BOUND?U:t<0?-1:t}exports.GREATEST_LOWER_BOUND=1,exports.LEAST_UPPER_BOUND=2,exports.search=function(t,e,E,n){if(0===e.length)return-1;var o=r(-1,e.length,t,e,E,n||exports.GREATEST_LOWER_BOUND);if(o<0)return-1;for(;o-1>=0&&0===E(e[o],e[o-1],!0);)--o;return o}; -},{}],"lFls":[function(require,module,exports) { -function n(n,r,t){var o=n[r];n[r]=n[t],n[t]=o}function r(n,r){return Math.round(n+Math.random()*(r-n))}function t(o,a,u,f){if(u=0){var a=this._originalMappings[s];if(void 0===r.column)for(var u=a.originalLine;a&&a.originalLine===u;)i.push({line:e.getArg(a,"generatedLine",null),column:e.getArg(a,"generatedColumn",null),lastColumn:e.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++s];else for(var l=a.originalColumn;a&&a.originalLine===t&&a.originalColumn==l;)i.push({line:e.getArg(a,"generatedLine",null),column:e.getArg(a,"generatedColumn",null),lastColumn:e.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++s]}return i},exports.SourceMapConsumer=i,s.prototype=Object.create(i.prototype),s.prototype.consumer=i,s.prototype._findSourceIndex=function(n){var r,t=n;if(null!=this.sourceRoot&&(t=e.relative(this.sourceRoot,t)),this._sources.has(t))return this._sources.indexOf(t);for(r=0;r1&&(i.source=f+u[1],f+=u[1],i.originalLine=h+u[2],h=i.originalLine,i.originalLine+=1,i.originalColumn=m+u[3],m=i.originalColumn,u.length>4&&(i.name=_+u[4],_+=u[4])),y.push(i),"number"==typeof i.originalLine&&v.push(i)}o(y,e.compareByGeneratedPositionsDeflated),this.__generatedMappings=y,o(v,e.compareByOriginalPositions),this.__originalMappings=v},s.prototype._findMapping=function(e,r,t,o,i,s){if(e[t]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[t]);if(e[o]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[o]);return n.search(e,r,i,s)},s.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[t];if(o.generatedLine===r.generatedLine){var s=e.getArg(o,"source",null);null!==s&&(s=this._sources.at(s),s=e.computeSourceURL(this.sourceRoot,s,this._sourceMapURL));var a=e.getArg(o,"name",null);return null!==a&&(a=this._names.at(a)),{source:s,line:e.getArg(o,"originalLine",null),column:e.getArg(o,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},s.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},s.prototype.sourceContentFor=function(n,r){if(!this.sourcesContent)return null;var t=this._findSourceIndex(n);if(t>=0)return this.sourcesContent[t];var o,i=n;if(null!=this.sourceRoot&&(i=e.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=e.urlParse(this.sourceRoot))){var s=i.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(s))return this.sourcesContent[this._sources.indexOf(s)];if((!o.path||"/"==o.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(r)return null;throw new Error('"'+i+'" is not in the SourceMap.')},s.prototype.generatedPositionFor=function(n){var r=e.getArg(n,"source");if((r=this._findSourceIndex(r))<0)return{line:null,column:null,lastColumn:null};var t={source:r,originalLine:e.getArg(n,"line"),originalColumn:e.getArg(n,"column")},o=this._findMapping(t,this._originalMappings,"originalLine","originalColumn",e.compareByOriginalPositions,e.getArg(n,"bias",i.GREATEST_LOWER_BOUND));if(o>=0){var s=this._originalMappings[o];if(s.source===t.source)return{line:e.getArg(s,"generatedLine",null),column:e.getArg(s,"generatedColumn",null),lastColumn:e.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},exports.BasicSourceMapConsumer=s,u.prototype=Object.create(i.prototype),u.prototype.constructor=i,u.prototype._version=3,Object.defineProperty(u.prototype,"sources",{get:function(){for(var e=[],n=0;n=0;e--)this.prepend(n[e]);else{if(!n[o]&&"string"!=typeof n)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+n);this.children.unshift(n)}return this},i.prototype.walk=function(n){for(var e,r=0,t=this.children.length;r0){for(e=[],r=0;r> 1 + return 1 == (1 & e) ? -r : r + } + ;(exports.encode = function (n) { + var d, + a = '', + c = i(n) + do { + ;(d = c & o), (c >>>= r) > 0 && (d |= t), (a += e.encode(d)) + } while (c > 0) + return a + }), + (exports.decode = function (n, i, a) { + var c, + u, + h = n.length, + s = 0, + v = 0 + do { + if (i >= h) throw new Error('Expected more digits in base 64 VLQ value.') + if (-1 === (u = e.decode(n.charCodeAt(i++)))) throw new Error('Invalid base64 digit: ' + n.charAt(i - 1)) + ;(c = !!(u & t)), (s += (u &= o) << v), (v += r) + } while (c) + ;(a.value = d(s)), (a.rest = i) + }) + }, + {'./base64': 'YNEz'}, + ], + XUQW: [ + function (require, module, exports) { + function e(e, r, n) { + if (r in e) return e[r] + if (3 === arguments.length) return n + throw new Error('"' + r + '" is a required argument.') + } + exports.getArg = e + var r = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/, + n = /^data:.+\,.+$/ + function t(e) { + var n = e.match(r) + return n ? {scheme: n[1], auth: n[2], host: n[3], port: n[4], path: n[5]} : null + } + function o(e) { + var r = '' + return ( + e.scheme && (r += e.scheme + ':'), + (r += '//'), + e.auth && (r += e.auth + '@'), + e.host && (r += e.host), + e.port && (r += ':' + e.port), + e.path && (r += e.path), + r + ) + } + function a(e) { + var r = e, + n = t(e) + if (n) { + if (!n.path) return e + r = n.path + } + for (var a, i = exports.isAbsolute(r), u = r.split(/\/+/), c = 0, s = u.length - 1; s >= 0; s--) + '.' === (a = u[s]) + ? u.splice(s, 1) + : '..' === a + ? c++ + : c > 0 && ('' === a ? (u.splice(s + 1, c), (c = 0)) : (u.splice(s, 2), c--)) + return '' === (r = u.join('/')) && (r = i ? '/' : '.'), n ? ((n.path = r), o(n)) : r + } + function i(e, r) { + '' === e && (e = '.'), '' === r && (r = '.') + var i = t(r), + u = t(e) + if ((u && (e = u.path || '/'), i && !i.scheme)) return u && (i.scheme = u.scheme), o(i) + if (i || r.match(n)) return r + if (u && !u.host && !u.path) return (u.host = r), o(u) + var c = '/' === r.charAt(0) ? r : a(e.replace(/\/+$/, '') + '/' + r) + return u ? ((u.path = c), o(u)) : c + } + function u(e, r) { + '' === e && (e = '.'), (e = e.replace(/\/$/, '')) + for (var n = 0; 0 !== r.indexOf(e + '/'); ) { + var t = e.lastIndexOf('/') + if (t < 0) return r + if ((e = e.slice(0, t)).match(/^([^\/]+:\/)?\/*$/)) return r + ++n + } + return Array(n + 1).join('../') + r.substr(e.length + 1) + } + ;(exports.urlParse = t), + (exports.urlGenerate = o), + (exports.normalize = a), + (exports.join = i), + (exports.isAbsolute = function (e) { + return '/' === e.charAt(0) || r.test(e) + }), + (exports.relative = u) + var c = !('__proto__' in Object.create(null)) + function s(e) { + return e + } + function l(e) { + return p(e) ? '$' + e : e + } + function h(e) { + return p(e) ? e.slice(1) : e + } + function p(e) { + if (!e) return !1 + var r = e.length + if (r < 9) return !1 + if ( + 95 !== e.charCodeAt(r - 1) || + 95 !== e.charCodeAt(r - 2) || + 111 !== e.charCodeAt(r - 3) || + 116 !== e.charCodeAt(r - 4) || + 111 !== e.charCodeAt(r - 5) || + 114 !== e.charCodeAt(r - 6) || + 112 !== e.charCodeAt(r - 7) || + 95 !== e.charCodeAt(r - 8) || + 95 !== e.charCodeAt(r - 9) + ) + return !1 + for (var n = r - 10; n >= 0; n--) if (36 !== e.charCodeAt(n)) return !1 + return !0 + } + function f(e, r, n) { + var t = d(e.source, r.source) + return 0 !== t + ? t + : 0 !== (t = e.originalLine - r.originalLine) + ? t + : 0 !== (t = e.originalColumn - r.originalColumn) || n + ? t + : 0 !== (t = e.generatedColumn - r.generatedColumn) + ? t + : 0 !== (t = e.generatedLine - r.generatedLine) + ? t + : d(e.name, r.name) + } + function g(e, r, n) { + var t = e.generatedLine - r.generatedLine + return 0 !== t + ? t + : 0 !== (t = e.generatedColumn - r.generatedColumn) || n + ? t + : 0 !== (t = d(e.source, r.source)) + ? t + : 0 !== (t = e.originalLine - r.originalLine) + ? t + : 0 !== (t = e.originalColumn - r.originalColumn) + ? t + : d(e.name, r.name) + } + function d(e, r) { + return e === r ? 0 : null === e ? 1 : null === r ? -1 : e > r ? 1 : -1 + } + function m(e, r) { + var n = e.generatedLine - r.generatedLine + return 0 !== n + ? n + : 0 !== (n = e.generatedColumn - r.generatedColumn) + ? n + : 0 !== (n = d(e.source, r.source)) + ? n + : 0 !== (n = e.originalLine - r.originalLine) + ? n + : 0 !== (n = e.originalColumn - r.originalColumn) + ? n + : d(e.name, r.name) + } + function C(e) { + return JSON.parse(e.replace(/^\)]}'[^\n]*\n/, '')) + } + function v(e, r, n) { + if (((r = r || ''), e && ('/' !== e[e.length - 1] && '/' !== r[0] && (e += '/'), (r = e + r)), n)) { + var u = t(n) + if (!u) throw new Error('sourceMapURL could not be parsed') + if (u.path) { + var c = u.path.lastIndexOf('/') + c >= 0 && (u.path = u.path.substring(0, c + 1)) + } + r = i(o(u), r) + } + return a(r) + } + ;(exports.toSetString = c ? s : l), + (exports.fromSetString = c ? s : h), + (exports.compareByOriginalPositions = f), + (exports.compareByGeneratedPositionsDeflated = g), + (exports.compareByGeneratedPositionsInflated = m), + (exports.parseSourceMapInput = C), + (exports.computeSourceURL = v) + }, + {}, + ], + dghU: [ + function (require, module, exports) { + var t = require('./util'), + e = Object.prototype.hasOwnProperty, + r = 'undefined' != typeof Map + function n() { + ;(this._array = []), (this._set = r ? new Map() : Object.create(null)) + } + ;(n.fromArray = function (t, e) { + for (var r = new n(), i = 0, s = t.length; i < s; i++) r.add(t[i], e) + return r + }), + (n.prototype.size = function () { + return r ? this._set.size : Object.getOwnPropertyNames(this._set).length + }), + (n.prototype.add = function (n, i) { + var s = r ? n : t.toSetString(n), + o = r ? this.has(n) : e.call(this._set, s), + a = this._array.length + ;(o && !i) || this._array.push(n), o || (r ? this._set.set(n, a) : (this._set[s] = a)) + }), + (n.prototype.has = function (n) { + if (r) return this._set.has(n) + var i = t.toSetString(n) + return e.call(this._set, i) + }), + (n.prototype.indexOf = function (n) { + if (r) { + var i = this._set.get(n) + if (i >= 0) return i + } else { + var s = t.toSetString(n) + if (e.call(this._set, s)) return this._set[s] + } + throw new Error('"' + n + '" is not in the set.') + }), + (n.prototype.at = function (t) { + if (t >= 0 && t < this._array.length) return this._array[t] + throw new Error('No element indexed by ' + t) + }), + (n.prototype.toArray = function () { + return this._array.slice() + }), + (exports.ArraySet = n) + }, + {'./util': 'XUQW'}, + ], + AUTm: [ + function (require, module, exports) { + var t = require('./util') + function e(e, r) { + var a = e.generatedLine, + n = r.generatedLine, + o = e.generatedColumn, + s = r.generatedColumn + return n > a || (n == a && s >= o) || t.compareByGeneratedPositionsInflated(e, r) <= 0 + } + function r() { + ;(this._array = []), (this._sorted = !0), (this._last = {generatedLine: -1, generatedColumn: 0}) + } + ;(r.prototype.unsortedForEach = function (t, e) { + this._array.forEach(t, e) + }), + (r.prototype.add = function (t) { + e(this._last, t) ? ((this._last = t), this._array.push(t)) : ((this._sorted = !1), this._array.push(t)) + }), + (r.prototype.toArray = function () { + return ( + this._sorted || (this._array.sort(t.compareByGeneratedPositionsInflated), (this._sorted = !0)), + this._array + ) + }), + (exports.MappingList = r) + }, + {'./util': 'XUQW'}, + ], + Wwhl: [ + function (require, module, exports) { + var e = require('./base64-vlq'), + n = require('./util'), + o = require('./array-set').ArraySet, + t = require('./mapping-list').MappingList + function r(e) { + e || (e = {}), + (this._file = n.getArg(e, 'file', null)), + (this._sourceRoot = n.getArg(e, 'sourceRoot', null)), + (this._skipValidation = n.getArg(e, 'skipValidation', !1)), + (this._sources = new o()), + (this._names = new o()), + (this._mappings = new t()), + (this._sourcesContents = null) + } + ;(r.prototype._version = 3), + (r.fromSourceMap = function (e) { + var o = e.sourceRoot, + t = new r({file: e.file, sourceRoot: o}) + return ( + e.eachMapping(function (e) { + var r = {generated: {line: e.generatedLine, column: e.generatedColumn}} + null != e.source && + ((r.source = e.source), + null != o && (r.source = n.relative(o, r.source)), + (r.original = {line: e.originalLine, column: e.originalColumn}), + null != e.name && (r.name = e.name)), + t.addMapping(r) + }), + e.sources.forEach(function (r) { + var i = r + null !== o && (i = n.relative(o, r)), t._sources.has(i) || t._sources.add(i) + var s = e.sourceContentFor(r) + null != s && t.setSourceContent(r, s) + }), + t + ) + }), + (r.prototype.addMapping = function (e) { + var o = n.getArg(e, 'generated'), + t = n.getArg(e, 'original', null), + r = n.getArg(e, 'source', null), + i = n.getArg(e, 'name', null) + this._skipValidation || this._validateMapping(o, t, r, i), + null != r && ((r = String(r)), this._sources.has(r) || this._sources.add(r)), + null != i && ((i = String(i)), this._names.has(i) || this._names.add(i)), + this._mappings.add({ + generatedLine: o.line, + generatedColumn: o.column, + originalLine: null != t && t.line, + originalColumn: null != t && t.column, + source: r, + name: i, + }) + }), + (r.prototype.setSourceContent = function (e, o) { + var t = e + null != this._sourceRoot && (t = n.relative(this._sourceRoot, t)), + null != o + ? (this._sourcesContents || (this._sourcesContents = Object.create(null)), + (this._sourcesContents[n.toSetString(t)] = o)) + : this._sourcesContents && + (delete this._sourcesContents[n.toSetString(t)], + 0 === Object.keys(this._sourcesContents).length && (this._sourcesContents = null)) + }), + (r.prototype.applySourceMap = function (e, t, r) { + var i = t + if (null == t) { + if (null == e.file) + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.', + ) + i = e.file + } + var s = this._sourceRoot + null != s && (i = n.relative(s, i)) + var l = new o(), + u = new o() + this._mappings.unsortedForEach(function (o) { + if (o.source === i && null != o.originalLine) { + var t = e.originalPositionFor({line: o.originalLine, column: o.originalColumn}) + null != t.source && + ((o.source = t.source), + null != r && (o.source = n.join(r, o.source)), + null != s && (o.source = n.relative(s, o.source)), + (o.originalLine = t.line), + (o.originalColumn = t.column), + null != t.name && (o.name = t.name)) + } + var a = o.source + null == a || l.has(a) || l.add(a) + var c = o.name + null == c || u.has(c) || u.add(c) + }, this), + (this._sources = l), + (this._names = u), + e.sources.forEach(function (o) { + var t = e.sourceContentFor(o) + null != t && + (null != r && (o = n.join(r, o)), null != s && (o = n.relative(s, o)), this.setSourceContent(o, t)) + }, this) + }), + (r.prototype._validateMapping = function (e, n, o, t) { + if (n && 'number' != typeof n.line && 'number' != typeof n.column) + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.', + ) + if ( + (!(e && 'line' in e && 'column' in e && e.line > 0 && e.column >= 0) || n || o || t) && + !( + e && + 'line' in e && + 'column' in e && + n && + 'line' in n && + 'column' in n && + e.line > 0 && + e.column >= 0 && + n.line > 0 && + n.column >= 0 && + o + ) + ) + throw new Error('Invalid mapping: ' + JSON.stringify({generated: e, source: o, original: n, name: t})) + }), + (r.prototype._serializeMappings = function () { + for ( + var o, + t, + r, + i, + s = 0, + l = 1, + u = 0, + a = 0, + c = 0, + p = 0, + g = '', + h = this._mappings.toArray(), + m = 0, + f = h.length; + m < f; + m++ + ) { + if (((o = ''), (t = h[m]).generatedLine !== l)) for (s = 0; t.generatedLine !== l; ) (o += ';'), l++ + else if (m > 0) { + if (!n.compareByGeneratedPositionsInflated(t, h[m - 1])) continue + o += ',' + } + ;(o += e.encode(t.generatedColumn - s)), + (s = t.generatedColumn), + null != t.source && + ((i = this._sources.indexOf(t.source)), + (o += e.encode(i - p)), + (p = i), + (o += e.encode(t.originalLine - 1 - a)), + (a = t.originalLine - 1), + (o += e.encode(t.originalColumn - u)), + (u = t.originalColumn), + null != t.name && ((r = this._names.indexOf(t.name)), (o += e.encode(r - c)), (c = r))), + (g += o) + } + return g + }), + (r.prototype._generateSourcesContent = function (e, o) { + return e.map(function (e) { + if (!this._sourcesContents) return null + null != o && (e = n.relative(o, e)) + var t = n.toSetString(e) + return Object.prototype.hasOwnProperty.call(this._sourcesContents, t) ? this._sourcesContents[t] : null + }, this) + }), + (r.prototype.toJSON = function () { + var e = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings(), + } + return ( + null != this._file && (e.file = this._file), + null != this._sourceRoot && (e.sourceRoot = this._sourceRoot), + this._sourcesContents && (e.sourcesContent = this._generateSourcesContent(e.sources, e.sourceRoot)), + e + ) + }), + (r.prototype.toString = function () { + return JSON.stringify(this.toJSON()) + }), + (exports.SourceMapGenerator = r) + }, + {'./base64-vlq': 'iWlY', './util': 'XUQW', './array-set': 'dghU', './mapping-list': 'AUTm'}, + ], + rdpJ: [ + function (require, module, exports) { + function r(t, e, E, n, o, _) { + var U = Math.floor((e - t) / 2) + t, + s = o(E, n[U], !0) + return 0 === s + ? U + : s > 0 + ? e - U > 1 + ? r(U, e, E, n, o, _) + : _ == exports.LEAST_UPPER_BOUND + ? e < n.length + ? e + : -1 + : U + : U - t > 1 + ? r(t, U, E, n, o, _) + : _ == exports.LEAST_UPPER_BOUND + ? U + : t < 0 + ? -1 + : t + } + ;(exports.GREATEST_LOWER_BOUND = 1), + (exports.LEAST_UPPER_BOUND = 2), + (exports.search = function (t, e, E, n) { + if (0 === e.length) return -1 + var o = r(-1, e.length, t, e, E, n || exports.GREATEST_LOWER_BOUND) + if (o < 0) return -1 + for (; o - 1 >= 0 && 0 === E(e[o], e[o - 1], !0); ) --o + return o + }) + }, + {}, + ], + lFls: [ + function (require, module, exports) { + function n(n, r, t) { + var o = n[r] + ;(n[r] = n[t]), (n[t] = o) + } + function r(n, r) { + return Math.round(n + Math.random() * (r - n)) + } + function t(o, a, u, f) { + if (u < f) { + var i = u - 1 + n(o, r(u, f), f) + for (var c = o[f], v = u; v < f; v++) a(o[v], c) <= 0 && n(o, (i += 1), v) + n(o, i + 1, v) + var e = i + 1 + t(o, a, u, e - 1), t(o, a, e + 1, f) + } + } + exports.quickSort = function (n, r) { + t(n, r, 0, n.length - 1) + } + }, + {}, + ], + fmOz: [ + function (require, module, exports) { + var e = require('./util'), + n = require('./binary-search'), + r = require('./array-set').ArraySet, + t = require('./base64-vlq'), + o = require('./quick-sort').quickSort + function i(n, r) { + var t = n + return 'string' == typeof n && (t = e.parseSourceMapInput(n)), null != t.sections ? new u(t, r) : new s(t, r) + } + function s(n, t) { + var o = n + 'string' == typeof n && (o = e.parseSourceMapInput(n)) + var i = e.getArg(o, 'version'), + s = e.getArg(o, 'sources'), + a = e.getArg(o, 'names', []), + u = e.getArg(o, 'sourceRoot', null), + l = e.getArg(o, 'sourcesContent', null), + g = e.getArg(o, 'mappings'), + p = e.getArg(o, 'file', null) + if (i != this._version) throw new Error('Unsupported version: ' + i) + u && (u = e.normalize(u)), + (s = s + .map(String) + .map(e.normalize) + .map(function (n) { + return u && e.isAbsolute(u) && e.isAbsolute(n) ? e.relative(u, n) : n + })), + (this._names = r.fromArray(a.map(String), !0)), + (this._sources = r.fromArray(s, !0)), + (this._absoluteSources = this._sources.toArray().map(function (n) { + return e.computeSourceURL(u, n, t) + })), + (this.sourceRoot = u), + (this.sourcesContent = l), + (this._mappings = g), + (this._sourceMapURL = t), + (this.file = p) + } + function a() { + ;(this.generatedLine = 0), + (this.generatedColumn = 0), + (this.source = null), + (this.originalLine = null), + (this.originalColumn = null), + (this.name = null) + } + function u(n, t) { + var o = n + 'string' == typeof n && (o = e.parseSourceMapInput(n)) + var s = e.getArg(o, 'version'), + a = e.getArg(o, 'sections') + if (s != this._version) throw new Error('Unsupported version: ' + s) + ;(this._sources = new r()), (this._names = new r()) + var u = {line: -1, column: 0} + this._sections = a.map(function (n) { + if (n.url) throw new Error('Support for url field in sections not implemented.') + var r = e.getArg(n, 'offset'), + o = e.getArg(r, 'line'), + s = e.getArg(r, 'column') + if (o < u.line || (o === u.line && s < u.column)) + throw new Error('Section offsets must be ordered and non-overlapping.') + return ( + (u = r), + {generatedOffset: {generatedLine: o + 1, generatedColumn: s + 1}, consumer: new i(e.getArg(n, 'map'), t)} + ) + }) + } + ;(i.fromSourceMap = function (e, n) { + return s.fromSourceMap(e, n) + }), + (i.prototype._version = 3), + (i.prototype.__generatedMappings = null), + Object.defineProperty(i.prototype, '_generatedMappings', { + configurable: !0, + enumerable: !0, + get: function () { + return ( + this.__generatedMappings || this._parseMappings(this._mappings, this.sourceRoot), + this.__generatedMappings + ) + }, + }), + (i.prototype.__originalMappings = null), + Object.defineProperty(i.prototype, '_originalMappings', { + configurable: !0, + enumerable: !0, + get: function () { + return ( + this.__originalMappings || this._parseMappings(this._mappings, this.sourceRoot), this.__originalMappings + ) + }, + }), + (i.prototype._charIsMappingSeparator = function (e, n) { + var r = e.charAt(n) + return ';' === r || ',' === r + }), + (i.prototype._parseMappings = function (e, n) { + throw new Error('Subclasses must implement _parseMappings') + }), + (i.GENERATED_ORDER = 1), + (i.ORIGINAL_ORDER = 2), + (i.GREATEST_LOWER_BOUND = 1), + (i.LEAST_UPPER_BOUND = 2), + (i.prototype.eachMapping = function (n, r, t) { + var o, + s = r || null + switch (t || i.GENERATED_ORDER) { + case i.GENERATED_ORDER: + o = this._generatedMappings + break + case i.ORIGINAL_ORDER: + o = this._originalMappings + break + default: + throw new Error('Unknown order of iteration.') + } + var a = this.sourceRoot + o.map(function (n) { + var r = null === n.source ? null : this._sources.at(n.source) + return { + source: (r = e.computeSourceURL(a, r, this._sourceMapURL)), + generatedLine: n.generatedLine, + generatedColumn: n.generatedColumn, + originalLine: n.originalLine, + originalColumn: n.originalColumn, + name: null === n.name ? null : this._names.at(n.name), + } + }, this).forEach(n, s) + }), + (i.prototype.allGeneratedPositionsFor = function (r) { + var t = e.getArg(r, 'line'), + o = {source: e.getArg(r, 'source'), originalLine: t, originalColumn: e.getArg(r, 'column', 0)} + if (((o.source = this._findSourceIndex(o.source)), o.source < 0)) return [] + var i = [], + s = this._findMapping( + o, + this._originalMappings, + 'originalLine', + 'originalColumn', + e.compareByOriginalPositions, + n.LEAST_UPPER_BOUND, + ) + if (s >= 0) { + var a = this._originalMappings[s] + if (void 0 === r.column) + for (var u = a.originalLine; a && a.originalLine === u; ) + i.push({ + line: e.getArg(a, 'generatedLine', null), + column: e.getArg(a, 'generatedColumn', null), + lastColumn: e.getArg(a, 'lastGeneratedColumn', null), + }), + (a = this._originalMappings[++s]) + else + for (var l = a.originalColumn; a && a.originalLine === t && a.originalColumn == l; ) + i.push({ + line: e.getArg(a, 'generatedLine', null), + column: e.getArg(a, 'generatedColumn', null), + lastColumn: e.getArg(a, 'lastGeneratedColumn', null), + }), + (a = this._originalMappings[++s]) + } + return i + }), + (exports.SourceMapConsumer = i), + (s.prototype = Object.create(i.prototype)), + (s.prototype.consumer = i), + (s.prototype._findSourceIndex = function (n) { + var r, + t = n + if ((null != this.sourceRoot && (t = e.relative(this.sourceRoot, t)), this._sources.has(t))) + return this._sources.indexOf(t) + for (r = 0; r < this._absoluteSources.length; ++r) if (this._absoluteSources[r] == n) return r + return -1 + }), + (s.fromSourceMap = function (n, t) { + var i = Object.create(s.prototype), + u = (i._names = r.fromArray(n._names.toArray(), !0)), + l = (i._sources = r.fromArray(n._sources.toArray(), !0)) + ;(i.sourceRoot = n._sourceRoot), + (i.sourcesContent = n._generateSourcesContent(i._sources.toArray(), i.sourceRoot)), + (i.file = n._file), + (i._sourceMapURL = t), + (i._absoluteSources = i._sources.toArray().map(function (n) { + return e.computeSourceURL(i.sourceRoot, n, t) + })) + for ( + var g = n._mappings.toArray().slice(), + p = (i.__generatedMappings = []), + c = (i.__originalMappings = []), + h = 0, + m = g.length; + h < m; + h++ + ) { + var f = g[h], + _ = new a() + ;(_.generatedLine = f.generatedLine), + (_.generatedColumn = f.generatedColumn), + f.source && + ((_.source = l.indexOf(f.source)), + (_.originalLine = f.originalLine), + (_.originalColumn = f.originalColumn), + f.name && (_.name = u.indexOf(f.name)), + c.push(_)), + p.push(_) + } + return o(i.__originalMappings, e.compareByOriginalPositions), i + }), + (s.prototype._version = 3), + Object.defineProperty(s.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice() + }, + }), + (s.prototype._parseMappings = function (n, r) { + for ( + var i, + s, + u, + l, + g, + p = 1, + c = 0, + h = 0, + m = 0, + f = 0, + _ = 0, + d = n.length, + C = 0, + A = {}, + L = {}, + v = [], + y = []; + C < d; + + ) + if (';' === n.charAt(C)) p++, C++, (c = 0) + else if (',' === n.charAt(C)) C++ + else { + for ((i = new a()).generatedLine = p, l = C; l < d && !this._charIsMappingSeparator(n, l); l++); + if ((u = A[(s = n.slice(C, l))])) C += s.length + else { + for (u = []; C < l; ) t.decode(n, C, L), (g = L.value), (C = L.rest), u.push(g) + if (2 === u.length) throw new Error('Found a source, but no line and column') + if (3 === u.length) throw new Error('Found a source and line, but no column') + A[s] = u + } + ;(i.generatedColumn = c + u[0]), + (c = i.generatedColumn), + u.length > 1 && + ((i.source = f + u[1]), + (f += u[1]), + (i.originalLine = h + u[2]), + (h = i.originalLine), + (i.originalLine += 1), + (i.originalColumn = m + u[3]), + (m = i.originalColumn), + u.length > 4 && ((i.name = _ + u[4]), (_ += u[4]))), + y.push(i), + 'number' == typeof i.originalLine && v.push(i) + } + o(y, e.compareByGeneratedPositionsDeflated), + (this.__generatedMappings = y), + o(v, e.compareByOriginalPositions), + (this.__originalMappings = v) + }), + (s.prototype._findMapping = function (e, r, t, o, i, s) { + if (e[t] <= 0) throw new TypeError('Line must be greater than or equal to 1, got ' + e[t]) + if (e[o] < 0) throw new TypeError('Column must be greater than or equal to 0, got ' + e[o]) + return n.search(e, r, i, s) + }), + (s.prototype.computeColumnSpans = function () { + for (var e = 0; e < this._generatedMappings.length; ++e) { + var n = this._generatedMappings[e] + if (e + 1 < this._generatedMappings.length) { + var r = this._generatedMappings[e + 1] + if (n.generatedLine === r.generatedLine) { + n.lastGeneratedColumn = r.generatedColumn - 1 + continue + } + } + n.lastGeneratedColumn = 1 / 0 + } + }), + (s.prototype.originalPositionFor = function (n) { + var r = {generatedLine: e.getArg(n, 'line'), generatedColumn: e.getArg(n, 'column')}, + t = this._findMapping( + r, + this._generatedMappings, + 'generatedLine', + 'generatedColumn', + e.compareByGeneratedPositionsDeflated, + e.getArg(n, 'bias', i.GREATEST_LOWER_BOUND), + ) + if (t >= 0) { + var o = this._generatedMappings[t] + if (o.generatedLine === r.generatedLine) { + var s = e.getArg(o, 'source', null) + null !== s && + ((s = this._sources.at(s)), (s = e.computeSourceURL(this.sourceRoot, s, this._sourceMapURL))) + var a = e.getArg(o, 'name', null) + return ( + null !== a && (a = this._names.at(a)), + { + source: s, + line: e.getArg(o, 'originalLine', null), + column: e.getArg(o, 'originalColumn', null), + name: a, + } + ) + } + } + return {source: null, line: null, column: null, name: null} + }), + (s.prototype.hasContentsOfAllSources = function () { + return ( + !!this.sourcesContent && + this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (e) { + return null == e + }) + ) + }), + (s.prototype.sourceContentFor = function (n, r) { + if (!this.sourcesContent) return null + var t = this._findSourceIndex(n) + if (t >= 0) return this.sourcesContent[t] + var o, + i = n + if ( + (null != this.sourceRoot && (i = e.relative(this.sourceRoot, i)), + null != this.sourceRoot && (o = e.urlParse(this.sourceRoot))) + ) { + var s = i.replace(/^file:\/\//, '') + if ('file' == o.scheme && this._sources.has(s)) return this.sourcesContent[this._sources.indexOf(s)] + if ((!o.path || '/' == o.path) && this._sources.has('/' + i)) + return this.sourcesContent[this._sources.indexOf('/' + i)] + } + if (r) return null + throw new Error('"' + i + '" is not in the SourceMap.') + }), + (s.prototype.generatedPositionFor = function (n) { + var r = e.getArg(n, 'source') + if ((r = this._findSourceIndex(r)) < 0) return {line: null, column: null, lastColumn: null} + var t = {source: r, originalLine: e.getArg(n, 'line'), originalColumn: e.getArg(n, 'column')}, + o = this._findMapping( + t, + this._originalMappings, + 'originalLine', + 'originalColumn', + e.compareByOriginalPositions, + e.getArg(n, 'bias', i.GREATEST_LOWER_BOUND), + ) + if (o >= 0) { + var s = this._originalMappings[o] + if (s.source === t.source) + return { + line: e.getArg(s, 'generatedLine', null), + column: e.getArg(s, 'generatedColumn', null), + lastColumn: e.getArg(s, 'lastGeneratedColumn', null), + } + } + return {line: null, column: null, lastColumn: null} + }), + (exports.BasicSourceMapConsumer = s), + (u.prototype = Object.create(i.prototype)), + (u.prototype.constructor = i), + (u.prototype._version = 3), + Object.defineProperty(u.prototype, 'sources', { + get: function () { + for (var e = [], n = 0; n < this._sections.length; n++) + for (var r = 0; r < this._sections[n].consumer.sources.length; r++) + e.push(this._sections[n].consumer.sources[r]) + return e + }, + }), + (u.prototype.originalPositionFor = function (r) { + var t = {generatedLine: e.getArg(r, 'line'), generatedColumn: e.getArg(r, 'column')}, + o = n.search(t, this._sections, function (e, n) { + var r = e.generatedLine - n.generatedOffset.generatedLine + return r || e.generatedColumn - n.generatedOffset.generatedColumn + }), + i = this._sections[o] + return i + ? i.consumer.originalPositionFor({ + line: t.generatedLine - (i.generatedOffset.generatedLine - 1), + column: + t.generatedColumn - + (i.generatedOffset.generatedLine === t.generatedLine ? i.generatedOffset.generatedColumn - 1 : 0), + bias: r.bias, + }) + : {source: null, line: null, column: null, name: null} + }), + (u.prototype.hasContentsOfAllSources = function () { + return this._sections.every(function (e) { + return e.consumer.hasContentsOfAllSources() + }) + }), + (u.prototype.sourceContentFor = function (e, n) { + for (var r = 0; r < this._sections.length; r++) { + var t = this._sections[r].consumer.sourceContentFor(e, !0) + if (t) return t + } + if (n) return null + throw new Error('"' + e + '" is not in the SourceMap.') + }), + (u.prototype.generatedPositionFor = function (n) { + for (var r = 0; r < this._sections.length; r++) { + var t = this._sections[r] + if (-1 !== t.consumer._findSourceIndex(e.getArg(n, 'source'))) { + var o = t.consumer.generatedPositionFor(n) + if (o) + return { + line: o.line + (t.generatedOffset.generatedLine - 1), + column: + o.column + + (t.generatedOffset.generatedLine === o.line ? t.generatedOffset.generatedColumn - 1 : 0), + } + } + } + return {line: null, column: null} + }), + (u.prototype._parseMappings = function (n, r) { + ;(this.__generatedMappings = []), (this.__originalMappings = []) + for (var t = 0; t < this._sections.length; t++) + for (var i = this._sections[t], s = i.consumer._generatedMappings, a = 0; a < s.length; a++) { + var u = s[a], + l = i.consumer._sources.at(u.source) + ;(l = e.computeSourceURL(i.consumer.sourceRoot, l, this._sourceMapURL)), + this._sources.add(l), + (l = this._sources.indexOf(l)) + var g = null + u.name && ((g = i.consumer._names.at(u.name)), this._names.add(g), (g = this._names.indexOf(g))) + var p = { + source: l, + generatedLine: u.generatedLine + (i.generatedOffset.generatedLine - 1), + generatedColumn: + u.generatedColumn + + (i.generatedOffset.generatedLine === u.generatedLine ? i.generatedOffset.generatedColumn - 1 : 0), + originalLine: u.originalLine, + originalColumn: u.originalColumn, + name: g, + } + this.__generatedMappings.push(p), 'number' == typeof p.originalLine && this.__originalMappings.push(p) + } + o(this.__generatedMappings, e.compareByGeneratedPositionsDeflated), + o(this.__originalMappings, e.compareByOriginalPositions) + }), + (exports.IndexedSourceMapConsumer = u) + }, + { + './util': 'XUQW', + './binary-search': 'rdpJ', + './array-set': 'dghU', + './base64-vlq': 'iWlY', + './quick-sort': 'lFls', + }, + ], + Qm02: [ + function (require, module, exports) { + var n = require('./source-map-generator').SourceMapGenerator, + e = require('./util'), + r = /(\r?\n)/, + t = 10, + o = '$$$isSourceNode$$$' + function i(n, e, r, t, i) { + ;(this.children = []), + (this.sourceContents = {}), + (this.line = null == n ? null : n), + (this.column = null == e ? null : e), + (this.source = null == r ? null : r), + (this.name = null == i ? null : i), + (this[o] = !0), + null != t && this.add(t) + } + ;(i.fromStringWithSourceMap = function (n, t, o) { + var l = new i(), + u = n.split(r), + s = 0, + c = function () { + return n() + (n() || '') + function n() { + return s < u.length ? u[s++] : void 0 + } + }, + a = 1, + h = 0, + d = null + return ( + t.eachMapping(function (n) { + if (null !== d) { + if (!(a < n.generatedLine)) { + var e = (r = u[s] || '').substr(0, n.generatedColumn - h) + return (u[s] = r.substr(n.generatedColumn - h)), (h = n.generatedColumn), p(d, e), void (d = n) + } + p(d, c()), a++, (h = 0) + } + for (; a < n.generatedLine; ) l.add(c()), a++ + if (h < n.generatedColumn) { + var r = u[s] || '' + l.add(r.substr(0, n.generatedColumn)), (u[s] = r.substr(n.generatedColumn)), (h = n.generatedColumn) + } + d = n + }, this), + s < u.length && (d && p(d, c()), l.add(u.splice(s).join(''))), + t.sources.forEach(function (n) { + var r = t.sourceContentFor(n) + null != r && (null != o && (n = e.join(o, n)), l.setSourceContent(n, r)) + }), + l + ) + function p(n, r) { + if (null === n || void 0 === n.source) l.add(r) + else { + var t = o ? e.join(o, n.source) : n.source + l.add(new i(n.originalLine, n.originalColumn, t, r, n.name)) + } + } + }), + (i.prototype.add = function (n) { + if (Array.isArray(n)) + n.forEach(function (n) { + this.add(n) + }, this) + else { + if (!n[o] && 'string' != typeof n) + throw new TypeError('Expected a SourceNode, string, or an array of SourceNodes and strings. Got ' + n) + n && this.children.push(n) + } + return this + }), + (i.prototype.prepend = function (n) { + if (Array.isArray(n)) for (var e = n.length - 1; e >= 0; e--) this.prepend(n[e]) + else { + if (!n[o] && 'string' != typeof n) + throw new TypeError('Expected a SourceNode, string, or an array of SourceNodes and strings. Got ' + n) + this.children.unshift(n) + } + return this + }), + (i.prototype.walk = function (n) { + for (var e, r = 0, t = this.children.length; r < t; r++) + (e = this.children[r])[o] + ? e.walk(n) + : '' !== e && n(e, {source: this.source, line: this.line, column: this.column, name: this.name}) + }), + (i.prototype.join = function (n) { + var e, + r, + t = this.children.length + if (t > 0) { + for (e = [], r = 0; r < t - 1; r++) e.push(this.children[r]), e.push(n) + e.push(this.children[r]), (this.children = e) + } + return this + }), + (i.prototype.replaceRight = function (n, e) { + var r = this.children[this.children.length - 1] + return ( + r[o] + ? r.replaceRight(n, e) + : 'string' == typeof r + ? (this.children[this.children.length - 1] = r.replace(n, e)) + : this.children.push(''.replace(n, e)), + this + ) + }), + (i.prototype.setSourceContent = function (n, r) { + this.sourceContents[e.toSetString(n)] = r + }), + (i.prototype.walkSourceContents = function (n) { + for (var r = 0, t = this.children.length; r < t; r++) + this.children[r][o] && this.children[r].walkSourceContents(n) + var i = Object.keys(this.sourceContents) + for (r = 0, t = i.length; r < t; r++) n(e.fromSetString(i[r]), this.sourceContents[i[r]]) + }), + (i.prototype.toString = function () { + var n = '' + return ( + this.walk(function (e) { + n += e + }), + n + ) + }), + (i.prototype.toStringWithSourceMap = function (e) { + var r = {code: '', line: 1, column: 0}, + o = new n(e), + i = !1, + l = null, + u = null, + s = null, + c = null + return ( + this.walk(function (n, e) { + ;(r.code += n), + null !== e.source && null !== e.line && null !== e.column + ? ((l === e.source && u === e.line && s === e.column && c === e.name) || + o.addMapping({ + source: e.source, + original: {line: e.line, column: e.column}, + generated: {line: r.line, column: r.column}, + name: e.name, + }), + (l = e.source), + (u = e.line), + (s = e.column), + (c = e.name), + (i = !0)) + : i && (o.addMapping({generated: {line: r.line, column: r.column}}), (l = null), (i = !1)) + for (var a = 0, h = n.length; a < h; a++) + n.charCodeAt(a) === t + ? (r.line++, + (r.column = 0), + a + 1 === h + ? ((l = null), (i = !1)) + : i && + o.addMapping({ + source: e.source, + original: {line: e.line, column: e.column}, + generated: {line: r.line, column: r.column}, + name: e.name, + })) + : r.column++ + }), + this.walkSourceContents(function (n, e) { + o.setSourceContent(n, e) + }), + {code: r.code, map: o} + ) + }), + (exports.SourceNode = i) + }, + {'./source-map-generator': 'Wwhl', './util': 'XUQW'}, + ], + aRf0: [ + function (require, module, exports) { + ;(exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator), + (exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer), + (exports.SourceNode = require('./lib/source-node').SourceNode) + }, + {'./lib/source-map-generator': 'Wwhl', './lib/source-map-consumer': 'fmOz', './lib/source-node': 'Qm02'}, + ], + }, + {}, + ['aRf0'], + null, +) +//# sourceMappingURL=source-map.438fa06b.js.map diff --git a/packages/theme/assets/speedscope/speedscope.6f107512.js b/packages/theme/assets/speedscope/speedscope.6f107512.js index 462a27d5666..fddf5cc0fa2 100644 --- a/packages/theme/assets/speedscope/speedscope.6f107512.js +++ b/packages/theme/assets/speedscope/speedscope.6f107512.js @@ -1,193 +1,10480 @@ -parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c3)for(n=[n],o=3;o2&&(t.children=s.slice.call(arguments,2)),n={},t)"key"!==o&&"ref"!==o&&(n[o]=t[o]);return d(e.type,n,t.key||e.key,t.ref||e.ref,null)}function R(e){var t={},n={__c:"__cC"+i++,__:e,Consumer:function(e,t){return e.children(t)},Provider:function(e){var o,_=this;return this.getChildContext||(o=[],this.getChildContext=function(){return t[n.__c]=_,t},this.shouldComponentUpdate=function(e){_.props.value!==e.value&&o.some(function(t){t.context=e.value,g(t)})},this.sub=function(e){o.push(e);var t=e.componentWillUnmount;e.componentWillUnmount=function(){o.splice(o.indexOf(e),1),t&&t.call(e)}}),e.children}};return n.Consumer.contextType=n,n.Provider.__=n,n}exports.isValidElement=t,exports.options=e,exports.options=e={__e:function(e,t){for(var n,o;t=t.__;)if((n=t.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(o=!0,n.setState(n.constructor.getDerivedStateFromError(e))),null!=n.componentDidCatch&&(o=!0,n.componentDidCatch(e)),o)return g(n.__E=n)}catch(t){e=t}throw e}},exports.isValidElement=t=function(e){return null!=e&&void 0===e.constructor},y.prototype.setState=function(e,t){var n;n=this.__s!==this.state?this.__s:this.__s=p({},this.state),"function"==typeof e&&(e=e(n,this.props)),e&&p(n,e),null!=e&&this.__v&&(t&&this.__h.push(t),g(this))},y.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),g(this))},y.prototype.render=v,n=[],o=0,_="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,r=u,i=0; -},{}],"ucYa":[function(require,module,exports) { -"use strict";function t(t){return t[t.length-1]||null}function e(t,e){t.sort(function(t,r){const n=e(t),o=e(r);return no?1:0})}function r(t,e,r){return t.has(e)||t.set(e,r(e)),t.get(e)}function n(t,e,r){return t.has(e)?t.get(e):r(e)}function o(t,e){if(!t.has(e))throw new Error(`Expected key ${e}`);return t.get(e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.lastOf=t,exports.sortBy=e,exports.getOrInsert=r,exports.getOrElse=n,exports.getOrThrow=o,exports.itMap=l,exports.itForEach=u,exports.itReduce=i,exports.zeroPad=c,exports.formatPercent=a,exports.fract=f,exports.triangle=h,exports.findValueBisect=g,exports.findIndexBisect=p,exports.noop=x,exports.objectsHaveShallowEquality=d,exports.memoizeByShallowEquality=y,exports.memoizeByReference=w,exports.lazyStatic=E,exports.decodeBase64=A,exports.KeyedSet=void 0;class s{constructor(){this.map=new Map}getOrInsert(t){const e=t.key,r=this.map.get(e);return r||(this.map.set(e,t),t)}forEach(t){this.map.forEach(t)}[Symbol.iterator](){return this.map.values()}}function*l(t,e){for(let r of t)yield e(r)}function u(t,e){for(let r of t)e(r)}function i(t,e,r){let n=r;for(let o of t)n=e(n,o);return n}function c(t,e){return new Array(Math.max(e-t.length,0)+1).join("0")+t}function a(t){let e=`${t.toFixed(0)}%`;return 100===t?e="100%":t>99?e=">99%":t<.01?e="<0.01%":t<1?e=`${t.toFixed(2)}%`:t<10&&(e=`${t.toFixed(1)}%`),e}function f(t){return t-Math.floor(t)}function h(t){return 2*Math.abs(f(t)-.5)-1}function g(t,e,r,n,o=1){for(console.assert(!isNaN(o)&&!isNaN(n));;){if(e-t<=o)return[t,e];const s=(e+t)/2;r(s){let n;return null==e?(n=t(r),e={args:r,result:n},n):d(e.args,r)?e.result:(e.args=r,e.result=t(r),e.result)}}function w(t){let e=null;return r=>{let n;return null==e?(n=t(r),e={args:r,result:n},n):e.args===r?e.result:(e.args=r,e.result=t(r),e.result)}}function E(t){let e=null;return()=>(null==e&&(e={result:t()}),e.result)}exports.KeyedSet=s;const m=E(()=>{const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e=new Map;for(let r=0;r>4,"="!==u&&(o[s++]=(15&a)<<4|f>>2),"="!==i&&(o[s++]=(7&f)<<6|h)}if(s!==n)throw new Error(`Expected to decode ${n} bytes, but only decoded ${s})`);return o} -},{}],"EhY8":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LRUCache=exports.List=void 0;class t{constructor(t){this.data=t,this.prev=null,this.next=null}}class e{constructor(){this.head=null,this.tail=null,this.size=0}getHead(){return this.head}getTail(){return this.tail}getSize(){return this.size}append(t){this.tail?(this.tail.next=t,t.prev=this.tail,this.tail=t):this.head=this.tail=t,this.size++}prepend(t){return this.head?(this.head.prev=t,t.next=this.head,this.head=t):this.head=this.tail=t,this.size++,t}pop(){if(this.tail){const t=this.tail;return t.prev?(this.tail=t.prev,this.tail.next=null):this.head=this.tail=null,this.size--,t.prev=null,t}return null}dequeue(){if(this.head){const t=this.head;return t.next?(this.head=t.next,this.head.prev=null):this.head=this.tail=null,this.size--,t.next=null,t}return null}remove(t){null==t.prev?this.dequeue():null==t.next?this.pop():(t.next.prev=t.prev,t.prev.next=t.next,t.next=null,t.prev=null,this.size--)}}exports.List=e;class i{constructor(t){this.capacity=t,this.list=new e,this.map=new Map}has(t){return this.map.has(t)}get(t){const e=this.map.get(t);return e?(this.list.remove(e.listNode),this.list.prepend(e.listNode),e?e.value:null):null}getSize(){return this.list.getSize()}getCapacity(){return this.capacity}insert(e,i){const s=this.map.get(e);for(s&&this.list.remove(s.listNode);this.list.getSize()>=this.capacity;)this.map.delete(this.list.pop().data);const h=this.list.prepend(new t(e));this.map.set(e,{value:i,listNode:h})}getOrInsert(t,e){let i=this.get(t);return null==i&&(i=e(t),this.insert(t,i)),i}removeLRU(){const t=this.list.pop();if(!t)return null;const e=t.data,i=this.map.get(e).value;return this.map.delete(e),[e,i]}clear(){this.list=new e,this.map=new Map}}exports.LRUCache=i; -},{}],"tDuZ":[function(require,module,exports) { -"use strict";function t(t,i,s){return ts?s:t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.clamp=t,exports.Rect=exports.AffineTransform=exports.Vec2=void 0;class i{constructor(t,i){this.x=t,this.y=i}withX(t){return new i(t,this.y)}withY(t){return new i(this.x,t)}plus(t){return new i(this.x+t.x,this.y+t.y)}minus(t){return new i(this.x-t.x,this.y-t.y)}times(t){return new i(this.x*t,this.y*t)}timesPointwise(t){return new i(this.x*t.x,this.y*t.y)}dividedByPointwise(t){return new i(this.x/t.x,this.y/t.y)}dot(t){return this.x*t.x+this.y*t.y}equals(t){return this.x===t.x&&this.y===t.y}approxEquals(t,i=1e-9){return Math.abs(this.x-t.x)1)for(var n=1;n=0&&e<=31),t.TEXTURE0+e}var h,a;exports.Graphics=h,function(t){t.Rect=class{constructor(t=0,e=0,i=0,r=0){this.x=t,this.y=e,this.width=i,this.height=r}set(t,e,i,r){this.x=t,this.y=e,this.width=i,this.height=r}equals(t){return this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height}};class e{constructor(t,e,i,r){this.redF=t,this.greenF=e,this.blueF=i,this.alphaF=r}equals(t){return this.redF===t.redF&&this.greenF===t.greenF&&this.blueF===t.blueF&&this.alphaF===t.alphaF}}let i,r,s,n,h;e.TRANSPARENT=new e(0,0,0,0),t.Color=e,function(t){t[t.ZERO=0]="ZERO",t[t.ONE=1]="ONE",t[t.SOURCE_COLOR=2]="SOURCE_COLOR",t[t.TARGET_COLOR=3]="TARGET_COLOR",t[t.INVERSE_SOURCE_COLOR=4]="INVERSE_SOURCE_COLOR",t[t.INVERSE_TARGET_COLOR=5]="INVERSE_TARGET_COLOR",t[t.SOURCE_ALPHA=6]="SOURCE_ALPHA",t[t.TARGET_ALPHA=7]="TARGET_ALPHA",t[t.INVERSE_SOURCE_ALPHA=8]="INVERSE_SOURCE_ALPHA",t[t.INVERSE_TARGET_ALPHA=9]="INVERSE_TARGET_ALPHA",t[t.CONSTANT=10]="CONSTANT",t[t.INVERSE_CONSTANT=11]="INVERSE_CONSTANT"}(i=t.BlendOperation||(t.BlendOperation={})),function(t){t[t.TRIANGLES=0]="TRIANGLES",t[t.TRIANGLE_STRIP=1]="TRIANGLE_STRIP"}(r=t.Primitive||(t.Primitive={}));function a(t){return t==s.FLOAT?4:1}t.Context=class{constructor(){this.resizeEventHandlers=new Set}setCopyBlendState(){this.setBlendState(i.ONE,i.ZERO)}setAddBlendState(){this.setBlendState(i.ONE,i.ONE)}setPremultipliedBlendState(){this.setBlendState(i.ONE,i.INVERSE_SOURCE_ALPHA)}setUnpremultipliedBlendState(){this.setBlendState(i.SOURCE_ALPHA,i.INVERSE_SOURCE_ALPHA)}addAfterResizeEventHandler(t){this.resizeEventHandlers.add(t)}removeAfterResizeEventHandler(t){this.resizeEventHandlers.delete(t)}},function(t){t[t.FLOAT=0]="FLOAT",t[t.BYTE=1]="BYTE"}(s=t.AttributeType||(t.AttributeType={})),t.attributeByteLength=a;class _{constructor(t,e,i,r){this.name=t,this.type=e,this.count=i,this.byteOffset=r}}t.Attribute=_;t.VertexFormat=class{constructor(){this._attributes=[],this._stride=0}get attributes(){return this._attributes}get stride(){return this._stride}add(t,e,i){return this.attributes.push(new _(t,e,i,this.stride)),this._stride+=i*a(e),this}};t.VertexBuffer=class{uploadFloat32Array(t){this.upload(new Uint8Array(t.buffer),0)}uploadFloats(t){this.uploadFloat32Array(new Float32Array(t))}},function(t){t[t.NEAREST=0]="NEAREST",t[t.LINEAR=1]="LINEAR"}(n=t.PixelFilter||(t.PixelFilter={})),function(t){t[t.REPEAT=0]="REPEAT",t[t.CLAMP=1]="CLAMP"}(h=t.PixelWrap||(t.PixelWrap={}));class o{constructor(t,e,i){this.minFilter=t,this.magFilter=e,this.wrap=i}}o.LINEAR_CLAMP=new o(n.LINEAR,n.LINEAR,h.CLAMP),o.LINEAR_MIN_NEAREST_MAG_CLAMP=new o(n.LINEAR,n.NEAREST,h.CLAMP),o.NEAREST_CLAMP=new o(n.NEAREST,n.NEAREST,h.CLAMP),t.TextureFormat=o}(h||(exports.Graphics=h={})),exports.WebGL=a,function(t){class a extends h.Context{get widthInPixels(){return this._width}get heightInPixels(){return this._height}constructor(t=document.createElement("canvas")){super(),this._attributeCount=0,this._blendOperations=0,this._contextResetHandlers=[],this._currentClearColor=h.Color.TRANSPARENT,this._currentRenderTarget=null,this._defaultViewport=new h.Rect,this._forceStateUpdate=!0,this._generation=1,this._height=0,this._oldBlendOperations=0,this._oldRenderTarget=null,this._oldViewport=new h.Rect,this._width=0,this.handleWebglContextRestored=(()=>{this._attributeCount=0,this._currentClearColor=h.Color.TRANSPARENT,this._forceStateUpdate=!0,this._generation++;for(let t of this._contextResetHandlers)t()}),this.ANGLE_instanced_arrays=null,this.ANGLE_instanced_arrays_generation=-1;let e=t.getContext("webgl",{alpha:!1,antialias:!1,depth:!1,preserveDrawingBuffer:!1,stencil:!1});if(null==e)throw new Error("Setup failure");this._gl=e;let i=t.style;t.width=0,t.height=0,i.width=i.height="0",t.addEventListener("webglcontextlost",t=>{t.preventDefault()}),t.addEventListener("webglcontextrestored",this.handleWebglContextRestored),this._blendOperationMap={[h.BlendOperation.ZERO]:this._gl.ZERO,[h.BlendOperation.ONE]:this._gl.ONE,[h.BlendOperation.SOURCE_COLOR]:this._gl.SRC_COLOR,[h.BlendOperation.TARGET_COLOR]:this._gl.DST_COLOR,[h.BlendOperation.INVERSE_SOURCE_COLOR]:this._gl.ONE_MINUS_SRC_COLOR,[h.BlendOperation.INVERSE_TARGET_COLOR]:this._gl.ONE_MINUS_DST_COLOR,[h.BlendOperation.SOURCE_ALPHA]:this._gl.SRC_ALPHA,[h.BlendOperation.TARGET_ALPHA]:this._gl.DST_ALPHA,[h.BlendOperation.INVERSE_SOURCE_ALPHA]:this._gl.ONE_MINUS_SRC_ALPHA,[h.BlendOperation.INVERSE_TARGET_ALPHA]:this._gl.ONE_MINUS_DST_ALPHA,[h.BlendOperation.CONSTANT]:this._gl.CONSTANT_COLOR,[h.BlendOperation.INVERSE_CONSTANT]:this._gl.ONE_MINUS_CONSTANT_COLOR}}testContextLoss(){this.handleWebglContextRestored()}get gl(){return this._gl}get generation(){return this._generation}addContextResetHandler(t){r(this._contextResetHandlers,t)}removeContextResetHandler(t){s(this._contextResetHandlers,t)}get currentRenderTarget(){return this._currentRenderTarget}beginFrame(){this.setRenderTarget(null)}endFrame(){}setBlendState(t,e){this._blendOperations=a._packBlendModes(t,e)}setViewport(t,e,i,r){(null!=this._currentRenderTarget?this._currentRenderTarget.viewport:this._defaultViewport).set(t,e,i,r)}get viewport(){return null!=this._currentRenderTarget?this._currentRenderTarget.viewport:this._defaultViewport}get renderTargetWidthInPixels(){return null!=this._currentRenderTarget?this._currentRenderTarget.viewport.width:this._width}get renderTargetHeightInPixels(){return null!=this._currentRenderTarget?this._currentRenderTarget.viewport.height:this._height}draw(t,e,i){this._updateRenderTargetAndViewport(),f.from(e).prepare(),R.from(i).prepare(),this._updateFormat(e.format),this._updateBlendState(),this._gl.drawArrays(t==h.Primitive.TRIANGLES?this._gl.TRIANGLES:this._gl.TRIANGLE_STRIP,0,Math.floor(i.byteCount/e.format.stride)),this._forceStateUpdate=!1}resize(t,e,i,r){let s=this._gl.canvas;const n=s.getBoundingClientRect();if(this._width===t&&this._height===e&&n.width===i&&n.height===r)return;let h=s.style;s.width=t,s.height=e,h.width=`${i}px`,h.height=`${r}px`,this.setViewport(0,0,t,e),this._width=t,this._height=e,this.resizeEventHandlers.forEach(t=>t())}clear(t){this._updateRenderTargetAndViewport(),this._updateBlendState(),t.equals(this._currentClearColor)||(this._gl.clearColor(t.redF,t.greenF,t.blueF,t.alphaF),this._currentClearColor=t),this._gl.clear(this._gl.COLOR_BUFFER_BIT)}setRenderTarget(t){this._currentRenderTarget=A.from(t)}createMaterial(t,e,i){let r=new f(this,t,e,i);return r.program,r}createVertexBuffer(t){return i(t>0&&t%4==0),new R(this,t)}createTexture(t,e,i,r){return new p(this,t,e,i,r)}createRenderTarget(t){return new A(this,p.from(t))}getANGLE_instanced_arrays(){if(this.ANGLE_instanced_arrays_generation!==this._generation&&(this.ANGLE_instanced_arrays=null),!this.ANGLE_instanced_arrays&&(this.ANGLE_instanced_arrays=this.gl.getExtension("ANGLE_instanced_arrays"),!this.ANGLE_instanced_arrays))throw new Error("Failed to get extension ANGLE_instanced_arrays");return this.ANGLE_instanced_arrays}_updateRenderTargetAndViewport(){let t=this._currentRenderTarget,e=null!=t?t.viewport:this._defaultViewport,i=this._gl;(this._forceStateUpdate||this._oldRenderTarget!=t)&&(i.bindFramebuffer(i.FRAMEBUFFER,t?t.framebuffer:null),this._oldRenderTarget=t),!this._forceStateUpdate&&this._oldViewport.equals(e)||(i.viewport(e.x,this.renderTargetHeightInPixels-e.y-e.height,e.width,e.height),this._oldViewport.set(e.x,e.y,e.width,e.height))}_updateBlendState(){if(this._forceStateUpdate||this._oldBlendOperations!=this._blendOperations){let t=this._gl,e=this._blendOperations,r=this._oldBlendOperations,s=15&e,n=e>>4;i(s in this._blendOperationMap),i(n in this._blendOperationMap),e==a.COPY_BLEND_OPERATIONS?t.disable(t.BLEND):((this._forceStateUpdate||r==a.COPY_BLEND_OPERATIONS)&&t.enable(t.BLEND),t.blendFunc(this._blendOperationMap[s],this._blendOperationMap[n])),this._oldBlendOperations=e}}_updateFormat(t){let e=this._gl,i=t.attributes,r=i.length;for(let s=0;sr;)this._attributeCount--,e.disableVertexAttribArray(this._attributeCount);this._attributeCount=r}getWebGLInfo(){const t=this.gl.getExtension("WEBGL_debug_renderer_info");return{renderer:t?this.gl.getParameter(t.UNMASKED_RENDERER_WEBGL):null,vendor:t?this.gl.getParameter(t.UNMASKED_VENDOR_WEBGL):null,version:this.gl.getParameter(this.gl.VERSION)}}static from(t){return i(null==t||t instanceof a),t}static _packBlendModes(t,e){return t|e<<4}}a.COPY_BLEND_OPERATIONS=a._packBlendModes(h.BlendOperation.ONE,h.BlendOperation.ZERO),t.Context=a;class _{constructor(t,e,i=0,r=null,s=!0){this._material=t,this._name=e,this._generation=i,this._location=r,this._isDirty=s}get location(){let t=a.from(this._material.context);if(this._generation!=t.generation&&(this._location=t.gl.getUniformLocation(this._material.program,this._name),this._generation=t.generation,!e)){let e=this._material.program,r=t.gl;for(let t=0,s=r.getProgramParameter(e,r.ACTIVE_UNIFORMS);t0&&this._texture.height>0?this._texture.texture:null)}}class f{constructor(t,e,i,r,s={},n=[],h=0,a=null){this._context=t,this._format=e,this._vertexSource=i,this._fragmentSource=r,this._uniformsMap=s,this._uniformsList=n,this._generation=h,this._program=a}get context(){return this._context}get format(){return this._format}get vertexSource(){return this._vertexSource}get fragmentSource(){return this._fragmentSource}setUniformFloat(t,e){let r=this._uniformsMap[t]||null;null==r&&(r=new o(this,t),this._uniformsMap[t]=r,this._uniformsList.push(r)),i(r instanceof o),r.set(e)}setUniformInt(t,e){let r=this._uniformsMap[t]||null;null==r&&(r=new l(this,t),this._uniformsMap[t]=r,this._uniformsList.push(r)),i(r instanceof l),r.set(e)}setUniformVec2(t,e,r){let s=this._uniformsMap[t]||null;null==s&&(s=new u(this,t),this._uniformsMap[t]=s,this._uniformsList.push(s)),i(s instanceof u),s.set(e,r)}setUniformVec3(t,e,r,s){let n=this._uniformsMap[t]||null;null==n&&(n=new c(this,t),this._uniformsMap[t]=n,this._uniformsList.push(n)),i(n instanceof c),n.set(e,r,s)}setUniformVec4(t,e,r,s,n){let h=this._uniformsMap[t]||null;null==h&&(h=new d(this,t),this._uniformsMap[t]=h,this._uniformsList.push(h)),i(h instanceof d),h.set(e,r,s,n)}setUniformMat3(t,e,r,s,n,h,a,_,o,l){let u=this._uniformsMap[t]||null;null==u&&(u=new E(this,t),this._uniformsMap[t]=u,this._uniformsList.push(u)),i(u instanceof E),u.set(e,r,s,n,h,a,_,o,l)}setUniformSampler(t,e,r){let s=this._uniformsMap[t]||null;null==s&&(s=new g(this,t),this._uniformsMap[t]=s,this._uniformsList.push(s)),i(s instanceof g),s.set(e,r)}get program(){let t=this._context.gl;if(this._generation!=this._context.generation){this._program=t.createProgram(),this._compileShader(t,t.VERTEX_SHADER,this.vertexSource),this._compileShader(t,t.FRAGMENT_SHADER,this.fragmentSource);let r=this.format.attributes;for(let e=0;e=0),i(0<=t&&t+r<=this._byteCount),i(0<=e&&e+r<=this._byteCount),this._bytes&&t!=e&&0!=r&&(this._bytes.set(this._bytes.subarray(t,this._byteCount),e),this._growDirtyRegion(Math.min(t,e),Math.max(t,e)+r))}upload(t,e=0){i(0<=e&&e+t.length<=this._byteCount),i(null!=this._bytes),this._bytes.set(t,e),this._growDirtyRegion(e,e+t.length)}free(){this._buffer&&this._context.gl.deleteBuffer(this._buffer),this._generation=0}prepare(){let t=this._context.gl;this._generation!==this._context.generation&&(this._buffer=t.createBuffer(),this._generation=this._context.generation,this._isDirty=!0),t.bindBuffer(t.ARRAY_BUFFER,this._buffer),this._isDirty&&(t.bufferData(t.ARRAY_BUFFER,this._byteCount,t.DYNAMIC_DRAW),this._dirtyMin=this._totalMin,this._dirtyMax=this._totalMax,this._isDirty=!1),this._dirtyMin{const t=e.AffineTransform.betweenRects(i.configSpaceSrcRect,i.physicalSpaceDstRect),r=new e.Vec2(this.gl.viewport.width,this.gl.viewport.height);return e.AffineTransform.withTranslation(new e.Vec2(-1,1)).times(e.AffineTransform.withScale(new e.Vec2(2,-2).dividedByPointwise(r))).times(t)})()),this.gl.setUnpremultipliedBlendState(),this.gl.draw(t.Graphics.Primitive.TRIANGLES,this.material,i.batch.getBuffer())}}exports.RectangleBatchRenderer=c; -},{"../lib/math":"tDuZ","./graphics":"XGYN","./utils":"MMP6"}],"x77Y":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Color=void 0;var t=require("./math");class r{constructor(t=0,r=0,s=0,e=1){this.r=t,this.g=r,this.b=s,this.a=e}static fromLumaChromaHue(s,e,o){const i=o/60,a=e*(1-Math.abs(i%2-1)),[n,h,u]=i<1?[e,a,0]:i<2?[a,e,0]:i<3?[0,e,a]:i<4?[0,a,e]:i<5?[a,0,e]:[e,0,a],c=s-(.3*n+.59*h+.11*u);return new r((0,t.clamp)(n+c,0,1),(0,t.clamp)(h+c,0,1),(0,t.clamp)(u+c,0,1),1)}static fromCSSHex(t){if(7!==t.length||"#"!==t[0])throw new Error(`Invalid color input ${t}`);const s=parseInt(t.substr(1,2),16)/255,e=parseInt(t.substr(3,2),16)/255,o=parseInt(t.substr(5,2),16)/255;if(s<0||s>1||e<0||e>1||o<0||o>1)throw new Error(`Invalid color input ${t}`);return new r(s,e,o)}withAlpha(t){return new r(this.r,this.g,this.b,t)}toCSS(){return`rgba(${(255*this.r).toFixed()}, ${(255*this.g).toFixed()}, ${(255*this.b).toFixed()}, ${this.a.toFixed(2)})`}}exports.Color=r; -},{"./math":"tDuZ"}],"cFC1":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RowAtlas=void 0;var e=require("../lib/lru-cache"),t=require("./rectangle-batch-renderer"),r=require("../lib/math"),i=require("../lib/color"),c=require("./graphics"),h=require("./utils");class a{constructor(h,a,s){this.gl=h,this.rectangleBatchRenderer=a,this.textureRenderer=s,this.texture=h.createTexture(c.Graphics.TextureFormat.NEAREST_CLAMP,4096,4096),this.renderTarget=h.createRenderTarget(this.texture),this.rowCache=new e.LRUCache(this.texture.height),this.clearLineBatch=new t.RectangleBatch(h),this.clearLineBatch.addRect(r.Rect.unit,new i.Color(0,0,0,0)),h.addContextResetHandler(()=>{this.rowCache.clear()})}has(e){return this.rowCache.has(e)}getResolution(){return this.texture.width}getCapacity(){return this.texture.height}allocateLine(e){if(this.rowCache.getSize(){for(let i of e){let e=this.rowCache.get(i);if(null!=e)continue;e=this.allocateLine(i);const c=new r.Rect(new r.Vec2(0,e),new r.Vec2(this.texture.width,1));this.rectangleBatchRenderer.render({batch:this.clearLineBatch,configSpaceSrcRect:r.Rect.unit,physicalSpaceDstRect:c}),t(c,i)}})}renderViaAtlas(e,t){let i=this.rowCache.get(e);if(null==i)return!1;const c=new r.Rect(new r.Vec2(0,i),new r.Vec2(this.texture.width,1));return this.textureRenderer.render({texture:this.texture,srcRect:c,dstRect:t}),!0}}exports.RowAtlas=a; -},{"../lib/lru-cache":"EhY8","./rectangle-batch-renderer":"UGJH","../lib/math":"tDuZ","../lib/color":"x77Y","./graphics":"XGYN","./utils":"MMP6"}],"p3j0":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TextureRenderer=void 0;var e=require("../lib/math"),t=require("./graphics"),r=require("./utils");const n="\n uniform mat3 uvTransform;\n uniform mat3 positionTransform;\n\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n\n void main() {\n vUv = (uvTransform * vec3(uv, 1)).xy;\n gl_Position = vec4((positionTransform * vec3(position, 1)).xy, 0, 1);\n }\n",i="\n precision mediump float;\n\n varying vec2 vUv;\n uniform sampler2D texture;\n\n void main() {\n gl_FragColor = texture2D(texture, vUv);\n }\n";class s{constructor(e){this.gl=e;const r=new t.Graphics.VertexFormat;r.add("position",t.Graphics.AttributeType.FLOAT,2),r.add("uv",t.Graphics.AttributeType.FLOAT,2);const s=[{pos:[-1,1],uv:[0,1]},{pos:[1,1],uv:[1,1]},{pos:[-1,-1],uv:[0,0]},{pos:[1,-1],uv:[1,0]}],o=[];for(let t of s)o.push(t.pos[0]),o.push(t.pos[1]),o.push(t.uv[0]),o.push(t.uv[1]);this.buffer=e.createVertexBuffer(r.stride*s.length),this.buffer.upload(new Uint8Array(new Float32Array(o).buffer)),this.material=e.createMaterial(r,n,i)}render(n){this.material.setUniformSampler("texture",n.texture,0),(0,r.setUniformAffineTransform)(this.material,"uvTransform",(()=>{const{srcRect:t,texture:r}=n,i=e.AffineTransform.withTranslation(new e.Vec2(0,1)).times(e.AffineTransform.withScale(new e.Vec2(1,-1))).times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero,new e.Vec2(r.width,r.height)),e.Rect.unit)).transformRect(t);return e.AffineTransform.betweenRects(e.Rect.unit,i)})()),(0,r.setUniformAffineTransform)(this.material,"positionTransform",(()=>{const{dstRect:t}=n,{viewport:r}=this.gl,i=new e.Vec2(r.width,r.height),s=e.AffineTransform.withScale(new e.Vec2(1,-1)).times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero,i),e.Rect.NDC)).transformRect(t);return e.AffineTransform.betweenRects(e.Rect.NDC,s)})()),this.gl.setUnpremultipliedBlendState(),this.gl.draw(t.Graphics.Primitive.TRIANGLE_STRIP,this.material,this.buffer)}}exports.TextureRenderer=s; -},{"../lib/math":"tDuZ","./graphics":"XGYN","./utils":"MMP6"}],"tdKg":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewportRectangleRenderer=void 0;var e=require("../lib/color"),i=require("./graphics"),r=require("./utils");const o=new i.Graphics.VertexFormat;o.add("position",i.Graphics.AttributeType.FLOAT,2);const n="\n attribute vec2 position;\n\n void main() {\n gl_Position = vec4(position, 0, 1);\n }\n",t=i=>{const{r:r,g:o,b:n}=e.Color.fromCSSHex(i.fgSecondaryColor),t=`${r.toFixed(1)}, ${o.toFixed(1)}, ${n.toFixed(1)}`;return`\n precision mediump float;\n\n uniform mat3 configSpaceToPhysicalViewSpace;\n uniform vec2 physicalSize;\n uniform vec2 physicalOrigin;\n uniform vec2 configSpaceViewportOrigin;\n uniform vec2 configSpaceViewportSize;\n uniform float framebufferHeight;\n\n void main() {\n vec2 origin = (configSpaceToPhysicalViewSpace * vec3(configSpaceViewportOrigin, 1.0)).xy;\n vec2 size = (configSpaceToPhysicalViewSpace * vec3(configSpaceViewportSize, 0.0)).xy;\n\n vec2 halfSize = physicalSize / 2.0;\n\n float borderWidth = 2.0;\n\n origin = floor(origin * halfSize) / halfSize + borderWidth * vec2(1.0, 1.0);\n size = floor(size * halfSize) / halfSize - 2.0 * borderWidth * vec2(1.0, 1.0);\n\n vec2 coord = gl_FragCoord.xy;\n coord.x = coord.x - physicalOrigin.x;\n coord.y = framebufferHeight - coord.y - physicalOrigin.y;\n vec2 clamped = clamp(coord, origin, origin + size);\n vec2 gap = clamped - coord;\n float maxdist = max(abs(gap.x), abs(gap.y));\n\n // TOOD(jlfwong): Could probably optimize this to use mix somehow.\n if (maxdist == 0.0) {\n // Inside viewport rectangle\n gl_FragColor = vec4(0, 0, 0, 0);\n } else if (maxdist < borderWidth) {\n // Inside viewport rectangle at border\n gl_FragColor = vec4(${t}, 0.8);\n } else {\n // Outside viewport rectangle\n gl_FragColor = vec4(${t}, 0.5);\n }\n }\n `};class a{constructor(e,i){this.gl=e;const r=[[-1,1],[1,1],[-1,-1],[1,-1]],a=[];for(let o of r)a.push(o[0]),a.push(o[1]);this.buffer=e.createVertexBuffer(o.stride*r.length),this.buffer.upload(new Uint8Array(new Float32Array(a).buffer)),this.material=e.createMaterial(o,n,t(i))}render(e){(0,r.setUniformAffineTransform)(this.material,"configSpaceToPhysicalViewSpace",e.configSpaceToPhysicalViewSpace),(0,r.setUniformVec2)(this.material,"configSpaceViewportOrigin",e.configSpaceViewportRect.origin),(0,r.setUniformVec2)(this.material,"configSpaceViewportSize",e.configSpaceViewportRect.size);const o=this.gl.viewport;this.material.setUniformVec2("physicalOrigin",o.x,o.y),this.material.setUniformVec2("physicalSize",o.width,o.height),this.material.setUniformFloat("framebufferHeight",this.gl.renderTargetHeightInPixels),this.gl.setBlendState(i.Graphics.BlendOperation.SOURCE_ALPHA,i.Graphics.BlendOperation.INVERSE_SOURCE_ALPHA),this.gl.draw(i.Graphics.Primitive.TRIANGLE_STRIP,this.material,this.buffer)}}exports.ViewportRectangleRenderer=a; -},{"../lib/color":"x77Y","./graphics":"XGYN","./utils":"MMP6"}],"Q0ad":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartColorPassRenderer=void 0;var e=require("../lib/math"),r=require("./graphics"),n=require("./utils");const t=new r.Graphics.VertexFormat;t.add("position",r.Graphics.AttributeType.FLOAT,2),t.add("uv",r.Graphics.AttributeType.FLOAT,2);const i="\n uniform mat3 uvTransform;\n uniform mat3 positionTransform;\n\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n\n void main() {\n vUv = (uvTransform * vec3(uv, 1)).xy;\n gl_Position = vec4((positionTransform * vec3(position, 1)).xy, 0, 1);\n }\n",o=e=>`\n precision mediump float;\n\n uniform vec2 uvSpacePixelSize;\n uniform float renderOutlines;\n\n varying vec2 vUv;\n uniform sampler2D colorTexture;\n\n // https://en.wikipedia.org/wiki/HSL_and_HSV#From_luma/chroma/hue\n vec3 hcl2rgb(float H, float C, float L) {\n float hPrime = H / 60.0;\n float X = C * (1.0 - abs(mod(hPrime, 2.0) - 1.0));\n vec3 RGB =\n hPrime < 1.0 ? vec3(C, X, 0) :\n hPrime < 2.0 ? vec3(X, C, 0) :\n hPrime < 3.0 ? vec3(0, C, X) :\n hPrime < 4.0 ? vec3(0, X, C) :\n hPrime < 5.0 ? vec3(X, 0, C) :\n vec3(C, 0, X);\n\n float m = L - dot(RGB, vec3(0.30, 0.59, 0.11));\n return RGB + vec3(m, m, m);\n }\n\n float triangle(float x) {\n return 2.0 * abs(fract(x) - 0.5) - 1.0;\n }\n\n ${e}\n\n void main() {\n vec4 here = texture2D(colorTexture, vUv);\n\n if (here.z == 0.0) {\n // Background color\n gl_FragColor = vec4(0, 0, 0, 0);\n return;\n }\n\n // Sample the 4 surrounding pixels in the depth texture to determine\n // if we should draw a boundary here or not.\n vec4 N = texture2D(colorTexture, vUv + vec2(0, uvSpacePixelSize.y));\n vec4 E = texture2D(colorTexture, vUv + vec2(uvSpacePixelSize.x, 0));\n vec4 S = texture2D(colorTexture, vUv + vec2(0, -uvSpacePixelSize.y));\n vec4 W = texture2D(colorTexture, vUv + vec2(-uvSpacePixelSize.x, 0));\n\n // NOTE: For outline checks, we intentionally check both the right\n // and the left to determine if we're an edge. If a rectangle is a single\n // pixel wide, we don't want to render it as an outline, so this method\n // of checking ensures that we don't outline single physical-space\n // pixel width rectangles.\n if (\n renderOutlines > 0.0 &&\n (\n here.y == N.y && here.y != S.y || // Top edge\n here.y == S.y && here.y != N.y || // Bottom edge\n here.x == E.x && here.x != W.x || // Left edge\n here.x == W.x && here.x != E.x\n )\n ) {\n // We're on an edge! Draw transparent.\n gl_FragColor = vec4(0, 0, 0, 0);\n } else {\n // Not on an edge. Draw the appropriate color.\n gl_FragColor = vec4(colorForBucket(here.z), here.a);\n }\n }\n`;class a{constructor(e,r){this.gl=e;const n=[{pos:[-1,1],uv:[0,1]},{pos:[1,1],uv:[1,1]},{pos:[-1,-1],uv:[0,0]},{pos:[1,-1],uv:[1,0]}],a=[];for(let t of n)a.push(t.pos[0]),a.push(t.pos[1]),a.push(t.uv[0]),a.push(t.uv[1]);this.buffer=e.createVertexBuffer(t.stride*n.length),this.buffer.uploadFloats(a),this.material=e.createMaterial(t,i,o(r.colorForBucketGLSL))}render(t){const{srcRect:i,rectInfoTexture:o}=t,a=e.AffineTransform.withTranslation(new e.Vec2(0,1)).times(e.AffineTransform.withScale(new e.Vec2(1,-1))).times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero,new e.Vec2(o.width,o.height)),e.Rect.unit)).transformRect(i),s=e.AffineTransform.betweenRects(e.Rect.unit,a),{dstRect:c}=t,l=new e.Vec2(this.gl.viewport.width,this.gl.viewport.height),u=e.AffineTransform.withScale(new e.Vec2(1,-1)).times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero,l),e.Rect.NDC)).transformRect(c),h=e.AffineTransform.betweenRects(e.Rect.NDC,u),f=e.Vec2.unit.dividedByPointwise(new e.Vec2(t.rectInfoTexture.width,t.rectInfoTexture.height));this.material.setUniformSampler("colorTexture",t.rectInfoTexture,0),(0,n.setUniformAffineTransform)(this.material,"uvTransform",s),this.material.setUniformFloat("renderOutlines",t.renderOutlines?1:0),this.material.setUniformVec2("uvSpacePixelSize",f.x,f.y),(0,n.setUniformAffineTransform)(this.material,"positionTransform",h),this.gl.setUnpremultipliedBlendState(),this.gl.draw(r.Graphics.Primitive.TRIANGLE_STRIP,this.material,this.buffer)}}exports.FlamechartColorPassRenderer=a; -},{"../lib/math":"tDuZ","./graphics":"XGYN","./utils":"MMP6"}],"KwET":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CanvasContext=void 0;var e=require("./graphics"),r=require("./rectangle-batch-renderer"),t=require("./texture-renderer"),i=require("../lib/math"),n=require("./overlay-rectangle-renderer"),s=require("./flamechart-color-pass-renderer"),o=require("../lib/color");class a{constructor(i,a){this.animationFrameRequest=null,this.beforeFrameHandlers=new Set,this.onBeforeFrame=(()=>{this.animationFrameRequest=null,this.gl.setViewport(0,0,this.gl.renderTargetWidthInPixels,this.gl.renderTargetHeightInPixels);const r=o.Color.fromCSSHex(this.theme.bgPrimaryColor);this.gl.clear(new e.Graphics.Color(r.r,r.g,r.b,r.a));for(const e of this.beforeFrameHandlers)e()}),this.gl=new e.WebGL.Context(i),this.rectangleBatchRenderer=new r.RectangleBatchRenderer(this.gl),this.textureRenderer=new t.TextureRenderer(this.gl),this.viewportRectangleRenderer=new n.ViewportRectangleRenderer(this.gl,a),this.flamechartColorPassRenderer=new s.FlamechartColorPassRenderer(this.gl,a),this.theme=a,this.gl.addAfterResizeEventHandler(this.onBeforeFrame);const l=this.gl.getWebGLInfo();l&&console.log(`WebGL initialized. renderer: ${l.renderer}, vendor: ${l.vendor}, version: ${l.version}`),window.testContextLoss=(()=>{this.gl.testContextLoss()})}addBeforeFrameHandler(e){this.beforeFrameHandlers.add(e)}removeBeforeFrameHandler(e){this.beforeFrameHandlers.delete(e)}requestFrame(){this.animationFrameRequest||(this.animationFrameRequest=requestAnimationFrame(this.onBeforeFrame))}setViewport(e,r){const{origin:t,size:i}=e;let n=this.gl.viewport;this.gl.setViewport(t.x,t.y,i.x,i.y),r();let{x:s,y:o,width:a,height:l}=n;this.gl.setViewport(s,o,a,l)}renderBehind(e,r){const t=e.getBoundingClientRect(),n=new i.Rect(new i.Vec2(t.left*window.devicePixelRatio,t.top*window.devicePixelRatio),new i.Vec2(t.width*window.devicePixelRatio,t.height*window.devicePixelRatio));this.setViewport(n,r)}}exports.CanvasContext=a; -},{"./graphics":"XGYN","./rectangle-batch-renderer":"UGJH","./texture-renderer":"p3j0","../lib/math":"tDuZ","./overlay-rectangle-renderer":"tdKg","./flamechart-color-pass-renderer":"Q0ad","../lib/color":"x77Y"}],"zEXv":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFrameToColorBucket=exports.getProfileToView=exports.getRowAtlas=exports.getCanvasContext=exports.createGetCSSColorForFrame=exports.createGetColorBucketForFrame=void 0;var e=require("../lib/utils"),t=require("../gl/row-atlas"),o=require("../gl/canvas-context");const r=(0,e.memoizeByReference)(e=>t=>e.get(t.key)||0);exports.createGetColorBucketForFrame=r;const n=(0,e.memoizeByShallowEquality)(({theme:e,frameToColorBucket:t})=>{const o=r(t);return t=>{const r=o(t)/255;return e.colorForBucket(r).toCSS()}});exports.createGetCSSColorForFrame=n;const a=(0,e.memoizeByShallowEquality)(({theme:e,canvas:t})=>new o.CanvasContext(t,e));exports.getCanvasContext=a;const s=(0,e.memoizeByReference)(e=>new t.RowAtlas(e.gl,e.rectangleBatchRenderer,e.textureRenderer));exports.getRowAtlas=s;const l=(0,e.memoizeByShallowEquality)(({profile:e,flattenRecursion:t})=>t?e.getProfileWithRecursionFlattened():e);exports.getProfileToView=l;const c=(0,e.memoizeByReference)(e=>{const t=[];function o(e){return(e.file||"")+e.name}e.forEachFrame(e=>t.push(e)),t.sort(function(e,t){return o(e)>o(t)?1:-1});const r=new Map;for(let n=0;n=u.__.length&&u.__.push({}),u.__[_]}function a(_){return e=1,p(A,_)}function p(t,o,e){var u=f(_++,2);return u.__c||(u.__c=n,u.__=[e?e(o):A(void 0,o),function(_){var n=t(u.__[0],_);u.__[0]!==n&&(u.__[0]=n,u.__c.setState({}))}]),u.__}function h(t,e){var u=f(_++,3);!o.options.__s&&q(u.__H,e)&&(u.__=t,u.__H=e,n.__H.__h.push(u))}function v(t,e){var u=f(_++,4);!o.options.__s&&q(u.__H,e)&&(u.__=t,u.__H=e,n.__h.push(u))}function m(_){return e=5,l(function(){return{current:_}},[])}function H(_,n,t){e=6,v(function(){"function"==typeof _?_(n()):_&&(_.current=n())},null==t?t:t.concat(_))}function l(n,t){var o=f(_++,7);return q(o.__H,t)?(o.__H=t,o.__h=n,o.__=n()):o.__}function d(_,n){return e=8,l(function(){return _},n)}function x(t){var o=n.context[t.__c],e=f(_++,9);return e.__c=t,o?(null==e.__&&(e.__=!0,o.sub(n)),o.props.value):t.__}function y(_,n){o.options.useDebugValue&&o.options.useDebugValue(n?n(_):_)}function E(t){var o=f(_++,10),e=a();return o.__=t,n.componentDidCatch||(n.componentDidCatch=function(_){o.__&&o.__(_),e[1](_)}),[e[0],function(){e[1](void 0)}]}function b(){u.some(function(_){if(_.__P)try{_.__H.__h.forEach(g),_.__H.__h.forEach(D),_.__H.__h=[]}catch(n){return _.__H.__h=[],o.options.__e(n,_.__v),!0}}),u=[]}function g(_){_.t&&_.t()}function D(_){var n=_.__();"function"==typeof n&&(_.t=n)}function q(_,n){return!_||n.some(function(n,t){return n!==_[t]})}function A(_,n){return"function"==typeof n?n(_):n}o.options.__r=function(t){r&&r(t),_=0,(n=t.__c).__H&&(n.__H.__h.forEach(g),n.__H.__h.forEach(D),n.__H.__h=[])},o.options.diffed=function(_){i&&i(_);var n=_.__c;if(n){var e=n.__H;e&&e.__h.length&&(1!==u.push(n)&&t===o.options.requestAnimationFrame||((t=o.options.requestAnimationFrame)||function(_){var n,t=function(){clearTimeout(o),cancelAnimationFrame(n),setTimeout(_)},o=setTimeout(t,100);"undefined"!=typeof window&&(n=requestAnimationFrame(t))})(b))}},o.options.__c=function(_,n){n.some(function(_){try{_.__h.forEach(g),_.__h=_.__h.filter(function(_){return!_.__||D(_)})}catch(t){n.some(function(_){_.__h&&(_.__h=[])}),n=[],o.options.__e(t,_.__v)}}),c&&c(_,n)},o.options.unmount=function(_){s&&s(_);var n=_.__c;if(n){var t=n.__H;if(t)try{t.__.forEach(function(_){return _.t&&_.t()})}catch(_){o.options.__e(_,n.__v)}}}; -},{"preact":"aSor"}],"AQ6k":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e={version:!0,Children:!0,render:!0,hydrate:!0,unmountComponentAtNode:!0,createPortal:!0,createFactory:!0,cloneElement:!0,isValidElement:!0,findDOMNode:!0,PureComponent:!0,memo:!0,forwardRef:!0,unstable_batchedUpdates:!0,Suspense:!0,SuspenseList:!0,lazy:!0,createElement:!0,createContext:!0,createRef:!0,Fragment:!0,Component:!0};exports.render=E,exports.hydrate=k,exports.unmountComponentAtNode=j,exports.createPortal=C,exports.createFactory=A,exports.cloneElement=U,exports.isValidElement=S,exports.findDOMNode=F,exports.memo=i,exports.forwardRef=l,exports.Suspense=d,exports.SuspenseList=v,exports.lazy=m,Object.defineProperty(exports,"createElement",{enumerable:!0,get:function(){return n.createElement}}),Object.defineProperty(exports,"createContext",{enumerable:!0,get:function(){return n.createContext}}),Object.defineProperty(exports,"createRef",{enumerable:!0,get:function(){return n.createRef}}),Object.defineProperty(exports,"Fragment",{enumerable:!0,get:function(){return n.Fragment}}),Object.defineProperty(exports,"Component",{enumerable:!0,get:function(){return n.Component}}),exports.unstable_batchedUpdates=exports.PureComponent=exports.Children=exports.version=exports.default=void 0;var t=require("preact/hooks");Object.keys(t).forEach(function(n){"default"!==n&&"__esModule"!==n&&(Object.prototype.hasOwnProperty.call(e,n)||Object.defineProperty(exports,n,{enumerable:!0,get:function(){return t[n]}}))});var n=require("preact");function r(e,t){for(var n in t)e[n]=t[n];return e}function o(e,t){for(var n in e)if("__source"!==n&&!(n in t))return!0;for(var r in t)if("__source"!==r&&e[r]!==t[r])return!0;return!1}var u=function(e){var t,n;function r(t){var n;return(n=e.call(this,t)||this).isPureReactComponent=!0,n}return n=e,(t=r).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,r.prototype.shouldComponentUpdate=function(e,t){return o(this.props,e)||o(this.state,t)},r}(n.Component);function i(e,t){function u(e){var n=this.props.ref,r=n==e.ref;return!r&&n&&(n.call?n(null):n.current=null),t?!t(this.props,e)||!r:o(this.props,e)}function i(t){return this.shouldComponentUpdate=u,(0,n.createElement)(e,r({},t))}return i.prototype.isReactComponent=!0,i.displayName="Memo("+(e.displayName||e.name)+")",i.t=!0,i}exports.PureComponent=u;var a=n.options.__b;function l(e){function t(t){var n=r({},t);return delete n.ref,e(n,t.ref)}return t.prototype.isReactComponent=t.t=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}n.options.__b=function(e){e.type&&e.type.t&&e.ref&&(e.props.ref=e.ref,e.ref=null),a&&a(e)};var c=function(e,t){return e?(0,n.toChildArray)(e).reduce(function(e,n,r){return e.concat(t(n,r))},[]):null},p={map:c,forEach:c,count:function(e){return e?(0,n.toChildArray)(e).length:0},only:function(e){if(1!==(e=(0,n.toChildArray)(e)).length)throw new Error("Children.only() expects only one child.");return e[0]},toArray:n.toChildArray},s=n.options.__e;function f(e){return e&&((e=r({},e)).__c=null,e.__k=e.__k&&e.__k.map(f)),e}function d(){this.__u=0,this.o=null,this.__b=null}function _(e){var t=e.__.__c;return t&&t.u&&t.u(e)}function m(e){var t,r,o;function u(u){if(t||(t=e()).then(function(e){r=e.default||e},function(e){o=e}),o)throw o;if(!r)throw t;return(0,n.createElement)(r,u)}return u.displayName="Lazy",u.t=!0,u}function v(){this.i=null,this.l=null}exports.Children=p,n.options.__e=function(e,t,n){if(e.then)for(var r,o=t;o=o.__;)if((r=o.__c)&&r.__c)return r.__c(e,t.__c);s(e,t,n)},(d.prototype=new n.Component).__c=function(e,t){var n=this;null==n.o&&(n.o=[]),n.o.push(t);var r=_(n.__v),o=!1,u=function(){o||(o=!0,r?r(i):i())};t.__c=t.componentWillUnmount,t.componentWillUnmount=function(){u(),t.__c&&t.__c()};var i=function(){var e;if(!--n.__u)for(n.__v.__k[0]=n.state.u,n.setState({u:n.__b=null});e=n.o.pop();)e.forceUpdate()};n.__u++||n.setState({u:n.__b=n.__v.__k[0]}),e.then(u,u)},d.prototype.render=function(e,t){return this.__b&&(this.__v.__k[0]=f(this.__b),this.__b=null),[(0,n.createElement)(n.Component,null,t.u?null:e.children),t.u&&e.fallback]};var h=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&("t"!==e.props.revealOrder[0]||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]s()))}get(){return this.state}subscribe(s){this.observers.push(s)}unsubscribe(s){const t=this.observers.indexOf(s);-1!==t&&this.observers.splice(t,1)}}function i(t){const[e,r]=(0,s.useState)(t.get());return(0,s.useLayoutEffect)(()=>{function s(){r(t.get())}return r(t.get()),t.subscribe(s),()=>{t.unsubscribe(s)}},[t]),e}exports.Atom=r; -},{"preact/hooks":"MwGB"}],"dpTI":[function(require,module,exports) { -"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),exports.ViewMode=void 0,exports.ViewMode=e,function(e){e[e.CHRONO_FLAME_CHART=0]="CHRONO_FLAME_CHART",e[e.LEFT_HEAVY_FLAME_GRAPH=1]="LEFT_HEAVY_FLAME_GRAPH",e[e.SANDWICH_VIEW=2]="SANDWICH_VIEW"}(e||(exports.ViewMode=e={})); -},{}],"O1pB":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getHashParams=o;var e=require("../lib/view-mode");function r(r){switch(r){case"time-ordered":return e.ViewMode.CHRONO_FLAME_CHART;case"left-heavy":return e.ViewMode.LEFT_HEAVY_FLAME_GRAPH;case"sandwich":return e.ViewMode.SANDWICH_VIEW;default:return null}}function o(e=window.location.hash){try{if(!e.startsWith("#"))return{};const t=e.substr(1).split("&"),i={};for(const e of t){let[o,t]=e.split("=");if(t=decodeURIComponent(t),"profileURL"===o)i.profileURL=t;else if("title"===o)i.title=t;else if("localProfilePath"===o)i.localProfilePath=t;else if("view"===o){const e=r(t);null!==e?i.viewMode=e:console.error(`Ignoring invalid view specifier: ${t}`)}}return i}catch(o){return console.error("Error when loading hash fragment."),console.error(o),{}}} -},{"../lib/view-mode":"dpTI"}],"uxXA":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ProfileGroupAtom=exports.FlamechartID=void 0;var e,t=require("../lib/atom"),a=require("../lib/math"),l=require("../lib/utils");exports.FlamechartID=e,function(e){e.LEFT_HEAVY="LEFT_HEAVY",e.CHRONO="CHRONO",e.SANDWICH_INVERTED_CALLERS="SANDWICH_INVERTED_CALLERS",e.SANDWICH_CALLEES="SANDWICH_CALLEES"}(e||(exports.FlamechartID=e={}));let i={hover:null,selectedNode:null,configSpaceViewportRect:a.Rect.empty,logicalSpaceViewportSize:a.Vec2.zero};class s extends t.Atom{constructor(){super(...arguments),this.setProfileGroup=(e=>{this.set({name:e.name,indexToView:e.indexToView,profiles:e.profiles.map(e=>({profile:e,chronoViewState:i,leftHeavyViewState:i,sandwichViewState:{callerCallee:null}}))})}),this.setProfileIndexToView=(e=>{null!=this.state&&(e=(0,a.clamp)(e,0,this.state.profiles.length-1),this.set(Object.assign(Object.assign({},this.state),{indexToView:e})))}),this.setSelectedFrame=(e=>{if(null==this.state)return;null!=this.getActiveProfile()&&this.updateActiveSandwichViewState(t=>null==e?{callerCallee:null}:{callerCallee:{invertedCallerFlamegraph:i,calleeFlamegraph:i,selectedFrame:e}})})}set(e){const t=this.state;null!=t&&null!=e&&(0,l.objectsHaveShallowEquality)(t,e)||super.set(e)}getActiveProfile(){var e;return null==this.state?null:this.state.profiles[null===(e=this.state)||void 0===e?void 0:e.indexToView]||null}updateActiveProfileState(e){if(null==this.state)return;const{indexToView:t,profiles:a}=this.state;this.set(Object.assign(Object.assign({},this.state),{profiles:a.map((a,l)=>l!=t?a:e(a))}))}updateActiveSandwichViewState(e){this.updateActiveProfileState(t=>Object.assign(Object.assign({},t),{sandwichViewState:e(t.sandwichViewState)}))}updateFlamechartState(t,a){switch(t){case e.CHRONO:this.updateActiveProfileState(e=>Object.assign(Object.assign({},e),{chronoViewState:a(e.chronoViewState)}));break;case e.LEFT_HEAVY:this.updateActiveProfileState(e=>Object.assign(Object.assign({},e),{leftHeavyViewState:a(e.leftHeavyViewState)}));break;case e.SANDWICH_CALLEES:this.updateActiveSandwichViewState(e=>Object.assign(Object.assign({},e),{callerCallee:null==e.callerCallee?null:Object.assign(Object.assign({},e.callerCallee),{calleeFlamegraph:a(e.callerCallee.calleeFlamegraph)})}));break;case e.SANDWICH_INVERTED_CALLERS:this.updateActiveSandwichViewState(e=>Object.assign(Object.assign({},e),{callerCallee:null==e.callerCallee?null:Object.assign(Object.assign({},e.callerCallee),{invertedCallerFlamegraph:a(e.callerCallee.invertedCallerFlamegraph)})}))}}setFlamechartHoveredNode(e,t){this.updateFlamechartState(e,e=>Object.assign(Object.assign({},e),{hover:t}))}setSelectedNode(e,t){this.updateFlamechartState(e,e=>Object.assign(Object.assign({},e),{selectedNode:t}))}setConfigSpaceViewportRect(e,t){this.updateFlamechartState(e,e=>Object.assign(Object.assign({},e),{configSpaceViewportRect:t}))}setLogicalSpaceViewportSize(e,t){this.updateFlamechartState(e,e=>Object.assign(Object.assign({},e),{logicalSpaceViewportSize:t}))}clearHoverNode(){this.setFlamechartHoveredNode(e.CHRONO,null),this.setFlamechartHoveredNode(e.LEFT_HEAVY,null),this.setFlamechartHoveredNode(e.SANDWICH_CALLEES,null),this.setFlamechartHoveredNode(e.SANDWICH_INVERTED_CALLERS,null)}}exports.ProfileGroupAtom=s; -},{"../lib/atom":"QkVE","../lib/math":"tDuZ","../lib/utils":"ucYa"}],"LDQe":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.tableSortMethodAtom=exports.SortDirection=exports.SortField=exports.errorAtom=exports.loadingAtom=exports.canUseXHR=exports.dragActiveAtom=exports.glCanvasAtom=exports.hashParamsAtom=exports.profileGroupAtom=exports.viewModeAtom=exports.searchQueryAtom=exports.searchIsActiveAtom=exports.flattenRecursionAtom=void 0;var o=require("../lib/atom"),t=require("../lib/view-mode"),e=require("../lib/hash-params"),r=require("./profile-group");const s=new o.Atom(!1,"flattenRecursion");exports.flattenRecursionAtom=s;const n=new o.Atom(!1,"searchIsActive");exports.searchIsActiveAtom=n;const i=new o.Atom("","searchQueryAtom");exports.searchQueryAtom=i;const A=new o.Atom(t.ViewMode.CHRONO_FLAME_CHART,"viewMode");exports.viewModeAtom=A;const a=new r.ProfileGroupAtom(null,"profileGroup");exports.profileGroupAtom=a,A.subscribe(()=>{a.clearHoverNode()});const p=(0,e.getHashParams)(),c=new o.Atom(p,"hashParams");exports.hashParamsAtom=c;const m=new o.Atom(null,"glCanvas");exports.glCanvasAtom=m;const l=new o.Atom(!1,"dragActive");exports.dragActiveAtom=l;const x=window.location.protocol,d="http:"===x||"https:"===x;exports.canUseXHR=d;const u=d&&null!=p.profileURL,h=new o.Atom(u,"loading");exports.loadingAtom=h;const S=new o.Atom(!1,"error");var v,w;exports.errorAtom=S,exports.SortField=v,function(o){o[o.SYMBOL_NAME=0]="SYMBOL_NAME",o[o.SELF=1]="SELF",o[o.TOTAL=2]="TOTAL"}(v||(exports.SortField=v={})),exports.SortDirection=w,function(o){o[o.ASCENDING=0]="ASCENDING",o[o.DESCENDING=1]="DESCENDING"}(w||(exports.SortDirection=w={}));const E=new o.Atom({field:v.SELF,direction:w.DESCENDING},"tableSortMethod");exports.tableSortMethodAtom=E; -},{"../lib/atom":"QkVE","../lib/view-mode":"dpTI","../lib/hash-params":"O1pB","./profile-group":"uxXA"}],"MY42":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useActiveProfileState=t;var e=require("./getters"),i=require("."),r=require("../lib/atom");function t(){const t=(0,r.useAtom)(i.flattenRecursionAtom),o=(0,r.useAtom)(i.profileGroupAtom);if(!o)return null;if(o.indexToView>=o.profiles.length)return null;const n=o.indexToView,s=o.profiles[n];return Object.assign(Object.assign({},o.profiles[o.indexToView]),{profile:(0,e.getProfileToView)({profile:s.profile,flattenRecursion:t}),index:o.indexToView})} -},{"./getters":"zEXv",".":"LDQe","../lib/atom":"QkVE"}],"KQrJ":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.colorSchemeAtom=exports.ColorScheme=void 0;var e,o=require("../lib/atom");exports.ColorScheme=e,function(e){e[e.SYSTEM=0]="SYSTEM",e[e.DARK=1]="DARK",e[e.LIGHT=2]="LIGHT"}(e||(exports.ColorScheme=e={}));const r="speedscope-color-scheme";function t(){const o=window.localStorage&&window.localStorage[r];return"DARK"===o?e.DARK:"LIGHT"===o?e.LIGHT:e.SYSTEM}function c(){return matchMedia("(prefers-color-scheme: dark)")}function s(o){if(c().matches)switch(o){case e.SYSTEM:return e.LIGHT;case e.LIGHT:return e.DARK;case e.DARK:return e.SYSTEM}else switch(o){case e.SYSTEM:return e.DARK;case e.DARK:return e.LIGHT;case e.LIGHT:return e.SYSTEM}}class a extends o.Atom{constructor(){super(...arguments),this.cycleToNextColorScheme=(()=>{this.set(s(this.get()))})}}const n=new a(t(),"colorScheme");exports.colorSchemeAtom=n,n.subscribe(()=>{const o=n.get();switch(o){case e.DARK:window.localStorage[r]="DARK";break;case e.LIGHT:window.localStorage[r]="LIGHT";break;case e.SYSTEM:delete window.localStorage[r];break;default:return o}return o}); -},{"../lib/atom":"QkVE"}],"osod":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.darkTheme=void 0;var o,r=require("../../lib/color"),e=require("../../lib/utils");!function(o){o.LIGHTER_GRAY="#D0D0D0",o.LIGHT_GRAY="#BDBDBD",o.GRAY="#666666",o.DARK_GRAY="#222222",o.DARKER_GRAY="#0C0C0C",o.OFF_BLACK="#060606",o.BLACK="#000000",o.BLUE="#00769B",o.PALE_BLUE="#004E75",o.GREEN="#0F8A42",o.LIGHT_BROWN="#D6AE24",o.BROWN="#A66F1C"}(o||(o={}));const t=.2,l=.1,a=.2,R=.1,c=o=>{const t=(0,e.triangle)(30*o),l=.9*o*360,a=.2+.1*t,R=.2-.1*t;return r.Color.fromLumaChromaHue(R,a,l)},A=`\n vec3 colorForBucket(float t) {\n float x = triangle(30.0 * t);\n float H = 360.0 * (0.9 * t);\n float C = ${.2.toFixed(1)} + ${.1.toFixed(1)} * x;\n float L = ${.2.toFixed(1)} - ${.1.toFixed(1)} * x;\n return hcl2rgb(H, C, L);\n }\n`,C={fgPrimaryColor:o.LIGHTER_GRAY,fgSecondaryColor:o.GRAY,bgPrimaryColor:o.OFF_BLACK,bgSecondaryColor:o.DARKER_GRAY,altFgPrimaryColor:o.LIGHTER_GRAY,altFgSecondaryColor:o.GRAY,altBgPrimaryColor:o.BLACK,altBgSecondaryColor:o.DARKER_GRAY,selectionPrimaryColor:o.BLUE,selectionSecondaryColor:o.PALE_BLUE,weightColor:o.GREEN,searchMatchTextColor:o.DARKER_GRAY,searchMatchPrimaryColor:o.BROWN,searchMatchSecondaryColor:o.LIGHT_BROWN,colorForBucket:c,colorForBucketGLSL:A};exports.darkTheme=C; -},{"../../lib/color":"x77Y","../../lib/utils":"ucYa"}],"CjU5":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.lightTheme=void 0;var o,r=require("../../lib/color"),e=require("../../lib/utils");!function(o){o.WHITE="#FFFFFF",o.OFF_WHITE="#F6F6F6",o.LIGHT_GRAY="#BDBDBD",o.GRAY="#666666",o.DARK_GRAY="#222222",o.OFF_BLACK="#111111",o.BLACK="#000000",o.DARK_BLUE="#2F80ED",o.PALE_DARK_BLUE="#8EB7ED",o.GREEN="#6FCF97",o.YELLOW="#FEDC62",o.ORANGE="#FFAC02"}(o||(o={}));const t=.25,l=.2,a=.8,F=.15,c=o=>{const t=(0,e.triangle)(30*o),l=.9*o*360,a=.25+.2*t,F=.8-.15*t;return r.Color.fromLumaChromaHue(F,a,l)},i=`\n vec3 colorForBucket(float t) {\n float x = triangle(30.0 * t);\n float H = 360.0 * (0.9 * t);\n float C = ${.25.toFixed(1)} + ${.2.toFixed(1)} * x;\n float L = ${.8.toFixed(1)} - ${.15.toFixed(1)} * x;\n return hcl2rgb(H, C, L);\n }\n`,C={fgPrimaryColor:o.BLACK,fgSecondaryColor:o.LIGHT_GRAY,bgPrimaryColor:o.WHITE,bgSecondaryColor:o.OFF_WHITE,altFgPrimaryColor:o.WHITE,altFgSecondaryColor:o.LIGHT_GRAY,altBgPrimaryColor:o.BLACK,altBgSecondaryColor:o.DARK_GRAY,selectionPrimaryColor:o.DARK_BLUE,selectionSecondaryColor:o.PALE_DARK_BLUE,weightColor:o.GREEN,searchMatchTextColor:o.BLACK,searchMatchPrimaryColor:o.ORANGE,searchMatchSecondaryColor:o.YELLOW,colorForBucket:c,colorForBucketGLSL:i};exports.lightTheme=C; -},{"../../lib/color":"x77Y","../../lib/utils":"ucYa"}],"gzKG":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useTheme=i,exports.withTheme=u,exports.colorSchemeToString=a,exports.ThemeProvider=S,exports.ThemeContext=void 0;var e=require("preact"),r=require("preact/hooks"),t=require("../../app-state/color-scheme"),o=require("../../lib/atom"),c=require("../../lib/utils"),n=require("./dark-theme"),h=require("./light-theme");const s=(0,e.createContext)(h.lightTheme);function i(){return(0,r.useContext)(s)}function u(e){return(0,c.memoizeByReference)(e)}function m(){return matchMedia("(prefers-color-scheme: dark)")}function a(e){switch(e){case t.ColorScheme.SYSTEM:return"System";case t.ColorScheme.DARK:return"Dark";case t.ColorScheme.LIGHT:return"Light"}}function l(e,r){switch(e){case t.ColorScheme.SYSTEM:return r?n.darkTheme:h.lightTheme;case t.ColorScheme.DARK:return n.darkTheme;case t.ColorScheme.LIGHT:return h.lightTheme}}function S(c){const[n,h]=(0,r.useState)(()=>m().matches),i=(0,r.useCallback)(e=>{h(e.matches)},[h]);(0,r.useEffect)(()=>{const e=m();return e.addEventListener("change",i),()=>{e.removeEventListener("change",i)}},[i]);const u=l((0,o.useAtom)(t.colorSchemeAtom),n);return(0,e.h)(s.Provider,{value:u,children:c.children})}exports.ThemeContext=s; -},{"preact":"aSor","preact/hooks":"MwGB","../../app-state/color-scheme":"KQrJ","../../lib/atom":"QkVE","../../lib/utils":"ucYa","./dark-theme":"osod","./light-theme":"CjU5"}],"QXNG":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=t;var e=/-webkit-|-moz-|-ms-/;function t(t){return"string"==typeof t&&e.test(t)}module.exports=exports.default; -},{}],"tSfb":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var e=require("css-in-js-utils/lib/isPrefixedValue"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}var u=["-webkit-","-moz-",""];function i(e,r){if("string"==typeof r&&!(0,t.default)(r)&&r.indexOf("calc(")>-1)return u.map(function(e){return r.replace(/calc\(/g,e+"calc(")})}module.exports=exports.default; -},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"ie1g":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("css-in-js-utils/lib/isPrefixedValue"),r=t(e);function t(e){return e&&e.__esModule?e:{default:e}}var s=["-webkit-",""];function u(e,t){if("string"==typeof t&&!(0,r.default)(t)&&t.indexOf("cross-fade(")>-1)return s.map(function(e){return t.replace(/cross-fade\(/g,e+"cross-fade(")})}module.exports=exports.default; -},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"CYBj":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=o;var e=["-webkit-","-moz-",""],r={"zoom-in":!0,"zoom-out":!0,grab:!0,grabbing:!0};function o(o,t){if("cursor"===o&&r.hasOwnProperty(t))return e.map(function(e){return e+t})}module.exports=exports.default; -},{}],"MH9I":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("css-in-js-utils/lib/isPrefixedValue"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}var i=["-webkit-",""];function u(e,r){if("string"==typeof r&&!(0,t.default)(r)&&r.indexOf("filter(")>-1)return i.map(function(e){return r.replace(/filter\(/g,e+"filter(")})}module.exports=exports.default; -},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"jmPR":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var e={flex:["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex","flex"],"inline-flex":["-webkit-inline-box","-moz-inline-box","-ms-inline-flexbox","-webkit-inline-flex","inline-flex"]};function i(i,l){if("display"===i&&e.hasOwnProperty(l))return e[l]}module.exports=exports.default; -},{}],"FRuF":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=s;var e={"space-around":"distribute","space-between":"justify","flex-start":"start","flex-end":"end"},t={alignContent:"msFlexLinePack",alignSelf:"msFlexItemAlign",alignItems:"msFlexAlign",justifyContent:"msFlexPack",order:"msFlexOrder",flexGrow:"msFlexPositive",flexShrink:"msFlexNegative",flexBasis:"msFlexPreferredSize"};function s(s,l,r){t.hasOwnProperty(s)&&(r[t[s]]=e[l]||l)}module.exports=exports.default; -},{}],"bHSr":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var e={"space-around":"justify","space-between":"justify","flex-start":"start","flex-end":"end","wrap-reverse":"multiple",wrap:"multiple"},t={alignItems:"WebkitBoxAlign",justifyContent:"WebkitBoxPack",flexWrap:"WebkitBoxLines"};function i(i,r,o){"flexDirection"===i&&"string"==typeof r&&(r.indexOf("column")>-1?o.WebkitBoxOrient="vertical":o.WebkitBoxOrient="horizontal",r.indexOf("reverse")>-1?o.WebkitBoxDirection="reverse":o.WebkitBoxDirection="normal"),t.hasOwnProperty(i)&&(o[t[i]]=e[r]||r)}module.exports=exports.default; -},{}],"QxYG":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=n;var e=require("css-in-js-utils/lib/isPrefixedValue"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}var i=["-webkit-","-moz-",""],a=/linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/;function n(e,r){if("string"==typeof r&&!(0,t.default)(r)&&a.test(r))return i.map(function(e){return e+r})}module.exports=exports.default; -},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"qrrU":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("css-in-js-utils/lib/isPrefixedValue"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}var i=["-webkit-",""];function u(e,r){if("string"==typeof r&&!(0,t.default)(r)&&r.indexOf("image-set(")>-1)return i.map(function(e){return r.replace(/image-set\(/g,e+"image-set(")})}module.exports=exports.default; -},{"css-in-js-utils/lib/isPrefixedValue":"QXNG"}],"pEQ2":[function(require,module,exports) { -"use strict";function e(e,t){if("position"===e&&"sticky"===t)return["-webkit-sticky","sticky"]}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e,module.exports=exports.default; -},{}],"M0DH":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=i;var t=["-webkit-","-moz-",""],e={maxHeight:!0,maxWidth:!0,width:!0,height:!0,columnWidth:!0,minWidth:!0,minHeight:!0},n={"min-content":!0,"max-content":!0,"fill-available":!0,"fit-content":!0,"contain-floats":!0};function i(i,o){if(e.hasOwnProperty(i)&&n.hasOwnProperty(o))return t.map(function(t){return t+o})}module.exports=exports.default; -},{}],"jNGL":[function(require,module,exports) { -"use strict";var e=/[A-Z]/g,r=/^ms-/,s={};function t(t){return t in s?s[t]:s[t]=t.replace(e,"-$&").toLowerCase().replace(r,"-ms-")}module.exports=t; -},{}],"S6J3":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("hyphenate-style-name"),t=r(e);function r(e){return e&&e.__esModule?e:{default:e}}function u(e){return(0,t.default)(e)}module.exports=exports.default; -},{"hyphenate-style-name":"jNGL"}],"XxlV":[function(require,module,exports) { -"use strict";function e(e){return e.charAt(0).toUpperCase()+e.slice(1)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=e,module.exports=exports.default; -},{}],"cnM4":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=l;var t=require("css-in-js-utils/lib/hyphenateProperty"),e=s(t),r=require("css-in-js-utils/lib/isPrefixedValue"),i=s(r),n=require("../../utils/capitalizeString"),o=s(n);function s(t){return t&&t.__esModule?t:{default:t}}var u={transition:!0,transitionProperty:!0,WebkitTransition:!0,WebkitTransitionProperty:!0,MozTransition:!0,MozTransitionProperty:!0},a={Webkit:"-webkit-",Moz:"-moz-",ms:"-ms-"};function f(t,r){if((0,i.default)(t))return t;for(var n=t.split(/,(?![^()]*(?:\([^()]*\))?\))/g),o=0,s=n.length;o-1&&"order"!==p)for(var d=r[l],c=0,b=d.length;c-1)return s;var a=n.split(/,(?![^()]*(?:\([^()]*\))?\))/g).filter(function(t){return!/-webkit-|-ms-/.test(t)}).join(",");return t.indexOf("Moz")>-1?a:(r["Webkit"+(0,o.default)(t)]=s,r["Moz"+(0,o.default)(t)]=a,n)}}module.exports=exports.default; -},{"css-in-js-utils/lib/hyphenateProperty":"S6J3","css-in-js-utils/lib/isPrefixedValue":"QXNG","../../utils/capitalizeString":"XxlV"}],"ZBgn":[function(require,module,exports) { -"use strict";function r(r){for(var t=5381,e=r.length;e;)t=33*t^r.charCodeAt(--e);return t>>>0}module.exports=r; -},{}],"D2Wi":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=u;var e=require("./capitalizeString"),r=t(e);function t(e){return e&&e.__esModule?e:{default:e}}function u(e,t,u){if(e.hasOwnProperty(t)){for(var o={},a=e[t],n=(0,r.default)(t),f=Object.keys(u),l=0;l0&&(i[s]=d)}else{var x=(0,u.default)(l,s,n,i,t);x&&(i[s]=x),i=(0,r.default)(t,s,i)}}return i}}module.exports=exports.default; -},{"../utils/prefixProperty":"D2Wi","../utils/prefixValue":"qgi9","../utils/addNewValuesOnly":"a80f","../utils/isObject":"ek9P"}],"AARE":[function(require,module,exports) { -var global = arguments[3]; -var e=arguments[3];function t(e){r.length||(n(),a=!0),r[r.length]=e}module.exports=t;var n,r=[],a=!1,o=0,u=1024;function l(){for(;ou){for(var t=0,n=r.length-o;t4&&void 0!==arguments[4]?arguments[4]:[];if(!Q[e]){var o=N(t,r,i,V,n);te(e,o)}},ne=function(){$=[],Q={},ee=!1,Z=null},ie=function(){return $},oe=function(){if(ee)throw new Error("Cannot buffer while already buffering");ee=!0},ae=function(){ee=!1;var e=$;return $=[],e},se=function(){return ae().join("")},ue=function(){var e=ae();e.length>0&&K(e)};exports.flushToStyleTag=ue;var le=function(){return Object.keys(Q)},fe=function(e){e.forEach(function(e){Q[e]=!0})},ce=function e(t,r,n,i){for(var o=0;o0&&void 0!==arguments[0]?arguments[0]:[];fe(e)}}()},ge="undefined"!=typeof window?null:{renderStatic:function(){return function(e){return ne(),oe(),{html:e(),css:{content:se(),renderedClassNames:le()}}}}()},Se=null;function ve(e,t){return{StyleSheet:Object.assign({},he,{extend:function(){return function(r){var n=r.map(function(e){return e.selectorHandler}).filter(function(e){return e});return ve(e,t.concat(n))}}()}),StyleSheetServer:ge,StyleSheetTestUtils:Se,minify:function(){return function(e){me=e?W:pe}}(),css:function(){return function(){for(var r=arguments.length,n=Array(r),i=0;i{const t=s(e.name,this.searchQuery);this.matches.set(e,0===t.length?null:t)})),this.matches.get(e)||null}}exports.ProfileSearchResults=r;class h{constructor(e,t){this.flamechart=e,this.profileResults=t,this.matches=null}getResults(){if(null==this.matches){const e=[],s=new Map,r=(h,a)=>{const{node:c}=h;if(this.profileResults.getMatchForFrame(c.frame)){const r=new t.Rect(new t.Vec2(h.start,a),new t.Vec2(h.end-h.start,1));s.set(c,e.length),e.push({configSpaceBounds:r,node:c})}h.children.forEach(e=>{r(e,a+1)})},h=this.flamechart.getLayers();h.length>0&&h[0].forEach(e=>r(e,0)),this.matches={matches:e,indexForNode:s}}return this.matches}count(){return this.getResults().matches.length}indexOf(e){const t=this.getResults().indexForNode.get(e);return void 0===t?null:t}at(e){const t=this.getResults().matches;if(e<0||e>=t.length)throw new Error(`Index ${e} out of bounds in list of ${t.length} matches.`);return t[e]}}exports.FlamechartSearchResults=h; -},{"./math":"tDuZ"}],"t9CM":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SearchView=exports.ProfileSearchContextProvider=exports.ProfileSearchContext=void 0;var e=require("aphrodite"),t=require("preact"),r=require("preact/hooks"),o=require("preact/compat"),n=require("./style"),s=require("../lib/profile-search"),i=require("../app-state/active-profile-state"),l=require("./themes/theme"),a=require("../app-state"),c=require("../lib/atom");function u(e){e.stopPropagation()}const h=(0,t.createContext)(null);exports.ProfileSearchContext=h;const p=({children:e})=>{const o=(0,i.useActiveProfileState)(),n=o?o.profile:null,l=(0,c.useAtom)(a.searchIsActiveAtom),u=(0,c.useAtom)(a.searchQueryAtom),p=(0,r.useMemo)(()=>n&&l&&0!==u.length?new s.ProfileSearchResults(n,u):null,[l,u,n]);return(0,t.h)(h.Provider,{value:p},e)};exports.ProfileSearchContextProvider=p;const d=(0,o.memo)(({numResults:o,resultIndex:n,selectNext:s,selectPrev:i})=>{const h=(0,l.useTheme)(),p=m(h),d=(0,c.useAtom)(a.searchIsActiveAtom),f=(0,c.useAtom)(a.searchQueryAtom),y=a.searchQueryAtom.set,g=a.searchIsActiveAtom.set,x=(0,r.useCallback)(e=>{const t=e.target.value;y(t)},[y]),b=(0,r.useRef)(null),v=(0,r.useCallback)(()=>g(!1),[g]),C=(0,r.useCallback)(e=>{e.shiftKey?i():s()},[i,s]),S=(0,r.useCallback)(e=>{e.stopPropagation(),"Escape"===e.key&&g(!1),"Enter"===e.key&&C(e),"f"==e.key&&(e.metaKey||e.ctrlKey)&&(b.current&&b.current.select(),e.preventDefault())},[g,C]);return(0,r.useEffect)(()=>{const e=e=>{"f"==e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),b.current?b.current.select():(g(!0),requestAnimationFrame(()=>{b.current&&b.current.select()})))};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[g]),d?(0,t.h)("div",{className:(0,e.css)(p.searchView)},(0,t.h)("span",{className:(0,e.css)(p.icon)},"🔍"),(0,t.h)("span",{className:(0,e.css)(p.inputContainer)},(0,t.h)("input",{className:(0,e.css)(p.input),value:f,onInput:x,onKeyDown:S,onKeyUp:u,onKeyPress:u,ref:b})),null!=o&&(0,t.h)(t.Fragment,null,(0,t.h)("span",{className:(0,e.css)(p.resultCount)},null==n?"?":n+1,"/",o),(0,t.h)("button",{className:(0,e.css)(p.icon,p.button),onClick:i},"⬅️"),(0,t.h)("button",{className:(0,e.css)(p.icon,p.button),onClick:s},"➡️")),(0,t.h)("svg",{className:(0,e.css)(p.icon),onClick:v,width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,t.h)("path",{d:"M4.99999 4.16217L11.6427 10.8048M11.6427 4.16217L4.99999 10.8048",stroke:h.altFgSecondaryColor}))):null});exports.SearchView=d;const m=(0,l.withTheme)(t=>e.StyleSheet.create({searchView:{position:"absolute",top:0,right:10,height:n.Sizes.TOOLBAR_HEIGHT,width:208,borderWidth:2,borderColor:t.altFgPrimaryColor,borderStyle:"solid",fontSize:n.FontSize.LABEL,boxSizing:"border-box",background:t.altBgSecondaryColor,color:t.altFgPrimaryColor,display:"flex",alignItems:"center"},inputContainer:{flexShrink:1,flexGrow:1,display:"flex"},input:{width:"100%",border:"none",background:"none",fontSize:n.FontSize.LABEL,lineHeight:`${n.Sizes.TOOLBAR_HEIGHT}px`,color:t.altFgPrimaryColor,":focus":{border:"none",outline:"none"},"::selection":{color:t.altFgPrimaryColor,background:t.selectionPrimaryColor}},resultCount:{verticalAlign:"middle"},icon:{flexShrink:0,verticalAlign:"middle",height:"100%",margin:"0px 2px 0px 2px",fontSize:n.FontSize.LABEL},button:{display:"inline",background:"none",border:"none",padding:0,":focus":{outline:"none"}}})); -},{"aphrodite":"CxN7","preact":"aSor","preact/hooks":"MwGB","preact/compat":"AQ6k","./style":"hvr4","../lib/profile-search":"DHvC","../app-state/active-profile-state":"MY42","./themes/theme":"gzKG","../app-state":"LDQe","../lib/atom":"QkVE"}],"FbpF":[function(require,module,exports) { -"use strict";function e(e){return e.replace(/\\([a-fA-F0-9]{2})/g,(e,n)=>{const t=parseInt(n,16);return String.fromCharCode(t)})}function n(n){const t=n.split("\n");if(!t.length)return null;if(""===t[t.length-1]&&t.pop(),!t.length)return null;const r=new Map,o=/^(\d+):(.+)$/,s=/^([\$\w]+):([\$\w-]+)$/;for(const u of t){const n=o.exec(u);if(n){r.set(`wasm-function[${n[1]}]`,e(n[2]));continue}const t=s.exec(u);if(!t)return null;r.set(t[1],e(t[2]))}return e=>r.has(e.name)?{name:r.get(e.name)}:null}Object.defineProperty(exports,"__esModule",{value:!0}),exports.importEmscriptenSymbolMap=n; -},{}],"Pua8":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ColorChit=o;var e=require("preact"),t=require("aphrodite"),r=require("./style"),i=require("./themes/theme");function o(r){const o=s((0,i.useTheme)());return(0,e.h)("span",{className:(0,t.css)(o.stackChit),style:{backgroundColor:r.color}})}const s=(0,i.withTheme)(e=>t.StyleSheet.create({stackChit:{position:"relative",top:-1,display:"inline-block",verticalAlign:"middle",marginRight:"0.5em",border:`1px solid ${e.fgSecondaryColor}`,width:r.FontSize.LABEL-2,height:r.FontSize.LABEL-2}})); -},{"preact":"aSor","aphrodite":"CxN7","./style":"hvr4","./themes/theme":"gzKG"}],"SGwe":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ScrollableListView=void 0;var e=require("preact"),t=require("preact/hooks");const r=({items:r,axis:l,renderItems:n,className:i,initialIndexInView:s})=>{const[u,o]=(0,t.useState)(null),[c,a]=(0,t.useState)(0),d=(0,t.useRef)(null),f="x"===l?"width":"height",x="x"===l?"left":"top",b="x"===l?"scrollLeft":"scrollTop",h=s?r.reduce((e,t,r)=>r{e?requestAnimationFrame(()=>{o(e.getBoundingClientRect()[f]),null!=m.current&&(e.scrollTo({[x]:m.current}),m.current=null)}):o(null),d.current=e},[o,f,x]),g=(0,t.useMemo)(()=>{if(null==d.current||null==u||null==c)return null;const e=c-u/4,t=c+u+u/4;let l=0,n=0,i=0;for(;i=e)break}const s=i;for(;i=t)break}return{firstVisibleIndex:s,lastVisibleIndex:Math.min(i,r.length-1),invisiblePrefixSize:n}},[u,c,r]),p=(0,t.useMemo)(()=>r.reduce((e,t)=>e+t.size,0),[r]),w=(0,t.useCallback)(()=>{null!=d.current&&a(d.current[b])},[b]);(0,t.useEffect)(()=>{const e=()=>{null!=d.current&&o(d.current.getBoundingClientRect()[f])};return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}},[f]);const z=(0,t.useMemo)(()=>g?n(g.firstVisibleIndex,g.lastVisibleIndex):null,[n,g]),I=(0,t.useMemo)(()=>(0,e.h)("div",{style:{height:p}},(0,e.h)("div",{style:{transform:`translateY(${(null==g?void 0:g.invisiblePrefixSize)||0}px)`}},z)),[g,z,p]);return(0,e.h)("div",{className:i,ref:v,onScroll:w},I)};exports.ScrollableListView=r; -},{"preact":"aSor","preact/hooks":"MwGB"}],"Ivh5":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ProfileTableViewContainer=exports.ProfileTableView=void 0;var e=require("preact"),t=require("aphrodite"),r=require("../lib/utils"),o=require("./style"),l=require("./color-chit"),i=require("./scrollable-list-view"),a=require("../app-state/getters"),s=require("preact/compat"),c=require("preact/hooks"),n=require("./sandwich-view"),h=require("../lib/color"),d=require("./themes/theme"),m=require("../app-state"),u=require("../lib/atom");function S(r){const o=p((0,d.useTheme)());return(0,e.h)("div",{className:(0,t.css)(o.hBarDisplay)},(0,e.h)("div",{className:(0,t.css)(o.hBarDisplayFilled),style:{width:`${r.perc}%`}}))}function b(r){const o=(0,d.useTheme)(),l=p(o),{activeDirection:i}=r,a=i===m.SortDirection.ASCENDING?o.fgPrimaryColor:o.fgSecondaryColor,s=i===m.SortDirection.DESCENDING?o.fgPrimaryColor:o.fgSecondaryColor;return(0,e.h)("svg",{width:"8",height:"10",viewBox:"0 0 8 10",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:(0,t.css)(l.sortIcon)},(0,e.h)("path",{d:"M0 4L4 0L8 4H0Z",fill:a}),(0,e.h)("path",{d:"M0 4L4 0L8 4H0Z",transform:"translate(0 10) scale(1 -1)",fill:s}))}function g(t,r,o){const l=[];let i=0;for(let a of r)l.push(t.slice(i,a[0])),l.push((0,e.h)("span",{className:o},t.slice(a[0],a[1]))),i=a[1];return l.push(t.slice(i)),(0,e.h)("span",null,l)}const C=({frame:o,matchedRanges:i,profile:a,index:s,selectedFrame:c,setSelectedFrame:n,getCSSColorForFrame:h})=>{const m=p((0,d.useTheme)()),u=o.getTotalWeight(),b=o.getSelfWeight(),C=100*u/a.getTotalNonIdleWeight(),f=100*b/a.getTotalNonIdleWeight(),w=o===c;return(0,e.h)("tr",{key:`${s}`,onClick:n.bind(null,o),className:(0,t.css)(m.tableRow,s%2==0&&m.tableRowEven,w&&m.tableRowSelected)},(0,e.h)("td",{className:(0,t.css)(m.numericCell)},a.formatValue(u)," (",(0,r.formatPercent)(C),")",(0,e.h)(S,{perc:C})),(0,e.h)("td",{className:(0,t.css)(m.numericCell)},a.formatValue(b)," (",(0,r.formatPercent)(f),")",(0,e.h)(S,{perc:f})),(0,e.h)("td",{title:o.file,className:(0,t.css)(m.textCell)},(0,e.h)(l.ColorChit,{color:h(o)}),i?g(o.name,i,(0,t.css)(m.matched,w&&m.matchedSelected)):o.name))},f=(0,s.memo)(({profile:r,sortMethod:l,setSortMethod:a,selectedFrame:s,setSelectedFrame:h,getCSSColorForFrame:u,searchQuery:S,searchIsActive:g})=>{const f=p((0,d.useTheme)()),w=(0,c.useCallback)((e,t)=>{if(t.preventDefault(),l.field==e)a({field:e,direction:l.direction===m.SortDirection.ASCENDING?m.SortDirection.DESCENDING:m.SortDirection.ASCENDING});else switch(e){case m.SortField.SYMBOL_NAME:a({field:e,direction:m.SortDirection.ASCENDING});break;case m.SortField.SELF:case m.SortField.TOTAL:a({field:e,direction:m.SortDirection.DESCENDING})}},[l,a]),F=(0,c.useContext)(n.SandwichViewContext),y=(0,c.useCallback)((o,l)=>{if(!F)return null;const i=[];for(let e=o;e<=l;e++){const t=F.rowList[e],o=F.getSearchMatchForFrame(t);i.push(C({frame:t,matchedRanges:null==o?null:o,index:e,profile:r,selectedFrame:s,setSelectedFrame:h,getCSSColorForFrame:u}))}return 0===i.length&&(g?i.push((0,e.h)("tr",null,(0,e.h)("td",{className:(0,t.css)(f.emptyState)},'No symbol names match query "',S,'".'))):i.push((0,e.h)("tr",null,(0,e.h)("td",{className:(0,t.css)(f.emptyState)},"No symbols found.")))),(0,e.h)("table",{className:(0,t.css)(f.tableView)},i)},[F,r,s,h,u,g,S,f.emptyState,f.tableView]),N=(0,c.useMemo)(()=>null==F?[]:F.rowList.map(e=>({size:o.Sizes.FRAME_HEIGHT})),[F]),E=(0,c.useCallback)(e=>w(m.SortField.TOTAL,e),[w]),A=(0,c.useCallback)(e=>w(m.SortField.SELF,e),[w]),v=(0,c.useCallback)(e=>w(m.SortField.SYMBOL_NAME,e),[w]);return(0,e.h)("div",{className:(0,t.css)(o.commonStyle.vbox,f.profileTableView)},(0,e.h)("table",{className:(0,t.css)(f.tableView)},(0,e.h)("thead",{className:(0,t.css)(f.tableHeader)},(0,e.h)("tr",null,(0,e.h)("th",{className:(0,t.css)(f.numericCell),onClick:E},(0,e.h)(b,{activeDirection:l.field===m.SortField.TOTAL?l.direction:null}),"Total"),(0,e.h)("th",{className:(0,t.css)(f.numericCell),onClick:A},(0,e.h)(b,{activeDirection:l.field===m.SortField.SELF?l.direction:null}),"Self"),(0,e.h)("th",{className:(0,t.css)(f.textCell),onClick:v},(0,e.h)(b,{activeDirection:l.field===m.SortField.SYMBOL_NAME?l.direction:null}),"Symbol Name")))),(0,e.h)(i.ScrollableListView,{axis:"y",items:N,className:(0,t.css)(f.scrollView),renderItems:y,initialIndexInView:null==s?null:null==F?void 0:F.getIndexForFrame(s)}))});exports.ProfileTableView=f;const p=(0,d.withTheme)(e=>t.StyleSheet.create({profileTableView:{background:e.bgPrimaryColor,height:"100%"},scrollView:{overflowY:"auto",overflowX:"hidden",flexGrow:1,"::-webkit-scrollbar":{background:e.bgPrimaryColor},"::-webkit-scrollbar-thumb":{background:e.fgSecondaryColor,borderRadius:20,border:`3px solid ${e.bgPrimaryColor}`,":hover":{background:e.fgPrimaryColor}}},tableView:{width:"100%",fontSize:o.FontSize.LABEL,background:e.bgPrimaryColor},tableHeader:{borderBottom:`2px solid ${e.bgSecondaryColor}`,textAlign:"left",color:e.fgPrimaryColor,userSelect:"none"},sortIcon:{position:"relative",top:1,marginRight:o.Sizes.FRAME_HEIGHT/4},tableRow:{background:e.bgPrimaryColor,height:o.Sizes.FRAME_HEIGHT},tableRowEven:{background:e.bgSecondaryColor},tableRowSelected:{background:e.selectionPrimaryColor,color:e.altFgPrimaryColor},numericCell:{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",position:"relative",textAlign:"right",paddingRight:o.Sizes.FRAME_HEIGHT,width:6*o.Sizes.FRAME_HEIGHT,minWidth:6*o.Sizes.FRAME_HEIGHT},textCell:{textOverflow:"ellipsis",overflow:"hidden",whiteSpace:"nowrap",width:"100%",maxWidth:0},hBarDisplay:{position:"absolute",background:h.Color.fromCSSHex(e.weightColor).withAlpha(.2).toCSS(),bottom:2,height:2,width:`calc(100% - ${2*o.Sizes.FRAME_HEIGHT}px)`,right:o.Sizes.FRAME_HEIGHT},hBarDisplayFilled:{height:"100%",position:"absolute",background:e.weightColor,right:0},matched:{borderBottom:`2px solid ${e.fgPrimaryColor}`},matchedSelected:{borderColor:e.altFgPrimaryColor},emptyState:{textAlign:"center",fontWeight:"bold"}})),w=(0,s.memo)(t=>{const{activeProfileState:r}=t,{profile:o,sandwichViewState:l}=r;if(!o)throw new Error("profile missing");const i=(0,u.useAtom)(m.tableSortMethodAtom),s=(0,d.useTheme)(),{callerCallee:n}=l,h=n?n.selectedFrame:null,S=(0,a.getFrameToColorBucket)(o),b=(0,a.createGetCSSColorForFrame)({theme:s,frameToColorBucket:S}),g=(0,c.useCallback)(e=>{m.profileGroupAtom.setSelectedFrame(e)},[]),C=(0,u.useAtom)(m.searchIsActiveAtom),p=(0,u.useAtom)(m.searchQueryAtom);return(0,e.h)(f,{profile:o,selectedFrame:h,getCSSColorForFrame:b,sortMethod:i,setSelectedFrame:g,setSortMethod:m.tableSortMethodAtom.set,searchIsActive:C,searchQuery:p})});exports.ProfileTableViewContainer=w; -},{"preact":"aSor","aphrodite":"CxN7","../lib/utils":"ucYa","./style":"hvr4","./color-chit":"Pua8","./scrollable-list-view":"SGwe","../app-state/getters":"zEXv","preact/compat":"AQ6k","preact/hooks":"MwGB","./sandwich-view":"L8J2","../lib/color":"x77Y","./themes/theme":"gzKG","../app-state":"LDQe","../lib/atom":"QkVE"}],"gFMr":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Flamechart=void 0;var t=require("./utils"),e=require("./math");class i{getTotalWeight(){return this.totalWeight}getLayers(){return this.layers}getColorBucketForFrame(t){return this.source.getColorBucketForFrame(t)}getMinFrameWidth(){return this.minFrameWidth}formatValue(t){return this.source.formatValue(t)}getClampedViewportWidth(t){const i=this.getTotalWeight(),r=Math.pow(2,40),s=(0,e.clamp)(3*this.getMinFrameWidth(),i/r,i);return(0,e.clamp)(t,s,i)}getClampedConfigSpaceViewportRect({configSpaceViewportRect:t,renderInverted:i}){const r=new e.Vec2(this.getTotalWeight(),this.getLayers().length),s=this.getClampedViewportWidth(t.size.x),h=t.size.withX(s),a=e.Vec2.clamp(t.origin,new e.Vec2(0,i?0:-1),e.Vec2.max(e.Vec2.zero,r.minus(h).plus(new e.Vec2(0,1))));return new e.Rect(a,t.size.withX(s))}constructor(e){this.source=e,this.layers=[],this.totalWeight=0,this.minFrameWidth=1;const i=[];this.minFrameWidth=1/0;this.totalWeight=e.getTotalWeight(),e.forEachCall((e,r)=>{const s=(0,t.lastOf)(i),h={node:e,parent:s,children:[],start:r,end:r};s&&s.children.push(h),i.push(h)},(t,e)=>{console.assert(i.length>0);const r=i.pop();if(r.end=e,r.end-r.start==0)return;const s=i.length;for(;this.layers.length<=s;)this.layers.push([]);this.layers[s].push(r),this.minFrameWidth=Math.min(this.minFrameWidth,r.end-r.start)}),isFinite(this.minFrameWidth)||(this.minFrameWidth=1)}}exports.Flamechart=i; -},{"./utils":"ucYa","./math":"tDuZ"}],"P80v":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartRenderer=exports.FlamechartRowAtlasKey=void 0;var e=require("./rectangle-batch-renderer"),t=require("../lib/math"),r=require("../lib/color"),n=require("../lib/utils"),s=require("./graphics"),o=require("./utils");const c=1e4;class i{constructor(e,t,r){this.batch=e,this.bounds=t,this.numPrecedingRectanglesInRow=r,this.children=[]}getBatch(){return this.batch}getBounds(){return this.bounds}getRectCount(){return this.batch.getRectCount()}getChildren(){return this.children}getParity(){return this.numPrecedingRectanglesInRow%2}forEachLeafNodeWithinBounds(e,t){this.bounds.hasIntersectionWith(e)&&t(this)}}class h{constructor(e){if(this.children=e,this.rectCount=0,0===e.length)throw new Error("Empty interior node");let r=1/0,n=-1/0,s=1/0,o=-1/0;for(let t of e){this.rectCount+=t.getRectCount();const e=t.getBounds();r=Math.min(r,e.left()),n=Math.max(n,e.right()),s=Math.min(s,e.top()),o=Math.max(o,e.bottom())}this.bounds=new t.Rect(new t.Vec2(r,s),new t.Vec2(n-r,o-s))}getBounds(){return this.bounds}getRectCount(){return this.rectCount}getChildren(){return this.children}forEachLeafNodeWithinBounds(e,t){if(this.bounds.hasIntersectionWith(e))for(let r of this.children)r.forEachLeafNodeWithinBounds(e,t)}}class a{get key(){return`${this.stackDepth}_${this.index}_${this.zoomLevel}`}constructor(e){this.stackDepth=e.stackDepth,this.zoomLevel=e.zoomLevel,this.index=e.index}static getOrInsert(e,t){return e.getOrInsert(new a(t))}}exports.FlamechartRowAtlasKey=a;class l{constructor(s,o,a,l,g,d={inverted:!1}){this.gl=s,this.rowAtlas=o,this.flamechart=a,this.rectangleBatchRenderer=l,this.colorPassRenderer=g,this.options=d,this.layers=[],this.rectInfoTexture=null,this.rectInfoRenderTarget=null,this.atlasKeys=new n.KeyedSet;const f=a.getLayers().length;for(let n=0;n=c&&(s.push(new i(u,new t.Rect(new t.Vec2(l,o),new t.Vec2(g-l,1)),R)),l=1/0,g=-1/0,u=new e.RectangleBatch(this.gl));const d=new t.Rect(new t.Vec2(a.start,o),new t.Vec2(a.end-a.start,1));l=Math.min(l,d.left()),g=Math.max(g,d.right());const f=new r.Color((1+h%255)/256,(1+n%255)/256,(1+this.flamechart.getColorBucketForFrame(a.node.frame))/256);u.addRect(d,f),R++}u.getRectCount()>0&&s.push(new i(u,new t.Rect(new t.Vec2(l,o),new t.Vec2(g-l,1)),R)),this.layers.push(new h(s))}}getRectInfoTexture(e,t){if(this.rectInfoTexture){const r=this.rectInfoTexture;r.width==e&&r.height==t||r.resize(e,t)}else this.rectInfoTexture=this.gl.createTexture(s.Graphics.TextureFormat.NEAREST_CLAMP,e,t);return this.rectInfoTexture}getRectInfoRenderTarget(e,t){const r=this.getRectInfoTexture(e,t);return this.rectInfoRenderTarget&&this.rectInfoRenderTarget.texture!=r&&(this.rectInfoRenderTarget.texture.free(),this.rectInfoRenderTarget.setColor(r)),this.rectInfoRenderTarget||(this.rectInfoRenderTarget=this.gl.createRenderTarget(r)),this.rectInfoRenderTarget}free(){this.rectInfoRenderTarget&&this.rectInfoRenderTarget.free(),this.rectInfoTexture&&this.rectInfoTexture.free()}configSpaceBoundsForKey(e){const{stackDepth:r,zoomLevel:n,index:s}=e,o=this.flamechart.getTotalWeight()/Math.pow(2,n),c=this.flamechart.getLayers().length,i=this.options.inverted?c-1-r:r;return new t.Rect(new t.Vec2(o*s,i),new t.Vec2(o,1))}render(e){const{configSpaceSrcRect:r,physicalSpaceDstRect:n}=e,c=[],i=t.AffineTransform.betweenRects(r,n);if(r.isEmpty())return;let h=0;for(;;){const e=a.getOrInsert(this.atlasKeys,{stackDepth:0,zoomLevel:h,index:0}),t=this.configSpaceBoundsForKey(e);if(i.transformRect(t).width(){const r=this.configSpaceBoundsForKey(t);this.layers[t.stackDepth].forEachLeafNodeWithinBounds(r,t=>{this.rectangleBatchRenderer.render({batch:t.getBatch(),configSpaceSrcRect:r,physicalSpaceDstRect:e})})});const T=this.getRectInfoRenderTarget(n.width(),n.height());(0,o.renderInto)(this.gl,T,()=>{this.gl.clear(new s.Graphics.Color(0,0,0,0));const e=new t.Rect(t.Vec2.zero,new t.Vec2(this.gl.viewport.width,this.gl.viewport.height)),n=t.AffineTransform.betweenRects(r,e);for(let t of m){const e=this.configSpaceBoundsForKey(t);this.rowAtlas.renderViaAtlas(t,n.transformRect(e))}for(let t of I){const e=this.configSpaceBoundsForKey(t),r=n.transformRect(e);this.layers[t.stackDepth].forEachLeafNodeWithinBounds(e,t=>{this.rectangleBatchRenderer.render({batch:t.getBatch(),configSpaceSrcRect:e,physicalSpaceDstRect:r})})}});const x=this.getRectInfoTexture(n.width(),n.height());this.colorPassRenderer.render({rectInfoTexture:x,srcRect:new t.Rect(t.Vec2.zero,new t.Vec2(x.width,x.height)),dstRect:n,renderOutlines:e.renderOutlines})}}exports.FlamechartRenderer=l; -},{"./rectangle-batch-renderer":"UGJH","../lib/math":"tDuZ","../lib/color":"x77Y","../lib/utils":"ucYa","./graphics":"XGYN","./utils":"MMP6"}],"jZ6t":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFlamechartStyle=void 0;var e=require("aphrodite"),o=require("./style"),r=require("./themes/theme");const t=(0,r.withTheme)(r=>e.StyleSheet.create({hoverCount:{color:r.weightColor},fill:{width:"100%",height:"100%",position:"absolute",left:0,top:0},minimap:{height:o.Sizes.MINIMAP_HEIGHT,borderBottom:`${o.Sizes.SEPARATOR_HEIGHT}px solid ${r.fgSecondaryColor}`},panZoomView:{flex:1},detailView:{display:"grid",height:o.Sizes.DETAIL_VIEW_HEIGHT,overflow:"hidden",gridTemplateColumns:"120px 120px 1fr",gridTemplateRows:"repeat(4, 1fr)",borderTop:`${o.Sizes.SEPARATOR_HEIGHT}px solid ${r.fgSecondaryColor}`,fontSize:o.FontSize.LABEL,position:"absolute",background:r.bgPrimaryColor,width:"100vw",bottom:0},stackTraceViewPadding:{padding:5},stackTraceView:{height:o.Sizes.DETAIL_VIEW_HEIGHT,lineHeight:`${o.FontSize.LABEL+2}px`,overflow:"auto","::-webkit-scrollbar":{background:r.bgPrimaryColor},"::-webkit-scrollbar-thumb":{background:r.fgSecondaryColor,borderRadius:20,border:`3px solid ${r.bgPrimaryColor}`,":hover":{background:r.fgPrimaryColor}}},stackLine:{whiteSpace:"nowrap"},stackFileLine:{color:r.fgSecondaryColor},statsTable:{display:"grid",gridTemplateColumns:"1fr 1fr",gridTemplateRows:`repeat(3, ${o.FontSize.LABEL+10}px)`,gridGap:"1px 1px",textAlign:"center",paddingRight:1},statsTableHeader:{gridColumn:"1 / 3"},statsTableCell:{position:"relative",display:"flex",justifyContent:"center",alignItems:"center"},thisInstanceCell:{background:r.selectionPrimaryColor,color:r.altFgPrimaryColor},allInstancesCell:{background:r.selectionSecondaryColor,color:r.altFgPrimaryColor},barDisplay:{position:"absolute",top:0,left:0,background:"rgba(0, 0, 0, 0.2)",width:"100%"}}));exports.getFlamechartStyle=t; -},{"aphrodite":"CxN7","./style":"hvr4","./themes/theme":"gzKG"}],"eeWS":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.cachedMeasureTextWidth=i,exports.buildTrimmedText=s,exports.trimTextMid=h,exports.remapRangesToTrimmedText=o,exports.ELLIPSIS=void 0;var e=require("./utils");const t="…";exports.ELLIPSIS=t;const n=new Map;let r=-1;function i(e,t){return window.devicePixelRatio!==r&&(n.clear(),r=window.devicePixelRatio),n.has(t)||n.set(t,e.measureText(t).width),n.get(t)}function s(e,n){if(e.length<=n)return{trimmedString:e,trimmedLength:e.length,prefixLength:e.length,suffixLength:0,originalString:e,originalLength:e.length};let r=Math.floor(n/2);const i=n-r-1,s=e.substring(0,r),h=e.substring(e.length-i,e.length),g=s+t+h;return{trimmedString:g,trimmedLength:g.length,prefixLength:s.length,suffixLength:h.length,originalString:e,originalLength:e.length}}function h(t,n,r){if(i(t,n)<=r)return s(n,n.length);const[h]=(0,e.findValueBisect)(0,n.length,e=>i(t,s(n,Math.floor(e)).trimmedString),r);return s(n,Math.floor(h))}var g;function a(e,t){return t{this.container=e||null}),this.overlayCanvas=null,this.overlayCtx=null,this.onWindowResize=(()=>{this.onBeforeFrame()}),this.onBeforeFrame=(()=>{this.maybeClearInteractionLock(),this.resizeOverlayCanvasIfNeeded(),this.renderRects(),this.renderOverlays()}),this.renderCanvas=(()=>{this.props.canvasContext.requestFrame()}),this.frameHadWheelEvent=!1,this.framesWithoutWheelEvents=0,this.interactionLock=null,this.maybeClearInteractionLock=(()=>{this.interactionLock&&(this.frameHadWheelEvent||(this.framesWithoutWheelEvents++,this.framesWithoutWheelEvents>=2&&(this.interactionLock=null,this.framesWithoutWheelEvents=0)),this.props.canvasContext.requestFrame()),this.frameHadWheelEvent=!1}),this.onWheel=(e=>{if(e.preventDefault(),this.frameHadWheelEvent=!0,(e.metaKey||e.ctrlKey)&&"pan"!==this.interactionLock){let t=1+e.deltaY/100;e.ctrlKey&&(t=1+e.deltaY/40),t=(0,o.clamp)(t,.1,10),this.zoom(t)}else"zoom"!==this.interactionLock&&this.pan(new o.Vec2(e.deltaX,e.deltaY));this.renderCanvas()}),this.dragStartConfigSpaceMouse=null,this.dragConfigSpaceViewportOffset=null,this.draggingMode=null,this.onMouseDown=(t=>{const i=this.configSpaceMouse(t);i&&(this.props.configSpaceViewportRect.contains(i)?(this.draggingMode=e.TRANSLATE_VIEWPORT,this.dragConfigSpaceViewportOffset=i.minus(this.props.configSpaceViewportRect.origin)):this.draggingMode=e.DRAW_NEW_VIEWPORT,this.dragStartConfigSpaceMouse=i,window.addEventListener("mousemove",this.onWindowMouseMove),window.addEventListener("mouseup",this.onWindowMouseUp),this.updateCursor(i))}),this.onWindowMouseMove=(t=>{if(!this.dragStartConfigSpaceMouse)return;let i=this.configSpaceMouse(t);if(i)if(this.updateCursor(i),i=new o.Rect(new o.Vec2(0,0),this.configSpaceSize()).closestPointTo(i),this.draggingMode===e.DRAW_NEW_VIEWPORT){const e=this.dragStartConfigSpaceMouse;let t=i;if(!e||!t)return;const s=Math.min(e.x,t.x),n=Math.max(e.x,t.x)-s,r=this.props.configSpaceViewportRect.height();this.props.setConfigSpaceViewportRect(new o.Rect(new o.Vec2(s,t.y-r/2),new o.Vec2(n,r)))}else if(this.draggingMode===e.TRANSLATE_VIEWPORT){if(!this.dragConfigSpaceViewportOffset)return;const e=i.minus(this.dragConfigSpaceViewportOffset);this.props.setConfigSpaceViewportRect(this.props.configSpaceViewportRect.withOrigin(e))}}),this.updateCursor=(t=>{this.draggingMode===e.TRANSLATE_VIEWPORT?(document.body.style.cursor="grabbing",document.body.style.cursor="-webkit-grabbing"):this.draggingMode===e.DRAW_NEW_VIEWPORT?document.body.style.cursor="col-resize":this.props.configSpaceViewportRect.contains(t)?(document.body.style.cursor="grab",document.body.style.cursor="-webkit-grab"):document.body.style.cursor="col-resize"}),this.onMouseLeave=(()=>{null==this.draggingMode&&(document.body.style.cursor="default")}),this.onMouseMove=(e=>{const t=this.configSpaceMouse(e);t&&this.updateCursor(t)}),this.onWindowMouseUp=(e=>{this.draggingMode=null,window.removeEventListener("mousemove",this.onWindowMouseMove),window.removeEventListener("mouseup",this.onWindowMouseUp);const t=this.configSpaceMouse(e);t&&this.updateCursor(t)}),this.overlayCanvasRef=(e=>{e?(this.overlayCanvas=e,this.overlayCtx=this.overlayCanvas.getContext("2d"),this.renderCanvas()):(this.overlayCanvas=null,this.overlayCtx=null)})}physicalViewSize(){return new o.Vec2(this.overlayCanvas?this.overlayCanvas.width:0,this.overlayCanvas?this.overlayCanvas.height:0)}getStyle(){return(0,s.getFlamechartStyle)(this.props.theme)}minimapOrigin(){return new o.Vec2(0,n.Sizes.FRAME_HEIGHT*window.devicePixelRatio)}configSpaceSize(){return new o.Vec2(this.props.flamechart.getTotalWeight(),this.props.flamechart.getLayers().length)}configSpaceToPhysicalViewSpace(){const e=this.minimapOrigin();return o.AffineTransform.betweenRects(new o.Rect(new o.Vec2(0,0),this.configSpaceSize()),new o.Rect(e,this.physicalViewSize().minus(e)))}logicalToPhysicalViewSpace(){return o.AffineTransform.withScale(new o.Vec2(window.devicePixelRatio,window.devicePixelRatio))}windowToLogicalViewSpace(){if(!this.container)return new o.AffineTransform;const e=this.container.getBoundingClientRect();return o.AffineTransform.withTranslation(new o.Vec2(-e.left,-e.top))}renderRects(){this.container&&(this.physicalViewSize().x<2||this.props.canvasContext.renderBehind(this.container,()=>{this.props.flamechartRenderer.render({configSpaceSrcRect:new o.Rect(new o.Vec2(0,0),this.configSpaceSize()),physicalSpaceDstRect:new o.Rect(this.minimapOrigin(),this.physicalViewSize().minus(this.minimapOrigin())),renderOutlines:!1}),this.props.canvasContext.viewportRectangleRenderer.render({configSpaceViewportRect:this.props.configSpaceViewportRect,configSpaceToPhysicalViewSpace:this.configSpaceToPhysicalViewSpace()})}))}renderOverlays(){const e=this.overlayCtx;if(!e)return;const t=this.physicalViewSize();e.clearRect(0,0,t.x,t.y);const i=this.configSpaceToPhysicalViewSpace(),s=this.configSpaceSize().x,c=(this.configSpaceToPhysicalViewSpace().inverted()||new o.AffineTransform).times(this.logicalToPhysicalViewSpace()).transformVector(new o.Vec2(200,1)).x,h=n.Sizes.FRAME_HEIGHT*window.devicePixelRatio,l=n.FontSize.LABEL*window.devicePixelRatio,p=(h-l)/2;e.font=`${l}px/${h}px ${n.FontFamily.MONOSPACE}`,e.textBaseline="top";let d=Math.pow(10,Math.floor(Math.log10(c)));c/d>5?d*=5:c/d>2&&(d*=2);const f=this.props.theme;e.fillStyle=a.Color.fromCSSHex(f.bgPrimaryColor).withAlpha(.8).toCSS(),e.fillRect(0,0,t.x,h),e.textBaseline="top";for(let n=Math.ceil(0/d)*d;n ")),t.push(c.name),c.file){let s=c.file;null!=c.line&&(s+=`:${c.line}`,null!=c.col&&(s+=`:${c.col}`)),t.push((0,l.h)("span",{className:(0,e.css)(r.stackFileLine)}," (",s,")"))}i.push((0,l.h)("div",{className:(0,e.css)(r.stackLine)},t))}return(0,l.h)("div",{className:(0,e.css)(r.stackTraceView)},(0,l.h)("div",{className:(0,e.css)(r.stackTraceViewPadding)},i))}function o(s){const a=(0,t.getFlamechartStyle)((0,c.useTheme)()),{flamechart:o,selectedNode:h}=s,{frame:n}=h;return(0,l.h)("div",{className:(0,e.css)(a.detailView)},(0,l.h)(r,{title:"This Instance",cellStyle:a.thisInstanceCell,grandTotal:o.getTotalWeight(),selectedTotal:h.getTotalWeight(),selectedSelf:h.getSelfWeight(),formatter:o.formatValue.bind(o)}),(0,l.h)(r,{title:"All Instances",cellStyle:a.allInstancesCell,grandTotal:o.getTotalWeight(),selectedTotal:n.getTotalWeight(),selectedSelf:n.getSelfWeight(),formatter:o.formatValue.bind(o)}),(0,l.h)(i,{node:h,getFrameColor:s.getCSSColorForFrame}))} -},{"aphrodite":"CxN7","preact":"aSor","./flamechart-style":"jZ6t","../lib/utils":"ucYa","./color-chit":"Pua8","./themes/theme":"gzKG"}],"e6nh":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.BatchCanvasRectRenderer=exports.BatchCanvasTextRenderer=void 0;class t{constructor(){this.argsBatch=[]}text(t){this.argsBatch.push(t)}fill(t,e){if(0!==this.argsBatch.length){t.fillStyle=e;for(let e of this.argsBatch)t.fillText(e.text,e.x,e.y);this.argsBatch=[]}}}exports.BatchCanvasTextRenderer=t;class e{constructor(){this.argsBatch=[]}rect(t){this.argsBatch.push(t)}drawPath(t){t.beginPath();for(let e of this.argsBatch)t.rect(e.x,e.y,e.w,e.h);t.closePath(),this.argsBatch=[]}fill(t,e){0!==this.argsBatch.length&&(t.fillStyle=e,this.drawPath(t),t.fill())}stroke(t,e,s){0!==this.argsBatch.length&&(t.strokeStyle=e,t.lineWidth=s,this.drawPath(t),t.stroke())}}exports.BatchCanvasRectRenderer=e; -},{}],"e7Fh":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartPanZoomView=void 0;var e=require("../lib/math"),t=require("./style"),i=require("../lib/text-utils"),o=require("./flamechart-style"),s=require("preact"),r=require("aphrodite"),n=require("../lib/canvas-2d-batch-renderers"),a=require("../lib/color");class h extends s.Component{constructor(){super(...arguments),this.container=null,this.containerRef=(e=>{this.container=e||null}),this.overlayCanvas=null,this.overlayCtx=null,this.hoveredLabel=null,this.overlayCanvasRef=(e=>{e?(this.overlayCanvas=e,this.overlayCtx=this.overlayCanvas.getContext("2d"),this.renderCanvas()):(this.overlayCanvas=null,this.overlayCtx=null)}),this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT=t.Sizes.FRAME_HEIGHT,this.onWindowResize=(()=>{this.updateConfigSpaceViewport(),this.onBeforeFrame()}),this.frameHadWheelEvent=!1,this.framesWithoutWheelEvents=0,this.interactionLock=null,this.maybeClearInteractionLock=(()=>{this.interactionLock&&(this.frameHadWheelEvent||(this.framesWithoutWheelEvents++,this.framesWithoutWheelEvents>=2&&(this.interactionLock=null,this.framesWithoutWheelEvents=0)),this.props.canvasContext.requestFrame()),this.frameHadWheelEvent=!1}),this.onBeforeFrame=(()=>{this.resizeOverlayCanvasIfNeeded(),this.renderRects(),this.renderOverlays(),this.maybeClearInteractionLock()}),this.renderCanvas=(()=>{this.props.canvasContext.requestFrame()}),this.lastDragPos=null,this.mouseDownPos=null,this.onMouseDown=(t=>{this.mouseDownPos=this.lastDragPos=new e.Vec2(t.offsetX,t.offsetY),this.updateCursor(),window.addEventListener("mouseup",this.onWindowMouseUp)}),this.onMouseDrag=(t=>{if(!this.lastDragPos)return;const i=new e.Vec2(t.offsetX,t.offsetY);this.pan(this.lastDragPos.minus(i)),this.lastDragPos=i,this.hoveredLabel&&this.props.onNodeHover(null)}),this.onDblClick=(t=>{if(this.hoveredLabel){const t=this.hoveredLabel.configSpaceBounds,i=new e.Rect(t.origin.minus(new e.Vec2(0,1)),t.size.withY(this.props.configSpaceViewportRect.height()));this.props.setConfigSpaceViewportRect(i)}}),this.onClick=(t=>{const i=new e.Vec2(t.offsetX,t.offsetY),o=this.mouseDownPos;this.mouseDownPos=null,o&&i.minus(o).length()>5||(this.hoveredLabel?(this.props.onNodeSelect(this.hoveredLabel.node),this.renderCanvas()):this.props.onNodeSelect(null))}),this.onWindowMouseUp=(e=>{this.lastDragPos=null,this.updateCursor(),window.removeEventListener("mouseup",this.onWindowMouseUp)}),this.onMouseMove=(t=>{if(this.updateCursor(),this.lastDragPos)return t.preventDefault(),void this.onMouseDrag(t);const i=new e.Vec2(t.offsetX,t.offsetY),o=this.logicalToPhysicalViewSpace().transformPosition(i),s=this.configSpaceToPhysicalViewSpace().inverseTransformPosition(o);if(!s)return;const r=(t,i=0)=>{const o=t.end-t.start,n=this.props.renderInverted?this.configSpaceSize().y-1-i:i,a=new e.Rect(new e.Vec2(t.start,n),new e.Vec2(o,1));if(s.xa.right())return null;a.contains(s)&&(this.hoveredLabel={configSpaceBounds:a,node:t.node});for(let e of t.children)r(e,i+1)};(()=>{this.hoveredLabel=null})();for(let e of this.props.flamechart.getLayers()[0]||[])r(e);this.hoveredLabel?this.props.onNodeHover({node:this.hoveredLabel.node,event:t}):this.props.onNodeHover(null),this.renderCanvas()}),this.onMouseLeave=(e=>{this.hoveredLabel=null,this.props.onNodeHover(null),this.renderCanvas()}),this.onWheel=(t=>{t.preventDefault(),this.frameHadWheelEvent=!0;const i=t.metaKey||t.ctrlKey;let o=t.deltaY,s=t.deltaX;if(t.deltaMode===t.DOM_DELTA_LINE&&(o*=this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT,s*=this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT),i&&"pan"!==this.interactionLock){let i=1+o/100;t.ctrlKey&&(i=1+o/40),i=(0,e.clamp)(i,.1,10),this.zoom(new e.Vec2(t.offsetX,t.offsetY),i)}else"zoom"!==this.interactionLock&&this.pan(new e.Vec2(s,o));this.renderCanvas()}),this.onWindowKeyPress=(t=>{if(!this.container)return;const{width:i,height:o}=this.container.getBoundingClientRect();"="===t.key||"+"===t.key?(this.zoom(new e.Vec2(i/2,o/2),.5),t.preventDefault()):"-"!==t.key&&"_"!==t.key||(this.zoom(new e.Vec2(i/2,o/2),2),t.preventDefault()),t.ctrlKey||t.shiftKey||t.metaKey||("0"===t.key?this.zoom(new e.Vec2(i/2,o/2),1e9):"ArrowRight"===t.key||"KeyD"===t.code?this.pan(new e.Vec2(100,0)):"ArrowLeft"===t.key||"KeyA"===t.code?this.pan(new e.Vec2(-100,0)):"ArrowUp"===t.key||"KeyW"===t.code?this.pan(new e.Vec2(0,-100)):"ArrowDown"===t.key||"KeyS"===t.code?this.pan(new e.Vec2(0,100)):"Escape"===t.key&&(this.props.onNodeSelect(null),this.renderCanvas()))})}getStyle(){return(0,o.getFlamechartStyle)(this.props.theme)}setConfigSpaceViewportRect(e){this.props.setConfigSpaceViewportRect(e)}configSpaceSize(){return new e.Vec2(this.props.flamechart.getTotalWeight(),this.props.flamechart.getLayers().length)}physicalViewSize(){return new e.Vec2(this.overlayCanvas?this.overlayCanvas.width:0,this.overlayCanvas?this.overlayCanvas.height:0)}physicalBounds(){if(this.props.renderInverted){const t=this.physicalViewSize().y,i=(this.configSpaceSize().y+1)*this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT*window.devicePixelRatio;if(i{var u;const v=t.end-t.start,m=this.props.renderInverted?this.configSpaceSize().y-1-n:n,g=new e.Rect(new e.Vec2(t.start,m),new e.Vec2(v,1));if(!(vthis.props.configSpaceViewportRect.right()||g.right()this.props.configSpaceViewportRect.bottom())return;if(g.hasIntersectionWith(this.props.configSpaceViewportRect)){let e=s.transformRect(g);if(e.left()<0&&(e=e.withOrigin(e.origin.withX(0)).withSize(e.size.withX(e.size.x+e.left()))),e.right()>h.x&&(e=e.withSize(e.size.withX(h.x-e.left()))),e.width()>c){const s=null===(u=this.props.searchResults)||void 0===u?void 0:u.getMatchForFrame(t.node.frame),n=(0,i.trimTextMid)(o,t.node.frame.name,e.width()-2*p);if(s){const t=(0,i.remapRangesToTrimmedText)(n,s);let h=0,c=e.left()+p;const l=(a-r)/2-2;for(let[s,r]of t){c+=(0,i.cachedMeasureTextWidth)(o,n.trimmedString.substring(h,s));const t=(0,i.cachedMeasureTextWidth)(o,n.trimmedString.substring(s,r));w.rect({x:c,y:e.top()+l,w:t,h:a-2*l}),c+=t,h=r}}(null==this.props.searchResults||s?d:f).text({text:n.trimmedString,x:e.left()+p,y:Math.round(e.bottom()-(a-r)/2)})}}for(let e of t.children)y(e,n+1)}},g=2*window.devicePixelRatio;o.strokeStyle=this.props.theme.selectionSecondaryColor;const S=(s.inverseTransformVector(new e.Vec2(1,0))||new e.Vec2(0,0)).x,C=(t,i=0)=>{var o;if(!this.props.selectedNode&&null==this.props.searchResults)return;const r=t.end-t.start,n=this.props.renderInverted?this.configSpaceSize().y-1-i:i,a=new e.Rect(new e.Vec2(t.start,n),new e.Vec2(r,1));if(!(rthis.props.configSpaceViewportRect.right()||a.right()this.props.configSpaceViewportRect.bottom())){if(a.hasIntersectionWith(this.props.configSpaceViewportRect)){if(null===(o=this.props.searchResults)||void 0===o?void 0:o.getMatchForFrame(t.node.frame)){const e=s.transformRect(a);m.rect({x:Math.round(e.left()+g/2),y:Math.round(e.top()+g/2),w:Math.round(Math.max(0,e.width()-g)),h:Math.round(Math.max(0,e.height()-g))})}if(null!=this.props.selectedNode&&t.node.frame===this.props.selectedNode.frame){let e=t.node===this.props.selectedNode?u:v;const i=s.transformRect(a);e.rect({x:Math.round(i.left()+1+g/2),y:Math.round(i.top()+1+g/2),w:Math.round(Math.max(0,i.width()-2-g)),h:Math.round(Math.max(0,i.height()-2-g))})}}for(let e of t.children)C(e,i+1)}};for(let e of this.props.flamechart.getLayers()[0]||[])C(e);for(let e of this.props.flamechart.getLayers()[0]||[])y(e);const V=this.props.theme;if(m.fill(o,V.searchMatchPrimaryColor),w.fill(o,V.searchMatchSecondaryColor),f.fill(o,V.fgSecondaryColor),d.fill(o,null!=this.props.searchResults?V.searchMatchTextColor:V.fgPrimaryColor),v.stroke(o,V.selectionSecondaryColor,g),u.stroke(o,V.selectionPrimaryColor,g),this.hoveredLabel){let e=V.fgPrimaryColor;this.props.selectedNode===this.hoveredLabel.node&&(e=V.selectionPrimaryColor),o.lineWidth=2*devicePixelRatio,o.strokeStyle=e;const t=s.transformRect(this.hoveredLabel.configSpaceBounds);o.strokeRect(Math.round(t.left()),Math.round(t.top()),Math.round(Math.max(0,t.width())),Math.round(Math.max(0,t.height())))}this.renderTimeIndicators()}renderTimeIndicators(){const o=this.overlayCtx;if(!o)return;const s=this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT*window.devicePixelRatio,r=this.physicalViewSize(),n=this.configSpaceToPhysicalViewSpace(),h=(s-t.FontSize.LABEL*window.devicePixelRatio)/2,c=this.props.configSpaceViewportRect.left(),l=this.props.configSpaceViewportRect.right(),p=(this.configSpaceToPhysicalViewSpace().inverted()||new e.AffineTransform).times(this.logicalToPhysicalViewSpace()).transformVector(new e.Vec2(200,1)).x;let d=Math.pow(10,Math.floor(Math.log10(p)));p/d>5?d*=5:p/d>2&&(d*=2);const f=this.props.theme;{const t=this.props.renderInverted?r.y-s:0;o.fillStyle=a.Color.fromCSSHex(f.bgPrimaryColor).withAlpha(.8).toCSS(),o.fillRect(0,t,r.x,s),o.textBaseline="top";for(let s=Math.ceil(c/d)*d;s{this.props.flamechartRenderer.render({physicalSpaceDstRect:this.physicalBounds(),configSpaceSrcRect:this.props.configSpaceViewportRect,renderOutlines:!0})}))}pan(t){this.interactionLock="pan";const i=this.logicalToPhysicalViewSpace().transformVector(t),o=this.configSpaceToPhysicalViewSpace().inverseTransformVector(i);this.hoveredLabel&&this.props.onNodeHover(null),o&&this.props.transformViewport(e.AffineTransform.withTranslation(o))}zoom(t,i){this.interactionLock="zoom";const o=this.logicalToPhysicalViewSpace().transformPosition(t),s=this.configSpaceToPhysicalViewSpace().inverseTransformPosition(o);if(!s)return;const r=e.AffineTransform.withTranslation(s.times(-1)).scaledBy(new e.Vec2(i,1)).translatedBy(s);this.props.transformViewport(r)}updateCursor(){this.lastDragPos?(document.body.style.cursor="grabbing",document.body.style.cursor="-webkit-grabbing"):document.body.style.cursor="default"}shouldComponentUpdate(){return!1}componentWillReceiveProps(e){this.props.flamechart!==e.flamechart?(this.hoveredLabel=null,this.renderCanvas()):this.props.searchResults!==e.searchResults?this.renderCanvas():this.props.selectedNode!==e.selectedNode?this.renderCanvas():this.props.configSpaceViewportRect!==e.configSpaceViewportRect?this.renderCanvas():this.props.canvasContext!==e.canvasContext&&(this.props.canvasContext&&this.props.canvasContext.removeBeforeFrameHandler(this.onBeforeFrame),e.canvasContext&&(e.canvasContext.addBeforeFrameHandler(this.onBeforeFrame),e.canvasContext.requestFrame()))}componentDidMount(){this.props.canvasContext.addBeforeFrameHandler(this.onBeforeFrame),window.addEventListener("resize",this.onWindowResize),window.addEventListener("keydown",this.onWindowKeyPress)}componentWillUnmount(){this.props.canvasContext.removeBeforeFrameHandler(this.onBeforeFrame),window.removeEventListener("resize",this.onWindowResize),window.removeEventListener("keydown",this.onWindowKeyPress)}render(){const e=this.getStyle();return(0,s.h)("div",{className:(0,r.css)(e.panZoomView,t.commonStyle.vbox),onMouseDown:this.onMouseDown,onMouseMove:this.onMouseMove,onMouseLeave:this.onMouseLeave,onClick:this.onClick,onDblClick:this.onDblClick,onWheel:this.onWheel,ref:this.containerRef},(0,s.h)("canvas",{width:1,height:1,ref:this.overlayCanvasRef,className:(0,r.css)(e.fill)}))}}exports.FlamechartPanZoomView=h; -},{"../lib/math":"tDuZ","./style":"hvr4","../lib/text-utils":"eeWS","./flamechart-style":"jZ6t","preact":"aSor","aphrodite":"CxN7","../lib/canvas-2d-batch-renderers":"e6nh","../lib/color":"x77Y"}],"PGRN":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Hovertip=n;var e=require("./style"),t=require("aphrodite"),i=require("preact"),o=require("./themes/theme"),r=require("preact/hooks");function n(e){const n=a((0,o.useTheme)()),{containerSize:s,offset:d}=e,h=s.x,l=s.y,p=(0,r.useCallback)(e=>{if(!e)return;const t=e.getBoundingClientRect();let i=d.x+7;i+t.width>h-1&&(i=h-t.width-1)<1&&(i=1),e.style.left=`${i}px`;let o=d.y+7;o+t.height>l-1&&(o=d.y-t.height-1)<1&&(o=1),e.style.top=`${o}px`},[h,l,d.x,d.y]);return(0,i.h)("div",{className:(0,t.css)(n.hoverTip),ref:p},(0,i.h)("div",{className:(0,t.css)(n.hoverTipRow)},e.children))}const s=2,a=(0,o.withTheme)(i=>t.StyleSheet.create({hoverTip:{position:"absolute",background:i.bgPrimaryColor,border:"1px solid black",maxWidth:e.Sizes.TOOLTIP_WIDTH_MAX,paddingTop:2,paddingBottom:2,pointerEvents:"none",userSelect:"none",fontSize:e.FontSize.LABEL,fontFamily:e.FontFamily.MONOSPACE,zIndex:e.ZIndex.HOVERTIP},hoverTipRow:{textOverflow:"ellipsis",whiteSpace:"nowrap",overflowX:"hidden",paddingLeft:2,paddingRight:2,maxWidth:e.Sizes.TOOLTIP_WIDTH_MAX}})); -},{"./style":"hvr4","aphrodite":"CxN7","preact":"aSor","./themes/theme":"gzKG","preact/hooks":"MwGB"}],"zsRf":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartSearchView=exports.FlamechartSearchContextProvider=exports.FlamechartSearchContext=void 0;var e=require("preact/compat"),t=require("preact/hooks"),l=require("./search-view"),r=require("../lib/profile-search"),c=require("../lib/math"),n=require("preact");const o=(0,n.createContext)(null);exports.FlamechartSearchContext=o;const u=({flamechart:e,selectedNode:c,setSelectedNode:u,configSpaceViewportRect:a,setConfigSpaceViewportRect:s,children:i})=>{const p=(0,t.useContext)(l.ProfileSearchContext),h=(0,t.useMemo)(()=>null==p?null:new r.FlamechartSearchResults(e,p),[e,p]);return(0,n.h)(o.Provider,{value:{results:h,flamechart:e,selectedNode:c,setSelectedNode:u,configSpaceViewportRect:a,setConfigSpaceViewportRect:s}},i)};exports.FlamechartSearchContextProvider=u;const a=(0,e.memo)(()=>{const e=(0,t.useContext)(o),r=null==e?null:e.results,u=null==e?null:e.selectedNode,a=null==e?null:e.setSelectedNode,s=null==e?null:e.configSpaceViewportRect,i=null==e?null:e.setConfigSpaceViewportRect,p=null==e?null:e.flamechart,h=null==r?null:r.count(),d=(0,t.useMemo)(()=>null==r?null:null==u?null:r.indexOf(u),[r,u]),f=(0,t.useCallback)(e=>{if(!a)return;if(!p)return;if(!s)return;if(!i)return;const t=e.configSpaceBounds,l=new c.Rect(t.origin.minus(new c.Vec2(0,1)),t.size.withY(s.height()));a(e.node),i(p.getClampedConfigSpaceViewportRect({configSpaceViewportRect:l}))},[s,i,a,p]),{selectPrev:x,selectNext:S}=(0,t.useMemo)(()=>null==h||0===h||null==r?{selectPrev:()=>{},selectNext:()=>{}}:{selectPrev:()=>{if(!(null==r?void 0:r.at))return;if(null==h||0===h)return;let e=null==d?h-1:d-1;e<0&&(e=h-1);const t=r.at(e);f(t)},selectNext:()=>{if(!(null==r?void 0:r.at))return;if(null==h||0===h)return;let e=null==d?0:d+1;e>=h&&(e=0);const t=r.at(e);f(t)}},[h,d,r,f]);return(0,n.h)(l.SearchView,{resultIndex:d,numResults:h,selectPrev:x,selectNext:S})});exports.FlamechartSearchView=a; -},{"preact/compat":"AQ6k","preact/hooks":"MwGB","./search-view":"t9CM","../lib/profile-search":"DHvC","../lib/math":"tDuZ","preact":"aSor"}],"Hete":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.StatelessComponent=void 0;var e=require("preact");class t extends e.Component{}exports.StatelessComponent=t; -},{"preact":"aSor"}],"Z2mP":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FlamechartView=void 0;var e=require("preact"),t=require("aphrodite"),r=require("../lib/math"),i=require("../lib/utils"),o=require("./flamechart-minimap-view"),s=require("./style"),a=require("./flamechart-detail-view"),c=require("./flamechart-pan-zoom-view"),p=require("./hovertip"),h=require("./search-view"),n=require("./flamechart-search-view"),l=require("./flamechart-style"),m=require("../lib/preact-helpers");class f extends m.StatelessComponent{constructor(){super(...arguments),this.setConfigSpaceViewportRect=(e=>{const t=s.Sizes.DETAIL_VIEW_HEIGHT/s.Sizes.FRAME_HEIGHT,i=this.configSpaceSize(),o=this.props.flamechart.getClampedViewportWidth(e.size.x),a=e.size.withX(o),c=r.Vec2.clamp(e.origin,new r.Vec2(0,-1),r.Vec2.max(r.Vec2.zero,i.minus(a).plus(new r.Vec2(0,t+1))));this.props.setConfigSpaceViewportRect(new r.Rect(c,e.size.withX(o)))}),this.setLogicalSpaceViewportSize=(e=>{this.props.setLogicalSpaceViewportSize(e)}),this.transformViewport=(e=>{const t=e.transformRect(this.props.configSpaceViewportRect);this.setConfigSpaceViewportRect(t)}),this.onNodeHover=(e=>{this.props.setNodeHover(e)}),this.onNodeClick=(e=>{this.props.setSelectedNode(e)}),this.container=null,this.containerRef=(e=>{this.container=e||null})}getStyle(){return(0,l.getFlamechartStyle)(this.props.theme)}configSpaceSize(){return new r.Vec2(this.props.flamechart.getTotalWeight(),this.props.flamechart.getLayers().length)}formatValue(e){const t=100*e/this.props.flamechart.getTotalWeight(),r=(0,i.formatPercent)(t);return`${this.props.flamechart.formatValue(e)} (${r})`}renderTooltip(){if(!this.container)return null;const{hover:i}=this.props;if(!i)return null;const{width:o,height:s,left:a,top:c}=this.container.getBoundingClientRect(),h=new r.Vec2(i.event.clientX-a,i.event.clientY-c),n=i.node.frame,l=this.getStyle();return(0,e.h)(p.Hovertip,{containerSize:new r.Vec2(o,s),offset:h},(0,e.h)("span",{className:(0,t.css)(l.hoverCount)},this.formatValue(i.node.getTotalWeight()))," ",n.name,n.file?(0,e.h)("div",null,n.file,":",n.line):void 0)}render(){const r=this.getStyle();return(0,e.h)("div",{className:(0,t.css)(r.fill,s.commonStyle.vbox),ref:this.containerRef},(0,e.h)(o.FlamechartMinimapView,{theme:this.props.theme,configSpaceViewportRect:this.props.configSpaceViewportRect,transformViewport:this.transformViewport,flamechart:this.props.flamechart,flamechartRenderer:this.props.flamechartRenderer,canvasContext:this.props.canvasContext,setConfigSpaceViewportRect:this.setConfigSpaceViewportRect}),(0,e.h)(h.ProfileSearchContext.Consumer,null,t=>(0,e.h)(e.Fragment,null,(0,e.h)(c.FlamechartPanZoomView,{theme:this.props.theme,canvasContext:this.props.canvasContext,flamechart:this.props.flamechart,flamechartRenderer:this.props.flamechartRenderer,renderInverted:!1,onNodeHover:this.onNodeHover,onNodeSelect:this.onNodeClick,selectedNode:this.props.selectedNode,transformViewport:this.transformViewport,configSpaceViewportRect:this.props.configSpaceViewportRect,setConfigSpaceViewportRect:this.setConfigSpaceViewportRect,logicalSpaceViewportSize:this.props.logicalSpaceViewportSize,setLogicalSpaceViewportSize:this.setLogicalSpaceViewportSize,searchResults:t}),(0,e.h)(n.FlamechartSearchView,null))),this.renderTooltip(),this.props.selectedNode&&(0,e.h)(a.FlamechartDetailView,{flamechart:this.props.flamechart,getCSSColorForFrame:this.props.getCSSColorForFrame,selectedNode:this.props.selectedNode}))}}exports.FlamechartView=f; -},{"preact":"aSor","aphrodite":"CxN7","../lib/math":"tDuZ","../lib/utils":"ucYa","./flamechart-minimap-view":"S7z0","./style":"hvr4","./flamechart-detail-view":"uohB","./flamechart-pan-zoom-view":"e7Fh","./hovertip":"PGRN","./search-view":"t9CM","./flamechart-search-view":"zsRf","./flamechart-style":"jZ6t","../lib/preact-helpers":"Hete"}],"PJJu":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useFlamechartSetters=h,exports.LeftHeavyFlamechartView=exports.getLeftHeavyFlamechart=exports.ChronoFlamechartView=exports.createMemoizedFlamechartRenderer=exports.getChronoViewFlamechart=void 0;var e=require("preact"),t=require("../lib/flamechart"),r=require("../gl/flamechart-renderer"),a=require("../lib/utils"),o=require("./flamechart-view"),c=require("../app-state/getters"),l=require("preact/compat"),i=require("./flamechart-search-view"),m=require("./themes/theme"),s=require("../app-state/profile-group"),n=require("../app-state");function h(e){return{setNodeHover:(0,l.useCallback)(t=>{n.profileGroupAtom.setFlamechartHoveredNode(e,t)},[e]),setLogicalSpaceViewportSize:(0,l.useCallback)(t=>{n.profileGroupAtom.setLogicalSpaceViewportSize(e,t)},[e]),setConfigSpaceViewportRect:(0,l.useCallback)(t=>{n.profileGroupAtom.setConfigSpaceViewportRect(e,t)},[e]),setSelectedNode:(0,l.useCallback)(t=>{n.profileGroupAtom.setSelectedNode(e,t)},[e])}}const p=(0,a.memoizeByShallowEquality)(({profile:e,getColorBucketForFrame:r})=>new t.Flamechart({getTotalWeight:e.getTotalWeight.bind(e),forEachCall:e.forEachCall.bind(e),formatValue:e.formatValue.bind(e),getColorBucketForFrame:r}));exports.getChronoViewFlamechart=p;const f=e=>(0,a.memoizeByShallowEquality)(({canvasContext:t,flamechart:a})=>new r.FlamechartRenderer(t.gl,(0,c.getRowAtlas)(t),a,t.rectangleBatchRenderer,t.flamechartColorPassRenderer,e));exports.createMemoizedFlamechartRenderer=f;const C=f(),u=(0,l.memo)(t=>{const{activeProfileState:r,glCanvas:a}=t,{profile:l,chronoViewState:n}=r,f=(0,m.useTheme)(),u=(0,c.getCanvasContext)({theme:f,canvas:a}),d=(0,c.getFrameToColorBucket)(l),F=(0,c.createGetColorBucketForFrame)(d),g=(0,c.createGetCSSColorForFrame)({theme:f,frameToColorBucket:d}),S=p({profile:l,getColorBucketForFrame:F}),w=C({canvasContext:u,flamechart:S}),v=h(s.FlamechartID.CHRONO);return(0,e.h)(i.FlamechartSearchContextProvider,{flamechart:S,selectedNode:n.selectedNode,setSelectedNode:v.setSelectedNode,configSpaceViewportRect:n.configSpaceViewportRect,setConfigSpaceViewportRect:v.setConfigSpaceViewportRect},(0,e.h)(o.FlamechartView,Object.assign({theme:f,renderInverted:!1,flamechart:S,flamechartRenderer:w,canvasContext:u,getCSSColorForFrame:g},n,v)))});exports.ChronoFlamechartView=u;const d=(0,a.memoizeByShallowEquality)(({profile:e,getColorBucketForFrame:r})=>new t.Flamechart({getTotalWeight:e.getTotalNonIdleWeight.bind(e),forEachCall:e.forEachCallGrouped.bind(e),formatValue:e.formatValue.bind(e),getColorBucketForFrame:r}));exports.getLeftHeavyFlamechart=d;const F=f(),g=(0,l.memo)(t=>{const{activeProfileState:r,glCanvas:a}=t,{profile:l,leftHeavyViewState:n}=r,p=(0,m.useTheme)(),f=(0,c.getCanvasContext)({theme:p,canvas:a}),C=(0,c.getFrameToColorBucket)(l),u=(0,c.createGetColorBucketForFrame)(C),g=(0,c.createGetCSSColorForFrame)({theme:p,frameToColorBucket:C}),S=d({profile:l,getColorBucketForFrame:u}),w=F({canvasContext:f,flamechart:S}),v=h(s.FlamechartID.LEFT_HEAVY);return(0,e.h)(i.FlamechartSearchContextProvider,{flamechart:S,selectedNode:n.selectedNode,setSelectedNode:v.setSelectedNode,configSpaceViewportRect:n.configSpaceViewportRect,setConfigSpaceViewportRect:v.setConfigSpaceViewportRect},(0,e.h)(o.FlamechartView,Object.assign({theme:p,renderInverted:!1,flamechart:S,flamechartRenderer:w,canvasContext:f,getCSSColorForFrame:g},n,v)))});exports.LeftHeavyFlamechartView=g; -},{"preact":"aSor","../lib/flamechart":"gFMr","../gl/flamechart-renderer":"P80v","../lib/utils":"ucYa","./flamechart-view":"Z2mP","../app-state/getters":"zEXv","preact/compat":"AQ6k","./flamechart-search-view":"zsRf","./themes/theme":"gzKG","../app-state/profile-group":"uxXA","../app-state":"LDQe"}],"MXNL":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getStyle=exports.FlamechartWrapper=void 0;var e=require("aphrodite"),t=require("preact"),r=require("./style"),o=require("../lib/math"),i=require("./flamechart-pan-zoom-view"),s=require("../lib/utils"),p=require("./hovertip"),a=require("./themes/theme"),n=require("../lib/preact-helpers");class c extends n.StatelessComponent{constructor(){super(...arguments),this.setConfigSpaceViewportRect=(e=>{this.props.setConfigSpaceViewportRect(this.clampViewportToFlamegraph(e))}),this.setLogicalSpaceViewportSize=(e=>{this.props.setLogicalSpaceViewportSize(e)}),this.transformViewport=(e=>{this.setConfigSpaceViewportRect(e.transformRect(this.props.configSpaceViewportRect))}),this.container=null,this.containerRef=(e=>{this.container=e||null}),this.setNodeHover=(e=>{this.props.setNodeHover(e)})}clampViewportToFlamegraph(e){const{flamechart:t,renderInverted:r}=this.props;return t.getClampedConfigSpaceViewportRect({configSpaceViewportRect:e,renderInverted:r})}formatValue(e){const t=100*e/this.props.flamechart.getTotalWeight(),r=(0,s.formatPercent)(t);return`${this.props.flamechart.formatValue(e)} (${r})`}renderTooltip(){if(!this.container)return null;const{hover:r}=this.props;if(!r)return null;const{width:i,height:s,left:a,top:n}=this.container.getBoundingClientRect(),c=new o.Vec2(r.event.clientX-a,r.event.clientY-n),h=l(this.props.theme),m=r.node.frame;return(0,t.h)(p.Hovertip,{containerSize:new o.Vec2(i,s),offset:c},(0,t.h)("span",{className:(0,e.css)(h.hoverCount)},this.formatValue(r.node.getTotalWeight()))," ",m.name,m.file?(0,t.h)("div",null,m.file,":",m.line):void 0)}render(){return(0,t.h)("div",{className:(0,e.css)(r.commonStyle.fillY,r.commonStyle.fillX,r.commonStyle.vbox),ref:this.containerRef},(0,t.h)(i.FlamechartPanZoomView,{theme:this.props.theme,selectedNode:null,onNodeHover:this.setNodeHover,onNodeSelect:s.noop,configSpaceViewportRect:this.props.configSpaceViewportRect,setConfigSpaceViewportRect:this.setConfigSpaceViewportRect,transformViewport:this.transformViewport,flamechart:this.props.flamechart,flamechartRenderer:this.props.flamechartRenderer,canvasContext:this.props.canvasContext,renderInverted:this.props.renderInverted,logicalSpaceViewportSize:this.props.logicalSpaceViewportSize,setLogicalSpaceViewportSize:this.setLogicalSpaceViewportSize,searchResults:null}),this.renderTooltip())}}exports.FlamechartWrapper=c;const l=(0,a.withTheme)(t=>e.StyleSheet.create({hoverCount:{color:t.weightColor}}));exports.getStyle=l; -},{"aphrodite":"CxN7","preact":"aSor","./style":"hvr4","../lib/math":"tDuZ","./flamechart-pan-zoom-view":"e7Fh","../lib/utils":"ucYa","./hovertip":"PGRN","./themes/theme":"gzKG","../lib/preact-helpers":"Hete"}],"Cw7z":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.InvertedCallerFlamegraphView=void 0;var e=require("../lib/utils"),r=require("../lib/flamechart"),t=require("./flamechart-view-container"),a=require("../app-state/getters"),o=require("./flamechart-wrapper"),l=require("preact"),i=require("preact/compat"),n=require("./themes/theme"),m=require("../app-state/profile-group"),c=require("../app-state"),s=require("../lib/atom");const u=(0,e.memoizeByShallowEquality)(({profile:e,frame:r,flattenRecursion:t})=>{let a=e.getInvertedProfileForCallersOf(r);return t?a.getProfileWithRecursionFlattened():a}),h=(0,e.memoizeByShallowEquality)(({invertedCallerProfile:e,getColorBucketForFrame:t})=>new r.Flamechart({getTotalWeight:e.getTotalNonIdleWeight.bind(e),forEachCall:e.forEachCallGrouped.bind(e),formatValue:e.formatValue.bind(e),getColorBucketForFrame:t})),f=(0,t.createMemoizedFlamechartRenderer)({inverted:!0}),p=(0,i.memo)(r=>{const{activeProfileState:i}=r;let{profile:p,sandwichViewState:C}=i;const d=(0,s.useAtom)(c.flattenRecursionAtom),F=(0,s.useAtom)(c.glCanvasAtom),g=(0,n.useTheme)();if(!p)throw new Error("profile missing");if(!F)throw new Error("glCanvas missing");const{callerCallee:v}=C;if(!v)throw new Error("callerCallee missing");const{selectedFrame:w}=v,q=(0,a.getFrameToColorBucket)(p),S=(0,a.createGetColorBucketForFrame)(q),E=(0,a.createGetCSSColorForFrame)({theme:g,frameToColorBucket:q}),b=(0,a.getCanvasContext)({theme:g,canvas:F}),B=h({invertedCallerProfile:u({profile:p,frame:w,flattenRecursion:d}),getColorBucketForFrame:S}),I=f({canvasContext:b,flamechart:B});return(0,l.h)(o.FlamechartWrapper,Object.assign({theme:g,renderInverted:!0,flamechart:B,flamechartRenderer:I,canvasContext:b,getCSSColorForFrame:E},(0,t.useFlamechartSetters)(m.FlamechartID.SANDWICH_INVERTED_CALLERS),v.invertedCallerFlamegraph,{setSelectedNode:e.noop}))});exports.InvertedCallerFlamegraphView=p; -},{"../lib/utils":"ucYa","../lib/flamechart":"gFMr","./flamechart-view-container":"PJJu","../app-state/getters":"zEXv","./flamechart-wrapper":"MXNL","preact":"aSor","preact/compat":"AQ6k","./themes/theme":"gzKG","../app-state/profile-group":"uxXA","../app-state":"LDQe","../lib/atom":"QkVE"}],"KT37":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CalleeFlamegraphView=void 0;var e=require("../lib/utils"),r=require("../lib/flamechart"),t=require("./flamechart-view-container"),a=require("../app-state/getters"),o=require("./flamechart-wrapper"),l=require("preact"),i=require("preact/compat"),c=require("./themes/theme"),m=require("../app-state/profile-group"),n=require("../app-state"),s=require("../lib/atom");const u=(0,e.memoizeByShallowEquality)(({profile:e,frame:r,flattenRecursion:t})=>{let a=e.getProfileForCalleesOf(r);return t?a.getProfileWithRecursionFlattened():a}),h=(0,e.memoizeByShallowEquality)(({calleeProfile:e,getColorBucketForFrame:t})=>new r.Flamechart({getTotalWeight:e.getTotalNonIdleWeight.bind(e),forEachCall:e.forEachCallGrouped.bind(e),formatValue:e.formatValue.bind(e),getColorBucketForFrame:t})),f=(0,t.createMemoizedFlamechartRenderer)(),p=(0,i.memo)(r=>{const{activeProfileState:i}=r,{profile:p,sandwichViewState:C}=i,F=(0,s.useAtom)(n.flattenRecursionAtom),g=(0,s.useAtom)(n.glCanvasAtom),d=(0,c.useTheme)();if(!p)throw new Error("profile missing");if(!g)throw new Error("glCanvas missing");const{callerCallee:w}=C;if(!w)throw new Error("callerCallee missing");const{selectedFrame:q}=w,v=(0,a.getFrameToColorBucket)(p),S=(0,a.createGetColorBucketForFrame)(v),E=(0,a.createGetCSSColorForFrame)({theme:d,frameToColorBucket:v}),b=(0,a.getCanvasContext)({theme:d,canvas:g}),B=h({calleeProfile:u({profile:p,frame:q,flattenRecursion:F}),getColorBucketForFrame:S}),k=f({canvasContext:b,flamechart:B});return(0,l.h)(o.FlamechartWrapper,Object.assign({theme:d,renderInverted:!1,flamechart:B,flamechartRenderer:k,canvasContext:b,getCSSColorForFrame:E},(0,t.useFlamechartSetters)(m.FlamechartID.SANDWICH_CALLEES),w.calleeFlamegraph,{setSelectedNode:e.noop}))});exports.CalleeFlamegraphView=p; -},{"../lib/utils":"ucYa","../lib/flamechart":"gFMr","./flamechart-view-container":"PJJu","../app-state/getters":"zEXv","./flamechart-wrapper":"MXNL","preact":"aSor","preact/compat":"AQ6k","./themes/theme":"gzKG","../app-state/profile-group":"uxXA","../app-state":"LDQe","../lib/atom":"QkVE"}],"cWm7":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SandwichSearchView=void 0;var e=require("preact/compat"),l=require("preact/hooks"),t=require("./search-view"),r=require("preact"),s=require("./sandwich-view");const c=(0,e.memo)(()=>{const e=(0,l.useContext)(s.SandwichViewContext),c=null!=e?e.rowList:null,n=null!=(null==e?void 0:e.selectedFrame)?e.getIndexForFrame(e.selectedFrame):null,u=null!=c?c.length:null,{selectPrev:i,selectNext:a}=(0,l.useMemo)(()=>null==c||null==u||0===u||null==e?{selectPrev:()=>{},selectNext:()=>{}}:{selectPrev:()=>{let l=null==n?u-1:n-1;l<0&&(l=u-1),e.setSelectedFrame(c[l])},selectNext:()=>{let l=null==n?0:n+1;l>=u&&(l=0),e.setSelectedFrame(c[l])}},[n,c,u,e]);return(0,r.h)(t.SearchView,{resultIndex:n,numResults:u,selectPrev:i,selectNext:a})});exports.SandwichSearchView=c; -},{"preact/compat":"AQ6k","preact/hooks":"MwGB","./search-view":"t9CM","preact":"aSor","./sandwich-view":"L8J2"}],"L8J2":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.SandwichViewContainer=exports.SandwichViewContext=void 0;var e=require("aphrodite"),t=require("./profile-table-view"),r=require("preact"),a=require("preact/compat"),l=require("preact/hooks"),o=require("./style"),s=require("./inverted-caller-flamegraph-view"),i=require("./callee-flamegraph-view"),n=require("./sandwich-search-view"),c=require("../lib/utils"),h=require("./search-view"),m=require("./themes/theme"),d=require("../app-state"),p=require("../lib/atom"),f=require("../lib/preact-helpers");class u extends f.StatelessComponent{constructor(){super(...arguments),this.setSelectedFrame=(e=>{this.props.setSelectedFrame(e)}),this.onWindowKeyPress=(e=>{"Escape"===e.key&&this.setSelectedFrame(null)})}componentDidMount(){window.addEventListener("keydown",this.onWindowKeyPress)}componentWillUnmount(){window.removeEventListener("keydown",this.onWindowKeyPress)}render(){const a=S(this.props.theme),{selectedFrame:l}=this.props;let c=null;return l&&(c=(0,r.h)("div",{className:(0,e.css)(o.commonStyle.fillY,a.callersAndCallees,o.commonStyle.vbox)},(0,r.h)("div",{className:(0,e.css)(o.commonStyle.hbox,a.panZoomViewWraper)},(0,r.h)("div",{className:(0,e.css)(a.flamechartLabelParent)},(0,r.h)("div",{className:(0,e.css)(a.flamechartLabel)},"Callers")),(0,r.h)(s.InvertedCallerFlamegraphView,{glCanvas:this.props.glCanvas,activeProfileState:this.props.activeProfileState})),(0,r.h)("div",{className:(0,e.css)(a.divider)}),(0,r.h)("div",{className:(0,e.css)(o.commonStyle.hbox,a.panZoomViewWraper)},(0,r.h)("div",{className:(0,e.css)(a.flamechartLabelParent,a.flamechartLabelParentBottom)},(0,r.h)("div",{className:(0,e.css)(a.flamechartLabel,a.flamechartLabelBottom)},"Callees")),(0,r.h)(i.CalleeFlamegraphView,{glCanvas:this.props.glCanvas,activeProfileState:this.props.activeProfileState})))),(0,r.h)("div",{className:(0,e.css)(o.commonStyle.hbox,o.commonStyle.fillY)},(0,r.h)("div",{className:(0,e.css)(a.tableView)},(0,r.h)(t.ProfileTableViewContainer,{activeProfileState:this.props.activeProfileState}),(0,r.h)(n.SandwichSearchView,null)),c)}}const S=(0,m.withTheme)(t=>e.StyleSheet.create({tableView:{position:"relative",flex:1},panZoomViewWraper:{flex:1},flamechartLabelParent:{display:"flex",flexDirection:"column",justifyContent:"flex-end",alignItems:"flex-start",fontSize:o.FontSize.TITLE,width:1.2*o.FontSize.TITLE,borderRight:`1px solid ${t.fgSecondaryColor}`},flamechartLabelParentBottom:{justifyContent:"flex-start"},flamechartLabel:{transform:"rotate(-90deg)",transformOrigin:"50% 50% 0",width:1.2*o.FontSize.TITLE,flexShrink:1},flamechartLabelBottom:{transform:"rotate(-90deg)",display:"flex",justifyContent:"flex-end"},callersAndCallees:{flex:1,borderLeft:`${o.Sizes.SEPARATOR_HEIGHT}px solid ${t.fgSecondaryColor}`},divider:{height:2,background:t.fgSecondaryColor}})),v=(0,r.createContext)(null);exports.SandwichViewContext=v;const w=(0,a.memo)(e=>{const{activeProfileState:t,glCanvas:a}=e,{sandwichViewState:o,index:s}=t,{callerCallee:i}=o,n=(0,m.useTheme)(),f=(0,l.useCallback)(e=>{d.profileGroupAtom.setSelectedFrame(e)},[]),S=t.profile,w=(0,p.useAtom)(d.tableSortMethodAtom),x=(0,l.useContext)(h.ProfileSearchContext),C=i?i.selectedFrame:null,g=(0,l.useMemo)(()=>{const e=[];switch(S.forEachFrame(t=>{x&&!x.getMatchForFrame(t)||e.push(t)}),w.field){case d.SortField.SYMBOL_NAME:(0,c.sortBy)(e,e=>e.name.toLowerCase());break;case d.SortField.SELF:(0,c.sortBy)(e,e=>e.getSelfWeight());break;case d.SortField.TOTAL:(0,c.sortBy)(e,e=>e.getTotalWeight())}return w.direction===d.SortDirection.DESCENDING&&e.reverse(),e},[S,x,w]),b=(0,l.useMemo)(()=>{const e=new Map;for(let t=0;t{const r=e.get(t);return null==r?null:r}},[g]),F=(0,l.useMemo)(()=>e=>null==x?null:x.getMatchForFrame(e),[x]),y={rowList:g,selectedFrame:C,setSelectedFrame:f,getIndexForFrame:b,getSearchMatchForFrame:F};return(0,r.h)(v.Provider,{value:y},(0,r.h)(u,{theme:n,activeProfileState:t,glCanvas:a,setSelectedFrame:f,selectedFrame:C,profileIndex:s}))});exports.SandwichViewContainer=w; -},{"aphrodite":"CxN7","./profile-table-view":"Ivh5","preact":"aSor","preact/compat":"AQ6k","preact/hooks":"MwGB","./style":"hvr4","./inverted-caller-flamegraph-view":"Cw7z","./callee-flamegraph-view":"KT37","./sandwich-search-view":"cWm7","../lib/utils":"ucYa","./search-view":"t9CM","./themes/theme":"gzKG","../app-state":"LDQe","../lib/atom":"QkVE","../lib/preact-helpers":"Hete"}],"LsM4":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ByteFormatter=exports.TimeFormatter=exports.RawValueFormatter=void 0;var t=require("./utils");class e{constructor(){this.unit="none"}format(t){return t.toLocaleString()}}exports.RawValueFormatter=e;class r{constructor(t){this.unit=t,this.multiplier="nanoseconds"===t?1e-9:"microseconds"===t?1e-6:"milliseconds"===t?.001:1}formatUnsigned(e){const r=e*this.multiplier;if(r/60>=1){const e=Math.floor(r/60),o=Math.floor(r-60*e).toString();return`${e}:${(0,t.zeroPad)(o,2)}`}return r/1>=1?`${r.toFixed(2)}s`:r/.001>=1?`${(r/.001).toFixed(2)}ms`:r/1e-6>=1?`${(r/1e-6).toFixed(2)}µs`:`${(r/1e-9).toFixed(2)}ns`}format(t){return`${t<0?"-":""}${this.formatUnsigned(Math.abs(t))}`}}exports.TimeFormatter=r;class o{constructor(){this.unit="bytes"}format(t){return t<1024?`${t.toFixed(0)} B`:(t/=1024)<1024?`${t.toFixed(2)} KB`:(t/=1024)<1024?`${t.toFixed(2)} MB`:`${(t/=1024).toFixed(2)} GB`}}exports.ByteFormatter=o; -},{"./utils":"ucYa"}],"FheM":[function(require,module,exports) { -var t=null;function e(){return t||(t=n()),t}function n(){try{throw new Error}catch(e){var t=(""+e.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\/\/[^)\n]+/g);if(t)return r(t[0])}return"/"}function r(t){return(""+t).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\/\/.+)\/[^/]+$/,"$1")+"/"}exports.getBundleURL=e,exports.getBaseURL=r; -},{}],"TUK3":[function(require,module,exports) { -var r=require("./bundle-url").getBundleURL;function e(r){Array.isArray(r)||(r=[r]);var e=r[r.length-1];try{return Promise.resolve(require(e))}catch(n){if("MODULE_NOT_FOUND"===n.code)return new s(function(n,i){t(r.slice(0,-1)).then(function(){return require(e)}).then(n,i)});throw n}}function t(r){return Promise.all(r.map(u))}var n={};function i(r,e){n[r]=e}module.exports=exports=e,exports.load=t,exports.register=i;var o={};function u(e){var t;if(Array.isArray(e)&&(t=e[1],e=e[0]),o[e])return o[e];var i=(e.substring(e.lastIndexOf(".")+1,e.length)||e).toLowerCase(),u=n[i];return u?o[e]=u(r()+e).then(function(r){return r&&module.bundle.register(t,r),r}).catch(function(r){throw delete o[e],r}):void 0}function s(r){this.executor=r,this.promise=null}s.prototype.then=function(r,e){return null===this.promise&&(this.promise=new Promise(this.executor)),this.promise.then(r,e)},s.prototype.catch=function(r){return null===this.promise&&(this.promise=new Promise(this.executor)),this.promise.catch(r)}; -},{"./bundle-url":"FheM"}],"YG8z":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.CallTreeProfileBuilder=exports.StackListProfileBuilder=exports.Profile=exports.CallTreeNode=exports.Frame=exports.HasWeights=void 0;var e=require("./utils"),t=require("./value-formatters"),r=function(e,t,r,s){return new(r||(r=Promise))(function(a,i){function l(e){try{n(s.next(e))}catch(t){i(t)}}function o(e){try{n(s.throw(e))}catch(t){i(t)}}function n(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(l,o)}n((s=s.apply(e,t||[])).next())})};const s=require("_bundle_loader")(require.resolve("./demangle-cpp"));class a{constructor(){this.selfWeight=0,this.totalWeight=0}getSelfWeight(){return this.selfWeight}getTotalWeight(){return this.totalWeight}addToTotalWeight(e){this.totalWeight+=e}addToSelfWeight(e){this.selfWeight+=e}overwriteWeightWith(e){this.selfWeight=e.selfWeight,this.totalWeight=e.totalWeight}}exports.HasWeights=a;class i extends a{constructor(e){super(),this.key=e.key,this.name=e.name,this.file=e.file,this.line=e.line,this.col=e.col}static getOrInsert(e,t){return e.getOrInsert(new i(t))}}exports.Frame=i,i.root=new i({key:"(speedscope root)",name:"(speedscope root)"});class l extends a{isRoot(){return this.frame===i.root}isFrozen(){return this.frozen}freeze(){this.frozen=!0}constructor(e,t){super(),this.frame=e,this.parent=t,this.children=[],this.frozen=!1}}exports.CallTreeNode=l;class o{getAppendOrderCalltreeRoot(){return this.appendOrderCalltreeRoot}getGroupedCalltreeRoot(){return this.groupedCalltreeRoot}constructor(r=0){this.name="",this.frames=new e.KeyedSet,this.appendOrderCalltreeRoot=new l(i.root,null),this.groupedCalltreeRoot=new l(i.root,null),this.samples=[],this.weights=[],this.valueFormatter=new t.RawValueFormatter,this.totalNonIdleWeight=null,this.totalWeight=r}shallowClone(){const e=new o(this.totalWeight);return Object.assign(e,this),e}formatValue(e){return this.valueFormatter.format(e)}setValueFormatter(e){this.valueFormatter=e}getWeightUnit(){return this.valueFormatter.unit}getName(){return this.name}setName(e){this.name=e}getTotalWeight(){return this.totalWeight}getTotalNonIdleWeight(){return null===this.totalNonIdleWeight&&(this.totalNonIdleWeight=this.groupedCalltreeRoot.children.reduce((e,t)=>e+t.getTotalWeight(),0)),this.totalNonIdleWeight}sortGroupedCallTree(){!function e(t){t.children.sort((e,t)=>-(e.getTotalWeight()-t.getTotalWeight())),t.children.forEach(e)}(this.groupedCalltreeRoot)}forEachCallGrouped(e,t){!function r(s,a){s.frame!==i.root&&e(s,a);let l=0;s.children.forEach(function(e){r(e,a+l),l+=e.getTotalWeight()}),s.frame!==i.root&&t(s,a+s.getTotalWeight())}(this.groupedCalltreeRoot,0)}forEachCall(t,r){let s=[],a=0,l=0;for(let o of this.samples){let n=null;for(n=o;n&&n.frame!=i.root&&-1===s.indexOf(n);n=n.parent);for(;s.length>0&&(0,e.lastOf)(s)!=n;){r(s.pop(),a)}const h=[];for(let e=o;e&&e.frame!=i.root&&e!=n;e=e.parent)h.push(e);h.reverse();for(let e of h)t(e,a);s=s.concat(h),a+=this.weights[l++]}for(let e=s.length-1;e>=0;e--)r(s[e],a)}forEachFrame(e){this.frames.forEach(e)}getProfileWithRecursionFlattened(){const e=new h,t=[],r=new Set;this.forEachCall(function(s,a){r.has(s.frame)?t.push(null):(r.add(s.frame),t.push(s),e.enterFrame(s.frame,a))},function(s,a){const i=t.pop();i&&(r.delete(i.frame),e.leaveFrame(i.frame,a))});const s=e.build();return s.name=this.name,s.valueFormatter=this.valueFormatter,this.forEachFrame(e=>{s.frames.getOrInsert(e).overwriteWeightWith(e)}),s}getInvertedProfileForCallersOf(e){const t=i.getOrInsert(this.frames,e),r=new n,s=[];!function e(r){if(r.frame===t)s.push(r);else for(let t of r.children)e(t)}(this.appendOrderCalltreeRoot);for(let l of s){const e=[];for(let t=l;null!=t&&t.frame!==i.root;t=t.parent)e.push(t.frame);r.appendSampleWithWeight(e,l.getTotalWeight())}const a=r.build();return a.name=this.name,a.valueFormatter=this.valueFormatter,a}getProfileForCalleesOf(e){const t=i.getOrInsert(this.frames,e),r=new n;!function e(s){if(s.frame===t)!function(e){const t=[];!function e(s){t.push(s.frame),r.appendSampleWithWeight(t,s.getSelfWeight());for(let t of s.children)e(t);t.pop()}(e)}(s);else for(let t of s.children)e(t)}(this.appendOrderCalltreeRoot);const s=r.build();return s.name=this.name,s.valueFormatter=this.valueFormatter,s}demangle(){return r(this,void 0,void 0,function*(){let e=null;for(let t of this.frames)t.name.startsWith("__Z")&&(e||(e=(yield s).demangleCpp),t.name=e(t.name))})}remapSymbols(e){for(let t of this.frames){const r=e(t);if(null==r)continue;const{name:s,file:a,line:i,col:l}=r;null!=s&&(t.name=s),null!=a&&(t.file=a),null!=i&&(t.line=i),null!=l&&(t.col=l)}}}exports.Profile=o;class n extends o{constructor(){super(...arguments),this.pendingSample=null}_appendSample(t,r,s){if(isNaN(r))throw new Error("invalid weight");let a=s?this.appendOrderCalltreeRoot:this.groupedCalltreeRoot,i=new Set;for(let o of t){const t=s?(0,e.lastOf)(a.children):a.children.find(e=>e.frame===o);if(t&&!t.isFrozen()&&t.frame==o)a=t;else{const e=a;a=new l(o,a),e.children.push(a)}a.addToTotalWeight(r),i.add(a.frame)}if(a.addToSelfWeight(r),s)for(let e of a.children)e.freeze();if(s){a.frame.addToSelfWeight(r);for(let e of i)e.addToTotalWeight(r);a===(0,e.lastOf)(this.samples)?this.weights[this.weights.length-1]+=r:(this.samples.push(a),this.weights.push(r))}}appendSampleWithWeight(e,t){if(0===t)return;if(t<0)throw new Error("Samples must have positive weights");const r=e.map(e=>i.getOrInsert(this.frames,e));this._appendSample(r,t,!0),this._appendSample(r,t,!1)}appendSampleWithTimestamp(e,t){if(this.pendingSample){if(t0?this.appendSampleWithWeight(this.pendingSample.stack,this.pendingSample.centralTimestamp-this.pendingSample.startTimestamp):(this.appendSampleWithWeight(this.pendingSample.stack,1),this.setValueFormatter(new t.RawValueFormatter))),this.totalWeight=Math.max(this.totalWeight,this.weights.reduce((e,t)=>e+t,0)),this.sortGroupedCallTree(),this}}exports.StackListProfileBuilder=n;class h extends o{constructor(){super(...arguments),this.appendOrderStack=[this.appendOrderCalltreeRoot],this.groupedOrderStack=[this.groupedCalltreeRoot],this.framesInStack=new Map,this.stack=[],this.lastValue=0}addWeightsToFrames(t){const r=t-this.lastValue;for(let e of this.framesInStack.keys())e.addToTotalWeight(r);const s=(0,e.lastOf)(this.stack);s&&s.addToSelfWeight(r)}addWeightsToNodes(t,r){const s=t-this.lastValue;for(let e of r)e.addToTotalWeight(s);const a=(0,e.lastOf)(r);a&&a.addToSelfWeight(s)}_enterFrame(t,r,s){let a=s?this.appendOrderStack:this.groupedOrderStack;this.addWeightsToNodes(r,a);let i=(0,e.lastOf)(a);if(i){if(s){const e=r-this.lastValue;if(e>0)this.samples.push(i),this.weights.push(r-this.lastValue);else if(e<0)throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${r}`)}const o=s?(0,e.lastOf)(i.children):i.children.find(e=>e.frame===t);let n;o&&!o.isFrozen()&&o.frame==t?n=o:(n=new l(t,i),i.children.push(n)),a.push(n)}}enterFrame(e,t){const r=i.getOrInsert(this.frames,e);this.addWeightsToFrames(t),this._enterFrame(r,t,!0),this._enterFrame(r,t,!1),this.stack.push(r);const s=this.framesInStack.get(r)||0;this.framesInStack.set(r,s+1),this.lastValue=t,this.totalWeight=Math.max(this.totalWeight,this.lastValue)}_leaveFrame(e,t,r){let s=r?this.appendOrderStack:this.groupedOrderStack;if(this.addWeightsToNodes(t,s),r){const r=this.appendOrderStack.pop();if(null==r)throw new Error(`Trying to leave ${e.key} when stack is empty`);if(null==this.lastValue)throw new Error(`Trying to leave a ${e.key} before any have been entered`);if(r.freeze(),r.frame.key!==e.key)throw new Error(`Tried to leave frame "${e.name}" while frame "${r.frame.name}" was at the top at ${t}`);const s=t-this.lastValue;if(s>0)this.samples.push(r),this.weights.push(t-this.lastValue);else if(s<0)throw new Error(`Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${t}`)}else this.groupedOrderStack.pop()}leaveFrame(e,t){const r=i.getOrInsert(this.frames,e);this.addWeightsToFrames(t),this._leaveFrame(r,t,!0),this._leaveFrame(r,t,!1),this.stack.pop();const s=this.framesInStack.get(r);null!=s&&(1===s?this.framesInStack.delete(r):this.framesInStack.set(r,s-1),this.lastValue=t,this.totalWeight=Math.max(this.totalWeight,this.lastValue))}build(){if(this.appendOrderStack.length>1||this.groupedOrderStack.length>1)throw new Error("Tried to complete profile construction with a non-empty stack");return this.sortGroupedCallTree(),this}}exports.CallTreeProfileBuilder=h; -},{"./utils":"ucYa","./value-formatters":"LsM4","_bundle_loader":"TUK3","./demangle-cpp":[["demangle-cpp.1768f4cc.js","bS28"],"demangle-cpp.1768f4cc.js.map","bS28"]}],"x8nU":[function(require,module,exports) { -"use strict";var e;Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileFormat=void 0,exports.FileFormat=e,function(e){let t,o;!function(e){e.EVENTED="evented",e.SAMPLED="sampled"}(t=e.ProfileType||(e.ProfileType={})),function(e){e.OPEN_FRAME="O",e.CLOSE_FRAME="C"}(o=e.EventType||(e.EventType={}))}(e||(exports.FileFormat=e={})); -},{}],"EHrm":[function(require,module,exports) { -module.exports={name:"speedscope",version:"1.21.0",description:"",repository:"jlfwong/speedscope",main:"index.js",bin:{speedscope:"./bin/cli.js"},scripts:{deploy:"./scripts/deploy.sh",prepack:"./scripts/build-release.sh",prettier:"prettier --write 'src/**/*.ts' 'src/**/*.tsx'",lint:"eslint 'src/**/*.ts' 'src/**/*.tsx'",jest:"./scripts/test-setup.sh && jest --runInBand",coverage:"npm run jest -- --coverage",typecheck:"tsc --noEmit",test:"./scripts/ci.sh",serve:"parcel assets/index.html --open --no-autoinstall"},files:["bin/cli.js","dist/release/**","!*.map"],browserslist:["last 2 Chrome versions","last 2 Firefox versions"],author:"",license:"MIT",devDependencies:{"@types/jest":"22.2.3","@types/jszip":"3.1.4","@types/node":"14.0.1","@types/pako":"1.0.0","@typescript-eslint/eslint-plugin":"6.16.0","@typescript-eslint/parser":"6.16.0",acorn:"7.2.0",aphrodite:"2.1.0",eslint:"8.0.0","eslint-plugin-prettier":"5.1.2","eslint-plugin-react-hooks":"4.6.0",jest:"24.3.0",jsverify:"0.8.3",jszip:"3.1.5",pako:"1.0.6","parcel-bundler":"1.12.4",preact:"10.4.1",prettier:"3.1.1",protobufjs:"6.8.8","source-map":"0.6.1","ts-jest":"24.3.0",typescript:"5.3.3","typescript-json-schema":"0.42.0","uglify-es":"3.2.2","uint8array-json-parser":"0.0.2"},jest:{transform:{"^.+\\.tsx?$":"ts-jest"},setupFilesAfterEnv:["./src/jest-setup.js"],testRegex:"\\.test\\.tsx?$",collectCoverageFrom:["**/*.{ts,tsx}","!**/*.d.{ts,tsx}"],moduleFileExtensions:["ts","tsx","js","jsx","json"]},dependencies:{open:"7.2.0"}}; -},{}],"Xzb6":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.exportProfileGroup=r,exports.importSpeedscopeProfiles=s,exports.saveToFile=l;var e=require("./profile"),t=require("./value-formatters"),n=require("./file-format-spec");function r(e){const t=[],n=new Map;function r(e){let r=n.get(e);if(null==r){const o={name:e.name};null!=e.file&&(o.file=e.file),null!=e.line&&(o.line=e.line),null!=e.col&&(o.col=e.col),r=t.length,n.set(e,r),t.push(o)}return r}const a={exporter:`speedscope@${require("../../package.json").version}`,name:e.name,activeProfileIndex:e.indexToView,$schema:"https://www.speedscope.app/file-format-schema.json",shared:{frames:t},profiles:[]};for(let s of e.profiles)a.profiles.push(o(s,r));return a}function o(e,t){const r={type:n.FileFormat.ProfileType.EVENTED,name:e.getName(),unit:e.getWeightUnit(),startValue:0,endValue:e.getTotalWeight(),events:[]};return e.forEachCall((e,o)=>{r.events.push({type:n.FileFormat.EventType.OPEN_FRAME,frame:t(e.frame),at:o})},(e,o)=>{r.events.push({type:n.FileFormat.EventType.CLOSE_FRAME,frame:t(e.frame),at:o})}),r}function a(r,o){function a(e){const{name:n,unit:o}=r;switch(o){case"nanoseconds":case"microseconds":case"milliseconds":case"seconds":e.setValueFormatter(new t.TimeFormatter(o));break;case"bytes":e.setValueFormatter(new t.ByteFormatter);break;case"none":e.setValueFormatter(new t.RawValueFormatter)}e.setName(n)}switch(r.type){case n.FileFormat.ProfileType.EVENTED:return function(t){const{startValue:r,endValue:s,events:l}=t,i=new e.CallTreeProfileBuilder(s-r);a(i);const c=o.map((e,t)=>Object.assign({key:t},e));for(let e of l)switch(e.type){case n.FileFormat.EventType.OPEN_FRAME:i.enterFrame(c[e.frame],e.at-r);break;case n.FileFormat.EventType.CLOSE_FRAME:i.leaveFrame(c[e.frame],e.at-r)}return i.build()}(r);case n.FileFormat.ProfileType.SAMPLED:return function(t){const{startValue:n,endValue:r,samples:s,weights:l}=t,i=new e.StackListProfileBuilder(r-n);a(i);const c=o.map((e,t)=>Object.assign({key:t},e));if(s.length!==l.length)throw new Error(`Expected samples.length (${s.length}) to equal weights.length (${l.length})`);for(let e=0;ec[e]),n)}return i.build()}(r)}}function s(e){return{name:e.name||e.profiles[0].name||"profile",indexToView:e.activeProfileIndex||0,profiles:e.profiles.map(t=>a(t,e.shared.frames))}}function l(e){const t=r(e),n=new Blob([JSON.stringify(t)],{type:"text/json"}),o=`${(t.name?t.name.split(".")[0]:"profile").replace(/\W+/g,"_")}.speedscope.json`;console.log("Saving",o);const a=document.createElement("a");a.download=o,a.href=window.URL.createObjectURL(n),a.dataset.downloadurl=["text/json",a.download,a.href].join(":"),document.body.appendChild(a),a.click(),document.body.removeChild(a)} -},{"./profile":"YG8z","./value-formatters":"LsM4","./file-format-spec":"x8nU","../../package.json":"EHrm"}],"C6HJ":[function(require,module,exports) { -"use strict";function r(r,e){return d(r,e)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.fuzzyMatchStrings=r;const e="a".charCodeAt(0),t="z".charCodeAt(0),n="A".charCodeAt(0),o="Z".charCodeAt(0),c="0".charCodeAt(0),a="9".charCodeAt(0);var h;function u(r){const u=r.charCodeAt(0);return e<=u&&u<=t?h.charLower:n<=u&&u<=o?h.charUpper:c<=u&&u<=a?h.charNumber:h.charNonWord}function l(r,o){if(r===o)return!0;const c=o.charCodeAt(0);return e<=c&&c<=t&&r.charCodeAt(0)===c-e+n}function d(r,e){if(0==e.length)return{matchedRanges:[],score:0};let t=0,n=-1,o=-1,c=r.length,a=e.length;for(let h=0;h=n;h--){if(l(r[h],e[t])&&--t<0)return A(r,e,n=h,o)}throw new Error("Implementation error. This must be a bug in fzfFuzzyMatchV1")}!function(r){r[r.charNonWord=0]="charNonWord",r[r.charLower=1]="charLower",r[r.charUpper=2]="charUpper",r[r.charNumber=3]="charNumber"}(h||(h={}));const f=16,i=-3,s=-1,p=f/2,N=f/2,b=p+s,g=-(i+s),m=2;function w(r,e){return r===h.charNonWord&&e!==h.charNonWord?p:r===h.charLower&&e==h.charUpper||r!==h.charNumber&&e==h.charNumber?b:e===h.charNonWord?N:0}function A(r,e,t,n){let o=0,c=0,a=!1,d=0,N=0,b=new Array(e.length),A=h.charNonWord;t>0&&(A=u(r[t-1]));for(let h=t;h{p(),l(h)},[p,l,h]),I=(0,o.useCallback)(e=>{t(h)},[t,h]),P=i.getName(),w=1+Math.floor(Math.log10(d)),y=(0,r.css)(b.highlighted),S=(0,o.useMemo)(()=>{return s(P,g,y)},[P,g,y]);return(0,e.h)("div",{ref:u,onMouseUp:x,onMouseEnter:I,title:P,className:(0,r.css)(b.profileRow,m%2==0&&b.profileRowEven,a&&b.profileRowSelected,c&&b.profileRowHovered)},(0,e.h)("span",{className:(0,r.css)(b.profileIndex,a&&b.profileIndexSelected),style:{width:w+"em"}},h+1,":")," ",S)}function c(e){e.stopPropagation()}function d(e,o){const r=[];for(let l=0;l-e.score),r}function u({profiles:l,closeProfileSelect:t,indexToView:i,visible:s,setProfileIndexToView:u}){const p=f((0,n.useTheme)()),[h,g]=(0,o.useState)(""),m=(0,o.useCallback)(e=>{const o=e.target.value;g(o)},[g]),b=(0,o.useCallback)(e=>{e&&(s?e.select():e.blur())},[s]),x=(0,o.useMemo)(()=>d(l,h),[l,h]),[I,P]=(0,o.useState)(0),w=(0,o.useRef)(null);(0,o.useEffect)(()=>{s&&(P(null),null!==w.current&&w.current.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"}))},[s]);const y=(0,o.useCallback)(e=>{e.stopPropagation();let o=null;switch(e.key){case"Enter":null!=I&&(t(),u(I));break;case"Escape":t();break;case"ArrowDown":if(e.preventDefault(),o=0,null!=I){const e=x.findIndex(e=>e.indexInProfileGroup===I);-1!==e&&(o=e+1)}break;case"ArrowUp":if(e.preventDefault(),o=x.length-1,null!=I){const e=x.findIndex(e=>e.indexInProfileGroup===I);-1!==e&&(o=e-1)}}if(null!=o&&o>=0&&o{x.length>0&&(P(x[0].indexInProfileGroup),v(!0))},[P,x]);const C=(0,o.useCallback)(e=>{S&&e&&(e.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"}),v(!1))},[S,v]),k=(0,o.useCallback)(e=>{w.current=e,C(e)},[w,C]);return(0,e.h)("div",{className:(0,r.css)(p.profileSelectOuter)},(0,e.h)("div",{className:(0,r.css)(p.caret)}),(0,e.h)("div",{className:(0,r.css)(p.profileSelectBox)},(0,e.h)("div",{className:(0,r.css)(p.filterInputContainer)},(0,e.h)("input",{type:"text",className:(0,r.css)(p.filterInput),ref:b,placeholder:"Filter...",value:h,onInput:m,onKeyDown:y,onKeyUp:c,onKeyPress:c})),(0,e.h)("div",{className:(0,r.css)(p.profileSelectScrolling)},x.map(({profile:o,matchedRanges:r,indexInProfileGroup:n},s)=>{let c=void 0;const d=n===i,p=n===I;return d&&p?c=k:d?c=w:p&&(c=C),(0,e.h)(a,{setHoveredProfileIndex:P,indexInProfileGroup:n,indexInFilteredListView:s,hovered:n==I,selected:n===i,profile:o,profileCount:l.length,nodeRef:c,matchedRanges:r,setProfileIndexToView:u,closeProfileSelect:t})}),0===x.length?(0,e.h)("div",{className:(0,r.css)(p.profileRow)},'No results match filter "',h,'"'):null)))}const p=10,f=(0,n.withTheme)(e=>r.StyleSheet.create({filterInputContainer:{display:"flex",flexDirection:"column",padding:5,alignItems:"stretch"},filterInput:{color:e.altFgPrimaryColor,background:e.altBgSecondaryColor,borderRadius:5,padding:5,":focus":{border:"none",outline:"none"},"::selection":{color:e.altFgPrimaryColor,background:e.selectionPrimaryColor}},caret:{width:0,height:0,borderLeft:"5px solid transparent",borderRight:"5px solid transparent",borderBottom:"5px solid black"},highlighted:{background:e.selectionSecondaryColor},padding:{height:10,background:e.altBgPrimaryColor},profileRow:{height:l.Sizes.FRAME_HEIGHT-2,border:"1px solid transparent",textAlign:"left",paddingLeft:10,paddingRight:10,background:e.altBgPrimaryColor,overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis",cursor:"pointer"},profileRowHovered:{border:`1px solid ${e.selectionPrimaryColor}`},profileRowSelected:{background:e.selectionPrimaryColor},profileRowEven:{background:e.altBgSecondaryColor},profileSelectScrolling:{maxHeight:`min(calc(100vh - ${l.Sizes.TOOLBAR_HEIGHT-20}px), ${20*l.Sizes.FRAME_HEIGHT}px)`,overflow:"auto","::-webkit-scrollbar":{background:e.altBgPrimaryColor},"::-webkit-scrollbar-thumb":{background:e.altFgSecondaryColor,borderRadius:20,border:`3px solid ${e.altBgPrimaryColor}`,":hover":{background:e.altBgPrimaryColor}}},profileSelectBox:{width:"100%",paddingBottom:10,background:e.altBgPrimaryColor,color:e.altFgPrimaryColor},profileSelectOuter:{width:"100%",maxWidth:480,margin:"0 auto",position:"relative",zIndex:l.ZIndex.PROFILE_SELECT,alignItems:"center",display:"flex",flexDirection:"column"},profileIndex:{textAlign:"right",display:"inline-block",color:e.altFgSecondaryColor},profileIndexSelected:{color:e.altFgPrimaryColor}})); -},{"preact":"aSor","preact/hooks":"MwGB","aphrodite":"CxN7","./style":"hvr4","../lib/fuzzy-find":"C6HJ","../lib/utils":"ucYa","./themes/theme":"gzKG"}],"BPHY":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Toolbar=T;var e=require("preact"),o=require("preact/hooks"),t=require("aphrodite"),i=require("./style"),s=require("./profile-select"),l=require("../lib/utils"),a=require("./themes/theme"),r=require("../lib/view-mode"),n=require("../app-state"),c=require("../app-state/color-scheme"),h=require("../lib/atom");function d(e,t){return(0,o.useCallback)(()=>e(t),[e,t])}function m(o){const i=g((0,a.useTheme)()),s=d(n.viewModeAtom.set,r.ViewMode.CHRONO_FLAME_CHART),l=d(n.viewModeAtom.set,r.ViewMode.LEFT_HEAVY_FLAME_GRAPH),c=d(n.viewModeAtom.set,r.ViewMode.SANDWICH_VIEW);return o.activeProfileState?(0,e.h)("div",{className:(0,t.css)(i.toolbarLeft)},(0,e.h)("div",{className:(0,t.css)(i.toolbarTab,o.viewMode===r.ViewMode.CHRONO_FLAME_CHART&&i.toolbarTabActive),onClick:s},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"🕰"),"Time Order"),(0,e.h)("div",{className:(0,t.css)(i.toolbarTab,o.viewMode===r.ViewMode.LEFT_HEAVY_FLAME_GRAPH&&i.toolbarTabActive),onClick:l},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"⬅️"),"Left Heavy"),(0,e.h)("div",{className:(0,t.css)(i.toolbarTab,o.viewMode===r.ViewMode.SANDWICH_VIEW&&i.toolbarTabActive),onClick:c},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"🥪"),"Sandwich")):null}const b=(()=>{let e=null;return o=>{let t=(null==o?void 0:o.profiles.map(e=>e.profile))||null;return(null===e||null!=t&&!(0,l.objectsHaveShallowEquality)(e,t))&&(e=t),e}})();function u(i){const l=g((0,a.useTheme)()),{activeProfileState:r,profileGroup:n}=i,c=b(n),[h,d]=(0,o.useState)(!1),m=(0,o.useCallback)(()=>{d(!0)},[d]),u=(0,o.useCallback)(()=>{d(!1)},[d]);return(0,o.useEffect)(()=>{const e=e=>{"t"===e.key&&(e.preventDefault(),d(!0))};return window.addEventListener("keypress",e),()=>{window.removeEventListener("keypress",e)}},[d]),(0,o.useEffect)(()=>{const e=e=>{"t"===e.key&&(e.preventDefault(),d(!0))};return window.addEventListener("keypress",e),()=>{window.removeEventListener("keypress",e)}},[d]),r&&n&&c?1===n.profiles.length?(0,e.h)(e.Fragment,null,r.profile.getName()):(0,e.h)("div",{className:(0,t.css)(l.toolbarCenter),onMouseLeave:u},(0,e.h)("span",{onMouseOver:m},r.profile.getName()," ",(0,e.h)("span",{className:(0,t.css)(l.toolbarProfileIndex)},"(",r.index+1,"/",n.profiles.length,")")),(0,e.h)("div",{style:{display:h?"block":"none"}},(0,e.h)(s.ProfileSelect,{setProfileIndexToView:i.setProfileIndexToView,indexToView:n.indexToView,profiles:c,closeProfileSelect:u,visible:h}))):(0,e.h)(e.Fragment,null,"🔬speedscope")}function p(o){const i=g((0,a.useTheme)()),s=(0,h.useAtom)(c.colorSchemeAtom),l=(0,e.h)("div",{className:(0,t.css)(i.toolbarTab),onClick:o.saveFile},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"⤴️"),"Export"),r=(0,e.h)("div",{className:(0,t.css)(i.toolbarTab),onClick:o.browseForFile},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"⤵️"),"Import"),n=(0,e.h)("div",{className:(0,t.css)(i.toolbarTab),onClick:c.colorSchemeAtom.cycleToNextColorScheme},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"🎨"),(0,e.h)("span",{className:(0,t.css)(i.toolbarTabColorSchemeToggle)},(0,a.colorSchemeToString)(s))),d=(0,e.h)("div",{className:(0,t.css)(i.toolbarTab)},(0,e.h)("a",{href:"https://github.com/jlfwong/speedscope#usage",className:(0,t.css)(i.noLinkStyle),target:"_blank"},(0,e.h)("span",{className:(0,t.css)(i.emoji)},"❓"),"Help"));return(0,e.h)("div",{className:(0,t.css)(i.toolbarRight)},o.activeProfileState&&l,r,n,d)}function T(o){const i=g((0,a.useTheme)());return(0,e.h)("div",{className:(0,t.css)(i.toolbar)},(0,e.h)(m,Object.assign({},o)),(0,e.h)(u,Object.assign({},o)),(0,e.h)(p,Object.assign({},o)))}const g=(0,a.withTheme)(e=>t.StyleSheet.create({toolbar:{height:i.Sizes.TOOLBAR_HEIGHT,flexShrink:0,background:e.altBgPrimaryColor,color:e.altFgPrimaryColor,textAlign:"center",fontFamily:i.FontFamily.MONOSPACE,fontSize:i.FontSize.TITLE,lineHeight:`${i.Sizes.TOOLBAR_TAB_HEIGHT}px`,userSelect:"none"},toolbarLeft:{position:"absolute",height:i.Sizes.TOOLBAR_HEIGHT,overflow:"hidden",top:0,left:0,marginRight:2,textAlign:"left"},toolbarCenter:{paddingTop:1,height:i.Sizes.TOOLBAR_HEIGHT},toolbarRight:{height:i.Sizes.TOOLBAR_HEIGHT,overflow:"hidden",position:"absolute",top:0,right:0,marginRight:2,textAlign:"right"},toolbarProfileIndex:{color:e.altFgSecondaryColor},toolbarTab:{background:e.altBgSecondaryColor,marginTop:i.Sizes.SEPARATOR_HEIGHT,height:i.Sizes.TOOLBAR_TAB_HEIGHT,lineHeight:`${i.Sizes.TOOLBAR_TAB_HEIGHT}px`,paddingLeft:2,paddingRight:8,display:"inline-block",marginLeft:2,transition:`all ${i.Duration.HOVER_CHANGE} ease-in`,":hover":{background:e.selectionSecondaryColor}},toolbarTabActive:{background:e.selectionPrimaryColor,":hover":{background:e.selectionPrimaryColor}},toolbarTabColorSchemeToggle:{display:"inline-block",textAlign:"center",minWidth:"50px"},emoji:{display:"inline-block",verticalAlign:"middle",paddingTop:"0px",marginRight:"0.3em"},noLinkStyle:{textDecoration:"none",color:"inherit"}})); -},{"preact":"aSor","preact/hooks":"MwGB","aphrodite":"CxN7","./style":"hvr4","./profile-select":"tOar","../lib/utils":"ucYa","./themes/theme":"gzKG","../lib/view-mode":"dpTI","../app-state":"LDQe","../app-state/color-scheme":"KQrJ","../lib/atom":"QkVE"}],"bv0g":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.importJavaScriptSourceMapSymbolRemapper=r;var e=require("./utils"),n=function(e,n,o,l){return new(o||(o=Promise))(function(r,i){function t(e){try{a(l.next(e))}catch(n){i(n)}}function u(e){try{a(l.throw(e))}catch(n){i(n)}}function a(e){var n;e.done?r(e.value):(n=e.value,n instanceof o?n:new o(function(e){e(n)})).then(t,u)}a((l=l.apply(e,n||[])).next())})};const o=require("_bundle_loader")(require.resolve("source-map")),l=!1;function r(r,i){return n(this,void 0,void 0,function*(){const n=yield o;let t=null,u=null;try{u=JSON.parse(r),t=new n.SourceMapConsumer(u)}catch(s){return null}const a=[];t.eachMapping(function(e){a.push(Object.assign(Object.assign({},e),{generatedColumn:e.generatedColumn+1,originalColumn:e.originalColumn+1}))},{},n.SourceMapConsumer.GENERATED_ORDER);const c=i.replace(/\.[^/]*$/,"");return n=>{var o;let r=!1;if((null==u?void 0:u.file)&&(null==u?void 0:u.file)===n.file?r=!0:("/"+(null===(o=n.file)||void 0===o?void 0:o.replace(/\.[^/]*$/,""))).endsWith("/"+c)&&(r=!0),!r)return null;if(null==n.line||null==n.col)return null;let i=(0,e.findIndexBisect)(a,e=>e.generatedLine>n.line||!(e.generatedLine=n.col);if(-1===i)i=a.length-1;else{if(0===i)return null;i--}const s=a[i],m={};if(null!=s.name)m.name=s.name;else if(null!=s.source){const e=null==t?void 0:t.sourceContentFor(s.source,!0);if(e){const n=e.split("\n")[s.originalLine-1];if(n){const e=/\w+/.exec(n.substr(s.originalColumn-1));e&&(m.name=e[0])}}}switch(m.name){case"constructor":m.name=n.name+" constructor";break;case"function":m.name=n.name;break;case"const":case"export":m.name=n.name}return m.name&&n.name.includes(m.name)&&(m.name=n.name),null!=s.source&&(m.file=s.source,m.line=s.originalLine,m.col=s.originalColumn),l&&(console.groupCollapsed(`Remapping "${n.name}" -> "${m.name}"`),console.log("before",Object.assign({},n)),console.log("item @ index",s),console.log("item @ index + 1",a[i+1]),console.log("after",m),console.groupEnd()),m}})} -},{"_bundle_loader":"TUK3","source-map":[["source-map.438fa06b.js","aRf0"],"source-map.438fa06b.js.map","aRf0"],"./utils":"ucYa"}],"ThNa":[function(require,module,exports) { -module.exports="perf-vertx-stacks-01-collapsed-all.2681da68.txt"; -},{}],"wCGh":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Application=exports.GLCanvas=void 0;var e=require("preact"),t=require("aphrodite"),o=require("./style"),i=require("../lib/emscripten"),r=require("./sandwich-view"),s=require("../lib/file-format"),n=require("./flamechart-view-container"),a=require("./toolbar"),l=require("../lib/js-source-map"),c=require("./themes/theme"),p=require("../lib/view-mode"),d=require("../app-state"),h=require("../lib/preact-helpers"),u=function(e,t,o,i){return new(o||(o=Promise))(function(r,s){function n(e){try{l(i.next(e))}catch(t){s(t)}}function a(e){try{l(i.throw(e))}catch(t){s(t)}}function l(e){var t;e.done?r(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(n,a)}l((i=i.apply(e,t||[])).next())})};const m=require("_bundle_loader")(require.resolve("../import"));function f(e,t){return u(this,void 0,void 0,function*(){return(yield m).importProfileGroupFromText(e,t)})}function v(e,t){return u(this,void 0,void 0,function*(){return(yield m).importProfileGroupFromBase64(e,t)})}function g(e,t){return u(this,void 0,void 0,function*(){return(yield m).importProfilesFromArrayBuffer(e,t)})}function w(e){return u(this,void 0,void 0,function*(){return(yield m).importProfilesFromFile(e)})}function y(e){return u(this,void 0,void 0,function*(){return(yield m).importFromFileSystemDirectoryEntry(e)})}m.then(()=>{}),require("_bundle_loader")(require.resolve("../lib/demangle-cpp")).then(()=>{}),require("_bundle_loader")(require.resolve("source-map")).then(()=>{});const b=require("../../sample/profiles/stackcollapse/perf-vertx-stacks-01-collapsed-all.txt");function x(e){return null!=e&&e.isDirectory}class C extends h.StatelessComponent{constructor(){super(...arguments),this.canvas=null,this.ref=(e=>{e instanceof HTMLCanvasElement?this.canvas=e:this.canvas=null,this.props.setGLCanvas(this.canvas)}),this.container=null,this.containerRef=(e=>{e instanceof HTMLElement?this.container=e:this.container=null}),this.maybeResize=(()=>{if(!this.container)return;if(!this.props.canvasContext)return;let{width:e,height:t}=this.container.getBoundingClientRect();const o=e,i=t,r=e*window.devicePixelRatio,s=t*window.devicePixelRatio;this.props.canvasContext.gl.resize(r,s,o,i)}),this.onWindowResize=(()=>{this.props.canvasContext&&this.props.canvasContext.requestFrame()})}componentWillReceiveProps(e){this.props.canvasContext!==e.canvasContext&&(this.props.canvasContext&&this.props.canvasContext.removeBeforeFrameHandler(this.maybeResize),e.canvasContext&&(e.canvasContext.addBeforeFrameHandler(this.maybeResize),e.canvasContext.requestFrame()))}componentDidMount(){window.addEventListener("resize",this.onWindowResize)}componentWillUnmount(){this.props.canvasContext&&this.props.canvasContext.removeBeforeFrameHandler(this.maybeResize),window.removeEventListener("resize",this.onWindowResize)}render(){const o=F(this.props.theme);return(0,e.h)("div",{ref:this.containerRef,className:(0,t.css)(o.glCanvasView)},(0,e.h)("canvas",{ref:this.ref,width:1,height:1}))}}exports.GLCanvas=C;class P extends h.StatelessComponent{constructor(){super(...arguments),this.loadExample=(()=>{this.loadProfile(()=>u(this,void 0,void 0,function*(){const e=yield fetch(b).then(e=>e.text());return yield f("perf-vertx-stacks-01-collapsed-all.txt",e)}))}),this.onDrop=(e=>{if(this.props.setDragActive(!1),e.preventDefault(),!e.dataTransfer)return;const t=e.dataTransfer.items[0];if("webkitGetAsEntry"in t){const e=t.webkitGetAsEntry();if(e&&x(e)&&e.name.endsWith(".trace")){console.log("Importing as Instruments.app .trace file");const t=e;return void this.loadProfile(()=>u(this,void 0,void 0,function*(){return yield y(t)}))}}let o=e.dataTransfer.files.item(0);o&&this.loadFromFile(o)}),this.onDragOver=(e=>{this.props.setDragActive(!0),e.preventDefault()}),this.onDragLeave=(e=>{this.props.setDragActive(!1),e.preventDefault()}),this.onWindowKeyPress=(e=>u(this,void 0,void 0,function*(){if("1"===e.key)this.props.setViewMode(p.ViewMode.CHRONO_FLAME_CHART);else if("2"===e.key)this.props.setViewMode(p.ViewMode.LEFT_HEAVY_FLAME_GRAPH);else if("3"===e.key)this.props.setViewMode(p.ViewMode.SANDWICH_VIEW);else if("r"===e.key){const{flattenRecursion:e}=this.props;this.props.setFlattenRecursion(!e)}else if("n"===e.key){const{activeProfileState:e}=this.props;e&&this.props.setProfileIndexToView(e.index+1)}else if("p"===e.key){const{activeProfileState:e}=this.props;e&&this.props.setProfileIndexToView(e.index-1)}})),this.saveFile=(()=>{if(this.props.profileGroup){const{name:e,indexToView:t,profiles:o}=this.props.profileGroup,i={name:e,indexToView:t,profiles:o.map(e=>e.profile)};(0,s.saveToFile)(i)}}),this.browseForFile=(()=>{const e=document.createElement("input");e.type="file",e.addEventListener("change",this.onFileSelect),e.click()}),this.onWindowKeyDown=(e=>u(this,void 0,void 0,function*(){"s"===e.key&&(e.ctrlKey||e.metaKey)?(e.preventDefault(),this.saveFile()):"o"===e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),this.browseForFile())})),this.onDocumentPaste=(e=>{if(null!=document.activeElement&&"INPUT"===document.activeElement.nodeName)return;e.preventDefault(),e.stopPropagation();const t=e.clipboardData;if(!t)return;const o=t.getData("text");this.loadProfile(()=>u(this,void 0,void 0,function*(){return yield f("From Clipboard",o)}))}),this.onFileSelect=(e=>{const t=e.target.files.item(0);t&&this.loadFromFile(t)})}loadProfile(e){return u(this,void 0,void 0,function*(){if(this.props.setError(!1),this.props.setLoading(!0),yield new Promise(e=>setTimeout(e,0)),!this.props.glCanvas)return;console.time("import");let t=null;try{t=yield e()}catch(o){return console.log("Failed to load format",o),void this.props.setError(!0)}if(null==t)return alert("Unrecognized format! See documentation about supported formats."),void this.props.setLoading(!1);if(0===t.profiles.length)return alert("Successfully imported profile, but it's empty!"),void this.props.setLoading(!1);this.props.hashParams.title&&(t=Object.assign(Object.assign({},t),{name:this.props.hashParams.title})),document.title=`${t.name} - speedscope`,this.props.hashParams.viewMode&&this.props.setViewMode(this.props.hashParams.viewMode);for(let e of t.profiles)yield e.demangle();for(let e of t.profiles){const t=this.props.hashParams.title||e.getName();e.setName(t)}console.timeEnd("import"),this.props.setProfileGroup(t),this.props.setLoading(!1)})}getStyle(){return F(this.props.theme)}loadFromFile(e){this.loadProfile(()=>u(this,void 0,void 0,function*(){const t=yield w(e);if(t){for(let o of t.profiles)o.getName()||o.setName(e.name);return t}if(this.props.profileGroup&&this.props.activeProfileState){const t=new FileReader,o=new Promise(e=>{t.addEventListener("loadend",()=>{if("string"!=typeof t.result)throw new Error("Expected reader.result to be a string");e(t.result)})});t.readAsText(e);const r=yield o;let s=null;const n=(0,i.importEmscriptenSymbolMap)(r);n&&(console.log("Importing as emscripten symbol map"),s=n);const a=yield(0,l.importJavaScriptSourceMapSymbolRemapper)(r,e.name);if(!s&&a&&(console.log("Importing as JavaScript source map"),s=a),null!=s)return{name:this.props.profileGroup.name||"profile",indexToView:this.props.profileGroup.indexToView,profiles:this.props.profileGroup.profiles.map(e=>{const t=e.profile.shallowClone();return t.remapSymbols(s),t})}}return null}))}componentDidMount(){window.addEventListener("keydown",this.onWindowKeyDown),window.addEventListener("keypress",this.onWindowKeyPress),document.addEventListener("paste",this.onDocumentPaste),this.maybeLoadHashParamProfile()}componentWillUnmount(){window.removeEventListener("keydown",this.onWindowKeyDown),window.removeEventListener("keypress",this.onWindowKeyPress),document.removeEventListener("paste",this.onDocumentPaste)}maybeLoadHashParamProfile(){return u(this,void 0,void 0,function*(){const{profileURL:e}=this.props.hashParams;if(e){if(!d.canUseXHR)return void alert(`Cannot load a profile URL when loading from "${window.location.protocol}" URL protocol`);this.loadProfile(()=>u(this,void 0,void 0,function*(){const t=yield fetch(e);let o=new URL(e,window.location.href).pathname;return o.includes("/")&&(o=o.slice(o.lastIndexOf("/")+1)),yield g(o,yield t.arrayBuffer())}))}else if(this.props.hashParams.localProfilePath){window.speedscope={loadFileFromBase64:(e,t)=>{this.loadProfile(()=>v(e,t))}};const e=document.createElement("script");e.src=`file:///${this.props.hashParams.localProfilePath}`,document.head.appendChild(e)}})}renderLanding(){const o=this.getStyle();return(0,e.h)("div",{className:(0,t.css)(o.landingContainer)},(0,e.h)("div",{className:(0,t.css)(o.landingMessage)},(0,e.h)("p",{className:(0,t.css)(o.landingP)},"👋 Hi there! Welcome to 🔬speedscope, an interactive"," ",(0,e.h)("a",{className:(0,t.css)(o.link),href:"http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html"},"flamegraph")," ","visualizer. Use it to help you make your software faster."),d.canUseXHR?(0,e.h)("p",{className:(0,t.css)(o.landingP)},"Drag and drop a profile file onto this window to get started, click the big blue button below to browse for a profile to explore, or"," ",(0,e.h)("a",{tabIndex:0,className:(0,t.css)(o.link),onClick:this.loadExample},"click here")," ","to load an example profile."):(0,e.h)("p",{className:(0,t.css)(o.landingP)},"Drag and drop a profile file onto this window to get started, or click the big blue button below to browse for a profile to explore."),(0,e.h)("div",{className:(0,t.css)(o.browseButtonContainer)},(0,e.h)("input",{type:"file",name:"file",id:"file",onChange:this.onFileSelect,className:(0,t.css)(o.hide)}),(0,e.h)("label",{for:"file",className:(0,t.css)(o.browseButton),tabIndex:0},"Browse")),(0,e.h)("p",{className:(0,t.css)(o.landingP)},"See the"," ",(0,e.h)("a",{className:(0,t.css)(o.link),href:"https://github.com/jlfwong/speedscope#usage",target:"_blank"},"documentation")," ","for information about supported file formats, keyboard shortcuts, and how to navigate around the profile."),(0,e.h)("p",{className:(0,t.css)(o.landingP)},"speedscope is open source. Please"," ",(0,e.h)("a",{className:(0,t.css)(o.link),target:"_blank",href:"https://github.com/jlfwong/speedscope/issues"},"report any issues on GitHub"),".")))}renderError(){const o=this.getStyle();return(0,e.h)("div",{className:(0,t.css)(o.error)},(0,e.h)("div",null,"😿 Something went wrong."),(0,e.h)("div",null,"Check the JS console for more details."))}renderLoadingBar(){const o=this.getStyle();return(0,e.h)("div",{className:(0,t.css)(o.loading)})}renderContent(){const{viewMode:t,activeProfileState:o,error:i,loading:s,glCanvas:a}=this.props;if(i)return this.renderError();if(s)return this.renderLoadingBar();if(!o||!a)return this.renderLanding();switch(t){case p.ViewMode.CHRONO_FLAME_CHART:return(0,e.h)(n.ChronoFlamechartView,{activeProfileState:o,glCanvas:a});case p.ViewMode.LEFT_HEAVY_FLAME_GRAPH:return(0,e.h)(n.LeftHeavyFlamechartView,{activeProfileState:o,glCanvas:a});case p.ViewMode.SANDWICH_VIEW:return(0,e.h)(r.SandwichViewContainer,{activeProfileState:o,glCanvas:a})}}render(){const o=this.getStyle();return(0,e.h)("div",{onDrop:this.onDrop,onDragOver:this.onDragOver,onDragLeave:this.onDragLeave,className:(0,t.css)(o.root,this.props.dragActive&&o.dragTargetRoot)},(0,e.h)(C,{setGLCanvas:this.props.setGLCanvas,canvasContext:this.props.canvasContext,theme:this.props.theme}),(0,e.h)(a.Toolbar,Object.assign({saveFile:this.saveFile,browseForFile:this.browseForFile},this.props)),(0,e.h)("div",{className:(0,t.css)(o.contentContainer)},this.renderContent()),this.props.dragActive&&(0,e.h)("div",{className:(0,t.css)(o.dragTarget)}))}}exports.Application=P;const F=(0,c.withTheme)(e=>t.StyleSheet.create({glCanvasView:{position:"absolute",width:"100vw",height:"100vh",zIndex:-1,pointerEvents:"none"},error:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"},loading:{height:3,marginBottom:-3,background:e.selectionPrimaryColor,transformOrigin:"0% 50%",animationName:[{from:{transform:"scaleX(0)"},to:{transform:"scaleX(1)"}}],animationTimingFunction:"cubic-bezier(0, 1, 0, 1)",animationDuration:"30s"},root:{width:"100vw",height:"100vh",overflow:"hidden",display:"flex",flexDirection:"column",position:"relative",fontFamily:o.FontFamily.MONOSPACE,lineHeight:"20px",color:e.fgPrimaryColor},dragTargetRoot:{cursor:"copy"},dragTarget:{boxSizing:"border-box",position:"absolute",top:0,left:0,width:"100%",height:"100%",border:`5px dashed ${e.selectionPrimaryColor}`,pointerEvents:"none"},contentContainer:{position:"relative",display:"flex",overflow:"hidden",flexDirection:"column",flex:1},landingContainer:{display:"flex",alignItems:"center",justifyContent:"center",flex:1},landingMessage:{maxWidth:600},landingP:{marginBottom:16},hide:{display:"none"},browseButtonContainer:{display:"flex",alignItems:"center",justifyContent:"center"},browseButton:{marginBottom:16,height:72,flex:1,maxWidth:256,textAlign:"center",fontSize:o.FontSize.BIG_BUTTON,lineHeight:"72px",background:e.selectionPrimaryColor,color:e.altFgPrimaryColor,transition:`all ${o.Duration.HOVER_CHANGE} ease-in`,":hover":{background:e.selectionSecondaryColor}},link:{color:e.selectionPrimaryColor,cursor:"pointer",textDecoration:"none",transition:`all ${o.Duration.HOVER_CHANGE} ease-in`,":hover":{color:e.selectionSecondaryColor}}})); -},{"preact":"aSor","aphrodite":"CxN7","./style":"hvr4","../lib/emscripten":"FbpF","./sandwich-view":"L8J2","../lib/file-format":"Xzb6","./flamechart-view-container":"PJJu","./toolbar":"BPHY","../lib/js-source-map":"bv0g","./themes/theme":"gzKG","../lib/view-mode":"dpTI","../app-state":"LDQe","../lib/preact-helpers":"Hete","_bundle_loader":"TUK3","../import":[["import.bcbb2033.js","uRa7"],"import.bcbb2033.js.map","uRa7"],"../lib/demangle-cpp":[["demangle-cpp.1768f4cc.js","bS28"],"demangle-cpp.1768f4cc.js.map","bS28"],"source-map":[["source-map.438fa06b.js","aRf0"],"source-map.438fa06b.js.map","aRf0"],"../../sample/profiles/stackcollapse/perf-vertx-stacks-01-collapsed-all.txt":"ThNa"}],"A6uO":[function(require,module,exports) { -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ApplicationContainer=void 0;var e=require("preact"),t=require("../app-state/getters"),o=require("preact/compat"),r=require("../app-state/active-profile-state"),a=require("./themes/theme"),i=require("../app-state"),s=require("../lib/atom"),n=require("./search-view"),m=require("./application");const u=(0,o.memo)(()=>{const u=(0,s.useAtom)(i.glCanvasAtom),l=(0,a.useTheme)(),p=(0,o.useMemo)(()=>u?(0,t.getCanvasContext)({theme:l,canvas:u}):null,[l,u]);return(0,e.h)(n.ProfileSearchContextProvider,null,(0,e.h)(m.Application,{activeProfileState:(0,r.useActiveProfileState)(),canvasContext:p,setGLCanvas:i.glCanvasAtom.set,setLoading:i.loadingAtom.set,setError:i.errorAtom.set,setProfileGroup:i.profileGroupAtom.setProfileGroup,setDragActive:i.dragActiveAtom.set,setViewMode:i.viewModeAtom.set,setFlattenRecursion:i.flattenRecursionAtom.set,setProfileIndexToView:i.profileGroupAtom.setProfileIndexToView,profileGroup:(0,s.useAtom)(i.profileGroupAtom),theme:l,flattenRecursion:(0,s.useAtom)(i.flattenRecursionAtom),viewMode:(0,s.useAtom)(i.viewModeAtom),hashParams:(0,s.useAtom)(i.hashParamsAtom),glCanvas:u,dragActive:(0,s.useAtom)(i.dragActiveAtom),loading:(0,s.useAtom)(i.loadingAtom),error:(0,s.useAtom)(i.errorAtom)}))});exports.ApplicationContainer=u; -},{"preact":"aSor","../app-state/getters":"zEXv","preact/compat":"AQ6k","../app-state/active-profile-state":"MY42","./themes/theme":"gzKG","../app-state":"LDQe","../lib/atom":"QkVE","./search-view":"t9CM","./application":"wCGh"}],"K5F6":[function(require,module,exports) { -"use strict";var e=require("preact"),o=require("./views/application-container"),d=require("./views/themes/theme");console.log(`speedscope v${require("../package.json").version}`),module.hot&&(module.hot.dispose(()=>{(0,e.render)((0,e.h)("div",null),document.body,document.body.lastElementChild||void 0)}),module.hot.accept()),(0,e.render)((0,e.h)(d.ThemeProvider,null,(0,e.h)(o.ApplicationContainer,null)),document.body,document.body.lastElementChild||void 0); -},{"preact":"aSor","./views/application-container":"A6uO","./views/themes/theme":"gzKG","../package.json":"EHrm"}],"Yi9z":[function(require,module,exports) { -module.exports=function(n){return new Promise(function(e,o){var r=document.createElement("script");r.async=!0,r.type="text/javascript",r.charset="utf-8",r.src=n,r.onerror=function(n){r.onerror=r.onload=null,o(n)},r.onload=function(){r.onerror=r.onload=null,e()},document.getElementsByTagName("head")[0].appendChild(r)})}; -},{}],0:[function(require,module,exports) { -var b=require("TUK3");b.register("js",require("Yi9z")); -},{}]},{},[0,"K5F6"], null) -//# sourceMappingURL=speedscope.6f107512.js.map \ No newline at end of file +parcelRequire = (function (e, r, t, n) { + var i, + o = 'function' == typeof parcelRequire && parcelRequire, + u = 'function' == typeof require && require + function f(t, n) { + if (!r[t]) { + if (!e[t]) { + var i = 'function' == typeof parcelRequire && parcelRequire + if (!n && i) return i(t, !0) + if (o) return o(t, !0) + if (u && 'string' == typeof t) return u(t) + var c = new Error("Cannot find module '" + t + "'") + throw ((c.code = 'MODULE_NOT_FOUND'), c) + } + ;(p.resolve = function (r) { + return e[t][1][r] || r + }), + (p.cache = {}) + var l = (r[t] = new f.Module(t)) + e[t][0].call(l.exports, p, l, l.exports, this) + } + return r[t].exports + function p(e) { + return f(p.resolve(e)) + } + } + ;(f.isParcelRequire = !0), + (f.Module = function (e) { + ;(this.id = e), (this.bundle = f), (this.exports = {}) + }), + (f.modules = e), + (f.cache = r), + (f.parent = o), + (f.register = function (r, t) { + e[r] = [ + function (e, r) { + r.exports = t + }, + {}, + ] + }) + for (var c = 0; c < t.length; c++) + try { + f(t[c]) + } catch (e) { + i || (i = e) + } + if (t.length) { + var l = f(t[t.length - 1]) + 'object' == typeof exports && 'undefined' != typeof module + ? (module.exports = l) + : 'function' == typeof define && define.amd + ? define(function () { + return l + }) + : n && (this[n] = l) + } + if (((parcelRequire = f), i)) throw i + return f +})( + { + aSor: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.render = L), + (exports.hydrate = M), + (exports.h = exports.createElement = a), + (exports.Fragment = v), + (exports.createRef = h), + (exports.Component = y), + (exports.cloneElement = F), + (exports.createContext = R), + (exports.toChildArray = C), + (exports._unmount = W), + (exports.options = exports.isValidElement = void 0) + var e, + t, + n, + o, + _, + l, + r, + i, + u = {}, + s = [], + c = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i + function p(e, t) { + for (var n in t) e[n] = t[n] + return e + } + function f(e) { + var t = e.parentNode + t && t.removeChild(e) + } + function a(e, t, n) { + var o, + _ = arguments, + l = {} + for (o in t) 'key' !== o && 'ref' !== o && (l[o] = t[o]) + if (arguments.length > 3) for (n = [n], o = 3; o < arguments.length; o++) n.push(_[o]) + if ((null != n && (l.children = n), 'function' == typeof e && null != e.defaultProps)) + for (o in e.defaultProps) void 0 === l[o] && (l[o] = e.defaultProps[o]) + return d(e, l, t && t.key, t && t.ref, null) + } + function d(t, n, o, _, l) { + var r = { + type: t, + props: n, + key: o, + ref: _, + __k: null, + __: null, + __b: 0, + __e: null, + __d: void 0, + __c: null, + constructor: void 0, + __v: l, + } + return null == l && (r.__v = r), e.vnode && e.vnode(r), r + } + function h() { + return {} + } + function v(e) { + return e.children + } + function y(e, t) { + ;(this.props = e), (this.context = t) + } + function m(e, t) { + if (null == t) return e.__ ? m(e.__, e.__.__k.indexOf(e) + 1) : null + for (var n; t < e.__k.length; t++) if (null != (n = e.__k[t]) && null != n.__e) return n.__e + return 'function' == typeof e.type ? m(e) : null + } + function k(e) { + var t, n + if (null != (e = e.__) && null != e.__c) { + for (e.__e = e.__c.base = null, t = 0; t < e.__k.length; t++) + if (null != (n = e.__k[t]) && null != n.__e) { + e.__e = e.__c.base = n.__e + break + } + return k(e) + } + } + function g(t) { + ;((!t.__d && (t.__d = !0) && n.push(t) && !o++) || l !== e.debounceRendering) && + ((l = e.debounceRendering) || _)(x) + } + function x() { + for (var e; (o = n.length); ) + (e = n.sort(function (e, t) { + return e.__v.__b - t.__v.__b + })), + (n = []), + e.some(function (e) { + var t, n, o, _, l, r, i + e.__d && + ((r = (l = (t = e).__v).__e), + (i = t.__P) && + ((n = []), + ((o = p({}, l)).__v = o), + (_ = N(i, l, o, t.__n, void 0 !== i.ownerSVGElement, null, n, null == r ? m(l) : r)), + U(n, l), + _ != r && k(l))) + }) + } + function b(e, t, n, o, _, l, r, i, c) { + var p, + a, + d, + h, + v, + y, + k, + g = (n && n.__k) || s, + x = g.length + if ( + (i == u && (i = null != l ? l[0] : x ? m(n, 0) : null), + (p = 0), + (t.__k = C(t.__k, function (n) { + if (null != n) { + if ( + ((n.__ = t), (n.__b = t.__b + 1), null === (d = g[p]) || (d && n.key == d.key && n.type === d.type)) + ) + g[p] = void 0 + else + for (a = 0; a < x; a++) { + if ((d = g[a]) && n.key == d.key && n.type === d.type) { + g[a] = void 0 + break + } + d = null + } + if ( + ((h = N(e, n, (d = d || u), o, _, l, r, i, c)), + (a = n.ref) && + d.ref != a && + (k || (k = []), d.ref && k.push(d.ref, null, n), k.push(a, n.__c || h, n)), + null != h) + ) { + var s + if ((null == y && (y = h), void 0 !== n.__d)) (s = n.__d), (n.__d = void 0) + else if (l == d || h != i || null == h.parentNode) { + e: if (null == i || i.parentNode !== e) e.appendChild(h), (s = null) + else { + for (v = i, a = 0; (v = v.nextSibling) && a < x; a += 2) if (v == h) break e + e.insertBefore(h, i), (s = i) + } + 'option' == t.type && (e.value = '') + } + ;(i = void 0 !== s ? s : h.nextSibling), 'function' == typeof t.type && (t.__d = i) + } else i && d.__e == i && i.parentNode != e && (i = m(d)) + } + return p++, n + })), + (t.__e = y), + null != l && 'function' != typeof t.type) + ) + for (p = l.length; p--; ) null != l[p] && f(l[p]) + for (p = x; p--; ) null != g[p] && W(g[p], g[p]) + if (k) for (p = 0; p < k.length; p++) T(k[p], k[++p], k[++p]) + } + function C(e, t, n) { + if ((null == n && (n = []), null == e || 'boolean' == typeof e)) t && n.push(t(null)) + else if (Array.isArray(e)) for (var o = 0; o < e.length; o++) C(e[o], t, n) + else + n.push( + t + ? t( + 'string' == typeof e || 'number' == typeof e + ? d(null, e, null, null, e) + : null != e.__e || null != e.__c + ? d(e.type, e.props, e.key, null, e.__v) + : e, + ) + : e, + ) + return n + } + function w(e, t, n, o, _) { + var l + for (l in n) 'children' === l || 'key' === l || l in t || P(e, l, null, n[l], o) + for (l in t) + (_ && 'function' != typeof t[l]) || + 'children' === l || + 'key' === l || + 'value' === l || + 'checked' === l || + n[l] === t[l] || + P(e, l, t[l], n[l], o) + } + function S(e, t, n) { + '-' === t[0] + ? e.setProperty(t, n) + : (e[t] = 'number' == typeof n && !1 === c.test(t) ? n + 'px' : null == n ? '' : n) + } + function P(e, t, n, o, _) { + var l, r, i, u, s + if ((_ ? 'className' === t && (t = 'class') : 'class' === t && (t = 'className'), 'style' === t)) + if (((l = e.style), 'string' == typeof n)) l.cssText = n + else { + if (('string' == typeof o && ((l.cssText = ''), (o = null)), o)) for (u in o) (n && u in n) || S(l, u, '') + if (n) for (s in n) (o && n[s] === o[s]) || S(l, s, n[s]) + } + else + 'o' === t[0] && 'n' === t[1] + ? ((r = t !== (t = t.replace(/Capture$/, ''))), + (i = t.toLowerCase()), + (t = (i in e ? i : t).slice(2)), + n ? (o || e.addEventListener(t, E, r), ((e.l || (e.l = {}))[t] = n)) : e.removeEventListener(t, E, r)) + : 'list' !== t && 'tagName' !== t && 'form' !== t && 'type' !== t && 'size' !== t && !_ && t in e + ? (e[t] = null == n ? '' : n) + : 'function' != typeof n && + 'dangerouslySetInnerHTML' !== t && + (t !== (t = t.replace(/^xlink:?/, '')) + ? null == n || !1 === n + ? e.removeAttributeNS('http://www.w3.org/1999/xlink', t.toLowerCase()) + : e.setAttributeNS('http://www.w3.org/1999/xlink', t.toLowerCase(), n) + : null == n || (!1 === n && !/^ar/.test(t)) + ? e.removeAttribute(t) + : e.setAttribute(t, n)) + } + function E(t) { + this.l[t.type](e.event ? e.event(t) : t) + } + function N(t, n, o, _, l, r, i, u, s) { + var c, + f, + a, + d, + h, + m, + k, + g, + x, + C, + w = n.type + if (void 0 !== n.constructor) return null + ;(c = e.__b) && c(n) + try { + e: if ('function' == typeof w) { + if ( + ((g = n.props), + (x = (c = w.contextType) && _[c.__c]), + (C = c ? (x ? x.props.value : c.__) : _), + o.__c + ? (k = (f = n.__c = o.__c).__ = f.__E) + : ('prototype' in w && w.prototype.render + ? (n.__c = f = new w(g, C)) + : ((n.__c = f = new y(g, C)), (f.constructor = w), (f.render = A)), + x && x.sub(f), + (f.props = g), + f.state || (f.state = {}), + (f.context = C), + (f.__n = _), + (a = f.__d = !0), + (f.__h = [])), + null == f.__s && (f.__s = f.state), + null != w.getDerivedStateFromProps && + (f.__s == f.state && (f.__s = p({}, f.__s)), p(f.__s, w.getDerivedStateFromProps(g, f.__s))), + (d = f.props), + (h = f.state), + a) + ) + null == w.getDerivedStateFromProps && null != f.componentWillMount && f.componentWillMount(), + null != f.componentDidMount && f.__h.push(f.componentDidMount) + else { + if ( + (null == w.getDerivedStateFromProps && + g !== d && + null != f.componentWillReceiveProps && + f.componentWillReceiveProps(g, C), + (!f.__e && null != f.shouldComponentUpdate && !1 === f.shouldComponentUpdate(g, f.__s, C)) || + (n.__v === o.__v && !f.__)) + ) { + for ( + f.props = g, + f.state = f.__s, + n.__v !== o.__v && (f.__d = !1), + f.__v = n, + n.__e = o.__e, + n.__k = o.__k, + f.__h.length && i.push(f), + c = 0; + c < n.__k.length; + c++ + ) + n.__k[c] && (n.__k[c].__ = n) + break e + } + null != f.componentWillUpdate && f.componentWillUpdate(g, f.__s, C), + null != f.componentDidUpdate && + f.__h.push(function () { + f.componentDidUpdate(d, h, m) + }) + } + ;(f.context = C), + (f.props = g), + (f.state = f.__s), + (c = e.__r) && c(n), + (f.__d = !1), + (f.__v = n), + (f.__P = t), + (c = f.render(f.props, f.state, f.context)), + (n.__k = null != c && c.type == v && null == c.key ? c.props.children : Array.isArray(c) ? c : [c]), + null != f.getChildContext && (_ = p(p({}, _), f.getChildContext())), + a || null == f.getSnapshotBeforeUpdate || (m = f.getSnapshotBeforeUpdate(d, h)), + b(t, n, o, _, l, r, i, u, s), + (f.base = n.__e), + f.__h.length && i.push(f), + k && (f.__E = f.__ = null), + (f.__e = !1) + } else + null == r && n.__v === o.__v + ? ((n.__k = o.__k), (n.__e = o.__e)) + : (n.__e = D(o.__e, n, o, _, l, r, i, s)) + ;(c = e.diffed) && c(n) + } catch (t) { + ;(n.__v = null), e.__e(t, n, o) + } + return n.__e + } + function U(t, n) { + e.__c && e.__c(n, t), + t.some(function (n) { + try { + ;(t = n.__h), + (n.__h = []), + t.some(function (e) { + e.call(n) + }) + } catch (t) { + e.__e(t, n.__v) + } + }) + } + function D(e, t, n, o, _, l, r, i) { + var c, + p, + f, + a, + d, + h = n.props, + v = t.props + if (((_ = 'svg' === t.type || _), null != l)) + for (c = 0; c < l.length; c++) + if (null != (p = l[c]) && ((null === t.type ? 3 === p.nodeType : p.localName === t.type) || e == p)) { + ;(e = p), (l[c] = null) + break + } + if (null == e) { + if (null === t.type) return document.createTextNode(v) + ;(e = _ + ? document.createElementNS('http://www.w3.org/2000/svg', t.type) + : document.createElement(t.type, v.is && {is: v.is})), + (l = null), + (i = !1) + } + if (null === t.type) h !== v && e.data != v && (e.data = v) + else { + if ( + (null != l && (l = s.slice.call(e.childNodes)), + (f = (h = n.props || u).dangerouslySetInnerHTML), + (a = v.dangerouslySetInnerHTML), + !i) + ) { + if (h === u) + for (h = {}, d = 0; d < e.attributes.length; d++) h[e.attributes[d].name] = e.attributes[d].value + ;(a || f) && ((a && f && a.__html == f.__html) || (e.innerHTML = (a && a.__html) || '')) + } + w(e, v, h, _, i), + a + ? (t.__k = []) + : ((t.__k = t.props.children), b(e, t, n, o, 'foreignObject' !== t.type && _, l, r, u, i)), + i || + ('value' in v && void 0 !== (c = v.value) && c !== e.value && P(e, 'value', c, h.value, !1), + 'checked' in v && void 0 !== (c = v.checked) && c !== e.checked && P(e, 'checked', c, h.checked, !1)) + } + return e + } + function T(t, n, o) { + try { + 'function' == typeof t ? t(n) : (t.current = n) + } catch (t) { + e.__e(t, o) + } + } + function W(t, n, o) { + var _, l, r + if ( + (e.unmount && e.unmount(t), + (_ = t.ref) && ((_.current && _.current !== t.__e) || T(_, null, n)), + o || 'function' == typeof t.type || (o = null != (l = t.__e)), + (t.__e = t.__d = void 0), + null != (_ = t.__c)) + ) { + if (_.componentWillUnmount) + try { + _.componentWillUnmount() + } catch (t) { + e.__e(t, n) + } + _.base = _.__P = null + } + if ((_ = t.__k)) for (r = 0; r < _.length; r++) _[r] && W(_[r], n, o) + null != l && f(l) + } + function A(e, t, n) { + return this.constructor(e, n) + } + function L(t, n, o) { + var _, l, i + e.__ && e.__(t, n), + (l = (_ = o === r) ? null : (o && o.__k) || n.__k), + (t = a(v, null, [t])), + (i = []), + N( + n, + ((_ ? n : o || n).__k = t), + l || u, + u, + void 0 !== n.ownerSVGElement, + o && !_ ? [o] : l ? null : s.slice.call(n.childNodes), + i, + o || u, + _, + ), + U(i, t) + } + function M(e, t) { + L(e, t, r) + } + function F(e, t) { + var n, o + for (o in ((t = p(p({}, e.props), t)), + arguments.length > 2 && (t.children = s.slice.call(arguments, 2)), + (n = {}), + t)) + 'key' !== o && 'ref' !== o && (n[o] = t[o]) + return d(e.type, n, t.key || e.key, t.ref || e.ref, null) + } + function R(e) { + var t = {}, + n = { + __c: '__cC' + i++, + __: e, + Consumer: function (e, t) { + return e.children(t) + }, + Provider: function (e) { + var o, + _ = this + return ( + this.getChildContext || + ((o = []), + (this.getChildContext = function () { + return (t[n.__c] = _), t + }), + (this.shouldComponentUpdate = function (e) { + _.props.value !== e.value && + o.some(function (t) { + ;(t.context = e.value), g(t) + }) + }), + (this.sub = function (e) { + o.push(e) + var t = e.componentWillUnmount + e.componentWillUnmount = function () { + o.splice(o.indexOf(e), 1), t && t.call(e) + } + })), + e.children + ) + }, + } + return (n.Consumer.contextType = n), (n.Provider.__ = n), n + } + ;(exports.isValidElement = t), + (exports.options = e), + (exports.options = e = + { + __e: function (e, t) { + for (var n, o; (t = t.__); ) + if ((n = t.__c) && !n.__) + try { + if ( + (n.constructor && + null != n.constructor.getDerivedStateFromError && + ((o = !0), n.setState(n.constructor.getDerivedStateFromError(e))), + null != n.componentDidCatch && ((o = !0), n.componentDidCatch(e)), + o) + ) + return g((n.__E = n)) + } catch (t) { + e = t + } + throw e + }, + }), + (exports.isValidElement = t = + function (e) { + return null != e && void 0 === e.constructor + }), + (y.prototype.setState = function (e, t) { + var n + ;(n = this.__s !== this.state ? this.__s : (this.__s = p({}, this.state))), + 'function' == typeof e && (e = e(n, this.props)), + e && p(n, e), + null != e && this.__v && (t && this.__h.push(t), g(this)) + }), + (y.prototype.forceUpdate = function (e) { + this.__v && ((this.__e = !0), e && this.__h.push(e), g(this)) + }), + (y.prototype.render = v), + (n = []), + (o = 0), + (_ = 'function' == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout), + (r = u), + (i = 0) + }, + {}, + ], + ucYa: [ + function (require, module, exports) { + 'use strict' + function t(t) { + return t[t.length - 1] || null + } + function e(t, e) { + t.sort(function (t, r) { + const n = e(t), + o = e(r) + return n < o ? -1 : n > o ? 1 : 0 + }) + } + function r(t, e, r) { + return t.has(e) || t.set(e, r(e)), t.get(e) + } + function n(t, e, r) { + return t.has(e) ? t.get(e) : r(e) + } + function o(t, e) { + if (!t.has(e)) throw new Error(`Expected key ${e}`) + return t.get(e) + } + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.lastOf = t), + (exports.sortBy = e), + (exports.getOrInsert = r), + (exports.getOrElse = n), + (exports.getOrThrow = o), + (exports.itMap = l), + (exports.itForEach = u), + (exports.itReduce = i), + (exports.zeroPad = c), + (exports.formatPercent = a), + (exports.fract = f), + (exports.triangle = h), + (exports.findValueBisect = g), + (exports.findIndexBisect = p), + (exports.noop = x), + (exports.objectsHaveShallowEquality = d), + (exports.memoizeByShallowEquality = y), + (exports.memoizeByReference = w), + (exports.lazyStatic = E), + (exports.decodeBase64 = A), + (exports.KeyedSet = void 0) + class s { + constructor() { + this.map = new Map() + } + getOrInsert(t) { + const e = t.key, + r = this.map.get(e) + return r || (this.map.set(e, t), t) + } + forEach(t) { + this.map.forEach(t) + } + [Symbol.iterator]() { + return this.map.values() + } + } + function* l(t, e) { + for (let r of t) yield e(r) + } + function u(t, e) { + for (let r of t) e(r) + } + function i(t, e, r) { + let n = r + for (let o of t) n = e(n, o) + return n + } + function c(t, e) { + return new Array(Math.max(e - t.length, 0) + 1).join('0') + t + } + function a(t) { + let e = `${t.toFixed(0)}%` + return ( + 100 === t + ? (e = '100%') + : t > 99 + ? (e = '>99%') + : t < 0.01 + ? (e = '<0.01%') + : t < 1 + ? (e = `${t.toFixed(2)}%`) + : t < 10 && (e = `${t.toFixed(1)}%`), + e + ) + } + function f(t) { + return t - Math.floor(t) + } + function h(t) { + return 2 * Math.abs(f(t) - 0.5) - 1 + } + function g(t, e, r, n, o = 1) { + for (console.assert(!isNaN(o) && !isNaN(n)); ; ) { + if (e - t <= o) return [t, e] + const s = (e + t) / 2 + r(s) < n ? (t = s) : (e = s) + } + } + function p(t, e) { + if (0 === t.length) return -1 + let r = 0, + n = t.length - 1 + for (; n !== r; ) { + const o = Math.floor((r + n) / 2) + e(t[o]) ? (n = o) : (r = o + 1) + } + return e(t[n]) ? n : -1 + } + function x(...t) {} + function d(t, e) { + for (let r in t) if (t[r] !== e[r]) return !1 + for (let r in e) if (t[r] !== e[r]) return !1 + return !0 + } + function y(t) { + let e = null + return (r) => { + let n + return null == e + ? ((n = t(r)), (e = {args: r, result: n}), n) + : d(e.args, r) + ? e.result + : ((e.args = r), (e.result = t(r)), e.result) + } + } + function w(t) { + let e = null + return (r) => { + let n + return null == e + ? ((n = t(r)), (e = {args: r, result: n}), n) + : e.args === r + ? e.result + : ((e.args = r), (e.result = t(r)), e.result) + } + } + function E(t) { + let e = null + return () => (null == e && (e = {result: t()}), e.result) + } + exports.KeyedSet = s + const m = E(() => { + const t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', + e = new Map() + for (let r = 0; r < t.length; r++) e.set(t.charAt(r), r) + return e.set('=', -1), e + }) + function A(t) { + const e = m() + if (t.length % 4 != 0) + throw new Error( + `Invalid length for base64 encoded string. Expected length % 4 = 0, got length = ${t.length}`, + ) + const r = t.length / 4 + let n + n = + t.length >= 4 && '=' === t.charAt(t.length - 1) + ? '=' === t.charAt(t.length - 2) + ? 3 * r - 2 + : 3 * r - 1 + : 3 * r + const o = new Uint8Array(n) + let s = 0 + for (let l = 0; l < r; l++) { + const r = t.charAt(4 * l + 0), + n = t.charAt(4 * l + 1), + u = t.charAt(4 * l + 2), + i = t.charAt(4 * l + 3), + c = e.get(r), + a = e.get(n), + f = e.get(u), + h = e.get(i) + if (null == c || null == a || null == f || null == h) + throw new Error(`Invalid quartet at indices ${4 * l} .. ${4 * l + 3}: ${t.substring(4 * l, 4 * l + 3)}`) + ;(o[s++] = (c << 2) | (a >> 4)), + '=' !== u && (o[s++] = ((15 & a) << 4) | (f >> 2)), + '=' !== i && (o[s++] = ((7 & f) << 6) | h) + } + if (s !== n) throw new Error(`Expected to decode ${n} bytes, but only decoded ${s})`) + return o + } + }, + {}, + ], + EhY8: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.LRUCache = exports.List = void 0) + class t { + constructor(t) { + ;(this.data = t), (this.prev = null), (this.next = null) + } + } + class e { + constructor() { + ;(this.head = null), (this.tail = null), (this.size = 0) + } + getHead() { + return this.head + } + getTail() { + return this.tail + } + getSize() { + return this.size + } + append(t) { + this.tail ? ((this.tail.next = t), (t.prev = this.tail), (this.tail = t)) : (this.head = this.tail = t), + this.size++ + } + prepend(t) { + return ( + this.head ? ((this.head.prev = t), (t.next = this.head), (this.head = t)) : (this.head = this.tail = t), + this.size++, + t + ) + } + pop() { + if (this.tail) { + const t = this.tail + return ( + t.prev ? ((this.tail = t.prev), (this.tail.next = null)) : (this.head = this.tail = null), + this.size--, + (t.prev = null), + t + ) + } + return null + } + dequeue() { + if (this.head) { + const t = this.head + return ( + t.next ? ((this.head = t.next), (this.head.prev = null)) : (this.head = this.tail = null), + this.size--, + (t.next = null), + t + ) + } + return null + } + remove(t) { + null == t.prev + ? this.dequeue() + : null == t.next + ? this.pop() + : ((t.next.prev = t.prev), (t.prev.next = t.next), (t.next = null), (t.prev = null), this.size--) + } + } + exports.List = e + class i { + constructor(t) { + ;(this.capacity = t), (this.list = new e()), (this.map = new Map()) + } + has(t) { + return this.map.has(t) + } + get(t) { + const e = this.map.get(t) + return e ? (this.list.remove(e.listNode), this.list.prepend(e.listNode), e ? e.value : null) : null + } + getSize() { + return this.list.getSize() + } + getCapacity() { + return this.capacity + } + insert(e, i) { + const s = this.map.get(e) + for (s && this.list.remove(s.listNode); this.list.getSize() >= this.capacity; ) + this.map.delete(this.list.pop().data) + const h = this.list.prepend(new t(e)) + this.map.set(e, {value: i, listNode: h}) + } + getOrInsert(t, e) { + let i = this.get(t) + return null == i && ((i = e(t)), this.insert(t, i)), i + } + removeLRU() { + const t = this.list.pop() + if (!t) return null + const e = t.data, + i = this.map.get(e).value + return this.map.delete(e), [e, i] + } + clear() { + ;(this.list = new e()), (this.map = new Map()) + } + } + exports.LRUCache = i + }, + {}, + ], + tDuZ: [ + function (require, module, exports) { + 'use strict' + function t(t, i, s) { + return t < i ? i : t > s ? s : t + } + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.clamp = t), + (exports.Rect = exports.AffineTransform = exports.Vec2 = void 0) + class i { + constructor(t, i) { + ;(this.x = t), (this.y = i) + } + withX(t) { + return new i(t, this.y) + } + withY(t) { + return new i(this.x, t) + } + plus(t) { + return new i(this.x + t.x, this.y + t.y) + } + minus(t) { + return new i(this.x - t.x, this.y - t.y) + } + times(t) { + return new i(this.x * t, this.y * t) + } + timesPointwise(t) { + return new i(this.x * t.x, this.y * t.y) + } + dividedByPointwise(t) { + return new i(this.x / t.x, this.y / t.y) + } + dot(t) { + return this.x * t.x + this.y * t.y + } + equals(t) { + return this.x === t.x && this.y === t.y + } + approxEquals(t, i = 1e-9) { + return Math.abs(this.x - t.x) < i && Math.abs(this.y - t.y) < i + } + length2() { + return this.dot(this) + } + length() { + return Math.sqrt(this.length2()) + } + abs() { + return new i(Math.abs(this.x), Math.abs(this.y)) + } + static min(t, s) { + return new i(Math.min(t.x, s.x), Math.min(t.y, s.y)) + } + static max(t, s) { + return new i(Math.max(t.x, s.x), Math.max(t.y, s.y)) + } + static clamp(s, e, r) { + return new i(t(s.x, e.x, r.x), t(s.y, e.y, r.y)) + } + flatten() { + return [this.x, this.y] + } + } + ;(exports.Vec2 = i), (i.zero = new i(0, 0)), (i.unit = new i(1, 1)) + class s { + constructor(t = 1, i = 0, s = 0, e = 0, r = 1, n = 0) { + ;(this.m00 = t), (this.m01 = i), (this.m02 = s), (this.m10 = e), (this.m11 = r), (this.m12 = n) + } + withScale(t) { + let {m00: i, m01: e, m02: r, m10: n, m11: h, m12: m} = this + return (i = t.x), (h = t.y), new s(i, e, r, n, h, m) + } + static withScale(t) { + return new s().withScale(t) + } + scaledBy(t) { + return s.withScale(t).times(this) + } + getScale() { + return new i(this.m00, this.m11) + } + withTranslation(t) { + let {m00: i, m01: e, m02: r, m10: n, m11: h, m12: m} = this + return (r = t.x), (m = t.y), new s(i, e, r, n, h, m) + } + static withTranslation(t) { + return new s().withTranslation(t) + } + getTranslation() { + return new i(this.m02, this.m12) + } + translatedBy(t) { + return s.withTranslation(t).times(this) + } + static betweenRects(t, e) { + return s + .withTranslation(t.origin.times(-1)) + .scaledBy(new i(e.size.x / t.size.x, e.size.y / t.size.y)) + .translatedBy(e.origin) + } + times(t) { + const i = this.m00 * t.m00 + this.m01 * t.m10, + e = this.m00 * t.m01 + this.m01 * t.m11, + r = this.m00 * t.m02 + this.m01 * t.m12 + this.m02, + n = this.m10 * t.m00 + this.m11 * t.m10, + h = this.m10 * t.m01 + this.m11 * t.m11, + m = this.m10 * t.m02 + this.m11 * t.m12 + this.m12 + return new s(i, e, r, n, h, m) + } + equals(t) { + return ( + this.m00 == t.m00 && + this.m01 == t.m01 && + this.m02 == t.m02 && + this.m10 == t.m10 && + this.m11 == t.m11 && + this.m12 == t.m12 + ) + } + approxEquals(t, i = 1e-9) { + return ( + Math.abs(this.m00 - t.m00) < i && + Math.abs(this.m01 - t.m01) < i && + Math.abs(this.m02 - t.m02) < i && + Math.abs(this.m10 - t.m10) < i && + Math.abs(this.m11 - t.m11) < i && + Math.abs(this.m12 - t.m12) < i + ) + } + timesScalar(t) { + const {m00: i, m01: e, m02: r, m10: n, m11: h, m12: m} = this + return new s(t * i, t * e, t * r, t * n, t * h, t * m) + } + det() { + const {m00: t, m01: i, m02: s, m10: e, m11: r, m12: n} = this + return t * (1 * r - 0 * n) - i * (1 * e - 0 * n) + s * (0 * e - 0 * r) + } + adj() { + const {m00: t, m01: i, m02: e, m10: r, m11: n, m12: h} = this + return new s( + +(1 * n - 0 * h), + -(1 * i - 0 * e), + +(i * h - e * n), + -(1 * r - 0 * h), + +(1 * t - 0 * e), + -(t * h - e * r), + ) + } + inverted() { + const t = this.det() + return 0 === t ? null : this.adj().timesScalar(1 / t) + } + transformVector(t) { + return new i(t.x * this.m00 + t.y * this.m01, t.x * this.m10 + t.y * this.m11) + } + inverseTransformVector(t) { + const i = this.inverted() + return i ? i.transformVector(t) : null + } + transformPosition(t) { + return new i(t.x * this.m00 + t.y * this.m01 + this.m02, t.x * this.m10 + t.y * this.m11 + this.m12) + } + inverseTransformPosition(t) { + const i = this.inverted() + return i ? i.transformPosition(t) : null + } + transformRect(t) { + const i = this.transformVector(t.size), + s = this.transformPosition(t.origin) + return i.x < 0 && i.y < 0 + ? new e(s.plus(i), i.abs()) + : i.x < 0 + ? new e(s.withX(s.x + i.x), i.abs()) + : i.y < 0 + ? new e(s.withY(s.y + i.y), i.abs()) + : new e(s, i) + } + inverseTransformRect(t) { + const i = this.inverted() + return i ? i.transformRect(t) : null + } + flatten() { + return [this.m00, this.m10, 0, this.m01, this.m11, 0, this.m02, this.m12, 1] + } + } + exports.AffineTransform = s + class e { + constructor(t, i) { + ;(this.origin = t), (this.size = i) + } + isEmpty() { + return 0 == this.width() || 0 == this.height() + } + width() { + return this.size.x + } + height() { + return this.size.y + } + left() { + return this.origin.x + } + right() { + return this.left() + this.width() + } + top() { + return this.origin.y + } + bottom() { + return this.top() + this.height() + } + topLeft() { + return this.origin + } + topRight() { + return this.origin.plus(new i(this.width(), 0)) + } + bottomRight() { + return this.origin.plus(this.size) + } + bottomLeft() { + return this.origin.plus(new i(0, this.height())) + } + withOrigin(t) { + return new e(t, this.size) + } + withSize(t) { + return new e(this.origin, t) + } + closestPointTo(s) { + return new i(t(s.x, this.left(), this.right()), t(s.y, this.top(), this.bottom())) + } + distanceFrom(t) { + return t.minus(this.closestPointTo(t)).length() + } + contains(t) { + return 0 === this.distanceFrom(t) + } + hasIntersectionWith(t) { + const i = Math.max(this.top(), t.top()) + if (Math.max(i, Math.min(this.bottom(), t.bottom())) - i == 0) return !1 + const s = Math.max(this.left(), t.left()) + return Math.max(s, Math.min(this.right(), t.right())) - s != 0 + } + intersectWith(t) { + const s = i.max(this.topLeft(), t.topLeft()), + r = i.max(s, i.min(this.bottomRight(), t.bottomRight())) + return new e(s, r.minus(s)) + } + equals(t) { + return this.origin.equals(t.origin) && this.size.equals(t.size) + } + approxEquals(t) { + return this.origin.approxEquals(t.origin) && this.size.approxEquals(t.size) + } + area() { + return this.size.x * this.size.y + } + } + ;(exports.Rect = e), + (e.empty = new e(i.zero, i.zero)), + (e.unit = new e(i.zero, i.unit)), + (e.NDC = new e(new i(-1, -1), new i(2, 2))) + }, + {}, + ], + pBGv: [ + function (require, module, exports) { + var t, + e, + n = (module.exports = {}) + function r() { + throw new Error('setTimeout has not been defined') + } + function o() { + throw new Error('clearTimeout has not been defined') + } + function i(e) { + if (t === setTimeout) return setTimeout(e, 0) + if ((t === r || !t) && setTimeout) return (t = setTimeout), setTimeout(e, 0) + try { + return t(e, 0) + } catch (n) { + try { + return t.call(null, e, 0) + } catch (n) { + return t.call(this, e, 0) + } + } + } + function u(t) { + if (e === clearTimeout) return clearTimeout(t) + if ((e === o || !e) && clearTimeout) return (e = clearTimeout), clearTimeout(t) + try { + return e(t) + } catch (n) { + try { + return e.call(null, t) + } catch (n) { + return e.call(this, t) + } + } + } + !(function () { + try { + t = 'function' == typeof setTimeout ? setTimeout : r + } catch (n) { + t = r + } + try { + e = 'function' == typeof clearTimeout ? clearTimeout : o + } catch (n) { + e = o + } + })() + var c, + s = [], + l = !1, + a = -1 + function f() { + l && c && ((l = !1), c.length ? (s = c.concat(s)) : (a = -1), s.length && h()) + } + function h() { + if (!l) { + var t = i(f) + l = !0 + for (var e = s.length; e; ) { + for (c = s, s = []; ++a < e; ) c && c[a].run() + ;(a = -1), (e = s.length) + } + ;(c = null), (l = !1), u(t) + } + } + function m(t, e) { + ;(this.fun = t), (this.array = e) + } + function p() {} + ;(n.nextTick = function (t) { + var e = new Array(arguments.length - 1) + if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n] + s.push(new m(t, e)), 1 !== s.length || l || i(h) + }), + (m.prototype.run = function () { + this.fun.apply(null, this.array) + }), + (n.title = 'browser'), + (n.env = {}), + (n.argv = []), + (n.version = ''), + (n.versions = {}), + (n.on = p), + (n.addListener = p), + (n.once = p), + (n.off = p), + (n.removeListener = p), + (n.removeAllListeners = p), + (n.emit = p), + (n.prependListener = p), + (n.prependOnceListener = p), + (n.listeners = function (t) { + return [] + }), + (n.binding = function (t) { + throw new Error('process.binding is not supported') + }), + (n.cwd = function () { + return '/' + }), + (n.chdir = function (t) { + throw new Error('process.chdir is not supported') + }), + (n.umask = function () { + return 0 + }) + }, + {}, + ], + XGYN: [ + function (require, module, exports) { + var process = require('process') + var t = require('process') + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.WebGL = exports.Graphics = void 0) + const e = void 0 !== t && t.env && !0 + function i(t) { + if (!e && !t) throw new Error('Assertion failed.') + } + function r(t, e) { + ;-1 === t.indexOf(e) && t.push(e) + } + function s(t, e) { + const i = t.indexOf(e) + ;-1 !== i && t.splice(i, 1) + } + function n(t, e) { + return i(e >= 0 && e <= 31), t.TEXTURE0 + e + } + var h, a + ;(exports.Graphics = h), + (function (t) { + t.Rect = class { + constructor(t = 0, e = 0, i = 0, r = 0) { + ;(this.x = t), (this.y = e), (this.width = i), (this.height = r) + } + set(t, e, i, r) { + ;(this.x = t), (this.y = e), (this.width = i), (this.height = r) + } + equals(t) { + return this.x === t.x && this.y === t.y && this.width === t.width && this.height === t.height + } + } + class e { + constructor(t, e, i, r) { + ;(this.redF = t), (this.greenF = e), (this.blueF = i), (this.alphaF = r) + } + equals(t) { + return ( + this.redF === t.redF && this.greenF === t.greenF && this.blueF === t.blueF && this.alphaF === t.alphaF + ) + } + } + let i, r, s, n, h + ;(e.TRANSPARENT = new e(0, 0, 0, 0)), + (t.Color = e), + (function (t) { + ;(t[(t.ZERO = 0)] = 'ZERO'), + (t[(t.ONE = 1)] = 'ONE'), + (t[(t.SOURCE_COLOR = 2)] = 'SOURCE_COLOR'), + (t[(t.TARGET_COLOR = 3)] = 'TARGET_COLOR'), + (t[(t.INVERSE_SOURCE_COLOR = 4)] = 'INVERSE_SOURCE_COLOR'), + (t[(t.INVERSE_TARGET_COLOR = 5)] = 'INVERSE_TARGET_COLOR'), + (t[(t.SOURCE_ALPHA = 6)] = 'SOURCE_ALPHA'), + (t[(t.TARGET_ALPHA = 7)] = 'TARGET_ALPHA'), + (t[(t.INVERSE_SOURCE_ALPHA = 8)] = 'INVERSE_SOURCE_ALPHA'), + (t[(t.INVERSE_TARGET_ALPHA = 9)] = 'INVERSE_TARGET_ALPHA'), + (t[(t.CONSTANT = 10)] = 'CONSTANT'), + (t[(t.INVERSE_CONSTANT = 11)] = 'INVERSE_CONSTANT') + })((i = t.BlendOperation || (t.BlendOperation = {}))), + (function (t) { + ;(t[(t.TRIANGLES = 0)] = 'TRIANGLES'), (t[(t.TRIANGLE_STRIP = 1)] = 'TRIANGLE_STRIP') + })((r = t.Primitive || (t.Primitive = {}))) + function a(t) { + return t == s.FLOAT ? 4 : 1 + } + ;(t.Context = class { + constructor() { + this.resizeEventHandlers = new Set() + } + setCopyBlendState() { + this.setBlendState(i.ONE, i.ZERO) + } + setAddBlendState() { + this.setBlendState(i.ONE, i.ONE) + } + setPremultipliedBlendState() { + this.setBlendState(i.ONE, i.INVERSE_SOURCE_ALPHA) + } + setUnpremultipliedBlendState() { + this.setBlendState(i.SOURCE_ALPHA, i.INVERSE_SOURCE_ALPHA) + } + addAfterResizeEventHandler(t) { + this.resizeEventHandlers.add(t) + } + removeAfterResizeEventHandler(t) { + this.resizeEventHandlers.delete(t) + } + }), + (function (t) { + ;(t[(t.FLOAT = 0)] = 'FLOAT'), (t[(t.BYTE = 1)] = 'BYTE') + })((s = t.AttributeType || (t.AttributeType = {}))), + (t.attributeByteLength = a) + class _ { + constructor(t, e, i, r) { + ;(this.name = t), (this.type = e), (this.count = i), (this.byteOffset = r) + } + } + t.Attribute = _ + t.VertexFormat = class { + constructor() { + ;(this._attributes = []), (this._stride = 0) + } + get attributes() { + return this._attributes + } + get stride() { + return this._stride + } + add(t, e, i) { + return this.attributes.push(new _(t, e, i, this.stride)), (this._stride += i * a(e)), this + } + } + ;(t.VertexBuffer = class { + uploadFloat32Array(t) { + this.upload(new Uint8Array(t.buffer), 0) + } + uploadFloats(t) { + this.uploadFloat32Array(new Float32Array(t)) + } + }), + (function (t) { + ;(t[(t.NEAREST = 0)] = 'NEAREST'), (t[(t.LINEAR = 1)] = 'LINEAR') + })((n = t.PixelFilter || (t.PixelFilter = {}))), + (function (t) { + ;(t[(t.REPEAT = 0)] = 'REPEAT'), (t[(t.CLAMP = 1)] = 'CLAMP') + })((h = t.PixelWrap || (t.PixelWrap = {}))) + class o { + constructor(t, e, i) { + ;(this.minFilter = t), (this.magFilter = e), (this.wrap = i) + } + } + ;(o.LINEAR_CLAMP = new o(n.LINEAR, n.LINEAR, h.CLAMP)), + (o.LINEAR_MIN_NEAREST_MAG_CLAMP = new o(n.LINEAR, n.NEAREST, h.CLAMP)), + (o.NEAREST_CLAMP = new o(n.NEAREST, n.NEAREST, h.CLAMP)), + (t.TextureFormat = o) + })(h || (exports.Graphics = h = {})), + (exports.WebGL = a), + (function (t) { + class a extends h.Context { + get widthInPixels() { + return this._width + } + get heightInPixels() { + return this._height + } + constructor(t = document.createElement('canvas')) { + super(), + (this._attributeCount = 0), + (this._blendOperations = 0), + (this._contextResetHandlers = []), + (this._currentClearColor = h.Color.TRANSPARENT), + (this._currentRenderTarget = null), + (this._defaultViewport = new h.Rect()), + (this._forceStateUpdate = !0), + (this._generation = 1), + (this._height = 0), + (this._oldBlendOperations = 0), + (this._oldRenderTarget = null), + (this._oldViewport = new h.Rect()), + (this._width = 0), + (this.handleWebglContextRestored = () => { + ;(this._attributeCount = 0), + (this._currentClearColor = h.Color.TRANSPARENT), + (this._forceStateUpdate = !0), + this._generation++ + for (let t of this._contextResetHandlers) t() + }), + (this.ANGLE_instanced_arrays = null), + (this.ANGLE_instanced_arrays_generation = -1) + let e = t.getContext('webgl', { + alpha: !1, + antialias: !1, + depth: !1, + preserveDrawingBuffer: !1, + stencil: !1, + }) + if (null == e) throw new Error('Setup failure') + this._gl = e + let i = t.style + ;(t.width = 0), + (t.height = 0), + (i.width = i.height = '0'), + t.addEventListener('webglcontextlost', (t) => { + t.preventDefault() + }), + t.addEventListener('webglcontextrestored', this.handleWebglContextRestored), + (this._blendOperationMap = { + [h.BlendOperation.ZERO]: this._gl.ZERO, + [h.BlendOperation.ONE]: this._gl.ONE, + [h.BlendOperation.SOURCE_COLOR]: this._gl.SRC_COLOR, + [h.BlendOperation.TARGET_COLOR]: this._gl.DST_COLOR, + [h.BlendOperation.INVERSE_SOURCE_COLOR]: this._gl.ONE_MINUS_SRC_COLOR, + [h.BlendOperation.INVERSE_TARGET_COLOR]: this._gl.ONE_MINUS_DST_COLOR, + [h.BlendOperation.SOURCE_ALPHA]: this._gl.SRC_ALPHA, + [h.BlendOperation.TARGET_ALPHA]: this._gl.DST_ALPHA, + [h.BlendOperation.INVERSE_SOURCE_ALPHA]: this._gl.ONE_MINUS_SRC_ALPHA, + [h.BlendOperation.INVERSE_TARGET_ALPHA]: this._gl.ONE_MINUS_DST_ALPHA, + [h.BlendOperation.CONSTANT]: this._gl.CONSTANT_COLOR, + [h.BlendOperation.INVERSE_CONSTANT]: this._gl.ONE_MINUS_CONSTANT_COLOR, + }) + } + testContextLoss() { + this.handleWebglContextRestored() + } + get gl() { + return this._gl + } + get generation() { + return this._generation + } + addContextResetHandler(t) { + r(this._contextResetHandlers, t) + } + removeContextResetHandler(t) { + s(this._contextResetHandlers, t) + } + get currentRenderTarget() { + return this._currentRenderTarget + } + beginFrame() { + this.setRenderTarget(null) + } + endFrame() {} + setBlendState(t, e) { + this._blendOperations = a._packBlendModes(t, e) + } + setViewport(t, e, i, r) { + ;(null != this._currentRenderTarget ? this._currentRenderTarget.viewport : this._defaultViewport).set( + t, + e, + i, + r, + ) + } + get viewport() { + return null != this._currentRenderTarget ? this._currentRenderTarget.viewport : this._defaultViewport + } + get renderTargetWidthInPixels() { + return null != this._currentRenderTarget ? this._currentRenderTarget.viewport.width : this._width + } + get renderTargetHeightInPixels() { + return null != this._currentRenderTarget ? this._currentRenderTarget.viewport.height : this._height + } + draw(t, e, i) { + this._updateRenderTargetAndViewport(), + f.from(e).prepare(), + R.from(i).prepare(), + this._updateFormat(e.format), + this._updateBlendState(), + this._gl.drawArrays( + t == h.Primitive.TRIANGLES ? this._gl.TRIANGLES : this._gl.TRIANGLE_STRIP, + 0, + Math.floor(i.byteCount / e.format.stride), + ), + (this._forceStateUpdate = !1) + } + resize(t, e, i, r) { + let s = this._gl.canvas + const n = s.getBoundingClientRect() + if (this._width === t && this._height === e && n.width === i && n.height === r) return + let h = s.style + ;(s.width = t), + (s.height = e), + (h.width = `${i}px`), + (h.height = `${r}px`), + this.setViewport(0, 0, t, e), + (this._width = t), + (this._height = e), + this.resizeEventHandlers.forEach((t) => t()) + } + clear(t) { + this._updateRenderTargetAndViewport(), + this._updateBlendState(), + t.equals(this._currentClearColor) || + (this._gl.clearColor(t.redF, t.greenF, t.blueF, t.alphaF), (this._currentClearColor = t)), + this._gl.clear(this._gl.COLOR_BUFFER_BIT) + } + setRenderTarget(t) { + this._currentRenderTarget = A.from(t) + } + createMaterial(t, e, i) { + let r = new f(this, t, e, i) + return r.program, r + } + createVertexBuffer(t) { + return i(t > 0 && t % 4 == 0), new R(this, t) + } + createTexture(t, e, i, r) { + return new p(this, t, e, i, r) + } + createRenderTarget(t) { + return new A(this, p.from(t)) + } + getANGLE_instanced_arrays() { + if ( + (this.ANGLE_instanced_arrays_generation !== this._generation && (this.ANGLE_instanced_arrays = null), + !this.ANGLE_instanced_arrays && + ((this.ANGLE_instanced_arrays = this.gl.getExtension('ANGLE_instanced_arrays')), + !this.ANGLE_instanced_arrays)) + ) + throw new Error('Failed to get extension ANGLE_instanced_arrays') + return this.ANGLE_instanced_arrays + } + _updateRenderTargetAndViewport() { + let t = this._currentRenderTarget, + e = null != t ? t.viewport : this._defaultViewport, + i = this._gl + ;(this._forceStateUpdate || this._oldRenderTarget != t) && + (i.bindFramebuffer(i.FRAMEBUFFER, t ? t.framebuffer : null), (this._oldRenderTarget = t)), + (!this._forceStateUpdate && this._oldViewport.equals(e)) || + (i.viewport(e.x, this.renderTargetHeightInPixels - e.y - e.height, e.width, e.height), + this._oldViewport.set(e.x, e.y, e.width, e.height)) + } + _updateBlendState() { + if (this._forceStateUpdate || this._oldBlendOperations != this._blendOperations) { + let t = this._gl, + e = this._blendOperations, + r = this._oldBlendOperations, + s = 15 & e, + n = e >> 4 + i(s in this._blendOperationMap), + i(n in this._blendOperationMap), + e == a.COPY_BLEND_OPERATIONS + ? t.disable(t.BLEND) + : ((this._forceStateUpdate || r == a.COPY_BLEND_OPERATIONS) && t.enable(t.BLEND), + t.blendFunc(this._blendOperationMap[s], this._blendOperationMap[n])), + (this._oldBlendOperations = e) + } + } + _updateFormat(t) { + let e = this._gl, + i = t.attributes, + r = i.length + for (let s = 0; s < r; s++) { + let r = i[s], + n = r.type == h.AttributeType.BYTE + e.vertexAttribPointer(s, r.count, n ? e.UNSIGNED_BYTE : e.FLOAT, n, t.stride, r.byteOffset) + } + for (; this._attributeCount < r; ) + e.enableVertexAttribArray(this._attributeCount), this._attributeCount++ + for (; this._attributeCount > r; ) + this._attributeCount--, e.disableVertexAttribArray(this._attributeCount) + this._attributeCount = r + } + getWebGLInfo() { + const t = this.gl.getExtension('WEBGL_debug_renderer_info') + return { + renderer: t ? this.gl.getParameter(t.UNMASKED_RENDERER_WEBGL) : null, + vendor: t ? this.gl.getParameter(t.UNMASKED_VENDOR_WEBGL) : null, + version: this.gl.getParameter(this.gl.VERSION), + } + } + static from(t) { + return i(null == t || t instanceof a), t + } + static _packBlendModes(t, e) { + return t | (e << 4) + } + } + ;(a.COPY_BLEND_OPERATIONS = a._packBlendModes(h.BlendOperation.ONE, h.BlendOperation.ZERO)), (t.Context = a) + class _ { + constructor(t, e, i = 0, r = null, s = !0) { + ;(this._material = t), + (this._name = e), + (this._generation = i), + (this._location = r), + (this._isDirty = s) + } + get location() { + let t = a.from(this._material.context) + if ( + this._generation != t.generation && + ((this._location = t.gl.getUniformLocation(this._material.program, this._name)), + (this._generation = t.generation), + !e) + ) { + let e = this._material.program, + r = t.gl + for (let t = 0, s = r.getProgramParameter(e, r.ACTIVE_UNIFORMS); t < s; t++) { + let s = r.getActiveUniform(e, t) + if (s && s.name == this._name) + switch ((i(1 == s.size), s.type)) { + case r.FLOAT: + i(this instanceof o) + break + case r.FLOAT_MAT3: + i(this instanceof E) + break + case r.FLOAT_VEC2: + i(this instanceof u) + break + case r.FLOAT_VEC3: + i(this instanceof c) + break + case r.FLOAT_VEC4: + i(this instanceof d) + break + case r.INT: + i(this instanceof l) + break + case r.SAMPLER_2D: + i(this instanceof g) + break + default: + i(!1) + } + } + } + if (!this._location) throw new Error('Failed to get uniform location') + return this._location + } + } + class o extends _ { + constructor() { + super(...arguments), (this._x = 0) + } + set(t) { + t != this._x && ((this._x = t), (this._isDirty = !0)) + } + prepare() { + let t = a.from(this._material.context) + ;(this._generation != t.generation || this._isDirty) && + (t.gl.uniform1f(this.location, this._x), (this._isDirty = !1)) + } + } + class l extends _ { + constructor() { + super(...arguments), (this._x = 0) + } + set(t) { + t != this._x && ((this._x = t), (this._isDirty = !0)) + } + prepare() { + let t = a.from(this._material.context) + ;(this._generation != t.generation || this._isDirty) && + (t.gl.uniform1i(this.location, this._x), (this._isDirty = !1)) + } + } + class u extends _ { + constructor() { + super(...arguments), (this._x = 0), (this._y = 0) + } + set(t, e) { + ;(t == this._x && e == this._y) || ((this._x = t), (this._y = e), (this._isDirty = !0)) + } + prepare() { + let t = a.from(this._material.context) + ;(this._generation != t.generation || this._isDirty) && + (t.gl.uniform2f(this.location, this._x, this._y), (this._isDirty = !1)) + } + } + class c extends _ { + constructor() { + super(...arguments), (this._x = 0), (this._y = 0), (this._z = 0) + } + set(t, e, i) { + ;(t == this._x && e == this._y && i == this._z) || + ((this._x = t), (this._y = e), (this._z = i), (this._isDirty = !0)) + } + prepare() { + let t = a.from(this._material.context) + ;(this._generation != t.generation || this._isDirty) && + (t.gl.uniform3f(this.location, this._x, this._y, this._z), (this._isDirty = !1)) + } + } + class d extends _ { + constructor() { + super(...arguments), (this._x = 0), (this._y = 0), (this._z = 0), (this._w = 0) + } + set(t, e, i, r) { + ;(t == this._x && e == this._y && i == this._z && r == this._w) || + ((this._x = t), (this._y = e), (this._z = i), (this._w = r), (this._isDirty = !0)) + } + prepare() { + let t = a.from(this._material.context) + ;(this._generation != t.generation || this._isDirty) && + (t.gl.uniform4f(this.location, this._x, this._y, this._z, this._w), (this._isDirty = !1)) + } + } + class E extends _ { + constructor() { + super(...arguments), (this._values = [1, 0, 0, 0, 1, 0, 0, 0, 1]) + } + set(t, e, i, r, s, n, h, a, _) { + ;(E._cachedValues[0] = t), + (E._cachedValues[1] = r), + (E._cachedValues[2] = h), + (E._cachedValues[3] = e), + (E._cachedValues[4] = s), + (E._cachedValues[5] = a), + (E._cachedValues[6] = i), + (E._cachedValues[7] = n), + (E._cachedValues[8] = _) + for (let o = 0; o < 9; o++) + if (E._cachedValues[o] != this._values[o]) { + let t = this._values + ;(this._values = E._cachedValues), (E._cachedValues = t), (this._isDirty = !0) + break + } + } + prepare() { + let t = a.from(this._material.context) + ;(this._generation != t.generation || this._isDirty) && + (t.gl.uniformMatrix3fv(this.location, !1, this._values), (this._isDirty = !1)) + } + } + E._cachedValues = [1, 0, 0, 0, 1, 0, 0, 0, 1] + class g extends _ { + constructor() { + super(...arguments), (this._texture = null), (this._index = -1) + } + set(t, e) { + ;(this._texture == t && this._index == e) || + ((this._texture = p.from(t)), (this._index = e), (this._isDirty = !0)) + } + prepare() { + let t = a.from(this._material.context), + e = t.gl + i( + null == this._texture || + null == t.currentRenderTarget || + this._texture != t.currentRenderTarget.texture, + ), + (this._generation != t.generation || this._isDirty) && + (e.uniform1i(this.location, this._index), (this._isDirty = !1)), + e.activeTexture(n(e, this._index)), + e.bindTexture( + e.TEXTURE_2D, + null != this._texture && this._texture.width > 0 && this._texture.height > 0 + ? this._texture.texture + : null, + ) + } + } + class f { + constructor(t, e, i, r, s = {}, n = [], h = 0, a = null) { + ;(this._context = t), + (this._format = e), + (this._vertexSource = i), + (this._fragmentSource = r), + (this._uniformsMap = s), + (this._uniformsList = n), + (this._generation = h), + (this._program = a) + } + get context() { + return this._context + } + get format() { + return this._format + } + get vertexSource() { + return this._vertexSource + } + get fragmentSource() { + return this._fragmentSource + } + setUniformFloat(t, e) { + let r = this._uniformsMap[t] || null + null == r && ((r = new o(this, t)), (this._uniformsMap[t] = r), this._uniformsList.push(r)), + i(r instanceof o), + r.set(e) + } + setUniformInt(t, e) { + let r = this._uniformsMap[t] || null + null == r && ((r = new l(this, t)), (this._uniformsMap[t] = r), this._uniformsList.push(r)), + i(r instanceof l), + r.set(e) + } + setUniformVec2(t, e, r) { + let s = this._uniformsMap[t] || null + null == s && ((s = new u(this, t)), (this._uniformsMap[t] = s), this._uniformsList.push(s)), + i(s instanceof u), + s.set(e, r) + } + setUniformVec3(t, e, r, s) { + let n = this._uniformsMap[t] || null + null == n && ((n = new c(this, t)), (this._uniformsMap[t] = n), this._uniformsList.push(n)), + i(n instanceof c), + n.set(e, r, s) + } + setUniformVec4(t, e, r, s, n) { + let h = this._uniformsMap[t] || null + null == h && ((h = new d(this, t)), (this._uniformsMap[t] = h), this._uniformsList.push(h)), + i(h instanceof d), + h.set(e, r, s, n) + } + setUniformMat3(t, e, r, s, n, h, a, _, o, l) { + let u = this._uniformsMap[t] || null + null == u && ((u = new E(this, t)), (this._uniformsMap[t] = u), this._uniformsList.push(u)), + i(u instanceof E), + u.set(e, r, s, n, h, a, _, o, l) + } + setUniformSampler(t, e, r) { + let s = this._uniformsMap[t] || null + null == s && ((s = new g(this, t)), (this._uniformsMap[t] = s), this._uniformsList.push(s)), + i(s instanceof g), + s.set(e, r) + } + get program() { + let t = this._context.gl + if (this._generation != this._context.generation) { + ;(this._program = t.createProgram()), + this._compileShader(t, t.VERTEX_SHADER, this.vertexSource), + this._compileShader(t, t.FRAGMENT_SHADER, this.fragmentSource) + let r = this.format.attributes + for (let e = 0; e < r.length; e++) t.bindAttribLocation(this._program, e, r[e].name) + if ((t.linkProgram(this._program), !t.getProgramParameter(this._program, t.LINK_STATUS))) + throw new Error(`${t.getProgramInfoLog(this._program)}`) + if (((this._generation = this._context.generation), !e)) + for (let e of r) + for (let r = 0, s = t.getProgramParameter(this.program, t.ACTIVE_ATTRIBUTES); r < s; r++) { + let s = t.getActiveAttrib(this.program, r) + if (s && s.name == e.name) + switch ((i(1 == s.size), e.count)) { + case 1: + i(s.type == t.FLOAT) + break + case 2: + i(s.type == t.FLOAT_VEC2) + break + case 3: + i(s.type == t.FLOAT_VEC3) + break + case 4: + i(s.type == t.FLOAT_VEC4) + break + default: + i(!1) + } + } + } + return this._program + } + prepare() { + this._context.gl.useProgram(this.program) + for (let t of this._uniformsList) t.prepare() + } + _compileShader(t, e, i) { + let r = t.createShader(e) + if (!r) throw new Error('Failed to create shader') + if ((t.shaderSource(r, i), t.compileShader(r), !t.getShaderParameter(r, t.COMPILE_STATUS))) + throw new Error(`${t.getShaderInfoLog(r)}`) + if (!this._program) throw new Error('Tried to attach shader before program was created') + t.attachShader(this._program, r) + } + static from(t) { + return i(null == t || t instanceof f), t + } + } + class R extends h.VertexBuffer { + constructor(t, e) { + super(), + (this._generation = 0), + (this._buffer = null), + (this._bytes = null), + (this._isDirty = !0), + (this._dirtyMin = R.INT_MAX), + (this._dirtyMax = 0), + (this._totalMin = R.INT_MAX), + (this._totalMax = 0), + (this._byteCount = 0), + (this._context = t), + (this._byteCount = e), + (this._bytes = new Uint8Array(e)) + } + get context() { + return this._context + } + get byteCount() { + return this._byteCount + } + move(t, e, r) { + i(r >= 0), + i(0 <= t && t + r <= this._byteCount), + i(0 <= e && e + r <= this._byteCount), + this._bytes && + t != e && + 0 != r && + (this._bytes.set(this._bytes.subarray(t, this._byteCount), e), + this._growDirtyRegion(Math.min(t, e), Math.max(t, e) + r)) + } + upload(t, e = 0) { + i(0 <= e && e + t.length <= this._byteCount), + i(null != this._bytes), + this._bytes.set(t, e), + this._growDirtyRegion(e, e + t.length) + } + free() { + this._buffer && this._context.gl.deleteBuffer(this._buffer), (this._generation = 0) + } + prepare() { + let t = this._context.gl + this._generation !== this._context.generation && + ((this._buffer = t.createBuffer()), + (this._generation = this._context.generation), + (this._isDirty = !0)), + t.bindBuffer(t.ARRAY_BUFFER, this._buffer), + this._isDirty && + (t.bufferData(t.ARRAY_BUFFER, this._byteCount, t.DYNAMIC_DRAW), + (this._dirtyMin = this._totalMin), + (this._dirtyMax = this._totalMax), + (this._isDirty = !1)), + this._dirtyMin < this._dirtyMax && + (t.bufferSubData( + t.ARRAY_BUFFER, + this._dirtyMin, + this._bytes.subarray(this._dirtyMin, this._dirtyMax), + ), + (this._dirtyMin = R.INT_MAX), + (this._dirtyMax = 0)) + } + _growDirtyRegion(t, e) { + ;(this._dirtyMin = Math.min(this._dirtyMin, t)), + (this._dirtyMax = Math.max(this._dirtyMax, e)), + (this._totalMin = Math.min(this._totalMin, t)), + (this._totalMax = Math.max(this._totalMax, e)) + } + static from(t) { + return i(null == t || t instanceof R), t + } + } + R.INT_MAX = 2147483647 + class p { + constructor(t, e, i, r, s = null, n = null, h = 0, a = !0, _ = !0) { + ;(this._context = t), + (this._format = e), + (this._width = i), + (this._height = r), + (this._pixels = s), + (this._texture = n), + (this._generation = h), + (this._isFormatDirty = a), + (this._isContentDirty = _) + } + get context() { + return this._context + } + get format() { + return this._format + } + get width() { + return this._width + } + get height() { + return this._height + } + resize(t, e, i = null) { + ;(this._width = t), (this._height = e), (this._pixels = i), (this._isContentDirty = !0) + } + setFormat(t) { + this._format != t && ((this._format = t), (this._isFormatDirty = !0)) + } + get texture() { + let t = this._context.gl + return ( + this._generation != this._context.generation && + ((this._texture = t.createTexture()), + (this._generation = this._context.generation), + (this._isFormatDirty = !0), + (this._isContentDirty = !0)), + this._isFormatDirty && + (t.bindTexture(t.TEXTURE_2D, this._texture), + t.texParameteri( + t.TEXTURE_2D, + t.TEXTURE_MAG_FILTER, + this.format.magFilter == h.PixelFilter.NEAREST ? t.NEAREST : t.LINEAR, + ), + t.texParameteri( + t.TEXTURE_2D, + t.TEXTURE_MIN_FILTER, + this.format.minFilter == h.PixelFilter.NEAREST ? t.NEAREST : t.LINEAR, + ), + t.texParameteri( + t.TEXTURE_2D, + t.TEXTURE_WRAP_S, + this.format.wrap == h.PixelWrap.REPEAT ? t.REPEAT : t.CLAMP_TO_EDGE, + ), + t.texParameteri( + t.TEXTURE_2D, + t.TEXTURE_WRAP_T, + this.format.wrap == h.PixelWrap.REPEAT ? t.REPEAT : t.CLAMP_TO_EDGE, + ), + (this._isFormatDirty = !1)), + this._isContentDirty && + (t.bindTexture(t.TEXTURE_2D, this._texture), + t.texImage2D( + t.TEXTURE_2D, + 0, + t.RGBA, + this._width, + this._height, + 0, + t.RGBA, + t.UNSIGNED_BYTE, + this._pixels, + ), + (this._isContentDirty = !1)), + this._texture + ) + } + free() { + this.texture && (this._context.gl.deleteTexture(this.texture), (this._generation = 0)) + } + static from(t) { + return i(null == t || t instanceof p), t + } + } + class A { + constructor(t, e, i = null, r = 0, s = !0, n = new h.Rect()) { + ;(this._context = t), + (this._texture = e), + (this._framebuffer = i), + (this._generation = r), + (this._isDirty = s), + (this._viewport = n) + } + get context() { + return this._context + } + get texture() { + return this._texture + } + get viewport() { + return this._viewport + } + setColor(t) { + this._texture != t && ((this._texture = p.from(t)), (this._isDirty = !0)) + } + get framebuffer() { + let t = this._context.gl, + e = this._texture.texture + return ( + this._generation != this._context.generation && + ((this._framebuffer = t.createFramebuffer()), + (this._generation = this._context.generation), + (this._isDirty = !0)), + this._isDirty && + (t.bindFramebuffer(t.FRAMEBUFFER, this._framebuffer), + t.framebufferTexture2D(t.FRAMEBUFFER, t.COLOR_ATTACHMENT0, t.TEXTURE_2D, e, 0), + i(t.checkFramebufferStatus(t.FRAMEBUFFER) == t.FRAMEBUFFER_COMPLETE), + (this._isDirty = !1)), + this._framebuffer + ) + } + free() { + this._framebuffer && (this._context.gl.deleteFramebuffer(this._framebuffer), (this._generation = 0)) + } + static from(t) { + return i(null == t || t instanceof A), t + } + } + })(a || (exports.WebGL = a = {})) + }, + {process: 'pBGv'}, + ], + MMP6: [ + function (require, module, exports) { + 'use strict' + function e(e, t, r) { + let {m00: n, m01: o, m02: s, m10: i, m11: f, m12: m} = r + e.setUniformMat3(t, n, o, s, i, f, m, 0, 0, 1) + } + function t(e, t, r) { + e.setUniformVec2(t, r.x, r.y) + } + function r(e, t, r) { + e.setRenderTarget(t), e.setViewport(0, 0, t.texture.width, t.texture.height), r(), e.setRenderTarget(null) + } + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.setUniformAffineTransform = e), + (exports.setUniformVec2 = t), + (exports.renderInto = r) + }, + {}, + ], + UGJH: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.RectangleBatchRenderer = exports.RectangleBatch = void 0) + var e = require('../lib/math'), + t = require('./graphics'), + r = require('./utils') + const i = new t.Graphics.VertexFormat() + i.add('configSpacePos', t.Graphics.AttributeType.FLOAT, 2), i.add('color', t.Graphics.AttributeType.FLOAT, 3) + const s = + '\n uniform mat3 configSpaceToNDC;\n\n attribute vec2 configSpacePos;\n attribute vec3 color;\n varying vec3 vColor;\n\n void main() {\n vColor = color;\n vec2 position = (configSpaceToNDC * vec3(configSpacePos, 1)).xy;\n gl_Position = vec4(position, 1, 1);\n }\n', + n = + '\n precision mediump float;\n varying vec3 vColor;\n\n void main() {\n gl_FragColor = vec4(vColor.rgb, 1);\n }\n' + class o { + constructor(e) { + ;(this.gl = e), (this.rects = []), (this.colors = []), (this.buffer = null) + } + getRectCount() { + return this.rects.length + } + getBuffer() { + if (this.buffer) return this.buffer + const e = [ + [0, 0], + [1, 0], + [0, 1], + [1, 0], + [0, 1], + [1, 1], + ], + t = new Uint8Array(i.stride * e.length * this.rects.length), + r = new Float32Array(t.buffer) + let s = 0 + for (let i = 0; i < this.rects.length; i++) { + const t = this.rects[i], + n = this.colors[i] + for (let i of e) + (r[s++] = t.origin.x + i[0] * t.size.x), + (r[s++] = t.origin.y + i[1] * t.size.y), + (r[s++] = n.r), + (r[s++] = n.g), + (r[s++] = n.b) + } + if (s !== r.length) throw new Error("Buffer expected to be full but wasn't") + return (this.buffer = this.gl.createVertexBuffer(t.length)), this.buffer.upload(t), this.buffer + } + addRect(e, t) { + this.rects.push(e), this.colors.push(t), this.buffer && (this.buffer.free(), (this.buffer = null)) + } + free() { + this.buffer && (this.buffer.free(), (this.buffer = null)) + } + } + exports.RectangleBatch = o + class c { + constructor(e) { + ;(this.gl = e), (this.material = e.createMaterial(i, s, n)) + } + render(i) { + ;(0, r.setUniformAffineTransform)( + this.material, + 'configSpaceToNDC', + (() => { + const t = e.AffineTransform.betweenRects(i.configSpaceSrcRect, i.physicalSpaceDstRect), + r = new e.Vec2(this.gl.viewport.width, this.gl.viewport.height) + return e.AffineTransform.withTranslation(new e.Vec2(-1, 1)) + .times(e.AffineTransform.withScale(new e.Vec2(2, -2).dividedByPointwise(r))) + .times(t) + })(), + ), + this.gl.setUnpremultipliedBlendState(), + this.gl.draw(t.Graphics.Primitive.TRIANGLES, this.material, i.batch.getBuffer()) + } + } + exports.RectangleBatchRenderer = c + }, + {'../lib/math': 'tDuZ', './graphics': 'XGYN', './utils': 'MMP6'}, + ], + x77Y: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.Color = void 0) + var t = require('./math') + class r { + constructor(t = 0, r = 0, s = 0, e = 1) { + ;(this.r = t), (this.g = r), (this.b = s), (this.a = e) + } + static fromLumaChromaHue(s, e, o) { + const i = o / 60, + a = e * (1 - Math.abs((i % 2) - 1)), + [n, h, u] = + i < 1 + ? [e, a, 0] + : i < 2 + ? [a, e, 0] + : i < 3 + ? [0, e, a] + : i < 4 + ? [0, a, e] + : i < 5 + ? [a, 0, e] + : [e, 0, a], + c = s - (0.3 * n + 0.59 * h + 0.11 * u) + return new r((0, t.clamp)(n + c, 0, 1), (0, t.clamp)(h + c, 0, 1), (0, t.clamp)(u + c, 0, 1), 1) + } + static fromCSSHex(t) { + if (7 !== t.length || '#' !== t[0]) throw new Error(`Invalid color input ${t}`) + const s = parseInt(t.substr(1, 2), 16) / 255, + e = parseInt(t.substr(3, 2), 16) / 255, + o = parseInt(t.substr(5, 2), 16) / 255 + if (s < 0 || s > 1 || e < 0 || e > 1 || o < 0 || o > 1) throw new Error(`Invalid color input ${t}`) + return new r(s, e, o) + } + withAlpha(t) { + return new r(this.r, this.g, this.b, t) + } + toCSS() { + return `rgba(${(255 * this.r).toFixed()}, ${(255 * this.g).toFixed()}, ${( + 255 * this.b + ).toFixed()}, ${this.a.toFixed(2)})` + } + } + exports.Color = r + }, + {'./math': 'tDuZ'}, + ], + cFC1: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.RowAtlas = void 0) + var e = require('../lib/lru-cache'), + t = require('./rectangle-batch-renderer'), + r = require('../lib/math'), + i = require('../lib/color'), + c = require('./graphics'), + h = require('./utils') + class a { + constructor(h, a, s) { + ;(this.gl = h), + (this.rectangleBatchRenderer = a), + (this.textureRenderer = s), + (this.texture = h.createTexture(c.Graphics.TextureFormat.NEAREST_CLAMP, 4096, 4096)), + (this.renderTarget = h.createRenderTarget(this.texture)), + (this.rowCache = new e.LRUCache(this.texture.height)), + (this.clearLineBatch = new t.RectangleBatch(h)), + this.clearLineBatch.addRect(r.Rect.unit, new i.Color(0, 0, 0, 0)), + h.addContextResetHandler(() => { + this.rowCache.clear() + }) + } + has(e) { + return this.rowCache.has(e) + } + getResolution() { + return this.texture.width + } + getCapacity() { + return this.texture.height + } + allocateLine(e) { + if (this.rowCache.getSize() < this.rowCache.getCapacity()) { + const t = this.rowCache.getSize() + return this.rowCache.insert(e, t), t + } + { + const [, t] = this.rowCache.removeLRU() + return this.rowCache.insert(e, t), t + } + } + writeToAtlasIfNeeded(e, t) { + ;(0, h.renderInto)(this.gl, this.renderTarget, () => { + for (let i of e) { + let e = this.rowCache.get(i) + if (null != e) continue + e = this.allocateLine(i) + const c = new r.Rect(new r.Vec2(0, e), new r.Vec2(this.texture.width, 1)) + this.rectangleBatchRenderer.render({ + batch: this.clearLineBatch, + configSpaceSrcRect: r.Rect.unit, + physicalSpaceDstRect: c, + }), + t(c, i) + } + }) + } + renderViaAtlas(e, t) { + let i = this.rowCache.get(e) + if (null == i) return !1 + const c = new r.Rect(new r.Vec2(0, i), new r.Vec2(this.texture.width, 1)) + return this.textureRenderer.render({texture: this.texture, srcRect: c, dstRect: t}), !0 + } + } + exports.RowAtlas = a + }, + { + '../lib/lru-cache': 'EhY8', + './rectangle-batch-renderer': 'UGJH', + '../lib/math': 'tDuZ', + '../lib/color': 'x77Y', + './graphics': 'XGYN', + './utils': 'MMP6', + }, + ], + p3j0: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.TextureRenderer = void 0) + var e = require('../lib/math'), + t = require('./graphics'), + r = require('./utils') + const n = + '\n uniform mat3 uvTransform;\n uniform mat3 positionTransform;\n\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n\n void main() {\n vUv = (uvTransform * vec3(uv, 1)).xy;\n gl_Position = vec4((positionTransform * vec3(position, 1)).xy, 0, 1);\n }\n', + i = + '\n precision mediump float;\n\n varying vec2 vUv;\n uniform sampler2D texture;\n\n void main() {\n gl_FragColor = texture2D(texture, vUv);\n }\n' + class s { + constructor(e) { + this.gl = e + const r = new t.Graphics.VertexFormat() + r.add('position', t.Graphics.AttributeType.FLOAT, 2), r.add('uv', t.Graphics.AttributeType.FLOAT, 2) + const s = [ + {pos: [-1, 1], uv: [0, 1]}, + {pos: [1, 1], uv: [1, 1]}, + {pos: [-1, -1], uv: [0, 0]}, + {pos: [1, -1], uv: [1, 0]}, + ], + o = [] + for (let t of s) o.push(t.pos[0]), o.push(t.pos[1]), o.push(t.uv[0]), o.push(t.uv[1]) + ;(this.buffer = e.createVertexBuffer(r.stride * s.length)), + this.buffer.upload(new Uint8Array(new Float32Array(o).buffer)), + (this.material = e.createMaterial(r, n, i)) + } + render(n) { + this.material.setUniformSampler('texture', n.texture, 0), + (0, r.setUniformAffineTransform)( + this.material, + 'uvTransform', + (() => { + const {srcRect: t, texture: r} = n, + i = e.AffineTransform.withTranslation(new e.Vec2(0, 1)) + .times(e.AffineTransform.withScale(new e.Vec2(1, -1))) + .times( + e.AffineTransform.betweenRects( + new e.Rect(e.Vec2.zero, new e.Vec2(r.width, r.height)), + e.Rect.unit, + ), + ) + .transformRect(t) + return e.AffineTransform.betweenRects(e.Rect.unit, i) + })(), + ), + (0, r.setUniformAffineTransform)( + this.material, + 'positionTransform', + (() => { + const {dstRect: t} = n, + {viewport: r} = this.gl, + i = new e.Vec2(r.width, r.height), + s = e.AffineTransform.withScale(new e.Vec2(1, -1)) + .times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero, i), e.Rect.NDC)) + .transformRect(t) + return e.AffineTransform.betweenRects(e.Rect.NDC, s) + })(), + ), + this.gl.setUnpremultipliedBlendState(), + this.gl.draw(t.Graphics.Primitive.TRIANGLE_STRIP, this.material, this.buffer) + } + } + exports.TextureRenderer = s + }, + {'../lib/math': 'tDuZ', './graphics': 'XGYN', './utils': 'MMP6'}, + ], + tdKg: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.ViewportRectangleRenderer = void 0) + var e = require('../lib/color'), + i = require('./graphics'), + r = require('./utils') + const o = new i.Graphics.VertexFormat() + o.add('position', i.Graphics.AttributeType.FLOAT, 2) + const n = '\n attribute vec2 position;\n\n void main() {\n gl_Position = vec4(position, 0, 1);\n }\n', + t = (i) => { + const {r: r, g: o, b: n} = e.Color.fromCSSHex(i.fgSecondaryColor), + t = `${r.toFixed(1)}, ${o.toFixed(1)}, ${n.toFixed(1)}` + return `\n precision mediump float;\n\n uniform mat3 configSpaceToPhysicalViewSpace;\n uniform vec2 physicalSize;\n uniform vec2 physicalOrigin;\n uniform vec2 configSpaceViewportOrigin;\n uniform vec2 configSpaceViewportSize;\n uniform float framebufferHeight;\n\n void main() {\n vec2 origin = (configSpaceToPhysicalViewSpace * vec3(configSpaceViewportOrigin, 1.0)).xy;\n vec2 size = (configSpaceToPhysicalViewSpace * vec3(configSpaceViewportSize, 0.0)).xy;\n\n vec2 halfSize = physicalSize / 2.0;\n\n float borderWidth = 2.0;\n\n origin = floor(origin * halfSize) / halfSize + borderWidth * vec2(1.0, 1.0);\n size = floor(size * halfSize) / halfSize - 2.0 * borderWidth * vec2(1.0, 1.0);\n\n vec2 coord = gl_FragCoord.xy;\n coord.x = coord.x - physicalOrigin.x;\n coord.y = framebufferHeight - coord.y - physicalOrigin.y;\n vec2 clamped = clamp(coord, origin, origin + size);\n vec2 gap = clamped - coord;\n float maxdist = max(abs(gap.x), abs(gap.y));\n\n // TOOD(jlfwong): Could probably optimize this to use mix somehow.\n if (maxdist == 0.0) {\n // Inside viewport rectangle\n gl_FragColor = vec4(0, 0, 0, 0);\n } else if (maxdist < borderWidth) {\n // Inside viewport rectangle at border\n gl_FragColor = vec4(${t}, 0.8);\n } else {\n // Outside viewport rectangle\n gl_FragColor = vec4(${t}, 0.5);\n }\n }\n ` + } + class a { + constructor(e, i) { + this.gl = e + const r = [ + [-1, 1], + [1, 1], + [-1, -1], + [1, -1], + ], + a = [] + for (let o of r) a.push(o[0]), a.push(o[1]) + ;(this.buffer = e.createVertexBuffer(o.stride * r.length)), + this.buffer.upload(new Uint8Array(new Float32Array(a).buffer)), + (this.material = e.createMaterial(o, n, t(i))) + } + render(e) { + ;(0, r.setUniformAffineTransform)( + this.material, + 'configSpaceToPhysicalViewSpace', + e.configSpaceToPhysicalViewSpace, + ), + (0, r.setUniformVec2)(this.material, 'configSpaceViewportOrigin', e.configSpaceViewportRect.origin), + (0, r.setUniformVec2)(this.material, 'configSpaceViewportSize', e.configSpaceViewportRect.size) + const o = this.gl.viewport + this.material.setUniformVec2('physicalOrigin', o.x, o.y), + this.material.setUniformVec2('physicalSize', o.width, o.height), + this.material.setUniformFloat('framebufferHeight', this.gl.renderTargetHeightInPixels), + this.gl.setBlendState( + i.Graphics.BlendOperation.SOURCE_ALPHA, + i.Graphics.BlendOperation.INVERSE_SOURCE_ALPHA, + ), + this.gl.draw(i.Graphics.Primitive.TRIANGLE_STRIP, this.material, this.buffer) + } + } + exports.ViewportRectangleRenderer = a + }, + {'../lib/color': 'x77Y', './graphics': 'XGYN', './utils': 'MMP6'}, + ], + Q0ad: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.FlamechartColorPassRenderer = void 0) + var e = require('../lib/math'), + r = require('./graphics'), + n = require('./utils') + const t = new r.Graphics.VertexFormat() + t.add('position', r.Graphics.AttributeType.FLOAT, 2), t.add('uv', r.Graphics.AttributeType.FLOAT, 2) + const i = + '\n uniform mat3 uvTransform;\n uniform mat3 positionTransform;\n\n attribute vec2 position;\n attribute vec2 uv;\n varying vec2 vUv;\n\n void main() {\n vUv = (uvTransform * vec3(uv, 1)).xy;\n gl_Position = vec4((positionTransform * vec3(position, 1)).xy, 0, 1);\n }\n', + o = (e) => + `\n precision mediump float;\n\n uniform vec2 uvSpacePixelSize;\n uniform float renderOutlines;\n\n varying vec2 vUv;\n uniform sampler2D colorTexture;\n\n // https://en.wikipedia.org/wiki/HSL_and_HSV#From_luma/chroma/hue\n vec3 hcl2rgb(float H, float C, float L) {\n float hPrime = H / 60.0;\n float X = C * (1.0 - abs(mod(hPrime, 2.0) - 1.0));\n vec3 RGB =\n hPrime < 1.0 ? vec3(C, X, 0) :\n hPrime < 2.0 ? vec3(X, C, 0) :\n hPrime < 3.0 ? vec3(0, C, X) :\n hPrime < 4.0 ? vec3(0, X, C) :\n hPrime < 5.0 ? vec3(X, 0, C) :\n vec3(C, 0, X);\n\n float m = L - dot(RGB, vec3(0.30, 0.59, 0.11));\n return RGB + vec3(m, m, m);\n }\n\n float triangle(float x) {\n return 2.0 * abs(fract(x) - 0.5) - 1.0;\n }\n\n ${e}\n\n void main() {\n vec4 here = texture2D(colorTexture, vUv);\n\n if (here.z == 0.0) {\n // Background color\n gl_FragColor = vec4(0, 0, 0, 0);\n return;\n }\n\n // Sample the 4 surrounding pixels in the depth texture to determine\n // if we should draw a boundary here or not.\n vec4 N = texture2D(colorTexture, vUv + vec2(0, uvSpacePixelSize.y));\n vec4 E = texture2D(colorTexture, vUv + vec2(uvSpacePixelSize.x, 0));\n vec4 S = texture2D(colorTexture, vUv + vec2(0, -uvSpacePixelSize.y));\n vec4 W = texture2D(colorTexture, vUv + vec2(-uvSpacePixelSize.x, 0));\n\n // NOTE: For outline checks, we intentionally check both the right\n // and the left to determine if we're an edge. If a rectangle is a single\n // pixel wide, we don't want to render it as an outline, so this method\n // of checking ensures that we don't outline single physical-space\n // pixel width rectangles.\n if (\n renderOutlines > 0.0 &&\n (\n here.y == N.y && here.y != S.y || // Top edge\n here.y == S.y && here.y != N.y || // Bottom edge\n here.x == E.x && here.x != W.x || // Left edge\n here.x == W.x && here.x != E.x\n )\n ) {\n // We're on an edge! Draw transparent.\n gl_FragColor = vec4(0, 0, 0, 0);\n } else {\n // Not on an edge. Draw the appropriate color.\n gl_FragColor = vec4(colorForBucket(here.z), here.a);\n }\n }\n` + class a { + constructor(e, r) { + this.gl = e + const n = [ + {pos: [-1, 1], uv: [0, 1]}, + {pos: [1, 1], uv: [1, 1]}, + {pos: [-1, -1], uv: [0, 0]}, + {pos: [1, -1], uv: [1, 0]}, + ], + a = [] + for (let t of n) a.push(t.pos[0]), a.push(t.pos[1]), a.push(t.uv[0]), a.push(t.uv[1]) + ;(this.buffer = e.createVertexBuffer(t.stride * n.length)), + this.buffer.uploadFloats(a), + (this.material = e.createMaterial(t, i, o(r.colorForBucketGLSL))) + } + render(t) { + const {srcRect: i, rectInfoTexture: o} = t, + a = e.AffineTransform.withTranslation(new e.Vec2(0, 1)) + .times(e.AffineTransform.withScale(new e.Vec2(1, -1))) + .times( + e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero, new e.Vec2(o.width, o.height)), e.Rect.unit), + ) + .transformRect(i), + s = e.AffineTransform.betweenRects(e.Rect.unit, a), + {dstRect: c} = t, + l = new e.Vec2(this.gl.viewport.width, this.gl.viewport.height), + u = e.AffineTransform.withScale(new e.Vec2(1, -1)) + .times(e.AffineTransform.betweenRects(new e.Rect(e.Vec2.zero, l), e.Rect.NDC)) + .transformRect(c), + h = e.AffineTransform.betweenRects(e.Rect.NDC, u), + f = e.Vec2.unit.dividedByPointwise(new e.Vec2(t.rectInfoTexture.width, t.rectInfoTexture.height)) + this.material.setUniformSampler('colorTexture', t.rectInfoTexture, 0), + (0, n.setUniformAffineTransform)(this.material, 'uvTransform', s), + this.material.setUniformFloat('renderOutlines', t.renderOutlines ? 1 : 0), + this.material.setUniformVec2('uvSpacePixelSize', f.x, f.y), + (0, n.setUniformAffineTransform)(this.material, 'positionTransform', h), + this.gl.setUnpremultipliedBlendState(), + this.gl.draw(r.Graphics.Primitive.TRIANGLE_STRIP, this.material, this.buffer) + } + } + exports.FlamechartColorPassRenderer = a + }, + {'../lib/math': 'tDuZ', './graphics': 'XGYN', './utils': 'MMP6'}, + ], + KwET: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.CanvasContext = void 0) + var e = require('./graphics'), + r = require('./rectangle-batch-renderer'), + t = require('./texture-renderer'), + i = require('../lib/math'), + n = require('./overlay-rectangle-renderer'), + s = require('./flamechart-color-pass-renderer'), + o = require('../lib/color') + class a { + constructor(i, a) { + ;(this.animationFrameRequest = null), + (this.beforeFrameHandlers = new Set()), + (this.onBeforeFrame = () => { + ;(this.animationFrameRequest = null), + this.gl.setViewport(0, 0, this.gl.renderTargetWidthInPixels, this.gl.renderTargetHeightInPixels) + const r = o.Color.fromCSSHex(this.theme.bgPrimaryColor) + this.gl.clear(new e.Graphics.Color(r.r, r.g, r.b, r.a)) + for (const e of this.beforeFrameHandlers) e() + }), + (this.gl = new e.WebGL.Context(i)), + (this.rectangleBatchRenderer = new r.RectangleBatchRenderer(this.gl)), + (this.textureRenderer = new t.TextureRenderer(this.gl)), + (this.viewportRectangleRenderer = new n.ViewportRectangleRenderer(this.gl, a)), + (this.flamechartColorPassRenderer = new s.FlamechartColorPassRenderer(this.gl, a)), + (this.theme = a), + this.gl.addAfterResizeEventHandler(this.onBeforeFrame) + const l = this.gl.getWebGLInfo() + l && console.log(`WebGL initialized. renderer: ${l.renderer}, vendor: ${l.vendor}, version: ${l.version}`), + (window.testContextLoss = () => { + this.gl.testContextLoss() + }) + } + addBeforeFrameHandler(e) { + this.beforeFrameHandlers.add(e) + } + removeBeforeFrameHandler(e) { + this.beforeFrameHandlers.delete(e) + } + requestFrame() { + this.animationFrameRequest || (this.animationFrameRequest = requestAnimationFrame(this.onBeforeFrame)) + } + setViewport(e, r) { + const {origin: t, size: i} = e + let n = this.gl.viewport + this.gl.setViewport(t.x, t.y, i.x, i.y), r() + let {x: s, y: o, width: a, height: l} = n + this.gl.setViewport(s, o, a, l) + } + renderBehind(e, r) { + const t = e.getBoundingClientRect(), + n = new i.Rect( + new i.Vec2(t.left * window.devicePixelRatio, t.top * window.devicePixelRatio), + new i.Vec2(t.width * window.devicePixelRatio, t.height * window.devicePixelRatio), + ) + this.setViewport(n, r) + } + } + exports.CanvasContext = a + }, + { + './graphics': 'XGYN', + './rectangle-batch-renderer': 'UGJH', + './texture-renderer': 'p3j0', + '../lib/math': 'tDuZ', + './overlay-rectangle-renderer': 'tdKg', + './flamechart-color-pass-renderer': 'Q0ad', + '../lib/color': 'x77Y', + }, + ], + zEXv: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.getFrameToColorBucket = + exports.getProfileToView = + exports.getRowAtlas = + exports.getCanvasContext = + exports.createGetCSSColorForFrame = + exports.createGetColorBucketForFrame = + void 0) + var e = require('../lib/utils'), + t = require('../gl/row-atlas'), + o = require('../gl/canvas-context') + const r = (0, e.memoizeByReference)((e) => (t) => e.get(t.key) || 0) + exports.createGetColorBucketForFrame = r + const n = (0, e.memoizeByShallowEquality)(({theme: e, frameToColorBucket: t}) => { + const o = r(t) + return (t) => { + const r = o(t) / 255 + return e.colorForBucket(r).toCSS() + } + }) + exports.createGetCSSColorForFrame = n + const a = (0, e.memoizeByShallowEquality)(({theme: e, canvas: t}) => new o.CanvasContext(t, e)) + exports.getCanvasContext = a + const s = (0, e.memoizeByReference)((e) => new t.RowAtlas(e.gl, e.rectangleBatchRenderer, e.textureRenderer)) + exports.getRowAtlas = s + const l = (0, e.memoizeByShallowEquality)(({profile: e, flattenRecursion: t}) => + t ? e.getProfileWithRecursionFlattened() : e, + ) + exports.getProfileToView = l + const c = (0, e.memoizeByReference)((e) => { + const t = [] + function o(e) { + return (e.file || '') + e.name + } + e.forEachFrame((e) => t.push(e)), + t.sort(function (e, t) { + return o(e) > o(t) ? 1 : -1 + }) + const r = new Map() + for (let n = 0; n < t.length; n++) r.set(t[n].key, Math.floor((255 * n) / t.length)) + return r + }) + exports.getFrameToColorBucket = c + }, + {'../lib/utils': 'ucYa', '../gl/row-atlas': 'cFC1', '../gl/canvas-context': 'KwET'}, + ], + MwGB: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.useState = a), + (exports.useReducer = p), + (exports.useEffect = h), + (exports.useLayoutEffect = v), + (exports.useRef = m), + (exports.useImperativeHandle = H), + (exports.useMemo = l), + (exports.useCallback = d), + (exports.useContext = x), + (exports.useDebugValue = y), + (exports.useErrorBoundary = E) + var _, + n, + t, + o = require('preact'), + e = 0, + u = [], + r = o.options.__r, + i = o.options.diffed, + c = o.options.__c, + s = o.options.unmount + function f(_, t) { + o.options.__h && o.options.__h(n, _, e || t), (e = 0) + var u = n.__H || (n.__H = {__: [], __h: []}) + return _ >= u.__.length && u.__.push({}), u.__[_] + } + function a(_) { + return (e = 1), p(A, _) + } + function p(t, o, e) { + var u = f(_++, 2) + return ( + u.__c || + ((u.__c = n), + (u.__ = [ + e ? e(o) : A(void 0, o), + function (_) { + var n = t(u.__[0], _) + u.__[0] !== n && ((u.__[0] = n), u.__c.setState({})) + }, + ])), + u.__ + ) + } + function h(t, e) { + var u = f(_++, 3) + !o.options.__s && q(u.__H, e) && ((u.__ = t), (u.__H = e), n.__H.__h.push(u)) + } + function v(t, e) { + var u = f(_++, 4) + !o.options.__s && q(u.__H, e) && ((u.__ = t), (u.__H = e), n.__h.push(u)) + } + function m(_) { + return ( + (e = 5), + l(function () { + return {current: _} + }, []) + ) + } + function H(_, n, t) { + ;(e = 6), + v( + function () { + 'function' == typeof _ ? _(n()) : _ && (_.current = n()) + }, + null == t ? t : t.concat(_), + ) + } + function l(n, t) { + var o = f(_++, 7) + return q(o.__H, t) ? ((o.__H = t), (o.__h = n), (o.__ = n())) : o.__ + } + function d(_, n) { + return ( + (e = 8), + l(function () { + return _ + }, n) + ) + } + function x(t) { + var o = n.context[t.__c], + e = f(_++, 9) + return (e.__c = t), o ? (null == e.__ && ((e.__ = !0), o.sub(n)), o.props.value) : t.__ + } + function y(_, n) { + o.options.useDebugValue && o.options.useDebugValue(n ? n(_) : _) + } + function E(t) { + var o = f(_++, 10), + e = a() + return ( + (o.__ = t), + n.componentDidCatch || + (n.componentDidCatch = function (_) { + o.__ && o.__(_), e[1](_) + }), + [ + e[0], + function () { + e[1](void 0) + }, + ] + ) + } + function b() { + u.some(function (_) { + if (_.__P) + try { + _.__H.__h.forEach(g), _.__H.__h.forEach(D), (_.__H.__h = []) + } catch (n) { + return (_.__H.__h = []), o.options.__e(n, _.__v), !0 + } + }), + (u = []) + } + function g(_) { + _.t && _.t() + } + function D(_) { + var n = _.__() + 'function' == typeof n && (_.t = n) + } + function q(_, n) { + return ( + !_ || + n.some(function (n, t) { + return n !== _[t] + }) + ) + } + function A(_, n) { + return 'function' == typeof n ? n(_) : n + } + ;(o.options.__r = function (t) { + r && r(t), (_ = 0), (n = t.__c).__H && (n.__H.__h.forEach(g), n.__H.__h.forEach(D), (n.__H.__h = [])) + }), + (o.options.diffed = function (_) { + i && i(_) + var n = _.__c + if (n) { + var e = n.__H + e && + e.__h.length && + ((1 !== u.push(n) && t === o.options.requestAnimationFrame) || + ( + (t = o.options.requestAnimationFrame) || + function (_) { + var n, + t = function () { + clearTimeout(o), cancelAnimationFrame(n), setTimeout(_) + }, + o = setTimeout(t, 100) + 'undefined' != typeof window && (n = requestAnimationFrame(t)) + } + )(b)) + } + }), + (o.options.__c = function (_, n) { + n.some(function (_) { + try { + _.__h.forEach(g), + (_.__h = _.__h.filter(function (_) { + return !_.__ || D(_) + })) + } catch (t) { + n.some(function (_) { + _.__h && (_.__h = []) + }), + (n = []), + o.options.__e(t, _.__v) + } + }), + c && c(_, n) + }), + (o.options.unmount = function (_) { + s && s(_) + var n = _.__c + if (n) { + var t = n.__H + if (t) + try { + t.__.forEach(function (_) { + return _.t && _.t() + }) + } catch (_) { + o.options.__e(_, n.__v) + } + } + }) + }, + {preact: 'aSor'}, + ], + AQ6k: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}) + var e = { + version: !0, + Children: !0, + render: !0, + hydrate: !0, + unmountComponentAtNode: !0, + createPortal: !0, + createFactory: !0, + cloneElement: !0, + isValidElement: !0, + findDOMNode: !0, + PureComponent: !0, + memo: !0, + forwardRef: !0, + unstable_batchedUpdates: !0, + Suspense: !0, + SuspenseList: !0, + lazy: !0, + createElement: !0, + createContext: !0, + createRef: !0, + Fragment: !0, + Component: !0, + } + ;(exports.render = E), + (exports.hydrate = k), + (exports.unmountComponentAtNode = j), + (exports.createPortal = C), + (exports.createFactory = A), + (exports.cloneElement = U), + (exports.isValidElement = S), + (exports.findDOMNode = F), + (exports.memo = i), + (exports.forwardRef = l), + (exports.Suspense = d), + (exports.SuspenseList = v), + (exports.lazy = m), + Object.defineProperty(exports, 'createElement', { + enumerable: !0, + get: function () { + return n.createElement + }, + }), + Object.defineProperty(exports, 'createContext', { + enumerable: !0, + get: function () { + return n.createContext + }, + }), + Object.defineProperty(exports, 'createRef', { + enumerable: !0, + get: function () { + return n.createRef + }, + }), + Object.defineProperty(exports, 'Fragment', { + enumerable: !0, + get: function () { + return n.Fragment + }, + }), + Object.defineProperty(exports, 'Component', { + enumerable: !0, + get: function () { + return n.Component + }, + }), + (exports.unstable_batchedUpdates = + exports.PureComponent = + exports.Children = + exports.version = + exports.default = + void 0) + var t = require('preact/hooks') + Object.keys(t).forEach(function (n) { + 'default' !== n && + '__esModule' !== n && + (Object.prototype.hasOwnProperty.call(e, n) || + Object.defineProperty(exports, n, { + enumerable: !0, + get: function () { + return t[n] + }, + })) + }) + var n = require('preact') + function r(e, t) { + for (var n in t) e[n] = t[n] + return e + } + function o(e, t) { + for (var n in e) if ('__source' !== n && !(n in t)) return !0 + for (var r in t) if ('__source' !== r && e[r] !== t[r]) return !0 + return !1 + } + var u = (function (e) { + var t, n + function r(t) { + var n + return ((n = e.call(this, t) || this).isPureReactComponent = !0), n + } + return ( + (n = e), + ((t = r).prototype = Object.create(n.prototype)), + (t.prototype.constructor = t), + (t.__proto__ = n), + (r.prototype.shouldComponentUpdate = function (e, t) { + return o(this.props, e) || o(this.state, t) + }), + r + ) + })(n.Component) + function i(e, t) { + function u(e) { + var n = this.props.ref, + r = n == e.ref + return !r && n && (n.call ? n(null) : (n.current = null)), t ? !t(this.props, e) || !r : o(this.props, e) + } + function i(t) { + return (this.shouldComponentUpdate = u), (0, n.createElement)(e, r({}, t)) + } + return ( + (i.prototype.isReactComponent = !0), + (i.displayName = 'Memo(' + (e.displayName || e.name) + ')'), + (i.t = !0), + i + ) + } + exports.PureComponent = u + var a = n.options.__b + function l(e) { + function t(t) { + var n = r({}, t) + return delete n.ref, e(n, t.ref) + } + return ( + (t.prototype.isReactComponent = t.t = !0), + (t.displayName = 'ForwardRef(' + (e.displayName || e.name) + ')'), + t + ) + } + n.options.__b = function (e) { + e.type && e.type.t && e.ref && ((e.props.ref = e.ref), (e.ref = null)), a && a(e) + } + var c = function (e, t) { + return e + ? (0, n.toChildArray)(e).reduce(function (e, n, r) { + return e.concat(t(n, r)) + }, []) + : null + }, + p = { + map: c, + forEach: c, + count: function (e) { + return e ? (0, n.toChildArray)(e).length : 0 + }, + only: function (e) { + if (1 !== (e = (0, n.toChildArray)(e)).length) throw new Error('Children.only() expects only one child.') + return e[0] + }, + toArray: n.toChildArray, + }, + s = n.options.__e + function f(e) { + return e && (((e = r({}, e)).__c = null), (e.__k = e.__k && e.__k.map(f))), e + } + function d() { + ;(this.__u = 0), (this.o = null), (this.__b = null) + } + function _(e) { + var t = e.__.__c + return t && t.u && t.u(e) + } + function m(e) { + var t, r, o + function u(u) { + if ( + (t || + (t = e()).then( + function (e) { + r = e.default || e + }, + function (e) { + o = e + }, + ), + o) + ) + throw o + if (!r) throw t + return (0, n.createElement)(r, u) + } + return (u.displayName = 'Lazy'), (u.t = !0), u + } + function v() { + ;(this.i = null), (this.l = null) + } + ;(exports.Children = p), + (n.options.__e = function (e, t, n) { + if (e.then) for (var r, o = t; (o = o.__); ) if ((r = o.__c) && r.__c) return r.__c(e, t.__c) + s(e, t, n) + }), + ((d.prototype = new n.Component()).__c = function (e, t) { + var n = this + null == n.o && (n.o = []), n.o.push(t) + var r = _(n.__v), + o = !1, + u = function () { + o || ((o = !0), r ? r(i) : i()) + } + ;(t.__c = t.componentWillUnmount), + (t.componentWillUnmount = function () { + u(), t.__c && t.__c() + }) + var i = function () { + var e + if (!--n.__u) + for (n.__v.__k[0] = n.state.u, n.setState({u: (n.__b = null)}); (e = n.o.pop()); ) e.forceUpdate() + } + n.__u++ || n.setState({u: (n.__b = n.__v.__k[0])}), e.then(u, u) + }), + (d.prototype.render = function (e, t) { + return ( + this.__b && ((this.__v.__k[0] = f(this.__b)), (this.__b = null)), + [(0, n.createElement)(n.Component, null, t.u ? null : e.children), t.u && e.fallback] + ) + }) + var h = function (e, t, n) { + if ((++n[1] === n[0] && e.l.delete(t), e.props.revealOrder && ('t' !== e.props.revealOrder[0] || !e.l.size))) + for (n = e.i; n; ) { + for (; n.length > 3; ) n.pop()() + if (n[1] < n[0]) break + e.i = n = n[2] + } + } + ;((v.prototype = new n.Component()).u = function (e) { + var t = this, + n = _(t.__v), + r = t.l.get(e) + return ( + r[0]++, + function (o) { + var u = function () { + t.props.revealOrder ? (r.push(o), h(t, e, r)) : o() + } + n ? n(u) : u() + } + ) + }), + (v.prototype.render = function (e) { + ;(this.i = null), (this.l = new Map()) + var t = (0, n.toChildArray)(e.children) + e.revealOrder && 'b' === e.revealOrder[0] && t.reverse() + for (var r = t.length; r--; ) this.l.set(t[r], (this.i = [1, 0, this.i])) + return e.children + }), + (v.prototype.componentDidUpdate = v.prototype.componentDidMount = + function () { + var e = this + e.l.forEach(function (t, n) { + h(e, n, t) + }) + }) + var y = (function () { + function e() {} + var t = e.prototype + return ( + (t.getChildContext = function () { + return this.props.context + }), + (t.render = function (e) { + return e.children + }), + e + ) + })() + function b(e) { + var t = this, + r = e.container, + o = (0, n.createElement)(y, {context: t.context}, e.vnode) + return ( + t.s && t.s !== r && (t.v.parentNode && t.s.removeChild(t.v), (0, n._unmount)(t.h), (t.p = !1)), + e.vnode + ? t.p + ? ((r.__k = t.__k), (0, n.render)(o, r), (t.__k = r.__k)) + : ((t.v = document.createTextNode('')), + (0, n.hydrate)('', r), + r.appendChild(t.v), + (t.p = !0), + (t.s = r), + (0, n.render)(o, r, t.v), + (t.__k = t.v.__k)) + : t.p && (t.v.parentNode && t.s.removeChild(t.v), (0, n._unmount)(t.h)), + (t.h = o), + (t.componentWillUnmount = function () { + t.v.parentNode && t.s.removeChild(t.v), (0, n._unmount)(t.h) + }), + null + ) + } + function C(e, t) { + return (0, n.createElement)(b, {vnode: e, container: t}) + } + var x = + /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/ + n.Component.prototype.isReactComponent = {} + var g = ('undefined' != typeof Symbol && Symbol.for && Symbol.for('react.element')) || 60103 + function E(e, t, r) { + if (null == t.__k) for (; t.firstChild; ) t.removeChild(t.firstChild) + return (0, n.render)(e, t), 'function' == typeof r && r(), e ? e.__c : null + } + function k(e, t, r) { + return (0, n.hydrate)(e, t), 'function' == typeof r && r(), e ? e.__c : null + } + var P = n.options.event + function N(e, t) { + e['UNSAFE_' + t] && + !e[t] && + Object.defineProperty(e, t, { + configurable: !1, + get: function () { + return this['UNSAFE_' + t] + }, + set: function (e) { + this['UNSAFE_' + t] = e + }, + }) + } + n.options.event = function (e) { + P && (e = P(e)), (e.persist = function () {}) + var t = !1, + n = !1, + r = e.stopPropagation + e.stopPropagation = function () { + r.call(e), (t = !0) + } + var o = e.preventDefault + return ( + (e.preventDefault = function () { + o.call(e), (n = !0) + }), + (e.isPropagationStopped = function () { + return t + }), + (e.isDefaultPrevented = function () { + return n + }), + (e.nativeEvent = e) + ) + } + var O = { + configurable: !0, + get: function () { + return this.class + }, + }, + R = n.options.vnode + n.options.vnode = function (e) { + e.$$typeof = g + var t = e.type, + r = e.props + if (t) { + if ( + (r.class != r.className && + ((O.enumerable = 'className' in r), + null != r.className && (r.class = r.className), + Object.defineProperty(r, 'className', O)), + 'function' != typeof t) + ) { + var o, u, i + for (i in (r.defaultValue && + void 0 !== r.value && + (r.value || 0 === r.value || (r.value = r.defaultValue), delete r.defaultValue), + Array.isArray(r.value) && + r.multiple && + 'select' === t && + ((0, n.toChildArray)(r.children).forEach(function (e) { + ;-1 != r.value.indexOf(e.props.value) && (e.props.selected = !0) + }), + delete r.value), + r)) + if ((o = x.test(i))) break + if (o) + for (i in ((u = e.props = {}), r)) u[x.test(i) ? i.replace(/[A-Z0-9]/, '-$&').toLowerCase() : i] = r[i] + } + !(function (t) { + var n = e.type, + r = e.props + if (r && 'string' == typeof n) { + var o = {} + for (var u in r) + /^on(Ani|Tra|Tou)/.test(u) && ((r[u.toLowerCase()] = r[u]), delete r[u]), (o[u.toLowerCase()] = u) + if ( + (o.ondoubleclick && ((r.ondblclick = r[o.ondoubleclick]), delete r[o.ondoubleclick]), + o.onbeforeinput && ((r.onbeforeinput = r[o.onbeforeinput]), delete r[o.onbeforeinput]), + o.onchange && ('textarea' === n || ('input' === n.toLowerCase() && !/^fil|che|ra/i.test(r.type)))) + ) { + var i = o.oninput || 'oninput' + r[i] || ((r[i] = r[o.onchange]), delete r[o.onchange]) + } + } + })(), + 'function' == typeof t && + !t.m && + t.prototype && + (N(t.prototype, 'componentWillMount'), + N(t.prototype, 'componentWillReceiveProps'), + N(t.prototype, 'componentWillUpdate'), + (t.m = !0)) + } + R && R(e) + } + var w = '16.8.0' + function A(e) { + return n.createElement.bind(null, e) + } + function S(e) { + return !!e && e.$$typeof === g + } + function U(e) { + return S(e) ? n.cloneElement.apply(null, arguments) : e + } + function j(e) { + return !!e.__k && ((0, n.render)(null, e), !0) + } + function F(e) { + return (e && (e.base || (1 === e.nodeType && e))) || null + } + exports.version = w + var L = function (e, t) { + return e(t) + } + exports.unstable_batchedUpdates = L + var M = { + useState: t.useState, + useReducer: t.useReducer, + useEffect: t.useEffect, + useLayoutEffect: t.useLayoutEffect, + useRef: t.useRef, + useImperativeHandle: t.useImperativeHandle, + useMemo: t.useMemo, + useCallback: t.useCallback, + useContext: t.useContext, + useDebugValue: t.useDebugValue, + version: '16.8.0', + Children: p, + render: E, + hydrate: E, + unmountComponentAtNode: j, + createPortal: C, + createElement: n.createElement, + createContext: n.createContext, + createFactory: A, + cloneElement: U, + createRef: n.createRef, + Fragment: n.Fragment, + isValidElement: S, + findDOMNode: F, + Component: n.Component, + PureComponent: u, + memo: i, + forwardRef: l, + unstable_batchedUpdates: L, + Suspense: d, + SuspenseList: v, + lazy: m, + } + exports.default = M + }, + {'preact/hooks': 'MwGB', preact: 'aSor'}, + ], + QkVE: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.useAtom = i), (exports.Atom = void 0) + var s = require('preact/hooks') + let t = null, + e = null + class r { + constructor(s, t) { + ;(this.state = s), (this.observers = []), (this.set = this.set.bind(this)), (this.get = this.get.bind(this)) + } + set(s) { + this.state !== s && ((this.state = s), this.observers.forEach((s) => s())) + } + get() { + return this.state + } + subscribe(s) { + this.observers.push(s) + } + unsubscribe(s) { + const t = this.observers.indexOf(s) + ;-1 !== t && this.observers.splice(t, 1) + } + } + function i(t) { + const [e, r] = (0, s.useState)(t.get()) + return ( + (0, s.useLayoutEffect)(() => { + function s() { + r(t.get()) + } + return ( + r(t.get()), + t.subscribe(s), + () => { + t.unsubscribe(s) + } + ) + }, [t]), + e + ) + } + exports.Atom = r + }, + {'preact/hooks': 'MwGB'}, + ], + dpTI: [ + function (require, module, exports) { + 'use strict' + var e + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.ViewMode = void 0), + (exports.ViewMode = e), + (function (e) { + ;(e[(e.CHRONO_FLAME_CHART = 0)] = 'CHRONO_FLAME_CHART'), + (e[(e.LEFT_HEAVY_FLAME_GRAPH = 1)] = 'LEFT_HEAVY_FLAME_GRAPH'), + (e[(e.SANDWICH_VIEW = 2)] = 'SANDWICH_VIEW') + })(e || (exports.ViewMode = e = {})) + }, + {}, + ], + O1pB: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.getHashParams = o) + var e = require('../lib/view-mode') + function r(r) { + switch (r) { + case 'time-ordered': + return e.ViewMode.CHRONO_FLAME_CHART + case 'left-heavy': + return e.ViewMode.LEFT_HEAVY_FLAME_GRAPH + case 'sandwich': + return e.ViewMode.SANDWICH_VIEW + default: + return null + } + } + function o(e = window.location.hash) { + try { + if (!e.startsWith('#')) return {} + const t = e.substr(1).split('&'), + i = {} + for (const e of t) { + let [o, t] = e.split('=') + if (((t = decodeURIComponent(t)), 'profileURL' === o)) i.profileURL = t + else if ('title' === o) i.title = t + else if ('localProfilePath' === o) i.localProfilePath = t + else if ('view' === o) { + const e = r(t) + null !== e ? (i.viewMode = e) : console.error(`Ignoring invalid view specifier: ${t}`) + } + } + return i + } catch (o) { + return console.error('Error when loading hash fragment.'), console.error(o), {} + } + } + }, + {'../lib/view-mode': 'dpTI'}, + ], + uxXA: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.ProfileGroupAtom = exports.FlamechartID = void 0) + var e, + t = require('../lib/atom'), + a = require('../lib/math'), + l = require('../lib/utils') + ;(exports.FlamechartID = e), + (function (e) { + ;(e.LEFT_HEAVY = 'LEFT_HEAVY'), + (e.CHRONO = 'CHRONO'), + (e.SANDWICH_INVERTED_CALLERS = 'SANDWICH_INVERTED_CALLERS'), + (e.SANDWICH_CALLEES = 'SANDWICH_CALLEES') + })(e || (exports.FlamechartID = e = {})) + let i = { + hover: null, + selectedNode: null, + configSpaceViewportRect: a.Rect.empty, + logicalSpaceViewportSize: a.Vec2.zero, + } + class s extends t.Atom { + constructor() { + super(...arguments), + (this.setProfileGroup = (e) => { + this.set({ + name: e.name, + indexToView: e.indexToView, + profiles: e.profiles.map((e) => ({ + profile: e, + chronoViewState: i, + leftHeavyViewState: i, + sandwichViewState: {callerCallee: null}, + })), + }) + }), + (this.setProfileIndexToView = (e) => { + null != this.state && + ((e = (0, a.clamp)(e, 0, this.state.profiles.length - 1)), + this.set(Object.assign(Object.assign({}, this.state), {indexToView: e}))) + }), + (this.setSelectedFrame = (e) => { + if (null == this.state) return + null != this.getActiveProfile() && + this.updateActiveSandwichViewState((t) => + null == e + ? {callerCallee: null} + : {callerCallee: {invertedCallerFlamegraph: i, calleeFlamegraph: i, selectedFrame: e}}, + ) + }) + } + set(e) { + const t = this.state + ;(null != t && null != e && (0, l.objectsHaveShallowEquality)(t, e)) || super.set(e) + } + getActiveProfile() { + var e + return null == this.state + ? null + : this.state.profiles[null === (e = this.state) || void 0 === e ? void 0 : e.indexToView] || null + } + updateActiveProfileState(e) { + if (null == this.state) return + const {indexToView: t, profiles: a} = this.state + this.set(Object.assign(Object.assign({}, this.state), {profiles: a.map((a, l) => (l != t ? a : e(a)))})) + } + updateActiveSandwichViewState(e) { + this.updateActiveProfileState((t) => + Object.assign(Object.assign({}, t), {sandwichViewState: e(t.sandwichViewState)}), + ) + } + updateFlamechartState(t, a) { + switch (t) { + case e.CHRONO: + this.updateActiveProfileState((e) => + Object.assign(Object.assign({}, e), {chronoViewState: a(e.chronoViewState)}), + ) + break + case e.LEFT_HEAVY: + this.updateActiveProfileState((e) => + Object.assign(Object.assign({}, e), {leftHeavyViewState: a(e.leftHeavyViewState)}), + ) + break + case e.SANDWICH_CALLEES: + this.updateActiveSandwichViewState((e) => + Object.assign(Object.assign({}, e), { + callerCallee: + null == e.callerCallee + ? null + : Object.assign(Object.assign({}, e.callerCallee), { + calleeFlamegraph: a(e.callerCallee.calleeFlamegraph), + }), + }), + ) + break + case e.SANDWICH_INVERTED_CALLERS: + this.updateActiveSandwichViewState((e) => + Object.assign(Object.assign({}, e), { + callerCallee: + null == e.callerCallee + ? null + : Object.assign(Object.assign({}, e.callerCallee), { + invertedCallerFlamegraph: a(e.callerCallee.invertedCallerFlamegraph), + }), + }), + ) + } + } + setFlamechartHoveredNode(e, t) { + this.updateFlamechartState(e, (e) => Object.assign(Object.assign({}, e), {hover: t})) + } + setSelectedNode(e, t) { + this.updateFlamechartState(e, (e) => Object.assign(Object.assign({}, e), {selectedNode: t})) + } + setConfigSpaceViewportRect(e, t) { + this.updateFlamechartState(e, (e) => Object.assign(Object.assign({}, e), {configSpaceViewportRect: t})) + } + setLogicalSpaceViewportSize(e, t) { + this.updateFlamechartState(e, (e) => Object.assign(Object.assign({}, e), {logicalSpaceViewportSize: t})) + } + clearHoverNode() { + this.setFlamechartHoveredNode(e.CHRONO, null), + this.setFlamechartHoveredNode(e.LEFT_HEAVY, null), + this.setFlamechartHoveredNode(e.SANDWICH_CALLEES, null), + this.setFlamechartHoveredNode(e.SANDWICH_INVERTED_CALLERS, null) + } + } + exports.ProfileGroupAtom = s + }, + {'../lib/atom': 'QkVE', '../lib/math': 'tDuZ', '../lib/utils': 'ucYa'}, + ], + LDQe: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.tableSortMethodAtom = + exports.SortDirection = + exports.SortField = + exports.errorAtom = + exports.loadingAtom = + exports.canUseXHR = + exports.dragActiveAtom = + exports.glCanvasAtom = + exports.hashParamsAtom = + exports.profileGroupAtom = + exports.viewModeAtom = + exports.searchQueryAtom = + exports.searchIsActiveAtom = + exports.flattenRecursionAtom = + void 0) + var o = require('../lib/atom'), + t = require('../lib/view-mode'), + e = require('../lib/hash-params'), + r = require('./profile-group') + const s = new o.Atom(!1, 'flattenRecursion') + exports.flattenRecursionAtom = s + const n = new o.Atom(!1, 'searchIsActive') + exports.searchIsActiveAtom = n + const i = new o.Atom('', 'searchQueryAtom') + exports.searchQueryAtom = i + const A = new o.Atom(t.ViewMode.CHRONO_FLAME_CHART, 'viewMode') + exports.viewModeAtom = A + const a = new r.ProfileGroupAtom(null, 'profileGroup') + ;(exports.profileGroupAtom = a), + A.subscribe(() => { + a.clearHoverNode() + }) + const p = (0, e.getHashParams)(), + c = new o.Atom(p, 'hashParams') + exports.hashParamsAtom = c + const m = new o.Atom(null, 'glCanvas') + exports.glCanvasAtom = m + const l = new o.Atom(!1, 'dragActive') + exports.dragActiveAtom = l + const x = window.location.protocol, + d = 'http:' === x || 'https:' === x + exports.canUseXHR = d + const u = d && null != p.profileURL, + h = new o.Atom(u, 'loading') + exports.loadingAtom = h + const S = new o.Atom(!1, 'error') + var v, w + ;(exports.errorAtom = S), + (exports.SortField = v), + (function (o) { + ;(o[(o.SYMBOL_NAME = 0)] = 'SYMBOL_NAME'), (o[(o.SELF = 1)] = 'SELF'), (o[(o.TOTAL = 2)] = 'TOTAL') + })(v || (exports.SortField = v = {})), + (exports.SortDirection = w), + (function (o) { + ;(o[(o.ASCENDING = 0)] = 'ASCENDING'), (o[(o.DESCENDING = 1)] = 'DESCENDING') + })(w || (exports.SortDirection = w = {})) + const E = new o.Atom({field: v.SELF, direction: w.DESCENDING}, 'tableSortMethod') + exports.tableSortMethodAtom = E + }, + {'../lib/atom': 'QkVE', '../lib/view-mode': 'dpTI', '../lib/hash-params': 'O1pB', './profile-group': 'uxXA'}, + ], + MY42: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.useActiveProfileState = t) + var e = require('./getters'), + i = require('.'), + r = require('../lib/atom') + function t() { + const t = (0, r.useAtom)(i.flattenRecursionAtom), + o = (0, r.useAtom)(i.profileGroupAtom) + if (!o) return null + if (o.indexToView >= o.profiles.length) return null + const n = o.indexToView, + s = o.profiles[n] + return Object.assign(Object.assign({}, o.profiles[o.indexToView]), { + profile: (0, e.getProfileToView)({profile: s.profile, flattenRecursion: t}), + index: o.indexToView, + }) + } + }, + {'./getters': 'zEXv', '.': 'LDQe', '../lib/atom': 'QkVE'}, + ], + KQrJ: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.colorSchemeAtom = exports.ColorScheme = void 0) + var e, + o = require('../lib/atom') + ;(exports.ColorScheme = e), + (function (e) { + ;(e[(e.SYSTEM = 0)] = 'SYSTEM'), (e[(e.DARK = 1)] = 'DARK'), (e[(e.LIGHT = 2)] = 'LIGHT') + })(e || (exports.ColorScheme = e = {})) + const r = 'speedscope-color-scheme' + function t() { + const o = window.localStorage && window.localStorage[r] + return 'DARK' === o ? e.DARK : 'LIGHT' === o ? e.LIGHT : e.SYSTEM + } + function c() { + return matchMedia('(prefers-color-scheme: dark)') + } + function s(o) { + if (c().matches) + switch (o) { + case e.SYSTEM: + return e.LIGHT + case e.LIGHT: + return e.DARK + case e.DARK: + return e.SYSTEM + } + else + switch (o) { + case e.SYSTEM: + return e.DARK + case e.DARK: + return e.LIGHT + case e.LIGHT: + return e.SYSTEM + } + } + class a extends o.Atom { + constructor() { + super(...arguments), + (this.cycleToNextColorScheme = () => { + this.set(s(this.get())) + }) + } + } + const n = new a(t(), 'colorScheme') + ;(exports.colorSchemeAtom = n), + n.subscribe(() => { + const o = n.get() + switch (o) { + case e.DARK: + window.localStorage[r] = 'DARK' + break + case e.LIGHT: + window.localStorage[r] = 'LIGHT' + break + case e.SYSTEM: + delete window.localStorage[r] + break + default: + return o + } + return o + }) + }, + {'../lib/atom': 'QkVE'}, + ], + osod: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.darkTheme = void 0) + var o, + r = require('../../lib/color'), + e = require('../../lib/utils') + !(function (o) { + ;(o.LIGHTER_GRAY = '#D0D0D0'), + (o.LIGHT_GRAY = '#BDBDBD'), + (o.GRAY = '#666666'), + (o.DARK_GRAY = '#222222'), + (o.DARKER_GRAY = '#0C0C0C'), + (o.OFF_BLACK = '#060606'), + (o.BLACK = '#000000'), + (o.BLUE = '#00769B'), + (o.PALE_BLUE = '#004E75'), + (o.GREEN = '#0F8A42'), + (o.LIGHT_BROWN = '#D6AE24'), + (o.BROWN = '#A66F1C') + })(o || (o = {})) + const t = 0.2, + l = 0.1, + a = 0.2, + R = 0.1, + c = (o) => { + const t = (0, e.triangle)(30 * o), + l = 0.9 * o * 360, + a = 0.2 + 0.1 * t, + R = 0.2 - 0.1 * t + return r.Color.fromLumaChromaHue(R, a, l) + }, + A = `\n vec3 colorForBucket(float t) {\n float x = triangle(30.0 * t);\n float H = 360.0 * (0.9 * t);\n float C = ${(0.2).toFixed( + 1, + )} + ${(0.1).toFixed(1)} * x;\n float L = ${(0.2).toFixed(1)} - ${(0.1).toFixed( + 1, + )} * x;\n return hcl2rgb(H, C, L);\n }\n`, + C = { + fgPrimaryColor: o.LIGHTER_GRAY, + fgSecondaryColor: o.GRAY, + bgPrimaryColor: o.OFF_BLACK, + bgSecondaryColor: o.DARKER_GRAY, + altFgPrimaryColor: o.LIGHTER_GRAY, + altFgSecondaryColor: o.GRAY, + altBgPrimaryColor: o.BLACK, + altBgSecondaryColor: o.DARKER_GRAY, + selectionPrimaryColor: o.BLUE, + selectionSecondaryColor: o.PALE_BLUE, + weightColor: o.GREEN, + searchMatchTextColor: o.DARKER_GRAY, + searchMatchPrimaryColor: o.BROWN, + searchMatchSecondaryColor: o.LIGHT_BROWN, + colorForBucket: c, + colorForBucketGLSL: A, + } + exports.darkTheme = C + }, + {'../../lib/color': 'x77Y', '../../lib/utils': 'ucYa'}, + ], + CjU5: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.lightTheme = void 0) + var o, + r = require('../../lib/color'), + e = require('../../lib/utils') + !(function (o) { + ;(o.WHITE = '#FFFFFF'), + (o.OFF_WHITE = '#F6F6F6'), + (o.LIGHT_GRAY = '#BDBDBD'), + (o.GRAY = '#666666'), + (o.DARK_GRAY = '#222222'), + (o.OFF_BLACK = '#111111'), + (o.BLACK = '#000000'), + (o.DARK_BLUE = '#2F80ED'), + (o.PALE_DARK_BLUE = '#8EB7ED'), + (o.GREEN = '#6FCF97'), + (o.YELLOW = '#FEDC62'), + (o.ORANGE = '#FFAC02') + })(o || (o = {})) + const t = 0.25, + l = 0.2, + a = 0.8, + F = 0.15, + c = (o) => { + const t = (0, e.triangle)(30 * o), + l = 0.9 * o * 360, + a = 0.25 + 0.2 * t, + F = 0.8 - 0.15 * t + return r.Color.fromLumaChromaHue(F, a, l) + }, + i = `\n vec3 colorForBucket(float t) {\n float x = triangle(30.0 * t);\n float H = 360.0 * (0.9 * t);\n float C = ${(0.25).toFixed( + 1, + )} + ${(0.2).toFixed(1)} * x;\n float L = ${(0.8).toFixed(1)} - ${(0.15).toFixed( + 1, + )} * x;\n return hcl2rgb(H, C, L);\n }\n`, + C = { + fgPrimaryColor: o.BLACK, + fgSecondaryColor: o.LIGHT_GRAY, + bgPrimaryColor: o.WHITE, + bgSecondaryColor: o.OFF_WHITE, + altFgPrimaryColor: o.WHITE, + altFgSecondaryColor: o.LIGHT_GRAY, + altBgPrimaryColor: o.BLACK, + altBgSecondaryColor: o.DARK_GRAY, + selectionPrimaryColor: o.DARK_BLUE, + selectionSecondaryColor: o.PALE_DARK_BLUE, + weightColor: o.GREEN, + searchMatchTextColor: o.BLACK, + searchMatchPrimaryColor: o.ORANGE, + searchMatchSecondaryColor: o.YELLOW, + colorForBucket: c, + colorForBucketGLSL: i, + } + exports.lightTheme = C + }, + {'../../lib/color': 'x77Y', '../../lib/utils': 'ucYa'}, + ], + gzKG: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.useTheme = i), + (exports.withTheme = u), + (exports.colorSchemeToString = a), + (exports.ThemeProvider = S), + (exports.ThemeContext = void 0) + var e = require('preact'), + r = require('preact/hooks'), + t = require('../../app-state/color-scheme'), + o = require('../../lib/atom'), + c = require('../../lib/utils'), + n = require('./dark-theme'), + h = require('./light-theme') + const s = (0, e.createContext)(h.lightTheme) + function i() { + return (0, r.useContext)(s) + } + function u(e) { + return (0, c.memoizeByReference)(e) + } + function m() { + return matchMedia('(prefers-color-scheme: dark)') + } + function a(e) { + switch (e) { + case t.ColorScheme.SYSTEM: + return 'System' + case t.ColorScheme.DARK: + return 'Dark' + case t.ColorScheme.LIGHT: + return 'Light' + } + } + function l(e, r) { + switch (e) { + case t.ColorScheme.SYSTEM: + return r ? n.darkTheme : h.lightTheme + case t.ColorScheme.DARK: + return n.darkTheme + case t.ColorScheme.LIGHT: + return h.lightTheme + } + } + function S(c) { + const [n, h] = (0, r.useState)(() => m().matches), + i = (0, r.useCallback)( + (e) => { + h(e.matches) + }, + [h], + ) + ;(0, r.useEffect)(() => { + const e = m() + return ( + e.addEventListener('change', i), + () => { + e.removeEventListener('change', i) + } + ) + }, [i]) + const u = l((0, o.useAtom)(t.colorSchemeAtom), n) + return (0, e.h)(s.Provider, {value: u, children: c.children}) + } + exports.ThemeContext = s + }, + { + preact: 'aSor', + 'preact/hooks': 'MwGB', + '../../app-state/color-scheme': 'KQrJ', + '../../lib/atom': 'QkVE', + '../../lib/utils': 'ucYa', + './dark-theme': 'osod', + './light-theme': 'CjU5', + }, + ], + QXNG: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = t) + var e = /-webkit-|-moz-|-ms-/ + function t(t) { + return 'string' == typeof t && e.test(t) + } + module.exports = exports.default + }, + {}, + ], + tSfb: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = i) + var e = require('css-in-js-utils/lib/isPrefixedValue'), + t = r(e) + function r(e) { + return e && e.__esModule ? e : {default: e} + } + var u = ['-webkit-', '-moz-', ''] + function i(e, r) { + if ('string' == typeof r && !(0, t.default)(r) && r.indexOf('calc(') > -1) + return u.map(function (e) { + return r.replace(/calc\(/g, e + 'calc(') + }) + } + module.exports = exports.default + }, + {'css-in-js-utils/lib/isPrefixedValue': 'QXNG'}, + ], + ie1g: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = u) + var e = require('css-in-js-utils/lib/isPrefixedValue'), + r = t(e) + function t(e) { + return e && e.__esModule ? e : {default: e} + } + var s = ['-webkit-', ''] + function u(e, t) { + if ('string' == typeof t && !(0, r.default)(t) && t.indexOf('cross-fade(') > -1) + return s.map(function (e) { + return t.replace(/cross-fade\(/g, e + 'cross-fade(') + }) + } + module.exports = exports.default + }, + {'css-in-js-utils/lib/isPrefixedValue': 'QXNG'}, + ], + CYBj: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = o) + var e = ['-webkit-', '-moz-', ''], + r = {'zoom-in': !0, 'zoom-out': !0, grab: !0, grabbing: !0} + function o(o, t) { + if ('cursor' === o && r.hasOwnProperty(t)) + return e.map(function (e) { + return e + t + }) + } + module.exports = exports.default + }, + {}, + ], + MH9I: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = u) + var e = require('css-in-js-utils/lib/isPrefixedValue'), + t = r(e) + function r(e) { + return e && e.__esModule ? e : {default: e} + } + var i = ['-webkit-', ''] + function u(e, r) { + if ('string' == typeof r && !(0, t.default)(r) && r.indexOf('filter(') > -1) + return i.map(function (e) { + return r.replace(/filter\(/g, e + 'filter(') + }) + } + module.exports = exports.default + }, + {'css-in-js-utils/lib/isPrefixedValue': 'QXNG'}, + ], + jmPR: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = i) + var e = { + flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'], + 'inline-flex': [ + '-webkit-inline-box', + '-moz-inline-box', + '-ms-inline-flexbox', + '-webkit-inline-flex', + 'inline-flex', + ], + } + function i(i, l) { + if ('display' === i && e.hasOwnProperty(l)) return e[l] + } + module.exports = exports.default + }, + {}, + ], + FRuF: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = s) + var e = {'space-around': 'distribute', 'space-between': 'justify', 'flex-start': 'start', 'flex-end': 'end'}, + t = { + alignContent: 'msFlexLinePack', + alignSelf: 'msFlexItemAlign', + alignItems: 'msFlexAlign', + justifyContent: 'msFlexPack', + order: 'msFlexOrder', + flexGrow: 'msFlexPositive', + flexShrink: 'msFlexNegative', + flexBasis: 'msFlexPreferredSize', + } + function s(s, l, r) { + t.hasOwnProperty(s) && (r[t[s]] = e[l] || l) + } + module.exports = exports.default + }, + {}, + ], + bHSr: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = i) + var e = { + 'space-around': 'justify', + 'space-between': 'justify', + 'flex-start': 'start', + 'flex-end': 'end', + 'wrap-reverse': 'multiple', + wrap: 'multiple', + }, + t = {alignItems: 'WebkitBoxAlign', justifyContent: 'WebkitBoxPack', flexWrap: 'WebkitBoxLines'} + function i(i, r, o) { + 'flexDirection' === i && + 'string' == typeof r && + (r.indexOf('column') > -1 ? (o.WebkitBoxOrient = 'vertical') : (o.WebkitBoxOrient = 'horizontal'), + r.indexOf('reverse') > -1 ? (o.WebkitBoxDirection = 'reverse') : (o.WebkitBoxDirection = 'normal')), + t.hasOwnProperty(i) && (o[t[i]] = e[r] || r) + } + module.exports = exports.default + }, + {}, + ], + QxYG: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = n) + var e = require('css-in-js-utils/lib/isPrefixedValue'), + t = r(e) + function r(e) { + return e && e.__esModule ? e : {default: e} + } + var i = ['-webkit-', '-moz-', ''], + a = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/ + function n(e, r) { + if ('string' == typeof r && !(0, t.default)(r) && a.test(r)) + return i.map(function (e) { + return e + r + }) + } + module.exports = exports.default + }, + {'css-in-js-utils/lib/isPrefixedValue': 'QXNG'}, + ], + qrrU: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = u) + var e = require('css-in-js-utils/lib/isPrefixedValue'), + t = r(e) + function r(e) { + return e && e.__esModule ? e : {default: e} + } + var i = ['-webkit-', ''] + function u(e, r) { + if ('string' == typeof r && !(0, t.default)(r) && r.indexOf('image-set(') > -1) + return i.map(function (e) { + return r.replace(/image-set\(/g, e + 'image-set(') + }) + } + module.exports = exports.default + }, + {'css-in-js-utils/lib/isPrefixedValue': 'QXNG'}, + ], + pEQ2: [ + function (require, module, exports) { + 'use strict' + function e(e, t) { + if ('position' === e && 'sticky' === t) return ['-webkit-sticky', 'sticky'] + } + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.default = e), + (module.exports = exports.default) + }, + {}, + ], + M0DH: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = i) + var t = ['-webkit-', '-moz-', ''], + e = {maxHeight: !0, maxWidth: !0, width: !0, height: !0, columnWidth: !0, minWidth: !0, minHeight: !0}, + n = {'min-content': !0, 'max-content': !0, 'fill-available': !0, 'fit-content': !0, 'contain-floats': !0} + function i(i, o) { + if (e.hasOwnProperty(i) && n.hasOwnProperty(o)) + return t.map(function (t) { + return t + o + }) + } + module.exports = exports.default + }, + {}, + ], + jNGL: [ + function (require, module, exports) { + 'use strict' + var e = /[A-Z]/g, + r = /^ms-/, + s = {} + function t(t) { + return t in s ? s[t] : (s[t] = t.replace(e, '-$&').toLowerCase().replace(r, '-ms-')) + } + module.exports = t + }, + {}, + ], + S6J3: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = u) + var e = require('hyphenate-style-name'), + t = r(e) + function r(e) { + return e && e.__esModule ? e : {default: e} + } + function u(e) { + return (0, t.default)(e) + } + module.exports = exports.default + }, + {'hyphenate-style-name': 'jNGL'}, + ], + XxlV: [ + function (require, module, exports) { + 'use strict' + function e(e) { + return e.charAt(0).toUpperCase() + e.slice(1) + } + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.default = e), + (module.exports = exports.default) + }, + {}, + ], + cnM4: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = l) + var t = require('css-in-js-utils/lib/hyphenateProperty'), + e = s(t), + r = require('css-in-js-utils/lib/isPrefixedValue'), + i = s(r), + n = require('../../utils/capitalizeString'), + o = s(n) + function s(t) { + return t && t.__esModule ? t : {default: t} + } + var u = { + transition: !0, + transitionProperty: !0, + WebkitTransition: !0, + WebkitTransitionProperty: !0, + MozTransition: !0, + MozTransitionProperty: !0, + }, + a = {Webkit: '-webkit-', Moz: '-moz-', ms: '-ms-'} + function f(t, r) { + if ((0, i.default)(t)) return t + for (var n = t.split(/,(?![^()]*(?:\([^()]*\))?\))/g), o = 0, s = n.length; o < s; ++o) { + var u = n[o], + f = [u] + for (var l in r) { + var p = (0, e.default)(l) + if (u.indexOf(p) > -1 && 'order' !== p) + for (var d = r[l], c = 0, b = d.length; c < b; ++c) f.unshift(u.replace(p, a[d[c]] + p)) + } + n[o] = f.join(',') + } + return n.join(',') + } + function l(t, e, r, i) { + if ('string' == typeof e && u.hasOwnProperty(t)) { + var n = f(e, i), + s = n + .split(/,(?![^()]*(?:\([^()]*\))?\))/g) + .filter(function (t) { + return !/-moz-|-ms-/.test(t) + }) + .join(',') + if (t.indexOf('Webkit') > -1) return s + var a = n + .split(/,(?![^()]*(?:\([^()]*\))?\))/g) + .filter(function (t) { + return !/-webkit-|-ms-/.test(t) + }) + .join(',') + return t.indexOf('Moz') > -1 + ? a + : ((r['Webkit' + (0, o.default)(t)] = s), (r['Moz' + (0, o.default)(t)] = a), n) + } + } + module.exports = exports.default + }, + { + 'css-in-js-utils/lib/hyphenateProperty': 'S6J3', + 'css-in-js-utils/lib/isPrefixedValue': 'QXNG', + '../../utils/capitalizeString': 'XxlV', + }, + ], + ZBgn: [ + function (require, module, exports) { + 'use strict' + function r(r) { + for (var t = 5381, e = r.length; e; ) t = (33 * t) ^ r.charCodeAt(--e) + return t >>> 0 + } + module.exports = r + }, + {}, + ], + D2Wi: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = u) + var e = require('./capitalizeString'), + r = t(e) + function t(e) { + return e && e.__esModule ? e : {default: e} + } + function u(e, t, u) { + if (e.hasOwnProperty(t)) { + for (var o = {}, a = e[t], n = (0, r.default)(t), f = Object.keys(u), l = 0; l < f.length; l++) { + var i = f[l] + if (i === t) for (var s = 0; s < a.length; s++) o[a[s] + n] = u[t] + o[i] = u[i] + } + return o + } + return u + } + module.exports = exports.default + }, + {'./capitalizeString': 'XxlV'}, + ], + qgi9: [ + function (require, module, exports) { + 'use strict' + function e(e, t, r, o, u) { + for (var s = 0, f = e.length; s < f; ++s) { + var l = e[s](t, r, o, u) + if (l) return l + } + } + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.default = e), + (module.exports = exports.default) + }, + {}, + ], + a80f: [ + function (require, module, exports) { + 'use strict' + function e(e, r) { + ;-1 === e.indexOf(r) && e.push(r) + } + function r(r, t) { + if (Array.isArray(t)) for (var o = 0, s = t.length; o < s; ++o) e(r, t[o]) + else e(r, t) + } + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.default = r), + (module.exports = exports.default) + }, + {}, + ], + ek9P: [ + function (require, module, exports) { + 'use strict' + function e(e) { + return e instanceof Object && !Array.isArray(e) + } + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.default = e), + (module.exports = exports.default) + }, + {}, + ], + rHEJ: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.default = n) + var e = require('../utils/prefixProperty'), + r = s(e), + t = require('../utils/prefixValue'), + u = s(t), + l = require('../utils/addNewValuesOnly'), + a = s(l), + i = require('../utils/isObject'), + f = s(i) + function s(e) { + return e && e.__esModule ? e : {default: e} + } + function n(e) { + var t = e.prefixMap, + l = e.plugins + return function e(i) { + for (var s in i) { + var n = i[s] + if ((0, f.default)(n)) i[s] = e(n) + else if (Array.isArray(n)) { + for (var d = [], o = 0, p = n.length; o < p; ++o) { + var v = (0, u.default)(l, s, n[o], i, t) + ;(0, a.default)(d, v || n[o]) + } + d.length > 0 && (i[s] = d) + } else { + var x = (0, u.default)(l, s, n, i, t) + x && (i[s] = x), (i = (0, r.default)(t, s, i)) + } + } + return i + } + } + module.exports = exports.default + }, + { + '../utils/prefixProperty': 'D2Wi', + '../utils/prefixValue': 'qgi9', + '../utils/addNewValuesOnly': 'a80f', + '../utils/isObject': 'ek9P', + }, + ], + AARE: [ + function (require, module, exports) { + var global = arguments[3] + var e = arguments[3] + function t(e) { + r.length || (n(), (a = !0)), (r[r.length] = e) + } + module.exports = t + var n, + r = [], + a = !1, + o = 0, + u = 1024 + function l() { + for (; o < r.length; ) { + var e = o + if (((o += 1), r[e].call(), o > u)) { + for (var t = 0, n = r.length - o; t < n; t++) r[t] = r[t + o] + ;(r.length -= o), (o = 0) + } + } + ;(r.length = 0), (o = 0), (a = !1) + } + var i = void 0 !== e ? e : self, + c = i.MutationObserver || i.WebKitMutationObserver + function f(e) { + var t = 1, + n = new c(e), + r = document.createTextNode('') + return ( + n.observe(r, {characterData: !0}), + function () { + ;(t = -t), (r.data = t) + } + ) + } + function v(e) { + return function () { + var t = setTimeout(r, 0), + n = setInterval(r, 50) + function r() { + clearTimeout(t), clearInterval(n), e() + } + } + } + ;(n = 'function' == typeof c ? f(l) : v(l)), (t.requestFlush = n), (t.makeRequestCallFromTimer = v) + }, + {}, + ], + Ezpt: [ + function (require, module, exports) { + 'use strict' + var t = require('./raw'), + r = [], + n = [], + e = t.makeRequestCallFromTimer(l) + function l() { + if (n.length) throw n.shift() + } + function o(n) { + var e + ;((e = r.length ? r.pop() : new i()).task = n), t(e) + } + function i() { + this.task = null + } + ;(module.exports = o), + (i.prototype.call = function () { + try { + this.task.call() + } catch (t) { + o.onerror ? o.onerror(t) : (n.push(t), e()) + } finally { + ;(this.task = null), (r[r.length] = this) + } + }) + }, + {'./raw': 'AARE'}, + ], + CxN7: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.flushToStyleTag = + exports.minify = + exports.css = + exports.StyleSheetTestUtils = + exports.StyleSheetServer = + exports.StyleSheet = + void 0) + var e = m(require('inline-style-prefixer/static/plugins/calc')), + t = m(require('inline-style-prefixer/static/plugins/crossFade')), + r = m(require('inline-style-prefixer/static/plugins/cursor')), + n = m(require('inline-style-prefixer/static/plugins/filter')), + i = m(require('inline-style-prefixer/static/plugins/flex')), + o = m(require('inline-style-prefixer/static/plugins/flexboxIE')), + a = m(require('inline-style-prefixer/static/plugins/flexboxOld')), + s = m(require('inline-style-prefixer/static/plugins/gradient')), + u = m(require('inline-style-prefixer/static/plugins/imageSet')), + l = m(require('inline-style-prefixer/static/plugins/position')), + f = m(require('inline-style-prefixer/static/plugins/sizing')), + c = m(require('inline-style-prefixer/static/plugins/transition')), + y = m(require('string-hash')), + p = m(require('inline-style-prefixer/static/createPrefixer')), + d = m(require('asap')) + function m(e) { + return e && e.__esModule ? e : {default: e} + } + var h = ['Webkit'], + g = ['Moz'], + S = ['ms'], + v = ['Webkit', 'Moz'], + x = ['Webkit', 'ms'], + b = ['Webkit', 'Moz', 'ms'], + k = { + plugins: [ + e.default, + t.default, + r.default, + n.default, + i.default, + o.default, + a.default, + s.default, + u.default, + l.default, + f.default, + c.default, + ], + prefixMap: { + transform: x, + transformOrigin: x, + transformOriginX: x, + transformOriginY: x, + backfaceVisibility: h, + perspective: h, + perspectiveOrigin: h, + transformStyle: h, + transformOriginZ: h, + animation: h, + animationDelay: h, + animationDirection: h, + animationFillMode: h, + animationDuration: h, + animationIterationCount: h, + animationName: h, + animationPlayState: h, + animationTimingFunction: h, + appearance: v, + userSelect: b, + fontKerning: h, + textEmphasisPosition: h, + textEmphasis: h, + textEmphasisStyle: h, + textEmphasisColor: h, + boxDecorationBreak: h, + clipPath: h, + maskImage: h, + maskMode: h, + maskRepeat: h, + maskPosition: h, + maskClip: h, + maskOrigin: h, + maskSize: h, + maskComposite: h, + mask: h, + maskBorderSource: h, + maskBorderMode: h, + maskBorderSlice: h, + maskBorderWidth: h, + maskBorderOutset: h, + maskBorderRepeat: h, + maskBorder: h, + maskType: h, + textDecorationStyle: v, + textDecorationSkip: v, + textDecorationLine: v, + textDecorationColor: v, + filter: h, + fontFeatureSettings: v, + breakAfter: b, + breakBefore: b, + breakInside: b, + columnCount: v, + columnFill: v, + columnGap: v, + columnRule: v, + columnRuleColor: v, + columnRuleStyle: v, + columnRuleWidth: v, + columns: v, + columnSpan: v, + columnWidth: v, + writingMode: x, + flex: x, + flexBasis: h, + flexDirection: x, + flexGrow: h, + flexFlow: x, + flexShrink: h, + flexWrap: x, + alignContent: h, + alignItems: h, + alignSelf: h, + justifyContent: h, + order: h, + transitionDelay: h, + transitionDuration: h, + transitionProperty: h, + transitionTimingFunction: h, + backdropFilter: h, + scrollSnapType: x, + scrollSnapPointsX: x, + scrollSnapPointsY: x, + scrollSnapDestination: x, + scrollSnapCoordinate: x, + shapeImageThreshold: h, + shapeImageMargin: h, + shapeImageOutside: h, + hyphens: b, + flowInto: x, + flowFrom: x, + regionFragment: x, + boxSizing: g, + textAlignLast: g, + tabSize: g, + wrapFlow: S, + wrapThrough: S, + wrapMargin: S, + touchAction: S, + gridTemplateColumns: S, + gridTemplateRows: S, + gridTemplateAreas: S, + gridTemplate: S, + gridAutoColumns: S, + gridAutoRows: S, + gridAutoFlow: S, + grid: S, + gridRowStart: S, + gridColumnStart: S, + gridRowEnd: S, + gridRow: S, + gridColumn: S, + gridColumnEnd: S, + gridColumnGap: S, + gridRowGap: S, + gridArea: S, + gridGap: S, + textSizeAdjust: x, + borderImage: h, + borderImageOutset: h, + borderImageRepeat: h, + borderImageSlice: h, + borderImageSource: h, + borderImageWidth: h, + }, + }, + O = + 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator + ? function (e) { + return typeof e + } + : function (e) { + return e && 'function' == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype + ? 'symbol' + : typeof e + }, + w = (function () { + function e(e, t) { + for (var r = 0; r < t.length; r++) { + var n = t[r] + ;(n.enumerable = n.enumerable || !1), + (n.configurable = !0), + 'value' in n && (n.writable = !0), + Object.defineProperty(e, n.key, n) + } + } + return function (t, r, n) { + return r && e(t.prototype, r), n && e(t, n), t + } + })() + function A(e, t) { + if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function') + } + var C = 'undefined' != typeof Map, + j = (function () { + function e() { + A(this, e), (this.elements = {}), (this.keyOrder = []) + } + return ( + w(e, [ + { + key: 'forEach', + value: (function () { + return function (e) { + for (var t = 0; t < this.keyOrder.length; t++) + e(this.elements[this.keyOrder[t]], this.keyOrder[t]) + } + })(), + }, + { + key: 'set', + value: (function () { + return function (t, r, n) { + if (this.elements.hasOwnProperty(t)) { + if (n) { + var i = this.keyOrder.indexOf(t) + this.keyOrder.splice(i, 1), this.keyOrder.push(t) + } + } else this.keyOrder.push(t) + if (null != r) { + if ((C && r instanceof Map) || r instanceof e) { + var o = this.elements.hasOwnProperty(t) ? this.elements[t] : new e() + return ( + r.forEach(function (e, t) { + o.set(t, e, n) + }), + void (this.elements[t] = o) + ) + } + if (Array.isArray(r) || 'object' !== (void 0 === r ? 'undefined' : O(r))) this.elements[t] = r + else { + for ( + var a = this.elements.hasOwnProperty(t) ? this.elements[t] : new e(), + s = Object.keys(r), + u = 0; + u < s.length; + u += 1 + ) + a.set(s[u], r[s[u]], n) + this.elements[t] = a + } + } else this.elements[t] = r + } + })(), + }, + { + key: 'get', + value: (function () { + return function (e) { + return this.elements[e] + } + })(), + }, + { + key: 'has', + value: (function () { + return function (e) { + return this.elements.hasOwnProperty(e) + } + })(), + }, + { + key: 'addStyleType', + value: (function () { + return function (t) { + var r = this + if ((C && t instanceof Map) || t instanceof e) + t.forEach(function (e, t) { + r.set(t, e, !0) + }) + else for (var n = Object.keys(t), i = 0; i < n.length; i++) this.set(n[i], t[n[i]], !0) + } + })(), + }, + ]), + e + ) + })(), + T = /([A-Z])/g, + E = function (e) { + return '-' + String(e.toLowerCase()) + }, + I = function (e) { + var t = e.replace(T, E) + return 'm' === t[0] && 's' === t[1] && '-' === t[2] ? '-' + String(t) : t + }, + R = { + animationIterationCount: !0, + borderImageOutset: !0, + borderImageSlice: !0, + borderImageWidth: !0, + boxFlex: !0, + boxFlexGroup: !0, + boxOrdinalGroup: !0, + columnCount: !0, + flex: !0, + flexGrow: !0, + flexPositive: !0, + flexShrink: !0, + flexNegative: !0, + flexOrder: !0, + gridRow: !0, + gridColumn: !0, + fontWeight: !0, + lineClamp: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + tabSize: !0, + widows: !0, + zIndex: !0, + zoom: !0, + fillOpacity: !0, + floodOpacity: !0, + stopOpacity: !0, + strokeDasharray: !0, + strokeDashoffset: !0, + strokeMiterlimit: !0, + strokeOpacity: !0, + strokeWidth: !0, + } + function M(e, t) { + return e + t.charAt(0).toUpperCase() + t.substring(1) + } + var q = ['Webkit', 'ms', 'Moz', 'O'] + Object.keys(R).forEach(function (e) { + q.forEach(function (t) { + R[M(t, e)] = R[e] + }) + }) + var F = function (e, t) { + return 'number' == typeof t ? (R[e] ? '' + t : t + 'px') : '' + t + }, + P = function (e, t) { + return _(F(e, t)) + }, + W = function (e, t) { + return (0, y.default)(e).toString(36) + }, + D = function (e) { + return W(JSON.stringify(e)) + }, + _ = function (e) { + return '!' === e[e.length - 10] && ' !important' === e.slice(-11) ? e : String(e) + ' !important' + } + function z(e) { + if (Array.isArray(e)) { + for (var t = 0, r = Array(e.length); t < e.length; t++) r[t] = e[t] + return r + } + return Array.from(e) + } + var B = (0, p.default)(k), + G = [ + (function () { + return function (e, t, r) { + return ':' !== e[0] ? null : r(t + e) + } + })(), + (function () { + return function (e, t, r) { + if ('@' !== e[0]) return null + var n = r(t) + return [String(e) + '{' + String(n.join('')) + '}'] + } + })(), + ], + N = function e(t, r, n, i, o) { + for (var a = new j(), s = 0; s < r.length; s++) a.addStyleType(r[s]) + var u = new j(), + l = [] + a.forEach(function (r, a) { + n.some(function (s) { + var u = s(a, t, function (t) { + return e(t, [r], n, i, o) + }) + if (null != u) + return ( + Array.isArray(u) + ? l.push.apply(l, z(u)) + : (console.warn( + 'WARNING: Selector handlers should return an array of rules.Returning a string containing multiple rules is deprecated.', + s, + ), + l.push('@media all {' + String(u) + '}')), + !0 + ) + }) || u.set(a, r, !0) + }) + var f = J(t, u, i, o, n) + return f && l.unshift(f), l + }, + L = function (e, t, r) { + if (t) + for (var n = Object.keys(t), i = 0; i < n.length; i++) { + var o = n[i] + e.has(o) && e.set(o, t[o](e.get(o), r), !1) + } + }, + U = function (e, t, r) { + return String(I(e)) + ':' + String(r(e, t)) + ';' + }, + H = function (e, t) { + return (e[t] = !0), e + }, + J = function (e, t, r, n, i) { + L(t, r, i) + var o = Object.keys(t.elements).reduce(H, Object.create(null)), + a = B(t.elements), + s = Object.keys(a) + if (s.length !== t.keyOrder.length) + for (var u = 0; u < s.length; u++) + if (!o[s[u]]) { + var l = void 0 + if ( + (l = + 'W' === s[u][0] + ? s[u][6].toLowerCase() + s[u].slice(7) + : 'o' === s[u][1] + ? s[u][3].toLowerCase() + s[u].slice(4) + : s[u][2].toLowerCase() + s[u].slice(3)) && + o[l] + ) { + var f = t.keyOrder.indexOf(l) + t.keyOrder.splice(f, 0, s[u]) + } else t.keyOrder.unshift(s[u]) + } + for (var c = !1 === n ? F : P, y = [], p = 0; p < t.keyOrder.length; p++) { + var d = t.keyOrder[p], + m = a[d] + if (Array.isArray(m)) for (var h = 0; h < m.length; h++) y.push(U(d, m[h], c)) + else y.push(U(d, m, c)) + } + return y.length ? String(e) + '{' + String(y.join('')) + '}' : '' + }, + X = + 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator + ? function (e) { + return typeof e + } + : function (e) { + return e && 'function' == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype + ? 'symbol' + : typeof e + } + function Y(e) { + if (Array.isArray(e)) { + for (var t = 0, r = Array(e.length); t < e.length; t++) r[t] = e[t] + return r + } + return Array.from(e) + } + var Z = null, + K = function (e) { + if (null == Z && null == (Z = document.querySelector('style[data-aphrodite]'))) { + var t = document.head || document.getElementsByTagName('head')[0] + ;((Z = document.createElement('style')).type = 'text/css'), + Z.setAttribute('data-aphrodite', ''), + t.appendChild(Z) + } + var r = Z.styleSheet || Z.sheet + if (r.insertRule) { + var n = r.cssRules.length + e.forEach(function (e) { + try { + r.insertRule(e, n), (n += 1) + } catch (t) {} + }) + } else Z.innerText = (Z.innerText || '') + e.join('') + }, + V = { + fontFamily: (function () { + return function e(t) { + return Array.isArray(t) + ? t.map(e).join(',') + : 'object' === (void 0 === t ? 'undefined' : X(t)) + ? (re(t.src, '@font-face', [t], !1), '"' + String(t.fontFamily) + '"') + : t + } + })(), + animationName: (function () { + return function e(t, r) { + if (Array.isArray(t)) + return t + .map(function (t) { + return e(t, r) + }) + .join(',') + if ('object' === (void 0 === t ? 'undefined' : X(t))) { + var n = 'keyframe_' + String(D(t)), + i = '@keyframes ' + n + '{' + return ( + t instanceof j + ? t.forEach(function (e, t) { + i += N(t, [e], r, V, !1).join('') + }) + : Object.keys(t).forEach(function (e) { + i += N(e, [t[e]], r, V, !1).join('') + }), + te(n, [(i += '}')]), + n + ) + } + return t + } + })(), + }, + Q = {}, + $ = [], + ee = !1, + te = function (e, t) { + var r + if (!Q[e]) { + if (!ee) { + if ('undefined' == typeof document) throw new Error('Cannot automatically buffer without a document') + ;(ee = !0), (0, d.default)(ue) + } + ;(r = $).push.apply(r, Y(t)), (Q[e] = !0) + } + }, + re = function (e, t, r, n) { + var i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : [] + if (!Q[e]) { + var o = N(t, r, i, V, n) + te(e, o) + } + }, + ne = function () { + ;($ = []), (Q = {}), (ee = !1), (Z = null) + }, + ie = function () { + return $ + }, + oe = function () { + if (ee) throw new Error('Cannot buffer while already buffering') + ee = !0 + }, + ae = function () { + ee = !1 + var e = $ + return ($ = []), e + }, + se = function () { + return ae().join('') + }, + ue = function () { + var e = ae() + e.length > 0 && K(e) + } + exports.flushToStyleTag = ue + var le = function () { + return Object.keys(Q) + }, + fe = function (e) { + e.forEach(function (e) { + Q[e] = !0 + }) + }, + ce = function e(t, r, n, i) { + for (var o = 0; o < t.length; o += 1) + t[o] && + (Array.isArray(t[o]) + ? (i += e(t[o], r, n, i)) + : (r.push(t[o]._name), n.push(t[o]._definition), (i += t[o]._len))) + return i + }, + ye = function (e, t, r) { + var n = [], + i = [], + o = ce(t, n, i, 0) + if (0 === n.length) return '' + var a = void 0 + return ( + (a = 1 === n.length ? '_' + String(n[0]) : '_' + String(W(n.join())) + String((o % 36).toString(36))), + re(a, '.' + String(a), i, e, r), + a + ) + }, + pe = function (e, t) { + return String(t) + '_' + String(W(e)) + }, + de = function () { + return W + }, + me = de(), + he = { + create: (function () { + return function (e) { + for (var t = {}, r = Object.keys(e), n = 0; n < r.length; n += 1) { + var i = r[n], + o = e[i], + a = JSON.stringify(o) + t[i] = {_len: a.length, _name: me(a, i), _definition: o} + } + return t + } + })(), + rehydrate: (function () { + return function () { + var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [] + fe(e) + } + })(), + }, + ge = + 'undefined' != typeof window + ? null + : { + renderStatic: (function () { + return function (e) { + return ne(), oe(), {html: e(), css: {content: se(), renderedClassNames: le()}} + } + })(), + }, + Se = null + function ve(e, t) { + return { + StyleSheet: Object.assign({}, he, { + extend: (function () { + return function (r) { + var n = r + .map(function (e) { + return e.selectorHandler + }) + .filter(function (e) { + return e + }) + return ve(e, t.concat(n)) + } + })(), + }), + StyleSheetServer: ge, + StyleSheetTestUtils: Se, + minify: (function () { + return function (e) { + me = e ? W : pe + } + })(), + css: (function () { + return function () { + for (var r = arguments.length, n = Array(r), i = 0; i < r; i++) n[i] = arguments[i] + return ye(e, n, t) + } + })(), + } + } + var xe = !0, + be = ve(xe, G), + ke = be.StyleSheet, + Oe = be.StyleSheetServer, + we = be.StyleSheetTestUtils, + Ae = be.css, + Ce = be.minify + ;(exports.minify = Ce), + (exports.css = Ae), + (exports.StyleSheetTestUtils = we), + (exports.StyleSheetServer = Oe), + (exports.StyleSheet = ke) + }, + { + 'inline-style-prefixer/static/plugins/calc': 'tSfb', + 'inline-style-prefixer/static/plugins/crossFade': 'ie1g', + 'inline-style-prefixer/static/plugins/cursor': 'CYBj', + 'inline-style-prefixer/static/plugins/filter': 'MH9I', + 'inline-style-prefixer/static/plugins/flex': 'jmPR', + 'inline-style-prefixer/static/plugins/flexboxIE': 'FRuF', + 'inline-style-prefixer/static/plugins/flexboxOld': 'bHSr', + 'inline-style-prefixer/static/plugins/gradient': 'QxYG', + 'inline-style-prefixer/static/plugins/imageSet': 'qrrU', + 'inline-style-prefixer/static/plugins/position': 'pEQ2', + 'inline-style-prefixer/static/plugins/sizing': 'M0DH', + 'inline-style-prefixer/static/plugins/transition': 'cnM4', + 'string-hash': 'ZBgn', + 'inline-style-prefixer/static/createPrefixer': 'rHEJ', + asap: 'Ezpt', + }, + ], + hvr4: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.commonStyle = + exports.ZIndex = + exports.Duration = + exports.Sizes = + exports.FontSize = + exports.FontFamily = + void 0) + var e, + o, + t, + T, + i, + r = require('aphrodite') + ;(exports.FontFamily = e), + (function (e) { + e.MONOSPACE = '"Source Code Pro", Courier, monospace' + })(e || (exports.FontFamily = e = {})), + (exports.FontSize = o), + (function (e) { + ;(e[(e.LABEL = 10)] = 'LABEL'), (e[(e.TITLE = 12)] = 'TITLE'), (e[(e.BIG_BUTTON = 36)] = 'BIG_BUTTON') + })(o || (exports.FontSize = o = {})), + (exports.Sizes = t), + (function (e) { + ;(e[(e.MINIMAP_HEIGHT = 100)] = 'MINIMAP_HEIGHT'), + (e[(e.DETAIL_VIEW_HEIGHT = 150)] = 'DETAIL_VIEW_HEIGHT'), + (e[(e.TOOLTIP_WIDTH_MAX = 900)] = 'TOOLTIP_WIDTH_MAX'), + (e[(e.TOOLTIP_HEIGHT_MAX = 80)] = 'TOOLTIP_HEIGHT_MAX'), + (e[(e.SEPARATOR_HEIGHT = 2)] = 'SEPARATOR_HEIGHT'), + (e[(e.FRAME_HEIGHT = 20)] = 'FRAME_HEIGHT'), + (e[(e.TOOLBAR_HEIGHT = 20)] = 'TOOLBAR_HEIGHT'), + (e[(e.TOOLBAR_TAB_HEIGHT = 18)] = 'TOOLBAR_TAB_HEIGHT') + })(t || (exports.Sizes = t = {})), + (exports.Duration = T), + (function (e) { + e.HOVER_CHANGE = '0.07s' + })(T || (exports.Duration = T = {})), + (exports.ZIndex = i), + (function (e) { + ;(e[(e.PROFILE_SELECT = 1)] = 'PROFILE_SELECT'), (e[(e.HOVERTIP = 2)] = 'HOVERTIP') + })(i || (exports.ZIndex = i = {})) + const I = r.StyleSheet.create({ + fillY: {height: '100%'}, + fillX: {width: '100%'}, + hbox: {display: 'flex', flexDirection: 'row', position: 'relative', overflow: 'hidden'}, + vbox: {display: 'flex', flexDirection: 'column', position: 'relative', overflow: 'hidden'}, + }) + exports.commonStyle = I + }, + {aphrodite: 'CxN7'}, + ], + DHvC: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.exactMatchStrings = s), + (exports.FlamechartSearchResults = exports.ProfileSearchResults = exports.FlamechartType = void 0) + var e, + t = require('./math') + function s(e, t) { + const s = e.toLocaleLowerCase(), + r = t.toLocaleLowerCase() + let h = 0 + const a = [] + for (;;) { + let e = s.indexOf(r, h) + if (-1 === e) return a + a.push([e, e + t.length]), (h = e + t.length) + } + } + ;(exports.FlamechartType = e), + (function (e) { + ;(e[(e.CHRONO_FLAME_CHART = 0)] = 'CHRONO_FLAME_CHART'), + (e[(e.LEFT_HEAVY_FLAME_GRAPH = 1)] = 'LEFT_HEAVY_FLAME_GRAPH') + })(e || (exports.FlamechartType = e = {})) + class r { + constructor(e, t) { + ;(this.profile = e), (this.searchQuery = t), (this.matches = null) + } + getMatchForFrame(e) { + return ( + this.matches || + ((this.matches = new Map()), + this.profile.forEachFrame((e) => { + const t = s(e.name, this.searchQuery) + this.matches.set(e, 0 === t.length ? null : t) + })), + this.matches.get(e) || null + ) + } + } + exports.ProfileSearchResults = r + class h { + constructor(e, t) { + ;(this.flamechart = e), (this.profileResults = t), (this.matches = null) + } + getResults() { + if (null == this.matches) { + const e = [], + s = new Map(), + r = (h, a) => { + const {node: c} = h + if (this.profileResults.getMatchForFrame(c.frame)) { + const r = new t.Rect(new t.Vec2(h.start, a), new t.Vec2(h.end - h.start, 1)) + s.set(c, e.length), e.push({configSpaceBounds: r, node: c}) + } + h.children.forEach((e) => { + r(e, a + 1) + }) + }, + h = this.flamechart.getLayers() + h.length > 0 && h[0].forEach((e) => r(e, 0)), (this.matches = {matches: e, indexForNode: s}) + } + return this.matches + } + count() { + return this.getResults().matches.length + } + indexOf(e) { + const t = this.getResults().indexForNode.get(e) + return void 0 === t ? null : t + } + at(e) { + const t = this.getResults().matches + if (e < 0 || e >= t.length) throw new Error(`Index ${e} out of bounds in list of ${t.length} matches.`) + return t[e] + } + } + exports.FlamechartSearchResults = h + }, + {'./math': 'tDuZ'}, + ], + t9CM: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.SearchView = exports.ProfileSearchContextProvider = exports.ProfileSearchContext = void 0) + var e = require('aphrodite'), + t = require('preact'), + r = require('preact/hooks'), + o = require('preact/compat'), + n = require('./style'), + s = require('../lib/profile-search'), + i = require('../app-state/active-profile-state'), + l = require('./themes/theme'), + a = require('../app-state'), + c = require('../lib/atom') + function u(e) { + e.stopPropagation() + } + const h = (0, t.createContext)(null) + exports.ProfileSearchContext = h + const p = ({children: e}) => { + const o = (0, i.useActiveProfileState)(), + n = o ? o.profile : null, + l = (0, c.useAtom)(a.searchIsActiveAtom), + u = (0, c.useAtom)(a.searchQueryAtom), + p = (0, r.useMemo)(() => (n && l && 0 !== u.length ? new s.ProfileSearchResults(n, u) : null), [l, u, n]) + return (0, t.h)(h.Provider, {value: p}, e) + } + exports.ProfileSearchContextProvider = p + const d = (0, o.memo)(({numResults: o, resultIndex: n, selectNext: s, selectPrev: i}) => { + const h = (0, l.useTheme)(), + p = m(h), + d = (0, c.useAtom)(a.searchIsActiveAtom), + f = (0, c.useAtom)(a.searchQueryAtom), + y = a.searchQueryAtom.set, + g = a.searchIsActiveAtom.set, + x = (0, r.useCallback)( + (e) => { + const t = e.target.value + y(t) + }, + [y], + ), + b = (0, r.useRef)(null), + v = (0, r.useCallback)(() => g(!1), [g]), + C = (0, r.useCallback)( + (e) => { + e.shiftKey ? i() : s() + }, + [i, s], + ), + S = (0, r.useCallback)( + (e) => { + e.stopPropagation(), + 'Escape' === e.key && g(!1), + 'Enter' === e.key && C(e), + 'f' == e.key && (e.metaKey || e.ctrlKey) && (b.current && b.current.select(), e.preventDefault()) + }, + [g, C], + ) + return ( + (0, r.useEffect)(() => { + const e = (e) => { + 'f' == e.key && + (e.metaKey || e.ctrlKey) && + (e.preventDefault(), + b.current + ? b.current.select() + : (g(!0), + requestAnimationFrame(() => { + b.current && b.current.select() + }))) + } + return ( + window.addEventListener('keydown', e), + () => { + window.removeEventListener('keydown', e) + } + ) + }, [g]), + d + ? (0, t.h)( + 'div', + {className: (0, e.css)(p.searchView)}, + (0, t.h)('span', {className: (0, e.css)(p.icon)}, '🔍'), + (0, t.h)( + 'span', + {className: (0, e.css)(p.inputContainer)}, + (0, t.h)('input', { + className: (0, e.css)(p.input), + value: f, + onInput: x, + onKeyDown: S, + onKeyUp: u, + onKeyPress: u, + ref: b, + }), + ), + null != o && + (0, t.h)( + t.Fragment, + null, + (0, t.h)('span', {className: (0, e.css)(p.resultCount)}, null == n ? '?' : n + 1, '/', o), + (0, t.h)('button', {className: (0, e.css)(p.icon, p.button), onClick: i}, '⬅️'), + (0, t.h)('button', {className: (0, e.css)(p.icon, p.button), onClick: s}, '➡️'), + ), + (0, t.h)( + 'svg', + { + className: (0, e.css)(p.icon), + onClick: v, + width: '16', + height: '16', + viewBox: '0 0 16 16', + fill: 'none', + xmlns: 'http://www.w3.org/2000/svg', + }, + (0, t.h)('path', { + d: 'M4.99999 4.16217L11.6427 10.8048M11.6427 4.16217L4.99999 10.8048', + stroke: h.altFgSecondaryColor, + }), + ), + ) + : null + ) + }) + exports.SearchView = d + const m = (0, l.withTheme)((t) => + e.StyleSheet.create({ + searchView: { + position: 'absolute', + top: 0, + right: 10, + height: n.Sizes.TOOLBAR_HEIGHT, + width: 208, + borderWidth: 2, + borderColor: t.altFgPrimaryColor, + borderStyle: 'solid', + fontSize: n.FontSize.LABEL, + boxSizing: 'border-box', + background: t.altBgSecondaryColor, + color: t.altFgPrimaryColor, + display: 'flex', + alignItems: 'center', + }, + inputContainer: {flexShrink: 1, flexGrow: 1, display: 'flex'}, + input: { + width: '100%', + border: 'none', + background: 'none', + fontSize: n.FontSize.LABEL, + lineHeight: `${n.Sizes.TOOLBAR_HEIGHT}px`, + color: t.altFgPrimaryColor, + ':focus': {border: 'none', outline: 'none'}, + '::selection': {color: t.altFgPrimaryColor, background: t.selectionPrimaryColor}, + }, + resultCount: {verticalAlign: 'middle'}, + icon: { + flexShrink: 0, + verticalAlign: 'middle', + height: '100%', + margin: '0px 2px 0px 2px', + fontSize: n.FontSize.LABEL, + }, + button: {display: 'inline', background: 'none', border: 'none', padding: 0, ':focus': {outline: 'none'}}, + }), + ) + }, + { + aphrodite: 'CxN7', + preact: 'aSor', + 'preact/hooks': 'MwGB', + 'preact/compat': 'AQ6k', + './style': 'hvr4', + '../lib/profile-search': 'DHvC', + '../app-state/active-profile-state': 'MY42', + './themes/theme': 'gzKG', + '../app-state': 'LDQe', + '../lib/atom': 'QkVE', + }, + ], + FbpF: [ + function (require, module, exports) { + 'use strict' + function e(e) { + return e.replace(/\\([a-fA-F0-9]{2})/g, (e, n) => { + const t = parseInt(n, 16) + return String.fromCharCode(t) + }) + } + function n(n) { + const t = n.split('\n') + if (!t.length) return null + if (('' === t[t.length - 1] && t.pop(), !t.length)) return null + const r = new Map(), + o = /^(\d+):(.+)$/, + s = /^([\$\w]+):([\$\w-]+)$/ + for (const u of t) { + const n = o.exec(u) + if (n) { + r.set(`wasm-function[${n[1]}]`, e(n[2])) + continue + } + const t = s.exec(u) + if (!t) return null + r.set(t[1], e(t[2])) + } + return (e) => (r.has(e.name) ? {name: r.get(e.name)} : null) + } + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importEmscriptenSymbolMap = n) + }, + {}, + ], + Pua8: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.ColorChit = o) + var e = require('preact'), + t = require('aphrodite'), + r = require('./style'), + i = require('./themes/theme') + function o(r) { + const o = s((0, i.useTheme)()) + return (0, e.h)('span', {className: (0, t.css)(o.stackChit), style: {backgroundColor: r.color}}) + } + const s = (0, i.withTheme)((e) => + t.StyleSheet.create({ + stackChit: { + position: 'relative', + top: -1, + display: 'inline-block', + verticalAlign: 'middle', + marginRight: '0.5em', + border: `1px solid ${e.fgSecondaryColor}`, + width: r.FontSize.LABEL - 2, + height: r.FontSize.LABEL - 2, + }, + }), + ) + }, + {preact: 'aSor', aphrodite: 'CxN7', './style': 'hvr4', './themes/theme': 'gzKG'}, + ], + SGwe: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.ScrollableListView = void 0) + var e = require('preact'), + t = require('preact/hooks') + const r = ({items: r, axis: l, renderItems: n, className: i, initialIndexInView: s}) => { + const [u, o] = (0, t.useState)(null), + [c, a] = (0, t.useState)(0), + d = (0, t.useRef)(null), + f = 'x' === l ? 'width' : 'height', + x = 'x' === l ? 'left' : 'top', + b = 'x' === l ? 'scrollLeft' : 'scrollTop', + h = s ? r.reduce((e, t, r) => (r < s ? e + t.size : e), 0) : 0, + m = (0, t.useRef)(h), + v = (0, t.useCallback)( + (e) => { + e + ? requestAnimationFrame(() => { + o(e.getBoundingClientRect()[f]), + null != m.current && (e.scrollTo({[x]: m.current}), (m.current = null)) + }) + : o(null), + (d.current = e) + }, + [o, f, x], + ), + g = (0, t.useMemo)(() => { + if (null == d.current || null == u || null == c) return null + const e = c - u / 4, + t = c + u + u / 4 + let l = 0, + n = 0, + i = 0 + for (; i < r.length; i++) { + if (((n = l), (l += r[i].size) >= e)) break + } + const s = i + for (; i < r.length; i++) { + if ((l += r[i].size) >= t) break + } + return {firstVisibleIndex: s, lastVisibleIndex: Math.min(i, r.length - 1), invisiblePrefixSize: n} + }, [u, c, r]), + p = (0, t.useMemo)(() => r.reduce((e, t) => e + t.size, 0), [r]), + w = (0, t.useCallback)(() => { + null != d.current && a(d.current[b]) + }, [b]) + ;(0, t.useEffect)(() => { + const e = () => { + null != d.current && o(d.current.getBoundingClientRect()[f]) + } + return ( + window.addEventListener('resize', e), + () => { + window.removeEventListener('resize', e) + } + ) + }, [f]) + const z = (0, t.useMemo)(() => (g ? n(g.firstVisibleIndex, g.lastVisibleIndex) : null), [n, g]), + I = (0, t.useMemo)( + () => + (0, e.h)( + 'div', + {style: {height: p}}, + (0, e.h)( + 'div', + {style: {transform: `translateY(${(null == g ? void 0 : g.invisiblePrefixSize) || 0}px)`}}, + z, + ), + ), + [g, z, p], + ) + return (0, e.h)('div', {className: i, ref: v, onScroll: w}, I) + } + exports.ScrollableListView = r + }, + {preact: 'aSor', 'preact/hooks': 'MwGB'}, + ], + Ivh5: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.ProfileTableViewContainer = exports.ProfileTableView = void 0) + var e = require('preact'), + t = require('aphrodite'), + r = require('../lib/utils'), + o = require('./style'), + l = require('./color-chit'), + i = require('./scrollable-list-view'), + a = require('../app-state/getters'), + s = require('preact/compat'), + c = require('preact/hooks'), + n = require('./sandwich-view'), + h = require('../lib/color'), + d = require('./themes/theme'), + m = require('../app-state'), + u = require('../lib/atom') + function S(r) { + const o = p((0, d.useTheme)()) + return (0, e.h)( + 'div', + {className: (0, t.css)(o.hBarDisplay)}, + (0, e.h)('div', {className: (0, t.css)(o.hBarDisplayFilled), style: {width: `${r.perc}%`}}), + ) + } + function b(r) { + const o = (0, d.useTheme)(), + l = p(o), + {activeDirection: i} = r, + a = i === m.SortDirection.ASCENDING ? o.fgPrimaryColor : o.fgSecondaryColor, + s = i === m.SortDirection.DESCENDING ? o.fgPrimaryColor : o.fgSecondaryColor + return (0, e.h)( + 'svg', + { + width: '8', + height: '10', + viewBox: '0 0 8 10', + fill: 'none', + xmlns: 'http://www.w3.org/2000/svg', + className: (0, t.css)(l.sortIcon), + }, + (0, e.h)('path', {d: 'M0 4L4 0L8 4H0Z', fill: a}), + (0, e.h)('path', {d: 'M0 4L4 0L8 4H0Z', transform: 'translate(0 10) scale(1 -1)', fill: s}), + ) + } + function g(t, r, o) { + const l = [] + let i = 0 + for (let a of r) + l.push(t.slice(i, a[0])), l.push((0, e.h)('span', {className: o}, t.slice(a[0], a[1]))), (i = a[1]) + return l.push(t.slice(i)), (0, e.h)('span', null, l) + } + const C = ({ + frame: o, + matchedRanges: i, + profile: a, + index: s, + selectedFrame: c, + setSelectedFrame: n, + getCSSColorForFrame: h, + }) => { + const m = p((0, d.useTheme)()), + u = o.getTotalWeight(), + b = o.getSelfWeight(), + C = (100 * u) / a.getTotalNonIdleWeight(), + f = (100 * b) / a.getTotalNonIdleWeight(), + w = o === c + return (0, e.h)( + 'tr', + { + key: `${s}`, + onClick: n.bind(null, o), + className: (0, t.css)(m.tableRow, s % 2 == 0 && m.tableRowEven, w && m.tableRowSelected), + }, + (0, e.h)( + 'td', + {className: (0, t.css)(m.numericCell)}, + a.formatValue(u), + ' (', + (0, r.formatPercent)(C), + ')', + (0, e.h)(S, {perc: C}), + ), + (0, e.h)( + 'td', + {className: (0, t.css)(m.numericCell)}, + a.formatValue(b), + ' (', + (0, r.formatPercent)(f), + ')', + (0, e.h)(S, {perc: f}), + ), + (0, e.h)( + 'td', + {title: o.file, className: (0, t.css)(m.textCell)}, + (0, e.h)(l.ColorChit, {color: h(o)}), + i ? g(o.name, i, (0, t.css)(m.matched, w && m.matchedSelected)) : o.name, + ), + ) + }, + f = (0, s.memo)( + ({ + profile: r, + sortMethod: l, + setSortMethod: a, + selectedFrame: s, + setSelectedFrame: h, + getCSSColorForFrame: u, + searchQuery: S, + searchIsActive: g, + }) => { + const f = p((0, d.useTheme)()), + w = (0, c.useCallback)( + (e, t) => { + if ((t.preventDefault(), l.field == e)) + a({ + field: e, + direction: + l.direction === m.SortDirection.ASCENDING + ? m.SortDirection.DESCENDING + : m.SortDirection.ASCENDING, + }) + else + switch (e) { + case m.SortField.SYMBOL_NAME: + a({field: e, direction: m.SortDirection.ASCENDING}) + break + case m.SortField.SELF: + case m.SortField.TOTAL: + a({field: e, direction: m.SortDirection.DESCENDING}) + } + }, + [l, a], + ), + F = (0, c.useContext)(n.SandwichViewContext), + y = (0, c.useCallback)( + (o, l) => { + if (!F) return null + const i = [] + for (let e = o; e <= l; e++) { + const t = F.rowList[e], + o = F.getSearchMatchForFrame(t) + i.push( + C({ + frame: t, + matchedRanges: null == o ? null : o, + index: e, + profile: r, + selectedFrame: s, + setSelectedFrame: h, + getCSSColorForFrame: u, + }), + ) + } + return ( + 0 === i.length && + (g + ? i.push( + (0, e.h)( + 'tr', + null, + (0, e.h)( + 'td', + {className: (0, t.css)(f.emptyState)}, + 'No symbol names match query "', + S, + '".', + ), + ), + ) + : i.push( + (0, e.h)( + 'tr', + null, + (0, e.h)('td', {className: (0, t.css)(f.emptyState)}, 'No symbols found.'), + ), + )), + (0, e.h)('table', {className: (0, t.css)(f.tableView)}, i) + ) + }, + [F, r, s, h, u, g, S, f.emptyState, f.tableView], + ), + N = (0, c.useMemo)(() => (null == F ? [] : F.rowList.map((e) => ({size: o.Sizes.FRAME_HEIGHT}))), [F]), + E = (0, c.useCallback)((e) => w(m.SortField.TOTAL, e), [w]), + A = (0, c.useCallback)((e) => w(m.SortField.SELF, e), [w]), + v = (0, c.useCallback)((e) => w(m.SortField.SYMBOL_NAME, e), [w]) + return (0, e.h)( + 'div', + {className: (0, t.css)(o.commonStyle.vbox, f.profileTableView)}, + (0, e.h)( + 'table', + {className: (0, t.css)(f.tableView)}, + (0, e.h)( + 'thead', + {className: (0, t.css)(f.tableHeader)}, + (0, e.h)( + 'tr', + null, + (0, e.h)( + 'th', + {className: (0, t.css)(f.numericCell), onClick: E}, + (0, e.h)(b, {activeDirection: l.field === m.SortField.TOTAL ? l.direction : null}), + 'Total', + ), + (0, e.h)( + 'th', + {className: (0, t.css)(f.numericCell), onClick: A}, + (0, e.h)(b, {activeDirection: l.field === m.SortField.SELF ? l.direction : null}), + 'Self', + ), + (0, e.h)( + 'th', + {className: (0, t.css)(f.textCell), onClick: v}, + (0, e.h)(b, {activeDirection: l.field === m.SortField.SYMBOL_NAME ? l.direction : null}), + 'Symbol Name', + ), + ), + ), + ), + (0, e.h)(i.ScrollableListView, { + axis: 'y', + items: N, + className: (0, t.css)(f.scrollView), + renderItems: y, + initialIndexInView: null == s ? null : null == F ? void 0 : F.getIndexForFrame(s), + }), + ) + }, + ) + exports.ProfileTableView = f + const p = (0, d.withTheme)((e) => + t.StyleSheet.create({ + profileTableView: {background: e.bgPrimaryColor, height: '100%'}, + scrollView: { + overflowY: 'auto', + overflowX: 'hidden', + flexGrow: 1, + '::-webkit-scrollbar': {background: e.bgPrimaryColor}, + '::-webkit-scrollbar-thumb': { + background: e.fgSecondaryColor, + borderRadius: 20, + border: `3px solid ${e.bgPrimaryColor}`, + ':hover': {background: e.fgPrimaryColor}, + }, + }, + tableView: {width: '100%', fontSize: o.FontSize.LABEL, background: e.bgPrimaryColor}, + tableHeader: { + borderBottom: `2px solid ${e.bgSecondaryColor}`, + textAlign: 'left', + color: e.fgPrimaryColor, + userSelect: 'none', + }, + sortIcon: {position: 'relative', top: 1, marginRight: o.Sizes.FRAME_HEIGHT / 4}, + tableRow: {background: e.bgPrimaryColor, height: o.Sizes.FRAME_HEIGHT}, + tableRowEven: {background: e.bgSecondaryColor}, + tableRowSelected: {background: e.selectionPrimaryColor, color: e.altFgPrimaryColor}, + numericCell: { + textOverflow: 'ellipsis', + overflow: 'hidden', + whiteSpace: 'nowrap', + position: 'relative', + textAlign: 'right', + paddingRight: o.Sizes.FRAME_HEIGHT, + width: 6 * o.Sizes.FRAME_HEIGHT, + minWidth: 6 * o.Sizes.FRAME_HEIGHT, + }, + textCell: { + textOverflow: 'ellipsis', + overflow: 'hidden', + whiteSpace: 'nowrap', + width: '100%', + maxWidth: 0, + }, + hBarDisplay: { + position: 'absolute', + background: h.Color.fromCSSHex(e.weightColor).withAlpha(0.2).toCSS(), + bottom: 2, + height: 2, + width: `calc(100% - ${2 * o.Sizes.FRAME_HEIGHT}px)`, + right: o.Sizes.FRAME_HEIGHT, + }, + hBarDisplayFilled: {height: '100%', position: 'absolute', background: e.weightColor, right: 0}, + matched: {borderBottom: `2px solid ${e.fgPrimaryColor}`}, + matchedSelected: {borderColor: e.altFgPrimaryColor}, + emptyState: {textAlign: 'center', fontWeight: 'bold'}, + }), + ), + w = (0, s.memo)((t) => { + const {activeProfileState: r} = t, + {profile: o, sandwichViewState: l} = r + if (!o) throw new Error('profile missing') + const i = (0, u.useAtom)(m.tableSortMethodAtom), + s = (0, d.useTheme)(), + {callerCallee: n} = l, + h = n ? n.selectedFrame : null, + S = (0, a.getFrameToColorBucket)(o), + b = (0, a.createGetCSSColorForFrame)({theme: s, frameToColorBucket: S}), + g = (0, c.useCallback)((e) => { + m.profileGroupAtom.setSelectedFrame(e) + }, []), + C = (0, u.useAtom)(m.searchIsActiveAtom), + p = (0, u.useAtom)(m.searchQueryAtom) + return (0, e.h)(f, { + profile: o, + selectedFrame: h, + getCSSColorForFrame: b, + sortMethod: i, + setSelectedFrame: g, + setSortMethod: m.tableSortMethodAtom.set, + searchIsActive: C, + searchQuery: p, + }) + }) + exports.ProfileTableViewContainer = w + }, + { + preact: 'aSor', + aphrodite: 'CxN7', + '../lib/utils': 'ucYa', + './style': 'hvr4', + './color-chit': 'Pua8', + './scrollable-list-view': 'SGwe', + '../app-state/getters': 'zEXv', + 'preact/compat': 'AQ6k', + 'preact/hooks': 'MwGB', + './sandwich-view': 'L8J2', + '../lib/color': 'x77Y', + './themes/theme': 'gzKG', + '../app-state': 'LDQe', + '../lib/atom': 'QkVE', + }, + ], + gFMr: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.Flamechart = void 0) + var t = require('./utils'), + e = require('./math') + class i { + getTotalWeight() { + return this.totalWeight + } + getLayers() { + return this.layers + } + getColorBucketForFrame(t) { + return this.source.getColorBucketForFrame(t) + } + getMinFrameWidth() { + return this.minFrameWidth + } + formatValue(t) { + return this.source.formatValue(t) + } + getClampedViewportWidth(t) { + const i = this.getTotalWeight(), + r = Math.pow(2, 40), + s = (0, e.clamp)(3 * this.getMinFrameWidth(), i / r, i) + return (0, e.clamp)(t, s, i) + } + getClampedConfigSpaceViewportRect({configSpaceViewportRect: t, renderInverted: i}) { + const r = new e.Vec2(this.getTotalWeight(), this.getLayers().length), + s = this.getClampedViewportWidth(t.size.x), + h = t.size.withX(s), + a = e.Vec2.clamp( + t.origin, + new e.Vec2(0, i ? 0 : -1), + e.Vec2.max(e.Vec2.zero, r.minus(h).plus(new e.Vec2(0, 1))), + ) + return new e.Rect(a, t.size.withX(s)) + } + constructor(e) { + ;(this.source = e), (this.layers = []), (this.totalWeight = 0), (this.minFrameWidth = 1) + const i = [] + this.minFrameWidth = 1 / 0 + ;(this.totalWeight = e.getTotalWeight()), + e.forEachCall( + (e, r) => { + const s = (0, t.lastOf)(i), + h = {node: e, parent: s, children: [], start: r, end: r} + s && s.children.push(h), i.push(h) + }, + (t, e) => { + console.assert(i.length > 0) + const r = i.pop() + if (((r.end = e), r.end - r.start == 0)) return + const s = i.length + for (; this.layers.length <= s; ) this.layers.push([]) + this.layers[s].push(r), (this.minFrameWidth = Math.min(this.minFrameWidth, r.end - r.start)) + }, + ), + isFinite(this.minFrameWidth) || (this.minFrameWidth = 1) + } + } + exports.Flamechart = i + }, + {'./utils': 'ucYa', './math': 'tDuZ'}, + ], + P80v: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.FlamechartRenderer = exports.FlamechartRowAtlasKey = void 0) + var e = require('./rectangle-batch-renderer'), + t = require('../lib/math'), + r = require('../lib/color'), + n = require('../lib/utils'), + s = require('./graphics'), + o = require('./utils') + const c = 1e4 + class i { + constructor(e, t, r) { + ;(this.batch = e), (this.bounds = t), (this.numPrecedingRectanglesInRow = r), (this.children = []) + } + getBatch() { + return this.batch + } + getBounds() { + return this.bounds + } + getRectCount() { + return this.batch.getRectCount() + } + getChildren() { + return this.children + } + getParity() { + return this.numPrecedingRectanglesInRow % 2 + } + forEachLeafNodeWithinBounds(e, t) { + this.bounds.hasIntersectionWith(e) && t(this) + } + } + class h { + constructor(e) { + if (((this.children = e), (this.rectCount = 0), 0 === e.length)) throw new Error('Empty interior node') + let r = 1 / 0, + n = -1 / 0, + s = 1 / 0, + o = -1 / 0 + for (let t of e) { + this.rectCount += t.getRectCount() + const e = t.getBounds() + ;(r = Math.min(r, e.left())), + (n = Math.max(n, e.right())), + (s = Math.min(s, e.top())), + (o = Math.max(o, e.bottom())) + } + this.bounds = new t.Rect(new t.Vec2(r, s), new t.Vec2(n - r, o - s)) + } + getBounds() { + return this.bounds + } + getRectCount() { + return this.rectCount + } + getChildren() { + return this.children + } + forEachLeafNodeWithinBounds(e, t) { + if (this.bounds.hasIntersectionWith(e)) for (let r of this.children) r.forEachLeafNodeWithinBounds(e, t) + } + } + class a { + get key() { + return `${this.stackDepth}_${this.index}_${this.zoomLevel}` + } + constructor(e) { + ;(this.stackDepth = e.stackDepth), (this.zoomLevel = e.zoomLevel), (this.index = e.index) + } + static getOrInsert(e, t) { + return e.getOrInsert(new a(t)) + } + } + exports.FlamechartRowAtlasKey = a + class l { + constructor(s, o, a, l, g, d = {inverted: !1}) { + ;(this.gl = s), + (this.rowAtlas = o), + (this.flamechart = a), + (this.rectangleBatchRenderer = l), + (this.colorPassRenderer = g), + (this.options = d), + (this.layers = []), + (this.rectInfoTexture = null), + (this.rectInfoRenderTarget = null), + (this.atlasKeys = new n.KeyedSet()) + const f = a.getLayers().length + for (let n = 0; n < f; n++) { + const s = [], + o = d.inverted ? f - 1 - n : n + let l = 1 / 0, + g = -1 / 0, + u = new e.RectangleBatch(this.gl), + R = 0 + const w = a.getLayers()[n] + for (let h = 0; h < w.length; h++) { + const a = w[h] + u.getRectCount() >= c && + (s.push(new i(u, new t.Rect(new t.Vec2(l, o), new t.Vec2(g - l, 1)), R)), + (l = 1 / 0), + (g = -1 / 0), + (u = new e.RectangleBatch(this.gl))) + const d = new t.Rect(new t.Vec2(a.start, o), new t.Vec2(a.end - a.start, 1)) + ;(l = Math.min(l, d.left())), (g = Math.max(g, d.right())) + const f = new r.Color( + (1 + (h % 255)) / 256, + (1 + (n % 255)) / 256, + (1 + this.flamechart.getColorBucketForFrame(a.node.frame)) / 256, + ) + u.addRect(d, f), R++ + } + u.getRectCount() > 0 && s.push(new i(u, new t.Rect(new t.Vec2(l, o), new t.Vec2(g - l, 1)), R)), + this.layers.push(new h(s)) + } + } + getRectInfoTexture(e, t) { + if (this.rectInfoTexture) { + const r = this.rectInfoTexture + ;(r.width == e && r.height == t) || r.resize(e, t) + } else this.rectInfoTexture = this.gl.createTexture(s.Graphics.TextureFormat.NEAREST_CLAMP, e, t) + return this.rectInfoTexture + } + getRectInfoRenderTarget(e, t) { + const r = this.getRectInfoTexture(e, t) + return ( + this.rectInfoRenderTarget && + this.rectInfoRenderTarget.texture != r && + (this.rectInfoRenderTarget.texture.free(), this.rectInfoRenderTarget.setColor(r)), + this.rectInfoRenderTarget || (this.rectInfoRenderTarget = this.gl.createRenderTarget(r)), + this.rectInfoRenderTarget + ) + } + free() { + this.rectInfoRenderTarget && this.rectInfoRenderTarget.free(), + this.rectInfoTexture && this.rectInfoTexture.free() + } + configSpaceBoundsForKey(e) { + const {stackDepth: r, zoomLevel: n, index: s} = e, + o = this.flamechart.getTotalWeight() / Math.pow(2, n), + c = this.flamechart.getLayers().length, + i = this.options.inverted ? c - 1 - r : r + return new t.Rect(new t.Vec2(o * s, i), new t.Vec2(o, 1)) + } + render(e) { + const {configSpaceSrcRect: r, physicalSpaceDstRect: n} = e, + c = [], + i = t.AffineTransform.betweenRects(r, n) + if (r.isEmpty()) return + let h = 0 + for (;;) { + const e = a.getOrInsert(this.atlasKeys, {stackDepth: 0, zoomLevel: h, index: 0}), + t = this.configSpaceBoundsForKey(e) + if (i.transformRect(t).width() < this.rowAtlas.getResolution()) break + h++ + } + const l = Math.max(0, Math.floor(r.top())), + g = Math.min(this.layers.length, Math.ceil(r.bottom())), + d = this.flamechart.getTotalWeight(), + f = Math.pow(2, h), + u = Math.floor((f * r.left()) / d), + R = Math.ceil((f * r.right()) / d), + w = this.flamechart.getLayers().length + for (let t = l; t < g; t++) + for (let e = u; e <= R; e++) { + const n = this.options.inverted ? w - 1 - t : t, + s = a.getOrInsert(this.atlasKeys, {stackDepth: n, zoomLevel: h, index: e}) + this.configSpaceBoundsForKey(s).hasIntersectionWith(r) && c.push(s) + } + const p = this.rowAtlas.getCapacity(), + m = c.slice(0, p), + I = c.slice(p) + this.rowAtlas.writeToAtlasIfNeeded(m, (e, t) => { + const r = this.configSpaceBoundsForKey(t) + this.layers[t.stackDepth].forEachLeafNodeWithinBounds(r, (t) => { + this.rectangleBatchRenderer.render({ + batch: t.getBatch(), + configSpaceSrcRect: r, + physicalSpaceDstRect: e, + }) + }) + }) + const T = this.getRectInfoRenderTarget(n.width(), n.height()) + ;(0, o.renderInto)(this.gl, T, () => { + this.gl.clear(new s.Graphics.Color(0, 0, 0, 0)) + const e = new t.Rect(t.Vec2.zero, new t.Vec2(this.gl.viewport.width, this.gl.viewport.height)), + n = t.AffineTransform.betweenRects(r, e) + for (let t of m) { + const e = this.configSpaceBoundsForKey(t) + this.rowAtlas.renderViaAtlas(t, n.transformRect(e)) + } + for (let t of I) { + const e = this.configSpaceBoundsForKey(t), + r = n.transformRect(e) + this.layers[t.stackDepth].forEachLeafNodeWithinBounds(e, (t) => { + this.rectangleBatchRenderer.render({ + batch: t.getBatch(), + configSpaceSrcRect: e, + physicalSpaceDstRect: r, + }) + }) + } + }) + const x = this.getRectInfoTexture(n.width(), n.height()) + this.colorPassRenderer.render({ + rectInfoTexture: x, + srcRect: new t.Rect(t.Vec2.zero, new t.Vec2(x.width, x.height)), + dstRect: n, + renderOutlines: e.renderOutlines, + }) + } + } + exports.FlamechartRenderer = l + }, + { + './rectangle-batch-renderer': 'UGJH', + '../lib/math': 'tDuZ', + '../lib/color': 'x77Y', + '../lib/utils': 'ucYa', + './graphics': 'XGYN', + './utils': 'MMP6', + }, + ], + jZ6t: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.getFlamechartStyle = void 0) + var e = require('aphrodite'), + o = require('./style'), + r = require('./themes/theme') + const t = (0, r.withTheme)((r) => + e.StyleSheet.create({ + hoverCount: {color: r.weightColor}, + fill: {width: '100%', height: '100%', position: 'absolute', left: 0, top: 0}, + minimap: { + height: o.Sizes.MINIMAP_HEIGHT, + borderBottom: `${o.Sizes.SEPARATOR_HEIGHT}px solid ${r.fgSecondaryColor}`, + }, + panZoomView: {flex: 1}, + detailView: { + display: 'grid', + height: o.Sizes.DETAIL_VIEW_HEIGHT, + overflow: 'hidden', + gridTemplateColumns: '120px 120px 1fr', + gridTemplateRows: 'repeat(4, 1fr)', + borderTop: `${o.Sizes.SEPARATOR_HEIGHT}px solid ${r.fgSecondaryColor}`, + fontSize: o.FontSize.LABEL, + position: 'absolute', + background: r.bgPrimaryColor, + width: '100vw', + bottom: 0, + }, + stackTraceViewPadding: {padding: 5}, + stackTraceView: { + height: o.Sizes.DETAIL_VIEW_HEIGHT, + lineHeight: `${o.FontSize.LABEL + 2}px`, + overflow: 'auto', + '::-webkit-scrollbar': {background: r.bgPrimaryColor}, + '::-webkit-scrollbar-thumb': { + background: r.fgSecondaryColor, + borderRadius: 20, + border: `3px solid ${r.bgPrimaryColor}`, + ':hover': {background: r.fgPrimaryColor}, + }, + }, + stackLine: {whiteSpace: 'nowrap'}, + stackFileLine: {color: r.fgSecondaryColor}, + statsTable: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gridTemplateRows: `repeat(3, ${o.FontSize.LABEL + 10}px)`, + gridGap: '1px 1px', + textAlign: 'center', + paddingRight: 1, + }, + statsTableHeader: {gridColumn: '1 / 3'}, + statsTableCell: {position: 'relative', display: 'flex', justifyContent: 'center', alignItems: 'center'}, + thisInstanceCell: {background: r.selectionPrimaryColor, color: r.altFgPrimaryColor}, + allInstancesCell: {background: r.selectionSecondaryColor, color: r.altFgPrimaryColor}, + barDisplay: {position: 'absolute', top: 0, left: 0, background: 'rgba(0, 0, 0, 0.2)', width: '100%'}, + }), + ) + exports.getFlamechartStyle = t + }, + {aphrodite: 'CxN7', './style': 'hvr4', './themes/theme': 'gzKG'}, + ], + eeWS: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.cachedMeasureTextWidth = i), + (exports.buildTrimmedText = s), + (exports.trimTextMid = h), + (exports.remapRangesToTrimmedText = o), + (exports.ELLIPSIS = void 0) + var e = require('./utils') + const t = '…' + exports.ELLIPSIS = t + const n = new Map() + let r = -1 + function i(e, t) { + return ( + window.devicePixelRatio !== r && (n.clear(), (r = window.devicePixelRatio)), + n.has(t) || n.set(t, e.measureText(t).width), + n.get(t) + ) + } + function s(e, n) { + if (e.length <= n) + return { + trimmedString: e, + trimmedLength: e.length, + prefixLength: e.length, + suffixLength: 0, + originalString: e, + originalLength: e.length, + } + let r = Math.floor(n / 2) + const i = n - r - 1, + s = e.substring(0, r), + h = e.substring(e.length - i, e.length), + g = s + t + h + return { + trimmedString: g, + trimmedLength: g.length, + prefixLength: s.length, + suffixLength: h.length, + originalString: e, + originalLength: e.length, + } + } + function h(t, n, r) { + if (i(t, n) <= r) return s(n, n.length) + const [h] = (0, e.findValueBisect)(0, n.length, (e) => i(t, s(n, Math.floor(e)).trimmedString), r) + return s(n, Math.floor(h)) + } + var g + function a(e, t) { + return t < e.prefixLength ? g.IN_PREFIX : t < e.originalLength - e.suffixLength ? g.ELIDED : g.IN_SUFFIX + } + function o(e, t) { + const n = [], + r = e.originalLength - e.trimmedLength + let i = !1 + for (let [s, h] of t) { + let t = a(e, s), + o = a(e, h - 1) + switch (t) { + case g.IN_PREFIX: + switch (o) { + case g.IN_PREFIX: + n.push([s, h]) + break + case g.ELIDED: + n.push([s, e.prefixLength + 1]), (i = !0) + break + case g.IN_SUFFIX: + n.push([s, h - r]) + } + break + case g.ELIDED: + switch (o) { + case g.IN_PREFIX: + throw new Error('Unexpected highlight range starts in elided and ends in prefix') + case g.ELIDED: + i || (n.push([e.prefixLength, e.prefixLength + 1]), (i = !0)) + break + case g.IN_SUFFIX: + i ? n.push([e.trimmedLength - e.suffixLength, h - r]) : (n.push([e.prefixLength, h - r]), (i = !0)) + } + break + case g.IN_SUFFIX: + switch (o) { + case g.IN_PREFIX: + throw new Error('Unexpected highlight range starts in suffix and ends in prefix') + case g.ELIDED: + throw new Error('Unexpected highlight range starts in suffix and ends in elided') + case g.IN_SUFFIX: + n.push([s - r, h - r]) + } + } + } + return n + } + !(function (e) { + ;(e[(e.IN_PREFIX = 0)] = 'IN_PREFIX'), (e[(e.IN_SUFFIX = 1)] = 'IN_SUFFIX'), (e[(e.ELIDED = 2)] = 'ELIDED') + })(g || (g = {})) + }, + {'./utils': 'ucYa'}, + ], + S7z0: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.FlamechartMinimapView = void 0) + var e, + t = require('preact'), + i = require('aphrodite'), + o = require('../lib/math'), + s = require('./flamechart-style'), + n = require('./style'), + r = require('../lib/text-utils'), + a = require('../lib/color') + !(function (e) { + ;(e[(e.DRAW_NEW_VIEWPORT = 0)] = 'DRAW_NEW_VIEWPORT'), (e[(e.TRANSLATE_VIEWPORT = 1)] = 'TRANSLATE_VIEWPORT') + })(e || (e = {})) + class c extends t.Component { + constructor() { + super(...arguments), + (this.container = null), + (this.containerRef = (e) => { + this.container = e || null + }), + (this.overlayCanvas = null), + (this.overlayCtx = null), + (this.onWindowResize = () => { + this.onBeforeFrame() + }), + (this.onBeforeFrame = () => { + this.maybeClearInteractionLock(), + this.resizeOverlayCanvasIfNeeded(), + this.renderRects(), + this.renderOverlays() + }), + (this.renderCanvas = () => { + this.props.canvasContext.requestFrame() + }), + (this.frameHadWheelEvent = !1), + (this.framesWithoutWheelEvents = 0), + (this.interactionLock = null), + (this.maybeClearInteractionLock = () => { + this.interactionLock && + (this.frameHadWheelEvent || + (this.framesWithoutWheelEvents++, + this.framesWithoutWheelEvents >= 2 && + ((this.interactionLock = null), (this.framesWithoutWheelEvents = 0))), + this.props.canvasContext.requestFrame()), + (this.frameHadWheelEvent = !1) + }), + (this.onWheel = (e) => { + if ( + (e.preventDefault(), + (this.frameHadWheelEvent = !0), + (e.metaKey || e.ctrlKey) && 'pan' !== this.interactionLock) + ) { + let t = 1 + e.deltaY / 100 + e.ctrlKey && (t = 1 + e.deltaY / 40), (t = (0, o.clamp)(t, 0.1, 10)), this.zoom(t) + } else 'zoom' !== this.interactionLock && this.pan(new o.Vec2(e.deltaX, e.deltaY)) + this.renderCanvas() + }), + (this.dragStartConfigSpaceMouse = null), + (this.dragConfigSpaceViewportOffset = null), + (this.draggingMode = null), + (this.onMouseDown = (t) => { + const i = this.configSpaceMouse(t) + i && + (this.props.configSpaceViewportRect.contains(i) + ? ((this.draggingMode = e.TRANSLATE_VIEWPORT), + (this.dragConfigSpaceViewportOffset = i.minus(this.props.configSpaceViewportRect.origin))) + : (this.draggingMode = e.DRAW_NEW_VIEWPORT), + (this.dragStartConfigSpaceMouse = i), + window.addEventListener('mousemove', this.onWindowMouseMove), + window.addEventListener('mouseup', this.onWindowMouseUp), + this.updateCursor(i)) + }), + (this.onWindowMouseMove = (t) => { + if (!this.dragStartConfigSpaceMouse) return + let i = this.configSpaceMouse(t) + if (i) + if ( + (this.updateCursor(i), + (i = new o.Rect(new o.Vec2(0, 0), this.configSpaceSize()).closestPointTo(i)), + this.draggingMode === e.DRAW_NEW_VIEWPORT) + ) { + const e = this.dragStartConfigSpaceMouse + let t = i + if (!e || !t) return + const s = Math.min(e.x, t.x), + n = Math.max(e.x, t.x) - s, + r = this.props.configSpaceViewportRect.height() + this.props.setConfigSpaceViewportRect(new o.Rect(new o.Vec2(s, t.y - r / 2), new o.Vec2(n, r))) + } else if (this.draggingMode === e.TRANSLATE_VIEWPORT) { + if (!this.dragConfigSpaceViewportOffset) return + const e = i.minus(this.dragConfigSpaceViewportOffset) + this.props.setConfigSpaceViewportRect(this.props.configSpaceViewportRect.withOrigin(e)) + } + }), + (this.updateCursor = (t) => { + this.draggingMode === e.TRANSLATE_VIEWPORT + ? ((document.body.style.cursor = 'grabbing'), (document.body.style.cursor = '-webkit-grabbing')) + : this.draggingMode === e.DRAW_NEW_VIEWPORT + ? (document.body.style.cursor = 'col-resize') + : this.props.configSpaceViewportRect.contains(t) + ? ((document.body.style.cursor = 'grab'), (document.body.style.cursor = '-webkit-grab')) + : (document.body.style.cursor = 'col-resize') + }), + (this.onMouseLeave = () => { + null == this.draggingMode && (document.body.style.cursor = 'default') + }), + (this.onMouseMove = (e) => { + const t = this.configSpaceMouse(e) + t && this.updateCursor(t) + }), + (this.onWindowMouseUp = (e) => { + ;(this.draggingMode = null), + window.removeEventListener('mousemove', this.onWindowMouseMove), + window.removeEventListener('mouseup', this.onWindowMouseUp) + const t = this.configSpaceMouse(e) + t && this.updateCursor(t) + }), + (this.overlayCanvasRef = (e) => { + e + ? ((this.overlayCanvas = e), + (this.overlayCtx = this.overlayCanvas.getContext('2d')), + this.renderCanvas()) + : ((this.overlayCanvas = null), (this.overlayCtx = null)) + }) + } + physicalViewSize() { + return new o.Vec2( + this.overlayCanvas ? this.overlayCanvas.width : 0, + this.overlayCanvas ? this.overlayCanvas.height : 0, + ) + } + getStyle() { + return (0, s.getFlamechartStyle)(this.props.theme) + } + minimapOrigin() { + return new o.Vec2(0, n.Sizes.FRAME_HEIGHT * window.devicePixelRatio) + } + configSpaceSize() { + return new o.Vec2(this.props.flamechart.getTotalWeight(), this.props.flamechart.getLayers().length) + } + configSpaceToPhysicalViewSpace() { + const e = this.minimapOrigin() + return o.AffineTransform.betweenRects( + new o.Rect(new o.Vec2(0, 0), this.configSpaceSize()), + new o.Rect(e, this.physicalViewSize().minus(e)), + ) + } + logicalToPhysicalViewSpace() { + return o.AffineTransform.withScale(new o.Vec2(window.devicePixelRatio, window.devicePixelRatio)) + } + windowToLogicalViewSpace() { + if (!this.container) return new o.AffineTransform() + const e = this.container.getBoundingClientRect() + return o.AffineTransform.withTranslation(new o.Vec2(-e.left, -e.top)) + } + renderRects() { + this.container && + (this.physicalViewSize().x < 2 || + this.props.canvasContext.renderBehind(this.container, () => { + this.props.flamechartRenderer.render({ + configSpaceSrcRect: new o.Rect(new o.Vec2(0, 0), this.configSpaceSize()), + physicalSpaceDstRect: new o.Rect( + this.minimapOrigin(), + this.physicalViewSize().minus(this.minimapOrigin()), + ), + renderOutlines: !1, + }), + this.props.canvasContext.viewportRectangleRenderer.render({ + configSpaceViewportRect: this.props.configSpaceViewportRect, + configSpaceToPhysicalViewSpace: this.configSpaceToPhysicalViewSpace(), + }) + })) + } + renderOverlays() { + const e = this.overlayCtx + if (!e) return + const t = this.physicalViewSize() + e.clearRect(0, 0, t.x, t.y) + const i = this.configSpaceToPhysicalViewSpace(), + s = this.configSpaceSize().x, + c = (this.configSpaceToPhysicalViewSpace().inverted() || new o.AffineTransform()) + .times(this.logicalToPhysicalViewSpace()) + .transformVector(new o.Vec2(200, 1)).x, + h = n.Sizes.FRAME_HEIGHT * window.devicePixelRatio, + l = n.FontSize.LABEL * window.devicePixelRatio, + p = (h - l) / 2 + ;(e.font = `${l}px/${h}px ${n.FontFamily.MONOSPACE}`), (e.textBaseline = 'top') + let d = Math.pow(10, Math.floor(Math.log10(c))) + c / d > 5 ? (d *= 5) : c / d > 2 && (d *= 2) + const f = this.props.theme + ;(e.fillStyle = a.Color.fromCSSHex(f.bgPrimaryColor).withAlpha(0.8).toCSS()), + e.fillRect(0, 0, t.x, h), + (e.textBaseline = 'top') + for (let n = Math.ceil(0 / d) * d; n < s; n += d) { + const s = Math.round(i.transformPosition(new o.Vec2(n, 0)).x), + a = this.props.flamechart.formatValue(n), + c = Math.ceil((0, r.cachedMeasureTextWidth)(e, a)) + ;(e.fillStyle = f.fgPrimaryColor), + e.fillText(a, s - c - p, p), + (e.fillStyle = f.fgSecondaryColor), + e.fillRect(s, 0, 1, t.y) + } + } + componentWillReceiveProps(e) { + this.props.flamechart !== e.flamechart + ? this.renderCanvas() + : this.props.configSpaceViewportRect != e.configSpaceViewportRect + ? this.renderCanvas() + : this.props.canvasContext !== e.canvasContext && + (this.props.canvasContext && this.props.canvasContext.removeBeforeFrameHandler(this.onBeforeFrame), + e.canvasContext && + (e.canvasContext.addBeforeFrameHandler(this.onBeforeFrame), e.canvasContext.requestFrame())) + } + componentDidMount() { + window.addEventListener('resize', this.onWindowResize), + this.props.canvasContext.addBeforeFrameHandler(this.onBeforeFrame) + } + componentWillUnmount() { + window.removeEventListener('resize', this.onWindowResize), + this.props.canvasContext.removeBeforeFrameHandler(this.onBeforeFrame) + } + resizeOverlayCanvasIfNeeded() { + if (!this.overlayCanvas) return + let {width: e, height: t} = this.overlayCanvas.getBoundingClientRect() + if (((e = Math.floor(e)), (t = Math.floor(t)), 0 === e || 0 === t)) return + const i = e * window.devicePixelRatio, + o = t * window.devicePixelRatio + ;(i === this.overlayCanvas.width && o === this.overlayCanvas.height) || + ((this.overlayCanvas.width = i), (this.overlayCanvas.height = o)) + } + pan(e) { + this.interactionLock = 'pan' + const t = this.logicalToPhysicalViewSpace().transformVector(e), + i = this.configSpaceToPhysicalViewSpace().inverseTransformVector(t) + i && this.props.transformViewport(o.AffineTransform.withTranslation(i)) + } + zoom(e) { + this.interactionLock = 'zoom' + const t = this.props.configSpaceViewportRect, + i = t.origin.plus(t.size.times(0.5)) + if (!i) return + const s = o.AffineTransform.withTranslation(i.times(-1)).scaledBy(new o.Vec2(e, 1)).translatedBy(i) + this.props.transformViewport(s) + } + configSpaceMouse(e) { + const t = this.windowToLogicalViewSpace().transformPosition(new o.Vec2(e.clientX, e.clientY)), + i = this.logicalToPhysicalViewSpace().transformPosition(t) + return this.configSpaceToPhysicalViewSpace().inverseTransformPosition(i) + } + render() { + const e = this.getStyle() + return (0, t.h)( + 'div', + { + ref: this.containerRef, + onWheel: this.onWheel, + onMouseDown: this.onMouseDown, + onMouseMove: this.onMouseMove, + onMouseLeave: this.onMouseLeave, + className: (0, i.css)(e.minimap, n.commonStyle.vbox), + }, + (0, t.h)('canvas', {width: 1, height: 1, ref: this.overlayCanvasRef, className: (0, i.css)(e.fill)}), + ) + } + } + exports.FlamechartMinimapView = c + }, + { + preact: 'aSor', + aphrodite: 'CxN7', + '../lib/math': 'tDuZ', + './flamechart-style': 'jZ6t', + './style': 'hvr4', + '../lib/text-utils': 'eeWS', + '../lib/color': 'x77Y', + }, + ], + uohB: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.FlamechartDetailView = o) + var e = require('aphrodite'), + l = require('preact'), + t = require('./flamechart-style'), + s = require('../lib/utils'), + a = require('./color-chit'), + c = require('./themes/theme') + function r(a) { + const r = (0, t.getFlamechartStyle)((0, c.useTheme)()), + i = a.formatter(a.selectedTotal), + o = a.formatter(a.selectedSelf), + h = (100 * a.selectedTotal) / a.grandTotal, + n = (100 * a.selectedSelf) / a.grandTotal + return (0, l.h)( + 'div', + {className: (0, e.css)(r.statsTable)}, + (0, l.h)('div', {className: (0, e.css)(a.cellStyle, r.statsTableCell, r.statsTableHeader)}, a.title), + (0, l.h)('div', {className: (0, e.css)(a.cellStyle, r.statsTableCell)}, 'Total'), + (0, l.h)('div', {className: (0, e.css)(a.cellStyle, r.statsTableCell)}, 'Self'), + (0, l.h)('div', {className: (0, e.css)(a.cellStyle, r.statsTableCell)}, i), + (0, l.h)('div', {className: (0, e.css)(a.cellStyle, r.statsTableCell)}, o), + (0, l.h)( + 'div', + {className: (0, e.css)(a.cellStyle, r.statsTableCell)}, + (0, s.formatPercent)(h), + (0, l.h)('div', {className: (0, e.css)(r.barDisplay), style: {height: `${h}%`}}), + ), + (0, l.h)( + 'div', + {className: (0, e.css)(a.cellStyle, r.statsTableCell)}, + (0, s.formatPercent)(n), + (0, l.h)('div', {className: (0, e.css)(r.barDisplay), style: {height: `${n}%`}}), + ), + ) + } + function i(s) { + const r = (0, t.getFlamechartStyle)((0, c.useTheme)()), + i = [] + let o = s.node + for (; o && !o.isRoot(); o = o.parent) { + const t = [], + {frame: c} = o + if ( + (t.push((0, l.h)(a.ColorChit, {color: s.getFrameColor(c)})), + i.length && t.push((0, l.h)('span', {className: (0, e.css)(r.stackFileLine)}, '> ')), + t.push(c.name), + c.file) + ) { + let s = c.file + null != c.line && ((s += `:${c.line}`), null != c.col && (s += `:${c.col}`)), + t.push((0, l.h)('span', {className: (0, e.css)(r.stackFileLine)}, ' (', s, ')')) + } + i.push((0, l.h)('div', {className: (0, e.css)(r.stackLine)}, t)) + } + return (0, l.h)( + 'div', + {className: (0, e.css)(r.stackTraceView)}, + (0, l.h)('div', {className: (0, e.css)(r.stackTraceViewPadding)}, i), + ) + } + function o(s) { + const a = (0, t.getFlamechartStyle)((0, c.useTheme)()), + {flamechart: o, selectedNode: h} = s, + {frame: n} = h + return (0, l.h)( + 'div', + {className: (0, e.css)(a.detailView)}, + (0, l.h)(r, { + title: 'This Instance', + cellStyle: a.thisInstanceCell, + grandTotal: o.getTotalWeight(), + selectedTotal: h.getTotalWeight(), + selectedSelf: h.getSelfWeight(), + formatter: o.formatValue.bind(o), + }), + (0, l.h)(r, { + title: 'All Instances', + cellStyle: a.allInstancesCell, + grandTotal: o.getTotalWeight(), + selectedTotal: n.getTotalWeight(), + selectedSelf: n.getSelfWeight(), + formatter: o.formatValue.bind(o), + }), + (0, l.h)(i, {node: h, getFrameColor: s.getCSSColorForFrame}), + ) + } + }, + { + aphrodite: 'CxN7', + preact: 'aSor', + './flamechart-style': 'jZ6t', + '../lib/utils': 'ucYa', + './color-chit': 'Pua8', + './themes/theme': 'gzKG', + }, + ], + e6nh: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.BatchCanvasRectRenderer = exports.BatchCanvasTextRenderer = void 0) + class t { + constructor() { + this.argsBatch = [] + } + text(t) { + this.argsBatch.push(t) + } + fill(t, e) { + if (0 !== this.argsBatch.length) { + t.fillStyle = e + for (let e of this.argsBatch) t.fillText(e.text, e.x, e.y) + this.argsBatch = [] + } + } + } + exports.BatchCanvasTextRenderer = t + class e { + constructor() { + this.argsBatch = [] + } + rect(t) { + this.argsBatch.push(t) + } + drawPath(t) { + t.beginPath() + for (let e of this.argsBatch) t.rect(e.x, e.y, e.w, e.h) + t.closePath(), (this.argsBatch = []) + } + fill(t, e) { + 0 !== this.argsBatch.length && ((t.fillStyle = e), this.drawPath(t), t.fill()) + } + stroke(t, e, s) { + 0 !== this.argsBatch.length && ((t.strokeStyle = e), (t.lineWidth = s), this.drawPath(t), t.stroke()) + } + } + exports.BatchCanvasRectRenderer = e + }, + {}, + ], + e7Fh: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.FlamechartPanZoomView = void 0) + var e = require('../lib/math'), + t = require('./style'), + i = require('../lib/text-utils'), + o = require('./flamechart-style'), + s = require('preact'), + r = require('aphrodite'), + n = require('../lib/canvas-2d-batch-renderers'), + a = require('../lib/color') + class h extends s.Component { + constructor() { + super(...arguments), + (this.container = null), + (this.containerRef = (e) => { + this.container = e || null + }), + (this.overlayCanvas = null), + (this.overlayCtx = null), + (this.hoveredLabel = null), + (this.overlayCanvasRef = (e) => { + e + ? ((this.overlayCanvas = e), + (this.overlayCtx = this.overlayCanvas.getContext('2d')), + this.renderCanvas()) + : ((this.overlayCanvas = null), (this.overlayCtx = null)) + }), + (this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT = t.Sizes.FRAME_HEIGHT), + (this.onWindowResize = () => { + this.updateConfigSpaceViewport(), this.onBeforeFrame() + }), + (this.frameHadWheelEvent = !1), + (this.framesWithoutWheelEvents = 0), + (this.interactionLock = null), + (this.maybeClearInteractionLock = () => { + this.interactionLock && + (this.frameHadWheelEvent || + (this.framesWithoutWheelEvents++, + this.framesWithoutWheelEvents >= 2 && + ((this.interactionLock = null), (this.framesWithoutWheelEvents = 0))), + this.props.canvasContext.requestFrame()), + (this.frameHadWheelEvent = !1) + }), + (this.onBeforeFrame = () => { + this.resizeOverlayCanvasIfNeeded(), + this.renderRects(), + this.renderOverlays(), + this.maybeClearInteractionLock() + }), + (this.renderCanvas = () => { + this.props.canvasContext.requestFrame() + }), + (this.lastDragPos = null), + (this.mouseDownPos = null), + (this.onMouseDown = (t) => { + ;(this.mouseDownPos = this.lastDragPos = new e.Vec2(t.offsetX, t.offsetY)), + this.updateCursor(), + window.addEventListener('mouseup', this.onWindowMouseUp) + }), + (this.onMouseDrag = (t) => { + if (!this.lastDragPos) return + const i = new e.Vec2(t.offsetX, t.offsetY) + this.pan(this.lastDragPos.minus(i)), + (this.lastDragPos = i), + this.hoveredLabel && this.props.onNodeHover(null) + }), + (this.onDblClick = (t) => { + if (this.hoveredLabel) { + const t = this.hoveredLabel.configSpaceBounds, + i = new e.Rect( + t.origin.minus(new e.Vec2(0, 1)), + t.size.withY(this.props.configSpaceViewportRect.height()), + ) + this.props.setConfigSpaceViewportRect(i) + } + }), + (this.onClick = (t) => { + const i = new e.Vec2(t.offsetX, t.offsetY), + o = this.mouseDownPos + ;(this.mouseDownPos = null), + (o && i.minus(o).length() > 5) || + (this.hoveredLabel + ? (this.props.onNodeSelect(this.hoveredLabel.node), this.renderCanvas()) + : this.props.onNodeSelect(null)) + }), + (this.onWindowMouseUp = (e) => { + ;(this.lastDragPos = null), + this.updateCursor(), + window.removeEventListener('mouseup', this.onWindowMouseUp) + }), + (this.onMouseMove = (t) => { + if ((this.updateCursor(), this.lastDragPos)) return t.preventDefault(), void this.onMouseDrag(t) + const i = new e.Vec2(t.offsetX, t.offsetY), + o = this.logicalToPhysicalViewSpace().transformPosition(i), + s = this.configSpaceToPhysicalViewSpace().inverseTransformPosition(o) + if (!s) return + const r = (t, i = 0) => { + const o = t.end - t.start, + n = this.props.renderInverted ? this.configSpaceSize().y - 1 - i : i, + a = new e.Rect(new e.Vec2(t.start, n), new e.Vec2(o, 1)) + if (s.x < a.left()) return null + if (s.x > a.right()) return null + a.contains(s) && (this.hoveredLabel = {configSpaceBounds: a, node: t.node}) + for (let e of t.children) r(e, i + 1) + } + ;(() => { + this.hoveredLabel = null + })() + for (let e of this.props.flamechart.getLayers()[0] || []) r(e) + this.hoveredLabel + ? this.props.onNodeHover({node: this.hoveredLabel.node, event: t}) + : this.props.onNodeHover(null), + this.renderCanvas() + }), + (this.onMouseLeave = (e) => { + ;(this.hoveredLabel = null), this.props.onNodeHover(null), this.renderCanvas() + }), + (this.onWheel = (t) => { + t.preventDefault(), (this.frameHadWheelEvent = !0) + const i = t.metaKey || t.ctrlKey + let o = t.deltaY, + s = t.deltaX + if ( + (t.deltaMode === t.DOM_DELTA_LINE && + ((o *= this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT), (s *= this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT)), + i && 'pan' !== this.interactionLock) + ) { + let i = 1 + o / 100 + t.ctrlKey && (i = 1 + o / 40), + (i = (0, e.clamp)(i, 0.1, 10)), + this.zoom(new e.Vec2(t.offsetX, t.offsetY), i) + } else 'zoom' !== this.interactionLock && this.pan(new e.Vec2(s, o)) + this.renderCanvas() + }), + (this.onWindowKeyPress = (t) => { + if (!this.container) return + const {width: i, height: o} = this.container.getBoundingClientRect() + '=' === t.key || '+' === t.key + ? (this.zoom(new e.Vec2(i / 2, o / 2), 0.5), t.preventDefault()) + : ('-' !== t.key && '_' !== t.key) || (this.zoom(new e.Vec2(i / 2, o / 2), 2), t.preventDefault()), + t.ctrlKey || + t.shiftKey || + t.metaKey || + ('0' === t.key + ? this.zoom(new e.Vec2(i / 2, o / 2), 1e9) + : 'ArrowRight' === t.key || 'KeyD' === t.code + ? this.pan(new e.Vec2(100, 0)) + : 'ArrowLeft' === t.key || 'KeyA' === t.code + ? this.pan(new e.Vec2(-100, 0)) + : 'ArrowUp' === t.key || 'KeyW' === t.code + ? this.pan(new e.Vec2(0, -100)) + : 'ArrowDown' === t.key || 'KeyS' === t.code + ? this.pan(new e.Vec2(0, 100)) + : 'Escape' === t.key && (this.props.onNodeSelect(null), this.renderCanvas())) + }) + } + getStyle() { + return (0, o.getFlamechartStyle)(this.props.theme) + } + setConfigSpaceViewportRect(e) { + this.props.setConfigSpaceViewportRect(e) + } + configSpaceSize() { + return new e.Vec2(this.props.flamechart.getTotalWeight(), this.props.flamechart.getLayers().length) + } + physicalViewSize() { + return new e.Vec2( + this.overlayCanvas ? this.overlayCanvas.width : 0, + this.overlayCanvas ? this.overlayCanvas.height : 0, + ) + } + physicalBounds() { + if (this.props.renderInverted) { + const t = this.physicalViewSize().y, + i = (this.configSpaceSize().y + 1) * this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT * window.devicePixelRatio + if (i < t) return new e.Rect(new e.Vec2(0, t - i), this.physicalViewSize()) + } + return new e.Rect(new e.Vec2(0, 0), this.physicalViewSize()) + } + configSpaceToPhysicalViewSpace() { + return e.AffineTransform.betweenRects(this.props.configSpaceViewportRect, this.physicalBounds()) + } + logicalToPhysicalViewSpace() { + return e.AffineTransform.withScale(new e.Vec2(window.devicePixelRatio, window.devicePixelRatio)) + } + resizeOverlayCanvasIfNeeded() { + if (!this.overlayCanvas) return + let {width: e, height: t} = this.overlayCanvas.getBoundingClientRect() + if (((e = Math.floor(e)), (t = Math.floor(t)), 0 === e || 0 === t)) return + const i = e * window.devicePixelRatio, + o = t * window.devicePixelRatio + ;(i === this.overlayCanvas.width && o === this.overlayCanvas.height) || + ((this.overlayCanvas.width = i), (this.overlayCanvas.height = o)) + } + renderOverlays() { + const o = this.overlayCtx + if (!o) return + if (this.props.configSpaceViewportRect.isEmpty()) return + const s = this.configSpaceToPhysicalViewSpace(), + r = t.FontSize.LABEL * window.devicePixelRatio, + a = this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT * window.devicePixelRatio, + h = this.physicalViewSize() + o.clearRect(0, 0, h.x, h.y), + (o.font = `${r}px/${a}px ${t.FontFamily.MONOSPACE}`), + (o.textBaseline = 'alphabetic') + const c = (0, i.cachedMeasureTextWidth)(o, 'M' + i.ELLIPSIS + 'M'), + l = (s.inverseTransformVector(new e.Vec2(c, 0)) || new e.Vec2(0, 0)).x, + p = 5 * window.devicePixelRatio, + d = new n.BatchCanvasTextRenderer(), + f = new n.BatchCanvasTextRenderer(), + w = new n.BatchCanvasRectRenderer(), + u = new n.BatchCanvasRectRenderer(), + v = new n.BatchCanvasRectRenderer(), + m = new n.BatchCanvasRectRenderer(), + y = (t, n = 0) => { + var u + const v = t.end - t.start, + m = this.props.renderInverted ? this.configSpaceSize().y - 1 - n : n, + g = new e.Rect(new e.Vec2(t.start, m), new e.Vec2(v, 1)) + if ( + !( + v < l || + g.left() > this.props.configSpaceViewportRect.right() || + g.right() < this.props.configSpaceViewportRect.left() + ) + ) { + if (this.props.renderInverted) { + if (g.bottom() < this.props.configSpaceViewportRect.top()) return + } else if (g.top() > this.props.configSpaceViewportRect.bottom()) return + if (g.hasIntersectionWith(this.props.configSpaceViewportRect)) { + let e = s.transformRect(g) + if ( + (e.left() < 0 && + (e = e.withOrigin(e.origin.withX(0)).withSize(e.size.withX(e.size.x + e.left()))), + e.right() > h.x && (e = e.withSize(e.size.withX(h.x - e.left()))), + e.width() > c) + ) { + const s = + null === (u = this.props.searchResults) || void 0 === u + ? void 0 + : u.getMatchForFrame(t.node.frame), + n = (0, i.trimTextMid)(o, t.node.frame.name, e.width() - 2 * p) + if (s) { + const t = (0, i.remapRangesToTrimmedText)(n, s) + let h = 0, + c = e.left() + p + const l = (a - r) / 2 - 2 + for (let [s, r] of t) { + c += (0, i.cachedMeasureTextWidth)(o, n.trimmedString.substring(h, s)) + const t = (0, i.cachedMeasureTextWidth)(o, n.trimmedString.substring(s, r)) + w.rect({x: c, y: e.top() + l, w: t, h: a - 2 * l}), (c += t), (h = r) + } + } + ;(null == this.props.searchResults || s ? d : f).text({ + text: n.trimmedString, + x: e.left() + p, + y: Math.round(e.bottom() - (a - r) / 2), + }) + } + } + for (let e of t.children) y(e, n + 1) + } + }, + g = 2 * window.devicePixelRatio + o.strokeStyle = this.props.theme.selectionSecondaryColor + const S = (s.inverseTransformVector(new e.Vec2(1, 0)) || new e.Vec2(0, 0)).x, + C = (t, i = 0) => { + var o + if (!this.props.selectedNode && null == this.props.searchResults) return + const r = t.end - t.start, + n = this.props.renderInverted ? this.configSpaceSize().y - 1 - i : i, + a = new e.Rect(new e.Vec2(t.start, n), new e.Vec2(r, 1)) + if ( + !( + r < S || + a.left() > this.props.configSpaceViewportRect.right() || + a.right() < this.props.configSpaceViewportRect.left() || + a.top() > this.props.configSpaceViewportRect.bottom() + ) + ) { + if (a.hasIntersectionWith(this.props.configSpaceViewportRect)) { + if ( + null === (o = this.props.searchResults) || void 0 === o + ? void 0 + : o.getMatchForFrame(t.node.frame) + ) { + const e = s.transformRect(a) + m.rect({ + x: Math.round(e.left() + g / 2), + y: Math.round(e.top() + g / 2), + w: Math.round(Math.max(0, e.width() - g)), + h: Math.round(Math.max(0, e.height() - g)), + }) + } + if (null != this.props.selectedNode && t.node.frame === this.props.selectedNode.frame) { + let e = t.node === this.props.selectedNode ? u : v + const i = s.transformRect(a) + e.rect({ + x: Math.round(i.left() + 1 + g / 2), + y: Math.round(i.top() + 1 + g / 2), + w: Math.round(Math.max(0, i.width() - 2 - g)), + h: Math.round(Math.max(0, i.height() - 2 - g)), + }) + } + } + for (let e of t.children) C(e, i + 1) + } + } + for (let e of this.props.flamechart.getLayers()[0] || []) C(e) + for (let e of this.props.flamechart.getLayers()[0] || []) y(e) + const V = this.props.theme + if ( + (m.fill(o, V.searchMatchPrimaryColor), + w.fill(o, V.searchMatchSecondaryColor), + f.fill(o, V.fgSecondaryColor), + d.fill(o, null != this.props.searchResults ? V.searchMatchTextColor : V.fgPrimaryColor), + v.stroke(o, V.selectionSecondaryColor, g), + u.stroke(o, V.selectionPrimaryColor, g), + this.hoveredLabel) + ) { + let e = V.fgPrimaryColor + this.props.selectedNode === this.hoveredLabel.node && (e = V.selectionPrimaryColor), + (o.lineWidth = 2 * devicePixelRatio), + (o.strokeStyle = e) + const t = s.transformRect(this.hoveredLabel.configSpaceBounds) + o.strokeRect( + Math.round(t.left()), + Math.round(t.top()), + Math.round(Math.max(0, t.width())), + Math.round(Math.max(0, t.height())), + ) + } + this.renderTimeIndicators() + } + renderTimeIndicators() { + const o = this.overlayCtx + if (!o) return + const s = this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT * window.devicePixelRatio, + r = this.physicalViewSize(), + n = this.configSpaceToPhysicalViewSpace(), + h = (s - t.FontSize.LABEL * window.devicePixelRatio) / 2, + c = this.props.configSpaceViewportRect.left(), + l = this.props.configSpaceViewportRect.right(), + p = (this.configSpaceToPhysicalViewSpace().inverted() || new e.AffineTransform()) + .times(this.logicalToPhysicalViewSpace()) + .transformVector(new e.Vec2(200, 1)).x + let d = Math.pow(10, Math.floor(Math.log10(p))) + p / d > 5 ? (d *= 5) : p / d > 2 && (d *= 2) + const f = this.props.theme + { + const t = this.props.renderInverted ? r.y - s : 0 + ;(o.fillStyle = a.Color.fromCSSHex(f.bgPrimaryColor).withAlpha(0.8).toCSS()), + o.fillRect(0, t, r.x, s), + (o.textBaseline = 'top') + for (let s = Math.ceil(c / d) * d; s < l; s += d) { + const a = Math.round(n.transformPosition(new e.Vec2(s, 0)).x), + c = this.props.flamechart.formatValue(s), + l = (0, i.cachedMeasureTextWidth)(o, c) + ;(o.fillStyle = f.fgPrimaryColor), + o.fillText(c, a - l - h, t + h), + (o.fillStyle = f.fgSecondaryColor), + o.fillRect(a, 0, 1, r.y) + } + } + } + updateConfigSpaceViewport() { + if (!this.container) return + const {logicalSpaceViewportSize: t} = this.props, + i = this.container.getBoundingClientRect(), + {width: o, height: s} = i + if (o < 2 || s < 2) return + if (this.props.configSpaceViewportRect.isEmpty()) { + const t = s / this.LOGICAL_VIEW_SPACE_FRAME_HEIGHT + this.props.renderInverted + ? this.setConfigSpaceViewportRect( + new e.Rect( + new e.Vec2(0, this.configSpaceSize().y - t + 1), + new e.Vec2(this.configSpaceSize().x, t), + ), + ) + : this.setConfigSpaceViewportRect( + new e.Rect(new e.Vec2(0, -1), new e.Vec2(this.configSpaceSize().x, t)), + ) + } else + t.equals(e.Vec2.zero) || + (t.x === o && t.y === s) || + this.setConfigSpaceViewportRect( + this.props.configSpaceViewportRect.withSize( + this.props.configSpaceViewportRect.size.timesPointwise(new e.Vec2(o / t.x, s / t.y)), + ), + ) + const r = new e.Vec2(o, s) + r.equals(t) || this.props.setLogicalSpaceViewportSize(r) + } + renderRects() { + this.container && + (this.updateConfigSpaceViewport(), + this.props.configSpaceViewportRect.isEmpty() || + this.props.canvasContext.renderBehind(this.container, () => { + this.props.flamechartRenderer.render({ + physicalSpaceDstRect: this.physicalBounds(), + configSpaceSrcRect: this.props.configSpaceViewportRect, + renderOutlines: !0, + }) + })) + } + pan(t) { + this.interactionLock = 'pan' + const i = this.logicalToPhysicalViewSpace().transformVector(t), + o = this.configSpaceToPhysicalViewSpace().inverseTransformVector(i) + this.hoveredLabel && this.props.onNodeHover(null), + o && this.props.transformViewport(e.AffineTransform.withTranslation(o)) + } + zoom(t, i) { + this.interactionLock = 'zoom' + const o = this.logicalToPhysicalViewSpace().transformPosition(t), + s = this.configSpaceToPhysicalViewSpace().inverseTransformPosition(o) + if (!s) return + const r = e.AffineTransform.withTranslation(s.times(-1)).scaledBy(new e.Vec2(i, 1)).translatedBy(s) + this.props.transformViewport(r) + } + updateCursor() { + this.lastDragPos + ? ((document.body.style.cursor = 'grabbing'), (document.body.style.cursor = '-webkit-grabbing')) + : (document.body.style.cursor = 'default') + } + shouldComponentUpdate() { + return !1 + } + componentWillReceiveProps(e) { + this.props.flamechart !== e.flamechart + ? ((this.hoveredLabel = null), this.renderCanvas()) + : this.props.searchResults !== e.searchResults + ? this.renderCanvas() + : this.props.selectedNode !== e.selectedNode + ? this.renderCanvas() + : this.props.configSpaceViewportRect !== e.configSpaceViewportRect + ? this.renderCanvas() + : this.props.canvasContext !== e.canvasContext && + (this.props.canvasContext && this.props.canvasContext.removeBeforeFrameHandler(this.onBeforeFrame), + e.canvasContext && + (e.canvasContext.addBeforeFrameHandler(this.onBeforeFrame), e.canvasContext.requestFrame())) + } + componentDidMount() { + this.props.canvasContext.addBeforeFrameHandler(this.onBeforeFrame), + window.addEventListener('resize', this.onWindowResize), + window.addEventListener('keydown', this.onWindowKeyPress) + } + componentWillUnmount() { + this.props.canvasContext.removeBeforeFrameHandler(this.onBeforeFrame), + window.removeEventListener('resize', this.onWindowResize), + window.removeEventListener('keydown', this.onWindowKeyPress) + } + render() { + const e = this.getStyle() + return (0, s.h)( + 'div', + { + className: (0, r.css)(e.panZoomView, t.commonStyle.vbox), + onMouseDown: this.onMouseDown, + onMouseMove: this.onMouseMove, + onMouseLeave: this.onMouseLeave, + onClick: this.onClick, + onDblClick: this.onDblClick, + onWheel: this.onWheel, + ref: this.containerRef, + }, + (0, s.h)('canvas', {width: 1, height: 1, ref: this.overlayCanvasRef, className: (0, r.css)(e.fill)}), + ) + } + } + exports.FlamechartPanZoomView = h + }, + { + '../lib/math': 'tDuZ', + './style': 'hvr4', + '../lib/text-utils': 'eeWS', + './flamechart-style': 'jZ6t', + preact: 'aSor', + aphrodite: 'CxN7', + '../lib/canvas-2d-batch-renderers': 'e6nh', + '../lib/color': 'x77Y', + }, + ], + PGRN: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.Hovertip = n) + var e = require('./style'), + t = require('aphrodite'), + i = require('preact'), + o = require('./themes/theme'), + r = require('preact/hooks') + function n(e) { + const n = a((0, o.useTheme)()), + {containerSize: s, offset: d} = e, + h = s.x, + l = s.y, + p = (0, r.useCallback)( + (e) => { + if (!e) return + const t = e.getBoundingClientRect() + let i = d.x + 7 + i + t.width > h - 1 && (i = h - t.width - 1) < 1 && (i = 1), (e.style.left = `${i}px`) + let o = d.y + 7 + o + t.height > l - 1 && (o = d.y - t.height - 1) < 1 && (o = 1), (e.style.top = `${o}px`) + }, + [h, l, d.x, d.y], + ) + return (0, i.h)( + 'div', + {className: (0, t.css)(n.hoverTip), ref: p}, + (0, i.h)('div', {className: (0, t.css)(n.hoverTipRow)}, e.children), + ) + } + const s = 2, + a = (0, o.withTheme)((i) => + t.StyleSheet.create({ + hoverTip: { + position: 'absolute', + background: i.bgPrimaryColor, + border: '1px solid black', + maxWidth: e.Sizes.TOOLTIP_WIDTH_MAX, + paddingTop: 2, + paddingBottom: 2, + pointerEvents: 'none', + userSelect: 'none', + fontSize: e.FontSize.LABEL, + fontFamily: e.FontFamily.MONOSPACE, + zIndex: e.ZIndex.HOVERTIP, + }, + hoverTipRow: { + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + overflowX: 'hidden', + paddingLeft: 2, + paddingRight: 2, + maxWidth: e.Sizes.TOOLTIP_WIDTH_MAX, + }, + }), + ) + }, + {'./style': 'hvr4', aphrodite: 'CxN7', preact: 'aSor', './themes/theme': 'gzKG', 'preact/hooks': 'MwGB'}, + ], + zsRf: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.FlamechartSearchView = + exports.FlamechartSearchContextProvider = + exports.FlamechartSearchContext = + void 0) + var e = require('preact/compat'), + t = require('preact/hooks'), + l = require('./search-view'), + r = require('../lib/profile-search'), + c = require('../lib/math'), + n = require('preact') + const o = (0, n.createContext)(null) + exports.FlamechartSearchContext = o + const u = ({ + flamechart: e, + selectedNode: c, + setSelectedNode: u, + configSpaceViewportRect: a, + setConfigSpaceViewportRect: s, + children: i, + }) => { + const p = (0, t.useContext)(l.ProfileSearchContext), + h = (0, t.useMemo)(() => (null == p ? null : new r.FlamechartSearchResults(e, p)), [e, p]) + return (0, n.h)( + o.Provider, + { + value: { + results: h, + flamechart: e, + selectedNode: c, + setSelectedNode: u, + configSpaceViewportRect: a, + setConfigSpaceViewportRect: s, + }, + }, + i, + ) + } + exports.FlamechartSearchContextProvider = u + const a = (0, e.memo)(() => { + const e = (0, t.useContext)(o), + r = null == e ? null : e.results, + u = null == e ? null : e.selectedNode, + a = null == e ? null : e.setSelectedNode, + s = null == e ? null : e.configSpaceViewportRect, + i = null == e ? null : e.setConfigSpaceViewportRect, + p = null == e ? null : e.flamechart, + h = null == r ? null : r.count(), + d = (0, t.useMemo)(() => (null == r ? null : null == u ? null : r.indexOf(u)), [r, u]), + f = (0, t.useCallback)( + (e) => { + if (!a) return + if (!p) return + if (!s) return + if (!i) return + const t = e.configSpaceBounds, + l = new c.Rect(t.origin.minus(new c.Vec2(0, 1)), t.size.withY(s.height())) + a(e.node), i(p.getClampedConfigSpaceViewportRect({configSpaceViewportRect: l})) + }, + [s, i, a, p], + ), + {selectPrev: x, selectNext: S} = (0, t.useMemo)( + () => + null == h || 0 === h || null == r + ? {selectPrev: () => {}, selectNext: () => {}} + : { + selectPrev: () => { + if (!(null == r ? void 0 : r.at)) return + if (null == h || 0 === h) return + let e = null == d ? h - 1 : d - 1 + e < 0 && (e = h - 1) + const t = r.at(e) + f(t) + }, + selectNext: () => { + if (!(null == r ? void 0 : r.at)) return + if (null == h || 0 === h) return + let e = null == d ? 0 : d + 1 + e >= h && (e = 0) + const t = r.at(e) + f(t) + }, + }, + [h, d, r, f], + ) + return (0, n.h)(l.SearchView, {resultIndex: d, numResults: h, selectPrev: x, selectNext: S}) + }) + exports.FlamechartSearchView = a + }, + { + 'preact/compat': 'AQ6k', + 'preact/hooks': 'MwGB', + './search-view': 't9CM', + '../lib/profile-search': 'DHvC', + '../lib/math': 'tDuZ', + preact: 'aSor', + }, + ], + Hete: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.StatelessComponent = void 0) + var e = require('preact') + class t extends e.Component {} + exports.StatelessComponent = t + }, + {preact: 'aSor'}, + ], + Z2mP: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.FlamechartView = void 0) + var e = require('preact'), + t = require('aphrodite'), + r = require('../lib/math'), + i = require('../lib/utils'), + o = require('./flamechart-minimap-view'), + s = require('./style'), + a = require('./flamechart-detail-view'), + c = require('./flamechart-pan-zoom-view'), + p = require('./hovertip'), + h = require('./search-view'), + n = require('./flamechart-search-view'), + l = require('./flamechart-style'), + m = require('../lib/preact-helpers') + class f extends m.StatelessComponent { + constructor() { + super(...arguments), + (this.setConfigSpaceViewportRect = (e) => { + const t = s.Sizes.DETAIL_VIEW_HEIGHT / s.Sizes.FRAME_HEIGHT, + i = this.configSpaceSize(), + o = this.props.flamechart.getClampedViewportWidth(e.size.x), + a = e.size.withX(o), + c = r.Vec2.clamp( + e.origin, + new r.Vec2(0, -1), + r.Vec2.max(r.Vec2.zero, i.minus(a).plus(new r.Vec2(0, t + 1))), + ) + this.props.setConfigSpaceViewportRect(new r.Rect(c, e.size.withX(o))) + }), + (this.setLogicalSpaceViewportSize = (e) => { + this.props.setLogicalSpaceViewportSize(e) + }), + (this.transformViewport = (e) => { + const t = e.transformRect(this.props.configSpaceViewportRect) + this.setConfigSpaceViewportRect(t) + }), + (this.onNodeHover = (e) => { + this.props.setNodeHover(e) + }), + (this.onNodeClick = (e) => { + this.props.setSelectedNode(e) + }), + (this.container = null), + (this.containerRef = (e) => { + this.container = e || null + }) + } + getStyle() { + return (0, l.getFlamechartStyle)(this.props.theme) + } + configSpaceSize() { + return new r.Vec2(this.props.flamechart.getTotalWeight(), this.props.flamechart.getLayers().length) + } + formatValue(e) { + const t = (100 * e) / this.props.flamechart.getTotalWeight(), + r = (0, i.formatPercent)(t) + return `${this.props.flamechart.formatValue(e)} (${r})` + } + renderTooltip() { + if (!this.container) return null + const {hover: i} = this.props + if (!i) return null + const {width: o, height: s, left: a, top: c} = this.container.getBoundingClientRect(), + h = new r.Vec2(i.event.clientX - a, i.event.clientY - c), + n = i.node.frame, + l = this.getStyle() + return (0, e.h)( + p.Hovertip, + {containerSize: new r.Vec2(o, s), offset: h}, + (0, e.h)('span', {className: (0, t.css)(l.hoverCount)}, this.formatValue(i.node.getTotalWeight())), + ' ', + n.name, + n.file ? (0, e.h)('div', null, n.file, ':', n.line) : void 0, + ) + } + render() { + const r = this.getStyle() + return (0, e.h)( + 'div', + {className: (0, t.css)(r.fill, s.commonStyle.vbox), ref: this.containerRef}, + (0, e.h)(o.FlamechartMinimapView, { + theme: this.props.theme, + configSpaceViewportRect: this.props.configSpaceViewportRect, + transformViewport: this.transformViewport, + flamechart: this.props.flamechart, + flamechartRenderer: this.props.flamechartRenderer, + canvasContext: this.props.canvasContext, + setConfigSpaceViewportRect: this.setConfigSpaceViewportRect, + }), + (0, e.h)(h.ProfileSearchContext.Consumer, null, (t) => + (0, e.h)( + e.Fragment, + null, + (0, e.h)(c.FlamechartPanZoomView, { + theme: this.props.theme, + canvasContext: this.props.canvasContext, + flamechart: this.props.flamechart, + flamechartRenderer: this.props.flamechartRenderer, + renderInverted: !1, + onNodeHover: this.onNodeHover, + onNodeSelect: this.onNodeClick, + selectedNode: this.props.selectedNode, + transformViewport: this.transformViewport, + configSpaceViewportRect: this.props.configSpaceViewportRect, + setConfigSpaceViewportRect: this.setConfigSpaceViewportRect, + logicalSpaceViewportSize: this.props.logicalSpaceViewportSize, + setLogicalSpaceViewportSize: this.setLogicalSpaceViewportSize, + searchResults: t, + }), + (0, e.h)(n.FlamechartSearchView, null), + ), + ), + this.renderTooltip(), + this.props.selectedNode && + (0, e.h)(a.FlamechartDetailView, { + flamechart: this.props.flamechart, + getCSSColorForFrame: this.props.getCSSColorForFrame, + selectedNode: this.props.selectedNode, + }), + ) + } + } + exports.FlamechartView = f + }, + { + preact: 'aSor', + aphrodite: 'CxN7', + '../lib/math': 'tDuZ', + '../lib/utils': 'ucYa', + './flamechart-minimap-view': 'S7z0', + './style': 'hvr4', + './flamechart-detail-view': 'uohB', + './flamechart-pan-zoom-view': 'e7Fh', + './hovertip': 'PGRN', + './search-view': 't9CM', + './flamechart-search-view': 'zsRf', + './flamechart-style': 'jZ6t', + '../lib/preact-helpers': 'Hete', + }, + ], + PJJu: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.useFlamechartSetters = h), + (exports.LeftHeavyFlamechartView = + exports.getLeftHeavyFlamechart = + exports.ChronoFlamechartView = + exports.createMemoizedFlamechartRenderer = + exports.getChronoViewFlamechart = + void 0) + var e = require('preact'), + t = require('../lib/flamechart'), + r = require('../gl/flamechart-renderer'), + a = require('../lib/utils'), + o = require('./flamechart-view'), + c = require('../app-state/getters'), + l = require('preact/compat'), + i = require('./flamechart-search-view'), + m = require('./themes/theme'), + s = require('../app-state/profile-group'), + n = require('../app-state') + function h(e) { + return { + setNodeHover: (0, l.useCallback)( + (t) => { + n.profileGroupAtom.setFlamechartHoveredNode(e, t) + }, + [e], + ), + setLogicalSpaceViewportSize: (0, l.useCallback)( + (t) => { + n.profileGroupAtom.setLogicalSpaceViewportSize(e, t) + }, + [e], + ), + setConfigSpaceViewportRect: (0, l.useCallback)( + (t) => { + n.profileGroupAtom.setConfigSpaceViewportRect(e, t) + }, + [e], + ), + setSelectedNode: (0, l.useCallback)( + (t) => { + n.profileGroupAtom.setSelectedNode(e, t) + }, + [e], + ), + } + } + const p = (0, a.memoizeByShallowEquality)( + ({profile: e, getColorBucketForFrame: r}) => + new t.Flamechart({ + getTotalWeight: e.getTotalWeight.bind(e), + forEachCall: e.forEachCall.bind(e), + formatValue: e.formatValue.bind(e), + getColorBucketForFrame: r, + }), + ) + exports.getChronoViewFlamechart = p + const f = (e) => + (0, a.memoizeByShallowEquality)( + ({canvasContext: t, flamechart: a}) => + new r.FlamechartRenderer( + t.gl, + (0, c.getRowAtlas)(t), + a, + t.rectangleBatchRenderer, + t.flamechartColorPassRenderer, + e, + ), + ) + exports.createMemoizedFlamechartRenderer = f + const C = f(), + u = (0, l.memo)((t) => { + const {activeProfileState: r, glCanvas: a} = t, + {profile: l, chronoViewState: n} = r, + f = (0, m.useTheme)(), + u = (0, c.getCanvasContext)({theme: f, canvas: a}), + d = (0, c.getFrameToColorBucket)(l), + F = (0, c.createGetColorBucketForFrame)(d), + g = (0, c.createGetCSSColorForFrame)({theme: f, frameToColorBucket: d}), + S = p({profile: l, getColorBucketForFrame: F}), + w = C({canvasContext: u, flamechart: S}), + v = h(s.FlamechartID.CHRONO) + return (0, e.h)( + i.FlamechartSearchContextProvider, + { + flamechart: S, + selectedNode: n.selectedNode, + setSelectedNode: v.setSelectedNode, + configSpaceViewportRect: n.configSpaceViewportRect, + setConfigSpaceViewportRect: v.setConfigSpaceViewportRect, + }, + (0, e.h)( + o.FlamechartView, + Object.assign( + { + theme: f, + renderInverted: !1, + flamechart: S, + flamechartRenderer: w, + canvasContext: u, + getCSSColorForFrame: g, + }, + n, + v, + ), + ), + ) + }) + exports.ChronoFlamechartView = u + const d = (0, a.memoizeByShallowEquality)( + ({profile: e, getColorBucketForFrame: r}) => + new t.Flamechart({ + getTotalWeight: e.getTotalNonIdleWeight.bind(e), + forEachCall: e.forEachCallGrouped.bind(e), + formatValue: e.formatValue.bind(e), + getColorBucketForFrame: r, + }), + ) + exports.getLeftHeavyFlamechart = d + const F = f(), + g = (0, l.memo)((t) => { + const {activeProfileState: r, glCanvas: a} = t, + {profile: l, leftHeavyViewState: n} = r, + p = (0, m.useTheme)(), + f = (0, c.getCanvasContext)({theme: p, canvas: a}), + C = (0, c.getFrameToColorBucket)(l), + u = (0, c.createGetColorBucketForFrame)(C), + g = (0, c.createGetCSSColorForFrame)({theme: p, frameToColorBucket: C}), + S = d({profile: l, getColorBucketForFrame: u}), + w = F({canvasContext: f, flamechart: S}), + v = h(s.FlamechartID.LEFT_HEAVY) + return (0, e.h)( + i.FlamechartSearchContextProvider, + { + flamechart: S, + selectedNode: n.selectedNode, + setSelectedNode: v.setSelectedNode, + configSpaceViewportRect: n.configSpaceViewportRect, + setConfigSpaceViewportRect: v.setConfigSpaceViewportRect, + }, + (0, e.h)( + o.FlamechartView, + Object.assign( + { + theme: p, + renderInverted: !1, + flamechart: S, + flamechartRenderer: w, + canvasContext: f, + getCSSColorForFrame: g, + }, + n, + v, + ), + ), + ) + }) + exports.LeftHeavyFlamechartView = g + }, + { + preact: 'aSor', + '../lib/flamechart': 'gFMr', + '../gl/flamechart-renderer': 'P80v', + '../lib/utils': 'ucYa', + './flamechart-view': 'Z2mP', + '../app-state/getters': 'zEXv', + 'preact/compat': 'AQ6k', + './flamechart-search-view': 'zsRf', + './themes/theme': 'gzKG', + '../app-state/profile-group': 'uxXA', + '../app-state': 'LDQe', + }, + ], + MXNL: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.getStyle = exports.FlamechartWrapper = void 0) + var e = require('aphrodite'), + t = require('preact'), + r = require('./style'), + o = require('../lib/math'), + i = require('./flamechart-pan-zoom-view'), + s = require('../lib/utils'), + p = require('./hovertip'), + a = require('./themes/theme'), + n = require('../lib/preact-helpers') + class c extends n.StatelessComponent { + constructor() { + super(...arguments), + (this.setConfigSpaceViewportRect = (e) => { + this.props.setConfigSpaceViewportRect(this.clampViewportToFlamegraph(e)) + }), + (this.setLogicalSpaceViewportSize = (e) => { + this.props.setLogicalSpaceViewportSize(e) + }), + (this.transformViewport = (e) => { + this.setConfigSpaceViewportRect(e.transformRect(this.props.configSpaceViewportRect)) + }), + (this.container = null), + (this.containerRef = (e) => { + this.container = e || null + }), + (this.setNodeHover = (e) => { + this.props.setNodeHover(e) + }) + } + clampViewportToFlamegraph(e) { + const {flamechart: t, renderInverted: r} = this.props + return t.getClampedConfigSpaceViewportRect({configSpaceViewportRect: e, renderInverted: r}) + } + formatValue(e) { + const t = (100 * e) / this.props.flamechart.getTotalWeight(), + r = (0, s.formatPercent)(t) + return `${this.props.flamechart.formatValue(e)} (${r})` + } + renderTooltip() { + if (!this.container) return null + const {hover: r} = this.props + if (!r) return null + const {width: i, height: s, left: a, top: n} = this.container.getBoundingClientRect(), + c = new o.Vec2(r.event.clientX - a, r.event.clientY - n), + h = l(this.props.theme), + m = r.node.frame + return (0, t.h)( + p.Hovertip, + {containerSize: new o.Vec2(i, s), offset: c}, + (0, t.h)('span', {className: (0, e.css)(h.hoverCount)}, this.formatValue(r.node.getTotalWeight())), + ' ', + m.name, + m.file ? (0, t.h)('div', null, m.file, ':', m.line) : void 0, + ) + } + render() { + return (0, t.h)( + 'div', + { + className: (0, e.css)(r.commonStyle.fillY, r.commonStyle.fillX, r.commonStyle.vbox), + ref: this.containerRef, + }, + (0, t.h)(i.FlamechartPanZoomView, { + theme: this.props.theme, + selectedNode: null, + onNodeHover: this.setNodeHover, + onNodeSelect: s.noop, + configSpaceViewportRect: this.props.configSpaceViewportRect, + setConfigSpaceViewportRect: this.setConfigSpaceViewportRect, + transformViewport: this.transformViewport, + flamechart: this.props.flamechart, + flamechartRenderer: this.props.flamechartRenderer, + canvasContext: this.props.canvasContext, + renderInverted: this.props.renderInverted, + logicalSpaceViewportSize: this.props.logicalSpaceViewportSize, + setLogicalSpaceViewportSize: this.setLogicalSpaceViewportSize, + searchResults: null, + }), + this.renderTooltip(), + ) + } + } + exports.FlamechartWrapper = c + const l = (0, a.withTheme)((t) => e.StyleSheet.create({hoverCount: {color: t.weightColor}})) + exports.getStyle = l + }, + { + aphrodite: 'CxN7', + preact: 'aSor', + './style': 'hvr4', + '../lib/math': 'tDuZ', + './flamechart-pan-zoom-view': 'e7Fh', + '../lib/utils': 'ucYa', + './hovertip': 'PGRN', + './themes/theme': 'gzKG', + '../lib/preact-helpers': 'Hete', + }, + ], + Cw7z: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.InvertedCallerFlamegraphView = void 0) + var e = require('../lib/utils'), + r = require('../lib/flamechart'), + t = require('./flamechart-view-container'), + a = require('../app-state/getters'), + o = require('./flamechart-wrapper'), + l = require('preact'), + i = require('preact/compat'), + n = require('./themes/theme'), + m = require('../app-state/profile-group'), + c = require('../app-state'), + s = require('../lib/atom') + const u = (0, e.memoizeByShallowEquality)(({profile: e, frame: r, flattenRecursion: t}) => { + let a = e.getInvertedProfileForCallersOf(r) + return t ? a.getProfileWithRecursionFlattened() : a + }), + h = (0, e.memoizeByShallowEquality)( + ({invertedCallerProfile: e, getColorBucketForFrame: t}) => + new r.Flamechart({ + getTotalWeight: e.getTotalNonIdleWeight.bind(e), + forEachCall: e.forEachCallGrouped.bind(e), + formatValue: e.formatValue.bind(e), + getColorBucketForFrame: t, + }), + ), + f = (0, t.createMemoizedFlamechartRenderer)({inverted: !0}), + p = (0, i.memo)((r) => { + const {activeProfileState: i} = r + let {profile: p, sandwichViewState: C} = i + const d = (0, s.useAtom)(c.flattenRecursionAtom), + F = (0, s.useAtom)(c.glCanvasAtom), + g = (0, n.useTheme)() + if (!p) throw new Error('profile missing') + if (!F) throw new Error('glCanvas missing') + const {callerCallee: v} = C + if (!v) throw new Error('callerCallee missing') + const {selectedFrame: w} = v, + q = (0, a.getFrameToColorBucket)(p), + S = (0, a.createGetColorBucketForFrame)(q), + E = (0, a.createGetCSSColorForFrame)({theme: g, frameToColorBucket: q}), + b = (0, a.getCanvasContext)({theme: g, canvas: F}), + B = h({invertedCallerProfile: u({profile: p, frame: w, flattenRecursion: d}), getColorBucketForFrame: S}), + I = f({canvasContext: b, flamechart: B}) + return (0, l.h)( + o.FlamechartWrapper, + Object.assign( + { + theme: g, + renderInverted: !0, + flamechart: B, + flamechartRenderer: I, + canvasContext: b, + getCSSColorForFrame: E, + }, + (0, t.useFlamechartSetters)(m.FlamechartID.SANDWICH_INVERTED_CALLERS), + v.invertedCallerFlamegraph, + {setSelectedNode: e.noop}, + ), + ) + }) + exports.InvertedCallerFlamegraphView = p + }, + { + '../lib/utils': 'ucYa', + '../lib/flamechart': 'gFMr', + './flamechart-view-container': 'PJJu', + '../app-state/getters': 'zEXv', + './flamechart-wrapper': 'MXNL', + preact: 'aSor', + 'preact/compat': 'AQ6k', + './themes/theme': 'gzKG', + '../app-state/profile-group': 'uxXA', + '../app-state': 'LDQe', + '../lib/atom': 'QkVE', + }, + ], + KT37: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.CalleeFlamegraphView = void 0) + var e = require('../lib/utils'), + r = require('../lib/flamechart'), + t = require('./flamechart-view-container'), + a = require('../app-state/getters'), + o = require('./flamechart-wrapper'), + l = require('preact'), + i = require('preact/compat'), + c = require('./themes/theme'), + m = require('../app-state/profile-group'), + n = require('../app-state'), + s = require('../lib/atom') + const u = (0, e.memoizeByShallowEquality)(({profile: e, frame: r, flattenRecursion: t}) => { + let a = e.getProfileForCalleesOf(r) + return t ? a.getProfileWithRecursionFlattened() : a + }), + h = (0, e.memoizeByShallowEquality)( + ({calleeProfile: e, getColorBucketForFrame: t}) => + new r.Flamechart({ + getTotalWeight: e.getTotalNonIdleWeight.bind(e), + forEachCall: e.forEachCallGrouped.bind(e), + formatValue: e.formatValue.bind(e), + getColorBucketForFrame: t, + }), + ), + f = (0, t.createMemoizedFlamechartRenderer)(), + p = (0, i.memo)((r) => { + const {activeProfileState: i} = r, + {profile: p, sandwichViewState: C} = i, + F = (0, s.useAtom)(n.flattenRecursionAtom), + g = (0, s.useAtom)(n.glCanvasAtom), + d = (0, c.useTheme)() + if (!p) throw new Error('profile missing') + if (!g) throw new Error('glCanvas missing') + const {callerCallee: w} = C + if (!w) throw new Error('callerCallee missing') + const {selectedFrame: q} = w, + v = (0, a.getFrameToColorBucket)(p), + S = (0, a.createGetColorBucketForFrame)(v), + E = (0, a.createGetCSSColorForFrame)({theme: d, frameToColorBucket: v}), + b = (0, a.getCanvasContext)({theme: d, canvas: g}), + B = h({calleeProfile: u({profile: p, frame: q, flattenRecursion: F}), getColorBucketForFrame: S}), + k = f({canvasContext: b, flamechart: B}) + return (0, l.h)( + o.FlamechartWrapper, + Object.assign( + { + theme: d, + renderInverted: !1, + flamechart: B, + flamechartRenderer: k, + canvasContext: b, + getCSSColorForFrame: E, + }, + (0, t.useFlamechartSetters)(m.FlamechartID.SANDWICH_CALLEES), + w.calleeFlamegraph, + {setSelectedNode: e.noop}, + ), + ) + }) + exports.CalleeFlamegraphView = p + }, + { + '../lib/utils': 'ucYa', + '../lib/flamechart': 'gFMr', + './flamechart-view-container': 'PJJu', + '../app-state/getters': 'zEXv', + './flamechart-wrapper': 'MXNL', + preact: 'aSor', + 'preact/compat': 'AQ6k', + './themes/theme': 'gzKG', + '../app-state/profile-group': 'uxXA', + '../app-state': 'LDQe', + '../lib/atom': 'QkVE', + }, + ], + cWm7: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.SandwichSearchView = void 0) + var e = require('preact/compat'), + l = require('preact/hooks'), + t = require('./search-view'), + r = require('preact'), + s = require('./sandwich-view') + const c = (0, e.memo)(() => { + const e = (0, l.useContext)(s.SandwichViewContext), + c = null != e ? e.rowList : null, + n = null != (null == e ? void 0 : e.selectedFrame) ? e.getIndexForFrame(e.selectedFrame) : null, + u = null != c ? c.length : null, + {selectPrev: i, selectNext: a} = (0, l.useMemo)( + () => + null == c || null == u || 0 === u || null == e + ? {selectPrev: () => {}, selectNext: () => {}} + : { + selectPrev: () => { + let l = null == n ? u - 1 : n - 1 + l < 0 && (l = u - 1), e.setSelectedFrame(c[l]) + }, + selectNext: () => { + let l = null == n ? 0 : n + 1 + l >= u && (l = 0), e.setSelectedFrame(c[l]) + }, + }, + [n, c, u, e], + ) + return (0, r.h)(t.SearchView, {resultIndex: n, numResults: u, selectPrev: i, selectNext: a}) + }) + exports.SandwichSearchView = c + }, + { + 'preact/compat': 'AQ6k', + 'preact/hooks': 'MwGB', + './search-view': 't9CM', + preact: 'aSor', + './sandwich-view': 'L8J2', + }, + ], + L8J2: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.SandwichViewContainer = exports.SandwichViewContext = void 0) + var e = require('aphrodite'), + t = require('./profile-table-view'), + r = require('preact'), + a = require('preact/compat'), + l = require('preact/hooks'), + o = require('./style'), + s = require('./inverted-caller-flamegraph-view'), + i = require('./callee-flamegraph-view'), + n = require('./sandwich-search-view'), + c = require('../lib/utils'), + h = require('./search-view'), + m = require('./themes/theme'), + d = require('../app-state'), + p = require('../lib/atom'), + f = require('../lib/preact-helpers') + class u extends f.StatelessComponent { + constructor() { + super(...arguments), + (this.setSelectedFrame = (e) => { + this.props.setSelectedFrame(e) + }), + (this.onWindowKeyPress = (e) => { + 'Escape' === e.key && this.setSelectedFrame(null) + }) + } + componentDidMount() { + window.addEventListener('keydown', this.onWindowKeyPress) + } + componentWillUnmount() { + window.removeEventListener('keydown', this.onWindowKeyPress) + } + render() { + const a = S(this.props.theme), + {selectedFrame: l} = this.props + let c = null + return ( + l && + (c = (0, r.h)( + 'div', + {className: (0, e.css)(o.commonStyle.fillY, a.callersAndCallees, o.commonStyle.vbox)}, + (0, r.h)( + 'div', + {className: (0, e.css)(o.commonStyle.hbox, a.panZoomViewWraper)}, + (0, r.h)( + 'div', + {className: (0, e.css)(a.flamechartLabelParent)}, + (0, r.h)('div', {className: (0, e.css)(a.flamechartLabel)}, 'Callers'), + ), + (0, r.h)(s.InvertedCallerFlamegraphView, { + glCanvas: this.props.glCanvas, + activeProfileState: this.props.activeProfileState, + }), + ), + (0, r.h)('div', {className: (0, e.css)(a.divider)}), + (0, r.h)( + 'div', + {className: (0, e.css)(o.commonStyle.hbox, a.panZoomViewWraper)}, + (0, r.h)( + 'div', + {className: (0, e.css)(a.flamechartLabelParent, a.flamechartLabelParentBottom)}, + (0, r.h)('div', {className: (0, e.css)(a.flamechartLabel, a.flamechartLabelBottom)}, 'Callees'), + ), + (0, r.h)(i.CalleeFlamegraphView, { + glCanvas: this.props.glCanvas, + activeProfileState: this.props.activeProfileState, + }), + ), + )), + (0, r.h)( + 'div', + {className: (0, e.css)(o.commonStyle.hbox, o.commonStyle.fillY)}, + (0, r.h)( + 'div', + {className: (0, e.css)(a.tableView)}, + (0, r.h)(t.ProfileTableViewContainer, {activeProfileState: this.props.activeProfileState}), + (0, r.h)(n.SandwichSearchView, null), + ), + c, + ) + ) + } + } + const S = (0, m.withTheme)((t) => + e.StyleSheet.create({ + tableView: {position: 'relative', flex: 1}, + panZoomViewWraper: {flex: 1}, + flamechartLabelParent: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'flex-end', + alignItems: 'flex-start', + fontSize: o.FontSize.TITLE, + width: 1.2 * o.FontSize.TITLE, + borderRight: `1px solid ${t.fgSecondaryColor}`, + }, + flamechartLabelParentBottom: {justifyContent: 'flex-start'}, + flamechartLabel: { + transform: 'rotate(-90deg)', + transformOrigin: '50% 50% 0', + width: 1.2 * o.FontSize.TITLE, + flexShrink: 1, + }, + flamechartLabelBottom: {transform: 'rotate(-90deg)', display: 'flex', justifyContent: 'flex-end'}, + callersAndCallees: {flex: 1, borderLeft: `${o.Sizes.SEPARATOR_HEIGHT}px solid ${t.fgSecondaryColor}`}, + divider: {height: 2, background: t.fgSecondaryColor}, + }), + ), + v = (0, r.createContext)(null) + exports.SandwichViewContext = v + const w = (0, a.memo)((e) => { + const {activeProfileState: t, glCanvas: a} = e, + {sandwichViewState: o, index: s} = t, + {callerCallee: i} = o, + n = (0, m.useTheme)(), + f = (0, l.useCallback)((e) => { + d.profileGroupAtom.setSelectedFrame(e) + }, []), + S = t.profile, + w = (0, p.useAtom)(d.tableSortMethodAtom), + x = (0, l.useContext)(h.ProfileSearchContext), + C = i ? i.selectedFrame : null, + g = (0, l.useMemo)(() => { + const e = [] + switch ( + (S.forEachFrame((t) => { + ;(x && !x.getMatchForFrame(t)) || e.push(t) + }), + w.field) + ) { + case d.SortField.SYMBOL_NAME: + ;(0, c.sortBy)(e, (e) => e.name.toLowerCase()) + break + case d.SortField.SELF: + ;(0, c.sortBy)(e, (e) => e.getSelfWeight()) + break + case d.SortField.TOTAL: + ;(0, c.sortBy)(e, (e) => e.getTotalWeight()) + } + return w.direction === d.SortDirection.DESCENDING && e.reverse(), e + }, [S, x, w]), + b = (0, l.useMemo)(() => { + const e = new Map() + for (let t = 0; t < g.length; t++) e.set(g[t], t) + return (t) => { + const r = e.get(t) + return null == r ? null : r + } + }, [g]), + F = (0, l.useMemo)(() => (e) => null == x ? null : x.getMatchForFrame(e), [x]), + y = {rowList: g, selectedFrame: C, setSelectedFrame: f, getIndexForFrame: b, getSearchMatchForFrame: F} + return (0, r.h)( + v.Provider, + {value: y}, + (0, r.h)(u, { + theme: n, + activeProfileState: t, + glCanvas: a, + setSelectedFrame: f, + selectedFrame: C, + profileIndex: s, + }), + ) + }) + exports.SandwichViewContainer = w + }, + { + aphrodite: 'CxN7', + './profile-table-view': 'Ivh5', + preact: 'aSor', + 'preact/compat': 'AQ6k', + 'preact/hooks': 'MwGB', + './style': 'hvr4', + './inverted-caller-flamegraph-view': 'Cw7z', + './callee-flamegraph-view': 'KT37', + './sandwich-search-view': 'cWm7', + '../lib/utils': 'ucYa', + './search-view': 't9CM', + './themes/theme': 'gzKG', + '../app-state': 'LDQe', + '../lib/atom': 'QkVE', + '../lib/preact-helpers': 'Hete', + }, + ], + LsM4: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.ByteFormatter = exports.TimeFormatter = exports.RawValueFormatter = void 0) + var t = require('./utils') + class e { + constructor() { + this.unit = 'none' + } + format(t) { + return t.toLocaleString() + } + } + exports.RawValueFormatter = e + class r { + constructor(t) { + ;(this.unit = t), + (this.multiplier = + 'nanoseconds' === t ? 1e-9 : 'microseconds' === t ? 1e-6 : 'milliseconds' === t ? 0.001 : 1) + } + formatUnsigned(e) { + const r = e * this.multiplier + if (r / 60 >= 1) { + const e = Math.floor(r / 60), + o = Math.floor(r - 60 * e).toString() + return `${e}:${(0, t.zeroPad)(o, 2)}` + } + return r / 1 >= 1 + ? `${r.toFixed(2)}s` + : r / 0.001 >= 1 + ? `${(r / 0.001).toFixed(2)}ms` + : r / 1e-6 >= 1 + ? `${(r / 1e-6).toFixed(2)}µs` + : `${(r / 1e-9).toFixed(2)}ns` + } + format(t) { + return `${t < 0 ? '-' : ''}${this.formatUnsigned(Math.abs(t))}` + } + } + exports.TimeFormatter = r + class o { + constructor() { + this.unit = 'bytes' + } + format(t) { + return t < 1024 + ? `${t.toFixed(0)} B` + : (t /= 1024) < 1024 + ? `${t.toFixed(2)} KB` + : (t /= 1024) < 1024 + ? `${t.toFixed(2)} MB` + : `${(t /= 1024).toFixed(2)} GB` + } + } + exports.ByteFormatter = o + }, + {'./utils': 'ucYa'}, + ], + FheM: [ + function (require, module, exports) { + var t = null + function e() { + return t || (t = n()), t + } + function n() { + try { + throw new Error() + } catch (e) { + var t = ('' + e.stack).match(/(https?|file|ftp|chrome-extension|moz-extension):\/\/[^)\n]+/g) + if (t) return r(t[0]) + } + return '/' + } + function r(t) { + return ('' + t).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\/\/.+)\/[^/]+$/, '$1') + '/' + } + ;(exports.getBundleURL = e), (exports.getBaseURL = r) + }, + {}, + ], + TUK3: [ + function (require, module, exports) { + var r = require('./bundle-url').getBundleURL + function e(r) { + Array.isArray(r) || (r = [r]) + var e = r[r.length - 1] + try { + return Promise.resolve(require(e)) + } catch (n) { + if ('MODULE_NOT_FOUND' === n.code) + return new s(function (n, i) { + t(r.slice(0, -1)) + .then(function () { + return require(e) + }) + .then(n, i) + }) + throw n + } + } + function t(r) { + return Promise.all(r.map(u)) + } + var n = {} + function i(r, e) { + n[r] = e + } + ;(module.exports = exports = e), (exports.load = t), (exports.register = i) + var o = {} + function u(e) { + var t + if ((Array.isArray(e) && ((t = e[1]), (e = e[0])), o[e])) return o[e] + var i = (e.substring(e.lastIndexOf('.') + 1, e.length) || e).toLowerCase(), + u = n[i] + return u + ? (o[e] = u(r() + e) + .then(function (r) { + return r && module.bundle.register(t, r), r + }) + .catch(function (r) { + throw (delete o[e], r) + })) + : void 0 + } + function s(r) { + ;(this.executor = r), (this.promise = null) + } + ;(s.prototype.then = function (r, e) { + return null === this.promise && (this.promise = new Promise(this.executor)), this.promise.then(r, e) + }), + (s.prototype.catch = function (r) { + return null === this.promise && (this.promise = new Promise(this.executor)), this.promise.catch(r) + }) + }, + {'./bundle-url': 'FheM'}, + ], + YG8z: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.CallTreeProfileBuilder = + exports.StackListProfileBuilder = + exports.Profile = + exports.CallTreeNode = + exports.Frame = + exports.HasWeights = + void 0) + var e = require('./utils'), + t = require('./value-formatters'), + r = function (e, t, r, s) { + return new (r || (r = Promise))(function (a, i) { + function l(e) { + try { + n(s.next(e)) + } catch (t) { + i(t) + } + } + function o(e) { + try { + n(s.throw(e)) + } catch (t) { + i(t) + } + } + function n(e) { + var t + e.done + ? a(e.value) + : ((t = e.value), + t instanceof r + ? t + : new r(function (e) { + e(t) + })).then(l, o) + } + n((s = s.apply(e, t || [])).next()) + }) + } + const s = require('_bundle_loader')(require.resolve('./demangle-cpp')) + class a { + constructor() { + ;(this.selfWeight = 0), (this.totalWeight = 0) + } + getSelfWeight() { + return this.selfWeight + } + getTotalWeight() { + return this.totalWeight + } + addToTotalWeight(e) { + this.totalWeight += e + } + addToSelfWeight(e) { + this.selfWeight += e + } + overwriteWeightWith(e) { + ;(this.selfWeight = e.selfWeight), (this.totalWeight = e.totalWeight) + } + } + exports.HasWeights = a + class i extends a { + constructor(e) { + super(), + (this.key = e.key), + (this.name = e.name), + (this.file = e.file), + (this.line = e.line), + (this.col = e.col) + } + static getOrInsert(e, t) { + return e.getOrInsert(new i(t)) + } + } + ;(exports.Frame = i), (i.root = new i({key: '(speedscope root)', name: '(speedscope root)'})) + class l extends a { + isRoot() { + return this.frame === i.root + } + isFrozen() { + return this.frozen + } + freeze() { + this.frozen = !0 + } + constructor(e, t) { + super(), (this.frame = e), (this.parent = t), (this.children = []), (this.frozen = !1) + } + } + exports.CallTreeNode = l + class o { + getAppendOrderCalltreeRoot() { + return this.appendOrderCalltreeRoot + } + getGroupedCalltreeRoot() { + return this.groupedCalltreeRoot + } + constructor(r = 0) { + ;(this.name = ''), + (this.frames = new e.KeyedSet()), + (this.appendOrderCalltreeRoot = new l(i.root, null)), + (this.groupedCalltreeRoot = new l(i.root, null)), + (this.samples = []), + (this.weights = []), + (this.valueFormatter = new t.RawValueFormatter()), + (this.totalNonIdleWeight = null), + (this.totalWeight = r) + } + shallowClone() { + const e = new o(this.totalWeight) + return Object.assign(e, this), e + } + formatValue(e) { + return this.valueFormatter.format(e) + } + setValueFormatter(e) { + this.valueFormatter = e + } + getWeightUnit() { + return this.valueFormatter.unit + } + getName() { + return this.name + } + setName(e) { + this.name = e + } + getTotalWeight() { + return this.totalWeight + } + getTotalNonIdleWeight() { + return ( + null === this.totalNonIdleWeight && + (this.totalNonIdleWeight = this.groupedCalltreeRoot.children.reduce( + (e, t) => e + t.getTotalWeight(), + 0, + )), + this.totalNonIdleWeight + ) + } + sortGroupedCallTree() { + !(function e(t) { + t.children.sort((e, t) => -(e.getTotalWeight() - t.getTotalWeight())), t.children.forEach(e) + })(this.groupedCalltreeRoot) + } + forEachCallGrouped(e, t) { + !(function r(s, a) { + s.frame !== i.root && e(s, a) + let l = 0 + s.children.forEach(function (e) { + r(e, a + l), (l += e.getTotalWeight()) + }), + s.frame !== i.root && t(s, a + s.getTotalWeight()) + })(this.groupedCalltreeRoot, 0) + } + forEachCall(t, r) { + let s = [], + a = 0, + l = 0 + for (let o of this.samples) { + let n = null + for (n = o; n && n.frame != i.root && -1 === s.indexOf(n); n = n.parent); + for (; s.length > 0 && (0, e.lastOf)(s) != n; ) { + r(s.pop(), a) + } + const h = [] + for (let e = o; e && e.frame != i.root && e != n; e = e.parent) h.push(e) + h.reverse() + for (let e of h) t(e, a) + ;(s = s.concat(h)), (a += this.weights[l++]) + } + for (let e = s.length - 1; e >= 0; e--) r(s[e], a) + } + forEachFrame(e) { + this.frames.forEach(e) + } + getProfileWithRecursionFlattened() { + const e = new h(), + t = [], + r = new Set() + this.forEachCall( + function (s, a) { + r.has(s.frame) ? t.push(null) : (r.add(s.frame), t.push(s), e.enterFrame(s.frame, a)) + }, + function (s, a) { + const i = t.pop() + i && (r.delete(i.frame), e.leaveFrame(i.frame, a)) + }, + ) + const s = e.build() + return ( + (s.name = this.name), + (s.valueFormatter = this.valueFormatter), + this.forEachFrame((e) => { + s.frames.getOrInsert(e).overwriteWeightWith(e) + }), + s + ) + } + getInvertedProfileForCallersOf(e) { + const t = i.getOrInsert(this.frames, e), + r = new n(), + s = [] + !(function e(r) { + if (r.frame === t) s.push(r) + else for (let t of r.children) e(t) + })(this.appendOrderCalltreeRoot) + for (let l of s) { + const e = [] + for (let t = l; null != t && t.frame !== i.root; t = t.parent) e.push(t.frame) + r.appendSampleWithWeight(e, l.getTotalWeight()) + } + const a = r.build() + return (a.name = this.name), (a.valueFormatter = this.valueFormatter), a + } + getProfileForCalleesOf(e) { + const t = i.getOrInsert(this.frames, e), + r = new n() + !(function e(s) { + if (s.frame === t) + !(function (e) { + const t = [] + !(function e(s) { + t.push(s.frame), r.appendSampleWithWeight(t, s.getSelfWeight()) + for (let t of s.children) e(t) + t.pop() + })(e) + })(s) + else for (let t of s.children) e(t) + })(this.appendOrderCalltreeRoot) + const s = r.build() + return (s.name = this.name), (s.valueFormatter = this.valueFormatter), s + } + demangle() { + return r(this, void 0, void 0, function* () { + let e = null + for (let t of this.frames) + t.name.startsWith('__Z') && (e || (e = (yield s).demangleCpp), (t.name = e(t.name))) + }) + } + remapSymbols(e) { + for (let t of this.frames) { + const r = e(t) + if (null == r) continue + const {name: s, file: a, line: i, col: l} = r + null != s && (t.name = s), null != a && (t.file = a), null != i && (t.line = i), null != l && (t.col = l) + } + } + } + exports.Profile = o + class n extends o { + constructor() { + super(...arguments), (this.pendingSample = null) + } + _appendSample(t, r, s) { + if (isNaN(r)) throw new Error('invalid weight') + let a = s ? this.appendOrderCalltreeRoot : this.groupedCalltreeRoot, + i = new Set() + for (let o of t) { + const t = s ? (0, e.lastOf)(a.children) : a.children.find((e) => e.frame === o) + if (t && !t.isFrozen() && t.frame == o) a = t + else { + const e = a + ;(a = new l(o, a)), e.children.push(a) + } + a.addToTotalWeight(r), i.add(a.frame) + } + if ((a.addToSelfWeight(r), s)) for (let e of a.children) e.freeze() + if (s) { + a.frame.addToSelfWeight(r) + for (let e of i) e.addToTotalWeight(r) + a === (0, e.lastOf)(this.samples) + ? (this.weights[this.weights.length - 1] += r) + : (this.samples.push(a), this.weights.push(r)) + } + } + appendSampleWithWeight(e, t) { + if (0 === t) return + if (t < 0) throw new Error('Samples must have positive weights') + const r = e.map((e) => i.getOrInsert(this.frames, e)) + this._appendSample(r, t, !0), this._appendSample(r, t, !1) + } + appendSampleWithTimestamp(e, t) { + if (this.pendingSample) { + if (t < this.pendingSample.centralTimestamp) throw new Error('Timestamps received out of order') + const r = (t + this.pendingSample.centralTimestamp) / 2 + this.appendSampleWithWeight(this.pendingSample.stack, r - this.pendingSample.startTimestamp), + (this.pendingSample = {stack: e, startTimestamp: r, centralTimestamp: t}) + } else this.pendingSample = {stack: e, startTimestamp: t, centralTimestamp: t} + } + build() { + return ( + this.pendingSample && + (this.samples.length > 0 + ? this.appendSampleWithWeight( + this.pendingSample.stack, + this.pendingSample.centralTimestamp - this.pendingSample.startTimestamp, + ) + : (this.appendSampleWithWeight(this.pendingSample.stack, 1), + this.setValueFormatter(new t.RawValueFormatter()))), + (this.totalWeight = Math.max( + this.totalWeight, + this.weights.reduce((e, t) => e + t, 0), + )), + this.sortGroupedCallTree(), + this + ) + } + } + exports.StackListProfileBuilder = n + class h extends o { + constructor() { + super(...arguments), + (this.appendOrderStack = [this.appendOrderCalltreeRoot]), + (this.groupedOrderStack = [this.groupedCalltreeRoot]), + (this.framesInStack = new Map()), + (this.stack = []), + (this.lastValue = 0) + } + addWeightsToFrames(t) { + const r = t - this.lastValue + for (let e of this.framesInStack.keys()) e.addToTotalWeight(r) + const s = (0, e.lastOf)(this.stack) + s && s.addToSelfWeight(r) + } + addWeightsToNodes(t, r) { + const s = t - this.lastValue + for (let e of r) e.addToTotalWeight(s) + const a = (0, e.lastOf)(r) + a && a.addToSelfWeight(s) + } + _enterFrame(t, r, s) { + let a = s ? this.appendOrderStack : this.groupedOrderStack + this.addWeightsToNodes(r, a) + let i = (0, e.lastOf)(a) + if (i) { + if (s) { + const e = r - this.lastValue + if (e > 0) this.samples.push(i), this.weights.push(r - this.lastValue) + else if (e < 0) + throw new Error( + `Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${r}`, + ) + } + const o = s ? (0, e.lastOf)(i.children) : i.children.find((e) => e.frame === t) + let n + o && !o.isFrozen() && o.frame == t ? (n = o) : ((n = new l(t, i)), i.children.push(n)), a.push(n) + } + } + enterFrame(e, t) { + const r = i.getOrInsert(this.frames, e) + this.addWeightsToFrames(t), this._enterFrame(r, t, !0), this._enterFrame(r, t, !1), this.stack.push(r) + const s = this.framesInStack.get(r) || 0 + this.framesInStack.set(r, s + 1), + (this.lastValue = t), + (this.totalWeight = Math.max(this.totalWeight, this.lastValue)) + } + _leaveFrame(e, t, r) { + let s = r ? this.appendOrderStack : this.groupedOrderStack + if ((this.addWeightsToNodes(t, s), r)) { + const r = this.appendOrderStack.pop() + if (null == r) throw new Error(`Trying to leave ${e.key} when stack is empty`) + if (null == this.lastValue) throw new Error(`Trying to leave a ${e.key} before any have been entered`) + if ((r.freeze(), r.frame.key !== e.key)) + throw new Error(`Tried to leave frame "${e.name}" while frame "${r.frame.name}" was at the top at ${t}`) + const s = t - this.lastValue + if (s > 0) this.samples.push(r), this.weights.push(t - this.lastValue) + else if (s < 0) + throw new Error( + `Samples must be provided in increasing order of cumulative value. Last sample was ${this.lastValue}, this sample was ${t}`, + ) + } else this.groupedOrderStack.pop() + } + leaveFrame(e, t) { + const r = i.getOrInsert(this.frames, e) + this.addWeightsToFrames(t), this._leaveFrame(r, t, !0), this._leaveFrame(r, t, !1), this.stack.pop() + const s = this.framesInStack.get(r) + null != s && + (1 === s ? this.framesInStack.delete(r) : this.framesInStack.set(r, s - 1), + (this.lastValue = t), + (this.totalWeight = Math.max(this.totalWeight, this.lastValue))) + } + build() { + if (this.appendOrderStack.length > 1 || this.groupedOrderStack.length > 1) + throw new Error('Tried to complete profile construction with a non-empty stack') + return this.sortGroupedCallTree(), this + } + } + exports.CallTreeProfileBuilder = h + }, + { + './utils': 'ucYa', + './value-formatters': 'LsM4', + _bundle_loader: 'TUK3', + './demangle-cpp': [['demangle-cpp.1768f4cc.js', 'bS28'], 'demangle-cpp.1768f4cc.js.map', 'bS28'], + }, + ], + x8nU: [ + function (require, module, exports) { + 'use strict' + var e + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.FileFormat = void 0), + (exports.FileFormat = e), + (function (e) { + let t, o + !(function (e) { + ;(e.EVENTED = 'evented'), (e.SAMPLED = 'sampled') + })((t = e.ProfileType || (e.ProfileType = {}))), + (function (e) { + ;(e.OPEN_FRAME = 'O'), (e.CLOSE_FRAME = 'C') + })((o = e.EventType || (e.EventType = {}))) + })(e || (exports.FileFormat = e = {})) + }, + {}, + ], + EHrm: [ + function (require, module, exports) { + module.exports = { + name: 'speedscope', + version: '1.21.0', + description: '', + repository: 'jlfwong/speedscope', + main: 'index.js', + bin: {speedscope: './bin/cli.js'}, + scripts: { + deploy: './scripts/deploy.sh', + prepack: './scripts/build-release.sh', + prettier: "prettier --write 'src/**/*.ts' 'src/**/*.tsx'", + lint: "eslint 'src/**/*.ts' 'src/**/*.tsx'", + jest: './scripts/test-setup.sh && jest --runInBand', + coverage: 'npm run jest -- --coverage', + typecheck: 'tsc --noEmit', + test: './scripts/ci.sh', + serve: 'parcel assets/index.html --open --no-autoinstall', + }, + files: ['bin/cli.js', 'dist/release/**', '!*.map'], + browserslist: ['last 2 Chrome versions', 'last 2 Firefox versions'], + author: '', + license: 'MIT', + devDependencies: { + '@types/jest': '22.2.3', + '@types/jszip': '3.1.4', + '@types/node': '14.0.1', + '@types/pako': '1.0.0', + '@typescript-eslint/eslint-plugin': '6.16.0', + '@typescript-eslint/parser': '6.16.0', + acorn: '7.2.0', + aphrodite: '2.1.0', + eslint: '8.0.0', + 'eslint-plugin-prettier': '5.1.2', + 'eslint-plugin-react-hooks': '4.6.0', + jest: '24.3.0', + jsverify: '0.8.3', + jszip: '3.1.5', + pako: '1.0.6', + 'parcel-bundler': '1.12.4', + preact: '10.4.1', + prettier: '3.1.1', + protobufjs: '6.8.8', + 'source-map': '0.6.1', + 'ts-jest': '24.3.0', + typescript: '5.3.3', + 'typescript-json-schema': '0.42.0', + 'uglify-es': '3.2.2', + 'uint8array-json-parser': '0.0.2', + }, + jest: { + transform: {'^.+\\.tsx?$': 'ts-jest'}, + setupFilesAfterEnv: ['./src/jest-setup.js'], + testRegex: '\\.test\\.tsx?$', + collectCoverageFrom: ['**/*.{ts,tsx}', '!**/*.d.{ts,tsx}'], + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'], + }, + dependencies: {open: '7.2.0'}, + } + }, + {}, + ], + Xzb6: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.exportProfileGroup = r), + (exports.importSpeedscopeProfiles = s), + (exports.saveToFile = l) + var e = require('./profile'), + t = require('./value-formatters'), + n = require('./file-format-spec') + function r(e) { + const t = [], + n = new Map() + function r(e) { + let r = n.get(e) + if (null == r) { + const o = {name: e.name} + null != e.file && (o.file = e.file), + null != e.line && (o.line = e.line), + null != e.col && (o.col = e.col), + (r = t.length), + n.set(e, r), + t.push(o) + } + return r + } + const a = { + exporter: `speedscope@${require('../../package.json').version}`, + name: e.name, + activeProfileIndex: e.indexToView, + $schema: 'https://www.speedscope.app/file-format-schema.json', + shared: {frames: t}, + profiles: [], + } + for (let s of e.profiles) a.profiles.push(o(s, r)) + return a + } + function o(e, t) { + const r = { + type: n.FileFormat.ProfileType.EVENTED, + name: e.getName(), + unit: e.getWeightUnit(), + startValue: 0, + endValue: e.getTotalWeight(), + events: [], + } + return ( + e.forEachCall( + (e, o) => { + r.events.push({type: n.FileFormat.EventType.OPEN_FRAME, frame: t(e.frame), at: o}) + }, + (e, o) => { + r.events.push({type: n.FileFormat.EventType.CLOSE_FRAME, frame: t(e.frame), at: o}) + }, + ), + r + ) + } + function a(r, o) { + function a(e) { + const {name: n, unit: o} = r + switch (o) { + case 'nanoseconds': + case 'microseconds': + case 'milliseconds': + case 'seconds': + e.setValueFormatter(new t.TimeFormatter(o)) + break + case 'bytes': + e.setValueFormatter(new t.ByteFormatter()) + break + case 'none': + e.setValueFormatter(new t.RawValueFormatter()) + } + e.setName(n) + } + switch (r.type) { + case n.FileFormat.ProfileType.EVENTED: + return (function (t) { + const {startValue: r, endValue: s, events: l} = t, + i = new e.CallTreeProfileBuilder(s - r) + a(i) + const c = o.map((e, t) => Object.assign({key: t}, e)) + for (let e of l) + switch (e.type) { + case n.FileFormat.EventType.OPEN_FRAME: + i.enterFrame(c[e.frame], e.at - r) + break + case n.FileFormat.EventType.CLOSE_FRAME: + i.leaveFrame(c[e.frame], e.at - r) + } + return i.build() + })(r) + case n.FileFormat.ProfileType.SAMPLED: + return (function (t) { + const {startValue: n, endValue: r, samples: s, weights: l} = t, + i = new e.StackListProfileBuilder(r - n) + a(i) + const c = o.map((e, t) => Object.assign({key: t}, e)) + if (s.length !== l.length) + throw new Error(`Expected samples.length (${s.length}) to equal weights.length (${l.length})`) + for (let e = 0; e < s.length; e++) { + const t = s[e], + n = l[e] + i.appendSampleWithWeight( + t.map((e) => c[e]), + n, + ) + } + return i.build() + })(r) + } + } + function s(e) { + return { + name: e.name || e.profiles[0].name || 'profile', + indexToView: e.activeProfileIndex || 0, + profiles: e.profiles.map((t) => a(t, e.shared.frames)), + } + } + function l(e) { + const t = r(e), + n = new Blob([JSON.stringify(t)], {type: 'text/json'}), + o = `${(t.name ? t.name.split('.')[0] : 'profile').replace(/\W+/g, '_')}.speedscope.json` + console.log('Saving', o) + const a = document.createElement('a') + ;(a.download = o), + (a.href = window.URL.createObjectURL(n)), + (a.dataset.downloadurl = ['text/json', a.download, a.href].join(':')), + document.body.appendChild(a), + a.click(), + document.body.removeChild(a) + } + }, + {'./profile': 'YG8z', './value-formatters': 'LsM4', './file-format-spec': 'x8nU', '../../package.json': 'EHrm'}, + ], + C6HJ: [ + function (require, module, exports) { + 'use strict' + function r(r, e) { + return d(r, e) + } + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.fuzzyMatchStrings = r) + const e = 'a'.charCodeAt(0), + t = 'z'.charCodeAt(0), + n = 'A'.charCodeAt(0), + o = 'Z'.charCodeAt(0), + c = '0'.charCodeAt(0), + a = '9'.charCodeAt(0) + var h + function u(r) { + const u = r.charCodeAt(0) + return e <= u && u <= t + ? h.charLower + : n <= u && u <= o + ? h.charUpper + : c <= u && u <= a + ? h.charNumber + : h.charNonWord + } + function l(r, o) { + if (r === o) return !0 + const c = o.charCodeAt(0) + return e <= c && c <= t && r.charCodeAt(0) === c - e + n + } + function d(r, e) { + if (0 == e.length) return {matchedRanges: [], score: 0} + let t = 0, + n = -1, + o = -1, + c = r.length, + a = e.length + for (let h = 0; h < c; h++) { + if (l(r[h], e[t]) && (n < 0 && (n = h), ++t == a)) { + o = h + 1 + break + } + } + if (-1 == o) return null + t-- + for (let h = o - 1; h >= n; h--) { + if (l(r[h], e[t]) && --t < 0) return A(r, e, (n = h), o) + } + throw new Error('Implementation error. This must be a bug in fzfFuzzyMatchV1') + } + !(function (r) { + ;(r[(r.charNonWord = 0)] = 'charNonWord'), + (r[(r.charLower = 1)] = 'charLower'), + (r[(r.charUpper = 2)] = 'charUpper'), + (r[(r.charNumber = 3)] = 'charNumber') + })(h || (h = {})) + const f = 16, + i = -3, + s = -1, + p = f / 2, + N = f / 2, + b = p + s, + g = -(i + s), + m = 2 + function w(r, e) { + return r === h.charNonWord && e !== h.charNonWord + ? p + : (r === h.charLower && e == h.charUpper) || (r !== h.charNumber && e == h.charNumber) + ? b + : e === h.charNonWord + ? N + : 0 + } + function A(r, e, t, n) { + let o = 0, + c = 0, + a = !1, + d = 0, + N = 0, + b = new Array(e.length), + A = h.charNonWord + t > 0 && (A = u(r[t - 1])) + for (let h = t; h < n; h++) { + let t = r[h], + n = u(t) + if (l(t, e[o])) { + ;(b[o] = h), (c += f) + let r = w(A, n) + 0 == d ? (N = r) : (r === p && (N = r), (r = Math.max(r, N, g))), + (c += 0 === o ? r * m : r), + (a = !1), + d++, + o++ + } else (c += a ? s : i), (a = !0), (d = 0), (N = 0) + A = n + } + if (o !== e.length) + throw new Error('fzfCalculateScore should only be called when pattern is found between sidx and eidx') + let C = [[b[0], b[0] + 1]] + for (let h = 1; h < b.length; h++) { + const r = b[h], + e = C[C.length - 1] + e[1] === r ? (e[1] = r + 1) : C.push([r, r + 1]) + } + return {score: c, matchedRanges: C} + } + }, + {}, + ], + tOar: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), + (exports.ProfileSelectRow = a), + (exports.ProfileSelect = u) + var e = require('preact'), + o = require('preact/hooks'), + r = require('aphrodite'), + l = require('./style'), + t = require('../lib/fuzzy-find'), + i = require('../lib/utils'), + n = require('./themes/theme') + function s(o, r, l) { + const t = [] + let i = 0 + for (let n of r) + t.push(o.slice(i, n[0])), t.push((0, e.h)('span', {className: l}, o.slice(n[0], n[1]))), (i = n[1]) + return t.push(o.slice(i)), (0, e.h)('span', null, t) + } + function a({ + setProfileIndexToView: l, + setHoveredProfileIndex: t, + profile: i, + selected: a, + hovered: c, + profileCount: d, + nodeRef: u, + closeProfileSelect: p, + indexInProfileGroup: h, + matchedRanges: g, + indexInFilteredListView: m, + }) { + const b = f((0, n.useTheme)()), + x = (0, o.useCallback)(() => { + p(), l(h) + }, [p, l, h]), + I = (0, o.useCallback)( + (e) => { + t(h) + }, + [t, h], + ), + P = i.getName(), + w = 1 + Math.floor(Math.log10(d)), + y = (0, r.css)(b.highlighted), + S = (0, o.useMemo)(() => { + return s(P, g, y) + }, [P, g, y]) + return (0, e.h)( + 'div', + { + ref: u, + onMouseUp: x, + onMouseEnter: I, + title: P, + className: (0, r.css)( + b.profileRow, + m % 2 == 0 && b.profileRowEven, + a && b.profileRowSelected, + c && b.profileRowHovered, + ), + }, + (0, e.h)( + 'span', + {className: (0, r.css)(b.profileIndex, a && b.profileIndexSelected), style: {width: w + 'em'}}, + h + 1, + ':', + ), + ' ', + S, + ) + } + function c(e) { + e.stopPropagation() + } + function d(e, o) { + const r = [] + for (let l = 0; l < e.length; l++) { + const i = e[l], + n = (0, t.fuzzyMatchStrings)(i.getName(), o) + n && r.push(Object.assign({indexInProfileGroup: l, profile: i}, n)) + } + return (0, i.sortBy)(r, (e) => -e.score), r + } + function u({profiles: l, closeProfileSelect: t, indexToView: i, visible: s, setProfileIndexToView: u}) { + const p = f((0, n.useTheme)()), + [h, g] = (0, o.useState)(''), + m = (0, o.useCallback)( + (e) => { + const o = e.target.value + g(o) + }, + [g], + ), + b = (0, o.useCallback)( + (e) => { + e && (s ? e.select() : e.blur()) + }, + [s], + ), + x = (0, o.useMemo)(() => d(l, h), [l, h]), + [I, P] = (0, o.useState)(0), + w = (0, o.useRef)(null) + ;(0, o.useEffect)(() => { + s && + (P(null), + null !== w.current && w.current.scrollIntoView({behavior: 'auto', block: 'nearest', inline: 'nearest'})) + }, [s]) + const y = (0, o.useCallback)( + (e) => { + e.stopPropagation() + let o = null + switch (e.key) { + case 'Enter': + null != I && (t(), u(I)) + break + case 'Escape': + t() + break + case 'ArrowDown': + if ((e.preventDefault(), (o = 0), null != I)) { + const e = x.findIndex((e) => e.indexInProfileGroup === I) + ;-1 !== e && (o = e + 1) + } + break + case 'ArrowUp': + if ((e.preventDefault(), (o = x.length - 1), null != I)) { + const e = x.findIndex((e) => e.indexInProfileGroup === I) + ;-1 !== e && (o = e - 1) + } + } + if (null != o && o >= 0 && o < x.length) { + const e = x[o].indexInProfileGroup + P(e), v(!0) + } + }, + [t, u, I, x], + ), + [S, v] = (0, o.useState)(!1) + ;(0, o.useEffect)(() => { + x.length > 0 && (P(x[0].indexInProfileGroup), v(!0)) + }, [P, x]) + const C = (0, o.useCallback)( + (e) => { + S && e && (e.scrollIntoView({behavior: 'auto', block: 'nearest', inline: 'nearest'}), v(!1)) + }, + [S, v], + ), + k = (0, o.useCallback)( + (e) => { + ;(w.current = e), C(e) + }, + [w, C], + ) + return (0, e.h)( + 'div', + {className: (0, r.css)(p.profileSelectOuter)}, + (0, e.h)('div', {className: (0, r.css)(p.caret)}), + (0, e.h)( + 'div', + {className: (0, r.css)(p.profileSelectBox)}, + (0, e.h)( + 'div', + {className: (0, r.css)(p.filterInputContainer)}, + (0, e.h)('input', { + type: 'text', + className: (0, r.css)(p.filterInput), + ref: b, + placeholder: 'Filter...', + value: h, + onInput: m, + onKeyDown: y, + onKeyUp: c, + onKeyPress: c, + }), + ), + (0, e.h)( + 'div', + {className: (0, r.css)(p.profileSelectScrolling)}, + x.map(({profile: o, matchedRanges: r, indexInProfileGroup: n}, s) => { + let c = void 0 + const d = n === i, + p = n === I + return ( + d && p ? (c = k) : d ? (c = w) : p && (c = C), + (0, e.h)(a, { + setHoveredProfileIndex: P, + indexInProfileGroup: n, + indexInFilteredListView: s, + hovered: n == I, + selected: n === i, + profile: o, + profileCount: l.length, + nodeRef: c, + matchedRanges: r, + setProfileIndexToView: u, + closeProfileSelect: t, + }) + ) + }), + 0 === x.length + ? (0, e.h)('div', {className: (0, r.css)(p.profileRow)}, 'No results match filter "', h, '"') + : null, + ), + ), + ) + } + const p = 10, + f = (0, n.withTheme)((e) => + r.StyleSheet.create({ + filterInputContainer: {display: 'flex', flexDirection: 'column', padding: 5, alignItems: 'stretch'}, + filterInput: { + color: e.altFgPrimaryColor, + background: e.altBgSecondaryColor, + borderRadius: 5, + padding: 5, + ':focus': {border: 'none', outline: 'none'}, + '::selection': {color: e.altFgPrimaryColor, background: e.selectionPrimaryColor}, + }, + caret: { + width: 0, + height: 0, + borderLeft: '5px solid transparent', + borderRight: '5px solid transparent', + borderBottom: '5px solid black', + }, + highlighted: {background: e.selectionSecondaryColor}, + padding: {height: 10, background: e.altBgPrimaryColor}, + profileRow: { + height: l.Sizes.FRAME_HEIGHT - 2, + border: '1px solid transparent', + textAlign: 'left', + paddingLeft: 10, + paddingRight: 10, + background: e.altBgPrimaryColor, + overflow: 'hidden', + whiteSpace: 'nowrap', + textOverflow: 'ellipsis', + cursor: 'pointer', + }, + profileRowHovered: {border: `1px solid ${e.selectionPrimaryColor}`}, + profileRowSelected: {background: e.selectionPrimaryColor}, + profileRowEven: {background: e.altBgSecondaryColor}, + profileSelectScrolling: { + maxHeight: `min(calc(100vh - ${l.Sizes.TOOLBAR_HEIGHT - 20}px), ${20 * l.Sizes.FRAME_HEIGHT}px)`, + overflow: 'auto', + '::-webkit-scrollbar': {background: e.altBgPrimaryColor}, + '::-webkit-scrollbar-thumb': { + background: e.altFgSecondaryColor, + borderRadius: 20, + border: `3px solid ${e.altBgPrimaryColor}`, + ':hover': {background: e.altBgPrimaryColor}, + }, + }, + profileSelectBox: { + width: '100%', + paddingBottom: 10, + background: e.altBgPrimaryColor, + color: e.altFgPrimaryColor, + }, + profileSelectOuter: { + width: '100%', + maxWidth: 480, + margin: '0 auto', + position: 'relative', + zIndex: l.ZIndex.PROFILE_SELECT, + alignItems: 'center', + display: 'flex', + flexDirection: 'column', + }, + profileIndex: {textAlign: 'right', display: 'inline-block', color: e.altFgSecondaryColor}, + profileIndexSelected: {color: e.altFgPrimaryColor}, + }), + ) + }, + { + preact: 'aSor', + 'preact/hooks': 'MwGB', + aphrodite: 'CxN7', + './style': 'hvr4', + '../lib/fuzzy-find': 'C6HJ', + '../lib/utils': 'ucYa', + './themes/theme': 'gzKG', + }, + ], + BPHY: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.Toolbar = T) + var e = require('preact'), + o = require('preact/hooks'), + t = require('aphrodite'), + i = require('./style'), + s = require('./profile-select'), + l = require('../lib/utils'), + a = require('./themes/theme'), + r = require('../lib/view-mode'), + n = require('../app-state'), + c = require('../app-state/color-scheme'), + h = require('../lib/atom') + function d(e, t) { + return (0, o.useCallback)(() => e(t), [e, t]) + } + function m(o) { + const i = g((0, a.useTheme)()), + s = d(n.viewModeAtom.set, r.ViewMode.CHRONO_FLAME_CHART), + l = d(n.viewModeAtom.set, r.ViewMode.LEFT_HEAVY_FLAME_GRAPH), + c = d(n.viewModeAtom.set, r.ViewMode.SANDWICH_VIEW) + return o.activeProfileState + ? (0, e.h)( + 'div', + {className: (0, t.css)(i.toolbarLeft)}, + (0, e.h)( + 'div', + { + className: (0, t.css)( + i.toolbarTab, + o.viewMode === r.ViewMode.CHRONO_FLAME_CHART && i.toolbarTabActive, + ), + onClick: s, + }, + (0, e.h)('span', {className: (0, t.css)(i.emoji)}, '🕰'), + 'Time Order', + ), + (0, e.h)( + 'div', + { + className: (0, t.css)( + i.toolbarTab, + o.viewMode === r.ViewMode.LEFT_HEAVY_FLAME_GRAPH && i.toolbarTabActive, + ), + onClick: l, + }, + (0, e.h)('span', {className: (0, t.css)(i.emoji)}, '⬅️'), + 'Left Heavy', + ), + (0, e.h)( + 'div', + { + className: (0, t.css)(i.toolbarTab, o.viewMode === r.ViewMode.SANDWICH_VIEW && i.toolbarTabActive), + onClick: c, + }, + (0, e.h)('span', {className: (0, t.css)(i.emoji)}, '🥪'), + 'Sandwich', + ), + ) + : null + } + const b = (() => { + let e = null + return (o) => { + let t = (null == o ? void 0 : o.profiles.map((e) => e.profile)) || null + return (null === e || (null != t && !(0, l.objectsHaveShallowEquality)(e, t))) && (e = t), e + } + })() + function u(i) { + const l = g((0, a.useTheme)()), + {activeProfileState: r, profileGroup: n} = i, + c = b(n), + [h, d] = (0, o.useState)(!1), + m = (0, o.useCallback)(() => { + d(!0) + }, [d]), + u = (0, o.useCallback)(() => { + d(!1) + }, [d]) + return ( + (0, o.useEffect)(() => { + const e = (e) => { + 't' === e.key && (e.preventDefault(), d(!0)) + } + return ( + window.addEventListener('keypress', e), + () => { + window.removeEventListener('keypress', e) + } + ) + }, [d]), + (0, o.useEffect)(() => { + const e = (e) => { + 't' === e.key && (e.preventDefault(), d(!0)) + } + return ( + window.addEventListener('keypress', e), + () => { + window.removeEventListener('keypress', e) + } + ) + }, [d]), + r && n && c + ? 1 === n.profiles.length + ? (0, e.h)(e.Fragment, null, r.profile.getName()) + : (0, e.h)( + 'div', + {className: (0, t.css)(l.toolbarCenter), onMouseLeave: u}, + (0, e.h)( + 'span', + {onMouseOver: m}, + r.profile.getName(), + ' ', + (0, e.h)( + 'span', + {className: (0, t.css)(l.toolbarProfileIndex)}, + '(', + r.index + 1, + '/', + n.profiles.length, + ')', + ), + ), + (0, e.h)( + 'div', + {style: {display: h ? 'block' : 'none'}}, + (0, e.h)(s.ProfileSelect, { + setProfileIndexToView: i.setProfileIndexToView, + indexToView: n.indexToView, + profiles: c, + closeProfileSelect: u, + visible: h, + }), + ), + ) + : (0, e.h)(e.Fragment, null, '🔬speedscope') + ) + } + function p(o) { + const i = g((0, a.useTheme)()), + s = (0, h.useAtom)(c.colorSchemeAtom), + l = (0, e.h)( + 'div', + {className: (0, t.css)(i.toolbarTab), onClick: o.saveFile}, + (0, e.h)('span', {className: (0, t.css)(i.emoji)}, '⤴️'), + 'Export', + ), + r = (0, e.h)( + 'div', + {className: (0, t.css)(i.toolbarTab), onClick: o.browseForFile}, + (0, e.h)('span', {className: (0, t.css)(i.emoji)}, '⤵️'), + 'Import', + ), + n = (0, e.h)( + 'div', + {className: (0, t.css)(i.toolbarTab), onClick: c.colorSchemeAtom.cycleToNextColorScheme}, + (0, e.h)('span', {className: (0, t.css)(i.emoji)}, '🎨'), + (0, e.h)('span', {className: (0, t.css)(i.toolbarTabColorSchemeToggle)}, (0, a.colorSchemeToString)(s)), + ), + d = (0, e.h)( + 'div', + {className: (0, t.css)(i.toolbarTab)}, + (0, e.h)( + 'a', + { + href: 'https://github.com/jlfwong/speedscope#usage', + className: (0, t.css)(i.noLinkStyle), + target: '_blank', + }, + (0, e.h)('span', {className: (0, t.css)(i.emoji)}, '❓'), + 'Help', + ), + ) + return (0, e.h)('div', {className: (0, t.css)(i.toolbarRight)}, o.activeProfileState && l, r, n, d) + } + function T(o) { + const i = g((0, a.useTheme)()) + return (0, e.h)( + 'div', + {className: (0, t.css)(i.toolbar)}, + (0, e.h)(m, Object.assign({}, o)), + (0, e.h)(u, Object.assign({}, o)), + (0, e.h)(p, Object.assign({}, o)), + ) + } + const g = (0, a.withTheme)((e) => + t.StyleSheet.create({ + toolbar: { + height: i.Sizes.TOOLBAR_HEIGHT, + flexShrink: 0, + background: e.altBgPrimaryColor, + color: e.altFgPrimaryColor, + textAlign: 'center', + fontFamily: i.FontFamily.MONOSPACE, + fontSize: i.FontSize.TITLE, + lineHeight: `${i.Sizes.TOOLBAR_TAB_HEIGHT}px`, + userSelect: 'none', + }, + toolbarLeft: { + position: 'absolute', + height: i.Sizes.TOOLBAR_HEIGHT, + overflow: 'hidden', + top: 0, + left: 0, + marginRight: 2, + textAlign: 'left', + }, + toolbarCenter: {paddingTop: 1, height: i.Sizes.TOOLBAR_HEIGHT}, + toolbarRight: { + height: i.Sizes.TOOLBAR_HEIGHT, + overflow: 'hidden', + position: 'absolute', + top: 0, + right: 0, + marginRight: 2, + textAlign: 'right', + }, + toolbarProfileIndex: {color: e.altFgSecondaryColor}, + toolbarTab: { + background: e.altBgSecondaryColor, + marginTop: i.Sizes.SEPARATOR_HEIGHT, + height: i.Sizes.TOOLBAR_TAB_HEIGHT, + lineHeight: `${i.Sizes.TOOLBAR_TAB_HEIGHT}px`, + paddingLeft: 2, + paddingRight: 8, + display: 'inline-block', + marginLeft: 2, + transition: `all ${i.Duration.HOVER_CHANGE} ease-in`, + ':hover': {background: e.selectionSecondaryColor}, + }, + toolbarTabActive: {background: e.selectionPrimaryColor, ':hover': {background: e.selectionPrimaryColor}}, + toolbarTabColorSchemeToggle: {display: 'inline-block', textAlign: 'center', minWidth: '50px'}, + emoji: {display: 'inline-block', verticalAlign: 'middle', paddingTop: '0px', marginRight: '0.3em'}, + noLinkStyle: {textDecoration: 'none', color: 'inherit'}, + }), + ) + }, + { + preact: 'aSor', + 'preact/hooks': 'MwGB', + aphrodite: 'CxN7', + './style': 'hvr4', + './profile-select': 'tOar', + '../lib/utils': 'ucYa', + './themes/theme': 'gzKG', + '../lib/view-mode': 'dpTI', + '../app-state': 'LDQe', + '../app-state/color-scheme': 'KQrJ', + '../lib/atom': 'QkVE', + }, + ], + bv0g: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.importJavaScriptSourceMapSymbolRemapper = r) + var e = require('./utils'), + n = function (e, n, o, l) { + return new (o || (o = Promise))(function (r, i) { + function t(e) { + try { + a(l.next(e)) + } catch (n) { + i(n) + } + } + function u(e) { + try { + a(l.throw(e)) + } catch (n) { + i(n) + } + } + function a(e) { + var n + e.done + ? r(e.value) + : ((n = e.value), + n instanceof o + ? n + : new o(function (e) { + e(n) + })).then(t, u) + } + a((l = l.apply(e, n || [])).next()) + }) + } + const o = require('_bundle_loader')(require.resolve('source-map')), + l = !1 + function r(r, i) { + return n(this, void 0, void 0, function* () { + const n = yield o + let t = null, + u = null + try { + ;(u = JSON.parse(r)), (t = new n.SourceMapConsumer(u)) + } catch (s) { + return null + } + const a = [] + t.eachMapping( + function (e) { + a.push( + Object.assign(Object.assign({}, e), { + generatedColumn: e.generatedColumn + 1, + originalColumn: e.originalColumn + 1, + }), + ) + }, + {}, + n.SourceMapConsumer.GENERATED_ORDER, + ) + const c = i.replace(/\.[^/]*$/, '') + return (n) => { + var o + let r = !1 + if ( + ((null == u ? void 0 : u.file) && (null == u ? void 0 : u.file) === n.file + ? (r = !0) + : ('/' + (null === (o = n.file) || void 0 === o ? void 0 : o.replace(/\.[^/]*$/, ''))).endsWith( + '/' + c, + ) && (r = !0), + !r) + ) + return null + if (null == n.line || null == n.col) return null + let i = (0, e.findIndexBisect)( + a, + (e) => e.generatedLine > n.line || (!(e.generatedLine < n.line) && e.generatedColumn >= n.col), + ) + if (-1 === i) i = a.length - 1 + else { + if (0 === i) return null + i-- + } + const s = a[i], + m = {} + if (null != s.name) m.name = s.name + else if (null != s.source) { + const e = null == t ? void 0 : t.sourceContentFor(s.source, !0) + if (e) { + const n = e.split('\n')[s.originalLine - 1] + if (n) { + const e = /\w+/.exec(n.substr(s.originalColumn - 1)) + e && (m.name = e[0]) + } + } + } + switch (m.name) { + case 'constructor': + m.name = n.name + ' constructor' + break + case 'function': + m.name = n.name + break + case 'const': + case 'export': + m.name = n.name + } + return ( + m.name && n.name.includes(m.name) && (m.name = n.name), + null != s.source && ((m.file = s.source), (m.line = s.originalLine), (m.col = s.originalColumn)), + l && + (console.groupCollapsed(`Remapping "${n.name}" -> "${m.name}"`), + console.log('before', Object.assign({}, n)), + console.log('item @ index', s), + console.log('item @ index + 1', a[i + 1]), + console.log('after', m), + console.groupEnd()), + m + ) + } + }) + } + }, + { + _bundle_loader: 'TUK3', + 'source-map': [['source-map.438fa06b.js', 'aRf0'], 'source-map.438fa06b.js.map', 'aRf0'], + './utils': 'ucYa', + }, + ], + ThNa: [ + function (require, module, exports) { + module.exports = 'perf-vertx-stacks-01-collapsed-all.2681da68.txt' + }, + {}, + ], + wCGh: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.Application = exports.GLCanvas = void 0) + var e = require('preact'), + t = require('aphrodite'), + o = require('./style'), + i = require('../lib/emscripten'), + r = require('./sandwich-view'), + s = require('../lib/file-format'), + n = require('./flamechart-view-container'), + a = require('./toolbar'), + l = require('../lib/js-source-map'), + c = require('./themes/theme'), + p = require('../lib/view-mode'), + d = require('../app-state'), + h = require('../lib/preact-helpers'), + u = function (e, t, o, i) { + return new (o || (o = Promise))(function (r, s) { + function n(e) { + try { + l(i.next(e)) + } catch (t) { + s(t) + } + } + function a(e) { + try { + l(i.throw(e)) + } catch (t) { + s(t) + } + } + function l(e) { + var t + e.done + ? r(e.value) + : ((t = e.value), + t instanceof o + ? t + : new o(function (e) { + e(t) + })).then(n, a) + } + l((i = i.apply(e, t || [])).next()) + }) + } + const m = require('_bundle_loader')(require.resolve('../import')) + function f(e, t) { + return u(this, void 0, void 0, function* () { + return (yield m).importProfileGroupFromText(e, t) + }) + } + function v(e, t) { + return u(this, void 0, void 0, function* () { + return (yield m).importProfileGroupFromBase64(e, t) + }) + } + function g(e, t) { + return u(this, void 0, void 0, function* () { + return (yield m).importProfilesFromArrayBuffer(e, t) + }) + } + function w(e) { + return u(this, void 0, void 0, function* () { + return (yield m).importProfilesFromFile(e) + }) + } + function y(e) { + return u(this, void 0, void 0, function* () { + return (yield m).importFromFileSystemDirectoryEntry(e) + }) + } + m.then(() => {}), + require('_bundle_loader')(require.resolve('../lib/demangle-cpp')).then(() => {}), + require('_bundle_loader')(require.resolve('source-map')).then(() => {}) + const b = require('../../sample/profiles/stackcollapse/perf-vertx-stacks-01-collapsed-all.txt') + function x(e) { + return null != e && e.isDirectory + } + class C extends h.StatelessComponent { + constructor() { + super(...arguments), + (this.canvas = null), + (this.ref = (e) => { + e instanceof HTMLCanvasElement ? (this.canvas = e) : (this.canvas = null), + this.props.setGLCanvas(this.canvas) + }), + (this.container = null), + (this.containerRef = (e) => { + e instanceof HTMLElement ? (this.container = e) : (this.container = null) + }), + (this.maybeResize = () => { + if (!this.container) return + if (!this.props.canvasContext) return + let {width: e, height: t} = this.container.getBoundingClientRect() + const o = e, + i = t, + r = e * window.devicePixelRatio, + s = t * window.devicePixelRatio + this.props.canvasContext.gl.resize(r, s, o, i) + }), + (this.onWindowResize = () => { + this.props.canvasContext && this.props.canvasContext.requestFrame() + }) + } + componentWillReceiveProps(e) { + this.props.canvasContext !== e.canvasContext && + (this.props.canvasContext && this.props.canvasContext.removeBeforeFrameHandler(this.maybeResize), + e.canvasContext && + (e.canvasContext.addBeforeFrameHandler(this.maybeResize), e.canvasContext.requestFrame())) + } + componentDidMount() { + window.addEventListener('resize', this.onWindowResize) + } + componentWillUnmount() { + this.props.canvasContext && this.props.canvasContext.removeBeforeFrameHandler(this.maybeResize), + window.removeEventListener('resize', this.onWindowResize) + } + render() { + const o = F(this.props.theme) + return (0, e.h)( + 'div', + {ref: this.containerRef, className: (0, t.css)(o.glCanvasView)}, + (0, e.h)('canvas', {ref: this.ref, width: 1, height: 1}), + ) + } + } + exports.GLCanvas = C + class P extends h.StatelessComponent { + constructor() { + super(...arguments), + (this.loadExample = () => { + this.loadProfile(() => + u(this, void 0, void 0, function* () { + const e = yield fetch(b).then((e) => e.text()) + return yield f('perf-vertx-stacks-01-collapsed-all.txt', e) + }), + ) + }), + (this.onDrop = (e) => { + if ((this.props.setDragActive(!1), e.preventDefault(), !e.dataTransfer)) return + const t = e.dataTransfer.items[0] + if ('webkitGetAsEntry' in t) { + const e = t.webkitGetAsEntry() + if (e && x(e) && e.name.endsWith('.trace')) { + console.log('Importing as Instruments.app .trace file') + const t = e + return void this.loadProfile(() => + u(this, void 0, void 0, function* () { + return yield y(t) + }), + ) + } + } + let o = e.dataTransfer.files.item(0) + o && this.loadFromFile(o) + }), + (this.onDragOver = (e) => { + this.props.setDragActive(!0), e.preventDefault() + }), + (this.onDragLeave = (e) => { + this.props.setDragActive(!1), e.preventDefault() + }), + (this.onWindowKeyPress = (e) => + u(this, void 0, void 0, function* () { + if ('1' === e.key) this.props.setViewMode(p.ViewMode.CHRONO_FLAME_CHART) + else if ('2' === e.key) this.props.setViewMode(p.ViewMode.LEFT_HEAVY_FLAME_GRAPH) + else if ('3' === e.key) this.props.setViewMode(p.ViewMode.SANDWICH_VIEW) + else if ('r' === e.key) { + const {flattenRecursion: e} = this.props + this.props.setFlattenRecursion(!e) + } else if ('n' === e.key) { + const {activeProfileState: e} = this.props + e && this.props.setProfileIndexToView(e.index + 1) + } else if ('p' === e.key) { + const {activeProfileState: e} = this.props + e && this.props.setProfileIndexToView(e.index - 1) + } + })), + (this.saveFile = () => { + if (this.props.profileGroup) { + const {name: e, indexToView: t, profiles: o} = this.props.profileGroup, + i = {name: e, indexToView: t, profiles: o.map((e) => e.profile)} + ;(0, s.saveToFile)(i) + } + }), + (this.browseForFile = () => { + const e = document.createElement('input') + ;(e.type = 'file'), e.addEventListener('change', this.onFileSelect), e.click() + }), + (this.onWindowKeyDown = (e) => + u(this, void 0, void 0, function* () { + 's' === e.key && (e.ctrlKey || e.metaKey) + ? (e.preventDefault(), this.saveFile()) + : 'o' === e.key && (e.ctrlKey || e.metaKey) && (e.preventDefault(), this.browseForFile()) + })), + (this.onDocumentPaste = (e) => { + if (null != document.activeElement && 'INPUT' === document.activeElement.nodeName) return + e.preventDefault(), e.stopPropagation() + const t = e.clipboardData + if (!t) return + const o = t.getData('text') + this.loadProfile(() => + u(this, void 0, void 0, function* () { + return yield f('From Clipboard', o) + }), + ) + }), + (this.onFileSelect = (e) => { + const t = e.target.files.item(0) + t && this.loadFromFile(t) + }) + } + loadProfile(e) { + return u(this, void 0, void 0, function* () { + if ( + (this.props.setError(!1), + this.props.setLoading(!0), + yield new Promise((e) => setTimeout(e, 0)), + !this.props.glCanvas) + ) + return + console.time('import') + let t = null + try { + t = yield e() + } catch (o) { + return console.log('Failed to load format', o), void this.props.setError(!0) + } + if (null == t) + return ( + alert('Unrecognized format! See documentation about supported formats.'), + void this.props.setLoading(!1) + ) + if (0 === t.profiles.length) + return alert("Successfully imported profile, but it's empty!"), void this.props.setLoading(!1) + this.props.hashParams.title && + (t = Object.assign(Object.assign({}, t), {name: this.props.hashParams.title})), + (document.title = `${t.name} - speedscope`), + this.props.hashParams.viewMode && this.props.setViewMode(this.props.hashParams.viewMode) + for (let e of t.profiles) yield e.demangle() + for (let e of t.profiles) { + const t = this.props.hashParams.title || e.getName() + e.setName(t) + } + console.timeEnd('import'), this.props.setProfileGroup(t), this.props.setLoading(!1) + }) + } + getStyle() { + return F(this.props.theme) + } + loadFromFile(e) { + this.loadProfile(() => + u(this, void 0, void 0, function* () { + const t = yield w(e) + if (t) { + for (let o of t.profiles) o.getName() || o.setName(e.name) + return t + } + if (this.props.profileGroup && this.props.activeProfileState) { + const t = new FileReader(), + o = new Promise((e) => { + t.addEventListener('loadend', () => { + if ('string' != typeof t.result) throw new Error('Expected reader.result to be a string') + e(t.result) + }) + }) + t.readAsText(e) + const r = yield o + let s = null + const n = (0, i.importEmscriptenSymbolMap)(r) + n && (console.log('Importing as emscripten symbol map'), (s = n)) + const a = yield (0, l.importJavaScriptSourceMapSymbolRemapper)(r, e.name) + if ((!s && a && (console.log('Importing as JavaScript source map'), (s = a)), null != s)) + return { + name: this.props.profileGroup.name || 'profile', + indexToView: this.props.profileGroup.indexToView, + profiles: this.props.profileGroup.profiles.map((e) => { + const t = e.profile.shallowClone() + return t.remapSymbols(s), t + }), + } + } + return null + }), + ) + } + componentDidMount() { + window.addEventListener('keydown', this.onWindowKeyDown), + window.addEventListener('keypress', this.onWindowKeyPress), + document.addEventListener('paste', this.onDocumentPaste), + this.maybeLoadHashParamProfile() + } + componentWillUnmount() { + window.removeEventListener('keydown', this.onWindowKeyDown), + window.removeEventListener('keypress', this.onWindowKeyPress), + document.removeEventListener('paste', this.onDocumentPaste) + } + maybeLoadHashParamProfile() { + return u(this, void 0, void 0, function* () { + const {profileURL: e} = this.props.hashParams + if (e) { + if (!d.canUseXHR) + return void alert( + `Cannot load a profile URL when loading from "${window.location.protocol}" URL protocol`, + ) + this.loadProfile(() => + u(this, void 0, void 0, function* () { + const t = yield fetch(e) + let o = new URL(e, window.location.href).pathname + return o.includes('/') && (o = o.slice(o.lastIndexOf('/') + 1)), yield g(o, yield t.arrayBuffer()) + }), + ) + } else if (this.props.hashParams.localProfilePath) { + window.speedscope = { + loadFileFromBase64: (e, t) => { + this.loadProfile(() => v(e, t)) + }, + } + const e = document.createElement('script') + ;(e.src = `file:///${this.props.hashParams.localProfilePath}`), document.head.appendChild(e) + } + }) + } + renderLanding() { + const o = this.getStyle() + return (0, e.h)( + 'div', + {className: (0, t.css)(o.landingContainer)}, + (0, e.h)( + 'div', + {className: (0, t.css)(o.landingMessage)}, + (0, e.h)( + 'p', + {className: (0, t.css)(o.landingP)}, + '👋 Hi there! Welcome to 🔬speedscope, an interactive', + ' ', + (0, e.h)( + 'a', + { + className: (0, t.css)(o.link), + href: 'http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html', + }, + 'flamegraph', + ), + ' ', + 'visualizer. Use it to help you make your software faster.', + ), + d.canUseXHR + ? (0, e.h)( + 'p', + {className: (0, t.css)(o.landingP)}, + 'Drag and drop a profile file onto this window to get started, click the big blue button below to browse for a profile to explore, or', + ' ', + (0, e.h)( + 'a', + {tabIndex: 0, className: (0, t.css)(o.link), onClick: this.loadExample}, + 'click here', + ), + ' ', + 'to load an example profile.', + ) + : (0, e.h)( + 'p', + {className: (0, t.css)(o.landingP)}, + 'Drag and drop a profile file onto this window to get started, or click the big blue button below to browse for a profile to explore.', + ), + (0, e.h)( + 'div', + {className: (0, t.css)(o.browseButtonContainer)}, + (0, e.h)('input', { + type: 'file', + name: 'file', + id: 'file', + onChange: this.onFileSelect, + className: (0, t.css)(o.hide), + }), + (0, e.h)('label', {for: 'file', className: (0, t.css)(o.browseButton), tabIndex: 0}, 'Browse'), + ), + (0, e.h)( + 'p', + {className: (0, t.css)(o.landingP)}, + 'See the', + ' ', + (0, e.h)( + 'a', + { + className: (0, t.css)(o.link), + href: 'https://github.com/jlfwong/speedscope#usage', + target: '_blank', + }, + 'documentation', + ), + ' ', + 'for information about supported file formats, keyboard shortcuts, and how to navigate around the profile.', + ), + (0, e.h)( + 'p', + {className: (0, t.css)(o.landingP)}, + 'speedscope is open source. Please', + ' ', + (0, e.h)( + 'a', + { + className: (0, t.css)(o.link), + target: '_blank', + href: 'https://github.com/jlfwong/speedscope/issues', + }, + 'report any issues on GitHub', + ), + '.', + ), + ), + ) + } + renderError() { + const o = this.getStyle() + return (0, e.h)( + 'div', + {className: (0, t.css)(o.error)}, + (0, e.h)('div', null, '😿 Something went wrong.'), + (0, e.h)('div', null, 'Check the JS console for more details.'), + ) + } + renderLoadingBar() { + const o = this.getStyle() + return (0, e.h)('div', {className: (0, t.css)(o.loading)}) + } + renderContent() { + const {viewMode: t, activeProfileState: o, error: i, loading: s, glCanvas: a} = this.props + if (i) return this.renderError() + if (s) return this.renderLoadingBar() + if (!o || !a) return this.renderLanding() + switch (t) { + case p.ViewMode.CHRONO_FLAME_CHART: + return (0, e.h)(n.ChronoFlamechartView, {activeProfileState: o, glCanvas: a}) + case p.ViewMode.LEFT_HEAVY_FLAME_GRAPH: + return (0, e.h)(n.LeftHeavyFlamechartView, {activeProfileState: o, glCanvas: a}) + case p.ViewMode.SANDWICH_VIEW: + return (0, e.h)(r.SandwichViewContainer, {activeProfileState: o, glCanvas: a}) + } + } + render() { + const o = this.getStyle() + return (0, e.h)( + 'div', + { + onDrop: this.onDrop, + onDragOver: this.onDragOver, + onDragLeave: this.onDragLeave, + className: (0, t.css)(o.root, this.props.dragActive && o.dragTargetRoot), + }, + (0, e.h)(C, { + setGLCanvas: this.props.setGLCanvas, + canvasContext: this.props.canvasContext, + theme: this.props.theme, + }), + (0, e.h)( + a.Toolbar, + Object.assign({saveFile: this.saveFile, browseForFile: this.browseForFile}, this.props), + ), + (0, e.h)('div', {className: (0, t.css)(o.contentContainer)}, this.renderContent()), + this.props.dragActive && (0, e.h)('div', {className: (0, t.css)(o.dragTarget)}), + ) + } + } + exports.Application = P + const F = (0, c.withTheme)((e) => + t.StyleSheet.create({ + glCanvasView: {position: 'absolute', width: '100vw', height: '100vh', zIndex: -1, pointerEvents: 'none'}, + error: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + height: '100%', + }, + loading: { + height: 3, + marginBottom: -3, + background: e.selectionPrimaryColor, + transformOrigin: '0% 50%', + animationName: [{from: {transform: 'scaleX(0)'}, to: {transform: 'scaleX(1)'}}], + animationTimingFunction: 'cubic-bezier(0, 1, 0, 1)', + animationDuration: '30s', + }, + root: { + width: '100vw', + height: '100vh', + overflow: 'hidden', + display: 'flex', + flexDirection: 'column', + position: 'relative', + fontFamily: o.FontFamily.MONOSPACE, + lineHeight: '20px', + color: e.fgPrimaryColor, + }, + dragTargetRoot: {cursor: 'copy'}, + dragTarget: { + boxSizing: 'border-box', + position: 'absolute', + top: 0, + left: 0, + width: '100%', + height: '100%', + border: `5px dashed ${e.selectionPrimaryColor}`, + pointerEvents: 'none', + }, + contentContainer: { + position: 'relative', + display: 'flex', + overflow: 'hidden', + flexDirection: 'column', + flex: 1, + }, + landingContainer: {display: 'flex', alignItems: 'center', justifyContent: 'center', flex: 1}, + landingMessage: {maxWidth: 600}, + landingP: {marginBottom: 16}, + hide: {display: 'none'}, + browseButtonContainer: {display: 'flex', alignItems: 'center', justifyContent: 'center'}, + browseButton: { + marginBottom: 16, + height: 72, + flex: 1, + maxWidth: 256, + textAlign: 'center', + fontSize: o.FontSize.BIG_BUTTON, + lineHeight: '72px', + background: e.selectionPrimaryColor, + color: e.altFgPrimaryColor, + transition: `all ${o.Duration.HOVER_CHANGE} ease-in`, + ':hover': {background: e.selectionSecondaryColor}, + }, + link: { + color: e.selectionPrimaryColor, + cursor: 'pointer', + textDecoration: 'none', + transition: `all ${o.Duration.HOVER_CHANGE} ease-in`, + ':hover': {color: e.selectionSecondaryColor}, + }, + }), + ) + }, + { + preact: 'aSor', + aphrodite: 'CxN7', + './style': 'hvr4', + '../lib/emscripten': 'FbpF', + './sandwich-view': 'L8J2', + '../lib/file-format': 'Xzb6', + './flamechart-view-container': 'PJJu', + './toolbar': 'BPHY', + '../lib/js-source-map': 'bv0g', + './themes/theme': 'gzKG', + '../lib/view-mode': 'dpTI', + '../app-state': 'LDQe', + '../lib/preact-helpers': 'Hete', + _bundle_loader: 'TUK3', + '../import': [['import.bcbb2033.js', 'uRa7'], 'import.bcbb2033.js.map', 'uRa7'], + '../lib/demangle-cpp': [['demangle-cpp.1768f4cc.js', 'bS28'], 'demangle-cpp.1768f4cc.js.map', 'bS28'], + 'source-map': [['source-map.438fa06b.js', 'aRf0'], 'source-map.438fa06b.js.map', 'aRf0'], + '../../sample/profiles/stackcollapse/perf-vertx-stacks-01-collapsed-all.txt': 'ThNa', + }, + ], + A6uO: [ + function (require, module, exports) { + 'use strict' + Object.defineProperty(exports, '__esModule', {value: !0}), (exports.ApplicationContainer = void 0) + var e = require('preact'), + t = require('../app-state/getters'), + o = require('preact/compat'), + r = require('../app-state/active-profile-state'), + a = require('./themes/theme'), + i = require('../app-state'), + s = require('../lib/atom'), + n = require('./search-view'), + m = require('./application') + const u = (0, o.memo)(() => { + const u = (0, s.useAtom)(i.glCanvasAtom), + l = (0, a.useTheme)(), + p = (0, o.useMemo)(() => (u ? (0, t.getCanvasContext)({theme: l, canvas: u}) : null), [l, u]) + return (0, e.h)( + n.ProfileSearchContextProvider, + null, + (0, e.h)(m.Application, { + activeProfileState: (0, r.useActiveProfileState)(), + canvasContext: p, + setGLCanvas: i.glCanvasAtom.set, + setLoading: i.loadingAtom.set, + setError: i.errorAtom.set, + setProfileGroup: i.profileGroupAtom.setProfileGroup, + setDragActive: i.dragActiveAtom.set, + setViewMode: i.viewModeAtom.set, + setFlattenRecursion: i.flattenRecursionAtom.set, + setProfileIndexToView: i.profileGroupAtom.setProfileIndexToView, + profileGroup: (0, s.useAtom)(i.profileGroupAtom), + theme: l, + flattenRecursion: (0, s.useAtom)(i.flattenRecursionAtom), + viewMode: (0, s.useAtom)(i.viewModeAtom), + hashParams: (0, s.useAtom)(i.hashParamsAtom), + glCanvas: u, + dragActive: (0, s.useAtom)(i.dragActiveAtom), + loading: (0, s.useAtom)(i.loadingAtom), + error: (0, s.useAtom)(i.errorAtom), + }), + ) + }) + exports.ApplicationContainer = u + }, + { + preact: 'aSor', + '../app-state/getters': 'zEXv', + 'preact/compat': 'AQ6k', + '../app-state/active-profile-state': 'MY42', + './themes/theme': 'gzKG', + '../app-state': 'LDQe', + '../lib/atom': 'QkVE', + './search-view': 't9CM', + './application': 'wCGh', + }, + ], + K5F6: [ + function (require, module, exports) { + 'use strict' + var e = require('preact'), + o = require('./views/application-container'), + d = require('./views/themes/theme') + console.log(`speedscope v${require('../package.json').version}`), + module.hot && + (module.hot.dispose(() => { + ;(0, e.render)((0, e.h)('div', null), document.body, document.body.lastElementChild || void 0) + }), + module.hot.accept()), + (0, e.render)( + (0, e.h)(d.ThemeProvider, null, (0, e.h)(o.ApplicationContainer, null)), + document.body, + document.body.lastElementChild || void 0, + ) + }, + { + preact: 'aSor', + './views/application-container': 'A6uO', + './views/themes/theme': 'gzKG', + '../package.json': 'EHrm', + }, + ], + Yi9z: [ + function (require, module, exports) { + module.exports = function (n) { + return new Promise(function (e, o) { + var r = document.createElement('script') + ;(r.async = !0), + (r.type = 'text/javascript'), + (r.charset = 'utf-8'), + (r.src = n), + (r.onerror = function (n) { + ;(r.onerror = r.onload = null), o(n) + }), + (r.onload = function () { + ;(r.onerror = r.onload = null), e() + }), + document.getElementsByTagName('head')[0].appendChild(r) + }) + } + }, + {}, + ], + 0: [ + function (require, module, exports) { + var b = require('TUK3') + b.register('js', require('Yi9z')) + }, + {}, + ], + }, + {}, + [0, 'K5F6'], + null, +) +//# sourceMappingURL=speedscope.6f107512.js.map diff --git a/packages/theme/src/cli/utilities/fixtures/theme/.theme-check.yml b/packages/theme/src/cli/utilities/fixtures/theme/.theme-check.yml index 45eca0aedb0..72843266066 100644 --- a/packages/theme/src/cli/utilities/fixtures/theme/.theme-check.yml +++ b/packages/theme/src/cli/utilities/fixtures/theme/.theme-check.yml @@ -1,10 +1,9 @@ root: '.' ignore: -- config/settings_data.json -- layout/password.liquid -- layout/theme.liquid -- locales/en.default.json -- sections/announcement-bar.liquid -- snippets/language-localization.liquid - + - config/settings_data.json + - layout/password.liquid + - layout/theme.liquid + - locales/en.default.json + - sections/announcement-bar.liquid + - snippets/language-localization.liquid diff --git a/packages/theme/src/cli/utilities/fixtures/theme/assets/base.css b/packages/theme/src/cli/utilities/fixtures/theme/assets/base.css index 0aca2b6829a..c8f82086b2f 100644 --- a/packages/theme/src/cli/utilities/fixtures/theme/assets/base.css +++ b/packages/theme/src/cli/utilities/fixtures/theme/assets/base.css @@ -2315,13 +2315,25 @@ product-info .loading__spinner:not(.hidden) ~ *, } @keyframes translateAnnouncementSlideIn { - 0% {opacity: 0; transform: translateX(var(--announcement-translate-from))} - 100% {opacity: 1; transform: translateX(0)} + 0% { + opacity: 0; + transform: translateX(var(--announcement-translate-from)); + } + 100% { + opacity: 1; + transform: translateX(0); + } } @keyframes translateAnnouncementSlideOut { - 0% {opacity: 1; transform: translateX(0)} - 100% {opacity: 0; transform: translateX(var(--announcement-translate-to))} + 0% { + opacity: 1; + transform: translateX(0); + } + 100% { + opacity: 0; + transform: translateX(var(--announcement-translate-to)); + } } /* section-header */ diff --git a/packages/theme/src/cli/utilities/fixtures/theme/config/settings_data.json b/packages/theme/src/cli/utilities/fixtures/theme/config/settings_data.json index e14a1e9e9f3..0f7a06db992 100644 --- a/packages/theme/src/cli/utilities/fixtures/theme/config/settings_data.json +++ b/packages/theme/src/cli/utilities/fixtures/theme/config/settings_data.json @@ -186,4 +186,4 @@ } } } -} \ No newline at end of file +} diff --git a/packages/theme/src/cli/utilities/fixtures/theme/config/settings_schema.json b/packages/theme/src/cli/utilities/fixtures/theme/config/settings_schema.json index a5090d2d3f5..5c93448f72b 100644 --- a/packages/theme/src/cli/utilities/fixtures/theme/config/settings_schema.json +++ b/packages/theme/src/cli/utilities/fixtures/theme/config/settings_schema.json @@ -4,8 +4,8 @@ "theme_name": "Dawn", "theme_version": "2.5.0", "theme_author": "Shopify", - "theme_documentation_url": "https:\/\/help.shopify.com\/manual\/online-store\/themes\/os20\/themes-by-shopify\/dawn", - "theme_support_url": "https:\/\/support.shopify.com\/" + "theme_documentation_url": "https://help.shopify.com/manual/online-store/themes/os20/themes-by-shopify/dawn", + "theme_support_url": "https://support.shopify.com/" }, { "name": "t:settings_schema.colors.name", @@ -1144,4 +1144,4 @@ } ] } -] \ No newline at end of file +] diff --git a/packages/theme/src/cli/utilities/fixtures/theme/locales/en.default.json b/packages/theme/src/cli/utilities/fixtures/theme/locales/en.default.json index 8e3f356fdf6..041ed915cfe 100644 --- a/packages/theme/src/cli/utilities/fixtures/theme/locales/en.default.json +++ b/packages/theme/src/cli/utilities/fixtures/theme/locales/en.default.json @@ -7,7 +7,7 @@ "login_form_password_placeholder": "Your password", "login_form_error": "Wrong password!", "login_form_submit": "Enter", - "admin_link_html": "Are you the store owner? Log in here<\/a>", + "admin_link_html": "Are you the store owner? Log in here", "powered_by_shopify_html": "This shop will be powered by {{ shopify }}" }, "social": { @@ -137,22 +137,22 @@ "minimum_of": "Minimum of {{ quantity }}", "maximum_of": "Maximum of {{ quantity }}", "multiples_of": "Increments of {{ quantity }}", - "in_cart_html": "{{ quantity }}<\/span> in cart", + "in_cart_html": "{{ quantity }} in cart", "note": "View quantity rules" }, "volume_pricing": { "title": "Volume Pricing", "note": "Volume pricing available", "minimum": "{{ quantity }}+", - "price_at_each": "at {{ price }}\/ea", + "price_at_each": "at {{ price }}/ea", "price_range": "{{ minimum }} - {{ maximum }}" }, "pickup_availability": { "view_store_info": "View store information", "check_other_stores": "Check availability at other stores", "pick_up_available": "Pickup available", - "pick_up_available_at_html": "Pickup available at {{ location_name }}<\/span>", - "pick_up_unavailable_at_html": "Pickup currently unavailable at {{ location_name }}<\/span>", + "pick_up_available_at_html": "Pickup available at {{ location_name }}", + "pick_up_unavailable_at_html": "Pickup currently unavailable at {{ location_name }}", "unavailable": "Couldn't load pickup availability", "refresh": "Refresh" }, @@ -173,7 +173,7 @@ "xr_button": "View in your space", "xr_button_label": "View in your space, loads item in augmented reality window", "include_taxes": "Tax included.", - "shipping_policy_html": "Shipping<\/a> calculated at checkout." + "shipping_policy_html": "Shipping calculated at checkout." }, "modal": { "label": "Media gallery" @@ -287,9 +287,9 @@ "empty": "Your cart is empty", "cart_error": "There was an error while updating your cart. Please try again.", "cart_quantity_error_html": "You can only add {{ quantity }} of this item to your cart.", - "taxes_and_shipping_policy_at_checkout_html": "Taxes, Discounts and shipping<\/a> calculated at checkout", + "taxes_and_shipping_policy_at_checkout_html": "Taxes, Discounts and shipping calculated at checkout", "taxes_included_but_shipping_at_checkout": "Tax included and shipping and discounts calculated at checkout", - "taxes_included_and_shipping_policy_html": "Tax included. Shipping<\/a> and discounts calculated at checkout.", + "taxes_included_and_shipping_policy_html": "Tax included. Shipping and discounts calculated at checkout.", "taxes_and_shipping_at_checkout": "Taxes, discounts and shipping calculated at checkout", "headings": { "product": "Product", @@ -301,7 +301,7 @@ "update": "Update", "login": { "title": "Have an account?", - "paragraph_html": "Log in<\/a> to check out faster." + "paragraph_html": "Log in to check out faster." } }, "footer": { @@ -322,7 +322,7 @@ "collection_template": { "empty": "No products found", "title": "Collection", - "use_fewer_filters_html": "Use fewer filters or remove all<\/a>" + "use_fewer_filters_html": "Use fewer filters or remove all" }, "video": { "load_video": "Load video: {{ description }}" @@ -342,7 +342,7 @@ "quick_order_list": { "product_total": "Product subtotal", "view_cart": "View cart", - "each": "{{ money }}\/ea", + "each": "{{ money }}/ea", "product": "Product", "variant": "Variant", "variant_total": "Variant total", @@ -362,10 +362,10 @@ } }, "localization": { - "country_label": "Country\/region", + "country_label": "Country/region", "language_label": "Language", "update_language": "Update language", - "update_country": "Update country\/region" + "update_country": "Update country/region" }, "customer": { "account": { @@ -394,9 +394,9 @@ "address1": "Address 1", "address2": "Address 2", "city": "City", - "country": "Country\/region", + "country": "Country/region", "province": "Province", - "zip": "Postal\/ZIP code", + "zip": "Postal/ZIP code", "phone": "Phone", "set_default": "Set as default address", "add": "Add address", @@ -509,4 +509,4 @@ "send_on_label": "Send on (optional)" } } -} \ No newline at end of file +} diff --git a/packages/theme/src/cli/utilities/fixtures/theme/templates/404.json b/packages/theme/src/cli/utilities/fixtures/theme/templates/404.json index b69e67a77fd..6f7102fda94 100644 --- a/packages/theme/src/cli/utilities/fixtures/theme/templates/404.json +++ b/packages/theme/src/cli/utilities/fixtures/theme/templates/404.json @@ -2,11 +2,8 @@ "sections": { "main": { "type": "main-404", - "settings": { - } + "settings": {} } }, - "order": [ - "main" - ] -} \ No newline at end of file + "order": ["main"] +} diff --git a/packages/theme/tsconfig.build.json b/packages/theme/tsconfig.build.json index 16506ad61a2..9b6783c3430 100644 --- a/packages/theme/tsconfig.build.json +++ b/packages/theme/tsconfig.build.json @@ -1,7 +1,5 @@ { "extends": "./tsconfig.json", "exclude": ["**/*.test.ts"], - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json index ea7490fa22f..049b388e278 100644 --- a/packages/theme/tsconfig.json +++ b/packages/theme/tsconfig.json @@ -7,7 +7,5 @@ "rootDir": "src", "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" }, - "references": [ - {"path": "../cli-kit"} - ] + "references": [{"path": "../cli-kit"}] } diff --git a/packages/ui-extensions-dev-console/index.html b/packages/ui-extensions-dev-console/index.html index 6223ab0242c..f240f07d61c 100644 --- a/packages/ui-extensions-dev-console/index.html +++ b/packages/ui-extensions-dev-console/index.html @@ -3,13 +3,13 @@ - - - - - - - + + + + + + + UI Extensions DevConsole diff --git a/packages/ui-extensions-dev-console/project.json b/packages/ui-extensions-dev-console/project.json index 36a8758f6b5..51771297711 100644 --- a/packages/ui-extensions-dev-console/project.json +++ b/packages/ui-extensions-dev-console/project.json @@ -14,7 +14,7 @@ } }, "build": { - "inputs": ["production","^production", "{projectRoot}/index.html"], + "inputs": ["production", "^production", "{projectRoot}/index.html"], "outputs": ["{workspaceRoot}/packages/app/assets/dev-console"], "executor": "nx:run-commands", "options": { diff --git a/packages/ui-extensions-dev-console/src/assets/favicon/site.webmanifest b/packages/ui-extensions-dev-console/src/assets/favicon/site.webmanifest index b20abb7cbb2..fa99de77db6 100644 --- a/packages/ui-extensions-dev-console/src/assets/favicon/site.webmanifest +++ b/packages/ui-extensions-dev-console/src/assets/favicon/site.webmanifest @@ -1,19 +1,19 @@ { - "name": "", - "short_name": "", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "theme_color": "#ffffff", - "background_color": "#ffffff", - "display": "standalone" + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" } diff --git a/packages/ui-extensions-dev-console/src/components/Button/Button.module.scss b/packages/ui-extensions-dev-console/src/components/Button/Button.module.scss index b36d8841609..17c4e75092c 100644 --- a/packages/ui-extensions-dev-console/src/components/Button/Button.module.scss +++ b/packages/ui-extensions-dev-console/src/components/Button/Button.module.scss @@ -3,7 +3,7 @@ padding: 0.3rem 0.8rem; - display:flex; + display: flex; gap: 0.6rem; line-height: 2rem; @@ -28,8 +28,7 @@ background: var(--dc-color-grey-600); } - &[aria-pressed=true] { + &[aria-pressed='true'] { background-color: var(--dc-color-blue-500); } } - diff --git a/packages/ui-extensions-dev-console/src/components/IconButton/IconButton.module.scss b/packages/ui-extensions-dev-console/src/components/IconButton/IconButton.module.scss index be05e97e371..5a55cedb79c 100644 --- a/packages/ui-extensions-dev-console/src/components/IconButton/IconButton.module.scss +++ b/packages/ui-extensions-dev-console/src/components/IconButton/IconButton.module.scss @@ -18,8 +18,7 @@ .Icon { margin: 0 auto; - position:relative; + position: relative; top: 0.1rem; } } - diff --git a/packages/ui-extensions-dev-console/src/components/Modal/components/Backdrop/Backdrop.module.scss b/packages/ui-extensions-dev-console/src/components/Modal/components/Backdrop/Backdrop.module.scss index 932a69ec144..3bb0c97da03 100644 --- a/packages/ui-extensions-dev-console/src/components/Modal/components/Backdrop/Backdrop.module.scss +++ b/packages/ui-extensions-dev-console/src/components/Modal/components/Backdrop/Backdrop.module.scss @@ -1,6 +1,10 @@ @keyframes opacity { - from {opacity: 0;} - to {opacity: 0.5;} + from { + opacity: 0; + } + to { + opacity: 0.5; + } } .Backdrop { diff --git a/packages/ui-extensions-dev-console/src/components/Modal/components/Dialog/Dialog.module.scss b/packages/ui-extensions-dev-console/src/components/Modal/components/Dialog/Dialog.module.scss index 4c9ba4c9801..ea7500d0e53 100644 --- a/packages/ui-extensions-dev-console/src/components/Modal/components/Dialog/Dialog.module.scss +++ b/packages/ui-extensions-dev-console/src/components/Modal/components/Dialog/Dialog.module.scss @@ -43,8 +43,7 @@ will-change: transform, opacity; opacity: 1; transform: translateY(0); - transition: transform 200ms, - opacity 200ms; + transition: transform 200ms, opacity 200ms; &.entering, &.exiting, diff --git a/packages/ui-extensions-dev-console/src/components/Tooltip/Tooltip.module.css b/packages/ui-extensions-dev-console/src/components/Tooltip/Tooltip.module.css index 9a86246b421..29cf1518f67 100644 --- a/packages/ui-extensions-dev-console/src/components/Tooltip/Tooltip.module.css +++ b/packages/ui-extensions-dev-console/src/components/Tooltip/Tooltip.module.css @@ -3,7 +3,7 @@ } .Tooltip:hover { - cursor: help; + cursor: help; } .TooltipUnderline { diff --git a/packages/ui-extensions-dev-console/src/components/Tooltip/TooltipPopover.module.css b/packages/ui-extensions-dev-console/src/components/Tooltip/TooltipPopover.module.css index fbabca9d50e..3b1f3a1611c 100644 --- a/packages/ui-extensions-dev-console/src/components/Tooltip/TooltipPopover.module.css +++ b/packages/ui-extensions-dev-console/src/components/Tooltip/TooltipPopover.module.css @@ -15,6 +15,5 @@ word-break: break-word; word-wrap: break-word; z-index: 9999; - box-shadow: 0px 3px 6px -3px rgba(23, 24, 24, 0.08), - 0px 8px 20px -4px rgba(23, 24, 24, 0.12); + box-shadow: 0px 3px 6px -3px rgba(23, 24, 24, 0.08), 0px 8px 20px -4px rgba(23, 24, 24, 0.12); } diff --git a/packages/ui-extensions-dev-console/src/foundation/Layout/Layout.module.scss b/packages/ui-extensions-dev-console/src/foundation/Layout/Layout.module.scss index 18ffff4d7bf..d586a9ac6ed 100644 --- a/packages/ui-extensions-dev-console/src/foundation/Layout/Layout.module.scss +++ b/packages/ui-extensions-dev-console/src/foundation/Layout/Layout.module.scss @@ -56,4 +56,3 @@ font-size: 1.4rem; } } - diff --git a/packages/ui-extensions-dev-console/src/foundation/Theme/Theme.module.scss b/packages/ui-extensions-dev-console/src/foundation/Theme/Theme.module.scss index 30abf1f96b4..99cb082f6e6 100644 --- a/packages/ui-extensions-dev-console/src/foundation/Theme/Theme.module.scss +++ b/packages/ui-extensions-dev-console/src/foundation/Theme/Theme.module.scss @@ -9,7 +9,7 @@ --dc-color-grey-100: rgb(235, 235, 235); /* Blue */ - --dc-color-blue-500: #36A3FF; + --dc-color-blue-500: #36a3ff; --dc-color-blue-400: rgb(91, 206, 255); /* White */ diff --git a/packages/ui-extensions-dev-console/src/foundation/Toast/Toast.module.scss b/packages/ui-extensions-dev-console/src/foundation/Toast/Toast.module.scss index ed8ada1703b..fdd525da174 100644 --- a/packages/ui-extensions-dev-console/src/foundation/Toast/Toast.module.scss +++ b/packages/ui-extensions-dev-console/src/foundation/Toast/Toast.module.scss @@ -3,8 +3,8 @@ --toastify-color-dark: var(--dc-color-grey-700); --toastify-color-info: var(--dc-color-blue-400); --toastify-color-success: var(--dc-color-green); - --toastify-color-warning: var(--dc-color-red); - --toastify-color-error: var(--dc-color-red); + --toastify-color-warning: var(--dc-color-red); + --toastify-color-error: var(--dc-color-red); --toastify-color-transparent: rgba(255, 255, 255, 0.7); --toastify-icon-color-info: var(--dc-color-blue-400); @@ -29,7 +29,7 @@ --toastify-spinner-color: var(--dc-color-grey-500); --toastify-spinner-color-empty-area: var(--dc-color-white); - /* Used when no type is provided */ + /* Used when no type is provided */ --toastify-color-progress-dark: var(--dc-color-blue-400); --toastify-color-progress-info: var(--toastify-color-info); --toastify-color-progress-success: var(--toastify-color-success); diff --git a/packages/ui-extensions-dev-console/src/sections/Extensions/Extensions.module.scss b/packages/ui-extensions-dev-console/src/sections/Extensions/Extensions.module.scss index e55383ee360..4fd26f8eee3 100644 --- a/packages/ui-extensions-dev-console/src/sections/Extensions/Extensions.module.scss +++ b/packages/ui-extensions-dev-console/src/sections/Extensions/Extensions.module.scss @@ -1,4 +1,3 @@ - .Intro { height: 5.6rem; padding: 2.2rem 1.8rem 1.5rem; @@ -30,11 +29,12 @@ } th:first-child, td:first-child { - padding-left: 2rem + padding-left: 2rem; } - th, td { - padding-top: .5rem; - padding-bottom: .5rem; + th, + td { + padding-top: 0.5rem; + padding-bottom: 0.5rem; vertical-align: middle; } } diff --git a/packages/ui-extensions-dev-console/src/sections/Extensions/components/QRCodeModal/QRCodeModal.module.scss b/packages/ui-extensions-dev-console/src/sections/Extensions/components/QRCodeModal/QRCodeModal.module.scss index f0f3e41bc53..9740dde900c 100644 --- a/packages/ui-extensions-dev-console/src/sections/Extensions/components/QRCodeModal/QRCodeModal.module.scss +++ b/packages/ui-extensions-dev-console/src/sections/Extensions/components/QRCodeModal/QRCodeModal.module.scss @@ -1,40 +1,40 @@ .Wrapper { - display: flex; - gap: 2.4rem; + display: flex; + gap: 2.4rem; } .LeftColumn { - width: 17.5rem; - display: flex; - flex-direction: column; - gap: 1.2rem; - line-height: 1.4rem; - font-size: 1.2rem; + width: 17.5rem; + display: flex; + flex-direction: column; + gap: 1.2rem; + line-height: 1.4rem; + font-size: 1.2rem; } .QRCode { - display:block; - padding: 0.2rem 0.2rem 0 0.2rem; - background: var(--dc-color-white); + display: block; + padding: 0.2rem 0.2rem 0 0.2rem; + background: var(--dc-color-white); } .RightColumn { - font-size: 1.2rem; - line-height: 1.8rem; - display: flex; - flex-direction: column; - gap: 0.8rem; + font-size: 1.2rem; + line-height: 1.8rem; + display: flex; + flex-direction: column; + gap: 0.8rem; } .UrlCta { - display: flex; - gap: 0.8rem; - align-items: center; + display: flex; + gap: 0.8rem; + align-items: center; } .Url { - font-size: 1.1rem; - line-height: 1.6rem; - word-break: break-all; - color: var(--dc-color-grey-400); + font-size: 1.1rem; + line-height: 1.6rem; + word-break: break-all; + color: var(--dc-color-grey-400); } diff --git a/packages/ui-extensions-dev-console/src/sections/Extensions/components/Row/Row.module.scss b/packages/ui-extensions-dev-console/src/sections/Extensions/components/Row/Row.module.scss index 2971f76c3bd..e466555e9eb 100644 --- a/packages/ui-extensions-dev-console/src/sections/Extensions/components/Row/Row.module.scss +++ b/packages/ui-extensions-dev-console/src/sections/Extensions/components/Row/Row.module.scss @@ -13,7 +13,7 @@ th:first-child, td:first-child { - padding-left: 1.8rem + padding-left: 1.8rem; } td { @@ -23,6 +23,6 @@ th:last-child, td:last-child { - padding-right: 1.8rem + padding-right: 1.8rem; } } diff --git a/packages/ui-extensions-dev-console/src/sections/Extensions/components/Status/Status.module.scss b/packages/ui-extensions-dev-console/src/sections/Extensions/components/Status/Status.module.scss index 902638ca6ab..e45c11947a1 100644 --- a/packages/ui-extensions-dev-console/src/sections/Extensions/components/Status/Status.module.scss +++ b/packages/ui-extensions-dev-console/src/sections/Extensions/components/Status/Status.module.scss @@ -4,7 +4,7 @@ align-items: center; white-space: nowrap; font-weight: var(--dc-font-weight-500); - color: var(--dc-color-grey-400) + color: var(--dc-color-grey-400); } .success, diff --git a/packages/ui-extensions-dev-console/tsconfig.build.json b/packages/ui-extensions-dev-console/tsconfig.build.json index 332b6f113bd..a602067a46f 100644 --- a/packages/ui-extensions-dev-console/tsconfig.build.json +++ b/packages/ui-extensions-dev-console/tsconfig.build.json @@ -5,7 +5,7 @@ "paths": { "@/*": ["src/*"], "@shopify/ui-extensions-server-kit": ["../ui-extensions-server-kit/src"], - "@shopify/ui-extensions-test-utils": ["../ui-extensions-test-utils/src"], + "@shopify/ui-extensions-test-utils": ["../ui-extensions-test-utils/src"] } }, "exclude": ["tests/**/*", "src/**/*.test.tsx", "src/**/*.test.ts", "dist/**"], diff --git a/packages/ui-extensions-dev-console/tsconfig.json b/packages/ui-extensions-dev-console/tsconfig.json index a1bcf990e36..b4df653a457 100644 --- a/packages/ui-extensions-dev-console/tsconfig.json +++ b/packages/ui-extensions-dev-console/tsconfig.json @@ -9,7 +9,7 @@ "@shopify/ui-extensions-test-utils": ["../ui-extensions-test-utils/src"] }, "outDir": "dist", - "types": ["vitest/globals"], + "types": ["vitest/globals"] }, "include": ["src/**/*", "tests/**/*", "src/**/*.json"], "references": [{"path": "../ui-extensions-server-kit"}, {"path": "../ui-extensions-test-utils"}] diff --git a/packages/ui-extensions-server-kit/scripts/create-entry-files.ts b/packages/ui-extensions-server-kit/scripts/create-entry-files.ts index 97577e5b7ab..4703b78e3fe 100644 --- a/packages/ui-extensions-server-kit/scripts/create-entry-files.ts +++ b/packages/ui-extensions-server-kit/scripts/create-entry-files.ts @@ -1,12 +1,12 @@ -import {writeFileSync} from 'fs'; -import {join, relative} from 'path'; +import {writeFileSync} from 'fs' +import {join, relative} from 'path' -import type {Plugin} from 'vite'; +import type {Plugin} from 'vite' -const cwd = (...paths: string[]) => join(process.cwd(), ...paths); +const cwd = (...paths: string[]) => join(process.cwd(), ...paths) export interface CreateEntryFilesOptions { - files: {[key: string]: string}; + files: {[key: string]: string} } export function createEntryFiles(options: CreateEntryFilesOptions): Plugin { @@ -15,30 +15,24 @@ export function createEntryFiles(options: CreateEntryFilesOptions): Plugin { enforce: 'post', configResolved(config) { if (!config.build.lib) { - return; + return } - const {formats = []} = config.build.lib ?? {}; + const {formats = []} = config.build.lib ?? {} Object.entries(options.files).forEach(([key, path]) => { writeFileSync( cwd(`${key}.d.ts`), - `export * from './${relative( - cwd(), - path.endsWith('/index') ? path.replace('/index', '') : path, - )}';\n`, - ); + `export * from './${relative(cwd(), path.endsWith('/index') ? path.replace('/index', '') : path)}';\n`, + ) formats.forEach((format) => { if (format === 'cjs') { - writeFileSync( - cwd(`${key}.js`), - `module.exports = require('./${relative(cwd(), path)}.cjs');\n`, - ); + writeFileSync(cwd(`${key}.js`), `module.exports = require('./${relative(cwd(), path)}.cjs');\n`) } if (format === 'es') { - writeFileSync(cwd(`${key}.mjs`), `export * from './${relative(cwd(), path)}.es.js';\n`); + writeFileSync(cwd(`${key}.mjs`), `export * from './${relative(cwd(), path)}.es.js';\n`) } - }); - }); + }) + }) }, - }; + } } diff --git a/packages/ui-extensions-server-kit/tsconfig.json b/packages/ui-extensions-server-kit/tsconfig.json index 933e57ee83d..e5fbd6151a7 100644 --- a/packages/ui-extensions-server-kit/tsconfig.json +++ b/packages/ui-extensions-server-kit/tsconfig.json @@ -18,7 +18,7 @@ "noEmit": false, "jsx": "react", "paths": { - "@shopify/ui-extensions-test-utils": ["../../ui-extensions-test-utils/src"], + "@shopify/ui-extensions-test-utils": ["../../ui-extensions-test-utils/src"] }, "outDir": "dist", "baseUrl": "src", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 628b9da743f..3dfc32a1475 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,7 +15,6 @@ overrides: nanoid: 3.3.8 importers: - .: devDependencies: '@bugsnag/source-maps': @@ -848,315 +847,384 @@ importers: version: 3.0.0 packages: - '@actions/core@1.11.1': - resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} + resolution: + {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} '@actions/exec@1.1.1': - resolution: {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} + resolution: + {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} '@actions/http-client@2.2.3': - resolution: {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} + resolution: + {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} '@actions/io@1.1.3': - resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} + resolution: + {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} '@alcalzone/ansi-tokenize@0.1.3': - resolution: {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} + resolution: + {integrity: sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==} engines: {node: '>=14.13.1'} '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + resolution: + {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} '@apidevtools/json-schema-ref-parser@11.7.3': - resolution: {integrity: sha512-WApSdLdXEBb/1FUPca2lteASewEfpjEYJ8oXZP+0gExK5qSfsEKBKcA+WjY6Q4wvXwyv0+W6Kvc372pSceib9w==} + resolution: + {integrity: sha512-WApSdLdXEBb/1FUPca2lteASewEfpjEYJ8oXZP+0gExK5qSfsEKBKcA+WjY6Q4wvXwyv0+W6Kvc372pSceib9w==} engines: {node: '>= 16'} '@ardatan/relay-compiler@12.0.0': - resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} + resolution: + {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} hasBin: true peerDependencies: graphql: '*' '@ardatan/relay-compiler@12.0.3': - resolution: {integrity: sha512-mBDFOGvAoVlWaWqs3hm1AciGHSQE1rqFc/liZTyYz/Oek9yZdT5H26pH2zAFuEiTiBVPPyMuqf5VjOFPI2DGsQ==} + resolution: + {integrity: sha512-mBDFOGvAoVlWaWqs3hm1AciGHSQE1rqFc/liZTyYz/Oek9yZdT5H26pH2zAFuEiTiBVPPyMuqf5VjOFPI2DGsQ==} hasBin: true peerDependencies: graphql: '*' '@ast-grep/napi-darwin-arm64@0.33.0': - resolution: {integrity: sha512-FsBQiBNGbqeU6z2sjFgnV6MXuBa0wYUb4PViMnqsKLeWiO7kRii5crmXLCtdTD2hufXTG6Rll8X46AkYOAwGGQ==} + resolution: + {integrity: sha512-FsBQiBNGbqeU6z2sjFgnV6MXuBa0wYUb4PViMnqsKLeWiO7kRii5crmXLCtdTD2hufXTG6Rll8X46AkYOAwGGQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] '@ast-grep/napi-darwin-arm64@0.34.1': - resolution: {integrity: sha512-SzXXx2ya6xDKBaHZv20P9Qza5FaWE6lMBu00yegJVYRs7+0feBJ+10dvbv9fm+7RJ91Tw0V0G92Sgdg9lysBwA==} + resolution: + {integrity: sha512-SzXXx2ya6xDKBaHZv20P9Qza5FaWE6lMBu00yegJVYRs7+0feBJ+10dvbv9fm+7RJ91Tw0V0G92Sgdg9lysBwA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] '@ast-grep/napi-darwin-x64@0.33.0': - resolution: {integrity: sha512-rWo1wG7fc7K20z9ExIeN6U4QqjHhoQSpBDDnmxKTR0nIwPfyMq338sS4sWZomutxprcZDtWrekxH1lXjNvfuiA==} + resolution: + {integrity: sha512-rWo1wG7fc7K20z9ExIeN6U4QqjHhoQSpBDDnmxKTR0nIwPfyMq338sS4sWZomutxprcZDtWrekxH1lXjNvfuiA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] '@ast-grep/napi-darwin-x64@0.34.1': - resolution: {integrity: sha512-LIeTaB0IgNGyyU5sMW2cUHjWWW/sNjEqseMmpHLft7+LEXK7ojr4NDUN33cKtrRgEfwpvVXjXh5sgLqm343ecg==} + resolution: + {integrity: sha512-LIeTaB0IgNGyyU5sMW2cUHjWWW/sNjEqseMmpHLft7+LEXK7ojr4NDUN33cKtrRgEfwpvVXjXh5sgLqm343ecg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] '@ast-grep/napi-linux-arm64-gnu@0.33.0': - resolution: {integrity: sha512-3ZnA2k57kxfvLg4s9+6rHaCx1FbWt0EF8fumJMf5nwevu7GbVOOhCkzAetZe80FBgZuIOSR4IS2QMj9ZHI0UdQ==} + resolution: + {integrity: sha512-3ZnA2k57kxfvLg4s9+6rHaCx1FbWt0EF8fumJMf5nwevu7GbVOOhCkzAetZe80FBgZuIOSR4IS2QMj9ZHI0UdQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@ast-grep/napi-linux-arm64-gnu@0.34.1': - resolution: {integrity: sha512-zi/JKIYDsucSfMHhb2W33AVw8Q6bF9MBV6FrYF98UWpJJoWXUPzPqVM09NANyWM0lypGiWuHk//JCwHndeCiSA==} + resolution: + {integrity: sha512-zi/JKIYDsucSfMHhb2W33AVw8Q6bF9MBV6FrYF98UWpJJoWXUPzPqVM09NANyWM0lypGiWuHk//JCwHndeCiSA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@ast-grep/napi-linux-arm64-musl@0.33.0': - resolution: {integrity: sha512-oUGZgCaVCijFgvC+X52ttgoWUqgrIsSVJZgn+1VBY3n4mpzcoYAghFomSUbRTBUL2ebvZweA33Klqks4okY61w==} + resolution: + {integrity: sha512-oUGZgCaVCijFgvC+X52ttgoWUqgrIsSVJZgn+1VBY3n4mpzcoYAghFomSUbRTBUL2ebvZweA33Klqks4okY61w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@ast-grep/napi-linux-arm64-musl@0.34.1': - resolution: {integrity: sha512-IXdqwTbkdqHrcuQb448Qzd82QdTqVFe/f0sSkFYQTic8P2qNzmiHsVnxgEFsQPPbe09BVAoZ885j3OnaNfcDYA==} + resolution: + {integrity: sha512-IXdqwTbkdqHrcuQb448Qzd82QdTqVFe/f0sSkFYQTic8P2qNzmiHsVnxgEFsQPPbe09BVAoZ885j3OnaNfcDYA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] '@ast-grep/napi-linux-x64-gnu@0.33.0': - resolution: {integrity: sha512-QTAkfxQSsOGRza0hnkeAgJDQqR00iDerRNq42dOGIzgF+Kse491By3UmBEMG4oCbv17yYcBBlknQkzKSKtigjw==} + resolution: + {integrity: sha512-QTAkfxQSsOGRza0hnkeAgJDQqR00iDerRNq42dOGIzgF+Kse491By3UmBEMG4oCbv17yYcBBlknQkzKSKtigjw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@ast-grep/napi-linux-x64-gnu@0.34.1': - resolution: {integrity: sha512-on4LyIeN/zN7SIh8zr5v+NTzVu3kXm2mG28ib1Qe9GVcf35dz52ckf7bilulayKSa2MHZWAXMjuc6NYMiNEw+w==} + resolution: + {integrity: sha512-on4LyIeN/zN7SIh8zr5v+NTzVu3kXm2mG28ib1Qe9GVcf35dz52ckf7bilulayKSa2MHZWAXMjuc6NYMiNEw+w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@ast-grep/napi-linux-x64-musl@0.33.0': - resolution: {integrity: sha512-PW6bZO7MyQsBNZv0idI/Ah6ak66T8LqZ21wBGjtQp9NDGViOtkLeu+eJJGaZjMqUdidKHKgmMKXksZHl2m8ulQ==} + resolution: + {integrity: sha512-PW6bZO7MyQsBNZv0idI/Ah6ak66T8LqZ21wBGjtQp9NDGViOtkLeu+eJJGaZjMqUdidKHKgmMKXksZHl2m8ulQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@ast-grep/napi-linux-x64-musl@0.34.1': - resolution: {integrity: sha512-l1R5L9LOp0jTPjs8C+LUndZOA8cRw7PFlvoVxVbi2jCfcns00dqatSYc4yA/ke6ng2K0LSxjoV/jS8tefve0sA==} + resolution: + {integrity: sha512-l1R5L9LOp0jTPjs8C+LUndZOA8cRw7PFlvoVxVbi2jCfcns00dqatSYc4yA/ke6ng2K0LSxjoV/jS8tefve0sA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] '@ast-grep/napi-win32-arm64-msvc@0.33.0': - resolution: {integrity: sha512-ijmFQcFc32JOIQlSfnhDJpb3qFb2RhrRqfeY0EHHN1xRSGwZHfsHTSS66nKR2sREmxTIMgxXOtylKicbyyMVKA==} + resolution: + {integrity: sha512-ijmFQcFc32JOIQlSfnhDJpb3qFb2RhrRqfeY0EHHN1xRSGwZHfsHTSS66nKR2sREmxTIMgxXOtylKicbyyMVKA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] '@ast-grep/napi-win32-arm64-msvc@0.34.1': - resolution: {integrity: sha512-eVsdMtnY7jmN2xQjYY9gaqIxRHA44+QYivlP1uLbg8w3P4YlZWTFgOJ7aa357Hg/257mjeQCpodCkr0lGRsSYQ==} + resolution: + {integrity: sha512-eVsdMtnY7jmN2xQjYY9gaqIxRHA44+QYivlP1uLbg8w3P4YlZWTFgOJ7aa357Hg/257mjeQCpodCkr0lGRsSYQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] '@ast-grep/napi-win32-ia32-msvc@0.33.0': - resolution: {integrity: sha512-NNIb2VK3Z2BwKp0QJSw8gkhwOUp85SgTsxJ38p+wIUAA/KzAKCJOmyOaZ301qGHt4gL+jTHgTIvJJX+9eT/REg==} + resolution: + {integrity: sha512-NNIb2VK3Z2BwKp0QJSw8gkhwOUp85SgTsxJ38p+wIUAA/KzAKCJOmyOaZ301qGHt4gL+jTHgTIvJJX+9eT/REg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] '@ast-grep/napi-win32-ia32-msvc@0.34.1': - resolution: {integrity: sha512-jDW6jfoxEeYMM8hrPSiOz4iUIN+O7VTTlqU5TWDdlFX8HJYLF4SrNFEZl+Gz5B0Ph5LTjKPZFk6sd+DC1zt9+A==} + resolution: + {integrity: sha512-jDW6jfoxEeYMM8hrPSiOz4iUIN+O7VTTlqU5TWDdlFX8HJYLF4SrNFEZl+Gz5B0Ph5LTjKPZFk6sd+DC1zt9+A==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] '@ast-grep/napi-win32-x64-msvc@0.33.0': - resolution: {integrity: sha512-gW7viQQjdPA1HoCkpCqoonC81TOwcpP828w/XqZFE/L6uhD8SF2usul8KNBQOiX3O7/fqYEOnbtWMCrwZIqG1Q==} + resolution: + {integrity: sha512-gW7viQQjdPA1HoCkpCqoonC81TOwcpP828w/XqZFE/L6uhD8SF2usul8KNBQOiX3O7/fqYEOnbtWMCrwZIqG1Q==} engines: {node: '>= 10'} cpu: [x64] os: [win32] '@ast-grep/napi-win32-x64-msvc@0.34.1': - resolution: {integrity: sha512-ttBFcTugjzEbYRPBo400NfPU+3ukBxeOxpeYLBZ1yIYqbgekPnD4WItiowsX5/hd0wHcX3T50FdthlJRmOXubQ==} + resolution: + {integrity: sha512-ttBFcTugjzEbYRPBo400NfPU+3ukBxeOxpeYLBZ1yIYqbgekPnD4WItiowsX5/hd0wHcX3T50FdthlJRmOXubQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] '@ast-grep/napi@0.33.0': - resolution: {integrity: sha512-6heRMmomhSD0dkummRQ+R4xWXXmc41OaDPoPI49mKJXPyvwJPdPZUcQjXdIitOVL4uJV+qM2ZBucDPENDBSixw==} + resolution: + {integrity: sha512-6heRMmomhSD0dkummRQ+R4xWXXmc41OaDPoPI49mKJXPyvwJPdPZUcQjXdIitOVL4uJV+qM2ZBucDPENDBSixw==} engines: {node: '>= 10'} '@ast-grep/napi@0.34.1': - resolution: {integrity: sha512-SZAXFjgSqr7TfdW+ZJZ5LMkC226vJCAHAU5VvaluG2maT/LdkaUN3RwV+emdcEXIrUOqKB98+WSobhqOsKYuNw==} + resolution: + {integrity: sha512-SZAXFjgSqr7TfdW+ZJZ5LMkC226vJCAHAU5VvaluG2maT/LdkaUN3RwV+emdcEXIrUOqKB98+WSobhqOsKYuNw==} engines: {node: '>= 10'} '@aws-crypto/crc32@5.2.0': - resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + resolution: + {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} '@aws-crypto/crc32c@5.2.0': - resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + resolution: + {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} '@aws-crypto/sha1-browser@5.2.0': - resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + resolution: + {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} '@aws-crypto/sha256-browser@5.2.0': - resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + resolution: + {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} '@aws-crypto/sha256-js@5.2.0': - resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + resolution: + {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} engines: {node: '>=16.0.0'} '@aws-crypto/supports-web-crypto@5.2.0': - resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + resolution: + {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} '@aws-crypto/util@5.2.0': - resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + resolution: + {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} '@aws-sdk/client-cloudfront@3.983.0': - resolution: {integrity: sha512-XrI3yyFrsRUMTsBGSxaATh9DQcoAtlt1i4EQLtkuxNVLKFOyyA3tvwf7hR2LKcgmwr5304/QBvgSQa5U+/4MKQ==} + resolution: + {integrity: sha512-XrI3yyFrsRUMTsBGSxaATh9DQcoAtlt1i4EQLtkuxNVLKFOyyA3tvwf7hR2LKcgmwr5304/QBvgSQa5U+/4MKQ==} engines: {node: '>=20.0.0'} '@aws-sdk/client-s3@3.983.0': - resolution: {integrity: sha512-V40PT2irPh3lj+Z95tZI6batVrjaTrWEOXRNVBuoZSgpM3Ak1jiE9ZXwVLkMcbb9/GH4xVpB3EsGM7gbxmgFLQ==} + resolution: + {integrity: sha512-V40PT2irPh3lj+Z95tZI6batVrjaTrWEOXRNVBuoZSgpM3Ak1jiE9ZXwVLkMcbb9/GH4xVpB3EsGM7gbxmgFLQ==} engines: {node: '>=20.0.0'} '@aws-sdk/client-sso@3.982.0': - resolution: {integrity: sha512-qJrIiivmvujdGqJ0ldSUvhN3k3N7GtPesoOI1BSt0fNXovVnMz4C/JmnkhZihU7hJhDvxJaBROLYTU+lpild4w==} + resolution: + {integrity: sha512-qJrIiivmvujdGqJ0ldSUvhN3k3N7GtPesoOI1BSt0fNXovVnMz4C/JmnkhZihU7hJhDvxJaBROLYTU+lpild4w==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.973.6': - resolution: {integrity: sha512-pz4ZOw3BLG0NdF25HoB9ymSYyPbMiIjwQJ2aROXRhAzt+b+EOxStfFv8s5iZyP6Kiw7aYhyWxj5G3NhmkoOTKw==} + resolution: + {integrity: sha512-pz4ZOw3BLG0NdF25HoB9ymSYyPbMiIjwQJ2aROXRhAzt+b+EOxStfFv8s5iZyP6Kiw7aYhyWxj5G3NhmkoOTKw==} engines: {node: '>=20.0.0'} '@aws-sdk/crc64-nvme@3.972.0': - resolution: {integrity: sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw==} + resolution: + {integrity: sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-env@3.972.4': - resolution: {integrity: sha512-/8dnc7+XNMmViEom2xsNdArQxQPSgy4Z/lm6qaFPTrMFesT1bV3PsBhb19n09nmxHdrtQskYmViddUIjUQElXg==} + resolution: + {integrity: sha512-/8dnc7+XNMmViEom2xsNdArQxQPSgy4Z/lm6qaFPTrMFesT1bV3PsBhb19n09nmxHdrtQskYmViddUIjUQElXg==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-http@3.972.6': - resolution: {integrity: sha512-5ERWqRljiZv44AIdvIRQ3k+EAV0Sq2WeJHvXuK7gL7bovSxOf8Al7MLH7Eh3rdovH4KHFnlIty7J71mzvQBl5Q==} + resolution: + {integrity: sha512-5ERWqRljiZv44AIdvIRQ3k+EAV0Sq2WeJHvXuK7gL7bovSxOf8Al7MLH7Eh3rdovH4KHFnlIty7J71mzvQBl5Q==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-ini@3.972.4': - resolution: {integrity: sha512-eRUg+3HaUKuXWn/lEMirdiA5HOKmEl8hEHVuszIDt2MMBUKgVX5XNGmb3XmbgU17h6DZ+RtjbxQpjhz3SbTjZg==} + resolution: + {integrity: sha512-eRUg+3HaUKuXWn/lEMirdiA5HOKmEl8hEHVuszIDt2MMBUKgVX5XNGmb3XmbgU17h6DZ+RtjbxQpjhz3SbTjZg==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-login@3.972.4': - resolution: {integrity: sha512-nLGjXuvWWDlQAp505xIONI7Gam0vw2p7Qu3P6on/W2q7rjJXtYjtpHbcsaOjJ/pAju3eTvEQuSuRedcRHVQIAQ==} + resolution: + {integrity: sha512-nLGjXuvWWDlQAp505xIONI7Gam0vw2p7Qu3P6on/W2q7rjJXtYjtpHbcsaOjJ/pAju3eTvEQuSuRedcRHVQIAQ==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-node@3.972.5': - resolution: {integrity: sha512-VWXKgSISQCI2GKN3zakTNHSiZ0+mux7v6YHmmbLQp/o3fvYUQJmKGcLZZzg2GFA+tGGBStplra9VFNf/WwxpYg==} + resolution: + {integrity: sha512-VWXKgSISQCI2GKN3zakTNHSiZ0+mux7v6YHmmbLQp/o3fvYUQJmKGcLZZzg2GFA+tGGBStplra9VFNf/WwxpYg==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-process@3.972.4': - resolution: {integrity: sha512-TCZpWUnBQN1YPk6grvd5x419OfXjHvhj5Oj44GYb84dOVChpg/+2VoEj+YVA4F4E/6huQPNnX7UYbTtxJqgihw==} + resolution: + {integrity: sha512-TCZpWUnBQN1YPk6grvd5x419OfXjHvhj5Oj44GYb84dOVChpg/+2VoEj+YVA4F4E/6huQPNnX7UYbTtxJqgihw==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-sso@3.972.4': - resolution: {integrity: sha512-wzsGwv9mKlwJ3vHLyembBvGE/5nPUIwRR2I51B1cBV4Cb4ql9nIIfpmHzm050XYTY5fqTOKJQnhLj7zj89VG8g==} + resolution: + {integrity: sha512-wzsGwv9mKlwJ3vHLyembBvGE/5nPUIwRR2I51B1cBV4Cb4ql9nIIfpmHzm050XYTY5fqTOKJQnhLj7zj89VG8g==} engines: {node: '>=20.0.0'} '@aws-sdk/credential-provider-web-identity@3.972.4': - resolution: {integrity: sha512-hIzw2XzrG8jzsUSEatehmpkd5rWzASg5IHUfA+m01k/RtvfAML7ZJVVohuKdhAYx+wV2AThLiQJVzqn7F0khrw==} + resolution: + {integrity: sha512-hIzw2XzrG8jzsUSEatehmpkd5rWzASg5IHUfA+m01k/RtvfAML7ZJVVohuKdhAYx+wV2AThLiQJVzqn7F0khrw==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-bucket-endpoint@3.972.3': - resolution: {integrity: sha512-fmbgWYirF67YF1GfD7cg5N6HHQ96EyRNx/rDIrTF277/zTWVuPI2qS/ZHgofwR1NZPe/NWvoppflQY01LrbVLg==} + resolution: + {integrity: sha512-fmbgWYirF67YF1GfD7cg5N6HHQ96EyRNx/rDIrTF277/zTWVuPI2qS/ZHgofwR1NZPe/NWvoppflQY01LrbVLg==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-expect-continue@3.972.3': - resolution: {integrity: sha512-4msC33RZsXQpUKR5QR4HnvBSNCPLGHmB55oDiROqqgyOc+TOfVu2xgi5goA7ms6MdZLeEh2905UfWMnMMF4mRg==} + resolution: + {integrity: sha512-4msC33RZsXQpUKR5QR4HnvBSNCPLGHmB55oDiROqqgyOc+TOfVu2xgi5goA7ms6MdZLeEh2905UfWMnMMF4mRg==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-flexible-checksums@3.972.4': - resolution: {integrity: sha512-xOxsUkF3O3BtIe3tf54OpPo94eZepjFm3z0Dd2TZKbsPxMiRTFXurC04wJ58o/wPW9YHVO9VqZik3MfoPfrKlw==} + resolution: + {integrity: sha512-xOxsUkF3O3BtIe3tf54OpPo94eZepjFm3z0Dd2TZKbsPxMiRTFXurC04wJ58o/wPW9YHVO9VqZik3MfoPfrKlw==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-host-header@3.972.3': - resolution: {integrity: sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==} + resolution: + {integrity: sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-location-constraint@3.972.3': - resolution: {integrity: sha512-nIg64CVrsXp67vbK0U1/Is8rik3huS3QkRHn2DRDx4NldrEFMgdkZGI/+cZMKD9k4YOS110Dfu21KZLHrFA/1g==} + resolution: + {integrity: sha512-nIg64CVrsXp67vbK0U1/Is8rik3huS3QkRHn2DRDx4NldrEFMgdkZGI/+cZMKD9k4YOS110Dfu21KZLHrFA/1g==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-logger@3.972.3': - resolution: {integrity: sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==} + resolution: + {integrity: sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-recursion-detection@3.972.3': - resolution: {integrity: sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==} + resolution: + {integrity: sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-sdk-s3@3.972.6': - resolution: {integrity: sha512-Xq7wM6kbgJN1UO++8dvH/efPb1nTwWqFCpZCR7RCLOETP7xAUAhVo7JmsCnML5Di/iC4Oo5VrJ4QmkYcMZniLw==} + resolution: + {integrity: sha512-Xq7wM6kbgJN1UO++8dvH/efPb1nTwWqFCpZCR7RCLOETP7xAUAhVo7JmsCnML5Di/iC4Oo5VrJ4QmkYcMZniLw==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-ssec@3.972.3': - resolution: {integrity: sha512-dU6kDuULN3o3jEHcjm0c4zWJlY1zWVkjG9NPe9qxYLLpcbdj5kRYBS2DdWYD+1B9f910DezRuws7xDEqKkHQIg==} + resolution: + {integrity: sha512-dU6kDuULN3o3jEHcjm0c4zWJlY1zWVkjG9NPe9qxYLLpcbdj5kRYBS2DdWYD+1B9f910DezRuws7xDEqKkHQIg==} engines: {node: '>=20.0.0'} '@aws-sdk/middleware-user-agent@3.972.6': - resolution: {integrity: sha512-TehLN8W/kivl0U9HcS+keryElEWORROpghDXZBLfnb40DXM7hx/i+7OOjkogXQOF3QtUraJVRkHQ07bPhrWKlw==} + resolution: + {integrity: sha512-TehLN8W/kivl0U9HcS+keryElEWORROpghDXZBLfnb40DXM7hx/i+7OOjkogXQOF3QtUraJVRkHQ07bPhrWKlw==} engines: {node: '>=20.0.0'} '@aws-sdk/nested-clients@3.982.0': - resolution: {integrity: sha512-VVkaH27digrJfdVrT64rjkllvOp4oRiZuuJvrylLXAKl18ujToJR7AqpDldL/LS63RVne3QWIpkygIymxFtliQ==} + resolution: + {integrity: sha512-VVkaH27digrJfdVrT64rjkllvOp4oRiZuuJvrylLXAKl18ujToJR7AqpDldL/LS63RVne3QWIpkygIymxFtliQ==} engines: {node: '>=20.0.0'} '@aws-sdk/region-config-resolver@3.972.3': - resolution: {integrity: sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==} + resolution: + {integrity: sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==} engines: {node: '>=20.0.0'} '@aws-sdk/signature-v4-multi-region@3.983.0': - resolution: {integrity: sha512-11FCcxI/WKRufKDdPgKPXtrhjDArhkOPb4mf66rICZUnPHlD8Cb7cjZZS/eFC+iuwoHBosrxo0hYsvK3s7DxGw==} + resolution: + {integrity: sha512-11FCcxI/WKRufKDdPgKPXtrhjDArhkOPb4mf66rICZUnPHlD8Cb7cjZZS/eFC+iuwoHBosrxo0hYsvK3s7DxGw==} engines: {node: '>=20.0.0'} '@aws-sdk/token-providers@3.982.0': - resolution: {integrity: sha512-v3M0KYp2TVHYHNBT7jHD9lLTWAdS9CaWJ2jboRKt0WAB65bA7iUEpR+k4VqKYtpQN4+8kKSc4w+K6kUNZkHKQw==} + resolution: + {integrity: sha512-v3M0KYp2TVHYHNBT7jHD9lLTWAdS9CaWJ2jboRKt0WAB65bA7iUEpR+k4VqKYtpQN4+8kKSc4w+K6kUNZkHKQw==} engines: {node: '>=20.0.0'} '@aws-sdk/types@3.973.1': - resolution: {integrity: sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==} + resolution: + {integrity: sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==} engines: {node: '>=20.0.0'} '@aws-sdk/util-arn-parser@3.972.2': - resolution: {integrity: sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==} + resolution: + {integrity: sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==} engines: {node: '>=20.0.0'} '@aws-sdk/util-endpoints@3.982.0': - resolution: {integrity: sha512-M27u8FJP7O0Of9hMWX5dipp//8iglmV9jr7R8SR8RveU+Z50/8TqH68Tu6wUWBGMfXjzbVwn1INIAO5lZrlxXQ==} + resolution: + {integrity: sha512-M27u8FJP7O0Of9hMWX5dipp//8iglmV9jr7R8SR8RveU+Z50/8TqH68Tu6wUWBGMfXjzbVwn1INIAO5lZrlxXQ==} engines: {node: '>=20.0.0'} '@aws-sdk/util-endpoints@3.983.0': - resolution: {integrity: sha512-t/VbL2X3gvDEjC4gdySOeFFOZGQEBKwa23pRHeB7hBLBZ119BB/2OEFtTFWKyp3bnMQgxpeVeGS7/hxk6wpKJw==} + resolution: + {integrity: sha512-t/VbL2X3gvDEjC4gdySOeFFOZGQEBKwa23pRHeB7hBLBZ119BB/2OEFtTFWKyp3bnMQgxpeVeGS7/hxk6wpKJw==} engines: {node: '>=20.0.0'} '@aws-sdk/util-locate-window@3.893.0': - resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} + resolution: + {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} engines: {node: '>=18.0.0'} '@aws-sdk/util-user-agent-browser@3.972.3': - resolution: {integrity: sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==} + resolution: + {integrity: sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==} '@aws-sdk/util-user-agent-node@3.972.4': - resolution: {integrity: sha512-3WFCBLiM8QiHDfosQq3Py+lIMgWlFWwFQliUHUqwEiRqLnKyhgbU3AKa7AWJF7lW2Oc/2kFNY4MlAYVnVc0i8A==} + resolution: + {integrity: sha512-3WFCBLiM8QiHDfosQq3Py+lIMgWlFWwFQliUHUqwEiRqLnKyhgbU3AKa7AWJF7lW2Oc/2kFNY4MlAYVnVc0i8A==} engines: {node: '>=20.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1165,770 +1233,924 @@ packages: optional: true '@aws-sdk/xml-builder@3.972.4': - resolution: {integrity: sha512-0zJ05ANfYqI6+rGqj8samZBFod0dPPousBjLEqg8WdxSgbMAkRgLyn81lP215Do0rFJ/17LIXwr7q0yK24mP6Q==} + resolution: + {integrity: sha512-0zJ05ANfYqI6+rGqj8samZBFod0dPPousBjLEqg8WdxSgbMAkRgLyn81lP215Do0rFJ/17LIXwr7q0yK24mP6Q==} engines: {node: '>=20.0.0'} '@aws/lambda-invoke-store@0.2.3': - resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} + resolution: + {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + resolution: + {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} '@babel/code-frame@7.29.0': - resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + resolution: + {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} '@babel/compat-data@7.28.4': - resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + resolution: + {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} engines: {node: '>=6.9.0'} '@babel/core@7.27.4': - resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} + resolution: + {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} engines: {node: '>=6.9.0'} '@babel/eslint-parser@7.27.1': - resolution: {integrity: sha512-q8rjOuadH0V6Zo4XLMkJ3RMQ9MSBqwaDByyYB0izsYdaIWGNLmEblbCOf1vyFHICcg16CD7Fsi51vcQnYxmt6Q==} + resolution: + {integrity: sha512-q8rjOuadH0V6Zo4XLMkJ3RMQ9MSBqwaDByyYB0izsYdaIWGNLmEblbCOf1vyFHICcg16CD7Fsi51vcQnYxmt6Q==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 '@babel/eslint-plugin@7.27.1': - resolution: {integrity: sha512-vOG/EipZbIAcREK6XI4JRO3B3uZr70/KIhsrNLO9RXcgLMaW0sTsBpNeTpQUyelB0HsbWd45NIsuTgD3mqr/Og==} + resolution: + {integrity: sha512-vOG/EipZbIAcREK6XI4JRO3B3uZr70/KIhsrNLO9RXcgLMaW0sTsBpNeTpQUyelB0HsbWd45NIsuTgD3mqr/Og==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/eslint-parser': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 '@babel/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + resolution: + {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} '@babel/generator@7.29.1': - resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + resolution: + {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} + resolution: + {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + resolution: + {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} '@babel/helper-create-class-features-plugin@7.28.3': - resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + resolution: + {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-create-regexp-features-plugin@7.27.1': - resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + resolution: + {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-define-polyfill-provider@0.6.5': - resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} + resolution: + {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + resolution: + {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + resolution: + {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + resolution: + {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + resolution: + {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + resolution: + {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.27.1': - resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + resolution: + {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} '@babel/helper-plugin-utils@7.28.6': - resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} + resolution: + {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} '@babel/helper-remap-async-to-generator@7.27.1': - resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + resolution: + {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + resolution: + {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + resolution: + {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} engines: {node: '>=6.9.0'} '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + resolution: + {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + resolution: + {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} '@babel/helper-validator-identifier@7.28.5': - resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + resolution: + {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + resolution: + {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} '@babel/helper-wrap-function@7.28.3': - resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} + resolution: + {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} engines: {node: '>=6.9.0'} '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + resolution: + {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} '@babel/parser@7.28.4': - resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + resolution: + {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + resolution: + {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} engines: {node: '>=6.0.0'} hasBin: true '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': - resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + resolution: + {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': - resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + resolution: + {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': - resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + resolution: + {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': - resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + resolution: + {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': - resolution: {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} + resolution: + {integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + resolution: + {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-decorators@7.28.0': - resolution: {integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==} + resolution: + {integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-object-rest-spread@7.20.7': - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + resolution: + {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + resolution: + {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + resolution: + {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-decorators@7.27.1': - resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} + resolution: + {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-flow@7.27.1': - resolution: {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} + resolution: + {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-import-assertions@7.27.1': - resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + resolution: + {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-import-assertions@7.28.6': - resolution: {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} + resolution: + {integrity: sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-import-attributes@7.27.1': - resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + resolution: + {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + resolution: + {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + resolution: + {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-typescript@7.27.1': - resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + resolution: + {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + resolution: + {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-arrow-functions@7.27.1': - resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + resolution: + {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-async-generator-functions@7.28.0': - resolution: {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} + resolution: + {integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-async-to-generator@7.27.1': - resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + resolution: + {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-block-scoped-functions@7.27.1': - resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + resolution: + {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-block-scoping@7.28.4': - resolution: {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} + resolution: + {integrity: sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-class-properties@7.27.1': - resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + resolution: + {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-class-static-block@7.28.3': - resolution: {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} + resolution: + {integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 '@babel/plugin-transform-classes@7.28.4': - resolution: {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} + resolution: + {integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-computed-properties@7.27.1': - resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + resolution: + {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-destructuring@7.28.0': - resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} + resolution: + {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-dotall-regex@7.27.1': - resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + resolution: + {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-duplicate-keys@7.27.1': - resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + resolution: + {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + resolution: + {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-dynamic-import@7.27.1': - resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + resolution: + {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-explicit-resource-management@7.28.0': - resolution: {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} + resolution: + {integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-exponentiation-operator@7.27.1': - resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + resolution: + {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-export-namespace-from@7.27.1': - resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + resolution: + {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-flow-strip-types@7.27.1': - resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} + resolution: + {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-for-of@7.27.1': - resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + resolution: + {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-function-name@7.27.1': - resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + resolution: + {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-json-strings@7.27.1': - resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + resolution: + {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-literals@7.27.1': - resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + resolution: + {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-logical-assignment-operators@7.27.1': - resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + resolution: + {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-member-expression-literals@7.27.1': - resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + resolution: + {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-amd@7.27.1': - resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + resolution: + {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + resolution: + {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-systemjs@7.27.1': - resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + resolution: + {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-modules-umd@7.27.1': - resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + resolution: + {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': - resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + resolution: + {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-new-target@7.27.1': - resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + resolution: + {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': - resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + resolution: + {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-numeric-separator@7.27.1': - resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + resolution: + {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-object-rest-spread@7.28.4': - resolution: {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} + resolution: + {integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + resolution: + {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-optional-catch-binding@7.27.1': - resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + resolution: + {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + resolution: + {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-parameters@7.27.7': - resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} + resolution: + {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-private-methods@7.27.1': - resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + resolution: + {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-private-property-in-object@7.27.1': - resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + resolution: + {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-property-literals@7.27.1': - resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + resolution: + {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-display-name@7.27.1': - resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} + resolution: + {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx-self@7.27.1': - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + resolution: + {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx-source@7.27.1': - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + resolution: + {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + resolution: + {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-regenerator@7.28.4': - resolution: {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} + resolution: + {integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-regexp-modifiers@7.27.1': - resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + resolution: + {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/plugin-transform-reserved-words@7.27.1': - resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + resolution: + {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-runtime@7.28.3': - resolution: {integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==} + resolution: + {integrity: sha512-Y6ab1kGqZ0u42Zv/4a7l0l72n9DKP/MKoKWaUSBylrhNZO2prYuqFOLbn5aW5SIFXwSH93yfjbgllL8lxuGKLg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-shorthand-properties@7.27.1': - resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + resolution: + {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-spread@7.27.1': - resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + resolution: + {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-sticky-regex@7.27.1': - resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + resolution: + {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-template-literals@7.27.1': - resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + resolution: + {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-typeof-symbol@7.27.1': - resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + resolution: + {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-typescript@7.28.0': - resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + resolution: + {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-escapes@7.27.1': - resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + resolution: + {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-property-regex@7.27.1': - resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + resolution: + {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-regex@7.27.1': - resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + resolution: + {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/plugin-transform-unicode-sets-regex@7.27.1': - resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + resolution: + {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 '@babel/preset-env@7.28.3': - resolution: {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} + resolution: + {integrity: sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + resolution: + {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 '@babel/preset-typescript@7.27.1': - resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + resolution: + {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + resolution: + {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + resolution: + {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} '@babel/template@7.28.6': - resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + resolution: + {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} '@babel/traverse@7.28.4': - resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + resolution: + {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} '@babel/traverse@7.29.0': - resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + resolution: + {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} '@babel/types@7.28.4': - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + resolution: + {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} '@babel/types@7.29.0': - resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + resolution: + {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} '@bugsnag/browser@8.6.0': - resolution: {integrity: sha512-7UGqTGnQqXUQ09gOlWbDTFUSbeLIIrP+hML3kTOq8Zdc8nP/iuOEflXGLV2TxWBWW8xIUPc928caFPr9EcaDuw==} + resolution: + {integrity: sha512-7UGqTGnQqXUQ09gOlWbDTFUSbeLIIrP+hML3kTOq8Zdc8nP/iuOEflXGLV2TxWBWW8xIUPc928caFPr9EcaDuw==} '@bugsnag/core@8.6.0': - resolution: {integrity: sha512-94Jo443JegaiKV8z8NXMFdyTGubiUnwppWhq3kG2ldlYKtEvrmIaO5+JA58B6oveySvoRu3cCe2W9ysY7G7mDw==} + resolution: + {integrity: sha512-94Jo443JegaiKV8z8NXMFdyTGubiUnwppWhq3kG2ldlYKtEvrmIaO5+JA58B6oveySvoRu3cCe2W9ysY7G7mDw==} '@bugsnag/cuid@3.2.1': - resolution: {integrity: sha512-zpvN8xQ5rdRWakMd/BcVkdn2F8HKlDSbM3l7duueK590WmI1T0ObTLc1V/1e55r14WNjPd5AJTYX4yPEAFVi+Q==} + resolution: + {integrity: sha512-zpvN8xQ5rdRWakMd/BcVkdn2F8HKlDSbM3l7duueK590WmI1T0ObTLc1V/1e55r14WNjPd5AJTYX4yPEAFVi+Q==} '@bugsnag/js@8.6.0': - resolution: {integrity: sha512-U+ofNTTMA2Z6tCrOhK/QhHBhLoQHoalk8Y82WWc7FAcVSoJZYadND/QuXUriNRZpC4YgJ/s/AxPeQ2y+WvMxzw==} + resolution: + {integrity: sha512-U+ofNTTMA2Z6tCrOhK/QhHBhLoQHoalk8Y82WWc7FAcVSoJZYadND/QuXUriNRZpC4YgJ/s/AxPeQ2y+WvMxzw==} '@bugsnag/node@8.6.0': - resolution: {integrity: sha512-O91sELo6zBjflVeP3roRC9l68iYaafVs5lz2N0FDkrT08mP2UljtNWpjjoR/0h1so5Ny1OxHgnZ1IrsXhz5SMQ==} + resolution: + {integrity: sha512-O91sELo6zBjflVeP3roRC9l68iYaafVs5lz2N0FDkrT08mP2UljtNWpjjoR/0h1so5Ny1OxHgnZ1IrsXhz5SMQ==} '@bugsnag/safe-json-stringify@6.0.0': - resolution: {integrity: sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==} + resolution: + {integrity: sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==} '@bugsnag/source-maps@2.3.3': - resolution: {integrity: sha512-DCCXhiY1CdCy3Eo6SS/qHnBuyrXY0jyefsJBpXemwI5eXEAR0KrhnhxbGU7Ga/8ysssD1A22J5488BYH1t4pgQ==} + resolution: + {integrity: sha512-DCCXhiY1CdCy3Eo6SS/qHnBuyrXY0jyefsJBpXemwI5eXEAR0KrhnhxbGU7Ga/8ysssD1A22J5488BYH1t4pgQ==} hasBin: true '@bundled-es-modules/cookie@2.0.1': - resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} + resolution: + {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} '@bundled-es-modules/statuses@1.0.1': - resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + resolution: + {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} '@bundled-es-modules/tough-cookie@0.1.6': - resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + resolution: + {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} '@changesets/apply-release-plan@7.0.13': - resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} + resolution: + {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} '@changesets/assemble-release-plan@6.0.9': - resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + resolution: + {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} '@changesets/changelog-git@0.2.1': - resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + resolution: + {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} '@changesets/cli@2.29.7': - resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} + resolution: + {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} hasBin: true '@changesets/config@3.1.1': - resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + resolution: + {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + resolution: + {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} '@changesets/get-dependents-graph@2.1.3': - resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + resolution: + {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} '@changesets/get-release-plan@4.0.13': - resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} + resolution: + {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + resolution: + {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} '@changesets/git@3.0.4': - resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + resolution: + {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} '@changesets/logger@0.1.1': - resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + resolution: + {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} '@changesets/parse@0.4.1': - resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + resolution: + {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} '@changesets/pre@2.0.2': - resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + resolution: + {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} '@changesets/read@0.6.5': - resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} + resolution: + {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} '@changesets/should-skip-package@0.1.2': - resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + resolution: + {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + resolution: + {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} '@changesets/types@6.1.0': - resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + resolution: + {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} '@changesets/write@0.4.0': - resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + resolution: + {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + resolution: + {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + resolution: + {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} '@cucumber/ci-environment@10.0.1': - resolution: {integrity: sha512-/+ooDMPtKSmvcPMDYnMZt4LuoipfFfHaYspStI4shqw8FyKcfQAmekz6G+QKWjQQrvM+7Hkljwx58MEwPCwwzg==} + resolution: + {integrity: sha512-/+ooDMPtKSmvcPMDYnMZt4LuoipfFfHaYspStI4shqw8FyKcfQAmekz6G+QKWjQQrvM+7Hkljwx58MEwPCwwzg==} '@cucumber/cucumber-expressions@18.0.1': - resolution: {integrity: sha512-NSid6bI+7UlgMywl5octojY5NXnxR9uq+JisjOrO52VbFsQM6gTWuQFE8syI10KnIBEdPzuEUSVEeZ0VFzRnZA==} + resolution: + {integrity: sha512-NSid6bI+7UlgMywl5octojY5NXnxR9uq+JisjOrO52VbFsQM6gTWuQFE8syI10KnIBEdPzuEUSVEeZ0VFzRnZA==} '@cucumber/cucumber@12.2.0': - resolution: {integrity: sha512-b7W4snvXYi1T2puUjxamASCCNhNzVSzb/fQUuGSkdjm/AFfJ24jo8kOHQyOcaoArCG71sVQci4vkZaITzl/V1w==} + resolution: + {integrity: sha512-b7W4snvXYi1T2puUjxamASCCNhNzVSzb/fQUuGSkdjm/AFfJ24jo8kOHQyOcaoArCG71sVQci4vkZaITzl/V1w==} engines: {node: 20 || 22 || >=24} hasBin: true '@cucumber/gherkin-streams@5.0.1': - resolution: {integrity: sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==} + resolution: + {integrity: sha512-/7VkIE/ASxIP/jd4Crlp4JHXqdNFxPGQokqWqsaCCiqBiu5qHoKMxcWNlp9njVL/n9yN4S08OmY3ZR8uC5x74Q==} hasBin: true peerDependencies: '@cucumber/gherkin': '>=22.0.0' @@ -1936,456 +2158,543 @@ packages: '@cucumber/messages': '>=17.1.1' '@cucumber/gherkin-utils@9.2.0': - resolution: {integrity: sha512-3nmRbG1bUAZP3fAaUBNmqWO0z0OSkykZZotfLjyhc8KWwDSOrOmMJlBTd474lpA8EWh4JFLAX3iXgynBqBvKzw==} + resolution: + {integrity: sha512-3nmRbG1bUAZP3fAaUBNmqWO0z0OSkykZZotfLjyhc8KWwDSOrOmMJlBTd474lpA8EWh4JFLAX3iXgynBqBvKzw==} hasBin: true '@cucumber/gherkin@31.0.0': - resolution: {integrity: sha512-wlZfdPif7JpBWJdqvHk1Mkr21L5vl4EfxVUOS4JinWGf3FLRV6IKUekBv5bb5VX79fkDcfDvESzcQ8WQc07Wgw==} + resolution: + {integrity: sha512-wlZfdPif7JpBWJdqvHk1Mkr21L5vl4EfxVUOS4JinWGf3FLRV6IKUekBv5bb5VX79fkDcfDvESzcQ8WQc07Wgw==} '@cucumber/gherkin@34.0.0': - resolution: {integrity: sha512-659CCFsrsyvuBi/Eix1fnhSheMnojSfnBcqJ3IMPNawx7JlrNJDcXYSSdxcUw3n/nG05P+ptCjmiZY3i14p+tA==} + resolution: + {integrity: sha512-659CCFsrsyvuBi/Eix1fnhSheMnojSfnBcqJ3IMPNawx7JlrNJDcXYSSdxcUw3n/nG05P+ptCjmiZY3i14p+tA==} '@cucumber/html-formatter@21.14.0': - resolution: {integrity: sha512-vQqbmQZc0QiN4c+cMCffCItpODJlOlYtPG7pH6We096dBOa7u0ttDMjT6KrMAnQlcln54rHL46r408IFpuznAw==} + resolution: + {integrity: sha512-vQqbmQZc0QiN4c+cMCffCItpODJlOlYtPG7pH6We096dBOa7u0ttDMjT6KrMAnQlcln54rHL46r408IFpuznAw==} peerDependencies: '@cucumber/messages': '>=18' '@cucumber/junit-xml-formatter@0.8.1': - resolution: {integrity: sha512-FT1Y96pyd9/ifbE9I7dbkTCjkwEdW9C0MBobUZoKD13c8EnWAt0xl1Yy/v/WZLTk4XfCLte1DATtLx01jt+YiA==} + resolution: + {integrity: sha512-FT1Y96pyd9/ifbE9I7dbkTCjkwEdW9C0MBobUZoKD13c8EnWAt0xl1Yy/v/WZLTk4XfCLte1DATtLx01jt+YiA==} peerDependencies: '@cucumber/messages': '*' '@cucumber/message-streams@4.0.1': - resolution: {integrity: sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==} + resolution: + {integrity: sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA==} peerDependencies: '@cucumber/messages': '>=17.1.1' '@cucumber/messages@22.0.0': - resolution: {integrity: sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==} + resolution: + {integrity: sha512-EuaUtYte9ilkxcKmfqGF9pJsHRUU0jwie5ukuZ/1NPTuHS1LxHPsGEODK17RPRbZHOFhqybNzG2rHAwThxEymg==} '@cucumber/messages@27.2.0': - resolution: {integrity: sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==} + resolution: + {integrity: sha512-f2o/HqKHgsqzFLdq6fAhfG1FNOQPdBdyMGpKwhb7hZqg0yZtx9BVqkTyuoNk83Fcvk3wjMVfouFXXHNEk4nddA==} '@cucumber/messages@28.1.0': - resolution: {integrity: sha512-2LzZtOwYKNlCuNf31ajkrekoy2M4z0Z1QGiPH40n4gf5t8VOUFb7m1ojtR4LmGvZxBGvJZP8voOmRqDWzBzYKA==} + resolution: + {integrity: sha512-2LzZtOwYKNlCuNf31ajkrekoy2M4z0Z1QGiPH40n4gf5t8VOUFb7m1ojtR4LmGvZxBGvJZP8voOmRqDWzBzYKA==} '@cucumber/messages@30.1.0': - resolution: {integrity: sha512-KxnsSjHz9EGF23GeZc3BRMK2+bagt2p87mwwNfisBK7BfuyvnXJumyBQJJN4xv5SLSzBKxH3FsZnuOf8LwsHhg==} + resolution: + {integrity: sha512-KxnsSjHz9EGF23GeZc3BRMK2+bagt2p87mwwNfisBK7BfuyvnXJumyBQJJN4xv5SLSzBKxH3FsZnuOf8LwsHhg==} '@cucumber/pretty-formatter@1.0.1': - resolution: {integrity: sha512-A1lU4VVP0aUWdOTmpdzvXOyEYuPtBDI0xYwYJnmoMDplzxMdhcHk86lyyvYDoMoPzzq6OkOE3isuosvUU4X7IQ==} + resolution: + {integrity: sha512-A1lU4VVP0aUWdOTmpdzvXOyEYuPtBDI0xYwYJnmoMDplzxMdhcHk86lyyvYDoMoPzzq6OkOE3isuosvUU4X7IQ==} peerDependencies: '@cucumber/cucumber': '>=7.0.0' '@cucumber/messages': '*' '@cucumber/pretty-formatter@2.4.1': - resolution: {integrity: sha512-HomNZWTO7CqP44PNHOtguPqpHteIKzxyZNjFiuWKUXJ+DDTwLcdlBY2gIuP4BxEt9Q5AMu4ahde2Syo1elmTJQ==} + resolution: + {integrity: sha512-HomNZWTO7CqP44PNHOtguPqpHteIKzxyZNjFiuWKUXJ+DDTwLcdlBY2gIuP4BxEt9Q5AMu4ahde2Syo1elmTJQ==} peerDependencies: '@cucumber/messages': '*' '@cucumber/query@13.6.0': - resolution: {integrity: sha512-tiDneuD5MoWsJ9VKPBmQok31mSX9Ybl+U4wqDoXeZgsXHDURqzM3rnpWVV3bC34y9W6vuFxrlwF/m7HdOxwqRw==} + resolution: + {integrity: sha512-tiDneuD5MoWsJ9VKPBmQok31mSX9Ybl+U4wqDoXeZgsXHDURqzM3rnpWVV3bC34y9W6vuFxrlwF/m7HdOxwqRw==} peerDependencies: '@cucumber/messages': '*' '@cucumber/query@14.6.0': - resolution: {integrity: sha512-bPbfpkDsFCBn95erh3un76QViPqGAo3T7iYews0yA3/JRNoV009s7acxxY+f+OMABPFl0TJVIZlvqX+KayQ+Eg==} + resolution: + {integrity: sha512-bPbfpkDsFCBn95erh3un76QViPqGAo3T7iYews0yA3/JRNoV009s7acxxY+f+OMABPFl0TJVIZlvqX+KayQ+Eg==} peerDependencies: '@cucumber/messages': '*' '@cucumber/tag-expressions@6.2.0': - resolution: {integrity: sha512-KIF0eLcafHbWOuSDWFw0lMmgJOLdDRWjEL1kfXEWrqHmx2119HxVAr35WuEd9z542d3Yyg+XNqSr+81rIKqEdg==} + resolution: + {integrity: sha512-KIF0eLcafHbWOuSDWFw0lMmgJOLdDRWjEL1kfXEWrqHmx2119HxVAr35WuEd9z542d3Yyg+XNqSr+81rIKqEdg==} '@emnapi/core@1.8.1': - resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + resolution: + {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} '@emnapi/runtime@1.8.1': - resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + resolution: + {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + resolution: + {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} '@envelop/core@5.2.3': - resolution: {integrity: sha512-KfoGlYD/XXQSc3BkM1/k15+JQbkQ4ateHazeZoWl9P71FsLTDXSjGy6j7QqfhpIDSbxNISqhPMfZHYSbDFOofQ==} + resolution: + {integrity: sha512-KfoGlYD/XXQSc3BkM1/k15+JQbkQ4ateHazeZoWl9P71FsLTDXSjGy6j7QqfhpIDSbxNISqhPMfZHYSbDFOofQ==} engines: {node: '>=18.0.0'} '@envelop/core@5.5.0': - resolution: {integrity: sha512-nsU1EyJQAStaKHR1ZkB/ug9XBm+WPTliYtdedbJ/L1ykrp7dbbn0srqBeDnZ2mbZVp4hH3d0Fy+Og9OgPWZx+g==} + resolution: + {integrity: sha512-nsU1EyJQAStaKHR1ZkB/ug9XBm+WPTliYtdedbJ/L1ykrp7dbbn0srqBeDnZ2mbZVp4hH3d0Fy+Og9OgPWZx+g==} engines: {node: '>=18.0.0'} '@envelop/instrumentation@1.0.0': - resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} + resolution: + {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} engines: {node: '>=18.0.0'} '@envelop/types@5.2.1': - resolution: {integrity: sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg==} + resolution: + {integrity: sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg==} engines: {node: '>=18.0.0'} '@es-joy/jsdoccomment@0.46.0': - resolution: {integrity: sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==} + resolution: + {integrity: sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==} engines: {node: '>=16'} '@esbuild/aix-ppc64@0.25.12': - resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} + resolution: + {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.27.2': - resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} + resolution: + {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.25.12': - resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} + resolution: + {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.27.2': - resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} + resolution: + {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm@0.25.12': - resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + resolution: + {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-arm@0.27.2': - resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} + resolution: + {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-x64@0.25.12': - resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + resolution: + {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/android-x64@0.27.2': - resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} + resolution: + {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.25.12': - resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + resolution: + {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.27.2': - resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} + resolution: + {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.25.12': - resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + resolution: + {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.27.2': - resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} + resolution: + {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.25.12': - resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} + resolution: + {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.27.2': - resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} + resolution: + {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.25.12': - resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + resolution: + {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.27.2': - resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} + resolution: + {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.25.12': - resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} + resolution: + {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.27.2': - resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} + resolution: + {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.25.12': - resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} + resolution: + {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.27.2': - resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} + resolution: + {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.25.12': - resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} + resolution: + {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.27.2': - resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} + resolution: + {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.25.12': - resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + resolution: + {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.27.2': - resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} + resolution: + {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.25.12': - resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + resolution: + {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.27.2': - resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} + resolution: + {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.25.12': - resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} + resolution: + {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.27.2': - resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} + resolution: + {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.25.12': - resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} + resolution: + {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.27.2': - resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} + resolution: + {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.25.12': - resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + resolution: + {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.27.2': - resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} + resolution: + {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.25.12': - resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} + resolution: + {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.27.2': - resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} + resolution: + {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/netbsd-arm64@0.25.12': - resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} + resolution: + {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-arm64@0.27.2': - resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} + resolution: + {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.25.12': - resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} + resolution: + {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.27.2': - resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} + resolution: + {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/openbsd-arm64@0.25.12': - resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + resolution: + {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-arm64@0.27.2': - resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} + resolution: + {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.25.12': - resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + resolution: + {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.27.2': - resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} + resolution: + {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openharmony-arm64@0.25.12': - resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + resolution: + {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/openharmony-arm64@0.27.2': - resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} + resolution: + {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] '@esbuild/sunos-x64@0.25.12': - resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + resolution: + {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.27.2': - resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} + resolution: + {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.25.12': - resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} + resolution: + {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.27.2': - resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} + resolution: + {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.25.12': - resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + resolution: + {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.27.2': - resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} + resolution: + {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.25.12': - resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + resolution: + {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.27.2': - resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} + resolution: + {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + resolution: + {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + resolution: + {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + resolution: + {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + resolution: + {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + resolution: + {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} '@fastify/busboy@3.1.1': - resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} + resolution: + {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} '@fastify/busboy@3.2.0': - resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} + resolution: + {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} '@gerrit0/mini-shiki@1.27.2': - resolution: {integrity: sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==} + resolution: + {integrity: sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og==} '@graphql-codegen/add@3.2.3': - resolution: {integrity: sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ==} + resolution: + {integrity: sha512-sQOnWpMko4JLeykwyjFTxnhqjd/3NOG2OyMuvK76Wnnwh8DRrNf2VEs2kmSvLl7MndMlOj7Kh5U154dVcvhmKQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/add@5.0.3': - resolution: {integrity: sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==} + resolution: + {integrity: sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/add@6.0.0': - resolution: {integrity: sha512-biFdaURX0KTwEJPQ1wkT6BRgNasqgQ5KbCI1a3zwtLtO7XTo7/vKITPylmiU27K5DSOWYnY/1jfSqUAEBuhZrQ==} + resolution: + {integrity: sha512-biFdaURX0KTwEJPQ1wkT6BRgNasqgQ5KbCI1a3zwtLtO7XTo7/vKITPylmiU27K5DSOWYnY/1jfSqUAEBuhZrQ==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/cli@5.0.4': - resolution: {integrity: sha512-vPO1mCtrttFVy8mPR+jMAvsYTv8E/7payIPaneeGE15mQjyvQXXsHoAg06Qpf6tykOdCwKVLWre0Mf6g0KBwUg==} + resolution: + {integrity: sha512-vPO1mCtrttFVy8mPR+jMAvsYTv8E/7payIPaneeGE15mQjyvQXXsHoAg06Qpf6tykOdCwKVLWre0Mf6g0KBwUg==} engines: {node: '>=16'} hasBin: true peerDependencies: @@ -2396,7 +2705,8 @@ packages: optional: true '@graphql-codegen/cli@6.0.1': - resolution: {integrity: sha512-6iP91joxb7phdicDrIF8Cv9ah2QpPVXUUu7rbOaQKvqey+QKYmHcxGCi9r5/7p4lUiHZPQvfB7xDHURHQca1SA==} + resolution: + {integrity: sha512-6iP91joxb7phdicDrIF8Cv9ah2QpPVXUUu7rbOaQKvqey+QKYmHcxGCi9r5/7p4lUiHZPQvfB7xDHURHQca1SA==} engines: {node: '>=16'} hasBin: true peerDependencies: @@ -2407,7 +2717,8 @@ packages: optional: true '@graphql-codegen/client-preset@4.8.3': - resolution: {integrity: sha512-QpEsPSO9fnRxA6Z66AmBuGcwHjZ6dYSxYo5ycMlYgSPzAbyG8gn/kWljofjJfWqSY+T/lRn+r8IXTH14ml24vQ==} + resolution: + {integrity: sha512-QpEsPSO9fnRxA6Z66AmBuGcwHjZ6dYSxYo5ycMlYgSPzAbyG8gn/kWljofjJfWqSY+T/lRn+r8IXTH14ml24vQ==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -2417,7 +2728,8 @@ packages: optional: true '@graphql-codegen/client-preset@5.1.1': - resolution: {integrity: sha512-d7a4KdZJBOPt/O55JneBz9WwvpWar/P5yyxfjZvvoRErXPRsWtswLp+CBKKPkRcEIz9MXfTdQ1GL3kQg16DLfg==} + resolution: + {integrity: sha512-d7a4KdZJBOPt/O55JneBz9WwvpWar/P5yyxfjZvvoRErXPRsWtswLp+CBKKPkRcEIz9MXfTdQ1GL3kQg16DLfg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -2427,82 +2739,96 @@ packages: optional: true '@graphql-codegen/core@4.0.2': - resolution: {integrity: sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==} + resolution: + {integrity: sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/core@5.0.0': - resolution: {integrity: sha512-vLTEW0m8LbE4xgRwbFwCdYxVkJ1dBlVJbQyLb9Q7bHnVFgHAP982Xo8Uv7FuPBmON+2IbTjkCqhFLHVZbqpvjQ==} + resolution: + {integrity: sha512-vLTEW0m8LbE4xgRwbFwCdYxVkJ1dBlVJbQyLb9Q7bHnVFgHAP982Xo8Uv7FuPBmON+2IbTjkCqhFLHVZbqpvjQ==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/gql-tag-operations@4.0.17': - resolution: {integrity: sha512-2pnvPdIG6W9OuxkrEZ6hvZd142+O3B13lvhrZ48yyEBh2ujtmKokw0eTwDHtlXUqjVS0I3q7+HB2y12G/m69CA==} + resolution: + {integrity: sha512-2pnvPdIG6W9OuxkrEZ6hvZd142+O3B13lvhrZ48yyEBh2ujtmKokw0eTwDHtlXUqjVS0I3q7+HB2y12G/m69CA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/gql-tag-operations@5.0.3': - resolution: {integrity: sha512-G6YqeDMMuwMvAtlW+MUaQDoYgQtBuBrfp89IOSnj7YXqSc/TMOma3X5XeXM4/oeNDQyfm2A66j5H8DYf04mJZg==} + resolution: + {integrity: sha512-G6YqeDMMuwMvAtlW+MUaQDoYgQtBuBrfp89IOSnj7YXqSc/TMOma3X5XeXM4/oeNDQyfm2A66j5H8DYf04mJZg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/near-operation-file-preset@3.1.0': - resolution: {integrity: sha512-sXIIi0BPP3IcARdzSztpE51oJTcGB67hi7ddBYfLinks/R/5aFG1Ry/J61707Kt+6Q5WhTnf5XAQUAqi6200yA==} + resolution: + {integrity: sha512-sXIIi0BPP3IcARdzSztpE51oJTcGB67hi7ddBYfLinks/R/5aFG1Ry/J61707Kt+6Q5WhTnf5XAQUAqi6200yA==} engines: {node: '>= 16.0.0'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/plugin-helpers@3.1.2': - resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} + resolution: + {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/plugin-helpers@5.1.0': - resolution: {integrity: sha512-Y7cwEAkprbTKzVIe436TIw4w03jorsMruvCvu0HJkavaKMQbWY+lQ1RIuROgszDbxAyM35twB5/sUvYG5oW+yg==} + resolution: + {integrity: sha512-Y7cwEAkprbTKzVIe436TIw4w03jorsMruvCvu0HJkavaKMQbWY+lQ1RIuROgszDbxAyM35twB5/sUvYG5oW+yg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/plugin-helpers@5.1.1': - resolution: {integrity: sha512-28GHODK2HY1NhdyRcPP3sCz0Kqxyfiz7boIZ8qIxFYmpLYnlDgiYok5fhFLVSZihyOpCs4Fa37gVHf/Q4I2FEg==} + resolution: + {integrity: sha512-28GHODK2HY1NhdyRcPP3sCz0Kqxyfiz7boIZ8qIxFYmpLYnlDgiYok5fhFLVSZihyOpCs4Fa37gVHf/Q4I2FEg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/plugin-helpers@6.0.0': - resolution: {integrity: sha512-Z7P89vViJvQakRyMbq/JF2iPLruRFOwOB6IXsuSvV/BptuuEd7fsGPuEf8bdjjDxUY0pJZnFN8oC7jIQ8p9GKA==} + resolution: + {integrity: sha512-Z7P89vViJvQakRyMbq/JF2iPLruRFOwOB6IXsuSvV/BptuuEd7fsGPuEf8bdjjDxUY0pJZnFN8oC7jIQ8p9GKA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/schema-ast@4.1.0': - resolution: {integrity: sha512-kZVn0z+th9SvqxfKYgztA6PM7mhnSZaj4fiuBWvMTqA+QqQ9BBed6Pz41KuD/jr0gJtnlr2A4++/0VlpVbCTmQ==} + resolution: + {integrity: sha512-kZVn0z+th9SvqxfKYgztA6PM7mhnSZaj4fiuBWvMTqA+QqQ9BBed6Pz41KuD/jr0gJtnlr2A4++/0VlpVbCTmQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/schema-ast@5.0.0': - resolution: {integrity: sha512-jn7Q3PKQc0FxXjbpo9trxzlz/GSFQWxL042l0iC8iSbM/Ar+M7uyBwMtXPsev/3Razk+osQyreghIz0d2+6F7Q==} + resolution: + {integrity: sha512-jn7Q3PKQc0FxXjbpo9trxzlz/GSFQWxL042l0iC8iSbM/Ar+M7uyBwMtXPsev/3Razk+osQyreghIz0d2+6F7Q==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/typed-document-node@5.1.2': - resolution: {integrity: sha512-jaxfViDqFRbNQmfKwUY8hDyjnLTw2Z7DhGutxoOiiAI0gE/LfPe0LYaVFKVmVOOD7M3bWxoWfu4slrkbWbUbEw==} + resolution: + {integrity: sha512-jaxfViDqFRbNQmfKwUY8hDyjnLTw2Z7DhGutxoOiiAI0gE/LfPe0LYaVFKVmVOOD7M3bWxoWfu4slrkbWbUbEw==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/typed-document-node@6.1.0': - resolution: {integrity: sha512-8YfZ+anIdfE4CAJG0nQFNNvTiqj5gNXoVIe4EhWIjf2joXziF1JIUlE1RIpasRMTHvLlQhWZoq4760l751XzbA==} + resolution: + {integrity: sha512-8YfZ+anIdfE4CAJG0nQFNNvTiqj5gNXoVIe4EhWIjf2joXziF1JIUlE1RIpasRMTHvLlQhWZoq4760l751XzbA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/typescript-operations@4.6.1': - resolution: {integrity: sha512-k92laxhih7s0WZ8j5WMIbgKwhe64C0As6x+PdcvgZFMudDJ7rPJ/hFqJ9DCRxNjXoHmSjnr6VUuQZq4lT1RzCA==} + resolution: + {integrity: sha512-k92laxhih7s0WZ8j5WMIbgKwhe64C0As6x+PdcvgZFMudDJ7rPJ/hFqJ9DCRxNjXoHmSjnr6VUuQZq4lT1RzCA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -2512,7 +2838,8 @@ packages: optional: true '@graphql-codegen/typescript-operations@5.0.2': - resolution: {integrity: sha512-i2nSJ5a65H+JgXwWvEuYehVYUImIvrHk3PTs+Fcj+OjZFvDl2qBziIhr6shCjV0KH9IZ6Y+1v4TzkxZr/+XFjA==} + resolution: + {integrity: sha512-i2nSJ5a65H+JgXwWvEuYehVYUImIvrHk3PTs+Fcj+OjZFvDl2qBziIhr6shCjV0KH9IZ6Y+1v4TzkxZr/+XFjA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -2522,344 +2849,404 @@ packages: optional: true '@graphql-codegen/typescript@4.1.6': - resolution: {integrity: sha512-vpw3sfwf9A7S+kIUjyFxuvrywGxd4lmwmyYnnDVjVE4kSQ6Td3DpqaPTy8aNQ6O96vFoi/bxbZS2BW49PwSUUA==} + resolution: + {integrity: sha512-vpw3sfwf9A7S+kIUjyFxuvrywGxd4lmwmyYnnDVjVE4kSQ6Td3DpqaPTy8aNQ6O96vFoi/bxbZS2BW49PwSUUA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/typescript@5.0.2': - resolution: {integrity: sha512-OJYXpS9SRf4VFzqu3ZH/RmTftGhAVTCmscH63iPlvTlCT8NBmpSHdZ875AEa38LugdL8XgUcGsI3pprP3e5j/w==} + resolution: + {integrity: sha512-OJYXpS9SRf4VFzqu3ZH/RmTftGhAVTCmscH63iPlvTlCT8NBmpSHdZ875AEa38LugdL8XgUcGsI3pprP3e5j/w==} engines: {node: '>=16'} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/visitor-plugin-common@2.13.8': - resolution: {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} + resolution: + {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/visitor-plugin-common@5.8.0': - resolution: {integrity: sha512-lC1E1Kmuzi3WZUlYlqB4fP6+CvbKH9J+haU1iWmgsBx5/sO2ROeXJG4Dmt8gP03bI2BwjiwV5WxCEMlyeuzLnA==} + resolution: + {integrity: sha512-lC1E1Kmuzi3WZUlYlqB4fP6+CvbKH9J+haU1iWmgsBx5/sO2ROeXJG4Dmt8gP03bI2BwjiwV5WxCEMlyeuzLnA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-codegen/visitor-plugin-common@6.1.0': - resolution: {integrity: sha512-AvGO1pe+b/kAa7+WBDlNDXOruRZWv/NnhLHgTggiW2XWRv33biuzg4cF1UTdpR2jmESZzJU4kXngLLX8RYJWLA==} + resolution: + {integrity: sha512-AvGO1pe+b/kAa7+WBDlNDXOruRZWv/NnhLHgTggiW2XWRv33biuzg4cF1UTdpR2jmESZzJU4kXngLLX8RYJWLA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 '@graphql-hive/signal@1.0.0': - resolution: {integrity: sha512-RiwLMc89lTjvyLEivZ/qxAC5nBHoS2CtsWFSOsN35sxG9zoo5Z+JsFHM8MlvmO9yt+MJNIyC5MLE1rsbOphlag==} + resolution: + {integrity: sha512-RiwLMc89lTjvyLEivZ/qxAC5nBHoS2CtsWFSOsN35sxG9zoo5Z+JsFHM8MlvmO9yt+MJNIyC5MLE1rsbOphlag==} engines: {node: '>=18.0.0'} '@graphql-tools/apollo-engine-loader@8.0.20': - resolution: {integrity: sha512-m5k9nXSyjq31yNsEqDXLyykEjjn3K3Mo73oOKI+Xjy8cpnsgbT4myeUJIYYQdLrp7fr9Y9p7ZgwT5YcnwmnAbA==} + resolution: + {integrity: sha512-m5k9nXSyjq31yNsEqDXLyykEjjn3K3Mo73oOKI+Xjy8cpnsgbT4myeUJIYYQdLrp7fr9Y9p7ZgwT5YcnwmnAbA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/apollo-engine-loader@8.0.28': - resolution: {integrity: sha512-MzgDrUuoxp6dZeo54zLBL3cEJKJtM3N/2RqK0rbPxPq5X2z6TUA7EGg8vIFTUkt5xelAsUrm8/4ai41ZDdxOng==} + resolution: + {integrity: sha512-MzgDrUuoxp6dZeo54zLBL3cEJKJtM3N/2RqK0rbPxPq5X2z6TUA7EGg8vIFTUkt5xelAsUrm8/4ai41ZDdxOng==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/batch-execute@9.0.16': - resolution: {integrity: sha512-sLAzEPrmrMTJrlNqmmsc34DtMA//FsoTsGC3V5bHA+EnNlwbwhsSQBSNXvIwsPLRSRwSjGKOpDG7KSxldDe2Rg==} + resolution: + {integrity: sha512-sLAzEPrmrMTJrlNqmmsc34DtMA//FsoTsGC3V5bHA+EnNlwbwhsSQBSNXvIwsPLRSRwSjGKOpDG7KSxldDe2Rg==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/batch-execute@9.0.19': - resolution: {integrity: sha512-VGamgY4PLzSx48IHPoblRw0oTaBa7S26RpZXt0Y4NN90ytoE0LutlpB2484RbkfcTjv9wa64QD474+YP1kEgGA==} + resolution: + {integrity: sha512-VGamgY4PLzSx48IHPoblRw0oTaBa7S26RpZXt0Y4NN90ytoE0LutlpB2484RbkfcTjv9wa64QD474+YP1kEgGA==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/code-file-loader@8.1.20': - resolution: {integrity: sha512-GzIbjjWJIc04KWnEr8VKuPe0FA2vDTlkaeub5p4lLimljnJ6C0QSkOyCUnFmsB9jetQcHm0Wfmn/akMnFUG+wA==} + resolution: + {integrity: sha512-GzIbjjWJIc04KWnEr8VKuPe0FA2vDTlkaeub5p4lLimljnJ6C0QSkOyCUnFmsB9jetQcHm0Wfmn/akMnFUG+wA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/code-file-loader@8.1.28': - resolution: {integrity: sha512-BL3Ft/PFlXDE5nNuqA36hYci7Cx+8bDrPDc8X3VSpZy9iKFBY+oQ+IwqnEHCkt8OSp2n2V0gqTg4u3fcQP1Kwg==} + resolution: + {integrity: sha512-BL3Ft/PFlXDE5nNuqA36hYci7Cx+8bDrPDc8X3VSpZy9iKFBY+oQ+IwqnEHCkt8OSp2n2V0gqTg4u3fcQP1Kwg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/delegate@10.2.18': - resolution: {integrity: sha512-UynhjLwBZUapjNSHJ7FhGMd7/sRjqB7nk6EcYDZFWQkACTaQKa14Vkv2y2O6rEu61xQxP3/E1+fr/mLn46Zf9A==} + resolution: + {integrity: sha512-UynhjLwBZUapjNSHJ7FhGMd7/sRjqB7nk6EcYDZFWQkACTaQKa14Vkv2y2O6rEu61xQxP3/E1+fr/mLn46Zf9A==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/delegate@10.2.23': - resolution: {integrity: sha512-xrPtl7f1LxS+B6o+W7ueuQh67CwRkfl+UKJncaslnqYdkxKmNBB4wnzVcW8ZsRdwbsla/v43PtwAvSlzxCzq2w==} + resolution: + {integrity: sha512-xrPtl7f1LxS+B6o+W7ueuQh67CwRkfl+UKJncaslnqYdkxKmNBB4wnzVcW8ZsRdwbsla/v43PtwAvSlzxCzq2w==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/documents@1.0.1': - resolution: {integrity: sha512-aweoMH15wNJ8g7b2r4C4WRuJxZ0ca8HtNO54rkye/3duxTkW4fGBEutCx03jCIr5+a1l+4vFJNP859QnAVBVCA==} + resolution: + {integrity: sha512-aweoMH15wNJ8g7b2r4C4WRuJxZ0ca8HtNO54rkye/3duxTkW4fGBEutCx03jCIr5+a1l+4vFJNP859QnAVBVCA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor-common@0.0.4': - resolution: {integrity: sha512-SEH/OWR+sHbknqZyROCFHcRrbZeUAyjCsgpVWCRjqjqRbiJiXq6TxNIIOmpXgkrXWW/2Ev4Wms6YSGJXjdCs6Q==} + resolution: + {integrity: sha512-SEH/OWR+sHbknqZyROCFHcRrbZeUAyjCsgpVWCRjqjqRbiJiXq6TxNIIOmpXgkrXWW/2Ev4Wms6YSGJXjdCs6Q==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor-common@0.0.6': - resolution: {integrity: sha512-JAH/R1zf77CSkpYATIJw+eOJwsbWocdDjY+avY7G+P5HCXxwQjAjWVkJI1QJBQYjPQDVxwf1fmTZlIN3VOadow==} + resolution: + {integrity: sha512-JAH/R1zf77CSkpYATIJw+eOJwsbWocdDjY+avY7G+P5HCXxwQjAjWVkJI1QJBQYjPQDVxwf1fmTZlIN3VOadow==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor-graphql-ws@2.0.5': - resolution: {integrity: sha512-gI/D9VUzI1Jt1G28GYpvm5ckupgJ5O8mi5Y657UyuUozX34ErfVdZ81g6oVcKFQZ60LhCzk7jJeykK48gaLhDw==} + resolution: + {integrity: sha512-gI/D9VUzI1Jt1G28GYpvm5ckupgJ5O8mi5Y657UyuUozX34ErfVdZ81g6oVcKFQZ60LhCzk7jJeykK48gaLhDw==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor-graphql-ws@2.0.7': - resolution: {integrity: sha512-J27za7sKF6RjhmvSOwOQFeNhNHyP4f4niqPnerJmq73OtLx9Y2PGOhkXOEB0PjhvPJceuttkD2O1yMgEkTGs3Q==} + resolution: + {integrity: sha512-J27za7sKF6RjhmvSOwOQFeNhNHyP4f4niqPnerJmq73OtLx9Y2PGOhkXOEB0PjhvPJceuttkD2O1yMgEkTGs3Q==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor-http@1.3.3': - resolution: {integrity: sha512-LIy+l08/Ivl8f8sMiHW2ebyck59JzyzO/yF9SFS4NH6MJZUezA1xThUXCDIKhHiD56h/gPojbkpcFvM2CbNE7A==} + resolution: + {integrity: sha512-LIy+l08/Ivl8f8sMiHW2ebyck59JzyzO/yF9SFS4NH6MJZUezA1xThUXCDIKhHiD56h/gPojbkpcFvM2CbNE7A==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor-legacy-ws@1.1.17': - resolution: {integrity: sha512-TvltY6eL4DY1Vt66Z8kt9jVmNcI+WkvVPQZrPbMCM3rv2Jw/sWvSwzUBezRuWX0sIckMifYVh23VPcGBUKX/wg==} + resolution: + {integrity: sha512-TvltY6eL4DY1Vt66Z8kt9jVmNcI+WkvVPQZrPbMCM3rv2Jw/sWvSwzUBezRuWX0sIckMifYVh23VPcGBUKX/wg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor-legacy-ws@1.1.25': - resolution: {integrity: sha512-6uf4AEXO0QMxJ7AWKVPqEZXgYBJaiz5vf29X0boG8QtcqWy8mqkXKWLND2Swdx0SbEx0efoGFcjuKufUcB0ASQ==} + resolution: + {integrity: sha512-6uf4AEXO0QMxJ7AWKVPqEZXgYBJaiz5vf29X0boG8QtcqWy8mqkXKWLND2Swdx0SbEx0efoGFcjuKufUcB0ASQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor@1.4.7': - resolution: {integrity: sha512-U0nK9jzJRP9/9Izf1+0Gggd6K6RNRsheFo1gC/VWzfnsr0qjcOSS9qTjY0OTC5iTPt4tQ+W5Zpw/uc7mebI6aA==} + resolution: + {integrity: sha512-U0nK9jzJRP9/9Izf1+0Gggd6K6RNRsheFo1gC/VWzfnsr0qjcOSS9qTjY0OTC5iTPt4tQ+W5Zpw/uc7mebI6aA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/executor@1.5.1': - resolution: {integrity: sha512-n94Qcu875Mji9GQ52n5UbgOTxlgvFJicBPYD+FRks9HKIQpdNPjkkrKZUYNG51XKa+bf03rxNflm4+wXhoHHrA==} + resolution: + {integrity: sha512-n94Qcu875Mji9GQ52n5UbgOTxlgvFJicBPYD+FRks9HKIQpdNPjkkrKZUYNG51XKa+bf03rxNflm4+wXhoHHrA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/git-loader@8.0.24': - resolution: {integrity: sha512-ypLC9N2bKNC0QNbrEBTbWKwbV607f7vK2rSGi9uFeGr8E29tWplo6or9V/+TM0ZfIkUsNp/4QX/zKTgo8SbwQg==} + resolution: + {integrity: sha512-ypLC9N2bKNC0QNbrEBTbWKwbV607f7vK2rSGi9uFeGr8E29tWplo6or9V/+TM0ZfIkUsNp/4QX/zKTgo8SbwQg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/git-loader@8.0.32': - resolution: {integrity: sha512-H5HTp2vevv0rRMEnCJBVmVF8md3LpJI1C1+d6OtzvmuONJ8mOX2mkf9rtoqwiztynVegaDUekvMFsc9k5iE2WA==} + resolution: + {integrity: sha512-H5HTp2vevv0rRMEnCJBVmVF8md3LpJI1C1+d6OtzvmuONJ8mOX2mkf9rtoqwiztynVegaDUekvMFsc9k5iE2WA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/github-loader@8.0.20': - resolution: {integrity: sha512-Icch8bKZ1iP3zXCB9I0ded1hda9NPskSSalw7ZM21kXvLiOR5nZhdqPF65gCFkIKo+O4NR4Bp51MkKj+wl+vpg==} + resolution: + {integrity: sha512-Icch8bKZ1iP3zXCB9I0ded1hda9NPskSSalw7ZM21kXvLiOR5nZhdqPF65gCFkIKo+O4NR4Bp51MkKj+wl+vpg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/github-loader@8.0.22': - resolution: {integrity: sha512-uQ4JNcNPsyMkTIgzeSbsoT9hogLjYrZooLUYd173l5eUGUi49EAcsGdiBCKaKfEjanv410FE8hjaHr7fjSRkJw==} + resolution: + {integrity: sha512-uQ4JNcNPsyMkTIgzeSbsoT9hogLjYrZooLUYd173l5eUGUi49EAcsGdiBCKaKfEjanv410FE8hjaHr7fjSRkJw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/graphql-file-loader@8.0.20': - resolution: {integrity: sha512-inds4My+JJxmg5mxKWYtMIJNRxa7MtX+XIYqqD/nu6G4LzQ5KGaBJg6wEl103KxXli7qNOWeVAUmEjZeYhwNEg==} + resolution: + {integrity: sha512-inds4My+JJxmg5mxKWYtMIJNRxa7MtX+XIYqqD/nu6G4LzQ5KGaBJg6wEl103KxXli7qNOWeVAUmEjZeYhwNEg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/graphql-file-loader@8.1.9': - resolution: {integrity: sha512-rkLK46Q62Zxift8B6Kfw6h8SH3pCR3DPCfNeC/lpLwYReezZz+2ARuLDFZjQGjW+4lpMwiAw8CIxDyQAUgqU6A==} + resolution: + {integrity: sha512-rkLK46Q62Zxift8B6Kfw6h8SH3pCR3DPCfNeC/lpLwYReezZz+2ARuLDFZjQGjW+4lpMwiAw8CIxDyQAUgqU6A==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/graphql-tag-pluck@8.3.19': - resolution: {integrity: sha512-LEw/6IYOUz48HjbWntZXDCzSXsOIM1AyWZrlLoJOrA8QAlhFd8h5Tny7opCypj8FO9VvpPFugWoNDh5InPOEQA==} + resolution: + {integrity: sha512-LEw/6IYOUz48HjbWntZXDCzSXsOIM1AyWZrlLoJOrA8QAlhFd8h5Tny7opCypj8FO9VvpPFugWoNDh5InPOEQA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/graphql-tag-pluck@8.3.27': - resolution: {integrity: sha512-CJ0WVXhGYsfFngpRrAAcjRHyxSDHx4dEz2W15bkwvt9he/AWhuyXm07wuGcoLrl0q0iQp1BiRjU7D8SxWZo3JQ==} + resolution: + {integrity: sha512-CJ0WVXhGYsfFngpRrAAcjRHyxSDHx4dEz2W15bkwvt9he/AWhuyXm07wuGcoLrl0q0iQp1BiRjU7D8SxWZo3JQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/import@7.0.19': - resolution: {integrity: sha512-Xtku8G4bxnrr6I3hVf8RrBFGYIbQ1OYVjl7jgcy092aBkNZvy1T6EDmXmYXn5F+oLd9Bks3K3WaMm8gma/nM/Q==} + resolution: + {integrity: sha512-Xtku8G4bxnrr6I3hVf8RrBFGYIbQ1OYVjl7jgcy092aBkNZvy1T6EDmXmYXn5F+oLd9Bks3K3WaMm8gma/nM/Q==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/import@7.1.9': - resolution: {integrity: sha512-mHzOgyfzsAgstaZPIFEtKg4GVH4FbDHeHYrSs73mAPKS5F59/FlRuUJhAoRnxbVnc3qIZ6EsWBjOjNbnPK8viA==} + resolution: + {integrity: sha512-mHzOgyfzsAgstaZPIFEtKg4GVH4FbDHeHYrSs73mAPKS5F59/FlRuUJhAoRnxbVnc3qIZ6EsWBjOjNbnPK8viA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/json-file-loader@8.0.18': - resolution: {integrity: sha512-JjjIxxewgk8HeMR3npR3YbOkB7fxmdgmqB9kZLWdkRKBxrRXVzhryyq+mhmI0Evzt6pNoHIc3vqwmSctG2sddg==} + resolution: + {integrity: sha512-JjjIxxewgk8HeMR3npR3YbOkB7fxmdgmqB9kZLWdkRKBxrRXVzhryyq+mhmI0Evzt6pNoHIc3vqwmSctG2sddg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/json-file-loader@8.0.26': - resolution: {integrity: sha512-kwy9IFi5QtXXTLBgWkvA1RqsZeJDn0CxsTbhNlziCzmga9fNo7qtZ18k9FYIq3EIoQQlok+b7W7yeyJATA2xhw==} + resolution: + {integrity: sha512-kwy9IFi5QtXXTLBgWkvA1RqsZeJDn0CxsTbhNlziCzmga9fNo7qtZ18k9FYIq3EIoQQlok+b7W7yeyJATA2xhw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/load@8.1.0': - resolution: {integrity: sha512-OGfOm09VyXdNGJS/rLqZ6ztCiG2g6AMxhwtET8GZXTbnjptFc17GtKwJ3Jv5w7mjJ8dn0BHydvIuEKEUK4ciYw==} + resolution: + {integrity: sha512-OGfOm09VyXdNGJS/rLqZ6ztCiG2g6AMxhwtET8GZXTbnjptFc17GtKwJ3Jv5w7mjJ8dn0BHydvIuEKEUK4ciYw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/load@8.1.8': - resolution: {integrity: sha512-gxO662b64qZSToK3N6XUxWG5E6HOUjlg5jEnmGvD4bMtGJ0HwEe/BaVZbBQemCfLkxYjwRIBiVfOY9o0JyjZJg==} + resolution: + {integrity: sha512-gxO662b64qZSToK3N6XUxWG5E6HOUjlg5jEnmGvD4bMtGJ0HwEe/BaVZbBQemCfLkxYjwRIBiVfOY9o0JyjZJg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/merge@9.0.24': - resolution: {integrity: sha512-NzWx/Afl/1qHT3Nm1bghGG2l4jub28AdvtG11PoUlmjcIjnFBJMv4vqL0qnxWe8A82peWo4/TkVdjJRLXwgGEw==} + resolution: + {integrity: sha512-NzWx/Afl/1qHT3Nm1bghGG2l4jub28AdvtG11PoUlmjcIjnFBJMv4vqL0qnxWe8A82peWo4/TkVdjJRLXwgGEw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/merge@9.1.7': - resolution: {integrity: sha512-Y5E1vTbTabvcXbkakdFUt4zUIzB1fyaEnVmIWN0l0GMed2gdD01TpZWLUm4RNAxpturvolrb24oGLQrBbPLSoQ==} + resolution: + {integrity: sha512-Y5E1vTbTabvcXbkakdFUt4zUIzB1fyaEnVmIWN0l0GMed2gdD01TpZWLUm4RNAxpturvolrb24oGLQrBbPLSoQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/optimize@1.4.0': - resolution: {integrity: sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==} + resolution: + {integrity: sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/optimize@2.0.0': - resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} + resolution: + {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/prisma-loader@8.0.17': - resolution: {integrity: sha512-fnuTLeQhqRbA156pAyzJYN0KxCjKYRU5bz1q/SKOwElSnAU4k7/G1kyVsWLh7fneY78LoMNH5n+KlFV8iQlnyg==} + resolution: + {integrity: sha512-fnuTLeQhqRbA156pAyzJYN0KxCjKYRU5bz1q/SKOwElSnAU4k7/G1kyVsWLh7fneY78LoMNH5n+KlFV8iQlnyg==} engines: {node: '>=16.0.0'} deprecated: 'This package was intended to be used with an older versions of Prisma.\nThe newer versions of Prisma has a different approach to GraphQL integration.\nTherefore, this package is no longer needed and has been deprecated and removed.\nLearn more: https://www.prisma.io/graphql' peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/relay-operation-optimizer@6.5.18': - resolution: {integrity: sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==} + resolution: + {integrity: sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/relay-operation-optimizer@7.0.19': - resolution: {integrity: sha512-xnjLpfzw63yIX1bo+BVh4j1attSwqEkUbpJ+HAhdiSUa3FOQFfpWgijRju+3i87CwhjBANqdTZbcsqLT1hEXig==} + resolution: + {integrity: sha512-xnjLpfzw63yIX1bo+BVh4j1attSwqEkUbpJ+HAhdiSUa3FOQFfpWgijRju+3i87CwhjBANqdTZbcsqLT1hEXig==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/schema@10.0.23': - resolution: {integrity: sha512-aEGVpd1PCuGEwqTXCStpEkmheTHNdMayiIKH1xDWqYp9i8yKv9FRDgkGrY4RD8TNxnf7iII+6KOBGaJ3ygH95A==} + resolution: + {integrity: sha512-aEGVpd1PCuGEwqTXCStpEkmheTHNdMayiIKH1xDWqYp9i8yKv9FRDgkGrY4RD8TNxnf7iII+6KOBGaJ3ygH95A==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/schema@10.0.31': - resolution: {integrity: sha512-ZewRgWhXef6weZ0WiP7/MV47HXiuFbFpiDUVLQl6mgXsWSsGELKFxQsyUCBos60Qqy1JEFAIu3Ns6GGYjGkqkQ==} + resolution: + {integrity: sha512-ZewRgWhXef6weZ0WiP7/MV47HXiuFbFpiDUVLQl6mgXsWSsGELKFxQsyUCBos60Qqy1JEFAIu3Ns6GGYjGkqkQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/url-loader@8.0.31': - resolution: {integrity: sha512-QGP3py6DAdKERHO5D38Oi+6j+v0O3rkBbnLpyOo87rmIRbwE6sOkL5JeHegHs7EEJ279fBX6lMt8ry0wBMGtyA==} + resolution: + {integrity: sha512-QGP3py6DAdKERHO5D38Oi+6j+v0O3rkBbnLpyOo87rmIRbwE6sOkL5JeHegHs7EEJ279fBX6lMt8ry0wBMGtyA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/url-loader@8.0.33': - resolution: {integrity: sha512-Fu626qcNHcqAj8uYd7QRarcJn5XZ863kmxsg1sm0fyjyfBJnsvC7ddFt6Hayz5kxVKfsnjxiDfPMXanvsQVBKw==} + resolution: + {integrity: sha512-Fu626qcNHcqAj8uYd7QRarcJn5XZ863kmxsg1sm0fyjyfBJnsvC7ddFt6Hayz5kxVKfsnjxiDfPMXanvsQVBKw==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/utils@10.7.2': - resolution: {integrity: sha512-Wn85S+hfkzfVFpXVrQ0hjnePa3p28aB6IdAGCiD1SqBCSMDRzL+OFEtyAyb30nV9Mqflqs9lCqjqlR2puG857Q==} + resolution: + {integrity: sha512-Wn85S+hfkzfVFpXVrQ0hjnePa3p28aB6IdAGCiD1SqBCSMDRzL+OFEtyAyb30nV9Mqflqs9lCqjqlR2puG857Q==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/wrap@10.0.36': - resolution: {integrity: sha512-sLm9j/T6mlKklSMOCDjrGMi39MRAUzRXsc8tTugZZl0yJEtfU7tX1UaYJQNVsar7vkjLofaWtS7Jf6vcWgGYgQ==} + resolution: + {integrity: sha512-sLm9j/T6mlKklSMOCDjrGMi39MRAUzRXsc8tTugZZl0yJEtfU7tX1UaYJQNVsar7vkjLofaWtS7Jf6vcWgGYgQ==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-tools/wrap@10.1.4': - resolution: {integrity: sha512-7pyNKqXProRjlSdqOtrbnFRMQAVamCmEREilOXtZujxY6kYit3tvWWSjUrcIOheltTffoRh7EQSjpy2JDCzasg==} + resolution: + {integrity: sha512-7pyNKqXProRjlSdqOtrbnFRMQAVamCmEREilOXtZujxY6kYit3tvWWSjUrcIOheltTffoRh7EQSjpy2JDCzasg==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@graphql-typed-document-node/core@3.2.0': - resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + resolution: + {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + resolution: + {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + resolution: + {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + resolution: + {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} deprecated: Use @eslint/object-schema instead '@iarna/toml@2.2.5': - resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + resolution: + {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} '@inquirer/ansi@1.0.1': - resolution: {integrity: sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==} + resolution: + {integrity: sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==} engines: {node: '>=18'} '@inquirer/ansi@1.0.2': - resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + resolution: + {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} '@inquirer/checkbox@4.3.0': - resolution: {integrity: sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==} + resolution: + {integrity: sha512-5+Q3PKH35YsnoPTh75LucALdAxom6xh5D1oeY561x4cqBuH24ZFVyFREPe14xgnrtmGu3EEt1dIi60wRVSnGCw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2868,7 +3255,8 @@ packages: optional: true '@inquirer/checkbox@4.3.2': - resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + resolution: + {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2877,11 +3265,13 @@ packages: optional: true '@inquirer/confirm@3.2.0': - resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} + resolution: + {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} engines: {node: '>=18'} '@inquirer/confirm@5.1.19': - resolution: {integrity: sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==} + resolution: + {integrity: sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2890,7 +3280,8 @@ packages: optional: true '@inquirer/confirm@5.1.21': - resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + resolution: + {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2899,7 +3290,8 @@ packages: optional: true '@inquirer/core@10.3.0': - resolution: {integrity: sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==} + resolution: + {integrity: sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2908,7 +3300,8 @@ packages: optional: true '@inquirer/core@10.3.2': - resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + resolution: + {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2917,11 +3310,13 @@ packages: optional: true '@inquirer/core@9.2.1': - resolution: {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} + resolution: + {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} engines: {node: '>=18'} '@inquirer/editor@4.2.21': - resolution: {integrity: sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==} + resolution: + {integrity: sha512-MjtjOGjr0Kh4BciaFShYpZ1s9400idOdvQ5D7u7lE6VztPFoyLcVNE5dXBmEEIQq5zi4B9h2kU+q7AVBxJMAkQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2930,7 +3325,8 @@ packages: optional: true '@inquirer/editor@4.2.23': - resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + resolution: + {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2939,7 +3335,8 @@ packages: optional: true '@inquirer/expand@4.0.21': - resolution: {integrity: sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==} + resolution: + {integrity: sha512-+mScLhIcbPFmuvU3tAGBed78XvYHSvCl6dBiYMlzCLhpr0bzGzd8tfivMMeqND6XZiaZ1tgusbUHJEfc6YzOdA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2948,7 +3345,8 @@ packages: optional: true '@inquirer/expand@4.0.23': - resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + resolution: + {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2957,7 +3355,8 @@ packages: optional: true '@inquirer/external-editor@1.0.2': - resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} + resolution: + {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2966,7 +3365,8 @@ packages: optional: true '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + resolution: + {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2975,19 +3375,23 @@ packages: optional: true '@inquirer/figures@1.0.14': - resolution: {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} + resolution: + {integrity: sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==} engines: {node: '>=18'} '@inquirer/figures@1.0.15': - resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + resolution: + {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} engines: {node: '>=18'} '@inquirer/input@2.3.0': - resolution: {integrity: sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==} + resolution: + {integrity: sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==} engines: {node: '>=18'} '@inquirer/input@4.2.5': - resolution: {integrity: sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==} + resolution: + {integrity: sha512-7GoWev7P6s7t0oJbenH0eQ0ThNdDJbEAEtVt9vsrYZ9FulIokvd823yLyhQlWHJPGce1wzP53ttfdCZmonMHyA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -2996,7 +3400,8 @@ packages: optional: true '@inquirer/input@4.3.1': - resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + resolution: + {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3005,7 +3410,8 @@ packages: optional: true '@inquirer/number@3.0.21': - resolution: {integrity: sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==} + resolution: + {integrity: sha512-5QWs0KGaNMlhbdhOSCFfKsW+/dcAVC2g4wT/z2MCiZM47uLgatC5N20kpkDQf7dHx+XFct/MJvvNGy6aYJn4Pw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3014,7 +3420,8 @@ packages: optional: true '@inquirer/number@3.0.23': - resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + resolution: + {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3023,7 +3430,8 @@ packages: optional: true '@inquirer/password@4.0.21': - resolution: {integrity: sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==} + resolution: + {integrity: sha512-xxeW1V5SbNFNig2pLfetsDb0svWlKuhmr7MPJZMYuDnCTkpVBI+X/doudg4pznc1/U+yYmWFFOi4hNvGgUo7EA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3032,7 +3440,8 @@ packages: optional: true '@inquirer/password@4.0.23': - resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + resolution: + {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3041,7 +3450,8 @@ packages: optional: true '@inquirer/prompts@7.10.1': - resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} + resolution: + {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3050,7 +3460,8 @@ packages: optional: true '@inquirer/prompts@7.9.0': - resolution: {integrity: sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==} + resolution: + {integrity: sha512-X7/+dG9SLpSzRkwgG5/xiIzW0oMrV3C0HOa7YHG1WnrLK+vCQHfte4k/T80059YBdei29RBC3s+pSMvPJDU9/A==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3059,7 +3470,8 @@ packages: optional: true '@inquirer/rawlist@4.1.11': - resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + resolution: + {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3068,7 +3480,8 @@ packages: optional: true '@inquirer/rawlist@4.1.9': - resolution: {integrity: sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==} + resolution: + {integrity: sha512-AWpxB7MuJrRiSfTKGJ7Y68imYt8P9N3Gaa7ySdkFj1iWjr6WfbGAhdZvw/UnhFXTHITJzxGUI9k8IX7akAEBCg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3077,7 +3490,8 @@ packages: optional: true '@inquirer/search@3.2.0': - resolution: {integrity: sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==} + resolution: + {integrity: sha512-a5SzB/qrXafDX1Z4AZW3CsVoiNxcIYCzYP7r9RzrfMpaLpB+yWi5U8BWagZyLmwR0pKbbL5umnGRd0RzGVI8bQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3086,7 +3500,8 @@ packages: optional: true '@inquirer/search@3.2.2': - resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + resolution: + {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3095,11 +3510,13 @@ packages: optional: true '@inquirer/select@2.5.0': - resolution: {integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==} + resolution: + {integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==} engines: {node: '>=18'} '@inquirer/select@4.4.0': - resolution: {integrity: sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==} + resolution: + {integrity: sha512-kaC3FHsJZvVyIjYBs5Ih8y8Bj4P/QItQWrZW22WJax7zTN+ZPXVGuOM55vzbdCP9zKUiBd9iEJVdesujfF+cAA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3108,7 +3525,8 @@ packages: optional: true '@inquirer/select@4.4.2': - resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + resolution: + {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3117,15 +3535,18 @@ packages: optional: true '@inquirer/type@1.5.5': - resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} + resolution: + {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} engines: {node: '>=18'} '@inquirer/type@2.0.0': - resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} + resolution: + {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} engines: {node: '>=18'} '@inquirer/type@3.0.10': - resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + resolution: + {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3134,7 +3555,8 @@ packages: optional: true '@inquirer/type@3.0.9': - resolution: {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} + resolution: + {integrity: sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -3143,116 +3565,147 @@ packages: optional: true '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + resolution: + {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + resolution: + {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} engines: {node: 20 || >=22} '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + resolution: + {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + resolution: + {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} '@jest/diff-sequences@30.0.1': - resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} + resolution: + {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/get-type@30.1.0': - resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} + resolution: + {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/schemas@30.0.5': - resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} + resolution: + {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} '@jest/types@26.6.2': - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + resolution: + {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} engines: {node: '>= 10.14.2'} '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + resolution: + {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + resolution: + {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + resolution: + {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + resolution: + {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + resolution: + {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} '@jsdevtools/ono@7.1.3': - resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + resolution: + {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} '@juggle/resize-observer@3.4.0': - resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + resolution: + {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} '@kwsites/file-exists@1.1.1': - resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + resolution: + {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} '@kwsites/promise-deferred@1.1.1': - resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + resolution: + {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} '@luckycatfactory/esbuild-graphql-loader@3.8.1': - resolution: {integrity: sha512-ovONIUSW6NAlCpiPMaVw4PpdFoO3Kqi8TGQ2hTtjKTQTdPpSOdekPI1ZRnwciTeUn0yCAQk7M2xdrbIZeTh6pw==} + resolution: + {integrity: sha512-ovONIUSW6NAlCpiPMaVw4PpdFoO3Kqi8TGQ2hTtjKTQTdPpSOdekPI1ZRnwciTeUn0yCAQk7M2xdrbIZeTh6pw==} peerDependencies: esbuild: '>=0.8.26' graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 graphql-tag: ^2.11.0 '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + resolution: + {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + resolution: + {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} '@microsoft/tsdoc-config@0.17.1': - resolution: {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} + resolution: + {integrity: sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==} '@microsoft/tsdoc@0.15.1': - resolution: {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} + resolution: + {integrity: sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==} '@mswjs/interceptors@0.38.7': - resolution: {integrity: sha512-Jkb27iSn7JPdkqlTqKfhncFfnEZsIJVYxsFbUSWEkxdIPdsyngrhoDBk0/BGD2FQcRH99vlRrkHpNTyKqI+0/w==} + resolution: + {integrity: sha512-Jkb27iSn7JPdkqlTqKfhncFfnEZsIJVYxsFbUSWEkxdIPdsyngrhoDBk0/BGD2FQcRH99vlRrkHpNTyKqI+0/w==} engines: {node: '>=18'} '@napi-rs/wasm-runtime@0.2.12': - resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + resolution: + {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} + resolution: + {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + resolution: + {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + resolution: + {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + resolution: + {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + resolution: + {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} '@nx/devkit@22.0.2': - resolution: {integrity: sha512-/tD7z8Q3CPPKtH/LTZGaihzJio5Ve3yFk9LWpUa8DmFHdEg1rFeI9rvSM8FeuEsGp9yGosWH6/KpZCwHv2fhVA==} + resolution: + {integrity: sha512-/tD7z8Q3CPPKtH/LTZGaihzJio5Ve3yFk9LWpUa8DmFHdEg1rFeI9rvSM8FeuEsGp9yGosWH6/KpZCwHv2fhVA==} peerDependencies: nx: '>= 21 <= 23 || ^22.0.0-0' '@nx/eslint-plugin@22.0.2': - resolution: {integrity: sha512-Jup3/+/PI2+6UvAW+18gVZ4zBXL6KDPfqih+Ow7NlaFDM8mI/6rAVpzM04gOIagvIz+y5U8vLJ8zB9KxMvwtLQ==} + resolution: + {integrity: sha512-Jup3/+/PI2+6UvAW+18gVZ4zBXL6KDPfqih+Ow7NlaFDM8mI/6rAVpzM04gOIagvIz+y5U8vLJ8zB9KxMvwtLQ==} peerDependencies: '@typescript-eslint/parser': ^6.13.2 || ^7.0.0 || ^8.0.0 eslint-config-prettier: ^10.0.0 @@ -3261,7 +3714,8 @@ packages: optional: true '@nx/js@22.0.2': - resolution: {integrity: sha512-Q1TUY0saymli4HLF2neRUDEzrzLC6PmFtRDR6lykmN3uq7wVyG6aycLQGXd3xM0IWA/cJ5ZOWa8FfogKDWhc3g==} + resolution: + {integrity: sha512-Q1TUY0saymli4HLF2neRUDEzrzLC6PmFtRDR6lykmN3uq7wVyG6aycLQGXd3xM0IWA/cJ5ZOWa8FfogKDWhc3g==} peerDependencies: verdaccio: ^6.0.5 peerDependenciesMeta: @@ -3269,664 +3723,808 @@ packages: optional: true '@nx/nx-darwin-arm64@22.0.2': - resolution: {integrity: sha512-2xrjMN4oJcZg8D3yzM3UGENBqelyMvmLjfHZgwXwyp2j6WexYaU0UusS2EmVTOCi9q7k3knQCWuSa2Y9uk2sTQ==} + resolution: + {integrity: sha512-2xrjMN4oJcZg8D3yzM3UGENBqelyMvmLjfHZgwXwyp2j6WexYaU0UusS2EmVTOCi9q7k3knQCWuSa2Y9uk2sTQ==} cpu: [arm64] os: [darwin] '@nx/nx-darwin-arm64@22.4.4': - resolution: {integrity: sha512-8PriHolYLRccIhiU8QLotv5ypiO8TYGzH23CODtM+ZbZmyQMxHN7w3LTQJjR/hBvYNU93fP9+WY/NLgJo8jkxw==} + resolution: + {integrity: sha512-8PriHolYLRccIhiU8QLotv5ypiO8TYGzH23CODtM+ZbZmyQMxHN7w3LTQJjR/hBvYNU93fP9+WY/NLgJo8jkxw==} cpu: [arm64] os: [darwin] '@nx/nx-darwin-x64@22.0.2': - resolution: {integrity: sha512-pxfvnZLwfDk0Q9emDLNCyu0lOSMg8+4IUdIpfaNjBjYRV+042zLSzAMJ1n6Tn9p/QhM9nipVwXW0IhH5kf7kyg==} + resolution: + {integrity: sha512-pxfvnZLwfDk0Q9emDLNCyu0lOSMg8+4IUdIpfaNjBjYRV+042zLSzAMJ1n6Tn9p/QhM9nipVwXW0IhH5kf7kyg==} cpu: [x64] os: [darwin] '@nx/nx-darwin-x64@22.4.4': - resolution: {integrity: sha512-O+tFKFSVJCFUTJclIr0OJaZ86ztoDWS6Y9ipXVg+EfzT8AbGp+RIz1t6qjDvgZNWFkKViCsuZ2mHJOu+5/R5fw==} + resolution: + {integrity: sha512-O+tFKFSVJCFUTJclIr0OJaZ86ztoDWS6Y9ipXVg+EfzT8AbGp+RIz1t6qjDvgZNWFkKViCsuZ2mHJOu+5/R5fw==} cpu: [x64] os: [darwin] '@nx/nx-freebsd-x64@22.0.2': - resolution: {integrity: sha512-wwfl4e2GzCENhYoJMEUmQaurRxyGiJH8x0IRI5YbLWzgj88hQGRkzUjUhxPkXHDn4/YtOq/rWViN5j2j1oAB2A==} + resolution: + {integrity: sha512-wwfl4e2GzCENhYoJMEUmQaurRxyGiJH8x0IRI5YbLWzgj88hQGRkzUjUhxPkXHDn4/YtOq/rWViN5j2j1oAB2A==} cpu: [x64] os: [freebsd] '@nx/nx-freebsd-x64@22.4.4': - resolution: {integrity: sha512-9nsGPR7xpRSFBYOrQhxokVhb5chy0Rq6zIWoXec6LrUjsHSWM5lvdfkUlQHG1DbZIimTzqIGUHK92OVb7X6tJw==} + resolution: + {integrity: sha512-9nsGPR7xpRSFBYOrQhxokVhb5chy0Rq6zIWoXec6LrUjsHSWM5lvdfkUlQHG1DbZIimTzqIGUHK92OVb7X6tJw==} cpu: [x64] os: [freebsd] '@nx/nx-linux-arm-gnueabihf@22.0.2': - resolution: {integrity: sha512-OKo3hVRRYUdMBTdUFxmFxz2Bto7iAZtnrszwm7NKgeqOetm37s1f+tZ1Q1s7WwZjjPm/B5vZ83TUXJcwMh+ieg==} + resolution: + {integrity: sha512-OKo3hVRRYUdMBTdUFxmFxz2Bto7iAZtnrszwm7NKgeqOetm37s1f+tZ1Q1s7WwZjjPm/B5vZ83TUXJcwMh+ieg==} cpu: [arm] os: [linux] '@nx/nx-linux-arm-gnueabihf@22.4.4': - resolution: {integrity: sha512-0m4j0KYnIw4SERorUxhpckDxn0zvohh7RbdKNMUzyw98Fl7n++n2yiLA6YS51y29tLzY/j4OqzMDT9BFjqZbUQ==} + resolution: + {integrity: sha512-0m4j0KYnIw4SERorUxhpckDxn0zvohh7RbdKNMUzyw98Fl7n++n2yiLA6YS51y29tLzY/j4OqzMDT9BFjqZbUQ==} cpu: [arm] os: [linux] '@nx/nx-linux-arm64-gnu@22.0.2': - resolution: {integrity: sha512-aaWUYXFaB9ztrICg0WHuz0tzoil+OkSpWi+wtM9PsV+vNQTYWIPclO+OpSp4am68/bdtuMuITOH99EvEIfv7ZA==} + resolution: + {integrity: sha512-aaWUYXFaB9ztrICg0WHuz0tzoil+OkSpWi+wtM9PsV+vNQTYWIPclO+OpSp4am68/bdtuMuITOH99EvEIfv7ZA==} cpu: [arm64] os: [linux] '@nx/nx-linux-arm64-gnu@22.4.4': - resolution: {integrity: sha512-vsCz2A2uHL5I8GzQW8X2/IlW+lIoyOUVgcSviZA6P1UFFOKOxAlVUsKvGZlfyTEwK9LDnH5zYclUrimxNEwYVw==} + resolution: + {integrity: sha512-vsCz2A2uHL5I8GzQW8X2/IlW+lIoyOUVgcSviZA6P1UFFOKOxAlVUsKvGZlfyTEwK9LDnH5zYclUrimxNEwYVw==} cpu: [arm64] os: [linux] '@nx/nx-linux-arm64-musl@22.0.2': - resolution: {integrity: sha512-ylT5GBJCUpTXp5ud8f/uRyW9OA2KR65nuFQ5iXNf1KXwfjGuinFDvZEDDj0zGQ4E/PwLrInqBkkSH25Ry99lOQ==} + resolution: + {integrity: sha512-ylT5GBJCUpTXp5ud8f/uRyW9OA2KR65nuFQ5iXNf1KXwfjGuinFDvZEDDj0zGQ4E/PwLrInqBkkSH25Ry99lOQ==} cpu: [arm64] os: [linux] '@nx/nx-linux-arm64-musl@22.4.4': - resolution: {integrity: sha512-Jj0bqoB9a2iqHycVM6NY0OkU3np6yshFTcggteEH3jWQ5iSgO3E6O00rfwGx8mrMT8GfpCyQGLS5Q1HW79zKzQ==} + resolution: + {integrity: sha512-Jj0bqoB9a2iqHycVM6NY0OkU3np6yshFTcggteEH3jWQ5iSgO3E6O00rfwGx8mrMT8GfpCyQGLS5Q1HW79zKzQ==} cpu: [arm64] os: [linux] '@nx/nx-linux-x64-gnu@22.0.2': - resolution: {integrity: sha512-N8beYlkdKbAC5CA3i5WoqUUbbsSO/0cQk3gMW7c41bouqdMWDUKG6m50d4yHk8V7RFC+sqY59tso3rYmXW3big==} + resolution: + {integrity: sha512-N8beYlkdKbAC5CA3i5WoqUUbbsSO/0cQk3gMW7c41bouqdMWDUKG6m50d4yHk8V7RFC+sqY59tso3rYmXW3big==} cpu: [x64] os: [linux] '@nx/nx-linux-x64-gnu@22.4.4': - resolution: {integrity: sha512-2pMPaFae59j/Erop/LCWPr7xxT4NcY7CR9b5GJ+Dfz1Wv3wE9jE66tp2qFaH36Igso9r0Khf6rPrSCLaO+0QgQ==} + resolution: + {integrity: sha512-2pMPaFae59j/Erop/LCWPr7xxT4NcY7CR9b5GJ+Dfz1Wv3wE9jE66tp2qFaH36Igso9r0Khf6rPrSCLaO+0QgQ==} cpu: [x64] os: [linux] '@nx/nx-linux-x64-musl@22.0.2': - resolution: {integrity: sha512-Q0joIxZHs9JVr/+6x1bee7z+7Z4SoO0mbhADuugjxly50O44Igg+rx78Iou00VrtSR+Ht5NlpILxOe4GhpFCpA==} + resolution: + {integrity: sha512-Q0joIxZHs9JVr/+6x1bee7z+7Z4SoO0mbhADuugjxly50O44Igg+rx78Iou00VrtSR+Ht5NlpILxOe4GhpFCpA==} cpu: [x64] os: [linux] '@nx/nx-linux-x64-musl@22.4.4': - resolution: {integrity: sha512-8Rnhrk2eWZfVs1Db5K15JGiis8h8v1w2avHlp4abJVJ+j1Sa0a1OWexBz2X0WkjYh/LcgRTzYBrE8+BV4yCPMw==} + resolution: + {integrity: sha512-8Rnhrk2eWZfVs1Db5K15JGiis8h8v1w2avHlp4abJVJ+j1Sa0a1OWexBz2X0WkjYh/LcgRTzYBrE8+BV4yCPMw==} cpu: [x64] os: [linux] '@nx/nx-win32-arm64-msvc@22.0.2': - resolution: {integrity: sha512-/4FXsBh+SB6fKFeVBFptPPWJIeFPQWmK29Q+XLrjYW/31bOs1k2uwn+7QYX0D+Z4HiME3iiRdAInFD9pVlyZbQ==} + resolution: + {integrity: sha512-/4FXsBh+SB6fKFeVBFptPPWJIeFPQWmK29Q+XLrjYW/31bOs1k2uwn+7QYX0D+Z4HiME3iiRdAInFD9pVlyZbQ==} cpu: [arm64] os: [win32] '@nx/nx-win32-arm64-msvc@22.4.4': - resolution: {integrity: sha512-e32okeoiaFSjfcZYj+uBdPRSzANAXLnh6D0k3isZ7stJnUtJ2hy5Kz5RCk10ddwdQgUn34sNz1oL2yFhXVWU4w==} + resolution: + {integrity: sha512-e32okeoiaFSjfcZYj+uBdPRSzANAXLnh6D0k3isZ7stJnUtJ2hy5Kz5RCk10ddwdQgUn34sNz1oL2yFhXVWU4w==} cpu: [arm64] os: [win32] '@nx/nx-win32-x64-msvc@22.0.2': - resolution: {integrity: sha512-Hp0z4h7kIo9XLVkGbyIZmgWOKIhSo2xs9pNT1TgZz/AmesnI/DdqRbazitnhXMhlvSWUOxdP/7I8xEZYG9zyNA==} + resolution: + {integrity: sha512-Hp0z4h7kIo9XLVkGbyIZmgWOKIhSo2xs9pNT1TgZz/AmesnI/DdqRbazitnhXMhlvSWUOxdP/7I8xEZYG9zyNA==} cpu: [x64] os: [win32] '@nx/nx-win32-x64-msvc@22.4.4': - resolution: {integrity: sha512-Jb8YsA7/GKGWWg2RkaDJQalaOpiQCPb57PtxNV5Ai7bsapM/7g/OfwenZXfH32FUoCT4yPVrnrKdjqbBHdEkxA==} + resolution: + {integrity: sha512-Jb8YsA7/GKGWWg2RkaDJQalaOpiQCPb57PtxNV5Ai7bsapM/7g/OfwenZXfH32FUoCT4yPVrnrKdjqbBHdEkxA==} cpu: [x64] os: [win32] '@nx/workspace@22.0.2': - resolution: {integrity: sha512-wfVE0X5auqVrQus/S3EiZkheX59aR+FAwXGFCFCYGTGakhykcya4/N+tUZCCpDSUziFXR7F8n8cw4ZLBM5zWlA==} + resolution: + {integrity: sha512-wfVE0X5auqVrQus/S3EiZkheX59aR+FAwXGFCFCYGTGakhykcya4/N+tUZCCpDSUziFXR7F8n8cw4ZLBM5zWlA==} '@oclif/core@3.26.5': - resolution: {integrity: sha512-uRmAujGJjLhhgpLylbiuHuPt9Ec7u6aJ72utuSPNTRw47+W5vbQSGnLGPiil1Mt5YDL+zFOyTVH6Uv3NSP2SaQ==} + resolution: + {integrity: sha512-uRmAujGJjLhhgpLylbiuHuPt9Ec7u6aJ72utuSPNTRw47+W5vbQSGnLGPiil1Mt5YDL+zFOyTVH6Uv3NSP2SaQ==} engines: {node: '>=18.0.0'} '@oclif/core@4.5.3': - resolution: {integrity: sha512-ISoFlfmsuxJvNKXhabCO4/KqNXDQdLHchZdTPfZbtqAsQbqTw5IKitLVZq9Sz1LWizN37HILp4u0350B8scBjg==} + resolution: + {integrity: sha512-ISoFlfmsuxJvNKXhabCO4/KqNXDQdLHchZdTPfZbtqAsQbqTw5IKitLVZq9Sz1LWizN37HILp4u0350B8scBjg==} engines: {node: '>=18.0.0'} '@oclif/core@4.8.0': - resolution: {integrity: sha512-jteNUQKgJHLHFbbz806aGZqf+RJJ7t4gwF4MYa8fCwCxQ8/klJNWc0MvaJiBebk7Mc+J39mdlsB4XraaCKznFw==} + resolution: + {integrity: sha512-jteNUQKgJHLHFbbz806aGZqf+RJJ7t4gwF4MYa8fCwCxQ8/klJNWc0MvaJiBebk7Mc+J39mdlsB4XraaCKznFw==} engines: {node: '>=18.0.0'} '@oclif/plugin-commands@4.1.33': - resolution: {integrity: sha512-FdjGV8Q/QRewrj6JUv0Vnl6whi/VSA38aRWypQwiIYV/PkiUckxF8mAlXQ/zmb4ZcRjbrTSeiP1ymEzy0CksLQ==} + resolution: + {integrity: sha512-FdjGV8Q/QRewrj6JUv0Vnl6whi/VSA38aRWypQwiIYV/PkiUckxF8mAlXQ/zmb4ZcRjbrTSeiP1ymEzy0CksLQ==} engines: {node: '>=18.0.0'} '@oclif/plugin-help@6.2.37': - resolution: {integrity: sha512-5N/X/FzlJaYfpaHwDC0YHzOzKDWa41s9t+4FpCDu4f9OMReds4JeNBaaWk9rlIzdKjh2M6AC5Q18ORfECRkHGA==} + resolution: + {integrity: sha512-5N/X/FzlJaYfpaHwDC0YHzOzKDWa41s9t+4FpCDu4f9OMReds4JeNBaaWk9rlIzdKjh2M6AC5Q18ORfECRkHGA==} engines: {node: '>=18.0.0'} '@oclif/plugin-not-found@3.2.74': - resolution: {integrity: sha512-6RD/EuIUGxAYR45nMQg+nw+PqwCXUxkR6Eyn+1fvbVjtb9d+60OPwB77LCRUI4zKNI+n0LOFaMniEdSpb+A7kQ==} + resolution: + {integrity: sha512-6RD/EuIUGxAYR45nMQg+nw+PqwCXUxkR6Eyn+1fvbVjtb9d+60OPwB77LCRUI4zKNI+n0LOFaMniEdSpb+A7kQ==} engines: {node: '>=18.0.0'} '@oclif/plugin-plugins@5.4.47': - resolution: {integrity: sha512-eUWNbyYwKPbH+Ca98eI2OBZ6IioWM1aJ6SGp9TrVGRu2qNeDtG/qnqemv3v5qcHzPK211CPSvHJBFYef3J9rBg==} + resolution: + {integrity: sha512-eUWNbyYwKPbH+Ca98eI2OBZ6IioWM1aJ6SGp9TrVGRu2qNeDtG/qnqemv3v5qcHzPK211CPSvHJBFYef3J9rBg==} engines: {node: '>=18.0.0'} '@oclif/plugin-warn-if-update-available@3.1.55': - resolution: {integrity: sha512-VIEBoaoMOCjl3y+w/kdfZMODi0mVMnDuM0vkBf3nqeidhRXVXq87hBqYDdRwN1XoD+eDfE8tBbOP7qtSOONztQ==} + resolution: + {integrity: sha512-VIEBoaoMOCjl3y+w/kdfZMODi0mVMnDuM0vkBf3nqeidhRXVXq87hBqYDdRwN1XoD+eDfE8tBbOP7qtSOONztQ==} engines: {node: '>=18.0.0'} '@oclif/table@0.4.14': - resolution: {integrity: sha512-qj7cl/duiIOgGK5b31W+Y2JE1POeDd4+q/0Qly63RQVBCwOxCdrCm7Nq1j0jXiYY9boUA7rJPT6KAyWOSFdQxA==} + resolution: + {integrity: sha512-qj7cl/duiIOgGK5b31W+Y2JE1POeDd4+q/0Qly63RQVBCwOxCdrCm7Nq1j0jXiYY9boUA7rJPT6KAyWOSFdQxA==} engines: {node: '>=18.0.0'} '@octokit/auth-token@5.1.2': - resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} + resolution: + {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} engines: {node: '>= 18'} '@octokit/auth-token@6.0.0': - resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} + resolution: + {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} engines: {node: '>= 20'} '@octokit/core@6.1.5': - resolution: {integrity: sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg==} + resolution: + {integrity: sha512-vvmsN0r7rguA+FySiCsbaTTobSftpIDIpPW81trAmsv9TGxg3YCujAxRYp/Uy8xmDgYCzzgulG62H7KYUFmeIg==} engines: {node: '>= 18'} '@octokit/core@7.0.2': - resolution: {integrity: sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==} + resolution: + {integrity: sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==} engines: {node: '>= 20'} '@octokit/endpoint@10.1.4': - resolution: {integrity: sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==} + resolution: + {integrity: sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==} engines: {node: '>= 18'} '@octokit/endpoint@11.0.0': - resolution: {integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==} + resolution: + {integrity: sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==} engines: {node: '>= 20'} '@octokit/graphql@8.2.2': - resolution: {integrity: sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==} + resolution: + {integrity: sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==} engines: {node: '>= 18'} '@octokit/graphql@9.0.1': - resolution: {integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==} + resolution: + {integrity: sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==} engines: {node: '>= 20'} '@octokit/openapi-types@12.11.0': - resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + resolution: + {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} '@octokit/openapi-types@24.2.0': - resolution: {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} + resolution: + {integrity: sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==} '@octokit/openapi-types@25.1.0': - resolution: {integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==} + resolution: + {integrity: sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==} '@octokit/plugin-paginate-rest@11.6.0': - resolution: {integrity: sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==} + resolution: + {integrity: sha512-n5KPteiF7pWKgBIBJSk8qzoZWcUkza2O6A0za97pMGVrGfPdltxrfmfF5GucHYvHGZD8BdaZmmHGz5cX/3gdpw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' '@octokit/plugin-paginate-rest@13.0.1': - resolution: {integrity: sha512-m1KvHlueScy4mQJWvFDCxFBTIdXS0K1SgFGLmqHyX90mZdCIv6gWBbKRhatxRjhGlONuTK/hztYdaqrTXcFZdQ==} + resolution: + {integrity: sha512-m1KvHlueScy4mQJWvFDCxFBTIdXS0K1SgFGLmqHyX90mZdCIv6gWBbKRhatxRjhGlONuTK/hztYdaqrTXcFZdQ==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' '@octokit/plugin-request-log@5.3.1': - resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} + resolution: + {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' '@octokit/plugin-request-log@6.0.0': - resolution: {integrity: sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==} + resolution: + {integrity: sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' '@octokit/plugin-rest-endpoint-methods@13.5.0': - resolution: {integrity: sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==} + resolution: + {integrity: sha512-9Pas60Iv9ejO3WlAX3maE1+38c5nqbJXV5GrncEfkndIpZrJ/WPMRd2xYDcPPEt5yzpxcjw9fWNoPhsSGzqKqw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' '@octokit/plugin-rest-endpoint-methods@16.0.0': - resolution: {integrity: sha512-kJVUQk6/dx/gRNLWUnAWKFs1kVPn5O5CYZyssyEoNYaFedqZxsfYs7DwI3d67hGz4qOwaJ1dpm07hOAD1BXx6g==} + resolution: + {integrity: sha512-kJVUQk6/dx/gRNLWUnAWKFs1kVPn5O5CYZyssyEoNYaFedqZxsfYs7DwI3d67hGz4qOwaJ1dpm07hOAD1BXx6g==} engines: {node: '>= 20'} peerDependencies: '@octokit/core': '>=6' '@octokit/request-error@6.1.8': - resolution: {integrity: sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==} + resolution: + {integrity: sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==} engines: {node: '>= 18'} '@octokit/request-error@7.0.0': - resolution: {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==} + resolution: + {integrity: sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==} engines: {node: '>= 20'} '@octokit/request@10.0.2': - resolution: {integrity: sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==} + resolution: + {integrity: sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==} engines: {node: '>= 20'} '@octokit/request@9.2.3': - resolution: {integrity: sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==} + resolution: + {integrity: sha512-Ma+pZU8PXLOEYzsWf0cn/gY+ME57Wq8f49WTXA8FMHp2Ps9djKw//xYJ1je8Hm0pR2lU9FUGeJRWOtxq6olt4w==} engines: {node: '>= 18'} '@octokit/rest@21.1.1': - resolution: {integrity: sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==} + resolution: + {integrity: sha512-sTQV7va0IUVZcntzy1q3QqPm/r8rWtDCqpRAmb8eXXnKkjoQEtFe3Nt5GTVsHft+R6jJoHeSiVLcgcvhtue/rg==} engines: {node: '>= 18'} '@octokit/rest@22.0.0': - resolution: {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} + resolution: + {integrity: sha512-z6tmTu9BTnw51jYGulxrlernpsQYXpui1RK21vmXn8yF5bp6iX16yfTtJYGK5Mh1qDkvDOmp2n8sRMcQmR8jiA==} engines: {node: '>= 20'} '@octokit/types@13.10.0': - resolution: {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} + resolution: + {integrity: sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==} '@octokit/types@14.1.0': - resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==} + resolution: + {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==} '@octokit/types@6.41.0': - resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + resolution: + {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} '@open-draft/deferred-promise@2.2.0': - resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + resolution: + {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} '@open-draft/logger@0.3.0': - resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + resolution: + {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} '@open-draft/until@2.1.0': - resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + resolution: + {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} '@opentelemetry/api-logs@0.57.0': - resolution: {integrity: sha512-l1aJ30CXeauVYaI+btiynHpw341LthkMTv3omi1VJDX14werY2Wmv9n1yudMsq9HuY0m8PvXEVX4d8zxEb+WRg==} + resolution: + {integrity: sha512-l1aJ30CXeauVYaI+btiynHpw341LthkMTv3omi1VJDX14werY2Wmv9n1yudMsq9HuY0m8PvXEVX4d8zxEb+WRg==} engines: {node: '>=14'} '@opentelemetry/api@1.9.0': - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + resolution: + {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} '@opentelemetry/core@1.30.0': - resolution: {integrity: sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==} + resolution: + {integrity: sha512-Q/3u/K73KUjTCnFUP97ZY+pBjQ1kPEgjOfXj/bJl8zW7GbXdkw6cwuyZk6ZTXkVgCBsYRYUzx4fvYK1jxdb9MA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' '@opentelemetry/exporter-metrics-otlp-http@0.57.0': - resolution: {integrity: sha512-uxCiTVFAQ1kLy8SS0vyNNXRqH69htbtTxk4EEB2H4CvBFt3pA2N22k6SFF5fOdvDwUvM7Mi9mUfW48rS4Y0F8g==} + resolution: + {integrity: sha512-uxCiTVFAQ1kLy8SS0vyNNXRqH69htbtTxk4EEB2H4CvBFt3pA2N22k6SFF5fOdvDwUvM7Mi9mUfW48rS4Y0F8g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 '@opentelemetry/otlp-exporter-base@0.57.0': - resolution: {integrity: sha512-QQl4Ngm3D6H8SDO0EM642ncTxjRsf/HDq7+IWIA0eaEK/NTsJeQ3iYJiZj3F4jkALnvyeM1kkwd+DHtqxTBx9Q==} + resolution: + {integrity: sha512-QQl4Ngm3D6H8SDO0EM642ncTxjRsf/HDq7+IWIA0eaEK/NTsJeQ3iYJiZj3F4jkALnvyeM1kkwd+DHtqxTBx9Q==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 '@opentelemetry/otlp-transformer@0.57.0': - resolution: {integrity: sha512-yHX7sdwkdAmSa6Jbi3caSLDWy0PCHS1pKQeKz8AIWSyQqL7IojHKgdk9A+7eRd98Z1n9YTdwWSWLnObvIqhEhQ==} + resolution: + {integrity: sha512-yHX7sdwkdAmSa6Jbi3caSLDWy0PCHS1pKQeKz8AIWSyQqL7IojHKgdk9A+7eRd98Z1n9YTdwWSWLnObvIqhEhQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 '@opentelemetry/resources@1.30.0': - resolution: {integrity: sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==} + resolution: + {integrity: sha512-5mGMjL0Uld/99t7/pcd7CuVtJbkARckLVuiOX84nO8RtLtIz0/J6EOHM2TGvPZ6F4K+XjUq13gMx14w80SVCQg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' '@opentelemetry/sdk-logs@0.57.0': - resolution: {integrity: sha512-6Kbxdu/QE9LWH7+WSLmYo3DjAq+c55TiCLXiXu6b/2m2muy5SyOG2m0MrGqetyRpfYSSbIqHmJoqNVTN3+2a9g==} + resolution: + {integrity: sha512-6Kbxdu/QE9LWH7+WSLmYo3DjAq+c55TiCLXiXu6b/2m2muy5SyOG2m0MrGqetyRpfYSSbIqHmJoqNVTN3+2a9g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.4.0 <1.10.0' '@opentelemetry/sdk-metrics@1.30.0': - resolution: {integrity: sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==} + resolution: + {integrity: sha512-5kcj6APyRMvv6dEIP5plz2qfJAD4OMipBRT11u/pa1a68rHKI2Ln+iXVkAGKgx8o7CXbD7FdPypTUY88ZQgP4Q==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' '@opentelemetry/sdk-trace-base@1.30.0': - resolution: {integrity: sha512-RKQDaDIkV7PwizmHw+rE/FgfB2a6MBx+AEVVlAHXRG1YYxLiBpPX2KhmoB99R5vA4b72iJrjle68NDWnbrE9Dg==} + resolution: + {integrity: sha512-RKQDaDIkV7PwizmHw+rE/FgfB2a6MBx+AEVVlAHXRG1YYxLiBpPX2KhmoB99R5vA4b72iJrjle68NDWnbrE9Dg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' '@opentelemetry/semantic-conventions@1.28.0': - resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} + resolution: + {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} engines: {node: '>=14'} '@oxc-resolver/binding-darwin-arm64@9.0.2': - resolution: {integrity: sha512-MVyRgP2gzJJtAowjG/cHN3VQXwNLWnY+FpOEsyvDepJki1SdAX/8XDijM1yN6ESD1kr9uhBKjGelC6h3qtT+rA==} + resolution: + {integrity: sha512-MVyRgP2gzJJtAowjG/cHN3VQXwNLWnY+FpOEsyvDepJki1SdAX/8XDijM1yN6ESD1kr9uhBKjGelC6h3qtT+rA==} cpu: [arm64] os: [darwin] '@oxc-resolver/binding-darwin-x64@9.0.2': - resolution: {integrity: sha512-7kV0EOFEZ3sk5Hjy4+bfA6XOQpCwbDiDkkHN4BHHyrBHsXxUR05EcEJPPL1WjItefg+9+8hrBmoK0xRoDs41+A==} + resolution: + {integrity: sha512-7kV0EOFEZ3sk5Hjy4+bfA6XOQpCwbDiDkkHN4BHHyrBHsXxUR05EcEJPPL1WjItefg+9+8hrBmoK0xRoDs41+A==} cpu: [x64] os: [darwin] '@oxc-resolver/binding-freebsd-x64@9.0.2': - resolution: {integrity: sha512-6OvkEtRXrt8sJ4aVfxHRikjain9nV1clIsWtJ1J3J8NG1ZhjyJFgT00SCvqxbK+pzeWJq6XzHyTCN78ML+lY2w==} + resolution: + {integrity: sha512-6OvkEtRXrt8sJ4aVfxHRikjain9nV1clIsWtJ1J3J8NG1ZhjyJFgT00SCvqxbK+pzeWJq6XzHyTCN78ML+lY2w==} cpu: [x64] os: [freebsd] '@oxc-resolver/binding-linux-arm-gnueabihf@9.0.2': - resolution: {integrity: sha512-aYpNL6o5IRAUIdoweW21TyLt54Hy/ZS9tvzNzF6ya1ckOQ8DLaGVPjGpmzxdNja9j/bbV6aIzBH7lNcBtiOTkQ==} + resolution: + {integrity: sha512-aYpNL6o5IRAUIdoweW21TyLt54Hy/ZS9tvzNzF6ya1ckOQ8DLaGVPjGpmzxdNja9j/bbV6aIzBH7lNcBtiOTkQ==} cpu: [arm] os: [linux] '@oxc-resolver/binding-linux-arm64-gnu@9.0.2': - resolution: {integrity: sha512-RGFW4vCfKMFEIzb9VCY0oWyyY9tR1/o+wDdNePhiUXZU4SVniRPQaZ1SJ0sUFI1k25pXZmzQmIP6cBmazi/Dew==} + resolution: + {integrity: sha512-RGFW4vCfKMFEIzb9VCY0oWyyY9tR1/o+wDdNePhiUXZU4SVniRPQaZ1SJ0sUFI1k25pXZmzQmIP6cBmazi/Dew==} cpu: [arm64] os: [linux] '@oxc-resolver/binding-linux-arm64-musl@9.0.2': - resolution: {integrity: sha512-lxx/PibBfzqYvut2Y8N2D0Ritg9H8pKO+7NUSJb9YjR/bfk2KRmP8iaUz3zB0JhPtf/W3REs65oKpWxgflGToA==} + resolution: + {integrity: sha512-lxx/PibBfzqYvut2Y8N2D0Ritg9H8pKO+7NUSJb9YjR/bfk2KRmP8iaUz3zB0JhPtf/W3REs65oKpWxgflGToA==} cpu: [arm64] os: [linux] '@oxc-resolver/binding-linux-riscv64-gnu@9.0.2': - resolution: {integrity: sha512-yD28ptS/OuNhwkpXRPNf+/FvrO7lwURLsEbRVcL1kIE0GxNJNMtKgIE4xQvtKDzkhk6ZRpLho5VSrkkF+3ARTQ==} + resolution: + {integrity: sha512-yD28ptS/OuNhwkpXRPNf+/FvrO7lwURLsEbRVcL1kIE0GxNJNMtKgIE4xQvtKDzkhk6ZRpLho5VSrkkF+3ARTQ==} cpu: [riscv64] os: [linux] '@oxc-resolver/binding-linux-s390x-gnu@9.0.2': - resolution: {integrity: sha512-WBwEJdspoga2w+aly6JVZeHnxuPVuztw3fPfWrei2P6rNM5hcKxBGWKKT6zO1fPMCB4sdDkFohGKkMHVV1eryQ==} + resolution: + {integrity: sha512-WBwEJdspoga2w+aly6JVZeHnxuPVuztw3fPfWrei2P6rNM5hcKxBGWKKT6zO1fPMCB4sdDkFohGKkMHVV1eryQ==} cpu: [s390x] os: [linux] '@oxc-resolver/binding-linux-x64-gnu@9.0.2': - resolution: {integrity: sha512-a2z3/cbOOTUq0UTBG8f3EO/usFcdwwXnCejfXv42HmV/G8GjrT4fp5+5mVDoMByH3Ce3iVPxj1LmS6OvItKMYQ==} + resolution: + {integrity: sha512-a2z3/cbOOTUq0UTBG8f3EO/usFcdwwXnCejfXv42HmV/G8GjrT4fp5+5mVDoMByH3Ce3iVPxj1LmS6OvItKMYQ==} cpu: [x64] os: [linux] '@oxc-resolver/binding-linux-x64-musl@9.0.2': - resolution: {integrity: sha512-bHZF+WShYQWpuswB9fyxcgMIWVk4sZQT0wnwpnZgQuvGTZLkYJ1JTCXJMtaX5mIFHf69ngvawnwPIUA4Feil0g==} + resolution: + {integrity: sha512-bHZF+WShYQWpuswB9fyxcgMIWVk4sZQT0wnwpnZgQuvGTZLkYJ1JTCXJMtaX5mIFHf69ngvawnwPIUA4Feil0g==} cpu: [x64] os: [linux] '@oxc-resolver/binding-wasm32-wasi@9.0.2': - resolution: {integrity: sha512-I5cSgCCh5nFozGSHz+PjIOfrqW99eUszlxKLgoNNzQ1xQ2ou9ZJGzcZ94BHsM9SpyYHLtgHljmOZxCT9bgxYNA==} + resolution: + {integrity: sha512-I5cSgCCh5nFozGSHz+PjIOfrqW99eUszlxKLgoNNzQ1xQ2ou9ZJGzcZ94BHsM9SpyYHLtgHljmOZxCT9bgxYNA==} engines: {node: '>=14.0.0'} cpu: [wasm32] '@oxc-resolver/binding-win32-arm64-msvc@9.0.2': - resolution: {integrity: sha512-5IhoOpPr38YWDWRCA5kP30xlUxbIJyLAEsAK7EMyUgqygBHEYLkElaKGgS0X5jRXUQ6l5yNxuW73caogb2FYaw==} + resolution: + {integrity: sha512-5IhoOpPr38YWDWRCA5kP30xlUxbIJyLAEsAK7EMyUgqygBHEYLkElaKGgS0X5jRXUQ6l5yNxuW73caogb2FYaw==} cpu: [arm64] os: [win32] '@oxc-resolver/binding-win32-x64-msvc@9.0.2': - resolution: {integrity: sha512-Qc40GDkaad9rZksSQr2l/V9UubigIHsW69g94Gswc2sKYB3XfJXfIfyV8WTJ67u6ZMXsZ7BH1msSC6Aen75mCg==} + resolution: + {integrity: sha512-Qc40GDkaad9rZksSQr2l/V9UubigIHsW69g94Gswc2sKYB3XfJXfIfyV8WTJ67u6ZMXsZ7BH1msSC6Aen75mCg==} cpu: [x64] os: [win32] '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} + resolution: + {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} + resolution: + {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} + resolution: + {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} + resolution: + {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} + resolution: + {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} + resolution: + {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} + resolution: + {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} + resolution: + {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} + resolution: + {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} + resolution: + {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} + resolution: + {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} + resolution: + {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} + resolution: + {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} + resolution: + {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} '@phenomnomnominal/tsquery@5.0.1': - resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} + resolution: + {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} peerDependencies: typescript: ^3 || ^4 || ^5 '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + resolution: + {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} '@pkgr/core@0.1.2': - resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} + resolution: + {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} '@pnpm/config.env-replace@1.1.0': - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + resolution: + {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} '@pnpm/network.ca-file@1.0.2': - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + resolution: + {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} '@pnpm/npm-conf@2.3.1': - resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + resolution: + {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} '@pnpm/npm-conf@3.0.2': - resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} + resolution: + {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} engines: {node: '>=12'} '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + resolution: + {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + resolution: + {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + resolution: + {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + resolution: + {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + resolution: + {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + resolution: + {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + resolution: + {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + resolution: + {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + resolution: + {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + resolution: + {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} '@remix-run/router@1.23.0': - resolution: {integrity: sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==} + resolution: + {integrity: sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==} engines: {node: '>=14.0.0'} '@repeaterjs/repeater@3.0.6': - resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} + resolution: + {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + resolution: + {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + resolution: + {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + resolution: + {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + resolution: + {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + resolution: + {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} cpu: [x64] os: [darwin] '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} + resolution: + {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} cpu: [arm64] os: [freebsd] '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + resolution: + {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} cpu: [x64] os: [freebsd] '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + resolution: + {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + resolution: + {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + resolution: + {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + resolution: + {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} + resolution: + {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] '@rollup/rollup-linux-ppc64-gnu@4.52.5': - resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} + resolution: + {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] '@rollup/rollup-linux-riscv64-gnu@4.52.5': - resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} + resolution: + {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] '@rollup/rollup-linux-riscv64-musl@4.52.5': - resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} + resolution: + {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] '@rollup/rollup-linux-s390x-gnu@4.52.5': - resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} + resolution: + {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] '@rollup/rollup-linux-x64-gnu@4.52.5': - resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} + resolution: + {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] '@rollup/rollup-linux-x64-musl@4.52.5': - resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} + resolution: + {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] '@rollup/rollup-openharmony-arm64@4.52.5': - resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} + resolution: + {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} cpu: [arm64] os: [openharmony] '@rollup/rollup-win32-arm64-msvc@4.52.5': - resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} + resolution: + {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.52.5': - resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} + resolution: + {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-gnu@4.52.5': - resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + resolution: + {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} cpu: [x64] os: [win32] '@rollup/rollup-win32-x64-msvc@4.52.5': - resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} + resolution: + {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} cpu: [x64] os: [win32] '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + resolution: + {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} '@shikijs/engine-oniguruma@1.29.2': - resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} + resolution: + {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} '@shikijs/types@1.29.2': - resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} + resolution: + {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + resolution: + {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} '@shopify/cli-hydrogen@11.1.5': - resolution: {integrity: sha512-KnyKdJ2EZI44YzRK8mWifP7g0ndm3Q9daPdq2da84EnXpZ+a7AHSruud95b1fANawVBoK7i6RIeDrgcwmri0NA==} + resolution: + {integrity: sha512-KnyKdJ2EZI44YzRK8mWifP7g0ndm3Q9daPdq2da84EnXpZ+a7AHSruud95b1fANawVBoK7i6RIeDrgcwmri0NA==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: @@ -3951,12 +4549,14 @@ packages: optional: true '@shopify/dates@1.1.5': - resolution: {integrity: sha512-WpShtWjylq0iH4FQhpEz1g5tCZRw/GgZ00uYUxUinVyBqaUbRqiAq7EnwXzGO/aTpAUF6yXgDTxoji3aFOiC8A==} + resolution: + {integrity: sha512-WpShtWjylq0iH4FQhpEz1g5tCZRw/GgZ00uYUxUinVyBqaUbRqiAq7EnwXzGO/aTpAUF6yXgDTxoji3aFOiC8A==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@shopify/decorators@2.0.8': - resolution: {integrity: sha512-nm/RmyDnEGP7rcn+hyPSUrb/j0G5mrtYP69f8AwJmVLgDp/6bOTYfOOUXB1AXBg9ILHWdFQv5ItYdmJB48y/Xw==} + resolution: + {integrity: sha512-nm/RmyDnEGP7rcn+hyPSUrb/j0G5mrtYP69f8AwJmVLgDp/6bOTYfOOUXB1AXBg9ILHWdFQv5ItYdmJB48y/Xw==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -3966,34 +4566,41 @@ packages: eslint: ^8.48.0 '@shopify/eslint-plugin@42.1.0': - resolution: {integrity: sha512-b45SXfXoE9+BvQjHrhInWlOMhsXrqIzts+setaXecR5WW6NcEKeeSfHvTvLVk231NHnrE5h+MuHp1Ci1pR5nfA==} + resolution: + {integrity: sha512-b45SXfXoE9+BvQjHrhInWlOMhsXrqIzts+setaXecR5WW6NcEKeeSfHvTvLVk231NHnrE5h+MuHp1Ci1pR5nfA==} peerDependencies: eslint: ^8.3.0 '@shopify/function-enhancers@2.0.8': - resolution: {integrity: sha512-/nv59+ycOVV2ZKixl6V1d+xJmfMN40qUEmpFgbXhCnNjAE/vz3nJPal70Esp4Li2NR3GzKVJklZk3Y3pG+W1vw==} + resolution: + {integrity: sha512-/nv59+ycOVV2ZKixl6V1d+xJmfMN40qUEmpFgbXhCnNjAE/vz3nJPal70Esp4Li2NR3GzKVJklZk3Y3pG+W1vw==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@shopify/function-runner@4.1.1': - resolution: {integrity: sha512-NXRh8W9xb8JFitNeQcYjvJc6Jx7qta2UBsPs+Kw2M2bZhB7JdOOR0pIeFrFBi3GHpPN3aOflL/g4w7oRWWWDjg==} + resolution: + {integrity: sha512-NXRh8W9xb8JFitNeQcYjvJc6Jx7qta2UBsPs+Kw2M2bZhB7JdOOR0pIeFrFBi3GHpPN3aOflL/g4w7oRWWWDjg==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. hasBin: true '@shopify/generate-docs@0.15.6': - resolution: {integrity: sha512-4p6c2Xlt5TVAACM/YD6dcEioKeCpHwv5n65TOIGQaFhRUsA3yRFrbD+8G2TSfeW60QIZchzvRQ7xwYjljGajlA==} + resolution: + {integrity: sha512-4p6c2Xlt5TVAACM/YD6dcEioKeCpHwv5n65TOIGQaFhRUsA3yRFrbD+8G2TSfeW60QIZchzvRQ7xwYjljGajlA==} hasBin: true '@shopify/i18n@1.0.9': - resolution: {integrity: sha512-ZxoIB8UTmWHvRig6E4zvYJt3fAa24iJGYTQLHsjZBV3cmqi/AiSet9Qys7GkqzKcYV/4xukZIfpeWXVjef3v7A==} + resolution: + {integrity: sha512-ZxoIB8UTmWHvRig6E4zvYJt3fAa24iJGYTQLHsjZBV3cmqi/AiSet9Qys7GkqzKcYV/4xukZIfpeWXVjef3v7A==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@shopify/liquid-html-parser@2.9.0': - resolution: {integrity: sha512-bkI4tLbU47YUxpgbMa9fgeJjFEMvRNEFL644Yk0ZKo5H1IRzU4pPyCQ6PkGvb0JJnt7OZ+RDGvb6ZLCnAR2Z/A==} + resolution: + {integrity: sha512-bkI4tLbU47YUxpgbMa9fgeJjFEMvRNEFL644Yk0ZKo5H1IRzU4pPyCQ6PkGvb0JJnt7OZ+RDGvb6ZLCnAR2Z/A==} '@shopify/oxygen-cli@4.6.18': - resolution: {integrity: sha512-LxJUkHL1Oudxy712XHTBd1se3Gq2w+/FYVyj5rAmyiNSFfbXD3zHWHjB5zbeeFjbRIPhbJW3OgRjJgn7VIo8EA==} + resolution: + {integrity: sha512-LxJUkHL1Oudxy712XHTBd1se3Gq2w+/FYVyj5rAmyiNSFfbXD3zHWHjB5zbeeFjbRIPhbJW3OgRjJgn7VIo8EA==} engines: {node: '>=18.12.0'} os: [darwin, linux, win32] hasBin: true @@ -4002,7 +4609,8 @@ packages: '@shopify/cli-kit': ^3.78.1 '@shopify/polaris-icons@8.11.1': - resolution: {integrity: sha512-2HLzvJWMejKIwS5P2bs7k5CAjBKwPnD/iy9ncPzcgqRjmFInBXLtUXFQhPWDw6JwXzb1ZjNQK/ssTctcfz87Sw==} + resolution: + {integrity: sha512-2HLzvJWMejKIwS5P2bs7k5CAjBKwPnD/iy9ncPzcgqRjmFInBXLtUXFQhPWDw6JwXzb1ZjNQK/ssTctcfz87Sw==} engines: {node: ^16.17.0 || >=18.12.0} peerDependencies: react: '*' @@ -4011,18 +4619,21 @@ packages: optional: true '@shopify/polaris-tokens@8.10.0': - resolution: {integrity: sha512-y4PDtRbFKGHwA6Lu7a3L4N9SDP6gZv4tw6u0viumtcXcbF0T2j1xPmyuJZNc9c7vmhNSARCg27NGQFpPgxuaEg==} + resolution: + {integrity: sha512-y4PDtRbFKGHwA6Lu7a3L4N9SDP6gZv4tw6u0viumtcXcbF0T2j1xPmyuJZNc9c7vmhNSARCg27NGQFpPgxuaEg==} engines: {node: ^16.17.0 || >=18.12.0} '@shopify/polaris@12.27.0': - resolution: {integrity: sha512-Y8yus6iEjcfW2ZtEJtlqxbWeDJqTX3S/MOLH4GWRvU5gFYJQhlaHaETs0+OimbhEpO95mXbY8qB+KnIJaVBHwA==} + resolution: + {integrity: sha512-Y8yus6iEjcfW2ZtEJtlqxbWeDJqTX3S/MOLH4GWRvU5gFYJQhlaHaETs0+OimbhEpO95mXbY8qB+KnIJaVBHwA==} engines: {node: ^16.17.0 || >=18.12.0} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 '@shopify/react-effect@4.1.12': - resolution: {integrity: sha512-Zy0CH0onvv/Jll4ePxvWa1STS6cILjoFI+6LxMFapC8ZVcCQdnrQFLmuoyF+rfyuFqJtwHE9y1sDZcP+EkW3GQ==} + resolution: + {integrity: sha512-Zy0CH0onvv/Jll4ePxvWa1STS6cILjoFI+6LxMFapC8ZVcCQdnrQFLmuoyF+rfyuFqJtwHE9y1sDZcP+EkW3GQ==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: @@ -4030,21 +4641,24 @@ packages: react-dom: '>=16.8.0 <18.0.0' '@shopify/react-hooks@2.1.19': - resolution: {integrity: sha512-IZ1RbYB9fHfERveg8ZdAbJcZ7uN1yDH/4Jse8v8+GI3YlGnKn31XSB6vmk5v5Ti2kNvOK84LFdcmRDWRQa3k3A==} + resolution: + {integrity: sha512-IZ1RbYB9fHfERveg8ZdAbJcZ7uN1yDH/4Jse8v8+GI3YlGnKn31XSB6vmk5v5Ti2kNvOK84LFdcmRDWRQa3k3A==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: '>=16.8.0 <18.0.0' '@shopify/react-i18n@6.4.0': - resolution: {integrity: sha512-slWBcgfYD2QstNRQTZxXI8iJdPyhek32N8TeGLU315K2zvIGPzOZaFRN+2dzVlY8WWFd/auQ7xY5x+a3gOx5tg==} + resolution: + {integrity: sha512-slWBcgfYD2QstNRQTZxXI8iJdPyhek32N8TeGLU315K2zvIGPzOZaFRN+2dzVlY8WWFd/auQ7xY5x+a3gOx5tg==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: '>=16.8.0 <18.0.0' '@shopify/react-testing@3.3.10': - resolution: {integrity: sha512-l1juWNqe4rRrP5bcOB6riJEd1Bb0BgfnGVKb9GB+o8QtTv1ti3YxGdyU+D/qpIuXBG5h5SNR2wgECdD4kpqVeg==} + resolution: + {integrity: sha512-l1juWNqe4rRrP5bcOB6riJEd1Bb0BgfnGVKb9GB+o8QtTv1ti3YxGdyU+D/qpIuXBG5h5SNR2wgECdD4kpqVeg==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: @@ -4052,505 +4666,649 @@ packages: react-dom: '>=16.8.0 <18.0.0' '@shopify/theme-check-common@3.23.0': - resolution: {integrity: sha512-g3aR7vw/hulA/ugGG8htRyoqiPsBhxEkQzVGivX5L1ymPYGFxt6ZwdhkpNLUEw+rWwP6fqnUoSjipbPtjYZjIQ==} + resolution: + {integrity: sha512-g3aR7vw/hulA/ugGG8htRyoqiPsBhxEkQzVGivX5L1ymPYGFxt6ZwdhkpNLUEw+rWwP6fqnUoSjipbPtjYZjIQ==} '@shopify/theme-check-docs-updater@3.23.0': - resolution: {integrity: sha512-nfbRgouM3Adm9Zbljf3YHHi3YXVGHC45VJUkyVZ9T1d47RL1XfPzpximUai7OKA8CdN+SSYV2b9aBXb/T6QADA==} + resolution: + {integrity: sha512-nfbRgouM3Adm9Zbljf3YHHi3YXVGHC45VJUkyVZ9T1d47RL1XfPzpximUai7OKA8CdN+SSYV2b9aBXb/T6QADA==} hasBin: true '@shopify/theme-check-node@3.23.0': - resolution: {integrity: sha512-EfzHWaXeq0ei/8wyuwh9qOUIkZbzFvTHjAB4BfbQpBZHbX82OUTCfhxSMsS7rqvk+mVSeaiMPq9ZVPf5iHri7w==} + resolution: + {integrity: sha512-EfzHWaXeq0ei/8wyuwh9qOUIkZbzFvTHjAB4BfbQpBZHbX82OUTCfhxSMsS7rqvk+mVSeaiMPq9ZVPf5iHri7w==} '@shopify/theme-graph@0.2.1': - resolution: {integrity: sha512-S1DFAb71NqVzOr89Jh3OjVrT7tP/e0gbJHKp1gRG1/dGW7T0xCvZZGkhgNU04x5qJGY7umAkzI4oCvQWpv1ogg==} + resolution: + {integrity: sha512-S1DFAb71NqVzOr89Jh3OjVrT7tP/e0gbJHKp1gRG1/dGW7T0xCvZZGkhgNU04x5qJGY7umAkzI4oCvQWpv1ogg==} hasBin: true '@shopify/theme-hot-reload@0.0.18': - resolution: {integrity: sha512-l+IBuk+rG5T+5PKYyPrwgh7PDCxmEMpBFJeen6PM+h6RI4CDhAGRaiwUo5eN1o1JX51HdHHCts3rTEW+KUgq+Q==} + resolution: + {integrity: sha512-l+IBuk+rG5T+5PKYyPrwgh7PDCxmEMpBFJeen6PM+h6RI4CDhAGRaiwUo5eN1o1JX51HdHHCts3rTEW+KUgq+Q==} '@shopify/theme-language-server-common@2.20.0': - resolution: {integrity: sha512-NgkFR+UnvvJ2rtB1buYyEs4ed0sZuEe4g7Fu92UamKrJxAh3iWXnFtcLkPulIEgilNRN6PPp38f6mnVA/cBZrA==} + resolution: + {integrity: sha512-NgkFR+UnvvJ2rtB1buYyEs4ed0sZuEe4g7Fu92UamKrJxAh3iWXnFtcLkPulIEgilNRN6PPp38f6mnVA/cBZrA==} '@shopify/theme-language-server-node@2.20.0': - resolution: {integrity: sha512-8iYQrzGdkmSIzG0XVKyKhksW75EV6zQfthQlkKeDPkn4//B5qCR4ftITc5igLx+ootOYG905ex/FyWy+yhsOlg==} + resolution: + {integrity: sha512-8iYQrzGdkmSIzG0XVKyKhksW75EV6zQfthQlkKeDPkn4//B5qCR4ftITc5igLx+ootOYG905ex/FyWy+yhsOlg==} '@shopify/toml-patch@0.3.0': - resolution: {integrity: sha512-ruv2FT17FW3CfWx8jXEyfx3xZDdo22PDaFQ9R7QYOovXQbgQCIKY+5QjGVBA7jsyLm+Wa2ngVANmt7MS0M/g+w==} + resolution: + {integrity: sha512-ruv2FT17FW3CfWx8jXEyfx3xZDdo22PDaFQ9R7QYOovXQbgQCIKY+5QjGVBA7jsyLm+Wa2ngVANmt7MS0M/g+w==} '@shopify/useful-types@4.0.3': - resolution: {integrity: sha512-vT48uKFSTfI3HPqtNI3lahWRDncFuuzBVfj2eUxEpQO//3Sn+IIo4zRPT9W4EHBiVWJyBeW5CTzVtvGhQma4EA==} + resolution: + {integrity: sha512-vT48uKFSTfI3HPqtNI3lahWRDncFuuzBVfj2eUxEpQO//3Sn+IIo4zRPT9W4EHBiVWJyBeW5CTzVtvGhQma4EA==} engines: {node: '>=12.14.0'} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@sinclair/typebox@0.34.48': - resolution: {integrity: sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==} + resolution: + {integrity: sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==} '@sindresorhus/is@5.6.0': - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + resolution: + {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} '@smithy/abort-controller@4.2.8': - resolution: {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} + resolution: + {integrity: sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==} engines: {node: '>=18.0.0'} '@smithy/chunked-blob-reader-native@4.2.1': - resolution: {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} + resolution: + {integrity: sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==} engines: {node: '>=18.0.0'} '@smithy/chunked-blob-reader@5.2.0': - resolution: {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} + resolution: + {integrity: sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==} engines: {node: '>=18.0.0'} '@smithy/config-resolver@4.4.6': - resolution: {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} + resolution: + {integrity: sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==} engines: {node: '>=18.0.0'} '@smithy/core@3.22.1': - resolution: {integrity: sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==} + resolution: + {integrity: sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.2.8': - resolution: {integrity: sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==} + resolution: + {integrity: sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==} engines: {node: '>=18.0.0'} '@smithy/eventstream-codec@4.2.8': - resolution: {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} + resolution: + {integrity: sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==} engines: {node: '>=18.0.0'} '@smithy/eventstream-serde-browser@4.2.8': - resolution: {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} + resolution: + {integrity: sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==} engines: {node: '>=18.0.0'} '@smithy/eventstream-serde-config-resolver@4.3.8': - resolution: {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} + resolution: + {integrity: sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==} engines: {node: '>=18.0.0'} '@smithy/eventstream-serde-node@4.2.8': - resolution: {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} + resolution: + {integrity: sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==} engines: {node: '>=18.0.0'} '@smithy/eventstream-serde-universal@4.2.8': - resolution: {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} + resolution: + {integrity: sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==} engines: {node: '>=18.0.0'} '@smithy/fetch-http-handler@5.3.9': - resolution: {integrity: sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==} + resolution: + {integrity: sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==} engines: {node: '>=18.0.0'} '@smithy/hash-blob-browser@4.2.9': - resolution: {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} + resolution: + {integrity: sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==} engines: {node: '>=18.0.0'} '@smithy/hash-node@4.2.8': - resolution: {integrity: sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==} + resolution: + {integrity: sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==} engines: {node: '>=18.0.0'} '@smithy/hash-stream-node@4.2.8': - resolution: {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} + resolution: + {integrity: sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==} engines: {node: '>=18.0.0'} '@smithy/invalid-dependency@4.2.8': - resolution: {integrity: sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==} + resolution: + {integrity: sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': - resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + resolution: + {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} '@smithy/is-array-buffer@4.2.0': - resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} + resolution: + {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} engines: {node: '>=18.0.0'} '@smithy/md5-js@4.2.8': - resolution: {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} + resolution: + {integrity: sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==} engines: {node: '>=18.0.0'} '@smithy/middleware-content-length@4.2.8': - resolution: {integrity: sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==} + resolution: + {integrity: sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==} engines: {node: '>=18.0.0'} '@smithy/middleware-endpoint@4.4.13': - resolution: {integrity: sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==} + resolution: + {integrity: sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==} engines: {node: '>=18.0.0'} '@smithy/middleware-retry@4.4.30': - resolution: {integrity: sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==} + resolution: + {integrity: sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.9': - resolution: {integrity: sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==} + resolution: + {integrity: sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==} engines: {node: '>=18.0.0'} '@smithy/middleware-stack@4.2.8': - resolution: {integrity: sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==} + resolution: + {integrity: sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==} engines: {node: '>=18.0.0'} '@smithy/node-config-provider@4.3.8': - resolution: {integrity: sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==} + resolution: + {integrity: sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==} engines: {node: '>=18.0.0'} '@smithy/node-http-handler@4.4.9': - resolution: {integrity: sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==} + resolution: + {integrity: sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==} engines: {node: '>=18.0.0'} '@smithy/property-provider@4.2.8': - resolution: {integrity: sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==} + resolution: + {integrity: sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==} engines: {node: '>=18.0.0'} '@smithy/protocol-http@5.3.8': - resolution: {integrity: sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==} + resolution: + {integrity: sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==} engines: {node: '>=18.0.0'} '@smithy/querystring-builder@4.2.8': - resolution: {integrity: sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==} + resolution: + {integrity: sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==} engines: {node: '>=18.0.0'} '@smithy/querystring-parser@4.2.8': - resolution: {integrity: sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==} + resolution: + {integrity: sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==} engines: {node: '>=18.0.0'} '@smithy/service-error-classification@4.2.8': - resolution: {integrity: sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==} + resolution: + {integrity: sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==} engines: {node: '>=18.0.0'} '@smithy/shared-ini-file-loader@4.4.3': - resolution: {integrity: sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==} + resolution: + {integrity: sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==} engines: {node: '>=18.0.0'} '@smithy/signature-v4@5.3.8': - resolution: {integrity: sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==} + resolution: + {integrity: sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==} engines: {node: '>=18.0.0'} '@smithy/smithy-client@4.11.2': - resolution: {integrity: sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==} + resolution: + {integrity: sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==} engines: {node: '>=18.0.0'} '@smithy/types@4.12.0': - resolution: {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} + resolution: + {integrity: sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==} engines: {node: '>=18.0.0'} '@smithy/url-parser@4.2.8': - resolution: {integrity: sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==} + resolution: + {integrity: sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==} engines: {node: '>=18.0.0'} '@smithy/util-base64@4.3.0': - resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} + resolution: + {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} engines: {node: '>=18.0.0'} '@smithy/util-body-length-browser@4.2.0': - resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} + resolution: + {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} engines: {node: '>=18.0.0'} '@smithy/util-body-length-node@4.2.1': - resolution: {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} + resolution: + {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': - resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + resolution: + {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} '@smithy/util-buffer-from@4.2.0': - resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} + resolution: + {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} engines: {node: '>=18.0.0'} '@smithy/util-config-provider@4.2.0': - resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} + resolution: + {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} engines: {node: '>=18.0.0'} '@smithy/util-defaults-mode-browser@4.3.29': - resolution: {integrity: sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==} + resolution: + {integrity: sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==} engines: {node: '>=18.0.0'} '@smithy/util-defaults-mode-node@4.2.32': - resolution: {integrity: sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==} + resolution: + {integrity: sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.2.8': - resolution: {integrity: sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==} + resolution: + {integrity: sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==} engines: {node: '>=18.0.0'} '@smithy/util-hex-encoding@4.2.0': - resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} + resolution: + {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} engines: {node: '>=18.0.0'} '@smithy/util-middleware@4.2.8': - resolution: {integrity: sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==} + resolution: + {integrity: sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==} engines: {node: '>=18.0.0'} '@smithy/util-retry@4.2.8': - resolution: {integrity: sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==} + resolution: + {integrity: sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==} engines: {node: '>=18.0.0'} '@smithy/util-stream@4.5.11': - resolution: {integrity: sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==} + resolution: + {integrity: sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==} engines: {node: '>=18.0.0'} '@smithy/util-uri-escape@4.2.0': - resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} + resolution: + {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} engines: {node: '>=18.0.0'} '@smithy/util-utf8@2.3.0': - resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + resolution: + {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} '@smithy/util-utf8@4.2.0': - resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} + resolution: + {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} engines: {node: '>=18.0.0'} '@smithy/util-waiter@4.2.8': - resolution: {integrity: sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==} + resolution: + {integrity: sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==} engines: {node: '>=18.0.0'} '@smithy/uuid@1.1.0': - resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} + resolution: + {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} engines: {node: '>=18.0.0'} '@szmarczak/http-timer@5.0.1': - resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + resolution: + {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} '@teppeis/multimaps@3.0.0': - resolution: {integrity: sha512-ID7fosbc50TbT0MK0EG12O+gAP3W3Aa/Pz4DaTtQtEvlc9Odaqi0de+xuZ7Li2GtK4HzEX7IuRWS/JmZLksR3Q==} + resolution: + {integrity: sha512-ID7fosbc50TbT0MK0EG12O+gAP3W3Aa/Pz4DaTtQtEvlc9Odaqi0de+xuZ7Li2GtK4HzEX7IuRWS/JmZLksR3Q==} engines: {node: '>=14'} '@theguild/federation-composition@0.21.3': - resolution: {integrity: sha512-+LlHTa4UbRpZBog3ggAxjYIFvdfH3UMvvBUptur19TMWkqU4+n3GmN+mDjejU+dyBXIG27c25RsiQP1HyvM99g==} + resolution: + {integrity: sha512-+LlHTa4UbRpZBog3ggAxjYIFvdfH3UMvvBUptur19TMWkqU4+n3GmN+mDjejU+dyBXIG27c25RsiQP1HyvM99g==} engines: {node: '>=18'} peerDependencies: graphql: ^16.0.0 '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + resolution: + {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} '@ts-morph/common@0.18.1': - resolution: {integrity: sha512-RVE+zSRICWRsfrkAw5qCAK+4ZH9kwEFv5h0+/YeHTLieWP7F4wWq4JsKFuNWG+fYh/KF+8rAtgdj5zb2mm+DVA==} + resolution: + {integrity: sha512-RVE+zSRICWRsfrkAw5qCAK+4ZH9kwEFv5h0+/YeHTLieWP7F4wWq4JsKFuNWG+fYh/KF+8rAtgdj5zb2mm+DVA==} '@ts-morph/common@0.21.0': - resolution: {integrity: sha512-ES110Mmne5Vi4ypUKrtVQfXFDtCsDXiUiGxF6ILVlE90dDD4fdpC1LSjydl/ml7xJWKSDZwUYD2zkOePMSrPBA==} + resolution: + {integrity: sha512-ES110Mmne5Vi4ypUKrtVQfXFDtCsDXiUiGxF6ILVlE90dDD4fdpC1LSjydl/ml7xJWKSDZwUYD2zkOePMSrPBA==} '@tsconfig/node10@1.0.11': - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + resolution: + {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + resolution: + {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + resolution: + {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + resolution: + {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + resolution: + {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + resolution: + {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} '@types/archiver@5.3.2': - resolution: {integrity: sha512-IctHreBuWE5dvBDz/0WeKtyVKVRs4h75IblxOACL92wU66v+HGAfEYAOyXkOFphvRJMhuXdI9huDXpX0FC6lCw==} + resolution: + {integrity: sha512-IctHreBuWE5dvBDz/0WeKtyVKVRs4h75IblxOACL92wU66v+HGAfEYAOyXkOFphvRJMhuXdI9huDXpX0FC6lCw==} '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + resolution: + {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} '@types/brotli@1.3.4': - resolution: {integrity: sha512-cKYjgaS2DMdCKF7R0F5cgx1nfBYObN2ihIuPGQ4/dlIY6RpV7OWNwe9L8V4tTVKL2eZqOkNM9FM/rgTvLf4oXw==} + resolution: + {integrity: sha512-cKYjgaS2DMdCKF7R0F5cgx1nfBYObN2ihIuPGQ4/dlIY6RpV7OWNwe9L8V4tTVKL2eZqOkNM9FM/rgTvLf4oXw==} '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + resolution: + {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} '@types/cli-progress@3.11.6': - resolution: {integrity: sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==} + resolution: + {integrity: sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==} '@types/commondir@1.0.2': - resolution: {integrity: sha512-ugIRUhO6vLS6Pi5Pz/0yuMYX7Q1rsEpXNrU7ef6rVdH+cb3hTDz8HL55C0QINDqMB4ZWsrE8lLWyYUbZKPhduQ==} + resolution: + {integrity: sha512-ugIRUhO6vLS6Pi5Pz/0yuMYX7Q1rsEpXNrU7ef6rVdH+cb3hTDz8HL55C0QINDqMB4ZWsrE8lLWyYUbZKPhduQ==} '@types/connect@3.4.38': - resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + resolution: + {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + resolution: + {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} '@types/deep-eql@4.0.2': - resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + resolution: + {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} '@types/diff@5.2.3': - resolution: {integrity: sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==} + resolution: + {integrity: sha512-K0Oqlrq3kQMaO2RhfrNQX5trmt+XLyom88zS0u84nnIcLvFnRUMRRHmrGny5GSM+kNO9IZLARsdQHDzkhAgmrQ==} '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + resolution: + {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/express-serve-static-core@4.19.6': - resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + resolution: + {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} '@types/express@4.17.22': - resolution: {integrity: sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==} + resolution: + {integrity: sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==} '@types/fs-extra@9.0.13': - resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + resolution: + {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} '@types/glob@8.1.0': - resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + resolution: + {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} '@types/global-agent@3.0.0': - resolution: {integrity: sha512-OmvaPJtTaY/wd1hxelLJmf8oKQpmKZdrlfQ+MWL59eKSEHJDDEifIo69248bdJ0yLIN+iMNQ6sKMtnwU6AxajA==} + resolution: + {integrity: sha512-OmvaPJtTaY/wd1hxelLJmf8oKQpmKZdrlfQ+MWL59eKSEHJDDEifIo69248bdJ0yLIN+iMNQ6sKMtnwU6AxajA==} '@types/gradient-string@1.1.6': - resolution: {integrity: sha512-LkaYxluY4G5wR1M4AKQUal2q61Di1yVVCw42ImFTuaIoQVgmV0WP1xUaLB8zwb47mp82vWTpePI9JmrjEnJ7nQ==} + resolution: + {integrity: sha512-LkaYxluY4G5wR1M4AKQUal2q61Di1yVVCw42ImFTuaIoQVgmV0WP1xUaLB8zwb47mp82vWTpePI9JmrjEnJ7nQ==} '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + resolution: + {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} '@types/hoist-non-react-statics@3.3.6': - resolution: {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} + resolution: + {integrity: sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==} '@types/http-cache-semantics@4.0.4': - resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + resolution: + {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + resolution: + {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} '@types/istanbul-lib-coverage@2.0.6': - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + resolution: + {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} '@types/istanbul-lib-report@3.0.3': - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + resolution: + {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} '@types/istanbul-reports@3.0.4': - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + resolution: + {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} '@types/js-yaml@4.0.9': - resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + resolution: + {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + resolution: + {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + resolution: + {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} '@types/lodash@4.17.19': - resolution: {integrity: sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==} + resolution: + {integrity: sha512-NYqRyg/hIQrYPT9lbOeYc3kIRabJDn/k4qQHIXUpx88CBDww2fD15Sg5kbXlW86zm2XEW4g0QxkTI3/Kfkc7xQ==} '@types/mime@1.3.5': - resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + resolution: + {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} '@types/minimatch@5.1.2': - resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + resolution: + {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + resolution: + {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} '@types/mute-stream@0.0.4': - resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + resolution: + {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + resolution: + {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} '@types/node@18.19.70': - resolution: {integrity: sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==} + resolution: + {integrity: sha512-RE+K0+KZoEpDUbGGctnGdkrLFwi1eYKTlIHNl2Um98mUkGsm1u2Ff6Ltd0e8DktTtC98uy7rSj+hO8t/QuLoVQ==} '@types/node@22.18.8': - resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} + resolution: + {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} '@types/node@24.7.0': - resolution: {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} + resolution: + {integrity: sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==} '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + resolution: + {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + resolution: + {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} '@types/prettier@2.7.3': - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + resolution: + {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} '@types/prop-types@15.7.14': - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + resolution: + {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} '@types/proper-lockfile@4.1.4': - resolution: {integrity: sha512-uo2ABllncSqg9F1D4nugVl9v93RmjxF6LJzQLMLDdPaXCUIDPeOJ21Gbqi43xNKzBi/WQ0Q0dICqufzQbMjipQ==} + resolution: + {integrity: sha512-uo2ABllncSqg9F1D4nugVl9v93RmjxF6LJzQLMLDdPaXCUIDPeOJ21Gbqi43xNKzBi/WQ0Q0dICqufzQbMjipQ==} '@types/qrcode.react@1.0.5': - resolution: {integrity: sha512-BghPtnlwvrvq8QkGa1H25YnN+5OIgCKFuQruncGWLGJYOzeSKiix/4+B9BtfKF2wf5ja8yfyWYA3OXju995G8w==} + resolution: + {integrity: sha512-BghPtnlwvrvq8QkGa1H25YnN+5OIgCKFuQruncGWLGJYOzeSKiix/4+B9BtfKF2wf5ja8yfyWYA3OXju995G8w==} '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + resolution: + {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} '@types/range-parser@1.2.7': - resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + resolution: + {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} '@types/react-dom@16.9.25': - resolution: {integrity: sha512-ZK//eAPhwft9Ul2/Zj+6O11YR6L4JX0J2sVeBC9Ft7x7HFN7xk7yUV/zDxqV6rjvqgl6r8Dq7oQImxtyf/Mzcw==} + resolution: + {integrity: sha512-ZK//eAPhwft9Ul2/Zj+6O11YR6L4JX0J2sVeBC9Ft7x7HFN7xk7yUV/zDxqV6rjvqgl6r8Dq7oQImxtyf/Mzcw==} peerDependencies: '@types/react': 18.3.12 '@types/react-dom@18.2.0': - resolution: {integrity: sha512-8yQrvS6sMpSwIovhPOwfyNf2Wz6v/B62LFSVYQ85+Rq3tLsBIG7rP5geMxaijTUxSkrO6RzN/IRuIAADYQsleA==} + resolution: + {integrity: sha512-8yQrvS6sMpSwIovhPOwfyNf2Wz6v/B62LFSVYQ85+Rq3tLsBIG7rP5geMxaijTUxSkrO6RzN/IRuIAADYQsleA==} '@types/react-transition-group@4.4.12': - resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} + resolution: + {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} peerDependencies: '@types/react': 18.3.12 '@types/react@18.3.12': - resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} + resolution: + {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} '@types/readdir-glob@1.1.5': - resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} + resolution: + {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} '@types/retry@0.12.5': - resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} + resolution: + {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} '@types/rimraf@3.0.2': - resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==} + resolution: + {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==} '@types/semver@7.7.0': - resolution: {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} + resolution: + {integrity: sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==} '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + resolution: + {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + resolution: + {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} '@types/statuses@2.0.5': - resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + resolution: + {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} '@types/tinycolor2@1.4.6': - resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} + resolution: + {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==} '@types/tmp@0.2.6': - resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} + resolution: + {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + resolution: + {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + resolution: + {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} '@types/uuid@10.0.0': - resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + resolution: + {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} '@types/uuid@9.0.1': - resolution: {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} + resolution: + {integrity: sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==} '@types/which@3.0.4': - resolution: {integrity: sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==} + resolution: + {integrity: sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w==} '@types/wrap-ansi@3.0.0': - resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + resolution: + {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + resolution: + {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} '@types/yargs-parser@21.0.3': - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + resolution: + {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} '@types/yargs@15.0.19': - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + resolution: + {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} '@typescript-eslint/eslint-plugin@5.62.0': - resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + resolution: + {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4561,7 +5319,8 @@ packages: optional: true '@typescript-eslint/eslint-plugin@7.13.1': - resolution: {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} + resolution: + {integrity: sha512-kZqi+WZQaZfPKnsflLJQCz6Ze9FFSMfXrrIOcyargekQxG37ES7DJNpJUE9Q/X5n3yTIP/WPutVNzgknQ7biLg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -4572,13 +5331,15 @@ packages: optional: true '@typescript-eslint/experimental-utils@5.62.0': - resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + resolution: + {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 '@typescript-eslint/parser@5.62.0': - resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + resolution: + {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4588,7 +5349,8 @@ packages: optional: true '@typescript-eslint/parser@7.18.0': - resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + resolution: + {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4598,35 +5360,42 @@ packages: optional: true '@typescript-eslint/project-service@8.43.0': - resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} + resolution: + {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/scope-manager@5.62.0': - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + resolution: + {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@typescript-eslint/scope-manager@7.13.1': - resolution: {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} + resolution: + {integrity: sha512-adbXNVEs6GmbzaCpymHQ0MB6E4TqoiVbC0iqG3uijR8ZYfpAXMGttouQzF4Oat3P2GxDVIrg7bMI/P65LiQZdg==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + resolution: + {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/scope-manager@8.43.0': - resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} + resolution: + {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.43.0': - resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} + resolution: + {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/type-utils@5.62.0': - resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + resolution: + {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4636,7 +5405,8 @@ packages: optional: true '@typescript-eslint/type-utils@7.13.1': - resolution: {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} + resolution: + {integrity: sha512-aWDbLu1s9bmgPGXSzNCxELu+0+HQOapV/y+60gPXafR8e2g1Bifxzevaa+4L2ytCWm+CHqpELq4CSoN9ELiwCg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4646,30 +5416,36 @@ packages: optional: true '@typescript-eslint/type-utils@8.43.0': - resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} + resolution: + {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/types@5.62.0': - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + resolution: + {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@typescript-eslint/types@7.13.1': - resolution: {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} + resolution: + {integrity: sha512-7K7HMcSQIAND6RBL4kDl24sG/xKM13cA85dc7JnmQXw2cBDngg7c19B++JzvJHRG3zG36n9j1i451GBzRuHchw==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + resolution: + {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/types@8.43.0': - resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} + resolution: + {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + resolution: + {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4678,7 +5454,8 @@ packages: optional: true '@typescript-eslint/typescript-estree@7.13.1': - resolution: {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} + resolution: + {integrity: sha512-uxNr51CMV7npU1BxZzYjoVz9iyjckBduFBP0S5sLlh1tXYzHzgZ3BR9SVsNed+LmwKrmnqN3Kdl5t7eZ5TS1Yw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -4687,7 +5464,8 @@ packages: optional: true '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + resolution: + {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -4696,70 +5474,84 @@ packages: optional: true '@typescript-eslint/typescript-estree@8.43.0': - resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} + resolution: + {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/utils@5.62.0': - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + resolution: + {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 '@typescript-eslint/utils@7.13.1': - resolution: {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} + resolution: + {integrity: sha512-h5MzFBD5a/Gh/fvNdp9pTfqJAbuQC4sCN2WzuXme71lqFJsZtLbjxfSk4r3p02WIArOF9N94pdsLiGutpDbrXQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + resolution: + {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 '@typescript-eslint/utils@8.43.0': - resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} + resolution: + {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/visitor-keys@5.62.0': - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + resolution: + {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@typescript-eslint/visitor-keys@7.13.1': - resolution: {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} + resolution: + {integrity: sha512-k/Bfne7lrP7hcb7m9zSsgcBmo+8eicqqfNAJ7uUY+jkTFpKeH2FSkWpFRtimBxgkyvqfu9jTPRbYOvud6isdXA==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + resolution: + {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/visitor-keys@8.43.0': - resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} + resolution: + {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + resolution: + {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} '@vitejs/plugin-react-refresh@1.3.6': - resolution: {integrity: sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==} + resolution: + {integrity: sha512-iNR/UqhUOmFFxiezt0em9CgmiJBdWR+5jGxB2FihaoJfqGt76kiwaKoVOJVU5NYcDWMdN06LbyN2VIGIoYdsEA==} engines: {node: '>=12.0.0'} deprecated: This package has been deprecated in favor of @vitejs/plugin-react '@vitest/coverage-istanbul@3.2.1': - resolution: {integrity: sha512-GLNByl+nFP1GPAhmlL7iFVonVKk/GuZcCfNSXX6uPuH30X62jmQy3ZkzxTZoHLkTQwTONM/JY9sxVjQyuL6koQ==} + resolution: + {integrity: sha512-GLNByl+nFP1GPAhmlL7iFVonVKk/GuZcCfNSXX6uPuH30X62jmQy3ZkzxTZoHLkTQwTONM/JY9sxVjQyuL6koQ==} peerDependencies: vitest: 3.2.1 '@vitest/expect@3.2.1': - resolution: {integrity: sha512-FqS/BnDOzV6+IpxrTg5GQRyLOCtcJqkwMwcS8qGCI2IyRVDwPAtutztaf1CjtPHlZlWtl1yUPCd7HM0cNiDOYw==} + resolution: + {integrity: sha512-FqS/BnDOzV6+IpxrTg5GQRyLOCtcJqkwMwcS8qGCI2IyRVDwPAtutztaf1CjtPHlZlWtl1yUPCd7HM0cNiDOYw==} '@vitest/mocker@3.2.1': - resolution: {integrity: sha512-OXxMJnx1lkB+Vl65Re5BrsZEHc90s5NMjD23ZQ9NlU7f7nZiETGoX4NeKZSmsKjseuMq2uOYXdLOeoM0pJU+qw==} + resolution: + {integrity: sha512-OXxMJnx1lkB+Vl65Re5BrsZEHc90s5NMjD23ZQ9NlU7f7nZiETGoX4NeKZSmsKjseuMq2uOYXdLOeoM0pJU+qw==} peerDependencies: msw: ^2.4.9 vite: 6.4.1 @@ -4770,104 +5562,131 @@ packages: optional: true '@vitest/pretty-format@3.2.1': - resolution: {integrity: sha512-xBh1X2GPlOGBupp6E1RcUQWIxw0w/hRLd3XyBS6H+dMdKTAqHDNsIR2AnJwPA3yYe9DFy3VUKTe3VRTrAiQ01g==} + resolution: + {integrity: sha512-xBh1X2GPlOGBupp6E1RcUQWIxw0w/hRLd3XyBS6H+dMdKTAqHDNsIR2AnJwPA3yYe9DFy3VUKTe3VRTrAiQ01g==} '@vitest/runner@3.2.1': - resolution: {integrity: sha512-kygXhNTu/wkMYbwYpS3z/9tBe0O8qpdBuC3dD/AW9sWa0LE/DAZEjnHtWA9sIad7lpD4nFW1yQ+zN7mEKNH3yA==} + resolution: + {integrity: sha512-kygXhNTu/wkMYbwYpS3z/9tBe0O8qpdBuC3dD/AW9sWa0LE/DAZEjnHtWA9sIad7lpD4nFW1yQ+zN7mEKNH3yA==} '@vitest/snapshot@3.2.1': - resolution: {integrity: sha512-5xko/ZpW2Yc65NVK9Gpfg2y4BFvcF+At7yRT5AHUpTg9JvZ4xZoyuRY4ASlmNcBZjMslV08VRLDrBOmUe2YX3g==} + resolution: + {integrity: sha512-5xko/ZpW2Yc65NVK9Gpfg2y4BFvcF+At7yRT5AHUpTg9JvZ4xZoyuRY4ASlmNcBZjMslV08VRLDrBOmUe2YX3g==} '@vitest/spy@3.2.1': - resolution: {integrity: sha512-Nbfib34Z2rfcJGSetMxjDCznn4pCYPZOtQYox2kzebIJcgH75yheIKd5QYSFmR8DIZf2M8fwOm66qSDIfRFFfQ==} + resolution: + {integrity: sha512-Nbfib34Z2rfcJGSetMxjDCznn4pCYPZOtQYox2kzebIJcgH75yheIKd5QYSFmR8DIZf2M8fwOm66qSDIfRFFfQ==} '@vitest/utils@3.2.1': - resolution: {integrity: sha512-KkHlGhePEKZSub5ViknBcN5KEF+u7dSUr9NW8QsVICusUojrgrOnnY3DEWWO877ax2Pyopuk2qHmt+gkNKnBVw==} + resolution: + {integrity: sha512-KkHlGhePEKZSub5ViknBcN5KEF+u7dSUr9NW8QsVICusUojrgrOnnY3DEWWO877ax2Pyopuk2qHmt+gkNKnBVw==} '@vscode/l10n@0.0.18': - resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + resolution: + {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} '@vscode/web-custom-data@0.4.13': - resolution: {integrity: sha512-2ZUIRfhofZ/npLlf872EBnPmn27Kt4M2UssmQIfnJvgGgMYZJ5fvtHEDnttBBf2hnVtBgNCqZMVHJA+wsFVqTA==} + resolution: + {integrity: sha512-2ZUIRfhofZ/npLlf872EBnPmn27Kt4M2UssmQIfnJvgGgMYZJ5fvtHEDnttBBf2hnVtBgNCqZMVHJA+wsFVqTA==} '@whatwg-node/disposablestack@0.0.6': - resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==} + resolution: + {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==} engines: {node: '>=18.0.0'} '@whatwg-node/fetch@0.10.13': - resolution: {integrity: sha512-b4PhJ+zYj4357zwk4TTuF2nEe0vVtOrwdsrNo5hL+u1ojXNhh1FgJ6pg1jzDlwlT4oBdzfSwaBwMCtFCsIWg8Q==} + resolution: + {integrity: sha512-b4PhJ+zYj4357zwk4TTuF2nEe0vVtOrwdsrNo5hL+u1ojXNhh1FgJ6pg1jzDlwlT4oBdzfSwaBwMCtFCsIWg8Q==} engines: {node: '>=18.0.0'} '@whatwg-node/fetch@0.10.8': - resolution: {integrity: sha512-Rw9z3ctmeEj8QIB9MavkNJqekiu9usBCSMZa+uuAvM0lF3v70oQVCXNppMIqaV6OTZbdaHF1M2HLow58DEw+wg==} + resolution: + {integrity: sha512-Rw9z3ctmeEj8QIB9MavkNJqekiu9usBCSMZa+uuAvM0lF3v70oQVCXNppMIqaV6OTZbdaHF1M2HLow58DEw+wg==} engines: {node: '>=18.0.0'} '@whatwg-node/node-fetch@0.7.21': - resolution: {integrity: sha512-QC16IdsEyIW7kZd77aodrMO7zAoDyyqRCTLg+qG4wqtP4JV9AA+p7/lgqMdD29XyiYdVvIdFrfI9yh7B1QvRvw==} + resolution: + {integrity: sha512-QC16IdsEyIW7kZd77aodrMO7zAoDyyqRCTLg+qG4wqtP4JV9AA+p7/lgqMdD29XyiYdVvIdFrfI9yh7B1QvRvw==} engines: {node: '>=18.0.0'} '@whatwg-node/node-fetch@0.8.5': - resolution: {integrity: sha512-4xzCl/zphPqlp9tASLVeUhB5+WJHbuWGYpfoC2q1qh5dw0AqZBW7L27V5roxYWijPxj4sspRAAoOH3d2ztaHUQ==} + resolution: + {integrity: sha512-4xzCl/zphPqlp9tASLVeUhB5+WJHbuWGYpfoC2q1qh5dw0AqZBW7L27V5roxYWijPxj4sspRAAoOH3d2ztaHUQ==} engines: {node: '>=18.0.0'} '@whatwg-node/promise-helpers@1.3.2': - resolution: {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} + resolution: + {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} engines: {node: '>=16.0.0'} '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + resolution: + {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} '@yarnpkg/parsers@3.0.2': - resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} + resolution: + {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} engines: {node: '>=18.12.0'} '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} + resolution: + {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} hasBin: true abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + resolution: + {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + resolution: + {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + resolution: + {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + resolution: + {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + resolution: + {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + resolution: + {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + resolution: + {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + resolution: + {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + resolution: + {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + resolution: + {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + resolution: + {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 peerDependenciesMeta: @@ -4875,252 +5694,318 @@ packages: optional: true ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + resolution: + {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + resolution: + {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + resolution: + {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + resolution: + {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + resolution: + {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} ansi-escapes@5.0.0: - resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + resolution: + {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} engines: {node: '>=12'} ansi-escapes@6.2.1: - resolution: {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} + resolution: + {integrity: sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==} engines: {node: '>=14.16'} ansi-escapes@7.1.1: - resolution: {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} + resolution: + {integrity: sha512-Zhl0ErHcSRUaVfGUeUdDuLgpkEo8KIFjB4Y9uAc46ScOpdDiU1Dbyplh7qWJeJ/ZHpbyMSM26+X3BySgnIz40Q==} engines: {node: '>=18'} ansi-escapes@7.2.0: - resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} + resolution: + {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + resolution: + {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + resolution: + {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + resolution: + {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + resolution: + {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + resolution: + {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + resolution: + {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} ansi-styles@6.2.3: - resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + resolution: + {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} ansicolors@0.3.2: - resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + resolution: + {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} ansis@3.17.0: - resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + resolution: + {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} engines: {node: '>=14'} any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + resolution: + {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + resolution: + {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} archiver-utils@2.1.0: - resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + resolution: + {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} engines: {node: '>= 6'} archiver-utils@3.0.4: - resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + resolution: + {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} engines: {node: '>= 10'} archiver@5.3.2: - resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + resolution: + {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} engines: {node: '>= 10'} are-docs-informative@0.0.2: - resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + resolution: + {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} engines: {node: '>=14'} arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + resolution: + {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + resolution: + {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + resolution: + {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + resolution: + {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} array-back@3.1.0: - resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + resolution: + {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} engines: {node: '>=6'} array-back@4.0.2: - resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + resolution: + {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} engines: {node: '>=8'} array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + resolution: + {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + resolution: + {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + resolution: + {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + resolution: + {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + resolution: + {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + resolution: + {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + resolution: + {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} engines: {node: '>= 0.4'} array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + resolution: + {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} engines: {node: '>= 0.4'} array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + resolution: + {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + resolution: + {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} engines: {node: '>= 0.4'} arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + resolution: + {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} as-table@1.0.55: - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + resolution: + {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + resolution: + {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} assertion-error-formatter@3.0.0: - resolution: {integrity: sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==} + resolution: + {integrity: sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==} assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + resolution: + {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + resolution: + {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + resolution: + {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + resolution: + {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + resolution: + {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + resolution: + {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + resolution: + {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + resolution: + {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} atomically@2.0.3: - resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} + resolution: + {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} auto-bind@4.0.0: - resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} + resolution: + {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} engines: {node: '>=8'} auto-bind@5.0.1: - resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} + resolution: + {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + resolution: + {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} axe-core@4.10.3: - resolution: {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} + resolution: + {integrity: sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==} engines: {node: '>=4'} axios@1.13.4: - resolution: {integrity: sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==} + resolution: + {integrity: sha512-1wVkUaAO6WyaYtCkcYCOx12ZgpGf9Zif+qXa4n+oYzK558YryKqiL6UWwd5DqiH3VRW0GYhTZQ/vlgJrCoNQlg==} axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + resolution: + {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} babel-plugin-const-enum@1.2.0: - resolution: {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} + resolution: + {integrity: sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==} peerDependencies: '@babel/core': ^7.0.0-0 babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + resolution: + {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} babel-plugin-polyfill-corejs2@0.4.14: - resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} + resolution: + {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-corejs3@0.13.0: - resolution: {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} + resolution: + {integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-polyfill-regenerator@0.6.5: - resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} + resolution: + {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: - resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} + resolution: + {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} babel-plugin-transform-typescript-metadata@0.3.2: - resolution: {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} + resolution: + {integrity: sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==} peerDependencies: '@babel/core': ^7 '@babel/traverse': ^7 @@ -5129,459 +6014,584 @@ packages: optional: true babel-preset-fbjs@3.4.0: - resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} + resolution: + {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + resolution: + {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + resolution: + {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} baseline-browser-mapping@2.8.4: - resolution: {integrity: sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==} + resolution: + {integrity: sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==} hasBin: true before-after-hook@3.0.2: - resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} + resolution: + {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} before-after-hook@4.0.0: - resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} + resolution: + {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + resolution: + {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + resolution: + {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + resolution: + {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} body-parser@1.20.3: - resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} + resolution: + {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} boolean@3.2.0: - resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + resolution: + {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. bottleneck@2.19.5: - resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + resolution: + {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} bowser@2.12.1: - resolution: {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} + resolution: + {integrity: sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==} brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + resolution: + {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + resolution: + {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + resolution: + {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} brotli@1.3.3: - resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + resolution: + {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + resolution: + {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} browserslist@4.26.0: - resolution: {integrity: sha512-P9go2WrP9FiPwLv3zqRD/Uoxo0RSHjzFCiQz7d4vbmwNqQFo9T9WCeP/Qn5EbcKQY6DBbkxEXNcpJOmncNrb7A==} + resolution: + {integrity: sha512-P9go2WrP9FiPwLv3zqRD/Uoxo0RSHjzFCiQz7d4vbmwNqQFo9T9WCeP/Qn5EbcKQY6DBbkxEXNcpJOmncNrb7A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + resolution: + {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + resolution: + {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + resolution: + {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + resolution: + {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} bugsnag-build-reporter@2.0.0: - resolution: {integrity: sha512-jeiGdjEWLjKOKWDroMbYf/5wVSqk03uRxtidTBlORK8swpwnX4sMARQsE4xx8D5IkdqMIQkSHHflZ8uIGYL0rA==} + resolution: + {integrity: sha512-jeiGdjEWLjKOKWDroMbYf/5wVSqk03uRxtidTBlORK8swpwnX4sMARQsE4xx8D5IkdqMIQkSHHflZ8uIGYL0rA==} hasBin: true byline@5.0.0: - resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} + resolution: + {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==} engines: {node: '>=0.10.0'} bytes@3.1.2: - resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + resolution: + {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + resolution: + {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + resolution: + {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + resolution: + {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} engines: {node: '>=14.16'} cachedir@2.4.0: - resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + resolution: + {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + resolution: + {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + resolution: + {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + resolution: + {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + resolution: + {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + resolution: + {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + resolution: + {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} camelcase-keys@9.1.3: - resolution: {integrity: sha512-Rircqi9ch8AnZscQcsA1C47NFdaO3wukpmIRzYcDOrmvgt78hM/sj5pZhZNec2NM12uk5vTwRHZ4anGcrC4ZTg==} + resolution: + {integrity: sha512-Rircqi9ch8AnZscQcsA1C47NFdaO3wukpmIRzYcDOrmvgt78hM/sj5pZhZNec2NM12uk5vTwRHZ4anGcrC4ZTg==} engines: {node: '>=16'} camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + resolution: + {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} camelcase@8.0.0: - resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + resolution: + {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} caniuse-lite@1.0.30001741: - resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} + resolution: + {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} capital-case@1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + resolution: + {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} cardinal@2.1.1: - resolution: {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} + resolution: + {integrity: sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==} hasBin: true chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} + resolution: + {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} engines: {node: '>=12'} chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + resolution: + {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + resolution: + {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + resolution: + {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} chalk@5.6.2: - resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + resolution: + {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} change-case-all@1.0.15: - resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} + resolution: + {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} change-case@4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + resolution: + {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} change-case@5.4.4: - resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + resolution: + {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} chardet@2.1.0: - resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} + resolution: + {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + resolution: + {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + resolution: + {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + resolution: + {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + resolution: + {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + resolution: + {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + resolution: + {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + resolution: + {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} class-transformer@0.5.1: - resolution: {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} + resolution: + {integrity: sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==} clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + resolution: + {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} clean-stack@3.0.1: - resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} + resolution: + {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} engines: {node: '>=10'} cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + resolution: + {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + resolution: + {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + resolution: + {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} cli-cursor@5.0.0: - resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + resolution: + {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} cli-progress@3.12.0: - resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + resolution: + {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} + resolution: + {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} engines: {node: '>=6'} cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + resolution: + {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + resolution: + {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + resolution: + {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + resolution: + {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} cli-truncate@5.1.1: - resolution: {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} + resolution: + {integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==} engines: {node: '>=20'} cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + resolution: + {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} cli-width@4.1.0: - resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + resolution: + {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + resolution: + {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + resolution: + {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + resolution: + {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + resolution: + {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} code-block-writer@11.0.3: - resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} + resolution: + {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} code-block-writer@12.0.0: - resolution: {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} + resolution: + {integrity: sha512-q4dMFMlXtKR3XNBHyMHt/3pwYNA69EDk00lloMOaaUMKPUXBw6lpXtbu3MMVG6/uOihGnRDOlkyqsONEUj60+w==} code-excerpt@4.0.0: - resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} + resolution: + {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + resolution: + {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + resolution: + {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} color-json@3.0.5: - resolution: {integrity: sha512-DG4zae1GmHDBNsYTUe+GJiDnuKutxs2vVSkPRQqbeA6oEGBRQyRixV+HmIByasCfyf9L0CwHo8vOoiHqe7Lzng==} + resolution: + {integrity: sha512-DG4zae1GmHDBNsYTUe+GJiDnuKutxs2vVSkPRQqbeA6oEGBRQyRixV+HmIByasCfyf9L0CwHo8vOoiHqe7Lzng==} engines: {node: '>=12'} color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + resolution: + {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + resolution: + {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + resolution: + {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + resolution: + {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} engines: {node: '>=12.5.0'} colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + resolution: + {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} columnify@1.6.0: - resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + resolution: + {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} engines: {node: '>=8.0.0'} combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + resolution: + {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} command-line-args@5.2.1: - resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + resolution: + {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} engines: {node: '>=4.0.0'} command-line-usage@6.1.3: - resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + resolution: + {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} engines: {node: '>=8.0.0'} commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + resolution: + {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} commander@13.1.0: - resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + resolution: + {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} commander@14.0.2: - resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + resolution: + {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} commander@9.1.0: - resolution: {integrity: sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==} + resolution: + {integrity: sha512-i0/MaqBtdbnJ4XQs4Pmyb+oFQl+q0lsAmokVUH92SlSw4fkeAcG3bVon+Qt7hmtF+u3Het6o4VgrcY3qAoEB6w==} engines: {node: ^12.20.0 || >=14} commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + resolution: + {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} comment-parser@1.4.1: - resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + resolution: + {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} common-tags@1.8.2: - resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + resolution: + {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + resolution: + {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} compress-commons@4.1.2: - resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + resolution: + {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} engines: {node: '>= 10'} concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: + {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} concat-stream@1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + resolution: + {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} concat-stream@2.0.0: - resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + resolution: + {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} engines: {'0': node >= 6.0} conf@11.0.2: - resolution: {integrity: sha512-jjyhlQ0ew/iwmtwsS2RaB6s8DBifcE2GYBEaw2SJDUY/slJJbNfY4GlDVzOs/ff8cM/Wua5CikqXgbFl5eu85A==} + resolution: + {integrity: sha512-jjyhlQ0ew/iwmtwsS2RaB6s8DBifcE2GYBEaw2SJDUY/slJJbNfY4GlDVzOs/ff8cM/Wua5CikqXgbFl5eu85A==} engines: {node: '>=14.16'} config-chain@1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + resolution: + {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + resolution: + {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} consola@2.15.3: - resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + resolution: + {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} consola@3.4.2: - resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + resolution: + {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} constant-case@3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + resolution: + {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} content-disposition@0.5.4: - resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + resolution: + {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} content-type@1.0.5: - resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + resolution: + {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + resolution: + {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} convert-to-spaces@2.0.1: - resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} + resolution: + {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} cookie-es@0.5.0: - resolution: {integrity: sha512-RyZrFi6PNpBFbIaQjXDlFIhFVqV42QeKSZX1yQIl6ihImq6vcHNGMtqQ/QzY3RMPuYSkvsRwtnt5M9NeYxKt0g==} + resolution: + {integrity: sha512-RyZrFi6PNpBFbIaQjXDlFIhFVqV42QeKSZX1yQIl6ihImq6vcHNGMtqQ/QzY3RMPuYSkvsRwtnt5M9NeYxKt0g==} cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + resolution: + {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + resolution: + {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} cookie@0.7.1: - resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} + resolution: + {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} cookie@0.7.2: - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} + resolution: + {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} copy-to-clipboard@3.3.3: - resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + resolution: + {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} core-js-compat@3.45.1: - resolution: {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} + resolution: + {integrity: sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==} core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + resolution: + {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + resolution: + {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + resolution: + {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -5590,7 +6600,8 @@ packages: optional: true cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + resolution: + {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -5599,97 +6610,123 @@ packages: optional: true crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + resolution: + {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} hasBin: true crc32-stream@4.0.3: - resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + resolution: + {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} engines: {node: '>= 10'} create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + resolution: + {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + resolution: + {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} cross-fetch@4.1.0: - resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} + resolution: + {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} cross-inspect@1.0.1: - resolution: {integrity: sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==} + resolution: + {integrity: sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==} engines: {node: '>=16.0.0'} cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + resolution: + {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} crossws@0.3.5: - resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + resolution: + {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} crypto-random-string@2.0.0: - resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + resolution: + {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} crypto-random-string@4.0.0: - resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + resolution: + {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + resolution: + {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + resolution: + {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + resolution: + {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + resolution: + {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + resolution: + {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} data-uri-to-buffer@2.0.2: - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + resolution: + {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} data-uri-to-buffer@4.0.1: - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + resolution: + {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + resolution: + {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + resolution: + {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + resolution: + {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} engines: {node: '>= 0.4'} data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + resolution: + {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} dataloader@2.2.3: - resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} + resolution: + {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} debounce-fn@5.1.2: - resolution: {integrity: sha512-Sr4SdOZ4vw6eQDvPYNxHogvrxmCIld/VenC5JbNrFwMiwd7lY/Z18ZFfo+EWNG4DD9nFlAujWAo/wGuOPHmy5A==} + resolution: + {integrity: sha512-Sr4SdOZ4vw6eQDvPYNxHogvrxmCIld/VenC5JbNrFwMiwd7lY/Z18ZFfo+EWNG4DD9nFlAujWAo/wGuOPHmy5A==} engines: {node: '>=12'} debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + resolution: + {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} debounce@2.2.0: - resolution: {integrity: sha512-Xks6RUDLZFdz8LIdR6q0MTH44k7FikOmnh5xkSjMig6ch45afc8sjTjRQf3P6ax8dMgcQrYO/AR2RGWURrruqw==} + resolution: + {integrity: sha512-Xks6RUDLZFdz8LIdR6q0MTH44k7FikOmnh5xkSjMig6ch45afc8sjTjRQf3P6ax8dMgcQrYO/AR2RGWURrruqw==} engines: {node: '>=18'} debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + resolution: + {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -5697,7 +6734,8 @@ packages: optional: true debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + resolution: + {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -5705,7 +6743,8 @@ packages: optional: true debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + resolution: + {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -5714,7 +6753,8 @@ packages: optional: true debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + resolution: + {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -5723,341 +6763,429 @@ packages: optional: true decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + resolution: + {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + resolution: + {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} decimal.js@10.5.0: - resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} + resolution: + {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + resolution: + {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + resolution: + {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + resolution: + {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + resolution: + {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + resolution: + {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + resolution: + {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + resolution: + {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} defer-to-connect@2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + resolution: + {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + resolution: + {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + resolution: + {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + resolution: + {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + resolution: + {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} + resolution: + {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + resolution: + {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + resolution: + {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dependency-graph@0.11.0: - resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + resolution: + {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} dependency-graph@1.0.0: - resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + resolution: + {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} engines: {node: '>=4'} destr@1.2.2: - resolution: {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} + resolution: + {integrity: sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==} destr@2.0.5: - resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + resolution: + {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + resolution: + {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + resolution: + {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} detect-indent@7.0.2: - resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} + resolution: + {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} engines: {node: '>=12.20'} detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + resolution: + {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} hasBin: true detect-newline@4.0.1: - resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + resolution: + {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} detect-node@2.1.0: - resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + resolution: + {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} detect-port@1.6.1: - resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} + resolution: + {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} engines: {node: '>= 4.0.0'} hasBin: true diff-sequences@26.6.2: - resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} + resolution: + {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} engines: {node: '>= 10.14.2'} diff@3.5.1: - resolution: {integrity: sha512-Z3u54A8qGyqFOSr2pk0ijYs8mOE9Qz8kTvtKeBI+upoG9j04Sq+oI7W8zAJiQybDcESET8/uIdHzs0p3k4fZlw==} + resolution: + {integrity: sha512-Z3u54A8qGyqFOSr2pk0ijYs8mOE9Qz8kTvtKeBI+upoG9j04Sq+oI7W8zAJiQybDcESET8/uIdHzs0p3k4fZlw==} engines: {node: '>=0.3.1'} diff@4.0.4: - resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} + resolution: + {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} engines: {node: '>=0.3.1'} diff@5.2.2: - resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} + resolution: + {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + resolution: + {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + resolution: + {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + resolution: + {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + resolution: + {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + resolution: + {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + resolution: + {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dot-prop@7.2.0: - resolution: {integrity: sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==} + resolution: + {integrity: sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dotenv-expand@11.0.7: - resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + resolution: + {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} dotenv@16.4.7: - resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} + resolution: + {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} dset@3.1.4: - resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + resolution: + {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + resolution: + {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + resolution: + {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + resolution: + {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + resolution: + {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + resolution: + {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} hasBin: true electron-to-chromium@1.5.218: - resolution: {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==} + resolution: + {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==} emoji-regex@10.6.0: - resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + resolution: + {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + resolution: + {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + resolution: + {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + resolution: + {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} encodeurl@2.0.0: - resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + resolution: + {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + resolution: + {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + resolution: + {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + resolution: + {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + resolution: + {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} entities@6.0.0: - resolution: {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} + resolution: + {integrity: sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==} engines: {node: '>=0.12'} env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + resolution: + {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} env-paths@3.0.0: - resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + resolution: + {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + resolution: + {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + resolution: + {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + resolution: + {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + resolution: + {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + resolution: + {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + resolution: + {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + resolution: + {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} engines: {node: '>= 0.4'} es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + resolution: + {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + resolution: + {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + resolution: + {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + resolution: + {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} engines: {node: '>= 0.4'} es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + resolution: + {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} es-toolkit@1.43.0: - resolution: {integrity: sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==} + resolution: + {integrity: sha512-SKCT8AsWvYzBBuUqMk4NPwFlSdqLpJwmy6AP322ERn8W2YLIB6JBXnwMI2Qsh2gfphT3q7EKAxKb23cvFHFwKA==} es6-error@4.1.1: - resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + resolution: + {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} esbuild-plugin-copy@2.1.1: - resolution: {integrity: sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==} + resolution: + {integrity: sha512-Bk66jpevTcV8KMFzZI1P7MZKZ+uDcrZm2G2egZ2jNIvVnivDpodZI+/KnpL3Jnap0PBdIHU7HwFGB8r+vV5CVw==} peerDependencies: esbuild: '>= 0.14.0' esbuild@0.25.12: - resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + resolution: + {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true esbuild@0.27.2: - resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} + resolution: + {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + resolution: + {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + resolution: + {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + resolution: + {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + resolution: + {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + resolution: + {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + resolution: + {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + resolution: + {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} hasBin: true eslint-config-prettier@8.10.0: - resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + resolution: + {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + resolution: + {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + resolution: + {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -6078,19 +7206,22 @@ packages: optional: true eslint-plugin-es@3.0.1: - resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} + resolution: + {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' eslint-plugin-eslint-comments@3.2.0: - resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + resolution: + {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' eslint-plugin-import@2.31.0: - resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + resolution: + {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -6100,13 +7231,15 @@ packages: optional: true eslint-plugin-jest-formatting@3.1.0: - resolution: {integrity: sha512-XyysraZ1JSgGbLSDxjj5HzKKh0glgWf+7CkqxbTqb7zEhW7X2WHo5SBQ8cGhnszKN+2Lj3/oevBlHNbHezoc/A==} + resolution: + {integrity: sha512-XyysraZ1JSgGbLSDxjj5HzKKh0glgWf+7CkqxbTqb7zEhW7X2WHo5SBQ8cGhnszKN+2Lj3/oevBlHNbHezoc/A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=0.8.0' eslint-plugin-jest@25.7.0: - resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + resolution: + {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 @@ -6119,30 +7252,35 @@ packages: optional: true eslint-plugin-jsdoc@48.11.0: - resolution: {integrity: sha512-d12JHJDPNo7IFwTOAItCeJY1hcqoIxE0lHA8infQByLilQ9xkqrRa6laWCnsuCrf+8rUnvxXY1XuTbibRBNylA==} + resolution: + {integrity: sha512-d12JHJDPNo7IFwTOAItCeJY1hcqoIxE0lHA8infQByLilQ9xkqrRa6laWCnsuCrf+8rUnvxXY1XuTbibRBNylA==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + resolution: + {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 eslint-plugin-no-catch-all@1.1.0: - resolution: {integrity: sha512-VkP62jLTmccPrFGN/W6V7a3SEwdtTZm+Su2k4T3uyJirtkm0OMMm97h7qd8pRFAHus/jQg9FpUpLRc7sAylBEQ==} + resolution: + {integrity: sha512-VkP62jLTmccPrFGN/W6V7a3SEwdtTZm+Su2k4T3uyJirtkm0OMMm97h7qd8pRFAHus/jQg9FpUpLRc7sAylBEQ==} peerDependencies: eslint: '>=2.0.0' eslint-plugin-node@11.1.0: - resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} + resolution: + {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' eslint-plugin-prettier@4.2.1: - resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + resolution: + {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: eslint: '>=7.28.0' @@ -6153,34 +7291,40 @@ packages: optional: true eslint-plugin-promise@6.6.0: - resolution: {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} + resolution: + {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + resolution: + {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 eslint-plugin-react@7.37.3: - resolution: {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} + resolution: + {integrity: sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 eslint-plugin-sort-class-members@1.21.0: - resolution: {integrity: sha512-QKV4jvGMu/ge1l4s1TUBC6rqqV/fbABWY7q2EeNpV3FRikoX6KuLhiNvS8UuMi+EERe0hKGrNU9e6ukFDxNnZQ==} + resolution: + {integrity: sha512-QKV4jvGMu/ge1l4s1TUBC6rqqV/fbABWY7q2EeNpV3FRikoX6KuLhiNvS8UuMi+EERe0hKGrNU9e6ukFDxNnZQ==} engines: {node: '>=4.0.0'} peerDependencies: eslint: '>=0.8.0' eslint-plugin-tsdoc@0.4.0: - resolution: {integrity: sha512-MT/8b4aKLdDClnS8mP3R/JNjg29i0Oyqd/0ym6NnQf+gfKbJJ4ZcSh2Bs1H0YiUMTBwww5JwXGTWot/RwyJ7aQ==} + resolution: + {integrity: sha512-MT/8b4aKLdDClnS8mP3R/JNjg29i0Oyqd/0ym6NnQf+gfKbJJ4ZcSh2Bs1H0YiUMTBwww5JwXGTWot/RwyJ7aQ==} eslint-plugin-unused-imports@3.2.0: - resolution: {integrity: sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==} + resolution: + {integrity: sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': 6 - 7 @@ -6190,7 +7334,8 @@ packages: optional: true eslint-plugin-vitest@0.5.4: - resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} + resolution: + {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': '*' @@ -6203,166 +7348,211 @@ packages: optional: true eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + resolution: + {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} engines: {node: '>=4.0.0'} eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + resolution: + {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + resolution: + {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} eslint-utils@2.1.0: - resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + resolution: + {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} engines: {node: '>=6'} eslint-visitor-keys@1.3.0: - resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + resolution: + {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + resolution: + {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + resolution: + {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + resolution: + {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + resolution: + {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + resolution: + {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + resolution: + {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + resolution: + {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + resolution: + {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + resolution: + {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + resolution: + {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + resolution: + {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + resolution: + {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + resolution: + {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + resolution: + {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + resolution: + {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + resolution: + {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + resolution: + {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + resolution: + {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} expect-type@1.2.1: - resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} + resolution: + {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} express@4.21.2: - resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} + resolution: + {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + resolution: + {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} fast-content-type-parse@2.0.1: - resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} + resolution: + {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} fast-content-type-parse@3.0.0: - resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} + resolution: + {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + resolution: + {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + resolution: + {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + resolution: + {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} fast-json-parse@1.0.3: - resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} + resolution: + {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + resolution: + {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + resolution: + {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} fast-levenshtein@3.0.0: - resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + resolution: + {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} fast-safe-stringify@1.2.3: - resolution: {integrity: sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==} + resolution: + {integrity: sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==} fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + resolution: + {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} fast-xml-parser@5.3.4: - resolution: {integrity: sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==} + resolution: + {integrity: sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==} hasBin: true fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + resolution: + {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + resolution: + {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + resolution: + {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + resolution: + {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + resolution: + {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} fd-package-json@2.0.0: - resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} + resolution: + {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==} fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + resolution: + {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 @@ -6371,78 +7561,98 @@ packages: optional: true fetch-blob@3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + resolution: + {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + resolution: + {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} figures@5.0.0: - resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} + resolution: + {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} engines: {node: '>=14'} file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + resolution: + {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + resolution: + {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + resolution: + {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + resolution: + {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} finalhandler@1.3.1: - resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} + resolution: + {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} find-nearest-file@1.1.0: - resolution: {integrity: sha512-NMsS0ITOwpBPrHOyO7YUtDhaVEGUKS0kBJDVaWZPuCzO7JMW+uzFQQVts/gPyIV9ioyNWDb5LjhHWXVf1OnBDA==} + resolution: + {integrity: sha512-NMsS0ITOwpBPrHOyO7YUtDhaVEGUKS0kBJDVaWZPuCzO7JMW+uzFQQVts/gPyIV9ioyNWDb5LjhHWXVf1OnBDA==} find-replace@3.0.0: - resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + resolution: + {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} engines: {node: '>=4.0.0'} find-up-simple@1.0.1: - resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + resolution: + {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} engines: {node: '>=18'} find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + resolution: + {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + resolution: + {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + resolution: + {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} find-yarn-workspace-root@2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + resolution: + {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + resolution: + {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + resolution: + {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true flatstr@1.0.12: - resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} + resolution: + {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + resolution: + {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + resolution: + {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -6451,231 +7661,289 @@ packages: optional: true for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + resolution: + {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + resolution: + {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + resolution: + {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} form-data@3.0.4: - resolution: {integrity: sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==} + resolution: + {integrity: sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==} engines: {node: '>= 6'} form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + resolution: + {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} engines: {node: '>= 6'} form-data@4.0.5: - resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + resolution: + {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} formatly@0.2.4: - resolution: {integrity: sha512-lIN7GpcvX/l/i24r/L9bnJ0I8Qn01qijWpQpDDvTLL29nKqSaJJu4h20+7VJ6m2CAhQ2/En/GbxDiHCzq/0MyA==} + resolution: + {integrity: sha512-lIN7GpcvX/l/i24r/L9bnJ0I8Qn01qijWpQpDDvTLL29nKqSaJJu4h20+7VJ6m2CAhQ2/En/GbxDiHCzq/0MyA==} engines: {node: '>=18.3.0'} hasBin: true formdata-polyfill@4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + resolution: + {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} forwarded@0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + resolution: + {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + resolution: + {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} front-matter@4.0.2: - resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} + resolution: + {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + resolution: + {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + resolution: + {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} fs-extra@11.1.0: - resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + resolution: + {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} engines: {node: '>=14.14'} fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + resolution: + {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + resolution: + {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + resolution: + {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + resolution: + {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + resolution: + {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + resolution: + {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + resolution: + {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} engines: {node: '>= 0.4'} functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + resolution: + {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + resolution: + {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + resolution: + {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} get-east-asian-width@1.4.0: - resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + resolution: + {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + resolution: + {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + resolution: + {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + resolution: + {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} get-port@7.1.0: - resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + resolution: + {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} engines: {node: '>=16'} get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + resolution: + {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} get-source@2.0.12: - resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + resolution: + {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} get-stdin@9.0.0: - resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + resolution: + {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + resolution: + {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + resolution: + {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} git-diff@2.0.6: - resolution: {integrity: sha512-/Iu4prUrydE3Pb3lCBMbcSNIf81tgGt0W1ZwknnyF62t3tHmtiJTRj0f+1ZIhp3+Rh0ktz1pJVoa7ZXUCskivA==} + resolution: + {integrity: sha512-/Iu4prUrydE3Pb3lCBMbcSNIf81tgGt0W1ZwknnyF62t3tHmtiJTRj0f+1ZIhp3+Rh0ktz1pJVoa7ZXUCskivA==} engines: {node: '>= 4.8.0'} git-hooks-list@3.2.0: - resolution: {integrity: sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==} + resolution: + {integrity: sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==} github-slugger@2.0.0: - resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + resolution: + {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + resolution: + {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + resolution: + {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + resolution: + {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + resolution: + {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} engines: {node: 20 || >=22} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + resolution: + {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + resolution: + {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me global-agent@3.0.0: - resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + resolution: + {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} engines: {node: '>=10.0'} global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + resolution: + {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + resolution: + {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} globals@15.15.0: - resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} + resolution: + {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + resolution: + {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + resolution: + {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + resolution: + {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} got@12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + resolution: + {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} engines: {node: '>=14.16'} got@13.0.0: - resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} + resolution: + {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} engines: {node: '>=16'} graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + resolution: + {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + resolution: + {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} gradient-string@2.0.2: - resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} + resolution: + {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==} engines: {node: '>=10'} graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + resolution: + {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} graphql-codegen-typescript-operation-types@2.0.2: - resolution: {integrity: sha512-qEqV3WloTfj7Tvl4B1WD9pn2ewYxoZS8mzdV9w0/wdIcR9XlFmjJygxEGM0Gll1cTEayKGWMK7qarbRQMn+mGg==} + resolution: + {integrity: sha512-qEqV3WloTfj7Tvl4B1WD9pn2ewYxoZS8mzdV9w0/wdIcR9XlFmjJygxEGM0Gll1cTEayKGWMK7qarbRQMn+mGg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 graphql-config@5.1.5: - resolution: {integrity: sha512-mG2LL1HccpU8qg5ajLROgdsBzx/o2M6kgI3uAmoaXiSH9PCUbtIyLomLqUtCFaAeG2YCFsl0M5cfQ9rKmDoMVA==} + resolution: + {integrity: sha512-mG2LL1HccpU8qg5ajLROgdsBzx/o2M6kgI3uAmoaXiSH9PCUbtIyLomLqUtCFaAeG2YCFsl0M5cfQ9rKmDoMVA==} engines: {node: '>= 16.0.0'} peerDependencies: cosmiconfig-toml-loader: ^1.0.0 @@ -6685,23 +7953,27 @@ packages: optional: true graphql-request@6.1.0: - resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + resolution: + {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} peerDependencies: graphql: 14 - 16 graphql-request@7.2.0: - resolution: {integrity: sha512-0GR7eQHBFYz372u9lxS16cOtEekFlZYB2qOyq8wDvzRmdRSJ0mgUVX1tzNcIzk3G+4NY+mGtSz411wZdeDF/+A==} + resolution: + {integrity: sha512-0GR7eQHBFYz372u9lxS16cOtEekFlZYB2qOyq8wDvzRmdRSJ0mgUVX1tzNcIzk3G+4NY+mGtSz411wZdeDF/+A==} peerDependencies: graphql: 14 - 16 graphql-tag@2.12.6: - resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + resolution: + {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} peerDependencies: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 graphql-ws@6.0.5: - resolution: {integrity: sha512-HzYw057ch0hx2gZjkbgk1pur4kAtgljlWRP+Gccudqm3BRrTpExjWCQ9OHdIsq47Y6lHL++1lTvuQHhgRRcevw==} + resolution: + {integrity: sha512-HzYw057ch0hx2gZjkbgk1pur4kAtgljlWRP+Gccudqm3BRrTpExjWCQ9OHdIsq47Y6lHL++1lTvuQHhgRRcevw==} engines: {node: '>=20'} peerDependencies: '@fastify/websocket': ^10 || ^11 @@ -6720,7 +7992,8 @@ packages: optional: true graphql-ws@6.0.7: - resolution: {integrity: sha512-yoLRW+KRlDmnnROdAu7sX77VNLC0bsFoZyGQJLy1cF+X/SkLg/fWkRGrEEYQK8o2cafJ2wmEaMqMEZB3U3DYDg==} + resolution: + {integrity: sha512-yoLRW+KRlDmnnROdAu7sX77VNLC0bsFoZyGQJLy1cF+X/SkLg/fWkRGrEEYQK8o2cafJ2wmEaMqMEZB3U3DYDg==} engines: {node: '>=20'} peerDependencies: '@fastify/websocket': ^10 || ^11 @@ -6736,206 +8009,260 @@ packages: optional: true graphql@16.10.0: - resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} + resolution: + {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + resolution: + {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} hasBin: true h3@0.7.21: - resolution: {integrity: sha512-F/qdr3JKh8zBLiZyiprH5kuzG6vjoTK3nFnIYFUIQPLsw755GI5JezAFc3HJxbgYlzawcGeJlmsw4xu2t/0n/Q==} + resolution: + {integrity: sha512-F/qdr3JKh8zBLiZyiprH5kuzG6vjoTK3nFnIYFUIQPLsw755GI5JezAFc3HJxbgYlzawcGeJlmsw4xu2t/0n/Q==} h3@1.13.0: - resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} + resolution: + {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + resolution: + {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} has-ansi@4.0.1: - resolution: {integrity: sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==} + resolution: + {integrity: sha512-Qr4RtTm30xvEdqUXbSBVWDu+PrTokJOwe/FU+VdfJPk+MXAPoeOzKpRyrDTnZIJwAkQ4oBLTU53nu0HrkF/Z2A==} engines: {node: '>=8'} has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + resolution: + {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} engines: {node: '>= 0.4'} has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + resolution: + {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + resolution: + {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + resolution: + {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + resolution: + {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} engines: {node: '>= 0.4'} has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + resolution: + {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + resolution: + {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + resolution: + {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} header-case@2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + resolution: + {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} headers-polyfill@4.0.3: - resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + resolution: + {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + resolution: + {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + resolution: + {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} hosted-git-info@7.0.2: - resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + resolution: + {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + resolution: + {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + resolution: + {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} http-cache-semantics@4.2.0: - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + resolution: + {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} http-call@5.3.0: - resolution: {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} + resolution: + {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} engines: {node: '>=8.0.0'} http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + resolution: + {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + resolution: + {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + resolution: + {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} http-proxy-node16@1.0.6: - resolution: {integrity: sha512-RLtYkbmbLmh+To4lmqLpiEitu0igXb/j1SOW8F6w/esXsapGT5dSShMF9vg7shtxGJSXaWiFE3wYWCoLOuiibg==} + resolution: + {integrity: sha512-RLtYkbmbLmh+To4lmqLpiEitu0igXb/j1SOW8F6w/esXsapGT5dSShMF9vg7shtxGJSXaWiFE3wYWCoLOuiibg==} engines: {node: '>=8.0.0'} http2-wrapper@2.2.1: - resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + resolution: + {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + resolution: + {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + resolution: + {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} human-id@4.1.2: - resolution: {integrity: sha512-v/J+4Z/1eIJovEBdlV5TYj1IR+ZiohcYGRY+qN/oC9dAfKzVT023N/Bgw37hrKCoVRBvk3bqyzpr2PP5YeTMSg==} + resolution: + {integrity: sha512-v/J+4Z/1eIJovEBdlV5TYj1IR+ZiohcYGRY+qN/oC9dAfKzVT023N/Bgw37hrKCoVRBvk3bqyzpr2PP5YeTMSg==} hasBin: true human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + resolution: + {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} hyperlinker@1.0.0: - resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} + resolution: + {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} engines: {node: '>=4'} iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + resolution: + {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + resolution: + {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} iconv-lite@0.7.0: - resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} + resolution: + {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} engines: {node: '>=0.10.0'} iconv-lite@0.7.2: - resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + resolution: + {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + resolution: + {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + resolution: + {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} ignore@6.0.2: - resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} + resolution: + {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} engines: {node: '>= 4'} ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + resolution: + {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} immutable@3.7.6: - resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} + resolution: + {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} immutable@5.1.2: - resolution: {integrity: sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==} + resolution: + {integrity: sha512-qHKXW1q6liAk1Oys6umoaZbDRqjcjgSrbnrifHsfsttza7zcvRAsL7mMV6xWcyhwQy7Xj5v4hhbr6b+iDYwlmQ==} import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + resolution: + {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} import-from@4.0.0: - resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} + resolution: + {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} engines: {node: '>=12.2'} imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + resolution: + {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + resolution: + {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + resolution: + {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} engines: {node: '>=12'} index-to-position@1.2.0: - resolution: {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} + resolution: + {integrity: sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==} engines: {node: '>=18'} inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + resolution: + {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + resolution: + {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + resolution: + {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + resolution: + {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} ink@5.0.1: - resolution: {integrity: sha512-ae4AW/t8jlkj/6Ou21H2av0wxTk8vrGzXv+v2v7j4in+bl1M5XRMVbfNghzhBokV++FjF8RBDJvYo+ttR9YVRg==} + resolution: + {integrity: sha512-ae4AW/t8jlkj/6Ou21H2av0wxTk8vrGzXv+v2v7j4in+bl1M5XRMVbfNghzhBokV++FjF8RBDJvYo+ttR9YVRg==} engines: {node: '>=18'} peerDependencies: '@types/react': 18.3.12 @@ -6948,7 +8275,8 @@ packages: optional: true ink@5.2.1: - resolution: {integrity: sha512-BqcUyWrG9zq5HIwW6JcfFHsIYebJkWWb4fczNah1goUO0vv5vneIlfwuS85twyJ5hYR/y18FlAYUxrO9ChIWVg==} + resolution: + {integrity: sha512-BqcUyWrG9zq5HIwW6JcfFHsIYebJkWWb4fczNah1goUO0vv5vneIlfwuS85twyJ5hYR/y18FlAYUxrO9ChIWVg==} engines: {node: '>=18'} peerDependencies: '@types/react': 18.3.12 @@ -6961,385 +8289,483 @@ packages: optional: true inquirer@8.2.7: - resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} + resolution: + {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} engines: {node: '>=12.0.0'} internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + resolution: + {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} interpret@1.4.0: - resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + resolution: + {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + resolution: + {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} ipaddr.js@1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + resolution: + {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} iron-webcrypto@1.2.1: - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + resolution: + {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} is-absolute@1.0.0: - resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + resolution: + {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} engines: {node: '>=0.10.0'} is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + resolution: + {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + resolution: + {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} is-arrayish@0.3.4: - resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + resolution: + {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + resolution: + {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} engines: {node: '>= 0.4'} is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + resolution: + {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} engines: {node: '>= 0.4'} is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + resolution: + {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + resolution: + {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + resolution: + {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + resolution: + {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + resolution: + {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} engines: {node: '>= 0.4'} is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + resolution: + {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + resolution: + {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + resolution: + {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} hasBin: true is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + resolution: + {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true is-executable@2.0.1: - resolution: {integrity: sha512-0b7IBZndv6UF62ROvSL0lCmYwgLa2etNumsVdmNZQf/pJdYstJihfg/XDzG+p+5nBzT+1hDm2G5rKkhIDnXSCg==} + resolution: + {integrity: sha512-0b7IBZndv6UF62ROvSL0lCmYwgLa2etNumsVdmNZQf/pJdYstJihfg/XDzG+p+5nBzT+1hDm2G5rKkhIDnXSCg==} engines: {node: '>=14.16'} is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + resolution: + {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + resolution: + {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} engines: {node: '>= 0.4'} is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + resolution: + {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + resolution: + {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} is-fullwidth-code-point@5.1.0: - resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + resolution: + {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} is-generator-function@1.1.0: - resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + resolution: + {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + resolution: + {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + resolution: + {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} engines: {node: '>=0.10.0'} is-in-ci@0.1.0: - resolution: {integrity: sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==} + resolution: + {integrity: sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==} engines: {node: '>=18'} hasBin: true is-in-ci@1.0.0: - resolution: {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==} + resolution: + {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==} engines: {node: '>=18'} hasBin: true is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + resolution: + {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + resolution: + {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + resolution: + {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + resolution: + {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} is-lower-case@2.0.2: - resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + resolution: + {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + resolution: + {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + resolution: + {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} is-node-process@1.2.0: - resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + resolution: + {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + resolution: + {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} engines: {node: '>= 0.4'} is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + resolution: + {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} + resolution: + {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + resolution: + {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} is-plain-obj@1.1.0: - resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + resolution: + {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + resolution: + {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + resolution: + {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + resolution: + {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} engines: {node: '>= 0.4'} is-relative@1.0.0: - resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + resolution: + {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} engines: {node: '>=0.10.0'} is-retry-allowed@1.2.0: - resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + resolution: + {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} engines: {node: '>=0.10.0'} is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + resolution: + {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + resolution: + {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} engines: {node: '>= 0.4'} is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + resolution: + {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + resolution: + {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + resolution: + {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} engines: {node: '>= 0.4'} is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + resolution: + {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + resolution: + {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} engines: {node: '>= 0.4'} is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + resolution: + {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} is-unc-path@1.0.0: - resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + resolution: + {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} engines: {node: '>=0.10.0'} is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + resolution: + {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + resolution: + {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} is-upper-case@2.0.2: - resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} + resolution: + {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + resolution: + {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + resolution: + {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + resolution: + {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + resolution: + {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + resolution: + {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + resolution: + {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + resolution: + {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + resolution: + {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} iserror@0.0.2: - resolution: {integrity: sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==} + resolution: + {integrity: sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==} isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + resolution: + {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + resolution: + {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} engines: {node: '>=16'} isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + resolution: + {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} engines: {node: '>=0.10.0'} isomorphic-ws@5.0.0: - resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + resolution: + {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: ws: '*' istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + resolution: + {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + resolution: + {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + resolution: + {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + resolution: + {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + resolution: + {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + resolution: + {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + resolution: + {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} jackspeak@4.1.1: - resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + resolution: + {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} jake@10.9.4: - resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + resolution: + {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} hasBin: true jest-diff@26.6.2: - resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} + resolution: + {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} engines: {node: '>= 10.14.2'} jest-diff@30.2.0: - resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} + resolution: + {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} jest-get-type@26.3.0: - resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} + resolution: + {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} jest-matcher-utils@26.6.2: - resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} + resolution: + {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} engines: {node: '>= 10.14.2'} jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + resolution: + {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + resolution: + {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + resolution: + {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} jose@5.9.6: - resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} + resolution: + {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + resolution: + {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} js-yaml@3.14.2: - resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} + resolution: + {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + resolution: + {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + resolution: + {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsdoc-type-pratt-parser@4.0.0: - resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + resolution: + {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} engines: {node: '>=12.0.0'} jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + resolution: + {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} peerDependencies: canvas: ^2.5.0 @@ -7348,90 +8774,114 @@ packages: optional: true jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + resolution: + {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} hasBin: true jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + resolution: + {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + resolution: + {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + resolution: + {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + resolution: + {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} json-schema-to-typescript@15.0.4: - resolution: {integrity: sha512-Su9oK8DR4xCmDsLlyvadkXzX6+GGXJpbhwoLtOGArAG61dvbW4YQmSEno2y66ahpIdmLMg6YUf/QHLgiwvkrHQ==} + resolution: + {integrity: sha512-Su9oK8DR4xCmDsLlyvadkXzX6+GGXJpbhwoLtOGArAG61dvbW4YQmSEno2y66ahpIdmLMg6YUf/QHLgiwvkrHQ==} engines: {node: '>=16.0.0'} hasBin: true json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + resolution: + {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + resolution: + {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} json-schema-typed@8.0.1: - resolution: {integrity: sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg==} + resolution: + {integrity: sha512-XQmWYj2Sm4kn4WeTYvmpKEbyPsL7nBsb647c7pMe6l02/yx2+Jfc4dT6UZkEXnIUb5LhD55r2HPsJ1milQ4rDg==} json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + resolution: + {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} json-stringify-deterministic@1.0.12: - resolution: {integrity: sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==} + resolution: + {integrity: sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==} engines: {node: '>= 4'} json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + resolution: + {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} json-to-pretty-yaml@1.2.2: - resolution: {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==} + resolution: + {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==} engines: {node: '>= 0.2.0'} json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + resolution: + {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + resolution: + {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true jsonc-eslint-parser@2.4.0: - resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + resolution: + {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + resolution: + {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + resolution: + {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + resolution: + {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + resolution: + {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + resolution: + {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + resolution: + {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + resolution: + {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} knip@5.59.1: - resolution: {integrity: sha512-pOMBw6sLQhi/RfnpI6TwBY6NrAtKXDO5wkmMm+pCsSK5eWbVfDnDtPXbLDGNCoZPXiuAojb27y4XOpp4JPNxlA==} + resolution: + {integrity: sha512-pOMBw6sLQhi/RfnpI6TwBY6NrAtKXDO5wkmMm+pCsSK5eWbVfDnDtPXbLDGNCoZPXiuAojb27y4XOpp4JPNxlA==} engines: {node: '>=18.18.0'} hasBin: true peerDependencies: @@ -7439,51 +8889,64 @@ packages: typescript: '>=5.0.4' knuth-shuffle-seeded@1.0.6: - resolution: {integrity: sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==} + resolution: + {integrity: sha512-9pFH0SplrfyKyojCLxZfMcvkhf5hH0d+UwR9nTVJ/DDQJGuzcXjTwB7TP7sDfehSudlGGaOLblmEWqv04ERVWg==} language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + resolution: + {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + resolution: + {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} latest-version@7.0.0: - resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + resolution: + {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} engines: {node: '>=14.16'} lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + resolution: + {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + resolution: + {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + resolution: + {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} line-column@1.0.2: - resolution: {integrity: sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==} + resolution: + {integrity: sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==} lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + resolution: + {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + resolution: + {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + resolution: + {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} liquidjs@10.20.1: - resolution: {integrity: sha512-eZ33jfxjj0It8tkY+I4gbKWfXvMmOvQvvraxVFSLcTjZWCjdWMLBnevk48qw9AQIwIHFp58vZc59vH9Qwdq7mw==} + resolution: + {integrity: sha512-eZ33jfxjj0It8tkY+I4gbKWfXvMmOvQvvraxVFSLcTjZWCjdWMLBnevk48qw9AQIwIHFp58vZc59vH9Qwdq7mw==} engines: {node: '>=14'} hasBin: true listr2@4.0.5: - resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} + resolution: + {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} engines: {node: '>=12'} peerDependencies: enquirer: '>= 2.3.0 < 3' @@ -7492,187 +8955,240 @@ packages: optional: true listr2@9.0.5: - resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + resolution: + {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + resolution: + {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + resolution: + {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + resolution: + {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + resolution: + {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash.clonedeep@4.5.0: - resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + resolution: + {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + resolution: + {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + resolution: + {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} lodash.difference@4.5.0: - resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + resolution: + {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + resolution: + {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + resolution: + {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + resolution: + {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + resolution: + {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + resolution: + {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + resolution: + {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} lodash.union@4.6.0: - resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + resolution: + {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + resolution: + {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + resolution: + {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + resolution: + {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + resolution: + {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} log-update@6.1.0: - resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + resolution: + {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} + resolution: + {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} engines: {node: '>= 0.6.0'} long@5.3.2: - resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + resolution: + {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + resolution: + {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} + resolution: + {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} lower-case-first@2.0.2: - resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} + resolution: + {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + resolution: + {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} lowercase-keys@3.0.0: - resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + resolution: + {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + resolution: + {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + resolution: + {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} engines: {node: 20 || >=22} lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + resolution: + {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} lunr@2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + resolution: + {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} luxon@3.7.1: - resolution: {integrity: sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==} + resolution: + {integrity: sha512-RkRWjA926cTvz5rAb1BqyWkKbbjzCGchDUIKMCUvNi17j6f6j8uHGDV82Aqcqtzd+icoYpELmG3ksgGiFNNcNg==} engines: {node: '>=12'} macaddress@0.5.3: - resolution: {integrity: sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg==} + resolution: + {integrity: sha512-vGBKTA+jwM4KgjGZ+S/8/Mkj9rWzePyGY6jManXPGhiWu63RYwW8dKPyk5koP+8qNVhPhHgFa1y/MJ4wrjsNrg==} magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + resolution: + {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + resolution: + {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + resolution: + {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + resolution: + {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + resolution: + {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} engines: {node: '>=0.10.0'} map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + resolution: + {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + resolution: + {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} map-obj@5.0.0: - resolution: {integrity: sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA==} + resolution: + {integrity: sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} markdown-it@14.1.0: - resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + resolution: + {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true matcher@3.0.0: - resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + resolution: + {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} matcher@5.0.0: - resolution: {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} + resolution: + {integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + resolution: + {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + resolution: + {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + resolution: + {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + resolution: + {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} merge-descriptors@1.0.3: - resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + resolution: + {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + resolution: + {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + resolution: + {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} meros@1.3.0: - resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + resolution: + {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} engines: {node: '>=13'} peerDependencies: '@types/node': '>=13' @@ -7681,123 +9197,153 @@ packages: optional: true methods@1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + resolution: + {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + resolution: + {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + resolution: + {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + resolution: + {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + resolution: + {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + resolution: + {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} hasBin: true mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + resolution: + {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + resolution: + {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} mimic-function@5.0.1: - resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + resolution: + {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + resolution: + {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + resolution: + {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + resolution: + {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} + resolution: + {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} engines: {node: 20 || >=22} minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + resolution: + {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + resolution: + {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} minimatch@7.4.6: - resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + resolution: + {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + resolution: + {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + resolution: + {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + resolution: + {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + resolution: + {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + resolution: + {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + resolution: + {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + resolution: + {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true mkdirp@2.1.6: - resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + resolution: + {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} engines: {node: '>=10'} hasBin: true mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + resolution: + {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} engines: {node: '>=10'} hasBin: true mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + resolution: + {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} mrmime@1.0.1: - resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + resolution: + {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + resolution: + {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + resolution: + {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} msw@2.8.7: - resolution: {integrity: sha512-0TGfV4oQiKpa3pDsQBDf0xvFP+sRrqEOnh2n1JWpHVKHJHLv6ZmY1HCZpCi7uDiJTeIHJMBpmBiRmBJN+ETPSQ==} + resolution: + {integrity: sha512-0TGfV4oQiKpa3pDsQBDf0xvFP+sRrqEOnh2n1JWpHVKHJHLv6ZmY1HCZpCi7uDiJTeIHJMBpmBiRmBJN+ETPSQ==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -7807,66 +9353,84 @@ packages: optional: true mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + resolution: + {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} mute-stream@1.0.0: - resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + resolution: + {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} mute-stream@2.0.0: - resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + resolution: + {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + resolution: + {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} n-gram@2.0.2: - resolution: {integrity: sha512-S24aGsn+HLBxUGVAUFOwGpKs7LBcG4RudKU//eWzt/mQ97/NMKQxDWHyHx63UNWk/OOdihgmzoETn1tf5nQDzQ==} + resolution: + {integrity: sha512-S24aGsn+HLBxUGVAUFOwGpKs7LBcG4RudKU//eWzt/mQ97/NMKQxDWHyHx63UNWk/OOdihgmzoETn1tf5nQDzQ==} nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + resolution: + {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + resolution: + {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + resolution: + {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} natural-orderby@2.0.3: - resolution: {integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==} + resolution: + {integrity: sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==} natural-orderby@3.0.2: - resolution: {integrity: sha512-x7ZdOwBxZCEm9MM7+eQCjkrNLrW3rkBKNHVr78zbtqnMGVNlnDi6C/eUEYgxHNrcbu0ymvjzcwIL/6H1iHri9g==} + resolution: + {integrity: sha512-x7ZdOwBxZCEm9MM7+eQCjkrNLrW3rkBKNHVr78zbtqnMGVNlnDi6C/eUEYgxHNrcbu0ymvjzcwIL/6H1iHri9g==} engines: {node: '>=18'} negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + resolution: + {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} network-interfaces@1.1.0: - resolution: {integrity: sha512-fBk/Cm/RminFKhyUYKolI5nWI2de1m0pHlikz1mnTDbbe/1d2+ti+x/pWlOYuK8o/9p9vyK912+66h2NXGNUwQ==} + resolution: + {integrity: sha512-fBk/Cm/RminFKhyUYKolI5nWI2de1m0pHlikz1mnTDbbe/1d2+ti+x/pWlOYuK8o/9p9vyK912+66h2NXGNUwQ==} no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + resolution: + {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + resolution: + {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + resolution: + {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} node-domexception@1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + resolution: + {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} deprecated: Use your platform's native DOMException instead node-fetch-native@1.6.6: - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} + resolution: + {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + resolution: + {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -7875,55 +9439,69 @@ packages: optional: true node-fetch@3.3.2: - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + resolution: + {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + resolution: + {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + resolution: + {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} node-releases@2.0.21: - resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + resolution: + {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + resolution: + {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + resolution: + {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} normalize-package-data@6.0.2: - resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + resolution: + {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} engines: {node: ^16.14.0 || >=18.0.0} normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + resolution: + {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + resolution: + {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} normalize-url@8.1.0: - resolution: {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} + resolution: + {integrity: sha512-X06Mfd/5aKsRHc0O0J5CUedwnPmnDtLF2+nq+KN9KSDlJHkPuh0JUviWjEWMe0SW/9TDdSLVPuk7L5gGTIA1/w==} engines: {node: '>=14.16'} npm-package-arg@11.0.3: - resolution: {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} + resolution: + {integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==} engines: {node: ^16.14.0 || >=18.0.0} npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + resolution: + {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + resolution: + {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} npm@10.9.3: - resolution: {integrity: sha512-6Eh1u5Q+kIVXeA8e7l2c/HpnFFcwrkt37xDMujD5be1gloWa9p6j3Fsv3mByXXmqJHy+2cElRMML8opNT7xIJQ==} + resolution: + {integrity: sha512-6Eh1u5Q+kIVXeA8e7l2c/HpnFFcwrkt37xDMujD5be1gloWa9p6j3Fsv3mByXXmqJHy+2cElRMML8opNT7xIJQ==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true bundledDependencies: @@ -7997,13 +9575,16 @@ packages: - write-file-atomic nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + resolution: + {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} nwsapi@2.2.20: - resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} + resolution: + {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} nx@22.0.2: - resolution: {integrity: sha512-cQD3QqZDPJMnvE4UGmVwCc6l7ll+u8a93brIAOujOxocyMNARXzyVub8Uxqy0QSr2ayFGmEINb6BJvY+EooT5Q==} + resolution: + {integrity: sha512-cQD3QqZDPJMnvE4UGmVwCc6l7ll+u8a93brIAOujOxocyMNARXzyVub8Uxqy0QSr2ayFGmEINb6BJvY+EooT5Q==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -8015,7 +9596,8 @@ packages: optional: true nx@22.4.4: - resolution: {integrity: sha512-+eIIuRKltZ1hWcaB691aEdsRl4FRJ9qaaIZ2J6U2i4maRbBde8HJZ9m/EJt3i3IrYhdLpnl7QcXyTHzP3eW2jw==} + resolution: + {integrity: sha512-+eIIuRKltZ1hWcaB691aEdsRl4FRJ9qaaIZ2J6U2i4maRbBde8HJZ9m/EJt3i3IrYhdLpnl7QcXyTHzP3eW2jw==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -8027,1358 +9609,1722 @@ packages: optional: true object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + resolution: + {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} object-hash@3.0.0: - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + resolution: + {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + resolution: + {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + resolution: + {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} object-treeify@1.1.33: - resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} + resolution: + {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} engines: {node: '>= 10'} object-treeify@4.0.1: - resolution: {integrity: sha512-Y6tg5rHfsefSkfKujv2SwHulInROy/rCL5F4w0QOWxut8AnxYxf0YmNhTh95Zfyxpsudo66uqkux0ACFnyMSgQ==} + resolution: + {integrity: sha512-Y6tg5rHfsefSkfKujv2SwHulInROy/rCL5F4w0QOWxut8AnxYxf0YmNhTh95Zfyxpsudo66uqkux0ACFnyMSgQ==} engines: {node: '>= 16'} object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + resolution: + {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + resolution: + {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} engines: {node: '>= 0.4'} object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + resolution: + {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + resolution: + {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} engines: {node: '>= 0.4'} object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + resolution: + {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} oclif@4.22.73: - resolution: {integrity: sha512-nyODp0FrwdKc/jBPFeloGmAQA49Y6nC7ZANHwPZjok09RUCJpaJkuoe7EH6EOeMrS1Qsb+muYsV4fBa6bkVjIg==} + resolution: + {integrity: sha512-nyODp0FrwdKc/jBPFeloGmAQA49Y6nC7ZANHwPZjok09RUCJpaJkuoe7EH6EOeMrS1Qsb+muYsV4fBa6bkVjIg==} engines: {node: '>=18.0.0'} hasBin: true octokit-plugin-create-pull-request@3.13.1: - resolution: {integrity: sha512-nsWZRn7NrqZvqGl3E0VcDDyyS/4xbNNvwWM2yk65TViLdEBoOhIU5SqKdfqANa+WPwv5DwHsO3T10DK1qMg72w==} + resolution: + {integrity: sha512-nsWZRn7NrqZvqGl3E0VcDDyyS/4xbNNvwWM2yk65TViLdEBoOhIU5SqKdfqANa+WPwv5DwHsO3T10DK1qMg72w==} ohash@1.1.6: - resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} + resolution: + {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} ohm-js@17.2.1: - resolution: {integrity: sha512-4cXF0G09fAYU9z61kTfkNbKK1Kz/sGEZ5NbVWHoe9Qi7VB7y+Spwk051CpUTfUENdlIr+vt8tMV4/LosTE2cDQ==} + resolution: + {integrity: sha512-4cXF0G09fAYU9z61kTfkNbKK1Kz/sGEZ5NbVWHoe9Qi7VB7y+Spwk051CpUTfUENdlIr+vt8tMV4/LosTE2cDQ==} engines: {node: '>=0.12.1'} on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + resolution: + {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + resolution: + {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + resolution: + {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + resolution: + {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} onetime@7.0.0: - resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + resolution: + {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + resolution: + {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + resolution: + {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} + resolution: + {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + resolution: + {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + resolution: + {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} outvariant@1.4.3: - resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + resolution: + {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + resolution: + {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} oxc-resolver@9.0.2: - resolution: {integrity: sha512-w838ygc1p7rF+7+h5vR9A+Y9Fc4imy6C3xPthCMkdFUgFvUWkmABeNB8RBDQ6+afk44Q60/UMMQ+gfDUW99fBA==} + resolution: + {integrity: sha512-w838ygc1p7rF+7+h5vR9A+Y9Fc4imy6C3xPthCMkdFUgFvUWkmABeNB8RBDQ6+afk44Q60/UMMQ+gfDUW99fBA==} p-cancelable@3.0.0: - resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + resolution: + {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + resolution: + {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + resolution: + {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + resolution: + {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + resolution: + {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + resolution: + {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + resolution: + {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + resolution: + {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + resolution: + {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + resolution: + {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + resolution: + {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + resolution: + {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} package-json@8.1.1: - resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + resolution: + {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} engines: {node: '>=14.16'} package-manager-detector@0.2.11: - resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + resolution: + {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} pad-right@0.2.2: - resolution: {integrity: sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==} + resolution: + {integrity: sha512-4cy8M95ioIGolCoMmm2cMntGR1lPLEbOMzOKu8bzjuJP6JpzEMQcDHmh7hHLYGgob+nKe1YHFMaG4V59HQa89g==} engines: {node: '>=0.10.0'} pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + resolution: + {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + resolution: + {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + resolution: + {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} parse-filepath@1.0.2: - resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + resolution: + {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} engines: {node: '>=0.8'} parse-imports@2.2.1: - resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} + resolution: + {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} engines: {node: '>= 18'} parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + resolution: + {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + resolution: + {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} parse-json@8.3.0: - resolution: {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} + resolution: + {integrity: sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==} engines: {node: '>=18'} parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + resolution: + {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + resolution: + {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + resolution: + {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} password-prompt@1.1.3: - resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} + resolution: + {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} patch-console@2.0.0: - resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} + resolution: + {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + resolution: + {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} path-case@3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + resolution: + {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + resolution: + {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + resolution: + {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + resolution: + {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + resolution: + {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + resolution: + {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + resolution: + {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} path-root-regex@0.1.2: - resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + resolution: + {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} engines: {node: '>=0.10.0'} path-root@0.1.1: - resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + resolution: + {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + resolution: + {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + resolution: + {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + resolution: + {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + resolution: + {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + resolution: + {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + resolution: + {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + resolution: + {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + resolution: + {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + resolution: + {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + resolution: + {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + resolution: + {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + resolution: + {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + resolution: + {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + resolution: + {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + resolution: + {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} pin-github-action@3.3.1: - resolution: {integrity: sha512-ifA64/ZwNq0rkXR3V1PV2egvr5eOCuLR7GwyfgQYVk5HRLq0gHmBM5JHKodMG2HMaTZHXUXOBDKDCBSIoczjyQ==} + resolution: + {integrity: sha512-ifA64/ZwNq0rkXR3V1PV2egvr5eOCuLR7GwyfgQYVk5HRLq0gHmBM5JHKodMG2HMaTZHXUXOBDKDCBSIoczjyQ==} hasBin: true pino-std-serializers@2.5.0: - resolution: {integrity: sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==} + resolution: + {integrity: sha512-wXqbqSrIhE58TdrxxlfLwU9eDhrzppQDvGhBEr1gYbzzM4KKo3Y63gSjiDXRKLVS2UOXdPNR2v+KnQgNrs+xUg==} pino@4.17.6: - resolution: {integrity: sha512-LFDwmhyWLBnmwO/2UFbWu1jEGVDzaPupaVdx0XcZ3tIAx1EDEBauzxXf2S0UcFK7oe+X9MApjH0hx9U1XMgfCA==} + resolution: + {integrity: sha512-LFDwmhyWLBnmwO/2UFbWu1jEGVDzaPupaVdx0XcZ3tIAx1EDEBauzxXf2S0UcFK7oe+X9MApjH0hx9U1XMgfCA==} hasBin: true pkg-dir@5.0.0: - resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + resolution: + {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} engines: {node: '>=10'} pluralize@8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + resolution: + {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + resolution: + {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + resolution: + {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + resolution: + {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + resolution: + {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + resolution: + {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true prettier@3.7.4: - resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + resolution: + {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} hasBin: true pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + resolution: + {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} engines: {node: '>= 10'} pretty-format@30.2.0: - resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} + resolution: + {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} printable-characters@1.0.42: - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + resolution: + {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} proc-log@4.2.0: - resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + resolution: + {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + resolution: + {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} progress@2.0.3: - resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + resolution: + {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + resolution: + {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + resolution: + {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} proper-lockfile@4.1.2: - resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + resolution: + {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} property-expr@2.0.6: - resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + resolution: + {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} proto-list@1.2.4: - resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + resolution: + {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} protobufjs@7.5.3: - resolution: {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} + resolution: + {integrity: sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==} engines: {node: '>=12.0.0'} proxy-addr@2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + resolution: + {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + resolution: + {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + resolution: + {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} + resolution: + {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} pump@3.0.2: - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + resolution: + {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} + resolution: + {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + resolution: + {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + resolution: + {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} qr.js@0.0.0: - resolution: {integrity: sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==} + resolution: + {integrity: sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==} qrcode.react@1.0.1: - resolution: {integrity: sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg==} + resolution: + {integrity: sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg==} peerDependencies: react: ^15.5.3 || ^16.0.0 || ^17.0.0 qs@6.13.0: - resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + resolution: + {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} quansync@0.2.10: - resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} + resolution: + {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==} query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + resolution: + {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} engines: {node: '>=6'} querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + resolution: + {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + resolution: + {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} quick-format-unescaped@1.1.2: - resolution: {integrity: sha512-lli1svZnGwCLiDydlAN2bmSiEeThfI5gnqWsv0cFRiRbzXsRuzoPldK+BY5TM/i+koLoZ8dmZA6uPEBGTpaZqw==} + resolution: + {integrity: sha512-lli1svZnGwCLiDydlAN2bmSiEeThfI5gnqWsv0cFRiRbzXsRuzoPldK+BY5TM/i+koLoZ8dmZA6uPEBGTpaZqw==} quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + resolution: + {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} quick-lru@5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + resolution: + {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} quick-lru@6.1.2: - resolution: {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} + resolution: + {integrity: sha512-AAFUA5O1d83pIHEhJwWCq/RQcRukCkn/NSm2QsTEMle5f2hP0ChI2+3Xb051PZCkLryI/Ir1MVKviT2FIloaTQ==} engines: {node: '>=12'} radix3@0.1.2: - resolution: {integrity: sha512-Mpfd/OuX0zoJ6ojLD/RTOHvJPg6e6PjINtmYzV87kIXc5iUtDz34i7gg4SV4XjqRJTmSiYO/g9i/mKWGf4z8wg==} + resolution: + {integrity: sha512-Mpfd/OuX0zoJ6ojLD/RTOHvJPg6e6PjINtmYzV87kIXc5iUtDz34i7gg4SV4XjqRJTmSiYO/g9i/mKWGf4z8wg==} radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + resolution: + {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + resolution: + {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} raw-body@2.5.2: - resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + resolution: + {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + resolution: + {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true react-dom@17.0.2: - resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} + resolution: + {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==} peerDependencies: react: 17.0.2 react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + resolution: + {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: react: ^18.3.1 react-fast-compare@3.2.2: - resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + resolution: + {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + resolution: + {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + resolution: + {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + resolution: + {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} react-reconciler@0.26.2: - resolution: {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==} + resolution: + {integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==} engines: {node: '>=0.10.0'} peerDependencies: react: ^17.0.2 react-reconciler@0.29.2: - resolution: {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==} + resolution: + {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==} engines: {node: '>=0.10.0'} peerDependencies: react: ^18.3.1 react-refresh@0.10.0: - resolution: {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} + resolution: + {integrity: sha512-PgidR3wST3dDYKr6b4pJoqQFpPGNKDSCDx4cZoshjXipw3LzO7mG1My2pwEzz2JVkF+inx3xRpDeQLFQGH/hsQ==} engines: {node: '>=0.10.0'} react-router-dom@6.30.1: - resolution: {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==} + resolution: + {integrity: sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' react-router@6.30.1: - resolution: {integrity: sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==} + resolution: + {integrity: sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-toastify@9.1.3: - resolution: {integrity: sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==} + resolution: + {integrity: sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==} peerDependencies: react: '>=16' react-dom: '>=16' react-transition-group@4.4.5: - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + resolution: + {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: react: '>=16.6.0' react-dom: '>=16.6.0' react@17.0.2: - resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + resolution: + {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} engines: {node: '>=0.10.0'} react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + resolution: + {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} read-package-up@11.0.0: - resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + resolution: + {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} engines: {node: '>=18'} read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + resolution: + {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + resolution: + {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} read-pkg@9.0.1: - resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + resolution: + {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} engines: {node: '>=18'} read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + resolution: + {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + resolution: + {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + resolution: + {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + resolution: + {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + resolution: + {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + resolution: + {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} rechoir@0.6.2: - resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + resolution: + {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + resolution: + {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} redeyed@2.1.1: - resolution: {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} + resolution: + {integrity: sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==} reduce-flatten@2.0.0: - resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + resolution: + {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} engines: {node: '>=6'} reflect-metadata@0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} + resolution: + {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + resolution: + {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + resolution: + {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} + resolution: + {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} engines: {node: '>=4'} regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + resolution: + {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} regexp-match-indices@1.0.2: - resolution: {integrity: sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==} + resolution: + {integrity: sha512-DwZuAkt8NF5mKwGGER1EGh2PRqyvhRhhLviH+R8y8dIuaQROlUfXjt4s9ZTXstIsSkptf06BSvwcEmmfheJJWQ==} regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + resolution: + {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + resolution: + {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} regexpp@3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + resolution: + {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} regexpu-core@6.3.1: - resolution: {integrity: sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ==} + resolution: + {integrity: sha512-DzcswPr252wEr7Qz8AyAVbfyBDKLoYp6eRA1We2Fa9qirRFSdtkP5sHr3yglDKy2BbA0fd2T+j/CUSKes3FeVQ==} engines: {node: '>=4'} registry-auth-token@5.1.0: - resolution: {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} + resolution: + {integrity: sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==} engines: {node: '>=14'} registry-auth-token@5.1.1: - resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} + resolution: + {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} engines: {node: '>=14'} registry-url@6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + resolution: + {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} engines: {node: '>=12'} regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + resolution: + {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} regjsparser@0.12.0: - resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + resolution: + {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true relay-runtime@12.0.0: - resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} + resolution: + {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} remedial@1.0.8: - resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} + resolution: + {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + resolution: + {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} remove-trailing-spaces@1.0.9: - resolution: {integrity: sha512-xzG7w5IRijvIkHIjDk65URsJJ7k4J95wmcArY5PRcmjldIOl7oTvG8+X2Ag690R7SfwiOcHrWZKVc1Pp5WIOzA==} + resolution: + {integrity: sha512-xzG7w5IRijvIkHIjDk65URsJJ7k4J95wmcArY5PRcmjldIOl7oTvG8+X2Ag690R7SfwiOcHrWZKVc1Pp5WIOzA==} repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + resolution: + {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + resolution: + {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + resolution: + {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + resolution: + {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolution: + {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} resolve-alpn@1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolution: + {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + resolution: + {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + resolution: + {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + resolution: + {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolution: + {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} hasBin: true resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + resolution: + {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + resolution: + {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + resolution: + {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + resolution: + {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} restore-cursor@5.1.0: - resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + resolution: + {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + resolution: + {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + resolution: + {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + resolution: + {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + resolution: + {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + resolution: + {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true roarr@2.15.4: - resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + resolution: + {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} engines: {node: '>=8.0'} rollup@4.52.5: - resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} + resolution: + {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + resolution: + {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + resolution: + {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + resolution: + {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + resolution: + {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + resolution: + {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + resolution: + {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + resolution: + {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} engines: {node: '>= 0.4'} safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + resolution: + {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + resolution: + {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} sass@1.89.1: - resolution: {integrity: sha512-eMLLkl+qz7tx/0cJ9wI+w09GQ2zodTkcE/aVfywwdlRcI3EO19xGnbmJwg/JMIm+5MxVJ6outddLZ4Von4E++Q==} + resolution: + {integrity: sha512-eMLLkl+qz7tx/0cJ9wI+w09GQ2zodTkcE/aVfywwdlRcI3EO19xGnbmJwg/JMIm+5MxVJ6outddLZ4Von4E++Q==} engines: {node: '>=14.0.0'} hasBin: true saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + resolution: + {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} scheduler@0.20.2: - resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} + resolution: + {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==} scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + resolution: + {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} scuid@1.1.0: - resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} + resolution: + {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} seed-random@2.2.0: - resolution: {integrity: sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==} + resolution: + {integrity: sha512-34EQV6AAHQGhoc0tn/96a9Fsi6v2xdqe/dMUwljGRaFOzR3EgRmECvD0O8vi8X+/uQ50LGHfkNu/Eue5TPKZkQ==} semver-compare@1.0.0: - resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + resolution: + {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + resolution: + {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + resolution: + {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + resolution: + {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + resolution: + {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + resolution: + {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true send@0.19.0: - resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} + resolution: + {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} sentence-case@3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + resolution: + {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} serialize-error@7.0.1: - resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + resolution: + {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} serve-static@1.16.2: - resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} + resolution: + {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + resolution: + {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + resolution: + {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + resolution: + {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + resolution: + {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + resolution: + {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + resolution: + {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + resolution: + {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + resolution: + {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + resolution: + {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} shelljs.exec@1.1.8: - resolution: {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==} + resolution: + {integrity: sha512-vFILCw+lzUtiwBAHV8/Ex8JsFjelFMdhONIsgKNLgTzeRckp2AOYRQtHJE/9LhNvdMmE27AGtzWx0+DHpwIwSw==} engines: {node: '>= 4.0.0'} shelljs@0.8.5: - resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + resolution: + {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} engines: {node: '>=4'} hasBin: true side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + resolution: + {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + resolution: + {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} engines: {node: '>= 0.4'} side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + resolution: + {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} engines: {node: '>= 0.4'} side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + resolution: + {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} engines: {node: '>= 0.4'} siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + resolution: + {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + resolution: + {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + resolution: + {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} signedsource@1.0.0: - resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} + resolution: + {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} simple-git@3.19.1: - resolution: {integrity: sha512-Ck+rcjVaE1HotraRAS8u/+xgTvToTuoMkT9/l9lvuP5jftwnYUp6DwuJzsKErHgfyRk8IB8pqGHWEbM3tLgV1w==} + resolution: + {integrity: sha512-Ck+rcjVaE1HotraRAS8u/+xgTvToTuoMkT9/l9lvuP5jftwnYUp6DwuJzsKErHgfyRk8IB8pqGHWEbM3tLgV1w==} simple-git@3.27.0: - resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} + resolution: + {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} simple-swizzle@0.2.4: - resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + resolution: + {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + resolution: + {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} slashes@3.0.12: - resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + resolution: + {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + resolution: + {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + resolution: + {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + resolution: + {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} slice-ansi@7.1.2: - resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + resolution: + {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} smol-toml@1.3.4: - resolution: {integrity: sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==} + resolution: + {integrity: sha512-UOPtVuYkzYGee0Bd2Szz8d2G3RfMfJ2t3qVdZUAozZyAk+a0Sxa+QKix0YCwjL/A1RR0ar44nCxaoN9FxdJGwA==} engines: {node: '>= 18'} snake-case@3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + resolution: + {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} sort-object-keys@1.1.3: - resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + resolution: + {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} sort-package-json@2.15.1: - resolution: {integrity: sha512-9x9+o8krTT2saA9liI4BljNjwAbvUnWf11Wq+i/iZt8nl2UGYnf3TH5uBydE7VALmP7AGwlfszuEeL8BDyb0YA==} + resolution: + {integrity: sha512-9x9+o8krTT2saA9liI4BljNjwAbvUnWf11Wq+i/iZt8nl2UGYnf3TH5uBydE7VALmP7AGwlfszuEeL8BDyb0YA==} hasBin: true source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + resolution: + {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} source-map-support@0.5.19: - resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} + resolution: + {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + resolution: + {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + resolution: + {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + resolution: + {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} spawndamnit@3.0.1: - resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + resolution: + {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + resolution: + {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} spdx-exceptions@2.5.0: - resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + resolution: + {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + resolution: + {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + resolution: + {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} spdx-license-ids@3.0.22: - resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} + resolution: + {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + resolution: + {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} split2@2.2.0: - resolution: {integrity: sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==} + resolution: + {integrity: sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==} sponge-case@1.0.1: - resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} + resolution: + {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + resolution: + {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + resolution: + {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} stack-generator@2.0.10: - resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + resolution: + {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + resolution: + {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + resolution: + {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + resolution: + {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} stacktracey@2.1.8: - resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + resolution: + {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + resolution: + {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + resolution: + {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + resolution: + {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + resolution: + {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} strict-event-emitter@0.5.1: - resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + resolution: + {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + resolution: + {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} string-argv@0.3.1: - resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + resolution: + {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} string-env-interpolation@1.0.1: - resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} + resolution: + {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} string-hash@1.1.3: - resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + resolution: + {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + resolution: + {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + resolution: + {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} string-width@7.2.0: - resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + resolution: + {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} string-width@8.1.1: - resolution: {integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==} + resolution: + {integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==} engines: {node: '>=20'} string.prototype.includes@2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + resolution: + {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} engines: {node: '>= 0.4'} string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + resolution: + {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + resolution: + {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + resolution: + {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} engines: {node: '>= 0.4'} string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + resolution: + {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} engines: {node: '>= 0.4'} string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + resolution: + {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + resolution: + {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + resolution: + {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + resolution: + {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + resolution: + {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + resolution: + {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + resolution: + {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + resolution: + {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + resolution: + {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + resolution: + {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + resolution: + {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} strip-json-comments@5.0.1: - resolution: {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} + resolution: + {integrity: sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==} engines: {node: '>=14.16'} strnum@2.1.1: - resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} + resolution: + {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} stubborn-fs@1.2.5: - resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} + resolution: + {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + resolution: + {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + resolution: + {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + resolution: + {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} supports-hyperlinks@3.1.0: - resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + resolution: + {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} engines: {node: '>=14.18'} supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + resolution: + {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} swap-case@2.0.2: - resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} + resolution: + {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + resolution: + {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} sync-fetch@0.6.0: - resolution: {integrity: sha512-IELLEvzHuCfc1uTsshPK58ViSdNqXxlml1U+fmwJIKLYKOr/rAtBrorE2RYm5IHaMpDNlmC0fr1LAvdXvyheEQ==} + resolution: + {integrity: sha512-IELLEvzHuCfc1uTsshPK58ViSdNqXxlml1U+fmwJIKLYKOr/rAtBrorE2RYm5IHaMpDNlmC0fr1LAvdXvyheEQ==} engines: {node: '>=18'} sync-fetch@0.6.0-2: - resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} + resolution: + {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} engines: {node: '>=18'} synckit@0.9.3: - resolution: {integrity: sha512-JJoOEKTfL1urb1mDoEblhD9NhEbWmq9jHEMEnxoC4ujUaZ4itA8vKgwkFAyNClgxplLi9tsUKX+EduK0p/l7sg==} + resolution: + {integrity: sha512-JJoOEKTfL1urb1mDoEblhD9NhEbWmq9jHEMEnxoC4ujUaZ4itA8vKgwkFAyNClgxplLi9tsUKX+EduK0p/l7sg==} engines: {node: ^14.18.0 || >=16.0.0} table-layout@1.0.2: - resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + resolution: + {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} engines: {node: '>=8.0.0'} tar-fs@2.1.4: - resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} + resolution: + {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + resolution: + {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + resolution: + {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} engines: {node: '>=8'} temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} + resolution: + {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} engines: {node: '>=14.16'} tempy@1.0.1: - resolution: {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} + resolution: + {integrity: sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==} engines: {node: '>=10'} tempy@3.0.0: - resolution: {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} + resolution: + {integrity: sha512-B2I9X7+o2wOaW4r/CWMkpOO9mdiTRCxXNgob6iGvPmfPWgH/KyUD6Uy5crtWBxIBe3YrNZKR2lSzv1JJKWD4vA==} engines: {node: '>=14.16'} tempy@3.1.0: - resolution: {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} + resolution: + {integrity: sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==} engines: {node: '>=14.16'} term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + resolution: + {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} terminal-link@3.0.0: - resolution: {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==} + resolution: + {integrity: sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg==} engines: {node: '>=12'} test-exclude@7.0.1: - resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + resolution: + {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + resolution: + {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + resolution: + {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + resolution: + {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + resolution: + {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + resolution: + {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} timeout-signal@2.0.0: - resolution: {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} + resolution: + {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} engines: {node: '>=16'} tiny-case@1.0.3: - resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + resolution: + {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} tiny-jsonc@1.0.2: - resolution: {integrity: sha512-f5QDAfLq6zIVSyCZQZhhyl0QS6MvAyTxgz4X4x3+EoCktNWEYJ6PeoEA97fyb98njpBNNi88ybpD7m+BDFXaCw==} + resolution: + {integrity: sha512-f5QDAfLq6zIVSyCZQZhhyl0QS6MvAyTxgz4X4x3+EoCktNWEYJ6PeoEA97fyb98njpBNNi88ybpD7m+BDFXaCw==} tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + resolution: + {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} tinycolor2@1.6.0: - resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + resolution: + {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + resolution: + {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + resolution: + {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tinygradient@1.1.5: - resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} + resolution: + {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} tinypool@1.1.0: - resolution: {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==} + resolution: + {integrity: sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==} engines: {node: ^18.0.0 || >=20.0.0} tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + resolution: + {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} tinyspy@1.1.1: - resolution: {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} + resolution: + {integrity: sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==} engines: {node: '>=14.0.0'} tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + resolution: + {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} engines: {node: '>=14.0.0'} title-case@3.0.3: - resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + resolution: + {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} tmp@0.2.5: - resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + resolution: + {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + resolution: + {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} toggle-selection@1.0.6: - resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + resolution: + {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + resolution: + {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} toposort@2.0.2: - resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + resolution: + {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + resolution: + {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} tr46@5.1.1: - resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + resolution: + {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + resolution: + {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + resolution: + {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + resolution: + {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + resolution: + {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + resolution: + {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} ts-error@1.0.6: - resolution: {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} + resolution: + {integrity: sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==} ts-log@2.2.7: - resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + resolution: + {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} ts-morph@17.0.1: - resolution: {integrity: sha512-10PkHyXmrtsTvZSL+cqtJLTgFXkU43Gd0JCc0Rw6GchWbqKe0Rwgt1v3ouobTZwQzF1mGhDeAlWYBMGRV7y+3g==} + resolution: + {integrity: sha512-10PkHyXmrtsTvZSL+cqtJLTgFXkU43Gd0JCc0Rw6GchWbqKe0Rwgt1v3ouobTZwQzF1mGhDeAlWYBMGRV7y+3g==} ts-morph@20.0.0: - resolution: {integrity: sha512-JVmEJy2Wow5n/84I3igthL9sudQ8qzjh/6i4tmYCm6IqYyKFlNbJZi7oBdjyqcWSWYRu3CtL0xbT6fS03ESZIg==} + resolution: + {integrity: sha512-JVmEJy2Wow5n/84I3igthL9sudQ8qzjh/6i4tmYCm6IqYyKFlNbJZi7oBdjyqcWSWYRu3CtL0xbT6fS03ESZIg==} ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + resolution: + {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -9392,285 +11338,359 @@ packages: optional: true tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + resolution: + {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + resolution: + {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + resolution: + {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} tslib@2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + resolution: + {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + resolution: + {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + resolution: + {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + resolution: + {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + resolution: + {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + resolution: + {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + resolution: + {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + resolution: + {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} type-fest@0.16.0: - resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} + resolution: + {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + resolution: + {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + resolution: + {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + resolution: + {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + resolution: + {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} type-fest@1.4.0: - resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + resolution: + {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} type-fest@2.19.0: - resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + resolution: + {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} type-fest@4.41.0: - resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + resolution: + {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} type-is@1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + resolution: + {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + resolution: + {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + resolution: + {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} engines: {node: '>= 0.4'} typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + resolution: + {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} engines: {node: '>= 0.4'} typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + resolution: + {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} typedarray@0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + resolution: + {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} typedoc@0.27.9: - resolution: {integrity: sha512-/z585740YHURLl9DN2jCWe6OW7zKYm6VoQ93H0sxZ1cwHQEQrUn5BJrEnkWhfzUdyO+BLGjnKUZ9iz9hKloFDw==} + resolution: + {integrity: sha512-/z585740YHURLl9DN2jCWe6OW7zKYm6VoQ93H0sxZ1cwHQEQrUn5BJrEnkWhfzUdyO+BLGjnKUZ9iz9hKloFDw==} engines: {node: '>= 18'} hasBin: true peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + resolution: + {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true typical@4.0.0: - resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + resolution: + {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} engines: {node: '>=8'} typical@5.2.0: - resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + resolution: + {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} engines: {node: '>=8'} ua-parser-js@1.0.40: - resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} + resolution: + {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} hasBin: true uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + resolution: + {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} ufo@0.8.6: - resolution: {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} + resolution: + {integrity: sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==} ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + resolution: + {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + resolution: + {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} unc-path-regex@0.1.2: - resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + resolution: + {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + resolution: + {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + resolution: + {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + resolution: + {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} undici-types@7.14.0: - resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + resolution: + {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + resolution: + {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} unenv@1.10.0: - resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + resolution: + {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + resolution: + {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + resolution: + {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} engines: {node: '>=4'} unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} + resolution: + {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} engines: {node: '>=4'} unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} + resolution: + {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} engines: {node: '>=4'} unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + resolution: + {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} unique-string@2.0.0: - resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + resolution: + {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} engines: {node: '>=8'} unique-string@3.0.0: - resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + resolution: + {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} universal-user-agent@7.0.3: - resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} + resolution: + {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + resolution: + {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + resolution: + {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + resolution: + {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} unixify@1.0.0: - resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + resolution: + {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} engines: {node: '>=0.10.0'} unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + resolution: + {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + resolution: + {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' upper-case-first@2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + resolution: + {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} upper-case@2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + resolution: + {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + resolution: + {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + resolution: + {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} urlpattern-polyfill@10.1.0: - resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} + resolution: + {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} use-resize-observer@9.1.0: - resolution: {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} + resolution: + {integrity: sha512-R25VqO9Wb3asSD4eqtcxk8sJalvIOYBqS8MNZlpDSQ4l4xMQxC/J7Id9HoTqPq8FwULIn0PVW+OAqF2dyYbjow==} peerDependencies: react: 16.8.0 - 18 react-dom: 16.8.0 - 18 util-arity@1.1.0: - resolution: {integrity: sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==} + resolution: + {integrity: sha512-kkyIsXKwemfSy8ZEoaIz06ApApnWsk5hQO0vLjZS6UkBiGiW++Jsyb8vSBoc0WKlffGoGs5yYy/j5pp8zckrFA==} util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + resolution: + {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + resolution: + {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} uuid@11.0.5: - resolution: {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} + resolution: + {integrity: sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==} hasBin: true uuid@11.1.0: - resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + resolution: + {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + resolution: + {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + resolution: + {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + resolution: + {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} validate-npm-package-name@5.0.1: - resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + resolution: + {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + resolution: + {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} vi-fetch@0.8.0: - resolution: {integrity: sha512-uvEgEBTacSnlxRcoA56Drwkc2LbTvRNOdSx5MVayBfEsHAgQJAu+LwePlUOkidFsqQMcQxcb+LlC9qZ9v1yXiw==} + resolution: + {integrity: sha512-uvEgEBTacSnlxRcoA56Drwkc2LbTvRNOdSx5MVayBfEsHAgQJAu+LwePlUOkidFsqQMcQxcb+LlC9qZ9v1yXiw==} deprecated: This package is deprecated. Use MSW instead as it promotes good mocking patterns. vite-node@3.2.1: - resolution: {integrity: sha512-V4EyKQPxquurNJPtQJRZo8hKOoKNBRIhxcDbQFPFig0JdoWcUhwRgK8yoCXXrfYVPKS6XwirGHPszLnR8FbjCA==} + resolution: + {integrity: sha512-V4EyKQPxquurNJPtQJRZo8hKOoKNBRIhxcDbQFPFig0JdoWcUhwRgK8yoCXXrfYVPKS6XwirGHPszLnR8FbjCA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} + resolution: + {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -9710,7 +11730,8 @@ packages: optional: true vitest@3.2.1: - resolution: {integrity: sha512-VZ40MBnlE1/V5uTgdqY3DmjUgZtIzsYq758JGlyQrv5syIsaYcabkfPkEuWML49Ph0D/SoqpVFd0dyVTr551oA==} + resolution: + {integrity: sha512-VZ40MBnlE1/V5uTgdqY3DmjUgZtIzsYq758JGlyQrv5syIsaYcabkfPkEuWML49Ph0D/SoqpVFd0dyVTr551oA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -9738,147 +11759,185 @@ packages: optional: true vscode-css-languageservice@6.3.2: - resolution: {integrity: sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==} + resolution: + {integrity: sha512-GEpPxrUTAeXWdZWHev1OJU9lz2Q2/PPBxQ2TIRmLGvQiH3WZbqaNoute0n0ewxlgtjzTW3AKZT+NHySk5Rf4Eg==} vscode-json-languageservice@5.5.0: - resolution: {integrity: sha512-JchBzp8ArzhCVpRS/LT4wzEEvwHXIUEdZD064cGTI4RVs34rNCZXPUguIYSfGBcHH1GV79ufPcfy3Pd8+ukbKw==} + resolution: + {integrity: sha512-JchBzp8ArzhCVpRS/LT4wzEEvwHXIUEdZD064cGTI4RVs34rNCZXPUguIYSfGBcHH1GV79ufPcfy3Pd8+ukbKw==} vscode-jsonrpc@8.1.0: - resolution: {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} + resolution: + {integrity: sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==} engines: {node: '>=14.0.0'} vscode-languageserver-protocol@3.17.3: - resolution: {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} + resolution: + {integrity: sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==} vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + resolution: + {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} vscode-languageserver-types@3.17.3: - resolution: {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} + resolution: + {integrity: sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==} vscode-languageserver-types@3.17.5: - resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + resolution: + {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} vscode-languageserver@8.1.0: - resolution: {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==} + resolution: + {integrity: sha512-eUt8f1z2N2IEUDBsKaNapkz7jl5QpskN2Y0G01T/ItMxBxw1fJwvtySGB9QMecatne8jFIWJGWI61dWjyTLQsw==} hasBin: true vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + resolution: + {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + resolution: + {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} walk-up-path@4.0.0: - resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} + resolution: + {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==} engines: {node: 20 || >=22} wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + resolution: + {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} web-streams-polyfill@3.3.3: - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + resolution: + {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + resolution: + {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + resolution: + {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + resolution: + {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + resolution: + {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + resolution: + {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} engines: {node: '>=18'} when-exit@2.1.4: - resolution: {integrity: sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==} + resolution: + {integrity: sha512-4rnvd3A1t16PWzrBUcSDZqcAmsUIy4minDXT/CZ8F2mVDgd65i4Aalimgz1aQkRGU0iH5eT5+6Rx2TK8o443Pg==} which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + resolution: + {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + resolution: + {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} engines: {node: '>= 0.4'} which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + resolution: + {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + resolution: + {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + resolution: + {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + resolution: + {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + resolution: + {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} engines: {node: ^16.13.0 || >=18.0.0} hasBin: true why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + resolution: + {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} hasBin: true widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + resolution: + {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} widest-line@5.0.0: - resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} + resolution: + {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + resolution: + {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + resolution: + {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} wordwrapjs@4.0.1: - resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + resolution: + {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} engines: {node: '>=8.0.0'} wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + resolution: + {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + resolution: + {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + resolution: + {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} wrap-ansi@9.0.2: - resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + resolution: + {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + resolution: + {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + resolution: + {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -9890,7 +11949,8 @@ packages: optional: true ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + resolution: + {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -9902,108 +11962,133 @@ packages: optional: true xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + resolution: + {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} xmlbuilder@15.1.1: - resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} + resolution: + {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==} engines: {node: '>=8.0'} xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + resolution: + {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + resolution: + {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + resolution: + {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + resolution: + {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + resolution: + {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} yaml-ast-parser@0.0.43: - resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + resolution: + {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + resolution: + {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} + resolution: + {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} hasBin: true yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + resolution: + {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} hasBin: true yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + resolution: + {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + resolution: + {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + resolution: + {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + resolution: + {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} yarn@1.22.22: - resolution: {integrity: sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==} + resolution: + {integrity: sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==} engines: {node: '>=4.0.0'} hasBin: true yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + resolution: + {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + resolution: + {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + resolution: + {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} yoctocolors-cjs@2.1.3: - resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + resolution: + {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} yoga-layout@3.2.1: - resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} + resolution: + {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} yoga-wasm-web@0.3.3: - resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} + resolution: + {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} yup@1.7.0: - resolution: {integrity: sha512-VJce62dBd+JQvoc+fCVq+KZfPHr+hXaxCcVgotfwWvlR0Ja3ffYKaJBT8rptPOSKOGJDCUnW2C2JWpud7aRP6Q==} + resolution: + {integrity: sha512-VJce62dBd+JQvoc+fCVq+KZfPHr+hXaxCcVgotfwWvlR0Ja3ffYKaJBT8rptPOSKOGJDCUnW2C2JWpud7aRP6Q==} zip-stream@4.1.1: - resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + resolution: + {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} engines: {node: '>= 10'} zod-validation-error@3.4.1: - resolution: {integrity: sha512-1KP64yqDPQ3rupxNv7oXhf7KdhHHgaqbKuspVoiN93TT0xrBjql+Svjkdjq/Qh/7GSMmgQs3AfvBT0heE35thw==} + resolution: + {integrity: sha512-1KP64yqDPQ3rupxNv7oXhf7KdhHHgaqbKuspVoiN93TT0xrBjql+Svjkdjq/Qh/7GSMmgQs3AfvBT0heE35thw==} engines: {node: '>=18.0.0'} peerDependencies: zod: ^3.24.4 zod@3.24.1: - resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} + resolution: + {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} snapshots: - '@actions/core@1.11.1': dependencies: '@actions/exec': 1.1.1 diff --git a/tsconfig.json b/tsconfig.json index d9d10a325e7..1b1e7c454c3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,15 @@ { - "extends": "./configurations/tsconfig.json", - "include": ["configurations/**/*"], - "references": [ - {"path": "./packages/cli"}, - {"path": "./packages/app"}, - {"path": "./packages/theme"}, - {"path": "./packages/cli-kit"}, - {"path": "./packages/create-app"}, - {"path": "./packages/ui-extensions-server-kit"}, - {"path": "./packages/ui-extensions-test-utils"}, - {"path": "./packages/plugin-cloudflare"}, - {"path": "./packages/plugin-did-you-mean"} - ] + "extends": "./configurations/tsconfig.json", + "include": ["configurations/**/*"], + "references": [ + {"path": "./packages/cli"}, + {"path": "./packages/app"}, + {"path": "./packages/theme"}, + {"path": "./packages/cli-kit"}, + {"path": "./packages/create-app"}, + {"path": "./packages/ui-extensions-server-kit"}, + {"path": "./packages/ui-extensions-test-utils"}, + {"path": "./packages/plugin-cloudflare"}, + {"path": "./packages/plugin-did-you-mean"} + ] } From eb975de1f2f8f34d13bc8509f006c77a27ff5795 Mon Sep 17 00:00:00 2001 From: Ryan Bahan Date: Thu, 12 Feb 2026 10:27:38 -0700 Subject: [PATCH 4/8] update readme --- packages/cli/README.md | 1324 +++++++++++++++++++++------------------- 1 file changed, 709 insertions(+), 615 deletions(-) diff --git a/packages/cli/README.md b/packages/cli/README.md index 3c02585b24c..82416a8fed7 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -102,13 +102,14 @@ USAGE [--skip-dependencies-installation] [--verbose] FLAGS - -c, --config= The name of the app configuration. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --skip-dependencies-installation Skips the installation of dependencies. Deprecated, use workspaces instead. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --skip-dependencies-installation [env: SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION] Skips the installation of + dependencies. Deprecated, use workspaces instead. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Build the app, including extensions. @@ -132,14 +133,14 @@ USAGE ] [-s ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - -s, --store= The store domain. Must be an existing dev store. - --client-id= The Client ID of your app. - --id= (required) The bulk operation ID to cancel (numeric ID or full GID). - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -s, --store= [env: SHOPIFY_FLAG_STORE] The store domain. Must be an existing dev store. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --id= (required) [env: SHOPIFY_FLAG_ID] The bulk operation ID to cancel (numeric ID or full GID). + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Cancel a bulk operation. @@ -158,24 +159,26 @@ USAGE [--verbose] [--version ] FLAGS - -c, --config= The name of the app configuration. - -q, --query= The GraphQL query or mutation to run as a bulk operation. - -s, --store= The store domain. Must be an existing dev store. - -v, --variables=... The values for any GraphQL variables in your mutation, in JSON format. Can be specified - multiple times. - --client-id= The Client ID of your app. - --no-color Disable color output. - --output-file= The file path where results should be written if --watch is specified. If not specified, - results will be written to STDOUT. - --path= The path to your app directory. - --query-file= Path to a file containing the GraphQL query or mutation. Can't be used with --query. - --reset Reset all your settings. - --variable-file= Path to a file containing GraphQL variables in JSONL format (one JSON object per line). - Can't be used with --variables. - --verbose Increase the verbosity of the output. - --version= The API version to use for the bulk operation. If not specified, uses the latest stable - version. - --watch Wait for bulk operation results before exiting. Defaults to false. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -q, --query= [env: SHOPIFY_FLAG_QUERY] The GraphQL query or mutation to run as a bulk operation. + -s, --store= [env: SHOPIFY_FLAG_STORE] The store domain. Must be an existing dev store. + -v, --variables=... [env: SHOPIFY_FLAG_VARIABLES] The values for any GraphQL variables in your mutation, in + JSON format. Can be specified multiple times. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --output-file= [env: SHOPIFY_FLAG_OUTPUT_FILE] The file path where results should be written if --watch + is specified. If not specified, results will be written to STDOUT. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --query-file= [env: SHOPIFY_FLAG_QUERY_FILE] Path to a file containing the GraphQL query or mutation. + Can't be used with --query. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --variable-file= [env: SHOPIFY_FLAG_VARIABLE_FILE] Path to a file containing GraphQL variables in JSONL + format (one JSON object per line). Can't be used with --variables. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + --version= [env: SHOPIFY_FLAG_VERSION] The API version to use for the bulk operation. If not + specified, uses the latest stable version. + --watch [env: SHOPIFY_FLAG_WATCH] Wait for bulk operation results before exiting. Defaults to + false. DESCRIPTION Execute bulk operations. @@ -201,15 +204,15 @@ USAGE | ] [-s ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - -s, --store= The store domain. Must be an existing dev store. - --client-id= The Client ID of your app. - --id= The bulk operation ID (numeric ID or full GID). If not provided, lists all bulk operations - belonging to this app on this store in the last 7 days. - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -s, --store= [env: SHOPIFY_FLAG_STORE] The store domain. Must be an existing dev store. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --id= [env: SHOPIFY_FLAG_ID] The bulk operation ID (numeric ID or full GID). If not provided, lists + all bulk operations belonging to this app on this store in the last 7 days. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Check the status of bulk operations. @@ -233,12 +236,12 @@ USAGE $ shopify app config link [--client-id | -c ] [--no-color] [--path ] [--reset | ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Fetch your app configuration from the Developer Dashboard. @@ -259,12 +262,12 @@ USAGE $ shopify app config pull [--client-id | -c ] [--no-color] [--path ] [--reset | ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Refresh an already-linked app configuration without prompts. @@ -284,14 +287,14 @@ USAGE $ shopify app config use [config] [flags] ARGUMENTS - CONFIG The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'. + [CONFIG] The name of the app configuration. Can be 'shopify.app.staging.toml' or simply 'staging'. FLAGS - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Activate an app configuration. @@ -311,28 +314,32 @@ USAGE [--verbose] [--version ] FLAGS - -c, --config= The name of the app configuration. - -f, --force Deploy without asking for confirmation. Equivalent to --allow-updates - --allow-deletes. For CI/CD environments, the recommended flag is --allow-updates. - --allow-deletes Allows removing extensions and configuration without requiring user confirmation. - For CI/CD environments, the recommended flag is --allow-updates. - --allow-updates Allows adding and updating extensions and configuration without requiring user - confirmation. Recommended option for CI/CD environments. - --client-id= The Client ID of your app. - --message= Optional message that will be associated with this version. This is for internal use - only and won't be available externally. - --no-build Use with caution: Skips building any elements of the app that require building. You - should ensure your app has been prepared in advance, such as by running `shopify app - build` or by caching build artifacts. - --no-color Disable color output. - --no-release Creates a version but doesn't release it - it's not made available to merchants. - With this flag, a user confirmation is not required. - --path= The path to your app directory. - --reset Reset all your settings. - --source-control-url= URL associated with the new app version. - --verbose Increase the verbosity of the output. - --version= Optional version tag that will be associated with this app version. If not provided, - an auto-generated identifier will be generated for this app version. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -f, --force [env: SHOPIFY_FLAG_FORCE] Deploy without asking for confirmation. Equivalent to + --allow-updates --allow-deletes. For CI/CD environments, the recommended flag is + --allow-updates. + --allow-deletes [env: SHOPIFY_FLAG_ALLOW_DELETES] Allows removing extensions and configuration + without requiring user confirmation. For CI/CD environments, the recommended flag is + --allow-updates. + --allow-updates [env: SHOPIFY_FLAG_ALLOW_UPDATES] Allows adding and updating extensions and + configuration without requiring user confirmation. Recommended option for CI/CD + environments. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --message= [env: SHOPIFY_FLAG_MESSAGE] Optional message that will be associated with this + version. This is for internal use only and won't be available externally. + --no-build [env: SHOPIFY_FLAG_NO_BUILD] Use with caution: Skips building any elements of the + app that require building. You should ensure your app has been prepared in advance, + such as by running `shopify app build` or by caching build artifacts. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --no-release [env: SHOPIFY_FLAG_NO_RELEASE] Creates a version but doesn't release it - it's not + made available to merchants. With this flag, a user confirmation is not required. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --source-control-url= [env: SHOPIFY_FLAG_SOURCE_CONTROL_URL] URL associated with the new app version. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + --version= [env: SHOPIFY_FLAG_VERSION] Optional version tag that will be associated with this + app version. If not provided, an auto-generated identifier will be generated for + this app version. DESCRIPTION Deploy your Shopify app. @@ -359,29 +366,35 @@ USAGE [--theme-app-extension-port ] [--use-localhost | [--tunnel-url | ]] [--verbose] FLAGS - -c, --config= The name of the app configuration. - -s, --store= Store URL. Must be an existing development or Shopify Plus sandbox store. - -t, --theme= Theme ID or name of the theme app extension host theme. - --checkout-cart-url= Resource URL for checkout UI extension. Format: - "/cart/{productVariantID}:{productQuantity}" - --client-id= The Client ID of your app. - --localhost-port= Port to use for localhost. - --no-color Disable color output. - --no-update Uses the app URL from the toml file instead an autogenerated URL for dev. - --notify= The file path or URL. The file path is to a file that you want updated on - idle. The URL path is where you want a webhook posted to report on file - changes. - --path= The path to your app directory. - --reset Reset all your settings. - --skip-dependencies-installation Skips the installation of dependencies. Deprecated, use workspaces instead. - --subscription-product-url= Resource URL for subscription UI extension. Format: "/products/{productId}" - --theme-app-extension-port= Local port of the theme app extension development server. - --tunnel-url= Use a custom tunnel, it must be running before executing dev. Format: - "https://my-tunnel-url:port". - --use-localhost Service entry point will listen to localhost. A tunnel won't be used. Will - work for testing many app features, but not those that directly invoke your - app (E.g: Webhooks) - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -s, --store= [env: SHOPIFY_FLAG_STORE] Store URL. Must be an existing development or + Shopify Plus sandbox store. + -t, --theme= [env: SHOPIFY_FLAG_THEME] Theme ID or name of the theme app extension host + theme. + --checkout-cart-url= [env: SHOPIFY_FLAG_CHECKOUT_CART_URL] Resource URL for checkout UI extension. + Format: "/cart/{productVariantID}:{productQuantity}" + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --localhost-port= [env: SHOPIFY_FLAG_LOCALHOST_PORT] Port to use for localhost. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --no-update [env: SHOPIFY_FLAG_NO_UPDATE] Uses the app URL from the toml file instead an + autogenerated URL for dev. + --notify= [env: SHOPIFY_FLAG_NOTIFY] The file path or URL. The file path is to a file + that you want updated on idle. The URL path is where you want a webhook posted + to report on file changes. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --skip-dependencies-installation [env: SHOPIFY_FLAG_SKIP_DEPENDENCIES_INSTALLATION] Skips the installation of + dependencies. Deprecated, use workspaces instead. + --subscription-product-url= [env: SHOPIFY_FLAG_SUBSCRIPTION_PRODUCT_URL] Resource URL for subscription UI + extension. Format: "/products/{productId}" + --theme-app-extension-port= [env: SHOPIFY_FLAG_THEME_APP_EXTENSION_PORT] Local port of the theme app + extension development server. + --tunnel-url= [env: SHOPIFY_FLAG_TUNNEL_URL] Use a custom tunnel, it must be running before + executing dev. Format: "https://my-tunnel-url:port". + --use-localhost [env: SHOPIFY_FLAG_USE_LOCALHOST] Service entry point will listen to + localhost. A tunnel won't be used. Will work for testing many app features, + but not those that directly invoke your app (E.g: Webhooks) + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Run the app. @@ -400,13 +413,13 @@ USAGE ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - -s, --store= Store URL. Must be an existing development store. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -s, --store= [env: SHOPIFY_FLAG_STORE] Store URL. Must be an existing development store. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Cleans up the dev preview from the selected store. @@ -426,13 +439,13 @@ USAGE [--reset | ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - --client-id= The Client ID of your app. - --env-file= Specify an environment file to update if the update flag is set - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --env-file= [env: SHOPIFY_FLAG_ENV_FILE] Specify an environment file to update if the update flag is set + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Pull app and extensions environment variables. @@ -452,12 +465,12 @@ USAGE $ shopify app env show [--client-id | -c ] [--no-color] [--path ] [--reset | ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your app directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Display app and extensions environment variables. @@ -476,21 +489,26 @@ USAGE [--version ] FLAGS - -c, --config= The name of the app configuration. - -q, --query= The GraphQL query or mutation, as a string. - -s, --store= The myshopify.com domain of the store to execute against. The app must be installed on - the store. If not specified, you will be prompted to select a store. - -v, --variables= The values for any GraphQL variables in your query or mutation, in JSON format. - --client-id= The Client ID of your app. - --no-color Disable color output. - --output-file= The file name where results should be written, instead of STDOUT. - --path= The path to your app directory. - --query-file= Path to a file containing the GraphQL query or mutation. Can't be used with --query. - --reset Reset all your settings. - --variable-file= Path to a file containing GraphQL variables in JSON format. Can't be used with - --variables. - --verbose Increase the verbosity of the output. - --version= The API version to use for the query or mutation. Defaults to the latest stable version. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -q, --query= [env: SHOPIFY_FLAG_QUERY] The GraphQL query or mutation, as a string. + -s, --store= [env: SHOPIFY_FLAG_STORE] The myshopify.com domain of the store to execute against. The + app must be installed on the store. If not specified, you will be prompted to select a + store. + -v, --variables= [env: SHOPIFY_FLAG_VARIABLES] The values for any GraphQL variables in your query or + mutation, in JSON format. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --output-file= [env: SHOPIFY_FLAG_OUTPUT_FILE] The file name where results should be written, instead of + STDOUT. + --path= [env: SHOPIFY_FLAG_PATH] The path to your app directory. + --query-file= [env: SHOPIFY_FLAG_QUERY_FILE] Path to a file containing the GraphQL query or mutation. + Can't be used with --query. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --variable-file= [env: SHOPIFY_FLAG_VARIABLE_FILE] Path to a file containing GraphQL variables in JSON + format. Can't be used with --variables. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + --version= [env: SHOPIFY_FLAG_VERSION] The API version to use for the query or mutation. Defaults to + the latest stable version. DESCRIPTION Execute GraphQL queries and mutations. @@ -510,12 +528,12 @@ USAGE $ shopify app function build [--client-id | -c ] [--no-color] [--path ] [--reset | ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your function directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Compile a function to wasm. @@ -533,13 +551,13 @@ USAGE [--verbose] FLAGS - -c, --config= The name of the app configuration. - -j, --json Output the result as JSON. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your function directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -j, --json [env: SHOPIFY_FLAG_JSON] Output the result as JSON. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Print basic information about your function. @@ -565,16 +583,17 @@ USAGE [--reset | ] [--verbose] [-w] FLAGS - -c, --config= The name of the app configuration. - -j, --json Output the result as JSON. - -l, --log= Specifies a log identifier to replay instead of selecting from a list. The identifier is - provided in the output of `shopify app dev` and is the suffix of the log file name. - -w, --[no-]watch Re-run the function when the source code changes. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your function directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -j, --json [env: SHOPIFY_FLAG_JSON] Output the result as JSON. + -l, --log= [env: SHOPIFY_FLAG_LOG] Specifies a log identifier to replay instead of selecting from a + list. The identifier is provided in the output of `shopify app dev` and is the suffix of the + log file name. + -w, --[no-]watch [env: SHOPIFY_FLAG_WATCH] Re-run the function when the source code changes. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Replays a function run from an app log. @@ -594,15 +613,16 @@ USAGE ] [--reset | ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - -e, --export= Name of the WebAssembly export to invoke. - -i, --input= The input JSON to pass to the function. If omitted, standard input is used. - -j, --json Output the result as JSON. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your function directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + -e, --export= [env: SHOPIFY_FLAG_EXPORT] Name of the WebAssembly export to invoke. + -i, --input= [env: SHOPIFY_FLAG_INPUT] The input JSON to pass to the function. If omitted, standard input + is used. + -j, --json [env: SHOPIFY_FLAG_JSON] Output the result as JSON. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Run a function locally for testing. @@ -622,13 +642,13 @@ USAGE [--verbose] FLAGS - -c, --config= The name of the app configuration. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your function directory. - --reset Reset all your settings. - --stdout Output the schema to stdout instead of writing to a file. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --stdout [env: SHOPIFY_FLAG_STDOUT] Output the schema to stdout instead of writing to a file. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Fetch the latest GraphQL schema for a function. @@ -650,12 +670,12 @@ USAGE [--verbose] FLAGS - -c, --config= The name of the app configuration. - --client-id= The Client ID of your app. - --no-color Disable color output. - --path= The path to your function directory. - --reset Reset all your settings. - --verbose Increase the verbosity of the output. + -c, --config= [env: SHOPIFY_FLAG_APP_CONFIG] The name of the app configuration. + --client-id= [env: SHOPIFY_FLAG_CLIENT_ID] The Client ID of your app. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --path= [env: SHOPIFY_FLAG_PATH] The path to your function directory. + --reset [env: SHOPIFY_FLAG_RESET] Reset all your settings. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. DESCRIPTION Generate GraphQL types for a JavaScript function. @@ -675,17 +695,17 @@ USAGE ] [-t ] [--verbose] FLAGS - -c, --config= The name of the app configuration. - -n, --name= name of your Extension - -t, --template= Extension template - -t, --type= Deprecated. Please use --template - --client-id= The Client ID of your app. - --flavor=