@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/CHANGELOG.md +6 -0
- package/dist/{chunk-FV6EQ7EB.js → chunk-23DTG77C.js} +2 -2
- package/dist/{chunk-FV6EQ7EB.js.map → chunk-23DTG77C.js.map} +1 -1
- package/dist/chunk-ITLCSVKZ.cjs +566 -0
- package/dist/chunk-ITLCSVKZ.cjs.map +1 -0
- package/dist/client-27m_QPJ8.d.cts +428 -0
- package/dist/index.cjs +27 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +79 -0
- package/dist/index.js +1 -1
- package/dist/openfeature.cjs +151 -0
- package/dist/openfeature.cjs.map +1 -0
- package/dist/openfeature.d.cts +24 -0
- package/dist/openfeature.js +1 -1
- package/package.json +13 -5
package/dist/index.js
CHANGED
|
@@ -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 };
|
package/dist/openfeature.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vercel/flags-core",
|
|
3
|
-
"version": "0.1.
|
|
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
|
-
".":
|
|
12
|
-
|
|
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
|
},
|