unleash-server 8.0.0 → 8.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/addons/addon.d.ts +10 -2
- package/dist/lib/addons/addon.d.ts.map +1 -1
- package/dist/lib/addons/addon.js +104 -6
- package/dist/lib/addons/addon.js.map +1 -1
- package/dist/lib/addons/datadog-definition.js +1 -1
- package/dist/lib/addons/datadog-definition.js.map +1 -1
- package/dist/lib/addons/datadog.test.js +2 -0
- package/dist/lib/addons/datadog.test.js.map +1 -1
- package/dist/lib/addons/index.d.ts.map +1 -1
- package/dist/lib/addons/index.js +2 -0
- package/dist/lib/addons/index.js.map +1 -1
- package/dist/lib/addons/new-relic.d.ts.map +1 -1
- package/dist/lib/addons/new-relic.js +0 -1
- package/dist/lib/addons/new-relic.js.map +1 -1
- package/dist/lib/addons/new-relic.test.js +0 -1
- package/dist/lib/addons/new-relic.test.js.map +1 -1
- package/dist/lib/addons/slack.test.js +1 -2
- package/dist/lib/addons/slack.test.js.map +1 -1
- package/dist/lib/addons/teams-definition.d.ts.map +1 -1
- package/dist/lib/addons/teams-definition.js +1 -0
- package/dist/lib/addons/teams-definition.js.map +1 -1
- package/dist/lib/addons/teams-workflow-definition.d.ts +4 -0
- package/dist/lib/addons/teams-workflow-definition.d.ts.map +1 -0
- package/dist/lib/addons/teams-workflow-definition.js +66 -0
- package/dist/lib/addons/teams-workflow-definition.js.map +1 -0
- package/dist/lib/addons/teams-workflow.d.ts +15 -0
- package/dist/lib/addons/teams-workflow.d.ts.map +1 -0
- package/dist/lib/addons/teams-workflow.js +110 -0
- package/dist/lib/addons/teams-workflow.js.map +1 -0
- package/dist/lib/addons/teams-workflow.test.d.ts +2 -0
- package/dist/lib/addons/teams-workflow.test.d.ts.map +1 -0
- package/dist/lib/addons/teams-workflow.test.js +202 -0
- package/dist/lib/addons/teams-workflow.test.js.map +1 -0
- package/dist/lib/addons/teams.d.ts.map +1 -1
- package/dist/lib/addons/teams.js +0 -1
- package/dist/lib/addons/teams.js.map +1 -1
- package/dist/lib/addons/teams.test.js +0 -1
- package/dist/lib/addons/teams.test.js.map +1 -1
- package/dist/lib/addons/validate-url.d.ts +18 -0
- package/dist/lib/addons/validate-url.d.ts.map +1 -0
- package/dist/lib/addons/validate-url.js +93 -0
- package/dist/lib/addons/validate-url.js.map +1 -0
- package/dist/lib/addons/validate-url.test.d.ts +2 -0
- package/dist/lib/addons/validate-url.test.d.ts.map +1 -0
- package/dist/lib/addons/validate-url.test.js +199 -0
- package/dist/lib/addons/validate-url.test.js.map +1 -0
- package/dist/lib/create-config.d.ts.map +1 -1
- package/dist/lib/create-config.js +7 -0
- package/dist/lib/create-config.js.map +1 -1
- package/dist/lib/db/session-store.d.ts +1 -0
- package/dist/lib/db/session-store.d.ts.map +1 -1
- package/dist/lib/db/session-store.js +6 -0
- package/dist/lib/db/session-store.js.map +1 -1
- package/dist/lib/error/bad-data-error.d.ts.map +1 -1
- package/dist/lib/error/bad-data-error.js +10 -2
- package/dist/lib/error/bad-data-error.js.map +1 -1
- package/dist/lib/error/unleash-error.test.js +23 -0
- package/dist/lib/error/unleash-error.test.js.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.d.ts.map +1 -1
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js +2 -0
- package/dist/lib/features/client-feature-toggles/client-feature-toggle.controller.js.map +1 -1
- package/dist/lib/features/constraints/constraints-controller.d.ts.map +1 -1
- package/dist/lib/features/constraints/constraints-controller.js +1 -0
- package/dist/lib/features/constraints/constraints-controller.js.map +1 -1
- package/dist/lib/features/context/context.d.ts.map +1 -1
- package/dist/lib/features/context/context.js +3 -1
- package/dist/lib/features/context/context.js.map +1 -1
- package/dist/lib/features/dependent-features/dependent-features-controller.d.ts.map +1 -1
- package/dist/lib/features/dependent-features/dependent-features-controller.js +6 -0
- package/dist/lib/features/dependent-features/dependent-features-controller.js.map +1 -1
- package/dist/lib/features/environments/environments-controller.d.ts.map +1 -1
- package/dist/lib/features/environments/environments-controller.js +6 -0
- package/dist/lib/features/environments/environments-controller.js.map +1 -1
- package/dist/lib/features/events/event-search-controller.d.ts.map +1 -1
- package/dist/lib/features/events/event-search-controller.js +1 -0
- package/dist/lib/features/events/event-search-controller.js.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import-controller.d.ts.map +1 -1
- package/dist/lib/features/export-import-toggles/export-import-controller.js +3 -0
- package/dist/lib/features/export-import-toggles/export-import-controller.js.map +1 -1
- package/dist/lib/features/feature-search/feature-search-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-search/feature-search-controller.js +1 -0
- package/dist/lib/features/feature-search/feature-search-controller.js.map +1 -1
- package/dist/lib/features/feature-search/feature-search-service.d.ts.map +1 -1
- package/dist/lib/features/feature-search/feature-search-service.js +5 -0
- package/dist/lib/features/feature-search/feature-search-service.js.map +1 -1
- package/dist/lib/features/feature-search/feature-search-store.d.ts +1 -1
- package/dist/lib/features/feature-search/feature-search-store.d.ts.map +1 -1
- package/dist/lib/features/feature-search/feature-search-store.js +60 -10
- package/dist/lib/features/feature-search/feature-search-store.js.map +1 -1
- package/dist/lib/features/feature-search/feature.search.e2e.test.js +77 -0
- package/dist/lib/features/feature-search/feature.search.e2e.test.js.map +1 -1
- package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js +2 -0
- package/dist/lib/features/feature-toggle/archive-feature-toggle-controller.js.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/feature-toggle-controller.js +21 -0
- package/dist/lib/features/feature-toggle/feature-toggle-controller.js.map +1 -1
- package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.d.ts.map +1 -1
- package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.js +5 -0
- package/dist/lib/features/feature-toggle/legacy/feature-toggle-legacy-controller.js.map +1 -1
- package/dist/lib/features/frontend-api/frontend-api-controller.d.ts.map +1 -1
- package/dist/lib/features/frontend-api/frontend-api-controller.js +4 -0
- package/dist/lib/features/frontend-api/frontend-api-controller.js.map +1 -1
- package/dist/lib/features/frontend-api/frontend-api-service.d.ts.map +1 -1
- package/dist/lib/features/frontend-api/frontend-api-service.js +17 -20
- package/dist/lib/features/frontend-api/frontend-api-service.js.map +1 -1
- package/dist/lib/features/maintenance/maintenance-controller.d.ts.map +1 -1
- package/dist/lib/features/maintenance/maintenance-controller.js +2 -0
- package/dist/lib/features/maintenance/maintenance-controller.js.map +1 -1
- package/dist/lib/features/metrics/client-metrics/client-metrics.d.ts.map +1 -1
- package/dist/lib/features/metrics/client-metrics/client-metrics.js +2 -0
- package/dist/lib/features/metrics/client-metrics/client-metrics.js.map +1 -1
- package/dist/lib/features/metrics/custom/custom-metrics-controller.d.ts.map +1 -1
- package/dist/lib/features/metrics/custom/custom-metrics-controller.js +2 -0
- package/dist/lib/features/metrics/custom/custom-metrics-controller.js.map +1 -1
- package/dist/lib/features/metrics/instance/metrics.d.ts.map +1 -1
- package/dist/lib/features/metrics/instance/metrics.js +3 -0
- package/dist/lib/features/metrics/instance/metrics.js.map +1 -1
- package/dist/lib/features/metrics/instance/register.d.ts.map +1 -1
- package/dist/lib/features/metrics/instance/register.js +1 -0
- package/dist/lib/features/metrics/instance/register.js.map +1 -1
- package/dist/lib/features/metrics/integrations/integration-metrics.d.ts +1 -1
- package/dist/lib/features/metrics/integrations/integration-metrics.d.ts.map +1 -1
- package/dist/lib/features/metrics/integrations/integration-metrics.js +2 -0
- package/dist/lib/features/metrics/integrations/integration-metrics.js.map +1 -1
- package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.d.ts.map +1 -1
- package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.js +1 -0
- package/dist/lib/features/metrics/unknown-flags/unknown-flags-controller.js.map +1 -1
- package/dist/lib/features/playground/playground.d.ts.map +1 -1
- package/dist/lib/features/playground/playground.js +2 -0
- package/dist/lib/features/playground/playground.js.map +1 -1
- package/dist/lib/features/project/project-controller.d.ts.map +1 -1
- package/dist/lib/features/project/project-controller.js +6 -0
- package/dist/lib/features/project/project-controller.js.map +1 -1
- package/dist/lib/features/project-environments/project-environments-controller.d.ts.map +1 -1
- package/dist/lib/features/project-environments/project-environments-controller.js +3 -0
- package/dist/lib/features/project-environments/project-environments-controller.js.map +1 -1
- package/dist/lib/features/project-insights/project-insights-controller.d.ts.map +1 -1
- package/dist/lib/features/project-insights/project-insights-controller.js +1 -0
- package/dist/lib/features/project-insights/project-insights-controller.js.map +1 -1
- package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.d.ts.map +1 -1
- package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.js +5 -2
- package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.js.map +1 -1
- package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.test.js +34 -0
- package/dist/lib/features/project-status/project-lifecycle-read-model/project-lifecycle-summary-read-model.test.js.map +1 -1
- package/dist/lib/features/segment/segment-controller.d.ts.map +1 -1
- package/dist/lib/features/segment/segment-controller.js +9 -0
- package/dist/lib/features/segment/segment-controller.js.map +1 -1
- package/dist/lib/features/tag-type/tag-type.d.ts.map +1 -1
- package/dist/lib/features/tag-type/tag-type.js +6 -0
- package/dist/lib/features/tag-type/tag-type.js.map +1 -1
- package/dist/lib/features/ui-observability-controller/ui-observability-controller.d.ts.map +1 -1
- package/dist/lib/features/ui-observability-controller/ui-observability-controller.js +1 -0
- package/dist/lib/features/ui-observability-controller/ui-observability-controller.js.map +1 -1
- package/dist/lib/middleware/secure-headers.d.ts.map +1 -1
- package/dist/lib/middleware/secure-headers.js +20 -1
- package/dist/lib/middleware/secure-headers.js.map +1 -1
- package/dist/lib/openapi/spec/addon-create-update-schema.d.ts +1 -1
- package/dist/lib/openapi/spec/addon-create-update-schema.js +1 -1
- package/dist/lib/openapi/spec/addons-schema.d.ts +15 -0
- package/dist/lib/openapi/spec/addons-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/addons-schema.js +51 -0
- package/dist/lib/openapi/spec/addons-schema.js.map +1 -1
- package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts +3 -2
- package/dist/lib/openapi/spec/feature-search-query-parameters.d.ts.map +1 -1
- package/dist/lib/openapi/spec/feature-search-query-parameters.js +3 -2
- package/dist/lib/openapi/spec/feature-search-query-parameters.js.map +1 -1
- package/dist/lib/openapi/spec/profile-schema.d.ts +6 -1
- package/dist/lib/openapi/spec/profile-schema.d.ts.map +1 -1
- package/dist/lib/openapi/spec/profile-schema.js +13 -1
- package/dist/lib/openapi/spec/profile-schema.js.map +1 -1
- package/dist/lib/openapi/spec/profile-schema.test.js +1 -0
- package/dist/lib/openapi/spec/profile-schema.test.js.map +1 -1
- package/dist/lib/openapi/util/api-operation.d.ts +1 -1
- package/dist/lib/openapi/util/api-stability.js +1 -1
- package/dist/lib/openapi/util/api-stability.test.js +8 -5
- package/dist/lib/openapi/util/api-stability.test.js.map +1 -1
- package/dist/lib/routes/admin-api/addon.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/addon.js +12 -2
- package/dist/lib/routes/admin-api/addon.js.map +1 -1
- package/dist/lib/routes/admin-api/api-token.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/api-token.js +5 -0
- package/dist/lib/routes/admin-api/api-token.js.map +1 -1
- package/dist/lib/routes/admin-api/event.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/event.js +3 -0
- package/dist/lib/routes/admin-api/event.js.map +1 -1
- package/dist/lib/routes/admin-api/favorites.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/favorites.js +4 -0
- package/dist/lib/routes/admin-api/favorites.js.map +1 -1
- package/dist/lib/routes/admin-api/feature-type.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/feature-type.js +2 -0
- package/dist/lib/routes/admin-api/feature-type.js.map +1 -1
- package/dist/lib/routes/admin-api/instance-admin.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/instance-admin.js +2 -0
- package/dist/lib/routes/admin-api/instance-admin.js.map +1 -1
- package/dist/lib/routes/admin-api/metrics.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/metrics.js +7 -0
- package/dist/lib/routes/admin-api/metrics.js.map +1 -1
- package/dist/lib/routes/admin-api/project/api-token.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/project/api-token.js +3 -0
- package/dist/lib/routes/admin-api/project/api-token.js.map +1 -1
- package/dist/lib/routes/admin-api/project/health-report.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/project/health-report.js +1 -0
- package/dist/lib/routes/admin-api/project/health-report.js.map +1 -1
- package/dist/lib/routes/admin-api/project/project-archive.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/project/project-archive.js +4 -0
- package/dist/lib/routes/admin-api/project/project-archive.js.map +1 -1
- package/dist/lib/routes/admin-api/project/variants.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/project/variants.js +4 -0
- package/dist/lib/routes/admin-api/project/variants.js.map +1 -1
- package/dist/lib/routes/admin-api/public-signup.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/public-signup.js +4 -0
- package/dist/lib/routes/admin-api/public-signup.js.map +1 -1
- package/dist/lib/routes/admin-api/strategy.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/strategy.js +7 -0
- package/dist/lib/routes/admin-api/strategy.js.map +1 -1
- package/dist/lib/routes/admin-api/tag.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/tag.js +5 -0
- package/dist/lib/routes/admin-api/tag.js.map +1 -1
- package/dist/lib/routes/admin-api/telemetry.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/telemetry.js +1 -0
- package/dist/lib/routes/admin-api/telemetry.js.map +1 -1
- package/dist/lib/routes/admin-api/user/pat.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/user/pat.js +3 -0
- package/dist/lib/routes/admin-api/user/pat.js.map +1 -1
- package/dist/lib/routes/admin-api/user/user.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/user/user.js +11 -2
- package/dist/lib/routes/admin-api/user/user.js.map +1 -1
- package/dist/lib/routes/admin-api/user/user.test.js +56 -6
- package/dist/lib/routes/admin-api/user/user.test.js.map +1 -1
- package/dist/lib/routes/admin-api/user-admin.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/user-admin.js +12 -0
- package/dist/lib/routes/admin-api/user-admin.js.map +1 -1
- package/dist/lib/routes/admin-api/user-feedback.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/user-feedback.js +2 -0
- package/dist/lib/routes/admin-api/user-feedback.js.map +1 -1
- package/dist/lib/routes/admin-api/user-splash.d.ts.map +1 -1
- package/dist/lib/routes/admin-api/user-splash.js +1 -0
- package/dist/lib/routes/admin-api/user-splash.js.map +1 -1
- package/dist/lib/routes/auth/reset-password-controller.d.ts.map +1 -1
- package/dist/lib/routes/auth/reset-password-controller.js +4 -0
- package/dist/lib/routes/auth/reset-password-controller.js.map +1 -1
- package/dist/lib/routes/auth/simple-password-provider.d.ts.map +1 -1
- package/dist/lib/routes/auth/simple-password-provider.js +1 -0
- package/dist/lib/routes/auth/simple-password-provider.js.map +1 -1
- package/dist/lib/routes/edge-api/index.d.ts.map +1 -1
- package/dist/lib/routes/edge-api/index.js +1 -0
- package/dist/lib/routes/edge-api/index.js.map +1 -1
- package/dist/lib/routes/health-check.d.ts.map +1 -1
- package/dist/lib/routes/health-check.js +1 -0
- package/dist/lib/routes/health-check.js.map +1 -1
- package/dist/lib/routes/public-invite.d.ts.map +1 -1
- package/dist/lib/routes/public-invite.js +2 -0
- package/dist/lib/routes/public-invite.js.map +1 -1
- package/dist/lib/routes/ready-check.d.ts.map +1 -1
- package/dist/lib/routes/ready-check.js +1 -0
- package/dist/lib/routes/ready-check.js.map +1 -1
- package/dist/lib/routes/util.d.ts.map +1 -1
- package/dist/lib/routes/util.js +8 -1
- package/dist/lib/routes/util.js.map +1 -1
- package/dist/lib/routes/util.test.d.ts +2 -0
- package/dist/lib/routes/util.test.d.ts.map +1 -0
- package/dist/lib/routes/util.test.js +18 -0
- package/dist/lib/routes/util.test.js.map +1 -0
- package/dist/lib/schema/html-input.d.ts +4 -0
- package/dist/lib/schema/html-input.d.ts.map +1 -0
- package/dist/lib/schema/html-input.js +38 -0
- package/dist/lib/schema/html-input.js.map +1 -0
- package/dist/lib/schema/html-input.test.d.ts +2 -0
- package/dist/lib/schema/html-input.test.d.ts.map +1 -0
- package/dist/lib/schema/html-input.test.js +98 -0
- package/dist/lib/schema/html-input.test.js.map +1 -0
- package/dist/lib/server-impl.d.ts +2 -1
- package/dist/lib/server-impl.d.ts.map +1 -1
- package/dist/lib/server-impl.js +2 -1
- package/dist/lib/server-impl.js.map +1 -1
- package/dist/lib/services/addon-service.d.ts +8 -1
- package/dist/lib/services/addon-service.d.ts.map +1 -1
- package/dist/lib/services/addon-service.js +24 -1
- package/dist/lib/services/addon-service.js.map +1 -1
- package/dist/lib/services/addon-service.test.js +75 -8
- package/dist/lib/services/addon-service.test.js.map +1 -1
- package/dist/lib/services/openapi-service.d.ts +2 -6
- package/dist/lib/services/openapi-service.d.ts.map +1 -1
- package/dist/lib/services/openapi-service.js.map +1 -1
- package/dist/lib/services/project-schema.d.ts +1 -2
- package/dist/lib/services/project-schema.d.ts.map +1 -1
- package/dist/lib/services/project-schema.js +4 -2
- package/dist/lib/services/project-schema.js.map +1 -1
- package/dist/lib/services/session-service.d.ts +6 -0
- package/dist/lib/services/session-service.d.ts.map +1 -1
- package/dist/lib/services/session-service.js +8 -0
- package/dist/lib/services/session-service.js.map +1 -1
- package/dist/lib/services/user-service.d.ts +18 -5
- package/dist/lib/services/user-service.d.ts.map +1 -1
- package/dist/lib/services/user-service.js +27 -7
- package/dist/lib/services/user-service.js.map +1 -1
- package/dist/lib/services/user-service.test.js +68 -0
- package/dist/lib/services/user-service.test.js.map +1 -1
- package/dist/lib/types/experimental.d.ts +1 -1
- package/dist/lib/types/experimental.d.ts.map +1 -1
- package/dist/lib/types/experimental.js +23 -2
- package/dist/lib/types/experimental.js.map +1 -1
- package/dist/lib/types/model.d.ts +2 -0
- package/dist/lib/types/model.d.ts.map +1 -1
- package/dist/lib/types/model.js.map +1 -1
- package/dist/lib/types/option.d.ts +4 -0
- package/dist/lib/types/option.d.ts.map +1 -1
- package/dist/lib/types/stores/session-store.d.ts +1 -0
- package/dist/lib/types/stores/session-store.d.ts.map +1 -1
- package/dist/lib/ui-config/ui-config-controller.d.ts.map +1 -1
- package/dist/lib/ui-config/ui-config-controller.js +2 -0
- package/dist/lib/ui-config/ui-config-controller.js.map +1 -1
- package/dist/lib/ui-config/ui-config-service.d.ts.map +1 -1
- package/dist/lib/ui-config/ui-config-service.js +4 -2
- package/dist/lib/ui-config/ui-config-service.js.map +1 -1
- package/dist/lib/ui-config/ui-config.test.js +21 -2
- package/dist/lib/ui-config/ui-config.test.js.map +1 -1
- package/dist/lib/users/inactive/inactive-users-controller.d.ts.map +1 -1
- package/dist/lib/users/inactive/inactive-users-controller.js +2 -0
- package/dist/lib/users/inactive/inactive-users-controller.js.map +1 -1
- package/dist/lib/util/anonymise.d.ts +1 -0
- package/dist/lib/util/anonymise.d.ts.map +1 -1
- package/dist/lib/util/anonymise.js +3 -0
- package/dist/lib/util/anonymise.js.map +1 -1
- package/dist/lib/util/anonymise.test.js +4 -1
- package/dist/lib/util/anonymise.test.js.map +1 -1
- package/dist/migrations/20260617115403-update-flag-descriptions.d.ts +3 -0
- package/dist/migrations/20260617115403-update-flag-descriptions.d.ts.map +1 -0
- package/dist/migrations/20260617115403-update-flag-descriptions.js +38 -0
- package/dist/migrations/20260617115403-update-flag-descriptions.js.map +1 -0
- package/dist/migrations/20260624120000-servicenow-change-references.d.ts +3 -0
- package/dist/migrations/20260624120000-servicenow-change-references.d.ts.map +1 -0
- package/dist/migrations/20260624120000-servicenow-change-references.js +22 -0
- package/dist/migrations/20260624120000-servicenow-change-references.js.map +1 -0
- package/dist/server-dev.js +6 -1
- package/dist/server-dev.js.map +1 -1
- package/dist/test/e2e/api/admin/addon.e2e.test.js +2 -1
- package/dist/test/e2e/api/admin/addon.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/addon-service.e2e.test.js +2 -0
- package/dist/test/e2e/services/addon-service.e2e.test.js.map +1 -1
- package/dist/test/e2e/services/session-service.e2e.test.js +11 -0
- package/dist/test/e2e/services/session-service.e2e.test.js.map +1 -1
- package/dist/test/fixtures/fake-session-store.d.ts +1 -0
- package/dist/test/fixtures/fake-session-store.d.ts.map +1 -1
- package/dist/test/fixtures/fake-session-store.js +3 -0
- package/dist/test/fixtures/fake-session-store.js.map +1 -1
- package/frontend/build/index.html +2 -2
- package/frontend/build/static/AccordionSummary-wye3oOm6.js +1 -0
- package/frontend/build/static/AdvancedPlayground-DdeMb-6I.js +3 -0
- package/frontend/build/static/Alert-_bLyWbvx.js +1 -0
- package/frontend/build/static/BackendConnections-kgR0xyIH.js +1 -0
- package/frontend/build/static/Box-BQsxfFmC.js +1 -0
- package/frontend/build/static/Button-CebB8EPB.js +1 -0
- package/frontend/build/static/CircularProgress-C_LUU3DK.js +101 -0
- package/frontend/build/static/Close-DyTASMSq.js +1 -0
- package/frontend/build/static/Collapse-DPPTUMpf.js +1 -0
- package/frontend/build/static/ConditionallyRender---uTpMBn.js +1 -0
- package/frontend/build/static/CreateProject-BSlg0WYM.js +1 -0
- package/frontend/build/static/Dialog-C-xQxqWX.js +1 -0
- package/frontend/build/static/DialogWithAside-DzCSDyWo.js +1110 -0
- package/frontend/build/static/Divider-CsdWvu5F.js +1 -0
- package/frontend/build/static/EnterpriseEdge-CjslqYDM.js +6 -0
- package/frontend/build/static/FeatureMetricsChart-B4WryxcW.js +2 -0
- package/frontend/build/static/FeatureStaleDialog-EzReRTI5.js +8 -0
- package/frontend/build/static/FeatureViewLazyExport-8eQKTvdS.js +10 -0
- package/frontend/build/static/FileCopy-B8HZEA83.js +1 -0
- package/frontend/build/static/FlagMetricsChart-hNQuwOxW.js +2 -0
- package/frontend/build/static/FormControlLabel-F5gDLixN.js +1 -0
- package/frontend/build/static/FrontendNetworkTrafficUsage-pcr83PWo.js +1 -0
- package/frontend/build/static/GridLayoutWrapper-B_YyjZ7l.js +5 -0
- package/frontend/build/static/Grow-BIbmvKVy.js +1 -0
- package/frontend/build/static/HelpOutlineOutlined-CpMsVJZu.js +1 -0
- package/frontend/build/static/Highlighter-MomUaQww.js +1 -0
- package/frontend/build/static/HtmlTooltip-B9jv1G1R.js +1 -0
- package/frontend/build/static/ImpactMetricsPage-DGH_S9oz.js +1 -0
- package/frontend/build/static/ImpactViewsPage-DZqKPFvE.js +1 -0
- package/frontend/build/static/LazyAdminExport-B1ReAViz.js +38 -0
- package/frontend/build/static/LazyProjectExport-BMVcGpNI.js +46 -0
- package/frontend/build/static/LifecycleChartComponent-BeoRUO9q.js +2 -0
- package/frontend/build/static/LineChartComponent-BbCMbJ-m.js +1 -0
- package/frontend/build/static/Link-CfIScd2f.js +1 -0
- package/frontend/build/static/Loader-DdgXftPc.js +1 -0
- package/frontend/build/static/{LogRocketRunner-D_e4hzJQ.js → LogRocketRunner-Duzg1Kzh.js} +4 -4
- package/frontend/build/static/Logo-nextjs-DCzT4YXr.svg +1 -0
- package/frontend/build/static/Logo-react-CyIpikqs.svg +10 -0
- package/frontend/build/static/Logo-reactnative-DZ9HKW2l.svg +10 -0
- package/frontend/build/static/MarkCompletedDialogue-CcXyp8UE.js +1 -0
- package/frontend/build/static/NetworkOverview-0mBnFAZX.js +1 -0
- package/frontend/build/static/NetworkPrometheusAPIWarning-Bq62ygkV.js +1 -0
- package/frontend/build/static/NetworkTraffic-DmG5Iv25.js +1 -0
- package/frontend/build/static/NetworkTrafficUsage-DccaVLYs.js +1 -0
- package/frontend/build/static/OnboardingProgress-Bp9sZ-ZM.js +1 -0
- package/frontend/build/static/PageContent-c0NDm5oD.js +1 -0
- package/frontend/build/static/PercentageDonut-DBDGNJlh.js +1 -0
- package/frontend/build/static/PermissionButton-B-IfzChn.js +1 -0
- package/frontend/build/static/Popover-CUTnSn2h.js +1 -0
- package/frontend/build/static/Radio-DL8ja0ll.js +1 -0
- package/frontend/build/static/RadioGroup-Ci3WHaOy.js +1 -0
- package/frontend/build/static/ReactJSONEditor-DeBI7JPg.js +4 -0
- package/frontend/build/static/RoleCell-DhYvu4YH.js +1 -0
- package/frontend/build/static/Safeguard-DErU6fSK.js +1 -0
- package/frontend/build/static/SelectSdk-Dr_pzQgX.js +2 -0
- package/frontend/build/static/StoriesPage-frGP1Bfr.js +2 -0
- package/frontend/build/static/SwitchBase-DWPIxZnN.js +1 -0
- package/frontend/build/static/TextField-oipjeg6n.js +3 -0
- package/frontend/build/static/Tooltip-BaILXXti.js +1 -0
- package/frontend/build/static/TooltipResolver-4A1YhwBy.js +1 -0
- package/frontend/build/static/Truncator-D2bO9ub6.js +1 -0
- package/frontend/build/static/Typography-BTdLWIUX.js +1 -0
- package/frontend/build/static/aggregateFeatureMetrics-B-67HaIZ.js +1 -0
- package/frontend/build/static/chartjs-plugin-annotation.esm-DP4wCpdA.js +1 -0
- package/frontend/build/static/chunk-QUQL4437-Dr42NpoL.js +3 -0
- package/frontend/build/static/createBox-Cf2UJsmc.js +1 -0
- package/frontend/build/static/createLocalStorage-WS-MCMlG.js +1 -0
- package/frontend/build/static/createSimplePaletteValueFilter-BRAMrHWJ.js +1 -0
- package/frontend/build/static/differenceInSeconds-DMZGQwjK.js +1 -0
- package/frontend/build/static/dividerClasses-Cc45lyWo.js +1 -0
- package/frontend/build/static/endOfMonth-CkSR_DAx.js +1 -0
- package/frontend/build/static/{enterpriseEdgeCloud-DtcZf9iv.js → enterpriseEdgeCloud-C5u35XAw.js} +1 -1
- package/frontend/build/static/esm-DdgY1Q5s.js +12 -0
- package/frontend/build/static/format-C8UVjLNw.js +1 -0
- package/frontend/build/static/formatDate-cFuM4JYl.js +1 -0
- package/frontend/build/static/formatDistanceToNow-CyouiCIY.js +1 -0
- package/frontend/build/static/httpErrorResponseHandler-FMtt7Zqh.js +1 -0
- package/frontend/build/static/{impact-metrics-icon-1LLLS-bG.js → impact-metrics-icon-6dt-ye-h.js} +1 -1
- package/frontend/build/static/index-C04TEs4k.js +290 -0
- package/frontend/build/static/jsx-runtime-BnvnyDTF.js +1 -0
- package/frontend/build/static/metricsFormatters-DhX-aU17.js +1 -0
- package/frontend/build/static/mui-CoU2c-id.js +5 -0
- package/frontend/build/static/networkTrafficUsageHighlightPlugin-DlOtHZg3.js +1 -0
- package/frontend/build/static/parse-Chj4PyAg.js +1 -0
- package/frontend/build/static/parseISO-Cup6hyvQ.js +1 -0
- package/frontend/build/static/{react-DW1tWzGJ.js → react-GZhdek4G.js} +1 -1
- package/frontend/build/static/startOfHour-P0Sr6h8e.js +1 -0
- package/frontend/build/static/testIds-B_Ev-uQn.js +1 -0
- package/frontend/build/static/themeStyles-DGVpwkcv.js +1 -0
- package/frontend/build/static/useApiGetter-7FP8Avm4.js +1 -0
- package/frontend/build/static/useApiTokens-C8Dqw_X1.js +1 -0
- package/frontend/build/static/useConditionalSWR-DGgzun6i.js +1 -0
- package/frontend/build/static/useConditionallyHiddenColumns-C5q9zdfJ.js +5 -0
- package/frontend/build/static/useCustomEvent-Dj2V5RVb.js +1 -0
- package/frontend/build/static/useEnvironments-CTguhgy0.js +2 -0
- package/frontend/build/static/useGroupedImpactMetricsData-CW9qnV2y.js +1 -0
- package/frontend/build/static/useImpactMetrics-9qDSEpTn.js +3 -0
- package/frontend/build/static/useImpactMetricsEnabled-wRNO6-Oh.js +1 -0
- package/frontend/build/static/useInstanceTrafficMetrics-CRCDB4TX.js +1 -0
- package/frontend/build/static/useMediaQuery-DGx8zAkf.js +2 -0
- package/frontend/build/static/useOptionalPathParam-Cx3ru9yC.js +1 -0
- package/frontend/build/static/usePageTitle-CHzzFshF.js +1 -0
- package/frontend/build/static/useTheme-CQqAmDLr.js +9 -0
- package/frontend/build/static/useUiConfig-DbVjTDpE.js +1 -0
- package/frontend/package.json +13 -13
- package/package.json +13 -11
- package/frontend/build/static/AdvancedPlayground-Dc5CjsH6.js +0 -3
- package/frontend/build/static/BackendConnections-BzoyVkqE.js +0 -1
- package/frontend/build/static/CreateProject-CARqyXgr.js +0 -1
- package/frontend/build/static/DialogWithAside-CtKlvRxJ.js +0 -947
- package/frontend/build/static/EnterpriseEdge-6F99gSET.js +0 -6
- package/frontend/build/static/FeatureMetricsChart-CCUsCbvl.js +0 -2
- package/frontend/build/static/FeatureStaleDialog-IRgDg5x8.js +0 -8
- package/frontend/build/static/FeatureViewLazyExport-7dlvG8T-.js +0 -10
- package/frontend/build/static/FlagMetricsChart-CQCEqI6k.js +0 -2
- package/frontend/build/static/FrontendNetworkTrafficUsage-CdHe-oU2.js +0 -1
- package/frontend/build/static/GridLayoutWrapper-L_W9K-dV.js +0 -3
- package/frontend/build/static/ImpactMetricsPage-0OKGAVog.js +0 -1
- package/frontend/build/static/ImpactViewsPage-CdwvIuE9.js +0 -1
- package/frontend/build/static/LazyAdminExport-lAWqz1Kg.js +0 -38
- package/frontend/build/static/LazyProjectExport-CjjWWq5H.js +0 -46
- package/frontend/build/static/LifecycleChartComponent-Dw7X54qU.js +0 -2
- package/frontend/build/static/LineChartComponent-D81JPWi4.js +0 -1
- package/frontend/build/static/Logo-react-D2SuVol5.svg +0 -1
- package/frontend/build/static/MarkCompletedDialogue-vW74sVuW.js +0 -1
- package/frontend/build/static/NetworkOverview-Dx3Yhmnr.js +0 -1
- package/frontend/build/static/NetworkPrometheusAPIWarning-BlbOSbDW.js +0 -1
- package/frontend/build/static/NetworkTraffic-CJI952Qr.js +0 -1
- package/frontend/build/static/NetworkTrafficUsage-DP83K2Q6.js +0 -1
- package/frontend/build/static/OnboardingProgress-DECLEUJE.js +0 -1
- package/frontend/build/static/PercentageDonut-CV__KCpE.js +0 -1
- package/frontend/build/static/ReactJSONEditor-D4-lWgEb.js +0 -4
- package/frontend/build/static/RoleCell-0_ZJUpz5.js +0 -1
- package/frontend/build/static/Safeguard-B93Tz6lG.js +0 -1
- package/frontend/build/static/SelectSdk-Cxw0QOfY.js +0 -2
- package/frontend/build/static/StoriesPage-ZDw2ahU0.js +0 -1
- package/frontend/build/static/aggregateFeatureMetrics-Byd95jx-.js +0 -1
- package/frontend/build/static/chart-CG3XAKw_.js +0 -3
- package/frontend/build/static/chartjs-plugin-annotation.esm-bUcqmHD4.js +0 -1
- package/frontend/build/static/esm-LYuUsJ00.js +0 -15
- package/frontend/build/static/index-DIBimazR.js +0 -409
- package/frontend/build/static/networkTrafficUsageHighlightPlugin-C8avnJ5K.js +0 -1
- package/frontend/build/static/objectId-CwvEBicG.js +0 -1
- package/frontend/build/static/useApiTokens-CdZD_-zn.js +0 -1
- package/frontend/build/static/useGroupedImpactMetricsData-D2KwIe7Z.js +0 -1
- package/frontend/build/static/useImpactMetricsEnabled-Yb36cM6y.js +0 -1
- package/frontend/build/static/useInstanceTrafficMetrics-CcZqSYy1.js +0 -1
- /package/frontend/build/static/{daysOrHours-DZ037Bzn.js → daysOrHours-owFAL-4S.js} +0 -0
- /package/frontend/build/static/{formatPath-vbOoY_VU.js → formatPath-j72gcKwy.js} +0 -0
- /package/frontend/build/static/{formatTickValue-xCLMih6P.js → formatTickValue-DWHZUXee.js} +0 -0
- /package/frontend/build/static/{storage-DS1Ts5PA.js → storage-tBZ25pJM.js} +0 -0
- /package/frontend/build/static/{toDate-JUEZGP0n.js → toDate-BEKdmfOu.js} +0 -0
- /package/frontend/build/static/{unknownify-D0N8k6Ch.js → unknownify-CCAQc7w1.js} +0 -0
|
@@ -0,0 +1,1110 @@
|
|
|
1
|
+
import{n as e,o as t,t as n}from"./react-GZhdek4G.js";import{j as r,s as i,t as a}from"./useTheme-CQqAmDLr.js";import{t as o}from"./jsx-runtime-BnvnyDTF.js";import{v as s}from"./createSimplePaletteValueFilter-BRAMrHWJ.js";import{t as c}from"./useMediaQuery-DGx8zAkf.js";import{t as l}from"./Tooltip-BaILXXti.js";import{n as u,r as d}from"./TextField-oipjeg6n.js";import{r as f,t as p}from"./Alert-_bLyWbvx.js";import{t as m}from"./Typography-BTdLWIUX.js";import{t as h}from"./Box-BQsxfFmC.js";import{t as g}from"./Button-CebB8EPB.js";import{t as _}from"./Dialog-C-xQxqWX.js";import{a as v,i as y,n as b,o as x}from"./TooltipResolver-4A1YhwBy.js";import{t as S}from"./Close-DyTASMSq.js";import{t as C,u as w}from"./httpErrorResponseHandler-FMtt7Zqh.js";import{n as T,r as E}from"./formatPath-j72gcKwy.js";import{t as D}from"./Truncator-D2bO9ub6.js";import{n as O,t as k}from"./FileCopy-B8HZEA83.js";import{$s as A,At as j,Ha as M,Ua as N,jt as P,po as F,wt as I}from"./index-C04TEs4k.js";var L=t(n()),R=o(),z=e=>(0,R.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:20,height:20,viewBox:`0 0 20 20`,fill:`none`,...e,children:(0,R.jsx)(`path`,{d:`M4.16667 17.5C3.70833 17.5 3.31597 17.3368 2.98958 17.0104C2.66319 16.684 2.5 16.2917 2.5 15.8333V5.41667C2.5 5.22222 2.53125 5.03819 2.59375 4.86458C2.65625 4.69097 2.75 4.52778 2.875 4.375L4.04167 2.95833C4.16667 2.80556 4.30903 2.69097 4.46875 2.61458C4.62847 2.53819 4.80556 2.5 5 2.5H15C15.1944 2.5 15.3715 2.53819 15.5312 2.61458C15.691 2.69097 15.8333 2.80556 15.9583 2.95833L17.125 4.375C17.25 4.52778 17.3438 4.69097 17.4062 4.86458C17.4688 5.03819 17.5 5.22222 17.5 5.41667V15.8333C17.5 16.2917 17.3368 16.684 17.0104 17.0104C16.684 17.3368 16.2917 17.5 15.8333 17.5H4.16667ZM4.5 5H15.5L14.7917 4.16667H5.20833L4.5 5ZM4.16667 15.8333H15.8333V6.66667H4.16667V15.8333ZM12.125 14.2083L15.0833 11.25L12.125 8.29167L10.9167 9.5L12.6667 11.25L10.9167 13L12.125 14.2083ZM7.91667 14.2083L9.125 13L7.375 11.25L9.125 9.5L7.91667 8.29167L4.95833 11.25L7.91667 14.2083Z`,fill:`#6E6E70`})}),B=s(A)(({theme:e})=>({width:e.spacing(3),height:e.spacing(3)})),V=M.filter(e=>e.type===`server`).map(({name:e})=>({name:N[e].title,icon:N[e].icon})),ee=M.filter(e=>e.type===`client`).map(({name:e})=>({name:N[e].title,icon:N[e].icon})),te=[...V,...ee],ne=s(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3),backgroundColor:e.palette.background.paper})),re=s(`div`)(({theme:e})=>({fontWeight:e.typography.fontWeightBold,fontSize:e.typography.body1.fontSize})),ie=s(`div`)(({theme:e})=>({marginTop:e.spacing(.5),marginBottom:e.spacing(2),fontSize:e.typography.body2.fontSize,color:e.palette.text.secondary})),ae=s(`div`)(({theme:e})=>({display:`flex`,columnGap:e.spacing(1.5),rowGap:e.spacing(1.5),alignItems:`center`,justifyContent:`flex-start`,flexWrap:`wrap`})),oe=s(g,{shouldForwardProp:e=>e!==`isSelected`})(({theme:e,isSelected:t})=>({fontSize:e.typography.body2.fontSize,border:`1px solid ${t?e.palette.primary.main:e.palette.divider}`,borderRadius:e.shape.borderRadius,padding:e.spacing(1,1.5),minWidth:e.spacing(30),display:`flex`,alignItems:`center`,gap:e.spacing(1)})),se=s(`div`)(({theme:e})=>({color:e.palette.text.primary,display:`flex`,justifyContent:`space-between`,alignItems:`center`,width:`100%`})),ce=s(`span`)(({theme:e})=>({color:e.palette.primary.main,fontSize:e.typography.body2.fontSize,fontWeight:700})),le=({sdks:e,type:t,selectedSdkName:n,onSelect:r})=>(0,R.jsx)(ae,{children:e.map(e=>{let i=n===e.name;return(0,R.jsxs)(oe,{onClick:()=>r({name:e.name,type:t}),variant:`text`,isSelected:i,children:[(0,R.jsx)(B,{src:E(e.icon),alt:``}),(0,R.jsxs)(se,{children:[(0,R.jsx)(`b`,{children:e.name}),(0,R.jsx)(ce,{children:i?`Selected`:`Select`})]})]},e.name)})}),ue=({onSelect:e,sdk:t})=>{let n=t?.name;return(0,R.jsxs)(ne,{children:[(0,R.jsxs)(h,{children:[(0,R.jsx)(re,{children:`Backend SDKs`}),(0,R.jsx)(ie,{children:`Backend SDKs need a backend API key.`}),(0,R.jsx)(le,{sdks:V,type:`client`,selectedSdkName:n,onSelect:e})]}),(0,R.jsxs)(h,{children:[(0,R.jsx)(re,{children:`Frontend SDKs`}),(0,R.jsx)(ie,{children:`Frontend SDKs need a frontend API key.`}),(0,R.jsx)(le,{sdks:ee,type:`frontend`,selectedSdkName:n,onSelect:e})]})]})},de=(e,t={})=>{let{data:n,error:r,mutate:i}=w(T(`api/admin/projects/${e}/api-tokens`),H,t),a=(0,L.useMemo)(()=>n??[],[n]),o=(0,L.useCallback)(()=>{i().catch(console.warn)},[i]);return{tokens:a,error:r,loading:!r&&!n,refetch:o}},H=async e=>(await(await fetch(e).then(C(`Project Api tokens`))).json()).tokens,fe=()=>{let{makeRequest:e,createRequest:t,errors:n,loading:r}=b({propagateErrors:!0});return{deleteToken:async(n,r)=>{let i=t(`api/admin/projects/${r}/api-tokens/${n}`,{method:`DELETE`});return e(i.caller,i.id)},createToken:async(n,r)=>{let i=t(`api/admin/projects/${r}/api-tokens`,{method:`POST`,body:JSON.stringify(n)});return e(i.caller,i.id)},errors:n,loading:r}},U=e=>{if(!e)return null;let[t,n]=e.split(`:`,2);if(!n)return null;let[r,i,...a]=n.split(`.`);return t&&r&&i&&a.length===0?{project:t,environment:r,secret:i}:null},W=P(),pe=s(`div`)(({theme:e})=>({backgroundColor:e.palette.background.elevation1,borderRadius:e.shape.borderRadius,padding:e.spacing(3),display:`flex`,flexDirection:`column`,alignItems:`center`})),me=s(`div`)({wordBreak:`break-all`}),he=s(`div`)(({theme:e})=>({borderRadius:e.shape.borderRadius,padding:e.spacing(2),flex:1,color:e.palette.text.secondary,fontSize:e.typography.body2.fontSize,background:e.palette.background.default})),ge=s(he)(({theme:e})=>({border:`1px solid ${e.palette.primary.main}`})),_e=s(he)(({theme:e})=>({border:`1px solid ${e.palette.success.main}`})),ve=s(he)(({theme:e})=>({border:`1px solid ${e.palette.text.secondary}`})),ye=s(`div`)(({theme:e})=>({display:`flex`,gap:e.spacing(2),alignItems:`flex-start`,marginTop:e.spacing(8),flexWrap:`wrap`})),be=s(`div`)({width:`100%`}),xe=s(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(1),marginTop:e.spacing(2),width:`100%`})),Se=s(`span`)(({theme:e})=>({fontFamily:`Sen`,fontSize:e.typography.body2.fontSize,fontStyle:`normal`,fontWeight:400,lineHeight:`20px`})),Ce=s(Se)(({theme:e})=>({color:e.palette.primary.main})),we=s(Se)(({theme:e})=>({color:e.palette.success.main})),Te=s(Se)(({theme:e})=>({color:e.palette.text.secondary})),Ee=s(Se)(({theme:e})=>({color:e.palette.text.disabled})),G={project:`The project this API key can retrieve feature flags from`,environment:`The environment this API key can retrieve feature flag configuration from`,secret:`The API key secret`},K=({project:e,environment:t,secret:n})=>{let r=a(),i=c(r.breakpoints.up(`lg`));return(0,R.jsx)(be,{children:(0,R.jsx)(W.ArcherContainer,{strokeColor:r.palette.secondary.border,endMarker:!1,lineStyle:`curve`,children:(0,R.jsxs)(pe,{children:[(0,R.jsxs)(me,{children:[(0,R.jsx)(W.ArcherElement,{id:`project`,children:(0,R.jsx)(Ce,{children:e})}),(0,R.jsx)(Ee,{children:`:`}),(0,R.jsx)(W.ArcherElement,{id:`environment`,children:(0,R.jsx)(we,{children:t})}),(0,R.jsx)(Ee,{children:`.`}),(0,R.jsx)(W.ArcherElement,{id:`secret`,children:(0,R.jsx)(Te,{children:n})})]}),i?(0,R.jsxs)(ye,{children:[(0,R.jsx)(W.ArcherElement,{id:`project-description`,relations:[{targetId:`project`,targetAnchor:`bottom`,sourceAnchor:`top`,style:{strokeColor:r.palette.primary.main,strokeWidth:2}}],children:(0,R.jsx)(ge,{children:G.project})}),(0,R.jsx)(W.ArcherElement,{id:`environment-description`,relations:[{targetId:`environment`,targetAnchor:`bottom`,sourceAnchor:`top`,style:{strokeColor:r.palette.success.main,strokeWidth:2}}],children:(0,R.jsx)(_e,{children:G.environment})}),(0,R.jsx)(W.ArcherElement,{id:`secret-description`,relations:[{targetId:`secret`,targetAnchor:`bottom`,sourceAnchor:`top`,style:{strokeColor:r.palette.text.secondary,strokeWidth:2}}],children:(0,R.jsx)(ve,{children:G.secret})})]}):(0,R.jsxs)(xe,{children:[(0,R.jsxs)(ge,{children:[(0,R.jsx)(Ce,{children:e}),(0,R.jsx)(`div`,{children:G.project})]}),(0,R.jsxs)(_e,{children:[(0,R.jsx)(we,{children:t}),(0,R.jsx)(`div`,{children:G.environment})]}),(0,R.jsxs)(ve,{children:[(0,R.jsx)(me,{children:(0,R.jsx)(Te,{children:n})}),(0,R.jsx)(`div`,{children:G.secret})]})]})]})})})},De={client:`Backend`,frontend:`Frontend`},Oe=s(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(3)})),ke=s(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,alignItems:`flex-start`,gap:e.spacing(2),padding:e.spacing(2),borderRadius:e.shape.borderRadiusMedium,border:`1px solid ${e.palette.divider}`,backgroundColor:e.palette.background.elevation1})),Ae=s(`div`)(({theme:e})=>({display:`flex`,flexDirection:`column`,gap:e.spacing(.5)})),je=s(`div`)(({theme:e})=>({fontWeight:e.typography.fontWeightBold,fontSize:e.typography.body1.fontSize})),Me=s(`p`)(({theme:e})=>({fontSize:e.typography.body2.fontSize})),Ne=s(`div`)({display:`flex`,width:`100%`,justifyContent:`flex-end`}),Pe=({projectId:e,environments:t,sdk:n,onApiKeyChange:r,onNext:i})=>{let{trackEvent:a}=x(),{tokens:o,loading:s,refetch:c}=de(e),{createToken:l,loading:f}=fe(),{setToastApiError:p}=v(),[m,h]=(0,L.useState)(t[0]||``),_=o.find(e=>e.environment===m&&e.type===n?.type),b=U(_?.secret);if((0,L.useEffect)(()=>{r(_?.secret)},[_?.secret,r]),!n)return null;let S=async()=>{try{await l({environment:m,type:n.type,projects:[e],tokenName:`api-key-${e}-${m}`},e),c(),a(`onboarding`,{props:{eventType:`api-key-generated`}})}catch(e){p(y(e))}},C=t.length>0?Math.max(...t.map(e=>e.length)):0,w=s||f,T=De[n.type];return(0,R.jsxs)(Oe,{children:[(0,R.jsxs)(ke,{children:[(0,R.jsxs)(Ae,{children:[(0,R.jsx)(je,{children:`First select environment`}),(0,R.jsx)(Me,{children:`The environment connects to an SDK to retrieve information.`})]}),(0,R.jsx)(u,{value:m,onChange:e=>h(e.target.value),size:`small`,inputProps:{"aria-label":`Select environment`},sx:{minWidth:`${C+5}ch`},children:t.map(e=>(0,R.jsx)(d,{value:e,children:e},e))})]}),(0,R.jsxs)(ke,{children:[(0,R.jsx)(Ae,{children:b?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(je,{children:[T,` API Key`]}),(0,R.jsxs)(Me,{children:[`Here is your generated`,` `,T.toLowerCase(),` API key. We will use it to connect to the`,` `,(0,R.jsx)(`b`,{children:b.project}),` project in the`,` `,(0,R.jsx)(`b`,{children:b.environment}),` environment.`]})]}):(0,R.jsxs)(je,{children:[`Then generate a `,T,` API Key`]})}),b?(0,R.jsx)(K,{project:b.project,environment:b.environment,secret:b.secret}):(0,R.jsxs)(g,{variant:`contained`,disabled:w,onClick:S,children:[`Generate `,T,` API Key`]})]}),b&&(0,R.jsx)(Ne,{children:(0,R.jsx)(g,{variant:`contained`,onClick:i,children:`Next`})})]})},Fe=({apiKey:e})=>e?(0,R.jsx)(F,{color:`neutral`,children:(0,R.jsx)(D,{title:e,sx:{maxWidth:200},children:e})}):null,Ie=t(O(),1),Le=`1\\. Install the SDK
|
|
2
|
+
|
|
3
|
+
\`\`\`gradle
|
|
4
|
+
implementation("io.getunleash:unleash-android:+")
|
|
5
|
+
\`\`\`
|
|
6
|
+
|
|
7
|
+
2\\. Enable required [permissions](https://developer.android.com/guide/topics/manifest/uses-permission-element)
|
|
8
|
+
|
|
9
|
+
\`\`\`xml
|
|
10
|
+
<uses-permission android:name="android.permission.INTERNET" />
|
|
11
|
+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
12
|
+
\`\`\`
|
|
13
|
+
|
|
14
|
+
3\\. Initialize Unleash in your application
|
|
15
|
+
|
|
16
|
+
\`\`\`kotlin
|
|
17
|
+
class MyApplication: Application() {
|
|
18
|
+
val unleash: Unleash by lazy {
|
|
19
|
+
val instance = DefaultUnleash(
|
|
20
|
+
androidContext = this,
|
|
21
|
+
unleashConfig = UnleashConfig.newBuilder(appName = "unleash-onboarding-android")
|
|
22
|
+
.proxyUrl("<YOUR_API_URL>")
|
|
23
|
+
.clientKey("<YOUR_API_TOKEN>")
|
|
24
|
+
.build()
|
|
25
|
+
)
|
|
26
|
+
instance.start()
|
|
27
|
+
instance
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
override fun onTerminate() {
|
|
31
|
+
super.onTerminate()
|
|
32
|
+
unleash.close()
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
\`\`\`
|
|
36
|
+
|
|
37
|
+
4\\. Check flag status
|
|
38
|
+
|
|
39
|
+
\`\`\`kotlin
|
|
40
|
+
class MainActivity : ComponentActivity() {
|
|
41
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
42
|
+
super.onCreate(savedInstanceState)
|
|
43
|
+
val unleashInstance = (application as MyApplication).unleash
|
|
44
|
+
|
|
45
|
+
setContent {
|
|
46
|
+
var flagStatus by remember { mutableStateOf("loading") }
|
|
47
|
+
LaunchedEffect(Unit) {
|
|
48
|
+
while (isActive) {
|
|
49
|
+
val isFlagEnabled = unleashInstance.isEnabled("<YOUR_FLAG>")
|
|
50
|
+
flagStatus = if (isFlagEnabled) {
|
|
51
|
+
"Flag is enabled"
|
|
52
|
+
} else {
|
|
53
|
+
"Flag is disabled"
|
|
54
|
+
}
|
|
55
|
+
delay(3.seconds)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
Text(text = flagStatus)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
\`\`\`
|
|
65
|
+
ℹ️ **Info:** The Android SDK takes at least 60 seconds to post metrics to Unleash.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
---
|
|
69
|
+
- [SDK repository with documentation and example](https://github.com/Unleash/unleash-android)
|
|
70
|
+
- [Android SDK basic example](hhttps://github.com/Unleash/unleash-sdk-examples/tree/main/Android)
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
\`\`\`kotlin
|
|
75
|
+
if (unleash.isEnabled("<YOUR_FLAG>")) {
|
|
76
|
+
println("<YOUR_FLAG> is enabled")
|
|
77
|
+
} else {
|
|
78
|
+
println("<YOUR_FLAG> is disabled")
|
|
79
|
+
}
|
|
80
|
+
\`\`\`
|
|
81
|
+
|
|
82
|
+
ℹ️ **Info:** The Android SDK takes at least 60 seconds to post metrics to Unleash.
|
|
83
|
+
`,Re=`1\\. Install the SDK
|
|
84
|
+
\`\`\`sh
|
|
85
|
+
go get github.com/Unleash/unleash-go-sdk/v6@latest
|
|
86
|
+
\`\`\`
|
|
87
|
+
|
|
88
|
+
2\\. Run Unleash
|
|
89
|
+
\`\`\`go
|
|
90
|
+
package main
|
|
91
|
+
|
|
92
|
+
import (
|
|
93
|
+
unleash "github.com/Unleash/unleash-go-sdk/v6"
|
|
94
|
+
"net/http"
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
func main() {
|
|
98
|
+
err := unleash.Initialize(
|
|
99
|
+
unleash.WithAppName("unleash-onboarding-golang"),
|
|
100
|
+
unleash.WithUrl("<YOUR_API_URL>"),
|
|
101
|
+
unleash.WithCustomHeaders(http.Header{"Authorization": {"<YOUR_API_TOKEN>"}}), // in production use environment variable
|
|
102
|
+
)
|
|
103
|
+
if err != nil {
|
|
104
|
+
panic(err)
|
|
105
|
+
}
|
|
106
|
+
defer unleash.Close()
|
|
107
|
+
unleash.WaitForReady() // optional: blocks until first sync
|
|
108
|
+
|
|
109
|
+
if unleash.IsEnabled("<YOUR_FLAG>", unleash.FeatureOptions{}) {
|
|
110
|
+
// New behaviour
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
\`\`\`
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
\`\`\`go
|
|
117
|
+
package main
|
|
118
|
+
|
|
119
|
+
import (
|
|
120
|
+
unleash "github.com/Unleash/unleash-go-sdk/v6"
|
|
121
|
+
"net/http"
|
|
122
|
+
"os"
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
func main() {
|
|
126
|
+
err := unleash.Initialize(
|
|
127
|
+
unleash.WithAppName("unleash-onboarding-golang"),
|
|
128
|
+
unleash.WithUrl("<YOUR_API_URL>"),
|
|
129
|
+
unleash.WithCustomHeaders(http.Header{
|
|
130
|
+
"Authorization": {os.Getenv("UNLEASH_API_KEY")},
|
|
131
|
+
}),
|
|
132
|
+
)
|
|
133
|
+
if err != nil {
|
|
134
|
+
panic(err)
|
|
135
|
+
}
|
|
136
|
+
defer unleash.Close()
|
|
137
|
+
|
|
138
|
+
if unleash.IsEnabled("<YOUR_FLAG>", unleash.FeatureOptions{}) {
|
|
139
|
+
// New behaviour
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
\`\`\`
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-go-sdk)
|
|
146
|
+
- [Go SDK example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Go)
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
\`\`\`go
|
|
151
|
+
if unleash.IsEnabled("<YOUR_FLAG>", unleash.FeatureOptions{}) {
|
|
152
|
+
fmt.Println("<YOUR_FLAG> is enabled")
|
|
153
|
+
} else {
|
|
154
|
+
fmt.Println("<YOUR_FLAG> is disabled")
|
|
155
|
+
}
|
|
156
|
+
\`\`\`
|
|
157
|
+
`,ze=`1\\. Install the SDK
|
|
158
|
+
\`\`\`sh
|
|
159
|
+
npm install unleash-proxy-client
|
|
160
|
+
\`\`\`
|
|
161
|
+
|
|
162
|
+
2\\. Run Unleash
|
|
163
|
+
\`\`\`js
|
|
164
|
+
const { UnleashClient } = require('unleash-proxy-client');
|
|
165
|
+
|
|
166
|
+
const unleash = new UnleashClient({
|
|
167
|
+
url: '<YOUR_API_URL>',
|
|
168
|
+
clientKey: '<YOUR_API_TOKEN>', // in production use environment variable
|
|
169
|
+
appName: 'unleash-onboarding-javascript',
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
unleash.start();
|
|
173
|
+
|
|
174
|
+
setInterval(() => {
|
|
175
|
+
if (unleash.isEnabled('<YOUR_FLAG>')) {
|
|
176
|
+
console.log('<YOUR_FLAG> is enabled');
|
|
177
|
+
} else {
|
|
178
|
+
console.log('<YOUR_FLAG> is disabled');
|
|
179
|
+
}
|
|
180
|
+
}, 1000);
|
|
181
|
+
\`\`\`
|
|
182
|
+
---
|
|
183
|
+
\`\`\`js
|
|
184
|
+
const unleash = new UnleashClient({
|
|
185
|
+
url: '<YOUR_API_URL>',
|
|
186
|
+
clientKey: process.env.UNLEASH_API_TOKEN,
|
|
187
|
+
appName: 'unleash-onboarding-javascript',
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
setInterval(() => {
|
|
191
|
+
if (unleash.isEnabled('<YOUR_FLAG>')) {
|
|
192
|
+
console.log('<YOUR_FLAG> is enabled');
|
|
193
|
+
} else {
|
|
194
|
+
console.log('<YOUR_FLAG> is disabled');
|
|
195
|
+
}
|
|
196
|
+
}, 1000);
|
|
197
|
+
|
|
198
|
+
unleash.start();
|
|
199
|
+
\`\`\`
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-proxy-client-js)
|
|
203
|
+
- [JavaScript SDK example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/JavaScript)
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
\`\`\`js
|
|
208
|
+
if (unleash.isEnabled('<YOUR_FLAG>')) {
|
|
209
|
+
console.log('<YOUR_FLAG> is enabled');
|
|
210
|
+
} else {
|
|
211
|
+
console.log('<YOUR_FLAG> is disabled');
|
|
212
|
+
}
|
|
213
|
+
\`\`\`
|
|
214
|
+
`,Be=`1\\. Install the SDK
|
|
215
|
+
\`\`\`sh
|
|
216
|
+
npm install unleash-client
|
|
217
|
+
\`\`\`
|
|
218
|
+
|
|
219
|
+
2\\. Run Unleash
|
|
220
|
+
\`\`\`js
|
|
221
|
+
const { initialize } = require('unleash-client');
|
|
222
|
+
|
|
223
|
+
const unleash = initialize({
|
|
224
|
+
url: '<YOUR_API_URL>',
|
|
225
|
+
appName: 'unleash-onboarding-node',
|
|
226
|
+
customHeaders: {
|
|
227
|
+
Authorization: '<YOUR_API_TOKEN>' // in production use environment variable
|
|
228
|
+
},
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
setInterval(() => {
|
|
232
|
+
if (unleash.isEnabled('<YOUR_FLAG>')) {
|
|
233
|
+
console.log('<YOUR_FLAG> is enabled');
|
|
234
|
+
} else {
|
|
235
|
+
console.log('<YOUR_FLAG> is disabled');
|
|
236
|
+
}
|
|
237
|
+
}, 1000);
|
|
238
|
+
\`\`\`
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
\`\`\`js
|
|
242
|
+
const { initialize } = require('unleash-client');
|
|
243
|
+
|
|
244
|
+
const unleash = initialize({
|
|
245
|
+
url: '<YOUR_API_URL>',
|
|
246
|
+
appName: 'unleash-onboarding-node',
|
|
247
|
+
customHeaders: { Authorization: process.env.UNLEASH_API_KEY },
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
unleash.on('synchronized', () => {
|
|
251
|
+
console.log('Unleash synchronized');
|
|
252
|
+
});
|
|
253
|
+
unleash.on('error', console.error);
|
|
254
|
+
unleash.on('warn', console.warn);
|
|
255
|
+
|
|
256
|
+
setInterval(() => {
|
|
257
|
+
if (unleash.isEnabled('<YOUR_FLAG>')) {
|
|
258
|
+
console.log('<YOUR_FLAG> is enabled');
|
|
259
|
+
} else {
|
|
260
|
+
console.log('<YOUR_FLAG> is disabled');
|
|
261
|
+
}
|
|
262
|
+
}, 1000);
|
|
263
|
+
\`\`\`
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-client-node)
|
|
267
|
+
- [Node.js SDK example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Node.js)
|
|
268
|
+
- [Node.js SDK tutorial](https://dev.to/reeshee/how-to-implement-feature-flags-in-nodejs-using-unleash-3907)
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
\`\`\`js
|
|
273
|
+
if (unleash.isEnabled('<YOUR_FLAG>')) {
|
|
274
|
+
console.log('<YOUR_FLAG> is enabled');
|
|
275
|
+
} else {
|
|
276
|
+
console.log('<YOUR_FLAG> is disabled');
|
|
277
|
+
}
|
|
278
|
+
\`\`\`
|
|
279
|
+
`,Ve=`1\\. Install the SDK
|
|
280
|
+
\`\`\`sh
|
|
281
|
+
pip install UnleashClient
|
|
282
|
+
\`\`\`
|
|
283
|
+
|
|
284
|
+
2\\. Run Unleash
|
|
285
|
+
\`\`\`python
|
|
286
|
+
from UnleashClient import UnleashClient
|
|
287
|
+
import time
|
|
288
|
+
|
|
289
|
+
client = UnleashClient(
|
|
290
|
+
url="<YOUR_API_URL>",
|
|
291
|
+
app_name="unleash-onboarding-python",
|
|
292
|
+
custom_headers={'Authorization': '<YOUR_API_TOKEN>'}) # in production use environment variable
|
|
293
|
+
|
|
294
|
+
client.initialize_client()
|
|
295
|
+
|
|
296
|
+
while True:
|
|
297
|
+
if client.is_enabled("<YOUR_FLAG>"):
|
|
298
|
+
print("<YOUR_FLAG> is enabled")
|
|
299
|
+
else:
|
|
300
|
+
print("<YOUR_FLAG> is disabled")
|
|
301
|
+
time.sleep(2)
|
|
302
|
+
\`\`\`
|
|
303
|
+
---
|
|
304
|
+
\`\`\`python
|
|
305
|
+
from UnleashClient import UnleashClient
|
|
306
|
+
import os
|
|
307
|
+
|
|
308
|
+
client = UnleashClient(
|
|
309
|
+
url="<YOUR_API_URL>",
|
|
310
|
+
app_name="unleash-onboarding-python",
|
|
311
|
+
custom_headers={'Authorization': os.getenv('UNLEASH_API_TOKEN')})
|
|
312
|
+
|
|
313
|
+
client.initialize_client()
|
|
314
|
+
|
|
315
|
+
\`\`\`
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-client-python)
|
|
319
|
+
- [Python SDK example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Python)
|
|
320
|
+
- [How to Implement Feature Flags in Python](https://docs.getunleash.io/guides/implement-feature-flags-in-python)
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
\`\`\`python
|
|
325
|
+
if client.is_enabled("<YOUR_FLAG>"):
|
|
326
|
+
print("<YOUR_FLAG> is enabled")
|
|
327
|
+
else:
|
|
328
|
+
print("<YOUR_FLAG> is disabled")
|
|
329
|
+
\`\`\`
|
|
330
|
+
`,He=`1\\. Install the SDK
|
|
331
|
+
\`\`\`sh
|
|
332
|
+
gem install unleash
|
|
333
|
+
\`\`\`
|
|
334
|
+
|
|
335
|
+
2\\. Run Unleash
|
|
336
|
+
\`\`\`rb
|
|
337
|
+
require 'unleash'
|
|
338
|
+
|
|
339
|
+
@unleash = Unleash::Client.new(
|
|
340
|
+
url: "<YOUR_API_URL>",
|
|
341
|
+
custom_http_headers: { 'Authorization': "<YOUR_API_TOKEN>" }, # in production use environment variable
|
|
342
|
+
app_name: 'unleash-onboarding-ruby',
|
|
343
|
+
instance_id: 'unleash-onboarding-ruby',
|
|
344
|
+
)
|
|
345
|
+
|
|
346
|
+
while true
|
|
347
|
+
if @unleash.is_enabled?("<YOUR_FLAG>")
|
|
348
|
+
puts "Flag is enabled"
|
|
349
|
+
else
|
|
350
|
+
puts "Flag is not enabled"
|
|
351
|
+
end
|
|
352
|
+
sleep 3
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
\`\`\`
|
|
356
|
+
---
|
|
357
|
+
\`\`\`rb
|
|
358
|
+
@unleash = Unleash::Client.new(
|
|
359
|
+
url: "<YOUR_API_URL>",
|
|
360
|
+
custom_http_headers: { 'Authorization': ENV['UNLEASH_API_TOKEN'] },
|
|
361
|
+
app_name: 'unleash-onboarding-ruby',
|
|
362
|
+
instance_id: 'unleash-onboarding-ruby',
|
|
363
|
+
)
|
|
364
|
+
\`\`\`
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-client-ruby)
|
|
368
|
+
- [Ruby example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Ruby)
|
|
369
|
+
- [How to Implement Feature Flags in Ruby](https://docs.getunleash.io/guides/implement-feature-flags-in-ruby)
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
\`\`\`rb
|
|
374
|
+
if @unleash.is_enabled?("<YOUR_FLAG>")
|
|
375
|
+
puts "<YOUR_FLAG> is enabled"
|
|
376
|
+
else
|
|
377
|
+
puts "<YOUR_FLAG> is disabled"
|
|
378
|
+
end
|
|
379
|
+
\`\`\`
|
|
380
|
+
`,Ue=`1\\. Install the SDK
|
|
381
|
+
\`\`\`sh
|
|
382
|
+
npm install @unleash/proxy-client-svelte
|
|
383
|
+
\`\`\`
|
|
384
|
+
|
|
385
|
+
2\\. Initialize Unleash
|
|
386
|
+
\`\`\`svelte
|
|
387
|
+
<script>
|
|
388
|
+
import { FlagProvider } from '@unleash/proxy-client-svelte';
|
|
389
|
+
const { children } = $props();
|
|
390
|
+
|
|
391
|
+
const config = {
|
|
392
|
+
url: '<YOUR_API_URL>',
|
|
393
|
+
clientKey: '<YOUR_API_TOKEN>', // in production use environment variable
|
|
394
|
+
appName: 'unleash-onboarding-svelte',
|
|
395
|
+
};
|
|
396
|
+
<\/script>
|
|
397
|
+
|
|
398
|
+
<div class="app">
|
|
399
|
+
<FlagProvider {config}>
|
|
400
|
+
<main>
|
|
401
|
+
{@render children()}
|
|
402
|
+
</main>
|
|
403
|
+
</FlagProvider>
|
|
404
|
+
</div>
|
|
405
|
+
\`\`\`
|
|
406
|
+
|
|
407
|
+
3\\. Check feature flag status
|
|
408
|
+
\`\`\`svelte
|
|
409
|
+
<script lang="ts">
|
|
410
|
+
import { useFlag } from '@unleash/proxy-client-svelte';
|
|
411
|
+
const enabled = useFlag('<YOUR_FLAG>');
|
|
412
|
+
<\/script>
|
|
413
|
+
|
|
414
|
+
<section>
|
|
415
|
+
{#if $enabled}
|
|
416
|
+
<p><YOUR_FLAG> is enabled!</p>
|
|
417
|
+
{:else}
|
|
418
|
+
<p><YOUR_FLAG> is disabled!</p>
|
|
419
|
+
{/if}
|
|
420
|
+
</section>
|
|
421
|
+
\`\`\`
|
|
422
|
+
---
|
|
423
|
+
\`\`\`svelte
|
|
424
|
+
const config = {
|
|
425
|
+
url: '<YOUR_API_URL>',
|
|
426
|
+
clientKey: import.meta.env.VITE_UNLEASH_API_TOKEN,
|
|
427
|
+
appName: 'unleash-onboarding-svelte',
|
|
428
|
+
};
|
|
429
|
+
\`\`\`
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
- [SDK repository with documentation](https://github.com/Unleash/proxy-client-svelte)
|
|
433
|
+
- [Svelte example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Svelte)
|
|
434
|
+
- [How to Implement Feature Flags in SvelteKit](https://docs.getunleash.io/guides/implement-feature-flags-in-sveltekit)
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
\`\`\`svelte
|
|
439
|
+
<script lang="ts">
|
|
440
|
+
import { useFlag } from '@unleash/proxy-client-svelte';
|
|
441
|
+
const enabled = useFlag('<YOUR_FLAG>');
|
|
442
|
+
<\/script>
|
|
443
|
+
|
|
444
|
+
<section>
|
|
445
|
+
{#if $enabled}
|
|
446
|
+
<p><YOUR_FLAG> is enabled!</p>
|
|
447
|
+
{:else}
|
|
448
|
+
<p><YOUR_FLAG> is disabled!</p>
|
|
449
|
+
{/if}
|
|
450
|
+
</section>
|
|
451
|
+
\`\`\`
|
|
452
|
+
`,We=`1\\. Install the SDK
|
|
453
|
+
\`\`\`sh
|
|
454
|
+
npm install @unleash/proxy-client-vue
|
|
455
|
+
\`\`\`
|
|
456
|
+
|
|
457
|
+
2\\. Initialize Unleash
|
|
458
|
+
\`\`\`vue
|
|
459
|
+
<script setup lang="ts">
|
|
460
|
+
import { FlagProvider } from '@unleash/proxy-client-vue'
|
|
461
|
+
|
|
462
|
+
const config = {
|
|
463
|
+
url: '<YOUR_API_URL>',
|
|
464
|
+
clientKey: '<YOUR_API_TOKEN>', // in production use environment variable
|
|
465
|
+
appName: 'unleash-onboarding-vue',
|
|
466
|
+
}
|
|
467
|
+
<\/script>
|
|
468
|
+
|
|
469
|
+
<template>
|
|
470
|
+
<FlagProvider :config="config">
|
|
471
|
+
<!-- <YourComponent /> -->
|
|
472
|
+
</FlagProvider>
|
|
473
|
+
</template>
|
|
474
|
+
\`\`\`
|
|
475
|
+
|
|
476
|
+
3\\. Check feature flag status
|
|
477
|
+
\`\`\`vue
|
|
478
|
+
<script setup lang="ts">
|
|
479
|
+
import { useFlag } from '@unleash/proxy-client-vue'
|
|
480
|
+
|
|
481
|
+
const flagEnabled = useFlag('<YOUR_FLAG>')
|
|
482
|
+
<\/script>
|
|
483
|
+
|
|
484
|
+
<template>
|
|
485
|
+
<div>
|
|
486
|
+
<div v-if="flagEnabled"><YOUR_FLAG> is enabled</div>
|
|
487
|
+
<div v-else><YOUR_FLAG> is disabled</div>
|
|
488
|
+
</div>
|
|
489
|
+
</template>
|
|
490
|
+
\`\`\`
|
|
491
|
+
---
|
|
492
|
+
\`\`\`svelte
|
|
493
|
+
const config = {
|
|
494
|
+
url: '<YOUR_API_URL>',
|
|
495
|
+
clientKey: import.meta.env.VITE_UNLEASH_API_TOKEN,
|
|
496
|
+
appName: 'unleash-onboarding-vue',
|
|
497
|
+
}
|
|
498
|
+
\`\`\`
|
|
499
|
+
|
|
500
|
+
---
|
|
501
|
+
- [SDK repository with documentation](https://github.com/Unleash/proxy-client-vue)
|
|
502
|
+
- [Vue example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Vue)
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
\`\`\`vue
|
|
507
|
+
<script setup lang="ts">
|
|
508
|
+
import { useFlag } from '@unleash/proxy-client-vue'
|
|
509
|
+
|
|
510
|
+
const flagEnabled = useFlag('<YOUR_FLAG>')
|
|
511
|
+
<\/script>
|
|
512
|
+
|
|
513
|
+
<template>
|
|
514
|
+
<div>
|
|
515
|
+
<div v-if="flagEnabled"><YOUR_FLAG> is enabled</div>
|
|
516
|
+
<div v-else><YOUR_FLAG> is disabled</div>
|
|
517
|
+
</div>
|
|
518
|
+
</template>
|
|
519
|
+
\`\`\`
|
|
520
|
+
`,Ge=`1\\. Install the SDK
|
|
521
|
+
\`\`\`sh
|
|
522
|
+
flutter pub add unleash_proxy_client_flutter
|
|
523
|
+
\`\`\`
|
|
524
|
+
|
|
525
|
+
2\\. Run Unleash
|
|
526
|
+
\`\`\`dart
|
|
527
|
+
import 'package:unleash_proxy_client_flutter/unleash_proxy_client_flutter.dart';
|
|
528
|
+
import 'dart:async';
|
|
529
|
+
|
|
530
|
+
final unleash = UnleashClient(
|
|
531
|
+
url: Uri.parse('<YOUR_API_URL>'),
|
|
532
|
+
clientKey: '<YOUR_API_TOKEN>', // in production use environment variable
|
|
533
|
+
appName: 'unleash-onboarding-flutter');
|
|
534
|
+
|
|
535
|
+
unleash.start();
|
|
536
|
+
|
|
537
|
+
Timer.periodic(Duration(seconds: 1), (Timer timer) {
|
|
538
|
+
if (unleash.isEnabled('<YOUR_FLAG>')) {
|
|
539
|
+
print('<YOUR_FLAG> is enabled');
|
|
540
|
+
} else {
|
|
541
|
+
print('<YOUR_FLAG> is disabled');
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
\`\`\`
|
|
545
|
+
---
|
|
546
|
+
\`\`\`dart
|
|
547
|
+
import 'package:unleash_proxy_client_flutter/unleash_proxy_client_flutter.dart';
|
|
548
|
+
import 'dart:io';
|
|
549
|
+
|
|
550
|
+
final unleash = UnleashClient(
|
|
551
|
+
url: Uri.parse('<YOUR_API_URL>'),
|
|
552
|
+
clientKey: Platform.environment['UNLEASH_CLIENT_KEY']!,
|
|
553
|
+
appName: 'unleash-onboarding-flutter');
|
|
554
|
+
|
|
555
|
+
unleash.start();
|
|
556
|
+
\`\`\`
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash_proxy_client_flutter)
|
|
560
|
+
- [Flutter example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Flutter)
|
|
561
|
+
- [A/B Testing in Flutter using Unleash and Mixpanel](https://docs.getunleash.io/guides/implement-ab-test-in-flutter)
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
\`\`\`dart
|
|
566
|
+
if (unleash.isEnabled("<YOUR_FLAG>")) {
|
|
567
|
+
print("<YOUR_FLAG> is enabled");
|
|
568
|
+
} else {
|
|
569
|
+
print("<YOUR_FLAG> is disabled");
|
|
570
|
+
}
|
|
571
|
+
\`\`\`
|
|
572
|
+
`,Ke=`1\\. Install the SDK
|
|
573
|
+
\`\`\`xml
|
|
574
|
+
<dependency>
|
|
575
|
+
<groupId>io.getunleash</groupId>
|
|
576
|
+
<artifactId>unleash-client-java</artifactId>
|
|
577
|
+
<version>LATEST</version>
|
|
578
|
+
</dependency>
|
|
579
|
+
\`\`\`
|
|
580
|
+
|
|
581
|
+
2\\. Run Unleash
|
|
582
|
+
\`\`\`java
|
|
583
|
+
UnleashConfig config = UnleashConfig.builder()
|
|
584
|
+
.appName("unleash-onboarding-java")
|
|
585
|
+
.instanceId("unleash-onboarding-instance")
|
|
586
|
+
.unleashAPI("<YOUR_API_URL>")
|
|
587
|
+
.apiKey("<YOUR_API_TOKEN>") // in production use environment variable
|
|
588
|
+
.build();
|
|
589
|
+
|
|
590
|
+
Unleash unleash = new DefaultUnleash(config);
|
|
591
|
+
|
|
592
|
+
while (true) {
|
|
593
|
+
boolean featureEnabled = unleash.isEnabled("<YOUR_FLAG>");
|
|
594
|
+
System.out.println("Feature enabled: " + featureEnabled);
|
|
595
|
+
Thread.sleep(1000);
|
|
596
|
+
}
|
|
597
|
+
\`\`\`
|
|
598
|
+
|
|
599
|
+
---
|
|
600
|
+
\`\`\`java
|
|
601
|
+
UnleashConfig config = UnleashConfig.builder()
|
|
602
|
+
.appName("unleash-onboarding-java")
|
|
603
|
+
.instanceId("unleash-onboarding-instance")
|
|
604
|
+
.unleashAPI("<YOUR_API_URL>")
|
|
605
|
+
.apiKey(System.getenv("UNLEASH_API_KEY"))
|
|
606
|
+
.build();
|
|
607
|
+
\`\`\`
|
|
608
|
+
|
|
609
|
+
---
|
|
610
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-java-sdk)
|
|
611
|
+
- [Java SDK example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Java)
|
|
612
|
+
- [How to Implement Feature Flags in Java](https://docs.getunleash.io/guides/implement-feature-flags-in-java)
|
|
613
|
+
|
|
614
|
+
---
|
|
615
|
+
|
|
616
|
+
\`\`\`java
|
|
617
|
+
if (unleash.isEnabled("<YOUR_FLAG>")) {
|
|
618
|
+
System.out.println("<YOUR_FLAG> is enabled");
|
|
619
|
+
} else {
|
|
620
|
+
System.out.println("<YOUR_FLAG> is disabled");
|
|
621
|
+
}
|
|
622
|
+
\`\`\`
|
|
623
|
+
`,qe=`1\\. Install the SDK
|
|
624
|
+
\`\`\`sh
|
|
625
|
+
dotnet add package unleash.client
|
|
626
|
+
// If you do not have a json library in your project:
|
|
627
|
+
dotnet add package Newtonsoft.Json
|
|
628
|
+
\`\`\`
|
|
629
|
+
|
|
630
|
+
2\\. Initialize Unleash
|
|
631
|
+
\`\`\`csharp
|
|
632
|
+
using Unleash;
|
|
633
|
+
using Unleash.ClientFactory;
|
|
634
|
+
|
|
635
|
+
public class Program
|
|
636
|
+
{
|
|
637
|
+
public static async Task Main()
|
|
638
|
+
{
|
|
639
|
+
var settings = new UnleashSettings()
|
|
640
|
+
{
|
|
641
|
+
AppName = "unleash-onboarding-dotnet",
|
|
642
|
+
UnleashApi = new Uri("<YOUR_API_URL>"),
|
|
643
|
+
CustomHttpHeaders = new Dictionary<string, string>()
|
|
644
|
+
{
|
|
645
|
+
{"Authorization","<YOUR_API_TOKEN>"} // in production use environment variable
|
|
646
|
+
}
|
|
647
|
+
};
|
|
648
|
+
|
|
649
|
+
var unleash = new DefaultUnleash(settings);
|
|
650
|
+
|
|
651
|
+
while (true) {
|
|
652
|
+
if (unleash.IsEnabled("<YOUR_FLAG>"))
|
|
653
|
+
{
|
|
654
|
+
Console.WriteLine("<YOUR_FLAG> is enabled");
|
|
655
|
+
}
|
|
656
|
+
else
|
|
657
|
+
{
|
|
658
|
+
Console.WriteLine("<YOUR_FLAG> is disabled");
|
|
659
|
+
}
|
|
660
|
+
await Task.Delay(1000);
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
\`\`\`
|
|
666
|
+
|
|
667
|
+
---
|
|
668
|
+
\`\`\`csharp
|
|
669
|
+
var settings = new UnleashSettings()
|
|
670
|
+
{
|
|
671
|
+
AppName = "unleash-onboarding-dotnet",
|
|
672
|
+
UnleashApi = new Uri("<YOUR_API_URL>"),
|
|
673
|
+
CustomHttpHeaders = new Dictionary<string, string>()
|
|
674
|
+
{
|
|
675
|
+
{"Authorization",Environment.GetEnvironmentVariable("UNLEASH_API_KEY")}
|
|
676
|
+
}
|
|
677
|
+
};
|
|
678
|
+
\`\`\`
|
|
679
|
+
|
|
680
|
+
---
|
|
681
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-client-dotnet)
|
|
682
|
+
- [.NET/C# SDK example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Csharp)
|
|
683
|
+
|
|
684
|
+
---
|
|
685
|
+
|
|
686
|
+
\`\`\`csharp
|
|
687
|
+
if (unleash.IsEnabled("<YOUR_FLAG>"))
|
|
688
|
+
{
|
|
689
|
+
Console.WriteLine("<YOUR_FLAG> is enabled");
|
|
690
|
+
}
|
|
691
|
+
else
|
|
692
|
+
{
|
|
693
|
+
Console.WriteLine("<YOUR_FLAG> is disabled");
|
|
694
|
+
}
|
|
695
|
+
\`\`\`
|
|
696
|
+
`,Je=`1\\. Install the SDK
|
|
697
|
+
\`\`\`sh
|
|
698
|
+
composer require unleash/client guzzlehttp/guzzle symfony/cache
|
|
699
|
+
\`\`\`
|
|
700
|
+
or
|
|
701
|
+
\`\`\`sh
|
|
702
|
+
composer require unleash/client symfony/http-client nyholm/psr7 symfony/cache
|
|
703
|
+
\`\`\`
|
|
704
|
+
|
|
705
|
+
2\\. Initialize Unleash
|
|
706
|
+
\`\`\`php
|
|
707
|
+
<?php
|
|
708
|
+
|
|
709
|
+
use Unleash\\\\Client\\\\UnleashBuilder;
|
|
710
|
+
|
|
711
|
+
require 'vendor/autoload.php';
|
|
712
|
+
|
|
713
|
+
$unleash = UnleashBuilder::create()
|
|
714
|
+
->withAppName('unleash-onboarding-php')
|
|
715
|
+
->withAppUrl('<YOUR_API_URL>')
|
|
716
|
+
->withHeader('Authorization', '<YOUR_API_TOKEN>') // in production use environment variable
|
|
717
|
+
->withInstanceId('unleash-onboarding-instance')
|
|
718
|
+
->build();
|
|
719
|
+
|
|
720
|
+
while (true) {
|
|
721
|
+
if ($unleash->isEnabled('<YOUR_FLAG>')) {
|
|
722
|
+
echo '<YOUR_FLAG> is enabled' . PHP_EOL;
|
|
723
|
+
} else {
|
|
724
|
+
echo '<YOUR_FLAG> is disabled' . PHP_EOL;
|
|
725
|
+
}
|
|
726
|
+
sleep(1);
|
|
727
|
+
}
|
|
728
|
+
\`\`\`
|
|
729
|
+
---
|
|
730
|
+
\`\`\`php
|
|
731
|
+
$unleash = UnleashBuilder::create()
|
|
732
|
+
->withAppName('unleash-onboarding-php')
|
|
733
|
+
->withAppUrl('<YOUR_API_URL>')
|
|
734
|
+
->withHeader('Authorization', getenv('UNLEASH_API_TOKEN'))
|
|
735
|
+
->withInstanceId('unleash-onboarding-instance')
|
|
736
|
+
->build();
|
|
737
|
+
\`\`\`
|
|
738
|
+
|
|
739
|
+
---
|
|
740
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-client-php)
|
|
741
|
+
- [PHP SDK example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/PHP)
|
|
742
|
+
|
|
743
|
+
---
|
|
744
|
+
|
|
745
|
+
\`\`\`php
|
|
746
|
+
if ($unleash->isEnabled('<YOUR_FLAG>')) {
|
|
747
|
+
echo '<YOUR_FLAG> is enabled' . PHP_EOL;
|
|
748
|
+
} else {
|
|
749
|
+
echo '<YOUR_FLAG> is disabled' . PHP_EOL;
|
|
750
|
+
}
|
|
751
|
+
\`\`\`
|
|
752
|
+
`,Ye=`1\\. Install the SDK
|
|
753
|
+
\`\`\`sh
|
|
754
|
+
npm install @unleash/proxy-client-react unleash-proxy-client
|
|
755
|
+
\`\`\`
|
|
756
|
+
|
|
757
|
+
2\\. Initialize Unleash
|
|
758
|
+
\`\`\`jsx
|
|
759
|
+
import React from 'react';
|
|
760
|
+
import { createRoot } from 'react-dom/client';
|
|
761
|
+
import { FlagProvider } from '@unleash/proxy-client-react';
|
|
762
|
+
|
|
763
|
+
const config = {
|
|
764
|
+
url: '<YOUR_API_URL>',
|
|
765
|
+
clientKey: '<YOUR_API_TOKEN>', // in production use environment variable
|
|
766
|
+
appName: 'unleash-onboarding-react',
|
|
767
|
+
};
|
|
768
|
+
|
|
769
|
+
const root = createRoot(document.getElementById('root'));
|
|
770
|
+
|
|
771
|
+
root.render(
|
|
772
|
+
<React.StrictMode>
|
|
773
|
+
<FlagProvider config={config}>
|
|
774
|
+
<App />
|
|
775
|
+
</FlagProvider>
|
|
776
|
+
</React.StrictMode>
|
|
777
|
+
);
|
|
778
|
+
\`\`\`
|
|
779
|
+
|
|
780
|
+
3\\. Check feature flag status
|
|
781
|
+
\`\`\`jsx
|
|
782
|
+
import { useFlag } from '@unleash/proxy-client-react';
|
|
783
|
+
|
|
784
|
+
export const TestComponent = () => {
|
|
785
|
+
const enabled = useFlag('<YOUR_FLAG>');
|
|
786
|
+
|
|
787
|
+
return enabled ? 'Flag is enabled' : 'Flag is disabled'
|
|
788
|
+
};
|
|
789
|
+
\`\`\`
|
|
790
|
+
---
|
|
791
|
+
\`\`\`jsx
|
|
792
|
+
const config = {
|
|
793
|
+
url: '<YOUR_API_URL>',
|
|
794
|
+
clientKey: process.env.UNLEASH_API_TOKEN,
|
|
795
|
+
appName: 'unleash-onboarding-react',
|
|
796
|
+
};
|
|
797
|
+
\`\`\`
|
|
798
|
+
|
|
799
|
+
---
|
|
800
|
+
- [SDK repository with documentation](https://github.com/Unleash/proxy-client-react)
|
|
801
|
+
- [React SDK example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/React)
|
|
802
|
+
- [https://docs.getunleash.io/guides/implement-feature-flags-in-react](https://docs.getunleash.io/guides/implement-feature-flags-in-react)
|
|
803
|
+
|
|
804
|
+
---
|
|
805
|
+
|
|
806
|
+
\`\`\`jsx
|
|
807
|
+
const TestComponent = () => {
|
|
808
|
+
const enabled = useFlag('<YOUR_FLAG>');
|
|
809
|
+
|
|
810
|
+
if (enabled) {
|
|
811
|
+
return (<div>{'<YOUR_FLAG> is enabled'}</div>);
|
|
812
|
+
} else {
|
|
813
|
+
return (<div>{'<YOUR_FLAG> is disabled'}</div>);
|
|
814
|
+
}
|
|
815
|
+
};
|
|
816
|
+
\`\`\`
|
|
817
|
+
|
|
818
|
+
`,Xe=`1\\. Install the SDK
|
|
819
|
+
\`\`\`sh
|
|
820
|
+
cargo add unleash-api-client --features reqwest
|
|
821
|
+
cargo add serde --features derive
|
|
822
|
+
cargo add reqwest@0.12 --features json
|
|
823
|
+
cargo add tokio --features full
|
|
824
|
+
cargo add enum-map
|
|
825
|
+
\`\`\`
|
|
826
|
+
|
|
827
|
+
2\\. Run Unleash
|
|
828
|
+
\`\`\`rust
|
|
829
|
+
use enum_map::Enum;
|
|
830
|
+
use serde::{Deserialize, Serialize};
|
|
831
|
+
use std::error::Error;
|
|
832
|
+
use std::time::Duration;
|
|
833
|
+
use tokio::time::sleep;
|
|
834
|
+
use unleash_api_client::client::ClientBuilder;
|
|
835
|
+
use unleash_api_client::Client;
|
|
836
|
+
|
|
837
|
+
#[derive(Debug, Deserialize, Serialize, Enum, Clone)]
|
|
838
|
+
enum Flags {
|
|
839
|
+
#[serde(rename = "<YOUR_FLAG>")]
|
|
840
|
+
TestFlag,
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
#[tokio::main]
|
|
844
|
+
async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
|
|
845
|
+
let client: Client<Flags, reqwest::Client> = ClientBuilder::default()
|
|
846
|
+
.into_client(
|
|
847
|
+
"<YOUR_API_URL>",
|
|
848
|
+
"unleash-onboarding-rust",
|
|
849
|
+
"unleash-onboarding-instance",
|
|
850
|
+
Some("<YOUR_API_TOKEN>".to_owned()), // in production use environment variable
|
|
851
|
+
)?;
|
|
852
|
+
client.register().await?;
|
|
853
|
+
|
|
854
|
+
let (_, _) = tokio::join!(client.poll_for_updates(), async {
|
|
855
|
+
sleep(Duration::from_millis(1000)).await;
|
|
856
|
+
|
|
857
|
+
let is_enabled = client.is_enabled(Flags::TestFlag, None, true);
|
|
858
|
+
println!("\\nIs flag enabled: {}\\n", is_enabled);
|
|
859
|
+
|
|
860
|
+
sleep(Duration::from_millis(5000)).await;
|
|
861
|
+
|
|
862
|
+
client.stop_poll().await;
|
|
863
|
+
Ok::<(), Box<dyn Error + Send + Sync>>(())
|
|
864
|
+
});
|
|
865
|
+
|
|
866
|
+
Ok(())
|
|
867
|
+
}
|
|
868
|
+
\`\`\`
|
|
869
|
+
---
|
|
870
|
+
\`\`\`rust
|
|
871
|
+
let api_token = env::var("UNLEASH_API_TOKEN").expect("UNLEASH_API_TOKEN environment variable not set");
|
|
872
|
+
|
|
873
|
+
let client: Client<Flags, reqwest::Client> = ClientBuilder::default()
|
|
874
|
+
.into_client(
|
|
875
|
+
"<YOUR_API_URL>",
|
|
876
|
+
"unleash-onboarding-rust",
|
|
877
|
+
"unleash-onboarding-instance",
|
|
878
|
+
Some(api_token.to_owned()),
|
|
879
|
+
)?;
|
|
880
|
+
client.register().await?;
|
|
881
|
+
\`\`\`
|
|
882
|
+
|
|
883
|
+
---
|
|
884
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-client-rust)
|
|
885
|
+
- [Rust example with CodeSandbox](https://github.com/Unleash/unleash-sdk-examples/tree/main/Rust)
|
|
886
|
+
- [How to Implement Feature Flags in Rust](https://docs.getunleash.io/guides/implement-feature-flags-in-rust)
|
|
887
|
+
|
|
888
|
+
---
|
|
889
|
+
|
|
890
|
+
\`\`\`rust
|
|
891
|
+
enum Flags {
|
|
892
|
+
#[serde(rename = "<YOUR_FLAG>")]
|
|
893
|
+
TestFlag,
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
if client.is_enabled(Flags::TestFlag, None, true) {
|
|
897
|
+
println!("<YOUR_FLAG> is enabled");
|
|
898
|
+
} else {
|
|
899
|
+
println!("<YOUR_FLAG> is disabled");
|
|
900
|
+
}
|
|
901
|
+
\`\`\`
|
|
902
|
+
`,Ze=`1\\. Install the SDK
|
|
903
|
+
\`\`\`swift
|
|
904
|
+
.package(url: "https://github.com/Unleash/unleash-ios-sdk.git", from: "0.0.0")
|
|
905
|
+
\`\`\`
|
|
906
|
+
|
|
907
|
+
2\\. Run Unleash
|
|
908
|
+
\`\`\`swift
|
|
909
|
+
import Foundation
|
|
910
|
+
import UnleashProxyClientSwift
|
|
911
|
+
|
|
912
|
+
var unleash = UnleashProxyClientSwift.UnleashClient(
|
|
913
|
+
unleashUrl: "<YOUR_API_URL>",
|
|
914
|
+
clientKey: "<YOUR_API_TOKEN>", // in production use environment variable
|
|
915
|
+
appName: "unleash-onboarding-swift",
|
|
916
|
+
context: [:])
|
|
917
|
+
|
|
918
|
+
unleash.start()
|
|
919
|
+
|
|
920
|
+
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
|
|
921
|
+
MainActor.assumeIsolated {
|
|
922
|
+
if unleash.isEnabled(name: "<YOUR_FLAG>") {
|
|
923
|
+
print("<YOUR_FLAG> is enabled")
|
|
924
|
+
} else {
|
|
925
|
+
print("<YOUR_FLAG> is disabled")
|
|
926
|
+
}
|
|
927
|
+
fflush(stdout)
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
RunLoop.main.run()
|
|
932
|
+
\`\`\`
|
|
933
|
+
ℹ️ **Info:** The Swift SDK takes at least 60 seconds to post metrics to Unleash.
|
|
934
|
+
---
|
|
935
|
+
---
|
|
936
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-ios-sdk)
|
|
937
|
+
---
|
|
938
|
+
|
|
939
|
+
\`\`\`swift
|
|
940
|
+
if unleash.isEnabled(name: "<YOUR_FLAG>") {
|
|
941
|
+
print("<YOUR_FLAG> is enabled")
|
|
942
|
+
} else {
|
|
943
|
+
print("<YOUR_FLAG> is disabled")
|
|
944
|
+
}
|
|
945
|
+
\`\`\`
|
|
946
|
+
|
|
947
|
+
ℹ️ **Info:** The Swift SDK takes at least 60 seconds to post metrics to Unleash.
|
|
948
|
+
`,Qe=`1\\. Install the SDK
|
|
949
|
+
\`\`\`sh
|
|
950
|
+
npm install @unleash/nextjs
|
|
951
|
+
\`\`\`
|
|
952
|
+
|
|
953
|
+
2\\. Wrap your app with FlagProvider
|
|
954
|
+
\`\`\`jsx
|
|
955
|
+
"use client";
|
|
956
|
+
|
|
957
|
+
import { FlagProvider } from '@unleash/nextjs/client';
|
|
958
|
+
|
|
959
|
+
const config = {
|
|
960
|
+
url: '<YOUR_API_URL>',
|
|
961
|
+
clientKey: '<YOUR_API_TOKEN>', // in production use environment variables
|
|
962
|
+
appName: 'unleash-onboarding-nextjs',
|
|
963
|
+
};
|
|
964
|
+
|
|
965
|
+
export default function Home() {
|
|
966
|
+
return (
|
|
967
|
+
<FlagProvider config={config}>
|
|
968
|
+
<App />
|
|
969
|
+
</FlagProvider>
|
|
970
|
+
);
|
|
971
|
+
}
|
|
972
|
+
\`\`\`
|
|
973
|
+
|
|
974
|
+
3\\. Check feature flag status
|
|
975
|
+
\`\`\`jsx
|
|
976
|
+
"use client";
|
|
977
|
+
|
|
978
|
+
import { useFlag } from '@unleash/nextjs/client';
|
|
979
|
+
|
|
980
|
+
export default function MyComponent() {
|
|
981
|
+
const isEnabled = useFlag('<YOUR_FLAG>');
|
|
982
|
+
|
|
983
|
+
if (isEnabled) {
|
|
984
|
+
return (<div>{'<YOUR_FLAG> is enabled'}</div>);
|
|
985
|
+
} else {
|
|
986
|
+
return (<div>{'<YOUR_FLAG> is disabled'}</div>);
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
\`\`\`
|
|
990
|
+
---
|
|
991
|
+
\`\`\`jsx
|
|
992
|
+
// Set NEXT_PUBLIC_UNLEASH_FRONTEND_API_URL, NEXT_PUBLIC_UNLEASH_FRONTEND_API_TOKEN
|
|
993
|
+
// and NEXT_PUBLIC_UNLEASH_APP_NAME in your environment
|
|
994
|
+
export default function Home() {
|
|
995
|
+
return (
|
|
996
|
+
<FlagProvider>
|
|
997
|
+
<App />
|
|
998
|
+
</FlagProvider>
|
|
999
|
+
);
|
|
1000
|
+
}
|
|
1001
|
+
\`\`\`
|
|
1002
|
+
|
|
1003
|
+
---
|
|
1004
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-nextjs-sdk)
|
|
1005
|
+
- [Next.js SDK example](https://github.com/Unleash/unleash-sdk-examples/tree/main/Next.js)
|
|
1006
|
+
- [https://docs.getunleash.io/sdks/next-js](https://docs.getunleash.io/sdks/next-js)
|
|
1007
|
+
|
|
1008
|
+
---
|
|
1009
|
+
|
|
1010
|
+
\`\`\`jsx
|
|
1011
|
+
"use client";
|
|
1012
|
+
|
|
1013
|
+
import { useFlag } from '@unleash/nextjs/client';
|
|
1014
|
+
|
|
1015
|
+
export default function MyComponent() {
|
|
1016
|
+
const isEnabled = useFlag('<YOUR_FLAG>');
|
|
1017
|
+
|
|
1018
|
+
if (isEnabled) {
|
|
1019
|
+
return (<div>{'<YOUR_FLAG> is enabled'}</div>);
|
|
1020
|
+
} else {
|
|
1021
|
+
return (<div>{'<YOUR_FLAG> is disabled'}</div>);
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
\`\`\`
|
|
1025
|
+
`,$e=`1\\. Install the SDK
|
|
1026
|
+
\`\`\`sh
|
|
1027
|
+
npm install @unleash/unleash-react-native-sdk unleash-proxy-client
|
|
1028
|
+
\`\`\`
|
|
1029
|
+
|
|
1030
|
+
2\\. Initialize Unleash
|
|
1031
|
+
\`\`\`tsx
|
|
1032
|
+
import { FlagProvider, useFlag } from '@unleash/unleash-react-native-sdk';
|
|
1033
|
+
|
|
1034
|
+
const config = {
|
|
1035
|
+
url: '<YOUR_API_URL>',
|
|
1036
|
+
clientKey: '<YOUR_API_TOKEN>', // in production use environment variables
|
|
1037
|
+
appName: 'unleash-onboarding-react-native',
|
|
1038
|
+
};
|
|
1039
|
+
|
|
1040
|
+
function FlagStatus() {
|
|
1041
|
+
const isEnabled = useFlag('<YOUR_FLAG>');
|
|
1042
|
+
|
|
1043
|
+
if (isEnabled) {
|
|
1044
|
+
return <Text>{'<YOUR_FLAG> is enabled'}</Text>;
|
|
1045
|
+
} else {
|
|
1046
|
+
return <Text>{'<YOUR_FLAG> is disabled'}</Text>;
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
export default function App() {
|
|
1051
|
+
return (
|
|
1052
|
+
<FlagProvider config={config}>
|
|
1053
|
+
<FlagStatus />
|
|
1054
|
+
</FlagProvider>
|
|
1055
|
+
);
|
|
1056
|
+
}
|
|
1057
|
+
\`\`\`
|
|
1058
|
+
---
|
|
1059
|
+
\`\`\`tsx
|
|
1060
|
+
// Use environment variables instead of hardcoded values.
|
|
1061
|
+
// The variable names depend on your setup (e.g. EXPO_PUBLIC_* for Expo,
|
|
1062
|
+
// or your chosen library for bare React Native).
|
|
1063
|
+
const config = {
|
|
1064
|
+
url: process.env.YOUR_UNLEASH_URL,
|
|
1065
|
+
clientKey: process.env.YOUR_UNLEASH_CLIENT_KEY,
|
|
1066
|
+
appName: 'unleash-onboarding-react-native',
|
|
1067
|
+
};
|
|
1068
|
+
\`\`\`
|
|
1069
|
+
|
|
1070
|
+
---
|
|
1071
|
+
- [SDK repository with documentation](https://github.com/Unleash/unleash-react-native-sdk)
|
|
1072
|
+
- [React Native SDK example](https://github.com/Unleash/unleash-sdk-examples/tree/main/ReactNative)
|
|
1073
|
+
- [https://docs.getunleash.io/sdks/react-native](https://docs.getunleash.io/sdks/react-native)
|
|
1074
|
+
|
|
1075
|
+
---
|
|
1076
|
+
|
|
1077
|
+
\`\`\`tsx
|
|
1078
|
+
import { useFlag } from '@unleash/unleash-react-native-sdk';
|
|
1079
|
+
|
|
1080
|
+
function MyComponent() {
|
|
1081
|
+
const isEnabled = useFlag('<YOUR_FLAG>');
|
|
1082
|
+
|
|
1083
|
+
if (isEnabled) {
|
|
1084
|
+
return <Text>{'<YOUR_FLAG> is enabled'}</Text>;
|
|
1085
|
+
} else {
|
|
1086
|
+
return <Text>{'<YOUR_FLAG> is disabled'}</Text>;
|
|
1087
|
+
}
|
|
1088
|
+
}
|
|
1089
|
+
\`\`\`
|
|
1090
|
+
`,q=t(e(((e,t)=>{function n(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw Error(`map is read-only`)}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw Error(`set is read-only`)}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{let r=e[t],i=typeof r;(i===`object`||i===`function`)&&!Object.isFrozen(r)&&n(r)}),e}var r=class{constructor(e){e.data===void 0&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}};function i(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function a(e,...t){let n=Object.create(null);for(let t in e)n[t]=e[t];return t.forEach(function(e){for(let t in e)n[t]=e[t]}),n}var o=`</span>`,s=e=>!!e.scope,c=(e,{prefix:t})=>{if(e.startsWith(`language:`))return e.replace(`language:`,`language-`);if(e.includes(`.`)){let n=e.split(`.`);return[`${t}${n.shift()}`,...n.map((e,t)=>`${e}${`_`.repeat(t+1)}`)].join(` `)}return`${t}${e}`},l=class{constructor(e,t){this.buffer=``,this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=i(e)}openNode(e){if(!s(e))return;let t=c(e.scope,{prefix:this.classPrefix});this.span(t)}closeNode(e){s(e)&&(this.buffer+=o)}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}},u=(e={})=>{let t={children:[]};return Object.assign(t,e),t},d=class e{constructor(){this.rootNode=u(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){let t=u({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return typeof t==`string`?e.addText(t):t.children&&(e.openNode(t),t.children.forEach(t=>this._walk(e,t)),e.closeNode(t)),e}static _collapse(t){typeof t!=`string`&&t.children&&(t.children.every(e=>typeof e==`string`)?t.children=[t.children.join(``)]:t.children.forEach(t=>{e._collapse(t)}))}},f=class extends d{constructor(e){super(),this.options=e}addText(e){e!==``&&this.add(e)}startScope(e){this.openNode(e)}endScope(){this.closeNode()}__addSublanguage(e,t){let n=e.root;t&&(n.scope=`language:${t}`),this.add(n)}toHTML(){return new l(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}};function p(e){return e?typeof e==`string`?e:e.source:null}function m(e){return _(`(?=`,e,`)`)}function h(e){return _(`(?:`,e,`)*`)}function g(e){return _(`(?:`,e,`)?`)}function _(...e){return e.map(e=>p(e)).join(``)}function v(e){let t=e[e.length-1];return typeof t==`object`&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function y(...e){return`(`+(v(e).capture?``:`?:`)+e.map(e=>p(e)).join(`|`)+`)`}function b(e){return RegExp(e.toString()+`|`).exec(``).length-1}function x(e,t){let n=e&&e.exec(t);return n&&n.index===0}var S=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function C(e,{joinWith:t}){let n=0;return e.map(e=>{n+=1;let t=n,r=p(e),i=``;for(;r.length>0;){let e=S.exec(r);if(!e){i+=r;break}i+=r.substring(0,e.index),r=r.substring(e.index+e[0].length),e[0][0]===`\\`&&e[1]?i+=`\\`+String(Number(e[1])+t):(i+=e[0],e[0]===`(`&&n++)}return i}).map(e=>`(${e})`).join(t)}var w=/\b\B/,T=`[a-zA-Z]\\w*`,E=`[a-zA-Z_]\\w*`,D=`\\b\\d+(\\.\\d+)?`,O=`(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)`,k=`\\b(0b[01]+)`,A=`!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~`,j=(e={})=>{let t=/^#![ ]*\//;return e.binary&&(e.begin=_(t,/.*\b/,e.binary,/\b.*/)),a({scope:`meta`,begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{e.index!==0&&t.ignoreMatch()}},e)},M={begin:`\\\\[\\s\\S]`,relevance:0},N={scope:`string`,begin:`'`,end:`'`,illegal:`\\n`,contains:[M]},P={scope:`string`,begin:`"`,end:`"`,illegal:`\\n`,contains:[M]},F={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},I=function(e,t,n={}){let r=a({scope:`comment`,begin:e,end:t,contains:[]},n);r.contains.push({scope:`doctag`,begin:`[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)`,end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});let i=y(`I`,`a`,`is`,`so`,`us`,`to`,`at`,`if`,`in`,`it`,`on`,/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:_(/[ ]+/,`(`,i,/[.]?[:]?([.][ ]|[ ])/,`){3}`)}),r},L=I(`//`,`$`),R=I(`/\\*`,`\\*/`),z=I(`#`,`$`),B=Object.freeze({__proto__:null,APOS_STRING_MODE:N,BACKSLASH_ESCAPE:M,BINARY_NUMBER_MODE:{scope:`number`,begin:k,relevance:0},BINARY_NUMBER_RE:k,COMMENT:I,C_BLOCK_COMMENT_MODE:R,C_LINE_COMMENT_MODE:L,C_NUMBER_MODE:{scope:`number`,begin:O,relevance:0},C_NUMBER_RE:O,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})},HASH_COMMENT_MODE:z,IDENT_RE:T,MATCH_NOTHING_RE:w,METHOD_GUARD:{begin:`\\.\\s*[a-zA-Z_]\\w*`,relevance:0},NUMBER_MODE:{scope:`number`,begin:D,relevance:0},NUMBER_RE:D,PHRASAL_WORDS_MODE:F,QUOTE_STRING_MODE:P,REGEXP_MODE:{scope:`regexp`,begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[M,{begin:/\[/,end:/\]/,relevance:0,contains:[M]}]},RE_STARTERS_RE:A,SHEBANG:j,TITLE_MODE:{scope:`title`,begin:T,relevance:0},UNDERSCORE_IDENT_RE:E,UNDERSCORE_TITLE_MODE:{scope:`title`,begin:E,relevance:0}});function V(e,t){e.input[e.index-1]===`.`&&t.ignoreMatch()}function ee(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function te(e,t){t&&e.beginKeywords&&(e.begin=`\\b(`+e.beginKeywords.split(` `).join(`|`)+`)(?!\\.)(?=\\b|\\s)`,e.__beforeBegin=V,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function ne(e,t){Array.isArray(e.illegal)&&(e.illegal=y(...e.illegal))}function re(e,t){if(e.match){if(e.begin||e.end)throw Error(`begin & end are not supported with match`);e.begin=e.match,delete e.match}}function ie(e,t){e.relevance===void 0&&(e.relevance=1)}var ae=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw Error(`beforeMatch cannot be used with starts`);let n=Object.assign({},e);Object.keys(e).forEach(t=>{delete e[t]}),e.keywords=n.keywords,e.begin=_(n.beforeMatch,m(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},oe=[`of`,`and`,`for`,`in`,`not`,`or`,`if`,`then`,`parent`,`list`,`value`],se=`keyword`;function ce(e,t,n=se){let r=Object.create(null);return typeof e==`string`?i(n,e.split(` `)):Array.isArray(e)?i(n,e):Object.keys(e).forEach(function(n){Object.assign(r,ce(e[n],t,n))}),r;function i(e,n){t&&(n=n.map(e=>e.toLowerCase())),n.forEach(function(t){let n=t.split(`|`);r[n[0]]=[e,le(n[0],n[1])]})}}function le(e,t){return t?Number(t):+!ue(e)}function ue(e){return oe.includes(e.toLowerCase())}var de={},H=e=>{console.error(e)},fe=(e,...t)=>{console.log(`WARN: ${e}`,...t)},U=(e,t)=>{de[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),de[`${e}/${t}`]=!0)},W=Error();function pe(e,t,{key:n}){let r=0,i=e[n],a={},o={};for(let e=1;e<=t.length;e++)o[e+r]=i[e],a[e+r]=!0,r+=b(t[e-1]);e[n]=o,e[n]._emit=a,e[n]._multi=!0}function me(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw H(`skip, excludeBegin, returnBegin not compatible with beginScope: {}`),W;if(typeof e.beginScope!=`object`||e.beginScope===null)throw H(`beginScope must be object`),W;pe(e,e.begin,{key:`beginScope`}),e.begin=C(e.begin,{joinWith:``})}}function he(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw H(`skip, excludeEnd, returnEnd not compatible with endScope: {}`),W;if(typeof e.endScope!=`object`||e.endScope===null)throw H(`endScope must be object`),W;pe(e,e.end,{key:`endScope`}),e.end=C(e.end,{joinWith:``})}}function ge(e){e.scope&&typeof e.scope==`object`&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function _e(e){ge(e),typeof e.beginScope==`string`&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope==`string`&&(e.endScope={_wrap:e.endScope}),me(e),he(e)}function ve(e){function t(t,n){return new RegExp(p(t),`m`+(e.case_insensitive?`i`:``)+(e.unicodeRegex?`u`:``)+(n?`g`:``))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=b(e)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);let e=this.regexes.map(e=>e[1]);this.matcherRe=t(C(e,{joinWith:`|`}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;let t=this.matcherRe.exec(e);if(!t)return null;let n=t.findIndex((e,t)=>t>0&&e!==void 0),r=this.matchIndexes[n];return t.splice(0,n),Object.assign(t,r)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];let t=new n;return this.rules.slice(e).forEach(([e,n])=>t.addRule(e,n)),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),t.type===`begin`&&this.count++}exec(e){let t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition()&&!(n&&n.index===this.lastIndex)){let t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}return n&&(this.regexIndex+=n.position+1,this.regexIndex===this.count&&this.considerAll()),n}}function i(e){let t=new r;return e.contains.forEach(e=>t.addRule(e.begin,{rule:e,type:`begin`})),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:`end`}),e.illegal&&t.addRule(e.illegal,{type:`illegal`}),t}function o(n,r){let a=n;if(n.isCompiled)return a;[ee,re,_e,ae].forEach(e=>e(n,r)),e.compilerExtensions.forEach(e=>e(n,r)),n.__beforeBegin=null,[te,ne,ie].forEach(e=>e(n,r)),n.isCompiled=!0;let s=null;return typeof n.keywords==`object`&&n.keywords.$pattern&&(n.keywords=Object.assign({},n.keywords),s=n.keywords.$pattern,delete n.keywords.$pattern),s||=/\w+/,n.keywords&&=ce(n.keywords,e.case_insensitive),a.keywordPatternRe=t(s,!0),r&&(n.begin||=/\B|\b/,a.beginRe=t(a.begin),!n.end&&!n.endsWithParent&&(n.end=/\B|\b/),n.end&&(a.endRe=t(a.end)),a.terminatorEnd=p(a.end)||``,n.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(n.end?`|`:``)+r.terminatorEnd)),n.illegal&&(a.illegalRe=t(n.illegal)),n.contains||=[],n.contains=[].concat(...n.contains.map(function(e){return be(e===`self`?n:e)})),n.contains.forEach(function(e){o(e,a)}),n.starts&&o(n.starts,r),a.matcher=i(a),a}if(e.compilerExtensions||=[],e.contains&&e.contains.includes(`self`))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=a(e.classNameAliases||{}),o(e)}function ye(e){return e?e.endsWithParent||ye(e.starts):!1}function be(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return a(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:ye(e)?a(e,{starts:e.starts?a(e.starts):null}):Object.isFrozen(e)?a(e):e}var xe=`11.11.1`,Se=class extends Error{constructor(e,t){super(e),this.name=`HTMLInjectionError`,this.html=t}},Ce=i,we=a,Te=Symbol(`nomatch`),Ee=7,G=function(e){let t=Object.create(null),i=Object.create(null),a=[],o=!0,s=`Could not find the language '{}', did you forget to load/include a language module?`,c={disableAutodetect:!0,name:`Plain text`,contains:[]},l={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:`hljs-`,cssSelector:`pre code`,languages:null,__emitter:f};function u(e){return l.noHighlightRe.test(e)}function d(e){let t=e.className+` `;t+=e.parentNode?e.parentNode.className:``;let n=l.languageDetectRe.exec(t);if(n){let t=N(n[1]);return t||(fe(s.replace(`{}`,n[1])),fe(`Falling back to no-highlight mode for this block.`,e)),t?n[1]:`no-highlight`}return t.split(/\s+/).find(e=>u(e)||N(e))}function p(e,t,n){let r=``,i=``;typeof t==`object`?(r=e,n=t.ignoreIllegals,i=t.language):(U(`10.7.0`,`highlight(lang, code, ...args) has been deprecated.`),U(`10.7.0`,`Please use highlight(code, options) instead.
|
|
1091
|
+
https://github.com/highlightjs/highlight.js/issues/2277`),i=e,r=t),n===void 0&&(n=!0);let a={code:r,language:i};z(`before:highlight`,a);let o=a.result?a.result:v(a.language,a.code,n);return o.code=a.code,z(`after:highlight`,o),o}function v(e,n,i,a){let c=Object.create(null);function u(e,t){return e.keywords[t]}function d(){if(!A.keywords){M.addText(P);return}let e=0;A.keywordPatternRe.lastIndex=0;let t=A.keywordPatternRe.exec(P),n=``;for(;t;){n+=P.substring(e,t.index);let r=D.case_insensitive?t[0].toLowerCase():t[0],i=u(A,r);if(i){let[e,a]=i;if(M.addText(n),n=``,c[r]=(c[r]||0)+1,c[r]<=Ee&&(F+=a),e.startsWith(`_`))n+=t[0];else{let n=D.classNameAliases[e]||e;m(t[0],n)}}else n+=t[0];e=A.keywordPatternRe.lastIndex,t=A.keywordPatternRe.exec(P)}n+=P.substring(e),M.addText(n)}function f(){if(P===``)return;let e=null;if(typeof A.subLanguage==`string`){if(!t[A.subLanguage]){M.addText(P);return}e=v(A.subLanguage,P,!0,j[A.subLanguage]),j[A.subLanguage]=e._top}else e=S(P,A.subLanguage.length?A.subLanguage:null);A.relevance>0&&(F+=e.relevance),M.__addSublanguage(e._emitter,e.language)}function p(){A.subLanguage==null?d():f(),P=``}function m(e,t){e!==``&&(M.startScope(t),M.addText(e),M.endScope())}function h(e,t){let n=1,r=t.length-1;for(;n<=r;){if(!e._emit[n]){n++;continue}let r=D.classNameAliases[e[n]]||e[n],i=t[n];r?m(i,r):(P=i,d(),P=``),n++}}function g(e,t){return e.scope&&typeof e.scope==`string`&&M.openNode(D.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(m(P,D.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),P=``):e.beginScope._multi&&(h(e.beginScope,t),P=``)),A=Object.create(e,{parent:{value:A}}),A}function _(e,t,n){let i=x(e.endRe,n);if(i){if(e[`on:end`]){let n=new r(e);e[`on:end`](t,n),n.isMatchIgnored&&(i=!1)}if(i){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return _(e.parent,t,n)}function y(e){return A.matcher.regexIndex===0?(P+=e[0],1):(R=!0,0)}function b(e){let t=e[0],n=e.rule,i=new r(n),a=[n.__beforeBegin,n[`on:begin`]];for(let n of a)if(n&&(n(e,i),i.isMatchIgnored))return y(t);return n.skip?P+=t:(n.excludeBegin&&(P+=t),p(),!n.returnBegin&&!n.excludeBegin&&(P=t)),g(n,e),n.returnBegin?0:t.length}function C(e){let t=e[0],r=n.substring(e.index),i=_(A,e,r);if(!i)return Te;let a=A;A.endScope&&A.endScope._wrap?(p(),m(t,A.endScope._wrap)):A.endScope&&A.endScope._multi?(p(),h(A.endScope,e)):a.skip?P+=t:(a.returnEnd||a.excludeEnd||(P+=t),p(),a.excludeEnd&&(P=t));do A.scope&&M.closeNode(),!A.skip&&!A.subLanguage&&(F+=A.relevance),A=A.parent;while(A!==i.parent);return i.starts&&g(i.starts,e),a.returnEnd?0:t.length}function w(){let e=[];for(let t=A;t!==D;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach(e=>M.openNode(e))}let T={};function E(t,r){let a=r&&r[0];if(P+=t,a==null)return p(),0;if(T.type===`begin`&&r.type===`end`&&T.index===r.index&&a===``){if(P+=n.slice(r.index,r.index+1),!o){let t=Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=T.rule,t}return 1}if(T=r,r.type===`begin`)return b(r);if(r.type===`illegal`&&!i){let e=Error(`Illegal lexeme "`+a+`" for mode "`+(A.scope||`<unnamed>`)+`"`);throw e.mode=A,e}else if(r.type===`end`){let e=C(r);if(e!==Te)return e}if(r.type===`illegal`&&a===``)return P+=`
|
|
1092
|
+
`,1;if(L>1e5&&L>r.index*3)throw Error(`potential infinite loop, way more iterations than matches`);return P+=a,a.length}let D=N(e);if(!D)throw H(s.replace(`{}`,e)),Error(`Unknown language: "`+e+`"`);let O=ve(D),k=``,A=a||O,j={},M=new l.__emitter(l);w();let P=``,F=0,I=0,L=0,R=!1;try{if(D.__emitTokens)D.__emitTokens(n,M);else{for(A.matcher.considerAll();;){L++,R?R=!1:A.matcher.considerAll(),A.matcher.lastIndex=I;let e=A.matcher.exec(n);if(!e)break;let t=E(n.substring(I,e.index),e);I=e.index+t}E(n.substring(I))}return M.finalize(),k=M.toHTML(),{language:e,value:k,relevance:F,illegal:!1,_emitter:M,_top:A}}catch(t){if(t.message&&t.message.includes(`Illegal`))return{language:e,value:Ce(n),illegal:!0,relevance:0,_illegalBy:{message:t.message,index:I,context:n.slice(I-100,I+100),mode:t.mode,resultSoFar:k},_emitter:M};if(o)return{language:e,value:Ce(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:A};throw t}}function b(e){let t={value:Ce(e),illegal:!1,relevance:0,_top:c,_emitter:new l.__emitter(l)};return t._emitter.addText(e),t}function S(e,n){n=n||l.languages||Object.keys(t);let r=b(e),i=n.filter(N).filter(F).map(t=>v(t,e,!1));i.unshift(r);let[a,o]=i.sort((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(N(e.language).supersetOf===t.language)return 1;if(N(t.language).supersetOf===e.language)return-1}return 0}),s=a;return s.secondBest=o,s}function C(e,t,n){let r=t&&i[t]||n;e.classList.add(`hljs`),e.classList.add(`language-${r}`)}function w(e){let t=null,n=d(e);if(u(n))return;if(z(`before:highlightElement`,{el:e,language:n}),e.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e);return}if(e.children.length>0&&(l.ignoreUnescapedHTML||(console.warn(`One of your code blocks includes unescaped HTML. This is a potentially serious security risk.`),console.warn(`https://github.com/highlightjs/highlight.js/wiki/security`),console.warn(`The element with unescaped HTML:`),console.warn(e)),l.throwUnescapedHTML))throw new Se(`One of your code blocks includes unescaped HTML.`,e.innerHTML);t=e;let r=t.textContent,i=n?p(r,{language:n,ignoreIllegals:!0}):S(r);e.innerHTML=i.value,e.dataset.highlighted=`yes`,C(e,n,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),z(`after:highlightElement`,{el:e,result:i,text:r})}function T(e){l=we(l,e)}let E=()=>{k(),U(`10.6.0`,`initHighlighting() deprecated. Use highlightAll() now.`)};function D(){k(),U(`10.6.0`,`initHighlightingOnLoad() deprecated. Use highlightAll() now.`)}let O=!1;function k(){function e(){k()}if(document.readyState===`loading`){O||window.addEventListener(`DOMContentLoaded`,e,!1),O=!0;return}document.querySelectorAll(l.cssSelector).forEach(w)}function A(n,r){let i=null;try{i=r(e)}catch(e){if(H(`Language definition for '{}' could not be registered.`.replace(`{}`,n)),o)H(e);else throw e;i=c}i.name||=n,t[n]=i,i.rawDefinition=r.bind(null,e),i.aliases&&P(i.aliases,{languageName:n})}function j(e){delete t[e];for(let t of Object.keys(i))i[t]===e&&delete i[t]}function M(){return Object.keys(t)}function N(e){return e=(e||``).toLowerCase(),t[e]||t[i[e]]}function P(e,{languageName:t}){typeof e==`string`&&(e=[e]),e.forEach(e=>{i[e.toLowerCase()]=t})}function F(e){let t=N(e);return t&&!t.disableAutodetect}function I(e){e[`before:highlightBlock`]&&!e[`before:highlightElement`]&&(e[`before:highlightElement`]=t=>{e[`before:highlightBlock`](Object.assign({block:t.el},t))}),e[`after:highlightBlock`]&&!e[`after:highlightElement`]&&(e[`after:highlightElement`]=t=>{e[`after:highlightBlock`](Object.assign({block:t.el},t))})}function L(e){I(e),a.push(e)}function R(e){let t=a.indexOf(e);t!==-1&&a.splice(t,1)}function z(e,t){let n=e;a.forEach(function(e){e[n]&&e[n](t)})}function V(e){return U(`10.7.0`,`highlightBlock will be removed entirely in v12.0`),U(`10.7.0`,`Please use highlightElement now.`),w(e)}Object.assign(e,{highlight:p,highlightAuto:S,highlightAll:k,highlightElement:w,highlightBlock:V,configure:T,initHighlighting:E,initHighlightingOnLoad:D,registerLanguage:A,unregisterLanguage:j,listLanguages:M,getLanguage:N,registerAliases:P,autoDetection:F,inherit:we,addPlugin:L,removePlugin:R}),e.debugMode=function(){o=!1},e.safeMode=function(){o=!0},e.versionString=xe,e.regex={concat:_,lookahead:m,either:y,optional:g,anyNumberOfTimes:h};for(let e in B)typeof B[e]==`object`&&n(B[e]);return Object.assign(e,B),e},K=G({});K.newInstance=()=>G({}),t.exports=K,K.HighlightJS=K,K.default=K}))()).default;function et(e){let t=e.regex,n={},r={begin:/\$\{/,end:/\}/,contains:[`self`,{begin:/:-/,contains:[n]}]};Object.assign(n,{className:`variable`,variants:[{begin:t.concat(/\$[\w\d#@][\w\d_]*/,`(?![\\w\\d])(?![$])`)},r]});let i={className:`subst`,begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},a=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:`comment`}}),o={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:`string`})]}},s={className:`string`,begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n,i]};i.contains.push(s);let c={match:/\\"/},l={className:`string`,begin:/'/,end:/'/},u={match:/\\'/},d={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:`number`},e.NUMBER_MODE,n]},f=e.SHEBANG({binary:`(${[`fish`,`bash`,`zsh`,`sh`,`csh`,`ksh`,`tcsh`,`dash`,`scsh`].join(`|`)})`,relevance:10}),p={className:`function`,begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},m=[`if`,`then`,`else`,`elif`,`fi`,`time`,`for`,`while`,`until`,`in`,`do`,`done`,`case`,`esac`,`coproc`,`function`,`select`],h=[`true`,`false`],g={match:/(\/[a-z._-]+)+/},_=[`break`,`cd`,`continue`,`eval`,`exec`,`exit`,`export`,`getopts`,`hash`,`pwd`,`readonly`,`return`,`shift`,`test`,`times`,`trap`,`umask`,`unset`],v=[`alias`,`bind`,`builtin`,`caller`,`command`,`declare`,`echo`,`enable`,`help`,`let`,`local`,`logout`,`mapfile`,`printf`,`read`,`readarray`,`source`,`sudo`,`type`,`typeset`,`ulimit`,`unalias`],y=`autoload.bg.bindkey.bye.cap.chdir.clone.comparguments.compcall.compctl.compdescribe.compfiles.compgroups.compquote.comptags.comptry.compvalues.dirs.disable.disown.echotc.echoti.emulate.fc.fg.float.functions.getcap.getln.history.integer.jobs.kill.limit.log.noglob.popd.print.pushd.pushln.rehash.sched.setcap.setopt.stat.suspend.ttyctl.unfunction.unhash.unlimit.unsetopt.vared.wait.whence.where.which.zcompile.zformat.zftp.zle.zmodload.zparseopts.zprof.zpty.zregexparse.zsocket.zstyle.ztcp`.split(`.`),b=`chcon.chgrp.chown.chmod.cp.dd.df.dir.dircolors.ln.ls.mkdir.mkfifo.mknod.mktemp.mv.realpath.rm.rmdir.shred.sync.touch.truncate.vdir.b2sum.base32.base64.cat.cksum.comm.csplit.cut.expand.fmt.fold.head.join.md5sum.nl.numfmt.od.paste.ptx.pr.sha1sum.sha224sum.sha256sum.sha384sum.sha512sum.shuf.sort.split.sum.tac.tail.tr.tsort.unexpand.uniq.wc.arch.basename.chroot.date.dirname.du.echo.env.expr.factor.groups.hostid.id.link.logname.nice.nohup.nproc.pathchk.pinky.printenv.printf.pwd.readlink.runcon.seq.sleep.stat.stdbuf.stty.tee.test.timeout.tty.uname.unlink.uptime.users.who.whoami.yes`.split(`.`);return{name:`Bash`,aliases:[`sh`,`zsh`],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:m,literal:h,built_in:[..._,...v,`set`,`shopt`,...y,...b]},contains:[f,e.SHEBANG(),p,d,a,o,g,s,c,l,u,n]}}function tt(e){let t=[`bool`,`byte`,`char`,`decimal`,`delegate`,`double`,`dynamic`,`enum`,`float`,`int`,`long`,`nint`,`nuint`,`object`,`sbyte`,`short`,`string`,`ulong`,`uint`,`ushort`],n=[`public`,`private`,`protected`,`static`,`internal`,`protected`,`abstract`,`async`,`extern`,`override`,`unsafe`,`virtual`,`new`,`sealed`,`partial`],r={keyword:`abstract.as.base.break.case.catch.class.const.continue.do.else.event.explicit.extern.finally.fixed.for.foreach.goto.if.implicit.in.interface.internal.is.lock.namespace.new.operator.out.override.params.private.protected.public.readonly.record.ref.return.scoped.sealed.sizeof.stackalloc.static.struct.switch.this.throw.try.typeof.unchecked.unsafe.using.virtual.void.volatile.while`.split(`.`).concat(`add.alias.and.ascending.args.async.await.by.descending.dynamic.equals.file.from.get.global.group.init.into.join.let.nameof.not.notnull.on.or.orderby.partial.record.remove.required.scoped.select.set.unmanaged.value|0.var.when.where.with.yield`.split(`.`)),built_in:t,literal:[`default`,`false`,`null`,`true`]},i=e.inherit(e.TITLE_MODE,{begin:`[a-zA-Z](\\.?\\w)*`}),a={className:`number`,variants:[{begin:`\\b(0b[01']+)`},{begin:`(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)`},{begin:`(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)`}],relevance:0},o={className:`string`,begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},s={className:`string`,begin:`@"`,end:`"`,contains:[{begin:`""`}]},c=e.inherit(s,{illegal:/\n/}),l={className:`subst`,begin:/\{/,end:/\}/,keywords:r},u=e.inherit(l,{illegal:/\n/}),d={className:`string`,begin:/\$"/,end:`"`,illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,u]},f={className:`string`,begin:/\$@"/,end:`"`,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:`""`},l]},p=e.inherit(f,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:`""`},u]});l.contains=[f,d,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.C_BLOCK_COMMENT_MODE],u.contains=[p,d,c,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,a,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];let m={variants:[o,f,d,s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},h={begin:`<`,end:`>`,contains:[{beginKeywords:`in out`},i]},g=e.IDENT_RE+`(<`+e.IDENT_RE+`(\\s*,\\s*`+e.IDENT_RE+`)*>)?(\\[\\])?`,_={begin:`@`+e.IDENT_RE,relevance:0};return{name:`C#`,aliases:[`cs`,`c#`],keywords:r,illegal:/::/,contains:[e.COMMENT(`///`,`$`,{returnBegin:!0,contains:[{className:`doctag`,variants:[{begin:`///`,relevance:0},{begin:`<!--|-->`},{begin:`</?`,end:`>`}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:`meta`,begin:`#`,end:`$`,keywords:{keyword:`if else elif endif define undef warning error line region endregion pragma checksum`}},m,a,{beginKeywords:`class interface`,relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:`where class`},i,h,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:`namespace`,relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:`record`,relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[i,h,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:`meta`,begin:`^\\s*\\[(?=[\\w])`,excludeBegin:!0,end:`\\]`,excludeEnd:!0,contains:[{className:`string`,begin:/"/,end:/"/}]},{beginKeywords:`new return throw await else`,relevance:0},{className:`function`,begin:`(`+g+`\\s+)+`+e.IDENT_RE+`\\s*(<[^=]+>\\s*)?\\(`,returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:r,contains:[{beginKeywords:n.join(` `),relevance:0},{begin:e.IDENT_RE+`\\s*(<[^=]+>\\s*)?\\(`,returnBegin:!0,contains:[e.TITLE_MODE,h],relevance:0},{match:/\(\)/},{className:`params`,begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:r,relevance:0,contains:[m,a,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},_]}}function nt(e){let t={className:`subst`,variants:[{begin:`\\$[A-Za-z0-9_]+`}]},n={className:`subst`,variants:[{begin:/\$\{/,end:/\}/}],keywords:`true false null this is new super`},r={className:`number`,relevance:0,variants:[{match:/\b[0-9][0-9_]*(\.[0-9][0-9_]*)?([eE][+-]?[0-9][0-9_]*)?\b/},{match:/\b0[xX][0-9A-Fa-f][0-9A-Fa-f_]*\b/}]},i={className:`string`,variants:[{begin:`r'''`,end:`'''`},{begin:`r"""`,end:`"""`},{begin:`r'`,end:`'`,illegal:`\\n`},{begin:`r"`,end:`"`,illegal:`\\n`},{begin:`'''`,end:`'''`,contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:`"""`,end:`"""`,contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:`'`,end:`'`,illegal:`\\n`,contains:[e.BACKSLASH_ESCAPE,t,n]},{begin:`"`,end:`"`,illegal:`\\n`,contains:[e.BACKSLASH_ESCAPE,t,n]}]};n.contains=[r,i];let a=`Comparable.DateTime.Duration.Function.Iterable.Iterator.List.Map.Match.Object.Pattern.RegExp.Set.Stopwatch.String.StringBuffer.StringSink.Symbol.Type.Uri.bool.double.int.num.Element.ElementList`.split(`.`),o=a.map(e=>`${e}?`);return{name:`Dart`,keywords:{keyword:`abstract.as.assert.async.await.base.break.case.catch.class.const.continue.covariant.default.deferred.do.dynamic.else.enum.export.extends.extension.external.factory.false.final.finally.for.Function.get.hide.if.implements.import.in.interface.is.late.library.mixin.new.null.on.operator.part.required.rethrow.return.sealed.set.show.static.super.switch.sync.this.throw.true.try.typedef.var.void.when.while.with.yield`.split(`.`),built_in:a.concat(o).concat([`Never`,`Null`,`dynamic`,`print`,`document`,`querySelector`,`querySelectorAll`,`window`]),$pattern:/[A-Za-z][A-Za-z0-9_]*\??/},contains:[i,e.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:`markdown`,relevance:0}),e.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:`markdown`,begin:`.`,end:`$`,relevance:0}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:`class`,beginKeywords:`class interface`,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:`extends implements`},e.UNDERSCORE_TITLE_MODE]},r,{className:`meta`,begin:`@[A-Za-z]+`},{begin:`=>`}]}}function rt(e){let t={keyword:[`break`,`case`,`chan`,`const`,`continue`,`default`,`defer`,`else`,`fallthrough`,`for`,`func`,`go`,`goto`,`if`,`import`,`interface`,`map`,`package`,`range`,`return`,`select`,`struct`,`switch`,`type`,`var`],type:[`bool`,`byte`,`complex64`,`complex128`,`error`,`float32`,`float64`,`int8`,`int16`,`int32`,`int64`,`string`,`uint8`,`uint16`,`uint32`,`uint64`,`int`,`uint`,`uintptr`,`rune`],literal:[`true`,`false`,`iota`,`nil`],built_in:[`append`,`cap`,`close`,`complex`,`copy`,`imag`,`len`,`make`,`new`,`panic`,`print`,`println`,`real`,`recover`,`delete`]};return{name:`Go`,aliases:[`golang`],keywords:t,illegal:`</`,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:`string`,variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:`number`,variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:`function`,beginKeywords:`func`,end:`\\s*(\\{|$)`,excludeEnd:!0,contains:[e.TITLE_MODE,{className:`params`,begin:/\(/,end:/\)/,endsParent:!0,keywords:t,illegal:/["']/}]}]}}function it(e,t={}){return t.variants=e,t}function at(e){let t=e.regex,n=it([e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.COMMENT(`/\\*\\*`,`\\*/`,{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:`doctag`,begin:`@[A-Za-z]+`}]})]),r={className:`regexp`,begin:/~?\/[^\/\n]+\//,contains:[e.BACKSLASH_ESCAPE]},i=it([e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]),a=it([{begin:/"""/,end:/"""/},{begin:/'''/,end:/'''/},{begin:`\\$/`,end:`/\\$`,relevance:10},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE],{className:`string`}),o={match:[/(class|interface|trait|enum|record|extends|implements)/,/\s+/,e.UNDERSCORE_IDENT_RE],scope:{1:`keyword`,3:`title.class`}};return{name:`Groovy`,keywords:{"variable.language":`this super`,literal:`true false null`,type:[`byte`,`short`,`char`,`int`,`long`,`boolean`,`float`,`double`,`void`],keyword:`def.as.in.assert.trait.abstract.static.volatile.transient.public.private.protected.synchronized.final.class.interface.enum.if.else.for.while.switch.case.break.default.continue.throw.throws.try.catch.finally.implements.extends.new.import.package.return.instanceof.var`.split(`.`)},contains:[e.SHEBANG({binary:`groovy`,relevance:10}),n,a,r,i,o,{className:`meta`,begin:`@[A-Za-z]+`,relevance:0},{className:`attr`,begin:`[A-Za-z0-9_$]+[ ]*:`,relevance:0},{begin:/\?/,end:/:/,relevance:0,contains:[n,a,r,i,`self`]},{className:`symbol`,begin:`^[ ]*`+t.lookahead(`[A-Za-z0-9_$]+:`),excludeBegin:!0,end:`[A-Za-z0-9_$]+:`,relevance:0}],illegal:/#|<\//}}var J=`[0-9](_*[0-9])*`,ot=`\\.(${J})`,st=`[0-9a-fA-F](_*[0-9a-fA-F])*`,ct={className:`number`,variants:[{begin:`(\\b(${J})((${ot})|\\.)?|(${ot}))[eE][+-]?(${J})[fFdD]?\\b`},{begin:`\\b(${J})((${ot})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${ot})[fFdD]?\\b`},{begin:`\\b(${J})[fFdD]\\b`},{begin:`\\b0[xX]((${st})\\.?|(${st})?\\.(${st}))[pP][+-]?(${J})[fFdD]?\\b`},{begin:`\\b(0|[1-9](_*[0-9])*)[lL]?\\b`},{begin:`\\b0[xX](${st})[lL]?\\b`},{begin:`\\b0(_*[0-7])*[lL]?\\b`},{begin:`\\b0[bB][01](_*[01])*[lL]?\\b`}],relevance:0};function lt(e,t,n){return n===-1?``:e.replace(t,r=>lt(e,t,n-1))}function ut(e){let t=e.regex,n=`[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*`,r=n+lt(`(?:<[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*~~~(?:\\s*,\\s*[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*~~~)*>)?`,/~~~/g,2),i={keyword:`synchronized.abstract.private.var.static.if.const .for.while.strictfp.finally.protected.import.native.final.void.enum.else.break.transient.catch.instanceof.volatile.case.assert.package.default.public.try.switch.continue.throws.protected.public.private.module.requires.exports.do.sealed.yield.permits.goto.when`.split(`.`),literal:[`false`,`true`,`null`],type:[`char`,`boolean`,`long`,`float`,`int`,`byte`,`short`,`double`],built_in:[`super`,`this`]},a={className:`meta`,begin:`@[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*`,contains:[{begin:/\(/,end:/\)/,contains:[`self`]}]},o={className:`params`,begin:/\(/,end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:`Java`,aliases:[`jsp`],keywords:i,illegal:/<\/|#/,contains:[e.COMMENT(`/\\*\\*`,`\\*/`,{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:`doctag`,begin:`@[A-Za-z]+`}]}),{begin:/import java\.[a-z]+\./,keywords:`import`,relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:`string`,contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,n],className:{1:`keyword`,3:`title.class`}},{match:/non-sealed/,scope:`keyword`},{begin:[t.concat(/(?!else)/,n),/\s+/,n,/\s+/,/=(?!=)/],className:{1:`type`,3:`variable`,5:`operator`}},{begin:[/record/,/\s+/,n],className:{1:`keyword`,3:`title.class`},contains:[o,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:`new throw return else`,relevance:0},{begin:[`(?:`+r+`\\s+)`,e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:`title.function`},keywords:i,contains:[{className:`params`,begin:/\(/,end:/\)/,keywords:i,relevance:0,contains:[a,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,ct,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},ct,a]}}var dt=`[A-Za-z$_][0-9A-Za-z$_]*`,ft=`as.in.of.if.for.while.finally.var.new.function.do.return.void.else.break.catch.instanceof.with.throw.case.default.try.switch.continue.typeof.delete.let.yield.const.class.debugger.async.await.static.import.from.export.extends.using`.split(`.`),pt=[`true`,`false`,`null`,`undefined`,`NaN`,`Infinity`],mt=`Object.Function.Boolean.Symbol.Math.Date.Number.BigInt.String.RegExp.Array.Float32Array.Float64Array.Int8Array.Uint8Array.Uint8ClampedArray.Int16Array.Int32Array.Uint16Array.Uint32Array.BigInt64Array.BigUint64Array.Set.Map.WeakSet.WeakMap.ArrayBuffer.SharedArrayBuffer.Atomics.DataView.JSON.Promise.Generator.GeneratorFunction.AsyncFunction.Reflect.Proxy.Intl.WebAssembly`.split(`.`),ht=[`Error`,`EvalError`,`InternalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`],gt=[`setInterval`,`setTimeout`,`clearInterval`,`clearTimeout`,`require`,`exports`,`eval`,`isFinite`,`isNaN`,`parseFloat`,`parseInt`,`decodeURI`,`decodeURIComponent`,`encodeURI`,`encodeURIComponent`,`escape`,`unescape`],_t=[`arguments`,`this`,`super`,`console`,`window`,`document`,`localStorage`,`sessionStorage`,`module`,`global`],vt=[].concat(gt,mt,ht);function yt(e){let t=e.regex,n=(e,{after:t})=>{let n=`</`+e[0].slice(1);return e.input.indexOf(n,t)!==-1},r=dt,i={begin:`<>`,end:`</>`},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{let r=e[0].length+e.index,i=e.input[r];if(i===`<`||i===`,`){t.ignoreMatch();return}i===`>`&&(n(e,{after:r})||t.ignoreMatch());let a,o=e.input.substring(r);if(a=o.match(/^\s*=/)){t.ignoreMatch();return}if((a=o.match(/^\s+extends\s+/))&&a.index===0){t.ignoreMatch();return}}},s={$pattern:dt,keyword:ft,literal:pt,built_in:vt,"variable.language":_t},c=`[0-9](_?[0-9])*`,l=`\\.(${c})`,u=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,d={className:`number`,variants:[{begin:`(\\b(${u})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:`\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b`},{begin:`\\b0[bB][0-1](_?[0-1])*n?\\b`},{begin:`\\b0[oO][0-7](_?[0-7])*n?\\b`},{begin:`\\b0[0-7]+n?\\b`}],relevance:0},f={className:`subst`,begin:`\\$\\{`,end:`\\}`,keywords:s,contains:[]},p={begin:".?html`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`xml`}},m={begin:".?css`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`css`}},h={begin:".?gql`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`graphql`}},g={className:`string`,begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,f]},_={className:`comment`,variants:[e.COMMENT(/\/\*\*(?!\/)/,`\\*/`,{relevance:0,contains:[{begin:`(?=@[A-Za-z]+)`,relevance:0,contains:[{className:`doctag`,begin:`@[A-Za-z]+`},{className:`type`,begin:`\\{`,end:`\\}`,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:`variable`,begin:`[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)`,endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},v=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,{match:/\$\d+/},d];f.contains=v.concat({begin:/\{/,end:/\}/,keywords:s,contains:[`self`].concat(v)});let y=[].concat(_,f.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:[`self`].concat(y)}]),x={className:`params`,begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},S={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,`(`,t.concat(/\./,r),`)*`)],scope:{1:`keyword`,3:`title.class`,5:`keyword`,7:`title.class.inherited`}},{match:[/class/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}}]},C={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:`title.class`,keywords:{_:[...mt,...ht]}},w={label:`use_strict`,className:`meta`,relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},T={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:`keyword`,3:`title.function`},label:`func.def`,contains:[x],illegal:/%/},E={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:`variable.constant`};function D(e){return t.concat(`(?!`,e.join(`|`),`)`)}let O={match:t.concat(/\b/,D([...gt,`super`,`import`].map(e=>`${e}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:`title.function`,relevance:0},k={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:`prototype`,className:`property`,relevance:0},A={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:`keyword`,3:`title.function`},contains:[{begin:/\(\)/},x]},j=`(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|`+e.UNDERSCORE_IDENT_RE+`)\\s*=>`,M={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(j)],keywords:`async`,className:{1:`keyword`,3:`title.function`},contains:[x]};return{name:`JavaScript`,aliases:[`js`,`jsx`,`mjs`,`cjs`],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:C},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:`shebang`,binary:`node`,relevance:5}),w,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,_,{match:/\$\d+/},d,C,{scope:`attr`,match:r+t.lookahead(`:`),relevance:0},M,{begin:`(`+e.RE_STARTERS_RE+`|\\b(case|return|throw)\\b)\\s*`,keywords:`return throw case`,relevance:0,contains:[_,e.REGEXP_MODE,{className:`function`,begin:j,returnBegin:!0,end:`\\s*=>`,contains:[{className:`params`,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:i.begin,end:i.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:`xml`,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[`self`]}]}]},T,{beginKeywords:`while if switch catch for`},{begin:`\\b(?!function)`+e.UNDERSCORE_IDENT_RE+`\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{`,returnBegin:!0,label:`func.def`,contains:[x,e.inherit(e.TITLE_MODE,{begin:r,className:`title.function`})]},{match:/\.\.\./,relevance:0},k,{match:`\\$[A-Za-z$_][0-9A-Za-z$_]*`,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:`title.function`},contains:[x]},O,E,S,A,{match:/\$[(.]/}]}}var Y=`[0-9](_*[0-9])*`,bt=`\\.(${Y})`,xt=`[0-9a-fA-F](_*[0-9a-fA-F])*`,St={className:`number`,variants:[{begin:`(\\b(${Y})((${bt})|\\.)?|(${bt}))[eE][+-]?(${Y})[fFdD]?\\b`},{begin:`\\b(${Y})((${bt})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${bt})[fFdD]?\\b`},{begin:`\\b(${Y})[fFdD]\\b`},{begin:`\\b0[xX]((${xt})\\.?|(${xt})?\\.(${xt}))[pP][+-]?(${Y})[fFdD]?\\b`},{begin:`\\b(0|[1-9](_*[0-9])*)[lL]?\\b`},{begin:`\\b0[xX](${xt})[lL]?\\b`},{begin:`\\b0(_*[0-7])*[lL]?\\b`},{begin:`\\b0[bB][01](_*[01])*[lL]?\\b`}],relevance:0};function Ct(e){let t={keyword:`abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual`,built_in:`Byte Short Char Int Long Boolean Float Double Void Unit Nothing`,literal:`true false null`},n={className:`keyword`,begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:`symbol`,begin:/@\w+/}]}},r={className:`symbol`,begin:e.UNDERSCORE_IDENT_RE+`@`},i={className:`subst`,begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},a={className:`variable`,begin:`\\$`+e.UNDERSCORE_IDENT_RE},o={className:`string`,variants:[{begin:`"""`,end:`"""(?=[^"])`,contains:[a,i]},{begin:`'`,end:`'`,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:`"`,end:`"`,illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,a,i]}]};i.contains.push(o);let s={className:`meta`,begin:`@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*`+e.UNDERSCORE_IDENT_RE+`)?`},c={className:`meta`,begin:`@`+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(o,{className:`string`}),`self`]}]},l=St,u=e.COMMENT(`/\\*`,`\\*/`,{contains:[e.C_BLOCK_COMMENT_MODE]}),d={variants:[{className:`type`,begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},f=d;return f.variants[1].contains=[d],d.variants[1].contains=[f],{name:`Kotlin`,aliases:[`kt`,`kts`],keywords:t,contains:[e.COMMENT(`/\\*\\*`,`\\*/`,{relevance:0,contains:[{className:`doctag`,begin:`@[A-Za-z]+`}]}),e.C_LINE_COMMENT_MODE,u,n,r,s,c,{className:`function`,beginKeywords:`fun`,end:`[(]|$`,returnBegin:!0,excludeEnd:!0,keywords:t,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+`\\s*\\(`,returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:`type`,begin:/</,end:/>/,keywords:`reified`,relevance:0},{className:`params`,begin:/\(/,end:/\)/,endsParent:!0,keywords:t,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,u],relevance:0},e.C_LINE_COMMENT_MODE,u,s,c,o,e.C_NUMBER_MODE]},u]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:`title.class`},keywords:`class interface trait`,end:/[:\{(]|$/,excludeEnd:!0,illegal:`extends implements`,contains:[{beginKeywords:`public protected internal private constructor`},e.UNDERSCORE_TITLE_MODE,{className:`type`,begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:`type`,begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},s,c]},o,{className:`meta`,begin:`^#!/usr/bin/env`,end:`$`,illegal:`
|
|
1093
|
+
`},l]}}function wt(e){let t=e.regex,n=/(?![A-Za-z0-9])(?![$])/,r=t.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,n),i=t.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,n),a=t.concat(/[A-Z]+/,n),o={scope:`variable`,match:`\\$+`+r},s={scope:`meta`,variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},c={scope:`subst`,variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},l=e.inherit(e.APOS_STRING_MODE,{illegal:null}),u=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(c)}),d={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(c),"on:begin":(e,t)=>{t.data._beginMatch=e[1]||e[2]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}},f=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),p=`[
|
|
1094
|
+
]`,m={scope:`string`,variants:[u,l,d,f]},h={scope:`number`,variants:[{begin:`\\b0[bB][01]+(?:_[01]+)*\\b`},{begin:`\\b0[oO][0-7]+(?:_[0-7]+)*\\b`},{begin:`\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b`},{begin:`(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?`}],relevance:0},g=[`false`,`null`,`true`],_=`__CLASS__.__DIR__.__FILE__.__FUNCTION__.__COMPILER_HALT_OFFSET__.__LINE__.__METHOD__.__NAMESPACE__.__TRAIT__.die.echo.exit.include.include_once.print.require.require_once.array.abstract.and.as.binary.bool.boolean.break.callable.case.catch.class.clone.const.continue.declare.default.do.double.else.elseif.empty.enddeclare.endfor.endforeach.endif.endswitch.endwhile.enum.eval.extends.final.finally.float.for.foreach.from.global.goto.if.implements.instanceof.insteadof.int.integer.interface.isset.iterable.list.match|0.mixed.new.never.object.or.private.protected.public.readonly.real.return.string.switch.throw.trait.try.unset.use.var.void.while.xor.yield`.split(`.`),v=`Error|0.AppendIterator.ArgumentCountError.ArithmeticError.ArrayIterator.ArrayObject.AssertionError.BadFunctionCallException.BadMethodCallException.CachingIterator.CallbackFilterIterator.CompileError.Countable.DirectoryIterator.DivisionByZeroError.DomainException.EmptyIterator.ErrorException.Exception.FilesystemIterator.FilterIterator.GlobIterator.InfiniteIterator.InvalidArgumentException.IteratorIterator.LengthException.LimitIterator.LogicException.MultipleIterator.NoRewindIterator.OutOfBoundsException.OutOfRangeException.OuterIterator.OverflowException.ParentIterator.ParseError.RangeException.RecursiveArrayIterator.RecursiveCachingIterator.RecursiveCallbackFilterIterator.RecursiveDirectoryIterator.RecursiveFilterIterator.RecursiveIterator.RecursiveIteratorIterator.RecursiveRegexIterator.RecursiveTreeIterator.RegexIterator.RuntimeException.SeekableIterator.SplDoublyLinkedList.SplFileInfo.SplFileObject.SplFixedArray.SplHeap.SplMaxHeap.SplMinHeap.SplObjectStorage.SplObserver.SplPriorityQueue.SplQueue.SplStack.SplSubject.SplTempFileObject.TypeError.UnderflowException.UnexpectedValueException.UnhandledMatchError.ArrayAccess.BackedEnum.Closure.Fiber.Generator.Iterator.IteratorAggregate.Serializable.Stringable.Throwable.Traversable.UnitEnum.WeakReference.WeakMap.Directory.__PHP_Incomplete_Class.parent.php_user_filter.self.static.stdClass`.split(`.`),y={keyword:_,literal:(e=>{let t=[];return e.forEach(e=>{t.push(e),e.toLowerCase()===e?t.push(e.toUpperCase()):t.push(e.toLowerCase())}),t})(g),built_in:v},b=e=>e.map(e=>e.replace(/\|\d+$/,``)),x={variants:[{match:[/new/,t.concat(p,`+`),t.concat(`(?!`,b(v).join(`\\b|`),`\\b)`),i],scope:{1:`keyword`,4:`title.class`}}]},S=t.concat(r,`\\b(?!\\()`),C={variants:[{match:[t.concat(/::/,t.lookahead(/(?!class\b)/)),S],scope:{2:`variable.constant`}},{match:[/::/,/class/],scope:{2:`variable.language`}},{match:[i,t.concat(/::/,t.lookahead(/(?!class\b)/)),S],scope:{1:`title.class`,3:`variable.constant`}},{match:[i,t.concat(`::`,t.lookahead(/(?!class\b)/))],scope:{1:`title.class`}},{match:[i,/::/,/class/],scope:{1:`title.class`,3:`variable.language`}}]},w={scope:`attr`,match:t.concat(r,t.lookahead(`:`),t.lookahead(/(?!::)/))},T={relevance:0,begin:/\(/,end:/\)/,keywords:y,contains:[w,o,C,e.C_BLOCK_COMMENT_MODE,m,h,x]},E={relevance:0,match:[/\b/,t.concat(`(?!fn\\b|function\\b|`,b(_).join(`\\b|`),`|`,b(v).join(`\\b|`),`\\b)`),r,t.concat(p,`*`),t.lookahead(/(?=\()/)],scope:{3:`title.function.invoke`},contains:[T]};T.contains.push(E);let D=[w,C,e.C_BLOCK_COMMENT_MODE,m,h,x],O={begin:t.concat(/#\[\s*\\?/,t.either(i,a)),beginScope:`meta`,end:/]/,endScope:`meta`,keywords:{literal:g,keyword:[`new`,`array`]},contains:[{begin:/\[/,end:/]/,keywords:{literal:g,keyword:[`new`,`array`]},contains:[`self`,...D]},...D,{scope:`meta`,variants:[{match:i},{match:a}]}]};return{case_insensitive:!1,keywords:y,contains:[O,e.HASH_COMMENT_MODE,e.COMMENT(`//`,`$`),e.COMMENT(`/\\*`,`\\*/`,{contains:[{scope:`doctag`,match:`@[A-Za-z]+`}]}),{match:/__halt_compiler\(\);/,keywords:`__halt_compiler`,starts:{scope:`comment`,end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:`meta`,endsParent:!0}]}},s,{scope:`variable.language`,match:/\$this\b/},o,E,C,{match:[/const/,/\s/,r],scope:{1:`keyword`,3:`variable.constant`}},x,{scope:`function`,relevance:0,beginKeywords:`fn function`,end:/[;{]/,excludeEnd:!0,illegal:`[$%\\[]`,contains:[{beginKeywords:`use`},e.UNDERSCORE_TITLE_MODE,{begin:`=>`,endsParent:!0},{scope:`params`,begin:`\\(`,end:`\\)`,excludeBegin:!0,excludeEnd:!0,keywords:y,contains:[`self`,O,o,C,e.C_BLOCK_COMMENT_MODE,m,h]}]},{scope:`class`,variants:[{beginKeywords:`enum`,illegal:/[($"]/},{beginKeywords:`class interface trait`,illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:`extends implements`},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:`namespace`,relevance:0,end:`;`,illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:`title.class`})]},{beginKeywords:`use`,relevance:0,end:`;`,contains:[{match:/\b(as|const|function)\b/,scope:`keyword`},e.UNDERSCORE_TITLE_MODE]},m,h]}}function Tt(e){let t=e.regex,n=/[\p{XID_Start}_]\p{XID_Continue}*/u,r=`and.as.assert.async.await.break.case.class.continue.def.del.elif.else.except.finally.for.from.global.if.import.in.is.lambda.match.nonlocal|10.not.or.pass.raise.return.try.while.with.yield`.split(`.`),i={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:r,built_in:`__import__.abs.all.any.ascii.bin.bool.breakpoint.bytearray.bytes.callable.chr.classmethod.compile.complex.delattr.dict.dir.divmod.enumerate.eval.exec.filter.float.format.frozenset.getattr.globals.hasattr.hash.help.hex.id.input.int.isinstance.issubclass.iter.len.list.locals.map.max.memoryview.min.next.object.oct.open.ord.pow.print.property.range.repr.reversed.round.set.setattr.slice.sorted.staticmethod.str.sum.super.tuple.type.vars.zip`.split(`.`),literal:[`__debug__`,`Ellipsis`,`False`,`None`,`NotImplemented`,`True`],type:[`Any`,`Callable`,`Coroutine`,`Dict`,`List`,`Literal`,`Generic`,`Optional`,`Sequence`,`Set`,`Tuple`,`Type`,`Union`]},a={className:`meta`,begin:/^(>>>|\.\.\.) /},o={className:`subst`,begin:/\{/,end:/\}/,keywords:i,illegal:/#/},s={begin:/\{\{/,relevance:0},c={className:`string`,contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,a,s,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,a,s,o]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,s,o]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,s,o]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},l=`[0-9](_?[0-9])*`,u=`(\\b(${l}))?\\.(${l})|\\b(${l})\\.`,d=`\\b|${r.join(`|`)}`,f={className:`number`,relevance:0,variants:[{begin:`(\\b(${l})|(${u}))[eE][+-]?(${l})[jJ]?(?=${d})`},{begin:`(${u})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${l})[jJ](?=${d})`}]},p={className:`comment`,begin:t.lookahead(/# type:/),end:/$/,keywords:i,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={className:`params`,variants:[{className:``,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:i,contains:[`self`,a,f,c,e.HASH_COMMENT_MODE]}]};return o.contains=[c,f,a],{name:`Python`,aliases:[`py`,`gyp`,`ipython`],unicodeRegex:!0,keywords:i,illegal:/(<\/|\?)|=>/,contains:[a,f,{scope:`variable.language`,match:/\bself\b/},{beginKeywords:`if`,relevance:0},{match:/\bor\b/,scope:`keyword`},c,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,n],scope:{1:`keyword`,3:`title.function`},contains:[m]},{variants:[{match:[/\bclass/,/\s+/,n,/\s*/,/\(\s*/,n,/\s*\)/]},{match:[/\bclass/,/\s+/,n]}],scope:{1:`keyword`,3:`title.class`,6:`title.class.inherited`}},{className:`meta`,begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[f,m,c]}]}}function Et(e){let t=e.regex,n="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",r=t.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=t.concat(r,/(::\w+)*/),a={"variable.constant":[`__FILE__`,`__LINE__`,`__ENCODING__`],"variable.language":[`self`,`super`],keyword:`alias.and.begin.BEGIN.break.case.class.defined.do.else.elsif.end.END.ensure.for.if.in.module.next.not.or.redo.require.rescue.retry.return.then.undef.unless.until.when.while.yield.include.extend.prepend.public.private.protected.raise.throw`.split(`.`),built_in:[`proc`,`lambda`,`attr_accessor`,`attr_reader`,`attr_writer`,`define_method`,`private_constant`,`module_function`],literal:[`true`,`false`,`nil`]},o={className:`doctag`,begin:`@[A-Za-z]+`},s={begin:`#<`,end:`>`},c=[e.COMMENT(`#`,`$`,{contains:[o]}),e.COMMENT(`^=begin`,`^=end`,{contains:[o],relevance:10}),e.COMMENT(`^__END__`,e.MATCH_NOTHING_RE)],l={className:`subst`,begin:/#\{/,end:/\}/,keywords:a},u={className:`string`,contains:[e.BACKSLASH_ESCAPE,l],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:t.concat(/<<[-~]?'?/,t.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,l]})]}]},d=`[0-9](_?[0-9])*`,f={className:`number`,relevance:0,variants:[{begin:`\\b([1-9](_?[0-9])*|0)(\\.(${d}))?([eE][+-]?(${d})|r)?i?\\b`},{begin:`\\b0[dD][0-9](_?[0-9])*r?i?\\b`},{begin:`\\b0[bB][0-1](_?[0-1])*r?i?\\b`},{begin:`\\b0[oO][0-7](_?[0-7])*r?i?\\b`},{begin:`\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b`},{begin:`\\b0(_?[0-7])+r?i?\\b`}]},p={variants:[{match:/\(\)/},{className:`params`,begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:a}]},m=[u,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{match:[/\b(class|module)\s+/,i]}],scope:{2:`title.class`,4:`title.class.inherited`},keywords:a},{match:[/(include|extend)\s+/,i],scope:{2:`title.class`},keywords:a},{relevance:0,match:[i,/\.new[. (]/],scope:{1:`title.class`}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:`variable.constant`},{relevance:0,match:r,scope:`title.class`},{match:[/def/,/\s+/,n],scope:{1:`keyword`,3:`title.function`},contains:[p]},{begin:e.IDENT_RE+`::`},{className:`symbol`,begin:e.UNDERSCORE_IDENT_RE+`(!|\\?)?:`,relevance:0},{className:`symbol`,begin:`:(?!\\s)`,contains:[u,{begin:n}],relevance:0},f,{className:`variable`,begin:`(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])`},{className:`params`,begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:a},{begin:`(`+e.RE_STARTERS_RE+`|unless)\\s*`,keywords:`unless`,contains:[{className:`regexp`,contains:[e.BACKSLASH_ESCAPE,l],illegal:/\n/,variants:[{begin:`/`,end:`/[a-z]*`},{begin:/%r\{/,end:/\}[a-z]*/},{begin:`%r\\(`,end:`\\)[a-z]*`},{begin:`%r!`,end:`![a-z]*`},{begin:`%r\\[`,end:`\\][a-z]*`}]}].concat(s,c),relevance:0}].concat(s,c);l.contains=m,p.contains=m;let h=[{begin:/^\s*=>/,starts:{end:`$`,contains:m}},{className:`meta.prompt`,begin:`^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])`,starts:{end:`$`,keywords:a,contains:m}}];return c.unshift(s),{name:`Ruby`,aliases:[`rb`,`gemspec`,`podspec`,`thor`,`irb`],keywords:a,illegal:/\/\*/,contains:[e.SHEBANG({binary:`ruby`})].concat(h,c,m)}}function Dt(e){let t=e.regex,n=/(r#)?/,r=t.concat(n,e.UNDERSCORE_IDENT_RE),i=t.concat(n,e.IDENT_RE),a={className:`title.function.invoke`,relevance:0,begin:t.concat(/\b/,/(?!let|for|while|if|else|match\b)/,i,t.lookahead(/\s*\(/))},o=`abstract.as.async.await.become.box.break.const.continue.crate.do.dyn.else.enum.extern.false.final.fn.for.if.impl.in.let.loop.macro.match.mod.move.mut.override.priv.pub.ref.return.self.Self.static.struct.super.trait.true.try.type.typeof.union.unsafe.unsized.use.virtual.where.while.yield`.split(`.`),s=[`true`,`false`,`Some`,`None`,`Ok`,`Err`],c=`drop .Copy.Send.Sized.Sync.Drop.Fn.FnMut.FnOnce.ToOwned.Clone.Debug.PartialEq.PartialOrd.Eq.Ord.AsRef.AsMut.Into.From.Default.Iterator.Extend.IntoIterator.DoubleEndedIterator.ExactSizeIterator.SliceConcatExt.ToString.assert!.assert_eq!.bitflags!.bytes!.cfg!.col!.concat!.concat_idents!.debug_assert!.debug_assert_eq!.env!.eprintln!.panic!.file!.format!.format_args!.include_bytes!.include_str!.line!.local_data_key!.module_path!.option_env!.print!.println!.select!.stringify!.try!.unimplemented!.unreachable!.vec!.write!.writeln!.macro_rules!.assert_ne!.debug_assert_ne!`.split(`.`),l=[`i8`,`i16`,`i32`,`i64`,`i128`,`isize`,`u8`,`u16`,`u32`,`u64`,`u128`,`usize`,`f32`,`f64`,`str`,`char`,`bool`,`Box`,`Option`,`Result`,`String`,`Vec`];return{name:`Rust`,aliases:[`rs`],keywords:{$pattern:e.IDENT_RE+`!?`,type:l,keyword:o,literal:s,built_in:c},illegal:`</`,contains:[e.C_LINE_COMMENT_MODE,e.COMMENT(`/\\*`,`\\*/`,{contains:[`self`]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:`symbol`,begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:`string`,variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:`char.escape`,match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:`number`,variants:[{begin:`\\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?`},{begin:`\\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?`},{begin:`\\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?`},{begin:`\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?`}],relevance:0},{begin:[/fn/,/\s+/,r],className:{1:`keyword`,3:`title.function`}},{className:`meta`,begin:`#!?\\[`,end:`\\]`,contains:[{className:`string`,begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,r],className:{1:`keyword`,3:`keyword`,4:`variable`}},{begin:[/for/,/\s+/,r,/\s+/,/in/],className:{1:`keyword`,3:`variable`,5:`keyword`}},{begin:[/type/,/\s+/,r],className:{1:`keyword`,3:`title.class`}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,r],className:{1:`keyword`,3:`title.class`}},{begin:e.IDENT_RE+`::`,keywords:{keyword:`Self`,built_in:c,type:l}},{className:`punctuation`,begin:`->`},a]}}function Ot(e){return e?typeof e==`string`?e:e.source:null}function X(e){return Z(`(?=`,e,`)`)}function Z(...e){return e.map(e=>Ot(e)).join(``)}function kt(e){let t=e[e.length-1];return typeof t==`object`&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function Q(...e){return`(`+(kt(e).capture?``:`?:`)+e.map(e=>Ot(e)).join(`|`)+`)`}var At=e=>Z(/\b/,e,/\w$/.test(e)?/\b/:/\B/),jt=[`Protocol`,`Type`].map(At),Mt=[`init`,`self`].map(At),Nt=[`Any`,`Self`],Pt=[`actor`,`any`,`associatedtype`,`async`,`await`,/as\?/,/as!/,`as`,`borrowing`,`break`,`case`,`catch`,`class`,`consume`,`consuming`,`continue`,`convenience`,`copy`,`default`,`defer`,`deinit`,`didSet`,`distributed`,`do`,`dynamic`,`each`,`else`,`enum`,`extension`,`fallthrough`,/fileprivate\(set\)/,`fileprivate`,`final`,`for`,`func`,`get`,`guard`,`if`,`import`,`indirect`,`infix`,/init\?/,/init!/,`inout`,/internal\(set\)/,`internal`,`in`,`is`,`isolated`,`nonisolated`,`lazy`,`let`,`macro`,`mutating`,`nonmutating`,/open\(set\)/,`open`,`operator`,`optional`,`override`,`package`,`postfix`,`precedencegroup`,`prefix`,/private\(set\)/,`private`,`protocol`,/public\(set\)/,`public`,`repeat`,`required`,`rethrows`,`return`,`set`,`some`,`static`,`struct`,`subscript`,`super`,`switch`,`throws`,`throw`,/try\?/,/try!/,`try`,`typealias`,/unowned\(safe\)/,/unowned\(unsafe\)/,`unowned`,`var`,`weak`,`where`,`while`,`willSet`],Ft=[`false`,`nil`,`true`],It=[`assignment`,`associativity`,`higherThan`,`left`,`lowerThan`,`none`,`right`],Lt=[`#colorLiteral`,`#column`,`#dsohandle`,`#else`,`#elseif`,`#endif`,`#error`,`#file`,`#fileID`,`#fileLiteral`,`#filePath`,`#function`,`#if`,`#imageLiteral`,`#keyPath`,`#line`,`#selector`,`#sourceLocation`,`#warning`],Rt=`abs.all.any.assert.assertionFailure.debugPrint.dump.fatalError.getVaList.isKnownUniquelyReferenced.max.min.numericCast.pointwiseMax.pointwiseMin.precondition.preconditionFailure.print.readLine.repeatElement.sequence.stride.swap.swift_unboxFromSwiftValueWithType.transcode.type.unsafeBitCast.unsafeDowncast.withExtendedLifetime.withUnsafeMutablePointer.withUnsafePointer.withVaList.withoutActuallyEscaping.zip`.split(`.`),zt=Q(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Bt=Q(zt,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),Vt=Z(zt,Bt,`*`),Ht=Q(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Ut=Q(Ht,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),$=Z(Ht,Ut,`*`),Wt=Z(/[A-Z]/,Ut,`*`),Gt=[`attached`,`autoclosure`,Z(/convention\(/,Q(`swift`,`block`,`c`),/\)/),`discardableResult`,`dynamicCallable`,`dynamicMemberLookup`,`escaping`,`freestanding`,`frozen`,`GKInspectable`,`IBAction`,`IBDesignable`,`IBInspectable`,`IBOutlet`,`IBSegueAction`,`inlinable`,`main`,`nonobjc`,`NSApplicationMain`,`NSCopying`,`NSManaged`,Z(/objc\(/,$,/\)/),`objc`,`objcMembers`,`propertyWrapper`,`requires_stored_property_inits`,`resultBuilder`,`Sendable`,`testable`,`UIApplicationMain`,`unchecked`,`unknown`,`usableFromInline`,`warn_unqualified_access`],Kt=[`iOS`,`iOSApplicationExtension`,`macOS`,`macOSApplicationExtension`,`macCatalyst`,`macCatalystApplicationExtension`,`watchOS`,`watchOSApplicationExtension`,`tvOS`,`tvOSApplicationExtension`,`swift`];function qt(e){let t={match:/\s+/,relevance:0},n=e.COMMENT(`/\\*`,`\\*/`,{contains:[`self`]}),r=[e.C_LINE_COMMENT_MODE,n],i={match:[/\./,Q(...jt,...Mt)],className:{2:`keyword`}},a={match:Z(/\./,Q(...Pt)),relevance:0},o=Pt.filter(e=>typeof e==`string`).concat([`_|0`]),s={variants:[{className:`keyword`,match:Q(...Pt.filter(e=>typeof e!=`string`).concat(Nt).map(At),...Mt)}]},c={$pattern:Q(/\b\w+/,/#\w+/),keyword:o.concat(Lt),literal:Ft},l=[i,a,s],u=[{match:Z(/\./,Q(...Rt)),relevance:0},{className:`built_in`,match:Z(/\b/,Q(...Rt),/(?=\()/)}],d={match:/->/,relevance:0},f=[d,{className:`operator`,relevance:0,variants:[{match:Vt},{match:`\\.(\\.|${Bt})+`}]}],p=`([0-9]_*)+`,m=`([0-9a-fA-F]_*)+`,h={className:`number`,relevance:0,variants:[{match:`\\b(${p})(\\.(${p}))?([eE][+-]?(${p}))?\\b`},{match:`\\b0x(${m})(\\.(${m}))?([pP][+-]?(${p}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},g=(e=``)=>({className:`subst`,variants:[{match:Z(/\\/,e,/[0\\tnr"']/)},{match:Z(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),_=(e=``)=>({className:`subst`,match:Z(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),v=(e=``)=>({className:`subst`,label:`interpol`,begin:Z(/\\/,e,/\(/),end:/\)/}),y=(e=``)=>({begin:Z(e,/"""/),end:Z(/"""/,e),contains:[g(e),_(e),v(e)]}),b=(e=``)=>({begin:Z(e,/"/),end:Z(/"/,e),contains:[g(e),v(e)]}),x={className:`string`,variants:[y(),y(`#`),y(`##`),y(`###`),b(),b(`#`),b(`##`),b(`###`)]},S=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],C={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:S},w=e=>{let t=Z(e,/\//),n=Z(/\//,e);return{begin:t,end:n,contains:[...S,{scope:`comment`,begin:`#(?!.*${n})`,end:/$/}]}},T={scope:`regexp`,variants:[w(`###`),w(`##`),w(`#`),C]},E={match:Z(/`/,$,/`/)},D=[E,{className:`variable`,match:/\$\d+/},{className:`variable`,match:`\\$${Ut}+`}],O=[{match:/(@|#(un)?)available/,scope:`keyword`,starts:{contains:[{begin:/\(/,end:/\)/,keywords:Kt,contains:[...f,h,x]}]}},{scope:`keyword`,match:Z(/@/,Q(...Gt),X(Q(/\(/,/\s+/)))},{scope:`meta`,match:Z(/@/,$)}],k={match:X(/\b[A-Z]/),relevance:0,contains:[{className:`type`,match:Z(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Ut,`+`)},{className:`type`,match:Wt,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:Z(/\s+&\s+/,X(Wt)),relevance:0}]},A={begin:/</,end:/>/,keywords:c,contains:[...r,...l,...O,d,k]};k.contains.push(A);let j={begin:/\(/,end:/\)/,relevance:0,keywords:c,contains:[`self`,{match:Z($,/\s*:/),keywords:`_|0`,relevance:0},...r,T,...l,...u,...f,h,x,...D,...O,k]},M={begin:/</,end:/>/,keywords:`repeat each`,contains:[...r,k]},N={begin:/\(/,end:/\)/,keywords:c,contains:[{begin:Q(X(Z($,/\s*:/)),X(Z($,/\s+/,$,/\s*:/))),end:/:/,relevance:0,contains:[{className:`keyword`,match:/\b_\b/},{className:`params`,match:$}]},...r,...l,...f,h,x,...O,k,j],endsParent:!0,illegal:/["']/},P={match:[/(func|macro)/,/\s+/,Q(E.match,$,Vt)],className:{1:`keyword`,3:`title.function`},contains:[M,N,t],illegal:[/\[/,/%/]},F={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:`keyword`},contains:[M,N,t],illegal:/\[|%/},I={match:[/operator/,/\s+/,Vt],className:{1:`keyword`,3:`title`}},L={begin:[/precedencegroup/,/\s+/,Wt],className:{1:`keyword`,3:`title`},contains:[k],keywords:[...It,...Ft],end:/}/},R={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:`keyword`,3:`keyword`,5:`title.function`}},z={match:[/class\b/,/\s+/,/var\b/],scope:{1:`keyword`,3:`keyword`}},B={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,$,/\s*/],beginScope:{1:`keyword`,3:`title.class`},keywords:c,contains:[M,...l,{begin:/:/,end:/\{/,keywords:c,contains:[{scope:`title.class.inherited`,match:Wt},...l],relevance:0}]};for(let e of x.variants){let t=e.contains.find(e=>e.label===`interpol`);t.keywords=c;let n=[...l,...u,...f,h,x,...D];t.contains=[...n,{begin:/\(/,end:/\)/,contains:[`self`,...n]}]}return{name:`Swift`,keywords:c,contains:[...r,P,F,R,z,B,I,L,{beginKeywords:`import`,end:/$/,contains:[...r],relevance:0},T,...l,...u,...f,h,x,...D,...O,k,j]}}var Jt=`[A-Za-z$_][0-9A-Za-z$_]*`,Yt=`as.in.of.if.for.while.finally.var.new.function.do.return.void.else.break.catch.instanceof.with.throw.case.default.try.switch.continue.typeof.delete.let.yield.const.class.debugger.async.await.static.import.from.export.extends.using`.split(`.`),Xt=[`true`,`false`,`null`,`undefined`,`NaN`,`Infinity`],Zt=`Object.Function.Boolean.Symbol.Math.Date.Number.BigInt.String.RegExp.Array.Float32Array.Float64Array.Int8Array.Uint8Array.Uint8ClampedArray.Int16Array.Int32Array.Uint16Array.Uint32Array.BigInt64Array.BigUint64Array.Set.Map.WeakSet.WeakMap.ArrayBuffer.SharedArrayBuffer.Atomics.DataView.JSON.Promise.Generator.GeneratorFunction.AsyncFunction.Reflect.Proxy.Intl.WebAssembly`.split(`.`),Qt=[`Error`,`EvalError`,`InternalError`,`RangeError`,`ReferenceError`,`SyntaxError`,`TypeError`,`URIError`],$t=[`setInterval`,`setTimeout`,`clearInterval`,`clearTimeout`,`require`,`exports`,`eval`,`isFinite`,`isNaN`,`parseFloat`,`parseInt`,`decodeURI`,`decodeURIComponent`,`encodeURI`,`encodeURIComponent`,`escape`,`unescape`],en=[`arguments`,`this`,`super`,`console`,`window`,`document`,`localStorage`,`sessionStorage`,`module`,`global`],tn=[].concat($t,Zt,Qt);function nn(e){let t=e.regex,n=(e,{after:t})=>{let n=`</`+e[0].slice(1);return e.input.indexOf(n,t)!==-1},r=Jt,i={begin:`<>`,end:`</>`},a=/<[A-Za-z0-9\\._:-]+\s*\/>/,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,t)=>{let r=e[0].length+e.index,i=e.input[r];if(i===`<`||i===`,`){t.ignoreMatch();return}i===`>`&&(n(e,{after:r})||t.ignoreMatch());let a,o=e.input.substring(r);if(a=o.match(/^\s*=/)){t.ignoreMatch();return}if((a=o.match(/^\s+extends\s+/))&&a.index===0){t.ignoreMatch();return}}},s={$pattern:Jt,keyword:Yt,literal:Xt,built_in:tn,"variable.language":en},c=`[0-9](_?[0-9])*`,l=`\\.(${c})`,u=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`,d={className:`number`,variants:[{begin:`(\\b(${u})((${l})|\\.)?|(${l}))[eE][+-]?(${c})\\b`},{begin:`\\b(${u})\\b((${l})\\b|\\.)?|(${l})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:`\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b`},{begin:`\\b0[bB][0-1](_?[0-1])*n?\\b`},{begin:`\\b0[oO][0-7](_?[0-7])*n?\\b`},{begin:`\\b0[0-7]+n?\\b`}],relevance:0},f={className:`subst`,begin:`\\$\\{`,end:`\\}`,keywords:s,contains:[]},p={begin:".?html`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`xml`}},m={begin:".?css`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`css`}},h={begin:".?gql`",end:``,starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,f],subLanguage:`graphql`}},g={className:`string`,begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,f]},_={className:`comment`,variants:[e.COMMENT(/\/\*\*(?!\/)/,`\\*/`,{relevance:0,contains:[{begin:`(?=@[A-Za-z]+)`,relevance:0,contains:[{className:`doctag`,begin:`@[A-Za-z]+`},{className:`type`,begin:`\\{`,end:`\\}`,excludeEnd:!0,excludeBegin:!0,relevance:0},{className:`variable`,begin:`[A-Za-z$_][0-9A-Za-z$_]*(?=\\s*(-)|$)`,endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},v=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,{match:/\$\d+/},d];f.contains=v.concat({begin:/\{/,end:/\}/,keywords:s,contains:[`self`].concat(v)});let y=[].concat(_,f.contains),b=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:s,contains:[`self`].concat(y)}]),x={className:`params`,begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b},S={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,`(`,t.concat(/\./,r),`)*`)],scope:{1:`keyword`,3:`title.class`,5:`keyword`,7:`title.class.inherited`}},{match:[/class/,/\s+/,r],scope:{1:`keyword`,3:`title.class`}}]},C={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:`title.class`,keywords:{_:[...Zt,...Qt]}},w={label:`use_strict`,className:`meta`,relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},T={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:`keyword`,3:`title.function`},label:`func.def`,contains:[x],illegal:/%/},E={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:`variable.constant`};function D(e){return t.concat(`(?!`,e.join(`|`),`)`)}let O={match:t.concat(/\b/,D([...$t,`super`,`import`].map(e=>`${e}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:`title.function`,relevance:0},k={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:`prototype`,className:`property`,relevance:0},A={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:`keyword`,3:`title.function`},contains:[{begin:/\(\)/},x]},j=`(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|`+e.UNDERSCORE_IDENT_RE+`)\\s*=>`,M={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(j)],keywords:`async`,className:{1:`keyword`,3:`title.function`},contains:[x]};return{name:`JavaScript`,aliases:[`js`,`jsx`,`mjs`,`cjs`],keywords:s,exports:{PARAMS_CONTAINS:b,CLASS_REFERENCE:C},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:`shebang`,binary:`node`,relevance:5}),w,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,m,h,g,_,{match:/\$\d+/},d,C,{scope:`attr`,match:r+t.lookahead(`:`),relevance:0},M,{begin:`(`+e.RE_STARTERS_RE+`|\\b(case|return|throw)\\b)\\s*`,keywords:`return throw case`,relevance:0,contains:[_,e.REGEXP_MODE,{className:`function`,begin:j,returnBegin:!0,end:`\\s*=>`,contains:[{className:`params`,variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,contains:b}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:i.begin,end:i.end},{match:a},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,end:o.end}],subLanguage:`xml`,contains:[{begin:o.begin,end:o.end,skip:!0,contains:[`self`]}]}]},T,{beginKeywords:`while if switch catch for`},{begin:`\\b(?!function)`+e.UNDERSCORE_IDENT_RE+`\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{`,returnBegin:!0,label:`func.def`,contains:[x,e.inherit(e.TITLE_MODE,{begin:r,className:`title.function`})]},{match:/\.\.\./,relevance:0},k,{match:`\\$[A-Za-z$_][0-9A-Za-z$_]*`,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:`title.function`},contains:[x]},O,E,S,A,{match:/\$[(.]/}]}}function rn(e){let t=e.regex,n=nn(e),r=Jt,i=[`any`,`void`,`number`,`boolean`,`string`,`object`,`never`,`symbol`,`bigint`,`unknown`],a={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:`keyword`,3:`title.class`}},o={beginKeywords:`interface`,end:/\{/,excludeEnd:!0,keywords:{keyword:`interface extends`,built_in:i},contains:[n.exports.CLASS_REFERENCE]},s={className:`meta`,relevance:10,begin:/^\s*['"]use strict['"]/},c={$pattern:Jt,keyword:Yt.concat([`type`,`interface`,`public`,`private`,`protected`,`implements`,`declare`,`abstract`,`readonly`,`enum`,`override`,`satisfies`]),literal:Xt,built_in:tn.concat(i),"variable.language":en},l={className:`meta`,begin:`@[A-Za-z$_][0-9A-Za-z$_]*`},u=(e,t,n)=>{let r=e.contains.findIndex(e=>e.label===t);if(r===-1)throw Error(`can not find mode to replace`);e.contains.splice(r,1,n)};Object.assign(n.keywords,c),n.exports.PARAMS_CONTAINS.push(l);let d=n.contains.find(e=>e.scope===`attr`),f=Object.assign({},d,{match:t.concat(r,t.lookahead(/\s*\?:/))});n.exports.PARAMS_CONTAINS.push([n.exports.CLASS_REFERENCE,d,f]),n.contains=n.contains.concat([l,a,o,f]),u(n,`shebang`,e.SHEBANG()),u(n,`use_strict`,s);let p=n.contains.find(e=>e.label===`func.def`);return p.relevance=0,Object.assign(n,{name:`TypeScript`,aliases:[`ts`,`tsx`,`mts`,`cts`]}),n}function an(e){let t=e.regex,n=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),r=/[\p{L}0-9._:-]+/u,i={className:`symbol`,begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:`keyword`,begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},o=e.inherit(a,{begin:/\(/,end:/\)/}),s=e.inherit(e.APOS_STRING_MODE,{className:`string`}),c=e.inherit(e.QUOTE_STRING_MODE,{className:`string`}),l={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:`attr`,begin:r,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:`string`,endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:`HTML, XML`,aliases:[`html`,`xhtml`,`rss`,`atom`,`xjb`,`xsd`,`xsl`,`plist`,`wsf`,`svg`],case_insensitive:!0,unicodeRegex:!0,contains:[{className:`meta`,begin:/<![a-z]/,end:/>/,relevance:10,contains:[a,c,s,o,{begin:/\[/,end:/\]/,contains:[{className:`meta`,begin:/<![a-z]/,end:/>/,contains:[a,o,c,s]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},i,{className:`meta`,end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[c]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:`tag`,begin:/<style(?=\s|>)/,end:/>/,keywords:{name:`style`},contains:[l],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:[`css`,`xml`]}},{className:`tag`,begin:/<script(?=\s|>)/,end:/>/,keywords:{name:`script`},contains:[l],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:[`javascript`,`handlebars`,`xml`]}},{className:`tag`,begin:/<>|<\/>/},{className:`tag`,begin:t.concat(/</,t.lookahead(t.concat(n,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:`name`,begin:n,relevance:0,starts:l}]},{className:`tag`,begin:t.concat(/<\//,t.lookahead(t.concat(n,/>/))),contains:[{className:`name`,begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}q.registerLanguage(`bash`,et),q.registerLanguage(`csharp`,tt),q.registerLanguage(`dart`,nt),q.registerLanguage(`go`,rt),q.registerLanguage(`groovy`,at),q.registerLanguage(`java`,ut),q.registerLanguage(`javascript`,yt),q.registerLanguage(`kotlin`,Ct),q.registerLanguage(`php`,wt),q.registerLanguage(`python`,Tt),q.registerLanguage(`ruby`,Et),q.registerLanguage(`rust`,Dt),q.registerLanguage(`swift`,qt),q.registerLanguage(`typescript`,rn),q.registerLanguage(`xml`,an);var on={gradle:`groovy`,js:`javascript`,jsx:`javascript`,rb:`ruby`,sh:`bash`,shell:`bash`,svelte:`xml`,ts:`typescript`,tsx:`typescript`,vue:`xml`};function sn(e,t){let n=on[t]??t;return q.getLanguage(n)?q.highlight(e,{language:n}).value:null}var cn={Android:Le,Go:Re,JavaScript:ze,"Node.js":Be,Python:Ve,Ruby:He,Svelte:Ue,Vue:We,Flutter:Ge,Java:Ke,".NET":qe,PHP:Je,React:Ye,Rust:Xe,Swift:Ze,"Next.js":Qe,"React Native":$e},ln=s(`pre`)(({theme:e})=>({backgroundColor:e.palette.background.elevation1,padding:e.spacing(2),borderRadius:e.shape.borderRadius,overflow:`auto`,fontSize:e.typography.body2.fontSize,wordBreak:`break-all`,whiteSpace:`pre-wrap`,position:`relative`,maxHeight:e.spacing(90),".hljs":{background:`transparent`,padding:0,color:e.palette.codeHighlighting.variable},".hljs-keyword":{color:e.palette.codeHighlighting.keyword},".hljs-selector-tag":{color:e.palette.codeHighlighting.selectorTag},".hljs-string, .hljs-doctag, .hljs-template-variable":{color:e.palette.codeHighlighting.string},".hljs-number":{color:e.palette.codeHighlighting.number},".hljs-literal":{color:e.palette.codeHighlighting.literal},".hljs-comment":{color:e.palette.codeHighlighting.comment,fontStyle:`italic`},".hljs-built_in":{color:e.palette.codeHighlighting.builtIn},".hljs-title, .hljs-title.function_":{color:e.palette.codeHighlighting.title},".hljs-title.class_":{color:e.palette.codeHighlighting.class_},".hljs-type":{color:e.palette.codeHighlighting.type},".hljs-attr":{color:e.palette.codeHighlighting.attr},".hljs-variable":{color:e.palette.codeHighlighting.variable},".hljs-name, .hljs-tag":{color:e.palette.codeHighlighting.tag},".hljs-meta":{color:e.palette.codeHighlighting.meta},".hljs-emphasis":{fontStyle:`italic`},".hljs-strong":{fontWeight:`bold`}})),un=s(l)(({theme:e})=>({position:`absolute`,top:e.spacing(1),right:e.spacing(1)})),dn=({language:e,html:t})=>{let n=(0,L.useRef)(null);return(0,L.useEffect)(()=>{n.current&&(n.current.innerHTML=t)},[t]),(0,R.jsx)(`code`,{ref:n,className:`hljs language-${e}`})},fn=({title:e,code:t,language:n})=>{let{setToastData:r}=v(),i=e=>()=>{(0,Ie.default)(e),r({type:`success`,text:`Copied to clipboard`})},a=sn(t,n);return(0,R.jsxs)(ln,{children:[a?(0,R.jsx)(dn,{language:n,html:a}):(0,R.jsx)(`code`,{children:t}),(0,R.jsx)(un,{title:e,arrow:!0,children:(0,R.jsx)(f,{onClick:i(t),size:`small`,children:(0,R.jsx)(k,{})})})]})},pn=({children:e,className:t})=>{let n=!!t,r=Array.isArray(e)?e[0]:e;return n&&typeof r==`string`?(0,R.jsx)(fn,{code:r,language:t?.replace(`language-`,``)??``,title:`Copy code`}):(0,R.jsx)(`code`,{className:t,children:e})},mn=s(`span`)(({theme:e})=>{let t=r`
|
|
1095
|
+
0% {
|
|
1096
|
+
box-shadow:
|
|
1097
|
+
0 0 0 0 ${i(e.palette.primary.main,.5)},
|
|
1098
|
+
0 0 0 0 ${i(e.palette.primary.main,.3)};
|
|
1099
|
+
}
|
|
1100
|
+
70% {
|
|
1101
|
+
box-shadow:
|
|
1102
|
+
0 0 0 6px ${i(e.palette.primary.main,0)},
|
|
1103
|
+
0 0 0 12px ${i(e.palette.primary.main,0)};
|
|
1104
|
+
}
|
|
1105
|
+
100% {
|
|
1106
|
+
box-shadow:
|
|
1107
|
+
0 0 0 0 ${i(e.palette.primary.main,0)},
|
|
1108
|
+
0 0 0 0 ${i(e.palette.primary.main,0)};
|
|
1109
|
+
}
|
|
1110
|
+
`;return{display:`flex`,alignItems:`center`,justifyContent:`center`,flexShrink:0,width:e.spacing(3),height:e.spacing(3),borderRadius:`50%`,backgroundColor:e.palette.primary.main,color:e.palette.common.white,animation:`${t} 1.8s ease-out infinite`,"@media (prefers-reduced-motion: reduce)":{animation:`none`}}}),hn=()=>(0,R.jsx)(mn,{children:(0,R.jsx)(I,{fontSize:`small`})}),gn=s(`div`)(({theme:e})=>({display:`flex`,flexDirection:`row`,gap:e.spacing(2),padding:e.spacing(2),fontSize:e.typography.body2.fontSize,borderRadius:e.shape.borderRadiusMedium,backgroundColor:e.palette.secondary.light,border:`1px solid ${e.palette.secondary.border}`})),_n=s(gn)(({theme:e})=>({backgroundColor:e.palette.success.light,border:`1px solid ${e.palette.success.border}`})),vn=s(`div`)(({theme:e})=>({marginLeft:e.spacing(1),marginTop:e.spacing(1)})),yn=s(j)(({theme:e})=>({marginLeft:e.spacing(1),marginTop:e.spacing(1),width:e.spacing(3),height:e.spacing(3),color:e.palette.success.main})),bn=s(p)(({theme:e})=>({marginTop:e.spacing(2),padding:e.spacing(2,3),"& .MuiAlert-message":{padding:0},"& .MuiAlert-icon":{marginRight:e.spacing(1)}})),xn=({sdkConnected:e,connectedTitle:t,connectedBody:n,waitingTitle:r,waitingBody:i,showTroubleshooting:a,troubleshootingText:o})=>e?(0,R.jsxs)(_n,{children:[(0,R.jsx)(`div`,{children:(0,R.jsx)(yn,{})}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`strong`,{children:t}),(0,R.jsx)(m,{variant:`body2`,color:`textSecondary`,children:n})]})]}):(0,R.jsxs)(gn,{children:[(0,R.jsx)(vn,{children:(0,R.jsx)(hn,{})}),(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`strong`,{children:r}),(0,R.jsx)(m,{variant:`body2`,color:`textSecondary`,children:i}),a&&(0,R.jsx)(bn,{severity:`warning`,children:o})]})]}),Sn=40,Cn=`md`,wn=s(_,{shouldForwardProp:e=>e!==`dialogMaxWidth`&&e!==`fullHeight`})(({theme:e,dialogMaxWidth:t=170,fullHeight:n})=>({"& .MuiDialog-paper":{borderRadius:e.shape.borderRadiusLarge,maxWidth:e.spacing(t),width:`100%`,...n&&{height:`100%`},overflow:`hidden`,display:`flex`,flexDirection:`column`,backgroundColor:e.palette.background.sidebar}})),Tn=s(`div`)(({theme:e})=>({display:`flex`,flexShrink:0,borderBottom:`1px solid ${e.palette.divider}`})),En=s(`div`)(({theme:e})=>({flex:1,display:`flex`,alignItems:`center`,justifyContent:`space-between`,backgroundColor:e.palette.background.paper,paddingRight:e.spacing(1.5),"& .closeButton":{[e.breakpoints.up(Cn)]:{display:`none`}}})),Dn=s(`h2`)(({theme:e})=>({margin:0,padding:e.spacing(1.5,3),fontWeight:e.typography.fontWeightBold,fontSize:e.typography.body1.fontSize,lineHeight:e.spacing(2.75)})),On=s(`div`)(({theme:e})=>({width:e.spacing(Sn),flexShrink:0,backgroundColor:e.palette.background.sidebar,color:e.palette.primary.contrastText,display:`flex`,alignItems:`center`,justifyContent:`flex-end`,paddingRight:e.spacing(1.5),[e.breakpoints.down(Cn)]:{display:`none`}})),kn=s(`div`)({display:`flex`,flex:1,overflow:`hidden`}),An=s(`div`)(({theme:e})=>({flex:1,overflowY:`auto`,backgroundColor:e.palette.background.paper})),jn=s(`aside`)(({theme:e})=>({width:e.spacing(Sn),flexShrink:0,backgroundColor:e.palette.background.sidebar,color:e.palette.primary.contrastText,[e.breakpoints.down(Cn)]:{display:`none`}})),Mn=({open:e,onClose:t,title:n,aside:r,children:i,maxWidth:a,fullHeight:o})=>(0,R.jsxs)(wn,{open:e,onClose:t,maxWidth:!1,dialogMaxWidth:a,fullHeight:o,children:[(0,R.jsxs)(Tn,{children:[(0,R.jsxs)(En,{children:[(0,R.jsx)(Dn,{children:n}),(0,R.jsx)(f,{size:`small`,className:`closeButton`,onClick:t,children:(0,R.jsx)(S,{})})]}),(0,R.jsx)(On,{children:(0,R.jsx)(f,{size:`small`,onClick:t,sx:{color:`inherit`},children:(0,R.jsx)(S,{})})})]}),(0,R.jsxs)(kn,{children:[(0,R.jsx)(An,{children:i}),(0,R.jsx)(jn,{children:r})]})]});export{cn as a,K as c,ue as d,te as f,z as g,B as h,pn as i,fe as l,V as m,xn as n,Fe as o,ee as p,hn as r,Pe as s,Mn as t,de as u};
|