@stacksjs/config 0.74.24 → 0.74.25

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.
@@ -1,20 +1,3 @@
1
- /**
2
- * Truthy when the named feature is enabled in the current environment.
3
- *
4
- * Resolution order (first match wins):
5
- * 1. Runtime override via `enableFeature` / `disableFeature`
6
- * 2. `config.<name>.enabled` — boolean or omitted
7
- * - Optional `config.<name>.env: string[]` narrows the flag to specific
8
- * deploy targets (compared against `config.app.env`)
9
- * 3. Per-feature framework default (only `dashboard` defaults true)
10
- *
11
- * @example
12
- * ```ts
13
- * if (feature('commerce')) {
14
- * await loadCommerceRoutes()
15
- * }
16
- * ```
17
- */
18
1
  export declare function feature(name: string): boolean;
19
2
  /**
20
3
  * Force-enable a feature in the running process. Intended for tests and
package/dist/features.js CHANGED
@@ -1 +1 @@
1
- import{config}from"./config";const FEATURE_NAMES=["auth","marketing","cms","commerce","forms","dashboard","monitoring","realtime","queue"],FEATURE_DEFAULTS={dashboard:!0},overrides=new Map;function configFor(name){const raw=config[name];return raw&&typeof raw==="object"?raw:void 0}export function feature(name){if(overrides.has(name))return overrides.get(name);const cfg=configFor(name);if(cfg){const enabledField=cfg.enabled;if(enabledField===!1)return!1;if(Array.isArray(cfg.env)&&cfg.env.length>0){const currentEnv=(config.app?.env??"").toString();if(!cfg.env.includes(currentEnv))return!1}if(enabledField!==void 0)return!!enabledField;return!0}return FEATURE_DEFAULTS[name]??!1}export function enableFeature(name){overrides.set(name,!0)}export function disableFeature(name){overrides.set(name,!1)}export function resetFeature(name){overrides.delete(name)}export function listFeatures(){const out={};for(const name of FEATURE_NAMES)out[name]=feature(name);for(const name of overrides.keys())out[name]=feature(name);return out}
1
+ import{config}from"./config";const FEATURE_NAMES=["auth","marketing","cms","commerce","forms","dashboard","monitoring","realtime","queue"],FEATURE_DEFAULTS={dashboard:!0},overrides=new Map;function configFor(name){const raw=config[name];return raw&&typeof raw==="object"?raw:void 0}function canonicalFeatures(){return process.env.STACKS_CANONICAL_FEATURES==="1"}export function feature(name){if(overrides.has(name))return overrides.get(name);if(canonicalFeatures()&&FEATURE_NAMES.includes(name))return!0;const cfg=configFor(name);if(cfg){const enabledField=cfg.enabled;if(enabledField===!1)return!1;if(Array.isArray(cfg.env)&&cfg.env.length>0){const currentEnv=(config.app?.env??"").toString();if(!cfg.env.includes(currentEnv))return!1}if(enabledField!==void 0)return!!enabledField;return!0}return FEATURE_DEFAULTS[name]??!1}export function enableFeature(name){overrides.set(name,!0)}export function disableFeature(name){overrides.set(name,!1)}export function resetFeature(name){overrides.delete(name)}export function listFeatures(){const out={};for(const name of FEATURE_NAMES)out[name]=feature(name);for(const name of overrides.keys())out[name]=feature(name);return out}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@stacksjs/config",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.74.24",
5
+ "version": "0.74.25",
6
6
  "description": "The Stacks config helper methods.",
7
7
  "author": "Chris Breuer",
8
8
  "contributors": [
@@ -55,14 +55,14 @@
55
55
  "prepublishOnly": "bun run build"
56
56
  },
57
57
  "dependencies": {
58
- "@stacksjs/events": "0.74.24",
59
- "@stacksjs/path": "0.74.24",
60
- "@stacksjs/tunnel": "0.74.24",
58
+ "@stacksjs/events": "0.74.25",
59
+ "@stacksjs/path": "0.74.25",
60
+ "@stacksjs/tunnel": "0.74.25",
61
61
  "ts-pantry": "^0.11.35"
62
62
  },
63
63
  "devDependencies": {
64
- "@stacksjs/alias": "0.74.24",
65
- "@stacksjs/types": "0.74.24",
64
+ "@stacksjs/alias": "0.74.25",
65
+ "@stacksjs/types": "0.74.25",
66
66
  "better-dx": "^0.2.24"
67
67
  }
68
68
  }