ugly-app 0.1.551 → 0.1.553
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/server/adapter/workers/do-collection.d.ts.map +1 -1
- package/dist/server/adapter/workers/do-collection.js +24 -2
- package/dist/server/adapter/workers/do-collection.js.map +1 -1
- package/dist/three/client/TalkingAvatar.d.ts.map +1 -1
- package/dist/three/client/TalkingAvatar.js +9 -1
- package/dist/three/client/TalkingAvatar.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/server/adapter/workers/do-collection.ts +27 -2
- package/src/three/client/TalkingAvatar.tsx +11 -1
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.553";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"do-collection.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/do-collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,IAAI,WAAW,EACzB,MAAM,2BAA2B,CAAC;AAuCnC,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAqB;gBAEtB,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO;IAa9C,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2BhD;;;;OAIG;IACG,gBAAgB,CACpB,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,WAAW,GAAG,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC;IA0BhB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAKtC,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAOtC,OAAO,CAAC,SAAS;IAqBjB,OAAO,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"do-collection.d.ts","sourceRoot":"","sources":["../../../../src/server/adapter/workers/do-collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,IAAI,WAAW,EACzB,MAAM,2BAA2B,CAAC;AAuCnC,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAqB;gBAEtB,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO;IAa9C,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IA2BhD;;;;OAIG;IACG,gBAAgB,CACpB,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,WAAW,GAAG,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC;IA0BhB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAKtC,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAOtC,OAAO,CAAC,SAAS;IAqBjB,OAAO,CAAC,OAAO;CAgChB"}
|
|
@@ -114,19 +114,41 @@ export class CollectionDO {
|
|
|
114
114
|
for (const f of filters) {
|
|
115
115
|
if (f.kind === 'all')
|
|
116
116
|
return true;
|
|
117
|
-
|
|
117
|
+
// The publish side encodes the doc id / key value into the topic via
|
|
118
|
+
// escapeNatsToken ('+' → '_PLUS_', '.' → '_DOT_', etc.), so `parsed`
|
|
119
|
+
// carries the ESCAPED value. The subscription filter carries the RAW
|
|
120
|
+
// value the client passed to trackDocs/trackDoc. Forward-escape the
|
|
121
|
+
// filter value before comparing, or live updates silently never fire for
|
|
122
|
+
// any id/value containing '.', '+', '*', '>' — e.g. DM conversationIds
|
|
123
|
+
// like "<a>+<b>", which broke real-time delivery on every DM.
|
|
124
|
+
if (f.kind === 'doc' &&
|
|
125
|
+
parsed.kind === 'db' &&
|
|
126
|
+
parsed.docId === escapeTopicToken(f.id)) {
|
|
118
127
|
return true;
|
|
119
128
|
}
|
|
120
129
|
if (f.kind === 'key' &&
|
|
121
130
|
parsed.kind === 'dbkey' &&
|
|
122
131
|
parsed.keyChannel?.key === f.field &&
|
|
123
|
-
parsed.keyChannel?.value === f.value) {
|
|
132
|
+
parsed.keyChannel?.value === escapeTopicToken(f.value)) {
|
|
124
133
|
return true;
|
|
125
134
|
}
|
|
126
135
|
}
|
|
127
136
|
return false;
|
|
128
137
|
}
|
|
129
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Mirror of `escapeNatsToken` (server/NatsStore.ts). Duplicated here on purpose:
|
|
141
|
+
* importing NatsStore.ts into the Workers bundle pulls in the Node `nats`
|
|
142
|
+
* client, which is not Workers-compatible and breaks `build:workers`. Keep this
|
|
143
|
+
* in sync with the canonical version.
|
|
144
|
+
*/
|
|
145
|
+
function escapeTopicToken(token) {
|
|
146
|
+
return token
|
|
147
|
+
.replace(/\./g, '_DOT_')
|
|
148
|
+
.replace(/\+/g, '_PLUS_')
|
|
149
|
+
.replace(/\*/g, '_STAR_')
|
|
150
|
+
.replace(/>/g, '_GT_');
|
|
151
|
+
}
|
|
130
152
|
function filterEquals(a, b) {
|
|
131
153
|
if (a.kind !== b.kind)
|
|
132
154
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"do-collection.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/do-collection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"do-collection.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/do-collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TalkingAvatar.d.ts","sourceRoot":"","sources":["../../../src/three/client/TalkingAvatar.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA4B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"TalkingAvatar.d.ts","sourceRoot":"","sources":["../../../src/three/client/TalkingAvatar.tsx"],"names":[],"mappings":"AAWA,OAAO,KAA4B,MAAM,OAAO,CAAC;AASjD,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;IACZ,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AA2BD,wBAAgB,aAAa,CAAC,EAC5B,GAAG,EACH,QAAQ,EACR,QAAgB,EAChB,UAAU,EACV,SAAS,EACT,KAAK,EACL,OAAgB,EAChB,OAAO,GACR,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAuKzC"}
|
|
@@ -13,6 +13,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
13
13
|
import { useEffect, useRef } from 'react';
|
|
14
14
|
import * as THREE from 'three';
|
|
15
15
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
16
|
+
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
|
|
17
|
+
// Draco decoder (Google CDN) — many avatar GLBs use KHR_draco_mesh_compression.
|
|
18
|
+
const DRACO_DECODER_PATH = 'https://www.gstatic.com/draco/versioned/decoders/1.5.7/';
|
|
16
19
|
const MOUTH_OPEN = ['jawOpen'];
|
|
17
20
|
const MOUTH_SHAPE = ['mouthFunnel', 'mouthPucker'];
|
|
18
21
|
const BLINK = ['eyeBlinkLeft', 'eyeBlinkRight'];
|
|
@@ -85,7 +88,11 @@ export function TalkingAvatar({ src, analyser, speaking = false, background, cla
|
|
|
85
88
|
}
|
|
86
89
|
const ro = new ResizeObserver(resize);
|
|
87
90
|
ro.observe(mount);
|
|
88
|
-
new
|
|
91
|
+
const draco = new DRACOLoader();
|
|
92
|
+
draco.setDecoderPath(DRACO_DECODER_PATH);
|
|
93
|
+
const loader = new GLTFLoader();
|
|
94
|
+
loader.setDRACOLoader(draco);
|
|
95
|
+
loader.load(src, (gltf) => {
|
|
89
96
|
if (disposed)
|
|
90
97
|
return;
|
|
91
98
|
model = gltf.scene;
|
|
@@ -168,6 +175,7 @@ export function TalkingAvatar({ src, analyser, speaking = false, background, cla
|
|
|
168
175
|
disposed = true;
|
|
169
176
|
cancelAnimationFrame(raf);
|
|
170
177
|
ro.disconnect();
|
|
178
|
+
draco.dispose();
|
|
171
179
|
renderer.dispose();
|
|
172
180
|
if (model)
|
|
173
181
|
scene.remove(model);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TalkingAvatar.js","sourceRoot":"","sources":["../../../src/three/client/TalkingAvatar.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,wEAAwE;AACxE,+EAA+E;AAC/E,oEAAoE;AACpE,EAAE;AACF,+DAA+D;AAC/D,2EAA2E;AAC3E,oFAAoF;AACpF,OAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"TalkingAvatar.js","sourceRoot":"","sources":["../../../src/three/client/TalkingAvatar.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
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.553";
|
|
@@ -177,14 +177,25 @@ export class CollectionDO {
|
|
|
177
177
|
const { parsed } = envelope;
|
|
178
178
|
for (const f of filters) {
|
|
179
179
|
if (f.kind === 'all') return true;
|
|
180
|
-
|
|
180
|
+
// The publish side encodes the doc id / key value into the topic via
|
|
181
|
+
// escapeNatsToken ('+' → '_PLUS_', '.' → '_DOT_', etc.), so `parsed`
|
|
182
|
+
// carries the ESCAPED value. The subscription filter carries the RAW
|
|
183
|
+
// value the client passed to trackDocs/trackDoc. Forward-escape the
|
|
184
|
+
// filter value before comparing, or live updates silently never fire for
|
|
185
|
+
// any id/value containing '.', '+', '*', '>' — e.g. DM conversationIds
|
|
186
|
+
// like "<a>+<b>", which broke real-time delivery on every DM.
|
|
187
|
+
if (
|
|
188
|
+
f.kind === 'doc' &&
|
|
189
|
+
parsed.kind === 'db' &&
|
|
190
|
+
parsed.docId === escapeTopicToken(f.id)
|
|
191
|
+
) {
|
|
181
192
|
return true;
|
|
182
193
|
}
|
|
183
194
|
if (
|
|
184
195
|
f.kind === 'key' &&
|
|
185
196
|
parsed.kind === 'dbkey' &&
|
|
186
197
|
parsed.keyChannel?.key === f.field &&
|
|
187
|
-
parsed.keyChannel?.value === f.value
|
|
198
|
+
parsed.keyChannel?.value === escapeTopicToken(f.value)
|
|
188
199
|
) {
|
|
189
200
|
return true;
|
|
190
201
|
}
|
|
@@ -193,6 +204,20 @@ export class CollectionDO {
|
|
|
193
204
|
}
|
|
194
205
|
}
|
|
195
206
|
|
|
207
|
+
/**
|
|
208
|
+
* Mirror of `escapeNatsToken` (server/NatsStore.ts). Duplicated here on purpose:
|
|
209
|
+
* importing NatsStore.ts into the Workers bundle pulls in the Node `nats`
|
|
210
|
+
* client, which is not Workers-compatible and breaks `build:workers`. Keep this
|
|
211
|
+
* in sync with the canonical version.
|
|
212
|
+
*/
|
|
213
|
+
function escapeTopicToken(token: string): string {
|
|
214
|
+
return token
|
|
215
|
+
.replace(/\./g, '_DOT_')
|
|
216
|
+
.replace(/\+/g, '_PLUS_')
|
|
217
|
+
.replace(/\*/g, '_STAR_')
|
|
218
|
+
.replace(/>/g, '_GT_');
|
|
219
|
+
}
|
|
220
|
+
|
|
196
221
|
function filterEquals(a: SubscriptionFilter, b: SubscriptionFilter): boolean {
|
|
197
222
|
if (a.kind !== b.kind) return false;
|
|
198
223
|
if (a.kind === 'all') return true;
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
import React, { useEffect, useRef } from 'react';
|
|
13
13
|
import * as THREE from 'three';
|
|
14
14
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
15
|
+
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
|
|
16
|
+
|
|
17
|
+
// Draco decoder (Google CDN) — many avatar GLBs use KHR_draco_mesh_compression.
|
|
18
|
+
const DRACO_DECODER_PATH =
|
|
19
|
+
'https://www.gstatic.com/draco/versioned/decoders/1.5.7/';
|
|
15
20
|
|
|
16
21
|
export interface TalkingAvatarProps {
|
|
17
22
|
/** GLB model URL (must contain ARKit blendshape morph targets). */
|
|
@@ -122,7 +127,11 @@ export function TalkingAvatar({
|
|
|
122
127
|
const ro = new ResizeObserver(resize);
|
|
123
128
|
ro.observe(mount);
|
|
124
129
|
|
|
125
|
-
new
|
|
130
|
+
const draco = new DRACOLoader();
|
|
131
|
+
draco.setDecoderPath(DRACO_DECODER_PATH);
|
|
132
|
+
const loader = new GLTFLoader();
|
|
133
|
+
loader.setDRACOLoader(draco);
|
|
134
|
+
loader.load(
|
|
126
135
|
src,
|
|
127
136
|
(gltf) => {
|
|
128
137
|
if (disposed) return;
|
|
@@ -210,6 +219,7 @@ export function TalkingAvatar({
|
|
|
210
219
|
disposed = true;
|
|
211
220
|
cancelAnimationFrame(raf);
|
|
212
221
|
ro.disconnect();
|
|
222
|
+
draco.dispose();
|
|
213
223
|
renderer.dispose();
|
|
214
224
|
if (model) scene.remove(model);
|
|
215
225
|
if (renderer.domElement.parentNode === mount) {
|