@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.
Files changed (43) hide show
  1. package/dist/eventemitter.d.ts +9 -0
  2. package/dist/eventemitter.d.ts.map +1 -0
  3. package/dist/eventemitter.js +52 -0
  4. package/dist/eventemitter.mjs +18 -0
  5. package/dist/featureFlagUtils.d.ts +35 -0
  6. package/dist/featureFlagUtils.d.ts.map +1 -0
  7. package/dist/featureFlagUtils.js +193 -0
  8. package/dist/featureFlagUtils.mjs +138 -0
  9. package/dist/gzip.d.ts +10 -0
  10. package/dist/gzip.d.ts.map +1 -0
  11. package/dist/gzip.js +56 -0
  12. package/dist/gzip.mjs +19 -0
  13. package/dist/index.d.ts +261 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +1305 -0
  16. package/dist/index.mjs +1198 -0
  17. package/dist/testing/PostHogCoreTestClient.d.ts +24 -0
  18. package/dist/testing/PostHogCoreTestClient.d.ts.map +1 -0
  19. package/dist/testing/PostHogCoreTestClient.js +95 -0
  20. package/dist/testing/PostHogCoreTestClient.mjs +58 -0
  21. package/dist/testing/index.d.ts +3 -0
  22. package/dist/testing/index.d.ts.map +1 -0
  23. package/dist/testing/index.js +69 -0
  24. package/dist/testing/index.mjs +2 -0
  25. package/dist/testing/test-utils.d.ts +6 -0
  26. package/dist/testing/test-utils.d.ts.map +1 -0
  27. package/dist/testing/test-utils.js +75 -0
  28. package/dist/testing/test-utils.mjs +29 -0
  29. package/dist/types.d.ts +441 -0
  30. package/dist/types.d.ts.map +1 -0
  31. package/dist/types.js +163 -0
  32. package/dist/types.mjs +99 -0
  33. package/dist/utils.d.ts +24 -0
  34. package/dist/utils.d.ts.map +1 -0
  35. package/dist/utils.js +115 -0
  36. package/dist/utils.mjs +51 -0
  37. package/dist/vendor/uuidv7.d.ts +180 -0
  38. package/dist/vendor/uuidv7.d.ts.map +1 -0
  39. package/dist/vendor/uuidv7.js +223 -0
  40. package/dist/vendor/uuidv7.js.LICENSE.txt +7 -0
  41. package/dist/vendor/uuidv7.mjs +174 -0
  42. package/dist/vendor/uuidv7.mjs.LICENSE.txt +7 -0
  43. 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 };