{"_id":"@core-tecnologias-empresariales/core-feature-flags","name":"@core-tecnologias-empresariales/core-feature-flags","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@core-tecnologias-empresariales/core-feature-flags","version":"0.1.0","description":"Evaluación de feature flags (producto, organización, usuario, plan, entorno, porcentaje) para el ecosistema Core Tecnología Empresarial.","license":"UNLICENSED","publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":"./dist/index.js"},"devDependencies":{"typescript":"^5.7.0","@types/node":"^20.14.0"},"scripts":{"build":"tsc -p tsconfig.json","test":"tsc -p tsconfig.json && node --test dist"},"_id":"@core-tecnologias-empresariales/core-feature-flags@0.1.0","_integrity":"sha512-1BHmlG2MhIf8FJXpICM88Obw/qvZYT/XS+II2yf1AggbubPR3F8aYe9xuxTFWEdc8sg97BRlcukT/PHeUzpaew==","_resolved":"C:\\Users\\Administrador\\AppData\\Local\\Temp\\1017597a753707e0b2310ac1aaa556f7\\core-tecnologias-empresariales-core-feature-flags-0.1.0.tgz","_from":"file:core-tecnologias-empresariales-core-feature-flags-0.1.0.tgz","_nodeVersion":"20.20.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-1BHmlG2MhIf8FJXpICM88Obw/qvZYT/XS+II2yf1AggbubPR3F8aYe9xuxTFWEdc8sg97BRlcukT/PHeUzpaew==","shasum":"c9d90f383e7a5d190481c0339aa106eac6e3ccf4","tarball":"https://registry.npmjs.org/@core-tecnologias-empresariales/core-feature-flags/-/core-feature-flags-0.1.0.tgz","fileCount":14,"unpackedSize":13613,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFxPpP0cwxHXemLgaDOxsdwo/UMf6wVMKJXr9+13Wgb0AiEAxDEWbS4ql4Z1GGKIenJ/qSpYuQnlndLkoK3QCa+Meik="}]},"_npmUser":{"name":"balamchac","email":"marcelosazop@gmail.com"},"directories":{},"maintainers":[{"name":"balamchac","email":"marcelosazop@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core-feature-flags_0.1.0_1788053490326_0.17994480461490592"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-30T01:31:30.128Z","0.1.0":"2026-08-30T01:31:30.483Z","modified":"2026-08-30T01:31:30.759Z"},"maintainers":[{"name":"balamchac","email":"marcelosazop@gmail.com"}],"description":"Evaluación de feature flags (producto, organización, usuario, plan, entorno, porcentaje) para el ecosistema Core Tecnología Empresarial.","license":"UNLICENSED","readme":"# @core-tecnologias-empresariales/core-feature-flags\n\nFeature flags del ecosistema Core Tecnología Empresarial. Función pura de evaluación — sin storage propio (regla \"no core-database\"): el producto carga las `FlagDefinition[]` desde donde las tenga (config, DB, LaunchDarkly, lo que sea) y este paquete decide.\n\n## API\n\n```ts\nimport { createFeatureFlags } from \"@core-tecnologias-empresariales/core-feature-flags\";\n\nconst flags = createFeatureFlags([\n  {\n    key: \"advanced_bi\",\n    defaultEnabled: false,\n    rules: [{ plan: \"enterprise\", enabled: true }],\n  },\n  {\n    key: \"new_dashboard\",\n    defaultEnabled: false,\n    rules: [{ percentage: 20, enabled: true }], // rollout gradual al 20%\n  },\n]);\n\nflags.isEnabled(\"advanced_bi\", { plan: \"enterprise\" }); // true\nflags.isEnabled(\"new_dashboard\", { userId: \"u-123\" });  // determinístico: mismo userId → mismo resultado siempre\nflags.isEnabled(\"typo_flag\");                           // false — flag desconocido, fail-closed\n```\n\nContexto evaluable: `product, organizationId, userId, plan, environment` (CLAUDE.md §17), más `percentage` para rollouts graduales vía un hash determinístico (`bucketOf`) — nunca `Math.random()`, así el mismo usuario no \"parpadea\" entre requests.\n\nLas reglas se evalúan en orden; la primera que matchea todos sus campos definidos gana. Sin match, se usa `defaultEnabled`.\n\n## Regla de seguridad (CLAUDE.md §17)\n\n**Feature flag NO reemplaza autorización.** Siempre combinar con `core-permissions`:\n\n```ts\nconst canUseAdvancedBi = flags.isEnabled(\"advanced_bi\", context) && hasPermission(granted, \"advanced_bi.read\");\n```\n\nUn flag activo solo dice \"esta funcionalidad existe para este contexto\"; quién puede usarla la sigue decidiendo `core-permissions`.\n\n## Instalación\n\n```bash\npnpm add @core-tecnologias-empresariales/core-feature-flags\n```\n\n## Desarrollo\n\n```bash\npnpm build\npnpm test\n```\n","readmeFilename":"README.md","_rev":"1-e694cba5c1f13bd290636d64ca3bd5a2"}