@ai-matrx/office 0.8.0 → 0.8.2

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 (49) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/chunk-47MIGBMH.js +148 -0
  3. package/dist/chunk-47MIGBMH.js.map +1 -0
  4. package/dist/{chunk-BWMAYLW4.cjs → chunk-6Z3Y6DUI.cjs} +7 -7
  5. package/dist/chunk-6Z3Y6DUI.cjs.map +1 -0
  6. package/dist/chunk-MQB2ZK2F.cjs +148 -0
  7. package/dist/chunk-MQB2ZK2F.cjs.map +1 -0
  8. package/dist/chunk-QZE7HBZB.cjs.map +1 -1
  9. package/dist/{chunk-O6FTSXHE.cjs → chunk-UBLEFLES.cjs} +40 -10
  10. package/dist/chunk-UBLEFLES.cjs.map +1 -0
  11. package/dist/{chunk-IDEA5UXK.js → chunk-XMM62UAT.js} +2 -2
  12. package/dist/{chunk-PI473GES.js → chunk-Z247F527.js} +36 -6
  13. package/dist/chunk-Z247F527.js.map +1 -0
  14. package/dist/chunk-ZDZCCOUB.cjs.map +1 -1
  15. package/dist/docs-io.cjs +9 -10
  16. package/dist/docs-io.cjs.map +1 -1
  17. package/dist/docs-io.js +2 -3
  18. package/dist/docs-io.js.map +1 -1
  19. package/dist/docs-tools.cjs +40 -129
  20. package/dist/docs-tools.cjs.map +1 -1
  21. package/dist/docs-tools.d.cts +21 -14
  22. package/dist/docs-tools.d.ts +21 -14
  23. package/dist/docs-tools.js +21 -110
  24. package/dist/docs-tools.js.map +1 -1
  25. package/dist/docs.cjs +19 -4
  26. package/dist/docs.cjs.map +1 -1
  27. package/dist/docs.d.cts +5 -0
  28. package/dist/docs.d.ts +5 -0
  29. package/dist/docs.js +18 -3
  30. package/dist/docs.js.map +1 -1
  31. package/dist/matrxImagePorts-JDFYE4QI.cjs.map +1 -1
  32. package/dist/sheets-xlsx.cjs.map +1 -1
  33. package/dist/sheets.cjs.map +1 -1
  34. package/dist/univer-collab.cjs +11 -1
  35. package/dist/univer-collab.cjs.map +1 -1
  36. package/dist/univer-collab.d.cts +7 -1
  37. package/dist/univer-collab.d.ts +7 -1
  38. package/dist/univer-collab.js +11 -1
  39. package/dist/univer-collab.js.map +1 -1
  40. package/dist/xlsx-to-univer-AQAXU3TC.cjs.map +1 -1
  41. package/package.json +6 -6
  42. package/dist/chunk-2UBGQUXW.cjs +0 -37
  43. package/dist/chunk-2UBGQUXW.cjs.map +0 -1
  44. package/dist/chunk-BWMAYLW4.cjs.map +0 -1
  45. package/dist/chunk-MPKXXZZV.js +0 -37
  46. package/dist/chunk-MPKXXZZV.js.map +0 -1
  47. package/dist/chunk-O6FTSXHE.cjs.map +0 -1
  48. package/dist/chunk-PI473GES.js.map +0 -1
  49. /package/dist/{chunk-IDEA5UXK.js.map → chunk-XMM62UAT.js.map} +0 -0
@@ -373,6 +373,12 @@ interface DocsOtRoom {
373
373
  isSaver(): boolean;
374
374
  stop(): void;
375
375
  }
376
+ /**
377
+ * Keys in one canonical order. The log stores groups as jsonb, which returns object keys in its own order, so an
378
+ * op read back from the door is the same op with its keys moved. The session compares wire forms (its ack check)
379
+ * through `encode`, so `encode` must not depend on key order or every acknowledgement looks like a mismatch.
380
+ */
381
+ declare function canonicalKeys<T>(v: T): T;
376
382
  interface UndoItem {
377
383
  unitID?: string;
378
384
  undoMutations?: Array<{
@@ -461,4 +467,4 @@ interface DocumentOtFactoryOptions {
461
467
  /** The `DocumentModel.startOtRoom` factory for one document. */
462
468
  declare function documentOtFactory(o: DocumentOtFactoryOptions): DocumentOtFactory;
463
469
 
464
- export { COLLAB_COVERED_KEY, type CollabBase, type CollabMutationInfo, type CollabProviderLike, type CommandServiceLike, DOCS_COLLAB_PROTO, DOCS_TRANSFORM_VERSION, DOC_LOCAL_KEYS, type DocsLocalMutation, type DocsLost, type DocsOp, type DocsOtNotice, type DocsOtPort, type DocsOtRoom, type DocsTransformResult, type DocumentOtFactoryOptions, type OpenDocsOtRoomOptions, type OtRoomsKnob, RICH_TEXT_EDITING, SENDER_VIEW_PARAMS, WorkbookCollabSession, type WorkbookCollabSessionOptions, applyDocsOp, canonicalDocsSnapshot, canonicalDocsString, composeDocsOps, docsStateHash, documentOtFactory, documentUsesOrderedRoom, dropEmptyStyleRetains, invertDocsOp, isCellEditorScratch, isNoopDocsOp, normalizeDocsOp, openDocsOtRoom, rebaseUndoStack, stampCovered, stampDeterministicIds, stripSenderView, takeCovered, transformDocsOp, transformTextX, undoStacksOf };
470
+ export { COLLAB_COVERED_KEY, type CollabBase, type CollabMutationInfo, type CollabProviderLike, type CommandServiceLike, DOCS_COLLAB_PROTO, DOCS_TRANSFORM_VERSION, DOC_LOCAL_KEYS, type DocsLocalMutation, type DocsLost, type DocsOp, type DocsOtNotice, type DocsOtPort, type DocsOtRoom, type DocsTransformResult, type DocumentOtFactoryOptions, type OpenDocsOtRoomOptions, type OtRoomsKnob, RICH_TEXT_EDITING, SENDER_VIEW_PARAMS, WorkbookCollabSession, type WorkbookCollabSessionOptions, applyDocsOp, canonicalDocsSnapshot, canonicalDocsString, canonicalKeys, composeDocsOps, docsStateHash, documentOtFactory, documentUsesOrderedRoom, dropEmptyStyleRetains, invertDocsOp, isCellEditorScratch, isNoopDocsOp, normalizeDocsOp, openDocsOtRoom, rebaseUndoStack, stampCovered, stampDeterministicIds, stripSenderView, takeCovered, transformDocsOp, transformTextX, undoStacksOf };
@@ -373,6 +373,12 @@ interface DocsOtRoom {
373
373
  isSaver(): boolean;
374
374
  stop(): void;
375
375
  }
376
+ /**
377
+ * Keys in one canonical order. The log stores groups as jsonb, which returns object keys in its own order, so an
378
+ * op read back from the door is the same op with its keys moved. The session compares wire forms (its ack check)
379
+ * through `encode`, so `encode` must not depend on key order or every acknowledgement looks like a mismatch.
380
+ */
381
+ declare function canonicalKeys<T>(v: T): T;
376
382
  interface UndoItem {
377
383
  unitID?: string;
378
384
  undoMutations?: Array<{
@@ -461,4 +467,4 @@ interface DocumentOtFactoryOptions {
461
467
  /** The `DocumentModel.startOtRoom` factory for one document. */
462
468
  declare function documentOtFactory(o: DocumentOtFactoryOptions): DocumentOtFactory;
463
469
 
464
- export { COLLAB_COVERED_KEY, type CollabBase, type CollabMutationInfo, type CollabProviderLike, type CommandServiceLike, DOCS_COLLAB_PROTO, DOCS_TRANSFORM_VERSION, DOC_LOCAL_KEYS, type DocsLocalMutation, type DocsLost, type DocsOp, type DocsOtNotice, type DocsOtPort, type DocsOtRoom, type DocsTransformResult, type DocumentOtFactoryOptions, type OpenDocsOtRoomOptions, type OtRoomsKnob, RICH_TEXT_EDITING, SENDER_VIEW_PARAMS, WorkbookCollabSession, type WorkbookCollabSessionOptions, applyDocsOp, canonicalDocsSnapshot, canonicalDocsString, composeDocsOps, docsStateHash, documentOtFactory, documentUsesOrderedRoom, dropEmptyStyleRetains, invertDocsOp, isCellEditorScratch, isNoopDocsOp, normalizeDocsOp, openDocsOtRoom, rebaseUndoStack, stampCovered, stampDeterministicIds, stripSenderView, takeCovered, transformDocsOp, transformTextX, undoStacksOf };
470
+ export { COLLAB_COVERED_KEY, type CollabBase, type CollabMutationInfo, type CollabProviderLike, type CommandServiceLike, DOCS_COLLAB_PROTO, DOCS_TRANSFORM_VERSION, DOC_LOCAL_KEYS, type DocsLocalMutation, type DocsLost, type DocsOp, type DocsOtNotice, type DocsOtPort, type DocsOtRoom, type DocsTransformResult, type DocumentOtFactoryOptions, type OpenDocsOtRoomOptions, type OtRoomsKnob, RICH_TEXT_EDITING, SENDER_VIEW_PARAMS, WorkbookCollabSession, type WorkbookCollabSessionOptions, applyDocsOp, canonicalDocsSnapshot, canonicalDocsString, canonicalKeys, composeDocsOps, docsStateHash, documentOtFactory, documentUsesOrderedRoom, dropEmptyStyleRetains, invertDocsOp, isCellEditorScratch, isNoopDocsOp, normalizeDocsOp, openDocsOtRoom, rebaseUndoStack, stampCovered, stampDeterministicIds, stripSenderView, takeCovered, transformDocsOp, transformTextX, undoStacksOf };
@@ -976,6 +976,15 @@ function stampDeterministicIds(snapshot) {
976
976
  import { isOpBarrier, openOpSession } from "@ai-matrx/data/realtime/collab";
977
977
  var RICH_TEXT_EDITING = "doc.mutation.rich-text-editing";
978
978
  var DOCS_COLLAB_PROTO = 1;
979
+ function canonicalKeys(v) {
980
+ if (Array.isArray(v)) return v.map(canonicalKeys);
981
+ if (v && typeof v === "object") {
982
+ const out = {};
983
+ for (const k of Object.keys(v).sort()) out[k] = canonicalKeys(v[k]);
984
+ return out;
985
+ }
986
+ return v;
987
+ }
979
988
  function branches(op) {
980
989
  if (!Array.isArray(op) || op.length === 0) return [];
981
990
  return Array.isArray(op[0]) ? op : [op];
@@ -1066,7 +1075,7 @@ function openDocsOtRoom(o) {
1066
1075
  },
1067
1076
  compose: (a, b) => composeDocsOps(a, b),
1068
1077
  isNoop: (op) => isNoopDocsOp(op),
1069
- encode: (op) => [{ cmd: "docs.edit", mutations: [{ id: RICH_TEXT_EDITING, params: { segmentId: "", actions: op } }] }],
1078
+ encode: (op) => [{ cmd: "docs.edit", mutations: [{ id: RICH_TEXT_EDITING, params: { segmentId: "", actions: canonicalKeys(op) } }] }],
1070
1079
  decode(groups) {
1071
1080
  let op = null;
1072
1081
  for (const g of groups) {
@@ -1357,6 +1366,7 @@ export {
1357
1366
  applyDocsOp,
1358
1367
  canonicalDocsSnapshot,
1359
1368
  canonicalDocsString,
1369
+ canonicalKeys,
1360
1370
  composeDocsOps,
1361
1371
  docsStateHash,
1362
1372
  documentOtFactory,