@harbour-enterprises/superdoc 1.17.0-next.6 → 1.17.0-next.7

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.
@@ -33838,7 +33838,7 @@ var SuperConverter = class SuperConverter {
33838
33838
  static getStoredSuperdocVersion(docx) {
33839
33839
  return SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
33840
33840
  }
33841
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.6") {
33841
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.7") {
33842
33842
  return SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
33843
33843
  }
33844
33844
  static generateWordTimestamp() {
@@ -33824,7 +33824,7 @@ var SuperConverter = class SuperConverter {
33824
33824
  static getStoredSuperdocVersion(docx) {
33825
33825
  return SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
33826
33826
  }
33827
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.6") {
33827
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.7") {
33828
33828
  return SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
33829
33829
  }
33830
33830
  static generateWordTimestamp() {
@@ -1,5 +1,5 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-Dp2H1eGw.cjs");
2
- const require_SuperConverter = require("./SuperConverter-Ddyn6710.cjs");
2
+ const require_SuperConverter = require("./SuperConverter-CEFypeJ2.cjs");
3
3
  const require_jszip = require("./jszip-DCT9QYaK.cjs");
4
4
  const require_uuid = require("./uuid-CHj_rjgt.cjs");
5
5
  const require_constants = require("./constants-CpniKo9Z.cjs");
@@ -261,7 +261,7 @@ var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
261
261
  const COMMUNITY_LICENSE_KEY = "community-and-eval-agplv3";
262
262
  function getSuperdocVersion() {
263
263
  try {
264
- return "1.17.0-next.6";
264
+ return "1.17.0-next.7";
265
265
  } catch {
266
266
  return "unknown";
267
267
  }
@@ -20734,7 +20734,7 @@ const canUseDOM = () => {
20734
20734
  return false;
20735
20735
  }
20736
20736
  };
20737
- var summaryVersion = "1.17.0-next.6";
20737
+ var summaryVersion = "1.17.0-next.7";
20738
20738
  var nodeKeys = [
20739
20739
  "group",
20740
20740
  "content",
@@ -21321,7 +21321,7 @@ const OPERATION_DEFINITIONS = {
21321
21321
  },
21322
21322
  "format.apply": {
21323
21323
  memberPath: "format.apply",
21324
- description: "Apply explicit mark changes (bold, italic, underline, strike) to the target range using boolean patch semantics.",
21324
+ description: "Apply explicit inline style changes (bold, italic, underline, strike) to the target range using boolean patch semantics.",
21325
21325
  requiresDocumentContext: true,
21326
21326
  metadata: mutationOperation({
21327
21327
  idempotency: "conditional",
@@ -21502,7 +21502,11 @@ const OPERATION_DEFINITIONS = {
21502
21502
  supportsDryRun: false,
21503
21503
  supportsTrackedMode: false,
21504
21504
  possibleFailureCodes: ["INVALID_TARGET", "NO_OP"],
21505
- throws: [...T_NOT_FOUND_COMMAND, "INVALID_TARGET"]
21505
+ throws: [
21506
+ ...T_NOT_FOUND_COMMAND,
21507
+ "INVALID_TARGET",
21508
+ "INVALID_INPUT"
21509
+ ]
21506
21510
  }),
21507
21511
  referenceDocPath: "comments/patch.mdx",
21508
21512
  referenceGroup: "comments"
@@ -21559,8 +21563,8 @@ const OPERATION_DEFINITIONS = {
21559
21563
  referenceDocPath: "track-changes/get.mdx",
21560
21564
  referenceGroup: "trackChanges"
21561
21565
  },
21562
- "review.decide": {
21563
- memberPath: "review.decide",
21566
+ "trackChanges.decide": {
21567
+ memberPath: "trackChanges.decide",
21564
21568
  description: "Accept or reject a tracked change (by ID or scope: all).",
21565
21569
  requiresDocumentContext: true,
21566
21570
  metadata: mutationOperation({
@@ -21568,10 +21572,14 @@ const OPERATION_DEFINITIONS = {
21568
21572
  supportsDryRun: false,
21569
21573
  supportsTrackedMode: false,
21570
21574
  possibleFailureCodes: ["NO_OP"],
21571
- throws: T_NOT_FOUND_COMMAND
21575
+ throws: [
21576
+ ...T_NOT_FOUND_COMMAND,
21577
+ "INVALID_INPUT",
21578
+ "INVALID_TARGET"
21579
+ ]
21572
21580
  }),
21573
- referenceDocPath: "review/decide.mdx",
21574
- referenceGroup: "review"
21581
+ referenceDocPath: "track-changes/decide.mdx",
21582
+ referenceGroup: "trackChanges"
21575
21583
  },
21576
21584
  "query.match": {
21577
21585
  memberPath: "query.match",
@@ -22337,7 +22345,7 @@ var operationSchemas = {
22337
22345
  "format.apply": {
22338
22346
  input: objectSchema({
22339
22347
  target: textAddressSchema,
22340
- marks: (() => {
22348
+ inline: (() => {
22341
22349
  return {
22342
22350
  type: "object",
22343
22351
  properties: Object.fromEntries(MARK_KEYS.map((key$1) => [key$1, { type: "boolean" }])),
@@ -22345,7 +22353,7 @@ var operationSchemas = {
22345
22353
  minProperties: 1
22346
22354
  };
22347
22355
  })()
22348
- }, ["target", "marks"]),
22356
+ }, ["target", "inline"]),
22349
22357
  output: textMutationResultSchemaFor("format.apply"),
22350
22358
  success: textMutationSuccessSchema,
22351
22359
  failure: textMutationFailureSchemaFor("format.apply")
@@ -22505,7 +22513,7 @@ var operationSchemas = {
22505
22513
  input: objectSchema({ id: { type: "string" } }, ["id"]),
22506
22514
  output: trackChangeInfoSchema
22507
22515
  },
22508
- "review.decide": {
22516
+ "trackChanges.decide": {
22509
22517
  input: {
22510
22518
  type: "object",
22511
22519
  properties: {
@@ -22515,9 +22523,9 @@ var operationSchemas = {
22515
22523
  required: ["decision", "target"],
22516
22524
  additionalProperties: false
22517
22525
  },
22518
- output: receiptResultSchemaFor("review.decide"),
22526
+ output: receiptResultSchemaFor("trackChanges.decide"),
22519
22527
  success: receiptSuccessSchema,
22520
- failure: receiptFailureResultSchemaFor("review.decide")
22528
+ failure: receiptFailureResultSchemaFor("trackChanges.decide")
22521
22529
  },
22522
22530
  "query.match": {
22523
22531
  input: objectSchema({
@@ -22679,14 +22687,9 @@ var GROUP_METADATA = {
22679
22687
  },
22680
22688
  trackChanges: {
22681
22689
  title: "Track Changes",
22682
- description: "Tracked-change inspection operations.",
22690
+ description: "Tracked-change inspection and review operations.",
22683
22691
  pagePath: "track-changes/index.mdx"
22684
22692
  },
22685
- review: {
22686
- title: "Review",
22687
- description: "Accept or reject tracked changes.",
22688
- pagePath: "review/index.mdx"
22689
- },
22690
22693
  query: {
22691
22694
  title: "Query",
22692
22695
  description: "Deterministic selector-based queries for mutation targeting.",
@@ -22763,7 +22766,8 @@ function validateCreateCommentInput(input) {
22763
22766
  if (hasTarget) throw new DocumentApiValidationError("INVALID_TARGET", "Cannot combine parentCommentId with target. Replies do not take a target.", { fields: ["parentCommentId", "target"] });
22764
22767
  return;
22765
22768
  }
22766
- if (hasTarget && !isTextAddress(target)) throw new DocumentApiValidationError("INVALID_TARGET", "target must be a text address object.", {
22769
+ if (!hasTarget) throw new DocumentApiValidationError("INVALID_TARGET", "comments.create requires a target for root comments.", { field: "target" });
22770
+ if (!isTextAddress(target)) throw new DocumentApiValidationError("INVALID_TARGET", "target must be a text address object.", {
22767
22771
  field: "target",
22768
22772
  value: target
22769
22773
  });
@@ -22784,6 +22788,15 @@ function validatePatchCommentInput(input) {
22784
22788
  field: "commentId",
22785
22789
  value: commentId
22786
22790
  });
22791
+ const mutationFields = [
22792
+ "text",
22793
+ "target",
22794
+ "status",
22795
+ "isInternal"
22796
+ ];
22797
+ const providedFields = mutationFields.filter((f) => input[f] !== void 0);
22798
+ if (providedFields.length === 0) throw new DocumentApiValidationError("INVALID_INPUT", "comments.patch requires exactly one mutation field (text, target, status, or isInternal).", { allowedFields: [...mutationFields] });
22799
+ if (providedFields.length > 1) throw new DocumentApiValidationError("INVALID_INPUT", `comments.patch accepts exactly one mutation field per call, got ${providedFields.length}: ${providedFields.join(", ")}.`, { providedFields: [...providedFields] });
22787
22800
  const { status } = input;
22788
22801
  if (status !== void 0 && status !== "resolved") throw new DocumentApiValidationError("INVALID_TARGET", `status must be "resolved", got "${String(status)}".`, {
22789
22802
  field: "status",
@@ -22804,21 +22817,20 @@ function executeCommentsCreate(adapter, input, options) {
22804
22817
  }
22805
22818
  function executeCommentsPatch(adapter, input, options) {
22806
22819
  validatePatchCommentInput(input);
22807
- let lastReceipt = { success: true };
22808
- if (input.text !== void 0) lastReceipt = adapter.edit({
22820
+ if (input.text !== void 0) return adapter.edit({
22809
22821
  commentId: input.commentId,
22810
22822
  text: input.text
22811
22823
  }, options);
22812
- if (input.target !== void 0) lastReceipt = adapter.move({
22824
+ if (input.target !== void 0) return adapter.move({
22813
22825
  commentId: input.commentId,
22814
22826
  target: input.target
22815
22827
  }, options);
22816
- if (input.status === "resolved") lastReceipt = adapter.resolve({ commentId: input.commentId }, options);
22817
- if (input.isInternal !== void 0) lastReceipt = adapter.setInternal({
22828
+ if (input.status === "resolved") return adapter.resolve({ commentId: input.commentId }, options);
22829
+ if (input.isInternal !== void 0) return adapter.setInternal({
22818
22830
  commentId: input.commentId,
22819
22831
  isInternal: input.isInternal
22820
22832
  }, options);
22821
- return lastReceipt;
22833
+ return { success: true };
22822
22834
  }
22823
22835
  function executeCommentsDelete(adapter, input, options) {
22824
22836
  return adapter.remove({ commentId: input.commentId }, options);
@@ -22884,31 +22896,31 @@ function normalizeMutationOptions(options) {
22884
22896
  function executeWrite(adapter, request, options) {
22885
22897
  return adapter.write(request, normalizeMutationOptions(options));
22886
22898
  }
22887
- var STYLE_APPLY_INPUT_ALLOWED_KEYS = new Set(["target", "marks"]);
22899
+ var STYLE_APPLY_INPUT_ALLOWED_KEYS = new Set(["target", "inline"]);
22888
22900
  function validateStyleApplyInput(input) {
22889
22901
  if (!isRecord(input)) throw new DocumentApiValidationError("INVALID_INPUT", "format.apply input must be a non-null object.");
22890
22902
  assertNoUnknownFields(input, STYLE_APPLY_INPUT_ALLOWED_KEYS, "format.apply");
22891
- const { target, marks } = input;
22903
+ const { target, inline } = input;
22892
22904
  if (target === void 0) throw new DocumentApiValidationError("INVALID_TARGET", "format.apply requires a target.");
22893
22905
  if (!isTextAddress(target)) throw new DocumentApiValidationError("INVALID_TARGET", "target must be a text address object.", {
22894
22906
  field: "target",
22895
22907
  value: target
22896
22908
  });
22897
- if (marks === void 0 || marks === null) throw new DocumentApiValidationError("INVALID_INPUT", "format.apply requires a marks object.");
22898
- if (!isRecord(marks)) throw new DocumentApiValidationError("INVALID_INPUT", "marks must be a non-null object.", {
22899
- field: "marks",
22900
- value: marks
22909
+ if (inline === void 0 || inline === null) throw new DocumentApiValidationError("INVALID_INPUT", "format.apply requires an inline object.");
22910
+ if (!isRecord(inline)) throw new DocumentApiValidationError("INVALID_INPUT", "inline must be a non-null object.", {
22911
+ field: "inline",
22912
+ value: inline
22901
22913
  });
22902
- const markKeys$1 = Object.keys(marks);
22903
- if (markKeys$1.length === 0) throw new DocumentApiValidationError("INVALID_INPUT", "marks must include at least one known key.");
22904
- for (const key$1 of markKeys$1) {
22905
- if (!MARK_KEY_SET.has(key$1)) throw new DocumentApiValidationError("INVALID_INPUT", `Unknown mark key "${key$1}". Known keys: bold, italic, underline, strike.`, {
22906
- field: "marks",
22914
+ const inlineKeys = Object.keys(inline);
22915
+ if (inlineKeys.length === 0) throw new DocumentApiValidationError("INVALID_INPUT", "inline must include at least one known key.");
22916
+ for (const key$1 of inlineKeys) {
22917
+ if (!MARK_KEY_SET.has(key$1)) throw new DocumentApiValidationError("INVALID_INPUT", `Unknown inline style key "${key$1}". Known keys: bold, italic, underline, strike.`, {
22918
+ field: "inline",
22907
22919
  key: key$1
22908
22920
  });
22909
- const value = marks[key$1];
22910
- if (typeof value !== "boolean") throw new DocumentApiValidationError("INVALID_INPUT", `Mark "${key$1}" must be a boolean, got ${typeof value}.`, {
22911
- field: "marks",
22921
+ const value = inline[key$1];
22922
+ if (typeof value !== "boolean") throw new DocumentApiValidationError("INVALID_INPUT", `Inline style "${key$1}" must be a boolean, got ${typeof value}.`, {
22923
+ field: "inline",
22912
22924
  key: key$1,
22913
22925
  value
22914
22926
  });
@@ -23085,14 +23097,32 @@ function executeTrackChangesList(adapter, input) {
23085
23097
  function executeTrackChangesGet(adapter, input) {
23086
23098
  return adapter.get(input);
23087
23099
  }
23088
- function executeReviewDecide(adapter, input, options) {
23089
- const isAll = "scope" in input.target && input.target.scope === "all";
23100
+ function executeTrackChangesDecide(adapter, rawInput, options) {
23101
+ const raw = rawInput;
23102
+ if (typeof raw !== "object" || raw == null) throw new DocumentApiValidationError("INVALID_INPUT", "trackChanges.decide input must be a non-null object.", { value: raw });
23103
+ const input = raw;
23104
+ if (input.decision !== "accept" && input.decision !== "reject") throw new DocumentApiValidationError("INVALID_INPUT", `trackChanges.decide decision must be "accept" or "reject", got "${String(input.decision)}".`, {
23105
+ field: "decision",
23106
+ value: input.decision
23107
+ });
23108
+ if (typeof input.target !== "object" || input.target == null) throw new DocumentApiValidationError("INVALID_TARGET", "trackChanges.decide target must be an object with { id: string } or { scope: \"all\" }.", {
23109
+ field: "target",
23110
+ value: input.target
23111
+ });
23112
+ const target = input.target;
23113
+ const isAll = target.scope === "all";
23114
+ if (!isAll) {
23115
+ if (typeof target.id !== "string" || target.id.length === 0) throw new DocumentApiValidationError("INVALID_TARGET", "trackChanges.decide target must have { id: string } or { scope: \"all\" }.", {
23116
+ field: "target",
23117
+ value: input.target
23118
+ });
23119
+ }
23090
23120
  if (input.decision === "accept") {
23091
23121
  if (isAll) return adapter.acceptAll({}, options);
23092
- return adapter.accept({ id: input.target.id }, options);
23122
+ return adapter.accept({ id: target.id }, options);
23093
23123
  }
23094
23124
  if (isAll) return adapter.rejectAll({}, options);
23095
- return adapter.reject({ id: input.target.id }, options);
23125
+ return adapter.reject({ id: target.id }, options);
23096
23126
  }
23097
23127
  function buildDispatchTable(api) {
23098
23128
  return {
@@ -23122,7 +23152,7 @@ function buildDispatchTable(api) {
23122
23152
  "comments.list": (input) => api.comments.list(input),
23123
23153
  "trackChanges.list": (input) => api.trackChanges.list(input),
23124
23154
  "trackChanges.get": (input) => api.trackChanges.get(input),
23125
- "review.decide": (input, options) => api.review.decide(input, options),
23155
+ "trackChanges.decide": (input, options) => api.trackChanges.decide(input, options),
23126
23156
  "query.match": (input) => api.query.match(input),
23127
23157
  "mutations.preview": (input) => api.mutations.preview(input),
23128
23158
  "mutations.apply": (input) => api.mutations.apply(input),
@@ -23177,25 +23207,25 @@ function createDocumentApi(adapters) {
23177
23207
  bold(input, options) {
23178
23208
  return executeStyleApply$1(adapters.format, {
23179
23209
  ...input,
23180
- marks: { bold: true }
23210
+ inline: { bold: true }
23181
23211
  }, options);
23182
23212
  },
23183
23213
  italic(input, options) {
23184
23214
  return executeStyleApply$1(adapters.format, {
23185
23215
  ...input,
23186
- marks: { italic: true }
23216
+ inline: { italic: true }
23187
23217
  }, options);
23188
23218
  },
23189
23219
  underline(input, options) {
23190
23220
  return executeStyleApply$1(adapters.format, {
23191
23221
  ...input,
23192
- marks: { underline: true }
23222
+ inline: { underline: true }
23193
23223
  }, options);
23194
23224
  },
23195
23225
  strikethrough(input, options) {
23196
23226
  return executeStyleApply$1(adapters.format, {
23197
23227
  ...input,
23198
- marks: { strike: true }
23228
+ inline: { strike: true }
23199
23229
  }, options);
23200
23230
  },
23201
23231
  apply(input, options) {
@@ -23208,11 +23238,11 @@ function createDocumentApi(adapters) {
23208
23238
  },
23209
23239
  get(input) {
23210
23240
  return executeTrackChangesGet(adapters.trackChanges, input);
23241
+ },
23242
+ decide(input, options) {
23243
+ return executeTrackChangesDecide(adapters.trackChanges, input, options);
23211
23244
  }
23212
23245
  },
23213
- review: { decide(input, options) {
23214
- return executeReviewDecide(adapters.trackChanges, input, options);
23215
- } },
23216
23246
  create: {
23217
23247
  paragraph(input, options) {
23218
23248
  return executeCreateParagraph(adapters.create, input, options);
@@ -23289,7 +23319,7 @@ var REQUIRED_COMMANDS = {
23289
23319
  "setCommentInternal"
23290
23320
  ],
23291
23321
  "comments.delete": ["removeComment"],
23292
- "review.decide": [
23322
+ "trackChanges.decide": [
23293
23323
  "acceptTrackedChangeById",
23294
23324
  "rejectTrackedChangeById",
23295
23325
  "acceptAllTrackedChanges",
@@ -25122,22 +25152,22 @@ function executeStyleApply(editor, tr, target, step, mapping) {
25122
25152
  const markEntries = [
25123
25153
  [
25124
25154
  "bold",
25125
- step.args.marks.bold,
25155
+ step.args.inline.bold,
25126
25156
  schema.marks.bold
25127
25157
  ],
25128
25158
  [
25129
25159
  "italic",
25130
- step.args.marks.italic,
25160
+ step.args.inline.italic,
25131
25161
  schema.marks.italic
25132
25162
  ],
25133
25163
  [
25134
25164
  "underline",
25135
- step.args.marks.underline,
25165
+ step.args.inline.underline,
25136
25166
  schema.marks.underline
25137
25167
  ],
25138
25168
  [
25139
25169
  "strike",
25140
- step.args.marks.strike,
25170
+ step.args.inline.strike,
25141
25171
  schema.marks.strike
25142
25172
  ]
25143
25173
  ];
@@ -25217,22 +25247,22 @@ function executeSpanStyleApply(editor, tr, target, step, mapping) {
25217
25247
  const markEntries = [
25218
25248
  [
25219
25249
  "bold",
25220
- step.args.marks.bold,
25250
+ step.args.inline.bold,
25221
25251
  schema.marks.bold
25222
25252
  ],
25223
25253
  [
25224
25254
  "italic",
25225
- step.args.marks.italic,
25255
+ step.args.inline.italic,
25226
25256
  schema.marks.italic
25227
25257
  ],
25228
25258
  [
25229
25259
  "underline",
25230
- step.args.marks.underline,
25260
+ step.args.inline.underline,
25231
25261
  schema.marks.underline
25232
25262
  ],
25233
25263
  [
25234
25264
  "strike",
25235
- step.args.marks.strike,
25265
+ step.args.inline.strike,
25236
25266
  schema.marks.strike
25237
25267
  ]
25238
25268
  ];
@@ -25822,7 +25852,7 @@ function styleApplyWrapper(editor, input, options) {
25822
25852
  message: "format.apply requires a non-collapsed target range."
25823
25853
  }
25824
25854
  };
25825
- const markKeys$1 = Object.keys(input.marks).filter((k$1) => input.marks[k$1] !== void 0);
25855
+ const markKeys$1 = Object.keys(input.inline).filter((k$1) => input.inline[k$1] !== void 0);
25826
25856
  for (const key$1 of markKeys$1) {
25827
25857
  const schemaName = MARK_KEY_TO_SCHEMA_NAME[key$1];
25828
25858
  if (schemaName) requireSchemaMark(editor, schemaName, "format.apply");
@@ -25843,7 +25873,7 @@ function styleApplyWrapper(editor, input, options) {
25843
25873
  id: stepId,
25844
25874
  op: "format.apply",
25845
25875
  where: STUB_WHERE,
25846
- args: { marks: input.marks }
25876
+ args: { inline: input.inline }
25847
25877
  },
25848
25878
  targets: [{
25849
25879
  kind: "range",
@@ -30048,7 +30078,7 @@ var Editor = class Editor extends EventEmitter$1 {
30048
30078
  return migrations.length > 0;
30049
30079
  }
30050
30080
  processCollaborationMigrations() {
30051
- console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.6");
30081
+ console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.7");
30052
30082
  if (!this.options.ydoc) return;
30053
30083
  let docVersion = this.options.ydoc.getMap("meta").get("version");
30054
30084
  if (!docVersion) docVersion = "initial";