@mnaoumov/obsidian-dev-toolkit 2.0.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/docs-site/index.cjs +118 -0
- package/dist/lib/cjs/docs-site/index.d.cts +2 -0
- package/dist/lib/cjs/docs-site/obsidian-external-type-links.cjs +119 -0
- package/dist/lib/cjs/docs-site/obsidian-external-type-links.d.cts +25 -0
- package/dist/lib/cjs/index.cjs +7 -1
- package/dist/lib/cjs/index.d.cts +2 -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/docs-site/index.d.mts +2 -0
- package/dist/lib/esm/docs-site/index.mjs +10 -0
- package/dist/lib/esm/docs-site/obsidian-external-type-links.d.mts +25 -0
- package/dist/lib/esm/docs-site/obsidian-external-type-links.mjs +21 -0
- package/dist/lib/esm/index.d.mts +2 -0
- package/dist/lib/esm/index.mjs +5 -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/dist/templates/dprint.json +1 -0
- package/dist/templates/scripts/commitlint-config.ts +2 -2
- package/docs-site/index/package.json +6 -0
- package/docs-site/obsidian-external-type-links/package.json +6 -0
- package/docs-site/package.json +6 -0
- package/package.json +136 -7
- 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
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* What the end-to-end runners share: where the specs live, and the check that the packages a runner drives are
|
|
6
|
+
* installed in the project, so a missing one is reported with the `npm install` line that fixes it instead of as a
|
|
7
|
+
* shell's `command not found`.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The spec files the end-to-end runners run by default.
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_END_TO_END_SPECS = "./e2e/**/*.spec.ts";
|
|
13
|
+
/**
|
|
14
|
+
* Parameters for {@link assertProjectPackagesInstalled}.
|
|
15
|
+
*/
|
|
16
|
+
export interface AssertProjectPackagesInstalledParams {
|
|
17
|
+
/**
|
|
18
|
+
* The packages the runner needs.
|
|
19
|
+
*/
|
|
20
|
+
readonly packageNames: readonly string[];
|
|
21
|
+
/**
|
|
22
|
+
* The folder whose `node_modules` the packages are resolved from. Defaults to the project root.
|
|
23
|
+
*/
|
|
24
|
+
readonly projectFolder?: string;
|
|
25
|
+
/**
|
|
26
|
+
* What needs the packages, as the error message names it, e.g. `testEndToEndWithWdioObsidian()`.
|
|
27
|
+
*/
|
|
28
|
+
readonly requester: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Throws when any of the packages is not installed in the project, naming the `npm install` line.
|
|
32
|
+
*
|
|
33
|
+
* @param params - The {@link AssertProjectPackagesInstalledParams}.
|
|
34
|
+
* @throws When a package is missing.
|
|
35
|
+
*/
|
|
36
|
+
export declare function assertProjectPackagesInstalled(params: AssertProjectPackagesInstalledParams): void;
|
|
@@ -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+IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBmaWxlTmFtZSB9KSkpO1xuICBpZiAoY29uZmlnRmlsZU5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGB0ZXN0RW5kVG9FbmRXaXRoV2Rpb09ic2lkaWFuKCkgZm91bmQgbm8gV2ViZHJpdmVySU8gY29uZmlnICgke1dESU9fQ09ORklHX0ZJTEVfTkFNRVMuam9pbignLCAnKX0pIGluIHRoZSBwcm9qZWN0IHJvb3QuIGBcbiAgICAgICAgKyAnQ3JlYXRlIHdkaW8uY29uZi5tdHMgZXhwb3J0aW5nIGBjb25maWcgPSBkZWZpbmVXZGlvT2JzaWRpYW5Db25maWcoKWAsIG9yIHBhc3MgYGNvbmZpZ1BhdGhgLidcbiAgICApO1xuICB9XG4gIHJldHVybiBjb25maWdGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVZhdWx0KHZhdWx0OiBEZWZpbmVXZGlvT2JzaWRpYW5Db25maWdPcHRpb25zWyd2YXVsdCddKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhdWx0ID09PSBmYWxzZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgaWYgKHZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiB2YXVsdCB9KTtcbiAgfVxuICBjb25zdCBkZW1vVmF1bHRQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoeyBwYXRoOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EZW1vVmF1bHQgfSk7XG4gIHJldHVybiBleGlzdHNTeW5jKGRlbW9WYXVsdFBhdGgpID8gZGVtb1ZhdWx0UGF0aCA6IHVuZGVmaW5lZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|