@schematichq/schematic-react 1.0.0 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
@@ -624,6 +624,7 @@ function contextString(context) {
|
|
624
624
|
}
|
625
625
|
var anonymousIdKey = "schematicId";
|
626
626
|
var Schematic = class {
|
627
|
+
additionalHeaders = {};
|
627
628
|
apiKey;
|
628
629
|
apiUrl = "https://api.schematichq.com";
|
629
630
|
conn = null;
|
@@ -643,6 +644,9 @@ var Schematic = class {
|
|
643
644
|
this.eventQueue = [];
|
644
645
|
this.useWebSocket = options?.useWebSocket ?? false;
|
645
646
|
this.flagListener = options?.flagListener;
|
647
|
+
if (options?.additionalHeaders) {
|
648
|
+
this.additionalHeaders = options.additionalHeaders;
|
649
|
+
}
|
646
650
|
if (options?.storage) {
|
647
651
|
this.storage = options.storage;
|
648
652
|
} else if (typeof localStorage !== "undefined") {
|
@@ -676,8 +680,9 @@ var Schematic = class {
|
|
676
680
|
return fetch(requestUrl, {
|
677
681
|
method: "POST",
|
678
682
|
headers: {
|
679
|
-
|
680
|
-
"Content-Type": "application/json;charset=UTF-8"
|
683
|
+
...this.additionalHeaders ?? {},
|
684
|
+
"Content-Type": "application/json;charset=UTF-8",
|
685
|
+
"X-Schematic-Api-Key": this.apiKey
|
681
686
|
},
|
682
687
|
body: JSON.stringify(context)
|
683
688
|
}).then((response) => {
|
@@ -700,6 +705,7 @@ var Schematic = class {
|
|
700
705
|
return fetch(requestUrl, {
|
701
706
|
method: "POST",
|
702
707
|
headers: {
|
708
|
+
...this.additionalHeaders ?? {},
|
703
709
|
"Content-Type": "application/json;charset=UTF-8",
|
704
710
|
"X-Schematic-Api-Key": this.apiKey
|
705
711
|
},
|
@@ -805,6 +811,7 @@ var Schematic = class {
|
|
805
811
|
await fetch(captureUrl, {
|
806
812
|
method: "POST",
|
807
813
|
headers: {
|
814
|
+
...this.additionalHeaders ?? {},
|
808
815
|
"Content-Type": "application/json;charset=UTF-8"
|
809
816
|
},
|
810
817
|
body: payload
|
@@ -854,8 +861,7 @@ var Schematic = class {
|
|
854
861
|
wsSendMessage = (socket, context) => {
|
855
862
|
return new Promise((resolve, reject) => {
|
856
863
|
if (contextString(context) == contextString(this.context)) {
|
857
|
-
resolve();
|
858
|
-
return;
|
864
|
+
return resolve(this.setIsPending(false));
|
859
865
|
}
|
860
866
|
this.context = context;
|
861
867
|
const sendMessage = () => {
|
@@ -868,7 +874,7 @@ var Schematic = class {
|
|
868
874
|
(message.flags ?? []).forEach(
|
869
875
|
(flag) => {
|
870
876
|
this.values[contextString(context)][flag.flag] = flag.value;
|
871
|
-
this.notifyFlagValueListeners(flag.flag);
|
877
|
+
this.notifyFlagValueListeners(flag.flag, flag.value);
|
872
878
|
}
|
873
879
|
);
|
874
880
|
if (this.flagListener) {
|
@@ -912,7 +918,9 @@ var Schematic = class {
|
|
912
918
|
};
|
913
919
|
setIsPending = (isPending) => {
|
914
920
|
this.isPending = isPending;
|
915
|
-
this.isPendingListeners.forEach(
|
921
|
+
this.isPendingListeners.forEach(
|
922
|
+
(listener) => notifyListener(listener, isPending)
|
923
|
+
);
|
916
924
|
};
|
917
925
|
// flagValues state
|
918
926
|
getFlagValue = (flagKey) => {
|
@@ -932,11 +940,18 @@ var Schematic = class {
|
|
932
940
|
this.flagValueListeners[flagKey].delete(listener);
|
933
941
|
};
|
934
942
|
};
|
935
|
-
notifyFlagValueListeners = (flagKey) => {
|
943
|
+
notifyFlagValueListeners = (flagKey, value) => {
|
936
944
|
const listeners = this.flagValueListeners?.[flagKey] ?? [];
|
937
|
-
listeners.forEach((listener) => listener
|
945
|
+
listeners.forEach((listener) => notifyListener(listener, value));
|
938
946
|
};
|
939
947
|
};
|
948
|
+
var notifyListener = (listener, value) => {
|
949
|
+
if (listener.length > 0) {
|
950
|
+
listener(value);
|
951
|
+
} else {
|
952
|
+
listener();
|
953
|
+
}
|
954
|
+
};
|
940
955
|
|
941
956
|
// src/context/schematic.tsx
|
942
957
|
var import_react = __toESM(require("react"));
|
@@ -582,6 +582,7 @@ function contextString(context) {
|
|
582
582
|
}
|
583
583
|
var anonymousIdKey = "schematicId";
|
584
584
|
var Schematic = class {
|
585
|
+
additionalHeaders = {};
|
585
586
|
apiKey;
|
586
587
|
apiUrl = "https://api.schematichq.com";
|
587
588
|
conn = null;
|
@@ -601,6 +602,9 @@ var Schematic = class {
|
|
601
602
|
this.eventQueue = [];
|
602
603
|
this.useWebSocket = options?.useWebSocket ?? false;
|
603
604
|
this.flagListener = options?.flagListener;
|
605
|
+
if (options?.additionalHeaders) {
|
606
|
+
this.additionalHeaders = options.additionalHeaders;
|
607
|
+
}
|
604
608
|
if (options?.storage) {
|
605
609
|
this.storage = options.storage;
|
606
610
|
} else if (typeof localStorage !== "undefined") {
|
@@ -634,8 +638,9 @@ var Schematic = class {
|
|
634
638
|
return fetch(requestUrl, {
|
635
639
|
method: "POST",
|
636
640
|
headers: {
|
637
|
-
|
638
|
-
"Content-Type": "application/json;charset=UTF-8"
|
641
|
+
...this.additionalHeaders ?? {},
|
642
|
+
"Content-Type": "application/json;charset=UTF-8",
|
643
|
+
"X-Schematic-Api-Key": this.apiKey
|
639
644
|
},
|
640
645
|
body: JSON.stringify(context)
|
641
646
|
}).then((response) => {
|
@@ -658,6 +663,7 @@ var Schematic = class {
|
|
658
663
|
return fetch(requestUrl, {
|
659
664
|
method: "POST",
|
660
665
|
headers: {
|
666
|
+
...this.additionalHeaders ?? {},
|
661
667
|
"Content-Type": "application/json;charset=UTF-8",
|
662
668
|
"X-Schematic-Api-Key": this.apiKey
|
663
669
|
},
|
@@ -763,6 +769,7 @@ var Schematic = class {
|
|
763
769
|
await fetch(captureUrl, {
|
764
770
|
method: "POST",
|
765
771
|
headers: {
|
772
|
+
...this.additionalHeaders ?? {},
|
766
773
|
"Content-Type": "application/json;charset=UTF-8"
|
767
774
|
},
|
768
775
|
body: payload
|
@@ -812,8 +819,7 @@ var Schematic = class {
|
|
812
819
|
wsSendMessage = (socket, context) => {
|
813
820
|
return new Promise((resolve, reject) => {
|
814
821
|
if (contextString(context) == contextString(this.context)) {
|
815
|
-
resolve();
|
816
|
-
return;
|
822
|
+
return resolve(this.setIsPending(false));
|
817
823
|
}
|
818
824
|
this.context = context;
|
819
825
|
const sendMessage = () => {
|
@@ -826,7 +832,7 @@ var Schematic = class {
|
|
826
832
|
(message.flags ?? []).forEach(
|
827
833
|
(flag) => {
|
828
834
|
this.values[contextString(context)][flag.flag] = flag.value;
|
829
|
-
this.notifyFlagValueListeners(flag.flag);
|
835
|
+
this.notifyFlagValueListeners(flag.flag, flag.value);
|
830
836
|
}
|
831
837
|
);
|
832
838
|
if (this.flagListener) {
|
@@ -870,7 +876,9 @@ var Schematic = class {
|
|
870
876
|
};
|
871
877
|
setIsPending = (isPending) => {
|
872
878
|
this.isPending = isPending;
|
873
|
-
this.isPendingListeners.forEach(
|
879
|
+
this.isPendingListeners.forEach(
|
880
|
+
(listener) => notifyListener(listener, isPending)
|
881
|
+
);
|
874
882
|
};
|
875
883
|
// flagValues state
|
876
884
|
getFlagValue = (flagKey) => {
|
@@ -890,11 +898,18 @@ var Schematic = class {
|
|
890
898
|
this.flagValueListeners[flagKey].delete(listener);
|
891
899
|
};
|
892
900
|
};
|
893
|
-
notifyFlagValueListeners = (flagKey) => {
|
901
|
+
notifyFlagValueListeners = (flagKey, value) => {
|
894
902
|
const listeners = this.flagValueListeners?.[flagKey] ?? [];
|
895
|
-
listeners.forEach((listener) => listener
|
903
|
+
listeners.forEach((listener) => notifyListener(listener, value));
|
896
904
|
};
|
897
905
|
};
|
906
|
+
var notifyListener = (listener, value) => {
|
907
|
+
if (listener.length > 0) {
|
908
|
+
listener(value);
|
909
|
+
} else {
|
910
|
+
listener();
|
911
|
+
}
|
912
|
+
};
|
898
913
|
|
899
914
|
// src/context/schematic.tsx
|
900
915
|
import React, { createContext, useEffect, useMemo } from "react";
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@schematichq/schematic-react",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.2",
|
4
4
|
"main": "dist/schematic-react.cjs.js",
|
5
5
|
"module": "dist/schematic-react.esm.js",
|
6
6
|
"types": "dist/schematic-react.d.ts",
|
@@ -17,23 +17,21 @@
|
|
17
17
|
},
|
18
18
|
"scripts": {
|
19
19
|
"dev": "yarn tsc --watch",
|
20
|
-
"build": "yarn tsc && yarn
|
20
|
+
"build": "yarn tsc && yarn format && yarn lint && yarn clean && yarn build:cjs && yarn build:esm && yarn build:types",
|
21
21
|
"build:cjs": "npx esbuild src/index.ts --bundle --external:react --format=cjs --outfile=dist/schematic-react.cjs.js",
|
22
22
|
"build:esm": "npx esbuild src/index.ts --bundle --external:react --format=esm --outfile=dist/schematic-react.esm.js",
|
23
23
|
"build:types": "npx tsc && npx api-extractor run",
|
24
24
|
"clean": "rm -rf dist",
|
25
25
|
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
|
26
26
|
"lint": "eslint src --ext ts,tsx --report-unused-disable-directives --fix",
|
27
|
-
"openapi": "rm -rf src/api/ && npx openapi-generator-cli generate -c openapi-config.yaml && prettier --write \"src/api/**/*.{ts,tsx}\"",
|
28
27
|
"test": "jest --config jest.config.js",
|
29
28
|
"tsc": "npx tsc"
|
30
29
|
},
|
31
30
|
"dependencies": {
|
32
|
-
"@schematichq/schematic-js": "^1.0.
|
31
|
+
"@schematichq/schematic-js": "^1.0.2"
|
33
32
|
},
|
34
33
|
"devDependencies": {
|
35
34
|
"@microsoft/api-extractor": "^7.47.9",
|
36
|
-
"@openapitools/openapi-generator-cli": "^2.13.9",
|
37
35
|
"@types/jest": "^29.5.13",
|
38
36
|
"@types/react": "^18.3.9",
|
39
37
|
"@typescript-eslint/eslint-plugin": "^8.7.0",
|