@posthog/core 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/dist/eventemitter.d.ts +9 -0
- package/dist/eventemitter.d.ts.map +1 -0
- package/dist/eventemitter.js +52 -0
- package/dist/eventemitter.mjs +18 -0
- package/dist/featureFlagUtils.d.ts +35 -0
- package/dist/featureFlagUtils.d.ts.map +1 -0
- package/dist/featureFlagUtils.js +193 -0
- package/dist/featureFlagUtils.mjs +138 -0
- package/dist/gzip.d.ts +10 -0
- package/dist/gzip.d.ts.map +1 -0
- package/dist/gzip.js +56 -0
- package/dist/gzip.mjs +19 -0
- package/dist/index.d.ts +261 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1305 -0
- package/dist/index.mjs +1198 -0
- package/dist/testing/PostHogCoreTestClient.d.ts +24 -0
- package/dist/testing/PostHogCoreTestClient.d.ts.map +1 -0
- package/dist/testing/PostHogCoreTestClient.js +95 -0
- package/dist/testing/PostHogCoreTestClient.mjs +58 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +69 -0
- package/dist/testing/index.mjs +2 -0
- package/dist/testing/test-utils.d.ts +6 -0
- package/dist/testing/test-utils.d.ts.map +1 -0
- package/dist/testing/test-utils.js +75 -0
- package/dist/testing/test-utils.mjs +29 -0
- package/dist/types.d.ts +441 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +163 -0
- package/dist/types.mjs +99 -0
- package/dist/utils.d.ts +24 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +115 -0
- package/dist/utils.mjs +51 -0
- package/dist/vendor/uuidv7.d.ts +180 -0
- package/dist/vendor/uuidv7.d.ts.map +1 -0
- package/dist/vendor/uuidv7.js +223 -0
- package/dist/vendor/uuidv7.js.LICENSE.txt +7 -0
- package/dist/vendor/uuidv7.mjs +174 -0
- package/dist/vendor/uuidv7.mjs.LICENSE.txt +7 -0
- package/package.json +52 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class SimpleEventEmitter {
|
|
2
|
+
events: {
|
|
3
|
+
[key: string]: ((...args: any[]) => void)[];
|
|
4
|
+
};
|
|
5
|
+
constructor();
|
|
6
|
+
on(event: string, listener: (...args: any[]) => void): () => void;
|
|
7
|
+
emit(event: string, payload: any): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=eventemitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventemitter.d.ts","sourceRoot":"","sources":["../src/eventemitter.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC7B,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAA;KAAE,CAAK;;IAM5D,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,MAAM,IAAI;IAWjE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,IAAI;CAQxC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
SimpleEventEmitter: ()=>SimpleEventEmitter
|
|
28
|
+
});
|
|
29
|
+
class SimpleEventEmitter {
|
|
30
|
+
on(event, listener) {
|
|
31
|
+
if (!this.events[event]) this.events[event] = [];
|
|
32
|
+
this.events[event].push(listener);
|
|
33
|
+
return ()=>{
|
|
34
|
+
this.events[event] = this.events[event].filter((x)=>x !== listener);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
emit(event, payload) {
|
|
38
|
+
for (const listener of this.events[event] || [])listener(payload);
|
|
39
|
+
for (const listener of this.events['*'] || [])listener(event, payload);
|
|
40
|
+
}
|
|
41
|
+
constructor(){
|
|
42
|
+
this.events = {};
|
|
43
|
+
this.events = {};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.SimpleEventEmitter = __webpack_exports__.SimpleEventEmitter;
|
|
47
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
48
|
+
"SimpleEventEmitter"
|
|
49
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
50
|
+
Object.defineProperty(exports, '__esModule', {
|
|
51
|
+
value: true
|
|
52
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
class SimpleEventEmitter {
|
|
2
|
+
on(event, listener) {
|
|
3
|
+
if (!this.events[event]) this.events[event] = [];
|
|
4
|
+
this.events[event].push(listener);
|
|
5
|
+
return ()=>{
|
|
6
|
+
this.events[event] = this.events[event].filter((x)=>x !== listener);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
emit(event, payload) {
|
|
10
|
+
for (const listener of this.events[event] || [])listener(payload);
|
|
11
|
+
for (const listener of this.events['*'] || [])listener(event, payload);
|
|
12
|
+
}
|
|
13
|
+
constructor(){
|
|
14
|
+
this.events = {};
|
|
15
|
+
this.events = {};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export { SimpleEventEmitter };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FeatureFlagDetail, FeatureFlagValue, PostHogFlagsResponse, PostHogV1FlagsResponse, PostHogV2FlagsResponse, PartialWithRequired, PostHogFeatureFlagsResponse } from './types';
|
|
2
|
+
export declare const normalizeFlagsResponse: (flagsResponse: PartialWithRequired<PostHogV2FlagsResponse, "flags"> | PartialWithRequired<PostHogV1FlagsResponse, "featureFlags" | "featureFlagPayloads">) => PostHogFeatureFlagsResponse;
|
|
3
|
+
/**
|
|
4
|
+
* Get the flag values from the flags v4 response.
|
|
5
|
+
* @param flags - The flags
|
|
6
|
+
* @returns The flag values
|
|
7
|
+
*/
|
|
8
|
+
export declare const getFlagValuesFromFlags: (flags: PostHogFlagsResponse["flags"]) => PostHogFlagsResponse["featureFlags"];
|
|
9
|
+
/**
|
|
10
|
+
* Get the payloads from the flags v4 response.
|
|
11
|
+
* @param flags - The flags
|
|
12
|
+
* @returns The payloads
|
|
13
|
+
*/
|
|
14
|
+
export declare const getPayloadsFromFlags: (flags: PostHogFlagsResponse["flags"]) => PostHogFlagsResponse["featureFlagPayloads"];
|
|
15
|
+
/**
|
|
16
|
+
* Get the flag details from the legacy v1 flags and payloads. As such, it will lack the reason, id, version, and description.
|
|
17
|
+
* @param flagsResponse - The flags response
|
|
18
|
+
* @returns The flag details
|
|
19
|
+
*/
|
|
20
|
+
export declare const getFlagDetailsFromFlagsAndPayloads: (flagsResponse: PostHogFeatureFlagsResponse) => PostHogFlagsResponse["flags"];
|
|
21
|
+
export declare const getFeatureFlagValue: (detail: FeatureFlagDetail | undefined) => FeatureFlagValue | undefined;
|
|
22
|
+
export declare const parsePayload: (response: any) => any;
|
|
23
|
+
/**
|
|
24
|
+
* Get the normalized flag details from the flags and payloads.
|
|
25
|
+
* This is used to convert things like boostrap and stored feature flags and payloads to the v4 format.
|
|
26
|
+
* This helps us ensure backwards compatibility.
|
|
27
|
+
* If a key exists in the featureFlagPayloads that is not in the featureFlags, we treat it as a true feature flag.
|
|
28
|
+
*
|
|
29
|
+
* @param featureFlags - The feature flags
|
|
30
|
+
* @param featureFlagPayloads - The feature flag payloads
|
|
31
|
+
* @returns The normalized flag details
|
|
32
|
+
*/
|
|
33
|
+
export declare const createFlagsResponseFromFlagsAndPayloads: (featureFlags: PostHogV1FlagsResponse["featureFlags"], featureFlagPayloads: PostHogV1FlagsResponse["featureFlagPayloads"]) => PostHogFeatureFlagsResponse;
|
|
34
|
+
export declare const updateFlagValue: (flag: FeatureFlagDetail, value: FeatureFlagValue) => FeatureFlagDetail;
|
|
35
|
+
//# sourceMappingURL=featureFlagUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureFlagUtils.d.ts","sourceRoot":"","sources":["../src/featureFlagUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAEhB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EAEtB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,sBAAsB,GACjC,eACI,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,GACpD,mBAAmB,CAAC,sBAAsB,EAAE,cAAc,GAAG,qBAAqB,CAAC,KACtF,2BAgCF,CAAA;AAqBD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,oBAAoB,CAAC,OAAO,CAAC,KAAG,oBAAoB,CAAC,cAAc,CAMhH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAC/B,OAAO,oBAAoB,CAAC,OAAO,CAAC,KACnC,oBAAoB,CAAC,qBAAqB,CAa5C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAC7C,eAAe,2BAA2B,KACzC,oBAAoB,CAAC,OAAO,CAoB9B,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,QAAQ,iBAAiB,GAAG,SAAS,KAAG,gBAAgB,GAAG,SAE9F,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,GAAG,KAAG,GAU5C,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,uCAAuC,GAClD,cAAc,sBAAsB,CAAC,cAAc,CAAC,EACpD,qBAAqB,sBAAsB,CAAC,qBAAqB,CAAC,KACjE,2BAaF,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,MAAM,iBAAiB,EAAE,OAAO,gBAAgB,KAAG,iBAMlF,CAAA"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
createFlagsResponseFromFlagsAndPayloads: ()=>createFlagsResponseFromFlagsAndPayloads,
|
|
28
|
+
getFeatureFlagValue: ()=>getFeatureFlagValue,
|
|
29
|
+
getFlagDetailsFromFlagsAndPayloads: ()=>getFlagDetailsFromFlagsAndPayloads,
|
|
30
|
+
getFlagValuesFromFlags: ()=>getFlagValuesFromFlags,
|
|
31
|
+
getPayloadsFromFlags: ()=>getPayloadsFromFlags,
|
|
32
|
+
normalizeFlagsResponse: ()=>normalizeFlagsResponse,
|
|
33
|
+
parsePayload: ()=>parsePayload,
|
|
34
|
+
updateFlagValue: ()=>updateFlagValue
|
|
35
|
+
});
|
|
36
|
+
const normalizeFlagsResponse = (flagsResponse)=>{
|
|
37
|
+
if ('flags' in flagsResponse) {
|
|
38
|
+
const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);
|
|
39
|
+
const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);
|
|
40
|
+
return {
|
|
41
|
+
...flagsResponse,
|
|
42
|
+
featureFlags,
|
|
43
|
+
featureFlagPayloads
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
{
|
|
47
|
+
var _flagsResponse_featureFlags;
|
|
48
|
+
const featureFlags = null != (_flagsResponse_featureFlags = flagsResponse.featureFlags) ? _flagsResponse_featureFlags : {};
|
|
49
|
+
const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map((param)=>{
|
|
50
|
+
let [k, v] = param;
|
|
51
|
+
return [
|
|
52
|
+
k,
|
|
53
|
+
parsePayload(v)
|
|
54
|
+
];
|
|
55
|
+
}));
|
|
56
|
+
const flags = Object.fromEntries(Object.entries(featureFlags).map((param)=>{
|
|
57
|
+
let [key, value] = param;
|
|
58
|
+
return [
|
|
59
|
+
key,
|
|
60
|
+
getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])
|
|
61
|
+
];
|
|
62
|
+
}));
|
|
63
|
+
return {
|
|
64
|
+
...flagsResponse,
|
|
65
|
+
featureFlags,
|
|
66
|
+
featureFlagPayloads,
|
|
67
|
+
flags
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
function getFlagDetailFromFlagAndPayload(key, value, payload) {
|
|
72
|
+
return {
|
|
73
|
+
key: key,
|
|
74
|
+
enabled: 'string' == typeof value ? true : value,
|
|
75
|
+
variant: 'string' == typeof value ? value : void 0,
|
|
76
|
+
reason: void 0,
|
|
77
|
+
metadata: {
|
|
78
|
+
id: void 0,
|
|
79
|
+
version: void 0,
|
|
80
|
+
payload: payload ? JSON.stringify(payload) : void 0,
|
|
81
|
+
description: void 0
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(null != flags ? flags : {}).map((param)=>{
|
|
86
|
+
let [key, detail] = param;
|
|
87
|
+
return [
|
|
88
|
+
key,
|
|
89
|
+
getFeatureFlagValue(detail)
|
|
90
|
+
];
|
|
91
|
+
}).filter((param)=>{
|
|
92
|
+
let [, value] = param;
|
|
93
|
+
return void 0 !== value;
|
|
94
|
+
}));
|
|
95
|
+
const getPayloadsFromFlags = (flags)=>{
|
|
96
|
+
const safeFlags = null != flags ? flags : {};
|
|
97
|
+
return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{
|
|
98
|
+
const details = safeFlags[flag];
|
|
99
|
+
return details.enabled && details.metadata && void 0 !== details.metadata.payload;
|
|
100
|
+
}).map((flag)=>{
|
|
101
|
+
var _safeFlags_flag_metadata;
|
|
102
|
+
const payload = null == (_safeFlags_flag_metadata = safeFlags[flag].metadata) ? void 0 : _safeFlags_flag_metadata.payload;
|
|
103
|
+
return [
|
|
104
|
+
flag,
|
|
105
|
+
payload ? parsePayload(payload) : void 0
|
|
106
|
+
];
|
|
107
|
+
}));
|
|
108
|
+
};
|
|
109
|
+
const getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{
|
|
110
|
+
var _flagsResponse_featureFlags;
|
|
111
|
+
const flags = null != (_flagsResponse_featureFlags = flagsResponse.featureFlags) ? _flagsResponse_featureFlags : {};
|
|
112
|
+
var _flagsResponse_featureFlagPayloads;
|
|
113
|
+
const payloads = null != (_flagsResponse_featureFlagPayloads = flagsResponse.featureFlagPayloads) ? _flagsResponse_featureFlagPayloads : {};
|
|
114
|
+
return Object.fromEntries(Object.entries(flags).map((param)=>{
|
|
115
|
+
let [key, value] = param;
|
|
116
|
+
return [
|
|
117
|
+
key,
|
|
118
|
+
{
|
|
119
|
+
key: key,
|
|
120
|
+
enabled: 'string' == typeof value ? true : value,
|
|
121
|
+
variant: 'string' == typeof value ? value : void 0,
|
|
122
|
+
reason: void 0,
|
|
123
|
+
metadata: {
|
|
124
|
+
id: void 0,
|
|
125
|
+
version: void 0,
|
|
126
|
+
payload: (null == payloads ? void 0 : payloads[key]) ? JSON.stringify(payloads[key]) : void 0,
|
|
127
|
+
description: void 0
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
];
|
|
131
|
+
}));
|
|
132
|
+
};
|
|
133
|
+
const getFeatureFlagValue = (detail)=>{
|
|
134
|
+
var _detail_variant;
|
|
135
|
+
return void 0 === detail ? void 0 : null != (_detail_variant = detail.variant) ? _detail_variant : detail.enabled;
|
|
136
|
+
};
|
|
137
|
+
const parsePayload = (response)=>{
|
|
138
|
+
if ('string' != typeof response) return response;
|
|
139
|
+
try {
|
|
140
|
+
return JSON.parse(response);
|
|
141
|
+
} catch (e) {
|
|
142
|
+
return response;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{
|
|
146
|
+
const allKeys = [
|
|
147
|
+
...new Set([
|
|
148
|
+
...Object.keys(null != featureFlags ? featureFlags : {}),
|
|
149
|
+
...Object.keys(null != featureFlagPayloads ? featureFlagPayloads : {})
|
|
150
|
+
])
|
|
151
|
+
];
|
|
152
|
+
const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>{
|
|
153
|
+
var _featureFlags_key;
|
|
154
|
+
return res[key] = null != (_featureFlags_key = featureFlags[key]) ? _featureFlags_key : true, res;
|
|
155
|
+
}, {});
|
|
156
|
+
const flagDetails = {
|
|
157
|
+
featureFlags: enabledFlags,
|
|
158
|
+
featureFlagPayloads: null != featureFlagPayloads ? featureFlagPayloads : {}
|
|
159
|
+
};
|
|
160
|
+
return normalizeFlagsResponse(flagDetails);
|
|
161
|
+
};
|
|
162
|
+
const updateFlagValue = (flag, value)=>({
|
|
163
|
+
...flag,
|
|
164
|
+
enabled: getEnabledFromValue(value),
|
|
165
|
+
variant: getVariantFromValue(value)
|
|
166
|
+
});
|
|
167
|
+
function getEnabledFromValue(value) {
|
|
168
|
+
return 'string' == typeof value ? true : value;
|
|
169
|
+
}
|
|
170
|
+
function getVariantFromValue(value) {
|
|
171
|
+
return 'string' == typeof value ? value : void 0;
|
|
172
|
+
}
|
|
173
|
+
exports.createFlagsResponseFromFlagsAndPayloads = __webpack_exports__.createFlagsResponseFromFlagsAndPayloads;
|
|
174
|
+
exports.getFeatureFlagValue = __webpack_exports__.getFeatureFlagValue;
|
|
175
|
+
exports.getFlagDetailsFromFlagsAndPayloads = __webpack_exports__.getFlagDetailsFromFlagsAndPayloads;
|
|
176
|
+
exports.getFlagValuesFromFlags = __webpack_exports__.getFlagValuesFromFlags;
|
|
177
|
+
exports.getPayloadsFromFlags = __webpack_exports__.getPayloadsFromFlags;
|
|
178
|
+
exports.normalizeFlagsResponse = __webpack_exports__.normalizeFlagsResponse;
|
|
179
|
+
exports.parsePayload = __webpack_exports__.parsePayload;
|
|
180
|
+
exports.updateFlagValue = __webpack_exports__.updateFlagValue;
|
|
181
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
182
|
+
"createFlagsResponseFromFlagsAndPayloads",
|
|
183
|
+
"getFeatureFlagValue",
|
|
184
|
+
"getFlagDetailsFromFlagsAndPayloads",
|
|
185
|
+
"getFlagValuesFromFlags",
|
|
186
|
+
"getPayloadsFromFlags",
|
|
187
|
+
"normalizeFlagsResponse",
|
|
188
|
+
"parsePayload",
|
|
189
|
+
"updateFlagValue"
|
|
190
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
191
|
+
Object.defineProperty(exports, '__esModule', {
|
|
192
|
+
value: true
|
|
193
|
+
});
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
const normalizeFlagsResponse = (flagsResponse)=>{
|
|
2
|
+
if ('flags' in flagsResponse) {
|
|
3
|
+
const featureFlags = getFlagValuesFromFlags(flagsResponse.flags);
|
|
4
|
+
const featureFlagPayloads = getPayloadsFromFlags(flagsResponse.flags);
|
|
5
|
+
return {
|
|
6
|
+
...flagsResponse,
|
|
7
|
+
featureFlags,
|
|
8
|
+
featureFlagPayloads
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
{
|
|
12
|
+
var _flagsResponse_featureFlags;
|
|
13
|
+
const featureFlags = null != (_flagsResponse_featureFlags = flagsResponse.featureFlags) ? _flagsResponse_featureFlags : {};
|
|
14
|
+
const featureFlagPayloads = Object.fromEntries(Object.entries(flagsResponse.featureFlagPayloads || {}).map((param)=>{
|
|
15
|
+
let [k, v] = param;
|
|
16
|
+
return [
|
|
17
|
+
k,
|
|
18
|
+
parsePayload(v)
|
|
19
|
+
];
|
|
20
|
+
}));
|
|
21
|
+
const flags = Object.fromEntries(Object.entries(featureFlags).map((param)=>{
|
|
22
|
+
let [key, value] = param;
|
|
23
|
+
return [
|
|
24
|
+
key,
|
|
25
|
+
getFlagDetailFromFlagAndPayload(key, value, featureFlagPayloads[key])
|
|
26
|
+
];
|
|
27
|
+
}));
|
|
28
|
+
return {
|
|
29
|
+
...flagsResponse,
|
|
30
|
+
featureFlags,
|
|
31
|
+
featureFlagPayloads,
|
|
32
|
+
flags
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
function getFlagDetailFromFlagAndPayload(key, value, payload) {
|
|
37
|
+
return {
|
|
38
|
+
key: key,
|
|
39
|
+
enabled: 'string' == typeof value ? true : value,
|
|
40
|
+
variant: 'string' == typeof value ? value : void 0,
|
|
41
|
+
reason: void 0,
|
|
42
|
+
metadata: {
|
|
43
|
+
id: void 0,
|
|
44
|
+
version: void 0,
|
|
45
|
+
payload: payload ? JSON.stringify(payload) : void 0,
|
|
46
|
+
description: void 0
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const getFlagValuesFromFlags = (flags)=>Object.fromEntries(Object.entries(null != flags ? flags : {}).map((param)=>{
|
|
51
|
+
let [key, detail] = param;
|
|
52
|
+
return [
|
|
53
|
+
key,
|
|
54
|
+
getFeatureFlagValue(detail)
|
|
55
|
+
];
|
|
56
|
+
}).filter((param)=>{
|
|
57
|
+
let [, value] = param;
|
|
58
|
+
return void 0 !== value;
|
|
59
|
+
}));
|
|
60
|
+
const getPayloadsFromFlags = (flags)=>{
|
|
61
|
+
const safeFlags = null != flags ? flags : {};
|
|
62
|
+
return Object.fromEntries(Object.keys(safeFlags).filter((flag)=>{
|
|
63
|
+
const details = safeFlags[flag];
|
|
64
|
+
return details.enabled && details.metadata && void 0 !== details.metadata.payload;
|
|
65
|
+
}).map((flag)=>{
|
|
66
|
+
var _safeFlags_flag_metadata;
|
|
67
|
+
const payload = null == (_safeFlags_flag_metadata = safeFlags[flag].metadata) ? void 0 : _safeFlags_flag_metadata.payload;
|
|
68
|
+
return [
|
|
69
|
+
flag,
|
|
70
|
+
payload ? parsePayload(payload) : void 0
|
|
71
|
+
];
|
|
72
|
+
}));
|
|
73
|
+
};
|
|
74
|
+
const getFlagDetailsFromFlagsAndPayloads = (flagsResponse)=>{
|
|
75
|
+
var _flagsResponse_featureFlags;
|
|
76
|
+
const flags = null != (_flagsResponse_featureFlags = flagsResponse.featureFlags) ? _flagsResponse_featureFlags : {};
|
|
77
|
+
var _flagsResponse_featureFlagPayloads;
|
|
78
|
+
const payloads = null != (_flagsResponse_featureFlagPayloads = flagsResponse.featureFlagPayloads) ? _flagsResponse_featureFlagPayloads : {};
|
|
79
|
+
return Object.fromEntries(Object.entries(flags).map((param)=>{
|
|
80
|
+
let [key, value] = param;
|
|
81
|
+
return [
|
|
82
|
+
key,
|
|
83
|
+
{
|
|
84
|
+
key: key,
|
|
85
|
+
enabled: 'string' == typeof value ? true : value,
|
|
86
|
+
variant: 'string' == typeof value ? value : void 0,
|
|
87
|
+
reason: void 0,
|
|
88
|
+
metadata: {
|
|
89
|
+
id: void 0,
|
|
90
|
+
version: void 0,
|
|
91
|
+
payload: (null == payloads ? void 0 : payloads[key]) ? JSON.stringify(payloads[key]) : void 0,
|
|
92
|
+
description: void 0
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
];
|
|
96
|
+
}));
|
|
97
|
+
};
|
|
98
|
+
const getFeatureFlagValue = (detail)=>{
|
|
99
|
+
var _detail_variant;
|
|
100
|
+
return void 0 === detail ? void 0 : null != (_detail_variant = detail.variant) ? _detail_variant : detail.enabled;
|
|
101
|
+
};
|
|
102
|
+
const parsePayload = (response)=>{
|
|
103
|
+
if ('string' != typeof response) return response;
|
|
104
|
+
try {
|
|
105
|
+
return JSON.parse(response);
|
|
106
|
+
} catch (e) {
|
|
107
|
+
return response;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const createFlagsResponseFromFlagsAndPayloads = (featureFlags, featureFlagPayloads)=>{
|
|
111
|
+
const allKeys = [
|
|
112
|
+
...new Set([
|
|
113
|
+
...Object.keys(null != featureFlags ? featureFlags : {}),
|
|
114
|
+
...Object.keys(null != featureFlagPayloads ? featureFlagPayloads : {})
|
|
115
|
+
])
|
|
116
|
+
];
|
|
117
|
+
const enabledFlags = allKeys.filter((flag)=>!!featureFlags[flag] || !!featureFlagPayloads[flag]).reduce((res, key)=>{
|
|
118
|
+
var _featureFlags_key;
|
|
119
|
+
return res[key] = null != (_featureFlags_key = featureFlags[key]) ? _featureFlags_key : true, res;
|
|
120
|
+
}, {});
|
|
121
|
+
const flagDetails = {
|
|
122
|
+
featureFlags: enabledFlags,
|
|
123
|
+
featureFlagPayloads: null != featureFlagPayloads ? featureFlagPayloads : {}
|
|
124
|
+
};
|
|
125
|
+
return normalizeFlagsResponse(flagDetails);
|
|
126
|
+
};
|
|
127
|
+
const updateFlagValue = (flag, value)=>({
|
|
128
|
+
...flag,
|
|
129
|
+
enabled: getEnabledFromValue(value),
|
|
130
|
+
variant: getVariantFromValue(value)
|
|
131
|
+
});
|
|
132
|
+
function getEnabledFromValue(value) {
|
|
133
|
+
return 'string' == typeof value ? true : value;
|
|
134
|
+
}
|
|
135
|
+
function getVariantFromValue(value) {
|
|
136
|
+
return 'string' == typeof value ? value : void 0;
|
|
137
|
+
}
|
|
138
|
+
export { createFlagsResponseFromFlagsAndPayloads, getFeatureFlagValue, getFlagDetailsFromFlagsAndPayloads, getFlagValuesFromFlags, getPayloadsFromFlags, normalizeFlagsResponse, parsePayload, updateFlagValue };
|
package/dist/gzip.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Older browsers and some runtimes don't support this yet
|
|
3
|
+
* This API (as of 2025-05-07) is not available on React Native.
|
|
4
|
+
*/
|
|
5
|
+
export declare function isGzipSupported(): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Gzip a string using Compression Streams API if it's available
|
|
8
|
+
*/
|
|
9
|
+
export declare function gzipCompress(input: string, isDebug?: boolean): Promise<Blob | null>;
|
|
10
|
+
//# sourceMappingURL=gzip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gzip.d.ts","sourceRoot":"","sources":["../src/gzip.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAiBtF"}
|
package/dist/gzip.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
gzipCompress: ()=>gzipCompress,
|
|
28
|
+
isGzipSupported: ()=>isGzipSupported
|
|
29
|
+
});
|
|
30
|
+
function isGzipSupported() {
|
|
31
|
+
return 'CompressionStream' in globalThis;
|
|
32
|
+
}
|
|
33
|
+
async function gzipCompress(input) {
|
|
34
|
+
let isDebug = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
|
|
35
|
+
try {
|
|
36
|
+
const dataStream = new Blob([
|
|
37
|
+
input
|
|
38
|
+
], {
|
|
39
|
+
type: 'text/plain'
|
|
40
|
+
}).stream();
|
|
41
|
+
const compressedStream = dataStream.pipeThrough(new CompressionStream('gzip'));
|
|
42
|
+
return await new Response(compressedStream).blob();
|
|
43
|
+
} catch (error) {
|
|
44
|
+
if (isDebug) console.error('Failed to gzip compress data', error);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.gzipCompress = __webpack_exports__.gzipCompress;
|
|
49
|
+
exports.isGzipSupported = __webpack_exports__.isGzipSupported;
|
|
50
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
51
|
+
"gzipCompress",
|
|
52
|
+
"isGzipSupported"
|
|
53
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
54
|
+
Object.defineProperty(exports, '__esModule', {
|
|
55
|
+
value: true
|
|
56
|
+
});
|
package/dist/gzip.mjs
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
function isGzipSupported() {
|
|
2
|
+
return 'CompressionStream' in globalThis;
|
|
3
|
+
}
|
|
4
|
+
async function gzipCompress(input) {
|
|
5
|
+
let isDebug = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
|
|
6
|
+
try {
|
|
7
|
+
const dataStream = new Blob([
|
|
8
|
+
input
|
|
9
|
+
], {
|
|
10
|
+
type: 'text/plain'
|
|
11
|
+
}).stream();
|
|
12
|
+
const compressedStream = dataStream.pipeThrough(new CompressionStream('gzip'));
|
|
13
|
+
return await new Response(compressedStream).blob();
|
|
14
|
+
} catch (error) {
|
|
15
|
+
if (isDebug) console.error('Failed to gzip compress data', error);
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export { gzipCompress, isGzipSupported };
|