gitextract_322ztv_j/ ├── .changeset/ │ ├── README.md │ └── config.json ├── .dockerignore ├── .github/ │ └── workflows/ │ ├── publish.yaml │ ├── pull_request.yaml │ └── tests.yaml ├── .gitignore ├── .nvmrc ├── .vscode/ │ ├── extensions.json │ └── settings.json ├── Dockerfile ├── LICENSE ├── README.md ├── TRACKING.md ├── apps/ │ ├── cdn/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── lib/ │ │ │ ├── cache.ts │ │ │ └── config.ts │ │ └── tsconfig.json │ ├── docs/ │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── next.config.js │ │ ├── package.json │ │ ├── pages/ │ │ │ ├── _app.mdx │ │ │ ├── _meta.json │ │ │ ├── a-b-testing.mdx │ │ │ ├── config.mdx │ │ │ ├── devtools.mdx │ │ │ ├── environments.mdx │ │ │ ├── feature-flags.mdx │ │ │ ├── index.mdx │ │ │ ├── integrations/ │ │ │ │ ├── _meta.json │ │ │ │ ├── angular.mdx │ │ │ │ ├── express.mdx │ │ │ │ ├── koa.mdx │ │ │ │ ├── nextjs.mdx │ │ │ │ ├── node.mdx │ │ │ │ ├── react.mdx │ │ │ │ ├── remix.mdx │ │ │ │ └── svelte.mdx │ │ │ ├── nextjs.mdx │ │ │ ├── reference/ │ │ │ │ ├── _meta.json │ │ │ │ ├── angular.mdx │ │ │ │ ├── cli.mdx │ │ │ │ ├── http.mdx │ │ │ │ ├── nextjs.mdx │ │ │ │ ├── operators.mdx │ │ │ │ ├── react.mdx │ │ │ │ ├── remix.mdx │ │ │ │ └── svelte.mdx │ │ │ ├── remote-config.mdx │ │ │ └── user-segments.mdx │ │ ├── snippets/ │ │ │ └── ReactApi.mdx │ │ ├── theme.config.jsx │ │ └── tsconfig.json │ └── web/ │ ├── .gitignore │ ├── CHANGELOG.md │ ├── Dockerfile │ ├── README.md │ ├── abby.config.ts │ ├── components.json │ ├── docker-compose.mailhog.yaml │ ├── emails/ │ │ ├── ContactFormularEmail.tsx │ │ ├── index.tsx │ │ └── invite.tsx │ ├── next-sitemap.config.js │ ├── next.config.mjs │ ├── package.json │ ├── postcss.config.cjs │ ├── prisma/ │ │ ├── generateCoupons.ts │ │ ├── migrations/ │ │ │ ├── 20221205112748_init_db/ │ │ │ │ └── migration.sql │ │ │ ├── 20221205131914_bruh/ │ │ │ │ └── migration.sql │ │ │ ├── 20221205132203_/ │ │ │ │ └── migration.sql │ │ │ ├── 20221205133208_/ │ │ │ │ └── migration.sql │ │ │ ├── 20221205162949_make_name_and_project_id_unique_identifier_for_test/ │ │ │ │ └── migration.sql │ │ │ ├── 20221207080237_add_event_table/ │ │ │ │ └── migration.sql │ │ │ ├── 20221208123701_add_project_invites/ │ │ │ │ └── migration.sql │ │ │ ├── 20221208134716_use_decimal_for_weights/ │ │ │ │ └── migration.sql │ │ │ ├── 20221208152910_add_project_user/ │ │ │ │ └── migration.sql │ │ │ ├── 20221208172715_/ │ │ │ │ └── migration.sql │ │ │ ├── 20221210195541_add_stripe_info_to_projects/ │ │ │ │ └── migration.sql │ │ │ ├── 20221212063242_add_plan_to_project/ │ │ │ │ └── migration.sql │ │ │ ├── 20230101140121_use_role_enum_for_project_users/ │ │ │ │ └── migration.sql │ │ │ ├── 20230104071050_add_feature_flags/ │ │ │ │ └── migration.sql │ │ │ ├── 20230104080059_make_featureflag_name_unique_per_project/ │ │ │ │ └── migration.sql │ │ │ ├── 20230104081514_fix/ │ │ │ │ └── migration.sql │ │ │ ├── 20230115171608_remove/ │ │ │ │ └── migration.sql │ │ │ ├── 20230210162012_add_history/ │ │ │ │ └── migration.sql │ │ │ ├── 20230222182342_add_sort_index_for_env/ │ │ │ │ └── migration.sql │ │ │ ├── 20230302165144_add_description_to_feature_flag/ │ │ │ │ └── migration.sql │ │ │ ├── 20230303082044_use_text_for_description_for_longer_texts/ │ │ │ │ └── migration.sql │ │ │ ├── 20230303121237_add_flag_value_table/ │ │ │ │ └── migration.sql │ │ │ ├── 20230303130553_/ │ │ │ │ └── migration.sql │ │ │ ├── 20230303181212_update_history/ │ │ │ │ └── migration.sql │ │ │ ├── 20230303181813_remove_env_flag_relation/ │ │ │ │ └── migration.sql │ │ │ ├── 20230303182053_make_id_for_flag_values_unique/ │ │ │ │ └── migration.sql │ │ │ ├── 20230305160755_rename_flag_value_and_add_index_for_faster_access/ │ │ │ │ └── migration.sql │ │ │ ├── 20230326163301_make_payment_interval_required/ │ │ │ │ └── migration.sql │ │ │ ├── 20230511063052_add_coupon_codes_table/ │ │ │ │ └── migration.sql │ │ │ ├── 20230511064125_renmae_price_id_field_for_code/ │ │ │ │ └── migration.sql │ │ │ ├── 20230601155320_add_multivariate_flags/ │ │ │ │ └── migration.sql │ │ │ ├── 20230601161058_update_flag_history/ │ │ │ │ └── migration.sql │ │ │ ├── 20230602080502_remove_json_field_from_flagtype_enum/ │ │ │ │ └── migration.sql │ │ │ ├── 20230611180244_move_flag_type_to_flag_instead_of_value/ │ │ │ │ └── migration.sql │ │ │ ├── 20230628081242_add_api_key_table/ │ │ │ │ └── migration.sql │ │ │ ├── 20230630140739_add_json_type/ │ │ │ │ └── migration.sql │ │ │ ├── 20230731133223_rename_apikey/ │ │ │ │ └── migration.sql │ │ │ ├── 20230803094512_change_api_key_validity_logic/ │ │ │ │ └── migration.sql │ │ │ ├── 20230901064929_add_requests/ │ │ │ │ └── migration.sql │ │ │ ├── 20230901065851_remove_hashed_ip_field/ │ │ │ │ └── migration.sql │ │ │ ├── 20230903075910_add_user_onboarding_information/ │ │ │ │ └── migration.sql │ │ │ ├── 20231207205533_add_api_version_to_request/ │ │ │ │ └── migration.sql │ │ │ ├── 20231207205701_add_apiversion_enum/ │ │ │ │ └── migration.sql │ │ │ ├── 20240620195120_add_apirequest_type/ │ │ │ │ └── migration.sql │ │ │ ├── 20240621084922_add_indices_for_apirequest/ │ │ │ │ └── migration.sql │ │ │ ├── 20240826064116_add_integrations/ │ │ │ │ └── migration.sql │ │ │ ├── 20240903210250_add_anonymous_id_to_event/ │ │ │ │ └── migration.sql │ │ │ ├── 20250131071445_add_flag_rulesets/ │ │ │ │ └── migration.sql │ │ │ └── migration_lock.toml │ │ ├── schema.prisma │ │ ├── seedEvents.ts │ │ └── sql/ │ │ ├── getEventsByTestIdForAllTime.sql │ │ ├── getEventsByTestIdForDay.sql │ │ └── getEventsByTestIdForLast30Days.sql │ ├── sentry.client.config.ts │ ├── sentry.edge.config.ts │ ├── sentry.server.config.ts │ ├── src/ │ │ ├── api/ │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ └── routes/ │ │ │ ├── health.test.ts │ │ │ ├── health.ts │ │ │ ├── integrations.ts │ │ │ ├── legacy_project_data.test.ts │ │ │ ├── legacy_project_data.ts │ │ │ ├── v1_config.test.ts │ │ │ ├── v1_config.ts │ │ │ ├── v1_event.test.ts │ │ │ ├── v1_event.ts │ │ │ ├── v1_project_data.test.ts │ │ │ ├── v1_project_data.ts │ │ │ └── v2_project_data.ts │ │ ├── components/ │ │ │ ├── AddABTestModal.tsx │ │ │ ├── AddFeatureFlagModal.tsx │ │ │ ├── AsyncCodeExample.tsx │ │ │ ├── Avatar.tsx │ │ │ ├── BlogLayout.tsx │ │ │ ├── Button.tsx │ │ │ ├── CodeSnippet.tsx │ │ │ ├── CodeSnippetModalButton.tsx │ │ │ ├── CreateAPIKeyModal.tsx │ │ │ ├── CreateEnvironmentModal.tsx │ │ │ ├── CreateProjectModal.tsx │ │ │ ├── DashboardButton.tsx │ │ │ ├── DashboardHeader.tsx │ │ │ ├── DashboardSection.tsx │ │ │ ├── DeleteProjectModal.tsx │ │ │ ├── DevtoolsArrow.tsx │ │ │ ├── Divider.tsx │ │ │ ├── Dropdown.tsx │ │ │ ├── DropdownMenu.tsx │ │ │ ├── Editor.tsx │ │ │ ├── EventCounter.tsx │ │ │ ├── Feature.tsx │ │ │ ├── FeatureFlag.tsx │ │ │ ├── FlagIcon.tsx │ │ │ ├── FlagPage.tsx │ │ │ ├── Footer.tsx │ │ │ ├── Input.tsx │ │ │ ├── Integrations.tsx │ │ │ ├── JSONEditor.tsx │ │ │ ├── Layout.tsx │ │ │ ├── LoadingSpinner.tsx │ │ │ ├── Logo.tsx │ │ │ ├── MarketingLayout.tsx │ │ │ ├── Modal.tsx │ │ │ ├── Navbar/ │ │ │ │ └── index.tsx │ │ │ ├── Pricing.tsx │ │ │ ├── Progress.tsx │ │ │ ├── ProjectSwitcher.tsx │ │ │ ├── RadioGroup.tsx │ │ │ ├── RadioSelect.tsx │ │ │ ├── RemoveUserModal.tsx │ │ │ ├── Select.tsx │ │ │ ├── SignupButton.tsx │ │ │ ├── Test/ │ │ │ │ ├── CreateTestSection.tsx │ │ │ │ ├── Metrics.tsx │ │ │ │ ├── Section.tsx │ │ │ │ ├── Serves.tsx │ │ │ │ └── Weights.tsx │ │ │ ├── TitleEdit.tsx │ │ │ ├── Toggle.tsx │ │ │ ├── Tooltip.tsx │ │ │ ├── UsedBy.tsx │ │ │ ├── UserAuthForm.tsx │ │ │ ├── UserInfo.tsx │ │ │ ├── analytics/ │ │ │ │ └── EventGraph.tsx │ │ │ ├── app/ │ │ │ │ ├── AppNav.tsx │ │ │ │ └── UserNav.tsx │ │ │ ├── charts/ │ │ │ │ └── Donut.tsx │ │ │ ├── flags/ │ │ │ │ ├── FlagRuleEditor.tsx │ │ │ │ └── RuleSetEditor.tsx │ │ │ ├── settings/ │ │ │ │ ├── Integrations.tsx │ │ │ │ └── Segments.tsx │ │ │ └── ui/ │ │ │ ├── avatar.tsx │ │ │ ├── button.tsx │ │ │ ├── card.tsx │ │ │ ├── chart.tsx │ │ │ ├── command.tsx │ │ │ ├── dialog.tsx │ │ │ ├── environment-badge.tsx │ │ │ ├── input.tsx │ │ │ ├── label.tsx │ │ │ ├── navigation-menu.tsx │ │ │ ├── popover.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── select.tsx │ │ │ ├── switch.tsx │ │ │ ├── table.tsx │ │ │ ├── tabs.tsx │ │ │ └── tooltip.tsx │ │ ├── env/ │ │ │ ├── client.mjs │ │ │ ├── schema.mjs │ │ │ └── server.mjs │ │ ├── instrumentation.ts │ │ ├── lib/ │ │ │ ├── abby.tsx │ │ │ ├── environment-styles.ts │ │ │ ├── events.ts │ │ │ ├── flags.ts │ │ │ ├── graphs.ts │ │ │ ├── helper.ts │ │ │ ├── hooks/ │ │ │ │ ├── useProjectId.ts │ │ │ │ └── useQueryParam.ts │ │ │ ├── logsnag.ts │ │ │ ├── shiki/ │ │ │ │ ├── languages/ │ │ │ │ │ ├── abap.tmLanguage.json │ │ │ │ │ ├── actionscript-3.tmLanguage.json │ │ │ │ │ ├── ada.tmLanguage.json │ │ │ │ │ ├── apache.tmLanguage.json │ │ │ │ │ ├── apex.tmLanguage.json │ │ │ │ │ ├── apl.tmLanguage.json │ │ │ │ │ ├── applescript.tmLanguage.json │ │ │ │ │ ├── asm.tmLanguage.json │ │ │ │ │ ├── astro.tmLanguage.json │ │ │ │ │ ├── awk.tmLanguage.json │ │ │ │ │ ├── ballerina.tmLanguage.json │ │ │ │ │ ├── bat.tmLanguage.json │ │ │ │ │ ├── berry.tmLanguage.json │ │ │ │ │ ├── bibtex.tmLanguage.json │ │ │ │ │ ├── bicep.tmLanguage.json │ │ │ │ │ ├── blade.tmLanguage.json │ │ │ │ │ ├── c.tmLanguage.json │ │ │ │ │ ├── cadence.tmLanguage.json │ │ │ │ │ ├── clarity.tmLanguage.json │ │ │ │ │ ├── clojure.tmLanguage.json │ │ │ │ │ ├── cmake.tmLanguage.json │ │ │ │ │ ├── cobol.tmLanguage.json │ │ │ │ │ ├── codeql.tmLanguage.json │ │ │ │ │ ├── coffee.tmLanguage.json │ │ │ │ │ ├── cpp-macro.tmLanguage.json │ │ │ │ │ ├── cpp.tmLanguage.json │ │ │ │ │ ├── crystal.tmLanguage.json │ │ │ │ │ ├── csharp.tmLanguage.json │ │ │ │ │ ├── css.tmLanguage.json │ │ │ │ │ ├── cue.tmLanguage.json │ │ │ │ │ ├── d.tmLanguage.json │ │ │ │ │ ├── dart.tmLanguage.json │ │ │ │ │ ├── diff.tmLanguage.json │ │ │ │ │ ├── docker.tmLanguage.json │ │ │ │ │ ├── dream-maker.tmLanguage.json │ │ │ │ │ ├── elixir.tmLanguage.json │ │ │ │ │ ├── elm.tmLanguage.json │ │ │ │ │ ├── erb.tmLanguage.json │ │ │ │ │ ├── erlang.tmLanguage.json │ │ │ │ │ ├── fish.tmLanguage.json │ │ │ │ │ ├── fsharp.tmLanguage.json │ │ │ │ │ ├── gherkin.tmLanguage.json │ │ │ │ │ ├── git-commit.tmLanguage.json │ │ │ │ │ ├── git-rebase.tmLanguage.json │ │ │ │ │ ├── glsl.tmLanguage.json │ │ │ │ │ ├── gnuplot.tmLanguage.json │ │ │ │ │ ├── go.tmLanguage.json │ │ │ │ │ ├── graphql.tmLanguage.json │ │ │ │ │ ├── groovy.tmLanguage.json │ │ │ │ │ ├── hack.tmLanguage.json │ │ │ │ │ ├── haml.tmLanguage.json │ │ │ │ │ ├── handlebars.tmLanguage.json │ │ │ │ │ ├── haskell.tmLanguage.json │ │ │ │ │ ├── hcl.tmLanguage.json │ │ │ │ │ ├── hlsl.tmLanguage.json │ │ │ │ │ ├── html.tmLanguage.json │ │ │ │ │ ├── ini.tmLanguage.json │ │ │ │ │ ├── java.tmLanguage.json │ │ │ │ │ ├── javascript.tmLanguage.json │ │ │ │ │ ├── jinja-html.tmLanguage.json │ │ │ │ │ ├── jinja.tmLanguage.json │ │ │ │ │ ├── json.tmLanguage.json │ │ │ │ │ ├── jsonc.tmLanguage.json │ │ │ │ │ ├── jsonnet.tmLanguage.json │ │ │ │ │ ├── jssm.tmLanguage.json │ │ │ │ │ ├── jsx.tmLanguage.json │ │ │ │ │ ├── julia.tmLanguage.json │ │ │ │ │ ├── kotlin.tmLanguage.json │ │ │ │ │ ├── latex.tmLanguage.json │ │ │ │ │ ├── less.tmLanguage.json │ │ │ │ │ ├── liquid.tmLanguage.json │ │ │ │ │ ├── lisp.tmLanguage.json │ │ │ │ │ ├── logo.tmLanguage.json │ │ │ │ │ ├── lua.tmLanguage.json │ │ │ │ │ ├── make.tmLanguage.json │ │ │ │ │ ├── markdown.tmLanguage.json │ │ │ │ │ ├── marko.tmLanguage.json │ │ │ │ │ ├── matlab.tmLanguage.json │ │ │ │ │ ├── mdx.tmLanguage.json │ │ │ │ │ ├── mermaid.tmLanguage.json │ │ │ │ │ ├── nginx.tmLanguage.json │ │ │ │ │ ├── nim.tmLanguage.json │ │ │ │ │ ├── nix.tmLanguage.json │ │ │ │ │ ├── objective-c.tmLanguage.json │ │ │ │ │ ├── objective-cpp.tmLanguage.json │ │ │ │ │ ├── ocaml.tmLanguage.json │ │ │ │ │ ├── pascal.tmLanguage.json │ │ │ │ │ ├── perl.tmLanguage.json │ │ │ │ │ ├── php-html.tmLanguage.json │ │ │ │ │ ├── php.tmLanguage.json │ │ │ │ │ ├── plsql.tmLanguage.json │ │ │ │ │ ├── postcss.tmLanguage.json │ │ │ │ │ ├── powershell.tmLanguage.json │ │ │ │ │ ├── prisma.tmLanguage.json │ │ │ │ │ ├── prolog.tmLanguage.json │ │ │ │ │ ├── pug.tmLanguage.json │ │ │ │ │ ├── puppet.tmLanguage.json │ │ │ │ │ ├── purescript.tmLanguage.json │ │ │ │ │ ├── python.tmLanguage.json │ │ │ │ │ ├── r.tmLanguage.json │ │ │ │ │ ├── raku.tmLanguage.json │ │ │ │ │ ├── razor.tmLanguage.json │ │ │ │ │ ├── rel.tmLanguage.json │ │ │ │ │ ├── riscv.tmLanguage.json │ │ │ │ │ ├── rst.tmLanguage.json │ │ │ │ │ ├── ruby.tmLanguage.json │ │ │ │ │ ├── rust.tmLanguage.json │ │ │ │ │ ├── sas.tmLanguage.json │ │ │ │ │ ├── sass.tmLanguage.json │ │ │ │ │ ├── scala.tmLanguage.json │ │ │ │ │ ├── scheme.tmLanguage.json │ │ │ │ │ ├── scss.tmLanguage.json │ │ │ │ │ ├── shaderlab.tmLanguage.json │ │ │ │ │ ├── shellscript.tmLanguage.json │ │ │ │ │ ├── smalltalk.tmLanguage.json │ │ │ │ │ ├── solidity.tmLanguage.json │ │ │ │ │ ├── sparql.tmLanguage.json │ │ │ │ │ ├── sql.tmLanguage.json │ │ │ │ │ ├── ssh-config.tmLanguage.json │ │ │ │ │ ├── stata.tmLanguage.json │ │ │ │ │ ├── stylus.tmLanguage.json │ │ │ │ │ ├── svelte.tmLanguage.json │ │ │ │ │ ├── swift.tmLanguage.json │ │ │ │ │ ├── system-verilog.tmLanguage.json │ │ │ │ │ ├── tasl.tmLanguage.json │ │ │ │ │ ├── tcl.tmLanguage.json │ │ │ │ │ ├── tex.tmLanguage.json │ │ │ │ │ ├── toml.tmLanguage.json │ │ │ │ │ ├── tsx.tmLanguage.json │ │ │ │ │ ├── turtle.tmLanguage.json │ │ │ │ │ ├── twig.tmLanguage.json │ │ │ │ │ ├── typescript.tmLanguage.json │ │ │ │ │ ├── vb.tmLanguage.json │ │ │ │ │ ├── verilog.tmLanguage.json │ │ │ │ │ ├── vhdl.tmLanguage.json │ │ │ │ │ ├── viml.tmLanguage.json │ │ │ │ │ ├── vue-html.tmLanguage.json │ │ │ │ │ ├── vue.tmLanguage.json │ │ │ │ │ ├── wasm.tmLanguage.json │ │ │ │ │ ├── wenyan.tmLanguage.json │ │ │ │ │ ├── xml.tmLanguage.json │ │ │ │ │ ├── xsl.tmLanguage.json │ │ │ │ │ ├── yaml.tmLanguage.json │ │ │ │ │ └── zenscript.tmLanguage.json │ │ │ │ └── themes/ │ │ │ │ ├── css-variables.json │ │ │ │ ├── dark-plus.json │ │ │ │ ├── dracula-soft.json │ │ │ │ ├── dracula.json │ │ │ │ ├── github-dark-dimmed.json │ │ │ │ ├── github-dark.json │ │ │ │ ├── github-light.json │ │ │ │ ├── hc_light.json │ │ │ │ ├── light-plus.json │ │ │ │ ├── material-darker.json │ │ │ │ ├── material-default.json │ │ │ │ ├── material-lighter.json │ │ │ │ ├── material-ocean.json │ │ │ │ ├── material-palenight.json │ │ │ │ ├── min-dark.json │ │ │ │ ├── min-light.json │ │ │ │ ├── monokai.json │ │ │ │ ├── nord.json │ │ │ │ ├── one-dark-pro.json │ │ │ │ ├── poimandres.json │ │ │ │ ├── rose-pine-dawn.json │ │ │ │ ├── rose-pine-moon.json │ │ │ │ ├── rose-pine.json │ │ │ │ ├── slack-dark.json │ │ │ │ ├── slack-ochin.json │ │ │ │ ├── solarized-dark.json │ │ │ │ ├── solarized-light.json │ │ │ │ ├── vitesse-dark.json │ │ │ │ └── vitesse-light.json │ │ │ ├── stripe.ts │ │ │ ├── tracking.ts │ │ │ └── utils.ts │ │ ├── middleware.ts │ │ ├── pages/ │ │ │ ├── _app.tsx │ │ │ ├── _document.tsx │ │ │ ├── _error.jsx │ │ │ ├── api/ │ │ │ │ ├── [[...route]].ts │ │ │ │ ├── auth/ │ │ │ │ │ └── [...nextauth].ts │ │ │ │ ├── checkout/ │ │ │ │ │ └── index.ts │ │ │ │ ├── invalidate-limits.ts │ │ │ │ ├── stripe.ts │ │ │ │ └── trpc/ │ │ │ │ └── [trpc].ts │ │ │ ├── checkout/ │ │ │ │ └── index.tsx │ │ │ ├── contact.tsx │ │ │ ├── devtools.tsx │ │ │ ├── imprint.mdx │ │ │ ├── index.tsx │ │ │ ├── integrations/ │ │ │ │ ├── [integration]/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ ├── invites/ │ │ │ │ ├── [inviteId].tsx │ │ │ │ └── index.tsx │ │ │ ├── login.tsx │ │ │ ├── nextjs.mdx │ │ │ ├── privacy.mdx │ │ │ ├── profile/ │ │ │ │ ├── generate-token.tsx │ │ │ │ └── index.tsx │ │ │ ├── projects/ │ │ │ │ └── [projectId]/ │ │ │ │ ├── environments.tsx │ │ │ │ ├── events.tsx │ │ │ │ ├── flags/ │ │ │ │ │ ├── [flagId].tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── redeem.tsx │ │ │ │ ├── remote-config.tsx │ │ │ │ ├── settings.tsx │ │ │ │ └── tests/ │ │ │ │ └── [testId].tsx │ │ │ ├── redeem.tsx │ │ │ ├── signup.tsx │ │ │ ├── terms.mdx │ │ │ ├── tips-and-insights/ │ │ │ │ ├── a-b-nextjs.mdx │ │ │ │ ├── a-b-react.mdx │ │ │ │ ├── feature-flagging-in-modern-development-teams.mdx │ │ │ │ ├── feature-flags-for-project-managers.mdx │ │ │ │ ├── feature-flags-next.mdx │ │ │ │ ├── honest-marketing.mdx │ │ │ │ └── index.tsx │ │ │ └── welcome.tsx │ │ ├── seo/ │ │ │ └── SeoDescriptions.ts │ │ ├── server/ │ │ │ ├── common/ │ │ │ │ ├── auth.ts │ │ │ │ ├── config-cache.ts │ │ │ │ ├── get-server-auth-session.ts │ │ │ │ ├── getRequestOrigin.ts │ │ │ │ ├── github-app.ts │ │ │ │ ├── integrations.ts │ │ │ │ ├── memory-cache.ts │ │ │ │ ├── plans.ts │ │ │ │ ├── ratelimit.ts │ │ │ │ ├── stripe.ts │ │ │ │ └── tracking.ts │ │ │ ├── db/ │ │ │ │ ├── client.ts │ │ │ │ └── redis.ts │ │ │ ├── queue/ │ │ │ │ ├── AfterDataRequest.ts │ │ │ │ ├── event.ts │ │ │ │ └── queues.ts │ │ │ ├── services/ │ │ │ │ ├── AiFlagRemovalService.ts │ │ │ │ ├── ConfigService.ts │ │ │ │ ├── EventService.ts │ │ │ │ ├── FlagService.ts │ │ │ │ ├── IntegrationService.ts │ │ │ │ ├── InviteService.ts │ │ │ │ ├── PlausibleService.ts │ │ │ │ ├── ProjectService.ts │ │ │ │ ├── RequestCache.ts │ │ │ │ ├── RequestService.ts │ │ │ │ └── TestService.ts │ │ │ └── trpc/ │ │ │ ├── context.ts │ │ │ ├── helpers.ts │ │ │ ├── router/ │ │ │ │ ├── _app.ts │ │ │ │ ├── apikey.ts │ │ │ │ ├── auth.ts │ │ │ │ ├── coupons.ts │ │ │ │ ├── environments.ts │ │ │ │ ├── events.ts │ │ │ │ ├── example.ts │ │ │ │ ├── flags.ts │ │ │ │ ├── invite.ts │ │ │ │ ├── misc.ts │ │ │ │ ├── project-user.ts │ │ │ │ ├── project.ts │ │ │ │ ├── tests.ts │ │ │ │ └── user.ts │ │ │ └── trpc.ts │ │ ├── styles/ │ │ │ ├── shadcn.css │ │ │ └── theme.json │ │ ├── types/ │ │ │ ├── flags.ts │ │ │ ├── next-auth.d.ts │ │ │ └── plausible-events.ts │ │ └── utils/ │ │ ├── apiKey.ts │ │ ├── checkSession.ts │ │ ├── snippets.ts │ │ ├── trpc.ts │ │ ├── updateSession.ts │ │ └── validateFlags.ts │ ├── tailwind.config.cjs │ ├── tsconfig.json │ ├── vercel.json │ └── vitest.config.ts ├── biome.json ├── docker-compose.prod.yaml ├── docker-compose.yaml ├── docs/ │ └── integrations.md ├── package.json ├── packages/ │ ├── angular/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── angular.json │ │ ├── karma.conf.js │ │ ├── ng-package.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── lib/ │ │ │ │ ├── StorageService.ts │ │ │ │ ├── abby-logger.service.ts │ │ │ │ ├── abby.module.ts │ │ │ │ ├── abby.service.spec.ts │ │ │ │ ├── abby.service.ts │ │ │ │ ├── devtools.component.ts │ │ │ │ ├── flag.directive.ts │ │ │ │ ├── get-remote-config.pipe.spec.ts │ │ │ │ ├── get-remote-config.pipe.ts │ │ │ │ ├── get-variant.pipe.spec.ts │ │ │ │ ├── get-variant.pipe.ts │ │ │ │ └── test.directive.ts │ │ │ └── public-api.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ ├── tsconfig.lib.prod.json │ │ └── tsconfig.spec.json │ ├── cli/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── add-flag.ts │ │ │ ├── add-remote-config.ts │ │ │ ├── ai.ts │ │ │ ├── auth.ts │ │ │ ├── check.ts │ │ │ ├── consts.ts │ │ │ ├── http.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── pull.ts │ │ │ ├── push.ts │ │ │ ├── schemas.ts │ │ │ ├── sharedOptions.ts │ │ │ ├── update-config-file.ts │ │ │ └── util.ts │ │ ├── tests/ │ │ │ ├── abby.config.stub.ts │ │ │ ├── base.test.ts │ │ │ ├── mocks/ │ │ │ │ ├── handlers.ts │ │ │ │ └── server.ts │ │ │ └── setup.ts │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── core/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── defineConfig.ts │ │ │ ├── helpers.ts │ │ │ ├── index.ts │ │ │ ├── mathHelpers.ts │ │ │ ├── shared/ │ │ │ │ ├── constants.ts │ │ │ │ ├── helpers.ts │ │ │ │ ├── http.ts │ │ │ │ ├── index.ts │ │ │ │ ├── interfaces.ts │ │ │ │ ├── schemas.ts │ │ │ │ └── types.ts │ │ │ └── validation/ │ │ │ └── index.ts │ │ ├── tests/ │ │ │ ├── base.test.ts │ │ │ ├── defineConfig.test.ts │ │ │ ├── math.test.ts │ │ │ ├── mocks/ │ │ │ │ ├── handlers.ts │ │ │ │ └── server.ts │ │ │ ├── setup.ts │ │ │ ├── types.test.ts │ │ │ └── validation.test.ts │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── devtools/ │ │ ├── .gitignore │ │ ├── .storybook/ │ │ │ ├── main.ts │ │ │ └── preview.ts │ │ ├── .vscode/ │ │ │ └── extensions.json │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── Devtools.stories.ts │ │ │ ├── Devtools.svelte │ │ │ ├── components/ │ │ │ │ ├── ChevronIcon.svelte │ │ │ │ ├── CloseIcon.svelte │ │ │ │ ├── Input.svelte │ │ │ │ ├── JsonEditor.svelte │ │ │ │ ├── Modal.svelte │ │ │ │ ├── Select.svelte │ │ │ │ └── Switch.svelte │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── storage.ts │ │ │ │ └── types.ts │ │ │ └── vite-env.d.ts │ │ ├── svelte.config.js │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── next/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cache.ts │ │ │ ├── helpers.ts │ │ │ ├── index.tsx │ │ │ └── withAbby.tsx │ │ ├── tests/ │ │ │ ├── cache.test.ts │ │ │ ├── mocks/ │ │ │ │ ├── handlers.ts │ │ │ │ └── server.ts │ │ │ ├── setup.ts │ │ │ ├── types.test.tsx │ │ │ ├── useAbby.test.tsx │ │ │ └── withAbby.test.tsx │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── node/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── fix-exports.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── express/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── koa/ │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ └── MemoryStorage.ts │ │ ├── tests/ │ │ │ ├── express.test.ts │ │ │ ├── koa.test.ts │ │ │ ├── mocks/ │ │ │ │ ├── handlers.ts │ │ │ │ └── server.ts │ │ │ ├── node.test.ts │ │ │ └── setup.ts │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── react/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── StorageService.ts │ │ │ ├── context.tsx │ │ │ ├── helpers.ts │ │ │ └── index.ts │ │ ├── tests/ │ │ │ ├── helpers.test.ts │ │ │ ├── mocks/ │ │ │ │ ├── handlers.ts │ │ │ │ └── server.ts │ │ │ ├── setup.ts │ │ │ ├── ssr.test.tsx │ │ │ ├── types.test.tsx │ │ │ └── useAbby.test.tsx │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── remix/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cache.ts │ │ │ └── index.tsx │ │ ├── tests/ │ │ │ ├── cache.test.ts │ │ │ ├── mocks/ │ │ │ │ ├── handlers.ts │ │ │ │ └── server.ts │ │ │ ├── setup.ts │ │ │ ├── ssr.test.tsx │ │ │ ├── types.test.tsx │ │ │ └── useAbby.test.tsx │ │ ├── tsconfig.json │ │ ├── tsup.config.ts │ │ └── vite.config.ts │ ├── svelte/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── AbbyDevtools.svelte │ │ │ │ ├── AbbyProvider.svelte │ │ │ │ ├── StorageService.ts │ │ │ │ └── createAbby.ts │ │ │ └── tests/ │ │ │ ├── abby.ts │ │ │ ├── featureFlags.test.ts │ │ │ ├── mocks/ │ │ │ │ ├── handlers.ts │ │ │ │ └── server.ts │ │ │ ├── pages/ │ │ │ │ └── +test.svelte │ │ │ ├── remoteConfig.test.ts │ │ │ ├── setupTest.ts │ │ │ ├── useAbby.test.ts │ │ │ └── withAbby.test.ts │ │ ├── svelte.config.js │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ └── tsconfig/ │ ├── README.md │ ├── angular-library.json │ ├── base.json │ ├── nextjs.json │ ├── package.json │ └── react-library.json ├── pnpm-workspace.yaml └── turbo.json