@happyvertical/smrt-features 0.44.1 → 0.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import { FeatureOverrideEffect, GLOBAL_FEATURE_SCOPE_ID } from "./types.js";
2
2
  import { ObjectRegistry, SmrtCollection, SmrtObject, createQualifiedName, isQualifiedName, parseQualifiedName, smrt } from "@happyvertical/smrt-core";
3
3
  import { importWorkspaceModule } from "@happyvertical/smrt-core/utils/import-workspace-module";
4
4
  //#region src/__smrt-register__.ts
5
- ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-features\",\"packageVersion\":\"0.44.1\",\"objects\":{\"@happyvertical/smrt-features:FeatureDefinition\":{\"name\":\"featuredefinition\",\"className\":\"FeatureDefinition\",\"qualifiedName\":\"@happyvertical/smrt-features:FeatureDefinition\",\"collection\":\"featuredefinitions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/features/src/feature-definition.ts\",\"packageName\":\"@happyvertical/smrt-features\",\"fields\":{\"featureKey\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"packageName\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"qualifiedClassName\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"className\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"localId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"defaultEnabled\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"label\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"visibility\":{\"type\":\"text\",\"required\":false,\"default\":\"public\"}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"FeatureMetadata\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"metadata\",\"type\":\"FeatureMetadata | null\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"_smrt_feature_definitions\",\"api\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"],\"exclude\":[\"getMetadata\",\"setMetadata\"]},\"mcp\":{\"include\":[\"list\",\"get\"],\"exclude\":[\"getMetadata\",\"setMetadata\"]},\"conflictColumns\":[\"feature_key\"]},\"extends\":\"SmrtObject\",\"exportName\":\"FeatureDefinition\",\"collectionExportName\":\"FeatureDefinitionCollection\",\"schema\":{\"tableName\":\"_smrt_feature_definitions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"_smrt_feature_definitions\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"feature_key\\\" TEXT DEFAULT '',\\n \\\"package_name\\\" TEXT DEFAULT '',\\n \\\"qualified_class_name\\\" TEXT DEFAULT '',\\n \\\"class_name\\\" TEXT DEFAULT '',\\n \\\"local_id\\\" TEXT DEFAULT '',\\n \\\"default_enabled\\\" BOOLEAN DEFAULT FALSE,\\n \\\"label\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"visibility\\\" TEXT DEFAULT 'public'\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"feature_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"package_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"qualified_class_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"class_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"local_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"default_enabled\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"label\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"visibility\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"public\"}},\"indexes\":[{\"name\":\"_smrt_feature_definitions_feature_key_idx\",\"columns\":[\"feature_key\"],\"unique\":true},{\"name\":\"_smrt_feature_definitions_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"_smrt_feature_definitions_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"8813204c\"}},\"@happyvertical/smrt-features:FeatureDefinitionCollection\":{\"name\":\"featuredefinitioncollection\",\"className\":\"FeatureDefinitionCollection\",\"qualifiedName\":\"@happyvertical/smrt-features:FeatureDefinitionCollection\",\"collection\":\"featuredefinitions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/features/src/feature-definitions.ts\",\"packageName\":\"@happyvertical/smrt-features\",\"fields\":{},\"methods\":{\"findByFeatureKey\":{\"name\":\"findByFeatureKey\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureDefinition | null>\",\"isStatic\":false,\"isPublic\":true},\"findByPackageName\":{\"name\":\"findByPackageName\",\"async\":true,\"parameters\":[{\"name\":\"packageName\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureDefinition[]>\",\"isStatic\":false,\"isPublic\":true},\"upsertDefinition\":{\"name\":\"upsertDefinition\",\"async\":true,\"parameters\":[{\"name\":\"seed\",\"type\":\"FeatureDefinitionSeed\",\"optional\":false}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"_smrt_feature_definitions\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FeatureDefinition\",\"exportName\":\"FeatureDefinitionCollection\",\"collectionExportName\":\"FeatureDefinitionCollectionCollection\",\"schema\":{\"tableName\":\"_smrt_feature_definitions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"_smrt_feature_definitions\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"_smrt_feature_definitions_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"_smrt_feature_definitions_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"e4eaf68f\"}},\"@happyvertical/smrt-features:FeatureOverride\":{\"name\":\"featureoverride\",\"className\":\"FeatureOverride\",\"qualifiedName\":\"@happyvertical/smrt-features:FeatureOverride\",\"collection\":\"featureoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/features/src/feature-override.ts\",\"packageName\":\"@happyvertical/smrt-features\",\"fields\":{\"featureKey\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"scopeType\":{\"type\":\"text\",\"required\":false,\"default\":\"global\"},\"scopeId\":{\"type\":\"text\",\"required\":false},\"effect\":{\"type\":\"text\",\"required\":false}},\"methods\":{\"isInherit\":{\"name\":\"isInherit\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isEnabled\":{\"name\":\"isEnabled\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isDisabled\":{\"name\":\"isDisabled\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"_smrt_feature_overrides\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"cli\":{\"exclude\":[\"isInherit\",\"isEnabled\",\"isDisabled\"]},\"mcp\":{\"exclude\":[\"isInherit\",\"isEnabled\",\"isDisabled\"]},\"conflictColumns\":[\"feature_key\",\"scope_type\",\"scope_id\"]},\"extends\":\"SmrtObject\",\"exportName\":\"FeatureOverride\",\"collectionExportName\":\"FeatureOverrideCollection\",\"schema\":{\"tableName\":\"_smrt_feature_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"_smrt_feature_overrides\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"feature_key\\\" TEXT DEFAULT '',\\n \\\"scope_type\\\" TEXT DEFAULT 'global',\\n \\\"scope_id\\\" TEXT,\\n \\\"effect\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"feature_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"scope_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"global\"},\"scope_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"_smrt_feature_overrides_feature_key_scope_type_idx\",\"columns\":[\"feature_key\",\"scope_type\",\"scope_id\"],\"unique\":true},{\"name\":\"_smrt_feature_overrides_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"_smrt_feature_overrides_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"d61cf901\"}},\"@happyvertical/smrt-features:FeatureOverrideCollection\":{\"name\":\"featureoverridecollection\",\"className\":\"FeatureOverrideCollection\",\"qualifiedName\":\"@happyvertical/smrt-features:FeatureOverrideCollection\",\"collection\":\"featureoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/features/src/feature-overrides.ts\",\"packageName\":\"@happyvertical/smrt-features\",\"fields\":{},\"methods\":{\"findByFeatureKey\":{\"name\":\"findByFeatureKey\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findByFeatureAndScope\":{\"name\":\"findByFeatureAndScope\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"scopeType\",\"type\":\"FeatureScopeType\",\"optional\":false},{\"name\":\"scopeId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride | null>\",\"isStatic\":false,\"isPublic\":true},\"getGlobalOverride\":{\"name\":\"getGlobalOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride | null>\",\"isStatic\":false,\"isPublic\":true},\"getTenantOverride\":{\"name\":\"getTenantOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride | null>\",\"isStatic\":false,\"isPublic\":true},\"getOverrideMap\":{\"name\":\"getOverrideMap\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"scopeType\",\"type\":\"FeatureScopeType\",\"optional\":false},{\"name\":\"scopeIds\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<Map<string, FeatureOverride>>\",\"isStatic\":false,\"isPublic\":true},\"setOverride\":{\"name\":\"setOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"scopeType\",\"type\":\"FeatureScopeType\",\"optional\":false},{\"name\":\"scopeId\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"FeatureOverrideEffect\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride>\",\"isStatic\":false,\"isPublic\":true},\"setGlobalOverride\":{\"name\":\"setGlobalOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"FeatureOverrideEffect\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride>\",\"isStatic\":false,\"isPublic\":true},\"setTenantOverride\":{\"name\":\"setTenantOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"FeatureOverrideEffect\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride>\",\"isStatic\":false,\"isPublic\":true},\"removeOverride\":{\"name\":\"removeOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"scopeType\",\"type\":\"FeatureScopeType\",\"optional\":false},{\"name\":\"scopeId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"_smrt_feature_overrides\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FeatureOverride\",\"exportName\":\"FeatureOverrideCollection\",\"collectionExportName\":\"FeatureOverrideCollectionCollection\",\"schema\":{\"tableName\":\"_smrt_feature_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"_smrt_feature_overrides\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"_smrt_feature_overrides_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"_smrt_feature_overrides_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"e0e6e44b\"}}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-users\"]}"));
5
+ ObjectRegistry.registerPackageManifest(JSON.parse("{\"version\":\"1.0.0\",\"timestamp\":0,\"packageName\":\"@happyvertical/smrt-features\",\"packageVersion\":\"0.45.1\",\"objects\":{\"@happyvertical/smrt-features:FeatureDefinition\":{\"name\":\"featuredefinition\",\"className\":\"FeatureDefinition\",\"qualifiedName\":\"@happyvertical/smrt-features:FeatureDefinition\",\"collection\":\"featuredefinitions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/features/src/feature-definition.ts\",\"packageName\":\"@happyvertical/smrt-features\",\"fields\":{\"featureKey\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"packageName\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"qualifiedClassName\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"className\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"localId\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"defaultEnabled\":{\"type\":\"boolean\",\"required\":false,\"default\":false},\"label\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"description\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"metadata\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"visibility\":{\"type\":\"text\",\"required\":false,\"default\":\"public\"}},\"methods\":{\"getMetadata\":{\"name\":\"getMetadata\",\"async\":false,\"parameters\":[],\"returnType\":\"FeatureMetadata\",\"isStatic\":false,\"isPublic\":true},\"setMetadata\":{\"name\":\"setMetadata\",\"async\":false,\"parameters\":[{\"name\":\"metadata\",\"type\":\"FeatureMetadata | null\",\"optional\":false}],\"returnType\":\"void\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"_smrt_feature_definitions\",\"api\":{\"include\":[\"list\",\"get\"]},\"cli\":{\"include\":[\"list\",\"get\"],\"exclude\":[\"getMetadata\",\"setMetadata\"]},\"mcp\":{\"include\":[\"list\",\"get\"],\"exclude\":[\"getMetadata\",\"setMetadata\"]},\"conflictColumns\":[\"feature_key\"]},\"extends\":\"SmrtObject\",\"exportName\":\"FeatureDefinition\",\"collectionExportName\":\"FeatureDefinitionCollection\",\"schema\":{\"tableName\":\"_smrt_feature_definitions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"_smrt_feature_definitions\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"feature_key\\\" TEXT DEFAULT '',\\n \\\"package_name\\\" TEXT DEFAULT '',\\n \\\"qualified_class_name\\\" TEXT DEFAULT '',\\n \\\"class_name\\\" TEXT DEFAULT '',\\n \\\"local_id\\\" TEXT DEFAULT '',\\n \\\"default_enabled\\\" BOOLEAN DEFAULT FALSE,\\n \\\"label\\\" TEXT DEFAULT '',\\n \\\"description\\\" TEXT DEFAULT '',\\n \\\"metadata\\\" TEXT DEFAULT '',\\n \\\"visibility\\\" TEXT DEFAULT 'public'\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"feature_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"package_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"qualified_class_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"class_name\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"local_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"default_enabled\":{\"type\":\"BOOLEAN\",\"notNull\":false,\"unique\":false,\"default\":false},\"label\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"description\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"metadata\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"visibility\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"public\"}},\"indexes\":[{\"name\":\"_smrt_feature_definitions_feature_key_idx\",\"columns\":[\"feature_key\"],\"unique\":true},{\"name\":\"_smrt_feature_definitions_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"_smrt_feature_definitions_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"8813204c\"}},\"@happyvertical/smrt-features:FeatureDefinitionCollection\":{\"name\":\"featuredefinitioncollection\",\"className\":\"FeatureDefinitionCollection\",\"qualifiedName\":\"@happyvertical/smrt-features:FeatureDefinitionCollection\",\"collection\":\"featuredefinitions\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/features/src/feature-definitions.ts\",\"packageName\":\"@happyvertical/smrt-features\",\"fields\":{},\"methods\":{\"findByFeatureKey\":{\"name\":\"findByFeatureKey\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureDefinition | null>\",\"isStatic\":false,\"isPublic\":true},\"findByPackageName\":{\"name\":\"findByPackageName\",\"async\":true,\"parameters\":[{\"name\":\"packageName\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureDefinition[]>\",\"isStatic\":false,\"isPublic\":true},\"upsertDefinition\":{\"name\":\"upsertDefinition\",\"async\":true,\"parameters\":[{\"name\":\"seed\",\"type\":\"FeatureDefinitionSeed\",\"optional\":false}],\"returnType\":\"Promise<object>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"_smrt_feature_definitions\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FeatureDefinition\",\"exportName\":\"FeatureDefinitionCollection\",\"collectionExportName\":\"FeatureDefinitionCollectionCollection\",\"schema\":{\"tableName\":\"_smrt_feature_definitions\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"_smrt_feature_definitions\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"_smrt_feature_definitions_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"_smrt_feature_definitions_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"e4eaf68f\"}},\"@happyvertical/smrt-features:FeatureOverride\":{\"name\":\"featureoverride\",\"className\":\"FeatureOverride\",\"qualifiedName\":\"@happyvertical/smrt-features:FeatureOverride\",\"collection\":\"featureoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/features/src/feature-override.ts\",\"packageName\":\"@happyvertical/smrt-features\",\"fields\":{\"featureKey\":{\"type\":\"text\",\"required\":false,\"default\":\"\"},\"scopeType\":{\"type\":\"text\",\"required\":false,\"default\":\"global\"},\"scopeId\":{\"type\":\"text\",\"required\":false},\"effect\":{\"type\":\"text\",\"required\":false}},\"methods\":{\"isInherit\":{\"name\":\"isInherit\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isEnabled\":{\"name\":\"isEnabled\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true},\"isDisabled\":{\"name\":\"isDisabled\",\"async\":false,\"parameters\":[],\"returnType\":\"boolean\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"_smrt_feature_overrides\",\"api\":{\"include\":[\"list\",\"get\",\"create\",\"update\",\"delete\"]},\"cli\":{\"exclude\":[\"isInherit\",\"isEnabled\",\"isDisabled\"]},\"mcp\":{\"exclude\":[\"isInherit\",\"isEnabled\",\"isDisabled\"]},\"conflictColumns\":[\"feature_key\",\"scope_type\",\"scope_id\"]},\"extends\":\"SmrtObject\",\"exportName\":\"FeatureOverride\",\"collectionExportName\":\"FeatureOverrideCollection\",\"schema\":{\"tableName\":\"_smrt_feature_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"_smrt_feature_overrides\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"feature_key\\\" TEXT DEFAULT '',\\n \\\"scope_type\\\" TEXT DEFAULT 'global',\\n \\\"scope_id\\\" TEXT,\\n \\\"effect\\\" TEXT\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"feature_key\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"\"},\"scope_type\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false,\"default\":\"global\"},\"scope_id\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false},\"effect\":{\"type\":\"TEXT\",\"notNull\":false,\"unique\":false}},\"indexes\":[{\"name\":\"_smrt_feature_overrides_feature_key_scope_type_idx\",\"columns\":[\"feature_key\",\"scope_type\",\"scope_id\"],\"unique\":true},{\"name\":\"_smrt_feature_overrides_slug_context_idx\",\"columns\":[\"slug\",\"context\"]},{\"name\":\"_smrt_feature_overrides_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"d61cf901\"}},\"@happyvertical/smrt-features:FeatureOverrideCollection\":{\"name\":\"featureoverridecollection\",\"className\":\"FeatureOverrideCollection\",\"qualifiedName\":\"@happyvertical/smrt-features:FeatureOverrideCollection\",\"collection\":\"featureoverrides\",\"filePath\":\"/home/runner/work/smrt/smrt/packages/features/src/feature-overrides.ts\",\"packageName\":\"@happyvertical/smrt-features\",\"fields\":{},\"methods\":{\"findByFeatureKey\":{\"name\":\"findByFeatureKey\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride[]>\",\"isStatic\":false,\"isPublic\":true},\"findByFeatureAndScope\":{\"name\":\"findByFeatureAndScope\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"scopeType\",\"type\":\"FeatureScopeType\",\"optional\":false},{\"name\":\"scopeId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride | null>\",\"isStatic\":false,\"isPublic\":true},\"getGlobalOverride\":{\"name\":\"getGlobalOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride | null>\",\"isStatic\":false,\"isPublic\":true},\"getTenantOverride\":{\"name\":\"getTenantOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride | null>\",\"isStatic\":false,\"isPublic\":true},\"getOverrideMap\":{\"name\":\"getOverrideMap\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"scopeType\",\"type\":\"FeatureScopeType\",\"optional\":false},{\"name\":\"scopeIds\",\"type\":\"string[]\",\"optional\":false}],\"returnType\":\"Promise<Map<string, FeatureOverride>>\",\"isStatic\":false,\"isPublic\":true},\"setOverride\":{\"name\":\"setOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"scopeType\",\"type\":\"FeatureScopeType\",\"optional\":false},{\"name\":\"scopeId\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"FeatureOverrideEffect\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride>\",\"isStatic\":false,\"isPublic\":true},\"setGlobalOverride\":{\"name\":\"setGlobalOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"FeatureOverrideEffect\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride>\",\"isStatic\":false,\"isPublic\":true},\"setTenantOverride\":{\"name\":\"setTenantOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"tenantId\",\"type\":\"string\",\"optional\":false},{\"name\":\"effect\",\"type\":\"FeatureOverrideEffect\",\"optional\":false}],\"returnType\":\"Promise<FeatureOverride>\",\"isStatic\":false,\"isPublic\":true},\"removeOverride\":{\"name\":\"removeOverride\",\"async\":true,\"parameters\":[{\"name\":\"featureKey\",\"type\":\"string\",\"optional\":false},{\"name\":\"scopeType\",\"type\":\"FeatureScopeType\",\"optional\":false},{\"name\":\"scopeId\",\"type\":\"string\",\"optional\":false}],\"returnType\":\"Promise<boolean>\",\"isStatic\":false,\"isPublic\":true}},\"decoratorConfig\":{\"tableName\":\"_smrt_feature_overrides\"},\"extends\":\"SmrtCollection\",\"extendsTypeArg\":\"FeatureOverride\",\"exportName\":\"FeatureOverrideCollection\",\"collectionExportName\":\"FeatureOverrideCollectionCollection\",\"schema\":{\"tableName\":\"_smrt_feature_overrides\",\"ddl\":\"CREATE TABLE IF NOT EXISTS \\\"_smrt_feature_overrides\\\" (\\n \\\"id\\\" UUID PRIMARY KEY NOT NULL,\\n \\\"slug\\\" TEXT NOT NULL,\\n \\\"context\\\" TEXT NOT NULL DEFAULT '',\\n \\\"created_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\\n \\\"updated_at\\\" TIMESTAMP NOT NULL DEFAULT current_timestamp\\n);\",\"columns\":{\"id\":{\"type\":\"UUID\",\"primaryKey\":true,\"referenceKind\":\"id\",\"notNull\":true},\"slug\":{\"type\":\"TEXT\",\"notNull\":true},\"context\":{\"type\":\"TEXT\",\"notNull\":true,\"default\":\"\"},\"created_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"},\"updated_at\":{\"type\":\"TIMESTAMP\",\"notNull\":true,\"default\":\"current_timestamp\"}},\"indexes\":[{\"name\":\"_smrt_feature_overrides_slug_context_idx\",\"columns\":[\"slug\",\"context\"],\"unique\":true},{\"name\":\"_smrt_feature_overrides_created_at_idx\",\"columns\":[\"created_at\"]}],\"version\":\"e0e6e44b\"}}},\"moduleType\":\"smrt\",\"smrtDependencies\":[\"@happyvertical/smrt-core\",\"@happyvertical/smrt-users\"]}"));
6
6
  //#endregion
7
7
  //#region src/utils.ts
8
8
  function createFeatureKey(qualifiedClassName, localId) {
@@ -2,7 +2,7 @@
2
2
  "version": "1.0.0",
3
3
  "timestamp": 0,
4
4
  "packageName": "@happyvertical/smrt-features",
5
- "packageVersion": "0.44.1",
5
+ "packageVersion": "0.45.1",
6
6
  "objects": {
7
7
  "@happyvertical/smrt-features:FeatureDefinition": {
8
8
  "name": "featuredefinition",
@@ -3,12 +3,12 @@
3
3
  "sensitiveFieldsExcluded": true,
4
4
  "generatedAt": "1970-01-01T00:00:00.000Z",
5
5
  "packageName": "@happyvertical/smrt-features",
6
- "packageVersion": "0.44.1",
6
+ "packageVersion": "0.45.1",
7
7
  "sourceManifestPath": "dist/manifest.json",
8
8
  "agentDocPath": "AGENTS.md",
9
9
  "sourceHashes": {
10
- "manifest": "59fe2dd7b80b82c6fa556c75a1c9446c34d33fd085236810d5b33672c61f4bd8",
11
- "packageJson": "e45b607a6f2294a19784f4dcf2f0ab601b0767301e7f4716697828bd51249454",
10
+ "manifest": "44a0049c96776077bbc188db2a36e6d2f1d1ee5a8af73eda8980e39db462ee98",
11
+ "packageJson": "2c50f00d296398ea394cff7ef70b3c5beba4cf1658927e39b82526796d82fa4b",
12
12
  "agents": "0d14be2150e562d6834a67a6fd2a5d8bf63a1654e1f5a5165d1c97c2057574a8"
13
13
  },
14
14
  "exports": [
@@ -224,7 +224,68 @@
224
224
  "returns": "Promise<object>"
225
225
  }
226
226
  ],
227
- "surfaces": [],
227
+ "surfaces": [
228
+ {
229
+ "kind": "api",
230
+ "name": "featuredefinitions.findByFeatureKey",
231
+ "operation": "findByFeatureKey",
232
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection",
233
+ "path": "/featuredefinitions/findByFeatureKey",
234
+ "method": "POST"
235
+ },
236
+ {
237
+ "kind": "api",
238
+ "name": "featuredefinitions.findByPackageName",
239
+ "operation": "findByPackageName",
240
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection",
241
+ "path": "/featuredefinitions/findByPackageName",
242
+ "method": "POST"
243
+ },
244
+ {
245
+ "kind": "api",
246
+ "name": "featuredefinitions.upsertDefinition",
247
+ "operation": "upsertDefinition",
248
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection",
249
+ "path": "/featuredefinitions/upsertDefinition",
250
+ "method": "POST"
251
+ },
252
+ {
253
+ "kind": "cli",
254
+ "name": "featuredefinitioncollection_findByFeatureKey",
255
+ "operation": "findByFeatureKey",
256
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
257
+ },
258
+ {
259
+ "kind": "cli",
260
+ "name": "featuredefinitioncollection_findByPackageName",
261
+ "operation": "findByPackageName",
262
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
263
+ },
264
+ {
265
+ "kind": "cli",
266
+ "name": "featuredefinitioncollection_upsertDefinition",
267
+ "operation": "upsertDefinition",
268
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
269
+ },
270
+ {
271
+ "kind": "mcp",
272
+ "name": "featuredefinitioncollection_findbyfeaturekey",
273
+ "operation": "findByFeatureKey",
274
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
275
+ },
276
+ {
277
+ "kind": "mcp",
278
+ "name": "featuredefinitioncollection_findbypackagename",
279
+ "operation": "findByPackageName",
280
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
281
+ },
282
+ {
283
+ "kind": "mcp",
284
+ "name": "featuredefinitioncollection_upsertdefinition",
285
+ "operation": "upsertDefinition",
286
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
287
+ }
288
+ ],
228
289
  "relationshipFeatures": [
229
290
  "uuidColumns"
230
291
  ],
@@ -506,7 +567,188 @@
506
567
  "returns": "Promise<FeatureOverride>"
507
568
  }
508
569
  ],
509
- "surfaces": [],
570
+ "surfaces": [
571
+ {
572
+ "kind": "api",
573
+ "name": "featureoverrides.findByFeatureKey",
574
+ "operation": "findByFeatureKey",
575
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
576
+ "path": "/featureoverrides/findByFeatureKey",
577
+ "method": "POST"
578
+ },
579
+ {
580
+ "kind": "api",
581
+ "name": "featureoverrides.findByFeatureAndScope",
582
+ "operation": "findByFeatureAndScope",
583
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
584
+ "path": "/featureoverrides/findByFeatureAndScope",
585
+ "method": "POST"
586
+ },
587
+ {
588
+ "kind": "api",
589
+ "name": "featureoverrides.getGlobalOverride",
590
+ "operation": "getGlobalOverride",
591
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
592
+ "path": "/featureoverrides/getGlobalOverride",
593
+ "method": "POST"
594
+ },
595
+ {
596
+ "kind": "api",
597
+ "name": "featureoverrides.getTenantOverride",
598
+ "operation": "getTenantOverride",
599
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
600
+ "path": "/featureoverrides/getTenantOverride",
601
+ "method": "POST"
602
+ },
603
+ {
604
+ "kind": "api",
605
+ "name": "featureoverrides.getOverrideMap",
606
+ "operation": "getOverrideMap",
607
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
608
+ "path": "/featureoverrides/getOverrideMap",
609
+ "method": "POST"
610
+ },
611
+ {
612
+ "kind": "api",
613
+ "name": "featureoverrides.setOverride",
614
+ "operation": "setOverride",
615
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
616
+ "path": "/featureoverrides/setOverride",
617
+ "method": "POST"
618
+ },
619
+ {
620
+ "kind": "api",
621
+ "name": "featureoverrides.setGlobalOverride",
622
+ "operation": "setGlobalOverride",
623
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
624
+ "path": "/featureoverrides/setGlobalOverride",
625
+ "method": "POST"
626
+ },
627
+ {
628
+ "kind": "api",
629
+ "name": "featureoverrides.setTenantOverride",
630
+ "operation": "setTenantOverride",
631
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
632
+ "path": "/featureoverrides/setTenantOverride",
633
+ "method": "POST"
634
+ },
635
+ {
636
+ "kind": "api",
637
+ "name": "featureoverrides.removeOverride",
638
+ "operation": "removeOverride",
639
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
640
+ "path": "/featureoverrides/removeOverride",
641
+ "method": "POST"
642
+ },
643
+ {
644
+ "kind": "cli",
645
+ "name": "featureoverridecollection_findByFeatureKey",
646
+ "operation": "findByFeatureKey",
647
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
648
+ },
649
+ {
650
+ "kind": "cli",
651
+ "name": "featureoverridecollection_findByFeatureAndScope",
652
+ "operation": "findByFeatureAndScope",
653
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
654
+ },
655
+ {
656
+ "kind": "cli",
657
+ "name": "featureoverridecollection_getGlobalOverride",
658
+ "operation": "getGlobalOverride",
659
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
660
+ },
661
+ {
662
+ "kind": "cli",
663
+ "name": "featureoverridecollection_getTenantOverride",
664
+ "operation": "getTenantOverride",
665
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
666
+ },
667
+ {
668
+ "kind": "cli",
669
+ "name": "featureoverridecollection_getOverrideMap",
670
+ "operation": "getOverrideMap",
671
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
672
+ },
673
+ {
674
+ "kind": "cli",
675
+ "name": "featureoverridecollection_setOverride",
676
+ "operation": "setOverride",
677
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
678
+ },
679
+ {
680
+ "kind": "cli",
681
+ "name": "featureoverridecollection_setGlobalOverride",
682
+ "operation": "setGlobalOverride",
683
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
684
+ },
685
+ {
686
+ "kind": "cli",
687
+ "name": "featureoverridecollection_setTenantOverride",
688
+ "operation": "setTenantOverride",
689
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
690
+ },
691
+ {
692
+ "kind": "cli",
693
+ "name": "featureoverridecollection_removeOverride",
694
+ "operation": "removeOverride",
695
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
696
+ },
697
+ {
698
+ "kind": "mcp",
699
+ "name": "featureoverridecollection_findbyfeaturekey",
700
+ "operation": "findByFeatureKey",
701
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
702
+ },
703
+ {
704
+ "kind": "mcp",
705
+ "name": "featureoverridecollection_findbyfeatureandscope",
706
+ "operation": "findByFeatureAndScope",
707
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
708
+ },
709
+ {
710
+ "kind": "mcp",
711
+ "name": "featureoverridecollection_getglobaloverride",
712
+ "operation": "getGlobalOverride",
713
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
714
+ },
715
+ {
716
+ "kind": "mcp",
717
+ "name": "featureoverridecollection_gettenantoverride",
718
+ "operation": "getTenantOverride",
719
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
720
+ },
721
+ {
722
+ "kind": "mcp",
723
+ "name": "featureoverridecollection_getoverridemap",
724
+ "operation": "getOverrideMap",
725
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
726
+ },
727
+ {
728
+ "kind": "mcp",
729
+ "name": "featureoverridecollection_setoverride",
730
+ "operation": "setOverride",
731
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
732
+ },
733
+ {
734
+ "kind": "mcp",
735
+ "name": "featureoverridecollection_setglobaloverride",
736
+ "operation": "setGlobalOverride",
737
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
738
+ },
739
+ {
740
+ "kind": "mcp",
741
+ "name": "featureoverridecollection_settenantoverride",
742
+ "operation": "setTenantOverride",
743
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
744
+ },
745
+ {
746
+ "kind": "mcp",
747
+ "name": "featureoverridecollection_removeoverride",
748
+ "operation": "removeOverride",
749
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
750
+ }
751
+ ],
510
752
  "relationshipFeatures": [
511
753
  "uuidColumns"
512
754
  ],
@@ -555,6 +797,66 @@
555
797
  "operation": "get",
556
798
  "objectName": "@happyvertical/smrt-features:FeatureDefinition"
557
799
  },
800
+ {
801
+ "kind": "api",
802
+ "name": "featuredefinitions.findByFeatureKey",
803
+ "operation": "findByFeatureKey",
804
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection",
805
+ "path": "/featuredefinitions/findByFeatureKey",
806
+ "method": "POST"
807
+ },
808
+ {
809
+ "kind": "api",
810
+ "name": "featuredefinitions.findByPackageName",
811
+ "operation": "findByPackageName",
812
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection",
813
+ "path": "/featuredefinitions/findByPackageName",
814
+ "method": "POST"
815
+ },
816
+ {
817
+ "kind": "api",
818
+ "name": "featuredefinitions.upsertDefinition",
819
+ "operation": "upsertDefinition",
820
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection",
821
+ "path": "/featuredefinitions/upsertDefinition",
822
+ "method": "POST"
823
+ },
824
+ {
825
+ "kind": "cli",
826
+ "name": "featuredefinitioncollection_findByFeatureKey",
827
+ "operation": "findByFeatureKey",
828
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
829
+ },
830
+ {
831
+ "kind": "cli",
832
+ "name": "featuredefinitioncollection_findByPackageName",
833
+ "operation": "findByPackageName",
834
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
835
+ },
836
+ {
837
+ "kind": "cli",
838
+ "name": "featuredefinitioncollection_upsertDefinition",
839
+ "operation": "upsertDefinition",
840
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
841
+ },
842
+ {
843
+ "kind": "mcp",
844
+ "name": "featuredefinitioncollection_findbyfeaturekey",
845
+ "operation": "findByFeatureKey",
846
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
847
+ },
848
+ {
849
+ "kind": "mcp",
850
+ "name": "featuredefinitioncollection_findbypackagename",
851
+ "operation": "findByPackageName",
852
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
853
+ },
854
+ {
855
+ "kind": "mcp",
856
+ "name": "featuredefinitioncollection_upsertdefinition",
857
+ "operation": "upsertDefinition",
858
+ "objectName": "@happyvertical/smrt-features:FeatureDefinitionCollection"
859
+ },
558
860
  {
559
861
  "kind": "api",
560
862
  "name": "featureoverrides.list",
@@ -654,6 +956,186 @@
654
956
  "name": "featureoverride_delete",
655
957
  "operation": "delete",
656
958
  "objectName": "@happyvertical/smrt-features:FeatureOverride"
959
+ },
960
+ {
961
+ "kind": "api",
962
+ "name": "featureoverrides.findByFeatureKey",
963
+ "operation": "findByFeatureKey",
964
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
965
+ "path": "/featureoverrides/findByFeatureKey",
966
+ "method": "POST"
967
+ },
968
+ {
969
+ "kind": "api",
970
+ "name": "featureoverrides.findByFeatureAndScope",
971
+ "operation": "findByFeatureAndScope",
972
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
973
+ "path": "/featureoverrides/findByFeatureAndScope",
974
+ "method": "POST"
975
+ },
976
+ {
977
+ "kind": "api",
978
+ "name": "featureoverrides.getGlobalOverride",
979
+ "operation": "getGlobalOverride",
980
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
981
+ "path": "/featureoverrides/getGlobalOverride",
982
+ "method": "POST"
983
+ },
984
+ {
985
+ "kind": "api",
986
+ "name": "featureoverrides.getTenantOverride",
987
+ "operation": "getTenantOverride",
988
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
989
+ "path": "/featureoverrides/getTenantOverride",
990
+ "method": "POST"
991
+ },
992
+ {
993
+ "kind": "api",
994
+ "name": "featureoverrides.getOverrideMap",
995
+ "operation": "getOverrideMap",
996
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
997
+ "path": "/featureoverrides/getOverrideMap",
998
+ "method": "POST"
999
+ },
1000
+ {
1001
+ "kind": "api",
1002
+ "name": "featureoverrides.setOverride",
1003
+ "operation": "setOverride",
1004
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
1005
+ "path": "/featureoverrides/setOverride",
1006
+ "method": "POST"
1007
+ },
1008
+ {
1009
+ "kind": "api",
1010
+ "name": "featureoverrides.setGlobalOverride",
1011
+ "operation": "setGlobalOverride",
1012
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
1013
+ "path": "/featureoverrides/setGlobalOverride",
1014
+ "method": "POST"
1015
+ },
1016
+ {
1017
+ "kind": "api",
1018
+ "name": "featureoverrides.setTenantOverride",
1019
+ "operation": "setTenantOverride",
1020
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
1021
+ "path": "/featureoverrides/setTenantOverride",
1022
+ "method": "POST"
1023
+ },
1024
+ {
1025
+ "kind": "api",
1026
+ "name": "featureoverrides.removeOverride",
1027
+ "operation": "removeOverride",
1028
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection",
1029
+ "path": "/featureoverrides/removeOverride",
1030
+ "method": "POST"
1031
+ },
1032
+ {
1033
+ "kind": "cli",
1034
+ "name": "featureoverridecollection_findByFeatureKey",
1035
+ "operation": "findByFeatureKey",
1036
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1037
+ },
1038
+ {
1039
+ "kind": "cli",
1040
+ "name": "featureoverridecollection_findByFeatureAndScope",
1041
+ "operation": "findByFeatureAndScope",
1042
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1043
+ },
1044
+ {
1045
+ "kind": "cli",
1046
+ "name": "featureoverridecollection_getGlobalOverride",
1047
+ "operation": "getGlobalOverride",
1048
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1049
+ },
1050
+ {
1051
+ "kind": "cli",
1052
+ "name": "featureoverridecollection_getTenantOverride",
1053
+ "operation": "getTenantOverride",
1054
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1055
+ },
1056
+ {
1057
+ "kind": "cli",
1058
+ "name": "featureoverridecollection_getOverrideMap",
1059
+ "operation": "getOverrideMap",
1060
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1061
+ },
1062
+ {
1063
+ "kind": "cli",
1064
+ "name": "featureoverridecollection_setOverride",
1065
+ "operation": "setOverride",
1066
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1067
+ },
1068
+ {
1069
+ "kind": "cli",
1070
+ "name": "featureoverridecollection_setGlobalOverride",
1071
+ "operation": "setGlobalOverride",
1072
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1073
+ },
1074
+ {
1075
+ "kind": "cli",
1076
+ "name": "featureoverridecollection_setTenantOverride",
1077
+ "operation": "setTenantOverride",
1078
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1079
+ },
1080
+ {
1081
+ "kind": "cli",
1082
+ "name": "featureoverridecollection_removeOverride",
1083
+ "operation": "removeOverride",
1084
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1085
+ },
1086
+ {
1087
+ "kind": "mcp",
1088
+ "name": "featureoverridecollection_findbyfeaturekey",
1089
+ "operation": "findByFeatureKey",
1090
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1091
+ },
1092
+ {
1093
+ "kind": "mcp",
1094
+ "name": "featureoverridecollection_findbyfeatureandscope",
1095
+ "operation": "findByFeatureAndScope",
1096
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1097
+ },
1098
+ {
1099
+ "kind": "mcp",
1100
+ "name": "featureoverridecollection_getglobaloverride",
1101
+ "operation": "getGlobalOverride",
1102
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1103
+ },
1104
+ {
1105
+ "kind": "mcp",
1106
+ "name": "featureoverridecollection_gettenantoverride",
1107
+ "operation": "getTenantOverride",
1108
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1109
+ },
1110
+ {
1111
+ "kind": "mcp",
1112
+ "name": "featureoverridecollection_getoverridemap",
1113
+ "operation": "getOverrideMap",
1114
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1115
+ },
1116
+ {
1117
+ "kind": "mcp",
1118
+ "name": "featureoverridecollection_setoverride",
1119
+ "operation": "setOverride",
1120
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1121
+ },
1122
+ {
1123
+ "kind": "mcp",
1124
+ "name": "featureoverridecollection_setglobaloverride",
1125
+ "operation": "setGlobalOverride",
1126
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1127
+ },
1128
+ {
1129
+ "kind": "mcp",
1130
+ "name": "featureoverridecollection_settenantoverride",
1131
+ "operation": "setTenantOverride",
1132
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
1133
+ },
1134
+ {
1135
+ "kind": "mcp",
1136
+ "name": "featureoverridecollection_removeoverride",
1137
+ "operation": "removeOverride",
1138
+ "objectName": "@happyvertical/smrt-features:FeatureOverrideCollection"
657
1139
  }
658
1140
  ],
659
1141
  "prompts": [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-features",
3
- "version": "0.44.1",
3
+ "version": "0.45.1",
4
4
  "description": "Code-first feature flags and tenant-aware overrides for the SMRT framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,16 +19,16 @@
19
19
  "./manifest.json": "./dist/manifest.json"
20
20
  },
21
21
  "dependencies": {
22
- "@happyvertical/smrt-core": "0.44.1"
22
+ "@happyvertical/smrt-core": "0.45.1"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/node": "24.13.2",
26
26
  "typescript": "5.9.3",
27
27
  "vite": "8.1.4",
28
28
  "vitest": "4.1.10",
29
- "@happyvertical/smrt-cli": "0.44.1",
30
- "@happyvertical/smrt-users": "0.44.1",
31
- "@happyvertical/smrt-vitest": "0.44.1"
29
+ "@happyvertical/smrt-cli": "0.45.1",
30
+ "@happyvertical/smrt-users": "0.45.1",
31
+ "@happyvertical/smrt-vitest": "0.45.1"
32
32
  },
33
33
  "keywords": [
34
34
  "smrt",