@schematichq/schematic-react 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/schematic-react.cjs.js +17 -19
- package/dist/schematic-react.d.ts +2 -0
- package/dist/schematic-react.esm.js +17 -19
- package/package.json +2 -2
@@ -72,8 +72,9 @@ var v4_default = v4;
|
|
72
72
|
var anonymousIdKey = "schematicId";
|
73
73
|
var Schematic = class {
|
74
74
|
apiKey;
|
75
|
-
apiUrl = "api.schematichq.com";
|
76
|
-
|
75
|
+
apiUrl = "https://api.schematichq.com";
|
76
|
+
webSocketUrl = "wss://api.schematichq.com";
|
77
|
+
eventUrl = "https://c.schematichq.com";
|
77
78
|
conn = null;
|
78
79
|
context = {};
|
79
80
|
eventQueue;
|
@@ -97,6 +98,9 @@ var Schematic = class {
|
|
97
98
|
if (options?.eventUrl !== void 0) {
|
98
99
|
this.eventUrl = options.eventUrl;
|
99
100
|
}
|
101
|
+
if (options?.webSocketUrl !== void 0) {
|
102
|
+
this.webSocketUrl = options.webSocketUrl;
|
103
|
+
}
|
100
104
|
if (typeof window !== "undefined") {
|
101
105
|
window.addEventListener("beforeunload", () => {
|
102
106
|
this.flushEventQueue();
|
@@ -110,7 +114,7 @@ var Schematic = class {
|
|
110
114
|
const contextVals = this.values[contextString(context)] ?? {};
|
111
115
|
return typeof contextVals[key] === "undefined" ? fallback : contextVals[key];
|
112
116
|
}
|
113
|
-
const requestUrl = this.
|
117
|
+
const requestUrl = `${this.apiUrl}/flags/${key}/check`;
|
114
118
|
return fetch(requestUrl, {
|
115
119
|
method: "POST",
|
116
120
|
headers: {
|
@@ -133,7 +137,7 @@ var Schematic = class {
|
|
133
137
|
// Make a REST API call to fetch all flag values for a given context
|
134
138
|
checkFlags = async (context) => {
|
135
139
|
context = context || this.context;
|
136
|
-
const requestUrl = this.
|
140
|
+
const requestUrl = `${this.apiUrl}/flags/check`;
|
137
141
|
const requestBody = JSON.stringify(context);
|
138
142
|
return fetch(requestUrl, {
|
139
143
|
method: "POST",
|
@@ -189,16 +193,6 @@ var Schematic = class {
|
|
189
193
|
track = (body) => {
|
190
194
|
this.handleEvent("track", body);
|
191
195
|
};
|
192
|
-
getUrl = (domain, path, urlType) => {
|
193
|
-
let scheme = "http";
|
194
|
-
if (urlType === "ws") {
|
195
|
-
scheme = "ws";
|
196
|
-
}
|
197
|
-
if (typeof window === "undefined" || window.location.protocol === "https:") {
|
198
|
-
return `${scheme}s://${domain}/${path}`;
|
199
|
-
}
|
200
|
-
return `${scheme}://${domain}/${path}`;
|
201
|
-
};
|
202
196
|
flushEventQueue = () => {
|
203
197
|
while (this.eventQueue.length > 0) {
|
204
198
|
const event = this.eventQueue.shift();
|
@@ -235,7 +229,7 @@ var Schematic = class {
|
|
235
229
|
}
|
236
230
|
};
|
237
231
|
sendEvent = (event) => {
|
238
|
-
const captureUrl = this.
|
232
|
+
const captureUrl = `${this.eventUrl}/e`;
|
239
233
|
const payload = JSON.stringify(event);
|
240
234
|
fetch(captureUrl, {
|
241
235
|
method: "POST",
|
@@ -261,7 +255,7 @@ var Schematic = class {
|
|
261
255
|
if (this.conn) {
|
262
256
|
resolve();
|
263
257
|
}
|
264
|
-
const wsUrl = this.
|
258
|
+
const wsUrl = `${this.webSocketUrl}/flags/bootstrap`;
|
265
259
|
const webSocket = new WebSocket(wsUrl);
|
266
260
|
this.conn = webSocket;
|
267
261
|
webSocket.onopen = () => {
|
@@ -345,7 +339,9 @@ var SchematicContext = (0, import_react.createContext)({
|
|
345
339
|
var SchematicProvider = ({
|
346
340
|
apiUrl,
|
347
341
|
children,
|
348
|
-
|
342
|
+
eventUrl,
|
343
|
+
publishableKey,
|
344
|
+
webSocketUrl
|
349
345
|
}) => {
|
350
346
|
const [client, setClient] = (0, import_react.useState)();
|
351
347
|
const [flagValues, setFlagValues] = (0, import_react.useState)({});
|
@@ -355,12 +351,14 @@ var SchematicProvider = ({
|
|
355
351
|
}
|
356
352
|
const client2 = new Schematic(publishableKey, {
|
357
353
|
apiUrl,
|
354
|
+
eventUrl,
|
358
355
|
flagListener: setFlagValues,
|
359
|
-
useWebSocket: true
|
356
|
+
useWebSocket: true,
|
357
|
+
webSocketUrl
|
360
358
|
});
|
361
359
|
setClient(client2);
|
362
360
|
return client2.cleanup;
|
363
|
-
}, [publishableKey]);
|
361
|
+
}, [apiUrl, eventUrl, publishableKey, webSocketUrl]);
|
364
362
|
const contextValue = {
|
365
363
|
client,
|
366
364
|
flagValues
|
@@ -42,8 +42,9 @@ var v4_default = v4;
|
|
42
42
|
var anonymousIdKey = "schematicId";
|
43
43
|
var Schematic = class {
|
44
44
|
apiKey;
|
45
|
-
apiUrl = "api.schematichq.com";
|
46
|
-
|
45
|
+
apiUrl = "https://api.schematichq.com";
|
46
|
+
webSocketUrl = "wss://api.schematichq.com";
|
47
|
+
eventUrl = "https://c.schematichq.com";
|
47
48
|
conn = null;
|
48
49
|
context = {};
|
49
50
|
eventQueue;
|
@@ -67,6 +68,9 @@ var Schematic = class {
|
|
67
68
|
if (options?.eventUrl !== void 0) {
|
68
69
|
this.eventUrl = options.eventUrl;
|
69
70
|
}
|
71
|
+
if (options?.webSocketUrl !== void 0) {
|
72
|
+
this.webSocketUrl = options.webSocketUrl;
|
73
|
+
}
|
70
74
|
if (typeof window !== "undefined") {
|
71
75
|
window.addEventListener("beforeunload", () => {
|
72
76
|
this.flushEventQueue();
|
@@ -80,7 +84,7 @@ var Schematic = class {
|
|
80
84
|
const contextVals = this.values[contextString(context)] ?? {};
|
81
85
|
return typeof contextVals[key] === "undefined" ? fallback : contextVals[key];
|
82
86
|
}
|
83
|
-
const requestUrl = this.
|
87
|
+
const requestUrl = `${this.apiUrl}/flags/${key}/check`;
|
84
88
|
return fetch(requestUrl, {
|
85
89
|
method: "POST",
|
86
90
|
headers: {
|
@@ -103,7 +107,7 @@ var Schematic = class {
|
|
103
107
|
// Make a REST API call to fetch all flag values for a given context
|
104
108
|
checkFlags = async (context) => {
|
105
109
|
context = context || this.context;
|
106
|
-
const requestUrl = this.
|
110
|
+
const requestUrl = `${this.apiUrl}/flags/check`;
|
107
111
|
const requestBody = JSON.stringify(context);
|
108
112
|
return fetch(requestUrl, {
|
109
113
|
method: "POST",
|
@@ -159,16 +163,6 @@ var Schematic = class {
|
|
159
163
|
track = (body) => {
|
160
164
|
this.handleEvent("track", body);
|
161
165
|
};
|
162
|
-
getUrl = (domain, path, urlType) => {
|
163
|
-
let scheme = "http";
|
164
|
-
if (urlType === "ws") {
|
165
|
-
scheme = "ws";
|
166
|
-
}
|
167
|
-
if (typeof window === "undefined" || window.location.protocol === "https:") {
|
168
|
-
return `${scheme}s://${domain}/${path}`;
|
169
|
-
}
|
170
|
-
return `${scheme}://${domain}/${path}`;
|
171
|
-
};
|
172
166
|
flushEventQueue = () => {
|
173
167
|
while (this.eventQueue.length > 0) {
|
174
168
|
const event = this.eventQueue.shift();
|
@@ -205,7 +199,7 @@ var Schematic = class {
|
|
205
199
|
}
|
206
200
|
};
|
207
201
|
sendEvent = (event) => {
|
208
|
-
const captureUrl = this.
|
202
|
+
const captureUrl = `${this.eventUrl}/e`;
|
209
203
|
const payload = JSON.stringify(event);
|
210
204
|
fetch(captureUrl, {
|
211
205
|
method: "POST",
|
@@ -231,7 +225,7 @@ var Schematic = class {
|
|
231
225
|
if (this.conn) {
|
232
226
|
resolve();
|
233
227
|
}
|
234
|
-
const wsUrl = this.
|
228
|
+
const wsUrl = `${this.webSocketUrl}/flags/bootstrap`;
|
235
229
|
const webSocket = new WebSocket(wsUrl);
|
236
230
|
this.conn = webSocket;
|
237
231
|
webSocket.onopen = () => {
|
@@ -320,7 +314,9 @@ var SchematicContext = createContext({
|
|
320
314
|
var SchematicProvider = ({
|
321
315
|
apiUrl,
|
322
316
|
children,
|
323
|
-
|
317
|
+
eventUrl,
|
318
|
+
publishableKey,
|
319
|
+
webSocketUrl
|
324
320
|
}) => {
|
325
321
|
const [client, setClient] = useState();
|
326
322
|
const [flagValues, setFlagValues] = useState({});
|
@@ -330,12 +326,14 @@ var SchematicProvider = ({
|
|
330
326
|
}
|
331
327
|
const client2 = new Schematic(publishableKey, {
|
332
328
|
apiUrl,
|
329
|
+
eventUrl,
|
333
330
|
flagListener: setFlagValues,
|
334
|
-
useWebSocket: true
|
331
|
+
useWebSocket: true,
|
332
|
+
webSocketUrl
|
335
333
|
});
|
336
334
|
setClient(client2);
|
337
335
|
return client2.cleanup;
|
338
|
-
}, [publishableKey]);
|
336
|
+
}, [apiUrl, eventUrl, publishableKey, webSocketUrl]);
|
339
337
|
const contextValue = {
|
340
338
|
client,
|
341
339
|
flagValues
|
package/package.json
CHANGED
@@ -42,9 +42,9 @@
|
|
42
42
|
"test": "jest --config jest.config.js"
|
43
43
|
},
|
44
44
|
"types": "dist/schematic-react.d.ts",
|
45
|
-
"version": "0.1.
|
45
|
+
"version": "0.1.5",
|
46
46
|
"dependencies": {
|
47
|
-
"@schematichq/schematic-js": "^0.1.
|
47
|
+
"@schematichq/schematic-js": "^0.1.5"
|
48
48
|
},
|
49
49
|
"peerDependencies": {
|
50
50
|
"react": ">=18"
|