@lunora/flags 1.0.0-alpha.30 → 1.0.0-alpha.32

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.mjs CHANGED
@@ -1 +1 @@
1
- import{defineFlags as o,isFlagsDefinition as r}from"./packem_shared/defineFlags-BZhoR_h7.mjs";import{createFlags as f}from"./packem_shared/createFlags-D2NuikJs.mjs";export{f as createFlags,o as defineFlags,r as isFlagsDefinition};
1
+ import{defineFlags as o,isFlagsDefinition as r}from"./packem_shared/defineFlags-BZhoR_h7.mjs";import{createFlags as f}from"./packem_shared/createFlags-DrPeN6AL.mjs";export{f as createFlags,o as defineFlags,r as isFlagsDefinition};
@@ -0,0 +1 @@
1
+ import{LunoraError as S}from"@lunora/errors";import{OpenFeature as l,ErrorCode as k}from"@openfeature/server-sdk";const E=(t,o)=>t<o?-1:t>o?1:0,p=t=>{if(t===void 0)return"null";if(typeof t=="bigint")throw new TypeError("stableStringify: cannot use a bigint in a stable JSON cache key — pass it as a string, or use stableWireKey");if(typeof t=="number"){if(Number.isNaN(t))return"nan";if(t===1/0)return"inf";if(t===-1/0)return"-inf";if(Object.is(t,-0))return"-0"}if(t===null||typeof t!="object")return JSON.stringify(t);if(Array.isArray(t))return`[${t.map(c=>p(c)).join(",")}]`;const o=Object.getPrototypeOf(t);if(o!==null&&o!==Object.prototype){const c=t.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${c} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const a=t,i=Object.keys(a).toSorted(E),s=[];for(const c of i){const f=a[c];f!==void 0&&s.push(`${JSON.stringify(c)}:${p(f)}`)}return`{${s.join(",")}}`},w="lunora";let y;const $=({hooks:t,logger:o,provider:a})=>(y===void 0&&(y=(async()=>{await l.setProviderAndWait(w,a());const i=l.getClient(w);return o&&i.setLogger(o),t&&t.length>0&&i.addHooks(...t),i})(),y.catch(()=>{y=void 0})),y),J=async()=>{y=void 0,await l.clearProviders()},v=(t,o,a,i)=>{const s=p([t,o,a]);return Object.keys(i).length===0?`${s}:{}`:`${s}:${p(i)}`},A=(t,o,a,i,s)=>{switch(o){case"boolean":return t.getBooleanDetails(a,i,s);case"number":return t.getNumberDetails(a,i,s);case"object":return t.getObjectDetails(a,i,s);case"string":return t.getStringDetails(a,i,s);default:throw new S("INTERNAL",`createFlags: unknown flag type "${o}"`)}},R=t=>{const{hooks:o,logger:a,provider:i,targetingKey:s}=t;let c;try{c=typeof s=="function"?s():s}catch{c=void 0}const f=new Map,b=(n,e,r,g)=>{const m=c===void 0?{...g}:{targetingKey:c,...g},N=u=>({errorCode:k.GENERAL,errorMessage:u instanceof Error?u.message:String(u),flagKey:e,flagMetadata:{},reason:"ERROR",value:r}),h=()=>$({hooks:o,logger:a,provider:i}).then(u=>A(u,n,e,r,m)).catch(N);let d;try{d=v(n,e,r,m)}catch{return h()}const j=f.get(d);if(j)return j;const O=h();return f.set(d,O),O};return{boolean:(n,e,r)=>b("boolean",n,e,r).then(g=>g.value),details:{boolean:(n,e,r)=>b("boolean",n,e,r),number:(n,e,r)=>b("number",n,e,r),object:(n,e,r)=>b("object",n,e,r),string:(n,e,r)=>b("string",n,e,r)},number:(n,e,r)=>b("number",n,e,r).then(g=>g.value),object:(n,e,r)=>b("object",n,e,r).then(g=>g.value),string:(n,e,r)=>b("string",n,e,r).then(g=>g.value)}};export{R as createFlags,J as resetFlags};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lunora/flags",
3
- "version": "1.0.0-alpha.30",
3
+ "version": "1.0.0-alpha.32",
4
4
  "description": "OpenFeature-based feature flags for Lunora — ctx.flags, useFlag, and a first-class Cloudflare Flagship provider with any OpenFeature provider pluggable",
5
5
  "keywords": [
6
6
  "cloudflare",
@@ -60,7 +60,7 @@
60
60
  "access": "public"
61
61
  },
62
62
  "dependencies": {
63
- "@lunora/errors": "1.0.0-alpha.21",
63
+ "@lunora/errors": "1.0.0-alpha.22",
64
64
  "@openfeature/server-sdk": "^1.23.0"
65
65
  },
66
66
  "peerDependencies": {
@@ -1 +0,0 @@
1
- import{LunoraError as S}from"@lunora/errors";import{OpenFeature as f,ErrorCode as N}from"@openfeature/server-sdk";const k=(e,o)=>e<o?-1:e>o?1:0,p=e=>{if(e===void 0)return"null";if(typeof e=="bigint")throw new TypeError("stableStringify: cannot use a bigint in a stable JSON cache key — pass it as a string, or use stableWireKey");if(e===null||typeof e!="object")return JSON.stringify(e);if(Array.isArray(e))return`[${e.map(c=>p(c)).join(",")}]`;const o=Object.getPrototypeOf(e);if(o!==null&&o!==Object.prototype){const c=e.constructor?.name??"value";throw new TypeError(`stableStringify: cannot use a ${c} in a stable JSON cache key — only plain objects, arrays, and JSON primitives are supported (wire-typed values key via stableWireKey)`)}const a=e,s=Object.keys(a).toSorted(k),i=[];for(const c of s){const y=a[c];y!==void 0&&i.push(`${JSON.stringify(c)}:${p(y)}`)}return`{${i.join(",")}}`},v="lunora";let u;const E=({hooks:e,logger:o,provider:a})=>(u===void 0&&(u=(async()=>{await f.setProviderAndWait(v,a());const s=f.getClient(v);return o&&s.setLogger(o),e&&e.length>0&&s.addHooks(...e),s})(),u.catch(()=>{u=void 0})),u),J=async()=>{u=void 0,await f.clearProviders()},$=(e,o,a,s)=>{const i=p([e,o,a]);return Object.keys(s).length===0?`${i}:{}`:`${i}:${p(s)}`},A=(e,o,a,s,i)=>{switch(o){case"boolean":return e.getBooleanDetails(a,s,i);case"number":return e.getNumberDetails(a,s,i);case"object":return e.getObjectDetails(a,s,i);case"string":return e.getStringDetails(a,s,i);default:throw new S("INTERNAL",`createFlags: unknown flag type "${o}"`)}},R=e=>{const{hooks:o,logger:a,provider:s,targetingKey:i}=e;let c;try{c=typeof i=="function"?i():i}catch{c=void 0}const y=new Map,b=(n,t,r,g)=>{const m=c===void 0?{...g}:{targetingKey:c,...g},w=l=>({errorCode:N.GENERAL,errorMessage:l instanceof Error?l.message:String(l),flagKey:t,flagMetadata:{},reason:"ERROR",value:r}),h=()=>E({hooks:o,logger:a,provider:s}).then(l=>A(l,n,t,r,m)).catch(w);let d;try{d=$(n,t,r,m)}catch{return h()}const j=y.get(d);if(j)return j;const O=h();return y.set(d,O),O};return{boolean:(n,t,r)=>b("boolean",n,t,r).then(g=>g.value),details:{boolean:(n,t,r)=>b("boolean",n,t,r),number:(n,t,r)=>b("number",n,t,r),object:(n,t,r)=>b("object",n,t,r),string:(n,t,r)=>b("string",n,t,r)},number:(n,t,r)=>b("number",n,t,r).then(g=>g.value),object:(n,t,r)=>b("object",n,t,r).then(g=>g.value),string:(n,t,r)=>b("string",n,t,r).then(g=>g.value)}};export{R as createFlags,J as resetFlags};