ugly-app 0.1.551 → 0.1.552
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/package.json +1 -1
- package/src/cli/version.ts +1 -1
- package/src/server/adapter/workers/do-collection.ts +27 -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.552";
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AA4CH,MAAM,OAAO,YAAY;IACf,KAAK,CAAqB;IAElC,YAAY,KAAyB,EAAE,IAAa;QAClD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,iEAAiE;QACjE,gEAAgE;QAChE,8BAA8B;QAC9B,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,qBAAqB,EAAyB,CAAC;YACjE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9C,EAAE,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAgB;QAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAClC,kEAAkE;YAClE,uDAAuD;YACvD,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,WAAW,EAAE,CAAC;gBACnD,OAAO,IAAI,QAAQ,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAyB,CAAC,CAAC;YACpE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACxB,MAAM,EAAE,GAAG;gBACX,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;aACQ,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3D,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAkB,CAAC;YACzD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CACpB,EAAe,EACf,MAA4B;QAE5B,IAAI,GAAkB,CAAC;QACvB,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CACd,OAAO,MAAM,KAAK,QAAQ;gBACxB,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CACpB,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GACT,EAAE,CAAC,qBAAqB,EAA0B,IAAI;YACrD,OAAO,EAAE,EAAE;SACZ,CAAC;QAEJ,IAAI,GAAG,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,GAAG,CAAC,GAAG,KAAK,aAAa,EAAE,CAAC;YACrC,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CACpC,CAAC;QACJ,CAAC;QACD,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,GAAgB;QAC7B,8DAA8D;QAC9D,yBAAyB;IAC3B,CAAC;IAED,cAAc,CAAC,GAAgB;QAC7B,iBAAiB;IACnB,CAAC;IAED,uEAAuE;IACvE,mBAAmB;IAEX,SAAS,CAAC,QAAuB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,GAAG,EAAE,QAAQ,CAAC,GAAG;SAClB,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;YAC5C,MAAM,MAAM,GACT,EAAE,CAAC,qBAAqB,EAA0B,IAAI;gBACrD,OAAO,EAAE,EAAE;aACZ,CAAC;YACJ,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnB,CAAC;gBAAC,MAAM,CAAC;oBACP,wDAAwD;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,OAAO,CACb,QAAuB,EACvB,OAA6B;QAE7B,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC5B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC;YAClC,
|
|
1
|
+
{"version":3,"file":"do-collection.js","sourceRoot":"","sources":["../../../../src/server/adapter/workers/do-collection.ts"],"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.552";
|
|
@@ -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;
|