@vercel/flags-core 0.1.4 → 0.1.5

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
@@ -10,7 +10,7 @@ import {
10
10
  parseFlagsConnectionString,
11
11
  resetDefaultFlagsClient,
12
12
  store
13
- } from "./chunk-FV6EQ7EB.js";
13
+ } from "./chunk-23DTG77C.js";
14
14
  export {
15
15
  EdgeConfigDataSource,
16
16
  InMemoryDataSource,
@@ -0,0 +1,151 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _class;
2
+
3
+ var _chunkITLCSVKZcjs = require('./chunk-ITLCSVKZ.cjs');
4
+
5
+ // src/openfeature.ts
6
+
7
+
8
+
9
+ var _serversdk = require('@openfeature/server-sdk');
10
+ function mapReason(reason) {
11
+ switch (reason) {
12
+ case "error" /* ERROR */:
13
+ return _serversdk.StandardResolutionReasons.ERROR;
14
+ case "paused" /* PAUSED */:
15
+ return _serversdk.StandardResolutionReasons.STATIC;
16
+ case "fallthrough" /* FALLTHROUGH */:
17
+ return _serversdk.StandardResolutionReasons.DEFAULT;
18
+ case "target_match" /* TARGET_MATCH */:
19
+ case "rule_match" /* RULE_MATCH */:
20
+ return _serversdk.StandardResolutionReasons.TARGETING_MATCH;
21
+ default:
22
+ return _serversdk.StandardResolutionReasons.UNKNOWN;
23
+ }
24
+ }
25
+ var VercelProvider = (_class = class {
26
+ __init() {this.metadata = {
27
+ name: "vercel-nodejs-provider"
28
+ }}
29
+ __init2() {this.runsOn = "server"}
30
+
31
+ constructor(clientOrConnectionString) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
32
+ if (typeof clientOrConnectionString === "string") {
33
+ this.client = _chunkITLCSVKZcjs.createClientFromConnectionString.call(void 0, clientOrConnectionString);
34
+ } else {
35
+ this.client = clientOrConnectionString;
36
+ }
37
+ }
38
+ async initialize(context) {
39
+ await this.client.initialize();
40
+ }
41
+ async onClose() {
42
+ await this.client.shutdown();
43
+ }
44
+ async resolveBooleanEvaluation(flagKey, defaultValue, context) {
45
+ const result = await this.client.evaluate(
46
+ flagKey,
47
+ defaultValue,
48
+ context
49
+ );
50
+ if (result.reason === "error" /* ERROR */) {
51
+ return {
52
+ value: defaultValue,
53
+ reason: _serversdk.StandardResolutionReasons.ERROR,
54
+ errorCode: _serversdk.ErrorCode.GENERAL,
55
+ errorMessage: result.errorMessage
56
+ };
57
+ }
58
+ if (typeof result.value !== "boolean") {
59
+ return {
60
+ value: defaultValue,
61
+ reason: _serversdk.StandardResolutionReasons.ERROR,
62
+ errorCode: _serversdk.ErrorCode.TYPE_MISMATCH,
63
+ errorMessage: `Expected boolean value for flag "${flagKey}"`
64
+ };
65
+ }
66
+ return {
67
+ value: result.value,
68
+ reason: mapReason(result.reason)
69
+ };
70
+ }
71
+ async resolveStringEvaluation(flagKey, defaultValue, context) {
72
+ const result = await this.client.evaluate(
73
+ flagKey,
74
+ defaultValue,
75
+ context
76
+ );
77
+ if (result.reason === "error" /* ERROR */) {
78
+ return {
79
+ value: defaultValue,
80
+ reason: _serversdk.StandardResolutionReasons.ERROR,
81
+ errorCode: _serversdk.ErrorCode.GENERAL,
82
+ errorMessage: result.errorMessage
83
+ };
84
+ }
85
+ if (typeof result.value !== "string") {
86
+ return {
87
+ value: defaultValue,
88
+ reason: _serversdk.StandardResolutionReasons.ERROR,
89
+ errorCode: _serversdk.ErrorCode.TYPE_MISMATCH,
90
+ errorMessage: `Expected string value for flag "${flagKey}"`
91
+ };
92
+ }
93
+ return {
94
+ value: result.value,
95
+ reason: mapReason(result.reason),
96
+ errorMessage: result.errorMessage
97
+ };
98
+ }
99
+ async resolveNumberEvaluation(flagKey, defaultValue, context) {
100
+ const result = await this.client.evaluate(
101
+ flagKey,
102
+ defaultValue,
103
+ context
104
+ );
105
+ if (result.reason === "error" /* ERROR */) {
106
+ return {
107
+ value: defaultValue,
108
+ reason: _serversdk.StandardResolutionReasons.ERROR,
109
+ errorCode: _serversdk.ErrorCode.GENERAL,
110
+ errorMessage: result.errorMessage
111
+ };
112
+ }
113
+ if (typeof result.value !== "number") {
114
+ return {
115
+ value: defaultValue,
116
+ reason: _serversdk.StandardResolutionReasons.ERROR,
117
+ errorCode: _serversdk.ErrorCode.TYPE_MISMATCH,
118
+ errorMessage: `Expected number value for flag "${flagKey}"`
119
+ };
120
+ }
121
+ return {
122
+ value: result.value,
123
+ reason: mapReason(result.reason),
124
+ errorMessage: result.errorMessage
125
+ };
126
+ }
127
+ async resolveObjectEvaluation(flagKey, defaultValue, context) {
128
+ const result = await this.client.evaluate(
129
+ flagKey,
130
+ defaultValue,
131
+ context
132
+ );
133
+ if (result.reason === "error" /* ERROR */) {
134
+ return {
135
+ value: defaultValue,
136
+ reason: _serversdk.StandardResolutionReasons.ERROR,
137
+ errorCode: _serversdk.ErrorCode.GENERAL,
138
+ errorMessage: result.errorMessage
139
+ };
140
+ }
141
+ return {
142
+ value: result.value,
143
+ reason: mapReason(result.reason),
144
+ errorMessage: result.errorMessage
145
+ };
146
+ }
147
+ }, _class);
148
+
149
+
150
+ exports.VercelProvider = VercelProvider;
151
+ //# sourceMappingURL=openfeature.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/openfeature.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ErrorCode,\n type EvaluationContext,\n type JsonValue,\n type Provider,\n type ProviderMetadata,\n type ResolutionDetails,\n type ResolutionReason,\n StandardResolutionReasons,\n} from '@openfeature/server-sdk';\nimport { createClientFromConnectionString, Reason } from '.';\nimport type { FlagsClient } from './client';\n\nfunction mapReason(reason: Reason): ResolutionReason {\n switch (reason) {\n case Reason.ERROR:\n return StandardResolutionReasons.ERROR;\n case Reason.PAUSED:\n return StandardResolutionReasons.STATIC;\n case Reason.FALLTHROUGH:\n return StandardResolutionReasons.DEFAULT;\n case Reason.TARGET_MATCH:\n case Reason.RULE_MATCH:\n return StandardResolutionReasons.TARGETING_MATCH;\n default:\n return StandardResolutionReasons.UNKNOWN;\n }\n}\n\nexport class VercelProvider implements Provider {\n readonly metadata: ProviderMetadata = {\n name: 'vercel-nodejs-provider',\n } as const;\n\n readonly runsOn = 'server';\n private client: FlagsClient;\n\n /**\n * Creates a VercelProvider from an existing FlagsClient\n */\n constructor(client: FlagsClient);\n /**\n * Creates a VercelProvider from a connection string\n */\n constructor(connectionString: string);\n constructor(clientOrConnectionString: FlagsClient | string) {\n if (typeof clientOrConnectionString === 'string') {\n this.client = createClientFromConnectionString(clientOrConnectionString);\n } else {\n this.client = clientOrConnectionString;\n }\n }\n\n async initialize(context?: EvaluationContext): Promise<void> {\n await this.client.initialize();\n }\n\n async onClose() {\n await this.client.shutdown();\n }\n\n async resolveBooleanEvaluation(\n flagKey: string,\n defaultValue: boolean,\n context: EvaluationContext,\n ): Promise<ResolutionDetails<boolean>> {\n const result = await this.client.evaluate<boolean>(\n flagKey,\n defaultValue,\n context,\n );\n\n if (result.reason === Reason.ERROR) {\n return {\n value: defaultValue,\n reason: StandardResolutionReasons.ERROR,\n errorCode: ErrorCode.GENERAL,\n errorMessage: result.errorMessage,\n };\n }\n\n if (typeof result.value !== 'boolean') {\n return {\n value: defaultValue,\n reason: StandardResolutionReasons.ERROR,\n errorCode: ErrorCode.TYPE_MISMATCH,\n errorMessage: `Expected boolean value for flag \"${flagKey}\"`,\n };\n }\n\n return {\n value: result.value,\n reason: mapReason(result.reason),\n };\n }\n\n async resolveStringEvaluation(\n flagKey: string,\n defaultValue: string,\n context: EvaluationContext,\n ): Promise<ResolutionDetails<string>> {\n const result = await this.client.evaluate<string>(\n flagKey,\n defaultValue,\n context,\n );\n\n if (result.reason === Reason.ERROR) {\n return {\n value: defaultValue,\n reason: StandardResolutionReasons.ERROR,\n errorCode: ErrorCode.GENERAL,\n errorMessage: result.errorMessage,\n };\n }\n\n if (typeof result.value !== 'string') {\n return {\n value: defaultValue,\n reason: StandardResolutionReasons.ERROR,\n errorCode: ErrorCode.TYPE_MISMATCH,\n errorMessage: `Expected string value for flag \"${flagKey}\"`,\n };\n }\n\n return {\n value: result.value,\n reason: mapReason(result.reason),\n errorMessage: result.errorMessage,\n };\n }\n\n async resolveNumberEvaluation(\n flagKey: string,\n defaultValue: number,\n context: EvaluationContext,\n ): Promise<ResolutionDetails<number>> {\n const result = await this.client.evaluate<number>(\n flagKey,\n defaultValue,\n context,\n );\n\n if (result.reason === Reason.ERROR) {\n return {\n value: defaultValue,\n reason: StandardResolutionReasons.ERROR,\n errorCode: ErrorCode.GENERAL,\n errorMessage: result.errorMessage,\n };\n }\n\n if (typeof result.value !== 'number') {\n return {\n value: defaultValue,\n reason: StandardResolutionReasons.ERROR,\n errorCode: ErrorCode.TYPE_MISMATCH,\n errorMessage: `Expected number value for flag \"${flagKey}\"`,\n };\n }\n\n return {\n value: result.value,\n reason: mapReason(result.reason),\n errorMessage: result.errorMessage,\n };\n }\n\n async resolveObjectEvaluation<T extends JsonValue>(\n flagKey: string,\n defaultValue: T,\n context: EvaluationContext,\n ): Promise<ResolutionDetails<T>> {\n const result = await this.client.evaluate<T>(\n flagKey,\n defaultValue,\n context,\n );\n\n if (result.reason === Reason.ERROR) {\n return {\n value: defaultValue,\n reason: StandardResolutionReasons.ERROR,\n errorCode: ErrorCode.GENERAL,\n errorMessage: result.errorMessage,\n };\n }\n\n return {\n value: result.value,\n reason: mapReason(result.reason),\n errorMessage: result.errorMessage,\n };\n }\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { Provider, ProviderMetadata, EvaluationContext, ResolutionDetails, JsonValue } from '@openfeature/server-sdk';
2
+ import { F as FlagsClient } from './client-27m_QPJ8.cjs';
3
+
4
+ declare class VercelProvider implements Provider {
5
+ readonly metadata: ProviderMetadata;
6
+ readonly runsOn = "server";
7
+ private client;
8
+ /**
9
+ * Creates a VercelProvider from an existing FlagsClient
10
+ */
11
+ constructor(client: FlagsClient);
12
+ /**
13
+ * Creates a VercelProvider from a connection string
14
+ */
15
+ constructor(connectionString: string);
16
+ initialize(context?: EvaluationContext): Promise<void>;
17
+ onClose(): Promise<void>;
18
+ resolveBooleanEvaluation(flagKey: string, defaultValue: boolean, context: EvaluationContext): Promise<ResolutionDetails<boolean>>;
19
+ resolveStringEvaluation(flagKey: string, defaultValue: string, context: EvaluationContext): Promise<ResolutionDetails<string>>;
20
+ resolveNumberEvaluation(flagKey: string, defaultValue: number, context: EvaluationContext): Promise<ResolutionDetails<number>>;
21
+ resolveObjectEvaluation<T extends JsonValue>(flagKey: string, defaultValue: T, context: EvaluationContext): Promise<ResolutionDetails<T>>;
22
+ }
23
+
24
+ export { VercelProvider };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createClientFromConnectionString
3
- } from "./chunk-FV6EQ7EB.js";
3
+ } from "./chunk-23DTG77C.js";
4
4
 
5
5
  // src/openfeature.ts
6
6
  import {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/flags-core",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -8,17 +8,25 @@
8
8
  "sideEffects": false,
9
9
  "type": "module",
10
10
  "exports": {
11
- ".": "./dist/index.js",
12
- "./openfeature": "./dist/openfeature.js"
11
+ ".": {
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./openfeature": {
16
+ "import": "./dist/openfeature.js",
17
+ "require": "./dist/openfeature.cjs"
18
+ }
13
19
  },
14
20
  "main": "./dist/index.js",
15
21
  "typesVersions": {
16
22
  "*": {
17
23
  ".": [
18
- "dist/*.d.ts"
24
+ "dist/*.d.ts",
25
+ "dist/*.d.cts"
19
26
  ],
20
27
  "./openfeature": [
21
- "dist/openfeature.d.ts"
28
+ "dist/openfeature.d.ts",
29
+ "dist/openfeature.d.cts"
22
30
  ]
23
31
  }
24
32
  },