@real1ty-obsidian-plugins/utils 1.1.0 → 1.2.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 (55) hide show
  1. package/package.json +1 -1
  2. package/dist/async-utils.d.ts +0 -69
  3. package/dist/async-utils.d.ts.map +0 -1
  4. package/dist/async-utils.js +0 -108
  5. package/dist/batch-operations.d.ts +0 -11
  6. package/dist/batch-operations.d.ts.map +0 -1
  7. package/dist/batch-operations.js +0 -31
  8. package/dist/child-reference-utils.d.ts +0 -9
  9. package/dist/child-reference-utils.d.ts.map +0 -1
  10. package/dist/child-reference-utils.js +0 -57
  11. package/dist/date-recurrence-utils.d.ts +0 -30
  12. package/dist/date-recurrence-utils.d.ts.map +0 -1
  13. package/dist/date-recurrence-utils.js +0 -159
  14. package/dist/date-utils.d.ts +0 -21
  15. package/dist/date-utils.d.ts.map +0 -1
  16. package/dist/date-utils.js +0 -105
  17. package/dist/evaluator-base.d.ts +0 -52
  18. package/dist/evaluator-base.d.ts.map +0 -1
  19. package/dist/evaluator-base.js +0 -84
  20. package/dist/file-operations.d.ts +0 -31
  21. package/dist/file-operations.d.ts.map +0 -1
  22. package/dist/file-operations.js +0 -160
  23. package/dist/file-utils.d.ts +0 -6
  24. package/dist/file-utils.d.ts.map +0 -1
  25. package/dist/file-utils.js +0 -25
  26. package/dist/generate.d.ts +0 -7
  27. package/dist/generate.d.ts.map +0 -1
  28. package/dist/generate.js +0 -13
  29. package/dist/index.d.ts +0 -14
  30. package/dist/index.d.ts.map +0 -1
  31. package/dist/index.js +0 -14
  32. package/dist/link-parser.d.ts +0 -9
  33. package/dist/link-parser.d.ts.map +0 -1
  34. package/dist/link-parser.js +0 -19
  35. package/dist/settings-store.d.ts +0 -19
  36. package/dist/settings-store.d.ts.map +0 -1
  37. package/dist/settings-store.js +0 -79
  38. package/dist/string-utils.d.ts +0 -5
  39. package/dist/string-utils.d.ts.map +0 -1
  40. package/dist/string-utils.js +0 -25
  41. package/dist/templater-utils.d.ts +0 -4
  42. package/dist/templater-utils.d.ts.map +0 -1
  43. package/dist/templater-utils.js +0 -51
  44. package/dist/testing/index.d.ts +0 -5
  45. package/dist/testing/index.d.ts.map +0 -1
  46. package/dist/testing/index.js +0 -6
  47. package/dist/testing/mocks/obsidian.d.ts +0 -149
  48. package/dist/testing/mocks/obsidian.d.ts.map +0 -1
  49. package/dist/testing/mocks/obsidian.js +0 -220
  50. package/dist/testing/mocks/utils.d.ts +0 -14
  51. package/dist/testing/mocks/utils.d.ts.map +0 -1
  52. package/dist/testing/mocks/utils.js +0 -85
  53. package/dist/testing/setup.d.ts +0 -2
  54. package/dist/testing/setup.d.ts.map +0 -1
  55. package/dist/testing/setup.js +0 -18
@@ -1,220 +0,0 @@
1
- import { vi } from "vitest";
2
- // Base Plugin class mock
3
- export class Plugin {
4
- constructor(app, manifest) {
5
- // Core plugin methods
6
- this.addSettingTab = vi.fn();
7
- this.registerEvent = vi.fn();
8
- this.loadData = vi.fn().mockResolvedValue({});
9
- this.saveData = vi.fn().mockResolvedValue(undefined);
10
- this.onload = vi.fn();
11
- this.onunload = vi.fn();
12
- // UI methods
13
- this.addRibbonIcon = vi.fn();
14
- this.addStatusBarItem = vi.fn();
15
- this.addCommand = vi.fn();
16
- this.removeCommand = vi.fn();
17
- // Event methods
18
- this.registerDomEvent = vi.fn();
19
- this.registerCodeMirror = vi.fn();
20
- this.registerEditorExtension = vi.fn();
21
- this.registerMarkdownPostProcessor = vi.fn();
22
- this.registerMarkdownCodeBlockProcessor = vi.fn();
23
- this.registerObsidianProtocolHandler = vi.fn();
24
- this.registerEditorSuggest = vi.fn();
25
- this.registerHoverLinkSource = vi.fn();
26
- // Interval methods
27
- this.registerInterval = vi.fn();
28
- // View and extension methods
29
- this.registerView = vi.fn();
30
- this.registerExtensions = vi.fn();
31
- // Lifecycle methods
32
- this.onUserEnable = vi.fn();
33
- this.load = vi.fn();
34
- this.unload = vi.fn();
35
- // Other methods
36
- this.addChild = vi.fn();
37
- this.removeChild = vi.fn();
38
- this.register = vi.fn();
39
- this.app = app;
40
- this.manifest = manifest;
41
- }
42
- }
43
- // PluginSettingTab mock
44
- export class PluginSettingTab {
45
- constructor(app, plugin) {
46
- this.display = vi.fn();
47
- this.app = app;
48
- this.plugin = plugin;
49
- this.containerEl = document.createElement("div");
50
- }
51
- }
52
- // ItemView mock
53
- export class ItemView {
54
- constructor(leaf) {
55
- this.getState = vi.fn().mockReturnValue({});
56
- this.setState = vi.fn().mockResolvedValue(undefined);
57
- this.leaf = leaf;
58
- this.app = leaf === null || leaf === void 0 ? void 0 : leaf.app;
59
- this.containerEl = document.createElement("div");
60
- }
61
- // Don't override onOpen/onClose - let subclasses implement them
62
- // These methods are implemented by MountableView mixin
63
- // Don't provide default implementations for these methods
64
- // Let subclasses implement them
65
- getViewType() {
66
- return "mock-view";
67
- }
68
- getDisplayText() {
69
- return "Mock View";
70
- }
71
- getIcon() {
72
- return "mock-icon";
73
- }
74
- }
75
- // Setting component mock
76
- export class Setting {
77
- constructor(_containerEl) {
78
- this.setName = vi.fn().mockReturnThis();
79
- this.setDesc = vi.fn().mockReturnThis();
80
- this.addText = vi.fn().mockReturnThis();
81
- this.addTextArea = vi.fn().mockReturnThis();
82
- this.settingEl = document.createElement("div");
83
- this.nameEl = document.createElement("div");
84
- this.descEl = document.createElement("div");
85
- this.controlEl = document.createElement("div");
86
- }
87
- }
88
- // TFolder mock
89
- export class TFolder {
90
- constructor(path) {
91
- this.path = path;
92
- this.name = path.split("/").pop() || "";
93
- this.children = [];
94
- this.vault = {};
95
- this.parent = null;
96
- }
97
- isRoot() {
98
- return this.path === "" || this.path === "/";
99
- }
100
- }
101
- // TFile mock with full interface
102
- export class TFile {
103
- constructor(path, parentPath) {
104
- this.path = path;
105
- this.name = path.split("/").pop() || "";
106
- this.basename = this.name.replace(/\.[^/.]+$/, ""); // Remove extension
107
- this.extension = path.split(".").pop() || "md";
108
- this.stat = {};
109
- this.vault = {};
110
- // Set parent based on path or explicit parentPath
111
- if (parentPath !== undefined) {
112
- this.parent = parentPath ? new TFolder(parentPath) : null;
113
- }
114
- else {
115
- // Derive parent from path
116
- const lastSlash = path.lastIndexOf("/");
117
- if (lastSlash > 0) {
118
- this.parent = new TFolder(path.substring(0, lastSlash));
119
- }
120
- else {
121
- this.parent = null;
122
- }
123
- }
124
- }
125
- }
126
- // Modal mock
127
- export class Modal {
128
- constructor(app) {
129
- this.open = vi.fn();
130
- this.close = vi.fn();
131
- this.onOpen = vi.fn();
132
- this.onClose = vi.fn();
133
- this.app = app;
134
- this.containerEl = document.createElement("div");
135
- this.titleEl = document.createElement("div");
136
- this.contentEl = document.createElement("div");
137
- }
138
- }
139
- // Notice mock
140
- export class Notice {
141
- constructor(message) {
142
- console.log(`Notice: ${message}`);
143
- }
144
- }
145
- // MarkdownRenderer mock
146
- export const MarkdownRenderer = {
147
- render: vi.fn().mockResolvedValue(undefined),
148
- };
149
- // Debounce function mock
150
- export function debounce(func, wait, immediate) {
151
- let timeout = null;
152
- return ((...args) => {
153
- const later = () => {
154
- timeout = null;
155
- if (!immediate)
156
- func(...args);
157
- };
158
- const callNow = immediate && !timeout;
159
- if (timeout !== null) {
160
- clearTimeout(timeout);
161
- }
162
- timeout = setTimeout(later, wait);
163
- if (callNow)
164
- func(...args);
165
- });
166
- }
167
- // App mock
168
- export const App = vi.fn();
169
- // Helper function to create a fully mocked app
170
- export function createMockApp() {
171
- return {
172
- fileManager: {
173
- processFrontMatter: vi.fn(),
174
- },
175
- metadataCache: {
176
- getFileCache: vi.fn(),
177
- },
178
- vault: {
179
- getAbstractFileByPath: vi.fn(),
180
- on: vi.fn(),
181
- read: vi.fn(),
182
- modify: vi.fn(),
183
- create: vi.fn(),
184
- delete: vi.fn(),
185
- rename: vi.fn(),
186
- getFiles: vi.fn().mockReturnValue([]),
187
- getMarkdownFiles: vi.fn().mockReturnValue([]),
188
- getFolderByPath: vi.fn(),
189
- },
190
- workspace: {
191
- getActiveFile: vi.fn(),
192
- on: vi.fn(),
193
- },
194
- };
195
- }
196
- // Helper to create mock TFile instances
197
- export function createMockFile(path, options) {
198
- const file = new TFile(path, options === null || options === void 0 ? void 0 : options.parentPath);
199
- if (options === null || options === void 0 ? void 0 : options.basename) {
200
- file.basename = options.basename;
201
- }
202
- if (options === null || options === void 0 ? void 0 : options.extension) {
203
- file.extension = options.extension;
204
- }
205
- return file;
206
- }
207
- // Helper to create mock file cache
208
- export function createMockFileCache(frontmatter) {
209
- return {
210
- frontmatter: frontmatter || {},
211
- frontmatterPosition: frontmatter ? { start: { line: 0 }, end: { line: 3 } } : null,
212
- sections: [],
213
- headings: [],
214
- links: [],
215
- embeds: [],
216
- tags: [],
217
- listItems: [],
218
- };
219
- }
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzaWRpYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9tb2Nrcy9vYnNpZGlhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTVCLHlCQUF5QjtBQUN6QixNQUFNLE9BQU8sTUFBTTtJQUtsQixZQUFZLEdBQVEsRUFBRSxRQUFhO1FBS25DLHNCQUFzQjtRQUN0QixrQkFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QixrQkFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QixhQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLGFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsV0FBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBRW5CLGFBQWE7UUFDYixrQkFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QixxQkFBZ0IsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDM0IsZUFBVSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUV4QixnQkFBZ0I7UUFDaEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNCLHVCQUFrQixHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3Qiw0QkFBdUIsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDbEMsa0NBQTZCLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxD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LElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsU0FBUyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNiLENBQUM7QUFFRCxtQ0FBbUM7QUFDbkMsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFdBQWlDO0lBQ3BFLE9BQU87UUFDTixXQUFXLEVBQUUsV0FBVyxJQUFJLEVBQUU7UUFDOUIsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSTtRQUNsRixRQUFRLEVBQUUsRUFBRTtRQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1osS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLEVBQUU7S0FDYixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZpIH0gZnJvbSBcInZpdGVzdFwiO1xuXG4vLyBCYXNlIFBsdWdpbiBjbGFzcyBtb2NrXG5leHBvcnQgY2xhc3MgUGx1Z2luIHtcblx0YXBwOiBhbnk7XG5cdG1hbmlmZXN0OiBhbnk7XG5cdHNldHRpbmdzOiBhbnk7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBhbnksIG1hbmlmZXN0OiBhbnkpIHtcblx0XHR0aGlzLmFwcCA9IGFwcDtcblx0XHR0aGlzLm1hbmlmZXN0ID0gbWFuaWZlc3Q7XG5cdH1cblxuXHQvLyBDb3JlIHBsdWdpbiBtZXRob2RzXG5cdGFkZFNldHRpbmdUYWIgPSB2aS5mbigpO1xuXHRyZWdpc3RlckV2ZW50ID0gdmkuZm4oKTtcblx0bG9hZERhdGEgPSB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHt9KTtcblx0c2F2ZURhdGEgPSB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHVuZGVmaW5lZCk7XG5cdG9ubG9hZCA9IHZpLmZuKCk7XG5cdG9udW5sb2FkID0gdmkuZm4oKTtcblxuXHQvLyBVSSBtZXRob2RzXG5cdGFkZFJpYmJvbkljb24gPSB2aS5mbigpO1xuXHRhZGRTdGF0dXNCYXJJdGVtID0gdmkuZm4oKTtcblx0YWRkQ29tbWFuZCA9IHZpLmZuKCk7XG5cdHJlbW92ZUNvbW1hbmQgPSB2aS5mbigpO1xuXG5cdC8vIEV2ZW50IG1ldGhvZHNcblx0cmVnaXN0ZXJEb21FdmVudCA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVyQ29kZU1pcnJvciA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVyRWRpdG9yRXh0ZW5zaW9uID0gdmkuZm4oKTtcblx0cmVnaXN0ZXJNYXJrZG93blBvc3RQcm9jZXNzb3IgPSB2aS5mbigpO1xuXHRyZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yID0gdmkuZm4oKTtcblx0cmVnaXN0ZXJPYnNpZGlhblByb3RvY29sSGFuZGxlciA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVyRWRpdG9yU3VnZ2VzdCA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVySG92ZXJMaW5rU291cmNlID0gdmkuZm4oKTtcblxuXHQvLyBJbnRlcnZhbCBtZXRob2RzXG5cdHJlZ2lzdGVySW50ZXJ2YWwgPSB2aS5mbigpO1xuXG5cdC8vIFZpZXcgYW5kIGV4dGVuc2lvbiBtZXRob2RzXG5cdHJlZ2lzdGVyVmlldyA9IHZpLmZuKCk7XG5cdHJlZ2lzdGVyRXh0ZW5zaW9ucyA9IHZpLmZuKCk7XG5cblx0Ly8gTGlmZWN5Y2xlIG1ldGhvZHNcblx0b25Vc2VyRW5hYmxlID0gdmkuZm4oKTtcblx0bG9hZCA9IHZpLmZuKCk7XG5cdHVubG9hZCA9IHZpLmZuKCk7XG5cblx0Ly8gT3RoZXIgbWV0aG9kc1xuXHRhZGRDaGlsZCA9IHZpLmZuKCk7XG5cdHJlbW92ZUNoaWxkID0gdmkuZm4oKTtcblx0cmVnaXN0ZXIgPSB2aS5mbigpO1xufVxuXG4vLyBQbHVnaW5TZXR0aW5nVGFiIG1vY2tcbmV4cG9ydCBjbGFzcyBQbHVnaW5TZXR0aW5nVGFiIHtcblx0YXBwOiBhbnk7XG5cdHBsdWdpbjogYW55O1xuXHRjb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG5cblx0Y29uc3RydWN0b3IoYXBwOiBhbnksIHBsdWdpbjogYW55KSB7XG5cdFx0dGhpcy5hcHAgPSBhcHA7XG5cdFx0dGhpcy5wbHVnaW4gPSBwbHVnaW47XG5cdFx0dGhpcy5jb250YWluZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdH1cblxuXHRkaXNwbGF5ID0gdmkuZm4oKTtcbn1cblxuLy8gSXRlbVZpZXcgbW9ja1xuZXhwb3J0IGNsYXNzIEl0ZW1WaWV3IHtcblx0YXBwOiBhbnk7XG5cdGxlYWY6IGFueTtcblx0Y29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuXG5cdGNvbnN0cnVjdG9yKGxlYWY6IGFueSkge1xuXHRcdHRoaXMubGVhZiA9IGxlYWY7XG5cdFx0dGhpcy5hcHAgPSBsZWFmPy5hcHA7XG5cdFx0dGhpcy5jb250YWluZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdH1cblxuXHQvLyBEb24ndCBvdmVycmlkZSBvbk9wZW4vb25DbG9zZSAtIGxldCBzdWJjbGFzc2VzIGltcGxlbWVudCB0aGVtXG5cdC8vIFRoZXNlIG1ldGhvZHMgYXJlIGltcGxlbWVudGVkIGJ5IE1vdW50YWJsZVZpZXcgbWl4aW5cblxuXHQvLyBEb24ndCBwcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGVzZSBtZXRob2RzXG5cdC8vIExldCBzdWJjbGFzc2VzIGltcGxlbWVudCB0aGVtXG5cdGdldFZpZXdUeXBlKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIFwibW9jay12aWV3XCI7XG5cdH1cblxuXHRnZXREaXNwbGF5VGV4dCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcIk1vY2sgVmlld1wiO1xuXHR9XG5cblx0Z2V0SWNvbigpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcIm1vY2staWNvblwiO1xuXHR9XG5cblx0Z2V0U3RhdGUgPSB2aS5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7fSk7XG5cdHNldFN0YXRlID0gdmkuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh1bmRlZmluZWQpO1xufVxuXG4vLyBTZXR0aW5nIGNvbXBvbmVudCBtb2NrXG5leHBvcnQgY2xhc3MgU2V0dGluZyB7XG5cdHNldHRpbmdFbDogSFRNTEVsZW1lbnQ7XG5cdG5hbWVFbDogSFRNTEVsZW1lbnQ7XG5cdGRlc2NFbDogSFRNTEVsZW1lbnQ7XG5cdGNvbnRyb2xFbDogSFRNTEVsZW1lbnQ7XG5cblx0Y29uc3RydWN0b3IoX2NvbnRhaW5lckVsOiBIVE1MRWxlbWVudCkge1xuXHRcdHRoaXMuc2V0dGluZ0VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0XHR0aGlzLm5hbWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdFx0dGhpcy5kZXNjRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuXHRcdHRoaXMuY29udHJvbEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0fVxuXG5cdHNldE5hbWUgPSB2aS5mbigpLm1vY2tSZXR1cm5UaGlzKCk7XG5cdHNldERlc2MgPSB2aS5mbigpLm1vY2tSZXR1cm5UaGlzKCk7XG5cdGFkZFRleHQgPSB2aS5mbigpLm1vY2tSZXR1cm5UaGlzKCk7XG5cdGFkZFRleHRBcmVhID0gdmkuZm4oKS5tb2NrUmV0dXJuVGhpcygpO1xufVxuXG4vLyBURm9sZGVyIG1vY2tcbmV4cG9ydCBjbGFzcyBURm9sZGVyIHtcblx0cGF0aDogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGNoaWxkcmVuOiBhbnlbXTtcblx0dmF1bHQ6IGFueTtcblx0cGFyZW50OiBURm9sZGVyIHwgbnVsbDtcblxuXHRjb25zdHJ1Y3RvcihwYXRoOiBzdHJpbmcpIHtcblx0XHR0aGlzLnBhdGggPSBwYXRoO1xuXHRcdHRoaXMubmFtZSA9IHBhdGguc3BsaXQoXCIvXCIpLnBvcCgpIHx8IFwiXCI7XG5cdFx0dGhpcy5jaGlsZHJlbiA9IFtdO1xuXHRcdHRoaXMudmF1bHQgPSB7fTtcblx0XHR0aGlzLnBhcmVudCA9IG51bGw7XG5cdH1cblxuXHRpc1Jvb3QoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMucGF0aCA9PT0gXCJcIiB8fCB0aGlzLnBhdGggPT09IFwiL1wiO1xuXHR9XG59XG5cbi8vIFRGaWxlIG1vY2sgd2l0aCBmdWxsIGludGVyZmFjZVxuZXhwb3J0IGNsYXNzIFRGaWxlIHtcblx0cGF0aDogc3RyaW5nO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGJhc2VuYW1lOiBzdHJpbmc7XG5cdGV4dGVuc2lvbjogc3RyaW5nO1xuXHRzdGF0OiBhbnk7XG5cdHZhdWx0OiBhbnk7XG5cdHBhcmVudDogVEZvbGRlciB8IG51bGw7XG5cblx0Y29uc3RydWN0b3IocGF0aDogc3RyaW5nLCBwYXJlbnRQYXRoPzogc3RyaW5nKSB7XG5cdFx0dGhpcy5wYXRoID0gcGF0aDtcblx0XHR0aGlzLm5hbWUgPSBwYXRoLnNwbGl0KFwiL1wiKS5wb3AoKSB8fCBcIlwiO1xuXHRcdHRoaXMuYmFzZW5hbWUgPSB0aGlzLm5hbWUucmVwbGFjZSgvXFwuW14vLl0rJC8sIFwiXCIpOyAvLyBSZW1vdmUgZXh0ZW5zaW9uXG5cdFx0dGhpcy5leHRlbnNpb24gPSBwYXRoLnNwbGl0KFwiLlwiKS5wb3AoKSB8fCBcIm1kXCI7XG5cdFx0dGhpcy5zdGF0ID0ge307XG5cdFx0dGhpcy52YXVsdCA9IHt9O1xuXG5cdFx0Ly8gU2V0IHBhcmVudCBiYXNlZCBvbiBwYXRoIG9yIGV4cGxpY2l0IHBhcmVudFBhdGhcblx0XHRpZiAocGFyZW50UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLnBhcmVudCA9IHBhcmVudFBhdGggPyBuZXcgVEZvbGRlcihwYXJlbnRQYXRoKSA6IG51bGw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIERlcml2ZSBwYXJlbnQgZnJvbSBwYXRoXG5cdFx0XHRjb25zdCBsYXN0U2xhc2ggPSBwYXRoLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0XHRcdGlmIChsYXN0U2xhc2ggPiAwKSB7XG5cdFx0XHRcdHRoaXMucGFyZW50ID0gbmV3IFRGb2xkZXIocGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnBhcmVudCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vIE1vZGFsIG1vY2tcbmV4cG9ydCBjbGFzcyBNb2RhbCB7XG5cdGFwcDogYW55O1xuXHRjb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG5cdHRpdGxlRWw6IEhUTUxFbGVtZW50O1xuXHRjb250ZW50RWw6IEhUTUxFbGVtZW50O1xuXG5cdGNvbnN0cnVjdG9yKGFwcDogYW55KSB7XG5cdFx0dGhpcy5hcHAgPSBhcHA7XG5cdFx0dGhpcy5jb250YWluZXJFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdFx0dGhpcy50aXRsZUVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0XHR0aGlzLmNvbnRlbnRFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG5cdH1cblxuXHRvcGVuID0gdmkuZm4oKTtcblx0Y2xvc2UgPSB2aS5mbigpO1xuXHRvbk9wZW4gPSB2aS5mbigpO1xuXHRvbkNsb3NlID0gdmkuZm4oKTtcbn1cblxuLy8gTm90aWNlIG1vY2tcbmV4cG9ydCBjbGFzcyBOb3RpY2Uge1xuXHRjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcpIHtcblx0XHRjb25zb2xlLmxvZyhgTm90aWNlOiAke21lc3NhZ2V9YCk7XG5cdH1cbn1cblxuLy8gTWFya2Rvd25SZW5kZXJlciBtb2NrXG5leHBvcnQgY29uc3QgTWFya2Rvd25SZW5kZXJlciA9IHtcblx0cmVuZGVyOiB2aS5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHVuZGVmaW5lZCksXG59O1xuXG4vLyBEZWJvdW5jZSBmdW5jdGlvbiBtb2NrXG5leHBvcnQgZnVuY3Rpb24gZGVib3VuY2U8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55Pihcblx0ZnVuYzogVCxcblx0d2FpdDogbnVtYmVyLFxuXHRpbW1lZGlhdGU/OiBib29sZWFuXG4pOiBUIHtcblx0bGV0IHRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cblx0cmV0dXJuICgoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuXHRcdGNvbnN0IGxhdGVyID0gKCkgPT4ge1xuXHRcdFx0dGltZW91dCA9IG51bGw7XG5cdFx0XHRpZiAoIWltbWVkaWF0ZSkgZnVuYyguLi5hcmdzKTtcblx0XHR9O1xuXG5cdFx0Y29uc3QgY2FsbE5vdyA9IGltbWVkaWF0ZSAmJiAhdGltZW91dDtcblxuXHRcdGlmICh0aW1lb3V0ICE9PSBudWxsKSB7XG5cdFx0XHRjbGVhclRpbWVvdXQodGltZW91dCk7XG5cdFx0fVxuXG5cdFx0dGltZW91dCA9IHNldFRpbWVvdXQobGF0ZXIsIHdhaXQpO1xuXG5cdFx0aWYgKGNhbGxOb3cpIGZ1bmMoLi4uYXJncyk7XG5cdH0pIGFzIFQ7XG59XG5cbi8vIEFwcCBtb2NrXG5leHBvcnQgY29uc3QgQXBwID0gdmkuZm4oKTtcblxuLy8gTW9jayBpbnRlcmZhY2VzIGZvciBUeXBlU2NyaXB0XG5leHBvcnQgaW50ZXJmYWNlIE1vY2tBcHAge1xuXHRmaWxlTWFuYWdlcjoge1xuXHRcdHByb2Nlc3NGcm9udE1hdHRlcjogUmV0dXJuVHlwZTx0eXBlb2YgdmkuZm4+O1xuXHR9O1xuXHRtZXRhZGF0YUNhY2hlOiB7XG5cdFx0Z2V0RmlsZUNhY2hlOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdH07XG5cdHZhdWx0OiB7XG5cdFx0Z2V0QWJzdHJhY3RGaWxlQnlQYXRoOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0b246IFJldHVyblR5cGU8dHlwZW9mIHZpLmZuPjtcblx0XHRyZWFkOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0bW9kaWZ5OiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0Y3JlYXRlOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0ZGVsZXRlOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0cmVuYW1lOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0Z2V0RmlsZXM6IFJldHVyblR5cGU8dHlwZW9mIHZpLmZuPjtcblx0XHRnZXRNYXJrZG93bkZpbGVzOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdFx0Z2V0Rm9sZGVyQnlQYXRoOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj47XG5cdH07XG5cdHdvcmtzcGFjZToge1xuXHRcdGdldEFjdGl2ZUZpbGU6IFJldHVyblR5cGU8dHlwZW9mIHZpLmZuPjtcblx0XHRvbjogUmV0dXJuVHlwZTx0eXBlb2YgdmkuZm4+O1xuXHR9O1xufVxuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgZnVsbHkgbW9ja2VkIGFwcFxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tBcHAoKTogTW9ja0FwcCB7XG5cdHJldHVybiB7XG5cdFx0ZmlsZU1hbmFnZXI6IHtcblx0XHRcdHByb2Nlc3NGcm9udE1hdHRlcjogdmkuZm4oKSxcblx0XHR9LFxuXHRcdG1ldGFkYXRhQ2FjaGU6IHtcblx0XHRcdGdldEZpbGVDYWNoZTogdmkuZm4oKSxcblx0XHR9LFxuXHRcdHZhdWx0OiB7XG5cdFx0XHRnZXRBYnN0cmFjdEZpbGVCeVBhdGg6IHZpLmZuKCksXG5cdFx0XHRvbjogdmkuZm4oKSxcblx0XHRcdHJlYWQ6IHZpLmZuKCksXG5cdFx0XHRtb2RpZnk6IHZpLmZuKCksXG5cdFx0XHRjcmVhdGU6IHZpLmZuKCksXG5cdFx0XHRkZWxldGU6IHZpLmZuKCksXG5cdFx0XHRyZW5hbWU6IHZpLmZuKCksXG5cdFx0XHRnZXRGaWxlczogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUoW10pLFxuXHRcdFx0Z2V0TWFya2Rvd25GaWxlczogdmkuZm4oKS5tb2NrUmV0dXJuVmFsdWUoW10pLFxuXHRcdFx0Z2V0Rm9sZGVyQnlQYXRoOiB2aS5mbigpLFxuXHRcdH0sXG5cdFx0d29ya3NwYWNlOiB7XG5cdFx0XHRnZXRBY3RpdmVGaWxlOiB2aS5mbigpLFxuXHRcdFx0b246IHZpLmZuKCksXG5cdFx0fSxcblx0fTtcbn1cblxuLy8gSGVscGVyIHRvIGNyZWF0ZSBtb2NrIFRGaWxlIGluc3RhbmNlc1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1vY2tGaWxlKFxuXHRwYXRoOiBzdHJpbmcsXG5cdG9wdGlvbnM/OiB7XG5cdFx0YmFzZW5hbWU/OiBzdHJpbmc7XG5cdFx0cGFyZW50UGF0aD86IHN0cmluZztcblx0XHRleHRlbnNpb24/OiBzdHJpbmc7XG5cdH1cbik6IFRGaWxlIHtcblx0Y29uc3QgZmlsZSA9IG5ldyBURmlsZShwYXRoLCBvcHRpb25zPy5wYXJlbnRQYXRoKTtcblx0aWYgKG9wdGlvbnM/LmJhc2VuYW1lKSB7XG5cdFx0ZmlsZS5iYXNlbmFtZSA9IG9wdGlvbnMuYmFzZW5hbWU7XG5cdH1cblx0aWYgKG9wdGlvbnM/LmV4dGVuc2lvbikge1xuXHRcdGZpbGUuZXh0ZW5zaW9uID0gb3B0aW9ucy5leHRlbnNpb247XG5cdH1cblx0cmV0dXJuIGZpbGU7XG59XG5cbi8vIEhlbHBlciB0byBjcmVhdGUgbW9jayBmaWxlIGNhY2hlXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja0ZpbGVDYWNoZShmcm9udG1hdHRlcj86IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcblx0cmV0dXJuIHtcblx0XHRmcm9udG1hdHRlcjogZnJvbnRtYXR0ZXIgfHwge30sXG5cdFx0ZnJvbnRtYXR0ZXJQb3NpdGlvbjogZnJvbnRtYXR0ZXIgPyB7IHN0YXJ0OiB7IGxpbmU6IDAgfSwgZW5kOiB7IGxpbmU6IDMgfSB9IDogbnVsbCxcblx0XHRzZWN0aW9uczogW10sXG5cdFx0aGVhZGluZ3M6IFtdLFxuXHRcdGxpbmtzOiBbXSxcblx0XHRlbWJlZHM6IFtdLFxuXHRcdHRhZ3M6IFtdLFxuXHRcdGxpc3RJdGVtczogW10sXG5cdH07XG59XG4iXX0=
@@ -1,14 +0,0 @@
1
- export declare const mockFileOperations: {
2
- arraysEqual: import("vitest").Mock<(...args: any[]) => any>;
3
- normalizeArray: import("vitest").Mock<(...args: any[]) => any>;
4
- createFileLink: import("vitest").Mock<(...args: any[]) => any>;
5
- };
6
- export declare const mockLinkParser: {
7
- extractFilePathFromLink: import("vitest").Mock<(...args: any[]) => any>;
8
- };
9
- export declare function setupDefaultMockImplementations(): void;
10
- export declare function resetAllMocks(): void;
11
- export declare function setupMockImplementation(mockName: keyof typeof mockFileOperations | keyof typeof mockLinkParser, implementation: (...args: any[]) => any): void;
12
- export declare function setupMockReturnValue(mockName: keyof typeof mockFileOperations | keyof typeof mockLinkParser, value: any): void;
13
- export declare function verifyMockCalls(mockName: keyof typeof mockFileOperations | keyof typeof mockLinkParser, expectedCalls: any[][]): void;
14
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/testing/mocks/utils.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAGF,eAAO,MAAM,cAAc;;CAE1B,CAAC;AAGF,wBAAgB,+BAA+B,SA+C9C;AAGD,wBAAgB,aAAa,SAO5B;AAGD,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,MAAM,OAAO,kBAAkB,GAAG,MAAM,OAAO,cAAc,EACvE,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,QAOvC;AAGD,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,MAAM,OAAO,kBAAkB,GAAG,MAAM,OAAO,cAAc,EACvE,KAAK,EAAE,GAAG,QAOV;AAGD,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,OAAO,kBAAkB,GAAG,MAAM,OAAO,cAAc,EACvE,aAAa,EAAE,GAAG,EAAE,EAAE,QAWtB"}
@@ -1,85 +0,0 @@
1
- import { expect, vi } from "vitest";
2
- // File operations mocks
3
- export const mockFileOperations = {
4
- arraysEqual: vi.fn(),
5
- normalizeArray: vi.fn(),
6
- createFileLink: vi.fn(),
7
- };
8
- // Link parser mocks
9
- export const mockLinkParser = {
10
- extractFilePathFromLink: vi.fn(),
11
- };
12
- // Default mock implementations that match the actual behavior
13
- export function setupDefaultMockImplementations() {
14
- // Set up file operations mocks
15
- mockFileOperations.normalizeArray.mockImplementation((arr) => Array.isArray(arr) ? arr : arr ? [arr] : []);
16
- mockFileOperations.arraysEqual.mockImplementation((a, b) => JSON.stringify(a) === JSON.stringify(b));
17
- mockFileOperations.createFileLink.mockImplementation((file) => {
18
- var _a, _b, _c;
19
- if (!file)
20
- return "[[Unknown File]]";
21
- const basename = file.basename ||
22
- ((_b = (_a = file.path) === null || _a === void 0 ? void 0 : _a.split("/").pop()) === null || _b === void 0 ? void 0 : _b.replace(/\.[^/.]+$/, "")) ||
23
- "";
24
- const parentPath = (_c = file.parent) === null || _c === void 0 ? void 0 : _c.path;
25
- if (!parentPath || parentPath === "/" || parentPath === "") {
26
- return `[[${basename}]]`;
27
- }
28
- return `[[${parentPath}/${basename}|${basename}]]`;
29
- });
30
- // Set up link parser mocks
31
- mockLinkParser.extractFilePathFromLink.mockImplementation((link) => {
32
- if (!link || typeof link !== "string")
33
- return null;
34
- // Handle text that contains a link
35
- const linkMatch = link.match(/\[\[([^\]]+)\]\]/);
36
- if (linkMatch) {
37
- const content = linkMatch[1];
38
- // Remove display name if present
39
- const filePart = content.split("|")[0].trim();
40
- if (!filePart)
41
- return null;
42
- // Add .md extension if not present
43
- return filePart.endsWith(".md") ? filePart : `${filePart}.md`;
44
- }
45
- return null;
46
- });
47
- }
48
- // Reset all mocks
49
- export function resetAllMocks() {
50
- Object.values(mockFileOperations).forEach((mock) => {
51
- mock.mockReset();
52
- });
53
- Object.values(mockLinkParser).forEach((mock) => {
54
- mock.mockReset();
55
- });
56
- }
57
- // Helper to setup mocks with specific implementations
58
- export function setupMockImplementation(mockName, implementation) {
59
- if (mockName in mockFileOperations) {
60
- mockFileOperations[mockName].mockImplementation(implementation);
61
- }
62
- else if (mockName in mockLinkParser) {
63
- mockLinkParser[mockName].mockImplementation(implementation);
64
- }
65
- }
66
- // Helper to setup mock return values
67
- export function setupMockReturnValue(mockName, value) {
68
- if (mockName in mockFileOperations) {
69
- mockFileOperations[mockName].mockReturnValue(value);
70
- }
71
- else if (mockName in mockLinkParser) {
72
- mockLinkParser[mockName].mockReturnValue(value);
73
- }
74
- }
75
- // Helper to verify mock calls
76
- export function verifyMockCalls(mockName, expectedCalls) {
77
- const mock = mockName in mockFileOperations
78
- ? mockFileOperations[mockName]
79
- : mockLinkParser[mockName];
80
- expect(mock).toHaveBeenCalledTimes(expectedCalls.length);
81
- expectedCalls.forEach((args, index) => {
82
- expect(mock).toHaveBeenNthCalledWith(index + 1, ...args);
83
- });
84
- }
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy9tb2Nrcy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVwQyx3QkFBd0I7QUFDeEIsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDakMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEIsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkIsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Q0FDdkIsQ0FBQztBQUVGLG9CQUFvQjtBQUNwQixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDN0IsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtDQUNoQyxDQUFDO0FBRUYsOERBQThEO0FBQzlELE1BQU0sVUFBVSwrQkFBK0I7SUFDOUMsK0JBQStCO0lBQy9CLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQzVELEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzNDLENBQUM7SUFFRixrQkFBa0IsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQ2hELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUNqRCxDQUFDO0lBRUYsa0JBQWtCLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O1FBQzdELElBQUksQ0FBQyxJ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Q0FBQyxRQUFRLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztBQUNGLENBQUM7QUFFRCw4QkFBOEI7QUFDOUIsTUFBTSxVQUFVLGVBQWUsQ0FDOUIsUUFBdUUsRUFDdkUsYUFBc0I7SUFFdEIsTUFBTSxJQUFJLEdBQ1QsUUFBUSxJQUFJLGtCQUFrQjtRQUM3QixDQUFDLENBQUUsa0JBQTBCLENBQUMsUUFBUSxDQUFDO1FBQ3ZDLENBQUMsQ0FBRSxjQUFzQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsdUJBQXVCLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4cGVjdCwgdmkgfSBmcm9tIFwidml0ZXN0XCI7XG5cbi8vIEZpbGUgb3BlcmF0aW9ucyBtb2Nrc1xuZXhwb3J0IGNvbnN0IG1vY2tGaWxlT3BlcmF0aW9ucyA9IHtcblx0YXJyYXlzRXF1YWw6IHZpLmZuKCksXG5cdG5vcm1hbGl6ZUFycmF5OiB2aS5mbigpLFxuXHRjcmVhdGVGaWxlTGluazogdmkuZm4oKSxcbn07XG5cbi8vIExpbmsgcGFyc2VyIG1vY2tzXG5leHBvcnQgY29uc3QgbW9ja0xpbmtQYXJzZXIgPSB7XG5cdGV4dHJhY3RGaWxlUGF0aEZyb21MaW5rOiB2aS5mbigpLFxufTtcblxuLy8gRGVmYXVsdCBtb2NrIGltcGxlbWVudGF0aW9ucyB0aGF0IG1hdGNoIHRoZSBhY3R1YWwgYmVoYXZpb3JcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cERlZmF1bHRNb2NrSW1wbGVtZW50YXRpb25zKCkge1xuXHQvLyBTZXQgdXAgZmlsZSBvcGVyYXRpb25zIG1vY2tzXG5cdG1vY2tGaWxlT3BlcmF0aW9ucy5ub3JtYWxpemVBcnJheS5tb2NrSW1wbGVtZW50YXRpb24oKGFycikgPT5cblx0XHRBcnJheS5pc0FycmF5KGFycikgPyBhcnIgOiBhcnIgPyBbYXJyXSA6IFtdXG5cdCk7XG5cblx0bW9ja0ZpbGVPcGVyYXRpb25zLmFycmF5c0VxdWFsLm1vY2tJbXBsZW1lbnRhdGlvbihcblx0XHQoYSwgYikgPT4gSlNPTi5zdHJpbmdpZnkoYSkgPT09IEpTT04uc3RyaW5naWZ5KGIpXG5cdCk7XG5cblx0bW9ja0ZpbGVPcGVyYXRpb25zLmNyZWF0ZUZpbGVMaW5rLm1vY2tJbXBsZW1lbnRhdGlvbigoZmlsZSkgPT4ge1xuXHRcdGlmICghZmlsZSkgcmV0dXJuIFwiW1tVbmtub3duIEZpbGVdXVwiO1xuXG5cdFx0Y29uc3QgYmFzZW5hbWUgPVxuXHRcdFx0ZmlsZS5iYXNlbmFtZSB8fFxuXHRcdFx0ZmlsZS5wYXRoXG5cdFx0XHRcdD8uc3BsaXQoXCIvXCIpXG5cdFx0XHRcdC5wb3AoKVxuXHRcdFx0XHQ/LnJlcGxhY2UoL1xcLlteLy5dKyQvLCBcIlwiKSB8fFxuXHRcdFx0XCJcIjtcblx0XHRjb25zdCBwYXJlbnRQYXRoID0gZmlsZS5wYXJlbnQ/LnBhdGg7XG5cblx0XHRpZiAoIXBhcmVudFBhdGggfHwgcGFyZW50UGF0aCA9PT0gXCIvXCIgfHwgcGFyZW50UGF0aCA9PT0gXCJcIikge1xuXHRcdFx0cmV0dXJuIGBbWyR7YmFzZW5hbWV9XV1gO1xuXHRcdH1cblxuXHRcdHJldHVybiBgW1ske3BhcmVudFBhdGh9LyR7YmFzZW5hbWV9fCR7YmFzZW5hbWV9XV1gO1xuXHR9KTtcblxuXHQvLyBTZXQgdXAgbGluayBwYXJzZXIgbW9ja3Ncblx0bW9ja0xpbmtQYXJzZXIuZXh0cmFjdEZpbGVQYXRoRnJvbUxpbmsubW9ja0ltcGxlbWVudGF0aW9uKChsaW5rKSA9PiB7XG5cdFx0aWYgKCFsaW5rIHx8IHR5cGVvZiBsaW5rICE9PSBcInN0cmluZ1wiKSByZXR1cm4gbnVsbDtcblxuXHRcdC8vIEhhbmRsZSB0ZXh0IHRoYXQgY29udGFpbnMgYSBsaW5rXG5cdFx0Y29uc3QgbGlua01hdGNoID0gbGluay5tYXRjaCgvXFxbXFxbKFteXFxdXSspXFxdXFxdLyk7XG5cdFx0aWYgKGxpbmtNYXRjaCkge1xuXHRcdFx0Y29uc3QgY29udGVudCA9IGxpbmtNYXRjaFsxXTtcblx0XHRcdC8vIFJlbW92ZSBkaXNwbGF5IG5hbWUgaWYgcHJlc2VudFxuXHRcdFx0Y29uc3QgZmlsZVBhcnQgPSBjb250ZW50LnNwbGl0KFwifFwiKVswXS50cmltKCk7XG5cdFx0XHRpZiAoIWZpbGVQYXJ0KSByZXR1cm4gbnVsbDtcblxuXHRcdFx0Ly8gQWRkIC5tZCBleHRlbnNpb24gaWYgbm90IHByZXNlbnRcblx0XHRcdHJldHVybiBmaWxlUGFydC5lbmRzV2l0aChcIi5tZFwiKSA/IGZpbGVQYXJ0IDogYCR7ZmlsZVBhcnR9Lm1kYDtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fSk7XG59XG5cbi8vIFJlc2V0IGFsbCBtb2Nrc1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2V0QWxsTW9ja3MoKSB7XG5cdE9iamVjdC52YWx1ZXMobW9ja0ZpbGVPcGVyYXRpb25zKS5mb3JFYWNoKChtb2NrKSA9PiB7XG5cdFx0bW9jay5tb2NrUmVzZXQoKTtcblx0fSk7XG5cdE9iamVjdC52YWx1ZXMobW9ja0xpbmtQYXJzZXIpLmZvckVhY2goKG1vY2spID0+IHtcblx0XHRtb2NrLm1vY2tSZXNldCgpO1xuXHR9KTtcbn1cblxuLy8gSGVscGVyIHRvIHNldHVwIG1vY2tzIHdpdGggc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBNb2NrSW1wbGVtZW50YXRpb24oXG5cdG1vY2tOYW1lOiBrZXlvZiB0eXBlb2YgbW9ja0ZpbGVPcGVyYXRpb25zIHwga2V5b2YgdHlwZW9mIG1vY2tMaW5rUGFyc2VyLFxuXHRpbXBsZW1lbnRhdGlvbjogKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnlcbikge1xuXHRpZiAobW9ja05hbWUgaW4gbW9ja0ZpbGVPcGVyYXRpb25zKSB7XG5cdFx0KG1vY2tGaWxlT3BlcmF0aW9ucyBhcyBhbnkpW21vY2tOYW1lXS5tb2NrSW1wbGVtZW50YXRpb24oaW1wbGVtZW50YXRpb24pO1xuXHR9IGVsc2UgaWYgKG1vY2tOYW1lIGluIG1vY2tMaW5rUGFyc2VyKSB7XG5cdFx0KG1vY2tMaW5rUGFyc2VyIGFzIGFueSlbbW9ja05hbWVdLm1vY2tJbXBsZW1lbnRhdGlvbihpbXBsZW1lbnRhdGlvbik7XG5cdH1cbn1cblxuLy8gSGVscGVyIHRvIHNldHVwIG1vY2sgcmV0dXJuIHZhbHVlc1xuZXhwb3J0IGZ1bmN0aW9uIHNldHVwTW9ja1JldHVyblZhbHVlKFxuXHRtb2NrTmFtZToga2V5b2YgdHlwZW9mIG1vY2tGaWxlT3BlcmF0aW9ucyB8IGtleW9mIHR5cGVvZiBtb2NrTGlua1BhcnNlcixcblx0dmFsdWU6IGFueVxuKSB7XG5cdGlmIChtb2NrTmFtZSBpbiBtb2NrRmlsZU9wZXJhdGlvbnMpIHtcblx0XHQobW9ja0ZpbGVPcGVyYXRpb25zIGFzIGFueSlbbW9ja05hbWVdLm1vY2tSZXR1cm5WYWx1ZSh2YWx1ZSk7XG5cdH0gZWxzZSBpZiAobW9ja05hbWUgaW4gbW9ja0xpbmtQYXJzZXIpIHtcblx0XHQobW9ja0xpbmtQYXJzZXIgYXMgYW55KVttb2NrTmFtZV0ubW9ja1JldHVyblZhbHVlKHZhbHVlKTtcblx0fVxufVxuXG4vLyBIZWxwZXIgdG8gdmVyaWZ5IG1vY2sgY2FsbHNcbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlNb2NrQ2FsbHMoXG5cdG1vY2tOYW1lOiBrZXlvZiB0eXBlb2YgbW9ja0ZpbGVPcGVyYXRpb25zIHwga2V5b2YgdHlwZW9mIG1vY2tMaW5rUGFyc2VyLFxuXHRleHBlY3RlZENhbGxzOiBhbnlbXVtdXG4pIHtcblx0Y29uc3QgbW9jayA9XG5cdFx0bW9ja05hbWUgaW4gbW9ja0ZpbGVPcGVyYXRpb25zXG5cdFx0XHQ/IChtb2NrRmlsZU9wZXJhdGlvbnMgYXMgYW55KVttb2NrTmFtZV1cblx0XHRcdDogKG1vY2tMaW5rUGFyc2VyIGFzIGFueSlbbW9ja05hbWVdO1xuXG5cdGV4cGVjdChtb2NrKS50b0hhdmVCZWVuQ2FsbGVkVGltZXMoZXhwZWN0ZWRDYWxscy5sZW5ndGgpO1xuXHRleHBlY3RlZENhbGxzLmZvckVhY2goKGFyZ3MsIGluZGV4KSA9PiB7XG5cdFx0ZXhwZWN0KG1vY2spLnRvSGF2ZUJlZW5OdGhDYWxsZWRXaXRoKGluZGV4ICsgMSwgLi4uYXJncyk7XG5cdH0pO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export declare function setupTestEnvironment(): () => void;
2
- //# sourceMappingURL=setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/testing/setup.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,eAcnC"}
@@ -1,18 +0,0 @@
1
- import { vi } from "vitest";
2
- import { mockFileOperations, mockLinkParser } from "./mocks/utils";
3
- // Global test setup that can be imported once per test file
4
- export function setupTestEnvironment() {
5
- // Mock the utils modules
6
- vi.mock("@obsidian-plugins/utils/file-operations", () => mockFileOperations);
7
- vi.mock("@obsidian-plugins/utils/link-parser", () => mockLinkParser);
8
- // Mock any plugin-specific components
9
- vi.mock("../src/components/settings-tab", () => ({
10
- TreePropertiesManagerSettingTab: class MockSettingTab {
11
- },
12
- }));
13
- // Return cleanup function
14
- return () => {
15
- vi.clearAllMocks();
16
- };
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9zZXR1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsNERBQTREO0FBQzVELE1BQU0sVUFBVSxvQkFBb0I7SUFDbkMseUJBQXlCO0lBQ3pCLEVBQUUsQ0FBQyxJQUFJLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM3RSxFQUFFLENBQUMsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBRXJFLHNDQUFzQztJQUN0QyxFQUFFLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDaEQsK0JBQStCLEVBQUUsTUFBTSxjQUFjO1NBQUc7S0FDeEQsQ0FBQyxDQUFDLENBQUM7SUFFSiwwQkFBMEI7SUFDMUIsT0FBTyxHQUFHLEVBQUU7UUFDWCxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHZpIH0gZnJvbSBcInZpdGVzdFwiO1xuaW1wb3J0IHsgbW9ja0ZpbGVPcGVyYXRpb25zLCBtb2NrTGlua1BhcnNlciB9IGZyb20gXCIuL21vY2tzL3V0aWxzXCI7XG5cbi8vIEdsb2JhbCB0ZXN0IHNldHVwIHRoYXQgY2FuIGJlIGltcG9ydGVkIG9uY2UgcGVyIHRlc3QgZmlsZVxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwVGVzdEVudmlyb25tZW50KCkge1xuXHQvLyBNb2NrIHRoZSB1dGlscyBtb2R1bGVzXG5cdHZpLm1vY2soXCJAb2JzaWRpYW4tcGx1Z2lucy91dGlscy9maWxlLW9wZXJhdGlvbnNcIiwgKCkgPT4gbW9ja0ZpbGVPcGVyYXRpb25zKTtcblx0dmkubW9jayhcIkBvYnNpZGlhbi1wbHVnaW5zL3V0aWxzL2xpbmstcGFyc2VyXCIsICgpID0+IG1vY2tMaW5rUGFyc2VyKTtcblxuXHQvLyBNb2NrIGFueSBwbHVnaW4tc3BlY2lmaWMgY29tcG9uZW50c1xuXHR2aS5tb2NrKFwiLi4vc3JjL2NvbXBvbmVudHMvc2V0dGluZ3MtdGFiXCIsICgpID0+ICh7XG5cdFx0VHJlZVByb3BlcnRpZXNNYW5hZ2VyU2V0dGluZ1RhYjogY2xhc3MgTW9ja1NldHRpbmdUYWIge30sXG5cdH0pKTtcblxuXHQvLyBSZXR1cm4gY2xlYW51cCBmdW5jdGlvblxuXHRyZXR1cm4gKCkgPT4ge1xuXHRcdHZpLmNsZWFyQWxsTW9ja3MoKTtcblx0fTtcbn1cbiJdfQ==