@buoy-gg/impersonate 7.0.18 → 7.0.19
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.
|
@@ -8,6 +8,7 @@ exports.createImpersonateSyncAdapter = createImpersonateSyncAdapter;
|
|
|
8
8
|
exports.impersonateSyncAdapter = void 0;
|
|
9
9
|
exports.registerImpersonateSearchUsers = registerImpersonateSearchUsers;
|
|
10
10
|
exports.toWireUri = toWireUri;
|
|
11
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
11
12
|
var _impersonateStore = require("../impersonate/utils/impersonateStore");
|
|
12
13
|
// Registered by createImpersonateTool, so the zero-config adapter (see
|
|
13
14
|
// FloatingDevTools' auto external sync) can proxy the dashboard's user
|
|
@@ -31,30 +32,6 @@ const METADATA_ON_DEVICE = Object.freeze({
|
|
|
31
32
|
__buoyOmitted: "user-metadata",
|
|
32
33
|
note: "User metadata stays on the device."
|
|
33
34
|
});
|
|
34
|
-
function jsonLongerThan(value, limit) {
|
|
35
|
-
let bytes = 0;
|
|
36
|
-
const stack = [value];
|
|
37
|
-
const seen = new Set();
|
|
38
|
-
while (stack.length > 0) {
|
|
39
|
-
if (bytes > limit) return true;
|
|
40
|
-
const v = stack.pop();
|
|
41
|
-
if (v === null || v === undefined) bytes += 4;else if (typeof v === "string") bytes += v.length + 2;else if (typeof v === "number") bytes += 8;else if (typeof v === "boolean") bytes += 5;else if (typeof v === "object") {
|
|
42
|
-
if (seen.has(v)) continue;
|
|
43
|
-
seen.add(v);
|
|
44
|
-
if (Array.isArray(v)) {
|
|
45
|
-
bytes += 2 + v.length;
|
|
46
|
-
for (let i = 0; i < v.length; i++) stack.push(v[i]);
|
|
47
|
-
} else {
|
|
48
|
-
bytes += 2;
|
|
49
|
-
for (const k in v) {
|
|
50
|
-
bytes += k.length + 4;
|
|
51
|
-
stack.push(v[k]);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
} else bytes += 4;
|
|
55
|
-
}
|
|
56
|
-
return bytes > limit;
|
|
57
|
-
}
|
|
58
35
|
function toWireUri(uri) {
|
|
59
36
|
if (!uri) return uri;
|
|
60
37
|
if (uri.startsWith("data:")) {
|
|
@@ -68,17 +45,8 @@ function toWireUri(uri) {
|
|
|
68
45
|
function toWireMetadata(metadata) {
|
|
69
46
|
if (!metadata) return metadata;
|
|
70
47
|
const role = typeof metadata.role === "string" ? metadata.role : undefined;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
} catch {
|
|
74
|
-
return role ? {
|
|
75
|
-
role,
|
|
76
|
-
...METADATA_ON_DEVICE
|
|
77
|
-
} : {
|
|
78
|
-
...METADATA_ON_DEVICE
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
if (!jsonLongerThan(metadata, SNAPSHOT_METADATA_INLINE_LIMIT)) return metadata;
|
|
48
|
+
if (!(0, _sharedUi.isOverWireBudget)(metadata, SNAPSHOT_METADATA_INLINE_LIMIT)) return metadata;
|
|
49
|
+
// Keep `role` so UserCard still badges the impersonated user.
|
|
82
50
|
return role ? {
|
|
83
51
|
role,
|
|
84
52
|
...METADATA_ON_DEVICE
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { isOverWireBudget } from "@buoy-gg/shared-ui";
|
|
3
4
|
import { impersonateStore } from "../impersonate/utils/impersonateStore";
|
|
4
5
|
// Registered by createImpersonateTool, so the zero-config adapter (see
|
|
5
6
|
// FloatingDevTools' auto external sync) can proxy the dashboard's user
|
|
@@ -23,30 +24,6 @@ const METADATA_ON_DEVICE = Object.freeze({
|
|
|
23
24
|
__buoyOmitted: "user-metadata",
|
|
24
25
|
note: "User metadata stays on the device."
|
|
25
26
|
});
|
|
26
|
-
function jsonLongerThan(value, limit) {
|
|
27
|
-
let bytes = 0;
|
|
28
|
-
const stack = [value];
|
|
29
|
-
const seen = new Set();
|
|
30
|
-
while (stack.length > 0) {
|
|
31
|
-
if (bytes > limit) return true;
|
|
32
|
-
const v = stack.pop();
|
|
33
|
-
if (v === null || v === undefined) bytes += 4;else if (typeof v === "string") bytes += v.length + 2;else if (typeof v === "number") bytes += 8;else if (typeof v === "boolean") bytes += 5;else if (typeof v === "object") {
|
|
34
|
-
if (seen.has(v)) continue;
|
|
35
|
-
seen.add(v);
|
|
36
|
-
if (Array.isArray(v)) {
|
|
37
|
-
bytes += 2 + v.length;
|
|
38
|
-
for (let i = 0; i < v.length; i++) stack.push(v[i]);
|
|
39
|
-
} else {
|
|
40
|
-
bytes += 2;
|
|
41
|
-
for (const k in v) {
|
|
42
|
-
bytes += k.length + 4;
|
|
43
|
-
stack.push(v[k]);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
} else bytes += 4;
|
|
47
|
-
}
|
|
48
|
-
return bytes > limit;
|
|
49
|
-
}
|
|
50
27
|
export function toWireUri(uri) {
|
|
51
28
|
if (!uri) return uri;
|
|
52
29
|
if (uri.startsWith("data:")) {
|
|
@@ -60,17 +37,8 @@ export function toWireUri(uri) {
|
|
|
60
37
|
function toWireMetadata(metadata) {
|
|
61
38
|
if (!metadata) return metadata;
|
|
62
39
|
const role = typeof metadata.role === "string" ? metadata.role : undefined;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
} catch {
|
|
66
|
-
return role ? {
|
|
67
|
-
role,
|
|
68
|
-
...METADATA_ON_DEVICE
|
|
69
|
-
} : {
|
|
70
|
-
...METADATA_ON_DEVICE
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
if (!jsonLongerThan(metadata, SNAPSHOT_METADATA_INLINE_LIMIT)) return metadata;
|
|
40
|
+
if (!isOverWireBudget(metadata, SNAPSHOT_METADATA_INLINE_LIMIT)) return metadata;
|
|
41
|
+
// Keep `role` so UserCard still badges the impersonated user.
|
|
74
42
|
return role ? {
|
|
75
43
|
role,
|
|
76
44
|
...METADATA_ON_DEVICE
|
|
@@ -34,12 +34,12 @@ export declare function createImpersonateSyncAdapter({ onSearchUsers, }: CreateI
|
|
|
34
34
|
subscribe: (onChange: () => void) => () => void;
|
|
35
35
|
actions: {
|
|
36
36
|
searchUsers: (params: unknown) => Promise<User[]>;
|
|
37
|
-
startImpersonation: (params
|
|
37
|
+
startImpersonation: (params?: unknown) => Promise<void>;
|
|
38
38
|
stopImpersonation: () => Promise<void>;
|
|
39
39
|
pauseImpersonation: () => Promise<void>;
|
|
40
40
|
resumeImpersonation: () => Promise<void>;
|
|
41
|
-
updateSettings: (params
|
|
42
|
-
removeFromHistory: (params
|
|
41
|
+
updateSettings: (params?: unknown) => Promise<void>;
|
|
42
|
+
removeFromHistory: (params?: unknown) => Promise<void>;
|
|
43
43
|
clearHistory: () => Promise<void>;
|
|
44
44
|
};
|
|
45
45
|
};
|
|
@@ -55,12 +55,12 @@ export declare const impersonateSyncAdapter: {
|
|
|
55
55
|
subscribe: (onChange: () => void) => () => void;
|
|
56
56
|
actions: {
|
|
57
57
|
searchUsers: (params: unknown) => Promise<User[]>;
|
|
58
|
-
startImpersonation: (params
|
|
58
|
+
startImpersonation: (params?: unknown) => Promise<void>;
|
|
59
59
|
stopImpersonation: () => Promise<void>;
|
|
60
60
|
pauseImpersonation: () => Promise<void>;
|
|
61
61
|
resumeImpersonation: () => Promise<void>;
|
|
62
|
-
updateSettings: (params
|
|
63
|
-
removeFromHistory: (params
|
|
62
|
+
updateSettings: (params?: unknown) => Promise<void>;
|
|
63
|
+
removeFromHistory: (params?: unknown) => Promise<void>;
|
|
64
64
|
clearHistory: () => Promise<void>;
|
|
65
65
|
};
|
|
66
66
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"impersonateSyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/sync/impersonateSyncAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"impersonateSyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/sync/impersonateSyncAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAErE,KAAK,kBAAkB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAO7D,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,kBAAkB,GAAG,IAAI,GACjC,IAAI,CAEN;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QAAW,CAAC;AAClD,eAAO,MAAM,8BAA8B,QAAY,CAAC;AAQxD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAUrE;AA2DD,UAAU,mCAAmC;IAC3C;;;OAGG;IACH,aAAa,EAAE,kBAAkB,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,EAC3C,aAAa,GACd,EAAE,mCAAmC;;uBAGjB,kBAAkB;0BACb,MAAM,IAAI;;8BAlDJ,OAAO;sCAOL,OAAO;;;;kCAKX,OAAO;qCAQJ,OAAO;;;EAiCvC;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;uBAEhB,kBAAkB;0BACb,MAAM,IAAI;;8BAhEF,OAAO;sCAOL,OAAO;;;;kCAKX,OAAO;qCAQJ,OAAO;;;CAqDvC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@buoy-gg/impersonate",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.19",
|
|
4
4
|
"description": "Test your React Native app as any user, role, or flag combo — without logging out or rebuilding. Part of Buoy devtools.",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
],
|
|
27
27
|
"sideEffects": false,
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@buoy-gg/shared-ui": "^7.0.
|
|
29
|
+
"@buoy-gg/shared-ui": "^7.0.19"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"react": "*",
|
|
@@ -53,7 +53,12 @@
|
|
|
53
53
|
"sourceMaps": false
|
|
54
54
|
}
|
|
55
55
|
],
|
|
56
|
-
|
|
56
|
+
[
|
|
57
|
+
"typescript",
|
|
58
|
+
{
|
|
59
|
+
"project": "tsconfig.build.json"
|
|
60
|
+
}
|
|
61
|
+
]
|
|
57
62
|
]
|
|
58
63
|
},
|
|
59
64
|
"repository": {
|