@mnaoumov/obsidian-dev-toolkit 2.1.0 → 3.0.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 +5 -1
- package/bin/archive-demo-vault.mjs +8 -0
- package/bin/generate-coverage-badge.mjs +8 -0
- package/bundlers/esbuild-impl/feature-options/package.json +6 -0
- package/bundlers/obsidian-cli-reload/package.json +6 -0
- package/bundlers/obsidian-plugin-build/package.json +6 -0
- package/bundlers/obsidian-plugin-features/package.json +6 -0
- package/bundlers/obsidian-plugin-transforms/package.json +6 -0
- package/bundlers/obsidian-plugin-webpack-loader/package.json +6 -0
- package/bundlers/obsidian-plugins-folder-deployment/package.json +6 -0
- package/bundlers/parcel/package.json +6 -0
- package/bundlers/rollup/package.json +6 -0
- package/bundlers/rollup-compatible/package.json +6 -0
- package/bundlers/rollup-compatible-features/package.json +6 -0
- package/bundlers/vite/package.json +6 -0
- package/bundlers/webpack/package.json +6 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.cjs +3 -188
- package/dist/lib/cjs/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.cts +2 -18
- package/dist/lib/cjs/bundlers/esbuild-impl/feature-options.cjs +173 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/feature-options.d.cts +60 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/index.cjs +4 -1
- package/dist/lib/cjs/bundlers/esbuild-impl/index.d.cts +1 -0
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.cjs +30 -82
- package/dist/lib/cjs/bundlers/esbuild-impl/obsidian-plugin-builder.d.cts +7 -24
- package/dist/lib/cjs/bundlers/index.cjs +39 -3
- package/dist/lib/cjs/bundlers/index.d.cts +12 -0
- package/dist/lib/cjs/bundlers/obsidian-cli-reload.cjs +182 -0
- package/dist/lib/cjs/bundlers/obsidian-cli-reload.d.cts +37 -0
- package/dist/lib/cjs/bundlers/obsidian-plugin-build.cjs +278 -0
- package/dist/lib/cjs/bundlers/obsidian-plugin-build.d.cts +217 -0
- package/dist/lib/cjs/bundlers/obsidian-plugin-features.cjs +242 -0
- package/dist/lib/cjs/bundlers/obsidian-plugin-features.d.cts +186 -0
- package/dist/lib/cjs/bundlers/obsidian-plugin-transforms.cjs +306 -0
- package/dist/lib/cjs/bundlers/obsidian-plugin-transforms.d.cts +231 -0
- package/dist/lib/cjs/bundlers/obsidian-plugin-webpack-loader.cjs +182 -0
- package/dist/lib/cjs/bundlers/obsidian-plugin-webpack-loader.d.cts +47 -0
- package/dist/lib/cjs/bundlers/obsidian-plugins-folder-deployment.cjs +320 -0
- package/dist/lib/cjs/bundlers/obsidian-plugins-folder-deployment.d.cts +44 -0
- package/dist/lib/cjs/bundlers/parcel.cjs +462 -0
- package/dist/lib/cjs/bundlers/parcel.d.cts +128 -0
- package/dist/lib/cjs/bundlers/rollup-compatible-features.cjs +181 -0
- package/dist/lib/cjs/bundlers/rollup-compatible-features.d.cts +128 -0
- package/dist/lib/cjs/bundlers/rollup-compatible.cjs +138 -0
- package/dist/lib/cjs/bundlers/rollup-compatible.d.cts +84 -0
- package/dist/lib/cjs/bundlers/rollup.cjs +218 -0
- package/dist/lib/cjs/bundlers/rollup.d.cts +99 -0
- package/dist/lib/cjs/bundlers/vite.cjs +229 -0
- package/dist/lib/cjs/bundlers/vite.d.cts +105 -0
- package/dist/lib/cjs/bundlers/webpack.cjs +354 -0
- package/dist/lib/cjs/bundlers/webpack.d.cts +133 -0
- package/dist/lib/cjs/demo-vault-cli.cjs +131 -0
- package/dist/lib/cjs/demo-vault-cli.d.cts +15 -0
- package/dist/lib/cjs/index.cjs +4 -1
- package/dist/lib/cjs/index.d.cts +1 -0
- package/dist/lib/cjs/test-runners/coverage-badge-cli.cjs +160 -0
- package/dist/lib/cjs/test-runners/coverage-badge-cli.d.cts +25 -0
- package/dist/lib/cjs/test-runners/coverage-badge.cjs +279 -0
- package/dist/lib/cjs/test-runners/coverage-badge.d.cts +143 -0
- package/dist/lib/cjs/test-runners/e2e-runner-support.cjs +170 -0
- package/dist/lib/cjs/test-runners/e2e-runner-support.d.cts +36 -0
- package/dist/lib/cjs/test-runners/index.cjs +18 -3
- package/dist/lib/cjs/test-runners/index.d.cts +5 -0
- package/dist/lib/cjs/test-runners/obsidian-test-runner.cjs +147 -0
- package/dist/lib/cjs/test-runners/obsidian-test-runner.d.cts +42 -0
- package/dist/lib/cjs/test-runners/wdio-obsidian.cjs +205 -0
- package/dist/lib/cjs/test-runners/wdio-obsidian.d.cts +199 -0
- package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.d.mts +2 -18
- package/dist/lib/esm/bundlers/esbuild-impl/copy-to-obsidian-plugins-folder-plugin.mjs +3 -192
- package/dist/lib/esm/bundlers/esbuild-impl/feature-options.d.mts +60 -0
- package/dist/lib/esm/bundlers/esbuild-impl/feature-options.mjs +82 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.d.mts +1 -0
- package/dist/lib/esm/bundlers/esbuild-impl/index.mjs +3 -1
- package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.d.mts +7 -24
- package/dist/lib/esm/bundlers/esbuild-impl/obsidian-plugin-builder.mjs +41 -87
- package/dist/lib/esm/bundlers/index.d.mts +12 -0
- package/dist/lib/esm/bundlers/index.mjs +26 -2
- package/dist/lib/esm/bundlers/obsidian-cli-reload.d.mts +37 -0
- package/dist/lib/esm/bundlers/obsidian-cli-reload.mjs +83 -0
- package/dist/lib/esm/bundlers/obsidian-plugin-build.d.mts +217 -0
- package/dist/lib/esm/bundlers/obsidian-plugin-build.mjs +166 -0
- package/dist/lib/esm/bundlers/obsidian-plugin-features.d.mts +186 -0
- package/dist/lib/esm/bundlers/obsidian-plugin-features.mjs +126 -0
- package/dist/lib/esm/bundlers/obsidian-plugin-transforms.d.mts +231 -0
- package/dist/lib/esm/bundlers/obsidian-plugin-transforms.mjs +194 -0
- package/dist/lib/esm/bundlers/obsidian-plugin-webpack-loader.d.mts +47 -0
- package/dist/lib/esm/bundlers/obsidian-plugin-webpack-loader.mjs +89 -0
- package/dist/lib/esm/bundlers/obsidian-plugins-folder-deployment.d.mts +44 -0
- package/dist/lib/esm/bundlers/obsidian-plugins-folder-deployment.mjs +228 -0
- package/dist/lib/esm/bundlers/parcel.d.mts +128 -0
- package/dist/lib/esm/bundlers/parcel.mjs +361 -0
- package/dist/lib/esm/bundlers/rollup-compatible-features.d.mts +128 -0
- package/dist/lib/esm/bundlers/rollup-compatible-features.mjs +93 -0
- package/dist/lib/esm/bundlers/rollup-compatible.d.mts +84 -0
- package/dist/lib/esm/bundlers/rollup-compatible.mjs +43 -0
- package/dist/lib/esm/bundlers/rollup.d.mts +99 -0
- package/dist/lib/esm/bundlers/rollup.mjs +130 -0
- package/dist/lib/esm/bundlers/vite.d.mts +105 -0
- package/dist/lib/esm/bundlers/vite.mjs +144 -0
- package/dist/lib/esm/bundlers/webpack.d.mts +133 -0
- package/dist/lib/esm/bundlers/webpack.mjs +259 -0
- package/dist/lib/esm/demo-vault-cli.d.mts +15 -0
- package/dist/lib/esm/demo-vault-cli.mjs +23 -0
- package/dist/lib/esm/index.d.mts +1 -0
- package/dist/lib/esm/index.mjs +3 -1
- package/dist/lib/esm/test-runners/coverage-badge-cli.d.mts +25 -0
- package/dist/lib/esm/test-runners/coverage-badge-cli.mjs +51 -0
- package/dist/lib/esm/test-runners/coverage-badge.d.mts +143 -0
- package/dist/lib/esm/test-runners/coverage-badge.mjs +181 -0
- package/dist/lib/esm/test-runners/e2e-runner-support.d.mts +36 -0
- package/dist/lib/esm/test-runners/e2e-runner-support.mjs +61 -0
- package/dist/lib/esm/test-runners/index.d.mts +5 -0
- package/dist/lib/esm/test-runners/index.mjs +12 -2
- package/dist/lib/esm/test-runners/obsidian-test-runner.d.mts +42 -0
- package/dist/lib/esm/test-runners/obsidian-test-runner.mjs +52 -0
- package/dist/lib/esm/test-runners/wdio-obsidian.d.mts +199 -0
- package/dist/lib/esm/test-runners/wdio-obsidian.mjs +110 -0
- package/package.json +102 -4
- package/test-runners/coverage-badge/package.json +6 -0
- package/test-runners/coverage-badge-cli/package.json +6 -0
- package/test-runners/e2e-runner-support/package.json +6 -0
- package/test-runners/obsidian-test-runner/package.json +6 -0
- package/test-runners/wdio-obsidian/package.json +6 -0
- package/tsconfig/preact.json +7 -0
- package/tsconfig/react.json +7 -0
- package/tsconfig/solid.json +7 -0
- package/tsconfig/svelte.json +7 -0
- package/tsconfig/vue.json +7 -0
- package/types/styles.d.ts +32 -0
- package/types/wasm.d.ts +11 -0
|
@@ -107,18 +107,33 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
107
107
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
108
108
|
var test_runners_exports = {};
|
|
109
109
|
__export(test_runners_exports, {
|
|
110
|
+
"coverage-badge": () => coverage_badge,
|
|
111
|
+
"coverage-badge-cli": () => coverage_badge_cli,
|
|
112
|
+
"e2e-runner-support": () => e2e_runner_support,
|
|
110
113
|
"integration-test-plugin": () => integration_test_plugin,
|
|
114
|
+
"obsidian-test-runner": () => obsidian_test_runner,
|
|
111
115
|
"performance-eval-cap": () => performance_eval_cap,
|
|
112
|
-
"vitest-config": () => vitest_config
|
|
116
|
+
"vitest-config": () => vitest_config,
|
|
117
|
+
"wdio-obsidian": () => wdio_obsidian
|
|
113
118
|
});
|
|
114
119
|
module.exports = __toCommonJS(test_runners_exports);
|
|
120
|
+
var coverage_badge_cli = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./coverage-badge-cli.cjs')), 1);
|
|
121
|
+
var coverage_badge = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./coverage-badge.cjs')), 1);
|
|
122
|
+
var e2e_runner_support = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./e2e-runner-support.cjs')), 1);
|
|
115
123
|
var integration_test_plugin = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./integration-test-plugin.cjs')), 1);
|
|
124
|
+
var obsidian_test_runner = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./obsidian-test-runner.cjs')), 1);
|
|
116
125
|
var performance_eval_cap = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./performance-eval-cap.cjs')), 1);
|
|
117
126
|
var vitest_config = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./vitest-config.cjs')), 1);
|
|
127
|
+
var wdio_obsidian = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('./wdio-obsidian.cjs')), 1);
|
|
118
128
|
// Annotate the CommonJS export names for ESM import in node:
|
|
119
129
|
0 && (module.exports = {
|
|
130
|
+
"coverage-badge": null,
|
|
131
|
+
"coverage-badge-cli": null,
|
|
132
|
+
"e2e-runner-support": null,
|
|
120
133
|
"integration-test-plugin": null,
|
|
134
|
+
"obsidian-test-runner": null,
|
|
121
135
|
"performance-eval-cap": null,
|
|
122
|
-
"vitest-config": null
|
|
136
|
+
"vitest-config": null,
|
|
137
|
+
"wdio-obsidian": null
|
|
123
138
|
});
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogVEhJUyBJUyBBIEdFTkVSQVRFRC9CVU5ETEVEIEZJTEUgQlkgQlVJTEQgU0NSSVBUICovXG5cbmV4cG9ydCAqIGFzICdjb3ZlcmFnZS1iYWRnZS1jbGknIGZyb20gJy4vY292ZXJhZ2UtYmFkZ2UtY2xpLnRzJztcbmV4cG9ydCAqIGFzICdjb3ZlcmFnZS1iYWRnZScgZnJvbSAnLi9jb3ZlcmFnZS1iYWRnZS50cyc7XG5leHBvcnQgKiBhcyAnZTJlLXJ1bm5lci1zdXBwb3J0JyBmcm9tICcuL2UyZS1ydW5uZXItc3VwcG9ydC50cyc7XG5leHBvcnQgKiBhcyAnaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4nIGZyb20gJy4vaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4udHMnO1xuZXhwb3J0ICogYXMgJ29ic2lkaWFuLXRlc3QtcnVubmVyJyBmcm9tICcuL29ic2lkaWFuLXRlc3QtcnVubmVyLnRzJztcbmV4cG9ydCAqIGFzICdwZXJmb3JtYW5jZS1ldmFsLWNhcCcgZnJvbSAnLi9wZXJmb3JtYW5jZS1ldmFsLWNhcC50cyc7XG5leHBvcnQgKiBhcyAndml0ZXN0LWNvbmZpZycgZnJvbSAnLi92aXRlc3QtY29uZmlnLnRzJztcbmV4cG9ydCAqIGFzICd3ZGlvLW9ic2lkaWFuJyBmcm9tICcuL3dkaW8tb2JzaWRpYW4udHMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQSwwQkFBQUE7QUFBQSxFQUFBLDRCQUFBQztBQUFBLEVBQUEsNEJBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQSx1QkFBQUM7QUFBQSxFQUFBLHVCQUFBQztBQUFBO0FBQUE7QUFFQSxJQUFBTixxQkFBc0M7QUFDdEMsSUFBQUQsaUJBQWtDO0FBQ2xDLElBQUFFLHFCQUFzQztBQUN0QyxJQUFBQywwQkFBMkM7QUFDM0MsSUFBQUMsdUJBQXdDO0FBQ3hDLElBQUFDLHVCQUF3QztBQUN4QyxJQUFBQyxnQkFBaUM7QUFDakMsSUFBQUMsZ0JBQWlDOyIsIm5hbWVzIjpbImNvdmVyYWdlLWJhZGdlIiwiY292ZXJhZ2UtYmFkZ2UtY2xpIiwiZTJlLXJ1bm5lci1zdXBwb3J0IiwiaW50ZWdyYXRpb24tdGVzdC1wbHVnaW4iLCJvYnNpZGlhbi10ZXN0LXJ1bm5lciIsInBlcmZvcm1hbmNlLWV2YWwtY2FwIiwidml0ZXN0LWNvbmZpZyIsIndkaW8tb2JzaWRpYW4iXX0=
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
export * as 'coverage-badge-cli' from './coverage-badge-cli.cjs';
|
|
3
|
+
export * as 'coverage-badge' from './coverage-badge.cjs';
|
|
4
|
+
export * as 'e2e-runner-support' from './e2e-runner-support.cjs';
|
|
2
5
|
export * as 'integration-test-plugin' from './integration-test-plugin.cjs';
|
|
6
|
+
export * as 'obsidian-test-runner' from './obsidian-test-runner.cjs';
|
|
3
7
|
export * as 'performance-eval-cap' from './performance-eval-cap.cjs';
|
|
4
8
|
export * as 'vitest-config' from './vitest-config.cjs';
|
|
9
|
+
export * as 'wdio-obsidian' from './wdio-obsidian.cjs';
|
|
@@ -0,0 +1,147 @@
|
|
|
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 obsidian_test_runner_exports = {};
|
|
126
|
+
__export(obsidian_test_runner_exports, {
|
|
127
|
+
testEndToEndWithObsidianTest: () => testEndToEndWithObsidianTest
|
|
128
|
+
});
|
|
129
|
+
module.exports = __toCommonJS(obsidian_test_runner_exports);
|
|
130
|
+
var import_root = require('@mnaoumov/typescript-dev-toolkit/root');
|
|
131
|
+
var import_e2e_runner_support = require('./e2e-runner-support.cjs');
|
|
132
|
+
async function testEndToEndWithObsidianTest(options = {}) {
|
|
133
|
+
(0, import_e2e_runner_support.assertProjectPackagesInstalled)({ packageNames: ["obsidian-test"], requester: "testEndToEndWithObsidianTest()" });
|
|
134
|
+
await (0, import_root.execFromRoot)([
|
|
135
|
+
"obsidian-test",
|
|
136
|
+
"--testPattern",
|
|
137
|
+
options.testPattern ?? import_e2e_runner_support.DEFAULT_END_TO_END_SPECS,
|
|
138
|
+
...options.vaultPath === void 0 ? [] : ["--vault-path", options.vaultPath],
|
|
139
|
+
...options.obsidianCommand === void 0 ? [] : ["--obsidian-cmd", options.obsidianCommand],
|
|
140
|
+
...options.shouldUseCache ?? true ? [] : ["--force"]
|
|
141
|
+
], { isInteractive: true });
|
|
142
|
+
}
|
|
143
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
144
|
+
0 && (module.exports = {
|
|
145
|
+
testEndToEndWithObsidianTest
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvb2JzaWRpYW4tdGVzdC1ydW5uZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVuZC10by1lbmQgdGVzdHMgd2l0aCBgb2JzaWRpYW4tdGVzdGA6IGl0IGJ1bmRsZXMgdGhlIHBsdWdpbiB0b2dldGhlciB3aXRoIHRoZSB0ZXN0IGZpbGVzLCBpbnN0YWxscyBpdCBpbnRvIGFcbiAqIHRlbXBvcmFyeSB2YXVsdCwgbGF1bmNoZXMgdGhlIGluc3RhbGxlZCBPYnNpZGlhbiBhbmQgcnVucyB0aGUgdGVzdHMgaW5zaWRlIGl0IHdpdGggYG5vZGU6dGVzdGAuXG4gKlxuICoge0BsaW5rIHRlc3RFbmRUb0VuZFdpdGhPYnNpZGlhblRlc3R9IGlzIHRoZSBgdGVzdDplMmVgIHNjcmlwdC5cbiAqL1xuXG5pbXBvcnQgeyBleGVjRnJvbVJvb3QgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yb290JztcblxuaW1wb3J0IHtcbiAgYXNzZXJ0UHJvamVjdFBhY2thZ2VzSW5zdGFsbGVkLFxuICBERUZBVUxUX0VORF9UT19FTkRfU1BFQ1Ncbn0gZnJvbSAnLi9lMmUtcnVubmVyLXN1cHBvcnQudHMnO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB0ZXN0RW5kVG9FbmRXaXRoT2JzaWRpYW5UZXN0fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0RW5kVG9FbmRXaXRoT2JzaWRpYW5UZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0aGF0IGxhdW5jaGVzIE9ic2lkaWFuLiBEZWZhdWx0cyB0byBgb2JzaWRpYW4tdGVzdGAncyBvd24sIGBvYnNpZGlhbmA7IHBvaW50IGl0IGF0IHRoZSBleGVjdXRhYmxlXG4gICAqIHdoZW4gYG9ic2lkaWFuYCBpcyBub3Qgb24gYFBBVEhgLlxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5Db21tYW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGBvYnNpZGlhbi10ZXN0YCBtYXkgcmVwbGF5IGl0cyBjYWNoZWQgcmVzdWx0cyB3aGVuIHRoZSBwbHVnaW4sIHRoZSB0ZXN0cyBhbmQgT2JzaWRpYW4gYXJlIHVuY2hhbmdlZC5cbiAgICogRGVmYXVsdHMgdG8gYHRydWVgOyBgZmFsc2VgIHBhc3NlcyBgLS1mb3JjZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRVc2VDYWNoZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBnbG9iIG9mIHRoZSB0ZXN0IGZpbGVzLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FTkRfVE9fRU5EX1NQRUNTfS5cbiAgICogYG9ic2lkaWFuLXRlc3RgJ3Mgb3duIGRlZmF1bHQgYWxzbyBtYXRjaGVzIGV2ZXJ5IGAqLnRlc3QudHNgLCB3aGljaCB3b3VsZCBidW5kbGUgdGhlIHVuaXQgdGVzdHMgaW50byBPYnNpZGlhbi5cbiAgICovXG4gIHJlYWRvbmx5IHRlc3RQYXR0ZXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmF1bHQgdG8gcnVuIGluLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LiBgb2JzaWRpYW4tdGVzdGAgaW5zdGFsbHMgdGhlIHBsdWdpbiBJTlRPIGl0LCBzbyBpdCBtdXN0IGJlIGFcbiAgICogc2NyYXRjaCB2YXVsdCwgbmV2ZXIgdGhlIGRlbW8gdmF1bHQuIERlZmF1bHRzIHRvIGEgdGVtcG9yYXJ5IHZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgdmF1bHRQYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGVuZC10by1lbmQgdGVzdHMgd2l0aCBgb2JzaWRpYW4tdGVzdGAuIEl0IGlzIHRoZSBib2R5IG9mIGEgcGx1Z2luJ3MgYHRlc3Q6ZTJlYCBzY3JpcHQuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIFRlc3RFbmRUb0VuZFdpdGhPYnNpZGlhblRlc3RPcHRpb25zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgdGVzdHMgcGFzcy5cbiAqIEB0aHJvd3MgV2hlbiBgb2JzaWRpYW4tdGVzdGAgaXMgbWlzc2luZyBvciBhIHRlc3QgZmFpbHMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0ZXN0RW5kVG9FbmRXaXRoT2JzaWRpYW5UZXN0KG9wdGlvbnM6IFRlc3RFbmRUb0VuZFdpdGhPYnNpZGlhblRlc3RPcHRpb25zID0ge30pOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXNzZXJ0UHJvamVjdFBhY2thZ2VzSW5zdGFsbGVkKHsgcGFja2FnZU5hbWVzOiBbJ29ic2lkaWFuLXRlc3QnXSwgcmVxdWVzdGVyOiAndGVzdEVuZFRvRW5kV2l0aE9ic2lkaWFuVGVzdCgpJyB9KTtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFtcbiAgICAnb2JzaWRpYW4tdGVzdCcsXG4gICAgJy0tdGVzdFBhdHRlcm4nLFxuICAgIG9wdGlvbnMudGVzdFBhdHRlcm4gPz8gREVGQVVMVF9FTkRfVE9fRU5EX1NQRUNTLFxuICAgIC4uLm9wdGlvbnMudmF1bHRQYXRoID09PSB1bmRlZmluZWQgPyBbXSA6IFsnLS12YXVsdC1wYXRoJywgb3B0aW9ucy52YXVsdFBhdGhdLFxuICAgIC4uLm9wdGlvbnMub2JzaWRpYW5Db21tYW5kID09PSB1bmRlZmluZWQgPyBbXSA6IFsnLS1vYnNpZGlhbi1jbWQnLCBvcHRpb25zLm9ic2lkaWFuQ29tbWFuZF0sXG4gICAgLi4ub3B0aW9ucy5zaG91bGRVc2VDYWNoZSA/PyB0cnVlID8gW10gOiBbJy0tZm9yY2UnXVxuICBdLCB7IGlzSW50ZXJhY3RpdmU6IHRydWUgfSk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBU0Esa0JBQTZCO0FBRTdCLGdDQUdPO0FBc0NQLGVBQXNCLDZCQUE2QixVQUErQyxDQUFDLEdBQWtCO0FBQ25ILGdFQUErQixFQUFFLGNBQWMsQ0FBQyxlQUFlLEdBQUcsV0FBVyxpQ0FBaUMsQ0FBQztBQUMvRyxZQUFNLDBCQUFhO0FBQUEsSUFDakI7QUFBQSxJQUNBO0FBQUEsSUFDQSxRQUFRLGVBQWU7QUFBQSxJQUN2QixHQUFHLFFBQVEsY0FBYyxTQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixRQUFRLFNBQVM7QUFBQSxJQUM1RSxHQUFHLFFBQVEsb0JBQW9CLFNBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLFFBQVEsZUFBZTtBQUFBLElBQzFGLEdBQUcsUUFBUSxrQkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTO0FBQUEsRUFDckQsR0FBRyxFQUFFLGVBQWUsS0FBSyxDQUFDO0FBQzVCOyIsIm5hbWVzIjpbXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* End-to-end tests with `obsidian-test`: it bundles the plugin together with the test files, installs it into a
|
|
6
|
+
* temporary vault, launches the installed Obsidian and runs the tests inside it with `node:test`.
|
|
7
|
+
*
|
|
8
|
+
* {@link testEndToEndWithObsidianTest} is the `test:e2e` script.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Options for {@link testEndToEndWithObsidianTest}.
|
|
12
|
+
*/
|
|
13
|
+
export interface TestEndToEndWithObsidianTestOptions {
|
|
14
|
+
/**
|
|
15
|
+
* The command that launches Obsidian. Defaults to `obsidian-test`'s own, `obsidian`; point it at the executable
|
|
16
|
+
* when `obsidian` is not on `PATH`.
|
|
17
|
+
*/
|
|
18
|
+
readonly obsidianCommand?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Whether `obsidian-test` may replay its cached results when the plugin, the tests and Obsidian are unchanged.
|
|
21
|
+
* Defaults to `true`; `false` passes `--force`.
|
|
22
|
+
*/
|
|
23
|
+
readonly shouldUseCache?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* The glob of the test files, relative to the project root. Defaults to {@link DEFAULT_END_TO_END_SPECS}.
|
|
26
|
+
* `obsidian-test`'s own default also matches every `*.test.ts`, which would bundle the unit tests into Obsidian.
|
|
27
|
+
*/
|
|
28
|
+
readonly testPattern?: string;
|
|
29
|
+
/**
|
|
30
|
+
* The vault to run in, relative to the project root. `obsidian-test` installs the plugin INTO it, so it must be a
|
|
31
|
+
* scratch vault, never the demo vault. Defaults to a temporary vault.
|
|
32
|
+
*/
|
|
33
|
+
readonly vaultPath?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Runs the end-to-end tests with `obsidian-test`. It is the body of a plugin's `test:e2e` script.
|
|
37
|
+
*
|
|
38
|
+
* @param options - The {@link TestEndToEndWithObsidianTestOptions}.
|
|
39
|
+
* @returns A {@link Promise} that resolves once the tests pass.
|
|
40
|
+
* @throws When `obsidian-test` is missing or a test fails.
|
|
41
|
+
*/
|
|
42
|
+
export declare function testEndToEndWithObsidianTest(options?: TestEndToEndWithObsidianTestOptions): Promise<void>;
|
|
@@ -0,0 +1,205 @@
|
|
|
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 wdio_obsidian_exports = {};
|
|
126
|
+
__export(wdio_obsidian_exports, {
|
|
127
|
+
DEFAULT_WDIO_OBSIDIAN_TEST_TIMEOUT_IN_MILLISECONDS: () => DEFAULT_WDIO_OBSIDIAN_TEST_TIMEOUT_IN_MILLISECONDS,
|
|
128
|
+
WDIO_CONFIG_FILE_NAMES: () => WDIO_CONFIG_FILE_NAMES,
|
|
129
|
+
defineWdioObsidianConfig: () => defineWdioObsidianConfig,
|
|
130
|
+
testEndToEndWithWdioObsidian: () => testEndToEndWithWdioObsidian
|
|
131
|
+
});
|
|
132
|
+
module.exports = __toCommonJS(wdio_obsidian_exports);
|
|
133
|
+
var import_npm_run = require('@mnaoumov/typescript-dev-toolkit/npm-run');
|
|
134
|
+
var import_root = require('@mnaoumov/typescript-dev-toolkit/root');
|
|
135
|
+
var import_node_fs = require('node:fs');
|
|
136
|
+
var import_obsidian_plugin_repo_paths = require('../obsidian-plugin-repo-paths.cjs');
|
|
137
|
+
var import_e2e_runner_support = require('./e2e-runner-support.cjs');
|
|
138
|
+
const DEFAULT_WDIO_OBSIDIAN_TEST_TIMEOUT_IN_MILLISECONDS = 6e4;
|
|
139
|
+
const WDIO_CONFIG_FILE_NAMES = ["wdio.conf.mts", "wdio.conf.ts"];
|
|
140
|
+
const WDIO_OBSIDIAN_PACKAGES = ["@wdio/cli", "@wdio/local-runner", "@wdio/mocha-framework", "wdio-obsidian-reporter", "wdio-obsidian-service"];
|
|
141
|
+
function defineWdioObsidianConfig(options = {}) {
|
|
142
|
+
const pluginFolder = (0, import_root.resolvePathFromRootSafe)({ path: options.pluginFolder ?? import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DistBuild });
|
|
143
|
+
const vault = resolveVault(options.vault);
|
|
144
|
+
const capabilityOptions = {
|
|
145
|
+
plugins: [pluginFolder],
|
|
146
|
+
...options.installerVersion !== void 0 && { installerVersion: options.installerVersion },
|
|
147
|
+
...vault !== void 0 && { vault }
|
|
148
|
+
};
|
|
149
|
+
return {
|
|
150
|
+
// eslint-disable-next-line unicorn/name-replacements -- WebdriverIO's own option name.
|
|
151
|
+
cacheDir: (0, import_root.resolvePathFromRootSafe)({ path: options.cacheFolder ?? ".obsidian-cache" }),
|
|
152
|
+
capabilities: (options.appVersions ?? ["latest"]).map((appVersion) => ({
|
|
153
|
+
"browserName": "obsidian",
|
|
154
|
+
"browserVersion": appVersion,
|
|
155
|
+
"wdio:obsidianOptions": { ...capabilityOptions, plugins: [...capabilityOptions.plugins] }
|
|
156
|
+
})),
|
|
157
|
+
framework: "mocha",
|
|
158
|
+
logLevel: "warn",
|
|
159
|
+
...options.maxInstances !== void 0 && { maxInstances: options.maxInstances },
|
|
160
|
+
// eslint-disable-next-line unicorn/name-replacements -- WebdriverIO's own option name.
|
|
161
|
+
mochaOpts: {
|
|
162
|
+
timeout: options.testTimeoutInMilliseconds ?? DEFAULT_WDIO_OBSIDIAN_TEST_TIMEOUT_IN_MILLISECONDS,
|
|
163
|
+
ui: "bdd"
|
|
164
|
+
},
|
|
165
|
+
reporters: ["obsidian"],
|
|
166
|
+
runner: "local",
|
|
167
|
+
services: ["obsidian"],
|
|
168
|
+
specs: [...options.specs ?? [import_e2e_runner_support.DEFAULT_END_TO_END_SPECS]]
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
async function testEndToEndWithWdioObsidian(options = {}) {
|
|
172
|
+
(0, import_e2e_runner_support.assertProjectPackagesInstalled)({ packageNames: WDIO_OBSIDIAN_PACKAGES, requester: "testEndToEndWithWdioObsidian()" });
|
|
173
|
+
const configPath = options.configPath ?? findWdioConfigFile();
|
|
174
|
+
if (options.shouldBuild ?? true) {
|
|
175
|
+
await (0, import_npm_run.npmRun)("build");
|
|
176
|
+
}
|
|
177
|
+
await (0, import_root.execFromRoot)(["wdio", "run", configPath], { isInteractive: true });
|
|
178
|
+
}
|
|
179
|
+
function findWdioConfigFile() {
|
|
180
|
+
const configFileName = WDIO_CONFIG_FILE_NAMES.find((fileName) => (0, import_node_fs.existsSync)((0, import_root.resolvePathFromRootSafe)({ path: fileName })));
|
|
181
|
+
if (configFileName === void 0) {
|
|
182
|
+
throw new Error(
|
|
183
|
+
`testEndToEndWithWdioObsidian() found no WebdriverIO config (${WDIO_CONFIG_FILE_NAMES.join(", ")}) in the project root. Create wdio.conf.mts exporting \`config = defineWdioObsidianConfig()\`, or pass \`configPath\`.`
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
return configFileName;
|
|
187
|
+
}
|
|
188
|
+
function resolveVault(vault) {
|
|
189
|
+
if (vault === false) {
|
|
190
|
+
return void 0;
|
|
191
|
+
}
|
|
192
|
+
if (vault !== void 0) {
|
|
193
|
+
return (0, import_root.resolvePathFromRootSafe)({ path: vault });
|
|
194
|
+
}
|
|
195
|
+
const demoVaultPath = (0, import_root.resolvePathFromRootSafe)({ path: import_obsidian_plugin_repo_paths.ObsidianPluginRepoPaths.DemoVault });
|
|
196
|
+
return (0, import_node_fs.existsSync)(demoVaultPath) ? demoVaultPath : void 0;
|
|
197
|
+
}
|
|
198
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
199
|
+
0 && (module.exports = {
|
|
200
|
+
DEFAULT_WDIO_OBSIDIAN_TEST_TIMEOUT_IN_MILLISECONDS,
|
|
201
|
+
WDIO_CONFIG_FILE_NAMES,
|
|
202
|
+
defineWdioObsidianConfig,
|
|
203
|
+
testEndToEndWithWdioObsidian
|
|
204
|
+
});
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90ZXN0LXJ1bm5lcnMvd2Rpby1vYnNpZGlhbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRW5kLXRvLWVuZCB0ZXN0cyB3aXRoIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgOiBXZWJkcml2ZXJJTyBkcml2ZXMgYSBzYW5kYm94ZWQgY29weSBvZiBPYnNpZGlhbiwgZG93bmxvYWRlZCBwZXJcbiAqIHZlcnNpb24gaW50byBhIGNhY2hlLCB3aXRoIHRoZSBwbHVnaW4gaW5zdGFsbGVkIGludG8gYSBjb3B5IG9mIHRoZSB0ZXN0IHZhdWx0LlxuICpcbiAqIHtAbGluayBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWd9IGRlcml2ZXMgdGhlIGB3ZGlvLmNvbmYubXRzYCBmcm9tIHRoZSBwcm9qZWN0J3MgbGF5b3V0LCBhbmRcbiAqIHtAbGluayB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFufSBpcyB0aGUgYHRlc3Q6ZTJlYCBzY3JpcHQ6IGEgcHJvZHVjdGlvbiBidWlsZCwgdGhlbiBgd2RpbyBydW5gLlxuICpcbiAqIFRoZSBjb25maWcgaXMgdHlwZWQgc3RydWN0dXJhbGx5IHJhdGhlciB0aGFuIHRocm91Z2ggYEB3ZGlvL3R5cGVzYCwgc28gdGhpcyBtb2R1bGUgY29zdHMgYSBwcm9qZWN0IHRoYXQgZG9lcyBub3RcbiAqIHVzZSBXZWJkcml2ZXJJTyBub3RoaW5nLCBhbmQgdGhlIHJldHVybmVkIG9iamVjdCBpcyBhc3NpZ25hYmxlIHRvIGBXZWJkcml2ZXJJTy5Db25maWdgIGluIG9uZSB0aGF0IGRvZXMuXG4gKi9cblxuaW1wb3J0IHsgbnBtUnVuIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtZGV2LXRvb2xraXQvbnBtLXJ1bic7XG5pbXBvcnQge1xuICBleGVjRnJvbVJvb3QsXG4gIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWRldi10b29sa2l0L3Jvb3QnO1xuaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuLXBsdWdpbi1yZXBvLXBhdGhzLnRzJztcbmltcG9ydCB7XG4gIGFzc2VydFByb2plY3RQYWNrYWdlc0luc3RhbGxlZCxcbiAgREVGQVVMVF9FTkRfVE9fRU5EX1NQRUNTXG59IGZyb20gJy4vZTJlLXJ1bm5lci1zdXBwb3J0LnRzJztcblxuLyoqXG4gKiBUaGUgcGVyLXRlc3QgdGltZW91dCB7QGxpbmsgZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnfSBnaXZlcyBtb2NoYSBieSBkZWZhdWx0LCBpbiBtaWxsaXNlY29uZHMuIE9ic2lkaWFuIGlzXG4gKiBzdGFydGVkIG9uY2UgcGVyIHNwZWMgZmlsZSwgd2hpY2ggYSBzaW5nbGUgdGVzdCdzIGJ1ZGdldCBoYXMgdG8gYWJzb3JiLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9XRElPX09CU0lESUFOX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMgPSA2MF8wMDA7XG5cbi8qKlxuICogVGhlIGNvbmZpZyBmaWxlcyB7QGxpbmsgdGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbn0gbG9va3MgZm9yLCBpbiBvcmRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IFdESU9fQ09ORklHX0ZJTEVfTkFNRVM6IHJlYWRvbmx5IHN0cmluZ1tdID0gWyd3ZGlvLmNvbmYubXRzJywgJ3dkaW8uY29uZi50cyddO1xuXG4vKipcbiAqIFRoZSBwYWNrYWdlcyBhIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgIHNldHVwIG5lZWRzIGluIHRoZSBwcm9qZWN0LlxuICovXG5jb25zdCBXRElPX09CU0lESUFOX1BBQ0tBR0VTOiByZWFkb25seSBzdHJpbmdbXSA9IFsnQHdkaW8vY2xpJywgJ0B3ZGlvL2xvY2FsLXJ1bm5lcicsICdAd2Rpby9tb2NoYS1mcmFtZXdvcmsnLCAnd2Rpby1vYnNpZGlhbi1yZXBvcnRlcicsICd3ZGlvLW9ic2lkaWFuLXNlcnZpY2UnXTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZpbmVXZGlvT2JzaWRpYW5Db25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgdmVyc2lvbnMgdG8gdGVzdCwgb25lIGNhcGFiaWxpdHkgZWFjaDogYSB2ZXJzaW9uIHN1Y2ggYXMgYDEuOC4xMGAsIGBsYXRlc3RgLCBgbGF0ZXN0LWJldGFgLCBvclxuICAgKiBgZWFybGllc3RgICh0aGUgYG1pbkFwcFZlcnNpb25gIG9mIGBtYW5pZmVzdC5qc29uYCkuIERlZmF1bHRzIHRvIGBbJ2xhdGVzdCddYDsgYFsnZWFybGllc3QnLCAnbGF0ZXN0J11gIHRlc3RzXG4gICAqIGJvdGggZW5kcyBvZiB0aGUgc3VwcG9ydGVkIHJhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwVmVyc2lvbnM/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBPYnNpZGlhbiB2ZXJzaW9ucyBhcmUgZG93bmxvYWRlZCBpbnRvLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LiBEZWZhdWx0cyB0byBgLm9ic2lkaWFuLWNhY2hlYCxcbiAgICogd2hpY2ggYmVsb25ncyBpbiBgLmdpdGlnbm9yZWAuXG4gICAqL1xuICByZWFkb25seSBjYWNoZUZvbGRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGluc3RhbGxlciAoRWxlY3Ryb24pIHZlcnNpb24sIGBlYXJsaWVzdGAgb3IgYGxhdGVzdGAgY29tcGF0aWJsZSB3aXRoIGVhY2ggYXBwIHZlcnNpb24sIG9yIGFuIGV4YWN0XG4gICAqIG9uZS4gRGVmYXVsdHMgdG8gdGhlIHNlcnZpY2UncyBvd24gY2hvaWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG1hbnkgT2JzaWRpYW4gaW5zdGFuY2VzIHJ1biBpbiBwYXJhbGxlbC4gRGVmYXVsdHMgdG8gV2ViZHJpdmVySU8ncy5cbiAgICovXG4gIHJlYWRvbmx5IG1heEluc3RhbmNlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBob2xkaW5nIHRoZSBidWlsdCBwbHVnaW4gKGBtYWluLmpzYCwgYG1hbmlmZXN0Lmpzb25gLCBgc3R5bGVzLmNzc2ApLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LlxuICAgKiBEZWZhdWx0cyB0byBgZGlzdC9idWlsZGAsIHdoZXJlIHRoZSBwcm9kdWN0aW9uIGJ1aWxkIHdyaXRlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpbkZvbGRlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNwZWMgZmlsZXMsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VORF9UT19FTkRfU1BFQ1N9LlxuICAgKi9cbiAgcmVhZG9ubHkgc3BlY3M/OiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHBlci10ZXN0IHRpbWVvdXQsIGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfV0RJT19PQlNJRElBTl9URVNUX1RJTUVPVVRfSU5fTUlMTElTRUNPTkRTfS5cbiAgICovXG4gIHJlYWRvbmx5IHRlc3RUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCBldmVyeSB0ZXN0IHN0YXJ0cyBmcm9tLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290LiBUaGUgc2VydmljZSBvcGVucyBhIENPUFkgb2YgaXQsIHNvIHRoZSB0ZXN0c1xuICAgKiBuZXZlciBjaGFuZ2UgdGhlIGZvbGRlci4gRGVmYXVsdHMgdG8gdGhlIHBsdWdpbidzIGRlbW8gdmF1bHQgKGBkZW1vLXZhdWx0YCkgd2hlbiB0aGUgcHJvamVjdCBoYXMgb25lLCBhbmQgdG8gYW5cbiAgICogZW1wdHkgdmF1bHQgb3RoZXJ3aXNlOyBgZmFsc2VgIGZvcmNlcyB0aGUgZW1wdHkgdmF1bHQuXG4gICAqL1xuICByZWFkb25seSB2YXVsdD86IGZhbHNlIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgV2ViZHJpdmVySU8gY29uZmlnIGZpbGUsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCBvZlxuICAgKiB7QGxpbmsgV0RJT19DT05GSUdfRklMRV9OQU1FU30gdGhhdCBleGlzdHMuXG4gICAqL1xuICByZWFkb25seSBjb25maWdQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHJ1biB0aGUgcHJvZHVjdGlvbiBidWlsZCBmaXJzdCwgc28gdGhlIHRlc3RzIGxvYWQgdGhlIGN1cnJlbnQgYGRpc3QvYnVpbGRgLiBEZWZhdWx0cyB0byBgdHJ1ZWAuXG4gICAqL1xuICByZWFkb25seSBzaG91bGRCdWlsZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQSBgd2Rpby1vYnNpZGlhbi1zZXJ2aWNlYCBjYXBhYmlsaXR5OiBvbmUgT2JzaWRpYW4gdmVyc2lvbiB0byBydW4gdGhlIHNwZWNzIGFnYWluc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuQ2FwYWJpbGl0eSB7XG4gIC8qKlxuICAgKiBBbHdheXMgYG9ic2lkaWFuYCwgd2hpY2ggaXMgd2hhdCByb3V0ZXMgdGhlIGNhcGFiaWxpdHkgdG8gdGhlIHNlcnZpY2UuXG4gICAqL1xuICAnYnJvd3Nlck5hbWUnOiAnb2JzaWRpYW4nO1xuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIHZlcnNpb24uXG4gICAqL1xuICAnYnJvd3NlclZlcnNpb24nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlJ3Mgb3duIG9wdGlvbnMgZm9yIHRoaXMgY2FwYWJpbGl0eS5cbiAgICovXG4gICd3ZGlvOm9ic2lkaWFuT3B0aW9ucyc6IFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zO1xufVxuXG4vKipcbiAqIFRoZSBgd2RpbzpvYnNpZGlhbk9wdGlvbnNgIG9mIGEge0BsaW5rIFdkaW9PYnNpZGlhbkNhcGFiaWxpdHl9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBpbnN0YWxsZXIgdmVyc2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbGxlclZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW4gZm9sZGVycyB0byBpbnN0YWxsIGludG8gdGhlIHZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSB2YXVsdCB0byBvcGVuIGEgY29weSBvZi5cbiAgICovXG4gIHJlYWRvbmx5IHZhdWx0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBXZWJkcml2ZXJJTyBjb25maWd1cmF0aW9uIHtAbGluayBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWd9IHJldHVybnMuIEV2ZXJ5IGZpZWxkIGlzIHBsYWluIGRhdGEsIHNvIGEgcHJvamVjdFxuICogY2hhbmdlcyBhbnkgb2YgdGhlbSBieSBzcHJlYWRpbmcgdGhlIHJlc3VsdDogYHsgLi4uZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKCksIGxvZ0xldmVsOiAnaW5mbycgfWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuQ29uZmlnIHtcbiAgLyoqXG4gICAqIFdoZXJlIE9ic2lkaWFuIHZlcnNpb25zIGFyZSBkb3dubG9hZGVkLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gV2ViZHJpdmVySU8ncyBvd24gb3B0aW9uIG5hbWUuXG4gIGNhY2hlRGlyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9uZSBjYXBhYmlsaXR5IHBlciBPYnNpZGlhbiB2ZXJzaW9uLlxuICAgKi9cbiAgY2FwYWJpbGl0aWVzOiBXZGlvT2JzaWRpYW5DYXBhYmlsaXR5W107XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXN0IGZyYW1ld29yay5cbiAgICovXG4gIGZyYW1ld29yazogJ21vY2hhJztcblxuICAvKipcbiAgICogV2ViZHJpdmVySU8ncyBsb2cgbGV2ZWwuXG4gICAqL1xuICBsb2dMZXZlbDogJ2RlYnVnJyB8ICdlcnJvcicgfCAnaW5mbycgfCAnc2lsZW50JyB8ICd0cmFjZScgfCAnd2Fybic7XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IE9ic2lkaWFuIGluc3RhbmNlcyBydW4gaW4gcGFyYWxsZWwuXG4gICAqL1xuICBtYXhJbnN0YW5jZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1vY2hhJ3Mgb3B0aW9ucy5cbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25hbWUtcmVwbGFjZW1lbnRzIC0tIFdlYmRyaXZlcklPJ3Mgb3duIG9wdGlvbiBuYW1lLlxuICBtb2NoYU9wdHM6IFdkaW9PYnNpZGlhbk1vY2hhT3B0aW9ucztcblxuICAvKipcbiAgICogVGhlIHJlcG9ydGVycy4gYG9ic2lkaWFuYCBpcyB0aGUgc3BlYyByZXBvcnRlciwgbmFtaW5nIHRoZSBPYnNpZGlhbiB2ZXJzaW9uIGluc3RlYWQgb2YgQ2hyb21pdW0ncy5cbiAgICovXG4gIHJlcG9ydGVyczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRoZSBzcGVjcyBydW4uXG4gICAqL1xuICBydW5uZXI6ICdsb2NhbCc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlcy4gYG9ic2lkaWFuYCBpcyBgd2Rpby1vYnNpZGlhbi1zZXJ2aWNlYC5cbiAgICovXG4gIHNlcnZpY2VzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNwZWMgZmlsZXMuXG4gICAqL1xuICBzcGVjczogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIGBtb2NoYU9wdHNgIG9mIGEge0BsaW5rIFdkaW9PYnNpZGlhbkNvbmZpZ30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2Rpb09ic2lkaWFuTW9jaGFPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwZXItdGVzdCB0aW1lb3V0LCBpbiBtaWxsaXNlY29uZHMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcmZhY2UgdGhlIHNwZWNzIGFyZSB3cml0dGVuIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgdWk6ICdiZGQnO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgV2ViZHJpdmVySU8gY29uZmlndXJhdGlvbiBmb3IgZW5kLXRvLWVuZCB0ZXN0cyB3aXRoIGB3ZGlvLW9ic2lkaWFuLXNlcnZpY2VgLCBkZXJpdmVkIGZyb20gdGhlIHBsdWdpbidzXG4gKiBsYXlvdXQ6IHRoZSBwcm9kdWN0aW9uIGJ1aWxkIGluIGBkaXN0L2J1aWxkYCBpcyB0aGUgcGx1Z2luIHVuZGVyIHRlc3QsIHRoZSBkZW1vIHZhdWx0ICh3aGVuIHRoZXJlIGlzIG9uZSkgaXMgdGhlXG4gKiB2YXVsdCwgYW5kIHRoZSBzcGVjcyBsaXZlIGluIGBlMmUvYC5cbiAqXG4gKiBgd2Rpby5jb25mLm10c2A6XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IGRlZmluZVdkaW9PYnNpZGlhbkNvbmZpZyB9IGZyb20gJ0BtbmFvdW1vdi9vYnNpZGlhbi1kZXYtdG9vbGtpdC90ZXN0LXJ1bm5lcnMvd2Rpby1vYnNpZGlhbic7XG4gKlxuICogZXhwb3J0IGNvbnN0IGNvbmZpZzogV2ViZHJpdmVySU8uQ29uZmlnID0gZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKHsgYXBwVmVyc2lvbnM6IFsnZWFybGllc3QnLCAnbGF0ZXN0J10gfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgRGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnT3B0aW9uc30uXG4gKiBAcmV0dXJucyBUaGUgY29uZmlndXJhdGlvbiwgdG8gZXhwb3J0IGFzIGBjb25maWdgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lV2Rpb09ic2lkaWFuQ29uZmlnKG9wdGlvbnM6IERlZmluZVdkaW9PYnNpZGlhbkNvbmZpZ09wdGlvbnMgPSB7fSk6IFdkaW9PYnNpZGlhbkNvbmZpZyB7XG4gIGNvbnN0IHBsdWdpbkZvbGRlciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKHsgcGF0aDogb3B0aW9ucy5wbHVnaW5Gb2xkZXIgPz8gT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuRGlzdEJ1aWxkIH0pO1xuICBjb25zdCB2YXVsdCA9IHJlc29sdmVWYXVsdChvcHRpb25zLnZhdWx0KTtcbiAgY29uc3QgY2FwYWJpbGl0eU9wdGlvbnM6IFdkaW9PYnNpZGlhbkNhcGFiaWxpdHlPcHRpb25zID0ge1xuICAgIHBsdWdpbnM6IFtwbHVnaW5Gb2xkZXJdLFxuICAgIC4uLihvcHRpb25zLmluc3RhbGxlclZlcnNpb24gIT09IHVuZGVmaW5lZCAmJiB7IGluc3RhbGxlclZlcnNpb246IG9wdGlvbnMuaW5zdGFsbGVyVmVyc2lvbiB9KSxcbiAgICAuLi4odmF1bHQgIT09IHVuZGVmaW5lZCAmJiB7IHZhdWx0IH0pXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uYW1lLXJlcGxhY2VtZW50cyAtLSBXZWJkcml2ZXJJTydzIG93biBvcHRpb24gbmFtZS5cbiAgICBjYWNoZURpcjogcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBvcHRpb25zLmNhY2hlRm9sZGVyID8/ICcub2JzaWRpYW4tY2FjaGUnIH0pLFxuICAgIGNhcGFiaWxpdGllczogKG9wdGlvbnMuYXBwVmVyc2lvbnMgPz8gWydsYXRlc3QnXSkubWFwKChhcHBWZXJzaW9uKSA9PiAoe1xuICAgICAgJ2Jyb3dzZXJOYW1lJzogJ29ic2lkaWFuJyxcbiAgICAgICdicm93c2VyVmVyc2lvbic6IGFwcFZlcnNpb24sXG4gICAgICAnd2RpbzpvYnNpZGlhbk9wdGlvbnMnOiB7IC4uLmNhcGFiaWxpdHlPcHRpb25zLCBwbHVnaW5zOiBbLi4uY2FwYWJpbGl0eU9wdGlvbnMucGx1Z2luc10gfVxuICAgIH0pKSxcbiAgICBmcmFtZXdvcms6ICdtb2NoYScsXG4gICAgbG9nTGV2ZWw6ICd3YXJuJyxcbiAgICAuLi4ob3B0aW9ucy5tYXhJbnN0YW5jZXMgIT09IHVuZGVmaW5lZCAmJiB7IG1heEluc3RhbmNlczogb3B0aW9ucy5tYXhJbnN0YW5jZXMgfSksXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gV2ViZHJpdmVySU8ncyBvd24gb3B0aW9uIG5hbWUuXG4gICAgbW9jaGFPcHRzOiB7XG4gICAgICB0aW1lb3V0OiBvcHRpb25zLnRlc3RUaW1lb3V0SW5NaWxsaXNlY29uZHMgPz8gREVGQVVMVF9XRElPX09CU0lESUFOX1RFU1RfVElNRU9VVF9JTl9NSUxMSVNFQ09ORFMsXG4gICAgICB1aTogJ2JkZCdcbiAgICB9LFxuICAgIHJlcG9ydGVyczogWydvYnNpZGlhbiddLFxuICAgIHJ1bm5lcjogJ2xvY2FsJyxcbiAgICBzZXJ2aWNlczogWydvYnNpZGlhbiddLFxuICAgIHNwZWNzOiBbLi4ub3B0aW9ucy5zcGVjcyA/PyBbREVGQVVMVF9FTkRfVE9fRU5EX1NQRUNTXV1cbiAgfTtcbn1cblxuLyoqXG4gKiBSdW5zIHRoZSBlbmQtdG8tZW5kIHRlc3RzIHdpdGggYHdkaW8tb2JzaWRpYW4tc2VydmljZWA6IHRoZSBwcm9kdWN0aW9uIGJ1aWxkLCB0aGVuIGB3ZGlvIHJ1biA8Y29uZmlnPmAuIEl0IGlzIHRoZVxuICogYm9keSBvZiBhIHBsdWdpbidzIGB0ZXN0OmUyZWAgc2NyaXB0LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9uc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgdGhlIHRlc3RzIHBhc3MuXG4gKiBAdGhyb3dzIFdoZW4gYSBwYWNrYWdlIGlzIG1pc3NpbmcsIG5vIGNvbmZpZyBmaWxlIGlzIGZvdW5kLCB0aGUgYnVpbGQgZmFpbHMgb3IgYSB0ZXN0IGZhaWxzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbihvcHRpb25zOiBUZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuT3B0aW9ucyA9IHt9KTogUHJvbWlzZTx2b2lkPiB7XG4gIGFzc2VydFByb2plY3RQYWNrYWdlc0luc3RhbGxlZCh7IHBhY2thZ2VOYW1lczogV0RJT19PQlNJRElBTl9QQUNLQUdFUywgcmVxdWVzdGVyOiAndGVzdEVuZFRvRW5kV2l0aFdkaW9PYnNpZGlhbigpJyB9KTtcbiAgY29uc3QgY29uZmlnUGF0aCA9IG9wdGlvbnMuY29uZmlnUGF0aCA/PyBmaW5kV2Rpb0NvbmZpZ0ZpbGUoKTtcbiAgaWYgKG9wdGlvbnMuc2hvdWxkQnVpbGQgPz8gdHJ1ZSkge1xuICAgIGF3YWl0IG5wbVJ1bignYnVpbGQnKTtcbiAgfVxuICBhd2FpdCBleGVjRnJvbVJvb3QoWyd3ZGlvJywgJ3J1bicsIGNvbmZpZ1BhdGhdLCB7IGlzSW50ZXJhY3RpdmU6IHRydWUgfSk7XG59XG5cbmZ1bmN0aW9uIGZpbmRXZGlvQ29uZmlnRmlsZSgpOiBzdHJpbmcge1xuICBjb25zdCBjb25maWdGaWxlTmFtZSA9IFdESU9fQ09ORklHX0ZJTEVfTkFNRVMuZmluZCgoZmlsZU5hbWUpID0+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBmaWxlTmFtZSB9KSkpO1xuICBpZiAoY29uZmlnRmlsZU5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuKCkgZm91bmQgbm8gV2ViZHJpdmVySU8gY29uZmlnICgke1dESU9fQ09ORklHX0ZJTEVfTkFNRVMuam9pbignLCAnKX0pIGluIHRoZSBwcm9qZWN0IHJvb3QuIGBcbiAgICAgICAgKyAnQ3JlYXRlIHdkaW8uY29uZi5tdHMgZXhwb3J0aW5nIGBjb25maWcgPSBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWcoKWAsIG9yIHBhc3MgYGNvbmZpZ1BhdGhgLidcbiAgICApO1xuICB9XG4gIHJldHVybiBjb25maWdGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVZhdWx0KHZhdWx0OiBEZWZpbmVXZGlvT2JzaWRpYW5Db25maWdPcHRpb25zWyd2YXVsdCddKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhdWx0ID09PSBmYWxzZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiB2YXVsdCB9KTtcbiAgfVxuICBjb25zdCBkZW1vVmF1bHRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQgfSk7XG4gIHJldHVybiBleGlzdHNTeW5jKGRlbW9WYXVsdFBhdGgpID8gZGVtb1ZhdWx0UGF0aCA6IHVuZGVmaW5lZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSxxQkFBdUI7QUFDdkIsa0JBR087QUFDUCxxQkFBMkI7QUFFM0Isd0NBQXdDO0FBQ3hDLGdDQUdPO0FBTUEsTUFBTSxxREFBcUQ7QUFLM0QsTUFBTSx5QkFBNEMsQ0FBQyxpQkFBaUIsY0FBYztBQUt6RixNQUFNLHlCQUE0QyxDQUFDLGFBQWEsc0JBQXNCLHlCQUF5QiwwQkFBMEIsdUJBQXVCO0FBdU16SixTQUFTLHlCQUF5QixVQUEyQyxDQUFDLEdBQXVCO0FBQzFHLFFBQU0sbUJBQWUscUNBQXdCLEVBQUUsTUFBTSxRQUFRLGdCQUFnQiwwREFBd0IsVUFBVSxDQUFDO0FBQ2hILFFBQU0sUUFBUSxhQUFhLFFBQVEsS0FBSztBQUN4QyxRQUFNLG9CQUFtRDtBQUFBLElBQ3ZELFNBQVMsQ0FBQyxZQUFZO0FBQUEsSUFDdEIsR0FBSSxRQUFRLHFCQUFxQixVQUFhLEVBQUUsa0JBQWtCLFFBQVEsaUJBQWlCO0FBQUEsSUFDM0YsR0FBSSxVQUFVLFVBQWEsRUFBRSxNQUFNO0FBQUEsRUFDckM7QUFFQSxTQUFPO0FBQUE7QUFBQSxJQUVMLGNBQVUscUNBQXdCLEVBQUUsTUFBTSxRQUFRLGVBQWUsa0JBQWtCLENBQUM7QUFBQSxJQUNwRixlQUFlLFFBQVEsZUFBZSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO0FBQUEsTUFDckUsZUFBZTtBQUFBLE1BQ2Ysa0JBQWtCO0FBQUEsTUFDbEIsd0JBQXdCLEVBQUUsR0FBRyxtQkFBbUIsU0FBUyxDQUFDLEdBQUcsa0JBQWtCLE9BQU8sRUFBRTtBQUFBLElBQzFGLEVBQUU7QUFBQSxJQUNGLFdBQVc7QUFBQSxJQUNYLFVBQVU7QUFBQSxJQUNWLEdBQUksUUFBUSxpQkFBaUIsVUFBYSxFQUFFLGNBQWMsUUFBUSxhQUFhO0FBQUE7QUFBQSxJQUUvRSxXQUFXO0FBQUEsTUFDVCxTQUFTLFFBQVEsNkJBQTZCO0FBQUEsTUFDOUMsSUFBSTtBQUFBLElBQ047QUFBQSxJQUNBLFdBQVcsQ0FBQyxVQUFVO0FBQUEsSUFDdEIsUUFBUTtBQUFBLElBQ1IsVUFBVSxDQUFDLFVBQVU7QUFBQSxJQUNyQixPQUFPLENBQUMsR0FBRyxRQUFRLFNBQVMsQ0FBQyxrREFBd0IsQ0FBQztBQUFBLEVBQ3hEO0FBQ0Y7QUFVQSxlQUFzQiw2QkFBNkIsVUFBK0MsQ0FBQyxHQUFrQjtBQUNuSCxnRUFBK0IsRUFBRSxjQUFjLHdCQUF3QixXQUFXLGlDQUFpQyxDQUFDO0FBQ3BILFFBQU0sYUFBYSxRQUFRLGNBQWMsbUJBQW1CO0FBQzVELE1BQUksUUFBUSxlQUFlLE1BQU07QUFDL0IsY0FBTSx1QkFBTyxPQUFPO0FBQUEsRUFDdEI7QUFDQSxZQUFNLDBCQUFhLENBQUMsUUFBUSxPQUFPLFVBQVUsR0FBRyxFQUFFLGVBQWUsS0FBSyxDQUFDO0FBQ3pFO0FBRUEsU0FBUyxxQkFBNkI7QUFDcEMsUUFBTSxpQkFBaUIsdUJBQXVCLEtBQUssQ0FBQyxpQkFBYSwrQkFBVyxxQ0FBd0IsRUFBRSxNQUFNLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDeEgsTUFBSSxtQkFBbUIsUUFBVztBQUNoQyxVQUFNLElBQUk7QUFBQSxNQUNSLCtEQUErRCx1QkFBdUIsS0FBSyxJQUFJLENBQUM7QUFBQSxJQUVsRztBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFFQSxTQUFTLGFBQWEsT0FBcUU7QUFDekYsTUFBSSxVQUFVLE9BQU87QUFDbkIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLFVBQVUsUUFBVztBQUN2QixlQUFPLHFDQUF3QixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQUEsRUFDaEQ7QUFDQSxRQUFNLG9CQUFnQixxQ0FBd0IsRUFBRSxNQUFNLDBEQUF3QixVQUFVLENBQUM7QUFDekYsYUFBTywyQkFBVyxhQUFhLElBQUksZ0JBQWdCO0FBQ3JEOyIsIm5hbWVzIjpbXX0=
|