@mnaoumov/obsidian-dev-toolkit 3.1.0 → 3.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.
- package/dist/lib/cjs/jest-setup.cjs +1 -1
- package/dist/lib/cjs/jest-setup.d.cts +2 -1
- package/dist/lib/cjs/test-runners/index.cjs +4 -1
- package/dist/lib/cjs/test-runners/index.d.cts +1 -0
- package/dist/lib/cjs/test-runners/jest-config.cjs +166 -0
- package/dist/lib/cjs/test-runners/jest-config.d.cts +50 -0
- package/dist/lib/esm/jest-setup.d.mts +2 -1
- package/dist/lib/esm/jest-setup.mjs +1 -1
- package/dist/lib/esm/test-runners/index.d.mts +1 -0
- package/dist/lib/esm/test-runners/index.mjs +3 -1
- package/dist/lib/esm/test-runners/jest-config.d.mts +50 -0
- package/dist/lib/esm/test-runners/jest-config.mjs +68 -0
- package/package.json +18 -2
- package/test-runners/jest-config/package.json +6 -0
|
@@ -112,4 +112,4 @@ var import_setup = require('./setup.cjs');
|
|
|
112
112
|
afterEach: import_globals.afterEach,
|
|
113
113
|
beforeEach: import_globals.beforeEach
|
|
114
114
|
});
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qZXN0LXNldHVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBKZXN0IHNldHVwIGZpbGUgZm9yIE9ic2lkaWFuIHBsdWdpbnMgYnVpbHQgb24gYEBtbmFvdW1vdi9vYnNpZGlhbi1saWJgLlxuICpcbiAqIEFkZCBpdCB0byB5b3VyIEplc3QgY29uZmlnJ3MgYHNldHVwRmlsZXNBZnRlckVudmAgKG9yIGltcG9ydCBpdCBmcm9tIGFub3RoZXIgc2V0dXAgZmlsZSk7XG4gKiBgZGVmaW5lT2JzaWRpYW5QbHVnaW5KZXN0Q29uZmlnYCBhZGRzIGl0IGZvciB5b3UuIEJlZm9yZVxuICogZWFjaCB0ZXN0IGl0IHJlc2V0cyB0aGUgZ2VuZXJpYyBzaGFyZWQtc3RhdGUgc2xvdCwgdGhlIGBfX29ic2lkaWFuRGV2VXRpbHNgIGJhZyBhbmQgdGhlIGxpYnJhcnkgY29udGV4dHMsIGFuZCBlbmFibGVzIGFzeW5jLW9wZXJhdGlvbiB0cmFja2luZzsgYWZ0ZXIgZWFjaCB0ZXN0IGl0XG4gKiBkaXNhYmxlcyB0cmFja2luZywgc28gdGVzdHMgY2FuIGBhd2FpdCB3YWl0Rm9yQWxsQXN5bmNPcGVyYXRpb25zKClgIGFnYWluc3QgaXNvbGF0ZWQgc3RhdGUuXG4gKlxuICogVGhpcyBpcyBhIHBlci10ZXN0IHNldHVwIGZpbGUsIG5vdCBhIEplc3QgYGdsb2JhbFNldHVwYCBtb2R1bGUsIHNvIGl0IGhhcyBubyBkZWZhdWx0IGV4cG9ydC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhpbiBKZXN0IHNldHVwLWZpbGUgZ2x1ZTsgc2V0dXAgaXMgdW5pdC10ZXN0ZWQgc2VwYXJhdGVseS4gKi9cbmltcG9ydCB7XG4gIGFmdGVyQWxsLFxuICBhZnRlckVhY2gsXG4gIGJlZm9yZUVhY2hcbn0gZnJvbSAnQGplc3QvZ2xvYmFscyc7XG5cbmltcG9ydCB7IHNldHVwIH0gZnJvbSAnLi9zZXR1cC50cyc7XG5cbnNldHVwKHtcbiAgYWZ0ZXJBbGwsXG4gIGFmdGVyRWFjaCxcbiAgYmVmb3JlRWFjaFxufSk7XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLHFCQUlPO0FBRVAsbUJBQXNCO0FBQUEsSUFFdEIsb0JBQU07QUFBQSxFQUNKO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRixDQUFDOyIsIm5hbWVzIjpbXX0=
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Jest setup file for Obsidian plugins built on `@mnaoumov/obsidian-lib`.
|
|
6
6
|
*
|
|
7
|
-
* Add it to your Jest config's `
|
|
7
|
+
* Add it to your Jest config's `setupFilesAfterEnv` (or import it from another setup file);
|
|
8
|
+
* `defineObsidianPluginJestConfig` adds it for you. Before
|
|
8
9
|
* each test it resets the generic shared-state slot, the `__obsidianDevUtils` bag and the library contexts, and enables async-operation tracking; after each test it
|
|
9
10
|
* disables tracking, so tests can `await waitForAllAsyncOperations()` against isolated state.
|
|
10
11
|
*
|
|
@@ -111,6 +111,7 @@ __export(test_runners_exports, {
|
|
|
111
111
|
"coverage-badge-cli": () => coverage_badge_cli,
|
|
112
112
|
"e2e-runner-support": () => e2e_runner_support,
|
|
113
113
|
"integration-test-plugin": () => integration_test_plugin,
|
|
114
|
+
"jest-config": () => jest_config,
|
|
114
115
|
"obsidian-test-runner": () => obsidian_test_runner,
|
|
115
116
|
"performance-eval-cap": () => performance_eval_cap,
|
|
116
117
|
"vitest-config": () => vitest_config,
|
|
@@ -121,6 +122,7 @@ var coverage_badge_cli = __toESM(((module) => module && module.__esModule && 'de
|
|
|
121
122
|
var coverage_badge = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./coverage-badge.cjs')), 1);
|
|
122
123
|
var e2e_runner_support = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./e2e-runner-support.cjs')), 1);
|
|
123
124
|
var integration_test_plugin = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./integration-test-plugin.cjs')), 1);
|
|
125
|
+
var jest_config = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./jest-config.cjs')), 1);
|
|
124
126
|
var obsidian_test_runner = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./obsidian-test-runner.cjs')), 1);
|
|
125
127
|
var performance_eval_cap = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./performance-eval-cap.cjs')), 1);
|
|
126
128
|
var vitest_config = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./vitest-config.cjs')), 1);
|
|
@@ -131,9 +133,10 @@ var wdio_obsidian = __toESM(((module) => module && module.__esModule && 'default
|
|
|
131
133
|
"coverage-badge-cli": null,
|
|
132
134
|
"e2e-runner-support": null,
|
|
133
135
|
"integration-test-plugin": null,
|
|
136
|
+
"jest-config": null,
|
|
134
137
|
"obsidian-test-runner": null,
|
|
135
138
|
"performance-eval-cap": null,
|
|
136
139
|
"vitest-config": null,
|
|
137
140
|
"wdio-obsidian": null
|
|
138
141
|
});
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdjb3ZlcmFnZS1iYWRnZS1jbGknIGZyb20gJy4vY292ZXJhZ2UtYmFkZ2UtY2xpLnRzJztcbmV4cG9ydCAqIGFzICdjb3ZlcmFnZS1iYWRnZScgZnJvbSAnLi9jb3ZlcmFnZS1iYWRnZS50cyc7XG5leHBvcnQgKiBhcyAnZTJlLXJ1bm5lci1zdXBwb3J0JyBmcm9tICcuL2UyZS1ydW5uZXItc3VwcG9ydC50cyc7XG5leHBvcnQgKiBhcyAnaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4nIGZyb20gJy4vaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgJ2plc3QtY29uZmlnJyBmcm9tICcuL2plc3QtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICdvYnNpZGlhbi10ZXN0LXJ1bm5lcicgZnJvbSAnLi9vYnNpZGlhbi10ZXN0LXJ1bm5lci50cyc7XG5leHBvcnQgKiBhcyAncGVyZm9ybWFuY2UtZXZhbC1jYXAnIGZyb20gJy4vcGVyZm9ybWFuY2UtZXZhbC1jYXAudHMnO1xuZXhwb3J0ICogYXMgJ3ZpdGVzdC1jb25maWcnIGZyb20gJy4vdml0ZXN0LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnd2Rpby1vYnNpZGlhbicgZnJvbSAnLi93ZGlvLW9ic2lkaWFuLnRzJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUEsMEJBQUFBO0FBQUEsRUFBQSw0QkFBQUM7QUFBQSxFQUFBLDRCQUFBQztBQUFBLEVBQUEsaUNBQUFDO0FBQUEsRUFBQSxxQkFBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQSx1QkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBO0FBQUE7QUFFQSxJQUFBUCxxQkFBc0M7QUFDdEMsSUFBQUQsaUJBQWtDO0FBQ2xDLElBQUFFLHFCQUFzQztBQUN0QyxJQUFBQywwQkFBMkM7QUFDM0MsSUFBQUMsY0FBK0I7QUFDL0IsSUFBQUMsdUJBQXdDO0FBQ3hDLElBQUFDLHVCQUF3QztBQUN4QyxJQUFBQyxnQkFBaUM7QUFDakMsSUFBQUMsZ0JBQWlDOyIsIm5hbWVzIjpbImNvdmVyYWdlLWJhZGdlIiwiY292ZXJhZ2UtYmFkZ2UtY2xpIiwiZTJlLXJ1bm5lci1zdXBwb3J0IiwiaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4iLCJqZXN0LWNvbmZpZyIsIm9ic2lkaWFuLXRlc3QtcnVubmVyIiwicGVyZm9ybWFuY2UtZXZhbC1jYXAiLCJ2aXRlc3QtY29uZmlnIiwid2Rpby1vYnNpZGlhbiJdfQ==
|
|
@@ -3,6 +3,7 @@ export * as 'coverage-badge-cli' from './coverage-badge-cli.cjs';
|
|
|
3
3
|
export * as 'coverage-badge' from './coverage-badge.cjs';
|
|
4
4
|
export * as 'e2e-runner-support' from './e2e-runner-support.cjs';
|
|
5
5
|
export * as 'integration-test-plugin' from './integration-test-plugin.cjs';
|
|
6
|
+
export * as 'jest-config' from './jest-config.cjs';
|
|
6
7
|
export * as 'obsidian-test-runner' from './obsidian-test-runner.cjs';
|
|
7
8
|
export * as 'performance-eval-cap' from './performance-eval-cap.cjs';
|
|
8
9
|
export * as 'vitest-config' from './vitest-config.cjs';
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
(function patchObsidianRequire() {
|
|
33
|
+
const originalRequire = require;
|
|
34
|
+
if (!originalRequire || originalRequire.__isPatched) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
require = Object.assign(
|
|
39
|
+
(id) => requirePatched(id),
|
|
40
|
+
originalRequire,
|
|
41
|
+
{
|
|
42
|
+
__isPatched: true
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
function extractDefault(module) {
|
|
47
|
+
return module && module.__esModule && 'default' in module ? module.default : module;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
51
|
+
'@codemirror/autocomplete',
|
|
52
|
+
'@codemirror/collab',
|
|
53
|
+
'@codemirror/commands',
|
|
54
|
+
'@codemirror/language',
|
|
55
|
+
'@codemirror/lint',
|
|
56
|
+
'@codemirror/search',
|
|
57
|
+
'@codemirror/state',
|
|
58
|
+
'@codemirror/text',
|
|
59
|
+
'@codemirror/view',
|
|
60
|
+
'@lezer/common',
|
|
61
|
+
'@lezer/highlight',
|
|
62
|
+
'@lezer/lr',
|
|
63
|
+
'obsidian']
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
const DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES = new Set([
|
|
67
|
+
'@codemirror/closebrackets',
|
|
68
|
+
'@codemirror/comment',
|
|
69
|
+
'@codemirror/fold',
|
|
70
|
+
'@codemirror/gutter',
|
|
71
|
+
'@codemirror/highlight',
|
|
72
|
+
'@codemirror/history',
|
|
73
|
+
'@codemirror/matchbrackets',
|
|
74
|
+
'@codemirror/panel',
|
|
75
|
+
'@codemirror/rangeset',
|
|
76
|
+
'@codemirror/rectangular-selection',
|
|
77
|
+
'@codemirror/stream-parser',
|
|
78
|
+
'@codemirror/tooltip']
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
function requirePatched(id) {
|
|
82
|
+
if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
|
|
83
|
+
return originalRequire?.(id);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated, obsidianmd/no-global-this -- Need access to app. Actively use globalThis.
|
|
87
|
+
if (globalThis.app.isMobile) {
|
|
88
|
+
if (id === 'process' || id === 'node:process') {
|
|
89
|
+
// eslint-disable-next-line no-console -- Valid usage.
|
|
90
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
|
|
91
|
+
|
|
92
|
+
return process;
|
|
93
|
+
}
|
|
94
|
+
} else {
|
|
95
|
+
const module = originalRequire?.(id);
|
|
96
|
+
if (module) {
|
|
97
|
+
return extractDefault(module);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// eslint-disable-next-line no-console -- Valid usage.
|
|
102
|
+
console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Empty object is returned instead.`);
|
|
103
|
+
return {};
|
|
104
|
+
}
|
|
105
|
+
})();
|
|
106
|
+
|
|
107
|
+
"use strict";
|
|
108
|
+
var __defProp = Object.defineProperty;
|
|
109
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
110
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
111
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
112
|
+
var __export = (target, all) => {
|
|
113
|
+
for (var name in all)
|
|
114
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
115
|
+
};
|
|
116
|
+
var __copyProps = (to, from, except, desc) => {
|
|
117
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
118
|
+
for (let key of __getOwnPropNames(from))
|
|
119
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
120
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
121
|
+
}
|
|
122
|
+
return to;
|
|
123
|
+
};
|
|
124
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
125
|
+
var jest_config_exports = {};
|
|
126
|
+
__export(jest_config_exports, {
|
|
127
|
+
OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN: () => OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN,
|
|
128
|
+
OBSIDIAN_JEST_MODULE_NAME_MAPPER: () => OBSIDIAN_JEST_MODULE_NAME_MAPPER,
|
|
129
|
+
OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV: () => OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV,
|
|
130
|
+
defineObsidianPluginJestConfig: () => defineObsidianPluginJestConfig
|
|
131
|
+
});
|
|
132
|
+
module.exports = __toCommonJS(jest_config_exports);
|
|
133
|
+
var import_jest_config = require('@mnaoumov/typescript-dev-toolkit/test-runners/jest-config');
|
|
134
|
+
const OBSIDIAN_JEST_MODULE_NAME_MAPPER = {
|
|
135
|
+
"^obsidian$": "obsidian-test-mocks/obsidian"
|
|
136
|
+
};
|
|
137
|
+
const OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV = [
|
|
138
|
+
"obsidian-test-mocks/jest-setup",
|
|
139
|
+
"@mnaoumov/obsidian-dev-toolkit/jest-setup"
|
|
140
|
+
];
|
|
141
|
+
const OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN = String.raw`\.integration\.test\.ts$`;
|
|
142
|
+
function defineObsidianPluginJestConfig(options = {}) {
|
|
143
|
+
const { moduleNameMapper, setupFilesAfterEnv = [], testPathIgnorePatterns = [], ...overrides } = options;
|
|
144
|
+
return (0, import_jest_config.defineJestConfig)({
|
|
145
|
+
testEnvironment: "jsdom",
|
|
146
|
+
...overrides,
|
|
147
|
+
moduleNameMapper: {
|
|
148
|
+
...OBSIDIAN_JEST_MODULE_NAME_MAPPER,
|
|
149
|
+
...moduleNameMapper
|
|
150
|
+
},
|
|
151
|
+
setupFilesAfterEnv: [...OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV, ...setupFilesAfterEnv],
|
|
152
|
+
testPathIgnorePatterns: [
|
|
153
|
+
...import_jest_config.DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS,
|
|
154
|
+
OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN,
|
|
155
|
+
...testPathIgnorePatterns
|
|
156
|
+
]
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
160
|
+
0 && (module.exports = {
|
|
161
|
+
OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN,
|
|
162
|
+
OBSIDIAN_JEST_MODULE_NAME_MAPPER,
|
|
163
|
+
OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV,
|
|
164
|
+
defineObsidianPluginJestConfig
|
|
165
|
+
});
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvamVzdC1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNoYXJlZCBqZXN0IGNvbmZpZ3VyYXRpb24gZm9yIE9ic2lkaWFuIHBsdWdpbnM6IHtAbGluayBkZWZpbmVPYnNpZGlhblBsdWdpbkplc3RDb25maWd9LCB0aGUgamVzdCBjb3VudGVycGFydCBvZlxuICogYGRlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnYCdzIGB1bml0LXRlc3RzYCBwcm9qZWN0LlxuICpcbiAqIEl0IGlzIHRoZSBnZW5lcmljIGBkZWZpbmVKZXN0Q29uZmlnYCBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdGAgcGx1cyB3aGF0IGEgcGx1Z2luJ3MgdW5pdCB0ZXN0cyBuZWVkIG9uXG4gKiB0b3A6IHRoZSBganNkb21gIGVudmlyb25tZW50LCBgb2JzaWRpYW5gIHJlc29sdmVkIG9udG8gYG9ic2lkaWFuLXRlc3QtbW9ja3NgICh0aGUgYG9ic2lkaWFuYCBucG0gcGFja2FnZSBjYXJyaWVzXG4gKiB0eXBlcyBvbmx5KSwgdGhlIHR3byBwZXItdGVzdCBzZXR1cCBmaWxlcywgYW5kIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0cyBsZWZ0IHRvIHRoZWlyIG93biBydW5uZXIuIEEgcGx1Z2luIHJ1bnMgaXQgd2l0aFxuICogYHRlc3RgIC8gYHRlc3RDb3ZlcmFnZWAgLyBgdGVzdFdhdGNoYCBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvYXV0b2AsIHdoaWNoIHBpY2tzIGplc3RcbiAqIHdoZW5ldmVyIGEgamVzdCBjb25maWd1cmF0aW9uIGZpbGUgZXhpc3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVmaW5lSmVzdENvbmZpZ09wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvamVzdC1jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICdqZXN0JztcblxuaW1wb3J0IHtcbiAgREVGQVVMVF9KRVNUX1RFU1RfUEFUSF9JR05PUkVfUEFUVEVSTlMsXG4gIGRlZmluZUplc3RDb25maWdcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvdGVzdC1ydW5uZXJzL2plc3QtY29uZmlnJztcblxuLyoqXG4gKiBSZXNvbHZlcyBgb2JzaWRpYW5gIG9udG8gdGhlIG1vY2tzLCBhcyB0aGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24ncyBgb2JzaWRpYW5gIGFsaWFzIGRvZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBPQlNJRElBTl9KRVNUX01PRFVMRV9OQU1FX01BUFBFUjogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gICdeb2JzaWRpYW4kJzogJ29ic2lkaWFuLXRlc3QtbW9ja3Mvb2JzaWRpYW4nXG59O1xuXG4vKipcbiAqIFRoZSBwZXItdGVzdCBzZXR1cCBmaWxlcywgaW4gdGhlIG9yZGVyIHRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBsb2FkcyB0aGVtOiB0aGUgbW9ja3MnIGdsb2JhbHMgYW5kIG1vY2tlZCBgYXBwYFxuICogZmlyc3QsIHRoZW4gdGhpcyBwYWNrYWdlJ3MgcmVzZXQgb2YgdGhlIHNoYXJlZCBzdGF0ZSBiZWZvcmUgZWFjaCB0ZXN0LlxuICpcbiAqIFRoZXkgZ28gaW4gYHNldHVwRmlsZXNBZnRlckVudmAsIG5vdCBgc2V0dXBGaWxlc2AsIGJlY2F1c2UgdGhpcyBwYWNrYWdlJ3Mgc2V0dXAgcmVnaXN0ZXJzIGBiZWZvcmVFYWNoYCBhbmRcbiAqIGBhZnRlckVhY2hgIGhvb2tzLCB3aGljaCBleGlzdCBvbmx5IG9uY2UgdGhlIHRlc3QgZnJhbWV3b3JrIGlzIGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9CU0lESUFOX0pFU1RfU0VUVVBfRklMRVNfQUZURVJfRU5WOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ29ic2lkaWFuLXRlc3QtbW9ja3MvamVzdC1zZXR1cCcsXG4gICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQvamVzdC1zZXR1cCdcbl07XG5cbi8qKlxuICogVGhlIGludGVncmF0aW9uIHRlc3RzLCB3aGljaCBydW4gaW4gYSByZWFsIE9ic2lkaWFuIHRocm91Z2ggYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgIGFuZCBuZXZlciB1bmRlciBqZXN0LlxuICovXG5leHBvcnQgY29uc3QgT0JTSURJQU5fSkVTVF9JTlRFR1JBVElPTl9URVNUX1BBVEhfSUdOT1JFX1BBVFRFUk4gPSBTdHJpbmcucmF3YFxcLmludGVncmF0aW9uXFwudGVzdFxcLnRzJGA7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGRlZmluZU9ic2lkaWFuUGx1Z2luSmVzdENvbmZpZ306IHRoZSBzYW1lIG9uZXMgYGRlZmluZUplc3RDb25maWdgIHRha2VzLlxuICovXG5leHBvcnQgdHlwZSBEZWZpbmVPYnNpZGlhblBsdWdpbkplc3RDb25maWdPcHRpb25zID0gRGVmaW5lSmVzdENvbmZpZ09wdGlvbnM7XG5cbi8qKlxuICogRGVmaW5lcyBhbiBPYnNpZGlhbiBwbHVnaW4ncyBqZXN0IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogT24gdG9wIG9mIGBkZWZpbmVKZXN0Q29uZmlnYCdzIGRlZmF1bHRzOiB0aGUgYGpzZG9tYCBlbnZpcm9ubWVudCAodGhlIG1vY2tzJyBzZXR1cCB3cml0ZXMgdG8gYERvY3VtZW50LnByb3RvdHlwZWAsXG4gKiBgRWxlbWVudC5wcm90b3R5cGVgIGFuZCBgd2luZG93YCksIGBvYnNpZGlhbmAgbWFwcGVkIG9udG8gYG9ic2lkaWFuLXRlc3QtbW9ja3Mvb2JzaWRpYW5gLCB0aGVcbiAqIHtAbGluayBPQlNJRElBTl9KRVNUX1NFVFVQX0ZJTEVTX0FGVEVSX0VOVn0gc2V0dXAgZmlsZXMgYW5kIGAqLmludGVncmF0aW9uLnRlc3QudHNgIGxlZnQgb3V0LiBFdmVyeSBqZXN0IG9wdGlvbiBpblxuICogYG9wdGlvbnNgIHJlcGxhY2VzIGl0cyBkZWZhdWx0LCBleGNlcHQgYG1vZHVsZU5hbWVNYXBwZXJgLCB3aG9zZSBlbnRyaWVzIGFyZSBhZGRlZCB0byB0aGUgYG9ic2lkaWFuYCBvbmUsIGFuZFxuICogYHNldHVwRmlsZXNBZnRlckVudmAgYW5kIGB0ZXN0UGF0aElnbm9yZVBhdHRlcm5zYCwgd2hvc2UgZW50cmllcyBhcmUgYXBwZW5kZWQgdG8gdGhpcyBmdW5jdGlvbidzIG93bi5cbiAqXG4gKiBUaGUgYGpzZG9tYCBlbnZpcm9ubWVudCBuZWVkcyBgamVzdC1lbnZpcm9ubWVudC1qc2RvbWAgaW5zdGFsbGVkIGJlc2lkZSBgamVzdGAgYW5kIGB0cy1qZXN0YC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBzYW1lIGBkZWZpbmVKZXN0Q29uZmlnYCB0YWtlcy5cbiAqIEByZXR1cm5zIFRoZSBqZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVPYnNpZGlhblBsdWdpbkplc3RDb25maWcob3B0aW9uczogRGVmaW5lT2JzaWRpYW5QbHVnaW5KZXN0Q29uZmlnT3B0aW9ucyA9IHt9KTogQ29uZmlnIHtcbiAgY29uc3QgeyBtb2R1bGVOYW1lTWFwcGVyLCBzZXR1cEZpbGVzQWZ0ZXJFbnYgPSBbXSwgdGVzdFBhdGhJZ25vcmVQYXR0ZXJucyA9IFtdLCAuLi5vdmVycmlkZXMgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIGRlZmluZUplc3RDb25maWcoe1xuICAgIHRlc3RFbnZpcm9ubWVudDogJ2pzZG9tJyxcbiAgICAuLi5vdmVycmlkZXMsXG4gICAgbW9kdWxlTmFtZU1hcHBlcjoge1xuICAgICAgLi4uT0JTSURJQU5fSkVTVF9NT0RVTEVfTkFNRV9NQVBQRVIsXG4gICAgICAuLi5tb2R1bGVOYW1lTWFwcGVyXG4gICAgfSxcbiAgICBzZXR1cEZpbGVzQWZ0ZXJFbnY6IFsuLi5PQlNJRElBTl9KRVNUX1NFVFVQX0ZJTEVTX0FGVEVSX0VOViwgLi4uc2V0dXBGaWxlc0FmdGVyRW52XSxcbiAgICB0ZXN0UGF0aElnbm9yZVBhdHRlcm5zOiBbXG4gICAgICAuLi5ERUZBVUxUX0pFU1RfVEVTVF9QQVRIX0lHTk9SRV9QQVRURVJOUyxcbiAgICAgIE9CU0lESUFOX0pFU1RfSU5URUdSQVRJT05fVEVTVF9QQVRIX0lHTk9SRV9QQVRURVJOLFxuICAgICAgLi4udGVzdFBhdGhJZ25vcmVQYXR0ZXJuc1xuICAgIF1cbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZ0JBLHlCQUdPO0FBS0EsTUFBTSxtQ0FBcUU7QUFBQSxFQUNoRixjQUFjO0FBQ2hCO0FBU08sTUFBTSxzQ0FBeUQ7QUFBQSxFQUNwRTtBQUFBLEVBQ0E7QUFDRjtBQUtPLE1BQU0scURBQXFELE9BQU87QUFxQmxFLFNBQVMsK0JBQStCLFVBQWlELENBQUMsR0FBVztBQUMxRyxRQUFNLEVBQUUsa0JBQWtCLHFCQUFxQixDQUFDLEdBQUcseUJBQXlCLENBQUMsR0FBRyxHQUFHLFVBQVUsSUFBSTtBQUVqRyxhQUFPLHFDQUFpQjtBQUFBLElBQ3RCLGlCQUFpQjtBQUFBLElBQ2pCLEdBQUc7QUFBQSxJQUNILGtCQUFrQjtBQUFBLE1BQ2hCLEdBQUc7QUFBQSxNQUNILEdBQUc7QUFBQSxJQUNMO0FBQUEsSUFDQSxvQkFBb0IsQ0FBQyxHQUFHLHFDQUFxQyxHQUFHLGtCQUFrQjtBQUFBLElBQ2xGLHdCQUF3QjtBQUFBLE1BQ3RCLEdBQUc7QUFBQSxNQUNIO0FBQUEsTUFDQSxHQUFHO0FBQUEsSUFDTDtBQUFBLEVBQ0YsQ0FBQztBQUNIOyIsIm5hbWVzIjpbXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Shared jest configuration for Obsidian plugins: {@link defineObsidianPluginJestConfig}, the jest counterpart of
|
|
6
|
+
* `defineObsidianPluginVitestConfig`'s `unit-tests` project.
|
|
7
|
+
*
|
|
8
|
+
* It is the generic `defineJestConfig` from `@mnaoumov/typescript-dev-toolkit` plus what a plugin's unit tests need on
|
|
9
|
+
* top: the `jsdom` environment, `obsidian` resolved onto `obsidian-test-mocks` (the `obsidian` npm package carries
|
|
10
|
+
* types only), the two per-test setup files, and the integration tests left to their own runner. A plugin runs it with
|
|
11
|
+
* `test` / `testCoverage` / `testWatch` from `@mnaoumov/typescript-dev-toolkit/test-runners/auto`, which picks jest
|
|
12
|
+
* whenever a jest configuration file exists.
|
|
13
|
+
*/
|
|
14
|
+
import type { DefineJestConfigOptions } from '@mnaoumov/typescript-dev-toolkit/test-runners/jest-config' with { 'resolution-mode': 'import' };
|
|
15
|
+
import type { Config } from 'jest' with { 'resolution-mode': 'import' };
|
|
16
|
+
/**
|
|
17
|
+
* Resolves `obsidian` onto the mocks, as the vitest configuration's `obsidian` alias does.
|
|
18
|
+
*/
|
|
19
|
+
export declare const OBSIDIAN_JEST_MODULE_NAME_MAPPER: Readonly<Record<string, string>>;
|
|
20
|
+
/**
|
|
21
|
+
* The per-test setup files, in the order the vitest configuration loads them: the mocks' globals and mocked `app`
|
|
22
|
+
* first, then this package's reset of the shared state before each test.
|
|
23
|
+
*
|
|
24
|
+
* They go in `setupFilesAfterEnv`, not `setupFiles`, because this package's setup registers `beforeEach` and
|
|
25
|
+
* `afterEach` hooks, which exist only once the test framework is installed.
|
|
26
|
+
*/
|
|
27
|
+
export declare const OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV: readonly string[];
|
|
28
|
+
/**
|
|
29
|
+
* The integration tests, which run in a real Obsidian through `obsidian-integration-testing` and never under jest.
|
|
30
|
+
*/
|
|
31
|
+
export declare const OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN: string;
|
|
32
|
+
/**
|
|
33
|
+
* Options for {@link defineObsidianPluginJestConfig}: the same ones `defineJestConfig` takes.
|
|
34
|
+
*/
|
|
35
|
+
export type DefineObsidianPluginJestConfigOptions = DefineJestConfigOptions;
|
|
36
|
+
/**
|
|
37
|
+
* Defines an Obsidian plugin's jest configuration.
|
|
38
|
+
*
|
|
39
|
+
* On top of `defineJestConfig`'s defaults: the `jsdom` environment (the mocks' setup writes to `Document.prototype`,
|
|
40
|
+
* `Element.prototype` and `window`), `obsidian` mapped onto `obsidian-test-mocks/obsidian`, the
|
|
41
|
+
* {@link OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV} setup files and `*.integration.test.ts` left out. Every jest option in
|
|
42
|
+
* `options` replaces its default, except `moduleNameMapper`, whose entries are added to the `obsidian` one, and
|
|
43
|
+
* `setupFilesAfterEnv` and `testPathIgnorePatterns`, whose entries are appended to this function's own.
|
|
44
|
+
*
|
|
45
|
+
* The `jsdom` environment needs `jest-environment-jsdom` installed beside `jest` and `ts-jest`.
|
|
46
|
+
*
|
|
47
|
+
* @param options - The configuration options, the same `defineJestConfig` takes.
|
|
48
|
+
* @returns The jest configuration.
|
|
49
|
+
*/
|
|
50
|
+
export declare function defineObsidianPluginJestConfig(options?: DefineObsidianPluginJestConfigOptions): Config;
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Jest setup file for Obsidian plugins built on `@mnaoumov/obsidian-lib`.
|
|
6
6
|
*
|
|
7
|
-
* Add it to your Jest config's `
|
|
7
|
+
* Add it to your Jest config's `setupFilesAfterEnv` (or import it from another setup file);
|
|
8
|
+
* `defineObsidianPluginJestConfig` adds it for you. Before
|
|
8
9
|
* each test it resets the generic shared-state slot, the `__obsidianDevUtils` bag and the library contexts, and enables async-operation tracking; after each test it
|
|
9
10
|
* disables tracking, so tests can `await waitForAllAsyncOperations()` against isolated state.
|
|
10
11
|
*
|
|
@@ -41,4 +41,4 @@ setup({
|
|
|
41
41
|
afterEach,
|
|
42
42
|
beforeEach
|
|
43
43
|
});
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9qZXN0LXNldHVwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBKZXN0IHNldHVwIGZpbGUgZm9yIE9ic2lkaWFuIHBsdWdpbnMgYnVpbHQgb24gYEBtbmFvdW1vdi9vYnNpZGlhbi1saWJgLlxuICpcbiAqIEFkZCBpdCB0byB5b3VyIEplc3QgY29uZmlnJ3MgYHNldHVwRmlsZXNBZnRlckVudmAgKG9yIGltcG9ydCBpdCBmcm9tIGFub3RoZXIgc2V0dXAgZmlsZSk7XG4gKiBgZGVmaW5lT2JzaWRpYW5QbHVnaW5KZXN0Q29uZmlnYCBhZGRzIGl0IGZvciB5b3UuIEJlZm9yZVxuICogZWFjaCB0ZXN0IGl0IHJlc2V0cyB0aGUgZ2VuZXJpYyBzaGFyZWQtc3RhdGUgc2xvdCwgdGhlIGBfX29ic2lkaWFuRGV2VXRpbHNgIGJhZyBhbmQgdGhlIGxpYnJhcnkgY29udGV4dHMsIGFuZCBlbmFibGVzIGFzeW5jLW9wZXJhdGlvbiB0cmFja2luZzsgYWZ0ZXIgZWFjaCB0ZXN0IGl0XG4gKiBkaXNhYmxlcyB0cmFja2luZywgc28gdGVzdHMgY2FuIGBhd2FpdCB3YWl0Rm9yQWxsQXN5bmNPcGVyYXRpb25zKClgIGFnYWluc3QgaXNvbGF0ZWQgc3RhdGUuXG4gKlxuICogVGhpcyBpcyBhIHBlci10ZXN0IHNldHVwIGZpbGUsIG5vdCBhIEplc3QgYGdsb2JhbFNldHVwYCBtb2R1bGUsIHNvIGl0IGhhcyBubyBkZWZhdWx0IGV4cG9ydC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gVGhpbiBKZXN0IHNldHVwLWZpbGUgZ2x1ZTsgc2V0dXAgaXMgdW5pdC10ZXN0ZWQgc2VwYXJhdGVseS4gKi9cbmltcG9ydCB7XG4gIGFmdGVyQWxsLFxuICBhZnRlckVhY2gsXG4gIGJlZm9yZUVhY2hcbn0gZnJvbSAnQGplc3QvZ2xvYmFscyc7XG5cbmltcG9ydCB7IHNldHVwIH0gZnJvbSAnLi9zZXR1cC50cyc7XG5cbnNldHVwKHtcbiAgYWZ0ZXJBbGwsXG4gIGFmdGVyRWFjaCxcbiAgYmVmb3JlRWFjaFxufSk7XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUVQLFNBQVMsYUFBYTtBQUV0QixNQUFNO0FBQUEsRUFDSjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsQ0FBQzsiLCJuYW1lcyI6W119
|
|
@@ -3,6 +3,7 @@ export * as 'coverage-badge-cli' from './coverage-badge-cli.mjs';
|
|
|
3
3
|
export * as 'coverage-badge' from './coverage-badge.mjs';
|
|
4
4
|
export * as 'e2e-runner-support' from './e2e-runner-support.mjs';
|
|
5
5
|
export * as 'integration-test-plugin' from './integration-test-plugin.mjs';
|
|
6
|
+
export * as 'jest-config' from './jest-config.mjs';
|
|
6
7
|
export * as 'obsidian-test-runner' from './obsidian-test-runner.mjs';
|
|
7
8
|
export * as 'performance-eval-cap' from './performance-eval-cap.mjs';
|
|
8
9
|
export * as 'vitest-config' from './vitest-config.mjs';
|
|
@@ -7,6 +7,7 @@ import * as coverage_badge_cli from "./coverage-badge-cli.mjs";
|
|
|
7
7
|
import * as coverage_badge from "./coverage-badge.mjs";
|
|
8
8
|
import * as e2e_runner_support from "./e2e-runner-support.mjs";
|
|
9
9
|
import * as integration_test_plugin from "./integration-test-plugin.mjs";
|
|
10
|
+
import * as jest_config from "./jest-config.mjs";
|
|
10
11
|
import * as obsidian_test_runner from "./obsidian-test-runner.mjs";
|
|
11
12
|
import * as performance_eval_cap from "./performance-eval-cap.mjs";
|
|
12
13
|
import * as vitest_config from "./vitest-config.mjs";
|
|
@@ -16,9 +17,10 @@ export {
|
|
|
16
17
|
coverage_badge_cli as "coverage-badge-cli",
|
|
17
18
|
e2e_runner_support as "e2e-runner-support",
|
|
18
19
|
integration_test_plugin as "integration-test-plugin",
|
|
20
|
+
jest_config as "jest-config",
|
|
19
21
|
obsidian_test_runner as "obsidian-test-runner",
|
|
20
22
|
performance_eval_cap as "performance-eval-cap",
|
|
21
23
|
vitest_config as "vitest-config",
|
|
22
24
|
wdio_obsidian as "wdio-obsidian"
|
|
23
25
|
};
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3Rlc3QtcnVubmVycy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdjb3ZlcmFnZS1iYWRnZS1jbGknIGZyb20gJy4vY292ZXJhZ2UtYmFkZ2UtY2xpLnRzJztcbmV4cG9ydCAqIGFzICdjb3ZlcmFnZS1iYWRnZScgZnJvbSAnLi9jb3ZlcmFnZS1iYWRnZS50cyc7XG5leHBvcnQgKiBhcyAnZTJlLXJ1bm5lci1zdXBwb3J0JyBmcm9tICcuL2UyZS1ydW5uZXItc3VwcG9ydC50cyc7XG5leHBvcnQgKiBhcyAnaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4nIGZyb20gJy4vaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgJ2plc3QtY29uZmlnJyBmcm9tICcuL2plc3QtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICdvYnNpZGlhbi10ZXN0LXJ1bm5lcicgZnJvbSAnLi9vYnNpZGlhbi10ZXN0LXJ1bm5lci50cyc7XG5leHBvcnQgKiBhcyAncGVyZm9ybWFuY2UtZXZhbC1jYXAnIGZyb20gJy4vcGVyZm9ybWFuY2UtZXZhbC1jYXAudHMnO1xuZXhwb3J0ICogYXMgJ3ZpdGVzdC1jb25maWcnIGZyb20gJy4vdml0ZXN0LWNvbmZpZy50cyc7XG5leHBvcnQgKiBhcyAnd2Rpby1vYnNpZGlhbicgZnJvbSAnLi93ZGlvLW9ic2lkaWFuLnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsd0JBQTBCO0FBQ3RDLFlBQVlDLG9CQUFzQjtBQUNsQyxZQUFZQyx3QkFBMEI7QUFDdEMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLGlCQUFtQjtBQUMvQixZQUFZQywwQkFBNEI7QUFDeEMsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLG1CQUFxQjtBQUNqQyxZQUFZQyxtQkFBcUI7IiwKICAibmFtZXMiOiBbImNvdmVyYWdlLWJhZGdlLWNsaSIsICJjb3ZlcmFnZS1iYWRnZSIsICJlMmUtcnVubmVyLXN1cHBvcnQiLCAiaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4iLCAiamVzdC1jb25maWciLCAib2JzaWRpYW4tdGVzdC1ydW5uZXIiLCAicGVyZm9ybWFuY2UtZXZhbC1jYXAiLCAidml0ZXN0LWNvbmZpZyIsICJ3ZGlvLW9ic2lkaWFuIl0KfQo=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Shared jest configuration for Obsidian plugins: {@link defineObsidianPluginJestConfig}, the jest counterpart of
|
|
6
|
+
* `defineObsidianPluginVitestConfig`'s `unit-tests` project.
|
|
7
|
+
*
|
|
8
|
+
* It is the generic `defineJestConfig` from `@mnaoumov/typescript-dev-toolkit` plus what a plugin's unit tests need on
|
|
9
|
+
* top: the `jsdom` environment, `obsidian` resolved onto `obsidian-test-mocks` (the `obsidian` npm package carries
|
|
10
|
+
* types only), the two per-test setup files, and the integration tests left to their own runner. A plugin runs it with
|
|
11
|
+
* `test` / `testCoverage` / `testWatch` from `@mnaoumov/typescript-dev-toolkit/test-runners/auto`, which picks jest
|
|
12
|
+
* whenever a jest configuration file exists.
|
|
13
|
+
*/
|
|
14
|
+
import type { DefineJestConfigOptions } from '@mnaoumov/typescript-dev-toolkit/test-runners/jest-config';
|
|
15
|
+
import type { Config } from 'jest';
|
|
16
|
+
/**
|
|
17
|
+
* Resolves `obsidian` onto the mocks, as the vitest configuration's `obsidian` alias does.
|
|
18
|
+
*/
|
|
19
|
+
export declare const OBSIDIAN_JEST_MODULE_NAME_MAPPER: Readonly<Record<string, string>>;
|
|
20
|
+
/**
|
|
21
|
+
* The per-test setup files, in the order the vitest configuration loads them: the mocks' globals and mocked `app`
|
|
22
|
+
* first, then this package's reset of the shared state before each test.
|
|
23
|
+
*
|
|
24
|
+
* They go in `setupFilesAfterEnv`, not `setupFiles`, because this package's setup registers `beforeEach` and
|
|
25
|
+
* `afterEach` hooks, which exist only once the test framework is installed.
|
|
26
|
+
*/
|
|
27
|
+
export declare const OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV: readonly string[];
|
|
28
|
+
/**
|
|
29
|
+
* The integration tests, which run in a real Obsidian through `obsidian-integration-testing` and never under jest.
|
|
30
|
+
*/
|
|
31
|
+
export declare const OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN: string;
|
|
32
|
+
/**
|
|
33
|
+
* Options for {@link defineObsidianPluginJestConfig}: the same ones `defineJestConfig` takes.
|
|
34
|
+
*/
|
|
35
|
+
export type DefineObsidianPluginJestConfigOptions = DefineJestConfigOptions;
|
|
36
|
+
/**
|
|
37
|
+
* Defines an Obsidian plugin's jest configuration.
|
|
38
|
+
*
|
|
39
|
+
* On top of `defineJestConfig`'s defaults: the `jsdom` environment (the mocks' setup writes to `Document.prototype`,
|
|
40
|
+
* `Element.prototype` and `window`), `obsidian` mapped onto `obsidian-test-mocks/obsidian`, the
|
|
41
|
+
* {@link OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV} setup files and `*.integration.test.ts` left out. Every jest option in
|
|
42
|
+
* `options` replaces its default, except `moduleNameMapper`, whose entries are added to the `obsidian` one, and
|
|
43
|
+
* `setupFilesAfterEnv` and `testPathIgnorePatterns`, whose entries are appended to this function's own.
|
|
44
|
+
*
|
|
45
|
+
* The `jsdom` environment needs `jest-environment-jsdom` installed beside `jest` and `ts-jest`.
|
|
46
|
+
*
|
|
47
|
+
* @param options - The configuration options, the same `defineJestConfig` takes.
|
|
48
|
+
* @returns The jest configuration.
|
|
49
|
+
*/
|
|
50
|
+
export declare function defineObsidianPluginJestConfig(options?: DefineObsidianPluginJestConfigOptions): Config;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
|
|
33
|
+
import {
|
|
34
|
+
DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS,
|
|
35
|
+
defineJestConfig
|
|
36
|
+
} from "@mnaoumov/typescript-dev-toolkit/test-runners/jest-config";
|
|
37
|
+
const OBSIDIAN_JEST_MODULE_NAME_MAPPER = {
|
|
38
|
+
"^obsidian$": "obsidian-test-mocks/obsidian"
|
|
39
|
+
};
|
|
40
|
+
const OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV = [
|
|
41
|
+
"obsidian-test-mocks/jest-setup",
|
|
42
|
+
"@mnaoumov/obsidian-dev-toolkit/jest-setup"
|
|
43
|
+
];
|
|
44
|
+
const OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN = String.raw`\.integration\.test\.ts$`;
|
|
45
|
+
function defineObsidianPluginJestConfig(options = {}) {
|
|
46
|
+
const { moduleNameMapper, setupFilesAfterEnv = [], testPathIgnorePatterns = [], ...overrides } = options;
|
|
47
|
+
return defineJestConfig({
|
|
48
|
+
testEnvironment: "jsdom",
|
|
49
|
+
...overrides,
|
|
50
|
+
moduleNameMapper: {
|
|
51
|
+
...OBSIDIAN_JEST_MODULE_NAME_MAPPER,
|
|
52
|
+
...moduleNameMapper
|
|
53
|
+
},
|
|
54
|
+
setupFilesAfterEnv: [...OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV, ...setupFilesAfterEnv],
|
|
55
|
+
testPathIgnorePatterns: [
|
|
56
|
+
...DEFAULT_JEST_TEST_PATH_IGNORE_PATTERNS,
|
|
57
|
+
OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN,
|
|
58
|
+
...testPathIgnorePatterns
|
|
59
|
+
]
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
OBSIDIAN_JEST_INTEGRATION_TEST_PATH_IGNORE_PATTERN,
|
|
64
|
+
OBSIDIAN_JEST_MODULE_NAME_MAPPER,
|
|
65
|
+
OBSIDIAN_JEST_SETUP_FILES_AFTER_ENV,
|
|
66
|
+
defineObsidianPluginJestConfig
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvamVzdC1jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFNoYXJlZCBqZXN0IGNvbmZpZ3VyYXRpb24gZm9yIE9ic2lkaWFuIHBsdWdpbnM6IHtAbGluayBkZWZpbmVPYnNpZGlhblBsdWdpbkplc3RDb25maWd9LCB0aGUgamVzdCBjb3VudGVycGFydCBvZlxuICogYGRlZmluZU9ic2lkaWFuUGx1Z2luVml0ZXN0Q29uZmlnYCdzIGB1bml0LXRlc3RzYCBwcm9qZWN0LlxuICpcbiAqIEl0IGlzIHRoZSBnZW5lcmljIGBkZWZpbmVKZXN0Q29uZmlnYCBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdGAgcGx1cyB3aGF0IGEgcGx1Z2luJ3MgdW5pdCB0ZXN0cyBuZWVkIG9uXG4gKiB0b3A6IHRoZSBganNkb21gIGVudmlyb25tZW50LCBgb2JzaWRpYW5gIHJlc29sdmVkIG9udG8gYG9ic2lkaWFuLXRlc3QtbW9ja3NgICh0aGUgYG9ic2lkaWFuYCBucG0gcGFja2FnZSBjYXJyaWVzXG4gKiB0eXBlcyBvbmx5KSwgdGhlIHR3byBwZXItdGVzdCBzZXR1cCBmaWxlcywgYW5kIHRoZSBpbnRlZ3JhdGlvbiB0ZXN0cyBsZWZ0IHRvIHRoZWlyIG93biBydW5uZXIuIEEgcGx1Z2luIHJ1bnMgaXQgd2l0aFxuICogYHRlc3RgIC8gYHRlc3RDb3ZlcmFnZWAgLyBgdGVzdFdhdGNoYCBmcm9tIGBAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvYXV0b2AsIHdoaWNoIHBpY2tzIGplc3RcbiAqIHdoZW5ldmVyIGEgamVzdCBjb25maWd1cmF0aW9uIGZpbGUgZXhpc3RzLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRGVmaW5lSmVzdENvbmZpZ09wdGlvbnMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvamVzdC1jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICdqZXN0JztcblxuaW1wb3J0IHtcbiAgREVGQVVMVF9KRVNUX1RFU1RfUEFUSF9JR05PUkVfUEFUVEVSTlMsXG4gIGRlZmluZUplc3RDb25maWdcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvdGVzdC1ydW5uZXJzL2plc3QtY29uZmlnJztcblxuLyoqXG4gKiBSZXNvbHZlcyBgb2JzaWRpYW5gIG9udG8gdGhlIG1vY2tzLCBhcyB0aGUgdml0ZXN0IGNvbmZpZ3VyYXRpb24ncyBgb2JzaWRpYW5gIGFsaWFzIGRvZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBPQlNJRElBTl9KRVNUX01PRFVMRV9OQU1FX01BUFBFUjogUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPSB7XG4gICdeb2JzaWRpYW4kJzogJ29ic2lkaWFuLXRlc3QtbW9ja3Mvb2JzaWRpYW4nXG59O1xuXG4vKipcbiAqIFRoZSBwZXItdGVzdCBzZXR1cCBmaWxlcywgaW4gdGhlIG9yZGVyIHRoZSB2aXRlc3QgY29uZmlndXJhdGlvbiBsb2FkcyB0aGVtOiB0aGUgbW9ja3MnIGdsb2JhbHMgYW5kIG1vY2tlZCBgYXBwYFxuICogZmlyc3QsIHRoZW4gdGhpcyBwYWNrYWdlJ3MgcmVzZXQgb2YgdGhlIHNoYXJlZCBzdGF0ZSBiZWZvcmUgZWFjaCB0ZXN0LlxuICpcbiAqIFRoZXkgZ28gaW4gYHNldHVwRmlsZXNBZnRlckVudmAsIG5vdCBgc2V0dXBGaWxlc2AsIGJlY2F1c2UgdGhpcyBwYWNrYWdlJ3Mgc2V0dXAgcmVnaXN0ZXJzIGBiZWZvcmVFYWNoYCBhbmRcbiAqIGBhZnRlckVhY2hgIGhvb2tzLCB3aGljaCBleGlzdCBvbmx5IG9uY2UgdGhlIHRlc3QgZnJhbWV3b3JrIGlzIGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9CU0lESUFOX0pFU1RfU0VUVVBfRklMRVNfQUZURVJfRU5WOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgJ29ic2lkaWFuLXRlc3QtbW9ja3MvamVzdC1zZXR1cCcsXG4gICdAbW5hb3Vtb3Yvb2JzaWRpYW4tZGV2LXRvb2xraXQvamVzdC1zZXR1cCdcbl07XG5cbi8qKlxuICogVGhlIGludGVncmF0aW9uIHRlc3RzLCB3aGljaCBydW4gaW4gYSByZWFsIE9ic2lkaWFuIHRocm91Z2ggYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmdgIGFuZCBuZXZlciB1bmRlciBqZXN0LlxuICovXG5leHBvcnQgY29uc3QgT0JTSURJQU5fSkVTVF9JTlRFR1JBVElPTl9URVNUX1BBVEhfSUdOT1JFX1BBVFRFUk4gPSBTdHJpbmcucmF3YFxcLmludGVncmF0aW9uXFwudGVzdFxcLnRzJGA7XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIGRlZmluZU9ic2lkaWFuUGx1Z2luSmVzdENvbmZpZ306IHRoZSBzYW1lIG9uZXMgYGRlZmluZUplc3RDb25maWdgIHRha2VzLlxuICovXG5leHBvcnQgdHlwZSBEZWZpbmVPYnNpZGlhblBsdWdpbkplc3RDb25maWdPcHRpb25zID0gRGVmaW5lSmVzdENvbmZpZ09wdGlvbnM7XG5cbi8qKlxuICogRGVmaW5lcyBhbiBPYnNpZGlhbiBwbHVnaW4ncyBqZXN0IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogT24gdG9wIG9mIGBkZWZpbmVKZXN0Q29uZmlnYCdzIGRlZmF1bHRzOiB0aGUgYGpzZG9tYCBlbnZpcm9ubWVudCAodGhlIG1vY2tzJyBzZXR1cCB3cml0ZXMgdG8gYERvY3VtZW50LnByb3RvdHlwZWAsXG4gKiBgRWxlbWVudC5wcm90b3R5cGVgIGFuZCBgd2luZG93YCksIGBvYnNpZGlhbmAgbWFwcGVkIG9udG8gYG9ic2lkaWFuLXRlc3QtbW9ja3Mvb2JzaWRpYW5gLCB0aGVcbiAqIHtAbGluayBPQlNJRElBTl9KRVNUX1NFVFVQX0ZJTEVTX0FGVEVSX0VOVn0gc2V0dXAgZmlsZXMgYW5kIGAqLmludGVncmF0aW9uLnRlc3QudHNgIGxlZnQgb3V0LiBFdmVyeSBqZXN0IG9wdGlvbiBpblxuICogYG9wdGlvbnNgIHJlcGxhY2VzIGl0cyBkZWZhdWx0LCBleGNlcHQgYG1vZHVsZU5hbWVNYXBwZXJgLCB3aG9zZSBlbnRyaWVzIGFyZSBhZGRlZCB0byB0aGUgYG9ic2lkaWFuYCBvbmUsIGFuZFxuICogYHNldHVwRmlsZXNBZnRlckVudmAgYW5kIGB0ZXN0UGF0aElnbm9yZVBhdHRlcm5zYCwgd2hvc2UgZW50cmllcyBhcmUgYXBwZW5kZWQgdG8gdGhpcyBmdW5jdGlvbidzIG93bi5cbiAqXG4gKiBUaGUgYGpzZG9tYCBlbnZpcm9ubWVudCBuZWVkcyBgamVzdC1lbnZpcm9ubWVudC1qc2RvbWAgaW5zdGFsbGVkIGJlc2lkZSBgamVzdGAgYW5kIGB0cy1qZXN0YC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIHRoZSBzYW1lIGBkZWZpbmVKZXN0Q29uZmlnYCB0YWtlcy5cbiAqIEByZXR1cm5zIFRoZSBqZXN0IGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVPYnNpZGlhblBsdWdpbkplc3RDb25maWcob3B0aW9uczogRGVmaW5lT2JzaWRpYW5QbHVnaW5KZXN0Q29uZmlnT3B0aW9ucyA9IHt9KTogQ29uZmlnIHtcbiAgY29uc3QgeyBtb2R1bGVOYW1lTWFwcGVyLCBzZXR1cEZpbGVzQWZ0ZXJFbnYgPSBbXSwgdGVzdFBhdGhJZ25vcmVQYXR0ZXJucyA9IFtdLCAuLi5vdmVycmlkZXMgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIGRlZmluZUplc3RDb25maWcoe1xuICAgIHRlc3RFbnZpcm9ubWVudDogJ2pzZG9tJyxcbiAgICAuLi5vdmVycmlkZXMsXG4gICAgbW9kdWxlTmFtZU1hcHBlcjoge1xuICAgICAgLi4uT0JTSURJQU5fSkVTVF9NT0RVTEVfTkFNRV9NQVBQRVIsXG4gICAgICAuLi5tb2R1bGVOYW1lTWFwcGVyXG4gICAgfSxcbiAgICBzZXR1cEZpbGVzQWZ0ZXJFbnY6IFsuLi5PQlNJRElBTl9KRVNUX1NFVFVQX0ZJTEVTX0FGVEVSX0VOViwgLi4uc2V0dXBGaWxlc0FmdGVyRW52XSxcbiAgICB0ZXN0UGF0aElnbm9yZVBhdHRlcm5zOiBbXG4gICAgICAuLi5ERUZBVUxUX0pFU1RfVEVTVF9QQVRIX0lHTk9SRV9QQVRURVJOUyxcbiAgICAgIE9CU0lESUFOX0pFU1RfSU5URUdSQVRJT05fVEVTVF9QQVRIX0lHTk9SRV9QQVRURVJOLFxuICAgICAgLi4udGVzdFBhdGhJZ25vcmVQYXR0ZXJuc1xuICAgIF1cbiAgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZ0JBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBS0EsTUFBTSxtQ0FBcUU7QUFBQSxFQUNoRixjQUFjO0FBQ2hCO0FBU08sTUFBTSxzQ0FBeUQ7QUFBQSxFQUNwRTtBQUFBLEVBQ0E7QUFDRjtBQUtPLE1BQU0scURBQXFELE9BQU87QUFxQmxFLFNBQVMsK0JBQStCLFVBQWlELENBQUMsR0FBVztBQUMxRyxRQUFNLEVBQUUsa0JBQWtCLHFCQUFxQixDQUFDLEdBQUcseUJBQXlCLENBQUMsR0FBRyxHQUFHLFVBQVUsSUFBSTtBQUVqRyxTQUFPLGlCQUFpQjtBQUFBLElBQ3RCLGlCQUFpQjtBQUFBLElBQ2pCLEdBQUc7QUFBQSxJQUNILGtCQUFrQjtBQUFBLE1BQ2hCLEdBQUc7QUFBQSxNQUNILEdBQUc7QUFBQSxJQUNMO0FBQUEsSUFDQSxvQkFBb0IsQ0FBQyxHQUFHLHFDQUFxQyxHQUFHLGtCQUFrQjtBQUFBLElBQ2xGLHdCQUF3QjtBQUFBLE1BQ3RCLEdBQUc7QUFBQSxNQUNIO0FBQUEsTUFDQSxHQUFHO0FBQUEsSUFDTDtBQUFBLEVBQ0YsQ0FBQztBQUNIOyIsIm5hbWVzIjpbXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mnaoumov/obsidian-dev-toolkit",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Tooling for Obsidian plugin development: the plugin builder for esbuild, vite, rollup, webpack and parcel, shared ESLint/Vitest configs, demo vaults and the release script.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"obsidian",
|
|
@@ -252,12 +252,13 @@
|
|
|
252
252
|
"test": "jiti scripts/test.ts",
|
|
253
253
|
"test:coverage": "jiti scripts/test-coverage.ts",
|
|
254
254
|
"test:integration": "jiti scripts/test-integration.ts",
|
|
255
|
+
"test:integration:obsidian": "jiti scripts/test-integration-obsidian.ts",
|
|
255
256
|
"test:watch": "jiti scripts/test-watch.ts",
|
|
256
257
|
"version": "jiti scripts/version.ts"
|
|
257
258
|
},
|
|
258
259
|
"dependencies": {
|
|
259
260
|
"@eslint/json": "^2.1.0",
|
|
260
|
-
"@mnaoumov/typescript-dev-toolkit": "^3.
|
|
261
|
+
"@mnaoumov/typescript-dev-toolkit": "^3.5.0",
|
|
261
262
|
"@mnaoumov/typescript-lib": "^1.0.0",
|
|
262
263
|
"@mnaoumov/typescript-test-toolkit": "^1.0.0",
|
|
263
264
|
"@types/babel__core": "^7.20.5",
|
|
@@ -313,6 +314,8 @@
|
|
|
313
314
|
"dprint": "^0.57.4",
|
|
314
315
|
"esbuild-loader": "^4.5.0",
|
|
315
316
|
"husky": "^9.1.7",
|
|
317
|
+
"jest": "^30.5.2",
|
|
318
|
+
"jest-environment-jsdom": "^30.5.2",
|
|
316
319
|
"jiti": "^2.7.0",
|
|
317
320
|
"jsdom": "^30.1.3",
|
|
318
321
|
"markdownlint-cli2": "^0.23.2",
|
|
@@ -330,6 +333,7 @@
|
|
|
330
333
|
"solid-js": "^1.9.17",
|
|
331
334
|
"svelte": "^5.57.2",
|
|
332
335
|
"tailwindcss": "^4.3.3",
|
|
336
|
+
"ts-jest": "^29.4.15",
|
|
333
337
|
"ts-morph": "^28.0.0",
|
|
334
338
|
"tslib": "^2.8.1",
|
|
335
339
|
"typedoc-plugin-mdn-links": "^5.1.1",
|
|
@@ -351,10 +355,13 @@
|
|
|
351
355
|
"@tailwindcss/postcss": "^4.3.3",
|
|
352
356
|
"babel-preset-solid": "^1.9.16",
|
|
353
357
|
"css-loader": "^7.1.5",
|
|
358
|
+
"jest": "^30.5.2",
|
|
359
|
+
"jest-environment-jsdom": "^30.5.2",
|
|
354
360
|
"mini-css-extract-plugin": "^2.10.2",
|
|
355
361
|
"obsidian-integration-testing": "^17.3.0",
|
|
356
362
|
"rollup": "^4.64.7",
|
|
357
363
|
"svelte": "^5.57.2",
|
|
364
|
+
"ts-jest": "^29.4.15",
|
|
358
365
|
"unplugin-vue": "^8.0.0",
|
|
359
366
|
"vite": "^8.3.4",
|
|
360
367
|
"vitest": "^5.0.1",
|
|
@@ -388,6 +395,12 @@
|
|
|
388
395
|
"css-loader": {
|
|
389
396
|
"optional": true
|
|
390
397
|
},
|
|
398
|
+
"jest": {
|
|
399
|
+
"optional": true
|
|
400
|
+
},
|
|
401
|
+
"jest-environment-jsdom": {
|
|
402
|
+
"optional": true
|
|
403
|
+
},
|
|
391
404
|
"mini-css-extract-plugin": {
|
|
392
405
|
"optional": true
|
|
393
406
|
},
|
|
@@ -400,6 +413,9 @@
|
|
|
400
413
|
"svelte": {
|
|
401
414
|
"optional": true
|
|
402
415
|
},
|
|
416
|
+
"ts-jest": {
|
|
417
|
+
"optional": true
|
|
418
|
+
},
|
|
403
419
|
"unplugin-vue": {
|
|
404
420
|
"optional": true
|
|
405
421
|
},
|