on-zero 0.10.7 → 0.11.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.
Files changed (107) hide show
  1. package/dist/cjs/cli.native.js.map +1 -1
  2. package/dist/cjs/combineZeroClients.native.js.map +1 -1
  3. package/dist/cjs/config.native.js.map +1 -1
  4. package/dist/cjs/createPermissions.native.js.map +1 -1
  5. package/dist/cjs/createSchemaFromDrizzle.native.js.map +1 -1
  6. package/dist/cjs/createUseQuery.native.js.map +1 -1
  7. package/dist/cjs/createUseQueryDirect.native.js.map +1 -1
  8. package/dist/cjs/createZeroClient.authData.test.native.js.map +1 -1
  9. package/dist/cjs/createZeroClient.connection.test.native.js.map +1 -1
  10. package/dist/cjs/createZeroClient.headless.test.native.js.map +1 -1
  11. package/dist/cjs/createZeroClient.native.js.map +1 -1
  12. package/dist/cjs/createZeroClient.recovery.test.native.js.map +1 -1
  13. package/dist/cjs/generate-helpers.native.js.map +1 -1
  14. package/dist/cjs/generate-helpers.test.native.js.map +1 -1
  15. package/dist/cjs/generate-layout.native.js.map +1 -1
  16. package/dist/cjs/generate-lite.native.js.map +1 -1
  17. package/dist/cjs/generate-lite.test.native.js.map +1 -1
  18. package/dist/cjs/generate.native.js.map +1 -1
  19. package/dist/cjs/generate.test.native.js.map +1 -1
  20. package/dist/cjs/helpers/NullToOptional.native.js.map +1 -1
  21. package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
  22. package/dist/cjs/helpers/clearZeroClientData.native.js.map +1 -1
  23. package/dist/cjs/helpers/createMutators.native.js.map +1 -1
  24. package/dist/cjs/helpers/createMutators.test.native.js.map +1 -1
  25. package/dist/cjs/helpers/ellipsis.native.js.map +1 -1
  26. package/dist/cjs/helpers/emitter.native.js.map +1 -1
  27. package/dist/cjs/helpers/ensure.native.js.map +1 -1
  28. package/dist/cjs/helpers/ensureLoggedIn.native.js.map +1 -1
  29. package/dist/cjs/helpers/errors.native.js.map +1 -1
  30. package/dist/cjs/helpers/getAuth.native.js.map +1 -1
  31. package/dist/cjs/helpers/getCurrentComponentStack.native.js.map +1 -1
  32. package/dist/cjs/helpers/globalValue.native.js.map +1 -1
  33. package/dist/cjs/helpers/hostStorageScope.native.js.map +1 -1
  34. package/dist/cjs/helpers/mapObject.native.js.map +1 -1
  35. package/dist/cjs/helpers/mutationLifecycle.native.js.map +1 -1
  36. package/dist/cjs/helpers/mutationLifecycle.test.native.js.map +1 -1
  37. package/dist/cjs/helpers/mutatorContext.native.js.map +1 -1
  38. package/dist/cjs/helpers/prettyFormatZeroQuery.native.js.map +1 -1
  39. package/dist/cjs/helpers/queryContext.native.js.map +1 -1
  40. package/dist/cjs/helpers/recoverZeroClient.native.js.map +1 -1
  41. package/dist/cjs/helpers/recoverZeroClient.test.native.js.map +1 -1
  42. package/dist/cjs/helpers/showZeroClientError.native.js.map +1 -1
  43. package/dist/cjs/helpers/sleep.native.js.map +1 -1
  44. package/dist/cjs/helpers/time.native.js.map +1 -1
  45. package/dist/cjs/helpers/tuple.native.js.map +1 -1
  46. package/dist/cjs/helpers/useMutation.native.js.map +1 -1
  47. package/dist/cjs/helpers/useMutation.test.native.js.map +1 -1
  48. package/dist/cjs/helpers/useZeroDebug.native.js.map +1 -1
  49. package/dist/cjs/index.cjs +0 -1
  50. package/dist/cjs/index.native.js +0 -1
  51. package/dist/cjs/index.native.js.map +1 -1
  52. package/dist/cjs/instanceRegistry.native.js.map +1 -1
  53. package/dist/cjs/modelRegistry.native.js.map +1 -1
  54. package/dist/cjs/multi.native.js.map +1 -1
  55. package/dist/cjs/multiInstance.test.native.js.map +1 -1
  56. package/dist/cjs/multiInstanceNested.test.native.js.map +1 -1
  57. package/dist/cjs/multiPartition.test.native.js.map +1 -1
  58. package/dist/cjs/mutations.native.js.map +1 -1
  59. package/dist/cjs/mutations.test.native.js.map +1 -1
  60. package/dist/cjs/provideZero.hydration.test.native.js.map +1 -1
  61. package/dist/cjs/queryRegistry.native.js.map +1 -1
  62. package/dist/cjs/resolveQuery.native.js.map +1 -1
  63. package/dist/cjs/run.native.js.map +1 -1
  64. package/dist/cjs/server.native.js.map +1 -1
  65. package/dist/cjs/server.test.native.js.map +1 -1
  66. package/dist/cjs/serverWhere.native.js.map +1 -1
  67. package/dist/cjs/serverWhere.test.native.js.map +1 -1
  68. package/dist/cjs/state.native.js.map +1 -1
  69. package/dist/cjs/streaming.cjs +20 -0
  70. package/dist/cjs/streaming.native.js +23 -0
  71. package/dist/cjs/streaming.native.js.map +1 -0
  72. package/dist/cjs/testSetup.native.js.map +1 -1
  73. package/dist/cjs/types.native.js.map +1 -1
  74. package/dist/cjs/usePermission.test.native.js.map +1 -1
  75. package/dist/cjs/useQuery.empty.test.native.js.map +1 -1
  76. package/dist/cjs/useQuery.ssr.test.native.js.map +1 -1
  77. package/dist/cjs/useStreamingField.cjs +39 -7
  78. package/dist/cjs/useStreamingField.native.js +87 -7
  79. package/dist/cjs/useStreamingField.native.js.map +1 -1
  80. package/dist/cjs/vite-plugin.native.js.map +1 -1
  81. package/dist/cjs/where.native.js.map +1 -1
  82. package/dist/cjs/zeroRunner.native.js.map +1 -1
  83. package/dist/cjs/zql.native.js.map +1 -1
  84. package/dist/esm/index.js +0 -1
  85. package/dist/esm/index.js.map +1 -1
  86. package/dist/esm/index.mjs +0 -1
  87. package/dist/esm/index.mjs.map +1 -1
  88. package/dist/esm/index.native.js +0 -1
  89. package/dist/esm/index.native.js.map +1 -1
  90. package/dist/esm/streaming.mjs +2 -0
  91. package/dist/esm/streaming.mjs.map +1 -0
  92. package/dist/esm/streaming.native.js +2 -0
  93. package/dist/esm/streaming.native.js.map +1 -0
  94. package/dist/esm/useStreamingField.mjs +39 -8
  95. package/dist/esm/useStreamingField.mjs.map +1 -1
  96. package/dist/esm/useStreamingField.native.js +87 -8
  97. package/dist/esm/useStreamingField.native.js.map +1 -1
  98. package/package.json +9 -2
  99. package/src/index.ts +0 -1
  100. package/src/streaming.ts +1 -0
  101. package/src/useStreamingField.ts +112 -23
  102. package/types/index.d.ts +0 -1
  103. package/types/index.d.ts.map +1 -1
  104. package/types/streaming.d.ts +2 -0
  105. package/types/streaming.d.ts.map +1 -0
  106. package/types/useStreamingField.d.ts +9 -5
  107. package/types/useStreamingField.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","zeroRunner_exports","__export","getAmbientRunner","getRunner","setRunner","module","exports","import_mutatorContext","require","runner","r","instance","isInZeroMutation","q","o","mutatorContext","tx","run","Error"],"sources":["../../src/zeroRunner.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAA,gBAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAA,SAAA;EAAAC,SAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAX,YAAiD,CAAAK,kBAAA;AAgBjD,IAAIO,qBAA4B,GAAAC,OAAA;AAEzB,IAAAC,MAAS;AACd,SAAAL,SAASA,CAAAM,CAAA;EACXD,MAAA,GAAAC,CAAA;AAEO;AACL,SAAAP,SAAIA,CAAAQ,QAAA;EACF,QAAAJ,qBAAiB,CAAAK,gBAAA;IACnB,iBAAAC,CAAA,EAAAC,CAAA;MAEA,OAAO,IAAAP,qBAAyB,CAAAQ,cAAA,IAAAC,EAAA,CAAAC,GAAA,CAAAJ,CAAA,EAAAC,CAAA;IAClC;EAEO;EAGL,OAAIZ,gBAAkB,CAAAS,QAAA;AACpB;AAAgB,SAClBT,iBAAAS,QAAA;EAEA,IAAIA,QAAC,KAAQ,QAAAA,QAAA,uBAAAA,QAAA,CAAAF,MAAA;IACX,OAAME,QAAI,CAAAF,MAAA;EAAA;EACR,IACF,CAAAA,MAAA;IACF,UAAAS,KAAA;EAEA;EACF,OAAAT,MAAA","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","zeroRunner_exports","getAmbientRunner","getRunner","setRunner","module","exports","import_mutatorContext","require","runner","r","instance","isInZeroMutation","q","o","mutatorContext","tx","run","Error"],"sources":["zeroRunner.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar zeroRunner_exports = {};\n__export(zeroRunner_exports, {\n getAmbientRunner: () => getAmbientRunner,\n getRunner: () => getRunner,\n setRunner: () => setRunner\n});\nmodule.exports = __toCommonJS(zeroRunner_exports);\nvar import_mutatorContext = require(\"./helpers/mutatorContext\");\nvar runner = null;\nfunction setRunner(r) {\n runner = r;\n}\nfunction getRunner(instance) {\n if ((0, import_mutatorContext.isInZeroMutation)()) {\n return function(q, o) {\n return (0, import_mutatorContext.mutatorContext)().tx.run(q, o);\n };\n }\n return getAmbientRunner(instance);\n}\nfunction getAmbientRunner(instance) {\n if (instance === null || instance === void 0 ? void 0 : instance.runner) {\n return instance.runner;\n }\n if (!runner) {\n throw new Error(\"Zero runner not initialized. Ensure ProvideZero is mounted, connectHeadless() was called, or server bindings are active.\");\n }\n return runner;\n}\n//# sourceMappingURL=zeroRunner.js.map\n"],"mappings":"AAAA,YAAY;;AACZ,IAAIA,SAAS,GAAGC,MAAM,CAACC,cAAc;AACrC,IAAIC,gBAAgB,GAAGF,MAAM,CAACG,wBAAwB;AACtD,IAAIC,iBAAiB,GAAGJ,MAAM,CAACK,mBAAmB;AAClD,IAAIC,YAAY,GAAGN,MAAM,CAACO,SAAS,CAACC,cAAc;AAClD,IAAIC,QAAQ,GAAGA,CAACC,MAAM,EAAEC,GAAG,KAAK;EAC9B,KAAK,IAAIC,IAAI,IAAID,GAAG,EAClBZ,SAAS,CAACW,MAAM,EAAEE,IAAI,EAAE;IAAEC,GAAG,EAAEF,GAAG,CAACC,IAAI,CAAC;IAAEE,UAAU,EAAE;EAAK,CAAC,CAAC;AACjE,CAAC;AACD,IAAIC,WAAW,GAAGA,CAACC,EAAE,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,KAAK;EAC5C,IAAIF,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,KAAK,UAAU,EAAE;IAClE,KAAK,IAAIG,GAAG,IAAIhB,iBAAiB,CAACa,IAAI,CAAC,EACrC,IAAI,CAACX,YAAY,CAACe,IAAI,CAACL,EAAE,EAAEI,GAAG,CAAC,IAAIA,GAAG,KAAKF,MAAM,EAC/CnB,SAAS,CAACiB,EAAE,EAAEI,GAAG,EAAE;MAAEP,GAAG,EAAEA,CAAA,KAAMI,IAAI,CAACG,GAAG,CAAC;MAAEN,UAAU,EAAE,EAAEK,IAAI,GAAGjB,gBAAgB,CAACe,IAAI,EAAEG,GAAG,CAAC,CAAC,IAAID,IAAI,CAACL;IAAW,CAAC,CAAC;EACxH;EACA,OAAOE,EAAE;AACX,CAAC;AACD,IAAIM,YAAY,GAAIC,GAAG,IAAKR,WAAW,CAAChB,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE;EAAEyB,KAAK,EAAE;AAAK,CAAC,CAAC,EAAED,GAAG,CAAC;AAC1F,IAAIE,kBAAkB,GAAG,CAAC,CAAC;AAC3BhB,QAAQ,CAACgB,kBAAkB,EAAE;EAC3BC,gBAAgB,EAAEA,CAAA,KAAMA,gBAAgB;EACxCC,SAAS,EAAEA,CAAA,KAAMA,SAAS;EAC1BC,SAAS,EAAEA,CAAA,KAAMA;AACnB,CAAC,CAAC;AACFC,MAAM,CAACC,OAAO,GAAGR,YAAY,CAACG,kBAAkB,CAAC;AACjD,IAAIM,qBAAqB,GAAGC,OAAO,CAAC,oCAA0B,CAAC;AAC/D,IAAIC,MAAM,GAAG,IAAI;AACjB,SAASL,SAASA,CAACM,CAAC,EAAE;EACpBD,MAAM,GAAGC,CAAC;AACZ;AACA,SAASP,SAASA,CAACQ,QAAQ,EAAE;EAC3B,IAAI,CAAC,CAAC,EAAEJ,qBAAqB,CAACK,gBAAgB,EAAE,CAAC,EAAE;IACjD,OAAO,UAASC,CAAC,EAAEC,CAAC,EAAE;MACpB,OAAO,CAAC,CAAC,EAAEP,qBAAqB,CAACQ,cAAc,EAAE,CAAC,CAACC,EAAE,CAACC,GAAG,CAACJ,CAAC,EAAEC,CAAC,CAAC;IACjE,CAAC;EACH;EACA,OAAOZ,gBAAgB,CAACS,QAAQ,CAAC;AACnC;AACA,SAAST,gBAAgBA,CAACS,QAAQ,EAAE;EAClC,IAAIA,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,QAAQ,CAACF,MAAM,EAAE;IACvE,OAAOE,QAAQ,CAACF,MAAM;EACxB;EACA,IAAI,CAACA,MAAM,EAAE;IACX,MAAM,IAAIS,KAAK,CAAC,0HAA0H,CAAC;EAC7I;EACA,OAAOT,MAAM;AACf","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","zql_exports","__export","zql","module","exports","import_state","require","Proxy","get","_target","prop","b","getZQL"],"sources":["../../src/zql.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,WAAA;AAAAC,QAAA,CAAAD,WAAA;EAAAE,GAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAuB,CAAAK,WAAA;AAIhB,IAAAK,YAAgB,GAAAC,OAA0B;AAAA,IAC/CJ,GAAI,OAAAK,KAAS,EAAM;EACjBC,IAAAC,OAAM,EAAAC,IAAI;IACV,IAAAC,CAAA,GAAQ,CAAU,GAAAN,YAAI,CAAAO,MAAA;IACxB,OAAAD,CAAA,CAAAD,IAAA;EACD","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","zql_exports","zql","module","exports","import_state","require","Proxy","_target","prop","b","getZQL"],"sources":["zql.native.js"],"sourcesContent":["\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar zql_exports = {};\n__export(zql_exports, {\n zql: () => zql\n});\nmodule.exports = __toCommonJS(zql_exports);\nvar import_state = require(\"./state\");\nvar zql = new Proxy({}, {\n get(_target, prop) {\n var b = (0, import_state.getZQL)();\n return b[prop];\n }\n});\n//# sourceMappingURL=zql.js.map\n"],"mappings":"AAAA,YAAY;;AACZ,IAAIA,SAAS,GAAGC,MAAM,CAACC,cAAc;AACrC,IAAIC,gBAAgB,GAAGF,MAAM,CAACG,wBAAwB;AACtD,IAAIC,iBAAiB,GAAGJ,MAAM,CAACK,mBAAmB;AAClD,IAAIC,YAAY,GAAGN,MAAM,CAACO,SAAS,CAACC,cAAc;AAClD,IAAIC,QAAQ,GAAGA,CAACC,MAAM,EAAEC,GAAG,KAAK;EAC9B,KAAK,IAAIC,IAAI,IAAID,GAAG,EAClBZ,SAAS,CAACW,MAAM,EAAEE,IAAI,EAAE;IAAEC,GAAG,EAAEF,GAAG,CAACC,IAAI,CAAC;IAAEE,UAAU,EAAE;EAAK,CAAC,CAAC;AACjE,CAAC;AACD,IAAIC,WAAW,GAAGA,CAACC,EAAE,EAAEC,IAAI,EAAEC,MAAM,EAAEC,IAAI,KAAK;EAC5C,IAAIF,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,OAAOA,IAAI,KAAK,UAAU,EAAE;IAClE,KAAK,IAAIG,GAAG,IAAIhB,iBAAiB,CAACa,IAAI,CAAC,EACrC,IAAI,CAACX,YAAY,CAACe,IAAI,CAACL,EAAE,EAAEI,GAAG,CAAC,IAAIA,GAAG,KAAKF,MAAM,EAC/CnB,SAAS,CAACiB,EAAE,EAAEI,GAAG,EAAE;MAAEP,GAAG,EAAEA,CAAA,KAAMI,IAAI,CAACG,GAAG,CAAC;MAAEN,UAAU,EAAE,EAAEK,IAAI,GAAGjB,gBAAgB,CAACe,IAAI,EAAEG,GAAG,CAAC,CAAC,IAAID,IAAI,CAACL;IAAW,CAAC,CAAC;EACxH;EACA,OAAOE,EAAE;AACX,CAAC;AACD,IAAIM,YAAY,GAAIC,GAAG,IAAKR,WAAW,CAAChB,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE;EAAEyB,KAAK,EAAE;AAAK,CAAC,CAAC,EAAED,GAAG,CAAC;AAC1F,IAAIE,WAAW,GAAG,CAAC,CAAC;AACpBhB,QAAQ,CAACgB,WAAW,EAAE;EACpBC,GAAG,EAAEA,CAAA,KAAMA;AACb,CAAC,CAAC;AACFC,MAAM,CAACC,OAAO,GAAGN,YAAY,CAACG,WAAW,CAAC;AAC1C,IAAII,YAAY,GAAGC,OAAO,CAAC,mBAAS,CAAC;AACrC,IAAIJ,GAAG,GAAG,IAAIK,KAAK,CAAC,CAAC,CAAC,EAAE;EACtBlB,GAAGA,CAACmB,OAAO,EAAEC,IAAI,EAAE;IACjB,IAAIC,CAAC,GAAG,CAAC,CAAC,EAAEL,YAAY,CAACM,MAAM,EAAE,CAAC;IAClC,OAAOD,CAAC,CAACD,IAAI,CAAC;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -9,7 +9,6 @@ import { ensureAuth, getAuth } from "./helpers/getAuth.mjs";
9
9
  import { setAuthData, setEnvironment } from "./state.mjs";
10
10
  import { createZeroClient } from "./createZeroClient.mjs";
11
11
  export * from "./createUseQuery.mjs";
12
- export * from "./useStreamingField.mjs";
13
12
  export * from "./resolveQuery.mjs";
14
13
  export * from "./run.mjs";
15
14
  import { setRunner } from "./zeroRunner.mjs";
@@ -1 +1 @@
1
- {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineConfig","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink","isRecoverableZeroStalePokeMessage","isStaleGenerationError","mutationErrorMessage","MutationResultError","MutationTimeoutError","StaleGenerationError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SACEC,gBAAA,QAMK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,YAAA,QAA8D;AACvE,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK;AACP,SACEC,uBAAA,EACAC,gBAAA,EACAC,sBAAA,EACAC,iCAAA,QAMK;AAEP,SACEC,sBAAA,EACAC,oBAAA,EACAC,mBAAA,EACAC,oBAAA,EACAC,oBAAA,QAIK","ignoreList":[]}
1
+ {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineConfig","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink","isRecoverableZeroStalePokeMessage","isStaleGenerationError","mutationErrorMessage","MutationResultError","MutationTimeoutError","StaleGenerationError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SACEC,gBAAA,QAMK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,YAAA,QAA8D;AACvE,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK;AACP,SACEC,uBAAA,EACAC,gBAAA,EACAC,sBAAA,EACAC,iCAAA,QAMK;AAEP,SACEC,sBAAA,EACAC,oBAAA,EACAC,mBAAA,EACAC,oBAAA,EACAC,oBAAA,QAIK","ignoreList":[]}
@@ -9,7 +9,6 @@ import { ensureAuth, getAuth } from "./helpers/getAuth.mjs";
9
9
  import { setAuthData, setEnvironment } from "./state.mjs";
10
10
  import { createZeroClient } from "./createZeroClient.mjs";
11
11
  export * from "./createUseQuery.mjs";
12
- export * from "./useStreamingField.mjs";
13
12
  export * from "./resolveQuery.mjs";
14
13
  export * from "./run.mjs";
15
14
  import { setRunner } from "./zeroRunner.mjs";
@@ -1 +1 @@
1
- {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineConfig","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink","isRecoverableZeroStalePokeMessage","isStaleGenerationError","mutationErrorMessage","MutationResultError","MutationTimeoutError","StaleGenerationError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SACEC,gBAAA,QAMK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,YAAA,QAA8D;AACvE,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK;AACP,SACEC,uBAAA,EACAC,gBAAA,EACAC,sBAAA,EACAC,iCAAA,QAMK;AAEP,SACEC,sBAAA,EACAC,oBAAA,EACAC,mBAAA,EACAC,oBAAA,EACAC,oBAAA,QAIK","ignoreList":[]}
1
+ {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineConfig","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink","isRecoverableZeroStalePokeMessage","isStaleGenerationError","mutationErrorMessage","MutationResultError","MutationTimeoutError","StaleGenerationError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SACEC,gBAAA,QAMK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,SAAA,QAAkC;AAC3C,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASC,YAAA,QAA8D;AACvE,SAASC,WAAA,EAAaC,aAAA,QAAqB;AAQ3C,SACEC,mBAAA,QAEK;AACP,SACEC,uBAAA,EACAC,yBAAA,QAGK;AACP,SACEC,uBAAA,EACAC,gBAAA,EACAC,sBAAA,EACAC,iCAAA,QAMK;AAEP,SACEC,sBAAA,EACAC,oBAAA,EACAC,mBAAA,EACAC,oBAAA,EACAC,oBAAA,QAIK","ignoreList":[]}
@@ -9,7 +9,6 @@ import { ensureAuth, getAuth } from "./helpers/getAuth.native.js";
9
9
  import { setAuthData, setEnvironment } from "./state.native.js";
10
10
  import { createZeroClient } from "./createZeroClient.native.js";
11
11
  export * from "./createUseQuery.native.js";
12
- export * from "./useStreamingField.native.js";
13
12
  export * from "./resolveQuery.native.js";
14
13
  export * from "./run.native.js";
15
14
  import { setRunner } from "./zeroRunner.native.js";
@@ -1 +1 @@
1
- {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineConfig","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink","isRecoverableZeroStalePokeMessage","isStaleGenerationError","mutationErrorMessage","MutationResultError","MutationTimeoutError","StaleGenerationError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SAAAC,gBAAA;AAAA,cACE;AAAA,cAMK;AACP,cAAc;AACd,cAAc;AACd,SAAAC,SAAc;AACd,cAAc;AACd,cAAS;AACT,cAAc;AACd,cAAc;AACd,SAAAC,YAAc;AACd,SAAAC,WAAc,EAAAC,aAAA;AACd,SAASC,mBAAA,QAA8D;AACvE,SAASC,uBAAa,EAAAC,yBAAqB;AAQ3C,SAAAC,uBAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,iCAAA;AAAA,SACEC,sBAAA,EAAAC,oBAAA,EAAAC,mBAAA,EAAAC,oBAAA,EAAAC,oBAAA;AAAA,SAGFF,mBAAA,EACEC,oBAAA,EACAC,oBAAA,EAAAR,uBAGK,EACPH,mBAAA,EACEK,sBAAA,EACAV,gBAAA,EACAE,YAAA,EACAE,aAAA,EAAAD,WAMK,EAEPP,UAAA,EACEC,OAAA,EACAc,iCAAA,EACAC,sBAAA,EACAH,gBAAA,EACAI,oBAAA,EAAAN,yBAIK,E","ignoreList":[]}
1
+ {"version":3,"names":["ensureAuth","getAuth","setAuthData","setEnvironment","createZeroClient","setRunner","defineConfig","defineQuery","defineQueries","clearZeroClientData","showZeroClientErrorOnce","resetShownZeroClientError","classifyZeroRecoveryLog","makeZeroRecovery","composeRecoveryLogSink","isRecoverableZeroStalePokeMessage","isStaleGenerationError","mutationErrorMessage","MutationResultError","MutationTimeoutError","StaleGenerationError"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAASA,UAAA,EAAYC,OAAA,QAAe;AACpC,SAASC,WAAA,EAAaC,cAAA,QAAsB;AAE5C,SAAAC,gBAAA;AAAA,cACE;AAAA,cAMK;AACP,cAAc;AACd,SAAAC,SAAc;AACd,cAAc;AACd,cAAS;AACT,cAAc;AACd,cAAc;AACd,SAAAC,YAAc;AACd,SAAAC,WAAc,EAAAC,aAAA;AACd,SAASC,mBAAA,QAA8D;AACvE,SAASC,uBAAa,EAAAC,yBAAqB;AAQ3C,SAAAC,uBAAA,EAAAC,gBAAA,EAAAC,sBAAA,EAAAC,iCAAA;AAAA,SACEC,sBAAA,EAAAC,oBAAA,EAAAC,mBAAA,EAAAC,oBAAA,EAAAC,oBAAA;AAAA,SAGFF,mBAAA,EACEC,oBAAA,EACAC,oBAAA,EAAAR,uBAGK,EACPH,mBAAA,EACEK,sBAAA,EACAV,gBAAA,EACAE,YAAA,EACAE,aAAA,EAAAD,WAMK,EAEPP,UAAA,EACEC,OAAA,EACAc,iCAAA,EACAC,sBAAA,EACAH,gBAAA,EACAI,oBAAA,EAAAN,yBAIK,E","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export * from "./useStreamingField.mjs";
2
+ //# sourceMappingURL=streaming.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/streaming.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export * from "./useStreamingField.native.js";
2
+ //# sourceMappingURL=streaming.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/streaming.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc","ignoreList":[]}
@@ -1,17 +1,48 @@
1
1
  import { canonicalTopic } from "orez-lite/realtime";
2
- import { useCallback, useSyncExternalStore } from "react";
2
+ import { useCallback, useMemo, useSyncExternalStore } from "react";
3
3
  function createUseStreamingField(getStore) {
4
4
  return function useStreamingField(handle, base) {
5
5
  const store = getStore();
6
- const id = canonicalTopic(handle.spec.primaryKey, handle.topic);
6
+ const id = handle ? canonicalTopic(handle.spec.primaryKey, handle.topic) : "";
7
+ const subscribe = useCallback(onChange => {
8
+ if (!store || !handle) return () => {};
9
+ return store.subscribe(handle, onChange);
10
+ }, [store, id]);
11
+ const getSnapshot = useCallback(() => {
12
+ if (!store || !handle) return durableOnly(base);
13
+ return store.read(handle, base);
14
+ }, [store, id, base]);
15
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
16
+ };
17
+ }
18
+ function createUseStreamingFields(getStore) {
19
+ return function useStreamingFields(requests) {
20
+ const store = getStore();
21
+ const topicsKey = useMemo(() => requests.map(request => `${request.key}=${canonicalTopic(request.handle.spec.primaryKey, request.handle.topic)}`).join("\n"), [requests]);
7
22
  const subscribe = useCallback(onChange => {
8
23
  if (!store) return () => {};
9
- return store.subscribe(handle.spec, handle.topic, onChange);
10
- }, [store, handle.spec, id]);
24
+ const releases = requests.map(request => store.subscribe(request.handle, onChange));
25
+ return () => {
26
+ for (const release of releases) release();
27
+ };
28
+ }, [store, topicsKey]);
29
+ const cache = useMemo(() => ({
30
+ value: {}
31
+ }), [store, topicsKey]);
11
32
  const getSnapshot = useCallback(() => {
12
- if (!store) return durableOnly(base);
13
- return store.read(handle.spec, handle.topic, base);
14
- }, [store, handle.spec, id, base]);
33
+ const next = {};
34
+ let changed = false;
35
+ for (const request of requests) {
36
+ const state = store ? store.read(request.handle, request.base) : durableOnly(request.base);
37
+ next[request.key] = state;
38
+ if (cache.value[request.key] !== state) changed = true;
39
+ }
40
+ if (!changed && Object.keys(cache.value).length === Object.keys(next).length) {
41
+ return cache.value;
42
+ }
43
+ cache.value = next;
44
+ return next;
45
+ }, [store, topicsKey, cache, requests]);
15
46
  return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
16
47
  };
17
48
  }
@@ -41,5 +72,5 @@ function durableOnly(base) {
41
72
  };
42
73
  return lastPrimitiveState;
43
74
  }
44
- export { createUseStreamingField };
75
+ export { createUseStreamingField, createUseStreamingFields };
45
76
  //# sourceMappingURL=useStreamingField.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["canonicalTopic","useCallback","useSyncExternalStore","createUseStreamingField","getStore","useStreamingField","handle","base","store","id","spec","primaryKey","topic","subscribe","onChange","getSnapshot","durableOnly","read","DURABLE_CACHE","WeakMap","lastPrimitiveBase","lastPrimitiveState","cached","get","state","value","phase","streamID","set","Object","is"],"sources":["../../src/useStreamingField.ts"],"sourcesContent":[null],"mappings":"AAcA,SAASA,cAAA,QAAsB;AAC/B,SAASC,WAAA,EAAaC,oBAAA,QAA4B;AAuB3C,SAASC,wBACdC,QAAA,EACmB;EACnB,OAAO,SAASC,kBACdC,MAAA,EACAC,IAAA,EAC4B;IAC5B,MAAMC,KAAA,GAAQJ,QAAA,CAAS;IAGvB,MAAMK,EAAA,GAAKT,cAAA,CAAeM,MAAA,CAAOI,IAAA,CAAKC,UAAA,EAAYL,MAAA,CAAOM,KAAK;IAE9D,MAAMC,SAAA,GAAYZ,WAAA,CACfa,QAAA,IAAyB;MACxB,IAAI,CAACN,KAAA,EAAO,OAAO,MAAM,CAAC;MAC1B,OAAOA,KAAA,CAAMK,SAAA,CAAUP,MAAA,CAAOI,IAAA,EAAMJ,MAAA,CAAOM,KAAA,EAAOE,QAAQ;IAC5D,GACA,CAACN,KAAA,EAAOF,MAAA,CAAOI,IAAA,EAAMD,EAAE,CACzB;IAMA,MAAMM,WAAA,GAAcd,WAAA,CAAY,MAAM;MACpC,IAAI,CAACO,KAAA,EAAO,OAAOQ,WAAA,CAAYT,IAAI;MACnC,OAAOC,KAAA,CAAMS,IAAA,CAAKX,MAAA,CAAOI,IAAA,EAAMJ,MAAA,CAAOM,KAAA,EAAOL,IAAI;IACnD,GAAG,CAACC,KAAA,EAAOF,MAAA,CAAOI,IAAA,EAAMD,EAAA,EAAIF,IAAI,CAAC;IAEjC,OAAOL,oBAAA,CAAqBW,SAAA,EAAWE,WAAA,EAAaA,WAAW;EACjE;AACF;AAEA,MAAMG,aAAA,GAAgB,mBAAIC,OAAA,CAA8C;AACxE,IAAIC,iBAAA;AACJ,IAAIC,kBAAA;AAGJ,SAASL,YAAmBT,IAAA,EAAyC;EACnE,IAAIA,IAAA,KAAS,QAAQ,OAAOA,IAAA,KAAS,UAAU;IAC7C,MAAMe,MAAA,GAASJ,aAAA,CAAcK,GAAA,CAAIhB,IAAI;IACrC,IAAIe,MAAA,EAAQ,OAAOA,MAAA;IACnB,MAAME,KAAA,GAAQ;MAAEC,KAAA,EAAOlB,IAAA;MAAMmB,KAAA,EAAO;MAAWC,QAAA,EAAU;IAAK;IAC9DT,aAAA,CAAcU,GAAA,CAAIrB,IAAA,EAAMiB,KAAqC;IAC7D,OAAOA,KAAA;EACT;EACA,IAAIH,kBAAA,IAAsBQ,MAAA,CAAOC,EAAA,CAAGV,iBAAA,EAAmBb,IAAI,GAAG;IAC5D,OAAOc,kBAAA;EACT;EACAD,iBAAA,GAAoBb,IAAA;EACpBc,kBAAA,GAAqB;IAAEI,KAAA,EAAOlB,IAAA;IAAMmB,KAAA,EAAO;IAAWC,QAAA,EAAU;EAAK;EACrE,OAAON,kBAAA;AACT","ignoreList":[]}
1
+ {"version":3,"names":["canonicalTopic","useCallback","useMemo","useSyncExternalStore","createUseStreamingField","getStore","useStreamingField","handle","base","store","id","spec","primaryKey","topic","subscribe","onChange","getSnapshot","durableOnly","read","createUseStreamingFields","useStreamingFields","requests","topicsKey","map","request","key","join","releases","release","cache","value","next","changed","state","Object","keys","length","DURABLE_CACHE","WeakMap","lastPrimitiveBase","lastPrimitiveState","cached","get","phase","streamID","set","is"],"sources":["../../src/useStreamingField.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { canonicalTopic } from "orez-lite/realtime";
2
- import { useCallback, useSyncExternalStore } from "react";
2
+ import { useCallback, useMemo, useSyncExternalStore } from "react";
3
3
  function _type_of(obj) {
4
4
  "@swc/helpers - typeof";
5
5
 
@@ -8,15 +8,94 @@ function _type_of(obj) {
8
8
  function createUseStreamingField(getStore) {
9
9
  return function useStreamingField(handle, base) {
10
10
  var store = getStore();
11
- var id = canonicalTopic(handle.spec.primaryKey, handle.topic);
11
+ var id = handle ? canonicalTopic(handle.spec.primaryKey, handle.topic) : "";
12
+ var subscribe = useCallback(function (onChange) {
13
+ if (!store || !handle) return function () {};
14
+ return store.subscribe(handle, onChange);
15
+ }, [store, id]);
16
+ var getSnapshot = useCallback(function () {
17
+ if (!store || !handle) return durableOnly(base);
18
+ return store.read(handle, base);
19
+ }, [store, id, base]);
20
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
21
+ };
22
+ }
23
+ function createUseStreamingFields(getStore) {
24
+ return function useStreamingFields(requests) {
25
+ var store = getStore();
26
+ var topicsKey = useMemo(function () {
27
+ return requests.map(function (request) {
28
+ return `${request.key}=${canonicalTopic(request.handle.spec.primaryKey, request.handle.topic)}`;
29
+ }).join("\n");
30
+ }, [requests]);
12
31
  var subscribe = useCallback(function (onChange) {
13
32
  if (!store) return function () {};
14
- return store.subscribe(handle.spec, handle.topic, onChange);
15
- }, [store, handle.spec, id]);
33
+ var releases = requests.map(function (request) {
34
+ return store.subscribe(request.handle, onChange);
35
+ });
36
+ return function () {
37
+ var _iteratorNormalCompletion = true,
38
+ _didIteratorError = false,
39
+ _iteratorError = void 0;
40
+ try {
41
+ for (var _iterator = releases[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
42
+ var release = _step.value;
43
+ release();
44
+ }
45
+ } catch (err) {
46
+ _didIteratorError = true;
47
+ _iteratorError = err;
48
+ } finally {
49
+ try {
50
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
51
+ _iterator.return();
52
+ }
53
+ } finally {
54
+ if (_didIteratorError) {
55
+ throw _iteratorError;
56
+ }
57
+ }
58
+ }
59
+ };
60
+ }, [store, topicsKey]);
61
+ var cache = useMemo(function () {
62
+ return {
63
+ value: {}
64
+ };
65
+ }, [store, topicsKey]);
16
66
  var getSnapshot = useCallback(function () {
17
- if (!store) return durableOnly(base);
18
- return store.read(handle.spec, handle.topic, base);
19
- }, [store, handle.spec, id, base]);
67
+ var next = {};
68
+ var changed = false;
69
+ var _iteratorNormalCompletion = true,
70
+ _didIteratorError = false,
71
+ _iteratorError = void 0;
72
+ try {
73
+ for (var _iterator = requests[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
74
+ var request = _step.value;
75
+ var state = store ? store.read(request.handle, request.base) : durableOnly(request.base);
76
+ next[request.key] = state;
77
+ if (cache.value[request.key] !== state) changed = true;
78
+ }
79
+ } catch (err) {
80
+ _didIteratorError = true;
81
+ _iteratorError = err;
82
+ } finally {
83
+ try {
84
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
85
+ _iterator.return();
86
+ }
87
+ } finally {
88
+ if (_didIteratorError) {
89
+ throw _iteratorError;
90
+ }
91
+ }
92
+ }
93
+ if (!changed && Object.keys(cache.value).length === Object.keys(next).length) {
94
+ return cache.value;
95
+ }
96
+ cache.value = next;
97
+ return next;
98
+ }, [store, topicsKey, cache, requests]);
20
99
  return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
21
100
  };
22
101
  }
@@ -46,5 +125,5 @@ function durableOnly(base) {
46
125
  };
47
126
  return lastPrimitiveState;
48
127
  }
49
- export { createUseStreamingField };
128
+ export { createUseStreamingField, createUseStreamingFields };
50
129
  //# sourceMappingURL=useStreamingField.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["canonicalTopic","useCallback","useSyncExternalStore","_type_of","obj","Symbol","constructor","createUseStreamingField","getStore","useStreamingField","handle","base","store","id","spec","primaryKey","topic","subscribe","onChange","getSnapshot","durableOnly","read","DURABLE_CACHE","WeakMap","lastPrimitiveBase","lastPrimitiveState","cached","get","state"],"sources":["../../src/useStreamingField.ts"],"sourcesContent":[null],"mappings":"AAcA,SAASA,cAAA,QAAsB;AAC/B,SAASC,WAAA,EAAaC,oBAAA,QAA4B;AAuB3C,SAASC,SAAAC,GAAA;EAGd,uBAAgB;;EAId,OAAAA,GAAM,WAAQC,MAAS,oBAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AAGvB;AAEA,SAAAG,uBAAkBA,CAAAC,QAAA;EAAA,OACf,SAAAC,iBAAyBA,CAAAC,MAAA,EAAAC,IAAA;IACxB,IAAAC,KAAK,GAAAJ,QAAO;IAAa,IAACK,EAAA,GAAAb,cAAA,CAAAU,MAAA,CAAAI,IAAA,CAAAC,UAAA,EAAAL,MAAA,CAAAM,KAAA;IAC1B,IAAAC,SAAO,GAAAhB,WAAgB,WAAOiB,QAAM,EAAO;MAC7C,KAAAN,KAAA,sBACA,CAAC;MACH,OAAAA,KAAA,CAAAK,SAAA,CAAAP,MAAA,CAAAI,IAAA,EAAAJ,MAAA,CAAAM,KAAA,EAAAE,QAAA;IAMA,IACEN,KAAK,EACLF,MAAA,CAAOI,IAAA,EACTD,EAAI,CAEJ;IACF,IAAAM,WAAA,GAAAlB,WAAA;MACF,KAAAW,KAAA,SAAAQ,WAAA,CAAAT,IAAA;MAEM,OAAAC,KAAA,CAAAS,IAAgB,CAAAX,MAAA,CAAAI,IAAA,EAAAJ,MAAI,CAAAM,KAAA,EAA8CL,IAAA;IACpE,IACAC,KAAA,EAGJF,MAAS,CAAAI,IAAA,EACHD,EAAA,EACFF,IAAM,CACN;IACA,OAAMT,oBAAiB,CAAAe,SAAa,EAAAE,WAAW,EAAAA,WAAe;EAC9D;AACA;AAAO,IACTG,aAAA,sBAAAC,OAAA;AACA,IAAAC,iBAAI;AACF,IAAAC,kBAAO;AAAA,SACTL,YAAAT,IAAA;EACA,IAAAA,IAAA,aAAoB,QAAAA,IAAA,iCAAAR,QAAA,CAAAQ,IAAA;IACpB,IAAAe,MAAA,GAAAJ,aAAuB,CAAAK,GAAO,CAAAhB,IAAM;IACpC,IAAAe,MAAO,SAAAA,MAAA;IACT,IAAAE,KAAA","ignoreList":[]}
1
+ {"version":3,"names":["canonicalTopic","useCallback","useMemo","useSyncExternalStore","_type_of","obj","Symbol","constructor","createUseStreamingField","getStore","useStreamingField","handle","base","store","id","spec","primaryKey","topic","subscribe","onChange","getSnapshot","durableOnly","read","createUseStreamingFields","useStreamingFields","requests","topicsKey","map","request","key","join","releases","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","release","value","err","return","cache","changed"],"sources":["../../src/useStreamingField.ts"],"sourcesContent":[null],"mappings":"AAmBA,SAASA,cAAA,QAAsB;AAC/B,SAASC,WAAA,EAAaC,OAAA,EAASC,oBAAA,QAA4B;AAqCpD,SAASC,SAAAC,GAAA;EAGd,uBAAgB;;EAId,OAAAA,GAAM,WAAQC,MAAS,oBAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AAGvB;AAEA,SAAAG,uBAAkBA,CAAAC,QAAA;EAAA,OACf,SAAAC,iBAAyBA,CAAAC,MAAA,EAAAC,IAAA;IACxB,IAAAC,KAAK,GAAAJ,QAAU;IAAqB,IAACK,EAAA,GAAAH,MAAA,GAAAX,cAAA,CAAAW,MAAA,CAAAI,IAAA,CAAAC,UAAA,EAAAL,MAAA,CAAAM,KAAA;IACrC,IAAAC,SAAO,GAAAjB,WAAgB,WAAQkB,QAAQ;MACzC,KAAAN,KAAA,KAAAF,MAAA,sBACA,CAAC;MACH,OAAAE,KAAA,CAAAK,SAAA,CAAAP,MAAA,EAAAQ,QAAA;IAMA,IACEN,KAAK,EACLC,EAAA,CACF;IAEA,IAAAM,WAAO,GAAAnB,WAAqB,aAAW;MACzC,KAAAY,KAAA,KAAAF,MAAA,SAAAU,WAAA,CAAAT,IAAA;MACF,OAAAC,KAAA,CAAAS,IAAA,CAAAX,MAAA,EAAAC,IAAA;IASO,IAGLC,KAAO,EAGLC,EAAA,EAIAF,IAAM,CAAY,CAChB;IAEK,OACET,oBACI,CAAQe,SAAO,EAAAE,WAAe,EAAAA,WAAQ;EAA6C;AAEhF;AACL,SACXG,yBAAAd,QAAA;EAEA,gBAAMe,kBAAYA,CAAAC,QAAA;IAAA,IACfZ,KAAA,GAAAJ,QAAyB;IACxB,IAAAiB,SAAK,GAAOxB,OAAO,aAAM;MAAA,OAACuB,QAAA,CAAAE,GAAA,WAAAC,OAAA;QAC1B,OAAM,GAAAA,OAAW,CAAAC,GAAA,IAAA7B,cAAS,CAAA4B,OAAA,CAAAjB,MAAA,CAAAI,IAAA,CAAAC,UAAA,EAAAY,OAAA,CAAAjB,MAAA,CAAAM,KAAA;MAAA,GAAAa,IAAK;IACW,IAE1CL,QAAA,CACE;IAAwC,IAC1CP,SAAA,GAAAjB,WAAA,WAAAkB,QAAA;MACF,KAAAN,KAAA,sBACA,CAAC;MACH,IAAAkB,QAAA,GAAAN,QAAA,CAAAE,GAAA,WAAAC,OAAA;QAKA,OAAMf,KAAQ,CAAAK,SAAA,CAAAU,OAAA,CAAAjB,MAAA,EAAAQ,QAAA;MACZ;MACA,OAAC,YAAgB;QACnB,IAAAa,yBAAA;UAAAC,iBAAA;UAAAC,cAAA;QAEA,IAAM;UACJ,KAAM,IAAmDC,SAAC,GAAAJ,QAAA,CAAAzB,MAAA,CAAA8B,QAAA,KAAAC,KAAA,IAAAL,yBAAA,IAAAK,KAAA,GAAAF,SAAA,CAAAG,IAAA,IAAAC,IAAA,GAAAP,yBAAA;YACtD,IAAAQ,OAAU,GAAAH,KAAA,CAAAI,KAAA;YACdD,OAAW;UACT;QAGA,SAAKE,GAAA,EAAQ;UACbT,iBAAgB,OAAQ;UAC1BC,cAAA,GAAAQ,GAAA;QACA,UAAK;UACH;YACF,KAAAV,yBAAA,IAAAG,SAAA,CAAAQ,MAAA;cACMR,SAAQ,CAAAQ,MAAA;YACd;UACE,UAAO;YAEJ,IAAAV,iBAAqB;cAC9B,MAAAC,cAAA;YACF;UAEM;QACF;MACA;IAGJ,IACMrB,KAAA,EACFa,SAAM,CACN;IACA,IAAAkB,KAAM,GAAA1C,OAAU,aAAa;MAC7B;QACAuC,KAAO;MACT;IACA,GAAI,CACF5B,KAAO,EACTa,SAAA,CACA;IACA,IAAAN,WAAA,GAAAnB,WAA8B,aAAa;MAC3C,IAAOqC,IAAA;MACT,IAAAO,OAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "on-zero",
3
- "version": "0.10.7",
3
+ "version": "0.11.0",
4
4
  "description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
5
5
  "sideEffects": false,
6
6
  "files": [
@@ -77,6 +77,13 @@
77
77
  "import": "./dist/esm/multi.mjs",
78
78
  "require": "./dist/cjs/multi.cjs"
79
79
  },
80
+ "./streaming": {
81
+ "react-native": "./dist/esm/streaming.native.js",
82
+ "types": "./types/streaming.d.ts",
83
+ "import": "./dist/esm/streaming.mjs",
84
+ "require": "./dist/cjs/streaming.cjs",
85
+ "default": "./dist/esm/streaming.mjs"
86
+ },
80
87
  "./drizzle": {
81
88
  "types": "./types/createSchemaFromDrizzle.d.ts",
82
89
  "import": "./dist/esm/createSchemaFromDrizzle.mjs",
@@ -98,7 +105,7 @@
98
105
  "chokidar": "^4.0.3",
99
106
  "citty": "^0.1.6",
100
107
  "dequal": "^2.0.3",
101
- "orez-lite": "0.10.7",
108
+ "orez-lite": "0.11.0",
102
109
  "valibot": "^1.1.0"
103
110
  },
104
111
  "peerDependencies": {
package/src/index.ts CHANGED
@@ -17,7 +17,6 @@ export {
17
17
  type ZeroProviderTransport,
18
18
  } from './createZeroClient'
19
19
  export * from './createUseQuery'
20
- export * from './useStreamingField'
21
20
  export * from './resolveQuery'
22
21
  export * from './run'
23
22
  export { setRunner, type ZeroRunner } from './zeroRunner'
@@ -0,0 +1 @@
1
+ export * from './useStreamingField'
@@ -1,4 +1,4 @@
1
- // React binding for a streaming field.
1
+ // React bindings for streaming fields.
2
2
  //
3
3
  // The base value is passed in explicitly rather than the hook reaching into the
4
4
  // Zero query result. Two reasons: Zero query results are not mutated behind the
@@ -9,51 +9,70 @@
9
9
  // const content = useStreamingField(streaming.message.content({ id }), message.content)
10
10
  // return <Markdown>{content.value}</Markdown>
11
11
  //
12
- // Mounting the hook is what subscribes. A component that renders the row
13
- // without the hook receives no field traffic at all.
12
+ // Mounting a hook is what subscribes. A component that renders the row without
13
+ // one receives no field traffic at all.
14
+ //
15
+ // Both hooks are selector-isolated: a subscription covers exactly one row's one
16
+ // field, so a value arriving for another row cannot wake this component. That
17
+ // is the property an app hand-rolls otherwise, usually as a global emitter plus
18
+ // a deep-equal projection to undo the over-broadcasting.
14
19
 
15
20
  import { canonicalTopic } from 'orez-lite/realtime'
16
- import { useCallback, useSyncExternalStore } from 'react'
21
+ import { useCallback, useMemo, useSyncExternalStore } from 'react'
17
22
 
18
23
  import type {
19
24
  RealtimeStore,
20
- RealtimeTopic,
21
- StreamingFieldSpec,
25
+ StreamingFieldHandle,
22
26
  StreamingFieldState,
23
27
  } from 'orez-lite/realtime'
24
28
 
25
- // A topic paired with the spec it came from. `streaming.message.content({id})`
26
- // returns the topic; the spec rides along so the hook needs no manifest lookup.
27
- export type StreamingFieldHandle = {
28
- readonly topic: RealtimeTopic
29
- readonly spec: StreamingFieldSpec
30
- }
29
+ // `streaming.message.content({ id })` returns a StreamingFieldHandle: the row's
30
+ // topic plus the manifest spec for that column, so a hook needs no lookup and
31
+ // cannot be handed a field the manifest does not declare.
32
+ export type { StreamingFieldHandle }
31
33
 
34
+ // `handle` may be null so a component can subscribe conditionally while still
35
+ // calling the hook unconditionally, which is the common React shape: a row that
36
+ // is not streaming, or whose id is not known yet, has nothing to subscribe to.
32
37
  export type UseStreamingField = <Value>(
33
- handle: StreamingFieldHandle,
38
+ handle: StreamingFieldHandle | null | undefined,
34
39
  base: Value
35
40
  ) => StreamingFieldState<Value>
36
41
 
37
- // The store lives on the transport, so the hook is created against whichever
38
- // store the client installed rather than reaching for a module-level singleton.
42
+ // One row's field, keyed by whatever the caller already uses to identify the
43
+ // row (a message id, usually), so results can be looked up without rebuilding
44
+ // a canonical topic at the call site.
45
+ export type StreamingFieldRequest<Value = unknown> = {
46
+ readonly key: string
47
+ readonly handle: StreamingFieldHandle
48
+ readonly base: Value
49
+ }
50
+
51
+ export type UseStreamingFields = <Value>(
52
+ requests: readonly StreamingFieldRequest<Value>[]
53
+ ) => Readonly<Record<string, StreamingFieldState<Value>>>
54
+
55
+ // The store lives on the transport (or on a local realtime), so the hooks are
56
+ // created against whichever store the application installed rather than
57
+ // reaching for a module-level singleton.
39
58
  export function createUseStreamingField(
40
59
  getStore: () => RealtimeStore | undefined
41
60
  ): UseStreamingField {
42
61
  return function useStreamingField<Value>(
43
- handle: StreamingFieldHandle,
62
+ handle: StreamingFieldHandle | null | undefined,
44
63
  base: Value
45
64
  ): StreamingFieldState<Value> {
46
65
  const store = getStore()
47
66
  // the canonical topic, not object identity: a caller that rebuilds `{id}`
48
67
  // inline on every render must not churn its subscription
49
- const id = canonicalTopic(handle.spec.primaryKey, handle.topic)
68
+ const id = handle ? canonicalTopic(handle.spec.primaryKey, handle.topic) : ''
50
69
 
51
70
  const subscribe = useCallback(
52
71
  (onChange: () => void) => {
53
- if (!store) return () => {}
54
- return store.subscribe(handle.spec, handle.topic, onChange)
72
+ if (!store || !handle) return () => {}
73
+ return store.subscribe(handle, onChange)
55
74
  },
56
- [store, handle.spec, id]
75
+ [store, id]
57
76
  )
58
77
 
59
78
  // `store.read` returns a reference-stable state: useSyncExternalStore
@@ -61,9 +80,79 @@ export function createUseStreamingField(
61
80
  // a fresh object each time. `base` participates because a new durable value
62
81
  // from Zero is what ends the committing phase.
63
82
  const getSnapshot = useCallback(() => {
64
- if (!store) return durableOnly(base)
65
- return store.read(handle.spec, handle.topic, base)
66
- }, [store, handle.spec, id, base])
83
+ if (!store || !handle) return durableOnly(base)
84
+ return store.read(handle, base)
85
+ }, [store, id, base])
86
+
87
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot)
88
+ }
89
+ }
90
+
91
+ // Many rows' fields at once, for a list that has to merge live values before it
92
+ // renders (grouping consecutive tool parts, interleaving by timestamp, and so
93
+ // on) and therefore cannot push the subscription down into each row.
94
+ //
95
+ // Scoping is structural: this component subscribes to exactly the topics in
96
+ // `requests`, so a value for a row outside the list cannot wake it. There is no
97
+ // projection to write and no deep-equal comparator to get right.
98
+ export function createUseStreamingFields(
99
+ getStore: () => RealtimeStore | undefined
100
+ ): UseStreamingFields {
101
+ return function useStreamingFields<Value>(
102
+ requests: readonly StreamingFieldRequest<Value>[]
103
+ ): Readonly<Record<string, StreamingFieldState<Value>>> {
104
+ const store = getStore()
105
+
106
+ // identity of the subscription SET, so adding or removing a row
107
+ // resubscribes but a changing base value does not
108
+ const topicsKey = useMemo(
109
+ () =>
110
+ requests
111
+ .map(
112
+ (request) =>
113
+ `${request.key}=${canonicalTopic(request.handle.spec.primaryKey, request.handle.topic)}`
114
+ )
115
+ .join('\n'),
116
+ [requests]
117
+ )
118
+
119
+ const subscribe = useCallback(
120
+ (onChange: () => void) => {
121
+ if (!store) return () => {}
122
+ const releases = requests.map((request) =>
123
+ store.subscribe(request.handle, onChange)
124
+ )
125
+ return () => {
126
+ for (const release of releases) release()
127
+ }
128
+ },
129
+ [store, topicsKey]
130
+ )
131
+
132
+ // Reference-stable across renders where nothing observable changed, both
133
+ // for useSyncExternalStore's contract and so a consuming useMemo (soot
134
+ // merges these into its transcript) is not invalidated every render.
135
+ const cache = useMemo(
136
+ () => ({ value: {} as Record<string, StreamingFieldState<Value>> }),
137
+ [store, topicsKey]
138
+ )
139
+
140
+ const getSnapshot = useCallback(() => {
141
+ const next: Record<string, StreamingFieldState<Value>> = {}
142
+ let changed = false
143
+ for (const request of requests) {
144
+ const state = store
145
+ ? store.read(request.handle, request.base)
146
+ : durableOnly(request.base)
147
+ next[request.key] = state
148
+ if (cache.value[request.key] !== state) changed = true
149
+ }
150
+ if (!changed && Object.keys(cache.value).length === Object.keys(next).length) {
151
+ return cache.value
152
+ }
153
+ cache.value = next
154
+ return next
155
+ }, [store, topicsKey, cache, requests])
67
156
 
68
157
  return useSyncExternalStore(subscribe, getSnapshot, getSnapshot)
69
158
  }
package/types/index.d.ts CHANGED
@@ -9,7 +9,6 @@ export { ensureAuth, getAuth } from './helpers/getAuth';
9
9
  export { setAuthData, setEnvironment } from './state';
10
10
  export { createZeroClient, type CreateZeroClientOptions, type GroupedQueries, type PermissionStrategy, type WaitForZeroOptions, type ZeroProviderTransport, } from './createZeroClient';
11
11
  export * from './createUseQuery';
12
- export * from './useStreamingField';
13
12
  export * from './resolveQuery';
14
13
  export * from './run';
15
14
  export { setRunner, type ZeroRunner } from './zeroRunner';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAM3D,mBAAmB,SAAS,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,iCAAiC,EACjC,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAErD,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AACzD,cAAc,aAAa,CAAA;AAC3B,cAAc,SAAS,CAAA;AACvB,cAAc,eAAe,CAAA;AAC7B,cAAc,OAAO,CAAA;AACrB,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AACjF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAM3D,mBAAmB,SAAS,CAAA;AAE5B,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,iCAAiC,EACjC,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './useStreamingField';
2
+ //# sourceMappingURL=streaming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../src/streaming.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
@@ -1,8 +1,12 @@
1
- import type { RealtimeStore, RealtimeTopic, StreamingFieldSpec, StreamingFieldState } from 'orez-lite/realtime';
2
- export type StreamingFieldHandle = {
3
- readonly topic: RealtimeTopic;
4
- readonly spec: StreamingFieldSpec;
1
+ import type { RealtimeStore, StreamingFieldHandle, StreamingFieldState } from 'orez-lite/realtime';
2
+ export type { StreamingFieldHandle };
3
+ export type UseStreamingField = <Value>(handle: StreamingFieldHandle | null | undefined, base: Value) => StreamingFieldState<Value>;
4
+ export type StreamingFieldRequest<Value = unknown> = {
5
+ readonly key: string;
6
+ readonly handle: StreamingFieldHandle;
7
+ readonly base: Value;
5
8
  };
6
- export type UseStreamingField = <Value>(handle: StreamingFieldHandle, base: Value) => StreamingFieldState<Value>;
9
+ export type UseStreamingFields = <Value>(requests: readonly StreamingFieldRequest<Value>[]) => Readonly<Record<string, StreamingFieldState<Value>>>;
7
10
  export declare function createUseStreamingField(getStore: () => RealtimeStore | undefined): UseStreamingField;
11
+ export declare function createUseStreamingFields(getStore: () => RealtimeStore | undefined): UseStreamingFields;
8
12
  //# sourceMappingURL=useStreamingField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStreamingField.d.ts","sourceRoot":"","sources":["../src/useStreamingField.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAI3B,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EACpC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,KAAK,KACR,mBAAmB,CAAC,KAAK,CAAC,CAAA;AAI/B,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,aAAa,GAAG,SAAS,GACxC,iBAAiB,CA6BnB"}
1
+ {"version":3,"file":"useStreamingField.d.ts","sourceRoot":"","sources":["../src/useStreamingField.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,oBAAoB,CAAA;AAK3B,YAAY,EAAE,oBAAoB,EAAE,CAAA;AAKpC,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EACpC,MAAM,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAC/C,IAAI,EAAE,KAAK,KACR,mBAAmB,CAAC,KAAK,CAAC,CAAA;AAK/B,MAAM,MAAM,qBAAqB,CAAC,KAAK,GAAG,OAAO,IAAI;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EACrC,QAAQ,EAAE,SAAS,qBAAqB,CAAC,KAAK,CAAC,EAAE,KAC9C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAKzD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,aAAa,GAAG,SAAS,GACxC,iBAAiB,CA6BnB;AASD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,aAAa,GAAG,SAAS,GACxC,kBAAkB,CA2DpB"}