ugly-app 0.1.720 → 0.1.721
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/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/inspect/protocol.d.ts +1 -1
- package/dist/inspect/protocol.d.ts.map +1 -1
- package/dist/inspect/proxyHostBootstrap.d.ts +7 -2
- package/dist/inspect/proxyHostBootstrap.d.ts.map +1 -1
- package/dist/inspect/proxyHostBootstrap.js +17 -3
- package/dist/inspect/proxyHostBootstrap.js.map +1 -1
- package/dist/native/proxy.d.ts +11 -0
- package/dist/native/proxy.d.ts.map +1 -1
- package/dist/native/proxy.js +10 -0
- package/dist/native/proxy.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/inspect/protocol.ts +1 -1
- package/src/inspect/proxyHostBootstrap.test.ts +29 -0
- package/src/inspect/proxyHostBootstrap.ts +25 -5
- package/src/native/proxy.ts +19 -0
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.721";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -24,7 +24,7 @@ export interface StackFrame {
|
|
|
24
24
|
line: number;
|
|
25
25
|
col: number;
|
|
26
26
|
}
|
|
27
|
-
export type InspectPlatform = 'desktop' | 'ios' | 'android';
|
|
27
|
+
export type InspectPlatform = 'desktop' | 'ios' | 'android' | 'web';
|
|
28
28
|
export interface InspectTarget {
|
|
29
29
|
/** Stable per-webview id (the shell's tabId). */
|
|
30
30
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/inspect/protocol.ts"],"names":[],"mappings":"AAaA;iFACiF;AACjF,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,8EAA8E;AAC9E,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAGD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/inspect/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ProxySocket } from '../native/proxyClient.js';
|
|
2
2
|
import type { ProxySigner } from '../native/proxyCrypto.js';
|
|
3
|
+
import type { UglyNative } from '../native/protocol.js';
|
|
3
4
|
import type { InspectPlatform, Screenshot, ScreenshotRequest } from './protocol.js';
|
|
4
5
|
export interface InspectProxyHostOpts {
|
|
5
6
|
/** App Socket registered as a host (isHost:true in its presence getUrlParams). */
|
|
6
7
|
socket: ProxySocket;
|
|
8
|
+
/** When set, `signer`, `screenshot`, and `platform` are derived from it (the
|
|
9
|
+
* recommended mobile/web path — signer = nativeSigner, screenshot = the
|
|
10
|
+
* native capture.screenshot bridge). Explicit fields below still win. */
|
|
11
|
+
native?: Pick<UglyNative, 'invoke' | 'platform'>;
|
|
7
12
|
/** Verify the inspector's offer + sign our answer (MSK-bound). nativeSigner on mobile. */
|
|
8
13
|
signer?: ProxySigner;
|
|
9
|
-
platform
|
|
14
|
+
platform?: InspectPlatform;
|
|
10
15
|
/** Native screenshot delegate (WKWebView.takeSnapshot / Android PixelCopy via capture.screenshot). */
|
|
11
16
|
screenshot?: (req: ScreenshotRequest) => Promise<Screenshot>;
|
|
12
17
|
iceServers?: RTCIceServer[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyHostBootstrap.d.ts","sourceRoot":"","sources":["../../src/inspect/proxyHostBootstrap.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"proxyHostBootstrap.d.ts","sourceRoot":"","sources":["../../src/inspect/proxyHostBootstrap.ts"],"names":[],"mappings":"AAWA,OAAO,EAAgB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEpF,MAAM,WAAW,oBAAoB;IACnC,kFAAkF;IAClF,MAAM,EAAE,WAAW,CAAC;IACpB;;8EAE0E;IAC1E,MAAM,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,CAAC,CAAC;IACjD,0FAA0F;IAC1F,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,sGAAsG;IACtG,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,iBAAiB,CAAC;CAC9D;AAaD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,IAAI,CAAC;IACb,iCAAiC;IACjC,SAAS,IAAI,MAAM,CAAC;CACrB;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,gBAAgB,CA2BpF"}
|
|
@@ -8,19 +8,33 @@
|
|
|
8
8
|
// storage), and a native screenshot delegate (capture.screenshot). Live
|
|
9
9
|
// console/network/picked events fan out to subscribed inspectors via broadcast.
|
|
10
10
|
import { createProxyHost } from '../native/proxyHost.js';
|
|
11
|
+
import { nativeSigner } from '../native/proxyClient.js';
|
|
11
12
|
import { createSelfInspectHost } from './selfHost.js';
|
|
13
|
+
/** Build a screenshot delegate from the native capture.screenshot bridge. */
|
|
14
|
+
function nativeScreenshot(native) {
|
|
15
|
+
return async () => {
|
|
16
|
+
const base64 = await native.invoke('capture.screenshot', undefined);
|
|
17
|
+
const w = typeof window !== 'undefined' ? window.innerWidth : 0;
|
|
18
|
+
const h = typeof window !== 'undefined' ? window.innerHeight : 0;
|
|
19
|
+
const dpr = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;
|
|
20
|
+
return { base64, width: w, height: h, dpr, format: 'png' };
|
|
21
|
+
};
|
|
22
|
+
}
|
|
12
23
|
export function installInspectProxyHost(opts) {
|
|
24
|
+
const platform = opts.platform ?? opts.native?.platform ?? 'web';
|
|
25
|
+
const signer = opts.signer ?? (opts.native ? nativeSigner(opts.native) : undefined);
|
|
26
|
+
const screenshot = opts.screenshot ?? (opts.native ? nativeScreenshot(opts.native) : undefined);
|
|
13
27
|
// Holder so the self-host's onEvent closure can reach the host created after it.
|
|
14
28
|
const ref = {};
|
|
15
29
|
const self = createSelfInspectHost({
|
|
16
|
-
platform
|
|
17
|
-
screenshot
|
|
30
|
+
platform,
|
|
31
|
+
screenshot,
|
|
18
32
|
// Live agent events → evt frames to every subscribed inspector.
|
|
19
33
|
onEvent: (event, data) => ref.host?.broadcast(event, data),
|
|
20
34
|
});
|
|
21
35
|
ref.host = createProxyHost({
|
|
22
36
|
socket: opts.socket,
|
|
23
|
-
signer
|
|
37
|
+
signer,
|
|
24
38
|
iceServers: opts.iceServers,
|
|
25
39
|
rtcFactory: opts.rtcFactory,
|
|
26
40
|
onInvoke: (channel, payload) => self.dispatch(channel, (payload ?? {})),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyHostBootstrap.js","sourceRoot":"","sources":["../../src/inspect/proxyHostBootstrap.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,0EAA0E;AAC1E,EAAE;AACF,gFAAgF;AAChF,yEAAyE;AACzE,wEAAwE;AACxE,gFAAgF;AAEhF,OAAO,EAAE,eAAe,EAAkB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"proxyHostBootstrap.js","sourceRoot":"","sources":["../../src/inspect/proxyHostBootstrap.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,0EAA0E;AAC1E,EAAE;AACF,gFAAgF;AAChF,yEAAyE;AACzE,wEAAwE;AACxE,gFAAgF;AAEhF,OAAO,EAAE,eAAe,EAAkB,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAoB,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAmBtD,6EAA6E;AAC7E,SAAS,gBAAgB,CAAC,MAAkC;IAC1D,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,CAAC,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,uBAAuB,CAAC,IAA0B;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,KAAK,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEhG,iFAAiF;IACjF,MAAM,GAAG,GAAyB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,qBAAqB,CAAC;QACjC,QAAQ;QACR,UAAU;QACV,gEAAgE;QAChE,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC;KAC3D,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM;QACN,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;KACnG,CAAC,CAAC;IACH,OAAO;QACL,IAAI;YACF,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;KAC5C,CAAC;AACJ,CAAC"}
|
package/dist/native/proxy.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { UglyNative } from './protocol.js';
|
|
2
2
|
import { type ProxyClient, type ProxySocket, type RTCFactory } from './proxyClient.js';
|
|
3
|
+
import type { InspectPlatform } from '../inspect/protocol.js';
|
|
3
4
|
/** Namespaces that require a desktop host (RCE-grade / filesystem / long-running tasks). */
|
|
4
5
|
export declare const DESKTOP_NAMESPACES: ReadonlySet<string>;
|
|
5
6
|
export declare function isDesktopChannel(channel: string): boolean;
|
|
@@ -46,6 +47,16 @@ export declare function installProxyClient(opts: {
|
|
|
46
47
|
win?: {
|
|
47
48
|
dispatchEvent(e: unknown): boolean;
|
|
48
49
|
};
|
|
50
|
+
/**
|
|
51
|
+
* Also make this shell INSPECTABLE by the user's other devices: register an
|
|
52
|
+
* inspect proxy HOST on the same socket (a remote desktop Inspector connects
|
|
53
|
+
* as the client). Chiefly for the MOBILE SPA. NOTE: the socket must be
|
|
54
|
+
* authed with `isHost:true` in its presence for an inspector to discover it.
|
|
55
|
+
* Pass `true` to derive everything from `native`, or `{ platform }` to override.
|
|
56
|
+
*/
|
|
57
|
+
inspectHost?: boolean | {
|
|
58
|
+
platform?: InspectPlatform;
|
|
59
|
+
};
|
|
49
60
|
}): UglyNative;
|
|
50
61
|
/** Dispatch a proxy event onto the same 'uglyNative' CustomEvent bus base.subscribe reads. */
|
|
51
62
|
export declare function dispatchNativeEvent(win: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/native/proxy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAmC,KAAK,WAAW,EAAE,KAAK,WAAW,EAAiB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEvI,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAgBjD,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,+EAA+E;IAC/E,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,UAAU,CAc3E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB,GAAG,UAAU,CAkIb;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE;QAAE,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/native/proxy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAmC,KAAK,WAAW,EAAE,KAAK,WAAW,EAAiB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEvI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAgBjD,CAAC;AAEH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,+EAA+E;IAC/E,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,UAAU,CAc3E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB,GAAG,UAAU,CAkIb;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE;QAAE,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,CAAC;IAC7C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG;QAAE,QAAQ,CAAC,EAAE,eAAe,CAAA;KAAE,CAAC;CACxD,GAAG,UAAU,CAoBb;AAED,8FAA8F;AAC9F,wBAAgB,mBAAmB,CACjC,GAAG,EAAE;IAAE,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,EAC3C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,GACZ,IAAI,CAON"}
|
package/dist/native/proxy.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NativeUnavailableError } from './protocol.js';
|
|
2
2
|
import { createProxyClient, nativeSigner } from './proxyClient.js';
|
|
3
|
+
import { installInspectProxyHost } from '../inspect/proxyHostBootstrap.js';
|
|
3
4
|
/** Namespaces that require a desktop host (RCE-grade / filesystem / long-running tasks). */
|
|
4
5
|
export const DESKTOP_NAMESPACES = new Set([
|
|
5
6
|
'fs',
|
|
@@ -216,6 +217,15 @@ export function installProxyClient(opts) {
|
|
|
216
217
|
rtcFactory: opts.rtcFactory,
|
|
217
218
|
onEvent: (event, data) => dispatchNativeEvent(win, event, data),
|
|
218
219
|
});
|
|
220
|
+
if (opts.inspectHost) {
|
|
221
|
+
installInspectProxyHost({
|
|
222
|
+
socket: opts.socket,
|
|
223
|
+
native: opts.native,
|
|
224
|
+
platform: typeof opts.inspectHost === 'object' ? opts.inspectHost.platform : undefined,
|
|
225
|
+
iceServers: opts.iceServers,
|
|
226
|
+
rtcFactory: opts.rtcFactory,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
219
229
|
return enableUglyProxy({ native: opts.native, client });
|
|
220
230
|
}
|
|
221
231
|
/** Dispatch a proxy event onto the same 'uglyNative' CustomEvent bus base.subscribe reads. */
|
package/dist/native/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/native/proxy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAsE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/native/proxy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugly-app",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.721",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"comment:files": "Allowlist what ships to npm. dist = runtime; src = sourcemap targets (dist/*.js.map reference ../../src/); templates = CLI scaffold. Everything else at repo root (.pgdata local Postgres, coverage, assets/icons sources, test/, test-results/) is excluded by omission. The !negations strip the scaffold's installed deps + cruft (templates/node_modules is 200MB+ and must never ship). package.json/README/LICENSE ship automatically.",
|
|
6
6
|
"files": [
|
package/src/cli/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by prebuild — do not edit manually
|
|
2
|
-
export const CLI_VERSION = "0.1.
|
|
2
|
+
export const CLI_VERSION = "0.1.721";
|
package/src/inspect/protocol.ts
CHANGED
|
@@ -43,7 +43,7 @@ export interface StackFrame {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// ── Targets ─────────────────────────────────────────────────────────────────
|
|
46
|
-
export type InspectPlatform = 'desktop' | 'ios' | 'android';
|
|
46
|
+
export type InspectPlatform = 'desktop' | 'ios' | 'android' | 'web';
|
|
47
47
|
|
|
48
48
|
export interface InspectTarget {
|
|
49
49
|
/** Stable per-webview id (the shell's tabId). */
|
|
@@ -88,4 +88,33 @@ describe('installInspectProxyHost (mobile SPA inspect host)', () => {
|
|
|
88
88
|
expect(screenshot).toHaveBeenCalled();
|
|
89
89
|
expect(JSON.parse(sent[0]).result.base64).toBe('PNG');
|
|
90
90
|
});
|
|
91
|
+
|
|
92
|
+
it('derives signer + screenshot + platform from `native` (the mobile one-liner)', async () => {
|
|
93
|
+
const { socket, fire } = fakeSocket();
|
|
94
|
+
const { pc, factory } = fakeRtc();
|
|
95
|
+
const native = {
|
|
96
|
+
platform: 'android' as const,
|
|
97
|
+
invoke: vi.fn(async (channel: string) => {
|
|
98
|
+
if (channel === 'proxy.signFingerprint') return { tag: 'sig' };
|
|
99
|
+
if (channel === 'proxy.verifyFingerprint') return { ok: true };
|
|
100
|
+
if (channel === 'capture.screenshot') return 'NATIVE_PNG';
|
|
101
|
+
return undefined;
|
|
102
|
+
}),
|
|
103
|
+
};
|
|
104
|
+
installInspectProxyHost({ socket, native: native as never, rtcFactory: factory });
|
|
105
|
+
|
|
106
|
+
await fire('rtc:offer', { from: 'd', sdp: 's', fpTag: 'good', origin: '' });
|
|
107
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
108
|
+
const { ch, sent, push } = fakeChannel();
|
|
109
|
+
(pc.ondatachannel as (e: { channel: unknown }) => void)({ channel: ch });
|
|
110
|
+
|
|
111
|
+
// platform derived from native.platform
|
|
112
|
+
push({ t: 'req', id: '1', channel: 'inspect.listTargets', payload: {} });
|
|
113
|
+
// screenshot derived from native capture.screenshot
|
|
114
|
+
push({ t: 'req', id: '2', channel: 'inspect.screenshot', payload: {} });
|
|
115
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
116
|
+
|
|
117
|
+
expect(JSON.parse(sent[0]).result.targets[0].platform).toBe('android');
|
|
118
|
+
expect(JSON.parse(sent[1]).result.base64).toBe('NATIVE_PNG');
|
|
119
|
+
});
|
|
91
120
|
});
|
|
@@ -9,23 +9,39 @@
|
|
|
9
9
|
// console/network/picked events fan out to subscribed inspectors via broadcast.
|
|
10
10
|
|
|
11
11
|
import { createProxyHost, type ProxyHost } from '../native/proxyHost.js';
|
|
12
|
-
import type
|
|
12
|
+
import { nativeSigner, type ProxySocket } from '../native/proxyClient.js';
|
|
13
13
|
import type { ProxySigner } from '../native/proxyCrypto.js';
|
|
14
|
+
import type { UglyNative } from '../native/protocol.js';
|
|
14
15
|
import { createSelfInspectHost } from './selfHost.js';
|
|
15
16
|
import type { InspectPlatform, Screenshot, ScreenshotRequest } from './protocol.js';
|
|
16
17
|
|
|
17
18
|
export interface InspectProxyHostOpts {
|
|
18
19
|
/** App Socket registered as a host (isHost:true in its presence getUrlParams). */
|
|
19
20
|
socket: ProxySocket;
|
|
21
|
+
/** When set, `signer`, `screenshot`, and `platform` are derived from it (the
|
|
22
|
+
* recommended mobile/web path — signer = nativeSigner, screenshot = the
|
|
23
|
+
* native capture.screenshot bridge). Explicit fields below still win. */
|
|
24
|
+
native?: Pick<UglyNative, 'invoke' | 'platform'>;
|
|
20
25
|
/** Verify the inspector's offer + sign our answer (MSK-bound). nativeSigner on mobile. */
|
|
21
26
|
signer?: ProxySigner;
|
|
22
|
-
platform
|
|
27
|
+
platform?: InspectPlatform;
|
|
23
28
|
/** Native screenshot delegate (WKWebView.takeSnapshot / Android PixelCopy via capture.screenshot). */
|
|
24
29
|
screenshot?: (req: ScreenshotRequest) => Promise<Screenshot>;
|
|
25
30
|
iceServers?: RTCIceServer[];
|
|
26
31
|
rtcFactory?: (config: RTCConfiguration) => RTCPeerConnection;
|
|
27
32
|
}
|
|
28
33
|
|
|
34
|
+
/** Build a screenshot delegate from the native capture.screenshot bridge. */
|
|
35
|
+
function nativeScreenshot(native: Pick<UglyNative, 'invoke'>): (req: ScreenshotRequest) => Promise<Screenshot> {
|
|
36
|
+
return async () => {
|
|
37
|
+
const base64 = await native.invoke('capture.screenshot', undefined);
|
|
38
|
+
const w = typeof window !== 'undefined' ? window.innerWidth : 0;
|
|
39
|
+
const h = typeof window !== 'undefined' ? window.innerHeight : 0;
|
|
40
|
+
const dpr = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;
|
|
41
|
+
return { base64, width: w, height: h, dpr, format: 'png' };
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
29
45
|
export interface InspectProxyHost {
|
|
30
46
|
stop(): void;
|
|
31
47
|
/** Connected inspector count. */
|
|
@@ -33,17 +49,21 @@ export interface InspectProxyHost {
|
|
|
33
49
|
}
|
|
34
50
|
|
|
35
51
|
export function installInspectProxyHost(opts: InspectProxyHostOpts): InspectProxyHost {
|
|
52
|
+
const platform = opts.platform ?? opts.native?.platform ?? 'web';
|
|
53
|
+
const signer = opts.signer ?? (opts.native ? nativeSigner(opts.native) : undefined);
|
|
54
|
+
const screenshot = opts.screenshot ?? (opts.native ? nativeScreenshot(opts.native) : undefined);
|
|
55
|
+
|
|
36
56
|
// Holder so the self-host's onEvent closure can reach the host created after it.
|
|
37
57
|
const ref: { host?: ProxyHost } = {};
|
|
38
58
|
const self = createSelfInspectHost({
|
|
39
|
-
platform
|
|
40
|
-
screenshot
|
|
59
|
+
platform,
|
|
60
|
+
screenshot,
|
|
41
61
|
// Live agent events → evt frames to every subscribed inspector.
|
|
42
62
|
onEvent: (event, data) => ref.host?.broadcast(event, data),
|
|
43
63
|
});
|
|
44
64
|
ref.host = createProxyHost({
|
|
45
65
|
socket: opts.socket,
|
|
46
|
-
signer
|
|
66
|
+
signer,
|
|
47
67
|
iceServers: opts.iceServers,
|
|
48
68
|
rtcFactory: opts.rtcFactory,
|
|
49
69
|
onInvoke: (channel, payload) => self.dispatch(channel, (payload ?? {}) as Record<string, unknown>),
|
package/src/native/proxy.ts
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
import type { UglyNative } from './protocol.js';
|
|
7
7
|
import { NativeUnavailableError } from './protocol.js';
|
|
8
8
|
import { createProxyClient, nativeSigner, type ProxyClient, type ProxySocket, type HostInfo, type RTCFactory } from './proxyClient.js';
|
|
9
|
+
import { installInspectProxyHost } from '../inspect/proxyHostBootstrap.js';
|
|
10
|
+
import type { InspectPlatform } from '../inspect/protocol.js';
|
|
9
11
|
|
|
10
12
|
/** Namespaces that require a desktop host (RCE-grade / filesystem / long-running tasks). */
|
|
11
13
|
export const DESKTOP_NAMESPACES: ReadonlySet<string> = new Set([
|
|
@@ -219,6 +221,14 @@ export function installProxyClient(opts: {
|
|
|
219
221
|
iceServers?: RTCIceServer[];
|
|
220
222
|
rtcFactory?: RTCFactory;
|
|
221
223
|
win?: { dispatchEvent(e: unknown): boolean };
|
|
224
|
+
/**
|
|
225
|
+
* Also make this shell INSPECTABLE by the user's other devices: register an
|
|
226
|
+
* inspect proxy HOST on the same socket (a remote desktop Inspector connects
|
|
227
|
+
* as the client). Chiefly for the MOBILE SPA. NOTE: the socket must be
|
|
228
|
+
* authed with `isHost:true` in its presence for an inspector to discover it.
|
|
229
|
+
* Pass `true` to derive everything from `native`, or `{ platform }` to override.
|
|
230
|
+
*/
|
|
231
|
+
inspectHost?: boolean | { platform?: InspectPlatform };
|
|
222
232
|
}): UglyNative {
|
|
223
233
|
const win = opts.win ?? (globalThis as unknown as { dispatchEvent(e: unknown): boolean });
|
|
224
234
|
const client = createProxyClient({
|
|
@@ -229,6 +239,15 @@ export function installProxyClient(opts: {
|
|
|
229
239
|
rtcFactory: opts.rtcFactory,
|
|
230
240
|
onEvent: (event, data) => dispatchNativeEvent(win, event, data),
|
|
231
241
|
});
|
|
242
|
+
if (opts.inspectHost) {
|
|
243
|
+
installInspectProxyHost({
|
|
244
|
+
socket: opts.socket,
|
|
245
|
+
native: opts.native,
|
|
246
|
+
platform: typeof opts.inspectHost === 'object' ? opts.inspectHost.platform : undefined,
|
|
247
|
+
iceServers: opts.iceServers,
|
|
248
|
+
rtcFactory: opts.rtcFactory,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
232
251
|
return enableUglyProxy({ native: opts.native, client });
|
|
233
252
|
}
|
|
234
253
|
|