obsidian-integration-testing 1.0.1 → 1.1.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.
- package/README.md +13 -11
- package/dist/lib/cjs/index.cjs +1 -1
- package/dist/lib/cjs/index.d.cts +0 -1
- package/dist/lib/cjs/integration-global-setup.cjs +6 -6
- package/dist/lib/cjs/integration-global-setup.d.cts +5 -4
- package/dist/lib/cjs/noop.cjs +34 -0
- package/dist/lib/cjs/noop.d.cts +15 -0
- package/dist/lib/cjs/temp-vault.cjs +22 -13
- package/dist/lib/cjs/temp-vault.d.cts +14 -16
- package/dist/lib/esm/index.d.mts +0 -1
- package/dist/lib/esm/index.mjs +1 -1
- package/dist/lib/esm/integration-global-setup.d.mts +5 -4
- package/dist/lib/esm/integration-global-setup.mjs +5 -5
- package/dist/lib/esm/noop.d.mts +15 -0
- package/dist/lib/esm/noop.mjs +9 -0
- package/dist/lib/esm/temp-vault.d.mts +14 -16
- package/dist/lib/esm/temp-vault.mjs +22 -13
- package/dist/obsidian-integration-testing-1.1.0.tgz +0 -0
- package/package.json +2 -6
- package/dist/obsidian-integration-testing-1.0.1.tgz +0 -0
- package/patches/@vitest+runner+4.1.0.patch +0 -22
- package/scripts/postinstall.mjs +0 -29
package/README.md
CHANGED
|
@@ -144,11 +144,11 @@ interface Context {
|
|
|
144
144
|
file: TFile;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
const vault = new TempVault(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
147
|
+
const vault = new TempVault();
|
|
148
|
+
|
|
149
|
+
vault.populate({
|
|
150
|
+
'note.md': '# Hello',
|
|
151
|
+
'folder/nested.md': 'nested content',
|
|
152
152
|
});
|
|
153
153
|
|
|
154
154
|
const contextId = new ContextId<Context>();
|
|
@@ -193,25 +193,27 @@ it('should access the TFile from context', async () => {
|
|
|
193
193
|
});
|
|
194
194
|
```
|
|
195
195
|
|
|
196
|
+
Both `TempVault` and `ContextId` implement `AsyncDisposable`, so you can use `await using` for automatic cleanup.
|
|
197
|
+
|
|
196
198
|
Parent directories are created automatically. To create an empty folder, use a path ending with `/` and an empty string as content.
|
|
197
199
|
|
|
198
200
|
### Test your plugin
|
|
199
201
|
|
|
200
|
-
Use `
|
|
202
|
+
Use `getTempVault()` to get the temporary vault created by the global setup:
|
|
201
203
|
|
|
202
204
|
```ts
|
|
203
205
|
import { describe, expect, it } from 'vitest';
|
|
204
206
|
import { evalInObsidian } from 'obsidian-integration-testing';
|
|
205
|
-
import {
|
|
207
|
+
import { getTempVault } from 'obsidian-integration-testing/obsidian-plugin-vitest-setup';
|
|
206
208
|
|
|
207
209
|
describe('my-plugin', () => {
|
|
208
|
-
const
|
|
210
|
+
const vault = getTempVault();
|
|
209
211
|
|
|
210
212
|
it('should be enabled', async () => {
|
|
211
213
|
const isEnabled = await evalInObsidian({
|
|
212
214
|
args: { pluginId: 'my-plugin' },
|
|
213
215
|
fn: ({ app, pluginId }) => app.plugins.enabledPlugins.has(pluginId),
|
|
214
|
-
vaultPath
|
|
216
|
+
vaultPath: vault.path
|
|
215
217
|
});
|
|
216
218
|
expect(isEnabled).toBe(true);
|
|
217
219
|
});
|
|
@@ -221,12 +223,12 @@ describe('my-plugin', () => {
|
|
|
221
223
|
fn: async ({ app }) => {
|
|
222
224
|
await app.vault.create('test.md', '# Hello');
|
|
223
225
|
},
|
|
224
|
-
vaultPath
|
|
226
|
+
vaultPath: vault.path
|
|
225
227
|
});
|
|
226
228
|
|
|
227
229
|
const content = await evalInObsidian({
|
|
228
230
|
fn: ({ app }) => app.vault.adapter.read('test.md'),
|
|
229
|
-
vaultPath
|
|
231
|
+
vaultPath: vault.path
|
|
230
232
|
});
|
|
231
233
|
expect(content).toBe('# Hello');
|
|
232
234
|
});
|
package/dist/lib/cjs/index.cjs
CHANGED
|
@@ -37,4 +37,4 @@ var import_vault_registry = require("./vault-registry.cjs");
|
|
|
37
37
|
registerVault,
|
|
38
38
|
unregisterVault
|
|
39
39
|
});
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGludGVncmF0aW9uIHRlc3RpbmcgbW9kdWxlLlxuICovXG5cbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5janMnO1xuZXhwb3J0IHR5cGUgeyBFdmFsSW5PYnNpZGlhblBhcmFtcyB9IGZyb20gJy4vb2JzaWRpYW4tY2xpLmNqcyc7XG5leHBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vb2JzaWRpYW4tY2xpLmNqcyc7XG5leHBvcnQgeyBUZW1wVmF1bHQgfSBmcm9tICcuL3RlbXAtdmF1bHQuY2pzJztcbmV4cG9ydCB7XG4gIHJlZ2lzdGVyVmF1bHQsXG4gIHVucmVnaXN0ZXJWYXVsdFxufSBmcm9tICcuL3ZhdWx0LXJlZ2lzdHJ5LmNqcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNQSx3QkFBMEI7QUFFMUIsMEJBQStCO0FBQy9CLHdCQUEwQjtBQUMxQiw0QkFHTzsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/lib/cjs/index.d.cts
CHANGED
|
@@ -6,6 +6,5 @@
|
|
|
6
6
|
export { ContextId } from './context-id.cjs';
|
|
7
7
|
export type { EvalInObsidianParams } from './obsidian-cli.cjs';
|
|
8
8
|
export { evalInObsidian } from './obsidian-cli.cjs';
|
|
9
|
-
export type { TempVaultParams } from './temp-vault.cjs';
|
|
10
9
|
export { TempVault } from './temp-vault.cjs';
|
|
11
10
|
export { registerVault, unregisterVault } from './vault-registry.cjs';
|
|
@@ -18,7 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var integration_global_setup_exports = {};
|
|
20
20
|
__export(integration_global_setup_exports, {
|
|
21
|
-
|
|
21
|
+
getTempVault: () => getTempVault,
|
|
22
22
|
setup: () => setup,
|
|
23
23
|
teardown: () => teardown
|
|
24
24
|
});
|
|
@@ -29,8 +29,8 @@ var import_node_path = require("node:path");
|
|
|
29
29
|
var import_vitest = require("vitest");
|
|
30
30
|
var import_obsidian_cli = require("./obsidian-cli.cjs");
|
|
31
31
|
var import_temp_vault = require("./temp-vault.cjs");
|
|
32
|
-
function
|
|
33
|
-
return (0, import_vitest.inject)("
|
|
32
|
+
function getTempVault() {
|
|
33
|
+
return (0, import_vitest.inject)("tempVault");
|
|
34
34
|
}
|
|
35
35
|
const DIST_DEV = "dist/dev";
|
|
36
36
|
const DIST_BUILD = "dist/build";
|
|
@@ -62,7 +62,7 @@ async function setup(project) {
|
|
|
62
62
|
shouldSkipPreflightChecks: true,
|
|
63
63
|
vaultPath: tempVault.path
|
|
64
64
|
});
|
|
65
|
-
project.provide("
|
|
65
|
+
project.provide("tempVault", tempVault);
|
|
66
66
|
}
|
|
67
67
|
async function teardown() {
|
|
68
68
|
await tempVault.dispose();
|
|
@@ -100,8 +100,8 @@ async function resolveDistPath(projectRoot) {
|
|
|
100
100
|
}
|
|
101
101
|
// Annotate the CommonJS export names for ESM import in node:
|
|
102
102
|
0 && (module.exports = {
|
|
103
|
-
|
|
103
|
+
getTempVault,
|
|
104
104
|
setup,
|
|
105
105
|
teardown
|
|
106
106
|
});
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLWdsb2JhbC1zZXR1cC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB0aGUgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMgZm9yIGludGVncmF0aW9uIHRlc3RzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk1hbmlmZXN0IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBUZXN0UHJvamVjdCB9IGZyb20gJ3ZpdGVzdC9ub2RlJztcblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgc3RhdCxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vb2JzaWRpYW4tY2xpLmNqcyc7XG5pbXBvcnQgeyBUZW1wVmF1bHQgfSBmcm9tICcuL3RlbXAtdmF1bHQuY2pzJztcblxuZGVjbGFyZSBtb2R1bGUgJ3ZpdGVzdCcge1xuICBpbnRlcmZhY2UgUHJvdmlkZWRDb250ZXh0IHtcbiAgICB0ZW1wVmF1bHQ6IFRlbXBWYXVsdDtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRlbXBvcmFyeSB2YXVsdCBwcm92aWRlZCBieSB0aGUgZ2xvYmFsIHNldHVwLlxuICpcbiAqIEByZXR1cm5zIFRoZSB0ZW1wb3JhcnkgdmF1bHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wVmF1bHQoKTogVGVtcFZhdWx0IHtcbiAgcmV0dXJuIGluamVjdCgndGVtcFZhdWx0Jyk7XG59XG5cbmNvbnN0IERJU1RfREVWID0gJ2Rpc3QvZGV2JztcbmNvbnN0IERJU1RfQlVJTEQgPSAnZGlzdC9idWlsZCc7XG5jb25zdCBNQUlOX0pTID0gJ21haW4uanMnO1xuY29uc3QgT0JTSURJQU5fQ09ORklHX0RJUiA9ICcub2JzaWRpYW4nO1xuY29uc3QgUExVR0lOU19ESVIgPSAncGx1Z2lucyc7XG5jb25zdCBDT01NVU5JVFlfUExVR0lOU19KU09OID0gJ2NvbW11bml0eS1wbHVnaW5zLmpzb24nO1xuXG5sZXQgdGVtcFZhdWx0OiBUZW1wVmF1bHQ7XG5cbi8qKlxuICogVml0ZXN0IGdsb2JhbCBzZXR1cCBmdW5jdGlvbi5cbiAqXG4gKiBDb3BpZXMgdGhlIGJ1aWx0IHBsdWdpbiBpbnRvIGEgdGVtcG9yYXJ5IHZhdWx0LCBlbmFibGVzIGl0IHZpYSB0aGUgT2JzaWRpYW4gQ0xJLFxuICogYW5kIHByb3ZpZGVzIGB0ZW1wVmF1bHRQYXRoYCB0byB0ZXN0cy5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdCAtIFRoZSBWaXRlc3QgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb2plY3RSb290ID0gZmluZFByb2plY3RSb290KCk7XG4gIGNvbnN0IGRpc3RQYXRoID0gYXdhaXQgcmVzb2x2ZURpc3RQYXRoKHByb2plY3RSb290KTtcbiAgY29uc3QgbWFuaWZlc3RKc29uID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShqb2luKGRpc3RQYXRoLCAnbWFuaWZlc3QuanNvbicpLCAndXRmLTgnKSkgYXMgUGx1Z2luTWFuaWZlc3Q7XG4gIGNvbnN0IHBsdWdpbklkID0gbWFuaWZlc3RKc29uLmlkO1xuXG4gIGNvbnN0IG1haW5KcyA9IGpvaW4oZGlzdFBhdGgsIE1BSU5fSlMpO1xuICBjb25zdCBidWlsZFN0YXQgPSBhd2FpdCBzdGF0KG1haW5Kcyk7XG5cbiAgY29uc29sZS53YXJuKGBVc2luZyAke2Rpc3RQYXRofSAoJHtidWlsZFN0YXQubXRpbWUudG9JU09TdHJpbmcoKX0pLiBJZiBvdXRkYXRlZCwgcmVidWlsZC5gKTtcblxuICB0ZW1wVmF1bHQgPSBuZXcgVGVtcFZhdWx0KCk7XG4gIGNvbnN0IHBsdWdpbkRpciA9IGpvaW4odGVtcFZhdWx0LnBhdGgsIE9CU0lESUFOX0NPTkZJR19ESVIsIFBMVUdJTlNfRElSLCBwbHVnaW5JZCk7XG4gIGF3YWl0IG1rZGlyKHBsdWdpbkRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IGNwKGRpc3RQYXRoLCBwbHVnaW5EaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCB3cml0ZUZpbGUoam9pbih0ZW1wVmF1bHQucGF0aCwgT0JTSURJQU5fQ09ORklHX0RJUiwgQ09NTVVOSVRZX1BMVUdJTlNfSlNPTiksIEpTT04uc3RyaW5naWZ5KFtwbHVnaW5JZF0pKTtcbiAgYXdhaXQgdGVtcFZhdWx0LnJlZ2lzdGVyKCk7XG5cbiAgYXdhaXQgZXZhbEluT2JzaWRpYW4oe1xuICAgIGFyZ3M6IHsgcGx1Z2luSWQgfSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93IC0tIE5vIGFjdHVhbCBzaGFkb3dpbmcgYXMgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGV4dGVybmFsbHkuXG4gICAgZm46IGFzeW5jICh7IGFwcCwgcGx1Z2luSWQgfSkgPT4ge1xuICAgICAgYXdhaXQgYXBwLnBsdWdpbnMuZW5hYmxlUGx1Z2luQW5kU2F2ZShwbHVnaW5JZCk7XG4gICAgfSxcbiAgICBzaG91bGRTa2lwUHJlZmxpZ2h0Q2hlY2tzOiB0cnVlLFxuICAgIHZhdWx0UGF0aDogdGVtcFZhdWx0LnBhdGhcbiAgfSk7XG5cbiAgcHJvamVjdC5wcm92aWRlKCd0ZW1wVmF1bHQnLCB0ZW1wVmF1bHQpO1xufVxuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgdGVhcmRvd24gZnVuY3Rpb24uXG4gKlxuICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVhcmRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHRlbXBWYXVsdC5kaXNwb3NlKCk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIHByb2plY3Qgcm9vdCBieSB3YWxraW5nIHVwIGZyb20gYHByb2Nlc3MuY3dkKClgIGxvb2tpbmcgZm9yIGBwYWNrYWdlLmpzb25gLlxuICpcbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwcm9qZWN0IHJvb3QuXG4gKi9cbmZ1bmN0aW9uIGZpbmRQcm9qZWN0Um9vdCgpOiBzdHJpbmcge1xuICBsZXQgZGlyID0gcHJvY2Vzcy5jd2QoKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvbiAtLSBMb29wIHRlcm1pbmF0ZXMgYXQgZmlsZXN5c3RlbSByb290LlxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgICByZXR1cm4gZGlyO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSBqb2luKGRpciwgJy4uJyk7XG4gICAgaWYgKHBhcmVudCA9PT0gZGlyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHByb2plY3Qgcm9vdCAobm8gcGFja2FnZS5qc29uIGZvdW5kKS4nKTtcbiAgICB9XG4gICAgZGlyID0gcGFyZW50O1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGRpc3QgcGF0aCB0byB1c2UgZm9yIGludGVncmF0aW9uIHRlc3RzLlxuICpcbiAqIFBpY2tzIHdoaWNoZXZlciBvZiBgZGlzdC9kZXZgIGFuZCBgZGlzdC9idWlsZGAgaGFzIGEgbmV3ZXIgYG1haW4uanNgLlxuICogSWYgb25seSBvbmUgZXhpc3RzLCB0aGF0IG9uZSBpcyB1c2VkLiBUaHJvd3MgaWYgbmVpdGhlciBleGlzdHMuXG4gKlxuICogQHBhcmFtIHByb2plY3RSb290IC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHByb2plY3Qgcm9vdC5cbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBjaG9zZW4gZGlzdCBmb2xkZXIuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVEaXN0UGF0aChwcm9qZWN0Um9vdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZGV2UGF0aCA9IGpvaW4ocHJvamVjdFJvb3QsIERJU1RfREVWKTtcbiAgY29uc3QgYnVpbGRQYXRoID0gam9pbihwcm9qZWN0Um9vdCwgRElTVF9CVUlMRCk7XG4gIGNvbnN0IGRldk1haW5KcyA9IGpvaW4oZGV2UGF0aCwgTUFJTl9KUyk7XG4gIGNvbnN0IGJ1aWxkTWFpbkpzID0gam9pbihidWlsZFBhdGgsIE1BSU5fSlMpO1xuICBjb25zdCBkZXZTdGF0ID0gZXhpc3RzU3luYyhkZXZNYWluSnMpID8gYXdhaXQgc3RhdChkZXZNYWluSnMpIDogbnVsbDtcbiAgY29uc3QgYnVpbGRTdGF0ID0gZXhpc3RzU3luYyhidWlsZE1haW5KcykgPyBhd2FpdCBzdGF0KGJ1aWxkTWFpbkpzKSA6IG51bGw7XG5cbiAgaWYgKGRldlN0YXQgJiYgYnVpbGRTdGF0KSB7XG4gICAgcmV0dXJuIGRldlN0YXQubXRpbWUgPiBidWlsZFN0YXQubXRpbWUgPyBkZXZQYXRoIDogYnVpbGRQYXRoO1xuICB9XG5cbiAgaWYgKGRldlN0YXQpIHtcbiAgICByZXR1cm4gZGV2UGF0aDtcbiAgfVxuXG4gIGlmIChidWlsZFN0YXQpIHtcbiAgICByZXR1cm4gYnVpbGRQYXRoO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdObyBidWlsZCBmb3VuZC4gUnVuIGBucG0gcnVuIGJ1aWxkYCBvciBgbnBtIHJ1biBkZXZgIGZpcnN0LicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFXQSxxQkFBMkI7QUFDM0Isc0JBTU87QUFDUCx1QkFBcUI7QUFDckIsb0JBQXVCO0FBRXZCLDBCQUErQjtBQUMvQix3QkFBMEI7QUFhbkIsU0FBUyxlQUEwQjtBQUN4QyxhQUFPLHNCQUFPLFdBQVc7QUFDM0I7QUFFQSxNQUFNLFdBQVc7QUFDakIsTUFBTSxhQUFhO0FBQ25CLE1BQU0sVUFBVTtBQUNoQixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLGNBQWM7QUFDcEIsTUFBTSx5QkFBeUI7QUFFL0IsSUFBSTtBQVVKLGVBQXNCLE1BQU0sU0FBcUM7QUFDL0QsUUFBTSxjQUFjLGdCQUFnQjtBQUNwQyxRQUFNLFdBQVcsTUFBTSxnQkFBZ0IsV0FBVztBQUNsRCxRQUFNLGVBQWUsS0FBSyxNQUFNLFVBQU0sOEJBQVMsdUJBQUssVUFBVSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ3hGLFFBQU0sV0FBVyxhQUFhO0FBRTlCLFFBQU0sYUFBUyx1QkFBSyxVQUFVLE9BQU87QUFDckMsUUFBTSxZQUFZLFVBQU0sc0JBQUssTUFBTTtBQUVuQyxVQUFRLEtBQUssU0FBUyxRQUFRLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQywwQkFBMEI7QUFFMUYsY0FBWSxJQUFJLDRCQUFVO0FBQzFCLFFBQU0sZ0JBQVksdUJBQUssVUFBVSxNQUFNLHFCQUFxQixhQUFhLFFBQVE7QUFDakYsWUFBTSx1QkFBTSxXQUFXLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDMUMsWUFBTSxvQkFBRyxVQUFVLFdBQVcsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUNqRCxZQUFNLCtCQUFVLHVCQUFLLFVBQVUsTUFBTSxxQkFBcUIsc0JBQXNCLEdBQUcsS0FBSyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0csUUFBTSxVQUFVLFNBQVM7QUFFekIsWUFBTSxvQ0FBZTtBQUFBLElBQ25CLE1BQU0sRUFBRSxTQUFTO0FBQUE7QUFBQSxJQUVqQixJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQUFBLFVBQVMsTUFBTTtBQUMvQixZQUFNLElBQUksUUFBUSxvQkFBb0JBLFNBQVE7QUFBQSxJQUNoRDtBQUFBLElBQ0EsMkJBQTJCO0FBQUEsSUFDM0IsV0FBVyxVQUFVO0FBQUEsRUFDdkIsQ0FBQztBQUVELFVBQVEsUUFBUSxhQUFhLFNBQVM7QUFDeEM7QUFPQSxlQUFzQixXQUEwQjtBQUM5QyxRQUFNLFVBQVUsUUFBUTtBQUMxQjtBQU9BLFNBQVMsa0JBQTBCO0FBQ2pDLE1BQUksTUFBTSxRQUFRLElBQUk7QUFHdEIsU0FBTyxNQUFNO0FBQ1gsWUFBSSwrQkFBVyx1QkFBSyxLQUFLLGNBQWMsQ0FBQyxHQUFHO0FBQ3pDLGFBQU87QUFBQSxJQUNUO0FBQ0EsVUFBTSxhQUFTLHVCQUFLLEtBQUssSUFBSTtBQUM3QixRQUFJLFdBQVcsS0FBSztBQUNsQixZQUFNLElBQUksTUFBTSxzREFBc0Q7QUFBQSxJQUN4RTtBQUNBLFVBQU07QUFBQSxFQUNSO0FBQ0Y7QUFXQSxlQUFlLGdCQUFnQixhQUFzQztBQUNuRSxRQUFNLGNBQVUsdUJBQUssYUFBYSxRQUFRO0FBQzFDLFFBQU0sZ0JBQVksdUJBQUssYUFBYSxVQUFVO0FBQzlDLFFBQU0sZ0JBQVksdUJBQUssU0FBUyxPQUFPO0FBQ3ZDLFFBQU0sa0JBQWMsdUJBQUssV0FBVyxPQUFPO0FBQzNDLFFBQU0sY0FBVSwyQkFBVyxTQUFTLElBQUksVUFBTSxzQkFBSyxTQUFTLElBQUk7QUFDaEUsUUFBTSxnQkFBWSwyQkFBVyxXQUFXLElBQUksVUFBTSxzQkFBSyxXQUFXLElBQUk7QUFFdEUsTUFBSSxXQUFXLFdBQVc7QUFDeEIsV0FBTyxRQUFRLFFBQVEsVUFBVSxRQUFRLFVBQVU7QUFBQSxFQUNyRDtBQUVBLE1BQUksU0FBUztBQUNYLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxXQUFXO0FBQ2IsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLElBQUksTUFBTSw2REFBNkQ7QUFDL0U7IiwKICAibmFtZXMiOiBbInBsdWdpbklkIl0KfQo=
|
|
@@ -4,17 +4,18 @@
|
|
|
4
4
|
* Contains the global setup and teardown functions for integration tests.
|
|
5
5
|
*/
|
|
6
6
|
import type { TestProject } from 'vitest/node';
|
|
7
|
+
import { TempVault } from './temp-vault.cjs';
|
|
7
8
|
declare module 'vitest' {
|
|
8
9
|
interface ProvidedContext {
|
|
9
|
-
|
|
10
|
+
tempVault: TempVault;
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
|
-
* Returns the temporary vault
|
|
14
|
+
* Returns the temporary vault provided by the global setup.
|
|
14
15
|
*
|
|
15
|
-
* @returns The
|
|
16
|
+
* @returns The temporary vault.
|
|
16
17
|
*/
|
|
17
|
-
export declare function
|
|
18
|
+
export declare function getTempVault(): TempVault;
|
|
18
19
|
/**
|
|
19
20
|
* Vitest global setup function.
|
|
20
21
|
*
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var noop_exports = {};
|
|
20
|
+
__export(noop_exports, {
|
|
21
|
+
noop: () => noop,
|
|
22
|
+
noopAsync: () => noopAsync
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(noop_exports);
|
|
25
|
+
function noop() {
|
|
26
|
+
}
|
|
27
|
+
async function noopAsync() {
|
|
28
|
+
}
|
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
+
0 && (module.exports = {
|
|
31
|
+
noop,
|
|
32
|
+
noopAsync
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25vb3AudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogTm8tb3AgZnVuY3Rpb25zLlxuICovXG5cbi8qKlxuICogTm8tb3AgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub29wKCk6IHZvaWQge1xuICAvLyBOby1vcFxufVxuXG4vKipcbiAqIE5vLW9wIGFzeW5jIGZ1bmN0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbm9vcEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBOby1vcFxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU08sU0FBUyxPQUFhO0FBRTdCO0FBT0EsZUFBc0IsWUFBMkI7QUFFakQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* No-op functions.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* No-op function.
|
|
8
|
+
*/
|
|
9
|
+
export declare function noop(): void;
|
|
10
|
+
/**
|
|
11
|
+
* No-op async function.
|
|
12
|
+
*
|
|
13
|
+
* @returns A promise that resolves when the function is complete.
|
|
14
|
+
*/
|
|
15
|
+
export declare function noopAsync(): Promise<void>;
|
|
@@ -34,13 +34,29 @@ class TempVault {
|
|
|
34
34
|
*/
|
|
35
35
|
path;
|
|
36
36
|
/**
|
|
37
|
-
* Creates a new temp vault
|
|
37
|
+
* Creates a new temp vault.
|
|
38
38
|
*
|
|
39
|
-
* @param
|
|
39
|
+
* @param path - An explicit vault path. If omitted, a temp directory is created.
|
|
40
40
|
*/
|
|
41
|
-
constructor(
|
|
42
|
-
this.path =
|
|
43
|
-
|
|
41
|
+
constructor(path) {
|
|
42
|
+
this.path = path ?? (0, import_node_fs.mkdtempSync)((0, import_node_path.join)((0, import_node_os.tmpdir)(), "temp-vault-"));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Unregisters the vault from Obsidian and deletes the temp directory.
|
|
46
|
+
*/
|
|
47
|
+
async dispose() {
|
|
48
|
+
await (0, import_vault_registry.unregisterVault)(this.path);
|
|
49
|
+
await retryRm(this.path);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Writes files and folders into the vault directory.
|
|
53
|
+
* Parent directories are created automatically.
|
|
54
|
+
* Paths ending with `/` are treated as empty folders (content must be empty string).
|
|
55
|
+
*
|
|
56
|
+
* @param files - Map of file/folder paths to content.
|
|
57
|
+
*/
|
|
58
|
+
populate(files) {
|
|
59
|
+
for (const [filePath, content] of Object.entries(files)) {
|
|
44
60
|
const fullPath = (0, import_node_path.join)(this.path, filePath);
|
|
45
61
|
if (filePath.endsWith("/")) {
|
|
46
62
|
if (content !== "") {
|
|
@@ -53,13 +69,6 @@ class TempVault {
|
|
|
53
69
|
}
|
|
54
70
|
}
|
|
55
71
|
}
|
|
56
|
-
/**
|
|
57
|
-
* Unregisters the vault from Obsidian and deletes the temp directory.
|
|
58
|
-
*/
|
|
59
|
-
async dispose() {
|
|
60
|
-
await (0, import_vault_registry.unregisterVault)(this.path);
|
|
61
|
-
await retryRm(this.path);
|
|
62
|
-
}
|
|
63
72
|
/**
|
|
64
73
|
* Registers this vault in the running Obsidian instance so the CLI can target it.
|
|
65
74
|
*/
|
|
@@ -93,4 +102,4 @@ async function retryRm(path) {
|
|
|
93
102
|
0 && (module.exports = {
|
|
94
103
|
TempVault
|
|
95
104
|
});
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RlbXAtdmF1bHQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogTWFuYWdlcyB0ZW1wb3JhcnkgdmF1bHQgbGlmZWN5Y2xlIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAqL1xuXG5pbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICB3cml0ZUZpbGVTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgcm0gfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pblxufSBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQge1xuICByZWdpc3RlclZhdWx0LFxuICB1bnJlZ2lzdGVyVmF1bHRcbn0gZnJvbSAnLi92YXVsdC1yZWdpc3RyeS5janMnO1xuXG5jb25zdCBSTV9SRVRSWV9ERUxBWV9NUyA9IDUwMDtcbmNvbnN0IFJNX1JFVFJZX1RJTUVPVVRfTVMgPSAxMDAwMDtcblxuLyoqXG4gKiBBIHRlbXBvcmFyeSBPYnNpZGlhbiB2YXVsdCBmb3IgaW50ZWdyYXRpb24gdGVzdHMuXG4gKlxuICogQ3JlYXRlcyBhIHRlbXAgZGlyZWN0b3J5IGFuZCByZWdpc3RlcnMgaXQgaW4gdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2VcbiAqIHNvIHRoYXQgdGhlIE9ic2lkaWFuIENMSSBjYW4gdGFyZ2V0IGl0IHZpYSBgY3dkYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBWYXVsdCB7XG4gIC8qKlxuICAgKiBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdGVtcG9yYXJ5IHZhdWx0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB0ZW1wIHZhdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIEFuIGV4cGxpY2l0IHZhdWx0IHBhdGguIElmIG9taXR0ZWQsIGEgdGVtcCBkaXJlY3RvcnkgaXMgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXRoPzogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aCA/PyBta2R0ZW1wU3luYyhqb2luKHRtcGRpcigpLCAndGVtcC12YXVsdC0nKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgdGhlIHZhdWx0IGZyb20gT2JzaWRpYW4gYW5kIGRlbGV0ZXMgdGhlIHRlbXAgZGlyZWN0b3J5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdW5yZWdpc3RlclZhdWx0KHRoaXMucGF0aCk7XG4gICAgYXdhaXQgcmV0cnlSbSh0aGlzLnBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBmaWxlcyBhbmQgZm9sZGVycyBpbnRvIHRoZSB2YXVsdCBkaXJlY3RvcnkuXG4gICAqIFBhcmVudCBkaXJlY3RvcmllcyBhcmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LlxuICAgKiBQYXRocyBlbmRpbmcgd2l0aCBgL2AgYXJlIHRyZWF0ZWQgYXMgZW1wdHkgZm9sZGVycyAoY29udGVudCBtdXN0IGJlIGVtcHR5IHN0cmluZykuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlcyAtIE1hcCBvZiBmaWxlL2ZvbGRlciBwYXRocyB0byBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIHBvcHVsYXRlKGZpbGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbZmlsZVBhdGgsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKGZpbGVzKSkge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBqb2luKHRoaXMucGF0aCwgZmlsZVBhdGgpO1xuICAgICAgaWYgKGZpbGVQYXRoLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09ICcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb2xkZXIgcGF0aCBcIiR7ZmlsZVBhdGh9XCIgbXVzdCBoYXZlIGVtcHR5IGNvbnRlbnRgKTtcbiAgICAgICAgfVxuICAgICAgICBta2RpclN5bmMoZnVsbFBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWtkaXJTeW5jKGRpcm5hbWUoZnVsbFBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgd3JpdGVGaWxlU3luYyhmdWxsUGF0aCwgY29udGVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGlzIHZhdWx0IGluIHRoZSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlIHNvIHRoZSBDTEkgY2FuIHRhcmdldCBpdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCByZWdpc3RlclZhdWx0KHRoaXMucGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogQXN5bmMgZGlzcG9zYWJsZSBzdXBwb3J0IGZvciBgYXdhaXQgdXNpbmdgLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB2YXVsdCBpcyBkaXNwb3NlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmllcyBgcm1gIHVudGlsIGl0IHN1Y2NlZWRzIG9yIHRpbWVzIG91dC5cbiAqIE9ic2lkaWFuIG1heSBob2xkIGZpbGUgbG9ja3MgYnJpZWZseSBhZnRlciBhIHdpbmRvdyBpcyBkZXN0cm95ZWQuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGRpcmVjdG9yeSBpcyByZW1vdmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXRyeVJtKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBkZWFkbGluZSA9IERhdGUubm93KCkgKyBSTV9SRVRSWV9USU1FT1VUX01TO1xuICB3aGlsZSAoRGF0ZS5ub3coKSA8IGRlYWRsaW5lKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJtKHBhdGgsIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgUk1fUkVUUllfREVMQVlfTVMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIEZpbmFsIGF0dGVtcHQgXHUyMDE0IGxldCBpdCB0aHJvdy5cbiAgYXdhaXQgcm0ocGF0aCwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU1BLHFCQUlPO0FBQ1Asc0JBQW1CO0FBQ25CLHFCQUF1QjtBQUN2Qix1QkFHTztBQUVQLDRCQUdPO0FBRVAsTUFBTSxvQkFBb0I7QUFDMUIsTUFBTSxzQkFBc0I7QUFRckIsTUFBTSxVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJTDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9ULFlBQVksTUFBZTtBQUNoQyxTQUFLLE9BQU8sWUFBUSxnQ0FBWSwyQkFBSyx1QkFBTyxHQUFHLGFBQWEsQ0FBQztBQUFBLEVBQy9EO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFhLFVBQXlCO0FBQ3BDLGNBQU0sdUNBQWdCLEtBQUssSUFBSTtBQUMvQixVQUFNLFFBQVEsS0FBSyxJQUFJO0FBQUEsRUFDekI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sU0FBUyxPQUFxQztBQUNuRCxlQUFXLENBQUMsVUFBVSxPQUFPLEtBQUssT0FBTyxRQUFRLEtBQUssR0FBRztBQUN2RCxZQUFNLGVBQVcsdUJBQUssS0FBSyxNQUFNLFFBQVE7QUFDekMsVUFBSSxTQUFTLFNBQVMsR0FBRyxHQUFHO0FBQzFCLFlBQUksWUFBWSxJQUFJO0FBQ2xCLGdCQUFNLElBQUksTUFBTSxnQkFBZ0IsUUFBUSwyQkFBMkI7QUFBQSxRQUNyRTtBQUNBLHNDQUFVLFVBQVUsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUFBLE1BQ3pDLE9BQU87QUFDTCwwQ0FBVSwwQkFBUSxRQUFRLEdBQUcsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUNoRCwwQ0FBYyxVQUFVLE9BQU87QUFBQSxNQUNqQztBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFhLFdBQTBCO0FBQ3JDLGNBQU0scUNBQWMsS0FBSyxJQUFJO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLE9BQU8sWUFBWSxJQUFtQjtBQUNsRCxXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBQ0Y7QUFTQSxlQUFlLFFBQVEsTUFBNkI7QUFDbEQsUUFBTSxXQUFXLEtBQUssSUFBSSxJQUFJO0FBQzlCLFNBQU8sS0FBSyxJQUFJLElBQUksVUFBVTtBQUM1QixRQUFJO0FBQ0YsZ0JBQU0sb0JBQUcsTUFBTSxFQUFFLE9BQU8sTUFBTSxXQUFXLEtBQUssQ0FBQztBQUMvQztBQUFBLElBQ0YsUUFBUTtBQUNOLFlBQU0sSUFBSSxRQUFRLENBQUMsWUFBWTtBQUM3QixtQkFBVyxTQUFTLGlCQUFpQjtBQUFBLE1BQ3ZDLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUVBLFlBQU0sb0JBQUcsTUFBTSxFQUFFLE9BQU8sTUFBTSxXQUFXLEtBQUssQ0FBQztBQUNqRDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* Manages temporary vault lifecycle for integration tests.
|
|
3
5
|
*/
|
|
4
|
-
export interface TempVaultParams {
|
|
5
|
-
/**
|
|
6
|
-
* Map of file paths to content. Parent directories are created automatically.
|
|
7
|
-
*
|
|
8
|
-
* To create an empty folder, use a path ending with `/` and an empty string as content.
|
|
9
|
-
*/
|
|
10
|
-
files?: Record<string, string>;
|
|
11
|
-
/**
|
|
12
|
-
* An explicit vault path. If omitted, a temp directory is created.
|
|
13
|
-
*/
|
|
14
|
-
path?: string;
|
|
15
|
-
}
|
|
16
6
|
/**
|
|
17
7
|
* A temporary Obsidian vault for integration tests.
|
|
18
8
|
*
|
|
@@ -25,15 +15,23 @@ export declare class TempVault {
|
|
|
25
15
|
*/
|
|
26
16
|
readonly path: string;
|
|
27
17
|
/**
|
|
28
|
-
* Creates a new temp vault
|
|
18
|
+
* Creates a new temp vault.
|
|
29
19
|
*
|
|
30
|
-
* @param
|
|
20
|
+
* @param path - An explicit vault path. If omitted, a temp directory is created.
|
|
31
21
|
*/
|
|
32
|
-
constructor(
|
|
22
|
+
constructor(path?: string);
|
|
33
23
|
/**
|
|
34
24
|
* Unregisters the vault from Obsidian and deletes the temp directory.
|
|
35
25
|
*/
|
|
36
26
|
dispose(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Writes files and folders into the vault directory.
|
|
29
|
+
* Parent directories are created automatically.
|
|
30
|
+
* Paths ending with `/` are treated as empty folders (content must be empty string).
|
|
31
|
+
*
|
|
32
|
+
* @param files - Map of file/folder paths to content.
|
|
33
|
+
*/
|
|
34
|
+
populate(files: Record<string, string>): void;
|
|
37
35
|
/**
|
|
38
36
|
* Registers this vault in the running Obsidian instance so the CLI can target it.
|
|
39
37
|
*/
|
package/dist/lib/esm/index.d.mts
CHANGED
|
@@ -6,6 +6,5 @@
|
|
|
6
6
|
export { ContextId } from './context-id.mjs';
|
|
7
7
|
export type { EvalInObsidianParams } from './obsidian-cli.mjs';
|
|
8
8
|
export { evalInObsidian } from './obsidian-cli.mjs';
|
|
9
|
-
export type { TempVaultParams } from './temp-vault.mjs';
|
|
10
9
|
export { TempVault } from './temp-vault.mjs';
|
|
11
10
|
export { registerVault, unregisterVault } from './vault-registry.mjs';
|
package/dist/lib/esm/index.mjs
CHANGED
|
@@ -12,4 +12,4 @@ export {
|
|
|
12
12
|
registerVault,
|
|
13
13
|
unregisterVault
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICpcbiAqIENvbnRhaW5zIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGludGVncmF0aW9uIHRlc3RpbmcgbW9kdWxlLlxuICovXG5cbmV4cG9ydCB7IENvbnRleHRJZCB9IGZyb20gJy4vY29udGV4dC1pZC5tanMnO1xuZXhwb3J0IHR5cGUgeyBFdmFsSW5PYnNpZGlhblBhcmFtcyB9IGZyb20gJy4vb2JzaWRpYW4tY2xpLm1qcyc7XG5leHBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vb2JzaWRpYW4tY2xpLm1qcyc7XG5leHBvcnQgeyBUZW1wVmF1bHQgfSBmcm9tICcuL3RlbXAtdmF1bHQubWpzJztcbmV4cG9ydCB7XG4gIHJlZ2lzdGVyVmF1bHQsXG4gIHVucmVnaXN0ZXJWYXVsdFxufSBmcm9tICcuL3ZhdWx0LXJlZ2lzdHJ5Lm1qcyc7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFNQSxTQUFTLGlCQUFpQjtBQUUxQixTQUFTLHNCQUFzQjtBQUMvQixTQUFTLGlCQUFpQjtBQUMxQjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSzsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -4,17 +4,18 @@
|
|
|
4
4
|
* Contains the global setup and teardown functions for integration tests.
|
|
5
5
|
*/
|
|
6
6
|
import type { TestProject } from 'vitest/node';
|
|
7
|
+
import { TempVault } from './temp-vault.mjs';
|
|
7
8
|
declare module 'vitest' {
|
|
8
9
|
interface ProvidedContext {
|
|
9
|
-
|
|
10
|
+
tempVault: TempVault;
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
/**
|
|
13
|
-
* Returns the temporary vault
|
|
14
|
+
* Returns the temporary vault provided by the global setup.
|
|
14
15
|
*
|
|
15
|
-
* @returns The
|
|
16
|
+
* @returns The temporary vault.
|
|
16
17
|
*/
|
|
17
|
-
export declare function
|
|
18
|
+
export declare function getTempVault(): TempVault;
|
|
18
19
|
/**
|
|
19
20
|
* Vitest global setup function.
|
|
20
21
|
*
|
|
@@ -10,8 +10,8 @@ import { join } from "node:path";
|
|
|
10
10
|
import { inject } from "vitest";
|
|
11
11
|
import { evalInObsidian } from "./obsidian-cli.mjs";
|
|
12
12
|
import { TempVault } from "./temp-vault.mjs";
|
|
13
|
-
function
|
|
14
|
-
return inject("
|
|
13
|
+
function getTempVault() {
|
|
14
|
+
return inject("tempVault");
|
|
15
15
|
}
|
|
16
16
|
const DIST_DEV = "dist/dev";
|
|
17
17
|
const DIST_BUILD = "dist/build";
|
|
@@ -43,7 +43,7 @@ async function setup(project) {
|
|
|
43
43
|
shouldSkipPreflightChecks: true,
|
|
44
44
|
vaultPath: tempVault.path
|
|
45
45
|
});
|
|
46
|
-
project.provide("
|
|
46
|
+
project.provide("tempVault", tempVault);
|
|
47
47
|
}
|
|
48
48
|
async function teardown() {
|
|
49
49
|
await tempVault.dispose();
|
|
@@ -80,8 +80,8 @@ async function resolveDistPath(projectRoot) {
|
|
|
80
80
|
throw new Error("No build found. Run `npm run build` or `npm run dev` first.");
|
|
81
81
|
}
|
|
82
82
|
export {
|
|
83
|
-
|
|
83
|
+
getTempVault,
|
|
84
84
|
setup,
|
|
85
85
|
teardown
|
|
86
86
|
};
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2ludGVncmF0aW9uLWdsb2JhbC1zZXR1cC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqXG4gKiBDb250YWlucyB0aGUgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMgZm9yIGludGVncmF0aW9uIHRlc3RzLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk1hbmlmZXN0IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBUZXN0UHJvamVjdCB9IGZyb20gJ3ZpdGVzdC9ub2RlJztcblxuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgc3RhdCxcbiAgd3JpdGVGaWxlXG59IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgeyBldmFsSW5PYnNpZGlhbiB9IGZyb20gJy4vb2JzaWRpYW4tY2xpLm1qcyc7XG5pbXBvcnQgeyBUZW1wVmF1bHQgfSBmcm9tICcuL3RlbXAtdmF1bHQubWpzJztcblxuZGVjbGFyZSBtb2R1bGUgJ3ZpdGVzdCcge1xuICBpbnRlcmZhY2UgUHJvdmlkZWRDb250ZXh0IHtcbiAgICB0ZW1wVmF1bHQ6IFRlbXBWYXVsdDtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHRlbXBvcmFyeSB2YXVsdCBwcm92aWRlZCBieSB0aGUgZ2xvYmFsIHNldHVwLlxuICpcbiAqIEByZXR1cm5zIFRoZSB0ZW1wb3JhcnkgdmF1bHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wVmF1bHQoKTogVGVtcFZhdWx0IHtcbiAgcmV0dXJuIGluamVjdCgndGVtcFZhdWx0Jyk7XG59XG5cbmNvbnN0IERJU1RfREVWID0gJ2Rpc3QvZGV2JztcbmNvbnN0IERJU1RfQlVJTEQgPSAnZGlzdC9idWlsZCc7XG5jb25zdCBNQUlOX0pTID0gJ21haW4uanMnO1xuY29uc3QgT0JTSURJQU5fQ09ORklHX0RJUiA9ICcub2JzaWRpYW4nO1xuY29uc3QgUExVR0lOU19ESVIgPSAncGx1Z2lucyc7XG5jb25zdCBDT01NVU5JVFlfUExVR0lOU19KU09OID0gJ2NvbW11bml0eS1wbHVnaW5zLmpzb24nO1xuXG5sZXQgdGVtcFZhdWx0OiBUZW1wVmF1bHQ7XG5cbi8qKlxuICogVml0ZXN0IGdsb2JhbCBzZXR1cCBmdW5jdGlvbi5cbiAqXG4gKiBDb3BpZXMgdGhlIGJ1aWx0IHBsdWdpbiBpbnRvIGEgdGVtcG9yYXJ5IHZhdWx0LCBlbmFibGVzIGl0IHZpYSB0aGUgT2JzaWRpYW4gQ0xJLFxuICogYW5kIHByb3ZpZGVzIGB0ZW1wVmF1bHRQYXRoYCB0byB0ZXN0cy5cbiAqXG4gKiBAcGFyYW0gcHJvamVjdCAtIFRoZSBWaXRlc3QgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHByb2plY3RSb290ID0gZmluZFByb2plY3RSb290KCk7XG4gIGNvbnN0IGRpc3RQYXRoID0gYXdhaXQgcmVzb2x2ZURpc3RQYXRoKHByb2plY3RSb290KTtcbiAgY29uc3QgbWFuaWZlc3RKc29uID0gSlNPTi5wYXJzZShhd2FpdCByZWFkRmlsZShqb2luKGRpc3RQYXRoLCAnbWFuaWZlc3QuanNvbicpLCAndXRmLTgnKSkgYXMgUGx1Z2luTWFuaWZlc3Q7XG4gIGNvbnN0IHBsdWdpbklkID0gbWFuaWZlc3RKc29uLmlkO1xuXG4gIGNvbnN0IG1haW5KcyA9IGpvaW4oZGlzdFBhdGgsIE1BSU5fSlMpO1xuICBjb25zdCBidWlsZFN0YXQgPSBhd2FpdCBzdGF0KG1haW5Kcyk7XG5cbiAgY29uc29sZS53YXJuKGBVc2luZyAke2Rpc3RQYXRofSAoJHtidWlsZFN0YXQubXRpbWUudG9JU09TdHJpbmcoKX0pLiBJZiBvdXRkYXRlZCwgcmVidWlsZC5gKTtcblxuICB0ZW1wVmF1bHQgPSBuZXcgVGVtcFZhdWx0KCk7XG4gIGNvbnN0IHBsdWdpbkRpciA9IGpvaW4odGVtcFZhdWx0LnBhdGgsIE9CU0lESUFOX0NPTkZJR19ESVIsIFBMVUdJTlNfRElSLCBwbHVnaW5JZCk7XG4gIGF3YWl0IG1rZGlyKHBsdWdpbkRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gIGF3YWl0IGNwKGRpc3RQYXRoLCBwbHVnaW5EaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCB3cml0ZUZpbGUoam9pbih0ZW1wVmF1bHQucGF0aCwgT0JTSURJQU5fQ09ORklHX0RJUiwgQ09NTVVOSVRZX1BMVUdJTlNfSlNPTiksIEpTT04uc3RyaW5naWZ5KFtwbHVnaW5JZF0pKTtcbiAgYXdhaXQgdGVtcFZhdWx0LnJlZ2lzdGVyKCk7XG5cbiAgYXdhaXQgZXZhbEluT2JzaWRpYW4oe1xuICAgIGFyZ3M6IHsgcGx1Z2luSWQgfSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93IC0tIE5vIGFjdHVhbCBzaGFkb3dpbmcgYXMgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGV4dGVybmFsbHkuXG4gICAgZm46IGFzeW5jICh7IGFwcCwgcGx1Z2luSWQgfSkgPT4ge1xuICAgICAgYXdhaXQgYXBwLnBsdWdpbnMuZW5hYmxlUGx1Z2luQW5kU2F2ZShwbHVnaW5JZCk7XG4gICAgfSxcbiAgICBzaG91bGRTa2lwUHJlZmxpZ2h0Q2hlY2tzOiB0cnVlLFxuICAgIHZhdWx0UGF0aDogdGVtcFZhdWx0LnBhdGhcbiAgfSk7XG5cbiAgcHJvamVjdC5wcm92aWRlKCd0ZW1wVmF1bHQnLCB0ZW1wVmF1bHQpO1xufVxuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgdGVhcmRvd24gZnVuY3Rpb24uXG4gKlxuICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVhcmRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IHRlbXBWYXVsdC5kaXNwb3NlKCk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIHByb2plY3Qgcm9vdCBieSB3YWxraW5nIHVwIGZyb20gYHByb2Nlc3MuY3dkKClgIGxvb2tpbmcgZm9yIGBwYWNrYWdlLmpzb25gLlxuICpcbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwcm9qZWN0IHJvb3QuXG4gKi9cbmZ1bmN0aW9uIGZpbmRQcm9qZWN0Um9vdCgpOiBzdHJpbmcge1xuICBsZXQgZGlyID0gcHJvY2Vzcy5jd2QoKTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvbiAtLSBMb29wIHRlcm1pbmF0ZXMgYXQgZmlsZXN5c3RlbSByb290LlxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGlmIChleGlzdHNTeW5jKGpvaW4oZGlyLCAncGFja2FnZS5qc29uJykpKSB7XG4gICAgICByZXR1cm4gZGlyO1xuICAgIH1cbiAgICBjb25zdCBwYXJlbnQgPSBqb2luKGRpciwgJy4uJyk7XG4gICAgaWYgKHBhcmVudCA9PT0gZGlyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHByb2plY3Qgcm9vdCAobm8gcGFja2FnZS5qc29uIGZvdW5kKS4nKTtcbiAgICB9XG4gICAgZGlyID0gcGFyZW50O1xuICB9XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGRpc3QgcGF0aCB0byB1c2UgZm9yIGludGVncmF0aW9uIHRlc3RzLlxuICpcbiAqIFBpY2tzIHdoaWNoZXZlciBvZiBgZGlzdC9kZXZgIGFuZCBgZGlzdC9idWlsZGAgaGFzIGEgbmV3ZXIgYG1haW4uanNgLlxuICogSWYgb25seSBvbmUgZXhpc3RzLCB0aGF0IG9uZSBpcyB1c2VkLiBUaHJvd3MgaWYgbmVpdGhlciBleGlzdHMuXG4gKlxuICogQHBhcmFtIHByb2plY3RSb290IC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHByb2plY3Qgcm9vdC5cbiAqIEByZXR1cm5zIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBjaG9zZW4gZGlzdCBmb2xkZXIuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVEaXN0UGF0aChwcm9qZWN0Um9vdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZGV2UGF0aCA9IGpvaW4ocHJvamVjdFJvb3QsIERJU1RfREVWKTtcbiAgY29uc3QgYnVpbGRQYXRoID0gam9pbihwcm9qZWN0Um9vdCwgRElTVF9CVUlMRCk7XG4gIGNvbnN0IGRldk1haW5KcyA9IGpvaW4oZGV2UGF0aCwgTUFJTl9KUyk7XG4gIGNvbnN0IGJ1aWxkTWFpbkpzID0gam9pbihidWlsZFBhdGgsIE1BSU5fSlMpO1xuICBjb25zdCBkZXZTdGF0ID0gZXhpc3RzU3luYyhkZXZNYWluSnMpID8gYXdhaXQgc3RhdChkZXZNYWluSnMpIDogbnVsbDtcbiAgY29uc3QgYnVpbGRTdGF0ID0gZXhpc3RzU3luYyhidWlsZE1haW5KcykgPyBhd2FpdCBzdGF0KGJ1aWxkTWFpbkpzKSA6IG51bGw7XG5cbiAgaWYgKGRldlN0YXQgJiYgYnVpbGRTdGF0KSB7XG4gICAgcmV0dXJuIGRldlN0YXQubXRpbWUgPiBidWlsZFN0YXQubXRpbWUgPyBkZXZQYXRoIDogYnVpbGRQYXRoO1xuICB9XG5cbiAgaWYgKGRldlN0YXQpIHtcbiAgICByZXR1cm4gZGV2UGF0aDtcbiAgfVxuXG4gIGlmIChidWlsZFN0YXQpIHtcbiAgICByZXR1cm4gYnVpbGRQYXRoO1xuICB9XG5cbiAgdGhyb3cgbmV3IEVycm9yKCdObyBidWlsZCBmb3VuZC4gUnVuIGBucG0gcnVuIGJ1aWxkYCBvciBgbnBtIHJ1biBkZXZgIGZpcnN0LicpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBV0EsU0FBUyxrQkFBa0I7QUFDM0I7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLFlBQVk7QUFDckIsU0FBUyxjQUFjO0FBRXZCLFNBQVMsc0JBQXNCO0FBQy9CLFNBQVMsaUJBQWlCO0FBYW5CLFNBQVMsZUFBMEI7QUFDeEMsU0FBTyxPQUFPLFdBQVc7QUFDM0I7QUFFQSxNQUFNLFdBQVc7QUFDakIsTUFBTSxhQUFhO0FBQ25CLE1BQU0sVUFBVTtBQUNoQixNQUFNLHNCQUFzQjtBQUM1QixNQUFNLGNBQWM7QUFDcEIsTUFBTSx5QkFBeUI7QUFFL0IsSUFBSTtBQVVKLGVBQXNCLE1BQU0sU0FBcUM7QUFDL0QsUUFBTSxjQUFjLGdCQUFnQjtBQUNwQyxRQUFNLFdBQVcsTUFBTSxnQkFBZ0IsV0FBVztBQUNsRCxRQUFNLGVBQWUsS0FBSyxNQUFNLE1BQU0sU0FBUyxLQUFLLFVBQVUsZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUN4RixRQUFNLFdBQVcsYUFBYTtBQUU5QixRQUFNLFNBQVMsS0FBSyxVQUFVLE9BQU87QUFDckMsUUFBTSxZQUFZLE1BQU0sS0FBSyxNQUFNO0FBRW5DLFVBQVEsS0FBSyxTQUFTLFFBQVEsS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFDLDBCQUEwQjtBQUUxRixjQUFZLElBQUksVUFBVTtBQUMxQixRQUFNLFlBQVksS0FBSyxVQUFVLE1BQU0scUJBQXFCLGFBQWEsUUFBUTtBQUNqRixRQUFNLE1BQU0sV0FBVyxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQzFDLFFBQU0sR0FBRyxVQUFVLFdBQVcsRUFBRSxXQUFXLEtBQUssQ0FBQztBQUNqRCxRQUFNLFVBQVUsS0FBSyxVQUFVLE1BQU0scUJBQXFCLHNCQUFzQixHQUFHLEtBQUssVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdHLFFBQU0sVUFBVSxTQUFTO0FBRXpCLFFBQU0sZUFBZTtBQUFBLElBQ25CLE1BQU0sRUFBRSxTQUFTO0FBQUE7QUFBQSxJQUVqQixJQUFJLE9BQU8sRUFBRSxLQUFLLFVBQUFBLFVBQVMsTUFBTTtBQUMvQixZQUFNLElBQUksUUFBUSxvQkFBb0JBLFNBQVE7QUFBQSxJQUNoRDtBQUFBLElBQ0EsMkJBQTJCO0FBQUEsSUFDM0IsV0FBVyxVQUFVO0FBQUEsRUFDdkIsQ0FBQztBQUVELFVBQVEsUUFBUSxhQUFhLFNBQVM7QUFDeEM7QUFPQSxlQUFzQixXQUEwQjtBQUM5QyxRQUFNLFVBQVUsUUFBUTtBQUMxQjtBQU9BLFNBQVMsa0JBQTBCO0FBQ2pDLE1BQUksTUFBTSxRQUFRLElBQUk7QUFHdEIsU0FBTyxNQUFNO0FBQ1gsUUFBSSxXQUFXLEtBQUssS0FBSyxjQUFjLENBQUMsR0FBRztBQUN6QyxhQUFPO0FBQUEsSUFDVDtBQUNBLFVBQU0sU0FBUyxLQUFLLEtBQUssSUFBSTtBQUM3QixRQUFJLFdBQVcsS0FBSztBQUNsQixZQUFNLElBQUksTUFBTSxzREFBc0Q7QUFBQSxJQUN4RTtBQUNBLFVBQU07QUFBQSxFQUNSO0FBQ0Y7QUFXQSxlQUFlLGdCQUFnQixhQUFzQztBQUNuRSxRQUFNLFVBQVUsS0FBSyxhQUFhLFFBQVE7QUFDMUMsUUFBTSxZQUFZLEtBQUssYUFBYSxVQUFVO0FBQzlDLFFBQU0sWUFBWSxLQUFLLFNBQVMsT0FBTztBQUN2QyxRQUFNLGNBQWMsS0FBSyxXQUFXLE9BQU87QUFDM0MsUUFBTSxVQUFVLFdBQVcsU0FBUyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUk7QUFDaEUsUUFBTSxZQUFZLFdBQVcsV0FBVyxJQUFJLE1BQU0sS0FBSyxXQUFXLElBQUk7QUFFdEUsTUFBSSxXQUFXLFdBQVc7QUFDeEIsV0FBTyxRQUFRLFFBQVEsVUFBVSxRQUFRLFVBQVU7QUFBQSxFQUNyRDtBQUVBLE1BQUksU0FBUztBQUNYLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxXQUFXO0FBQ2IsV0FBTztBQUFBLEVBQ1Q7QUFFQSxRQUFNLElBQUksTUFBTSw2REFBNkQ7QUFDL0U7IiwKICAibmFtZXMiOiBbInBsdWdpbklkIl0KfQo=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* No-op functions.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* No-op function.
|
|
8
|
+
*/
|
|
9
|
+
export declare function noop(): void;
|
|
10
|
+
/**
|
|
11
|
+
* No-op async function.
|
|
12
|
+
*
|
|
13
|
+
* @returns A promise that resolves when the function is complete.
|
|
14
|
+
*/
|
|
15
|
+
export declare function noopAsync(): Promise<void>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
function noop() {
|
|
2
|
+
}
|
|
3
|
+
async function noopAsync() {
|
|
4
|
+
}
|
|
5
|
+
export {
|
|
6
|
+
noop,
|
|
7
|
+
noopAsync
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL25vb3AudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogTm8tb3AgZnVuY3Rpb25zLlxuICovXG5cbi8qKlxuICogTm8tb3AgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub29wKCk6IHZvaWQge1xuICAvLyBOby1vcFxufVxuXG4vKipcbiAqIE5vLW9wIGFzeW5jIGZ1bmN0aW9uLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbm9vcEFzeW5jKCk6IFByb21pc2U8dm9pZD4ge1xuICAvLyBOby1vcFxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBU08sU0FBUyxPQUFhO0FBRTdCO0FBT0EsZUFBc0IsWUFBMkI7QUFFakQ7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
*
|
|
4
|
+
* Manages temporary vault lifecycle for integration tests.
|
|
3
5
|
*/
|
|
4
|
-
export interface TempVaultParams {
|
|
5
|
-
/**
|
|
6
|
-
* Map of file paths to content. Parent directories are created automatically.
|
|
7
|
-
*
|
|
8
|
-
* To create an empty folder, use a path ending with `/` and an empty string as content.
|
|
9
|
-
*/
|
|
10
|
-
files?: Record<string, string>;
|
|
11
|
-
/**
|
|
12
|
-
* An explicit vault path. If omitted, a temp directory is created.
|
|
13
|
-
*/
|
|
14
|
-
path?: string;
|
|
15
|
-
}
|
|
16
6
|
/**
|
|
17
7
|
* A temporary Obsidian vault for integration tests.
|
|
18
8
|
*
|
|
@@ -25,15 +15,23 @@ export declare class TempVault {
|
|
|
25
15
|
*/
|
|
26
16
|
readonly path: string;
|
|
27
17
|
/**
|
|
28
|
-
* Creates a new temp vault
|
|
18
|
+
* Creates a new temp vault.
|
|
29
19
|
*
|
|
30
|
-
* @param
|
|
20
|
+
* @param path - An explicit vault path. If omitted, a temp directory is created.
|
|
31
21
|
*/
|
|
32
|
-
constructor(
|
|
22
|
+
constructor(path?: string);
|
|
33
23
|
/**
|
|
34
24
|
* Unregisters the vault from Obsidian and deletes the temp directory.
|
|
35
25
|
*/
|
|
36
26
|
dispose(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Writes files and folders into the vault directory.
|
|
29
|
+
* Parent directories are created automatically.
|
|
30
|
+
* Paths ending with `/` are treated as empty folders (content must be empty string).
|
|
31
|
+
*
|
|
32
|
+
* @param files - Map of file/folder paths to content.
|
|
33
|
+
*/
|
|
34
|
+
populate(files: Record<string, string>): void;
|
|
37
35
|
/**
|
|
38
36
|
* Registers this vault in the running Obsidian instance so the CLI can target it.
|
|
39
37
|
*/
|
|
@@ -21,13 +21,29 @@ class TempVault {
|
|
|
21
21
|
*/
|
|
22
22
|
path;
|
|
23
23
|
/**
|
|
24
|
-
* Creates a new temp vault
|
|
24
|
+
* Creates a new temp vault.
|
|
25
25
|
*
|
|
26
|
-
* @param
|
|
26
|
+
* @param path - An explicit vault path. If omitted, a temp directory is created.
|
|
27
27
|
*/
|
|
28
|
-
constructor(
|
|
29
|
-
this.path =
|
|
30
|
-
|
|
28
|
+
constructor(path) {
|
|
29
|
+
this.path = path ?? mkdtempSync(join(tmpdir(), "temp-vault-"));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Unregisters the vault from Obsidian and deletes the temp directory.
|
|
33
|
+
*/
|
|
34
|
+
async dispose() {
|
|
35
|
+
await unregisterVault(this.path);
|
|
36
|
+
await retryRm(this.path);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Writes files and folders into the vault directory.
|
|
40
|
+
* Parent directories are created automatically.
|
|
41
|
+
* Paths ending with `/` are treated as empty folders (content must be empty string).
|
|
42
|
+
*
|
|
43
|
+
* @param files - Map of file/folder paths to content.
|
|
44
|
+
*/
|
|
45
|
+
populate(files) {
|
|
46
|
+
for (const [filePath, content] of Object.entries(files)) {
|
|
31
47
|
const fullPath = join(this.path, filePath);
|
|
32
48
|
if (filePath.endsWith("/")) {
|
|
33
49
|
if (content !== "") {
|
|
@@ -40,13 +56,6 @@ class TempVault {
|
|
|
40
56
|
}
|
|
41
57
|
}
|
|
42
58
|
}
|
|
43
|
-
/**
|
|
44
|
-
* Unregisters the vault from Obsidian and deletes the temp directory.
|
|
45
|
-
*/
|
|
46
|
-
async dispose() {
|
|
47
|
-
await unregisterVault(this.path);
|
|
48
|
-
await retryRm(this.path);
|
|
49
|
-
}
|
|
50
59
|
/**
|
|
51
60
|
* Registers this vault in the running Obsidian instance so the CLI can target it.
|
|
52
61
|
*/
|
|
@@ -79,4 +88,4 @@ async function retryRm(path) {
|
|
|
79
88
|
export {
|
|
80
89
|
TempVault
|
|
81
90
|
};
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RlbXAtdmF1bHQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKlxuICogTWFuYWdlcyB0ZW1wb3JhcnkgdmF1bHQgbGlmZWN5Y2xlIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAqL1xuXG5pbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICB3cml0ZUZpbGVTeW5jXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgcm0gfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHtcbiAgZGlybmFtZSxcbiAgam9pblxufSBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQge1xuICByZWdpc3RlclZhdWx0LFxuICB1bnJlZ2lzdGVyVmF1bHRcbn0gZnJvbSAnLi92YXVsdC1yZWdpc3RyeS5tanMnO1xuXG5jb25zdCBSTV9SRVRSWV9ERUxBWV9NUyA9IDUwMDtcbmNvbnN0IFJNX1JFVFJZX1RJTUVPVVRfTVMgPSAxMDAwMDtcblxuLyoqXG4gKiBBIHRlbXBvcmFyeSBPYnNpZGlhbiB2YXVsdCBmb3IgaW50ZWdyYXRpb24gdGVzdHMuXG4gKlxuICogQ3JlYXRlcyBhIHRlbXAgZGlyZWN0b3J5IGFuZCByZWdpc3RlcnMgaXQgaW4gdGhlIHJ1bm5pbmcgT2JzaWRpYW4gaW5zdGFuY2VcbiAqIHNvIHRoYXQgdGhlIE9ic2lkaWFuIENMSSBjYW4gdGFyZ2V0IGl0IHZpYSBgY3dkYC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBWYXVsdCB7XG4gIC8qKlxuICAgKiBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgdGVtcG9yYXJ5IHZhdWx0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyB0ZW1wIHZhdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIEFuIGV4cGxpY2l0IHZhdWx0IHBhdGguIElmIG9taXR0ZWQsIGEgdGVtcCBkaXJlY3RvcnkgaXMgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXRoPzogc3RyaW5nKSB7XG4gICAgdGhpcy5wYXRoID0gcGF0aCA/PyBta2R0ZW1wU3luYyhqb2luKHRtcGRpcigpLCAndGVtcC12YXVsdC0nKSk7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgdGhlIHZhdWx0IGZyb20gT2JzaWRpYW4gYW5kIGRlbGV0ZXMgdGhlIHRlbXAgZGlyZWN0b3J5LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpc3Bvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdW5yZWdpc3RlclZhdWx0KHRoaXMucGF0aCk7XG4gICAgYXdhaXQgcmV0cnlSbSh0aGlzLnBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBmaWxlcyBhbmQgZm9sZGVycyBpbnRvIHRoZSB2YXVsdCBkaXJlY3RvcnkuXG4gICAqIFBhcmVudCBkaXJlY3RvcmllcyBhcmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LlxuICAgKiBQYXRocyBlbmRpbmcgd2l0aCBgL2AgYXJlIHRyZWF0ZWQgYXMgZW1wdHkgZm9sZGVycyAoY29udGVudCBtdXN0IGJlIGVtcHR5IHN0cmluZykuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlcyAtIE1hcCBvZiBmaWxlL2ZvbGRlciBwYXRocyB0byBjb250ZW50LlxuICAgKi9cbiAgcHVibGljIHBvcHVsYXRlKGZpbGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbZmlsZVBhdGgsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKGZpbGVzKSkge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBqb2luKHRoaXMucGF0aCwgZmlsZVBhdGgpO1xuICAgICAgaWYgKGZpbGVQYXRoLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT09ICcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGb2xkZXIgcGF0aCBcIiR7ZmlsZVBhdGh9XCIgbXVzdCBoYXZlIGVtcHR5IGNvbnRlbnRgKTtcbiAgICAgICAgfVxuICAgICAgICBta2RpclN5bmMoZnVsbFBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWtkaXJTeW5jKGRpcm5hbWUoZnVsbFBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgd3JpdGVGaWxlU3luYyhmdWxsUGF0aCwgY29udGVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGlzIHZhdWx0IGluIHRoZSBydW5uaW5nIE9ic2lkaWFuIGluc3RhbmNlIHNvIHRoZSBDTEkgY2FuIHRhcmdldCBpdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyByZWdpc3RlcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCByZWdpc3RlclZhdWx0KHRoaXMucGF0aCk7XG4gIH1cblxuICAvKipcbiAgICogQXN5bmMgZGlzcG9zYWJsZSBzdXBwb3J0IGZvciBgYXdhaXQgdXNpbmdgLlxuICAgKlxuICAgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSB2YXVsdCBpcyBkaXNwb3NlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmllcyBgcm1gIHVudGlsIGl0IHN1Y2NlZWRzIG9yIHRpbWVzIG91dC5cbiAqIE9ic2lkaWFuIG1heSBob2xkIGZpbGUgbG9ja3MgYnJpZWZseSBhZnRlciBhIHdpbmRvdyBpcyBkZXN0cm95ZWQuXG4gKlxuICogQHBhcmFtIHBhdGggLSBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGRpcmVjdG9yeSBpcyByZW1vdmVkLlxuICovXG5hc3luYyBmdW5jdGlvbiByZXRyeVJtKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBkZWFkbGluZSA9IERhdGUubm93KCkgKyBSTV9SRVRSWV9USU1FT1VUX01TO1xuICB3aGlsZSAoRGF0ZS5ub3coKSA8IGRlYWRsaW5lKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHJtKHBhdGgsIHsgZm9yY2U6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgUk1fUkVUUllfREVMQVlfTVMpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIC8vIEZpbmFsIGF0dGVtcHQgXHUyMDE0IGxldCBpdCB0aHJvdy5cbiAgYXdhaXQgcm0ocGF0aCwgeyBmb3JjZTogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBTUE7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxVQUFVO0FBQ25CLFNBQVMsY0FBYztBQUN2QjtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBRVAsTUFBTSxvQkFBb0I7QUFDMUIsTUFBTSxzQkFBc0I7QUFRckIsTUFBTSxVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJTDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9ULFlBQVksTUFBZTtBQUNoQyxTQUFLLE9BQU8sUUFBUSxZQUFZLEtBQUssT0FBTyxHQUFHLGFBQWEsQ0FBQztBQUFBLEVBQy9EO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQSxNQUFhLFVBQXlCO0FBQ3BDLFVBQU0sZ0JBQWdCLEtBQUssSUFBSTtBQUMvQixVQUFNLFFBQVEsS0FBSyxJQUFJO0FBQUEsRUFDekI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sU0FBUyxPQUFxQztBQUNuRCxlQUFXLENBQUMsVUFBVSxPQUFPLEtBQUssT0FBTyxRQUFRLEtBQUssR0FBRztBQUN2RCxZQUFNLFdBQVcsS0FBSyxLQUFLLE1BQU0sUUFBUTtBQUN6QyxVQUFJLFNBQVMsU0FBUyxHQUFHLEdBQUc7QUFDMUIsWUFBSSxZQUFZLElBQUk7QUFDbEIsZ0JBQU0sSUFBSSxNQUFNLGdCQUFnQixRQUFRLDJCQUEyQjtBQUFBLFFBQ3JFO0FBQ0Esa0JBQVUsVUFBVSxFQUFFLFdBQVcsS0FBSyxDQUFDO0FBQUEsTUFDekMsT0FBTztBQUNMLGtCQUFVLFFBQVEsUUFBUSxHQUFHLEVBQUUsV0FBVyxLQUFLLENBQUM7QUFDaEQsc0JBQWMsVUFBVSxPQUFPO0FBQUEsTUFDakM7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0EsTUFBYSxXQUEwQjtBQUNyQyxVQUFNLGNBQWMsS0FBSyxJQUFJO0FBQUEsRUFDL0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxPQUFjLE9BQU8sWUFBWSxJQUFtQjtBQUNsRCxXQUFPLEtBQUssUUFBUTtBQUFBLEVBQ3RCO0FBQ0Y7QUFTQSxlQUFlLFFBQVEsTUFBNkI7QUFDbEQsUUFBTSxXQUFXLEtBQUssSUFBSSxJQUFJO0FBQzlCLFNBQU8sS0FBSyxJQUFJLElBQUksVUFBVTtBQUM1QixRQUFJO0FBQ0YsWUFBTSxHQUFHLE1BQU0sRUFBRSxPQUFPLE1BQU0sV0FBVyxLQUFLLENBQUM7QUFDL0M7QUFBQSxJQUNGLFFBQVE7QUFDTixZQUFNLElBQUksUUFBUSxDQUFDLFlBQVk7QUFDN0IsbUJBQVcsU0FBUyxpQkFBaUI7QUFBQSxNQUN2QyxDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFFQSxRQUFNLEdBQUcsTUFBTSxFQUFFLE9BQU8sTUFBTSxXQUFXLEtBQUssQ0FBQztBQUNqRDsiLAogICJuYW1lcyI6IFtdCn0K
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "obsidian-integration-testing",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Simplifies integration testing of Obsidian plugins.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"obsidian",
|
|
@@ -49,9 +49,7 @@
|
|
|
49
49
|
"**/package.json",
|
|
50
50
|
"dist/",
|
|
51
51
|
"LICENSE",
|
|
52
|
-
"
|
|
53
|
-
"README.md",
|
|
54
|
-
"scripts/postinstall.mjs"
|
|
52
|
+
"README.md"
|
|
55
53
|
],
|
|
56
54
|
"scripts": {
|
|
57
55
|
"build": "jiti scripts/build.ts",
|
|
@@ -67,7 +65,6 @@
|
|
|
67
65
|
"lint:fix": "jiti scripts/lint-fix.ts",
|
|
68
66
|
"lint:md": "jiti scripts/lint-md.ts",
|
|
69
67
|
"lint:md:fix": "jiti scripts/lint-md-fix.ts",
|
|
70
|
-
"postinstall": "node scripts/postinstall.mjs",
|
|
71
68
|
"prepare": "jiti scripts/prepare.ts",
|
|
72
69
|
"spellcheck": "jiti scripts/spellcheck.ts",
|
|
73
70
|
"test": "jiti scripts/test.ts",
|
|
@@ -113,7 +110,6 @@
|
|
|
113
110
|
"nano-staged": "latest",
|
|
114
111
|
"obsidian": "latest",
|
|
115
112
|
"obsidian-typings": "obsidian-public-latest",
|
|
116
|
-
"patch-package": "latest",
|
|
117
113
|
"semver": "latest",
|
|
118
114
|
"type-fest": "latest",
|
|
119
115
|
"typescript": "latest",
|
|
Binary file
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
diff --git a/node_modules/@vitest/runner/dist/tasks.d-D2GKpdwQ.d.ts b/node_modules/@vitest/runner/dist/tasks.d-D2GKpdwQ.d.ts
|
|
2
|
-
index 2989304..00afc9c 100644
|
|
3
|
-
--- a/node_modules/@vitest/runner/dist/tasks.d-D2GKpdwQ.d.ts
|
|
4
|
-
+++ b/node_modules/@vitest/runner/dist/tasks.d-D2GKpdwQ.d.ts
|
|
5
|
-
@@ -1330,7 +1330,7 @@ interface TestAttachment {
|
|
6
|
-
/** File system path to the attachment */
|
|
7
|
-
path?: string;
|
|
8
|
-
/** Inline attachment content as a string or raw binary data */
|
|
9
|
-
- body?: string | Uint8Array;
|
|
10
|
-
+ body?: string | Uint8Array | undefined;
|
|
11
|
-
}
|
|
12
|
-
interface Location {
|
|
13
|
-
/** Line number in the source file (1-indexed) */
|
|
14
|
-
@@ -1365,7 +1365,7 @@ interface TestArtifactBase {
|
|
15
|
-
/** File or data attachments associated with this artifact */
|
|
16
|
-
attachments?: TestAttachment[];
|
|
17
|
-
/** Source location where this artifact was created */
|
|
18
|
-
- location?: TestArtifactLocation;
|
|
19
|
-
+ location?: TestArtifactLocation | undefined;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* @deprecated Use {@linkcode TestArtifactLocation} instead.
|
package/scripts/postinstall.mjs
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from 'node:child_process';
|
|
2
|
-
import {
|
|
3
|
-
join,
|
|
4
|
-
relative
|
|
5
|
-
} from 'node:path/posix';
|
|
6
|
-
import {
|
|
7
|
-
cwd,
|
|
8
|
-
env
|
|
9
|
-
} from 'node:process';
|
|
10
|
-
|
|
11
|
-
const isGlobalInstall = env.npm_config_global === 'true';
|
|
12
|
-
|
|
13
|
-
if (isGlobalInstall) {
|
|
14
|
-
console.log('Global install detected, skipping patch-package...');
|
|
15
|
-
process.exit(0);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
let pkgDir = cwd().replace(/\\/g, '/');
|
|
19
|
-
const patchDir = join(pkgDir, 'patches');
|
|
20
|
-
const relativePath = '/node_modules/obsidian-test-mocks';
|
|
21
|
-
if (pkgDir.endsWith(relativePath)) {
|
|
22
|
-
pkgDir = pkgDir.slice(0, -relativePath.length);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
spawnSync(`npx patch-package --patch-dir "${relative(pkgDir, patchDir)}"`, {
|
|
26
|
-
shell: true,
|
|
27
|
-
stdio: 'inherit',
|
|
28
|
-
cwd: pkgDir
|
|
29
|
-
});
|