@ncukondo/reference-manager 0.16.1 → 0.17.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 (83) hide show
  1. package/dist/chunks/{file-watcher-B_WpVHSV.js → file-watcher-CrsNHUpz.js} +81 -29
  2. package/dist/chunks/file-watcher-CrsNHUpz.js.map +1 -0
  3. package/dist/chunks/{format-BPeCbpFG.js → format-CduFas9k.js} +16 -6
  4. package/dist/chunks/format-CduFas9k.js.map +1 -0
  5. package/dist/chunks/{index-DHgeuWGP.js → index-B4gr0P83.js} +16 -20
  6. package/dist/chunks/{index-DHgeuWGP.js.map → index-B4gr0P83.js.map} +1 -1
  7. package/dist/chunks/{index-7bmkSgzh.js → index-CfuE2EuX.js} +6 -80
  8. package/dist/chunks/index-CfuE2EuX.js.map +1 -0
  9. package/dist/chunks/{index-Ddq16wFm.js → index-CqrsgD_G.js} +1026 -177
  10. package/dist/chunks/index-CqrsgD_G.js.map +1 -0
  11. package/dist/chunks/{index-BzHJQ7Or.js → index-D_UafVdu.js} +2 -2
  12. package/dist/chunks/index-D_UafVdu.js.map +1 -0
  13. package/dist/chunks/{loader-DuhmXjiI.js → loader-BN5sS7lg.js} +2 -2
  14. package/dist/chunks/{loader-DuhmXjiI.js.map → loader-BN5sS7lg.js.map} +1 -1
  15. package/dist/chunks/{reference-select-Cs3hsy-1.js → reference-select-DbnF3oWs.js} +4 -16
  16. package/dist/chunks/reference-select-DbnF3oWs.js.map +1 -0
  17. package/dist/chunks/{style-select-tmKOHx_B.js → style-select-CbV5k3AV.js} +3 -3
  18. package/dist/chunks/{style-select-tmKOHx_B.js.map → style-select-CbV5k3AV.js.map} +1 -1
  19. package/dist/cli/commands/edit.d.ts +24 -3
  20. package/dist/cli/commands/edit.d.ts.map +1 -1
  21. package/dist/cli/commands/update.d.ts +1 -1
  22. package/dist/cli/commands/update.d.ts.map +1 -1
  23. package/dist/cli.js +2 -2
  24. package/dist/core/csl-json/types.d.ts +0 -12
  25. package/dist/core/csl-json/types.d.ts.map +1 -1
  26. package/dist/core/library-interface.d.ts +14 -2
  27. package/dist/core/library-interface.d.ts.map +1 -1
  28. package/dist/core/library.d.ts +10 -1
  29. package/dist/core/library.d.ts.map +1 -1
  30. package/dist/features/edit/edit-session.d.ts +4 -0
  31. package/dist/features/edit/edit-session.d.ts.map +1 -1
  32. package/dist/features/edit/edit-validator.d.ts +19 -0
  33. package/dist/features/edit/edit-validator.d.ts.map +1 -0
  34. package/dist/features/edit/field-transformer.d.ts +4 -0
  35. package/dist/features/edit/field-transformer.d.ts.map +1 -1
  36. package/dist/features/edit/index.d.ts +2 -1
  37. package/dist/features/edit/index.d.ts.map +1 -1
  38. package/dist/features/edit/json-serializer.d.ts +9 -0
  39. package/dist/features/edit/json-serializer.d.ts.map +1 -1
  40. package/dist/features/edit/validation-prompt.d.ts +17 -0
  41. package/dist/features/edit/validation-prompt.d.ts.map +1 -0
  42. package/dist/features/edit/yaml-serializer.d.ts +10 -0
  43. package/dist/features/edit/yaml-serializer.d.ts.map +1 -1
  44. package/dist/features/fulltext/index.d.ts +0 -1
  45. package/dist/features/fulltext/index.d.ts.map +1 -1
  46. package/dist/features/interactive/apps/runCiteFlow.d.ts +1 -1
  47. package/dist/features/interactive/apps/runCiteFlow.d.ts.map +1 -1
  48. package/dist/features/interactive/apps/runSearchFlow.d.ts.map +1 -1
  49. package/dist/features/interactive/components/SearchableMultiSelect.d.ts.map +1 -1
  50. package/dist/features/interactive/components/index.d.ts +1 -0
  51. package/dist/features/interactive/components/index.d.ts.map +1 -1
  52. package/dist/features/interactive/components/layout.d.ts +23 -0
  53. package/dist/features/interactive/components/layout.d.ts.map +1 -0
  54. package/dist/features/interactive/search-prompt.d.ts +2 -15
  55. package/dist/features/interactive/search-prompt.d.ts.map +1 -1
  56. package/dist/features/operations/change-details.d.ts +27 -0
  57. package/dist/features/operations/change-details.d.ts.map +1 -0
  58. package/dist/features/operations/json-output.d.ts +2 -0
  59. package/dist/features/operations/json-output.d.ts.map +1 -1
  60. package/dist/features/operations/remove.d.ts +0 -1
  61. package/dist/features/operations/remove.d.ts.map +1 -1
  62. package/dist/features/operations/update.d.ts +4 -2
  63. package/dist/features/operations/update.d.ts.map +1 -1
  64. package/dist/index.js +16 -15
  65. package/dist/index.js.map +1 -1
  66. package/dist/server.js +2 -2
  67. package/dist/utils/index.d.ts +1 -1
  68. package/dist/utils/index.d.ts.map +1 -1
  69. package/dist/utils/object.d.ts +5 -0
  70. package/dist/utils/object.d.ts.map +1 -1
  71. package/package.json +1 -1
  72. package/dist/chunks/alternate-screen-DcxkOKfW.js +0 -19
  73. package/dist/chunks/alternate-screen-DcxkOKfW.js.map +0 -1
  74. package/dist/chunks/file-watcher-B_WpVHSV.js.map +0 -1
  75. package/dist/chunks/format-BPeCbpFG.js.map +0 -1
  76. package/dist/chunks/index-7bmkSgzh.js.map +0 -1
  77. package/dist/chunks/index-BzHJQ7Or.js.map +0 -1
  78. package/dist/chunks/index-Ddq16wFm.js.map +0 -1
  79. package/dist/chunks/jsx-runtime-Q5cUjSur.js +0 -322
  80. package/dist/chunks/jsx-runtime-Q5cUjSur.js.map +0 -1
  81. package/dist/chunks/reference-select-Cs3hsy-1.js.map +0 -1
  82. package/dist/features/fulltext/manager.d.ts +0 -109
  83. package/dist/features/fulltext/manager.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { CslItem } from "./csl-json/types";
2
- import type { FindOptions, ILibrary, RemoveOptions, RemoveResult, UpdateOptions, UpdateResult } from "./library-interface.js";
2
+ import { type FindOptions, type ILibrary, type RemoveOptions, type RemoveResult, type UpdateOptions, type UpdateResult } from "./library-interface.js";
3
3
  export type { FindOptions, IdentifierType, ILibrary, UpdateOptions, UpdateResult, } from "./library-interface.js";
4
4
  /**
5
5
  * Library manager for CSL-JSON references.
@@ -88,6 +88,15 @@ export declare class Library implements ILibrary {
88
88
  * Resolve the new ID, handling collisions based on options.
89
89
  */
90
90
  private resolveNewId;
91
+ /**
92
+ * Check if there are actual changes between existing item and updates.
93
+ * Ignores protected fields (uuid, created_at, timestamp).
94
+ */
95
+ private hasChanges;
96
+ /**
97
+ * Check if custom fields have changes (excluding protected fields).
98
+ */
99
+ private hasCustomFieldChanges;
91
100
  /**
92
101
  * Build the updated CslItem, preserving uuid and created_at.
93
102
  */
@@ -1 +1 @@
1
- {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/core/library.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACb,MAAM,wBAAwB,CAAC;AAIhC,YAAY,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,aAAa,EACb,YAAY,GACb,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,qBAAa,OAAQ,YAAW,QAAQ;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,WAAW,CAAuB;IAG1C,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,SAAS,CAAqC;IAEtD,OAAO;IAWP;;;OAGG;WACU,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBrD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IA8BhC;;;;OAIG;IACG,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1C;;;;;OAKG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BpF;;;;;;OAMG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EACzB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IA4BxB;;;;;OAKG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAyBvF;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIlC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,OAAO,CAAC,YAAY;IA0BpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAwCvB;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAgB3B"}
1
+ {"version":3,"file":"library.d.ts","sourceRoot":"","sources":["../../src/core/library.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEb,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,wBAAwB,CAAC;AAIhC,YAAY,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,aAAa,EACb,YAAY,GACb,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,qBAAa,OAAQ,YAAW,QAAQ;IACtC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,WAAW,CAAuB;IAG1C,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,SAAS,CAAqC;IAEtD,OAAO;IAWP;;;OAGG;WACU,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBrD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IA8BhC;;;;OAIG;IACG,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1C;;;;;OAKG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BpF;;;;;;OAMG;IACG,MAAM,CACV,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EACzB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IA4BxB;;;;;OAKG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAyBvF;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIlC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;;OAGG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,OAAO,CAAC,YAAY;IA0BpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAoDvB;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAgBlB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAgB3B"}
@@ -19,6 +19,10 @@ export declare function openEditor(editor: string, filePath: string): number;
19
19
  * Reads content from the temporary file.
20
20
  */
21
21
  export declare function readTempFile(filePath: string): string;
22
+ /**
23
+ * Writes content to an existing temporary file.
24
+ */
25
+ export declare function writeTempFile(filePath: string, content: string): void;
22
26
  /**
23
27
  * Deletes the temporary file.
24
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"edit-session.d.ts","sourceRoot":"","sources":["../../../src/features/edit/edit-session.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAQ1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMrD"}
1
+ {"version":3,"file":"edit-session.d.ts","sourceRoot":"","sources":["../../../src/features/edit/edit-session.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAQ1E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUnE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMrD"}
@@ -0,0 +1,19 @@
1
+ export interface EditValidationError {
2
+ field: string;
3
+ message: string;
4
+ }
5
+ export interface EditValidationResult {
6
+ valid: boolean;
7
+ errors: Map<number, EditValidationError[]>;
8
+ }
9
+ export declare function validateEditFormat(items: Record<string, unknown>[]): EditValidationResult;
10
+ /**
11
+ * Stage 2: Validates items against CslItemSchema after transforming date fields.
12
+ */
13
+ export declare function validateCslItems(items: Record<string, unknown>[]): EditValidationResult;
14
+ /**
15
+ * Combined two-stage validation: edit-format first, then CSL schema.
16
+ * Short-circuits on Stage 1 failure.
17
+ */
18
+ export declare function validateEditedItems(items: Record<string, unknown>[]): EditValidationResult;
19
+ //# sourceMappingURL=edit-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-validator.d.ts","sourceRoot":"","sources":["../../../src/features/edit/edit-validator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;CAC5C;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,oBAAoB,CAoBzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,oBAAoB,CAkBvF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,oBAAoB,CAM1F"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Regex for validating ISO partial date strings (YYYY, YYYY-MM, YYYY-MM-DD).
3
+ */
4
+ export declare const ISO_DATE_REGEX: RegExp;
1
5
  /**
2
6
  * Transforms CSL-JSON date fields between internal and edit formats.
3
7
  * Internal: { "date-parts": [[2024, 3, 15]] }
@@ -1 +1 @@
1
- {"version":3,"file":"field-transformer.d.ts","sourceRoot":"","sources":["../../../src/features/edit/field-transformer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAmB5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAG1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,GAAG,SAAS,GAC9C,MAAM,GAAG,SAAS,CAKpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,CAInF"}
1
+ {"version":3,"file":"field-transformer.d.ts","sourceRoot":"","sources":["../../../src/features/edit/field-transformer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,cAAc,QAA8B,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAmB5D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAG1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,GAAG,SAAS,GAC9C,MAAM,GAAG,SAAS,CAKpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,YAAY,EAAE,MAAM,EAAE,EAAE,CAAA;CAAE,CAInF"}
@@ -19,9 +19,10 @@ export interface EditResult {
19
19
  success: boolean;
20
20
  editedItems: Record<string, unknown>[];
21
21
  error?: string;
22
+ aborted?: boolean;
22
23
  }
23
24
  /**
24
- * Executes the edit workflow.
25
+ * Executes the edit workflow with validation retry loop.
25
26
  *
26
27
  * @param items - The CSL items to edit
27
28
  * @param options - Edit options (format, editor)
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/edit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,mBAAmB,CAAC;AAK3B,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAgBD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA6C7F;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/edit/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EACL,KAAK,UAAU,EAMhB,MAAM,mBAAmB,CAAC;AAY3B,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmCD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAwF7F;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,9 +1,18 @@
1
1
  import type { CslItem } from "../../core/csl-json/types.js";
2
+ import type { EditValidationError } from "./edit-validator.js";
2
3
  /**
3
4
  * Serializes CSL items to JSON format for editing.
4
5
  * Protected fields are nested under _protected key.
5
6
  */
6
7
  export declare function serializeToJson(items: CslItem[]): string;
8
+ /**
9
+ * Serializes edited items to JSON with _errors annotations for re-edit.
10
+ *
11
+ * @param editedItems - User's edited items (preserves their changes)
12
+ * @param errors - Validation errors per item index
13
+ * @param originalItems - Original items for protected fields (optional)
14
+ */
15
+ export declare function serializeToJsonWithErrors(editedItems: Record<string, unknown>[], errors: Map<number, EditValidationError[]>, originalItems?: CslItem[]): string;
7
16
  /**
8
17
  * Deserializes JSON content back to CSL items.
9
18
  * Ignores _protected fields.
@@ -1 +1 @@
1
- {"version":3,"file":"json-serializer.d.ts","sourceRoot":"","sources":["../../../src/features/edit/json-serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AA4E5D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAGxD;AAkBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAwBlF"}
1
+ {"version":3,"file":"json-serializer.d.ts","sourceRoot":"","sources":["../../../src/features/edit/json-serializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAqE/D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAGxD;AAeD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,EAC1C,aAAa,CAAC,EAAE,OAAO,EAAE,GACxB,MAAM,CA6BR;AAkBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAwBlF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Validation prompt for the edit command.
3
+ * Shows validation errors and prompts user for action.
4
+ */
5
+ import type { CslItem } from "../../core/csl-json/types.js";
6
+ import type { EditValidationResult } from "./edit-validator.js";
7
+ export type ValidationPromptChoice = "re-edit" | "restore" | "abort";
8
+ /**
9
+ * Run the validation prompt.
10
+ * Shows validation errors and asks user what to do.
11
+ *
12
+ * @param validationResult - The validation result with errors
13
+ * @param items - The original items being edited
14
+ * @returns User's choice: "re-edit", "restore", or "abort"
15
+ */
16
+ export declare function runValidationPrompt(validationResult: EditValidationResult, items: CslItem[]): Promise<ValidationPromptChoice>;
17
+ //# sourceMappingURL=validation-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-prompt.d.ts","sourceRoot":"","sources":["../../../src/features/edit/validation-prompt.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,KAAK,EAAuB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAErF,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAqErE;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,gBAAgB,EAAE,oBAAoB,EACtC,KAAK,EAAE,OAAO,EAAE,GACf,OAAO,CAAC,sBAAsB,CAAC,CAoCjC"}
@@ -1,7 +1,17 @@
1
1
  import type { CslItem } from "../../core/csl-json/types.js";
2
+ import type { EditValidationError } from "./edit-validator.js";
2
3
  /**
3
4
  * Serializes CSL items to YAML format for editing.
4
5
  * Protected fields are shown as comments.
5
6
  */
6
7
  export declare function serializeToYaml(items: CslItem[]): string;
8
+ /**
9
+ * Serializes edited items to YAML with error annotations for re-edit.
10
+ * Adds file-top summary and per-entry error blocks.
11
+ *
12
+ * @param editedItems - User's edited items (preserves their changes)
13
+ * @param errors - Validation errors per item index
14
+ * @param originalItems - Original items for protected fields comments (optional)
15
+ */
16
+ export declare function serializeToYamlWithErrors(editedItems: Record<string, unknown>[], errors: Map<number, EditValidationError[]>, originalItems?: CslItem[]): string;
7
17
  //# sourceMappingURL=yaml-serializer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"yaml-serializer.d.ts","sourceRoot":"","sources":["../../../src/features/edit/yaml-serializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAoF5D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CA0BxD"}
1
+ {"version":3,"file":"yaml-serializer.d.ts","sourceRoot":"","sources":["../../../src/features/edit/yaml-serializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAoE/D;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CA0BxD;AAeD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACtC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,EAC1C,aAAa,CAAC,EAAE,OAAO,EAAE,GACxB,MAAM,CAwDR"}
@@ -3,5 +3,4 @@
3
3
  */
4
4
  export * from "./types.js";
5
5
  export { generateFulltextFilename } from "./filename.js";
6
- export { FulltextManager, FulltextIOError, FulltextNotAttachedError, type AttachOptions, type AttachResult, type DetachOptions, type DetachResult, } from "./manager.js";
7
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/fulltext/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EACL,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/fulltext/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import type { CslItem } from "../../../core/csl-json/types.js";
7
7
  import type { SearchResult } from "../../search/types.js";
8
- import type { SelectOption } from "../components/index.js";
8
+ import { type SelectOption } from "../components/index.js";
9
9
  import { type CiteFlowResult } from "./CiteFlowApp.js";
10
10
  /**
11
11
  * Configuration for the cite flow
@@ -1 +1 @@
1
- {"version":3,"file":"runCiteFlow.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/apps/runCiteFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAU,YAAY,EAAc,MAAM,wBAAwB,CAAC;AAE/E,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,CAAC;AA+H/D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,oCAAoC;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,yBAAyB;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,wCAAwC;IACxC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IACrC,sCAAsC;IACtC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkEtF"}
1
+ {"version":3,"file":"runCiteFlow.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/apps/runCiteFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,CAAC;AA2G/D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,oCAAoC;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,yBAAyB;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,wCAAwC;IACxC,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IACrC,sCAAsC;IACtC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAkEtF"}
@@ -1 +1 @@
1
- {"version":3,"file":"runSearchFlow.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/apps/runSearchFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,CAAC;AA+H/D;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,OAAO,EAAE,EACxB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAiE3B"}
1
+ {"version":3,"file":"runSearchFlow.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/apps/runSearchFlow.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAM1D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,CAAC;AA2G/D;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,aAAa,EAAE,OAAO,EAAE,EACxB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAiE3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"SearchableMultiSelect.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/components/SearchableMultiSelect.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,OAAO;IACjC,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,6DAA6D;IAC7D,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,yDAAyD;IACzD,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,qDAAqD;IACrD,aAAa,CAAC,EAAE,IAAI,CAAC;CACtB;AAED,6BAA6B;AAC7B,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,aAAa,GACb,cAAc,GACd,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,WAAW,CAAC;AAShB,MAAM,WAAW,0BAA0B,CAAC,CAAC;IAC3C,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;IAC1C,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,UAAU,CAAC;CAC1B;AAwVD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,EACvC,OAAO,EACP,QAAwB,EACxB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EACR,QAAQ,EACR,WAAiC,EACjC,MAAM,EACN,MAAM,EACN,WAA4B,GAC7B,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAwNpD"}
1
+ {"version":3,"file":"SearchableMultiSelect.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/components/SearchableMultiSelect.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,MAAM,WAAW,MAAM,CAAC,CAAC,GAAG,OAAO;IACjC,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,6DAA6D;IAC7D,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,yDAAyD;IACzD,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,qDAAqD;IACrD,aAAa,CAAC,EAAE,IAAI,CAAC;CACtB;AAED,6BAA6B;AAC7B,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,aAAa,GACb,cAAc,GACd,aAAa,GACb,gBAAgB,GAChB,eAAe,GACf,WAAW,CAAC;AAShB,MAAM,WAAW,0BAA0B,CAAC,CAAC;IAC3C,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,4BAA4B;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;IAC1C,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,UAAU,CAAC;CAC1B;AAwVD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,EACvC,OAAO,EACP,QAAwB,EACxB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EACR,QAAQ,EACR,WAAiC,EACjC,MAAM,EACN,MAAM,EACN,WAA4B,GAC7B,EAAE,0BAA0B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAoNpD"}
@@ -5,4 +5,5 @@ export { SearchableMultiSelect } from "./SearchableMultiSelect.js";
5
5
  export type { Choice, SearchableMultiSelectProps, SortOption, } from "./SearchableMultiSelect.js";
6
6
  export { Select } from "./Select.js";
7
7
  export type { SelectOption, SelectProps } from "./Select.js";
8
+ export { ITEM_HEIGHT, RESERVED_LINES, calculateEffectiveLimit, getTerminalHeight, getTerminalWidth, } from "./layout.js";
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACV,MAAM,EACN,0BAA0B,EAC1B,UAAU,GACX,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EACV,MAAM,EACN,0BAA0B,EAC1B,UAAU,GACX,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EACL,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Layout constants and utility functions for SearchableMultiSelect.
3
+ *
4
+ * These values are shared between the component itself and the callers
5
+ * that need to pre-calculate the visible item count.
6
+ */
7
+ /** Lines rendered per choice item (title + subtitle + meta) */
8
+ export declare const ITEM_HEIGHT = 3;
9
+ /**
10
+ * Lines reserved for chrome around the item list:
11
+ * header(2) + search box(4) + status(2) + scroll indicators(2) + footer(2) = 12
12
+ */
13
+ export declare const RESERVED_LINES = 12;
14
+ /** Gets terminal width, falling back to 80 if not available */
15
+ export declare function getTerminalWidth(): number;
16
+ /** Gets terminal height, falling back to 24 if not available */
17
+ export declare function getTerminalHeight(): number;
18
+ /**
19
+ * Calculates the effective limit for the item list
20
+ * based on terminal height to prevent the input field from being hidden.
21
+ */
22
+ export declare function calculateEffectiveLimit(configLimit: number): number;
23
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../src/features/interactive/components/layout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,+DAA+D;AAC/D,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,gEAAgE;AAChE,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAKnE"}
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { CslItem } from "../../core/csl-json/types.js";
7
7
  import type { SearchResult } from "../search/types.js";
8
+ import { calculateEffectiveLimit, getTerminalHeight, getTerminalWidth } from "./components/index.js";
8
9
  /**
9
10
  * Configuration for the search prompt
10
11
  */
@@ -27,21 +28,7 @@ export interface SearchPromptResult {
27
28
  /** Whether the prompt was cancelled */
28
29
  cancelled: boolean;
29
30
  }
30
- /**
31
- * Gets terminal width, falling back to 80 if not available
32
- */
33
- export declare function getTerminalWidth(): number;
34
- /**
35
- * Gets terminal height, falling back to 24 if not available
36
- */
37
- export declare function getTerminalHeight(): number;
38
- /**
39
- * Calculates the effective limit for the autocomplete list
40
- * based on terminal height to prevent input field from being hidden.
41
- * Reserves space for: prompt header (1), input line (1), footer hint (1), and padding (2)
42
- * Each item displays up to 3 lines (author/year, title, identifiers)
43
- */
44
- export declare function calculateEffectiveLimit(configLimit: number): number;
31
+ export { calculateEffectiveLimit, getTerminalHeight, getTerminalWidth };
45
32
  /**
46
33
  * Creates and runs an interactive search prompt
47
34
  */
@@ -1 +1 @@
1
- {"version":3,"file":"search-prompt.d.ts","sourceRoot":"","sources":["../../../src/features/interactive/search-prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQnE;AA0JD;;GAEG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,OAAO,EAAE,EACxB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,kBAAkB,EAC1B,aAAa,SAAK,GACjB,OAAO,CAAC,kBAAkB,CAAC,CA6D7B;AAID,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EAAE,EACvB,cAAc,EAAE,MAAM,GACrB,kBAAkB,EAAE,CAKtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAexE"}
1
+ {"version":3,"file":"search-prompt.d.ts","sourceRoot":"","sources":["../../../src/features/interactive/search-prompt.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAIL,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;AA0JxE;;GAEG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,OAAO,EAAE,EACxB,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,kBAAkB,EAC1B,aAAa,SAAK,GACjB,OAAO,CAAC,kBAAkB,CAAC,CA6D7B;AAID,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EAAE,EACvB,cAAc,EAAE,MAAM,GACrB,kBAAkB,EAAE,CAKtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAexE"}
@@ -0,0 +1,27 @@
1
+ import type { CslItem } from "../../core/csl-json/types.js";
2
+ /**
3
+ * Compare two CSL items and return the list of changed field names.
4
+ * Excludes protected custom fields (uuid, created_at, timestamp).
5
+ */
6
+ export declare function getChangedFields(oldItem: CslItem, newItem: CslItem): string[];
7
+ /**
8
+ * Format a single field change for display.
9
+ *
10
+ * Examples:
11
+ * title: "Old Title" → "New Title"
12
+ * author: +1 entry
13
+ * volume: → "42"
14
+ * volume: "42" → (removed)
15
+ * issued: "2024-03-15" → "2024-04-01"
16
+ */
17
+ export declare function formatFieldChange(field: string, oldValue: unknown, newValue: unknown): string;
18
+ /**
19
+ * Get a field value from a CslItem, supporting dot notation for custom fields.
20
+ */
21
+ export declare function getFieldValue(item: CslItem, field: string): unknown;
22
+ /**
23
+ * Format all change details for a pair of old/new items.
24
+ * Returns formatted change lines (indented with 2 spaces).
25
+ */
26
+ export declare function formatChangeDetails(oldItem: CslItem, newItem: CslItem): string[];
27
+ //# sourceMappingURL=change-details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-details.d.ts","sourceRoot":"","sources":["../../../src/features/operations/change-details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AA2B5D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAoB7E;AAwED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAQ7F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAMnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAOhF"}
@@ -54,6 +54,8 @@ export interface UpdateJsonOutput {
54
54
  id: string;
55
55
  uuid?: string;
56
56
  title?: string;
57
+ unchanged?: boolean;
58
+ changes?: string[];
57
59
  idChanged?: boolean;
58
60
  previousId?: string;
59
61
  before?: CslItem;
@@ -1 +1 @@
1
- {"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../../src/features/operations/json-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-output.d.ts","sourceRoot":"","sources":["../../../src/features/operations/json-output.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,6 @@ export interface RemoveResult {
27
27
  }
28
28
  /**
29
29
  * Get fulltext attachment types from a CSL item.
30
- * Supports both legacy fulltext structure and new attachments structure.
31
30
  */
32
31
  export declare function getFulltextAttachmentTypes(item: CslItem): FulltextType[];
33
32
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/features/operations/remove.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kDAAkD;IAClD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,YAAY,EAAE,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,EAAE,CAwBxE;AA+CD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAyBvB"}
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/features/operations/remove.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kDAAkD;IAClD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,YAAY,EAAE,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,EAAE,CAexE;AAqCD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAyBvB"}
@@ -21,8 +21,10 @@ export interface UpdateOperationResult {
21
21
  updated: boolean;
22
22
  /** The updated item (if successful) */
23
23
  item?: CslItem;
24
- /** True if ID collision occurred (only when updated=false and onIdCollision='fail') */
25
- idCollision?: boolean;
24
+ /** The original item before update (when item is available) */
25
+ oldItem?: CslItem;
26
+ /** Error type when update failed (only when updated=false) */
27
+ errorType?: "not_found" | "id_collision";
26
28
  /** True if the ID was changed due to collision resolution */
27
29
  idChanged?: boolean;
28
30
  /** The new ID after collision resolution (only when idChanged=true) */
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/features/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA8BhC"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/features/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC;IACzC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,QAAQ,EACjB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAyChC"}
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { C as CslLibrarySchema, c as computeFileHash, d as computeHash, p as pickDefined, n as normalize, s as search, e as sortResults, t as tokenize, f as detectDuplicate } from "./chunks/file-watcher-B_WpVHSV.js";
2
- import { g, F, L, R, q, r, j, k, m, o, l, h, i, w } from "./chunks/file-watcher-B_WpVHSV.js";
1
+ import { C as CslLibrarySchema, c as computeFileHash, d as computeHash, i as isEqual, p as pickDefined, n as normalize, s as search, e as sortResults, t as tokenize, f as detectDuplicate } from "./chunks/file-watcher-CrsNHUpz.js";
2
+ import { g, F, L, R, r, u, k, l, o, q, m, h, j, w } from "./chunks/file-watcher-CrsNHUpz.js";
3
3
  import { mkdir, readFile, copyFile, stat, unlink, readdir } from "node:fs/promises";
4
4
  import { dirname, join } from "node:path";
5
5
  import writeFileAtomicLib from "write-file-atomic";
6
6
  import { existsSync } from "node:fs";
7
7
  import { tmpdir } from "node:os";
8
8
  import { fileURLToPath } from "node:url";
9
- import { g as getOpenerCommand, o as openWithSystemApp, b as backupConfigSchema, c as configSchema, d as defaultConfig, a as getDefaultBackupDirectory, e as getDefaultCurrentDirConfigFilename, f as getDefaultLibraryPath, h as getDefaultUserConfigPath, l as loadConfig, i as logLevelSchema, n as normalizePartialConfig, p as partialConfigSchema, w as watchConfigSchema } from "./chunks/loader-DuhmXjiI.js";
9
+ import { g as getOpenerCommand, o as openWithSystemApp, b as backupConfigSchema, c as configSchema, d as defaultConfig, a as getDefaultBackupDirectory, e as getDefaultCurrentDirConfigFilename, f as getDefaultLibraryPath, h as getDefaultUserConfigPath, l as loadConfig, i as logLevelSchema, n as normalizePartialConfig, p as partialConfigSchema, w as watchConfigSchema } from "./chunks/loader-BN5sS7lg.js";
10
10
  function validateCslJson(data) {
11
11
  const parseResult = CslLibrarySchema.safeParse(data);
12
12
  if (!parseResult.success) {
@@ -50,7 +50,7 @@ async function resolvePackageName() {
50
50
  try {
51
51
  const currentFile = fileURLToPath(import.meta.url);
52
52
  let currentDir = dirname(currentFile);
53
- for (let i2 = 0; i2 < 10; i2++) {
53
+ for (let i = 0; i < 10; i++) {
54
54
  const packageJsonPath = join(currentDir, "package.json");
55
55
  if (existsSync(packageJsonPath)) {
56
56
  const content = await readFile(packageJsonPath, "utf-8");
@@ -99,12 +99,12 @@ async function cleanupOldBackups(libraryName, options) {
99
99
  const backups = await listBackups(libraryName);
100
100
  const now = Date.now();
101
101
  const backupsToDelete = [];
102
- for (let i2 = 0; i2 < backups.length; i2++) {
103
- const backupPath = backups[i2];
102
+ for (let i = 0; i < backups.length; i++) {
103
+ const backupPath = backups[i];
104
104
  if (!backupPath) continue;
105
105
  const stats = await stat(backupPath);
106
106
  const age = now - stats.mtimeMs;
107
- if (i2 >= maxGenerations || age > maxAgeMs) {
107
+ if (i >= maxGenerations || age > maxAgeMs) {
108
108
  backupsToDelete.push(backupPath);
109
109
  }
110
110
  }
@@ -120,6 +120,7 @@ const index$4 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
120
120
  ensureDirectoryExists,
121
121
  getBackupDirectory,
122
122
  getOpenerCommand,
123
+ isEqual,
123
124
  listBackups,
124
125
  openWithSystemApp,
125
126
  pickDefined,
@@ -381,15 +382,15 @@ export {
381
382
  R as Reference,
382
383
  index$2 as Search,
383
384
  index$4 as Utils,
384
- q as ensureCustomMetadata,
385
- r as extractUuidFromCustom,
386
- j as generateId,
387
- k as generateIdWithCollisionCheck,
388
- m as generateUuid,
389
- o as isValidUuid,
390
- l as normalizeText,
385
+ r as ensureCustomMetadata,
386
+ u as extractUuidFromCustom,
387
+ k as generateId,
388
+ l as generateIdWithCollisionCheck,
389
+ o as generateUuid,
390
+ q as isValidUuid,
391
+ m as normalizeText,
391
392
  h as parseCslJson,
392
- i as serializeCslJson,
393
+ j as serializeCslJson,
393
394
  validateCslJson,
394
395
  w as writeCslJson
395
396
  };