@adonis-agora/flags 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/LICENSE +21 -0
- package/README.md +15 -2
- package/dist/assets/spa/assets/index-DdmFo7xr.js +12 -0
- package/dist/assets/spa/assets/index-DdmFo7xr.js.map +1 -0
- package/dist/assets/spa/assets/index-DhkcP3Cw.css +2 -0
- package/dist/assets/spa/index.html +26 -0
- package/dist/commands/flags_list.d.ts +9 -0
- package/dist/commands/flags_list.d.ts.map +1 -0
- package/dist/commands/flags_list.js +51 -0
- package/dist/commands/flags_list.js.map +1 -0
- package/dist/commands/flags_ops.d.ts +60 -0
- package/dist/commands/flags_ops.d.ts.map +1 -0
- package/dist/commands/flags_ops.js +253 -0
- package/dist/commands/flags_ops.js.map +1 -0
- package/dist/commands/flags_refs.d.ts +15 -0
- package/dist/commands/flags_refs.d.ts.map +1 -0
- package/dist/commands/flags_refs.js +90 -0
- package/dist/commands/flags_refs.js.map +1 -0
- package/dist/commands/flags_set.d.ts +19 -0
- package/dist/commands/flags_set.d.ts.map +1 -0
- package/dist/commands/flags_set.js +97 -0
- package/dist/commands/flags_set.js.map +1 -0
- package/dist/commands/flags_types.d.ts +18 -0
- package/dist/commands/flags_types.d.ts.map +1 -0
- package/dist/commands/flags_types.js +94 -0
- package/dist/commands/flags_types.js.map +1 -0
- package/dist/commands/flags_work.d.ts +16 -0
- package/dist/commands/flags_work.d.ts.map +1 -0
- package/dist/commands/flags_work.js +71 -0
- package/dist/commands/flags_work.js.map +1 -0
- package/dist/commands/main.d.ts +15 -0
- package/dist/commands/main.d.ts.map +1 -0
- package/dist/commands/main.js +30 -0
- package/dist/commands/main.js.map +1 -0
- package/dist/commands/shared.d.ts +21 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +70 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/configure.d.ts +11 -0
- package/dist/configure.d.ts.map +1 -0
- package/dist/configure.js +32 -0
- package/dist/configure.js.map +1 -0
- package/dist/providers/dashboard_provider.d.ts +65 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -0
- package/dist/providers/dashboard_provider.js +340 -0
- package/dist/providers/dashboard_provider.js.map +1 -0
- package/dist/providers/flags_provider.d.ts +30 -0
- package/dist/providers/flags_provider.d.ts.map +1 -0
- package/dist/providers/flags_provider.js +184 -0
- package/dist/providers/flags_provider.js.map +1 -0
- package/dist/services/main.d.ts +17 -0
- package/dist/services/main.d.ts.map +1 -0
- package/dist/services/main.js +20 -0
- package/dist/services/main.js.map +1 -0
- package/dist/src/admin.d.ts +189 -0
- package/dist/src/admin.d.ts.map +1 -0
- package/dist/src/admin.js +539 -0
- package/dist/src/admin.js.map +1 -0
- package/dist/src/analytics/backend.d.ts +18 -0
- package/dist/src/analytics/backend.d.ts.map +1 -0
- package/dist/src/analytics/backend.js +25 -0
- package/dist/src/analytics/backend.js.map +1 -0
- package/dist/src/analytics/clickhouse_backend.d.ts +16 -0
- package/dist/src/analytics/clickhouse_backend.d.ts.map +1 -0
- package/dist/src/analytics/clickhouse_backend.js +48 -0
- package/dist/src/analytics/clickhouse_backend.js.map +1 -0
- package/dist/src/analytics/duckdb.d.ts +39 -0
- package/dist/src/analytics/duckdb.d.ts.map +1 -0
- package/dist/src/analytics/duckdb.js +117 -0
- package/dist/src/analytics/duckdb.js.map +1 -0
- package/dist/src/analytics/lucid_backend.d.ts +16 -0
- package/dist/src/analytics/lucid_backend.d.ts.map +1 -0
- package/dist/src/analytics/lucid_backend.js +45 -0
- package/dist/src/analytics/lucid_backend.js.map +1 -0
- package/dist/src/analytics/metrics.d.ts +50 -0
- package/dist/src/analytics/metrics.d.ts.map +1 -0
- package/dist/src/analytics/metrics.js +42 -0
- package/dist/src/analytics/metrics.js.map +1 -0
- package/dist/src/analytics/results.d.ts +80 -0
- package/dist/src/analytics/results.d.ts.map +1 -0
- package/dist/src/analytics/results.js +143 -0
- package/dist/src/analytics/results.js.map +1 -0
- package/dist/src/dashboard/access_denied_page.d.ts +100 -0
- package/dist/src/dashboard/access_denied_page.d.ts.map +1 -0
- package/dist/src/dashboard/access_denied_page.js +262 -0
- package/dist/src/dashboard/access_denied_page.js.map +1 -0
- package/dist/src/dashboard/actor.d.ts +12 -0
- package/dist/src/dashboard/actor.d.ts.map +1 -0
- package/dist/src/dashboard/actor.js +33 -0
- package/dist/src/dashboard/actor.js.map +1 -0
- package/dist/src/dashboard/authorize_decision.d.ts +48 -0
- package/dist/src/dashboard/authorize_decision.d.ts.map +1 -0
- package/dist/src/dashboard/authorize_decision.js +44 -0
- package/dist/src/dashboard/authorize_decision.js.map +1 -0
- package/dist/src/dashboard/console_authorize.d.ts +77 -0
- package/dist/src/dashboard/console_authorize.d.ts.map +1 -0
- package/dist/src/dashboard/console_authorize.js +104 -0
- package/dist/src/dashboard/console_authorize.js.map +1 -0
- package/dist/src/dashboard/define_config.d.ts +71 -0
- package/dist/src/dashboard/define_config.d.ts.map +1 -0
- package/dist/src/dashboard/define_config.js +18 -0
- package/dist/src/dashboard/define_config.js.map +1 -0
- package/dist/src/dashboard/handlers.d.ts +172 -0
- package/dist/src/dashboard/handlers.d.ts.map +1 -0
- package/dist/src/dashboard/handlers.js +949 -0
- package/dist/src/dashboard/handlers.js.map +1 -0
- package/dist/src/dashboard/index.d.ts +15 -0
- package/dist/src/dashboard/index.d.ts.map +1 -0
- package/dist/src/dashboard/index.js +10 -0
- package/dist/src/dashboard/index.js.map +1 -0
- package/dist/src/dashboard/shape.d.ts +12 -0
- package/dist/src/dashboard/shape.d.ts.map +1 -0
- package/dist/src/dashboard/shape.js +232 -0
- package/dist/src/dashboard/shape.js.map +1 -0
- package/dist/src/dashboard/spa.d.ts +34 -0
- package/dist/src/dashboard/spa.d.ts.map +1 -0
- package/dist/src/dashboard/spa.js +50 -0
- package/dist/src/dashboard/spa.js.map +1 -0
- package/dist/src/declare.d.ts +85 -0
- package/dist/src/declare.d.ts.map +1 -0
- package/dist/src/declare.js +62 -0
- package/dist/src/declare.js.map +1 -0
- package/dist/src/define_config.d.ts +256 -0
- package/dist/src/define_config.d.ts.map +1 -0
- package/dist/src/define_config.js +90 -0
- package/dist/src/define_config.js.map +1 -0
- package/dist/src/durable.d.ts +29 -0
- package/dist/src/durable.d.ts.map +1 -0
- package/dist/src/durable.js +55 -0
- package/dist/src/durable.js.map +1 -0
- package/dist/src/enrichers.d.ts +51 -0
- package/dist/src/enrichers.d.ts.map +1 -0
- package/dist/src/enrichers.js +105 -0
- package/dist/src/enrichers.js.map +1 -0
- package/dist/src/events/buffer.d.ts +38 -0
- package/dist/src/events/buffer.d.ts.map +1 -0
- package/dist/src/events/buffer.js +86 -0
- package/dist/src/events/buffer.js.map +1 -0
- package/dist/src/events/event.d.ts +42 -0
- package/dist/src/events/event.d.ts.map +1 -0
- package/dist/src/events/event.js +82 -0
- package/dist/src/events/event.js.map +1 -0
- package/dist/src/http/browser.d.ts +33 -0
- package/dist/src/http/browser.d.ts.map +1 -0
- package/dist/src/http/browser.js +81 -0
- package/dist/src/http/browser.js.map +1 -0
- package/dist/src/http/browser_api.d.ts +48 -0
- package/dist/src/http/browser_api.d.ts.map +1 -0
- package/dist/src/http/browser_api.js +273 -0
- package/dist/src/http/browser_api.js.map +1 -0
- package/dist/src/http/browser_tokens.d.ts +27 -0
- package/dist/src/http/browser_tokens.d.ts.map +1 -0
- package/dist/src/http/browser_tokens.js +48 -0
- package/dist/src/http/browser_tokens.js.map +1 -0
- package/dist/src/http/control_plane.d.ts +58 -0
- package/dist/src/http/control_plane.d.ts.map +1 -0
- package/dist/src/http/control_plane.js +318 -0
- package/dist/src/http/control_plane.js.map +1 -0
- package/dist/src/http/csrf.d.ts +22 -0
- package/dist/src/http/csrf.d.ts.map +1 -0
- package/dist/src/http/csrf.js +24 -0
- package/dist/src/http/csrf.js.map +1 -0
- package/dist/src/http/edge_tag.d.ts +55 -0
- package/dist/src/http/edge_tag.d.ts.map +1 -0
- package/dist/src/http/edge_tag.js +45 -0
- package/dist/src/http/edge_tag.js.map +1 -0
- package/dist/src/http/flag_middleware.d.ts +27 -0
- package/dist/src/http/flag_middleware.d.ts.map +1 -0
- package/dist/src/http/flag_middleware.js +30 -0
- package/dist/src/http/flag_middleware.js.map +1 -0
- package/dist/src/http/flags_middleware.d.ts +20 -0
- package/dist/src/http/flags_middleware.d.ts.map +1 -0
- package/dist/src/http/flags_middleware.js +20 -0
- package/dist/src/http/flags_middleware.js.map +1 -0
- package/dist/src/http/subject_resolver.d.ts +45 -0
- package/dist/src/http/subject_resolver.d.ts.map +1 -0
- package/dist/src/http/subject_resolver.js +93 -0
- package/dist/src/http/subject_resolver.js.map +1 -0
- package/dist/src/identity.d.ts +82 -0
- package/dist/src/identity.d.ts.map +1 -0
- package/dist/src/identity.js +100 -0
- package/dist/src/identity.js.map +1 -0
- package/dist/src/index.d.ts +41 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +34 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/manager.d.ts +154 -0
- package/dist/src/manager.d.ts.map +1 -0
- package/dist/src/manager.js +333 -0
- package/dist/src/manager.js.map +1 -0
- package/dist/src/openfeature/provider.d.ts +36 -0
- package/dist/src/openfeature/provider.d.ts.map +1 -0
- package/dist/src/openfeature/provider.js +82 -0
- package/dist/src/openfeature/provider.js.map +1 -0
- package/dist/src/relay/relay.d.ts +36 -0
- package/dist/src/relay/relay.d.ts.map +1 -0
- package/dist/src/relay/relay.js +73 -0
- package/dist/src/relay/relay.js.map +1 -0
- package/dist/src/relay/results_cache.d.ts +20 -0
- package/dist/src/relay/results_cache.d.ts.map +1 -0
- package/dist/src/relay/results_cache.js +31 -0
- package/dist/src/relay/results_cache.js.map +1 -0
- package/dist/src/relay/worker.d.ts +66 -0
- package/dist/src/relay/worker.d.ts.map +1 -0
- package/dist/src/relay/worker.js +177 -0
- package/dist/src/relay/worker.js.map +1 -0
- package/dist/src/ruleset_source.d.ts +73 -0
- package/dist/src/ruleset_source.d.ts.map +1 -0
- package/dist/src/ruleset_source.js +128 -0
- package/dist/src/ruleset_source.js.map +1 -0
- package/dist/src/runtime.d.ts +70 -0
- package/dist/src/runtime.d.ts.map +1 -0
- package/dist/src/runtime.js +301 -0
- package/dist/src/runtime.js.map +1 -0
- package/dist/src/schema.d.ts +39 -0
- package/dist/src/schema.d.ts.map +1 -0
- package/dist/src/schema.js +311 -0
- package/dist/src/schema.js.map +1 -0
- package/dist/src/services/accessor.d.ts +5 -0
- package/dist/src/services/accessor.d.ts.map +1 -0
- package/dist/src/services/accessor.js +20 -0
- package/dist/src/services/accessor.js.map +1 -0
- package/dist/src/sinks/clickhouse.d.ts +41 -0
- package/dist/src/sinks/clickhouse.d.ts.map +1 -0
- package/dist/src/sinks/clickhouse.js +117 -0
- package/dist/src/sinks/clickhouse.js.map +1 -0
- package/dist/src/sinks/lucid_sink.d.ts +25 -0
- package/dist/src/sinks/lucid_sink.d.ts.map +1 -0
- package/dist/src/sinks/lucid_sink.js +87 -0
- package/dist/src/sinks/lucid_sink.js.map +1 -0
- package/dist/src/sinks/parquet_sink.d.ts +41 -0
- package/dist/src/sinks/parquet_sink.d.ts.map +1 -0
- package/dist/src/sinks/parquet_sink.js +140 -0
- package/dist/src/sinks/parquet_sink.js.map +1 -0
- package/dist/src/sinks/posthog_sink.d.ts +29 -0
- package/dist/src/sinks/posthog_sink.d.ts.map +1 -0
- package/dist/src/sinks/posthog_sink.js +65 -0
- package/dist/src/sinks/posthog_sink.js.map +1 -0
- package/dist/src/sinks/sink.d.ts +36 -0
- package/dist/src/sinks/sink.d.ts.map +1 -0
- package/dist/src/sinks/sink.js +36 -0
- package/dist/src/sinks/sink.js.map +1 -0
- package/dist/src/sql.d.ts +33 -0
- package/dist/src/sql.d.ts.map +1 -0
- package/dist/src/sql.js +66 -0
- package/dist/src/sql.js.map +1 -0
- package/dist/src/stores/lucid_store.d.ts +55 -0
- package/dist/src/stores/lucid_store.d.ts.map +1 -0
- package/dist/src/stores/lucid_store.js +412 -0
- package/dist/src/stores/lucid_store.js.map +1 -0
- package/dist/src/stores/memory_store.d.ts +38 -0
- package/dist/src/stores/memory_store.d.ts.map +1 -0
- package/dist/src/stores/memory_store.js +166 -0
- package/dist/src/stores/memory_store.js.map +1 -0
- package/dist/src/stores/store.d.ts +166 -0
- package/dist/src/stores/store.d.ts.map +1 -0
- package/dist/src/stores/store.js +67 -0
- package/dist/src/stores/store.js.map +1 -0
- package/dist/src/subject.d.ts +25 -0
- package/dist/src/subject.d.ts.map +1 -0
- package/dist/src/subject.js +30 -0
- package/dist/src/subject.js.map +1 -0
- package/dist/src/testing/index.d.ts +31 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +60 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/topology/browser_token.d.ts +48 -0
- package/dist/src/topology/browser_token.d.ts.map +1 -0
- package/dist/src/topology/browser_token.js +128 -0
- package/dist/src/topology/browser_token.js.map +1 -0
- package/dist/src/topology/remote_source.d.ts +39 -0
- package/dist/src/topology/remote_source.d.ts.map +1 -0
- package/dist/src/topology/remote_source.js +184 -0
- package/dist/src/topology/remote_source.js.map +1 -0
- package/dist/src/topology/token.d.ts +36 -0
- package/dist/src/topology/token.d.ts.map +1 -0
- package/dist/src/topology/token.js +68 -0
- package/dist/src/topology/token.js.map +1 -0
- package/dist/src/topology/verify.d.ts +88 -0
- package/dist/src/topology/verify.d.ts.map +1 -0
- package/dist/src/topology/verify.js +128 -0
- package/dist/src/topology/verify.js.map +1 -0
- package/dist/src/transports/db_transport.d.ts +55 -0
- package/dist/src/transports/db_transport.d.ts.map +1 -0
- package/dist/src/transports/db_transport.js +202 -0
- package/dist/src/transports/db_transport.js.map +1 -0
- package/dist/src/transports/http_transport.d.ts +30 -0
- package/dist/src/transports/http_transport.d.ts.map +1 -0
- package/dist/src/transports/http_transport.js +51 -0
- package/dist/src/transports/http_transport.js.map +1 -0
- package/dist/src/transports/memory_transport.d.ts +29 -0
- package/dist/src/transports/memory_transport.d.ts.map +1 -0
- package/dist/src/transports/memory_transport.js +91 -0
- package/dist/src/transports/memory_transport.js.map +1 -0
- package/dist/src/transports/redis_transport.d.ts +50 -0
- package/dist/src/transports/redis_transport.d.ts.map +1 -0
- package/dist/src/transports/redis_transport.js +107 -0
- package/dist/src/transports/redis_transport.js.map +1 -0
- package/dist/src/transports/transport.d.ts +62 -0
- package/dist/src/transports/transport.d.ts.map +1 -0
- package/dist/src/transports/transport.js +2 -0
- package/dist/src/transports/transport.js.map +1 -0
- package/dist/src/types.d.ts +30 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/usage.d.ts +18 -0
- package/dist/src/usage.d.ts.map +1 -0
- package/dist/src/usage.js +52 -0
- package/dist/src/usage.js.map +1 -0
- package/dist/stubs/config/flags.stub +50 -0
- package/dist/stubs/config/flags_dashboard.stub +35 -0
- package/dist/stubs/database/migrations/create_flags_tables.stub +27 -0
- package/dist/stubs/main.d.ts +3 -0
- package/dist/stubs/main.d.ts.map +1 -0
- package/dist/stubs/main.js +9 -0
- package/dist/stubs/main.js.map +1 -0
- package/package.json +178 -3
- package/skills/flags-basics/SKILL.md +142 -0
- package/skills/flags-deployment/SKILL.md +125 -0
- package/skills/flags-experiments/SKILL.md +99 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.3.5 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-outline-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--color-amber-300:oklch(87.9% .169 91.605);--color-emerald-300:oklch(84.5% .143 164.978);--color-sky-300:oklch(82.8% .111 230.318);--color-sky-500:oklch(68.5% .169 237.323);--color-indigo-300:oklch(78.5% .115 274.713);--color-indigo-500:oklch(58.5% .233 277.117);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-500:oklch(64.5% .246 16.439);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-800:oklch(27.4% .006 286.033);--spacing:.25rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-sm:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:"JetBrains Mono", ui-monospace, SFMono-Regular, monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.top-0{top:0}.top-0\.5{top:calc(var(--spacing) * .5)}.left-0\.5{left:calc(var(--spacing) * .5)}.left-3\.5{left:calc(var(--spacing) * 3.5)}.z-10{z-index:10}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-full{height:100%}.max-h-64{max-height:calc(var(--spacing) * 64)}.min-h-full{min-height:100%}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-7{width:calc(var(--spacing) * 7)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-full{width:100%}.max-w-6xl{max-width:var(--container-6xl)}.max-w-full{max-width:100%}.min-w-0{min-width:0}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-line-soft>:not(:last-child)){border-color:var(--line-soft)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-full{border-radius:2147483647px}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-background{border-color:var(--bg)}.border-bad\/40{border-color:var(--bad)}@supports (color:color-mix(in lab, red, red)){.border-bad\/40{border-color:color-mix(in oklab, var(--bad) 40%, transparent)}}.border-brand\/45{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.border-brand\/45{border-color:color-mix(in oklab, var(--accent) 45%, transparent)}}.border-good\/50{border-color:var(--good)}@supports (color:color-mix(in lab, red, red)){.border-good\/50{border-color:color-mix(in oklab, var(--good) 50%, transparent)}}.border-indigo-500\/30{border-color:#625fff4d}@supports (color:color-mix(in lab, red, red)){.border-indigo-500\/30{border-color:color-mix(in oklab, var(--color-indigo-500) 30%, transparent)}}.border-line{border-color:var(--line)}.border-line-soft{border-color:var(--line-soft)}.border-rose-500\/40{border-color:#ff235766}@supports (color:color-mix(in lab, red, red)){.border-rose-500\/40{border-color:color-mix(in oklab, var(--color-rose-500) 40%, transparent)}}.border-sky-500\/30{border-color:#00a5ef4d}@supports (color:color-mix(in lab, red, red)){.border-sky-500\/30{border-color:color-mix(in oklab, var(--color-sky-500) 30%, transparent)}}.border-transparent{border-color:#0000}.border-warn\/60{border-color:var(--warn)}@supports (color:color-mix(in lab, red, red)){.border-warn\/60{border-color:color-mix(in oklab, var(--warn) 60%, transparent)}}.bg-background{background-color:var(--bg)}.bg-bad\/10{background-color:var(--bad)}@supports (color:color-mix(in lab, red, red)){.bg-bad\/10{background-color:color-mix(in oklab, var(--bad) 10%, transparent)}}.bg-brand\/15{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.bg-brand\/15{background-color:color-mix(in oklab, var(--accent) 15%, transparent)}}.bg-good,.bg-good\/30{background-color:var(--good)}@supports (color:color-mix(in lab, red, red)){.bg-good\/30{background-color:color-mix(in oklab, var(--good) 30%, transparent)}}.bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab, red, red)){.bg-indigo-500\/10{background-color:color-mix(in oklab, var(--color-indigo-500) 10%, transparent)}}.bg-panel{background-color:var(--panel)}.bg-panel-2,.bg-panel-2\/40{background-color:var(--panel-2)}@supports (color:color-mix(in lab, red, red)){.bg-panel-2\/40{background-color:color-mix(in oklab, var(--panel-2) 40%, transparent)}}.bg-rose-500\/10{background-color:#ff23571a}@supports (color:color-mix(in lab, red, red)){.bg-rose-500\/10{background-color:color-mix(in oklab, var(--color-rose-500) 10%, transparent)}}.bg-sky-500\/10{background-color:#00a5ef1a}@supports (color:color-mix(in lab, red, red)){.bg-sky-500\/10{background-color:color-mix(in oklab, var(--color-sky-500) 10%, transparent)}}.bg-zinc-500{background-color:var(--color-zinc-500)}.bg-zinc-800\/40{background-color:#27272a66}@supports (color:color-mix(in lab, red, red)){.bg-zinc-800\/40{background-color:color-mix(in oklab, var(--color-zinc-800) 40%, transparent)}}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.px-0{padding-inline:0}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.text-amber-300{color:var(--color-amber-300)}.text-brand{color:var(--accent)}.text-emerald-300{color:var(--color-emerald-300)}.text-indigo-300{color:var(--color-indigo-300)}.text-rose-200{color:var(--color-rose-200)}.text-rose-300{color:var(--color-rose-300)}.text-rose-300\/80{color:#ffa2aecc}@supports (color:color-mix(in lab, red, red)){.text-rose-300\/80{color:color-mix(in oklab, var(--color-rose-300) 80%, transparent)}}.text-sky-300{color:var(--color-sky-300)}.text-zinc-100{color:var(--color-zinc-100)}.text-zinc-200{color:var(--color-zinc-200)}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.text-zinc-600{color:var(--color-zinc-600)}.uppercase{text-transform:uppercase}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}:is(:where(.peer):focus-visible~.peer-focus-visible\:ring-1){--tw-ring-shadow:var(--tw-ring-inset, ) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(:where(.peer):focus-visible~.peer-focus-visible\:ring-brand){--tw-ring-color:var(--accent)}:is(:where(.peer):disabled~.peer-disabled\:opacity-40){opacity:.4}.placeholder\:text-zinc-600::placeholder{color:var(--color-zinc-600)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:bg-panel-2:hover,.hover\:bg-panel-2\/60:hover{background-color:var(--panel-2)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-panel-2\/60:hover{background-color:color-mix(in oklab, var(--panel-2) 60%, transparent)}}.hover\:text-brand:hover{color:var(--accent)}.hover\:text-zinc-200:hover{color:var(--color-zinc-200)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-brand\/60:focus{border-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.focus\:border-brand\/60:focus{border-color:color-mix(in oklab, var(--accent) 60%, transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (hover:hover){.enabled\:hover\:border-zinc-600:enabled:hover{border-color:var(--color-zinc-600)}.enabled\:hover\:bg-bad\/20:enabled:hover{background-color:var(--bad)}@supports (color:color-mix(in lab, red, red)){.enabled\:hover\:bg-bad\/20:enabled:hover{background-color:color-mix(in oklab, var(--bad) 20%, transparent)}}.enabled\:hover\:bg-brand\/25:enabled:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.enabled\:hover\:bg-brand\/25:enabled:hover{background-color:color-mix(in oklab, var(--accent) 25%, transparent)}}.enabled\:hover\:bg-panel-2:enabled:hover{background-color:var(--panel-2)}.enabled\:hover\:text-zinc-200:enabled:hover{color:var(--color-zinc-200)}}.disabled\:opacity-40:disabled{opacity:.4}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:px-4{padding-inline:calc(var(--spacing) * 4)}.sm\:py-6{padding-block:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}}:root{--bg:#09090b;--panel:#0c0c0f;--panel-2:#101017;--line:#1c1c22;--line-soft:#16161a;--text:#e7e7ea;--muted:#76767f;--good:#34d399;--warn:#fbbf24;--bad:#f87171;--live:#60a5fa;--accent:#818cf8}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Space Grotesk,ui-sans-serif,system-ui,sans-serif}.app-bg{z-index:0;pointer-events:none;background-image:radial-gradient(900px 400px at 78% -8%, var(--accent), transparent 70%), linear-gradient(to right, var(--line-soft) 1px, transparent 1px), linear-gradient(to bottom, var(--line-soft) 1px, transparent 1px);position:fixed;inset:0}@supports (color:color-mix(in lab, red, red)){.app-bg{background-image:radial-gradient(900px 400px at 78% -8%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 70%), linear-gradient(to right, var(--line-soft) 1px, transparent 1px), linear-gradient(to bottom, var(--line-soft) 1px, transparent 1px)}}.app-bg{opacity:.5;background-size:100% 100%,44px 44px,44px 44px;-webkit-mask-image:linear-gradient(#000,#000 60%,#0000);mask-image:linear-gradient(#000,#000 60%,#0000)}.mono{font-family:JetBrains Mono,ui-monospace,monospace}.tnum{font-variant-numeric:tabular-nums}.s-on,.s-applied,.s-done,.s-better{color:var(--good)}.s-off,.s-rejected,.s-failed,.s-worse{color:var(--bad)}.s-pending,.s-running{color:var(--warn)}.s-default,.s-cancelled,.s-inconclusive{color:#71717a}.s-approved{color:var(--live)}.s-unknown{color:var(--muted)}.dot{background:currentColor;border-radius:999px;width:7px;height:7px;box-shadow:0 0 0 3px}@supports (color:color-mix(in lab, red, red)){.dot{box-shadow:0 0 0 3px color-mix(in srgb, currentColor 18%, transparent)}}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.rise{animation:.32s cubic-bezier(.2,.7,.2,1) both rise}.scroll-x{scrollbar-width:thin;scrollbar-color:#26262c transparent;-webkit-overflow-scrolling:touch}.scroll-x::-webkit-scrollbar{height:4px}.scroll-x::-webkit-scrollbar-thumb{border:0}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border:3px solid var(--bg);background:#26262c;border-radius:999px}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<meta name="robots" content="noindex, nofollow" />
|
|
7
|
+
<!-- Inline, so the browser's automatic /favicon.ico probe is not a 404 in the host app's log:
|
|
8
|
+
the provider serves only `<path>` and `<path>/assets/:file`, nothing at the site root. -->
|
|
9
|
+
<link
|
|
10
|
+
rel="icon"
|
|
11
|
+
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect width='24' height='24' rx='5' fill='%2309090b'/%3E%3Cpath d='M7 19V5m0 1h9l-2 3 2 3H7' fill='none' stroke='%23818cf8' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"
|
|
12
|
+
/>
|
|
13
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
14
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
15
|
+
<link
|
|
16
|
+
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=Space+Grotesk:wght@400;500;600;700&display=swap"
|
|
17
|
+
rel="stylesheet"
|
|
18
|
+
/>
|
|
19
|
+
<title>flags · console</title>
|
|
20
|
+
<script type="module" crossorigin src="/__FLAGS_DASHBOARD__/assets/index-DdmFo7xr.js"></script>
|
|
21
|
+
<link rel="stylesheet" crossorigin href="/__FLAGS_DASHBOARD__/assets/index-DhkcP3Cw.css">
|
|
22
|
+
</head>
|
|
23
|
+
<body>
|
|
24
|
+
<div id="root"></div>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FlagsCommand } from './shared.js';
|
|
2
|
+
export default class FlagsList extends FlagsCommand {
|
|
3
|
+
static commandName: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
env?: string;
|
|
6
|
+
json?: boolean;
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=flags_list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags_list.d.ts","sourceRoot":"","sources":["../../commands/flags_list.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,YAAY;IACjD,OAAgB,WAAW,SAAgB;IAC3C,OAAgB,WAAW,SAAqE;IAGxF,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,IAAI,CAAC,EAAE,OAAO,CAAC;IAER,GAAG,kBAyBjB;CACF"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { flags } from '@adonisjs/core/ace';
|
|
11
|
+
import { describeServing, FlagsCommand } from './shared.js';
|
|
12
|
+
export default class FlagsList extends FlagsCommand {
|
|
13
|
+
static commandName = 'flags:list';
|
|
14
|
+
static description = 'List flags: declared type and default, and what each one serves';
|
|
15
|
+
async run() {
|
|
16
|
+
const runtime = await this.runtime();
|
|
17
|
+
const environment = this.env ?? runtime.manager.environment;
|
|
18
|
+
const ruleset = await runtime.store.readRuleset(environment);
|
|
19
|
+
const declarations = runtime.manager.declarations;
|
|
20
|
+
const keys = [...new Set([...Object.keys(declarations), ...Object.keys(ruleset.flags)])].sort();
|
|
21
|
+
const rows = keys.map((key) => {
|
|
22
|
+
const declaration = declarations[key];
|
|
23
|
+
return {
|
|
24
|
+
key,
|
|
25
|
+
type: declaration?.type ?? 'undeclared',
|
|
26
|
+
default: declaration ? JSON.stringify(declaration.default) : '-',
|
|
27
|
+
serving: describeServing(ruleset.flags[key]),
|
|
28
|
+
owner: declaration?.owner ?? '',
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
if (this.json) {
|
|
32
|
+
this.logger.log(JSON.stringify(rows, null, 2));
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
this.logger.info(`environment ${environment}, ruleset version ${ruleset.version}`);
|
|
36
|
+
const table = this.ui.table();
|
|
37
|
+
table.head(['Flag', 'Type', 'Default', 'Serving', 'Owner']);
|
|
38
|
+
for (const row of rows)
|
|
39
|
+
table.row([row.key, row.type, row.default, row.serving, row.owner]);
|
|
40
|
+
table.render();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
__decorate([
|
|
44
|
+
flags.string({ description: 'Environment (default: the configured one)' }),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], FlagsList.prototype, "env", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
flags.boolean({ description: 'Print JSON' }),
|
|
49
|
+
__metadata("design:type", Boolean)
|
|
50
|
+
], FlagsList.prototype, "json", void 0);
|
|
51
|
+
//# sourceMappingURL=flags_list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags_list.js","sourceRoot":"","sources":["../../commands/flags_list.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,YAAY;IACjD,MAAM,CAAU,WAAW,GAAG,YAAY,CAAC;IAC3C,MAAM,CAAU,WAAW,GAAG,iEAAiE,CAAC;IAQvF,KAAK,CAAC,GAAG;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QAC5D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;QAClD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChG,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5B,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YACtC,OAAO;gBACL,GAAG;gBACH,IAAI,EAAE,WAAW,EAAE,IAAI,IAAI,YAAY;gBACvC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG;gBAChE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5C,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;aAChC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,WAAW,qBAAqB,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,KAAK,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;CACF;AA/BS;IADP,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC;;sCACtD;AAGb;IADP,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;;uCACtB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { FlagsCommand } from './shared.js';
|
|
2
|
+
export declare class FlagsExport extends FlagsCommand {
|
|
3
|
+
static commandName: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
env?: string;
|
|
6
|
+
out?: string;
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export declare class FlagsImport extends FlagsCommand {
|
|
10
|
+
static commandName: string;
|
|
11
|
+
static description: string;
|
|
12
|
+
file: string;
|
|
13
|
+
env?: string;
|
|
14
|
+
note?: string;
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare class FlagsPromote extends FlagsCommand {
|
|
18
|
+
static commandName: string;
|
|
19
|
+
static description: string;
|
|
20
|
+
from: string;
|
|
21
|
+
to: string;
|
|
22
|
+
note?: string;
|
|
23
|
+
run(): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
export declare class FlagsStale extends FlagsCommand {
|
|
26
|
+
static commandName: string;
|
|
27
|
+
static description: string;
|
|
28
|
+
unusedDays?: number;
|
|
29
|
+
staticDays?: number;
|
|
30
|
+
run(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare class FlagsResults extends FlagsCommand {
|
|
33
|
+
static commandName: string;
|
|
34
|
+
static description: string;
|
|
35
|
+
experiment: string;
|
|
36
|
+
fresh?: boolean;
|
|
37
|
+
run(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export declare class FlagsForget extends FlagsCommand {
|
|
40
|
+
static commandName: string;
|
|
41
|
+
static description: string;
|
|
42
|
+
subject: string;
|
|
43
|
+
run(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
export declare class FlagsReplay extends FlagsCommand {
|
|
46
|
+
static commandName: string;
|
|
47
|
+
static description: string;
|
|
48
|
+
sink: string;
|
|
49
|
+
run(): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
export declare class FlagsRequests extends FlagsCommand {
|
|
52
|
+
static commandName: string;
|
|
53
|
+
static description: string;
|
|
54
|
+
action?: string;
|
|
55
|
+
id?: string;
|
|
56
|
+
note?: string;
|
|
57
|
+
as?: string;
|
|
58
|
+
run(): Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=flags_ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags_ops.d.ts","sourceRoot":"","sources":["../../commands/flags_ops.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,YAAY,EAAE,MAAM,aAAa,CAAC;AAErD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAgB,WAAW,SAAkB;IAC7C,OAAgB,WAAW,SAA2C;IAG9D,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,GAAG,CAAC,EAAE,MAAM,CAAC;IAEN,GAAG,kBAUjB;CACF;AAED,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAgB,WAAW,SAAkB;IAC7C,OAAgB,WAAW,SACwD;IAG3E,IAAI,EAAE,MAAM,CAAC;IAGb,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,IAAI,CAAC,EAAE,MAAM,CAAC;IAEP,GAAG,kBAUjB;CACF;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAgB,WAAW,SAAmB;IAC9C,OAAgB,WAAW,SAAsE;IAGzF,IAAI,EAAE,MAAM,CAAC;IAGb,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,CAAC,EAAE,MAAM,CAAC;IAEP,GAAG,kBAMjB;CACF;AAED,qBAAa,UAAW,SAAQ,YAAY;IAC1C,OAAgB,WAAW,SAAiB;IAC5C,OAAgB,WAAW,SACsD;IAGzE,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEb,GAAG,kBAejB;CACF;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAgB,WAAW,SAAmB;IAC9C,OAAgB,WAAW,SAAsD;IAGzE,UAAU,EAAE,MAAM,CAAC;IAGnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAET,GAAG,kBAkCjB;CACF;AAED,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAgB,WAAW,SAAkB;IAC7C,OAAgB,WAAW,SACiD;IAGpE,OAAO,EAAE,MAAM,CAAC;IAET,GAAG,kBAIjB;CACF;AAED,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAgB,WAAW,SAAkB;IAC7C,OAAgB,WAAW,SACsD;IAGzE,IAAI,EAAE,MAAM,CAAC;IAEN,GAAG,kBASjB;CACF;AAED,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAgB,WAAW,SAAoB;IAC/C,OAAgB,WAAW,SAAiD;IAGpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,EAAE,CAAC,EAAE,MAAM,CAAC;IAGZ,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,EAAE,CAAC,EAAE,MAAM,CAAC;IAEL,GAAG,kBAuCjB;CACF"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
11
|
+
import { args, flags } from '@adonisjs/core/ace';
|
|
12
|
+
import { cliActor, FlagsCommand } from './shared.js';
|
|
13
|
+
export class FlagsExport extends FlagsCommand {
|
|
14
|
+
static commandName = 'flags:export';
|
|
15
|
+
static description = 'Export an environment ruleset as JSON';
|
|
16
|
+
async run() {
|
|
17
|
+
const runtime = await this.runtime();
|
|
18
|
+
const ruleset = await runtime.admin.exportRuleset(this.env ?? runtime.manager.environment);
|
|
19
|
+
const json = JSON.stringify(ruleset, null, 2);
|
|
20
|
+
if (this.out) {
|
|
21
|
+
await writeFile(this.out, `${json}\n`);
|
|
22
|
+
this.logger.success(`ruleset version ${ruleset.version} written to ${this.out}`);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.logger.log(json);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
__decorate([
|
|
30
|
+
flags.string({ description: 'Environment (default: the configured one)' }),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], FlagsExport.prototype, "env", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
flags.string({ description: 'Write to this file instead of stdout' }),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], FlagsExport.prototype, "out", void 0);
|
|
37
|
+
export class FlagsImport extends FlagsCommand {
|
|
38
|
+
static commandName = 'flags:import';
|
|
39
|
+
static description = 'Replace an environment ruleset with a JSON export (validated; approvals apply)';
|
|
40
|
+
async run() {
|
|
41
|
+
const runtime = await this.runtime();
|
|
42
|
+
const ruleset = JSON.parse(await readFile(this.file, 'utf8'));
|
|
43
|
+
const result = await runtime.admin.importRuleset(ruleset, cliActor(), {
|
|
44
|
+
...(this.env ? { environment: this.env } : {}),
|
|
45
|
+
...(this.note ? { note: this.note } : {}),
|
|
46
|
+
});
|
|
47
|
+
if (result.status === 'applied')
|
|
48
|
+
this.logger.success(`imported (ruleset version ${result.version})`);
|
|
49
|
+
else
|
|
50
|
+
this.logger.warning(`approval required: change request ${result.request.id}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
__decorate([
|
|
54
|
+
args.string({ description: 'JSON file' }),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], FlagsImport.prototype, "file", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
flags.string({ description: 'Environment (default: the configured one)' }),
|
|
59
|
+
__metadata("design:type", String)
|
|
60
|
+
], FlagsImport.prototype, "env", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
flags.string({ description: 'Why' }),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], FlagsImport.prototype, "note", void 0);
|
|
65
|
+
export class FlagsPromote extends FlagsCommand {
|
|
66
|
+
static commandName = 'flags:promote';
|
|
67
|
+
static description = 'Copy one environment ruleset over another (staging → production)';
|
|
68
|
+
async run() {
|
|
69
|
+
const runtime = await this.runtime();
|
|
70
|
+
const result = await runtime.admin.promote(this.from, this.to, cliActor(), this.note);
|
|
71
|
+
if (result.status === 'applied')
|
|
72
|
+
this.logger.success(`${this.from} → ${this.to} (version ${result.version})`);
|
|
73
|
+
else
|
|
74
|
+
this.logger.warning(`approval required: change request ${result.request.id}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
__decorate([
|
|
78
|
+
args.string({ description: 'Source environment' }),
|
|
79
|
+
__metadata("design:type", String)
|
|
80
|
+
], FlagsPromote.prototype, "from", void 0);
|
|
81
|
+
__decorate([
|
|
82
|
+
args.string({ description: 'Target environment' }),
|
|
83
|
+
__metadata("design:type", String)
|
|
84
|
+
], FlagsPromote.prototype, "to", void 0);
|
|
85
|
+
__decorate([
|
|
86
|
+
flags.string({ description: 'Why' }),
|
|
87
|
+
__metadata("design:type", String)
|
|
88
|
+
], FlagsPromote.prototype, "note", void 0);
|
|
89
|
+
export class FlagsStale extends FlagsCommand {
|
|
90
|
+
static commandName = 'flags:stale';
|
|
91
|
+
static description = 'Flags that are probably safe to remove (unused, expired, static, undeclared)';
|
|
92
|
+
async run() {
|
|
93
|
+
const runtime = await this.runtime();
|
|
94
|
+
const stale = await runtime.admin.stale({
|
|
95
|
+
...(this.unusedDays ? { unusedDays: this.unusedDays } : {}),
|
|
96
|
+
...(this.staticDays ? { staticDays: this.staticDays } : {}),
|
|
97
|
+
});
|
|
98
|
+
if (stale.length === 0) {
|
|
99
|
+
this.logger.success('no stale flags');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const table = this.ui.table();
|
|
103
|
+
table.head(['Flag', 'Why', 'Last evaluated', 'Owner']);
|
|
104
|
+
for (const s of stale)
|
|
105
|
+
table.row([s.key, s.reasons.join(', '), s.lastEvaluated ?? 'never', s.owner ?? '']);
|
|
106
|
+
table.render();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
__decorate([
|
|
110
|
+
flags.number({ description: 'Days without evaluations to count as unused (default 30)' }),
|
|
111
|
+
__metadata("design:type", Number)
|
|
112
|
+
], FlagsStale.prototype, "unusedDays", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
flags.number({ description: 'Days serving one value to count as static (default 30)' }),
|
|
115
|
+
__metadata("design:type", Number)
|
|
116
|
+
], FlagsStale.prototype, "staticDays", void 0);
|
|
117
|
+
export class FlagsResults extends FlagsCommand {
|
|
118
|
+
static commandName = 'flags:results';
|
|
119
|
+
static description = 'Show experiment results (recompute with --fresh)';
|
|
120
|
+
async run() {
|
|
121
|
+
const runtime = await this.runtime();
|
|
122
|
+
const results = this.fresh
|
|
123
|
+
? await runtime.worker.computeResults(this.experiment)
|
|
124
|
+
: await runtime.manager.results(this.experiment);
|
|
125
|
+
if (!results) {
|
|
126
|
+
this.logger.warning('no results yet (is the experiment configured in config/flags.ts experiments?)');
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
this.logger.info(`${results.experiment}: exposures ${JSON.stringify(results.exposures)} (computed ${results.computedAt})`);
|
|
130
|
+
if (results.srm?.mismatch)
|
|
131
|
+
this.logger.error(`sample ratio mismatch (p=${results.srm.pValue.toExponential(2)}): fix assignment before trusting results`);
|
|
132
|
+
const table = this.ui.table();
|
|
133
|
+
table.head(['Metric', 'Variant', 'Lift', 'p', 'p (sequential)', 'Verdict']);
|
|
134
|
+
for (const metric of results.metrics) {
|
|
135
|
+
for (const c of metric.comparisons) {
|
|
136
|
+
table.row([
|
|
137
|
+
`${metric.name}${metric.guardrail ? ' (guardrail)' : ''}`,
|
|
138
|
+
c.variant,
|
|
139
|
+
Number.isFinite(c.relativeLift) ? `${(c.relativeLift * 100).toFixed(2)}%` : '-',
|
|
140
|
+
c.pValue.toPrecision(3),
|
|
141
|
+
c.sequential.pValue.toPrecision(3),
|
|
142
|
+
c.verdict,
|
|
143
|
+
]);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
table.render();
|
|
147
|
+
for (const warning of results.warnings)
|
|
148
|
+
this.logger.warning(warning);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
__decorate([
|
|
152
|
+
args.string({ description: 'Experiment key' }),
|
|
153
|
+
__metadata("design:type", String)
|
|
154
|
+
], FlagsResults.prototype, "experiment", void 0);
|
|
155
|
+
__decorate([
|
|
156
|
+
flags.boolean({ description: 'Recompute now instead of reading the cache' }),
|
|
157
|
+
__metadata("design:type", Boolean)
|
|
158
|
+
], FlagsResults.prototype, "fresh", void 0);
|
|
159
|
+
export class FlagsForget extends FlagsCommand {
|
|
160
|
+
static commandName = 'flags:forget';
|
|
161
|
+
static description = 'Delete everything stored about a subject in every sink that supports it';
|
|
162
|
+
async run() {
|
|
163
|
+
const runtime = await this.runtime();
|
|
164
|
+
await runtime.manager.forget(this.subject);
|
|
165
|
+
this.logger.success(`forgot ${this.subject}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
__decorate([
|
|
169
|
+
args.string({ description: 'Subject id' }),
|
|
170
|
+
__metadata("design:type", String)
|
|
171
|
+
], FlagsForget.prototype, "subject", void 0);
|
|
172
|
+
export class FlagsReplay extends FlagsCommand {
|
|
173
|
+
static commandName = 'flags:replay';
|
|
174
|
+
static description = 'Move a sink cursor back to the start of the log (backfill a new destination)';
|
|
175
|
+
async run() {
|
|
176
|
+
const runtime = await this.runtime();
|
|
177
|
+
if (!runtime.transport?.rewind) {
|
|
178
|
+
this.logger.error(`the "${runtime.transport?.name}" transport cannot rewind`);
|
|
179
|
+
this.exitCode = 1;
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
await runtime.transport.rewind(this.sink);
|
|
183
|
+
this.logger.success(`${this.sink} will receive the retained log again`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
__decorate([
|
|
187
|
+
args.string({ description: 'Sink name' }),
|
|
188
|
+
__metadata("design:type", String)
|
|
189
|
+
], FlagsReplay.prototype, "sink", void 0);
|
|
190
|
+
export class FlagsRequests extends FlagsCommand {
|
|
191
|
+
static commandName = 'flags:requests';
|
|
192
|
+
static description = 'List change requests, or approve/reject one';
|
|
193
|
+
async run() {
|
|
194
|
+
const runtime = await this.runtime();
|
|
195
|
+
const admin = runtime.admin;
|
|
196
|
+
const actor = cliActor(this.as);
|
|
197
|
+
const action = this.action ?? 'list';
|
|
198
|
+
if (action === 'list') {
|
|
199
|
+
const requests = await runtime.store.listChangeRequests({ status: 'pending' });
|
|
200
|
+
const table = this.ui.table();
|
|
201
|
+
table.head(['Id', 'Environment', 'Change', 'Requested by', 'Note']);
|
|
202
|
+
for (const r of requests) {
|
|
203
|
+
table.row([
|
|
204
|
+
r.id,
|
|
205
|
+
r.environment,
|
|
206
|
+
`${r.change.entity} ${r.change.key ?? ''}`,
|
|
207
|
+
r.requestedBy.id,
|
|
208
|
+
r.note ?? '',
|
|
209
|
+
]);
|
|
210
|
+
}
|
|
211
|
+
table.render();
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
if (!this.id) {
|
|
215
|
+
this.logger.error('give the change request id');
|
|
216
|
+
this.exitCode = 1;
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (action === 'approve') {
|
|
220
|
+
const { version } = await admin.approve(this.id, actor, this.note);
|
|
221
|
+
this.logger.success(`applied (ruleset version ${version})`);
|
|
222
|
+
}
|
|
223
|
+
else if (action === 'reject') {
|
|
224
|
+
await admin.reject(this.id, actor, this.note);
|
|
225
|
+
this.logger.success('rejected');
|
|
226
|
+
}
|
|
227
|
+
else if (action === 'cancel') {
|
|
228
|
+
await admin.cancel(this.id, actor);
|
|
229
|
+
this.logger.success('cancelled');
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this.logger.error(`unknown action "${action}"`);
|
|
233
|
+
this.exitCode = 1;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
__decorate([
|
|
238
|
+
args.string({ description: 'list | approve | reject | cancel', required: false }),
|
|
239
|
+
__metadata("design:type", String)
|
|
240
|
+
], FlagsRequests.prototype, "action", void 0);
|
|
241
|
+
__decorate([
|
|
242
|
+
args.string({ description: 'Change request id', required: false }),
|
|
243
|
+
__metadata("design:type", String)
|
|
244
|
+
], FlagsRequests.prototype, "id", void 0);
|
|
245
|
+
__decorate([
|
|
246
|
+
flags.string({ description: 'Review note' }),
|
|
247
|
+
__metadata("design:type", String)
|
|
248
|
+
], FlagsRequests.prototype, "note", void 0);
|
|
249
|
+
__decorate([
|
|
250
|
+
flags.string({ description: 'Act as this actor id instead of cli:<user>' }),
|
|
251
|
+
__metadata("design:type", String)
|
|
252
|
+
], FlagsRequests.prototype, "as", void 0);
|
|
253
|
+
//# sourceMappingURL=flags_ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags_ops.js","sourceRoot":"","sources":["../../commands/flags_ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FlagsCommand } from './shared.js';
|
|
2
|
+
export interface Reference {
|
|
3
|
+
key: string;
|
|
4
|
+
file: string;
|
|
5
|
+
line: number;
|
|
6
|
+
}
|
|
7
|
+
/** Finds `'key'` / `"key"` / `` `key` `` string literals for every known key. Exported for tests. */
|
|
8
|
+
export declare function findReferences(root: string, keys: string[]): Promise<Reference[]>;
|
|
9
|
+
export default class FlagsRefs extends FlagsCommand {
|
|
10
|
+
static commandName: string;
|
|
11
|
+
static description: string;
|
|
12
|
+
flag?: string;
|
|
13
|
+
run(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=flags_refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags_refs.d.ts","sourceRoot":"","sources":["../../commands/flags_refs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAc3C,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qGAAqG;AACrG,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA6BvF;AAED,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,YAAY;IACjD,OAAgB,WAAW,SAAgB;IAC3C,OAAgB,WAAW,SAAuE;IAG1F,IAAI,CAAC,EAAE,MAAM,CAAC;IAEP,GAAG,kBAkBjB;CACF"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
11
|
+
import { extname, join, relative } from 'node:path';
|
|
12
|
+
import { flags } from '@adonisjs/core/ace';
|
|
13
|
+
import { FlagsCommand } from './shared.js';
|
|
14
|
+
const EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.mjs', '.edge', '.vue', '.svelte']);
|
|
15
|
+
const SKIP = new Set([
|
|
16
|
+
'node_modules',
|
|
17
|
+
'build',
|
|
18
|
+
'dist',
|
|
19
|
+
'.git',
|
|
20
|
+
'tmp',
|
|
21
|
+
'storage',
|
|
22
|
+
'public',
|
|
23
|
+
'coverage',
|
|
24
|
+
]);
|
|
25
|
+
/** Finds `'key'` / `"key"` / `` `key` `` string literals for every known key. Exported for tests. */
|
|
26
|
+
export async function findReferences(root, keys) {
|
|
27
|
+
const out = [];
|
|
28
|
+
if (keys.length === 0)
|
|
29
|
+
return out;
|
|
30
|
+
const escaped = keys
|
|
31
|
+
.map((k) => k.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
|
|
32
|
+
.sort((a, b) => b.length - a.length);
|
|
33
|
+
const pattern = new RegExp(`(['"\`])(${escaped.join('|')})\\1`, 'g');
|
|
34
|
+
const walk = async (dir) => {
|
|
35
|
+
let entries;
|
|
36
|
+
try {
|
|
37
|
+
entries = await readdir(dir, { withFileTypes: true });
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
for (const entry of entries) {
|
|
43
|
+
if (SKIP.has(entry.name))
|
|
44
|
+
continue;
|
|
45
|
+
const full = join(dir, entry.name);
|
|
46
|
+
if (entry.isDirectory())
|
|
47
|
+
await walk(full);
|
|
48
|
+
else if (entry.isFile() && EXTENSIONS.has(extname(entry.name))) {
|
|
49
|
+
const lines = (await readFile(full, 'utf8')).split('\n');
|
|
50
|
+
lines.forEach((text, i) => {
|
|
51
|
+
for (const match of text.matchAll(pattern))
|
|
52
|
+
out.push({ key: match[2], file: relative(root, full), line: i + 1 });
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
await walk(root);
|
|
58
|
+
return out;
|
|
59
|
+
}
|
|
60
|
+
export default class FlagsRefs extends FlagsCommand {
|
|
61
|
+
static commandName = 'flags:refs';
|
|
62
|
+
static description = 'Where each flag is used in the code, and which flags nothing uses';
|
|
63
|
+
async run() {
|
|
64
|
+
const runtime = await this.runtime();
|
|
65
|
+
const ruleset = runtime.source.current();
|
|
66
|
+
const keys = this.flag
|
|
67
|
+
? [this.flag]
|
|
68
|
+
: [...new Set([...Object.keys(runtime.manager.declarations), ...Object.keys(ruleset.flags)])];
|
|
69
|
+
const refs = await findReferences(this.app.appRoot.pathname, keys);
|
|
70
|
+
const byKey = new Map();
|
|
71
|
+
for (const ref of refs) {
|
|
72
|
+
// The declaration in config/flags.ts is not a use.
|
|
73
|
+
if (ref.file.startsWith('config/flags.'))
|
|
74
|
+
continue;
|
|
75
|
+
byKey.set(ref.key, [...(byKey.get(ref.key) ?? []), ref]);
|
|
76
|
+
}
|
|
77
|
+
for (const key of keys.sort()) {
|
|
78
|
+
const uses = byKey.get(key) ?? [];
|
|
79
|
+
if (uses.length === 0)
|
|
80
|
+
this.logger.warning(`${key}: no references (candidate for removal)`);
|
|
81
|
+
else
|
|
82
|
+
this.logger.info(`${key}: ${uses.map((u) => `${u.file}:${u.line}`).join(', ')}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
__decorate([
|
|
87
|
+
flags.string({ description: 'Only this flag' }),
|
|
88
|
+
__metadata("design:type", String)
|
|
89
|
+
], FlagsRefs.prototype, "flag", void 0);
|
|
90
|
+
//# sourceMappingURL=flags_refs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags_refs.js","sourceRoot":"","sources":["../../commands/flags_refs.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/F,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;IACnB,cAAc;IACd,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,SAAS;IACT,QAAQ;IACR,UAAU;CACX,CAAC,CAAC;AAQH,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAc;IAC/D,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;SACpD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;QACjC,IAAI,OAA2E,CAAC;QAChF,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrC,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC/D,MAAM,KAAK,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;oBACxB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACxC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,YAAY;IACjD,MAAM,CAAU,WAAW,GAAG,YAAY,CAAC;IAC3C,MAAM,CAAU,WAAW,GAAG,mEAAmE,CAAC;IAKzF,KAAK,CAAC,GAAG;QAChB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;YACpB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACb,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,mDAAmD;YACnD,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;gBAAE,SAAS;YACnD,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,yCAAyC,CAAC,CAAC;;gBACvF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;CACF;AArBS;IADP,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;;uCAC1B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { FlagsAdmin, ProposeResult } from '../src/admin.js';
|
|
2
|
+
import type { Actor } from '../src/stores/store.js';
|
|
3
|
+
import { FlagsCommand } from './shared.js';
|
|
4
|
+
/** Applies a `flags:set` value. Exported for tests. */
|
|
5
|
+
export declare function applySetValue(admin: FlagsAdmin, key: string, value: string, actor: Actor, options: {
|
|
6
|
+
environment?: string;
|
|
7
|
+
note?: string;
|
|
8
|
+
}): Promise<ProposeResult>;
|
|
9
|
+
export default class FlagsSet extends FlagsCommand {
|
|
10
|
+
static commandName: string;
|
|
11
|
+
static description: string;
|
|
12
|
+
key: string;
|
|
13
|
+
value: string;
|
|
14
|
+
env?: string;
|
|
15
|
+
note?: string;
|
|
16
|
+
as?: string;
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=flags_set.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags_set.d.ts","sourceRoot":"","sources":["../../commands/flags_set.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAY,YAAY,EAAE,MAAM,aAAa,CAAC;AAErD,uDAAuD;AACvD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC,aAAa,CAAC,CAQxB;AA4CD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,YAAY;IAChD,OAAgB,WAAW,SAAe;IAC1C,OAAgB,WAAW,SACoE;IAGvF,GAAG,EAAE,MAAM,CAAC;IAMZ,KAAK,EAAE,MAAM,CAAC;IAGd,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,EAAE,CAAC,EAAE,MAAM,CAAC;IAEL,GAAG,kBASjB;CACF"}
|