@vercel/flags-core 0.1.8 → 1.0.0
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 +11 -0
- package/README.md +40 -0
- package/dist/chunk-7BUTND2Q.js +1496 -0
- package/dist/chunk-7BUTND2Q.js.map +1 -0
- package/dist/chunk-UQEFJL4F.js +1503 -0
- package/dist/chunk-UQEFJL4F.js.map +1 -0
- package/dist/index.default.d.ts +248 -0
- package/dist/index.default.js +21 -0
- package/dist/index.next-js.d.ts +235 -0
- package/dist/index.next-js.js +21 -0
- package/dist/index.next-js.js.map +1 -0
- package/dist/openfeature.default.d.ts +48 -0
- package/dist/openfeature.default.js +157 -0
- package/dist/openfeature.default.js.map +1 -0
- package/dist/openfeature.next-js.d.ts +49 -0
- package/dist/openfeature.next-js.js +157 -0
- package/dist/openfeature.next-js.js.map +1 -0
- package/dist/{client-BxFTPk0J.d.cts → types-508sZTBu.d.ts} +137 -58
- package/package.json +31 -19
- package/dist/chunk-4IFGPGNY.js +0 -566
- package/dist/chunk-4IFGPGNY.js.map +0 -1
- package/dist/chunk-6ZAELH3K.cjs +0 -566
- package/dist/chunk-6ZAELH3K.cjs.map +0 -1
- package/dist/client-BxFTPk0J.d.ts +0 -426
- package/dist/index.cjs +0 -27
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -79
- package/dist/index.d.ts +0 -79
- package/dist/index.js +0 -27
- package/dist/openfeature.cjs +0 -151
- package/dist/openfeature.cjs.map +0 -1
- package/dist/openfeature.d.cts +0 -24
- package/dist/openfeature.d.ts +0 -24
- package/dist/openfeature.js +0 -151
- package/dist/openfeature.js.map +0 -1
- /package/dist/{index.js.map → index.default.js.map} +0 -0
package/dist/index.d.ts
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { D as DataSource, P as Packed, E as EvaluationParams, a as EvaluationResult, C as ConnectionOptions, F as FlagsClient } from './client-BxFTPk0J.js';
|
|
2
|
-
export { R as Reason, c as createClient } from './client-BxFTPk0J.js';
|
|
3
|
-
import { EdgeConfigClient } from '@vercel/edge-config';
|
|
4
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Implements the DataSource interface for Edge Config.
|
|
8
|
-
*/
|
|
9
|
-
declare class EdgeConfigDataSource implements DataSource {
|
|
10
|
-
connectionString?: string;
|
|
11
|
-
edgeConfigClient: EdgeConfigClient;
|
|
12
|
-
edgeConfigItemKey: string;
|
|
13
|
-
requestCache: WeakMap<WeakKey, Promise<Packed.Data | undefined>>;
|
|
14
|
-
projectId?: string;
|
|
15
|
-
constructor(options: {
|
|
16
|
-
edgeConfigItemKey: string;
|
|
17
|
-
edgeConfigClient: EdgeConfigClient;
|
|
18
|
-
projectId?: string;
|
|
19
|
-
});
|
|
20
|
-
private getCachedData;
|
|
21
|
-
getData(): Promise<Packed.Data>;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
declare class InMemoryDataSource implements DataSource {
|
|
25
|
-
private data;
|
|
26
|
-
projectId?: string;
|
|
27
|
-
constructor(data: Packed.Data, projectId?: string);
|
|
28
|
-
getData(): Promise<Packed.Data>;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* A store to avoid reading the Edge Config for every flag evaluation,
|
|
33
|
-
* and instead reading it once per request.
|
|
34
|
-
*/
|
|
35
|
-
declare const store: AsyncLocalStorage<WeakKey>;
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Evaluates a single feature flag.
|
|
39
|
-
*
|
|
40
|
-
* This function should never throw for expected errors, instead it returns
|
|
41
|
-
* { reason: Reason.ERROR, errorMessage: ... }.
|
|
42
|
-
*
|
|
43
|
-
* The function can however throw for situations which should not happen under
|
|
44
|
-
* normal circumstances, for example if the environment config is not found.
|
|
45
|
-
*/
|
|
46
|
-
declare function evaluate<T>(
|
|
47
|
-
/**
|
|
48
|
-
* The params used for the evaluation
|
|
49
|
-
*/
|
|
50
|
-
params: EvaluationParams<T>): EvaluationResult<T>;
|
|
51
|
-
|
|
52
|
-
declare function parseFlagsConnectionString(connectionString: string): ConnectionOptions;
|
|
53
|
-
/**
|
|
54
|
-
* Internal function for testing purposes
|
|
55
|
-
*/
|
|
56
|
-
declare function resetDefaultFlagsClient(): void;
|
|
57
|
-
declare function createClientFromConnectionString(connectionString: string): FlagsClient;
|
|
58
|
-
/**
|
|
59
|
-
* This function is for internal use only.
|
|
60
|
-
*
|
|
61
|
-
* Produces a default flags client reading from a default edge config.
|
|
62
|
-
*
|
|
63
|
-
* - relies on process.env.FLAGS
|
|
64
|
-
* - does not use process.env.EDGE_CONFIG
|
|
65
|
-
*
|
|
66
|
-
* @param connectionString - usually from process.env.FLAGS
|
|
67
|
-
* @returns - a flags client
|
|
68
|
-
*/
|
|
69
|
-
declare function getDefaultFlagsClient(): FlagsClient;
|
|
70
|
-
/**
|
|
71
|
-
* Resolve the Flags environment. If connectionOptionsEnv is provided, use it as-is.
|
|
72
|
-
*
|
|
73
|
-
* Fall back to VERCEL_ENV if it is a known Vercel environment (production, preview, development)
|
|
74
|
-
* If VERCEL_ENV is unset, it will resolve 'development' (Vercel provides it in preview and production)
|
|
75
|
-
* If VERCEL_ENV is not one of the known values, it will resolve 'preview'
|
|
76
|
-
*/
|
|
77
|
-
declare function getFlagsEnvironment(connectionOptionsEnv: string | null): string;
|
|
78
|
-
|
|
79
|
-
export { DataSource, EdgeConfigDataSource, FlagsClient, InMemoryDataSource, Packed, createClientFromConnectionString, evaluate, getDefaultFlagsClient, getFlagsEnvironment, parseFlagsConnectionString, resetDefaultFlagsClient, store };
|
package/dist/index.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
EdgeConfigDataSource,
|
|
3
|
-
InMemoryDataSource,
|
|
4
|
-
ResolutionReason,
|
|
5
|
-
createClient,
|
|
6
|
-
createClientFromConnectionString,
|
|
7
|
-
evaluate,
|
|
8
|
-
getDefaultFlagsClient,
|
|
9
|
-
getFlagsEnvironment,
|
|
10
|
-
parseFlagsConnectionString,
|
|
11
|
-
resetDefaultFlagsClient,
|
|
12
|
-
store
|
|
13
|
-
} from "./chunk-4IFGPGNY.js";
|
|
14
|
-
export {
|
|
15
|
-
EdgeConfigDataSource,
|
|
16
|
-
InMemoryDataSource,
|
|
17
|
-
ResolutionReason as Reason,
|
|
18
|
-
createClient,
|
|
19
|
-
createClientFromConnectionString,
|
|
20
|
-
evaluate,
|
|
21
|
-
getDefaultFlagsClient,
|
|
22
|
-
getFlagsEnvironment,
|
|
23
|
-
parseFlagsConnectionString,
|
|
24
|
-
resetDefaultFlagsClient,
|
|
25
|
-
store
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=index.js.map
|
package/dist/openfeature.cjs
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _class;
|
|
2
|
-
|
|
3
|
-
var _chunk6ZAELH3Kcjs = require('./chunk-6ZAELH3K.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 = _chunk6ZAELH3Kcjs.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
|
package/dist/openfeature.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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"]}
|
package/dist/openfeature.d.cts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Provider, ProviderMetadata, EvaluationContext, ResolutionDetails, JsonValue } from '@openfeature/server-sdk';
|
|
2
|
-
import { F as FlagsClient } from './client-BxFTPk0J.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.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Provider, ProviderMetadata, EvaluationContext, ResolutionDetails, JsonValue } from '@openfeature/server-sdk';
|
|
2
|
-
import { F as FlagsClient } from './client-BxFTPk0J.js';
|
|
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
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createClientFromConnectionString
|
|
3
|
-
} from "./chunk-4IFGPGNY.js";
|
|
4
|
-
|
|
5
|
-
// src/openfeature.ts
|
|
6
|
-
import {
|
|
7
|
-
ErrorCode,
|
|
8
|
-
StandardResolutionReasons
|
|
9
|
-
} from "@openfeature/server-sdk";
|
|
10
|
-
function mapReason(reason) {
|
|
11
|
-
switch (reason) {
|
|
12
|
-
case "error" /* ERROR */:
|
|
13
|
-
return StandardResolutionReasons.ERROR;
|
|
14
|
-
case "paused" /* PAUSED */:
|
|
15
|
-
return StandardResolutionReasons.STATIC;
|
|
16
|
-
case "fallthrough" /* FALLTHROUGH */:
|
|
17
|
-
return StandardResolutionReasons.DEFAULT;
|
|
18
|
-
case "target_match" /* TARGET_MATCH */:
|
|
19
|
-
case "rule_match" /* RULE_MATCH */:
|
|
20
|
-
return StandardResolutionReasons.TARGETING_MATCH;
|
|
21
|
-
default:
|
|
22
|
-
return StandardResolutionReasons.UNKNOWN;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
var VercelProvider = class {
|
|
26
|
-
metadata = {
|
|
27
|
-
name: "vercel-nodejs-provider"
|
|
28
|
-
};
|
|
29
|
-
runsOn = "server";
|
|
30
|
-
client;
|
|
31
|
-
constructor(clientOrConnectionString) {
|
|
32
|
-
if (typeof clientOrConnectionString === "string") {
|
|
33
|
-
this.client = createClientFromConnectionString(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: StandardResolutionReasons.ERROR,
|
|
54
|
-
errorCode: ErrorCode.GENERAL,
|
|
55
|
-
errorMessage: result.errorMessage
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
if (typeof result.value !== "boolean") {
|
|
59
|
-
return {
|
|
60
|
-
value: defaultValue,
|
|
61
|
-
reason: StandardResolutionReasons.ERROR,
|
|
62
|
-
errorCode: 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: StandardResolutionReasons.ERROR,
|
|
81
|
-
errorCode: ErrorCode.GENERAL,
|
|
82
|
-
errorMessage: result.errorMessage
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
if (typeof result.value !== "string") {
|
|
86
|
-
return {
|
|
87
|
-
value: defaultValue,
|
|
88
|
-
reason: StandardResolutionReasons.ERROR,
|
|
89
|
-
errorCode: 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: StandardResolutionReasons.ERROR,
|
|
109
|
-
errorCode: ErrorCode.GENERAL,
|
|
110
|
-
errorMessage: result.errorMessage
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
if (typeof result.value !== "number") {
|
|
114
|
-
return {
|
|
115
|
-
value: defaultValue,
|
|
116
|
-
reason: StandardResolutionReasons.ERROR,
|
|
117
|
-
errorCode: 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: StandardResolutionReasons.ERROR,
|
|
137
|
-
errorCode: 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
|
-
};
|
|
148
|
-
export {
|
|
149
|
-
VercelProvider
|
|
150
|
-
};
|
|
151
|
-
//# sourceMappingURL=openfeature.js.map
|
package/dist/openfeature.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/openfeature.ts"],"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"],"mappings":"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","names":[]}
|
|
File without changes
|