@yyyu-star/arcade-kit 0.13.1 → 0.15.0

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/share.js CHANGED
@@ -5,7 +5,11 @@
5
5
  * - 游戏只交数据(`ShareCard`),画法统一在这里,几个游戏风格一致;kit 不认识任何游戏,名字、图标、主题色都由游戏给。
6
6
  * - 这个文件只在调用时碰 DOM,import 时不碰(房间、测试里 import 没事);排版的算法是纯函数,测试在 test/share.test.ts。
7
7
  * - 图上只有游戏给的数据:别人的隐藏信息(没摊的底牌、手牌)游戏自己别放进来。
8
+ * - 右下角的二维码(0.15.0):朋友圈里的图不能点,扫码是唯一入口。内容是运行时的 location.origin 加上 opts.url 的路径,
9
+ * kit 和游戏都不写域名;编码器是 qr.ts(自己写的最小子集,不引依赖)。
10
+ * - 微信内置浏览器(0.15.0):没有 navigator.share,下载链接也常常不生效,预览图改用 data: URL(blob: 的图长按经常存不下来),提示改成长按。
8
11
  */
12
+ import { qrEncode } from './qr.js';
9
13
  /** 卡的尺寸:竖版 4:5,社交软件里不被裁 */
10
14
  export const CARD_W = 1080;
11
15
  export const CARD_H = 1350;
@@ -123,6 +127,34 @@ export function artRect(src, box, fit = 'contain', crop) {
123
127
  const dh = sh * k;
124
128
  return [sx, sy, sw, sh, box.x + (box.w - dw) / 2, box.y + (box.h - dh) / 2, dw, dh];
125
129
  }
130
+ /**
131
+ * 码里和分享出去的链接(0.15.0):只认运行时的 origin,游戏给的 url 只取路径、查询和 # 后面的部分。
132
+ * 这样 kit 和游戏里都不写域名,单独部署的游戏(workers.dev)扫出来也是它自己
133
+ */
134
+ export function shareLink(url, origin) {
135
+ const u = new URL(url, `${origin}/`);
136
+ return `${origin}${u.pathname}${u.search}${u.hash}`;
137
+ }
138
+ /** 系统分享的文字末尾带上链接(0.15.0):有的 App 只取 text、不取 url */
139
+ export function shareText(text, link) {
140
+ return text.includes(link) ? text : `${text} ${link}`;
141
+ }
142
+ /** 微信内置浏览器(UA 带 MicroMessenger,含企业微信) */
143
+ export function isWeChat(ua) {
144
+ return /MicroMessenger/i.test(ua);
145
+ }
146
+ /** 预览层怎么出(0.15.0):微信里用 data: URL、提示长按、不给"保存图片";别的浏览器照旧 */
147
+ export function previewMode(ua) {
148
+ return isWeChat(ua)
149
+ ? { dataUrl: true, tip: '长按图片 → 发送给朋友,或保存后发朋友圈', save: false }
150
+ : { dataUrl: false, tip: '手机上也可以长按图片保存', save: true };
151
+ }
152
+ /** 二维码在卡上的框:白底留白 ≥ 4 格(扫码的规范要求),每格整数像素、对齐像素,截图后也清楚 */
153
+ export const QR_BOX = 248;
154
+ export function qrLayout(size, box = QR_BOX) {
155
+ const cell = Math.max(1, Math.floor(box / (size + 8)));
156
+ return { cell, pad: Math.floor((box - cell * size) / 2) };
157
+ }
126
158
  // ───────────── 画(只在调用时碰 DOM) ─────────────
127
159
  const FONT = '"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Source Han Sans SC",system-ui,sans-serif';
128
160
  function sizeOf(img) {
@@ -171,9 +203,16 @@ function fitFont(ctx, text, weight, size, maxW, min) {
171
203
  ctx.font = `${weight} ${s}px ${FONT}`;
172
204
  return s;
173
205
  }
174
- /** 画一张卡。canvas 不给就新建一个 1080×1350 的 */
175
- export async function drawShareCard(input, canvas) {
206
+ /**
207
+ * 画一张卡。canvas 不给就新建一个 1080×1350 的。link 给了(0.15.0,prepareShare 用 shareLink 算好的)就在右下角画二维码,
208
+ * 太长编不了码就不画
209
+ */
210
+ export async function drawShareCard(input, canvas, link) {
176
211
  const c = normalizeCard(input);
212
+ const qr = link ? qrEncode(link) : null;
213
+ // 二维码的白框:右下角,压在底栏上;名场面和日期往左让
214
+ const qx = CARD_W - 72 - QR_BOX;
215
+ const qy = CARD_H - 40 - QR_BOX - 44;
177
216
  const cv = canvas ?? document.createElement('canvas');
178
217
  cv.width = CARD_W;
179
218
  cv.height = CARD_H;
@@ -258,23 +297,27 @@ export async function drawShareCard(input, canvas) {
258
297
  if (c.line) {
259
298
  ctx.fillStyle = '#ffffff';
260
299
  ctx.font = `700 50px ${FONT}`;
261
- const lines = wrapLines(`“${c.line}”`, W - 2 * M - 40, (s) => ctx.measureText(s).width, 2);
262
- lines.forEach((l, i) => ctx.fillText(l, W / 2, 1065 + i * 66));
300
+ const lw = qr ? qx - 32 - M : W - 2 * M - 40;
301
+ const lines = wrapLines(`“${c.line}”`, lw, (s) => ctx.measureText(s).width, 2);
302
+ lines.forEach((l, i) => ctx.fillText(l, qr ? M + lw / 2 : W / 2, 1065 + i * 66));
263
303
  }
264
304
  // 底:昵称、称号、日期
265
305
  ctx.fillStyle = 'rgba(0,0,0,0.22)';
266
306
  ctx.fillRect(0, CARD_H - 150, W, 150);
307
+ ctx.font = `600 38px ${FONT}`;
308
+ const dateRight = qr ? qx - 28 : W - M;
309
+ const dateLeft = dateRight - ctx.measureText(cardDate(c.date)).width;
267
310
  ctx.textAlign = 'left';
268
311
  ctx.fillStyle = '#ffffff';
269
312
  if (c.player) {
270
- fitFont(ctx, c.player.name, '800', 50, W * 0.5, 32);
313
+ fitFont(ctx, c.player.name, '800', 50, Math.min(W * 0.5, dateLeft - 24 - M), 32);
271
314
  ctx.fillText(c.player.name, M, CARD_H - 62);
272
315
  if (c.player.badge) {
273
316
  const nw = ctx.measureText(c.player.name).width;
274
317
  ctx.font = `700 34px ${FONT}`;
275
318
  const bw = ctx.measureText(c.player.badge).width + 36;
276
319
  const bx = M + nw + 24;
277
- if (bx + bw < W * 0.72) {
320
+ if (bx + bw < Math.min(W * 0.72, dateLeft - 16)) {
278
321
  round(ctx, bx, CARD_H - 104, bw, 54, 27);
279
322
  ctx.fillStyle = shade(c.accent, 0.75);
280
323
  ctx.fill();
@@ -286,12 +329,29 @@ export async function drawShareCard(input, canvas) {
286
329
  ctx.textAlign = 'right';
287
330
  ctx.fillStyle = 'rgba(255,255,255,0.8)';
288
331
  ctx.font = `600 38px ${FONT}`;
289
- ctx.fillText(cardDate(c.date), W - M, CARD_H - 62);
332
+ ctx.fillText(cardDate(c.date), dateRight, CARD_H - 62);
333
+ if (qr) {
334
+ // 纯白底、近黑的格,不叠阴影和渐变:对比度够,手机截图压缩后照样扫得出
335
+ ctx.fillStyle = '#ffffff';
336
+ round(ctx, qx, qy, QR_BOX, QR_BOX + 44, 24);
337
+ ctx.fill();
338
+ const { cell, pad } = qrLayout(qr.size);
339
+ ctx.fillStyle = '#111111';
340
+ for (let y = 0; y < qr.size; y++) {
341
+ for (let x = 0; x < qr.size; x++)
342
+ if (qr.dark[y][x])
343
+ ctx.fillRect(qx + pad + x * cell, qy + pad + y * cell, cell, cell);
344
+ }
345
+ ctx.fillStyle = '#444444';
346
+ ctx.textAlign = 'center';
347
+ ctx.font = `700 28px ${FONT}`;
348
+ ctx.fillText('扫码来玩', qx + QR_BOX / 2, qy + QR_BOX + 22);
349
+ }
290
350
  return cv;
291
351
  }
292
- /** 画成 PNG */
293
- export async function shareCardBlob(card) {
294
- const cv = await drawShareCard(card);
352
+ /** 画成 PNG;link 见 drawShareCard */
353
+ export async function shareCardBlob(card, link) {
354
+ const cv = await drawShareCard(card, undefined, link);
295
355
  return new Promise((resolve, reject) => cv.toBlob((b) => (b ? resolve(b) : reject(new Error('toBlob failed'))), 'image/png'));
296
356
  }
297
357
  const PREVIEW_ID = 'arcade-share-preview';
@@ -301,18 +361,22 @@ const PREVIEW_ID = 'arcade-share-preview';
301
361
  */
302
362
  export function prepareShare(card, opts) {
303
363
  const name = opts.fileName ?? 'share.png';
304
- const text = opts.text ?? `${card.game} · ${card.big.label} ${card.big.value}`;
364
+ // 没有 DOM(房间、测试里)时 location 也没有:链接照原样,画卡那一步本来就会失败
365
+ const link = typeof location === 'undefined' ? opts.url : shareLink(opts.url, location.origin);
366
+ const text = shareText(opts.text ?? `${card.game} · ${card.big.label} ${card.big.value}`, link);
367
+ const o = { ...opts, url: link };
305
368
  let blob = null;
306
369
  let failed = null;
307
- const ready = shareCardBlob(card).then((b) => {
370
+ const ready = shareCardBlob(card, link).then((b) => {
308
371
  blob = b;
309
372
  }, (e) => {
310
373
  failed = e ?? new Error('draw failed');
311
374
  });
312
375
  const attempt = (b) => {
313
376
  const nav = navigator;
314
- if (typeof File === 'function' && typeof nav.share === 'function') {
315
- const data = { files: [new File([b], name, { type: 'image/png' })], title: card.game, text, url: opts.url };
377
+ // 微信里不试系统分享(没有,或者有也发不出图),直接出长按的预览
378
+ if (!isWeChat(nav.userAgent) && typeof File === 'function' && typeof nav.share === 'function') {
379
+ const data = { files: [new File([b], name, { type: 'image/png' })], title: card.game, text, url: link };
316
380
  if (nav.canShare?.(data)) {
317
381
  // 同步调(这一行之前没有 await):点击的激活还在
318
382
  return nav.share(data).then(() => {
@@ -322,12 +386,12 @@ export function prepareShare(card, opts) {
322
386
  if (e?.name === 'AbortError')
323
387
  return 'cancelled';
324
388
  // 别的错(激活过期、权限、不支持的类型):退回预览
325
- showPreview(b, name, opts);
389
+ showPreview(b, name, o);
326
390
  return 'preview';
327
391
  });
328
392
  }
329
393
  }
330
- showPreview(b, name, opts);
394
+ showPreview(b, name, o);
331
395
  return Promise.resolve('preview');
332
396
  };
333
397
  return {
@@ -352,28 +416,40 @@ export async function shareCard(card, opts) {
352
416
  await p.ready;
353
417
  return p.share();
354
418
  }
355
- /** 不支持系统分享时:预览图 + "保存图片""复制链接";点空白处或"关闭"收起 */
419
+ /** 不支持系统分享时:预览图 + "保存图片""复制链接";点空白处或"关闭"收起。微信里见 previewMode */
356
420
  function showPreview(blob, name, opts) {
357
421
  document.getElementById(PREVIEW_ID)?.remove();
358
- const url = URL.createObjectURL(blob);
422
+ const mode = previewMode(navigator.userAgent);
423
+ // 微信里不用 blob:(长按存不下来),也就不建对象 URL
424
+ const url = mode.dataUrl ? '' : URL.createObjectURL(blob);
359
425
  const root = document.createElement('div');
360
426
  root.id = PREVIEW_ID;
361
427
  root.setAttribute('role', 'dialog');
362
428
  root.style.cssText = `position:fixed;inset:0;z-index:${opts.zIndex ?? 11000};display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:16px;box-sizing:border-box;background:rgba(0,0,0,.72);font:600 16px ${FONT};color:#fff`;
363
429
  const close = () => {
364
430
  root.remove();
365
- URL.revokeObjectURL(url);
431
+ if (url)
432
+ URL.revokeObjectURL(url);
366
433
  };
367
434
  root.addEventListener('click', (e) => {
368
435
  if (e.target === root)
369
436
  close();
370
437
  });
371
438
  const img = document.createElement('img');
372
- img.src = url;
439
+ if (url)
440
+ img.src = url;
441
+ else {
442
+ const reader = new FileReader();
443
+ reader.onload = () => {
444
+ if (typeof reader.result === 'string')
445
+ img.src = reader.result;
446
+ };
447
+ reader.readAsDataURL(blob);
448
+ }
373
449
  img.alt = '战绩图';
374
450
  img.style.cssText = 'max-width:min(92vw,540px);max-height:calc(100% - 140px);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.5)';
375
451
  const tip = document.createElement('div');
376
- tip.textContent = '手机上也可以长按图片保存';
452
+ tip.textContent = mode.tip;
377
453
  tip.style.cssText = 'font-size:13px;opacity:.75';
378
454
  const row = document.createElement('div');
379
455
  row.style.cssText = 'display:flex;gap:12px;flex-wrap:wrap;justify-content:center';
@@ -411,7 +487,8 @@ function showPreview(blob, name, opts) {
411
487
  done(false);
412
488
  });
413
489
  const shut = btn('关闭', 'share:close', close);
414
- row.appendChild(save);
490
+ if (mode.save)
491
+ row.appendChild(save);
415
492
  row.appendChild(copy);
416
493
  row.appendChild(shut);
417
494
  root.appendChild(img);
package/dist/share.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"share.js","sourceRoot":"","sources":["../src/share.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"share.js","sourceRoot":"","sources":["../src/share.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,YAAY,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAG3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C;;;GAGG;AACH,MAAM,WAAW,MAAO,SAAQ,QAAQ;IACtC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAYD,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAU7G;AAgCD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAYvH;AASD;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,oCAAoC;AACpC,eAAO,MAAM,SAAS,2nBAKwE,CAAC;AAE/F;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiB9G;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAM9F;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAKjF;AAED,gCAAgC;AAChC,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,MAAM,EAAO,GAAG,QAAQ,CAE/F;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASnF"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,YAAY,EAAE,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAI3E,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,YAAY,CAAC;AAGtD;;;GAGG;AACH,MAAM,WAAW,MAAO,SAAQ,QAAQ;IACtC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAYD,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAU7G;AAgCD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA0BvH;AAgCD;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,oCAAoC;AACpC,eAAO,MAAM,SAAS,2nBAKwE,CAAC;AAE/F;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAiB9G;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAM9F;AAED,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,CAKjF;AAED,gCAAgC;AAChC,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,SAAS,MAAM,EAAO,GAAG,QAAQ,CAE/F;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASnF"}
package/dist/worker.js CHANGED
@@ -13,7 +13,7 @@
13
13
  import { identify, sameOrigin } from './auth.js';
14
14
  import { isStandalone } from './guest.js';
15
15
  import { CLOSE, ROOM_CODE_RE } from './protocol.js';
16
- import { identityHeader, KIT_HOST, newRoomCode, roomStub } from './internal.js';
16
+ import { identityHeader, KIT_HOST, LIMITED_HEADER, meterStub, MISS_HEADER, missStub, newRoomCode, roomStub } from './internal.js';
17
17
  /** 认人:按部署方式(identify),昵称取地址里的 ?name= */
18
18
  function who(request, env, opts, mint) {
19
19
  return identify(request, env, {
@@ -87,11 +87,52 @@ export async function acceptJoin(request, env, code, opts = {}) {
87
87
  if ('error' in w)
88
88
  return w.error === 'anonymous' ? refuse(CLOSE.unauthorized, 'login first') : refuse(CLOSE.tryLater, 'try later');
89
89
  const me = w.user;
90
+ // 进房猜码(0.14.0):这一小时"码不存在"超了门槛的人(或 IP)带上 LIMITED_HEADER,房间只放自己人进,别人不管房间在不在都回 1013,
91
+ // 说不出房间在不在;在打的人照常重连。计量连不上时同样处理(和开房一样不放新人进来)
92
+ const guard = missGuard(env, me.userId, request.headers.get('cf-connecting-ip'));
93
+ let limited = false;
94
+ try {
95
+ limited = !!guard && !(await guard.ok());
96
+ }
97
+ catch (e) {
98
+ console.error('join guard failed', e instanceof Error ? e.message : e);
99
+ limited = true;
100
+ }
90
101
  // 新建请求,只带认好的身份和客户端版本;浏览器带来的 x-kit-user 之类的头一律不转
91
102
  const cv = new URL(request.url).searchParams.get('cv') ?? '0';
92
- return roomStub(env.ROOM, code).fetch(`https://${KIT_HOST}/ws?cv=${encodeURIComponent(cv)}`, {
93
- headers: { upgrade: 'websocket', 'x-kit-user': identityHeader(me) },
103
+ const res = await roomStub(env.ROOM, code).fetch(`https://${KIT_HOST}/ws?cv=${encodeURIComponent(cv)}`, {
104
+ headers: { upgrade: 'websocket', 'x-kit-user': identityHeader(me), ...(limited ? { [LIMITED_HEADER]: '1' } : {}) },
94
105
  });
106
+ if (!res.headers.has(MISS_HEADER))
107
+ return res;
108
+ // 房间说"这个码没有房间":记一次(按人、按 IP 各 1 行,再报进当天的写入),转给浏览器的回话不带这个内部头
109
+ if (guard)
110
+ await guard.miss().catch((e) => console.error('join miss record failed', e instanceof Error ? e.message : e));
111
+ return new Response(null, { status: 101, webSocket: res.webSocket });
112
+ }
113
+ /**
114
+ * 按人、按 IP 数"码不存在"(0.14.0,第三轮审计:6 位房间码能一个个试)。没绑 METER(单独部署、测试里没配)就不管,和开房额度一样。
115
+ * 没有 IP 头(本地开发)只按人算
116
+ */
117
+ function missGuard(env, userId, ip) {
118
+ const ns = env.METER;
119
+ if (!ns)
120
+ return null;
121
+ const keys = [[`u:${userId}`, 'user']];
122
+ if (ip)
123
+ keys.push([`ip:${ip}`, 'ip']);
124
+ const stub = (k) => missStub(ns, k);
125
+ return {
126
+ async ok() {
127
+ const blocked = await Promise.all(keys.map(([k, kind]) => stub(k).kitMissBlocked(kind)));
128
+ return !blocked.includes(true);
129
+ },
130
+ async miss() {
131
+ await Promise.all(keys.map(([k]) => stub(k).kitMiss()));
132
+ // 这几行也记进当天的写入(计量自己的规矩),报一次计量再写 1 行
133
+ await meterStub(ns).kitReport(keys.length);
134
+ },
135
+ };
95
136
  }
96
137
  function refuse(code, reason) {
97
138
  const pair = new WebSocketPair();
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yyyu-star/arcade-kit",
3
- "version": "0.13.1",
3
+ "version": "0.15.0",
4
4
  "description": "Multiplayer toolkit for small Cloudflare Workers games: Durable Object game rooms, room create/join entry points, browser client, daily write quota, ChaCha20 RNG, platform or standalone (guest) identity. 小游戏共用的联机底座",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -118,6 +118,7 @@
118
118
  "devDependencies": {
119
119
  "@cloudflare/vitest-plugin": "^1.4.1",
120
120
  "@cloudflare/workers-types": "^5.20261014.1",
121
+ "jsqr": "^1.4.0",
121
122
  "typescript": "^7.0.2",
122
123
  "vitest": "^5.0.4",
123
124
  "wrangler": "^4.150.0"
package/src/internal.ts CHANGED
@@ -58,6 +58,17 @@ export function roomStub(ns: DurableObjectNamespace, code: string): DurableObjec
58
58
  /** 计量的名字:每个游戏 Worker 只有这一个实例(meter.ts)。 */
59
59
  export const METER_NAME = 'kit-meter';
60
60
 
61
+ /** 进房猜码的计数(0.14.0):按人(u:<userId>)、按 IP(ip:<地址>)各一个小实例,和全站的计量同一个类、不同名字,不挤一个热点 */
62
+ export function missStub(ns: DurableObjectNamespace, key: string): DurableObjectStub {
63
+ return ns.get(ns.idFromName(`kit-miss:${key}`), { locationHint: 'apac' });
64
+ }
65
+
66
+ /** 房间告诉 acceptJoin"这个码没有房间"的内部头(只在房间回给 Worker 的 101 上,转给浏览器前去掉) */
67
+ export const MISS_HEADER = 'x-kit-miss';
68
+
69
+ /** acceptJoin 告诉房间"这个人猜码超了门槛"的内部头:房间只放自己人(房主、入座的、绑过座位的)进来,别人一律 1013 */
70
+ export const LIMITED_HEADER = 'x-kit-limited';
71
+
61
72
  /** 计量的 stub:和房间一样放在亚太,开房、报数少绕路。 */
62
73
  export function meterStub(ns: DurableObjectNamespace): DurableObjectStub {
63
74
  return ns.get(ns.idFromName(METER_NAME), { locationHint: 'apac' });
package/src/meter.ts CHANGED
@@ -31,6 +31,12 @@ export interface QuotaLimits {
31
31
  busyWrites: number;
32
32
  /** 当天写入到这么多行:在打的房间这一段打完收场 */
33
33
  stopWrites: number;
34
+ /**
35
+ * 进房猜码(0.14.0,第三轮审计):每个人每小时最多几次"房间码不存在"、每个 IP 每小时最多几次。超了这一小时里进任何房间都回 1013,
36
+ * 存在的房间也一样(不然 1013 和 welcome 的差别照样说出房间在不在)。房间码只有 6 位,不限就能一个个试出谁开着房
37
+ */
38
+ joinMissesPerUser: number;
39
+ joinMissesPerIp: number;
34
40
  }
35
41
 
36
42
  export const DEFAULT_QUOTA: QuotaLimits = {
@@ -39,6 +45,9 @@ export const DEFAULT_QUOTA: QuotaLimits = {
39
45
  dailyRooms: 300,
40
46
  busyWrites: 60_000,
41
47
  stopWrites: 85_000,
48
+ // 正常人输错码一小时也就几次;一个 IP 后面可能是一家人、一个宿舍,放宽一些
49
+ joinMissesPerUser: 20,
50
+ joinMissesPerIp: 60,
42
51
  };
43
52
 
44
53
  /** KIT_QUOTA 里由房间读的字段(0.7.0):emoteMs 每多少毫秒补一个短语令牌(0 不限速),emoteBurst 最多攒几个 */
@@ -130,6 +139,30 @@ export class RoomMeter extends DurableObject<MeterEnv> {
130
139
  return levelOf(this.day(Date.now()).writes, this.limits());
131
140
  }
132
141
 
142
+ /**
143
+ * 进房猜码(0.14.0):这两个方法用在 missStub 按人、按 IP 取的小实例上(不是全站那一个),不碰 SQL 表,只存一个 { 第几个小时, 几次 }。
144
+ * kitMissBlocked 只读,进房前问(门槛在这里按 KIT_QUOTA 算,worker.ts 不用在运行时引用本文件:它要能在普通 Node 里加载);
145
+ * kitMiss 记一次(1 行),只有真的进了一个不存在的房间才调,超了门槛的人进不到这一步,所以一小时最多写门槛那么多行
146
+ */
147
+ async kitMissBlocked(kind: 'user' | 'ip'): Promise<boolean> {
148
+ const lim = this.limits();
149
+ return (await this.kitMisses()) >= (kind === 'user' ? lim.joinMissesPerUser : lim.joinMissesPerIp);
150
+ }
151
+
152
+ /** 只读:这一小时记了几次(给测试看) */
153
+ async kitMisses(): Promise<number> {
154
+ const r = await this.ctx.storage.get<{ h: number; n: number }>('miss');
155
+ return r && r.h === hourOf(Date.now()) ? r.n : 0;
156
+ }
157
+
158
+ async kitMiss(): Promise<number> {
159
+ const h = hourOf(Date.now());
160
+ const r = await this.ctx.storage.get<{ h: number; n: number }>('miss');
161
+ const n = (r && r.h === h ? r.n : 0) + 1;
162
+ await this.ctx.storage.put('miss', { h, n });
163
+ return n;
164
+ }
165
+
133
166
  /** 只读:当天的数,给运维和测试看。 */
134
167
  async kitUsage(): Promise<Usage> {
135
168
  const day = this.day(Date.now());
@@ -245,6 +278,10 @@ export function levelOf(writes: number, lim: QuotaLimits): MeterLevel {
245
278
  return 'ok';
246
279
  }
247
280
 
281
+ function hourOf(now: number): number {
282
+ return Math.floor(now / 3_600_000);
283
+ }
284
+
248
285
  function utcDay(now: number): string {
249
286
  return new Date(now).toISOString().slice(0, 10);
250
287
  }