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.
@@ -1,2 +1,2 @@
1
- export declare const CLI_VERSION = "0.1.551";
1
+ export declare const CLI_VERSION = "0.1.552";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.551";
2
+ export const CLI_VERSION = "0.1.552";
3
3
  //# sourceMappingURL=version.js.map
@@ -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;CAqBhB"}
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
- if (f.kind === 'doc' && parsed.kind === 'db' && parsed.docId === f.id) {
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ugly-app",
3
- "version": "0.1.551",
3
+ "version": "0.1.552",
4
4
  "type": "module",
5
5
  "main": "./dist/server/index.js",
6
6
  "exports": {
@@ -1,2 +1,2 @@
1
1
  // Auto-generated by prebuild — do not edit manually
2
- export const CLI_VERSION = "0.1.551";
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
- if (f.kind === 'doc' && parsed.kind === 'db' && parsed.docId === f.id) {
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;