ugly-app 0.1.732 → 0.1.734
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/native/proxy.d.ts.map +1 -1
- package/dist/native/proxy.js +11 -2
- package/dist/native/proxy.js.map +1 -1
- package/dist/server/PushSend.d.ts +0 -21
- package/dist/server/PushSend.d.ts.map +1 -1
- package/dist/server/PushSend.js +5 -18
- package/dist/server/PushSend.js.map +1 -1
- package/dist/server/adapter/workers/index.d.ts +0 -1
- package/dist/server/adapter/workers/index.d.ts.map +1 -1
- package/dist/server/adapter/workers/index.js +0 -1
- package/dist/server/adapter/workers/index.js.map +1 -1
- package/dist/server/index.d.ts +2 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/native/proxy.test.ts +35 -0
- package/src/native/proxy.ts +11 -2
- package/src/server/PushSend.ts +5 -31
- package/src/server/adapter/workers/index.ts +0 -1
- package/src/server/index.ts +1 -2
- package/templates/client/pages/PushTestPage.tsx +1 -1
- package/templates/server/index.ts +14 -3
- package/templates/shared/api.ts +4 -2
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.734";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -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,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,
|
|
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,CA2Kb;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,CAgCb;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
|
@@ -60,6 +60,12 @@ export function enableUglyProxy(opts) {
|
|
|
60
60
|
// Driven by the 'proxy:connect' event — e.g. opening a recent project that's
|
|
61
61
|
// stamped with the desktop it lives on, so the phone reaches the right host.
|
|
62
62
|
let preferredHost = null;
|
|
63
|
+
// The last host we actually connected to. A transient network drop (mobile ICE churn)
|
|
64
|
+
// clears the live client's host id, so without this a silent reconnect falls through to the
|
|
65
|
+
// picker — the phone re-prompts "choose your computer" on every blip. Remember it so
|
|
66
|
+
// reconnects stay silent + automatic (the drops are environmental; recovery shouldn't be
|
|
67
|
+
// user-visible). Cleared only on an explicit host switch (proxy:switch).
|
|
68
|
+
let lastConnectedHost = null;
|
|
63
69
|
const setStatus = (state, hostLabel) => {
|
|
64
70
|
void native.invoke('proxy.setStatus', { state, hostLabel }).catch(() => { });
|
|
65
71
|
};
|
|
@@ -71,12 +77,13 @@ export function enableUglyProxy(opts) {
|
|
|
71
77
|
connecting = (async () => {
|
|
72
78
|
try {
|
|
73
79
|
// A pinned host (preferredHost) wins over the cached one and the picker.
|
|
74
|
-
const existing = preferredHost ?? (forceRepick ? null : client.hostDeviceId());
|
|
80
|
+
const existing = preferredHost ?? (forceRepick ? null : (client.hostDeviceId() ?? lastConnectedHost));
|
|
75
81
|
console.error('[uglyproxy] ensureConnected: start', { existing, preferredHost, forceRepick });
|
|
76
82
|
if (existing) {
|
|
77
|
-
// Direct (re)connect to the cached or
|
|
83
|
+
// Direct (re)connect to the cached, pinned, or last-known host — no picker.
|
|
78
84
|
setStatus('reconnecting', lastLabel);
|
|
79
85
|
await client.connect(existing);
|
|
86
|
+
lastConnectedHost = existing;
|
|
80
87
|
setStatus('connected', lastLabel);
|
|
81
88
|
preferredHost = null;
|
|
82
89
|
console.error('[uglyproxy] ensureConnected: connected', { existing });
|
|
@@ -100,6 +107,7 @@ export function enableUglyProxy(opts) {
|
|
|
100
107
|
}
|
|
101
108
|
lastLabel = hosts.find((h) => h.deviceId === picked.deviceId)?.label;
|
|
102
109
|
await client.connect(picked.deviceId);
|
|
110
|
+
lastConnectedHost = picked.deviceId;
|
|
103
111
|
setStatus('connected', lastLabel);
|
|
104
112
|
console.error('[uglyproxy] ensureConnected: connected', { deviceId: picked.deviceId });
|
|
105
113
|
return true;
|
|
@@ -120,6 +128,7 @@ export function enableUglyProxy(opts) {
|
|
|
120
128
|
native.subscribe('proxy:switch', (() => {
|
|
121
129
|
forceRepick = true;
|
|
122
130
|
preferredHost = null;
|
|
131
|
+
lastConnectedHost = null; // explicit switch — don't silently reconnect to the old host
|
|
123
132
|
client.close();
|
|
124
133
|
void ensureConnected();
|
|
125
134
|
}));
|
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;AACvI,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,4FAA4F;AAC5F,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,IAAI;IACJ,SAAS;IACT,KAAK;IACL,OAAO;IACP,SAAS;IACT,UAAU;IACV,SAAS;IACT,KAAK;IACL,SAAS;IACT,QAAQ;IACR,MAAM;IACN,mFAAmF;IACnF,uFAAuF;IACvF,qFAAqF;IACrF,aAAa;CACd,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACpF,OAAO,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpC,CAAC;AAcD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAgB,EAAE,IAAmB;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,CAAC,CAAC,OAAe,EAAE,OAAgB,EAAE,EAAE;YAC7C,IAAI,WAAW,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI,IAAI,CAAC,wBAAwB,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/D,0EAA0E;gBAC1E,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAgB,EAAE,OAAgB,CAAC,CAAC;QACzD,CAAC,CAAyB;QAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAG/B;IACC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,IAAI,UAAU,GAA4B,IAAI,CAAC;IAC/C,IAAI,SAA6B,CAAC;IAClC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,gFAAgF;IAChF,6EAA6E;IAC7E,6EAA6E;IAC7E,IAAI,aAAa,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/native/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,25 +32,4 @@ export interface PushSendContext<Pages extends PageRegistry> {
|
|
|
32
32
|
* of the compile-time check, so a bad route never ships a broken deep link.
|
|
33
33
|
*/
|
|
34
34
|
export declare function pushSendTyped<Pages extends PageRegistry, K extends keyof Pages & string>(ctx: PushSendContext<Pages>, input: TypedPushSendInput<Pages, K>): Promise<PushSendResult>;
|
|
35
|
-
/** Legacy, untyped input — `path` is a free string with no route-table check. */
|
|
36
|
-
export interface PushSendInput {
|
|
37
|
-
targetUserId: string;
|
|
38
|
-
title: string;
|
|
39
|
-
body: string;
|
|
40
|
-
/** Page path to open on click (e.g. "chat"). Prefer `app.pushSend({ page })`. */
|
|
41
|
-
path: string;
|
|
42
|
-
/** Query parameters for the page (ignored server-side; prefer `app.pushSend`). */
|
|
43
|
-
query?: Record<string, string>;
|
|
44
|
-
/** Optional notification image URL. */
|
|
45
|
-
imageUrl?: string;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Send a push notification to a user via the ugly.bot platform.
|
|
49
|
-
*
|
|
50
|
-
* @deprecated Use `app.pushSend({ targetUserId, title, body, page, query })` —
|
|
51
|
-
* it route-checks `page`/`query` against the app's routing table and delivers an
|
|
52
|
-
* absolute, openable URL. This bare helper ships `path` verbatim (often relative)
|
|
53
|
-
* and cannot identify the app on the device.
|
|
54
|
-
*/
|
|
55
|
-
export declare function pushSend(input: PushSendInput): Promise<PushSendResult>;
|
|
56
35
|
//# sourceMappingURL=PushSend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PushSend.d.ts","sourceRoot":"","sources":["../../src/server/PushSend.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CACjC,KAAK,SAAS,YAAY,EAC1B,CAAC,SAAS,MAAM,KAAK,GAAG,MAAM;IAE9B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,IAAI,EAAE,CAAC,CAAC;IACR,8EAA8E;IAC9E,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,WAAW,eAAe,CAAC,KAAK,SAAS,YAAY;IACzD,KAAK,EAAE,KAAK,CAAC;IACb,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,KAAK,SAAS,YAAY,EAC1B,CAAC,SAAS,MAAM,KAAK,GAAG,MAAM,EAE9B,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,EAC3B,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,GAClC,OAAO,CAAC,cAAc,CAAC,CAwBzB
|
|
1
|
+
{"version":3,"file":"PushSend.d.ts","sourceRoot":"","sources":["../../src/server/PushSend.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CACjC,KAAK,SAAS,YAAY,EAC1B,CAAC,SAAS,MAAM,KAAK,GAAG,MAAM;IAE9B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,IAAI,EAAE,CAAC,CAAC;IACR,8EAA8E;IAC9E,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,kFAAkF;AAClF,MAAM,WAAW,eAAe,CAAC,KAAK,SAAS,YAAY;IACzD,KAAK,EAAE,KAAK,CAAC;IACb,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,KAAK,SAAS,YAAY,EAC1B,CAAC,SAAS,MAAM,KAAK,GAAG,MAAM,EAE9B,GAAG,EAAE,eAAe,CAAC,KAAK,CAAC,EAC3B,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,GAClC,OAAO,CAAC,cAAc,CAAC,CAwBzB"}
|
package/dist/server/PushSend.js
CHANGED
|
@@ -23,22 +23,9 @@ export async function pushSendTyped(ctx, input) {
|
|
|
23
23
|
});
|
|
24
24
|
return { sent: result.sent };
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
* absolute, openable URL. This bare helper ships `path` verbatim (often relative)
|
|
32
|
-
* and cannot identify the app on the device.
|
|
33
|
-
*/
|
|
34
|
-
export async function pushSend(input) {
|
|
35
|
-
const result = await uglyBotRequest('pushSend', {
|
|
36
|
-
targetUserId: input.targetUserId,
|
|
37
|
-
title: input.title,
|
|
38
|
-
body: input.body,
|
|
39
|
-
path: input.path,
|
|
40
|
-
imageUrl: input.imageUrl,
|
|
41
|
-
});
|
|
42
|
-
return { sent: result.sent };
|
|
43
|
-
}
|
|
26
|
+
// The legacy bare `pushSend(input)` helper (free-string `path`, no route check)
|
|
27
|
+
// was removed — it shipped relative/absolute paths verbatim that the mobile shell
|
|
28
|
+
// couldn't host-match. Use `app.pushSend({ page, query })` (→ pushSendTyped), which
|
|
29
|
+
// route-checks `page` against the app's `pages` registry and builds an absolute,
|
|
30
|
+
// openable URL.
|
|
44
31
|
//# sourceMappingURL=PushSend.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PushSend.js","sourceRoot":"","sources":["../../src/server/PushSend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,QAAQ,GAGT,MAAM,qBAAqB,CAAC;AAmC7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAIjC,GAA2B,EAC3B,KAAmC;IAEnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAC3E,GAAG,CAAC,KAAK,CACV,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CACvB,KAAK,CAAC,IAAI,EACV,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA4B,CAC/C,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE;QAC9C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI;QACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK;QACd,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"PushSend.js","sourceRoot":"","sources":["../../src/server/PushSend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,QAAQ,GAGT,MAAM,qBAAqB,CAAC;AAmC7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAIjC,GAA2B,EAC3B,KAAmC;IAEnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAC3E,GAAG,CAAC,KAAK,CACV,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACf,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CACvB,KAAK,CAAC,IAAI,EACV,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA4B,CAC/C,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE;QAC9C,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI;QACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK;QACd,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC,CAAC;IACH,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,gFAAgF;AAChF,kFAAkF;AAClF,oFAAoF;AACpF,iFAAiF;AACjF,gBAAgB"}
|
|
@@ -24,7 +24,6 @@ export { createImageGen } from '../../AiImage.js';
|
|
|
24
24
|
export { createEmbeddingClient } from '../../embeddings/index.js';
|
|
25
25
|
export { emailSend, setEmailBinding } from '../../Email.js';
|
|
26
26
|
export type { EmailBinding } from '../../Email.js';
|
|
27
|
-
export { pushSend } from '../../PushSend.js';
|
|
28
27
|
export { shareLink } from '../../ShareLink.js';
|
|
29
28
|
export type { ShareLinkOptions } from '../../ShareLink.js';
|
|
30
29
|
export { createTypedDB } from '../../DB.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAO3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAK7D,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,uBAAuB,EACvB,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,aAAa,CAsBnE"}
|
|
@@ -28,7 +28,6 @@ export { createTextGen } from '../../AiText.js';
|
|
|
28
28
|
export { createImageGen } from '../../AiImage.js';
|
|
29
29
|
export { createEmbeddingClient } from '../../embeddings/index.js';
|
|
30
30
|
export { emailSend, setEmailBinding } from '../../Email.js';
|
|
31
|
-
export { pushSend } from '../../PushSend.js';
|
|
32
31
|
export { shareLink } from '../../ShareLink.js';
|
|
33
32
|
// `createTypedDB` is runtime-neutral — it routes setDoc/getDoc/find
|
|
34
33
|
// through `getAdapter().db.query`, so it works inside Workers as long
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AACxE,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EAAE,cAAc,EAAqB,MAAM,qBAAqB,CAAC;AACxE,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,6EAA6E;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,oEAAoE;AACpE,sEAAsE;AACtE,kEAAkE;AAClE,sEAAsE;AACtE,wEAAwE;AACxE,uEAAuE;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,8EAA8E;AAC9E,0EAA0E;AAC1E,kEAAkE;AAClE,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AAEnC,4DAA4D;AAC5D,iEAAiE;AACjE,mEAAmE;AACnE,uEAAuE;AACvE,OAAO,EACL,WAAW,EACX,UAAU,EACV,UAAU,GACX,MAAM,iBAAiB,CAAC;AASzB,MAAM,UAAU,oBAAoB,CAAC,GAAe;IAClD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE;YACpC,aAAa,EAAE,GAAG,CAAC,cAAc;SAClC,CAAC;QACF,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC;QAC5D,OAAO,EAAE,oBAAoB,CAC3B,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAC7B;QACD,QAAQ,EAAE,qBAAqB,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAiB,EAAE;gBAC5C,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;oBACf,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,kFAAkF,CAC3H,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -23,8 +23,8 @@ export { cacheDelete, cacheGet, cacheGetDoc, cacheGetSetDoc, cacheInvalidate, ca
|
|
|
23
23
|
export { createTypedDB, getDocs, } from './DB.js';
|
|
24
24
|
export { emailSend, emailSend as sendEmail, createEmailSender } from './Email.js';
|
|
25
25
|
export type { EmailOptions } from './Email.js';
|
|
26
|
-
export {
|
|
27
|
-
export type {
|
|
26
|
+
export { pushSendTyped } from './PushSend.js';
|
|
27
|
+
export type { PushSendResult, TypedPushSendInput, PushSendContext, } from './PushSend.js';
|
|
28
28
|
export { uglyBotRequest } from './uglyBotProxy.js';
|
|
29
29
|
export { shareLink } from './ShareLink.js';
|
|
30
30
|
export type { ShareLinkOptions } from './ShareLink.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,OAAO,EACP,OAAO,EACP,QAAQ,EACR,WAAW,EACX,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,YAAY,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3E,YAAY,EACV,OAAO,IAAI,SAAS,EACpB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,YAAY,EACZ,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAClE,YAAY,EAAE,GAAG,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAClF,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -11,7 +11,7 @@ export { getUserToken, getUserId, userContextStore } from './auth/userContext.js
|
|
|
11
11
|
export { cacheDelete, cacheGet, cacheGetDoc, cacheGetSetDoc, cacheInvalidate, cacheKey, cacheSet, getCacheStats, initCache, } from './Cache.js';
|
|
12
12
|
export { createTypedDB, getDocs, } from './DB.js';
|
|
13
13
|
export { emailSend, emailSend as sendEmail, createEmailSender } from './Email.js';
|
|
14
|
-
export {
|
|
14
|
+
export { pushSendTyped } from './PushSend.js';
|
|
15
15
|
export { uglyBotRequest } from './uglyBotProxy.js';
|
|
16
16
|
export { shareLink } from './ShareLink.js';
|
|
17
17
|
export { userPublicCollections, userPublicDef, profilesGetter, userPublicTtlMs, UserPublicSchema, } from './userPublicCollection.js';
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAgCzB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAS9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAa3E,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEpE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,EACL,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,SAAS,EAAE,SAAS,IAAI,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.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.734",
|
|
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.734";
|
package/src/native/proxy.test.ts
CHANGED
|
@@ -165,3 +165,38 @@ describe('enableUglyProxy task.listen bridge', () => {
|
|
|
165
165
|
expect(client.subscribe).not.toHaveBeenCalled();
|
|
166
166
|
});
|
|
167
167
|
});
|
|
168
|
+
|
|
169
|
+
describe('enableUglyProxy silent reconnect', () => {
|
|
170
|
+
it('reconnects to the LAST host after a drop without re-showing the picker', async () => {
|
|
171
|
+
let open = false;
|
|
172
|
+
const client = {
|
|
173
|
+
listHosts: async () => [{ deviceId: 'h1', label: 'Mac', lastSeen: 0 }],
|
|
174
|
+
connect: vi.fn(async () => { open = true; }),
|
|
175
|
+
invoke: vi.fn(async () => ({ ok: true })),
|
|
176
|
+
isOpen: () => open,
|
|
177
|
+
hostDeviceId: () => (open ? 'h1' : null), // a drop clears the live client's host id
|
|
178
|
+
close: () => { open = false; },
|
|
179
|
+
};
|
|
180
|
+
const base: UglyNative = {
|
|
181
|
+
platform: 'ios',
|
|
182
|
+
invoke: vi.fn(async (ch: string) => (ch === 'proxy.pickHost' ? { deviceId: 'h1' } : {})) as unknown as UglyNative['invoke'],
|
|
183
|
+
subscribe: vi.fn(() => () => {}) as unknown as UglyNative['subscribe'],
|
|
184
|
+
};
|
|
185
|
+
const n = enableUglyProxy({ native: base, client: client as unknown as ProxyClient });
|
|
186
|
+
|
|
187
|
+
// First desktop-cap call: no host yet → picker → connect h1.
|
|
188
|
+
await n.invoke('fs.readFile' as never, {} as never);
|
|
189
|
+
const picks1 = (base.invoke as unknown as { mock: { calls: unknown[][] } }).mock.calls.filter((c) => c[0] === 'proxy.pickHost');
|
|
190
|
+
expect(picks1.length, 'first connect uses the picker').toBe(1);
|
|
191
|
+
|
|
192
|
+
// Transient drop clears the live host id.
|
|
193
|
+
open = false;
|
|
194
|
+
(base.invoke as unknown as { mockClear: () => void }).mockClear();
|
|
195
|
+
|
|
196
|
+
// Next desktop-cap call must SILENTLY reconnect to the remembered host — no picker.
|
|
197
|
+
await n.invoke('fs.readFile' as never, {} as never);
|
|
198
|
+
const picks2 = (base.invoke as unknown as { mock: { calls: unknown[][] } }).mock.calls.filter((c) => c[0] === 'proxy.pickHost');
|
|
199
|
+
expect(picks2.length, 'reconnect after a drop must NOT re-prompt the host picker').toBe(0);
|
|
200
|
+
expect(client.connect).toHaveBeenLastCalledWith('h1');
|
|
201
|
+
});
|
|
202
|
+
});
|
package/src/native/proxy.ts
CHANGED
|
@@ -85,6 +85,12 @@ export function enableUglyProxy(opts: {
|
|
|
85
85
|
// Driven by the 'proxy:connect' event — e.g. opening a recent project that's
|
|
86
86
|
// stamped with the desktop it lives on, so the phone reaches the right host.
|
|
87
87
|
let preferredHost: string | null = null;
|
|
88
|
+
// The last host we actually connected to. A transient network drop (mobile ICE churn)
|
|
89
|
+
// clears the live client's host id, so without this a silent reconnect falls through to the
|
|
90
|
+
// picker — the phone re-prompts "choose your computer" on every blip. Remember it so
|
|
91
|
+
// reconnects stay silent + automatic (the drops are environmental; recovery shouldn't be
|
|
92
|
+
// user-visible). Cleared only on an explicit host switch (proxy:switch).
|
|
93
|
+
let lastConnectedHost: string | null = null;
|
|
88
94
|
|
|
89
95
|
const setStatus = (state: string, hostLabel?: string): void => {
|
|
90
96
|
void native.invoke('proxy.setStatus' as never, { state, hostLabel } as never).catch(() => {});
|
|
@@ -96,12 +102,13 @@ export function enableUglyProxy(opts: {
|
|
|
96
102
|
connecting = (async () => {
|
|
97
103
|
try {
|
|
98
104
|
// A pinned host (preferredHost) wins over the cached one and the picker.
|
|
99
|
-
const existing = preferredHost ?? (forceRepick ? null : client.hostDeviceId());
|
|
105
|
+
const existing = preferredHost ?? (forceRepick ? null : (client.hostDeviceId() ?? lastConnectedHost));
|
|
100
106
|
console.error('[uglyproxy] ensureConnected: start', { existing, preferredHost, forceRepick });
|
|
101
107
|
if (existing) {
|
|
102
|
-
// Direct (re)connect to the cached or
|
|
108
|
+
// Direct (re)connect to the cached, pinned, or last-known host — no picker.
|
|
103
109
|
setStatus('reconnecting', lastLabel);
|
|
104
110
|
await client.connect(existing);
|
|
111
|
+
lastConnectedHost = existing;
|
|
105
112
|
setStatus('connected', lastLabel);
|
|
106
113
|
preferredHost = null;
|
|
107
114
|
console.error('[uglyproxy] ensureConnected: connected', { existing });
|
|
@@ -122,6 +129,7 @@ export function enableUglyProxy(opts: {
|
|
|
122
129
|
if (!picked) { setStatus('none'); return false; }
|
|
123
130
|
lastLabel = hosts.find((h) => h.deviceId === picked.deviceId)?.label;
|
|
124
131
|
await client.connect(picked.deviceId);
|
|
132
|
+
lastConnectedHost = picked.deviceId;
|
|
125
133
|
setStatus('connected', lastLabel);
|
|
126
134
|
console.error('[uglyproxy] ensureConnected: connected', { deviceId: picked.deviceId });
|
|
127
135
|
return true;
|
|
@@ -141,6 +149,7 @@ export function enableUglyProxy(opts: {
|
|
|
141
149
|
native.subscribe('proxy:switch' as never, (() => {
|
|
142
150
|
forceRepick = true;
|
|
143
151
|
preferredHost = null;
|
|
152
|
+
lastConnectedHost = null; // explicit switch — don't silently reconnect to the old host
|
|
144
153
|
client.close();
|
|
145
154
|
void ensureConnected();
|
|
146
155
|
}) as never);
|
package/src/server/PushSend.ts
CHANGED
|
@@ -75,34 +75,8 @@ export async function pushSendTyped<
|
|
|
75
75
|
return { sent: result.sent };
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
/** Page path to open on click (e.g. "chat"). Prefer `app.pushSend({ page })`. */
|
|
84
|
-
path: string;
|
|
85
|
-
/** Query parameters for the page (ignored server-side; prefer `app.pushSend`). */
|
|
86
|
-
query?: Record<string, string>;
|
|
87
|
-
/** Optional notification image URL. */
|
|
88
|
-
imageUrl?: string;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Send a push notification to a user via the ugly.bot platform.
|
|
93
|
-
*
|
|
94
|
-
* @deprecated Use `app.pushSend({ targetUserId, title, body, page, query })` —
|
|
95
|
-
* it route-checks `page`/`query` against the app's routing table and delivers an
|
|
96
|
-
* absolute, openable URL. This bare helper ships `path` verbatim (often relative)
|
|
97
|
-
* and cannot identify the app on the device.
|
|
98
|
-
*/
|
|
99
|
-
export async function pushSend(input: PushSendInput): Promise<PushSendResult> {
|
|
100
|
-
const result = await uglyBotRequest('pushSend', {
|
|
101
|
-
targetUserId: input.targetUserId,
|
|
102
|
-
title: input.title,
|
|
103
|
-
body: input.body,
|
|
104
|
-
path: input.path,
|
|
105
|
-
imageUrl: input.imageUrl,
|
|
106
|
-
});
|
|
107
|
-
return { sent: result.sent };
|
|
108
|
-
}
|
|
78
|
+
// The legacy bare `pushSend(input)` helper (free-string `path`, no route check)
|
|
79
|
+
// was removed — it shipped relative/absolute paths verbatim that the mobile shell
|
|
80
|
+
// couldn't host-match. Use `app.pushSend({ page, query })` (→ pushSendTyped), which
|
|
81
|
+
// route-checks `page` against the app's `pages` registry and builds an absolute,
|
|
82
|
+
// openable URL.
|
|
@@ -42,7 +42,6 @@ export { createImageGen } from '../../AiImage.js';
|
|
|
42
42
|
export { createEmbeddingClient } from '../../embeddings/index.js';
|
|
43
43
|
export { emailSend, setEmailBinding } from '../../Email.js';
|
|
44
44
|
export type { EmailBinding } from '../../Email.js';
|
|
45
|
-
export { pushSend } from '../../PushSend.js';
|
|
46
45
|
export { shareLink } from '../../ShareLink.js';
|
|
47
46
|
export type { ShareLinkOptions } from '../../ShareLink.js';
|
|
48
47
|
// `createTypedDB` is runtime-neutral — it routes setDoc/getDoc/find
|
package/src/server/index.ts
CHANGED
|
@@ -93,9 +93,8 @@ export {
|
|
|
93
93
|
} from './DB.js';
|
|
94
94
|
export { emailSend, emailSend as sendEmail, createEmailSender } from './Email.js';
|
|
95
95
|
export type { EmailOptions } from './Email.js';
|
|
96
|
-
export {
|
|
96
|
+
export { pushSendTyped } from './PushSend.js';
|
|
97
97
|
export type {
|
|
98
|
-
PushSendInput,
|
|
99
98
|
PushSendResult,
|
|
100
99
|
TypedPushSendInput,
|
|
101
100
|
PushSendContext,
|
|
@@ -77,7 +77,7 @@ export default function PushTestPage(): React.ReactElement {
|
|
|
77
77
|
targetUserId: targetUserId.trim(),
|
|
78
78
|
title: title.trim(),
|
|
79
79
|
body: body.trim(),
|
|
80
|
-
|
|
80
|
+
page: '',
|
|
81
81
|
})) as { sent: boolean; devices?: number; delivered?: number; failed?: number; errors?: string[] };
|
|
82
82
|
// Show the full delivery breakdown so the send is self-verifying — no
|
|
83
83
|
// log-tailing needed to see device count / per-device outcome.
|
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
pgQuery,
|
|
4
4
|
emailSend,
|
|
5
5
|
flushPerf,
|
|
6
|
-
pushSend,
|
|
7
6
|
recordFeedback,
|
|
8
7
|
recordPerf,
|
|
9
8
|
uglyBotRequest,
|
|
10
9
|
type AppConfigurator,
|
|
11
10
|
type InboundEmail,
|
|
12
11
|
type RequestHandlers,
|
|
12
|
+
type TypedPushSendInput,
|
|
13
13
|
} from 'ugly-app';
|
|
14
14
|
import { nanoid } from 'nanoid';
|
|
15
15
|
import { enableConversations } from 'ugly-app/conversation/server';
|
|
@@ -62,9 +62,20 @@ const app = createApp(
|
|
|
62
62
|
return { ok: true };
|
|
63
63
|
},
|
|
64
64
|
|
|
65
|
-
sendPush: async (_userId, { targetUserId, title, body,
|
|
65
|
+
sendPush: async (_userId, { targetUserId, title, body, page, query, imageUrl }): Promise<{ sent: boolean }> => {
|
|
66
66
|
try {
|
|
67
|
-
|
|
67
|
+
// `app.pushSend` route-checks `page` against the route table and builds
|
|
68
|
+
// the absolute click URL. `page` arrives as a runtime string, so we cast
|
|
69
|
+
// to the typed shape (via `typeof pages`, never `typeof app` — that would
|
|
70
|
+
// be circular inside createApp) and let the framework validate the route.
|
|
71
|
+
const result = await app.pushSend({
|
|
72
|
+
targetUserId,
|
|
73
|
+
title,
|
|
74
|
+
body,
|
|
75
|
+
page,
|
|
76
|
+
query: query ?? {},
|
|
77
|
+
...(imageUrl ? { imageUrl } : {}),
|
|
78
|
+
} as TypedPushSendInput<typeof pages, keyof typeof pages & string>);
|
|
68
79
|
return { sent: result.sent };
|
|
69
80
|
} catch (e) {
|
|
70
81
|
console.error(e);
|
package/templates/shared/api.ts
CHANGED
|
@@ -17,13 +17,15 @@ export const requests = defineRequests({
|
|
|
17
17
|
output: z.object({ ok: z.boolean() }),
|
|
18
18
|
}),
|
|
19
19
|
|
|
20
|
-
// Push notification test — send a push via ugly.bot
|
|
20
|
+
// Push notification test — send a push via ugly.bot. `page` is a route key
|
|
21
|
+
// (validated server-side against the app's route table); the framework builds
|
|
22
|
+
// the absolute click URL. Raw/absolute paths are not accepted.
|
|
21
23
|
sendPush: authReq({
|
|
22
24
|
input: z.object({
|
|
23
25
|
targetUserId: z.string(),
|
|
24
26
|
title: z.string().min(1).max(200),
|
|
25
27
|
body: z.string().max(500),
|
|
26
|
-
|
|
28
|
+
page: z.string(),
|
|
27
29
|
query: z.record(z.string(), z.string()).optional(),
|
|
28
30
|
imageUrl: z.string().optional(),
|
|
29
31
|
}),
|