@fitzzero/quickdraw-core 5.1.1 → 5.1.3

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.
Files changed (152) hide show
  1. package/README.md +1308 -219
  2. package/dist/{admin-DKwkIh5i.d.ts → admin-CS7JB_UH.d.ts} +2 -2
  3. package/dist/{adminSchemas-2DUA_hZ8.d.ts → adminSchemas-29cGgrg5.d.ts} +6 -4
  4. package/dist/{auth-BhWqdyb-.d.ts → auth-DtdYjrZ9.d.ts} +51 -21
  5. package/dist/{caller-CXTFswBO.d.ts → caller-BTwGl7vm.d.ts} +296 -33
  6. package/dist/chunk-2FDSKLBO.js +82 -0
  7. package/dist/chunk-2FDSKLBO.js.map +1 -0
  8. package/dist/{chunk-RT6OILOI.js → chunk-4D2DOGAW.js} +2 -14
  9. package/dist/chunk-4D2DOGAW.js.map +1 -0
  10. package/dist/{chunk-OECZPRPW.js → chunk-64I6MYBC.js} +162 -775
  11. package/dist/chunk-64I6MYBC.js.map +1 -0
  12. package/dist/chunk-7473HK24.js +17 -0
  13. package/dist/chunk-7473HK24.js.map +1 -0
  14. package/dist/chunk-7Y5ROPXL.js +33 -0
  15. package/dist/chunk-7Y5ROPXL.js.map +1 -0
  16. package/dist/chunk-A2RBQD66.js +7 -0
  17. package/dist/chunk-A2RBQD66.js.map +1 -0
  18. package/dist/chunk-AK23XSWD.js +16 -0
  19. package/dist/chunk-AK23XSWD.js.map +1 -0
  20. package/dist/chunk-ASAMUGHG.js +651 -0
  21. package/dist/chunk-ASAMUGHG.js.map +1 -0
  22. package/dist/{chunk-B2P7AZ25.js → chunk-CYE4UBOB.js} +6 -4
  23. package/dist/chunk-CYE4UBOB.js.map +1 -0
  24. package/dist/chunk-DKE6QO26.js +136 -0
  25. package/dist/chunk-DKE6QO26.js.map +1 -0
  26. package/dist/chunk-DNP65TD5.js +832 -0
  27. package/dist/chunk-DNP65TD5.js.map +1 -0
  28. package/dist/{chunk-H23KEFBA.js → chunk-DUBU3BB3.js} +30 -1
  29. package/dist/chunk-DUBU3BB3.js.map +1 -0
  30. package/dist/chunk-GYLWEJHW.js +19 -0
  31. package/dist/chunk-GYLWEJHW.js.map +1 -0
  32. package/dist/{chunk-SHEGLZEP.js → chunk-I3JCFS7H.js} +34 -13
  33. package/dist/chunk-I3JCFS7H.js.map +1 -0
  34. package/dist/{chunk-X5CWPX7H.js → chunk-IIQ3WMJK.js} +13 -2
  35. package/dist/chunk-IIQ3WMJK.js.map +1 -0
  36. package/dist/{chunk-RZTP4IEW.js → chunk-JVTONQFI.js} +6339 -4226
  37. package/dist/chunk-JVTONQFI.js.map +1 -0
  38. package/dist/{chunk-QEKVYG5F.js → chunk-KKQANRLG.js} +2 -2
  39. package/dist/chunk-KKQANRLG.js.map +1 -0
  40. package/dist/{chunk-CDKG4TFA.js → chunk-MPQAT55F.js} +38 -205
  41. package/dist/chunk-MPQAT55F.js.map +1 -0
  42. package/dist/chunk-NO4M6PO5.js +101 -0
  43. package/dist/chunk-NO4M6PO5.js.map +1 -0
  44. package/dist/{chunk-TBMKJ26R.js → chunk-NW6U45HX.js} +3 -1
  45. package/dist/chunk-NW6U45HX.js.map +1 -0
  46. package/dist/chunk-NX2V6SIL.js +202 -0
  47. package/dist/chunk-NX2V6SIL.js.map +1 -0
  48. package/dist/{chunk-ZIVPHYRG.js → chunk-NZHA4TZD.js} +72 -175
  49. package/dist/chunk-NZHA4TZD.js.map +1 -0
  50. package/dist/{chunk-2PWMUVC7.js → chunk-OCZJ4EYV.js} +518 -27
  51. package/dist/chunk-OCZJ4EYV.js.map +1 -0
  52. package/dist/{chunk-REX5YPHX.js → chunk-PHCURHC7.js} +76 -21
  53. package/dist/chunk-PHCURHC7.js.map +1 -0
  54. package/dist/{chunk-4YO5H5ON.js → chunk-Q4OGQM5I.js} +4 -10
  55. package/dist/chunk-Q4OGQM5I.js.map +1 -0
  56. package/dist/chunk-QSU47XEX.js +13 -0
  57. package/dist/chunk-QSU47XEX.js.map +1 -0
  58. package/dist/{chunk-DD4SKCNO.js → chunk-RZXJTDH5.js} +13 -2
  59. package/dist/chunk-RZXJTDH5.js.map +1 -0
  60. package/dist/{chunk-Z2LZ7IZ7.js → chunk-SN3OZVEQ.js} +5 -31
  61. package/dist/chunk-SN3OZVEQ.js.map +1 -0
  62. package/dist/{chunk-4DIQHASK.js → chunk-SQ5VUG77.js} +28 -8
  63. package/dist/chunk-SQ5VUG77.js.map +1 -0
  64. package/dist/chunk-STH5DLQP.js +1192 -0
  65. package/dist/chunk-STH5DLQP.js.map +1 -0
  66. package/dist/{chunk-QCHKWIRS.js → chunk-VZFJTKIW.js} +13 -13
  67. package/dist/{chunk-QCHKWIRS.js.map → chunk-VZFJTKIW.js.map} +1 -1
  68. package/dist/{chunk-VSQBHPWH.js → chunk-X4ZU4QH5.js} +54 -22
  69. package/dist/chunk-X4ZU4QH5.js.map +1 -0
  70. package/dist/chunk-XD7SRDUY.js +188 -0
  71. package/dist/chunk-XD7SRDUY.js.map +1 -0
  72. package/dist/chunk-XH2IZVLT.js +62 -0
  73. package/dist/chunk-XH2IZVLT.js.map +1 -0
  74. package/dist/chunk-Z7I6SONO.js +825 -0
  75. package/dist/chunk-Z7I6SONO.js.map +1 -0
  76. package/dist/cli/quickdraw-docs.js +132 -112
  77. package/dist/cli/quickdraw-docs.js.map +1 -1
  78. package/dist/client/core.d.ts +387 -0
  79. package/dist/client/core.js +109 -0
  80. package/dist/client/index.d.ts +52 -203
  81. package/dist/client/index.js +59 -218
  82. package/dist/client/index.js.map +1 -1
  83. package/dist/{clientTypes-Bc-G8n-U.d.ts → clientTypes-CUUNJwWs.d.ts} +3 -3
  84. package/dist/{connection-Cr1BU07W.d.ts → connection-2EeQ_Et0.d.ts} +22 -11
  85. package/dist/{createServer-CP9eDHZZ.d.ts → createServer-Bx5HOcYK.d.ts} +67 -17
  86. package/dist/{createTestApp-UKVGEmOf.d.ts → createTestApp-DAMANT79.d.ts} +46 -13
  87. package/dist/{envelope-Cp3YcVxC.d.ts → envelope-BMBaxppV.d.ts} +216 -10
  88. package/dist/{http-Djj2Inuu.d.ts → http-YzLAar3w.d.ts} +76 -60
  89. package/dist/index.d.ts +8 -7
  90. package/dist/index.js +82 -25
  91. package/dist/index.js.map +1 -1
  92. package/dist/{infer-Teo1xpsd.d.ts → infer-Br62cnyW.d.ts} +82 -11
  93. package/dist/logger-Yz93KzdV.d.ts +30 -0
  94. package/dist/{metrics-BdBu5o8G.d.ts → metrics-CTVpw0gu.d.ts} +2 -2
  95. package/dist/origins-kvpxnVcW.d.ts +8 -0
  96. package/dist/parser.js +2 -1
  97. package/dist/prisma/index.d.ts +14 -7
  98. package/dist/prisma/index.js +279 -70
  99. package/dist/prisma/index.js.map +1 -1
  100. package/dist/{rateLimit-ZMIZJUZF.js → rateLimit-5RKBFLUR.js} +2 -2
  101. package/dist/rateLimit-5RKBFLUR.js.map +1 -0
  102. package/dist/remote-N7OUAGOW.js +15 -0
  103. package/dist/remote-N7OUAGOW.js.map +1 -0
  104. package/dist/server/auth/index.d.ts +82 -33
  105. package/dist/server/auth/index.js +277 -270
  106. package/dist/server/auth/index.js.map +1 -1
  107. package/dist/server/express/index.d.ts +9 -2
  108. package/dist/server/express/index.js +1 -1
  109. package/dist/server/index.d.ts +268 -84
  110. package/dist/server/index.js +664 -418
  111. package/dist/server/index.js.map +1 -1
  112. package/dist/server/mcp/index.d.ts +89 -27
  113. package/dist/server/mcp/index.js +281 -62
  114. package/dist/server/mcp/index.js.map +1 -1
  115. package/dist/server/otel.d.ts +3 -3
  116. package/dist/{sharing-DVa8W-yR.d.ts → sharing-BrsmlDv_.d.ts} +3 -3
  117. package/dist/testing/client.d.ts +14 -14
  118. package/dist/testing/client.js +19 -10
  119. package/dist/testing/client.js.map +1 -1
  120. package/dist/testing/index.d.ts +50 -13
  121. package/dist/testing/index.js +113 -21
  122. package/dist/testing/index.js.map +1 -1
  123. package/dist/testing/mock.d.ts +5 -5
  124. package/dist/testing/mock.js +17 -9
  125. package/dist/tracked-BR5b2O-U.d.ts +43 -0
  126. package/dist/{types-Cu0vmx7c.d.ts → types-CLRCQGnO.d.ts} +4 -3
  127. package/dist/types-tMagHbjy.d.ts +151 -0
  128. package/dist/utils/index.d.ts +16 -4
  129. package/dist/utils/index.js +6 -3
  130. package/package.json +5 -1
  131. package/dist/chunk-2PWMUVC7.js.map +0 -1
  132. package/dist/chunk-4DIQHASK.js.map +0 -1
  133. package/dist/chunk-4YO5H5ON.js.map +0 -1
  134. package/dist/chunk-B2P7AZ25.js.map +0 -1
  135. package/dist/chunk-CDKG4TFA.js.map +0 -1
  136. package/dist/chunk-DD4SKCNO.js.map +0 -1
  137. package/dist/chunk-H23KEFBA.js.map +0 -1
  138. package/dist/chunk-OECZPRPW.js.map +0 -1
  139. package/dist/chunk-QEKVYG5F.js.map +0 -1
  140. package/dist/chunk-REX5YPHX.js.map +0 -1
  141. package/dist/chunk-RT6OILOI.js.map +0 -1
  142. package/dist/chunk-RZTP4IEW.js.map +0 -1
  143. package/dist/chunk-SHEGLZEP.js.map +0 -1
  144. package/dist/chunk-TBMKJ26R.js.map +0 -1
  145. package/dist/chunk-VSQBHPWH.js.map +0 -1
  146. package/dist/chunk-X5CWPX7H.js.map +0 -1
  147. package/dist/chunk-YSWH776Y.js +0 -13
  148. package/dist/chunk-YSWH776Y.js.map +0 -1
  149. package/dist/chunk-Z2LZ7IZ7.js.map +0 -1
  150. package/dist/chunk-ZIVPHYRG.js.map +0 -1
  151. package/dist/logger-BY28acW-.d.ts +0 -16
  152. /package/dist/{rateLimit-ZMIZJUZF.js.map → client/core.js.map} +0 -0
@@ -0,0 +1,17 @@
1
+ // src/contract/validateNow.ts
2
+ function isThenable(value) {
3
+ return (typeof value === "object" || typeof value === "function") && value !== null && typeof value.then === "function";
4
+ }
5
+ function validateNow(schema, value) {
6
+ const result = schema["~standard"].validate(value);
7
+ if (isThenable(result)) {
8
+ Promise.resolve(result).catch(() => void 0);
9
+ return "async";
10
+ }
11
+ return result.issues === void 0 ? { value: result.value } : { issues: result.issues };
12
+ }
13
+
14
+ export {
15
+ validateNow
16
+ };
17
+ //# sourceMappingURL=chunk-7473HK24.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/contract/validateNow.ts"],"sourcesContent":["// Synchronous schema checks for the realtime paths (RFC 0003 section 12.5),\n// on the server and in a room's host alike: a channel message, a pushed\n// stream item and an emitted event are checked where they happen, with no\n// promise per message. A Standard Schema may validate asynchronously (an\n// async refinement); such a schema cannot be used on these paths, and\n// `validateNow` says so instead of awaiting it.\n\nimport type { StandardSchemaV1, ValidationIssue } from \"./standardSchema\";\n\n/** What a synchronous check found: the parsed value, the issues, or that the schema is asynchronous. */\nexport type SyncValidation =\n | { readonly value: unknown; readonly issues?: undefined }\n | { readonly issues: readonly ValidationIssue[] }\n | \"async\";\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return (\n (typeof value === \"object\" || typeof value === \"function\") &&\n value !== null &&\n typeof (value as { then?: unknown }).then === \"function\"\n );\n}\n\n/** Validates `value` against `schema` without awaiting: `\"async\"` when the schema answers with a promise. */\nexport function validateNow(schema: StandardSchemaV1, value: unknown): SyncValidation {\n const result = schema[\"~standard\"].validate(value);\n if (isThenable(result)) {\n // Not awaited: keep a rejection from going unhandled.\n Promise.resolve(result).catch(() => undefined);\n return \"async\";\n }\n return result.issues === undefined ? { value: result.value } : { issues: result.issues };\n}\n"],"mappings":";AAeA,SAAS,WAAW,OAA+C;AACjE,UACG,OAAO,UAAU,YAAY,OAAO,UAAU,eAC/C,UAAU,QACV,OAAQ,MAA6B,SAAS;AAElD;AAGO,SAAS,YAAY,QAA0B,OAAgC;AACpF,QAAM,SAAS,OAAO,WAAW,EAAE,SAAS,KAAK;AACjD,MAAI,WAAW,MAAM,GAAG;AAEtB,YAAQ,QAAQ,MAAM,EAAE,MAAM,MAAM,MAAS;AAC7C,WAAO;AAAA,EACT;AACA,SAAO,OAAO,WAAW,SAAY,EAAE,OAAO,OAAO,MAAM,IAAI,EAAE,QAAQ,OAAO,OAAO;AACzF;","names":[]}
@@ -0,0 +1,33 @@
1
+ // src/protocol/utf8.ts
2
+ var nodeBuffer = globalThis.Buffer;
3
+ function isHighSurrogate(unit) {
4
+ return unit >= 55296 && unit <= 56319;
5
+ }
6
+ function isLowSurrogate(unit) {
7
+ return unit >= 56320 && unit <= 57343;
8
+ }
9
+ function countUtf8Bytes(text) {
10
+ let bytes = 0;
11
+ for (let index = 0; index < text.length; index += 1) {
12
+ const unit = text.charCodeAt(index);
13
+ if (unit < 128) {
14
+ bytes += 1;
15
+ } else if (unit < 2048) {
16
+ bytes += 2;
17
+ } else if (isHighSurrogate(unit) && isLowSurrogate(text.charCodeAt(index + 1))) {
18
+ bytes += 4;
19
+ index += 1;
20
+ } else {
21
+ bytes += 3;
22
+ }
23
+ }
24
+ return bytes;
25
+ }
26
+ function utf8ByteLength(text) {
27
+ return nodeBuffer === void 0 ? countUtf8Bytes(text) : nodeBuffer.byteLength(text, "utf8");
28
+ }
29
+
30
+ export {
31
+ utf8ByteLength
32
+ };
33
+ //# sourceMappingURL=chunk-7Y5ROPXL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/protocol/utf8.ts"],"sourcesContent":["// The UTF-8 size of a string without encoding it. Node and Bun count natively\n// with `Buffer.byteLength`; browsers and React Native have no `Buffer`, so\n// there the string is counted in a loop. Internal to the JSON parser.\n\ninterface ByteCounter {\n byteLength(text: string, encoding: \"utf8\"): number;\n}\n\nconst nodeBuffer: ByteCounter | undefined = (globalThis as { Buffer?: ByteCounter }).Buffer;\n\nfunction isHighSurrogate(unit: number): boolean {\n return unit >= 0xd800 && unit <= 0xdbff;\n}\n\nfunction isLowSurrogate(unit: number): boolean {\n return unit >= 0xdc00 && unit <= 0xdfff;\n}\n\n/**\n * Counts the bytes UTF-8 encodes `text` into. A surrogate pair is one 4-byte\n * code point; a lone surrogate counts as the 3-byte U+FFFD an encoder writes\n * in its place.\n */\nexport function countUtf8Bytes(text: string): number {\n let bytes = 0;\n for (let index = 0; index < text.length; index += 1) {\n const unit = text.charCodeAt(index);\n if (unit < 0x80) {\n bytes += 1;\n } else if (unit < 0x800) {\n bytes += 2;\n } else if (isHighSurrogate(unit) && isLowSurrogate(text.charCodeAt(index + 1))) {\n bytes += 4;\n index += 1;\n } else {\n bytes += 3;\n }\n }\n return bytes;\n}\n\n/** The size of `text` in UTF-8 bytes, as it goes over the wire. */\nexport function utf8ByteLength(text: string): number {\n return nodeBuffer === undefined ? countUtf8Bytes(text) : nodeBuffer.byteLength(text, \"utf8\");\n}\n"],"mappings":";AAQA,IAAM,aAAuC,WAAwC;AAErF,SAAS,gBAAgB,MAAuB;AAC9C,SAAO,QAAQ,SAAU,QAAQ;AACnC;AAEA,SAAS,eAAe,MAAuB;AAC7C,SAAO,QAAQ,SAAU,QAAQ;AACnC;AAOO,SAAS,eAAe,MAAsB;AACnD,MAAI,QAAQ;AACZ,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS,GAAG;AACnD,UAAM,OAAO,KAAK,WAAW,KAAK;AAClC,QAAI,OAAO,KAAM;AACf,eAAS;AAAA,IACX,WAAW,OAAO,MAAO;AACvB,eAAS;AAAA,IACX,WAAW,gBAAgB,IAAI,KAAK,eAAe,KAAK,WAAW,QAAQ,CAAC,CAAC,GAAG;AAC9E,eAAS;AACT,eAAS;AAAA,IACX,OAAO;AACL,eAAS;AAAA,IACX;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,eAAe,MAAsB;AACnD,SAAO,eAAe,SAAY,eAAe,IAAI,IAAI,WAAW,WAAW,MAAM,MAAM;AAC7F;","names":[]}
@@ -0,0 +1,7 @@
1
+ // src/version.ts
2
+ var QUICKDRAW_VERSION = "5.1.3";
3
+
4
+ export {
5
+ QUICKDRAW_VERSION
6
+ };
7
+ //# sourceMappingURL=chunk-A2RBQD66.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["/** The published version of `@fitzzero/quickdraw-core`. Kept in step with package.json. */\nexport const QUICKDRAW_VERSION = \"5.1.3\";\n"],"mappings":";AACO,IAAM,oBAAoB;","names":[]}
@@ -0,0 +1,16 @@
1
+ // src/contract/access.ts
2
+ var ACCESS_LEVELS = Object.freeze([
3
+ "Public",
4
+ "Read",
5
+ "Moderate",
6
+ "Admin"
7
+ ]);
8
+ function isAccessLevel(value) {
9
+ return typeof value === "string" && ACCESS_LEVELS.includes(value);
10
+ }
11
+
12
+ export {
13
+ ACCESS_LEVELS,
14
+ isAccessLevel
15
+ };
16
+ //# sourceMappingURL=chunk-AK23XSWD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/contract/access.ts"],"sourcesContent":["// Access levels and access-control lists, unchanged from 4.1\n// (4.1 `src/shared/types.ts:7-14`). The level names are stored in app data\n// (`User.serviceAccess`, JSON access lists), so they never change.\n\nexport type AccessLevel = \"Public\" | \"Read\" | \"Moderate\" | \"Admin\";\n\n/** Every access level, lowest first. */\nexport const ACCESS_LEVELS: readonly AccessLevel[] = Object.freeze([\n \"Public\",\n \"Read\",\n \"Moderate\",\n \"Admin\",\n]);\n\n/** True when `value` is one of the four access level names. */\nexport function isAccessLevel(value: unknown): value is AccessLevel {\n return typeof value === \"string\" && (ACCESS_LEVELS as readonly string[]).includes(value);\n}\n\nexport type ACE = {\n userId: string;\n level: AccessLevel;\n};\n\nexport type ACL = ACE[];\n"],"mappings":";AAOO,IAAM,gBAAwC,OAAO,OAAO;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,SAAS,cAAc,OAAsC;AAClE,SAAO,OAAO,UAAU,YAAa,cAAoC,SAAS,KAAK;AACzF;","names":[]}