@mnaoumov/obsidian-lib 10.2.0 → 10.4.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 (53) hide show
  1. package/command-handlers/undo-bulk-operation-command-handler/package.json +6 -0
  2. package/components/bulk-operation-commit-component/package.json +6 -0
  3. package/dist/lib/cjs/__merged.cjs +42 -1
  4. package/dist/lib/cjs/__merged.d.cts +5 -0
  5. package/dist/lib/cjs/bulk-operation-progress.cjs +120 -0
  6. package/dist/lib/cjs/bulk-operation-progress.d.cts +33 -0
  7. package/dist/lib/cjs/bulk-operation.cjs +220 -0
  8. package/dist/lib/cjs/bulk-operation.d.cts +237 -0
  9. package/dist/lib/cjs/command-handlers/index.cjs +4 -1
  10. package/dist/lib/cjs/command-handlers/index.d.cts +1 -0
  11. package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.cjs +164 -0
  12. package/dist/lib/cjs/command-handlers/undo-bulk-operation-command-handler.d.cts +51 -0
  13. package/dist/lib/cjs/components/bulk-operation-commit-component.cjs +337 -0
  14. package/dist/lib/cjs/components/bulk-operation-commit-component.d.cts +152 -0
  15. package/dist/lib/cjs/components/index.cjs +4 -1
  16. package/dist/lib/cjs/components/index.d.cts +1 -0
  17. package/dist/lib/cjs/desktop-bulk-operation-git.cjs +534 -0
  18. package/dist/lib/cjs/desktop-bulk-operation-git.d.cts +196 -0
  19. package/dist/lib/cjs/generated-during-build.cjs +1 -1
  20. package/dist/lib/cjs/i18n/locales/en.cjs +10 -1
  21. package/dist/lib/cjs/i18n/locales/en.d.cts +9 -0
  22. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +9 -0
  23. package/dist/lib/cjs/index.cjs +10 -1
  24. package/dist/lib/cjs/index.d.cts +3 -0
  25. package/dist/lib/cjs/link.cjs +1 -1
  26. package/dist/lib/cjs/link.d.cts +24 -6
  27. package/dist/lib/cjs/loop.cjs +3 -1
  28. package/dist/lib/esm/__merged.d.mts +5 -0
  29. package/dist/lib/esm/__merged.mjs +43 -1
  30. package/dist/lib/esm/bulk-operation-progress.d.mts +33 -0
  31. package/dist/lib/esm/bulk-operation-progress.mjs +31 -0
  32. package/dist/lib/esm/bulk-operation.d.mts +237 -0
  33. package/dist/lib/esm/bulk-operation.mjs +125 -0
  34. package/dist/lib/esm/command-handlers/index.d.mts +1 -0
  35. package/dist/lib/esm/command-handlers/index.mjs +3 -1
  36. package/dist/lib/esm/command-handlers/undo-bulk-operation-command-handler.d.mts +51 -0
  37. package/dist/lib/esm/command-handlers/undo-bulk-operation-command-handler.mjs +76 -0
  38. package/dist/lib/esm/components/bulk-operation-commit-component.d.mts +152 -0
  39. package/dist/lib/esm/components/bulk-operation-commit-component.mjs +245 -0
  40. package/dist/lib/esm/components/index.d.mts +1 -0
  41. package/dist/lib/esm/components/index.mjs +3 -1
  42. package/dist/lib/esm/desktop-bulk-operation-git.d.mts +196 -0
  43. package/dist/lib/esm/desktop-bulk-operation-git.mjs +463 -0
  44. package/dist/lib/esm/generated-during-build.mjs +1 -1
  45. package/dist/lib/esm/i18n/locales/en.d.mts +9 -0
  46. package/dist/lib/esm/i18n/locales/en.mjs +10 -1
  47. package/dist/lib/esm/i18n/locales/translations-map.d.mts +9 -0
  48. package/dist/lib/esm/index.d.mts +3 -0
  49. package/dist/lib/esm/index.mjs +7 -1
  50. package/dist/lib/esm/link.d.mts +24 -6
  51. package/dist/lib/esm/link.mjs +1 -1
  52. package/dist/lib/esm/loop.mjs +3 -1
  53. package/package.json +1 -1
@@ -0,0 +1,152 @@
1
+ /// <reference path="../library-references.d.cts" />
2
+ /**
3
+ * @file
4
+ *
5
+ * Contains class {@link BulkOperationCommitComponent} that wraps a plugin's bulk operations in git commits, so
6
+ * `git revert` undoes one.
7
+ */
8
+ import type { App } from 'obsidian' with { 'resolution-mode': 'import' };
9
+ import type { Promisable } from 'type-fest' with { 'resolution-mode': 'import' };
10
+ import type { PluginNoticeComponent } from './plugin-notice-component.cjs';
11
+ import { ComponentEx } from './component-ex.cjs';
12
+ /**
13
+ * Constructor parameters for {@link BulkOperationCommitComponent}.
14
+ */
15
+ export interface BulkOperationCommitComponentConstructorParams {
16
+ /**
17
+ * The Obsidian app instance.
18
+ */
19
+ readonly app: App;
20
+ /**
21
+ * Whether the plugin's opt-in setting for bulk-operation commits is on. Read on every operation, so a settings
22
+ * change applies to the next one.
23
+ */
24
+ readonly isEnabled: () => boolean;
25
+ /**
26
+ * The longest the settle step waits for the vault to go quiet after an operation.
27
+ *
28
+ * @default `60_000`
29
+ */
30
+ readonly maxSettleTimeInMilliseconds?: number;
31
+ /**
32
+ * The id of the plugin whose operations are committed.
33
+ */
34
+ readonly pluginId: string;
35
+ /**
36
+ * The notice component used to report problems.
37
+ */
38
+ readonly pluginNoticeComponent: PluginNoticeComponent;
39
+ /**
40
+ * How long the vault must go without a change after an operation before its commit is made.
41
+ *
42
+ * @default `2000`
43
+ */
44
+ readonly quietPeriodInMilliseconds?: number;
45
+ }
46
+ /**
47
+ * Parameters for {@link BulkOperationCommitComponent.runBulkOperation}.
48
+ *
49
+ * @typeParam T - The type of the operation's result.
50
+ */
51
+ export interface BulkOperationCommitComponentRunBulkOperationParams<T> {
52
+ /**
53
+ * Runs the bulk operation.
54
+ *
55
+ * @returns The operation's result.
56
+ */
57
+ readonly operation: () => Promisable<T>;
58
+ /**
59
+ * A one-line description of the operation, used in the commit subject, such as `Collect attachments in Notes`.
60
+ */
61
+ readonly summary: string;
62
+ }
63
+ /**
64
+ * Wraps a plugin's bulk operations in git commits, so `git revert` of one commit undoes one operation.
65
+ *
66
+ * @remarks
67
+ * Opt-in through the plugin's own setting, and active only on desktop, for a vault inside a git work tree. When it
68
+ * is not active, {@link runBulkOperation} simply runs the operation. When it is, the operation runs between a
69
+ * `chore: before OP<n>` commit of whatever was pending and an `OP<n>: <summary>` commit of what it changed, under
70
+ * a lease lock in the repo's git directory that the scheduled vault autocommit honors. The lock's heartbeat
71
+ * is refreshed by the operation's progress: every `loop()` item, or an explicit `reportBulkOperationProgress()`.
72
+ *
73
+ * On load it recovers a lock left stale by a crash, committing the leftovers as `OP<n> interrupted`.
74
+ *
75
+ * Pair it with `UndoBulkOperationCommandHandler`, which lists the plugin's operations and reverts one.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * this.bulkOperationCommitComponent = this.addChild(new BulkOperationCommitComponent({
80
+ * app: this.app,
81
+ * isEnabled: () => this.settings.shouldCommitBulkOperations,
82
+ * pluginId: this.manifest.id,
83
+ * pluginNoticeComponent: this.pluginNoticeComponent
84
+ * }));
85
+ *
86
+ * await this.bulkOperationCommitComponent.runBulkOperation({
87
+ * operation: () => collectAttachmentsInFolder(folder),
88
+ * summary: `Collect attachments in ${folder.path}`
89
+ * });
90
+ * ```
91
+ */
92
+ export declare class BulkOperationCommitComponent extends ComponentEx {
93
+ /**
94
+ * The Obsidian app instance.
95
+ */
96
+ protected readonly app: App;
97
+ /**
98
+ * Whether the plugin's opt-in setting is on.
99
+ */
100
+ protected readonly isEnabled: () => boolean;
101
+ /**
102
+ * The id of the plugin whose operations are committed.
103
+ */
104
+ protected readonly pluginId: string;
105
+ /**
106
+ * The notice component used to report problems.
107
+ */
108
+ protected readonly pluginNoticeComponent: PluginNoticeComponent;
109
+ private readonly maxSettleTimeInMilliseconds;
110
+ private readonly quietPeriodInMilliseconds;
111
+ private repoPromise;
112
+ /**
113
+ * Creates a new instance.
114
+ *
115
+ * @param params - The constructor parameters.
116
+ */
117
+ constructor(params: BulkOperationCommitComponentConstructorParams);
118
+ /**
119
+ * Checks whether bulk operations are currently committed: the setting is on, the app is desktop and the vault is
120
+ * inside a git work tree.
121
+ *
122
+ * @returns Whether bulk operations are committed.
123
+ */
124
+ checkActive(): Promise<boolean>;
125
+ /**
126
+ * Recovers a stale lock left by a crashed operation once the component loads.
127
+ */
128
+ onload(): void;
129
+ /**
130
+ * Runs a bulk operation, wrapped in git commits when bulk-operation commits are active.
131
+ *
132
+ * @typeParam T - The type of the operation's result.
133
+ * @param params - The parameters.
134
+ * @returns The operation's result.
135
+ */
136
+ runBulkOperation<T>(params: BulkOperationCommitComponentRunBulkOperationParams<T>): Promise<T>;
137
+ /**
138
+ * Lets the user pick one of the plugin's bulk operations and reverts its commit.
139
+ *
140
+ * A conflict is reported and left for the user to resolve; the revert is never aborted.
141
+ *
142
+ * @param operationId - The operation to undo, such as `OP12`. When omitted, the user picks from every operation
143
+ * of the plugin. When two commits share the id (two machines minted it before syncing), the user picks between
144
+ * them.
145
+ */
146
+ undoBulkOperation(operationId?: string): Promise<void>;
147
+ private findRepo;
148
+ private getRepo;
149
+ private recoverStaleLock;
150
+ private settle;
151
+ private waitForQuietVault;
152
+ }
@@ -101,6 +101,7 @@ __export(components_exports, {
101
101
  "all-windows-event-component": () => all_windows_event_component,
102
102
  "async-error-handler-component": () => async_error_handler_component,
103
103
  "async-events-component": () => async_events_component,
104
+ "bulk-operation-commit-component": () => bulk_operation_commit_component,
104
105
  "case-insensitive-file-index-component": () => case_insensitive_file_index_component,
105
106
  "component-ex": () => component_ex,
106
107
  "console-debug-component": () => console_debug_component,
@@ -134,6 +135,7 @@ var abort_signal_component = __toESM(((module) => module && module.__esModule &&
134
135
  var all_windows_event_component = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./all-windows-event-component.cjs')), 1);
135
136
  var async_error_handler_component = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./async-error-handler-component.cjs')), 1);
136
137
  var async_events_component = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./async-events-component.cjs')), 1);
138
+ var bulk_operation_commit_component = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./bulk-operation-commit-component.cjs')), 1);
137
139
  var case_insensitive_file_index_component = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./case-insensitive-file-index-component.cjs')), 1);
138
140
  var component_ex = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./component-ex.cjs')), 1);
139
141
  var console_debug_component = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./console-debug-component.cjs')), 1);
@@ -167,6 +169,7 @@ var templates_language_component = __toESM(((module) => module && module.__esMod
167
169
  "all-windows-event-component": null,
168
170
  "async-error-handler-component": null,
169
171
  "async-events-component": null,
172
+ "bulk-operation-commit-component": null,
170
173
  "case-insensitive-file-index-component": null,
171
174
  "component-ex": null,
172
175
  "console-debug-component": null,
@@ -195,4 +198,4 @@ var templates_language_component = __toESM(((module) => module && module.__esMod
195
198
  "syntax-highlighting-component": null,
196
199
  "templates-language-component": null
197
200
  });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtZXZlbnRzLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50JyBmcm9tICcuL2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2NvbXBvbmVudC1leCcgZnJvbSAnLi9jb21wb25lbnQtZXgudHMnO1xuZXhwb3J0ICogYXMgJ2NvbnNvbGUtZGVidWctY29tcG9uZW50JyBmcm9tICcuL2NvbnNvbGUtZGVidWctY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50JyBmcm9tICcuL2NvcmUtcGx1Z2luLXRvZ2dsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2Rpc3Bvc2FibGUtY29tcG9uZW50JyBmcm9tICcuL2Rpc3Bvc2FibGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdlbWJlZC1leHRlbnNpb25zLWNvbXBvbmVudCcgZnJvbSAnLi9lbWJlZC1leHRlbnNpb25zLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZmlsZS1leHBsb3Jlci1yb290LW1lbnUtY29tcG9uZW50JyBmcm9tICcuL2ZpbGUtZXhwbG9yZXItcm9vdC1tZW51LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZ2VuZXJhdGUtbWFya2Rvd24tbGluay1kZWZhdWx0LXBhcmFtcy1jb21wb25lbnQnIGZyb20gJy4vZ2VuZXJhdGUtbWFya2Rvd24tbGluay1kZWZhdWx0LXBhcmFtcy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2luY3JlbWVudGFsLWZpbGUtaW5kZXgtY29tcG9uZW50JyBmcm9tICcuL2luY3JlbWVudGFsLWZpbGUtaW5kZXgtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdsYXlvdXQtcmVhZHktY29tcG9uZW50JyBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCcgZnJvbSAnLi9tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ21vbmtleS1hcm91bmQtY29tcG9uZW50JyBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50JyBmcm9tICcuL25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1jb250ZXh0LWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tY29udGV4dC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1nYXRlLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tZ2F0ZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1ub3RpY2UtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1ub3RpY2UtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc3VnZ2VzdGlvbi1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLXN1Z2dlc3Rpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudCcgZnJvbSAnLi9wb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVnaXN0cnktY29tcG9uZW50JyBmcm9tICcuL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVsZWFzZS1ub3Rlcy1jb21wb25lbnQnIGZyb20gJy4vcmVsZWFzZS1ub3Rlcy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3JlbmFtZS1kZWxldGUtaGFuZGxlci1jb21wb25lbnQnIGZyb20gJy4vcmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncm1kaXItZ3VhcmQtY29tcG9uZW50JyBmcm9tICcuL3JtZGlyLWd1YXJkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZ3MtbWlncmF0aW9uLWNvbXBvbmVudCcgZnJvbSAnLi9zZXR0aW5ncy1taWdyYXRpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudCcgZnJvbSAnLi9zeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAndGVtcGxhdGVzLWxhbmd1YWdlLWNvbXBvbmVudCcgZnJvbSAnLi90ZW1wbGF0ZXMtbGFuZ3VhZ2UtY29tcG9uZW50LnRzJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQSxrQ0FBQUE7QUFBQSxFQUFBLHFDQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUEsRUFBQSxnQ0FBQUM7QUFBQSxFQUFBLCtDQUFBQztBQUFBLEVBQUEsc0JBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLHNDQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQSxvQ0FBQUM7QUFBQSxFQUFBLDJDQUFBQztBQUFBLEVBQUEseURBQUFDO0FBQUEsRUFBQSwwQ0FBQUM7QUFBQSxFQUFBLGdDQUFBQztBQUFBLEVBQUEsd0NBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLDJEQUFBQztBQUFBLEVBQUEsa0NBQUFDO0FBQUEsRUFBQSwrQkFBQUM7QUFBQSxFQUFBLGlDQUFBQztBQUFBLEVBQUEsbUNBQUFDO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLHFDQUFBQztBQUFBLEVBQUEsb0NBQUFDO0FBQUEsRUFBQSw0QkFBQUM7QUFBQSxFQUFBLGlDQUFBQztBQUFBLEVBQUEseUNBQUFDO0FBQUEsRUFBQSwrQkFBQUM7QUFBQSxFQUFBLHNDQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUEsRUFBQSxzQ0FBQUM7QUFBQTtBQUFBO0FBRUEsSUFBQTlCLHlCQUEwQztBQUMxQyxJQUFBQyw4QkFBK0M7QUFDL0MsSUFBQUMsZ0NBQWlEO0FBQ2pELElBQUFDLHlCQUEwQztBQUMxQyxJQUFBQyx3Q0FBeUQ7QUFDekQsSUFBQUMsZUFBZ0M7QUFDaEMsSUFBQUMsMEJBQTJDO0FBQzNDLElBQUFDLCtCQUFnRDtBQUNoRCxJQUFBQyx1QkFBd0M7QUFDeEMsSUFBQUMsNkJBQThDO0FBQzlDLElBQUFDLG9DQUFxRDtBQUNyRCxJQUFBQyxrREFBbUU7QUFDbkUsSUFBQUMsbUNBQW9EO0FBQ3BELElBQUFDLHlCQUEwQztBQUMxQyxJQUFBQyxpQ0FBa0Q7QUFDbEQsSUFBQUMsMEJBQTJDO0FBQzNDLElBQUFDLG9EQUFxRTtBQUNyRSxJQUFBQywyQkFBNEM7QUFDNUMsSUFBQUMsd0JBQXlDO0FBQ3pDLElBQUFDLDBCQUEyQztBQUMzQyxJQUFBQyw0QkFBNkM7QUFDN0MsSUFBQUMsZ0NBQWlEO0FBQ2pELElBQUFDLDhCQUErQztBQUMvQyxJQUFBQyw2QkFBOEM7QUFDOUMsSUFBQUMscUJBQXNDO0FBQ3RDLElBQUFDLDBCQUEyQztBQUMzQyxJQUFBQyxrQ0FBbUQ7QUFDbkQsSUFBQUMsd0JBQXlDO0FBQ3pDLElBQUFDLCtCQUFnRDtBQUNoRCxJQUFBQyxnQ0FBaUQ7QUFDakQsSUFBQUMsK0JBQWdEOyIsIm5hbWVzIjpbImFib3J0LXNpZ25hbC1jb21wb25lbnQiLCJhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQiLCJhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCIsImFzeW5jLWV2ZW50cy1jb21wb25lbnQiLCJjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50IiwiY29tcG9uZW50LWV4IiwiY29uc29sZS1kZWJ1Zy1jb21wb25lbnQiLCJjb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50IiwiZGlzcG9zYWJsZS1jb21wb25lbnQiLCJlbWJlZC1leHRlbnNpb25zLWNvbXBvbmVudCIsImZpbGUtZXhwbG9yZXItcm9vdC1tZW51LWNvbXBvbmVudCIsImdlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50IiwiaW5jcmVtZW50YWwtZmlsZS1pbmRleC1jb21wb25lbnQiLCJsYXlvdXQtcmVhZHktY29tcG9uZW50IiwibWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50IiwibW9ua2V5LWFyb3VuZC1jb21wb25lbnQiLCJub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50IiwicGx1Z2luLWNvbnRleHQtY29tcG9uZW50IiwicGx1Z2luLWdhdGUtY29tcG9uZW50IiwicGx1Z2luLW5vdGljZS1jb21wb25lbnQiLCJwbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50IiwicGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQiLCJwbHVnaW4tc3VnZ2VzdGlvbi1jb21wb25lbnQiLCJwb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudCIsInJlZ2lzdHJ5LWNvbXBvbmVudCIsInJlbGVhc2Utbm90ZXMtY29tcG9uZW50IiwicmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCIsInJtZGlyLWd1YXJkLWNvbXBvbmVudCIsInNldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQiLCJzeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudCIsInRlbXBsYXRlcy1sYW5ndWFnZS1jb21wb25lbnQiXX0=
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtZXZlbnRzLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdidWxrLW9wZXJhdGlvbi1jb21taXQtY29tcG9uZW50JyBmcm9tICcuL2J1bGstb3BlcmF0aW9uLWNvbW1pdC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQnIGZyb20gJy4vY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnY29tcG9uZW50LWV4JyBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5leHBvcnQgKiBhcyAnY29uc29sZS1kZWJ1Zy1jb21wb25lbnQnIGZyb20gJy4vY29uc29sZS1kZWJ1Zy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2NvcmUtcGx1Z2luLXRvZ2dsZS1jb21wb25lbnQnIGZyb20gJy4vY29yZS1wbHVnaW4tdG9nZ2xlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZGlzcG9zYWJsZS1jb21wb25lbnQnIGZyb20gJy4vZGlzcG9zYWJsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2VtYmVkLWV4dGVuc2lvbnMtY29tcG9uZW50JyBmcm9tICcuL2VtYmVkLWV4dGVuc2lvbnMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdmaWxlLWV4cGxvcmVyLXJvb3QtbWVudS1jb21wb25lbnQnIGZyb20gJy4vZmlsZS1leHBsb3Jlci1yb290LW1lbnUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdnZW5lcmF0ZS1tYXJrZG93bi1saW5rLWRlZmF1bHQtcGFyYW1zLWNvbXBvbmVudCcgZnJvbSAnLi9nZW5lcmF0ZS1tYXJrZG93bi1saW5rLWRlZmF1bHQtcGFyYW1zLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnaW5jcmVtZW50YWwtZmlsZS1pbmRleC1jb21wb25lbnQnIGZyb20gJy4vaW5jcmVtZW50YWwtZmlsZS1pbmRleC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2xheW91dC1yZWFkeS1jb21wb25lbnQnIGZyb20gJy4vbGF5b3V0LXJlYWR5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50JyBmcm9tICcuL21lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbW9ua2V5LWFyb3VuZC1jb21wb25lbnQnIGZyb20gJy4vbW9ua2V5LWFyb3VuZC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQnIGZyb20gJy4vbm90ZWJvb2stbmF2aWdhdG9yLW1lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWNvbnRleHQtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1jb250ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWdhdGUtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1nYXRlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLW5vdGljZS1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc3VnZ2VzdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BvaW50ZXItcG9zaXRpb24tY29tcG9uZW50JyBmcm9tICcuL3BvaW50ZXItcG9zaXRpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdyZWdpc3RyeS1jb21wb25lbnQnIGZyb20gJy4vcmVnaXN0cnktY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdyZWxlYXNlLW5vdGVzLWNvbXBvbmVudCcgZnJvbSAnLi9yZWxlYXNlLW5vdGVzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdybWRpci1ndWFyZC1jb21wb25lbnQnIGZyb20gJy4vcm1kaXItZ3VhcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5ncy1taWdyYXRpb24tY29tcG9uZW50JyBmcm9tICcuL3NldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3N5bnRheC1oaWdobGlnaHRpbmctY29tcG9uZW50JyBmcm9tICcuL3N5bnRheC1oaWdobGlnaHRpbmctY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICd0ZW1wbGF0ZXMtbGFuZ3VhZ2UtY29tcG9uZW50JyBmcm9tICcuL3RlbXBsYXRlcy1sYW5ndWFnZS1jb21wb25lbnQudHMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBLGtDQUFBQTtBQUFBLEVBQUEscUNBQUFDO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLGdDQUFBQztBQUFBLEVBQUEseUNBQUFDO0FBQUEsRUFBQSwrQ0FBQUM7QUFBQSxFQUFBLHNCQUFBQztBQUFBLEVBQUEsaUNBQUFDO0FBQUEsRUFBQSxzQ0FBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUEsb0NBQUFDO0FBQUEsRUFBQSwyQ0FBQUM7QUFBQSxFQUFBLHlEQUFBQztBQUFBLEVBQUEsMENBQUFDO0FBQUEsRUFBQSxnQ0FBQUM7QUFBQSxFQUFBLHdDQUFBQztBQUFBLEVBQUEsaUNBQUFDO0FBQUEsRUFBQSwyREFBQUM7QUFBQSxFQUFBLGtDQUFBQztBQUFBLEVBQUEsK0JBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUEsRUFBQSxxQ0FBQUM7QUFBQSxFQUFBLG9DQUFBQztBQUFBLEVBQUEsNEJBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLHlDQUFBQztBQUFBLEVBQUEsK0JBQUFDO0FBQUEsRUFBQSxzQ0FBQUM7QUFBQSxFQUFBLHVDQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUE7QUFBQTtBQUVBLElBQUEvQix5QkFBMEM7QUFDMUMsSUFBQUMsOEJBQStDO0FBQy9DLElBQUFDLGdDQUFpRDtBQUNqRCxJQUFBQyx5QkFBMEM7QUFDMUMsSUFBQUMsa0NBQW1EO0FBQ25ELElBQUFDLHdDQUF5RDtBQUN6RCxJQUFBQyxlQUFnQztBQUNoQyxJQUFBQywwQkFBMkM7QUFDM0MsSUFBQUMsK0JBQWdEO0FBQ2hELElBQUFDLHVCQUF3QztBQUN4QyxJQUFBQyw2QkFBOEM7QUFDOUMsSUFBQUMsb0NBQXFEO0FBQ3JELElBQUFDLGtEQUFtRTtBQUNuRSxJQUFBQyxtQ0FBb0Q7QUFDcEQsSUFBQUMseUJBQTBDO0FBQzFDLElBQUFDLGlDQUFrRDtBQUNsRCxJQUFBQywwQkFBMkM7QUFDM0MsSUFBQUMsb0RBQXFFO0FBQ3JFLElBQUFDLDJCQUE0QztBQUM1QyxJQUFBQyx3QkFBeUM7QUFDekMsSUFBQUMsMEJBQTJDO0FBQzNDLElBQUFDLDRCQUE2QztBQUM3QyxJQUFBQyxnQ0FBaUQ7QUFDakQsSUFBQUMsOEJBQStDO0FBQy9DLElBQUFDLDZCQUE4QztBQUM5QyxJQUFBQyxxQkFBc0M7QUFDdEMsSUFBQUMsMEJBQTJDO0FBQzNDLElBQUFDLGtDQUFtRDtBQUNuRCxJQUFBQyx3QkFBeUM7QUFDekMsSUFBQUMsK0JBQWdEO0FBQ2hELElBQUFDLGdDQUFpRDtBQUNqRCxJQUFBQywrQkFBZ0Q7IiwibmFtZXMiOlsiYWJvcnQtc2lnbmFsLWNvbXBvbmVudCIsImFsbC13aW5kb3dzLWV2ZW50LWNvbXBvbmVudCIsImFzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50IiwiYXN5bmMtZXZlbnRzLWNvbXBvbmVudCIsImJ1bGstb3BlcmF0aW9uLWNvbW1pdC1jb21wb25lbnQiLCJjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50IiwiY29tcG9uZW50LWV4IiwiY29uc29sZS1kZWJ1Zy1jb21wb25lbnQiLCJjb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50IiwiZGlzcG9zYWJsZS1jb21wb25lbnQiLCJlbWJlZC1leHRlbnNpb25zLWNvbXBvbmVudCIsImZpbGUtZXhwbG9yZXItcm9vdC1tZW51LWNvbXBvbmVudCIsImdlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50IiwiaW5jcmVtZW50YWwtZmlsZS1pbmRleC1jb21wb25lbnQiLCJsYXlvdXQtcmVhZHktY29tcG9uZW50IiwibWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50IiwibW9ua2V5LWFyb3VuZC1jb21wb25lbnQiLCJub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50IiwicGx1Z2luLWNvbnRleHQtY29tcG9uZW50IiwicGx1Z2luLWdhdGUtY29tcG9uZW50IiwicGx1Z2luLW5vdGljZS1jb21wb25lbnQiLCJwbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50IiwicGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQiLCJwbHVnaW4tc3VnZ2VzdGlvbi1jb21wb25lbnQiLCJwb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudCIsInJlZ2lzdHJ5LWNvbXBvbmVudCIsInJlbGVhc2Utbm90ZXMtY29tcG9uZW50IiwicmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCIsInJtZGlyLWd1YXJkLWNvbXBvbmVudCIsInNldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQiLCJzeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudCIsInRlbXBsYXRlcy1sYW5ndWFnZS1jb21wb25lbnQiXX0=
@@ -3,6 +3,7 @@ export * as 'abort-signal-component' from './abort-signal-component.cjs';
3
3
  export * as 'all-windows-event-component' from './all-windows-event-component.cjs';
4
4
  export * as 'async-error-handler-component' from './async-error-handler-component.cjs';
5
5
  export * as 'async-events-component' from './async-events-component.cjs';
6
+ export * as 'bulk-operation-commit-component' from './bulk-operation-commit-component.cjs';
6
7
  export * as 'case-insensitive-file-index-component' from './case-insensitive-file-index-component.cjs';
7
8
  export * as 'component-ex' from './component-ex.cjs';
8
9
  export * as 'console-debug-component' from './console-debug-component.cjs';