@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
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @mnaoumov/obsidian-dev-toolkit
|
|
2
2
|
|
|
3
|
-
Tooling for Obsidian plugins: the
|
|
3
|
+
Tooling for Obsidian plugins: the plugin builder for esbuild, with adapters for vite, rollup, webpack and parcel and built-in support for React, Preact, Solid, Svelte, Vue, PostCSS, Tailwind, CSS modules and WebAssembly, the shared ESLint and Vitest configurations, demo vaults, the plugin release script, the per-test setup for plugin tests, and the consumer templates. It continues the tooling half of `obsidian-dev-utils`. Install it as a dev dependency.
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
@@ -8,6 +8,10 @@ Tooling for Obsidian plugins: the esbuild plugin builder, the shared ESLint and
|
|
|
8
8
|
npm install --save-dev @mnaoumov/obsidian-dev-toolkit
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
## Documentation
|
|
12
|
+
|
|
13
|
+
The guides and the API reference are at <https://mnaoumov.dev/obsidian-dev-toolkit/>.
|
|
14
|
+
|
|
11
15
|
## Where it fits
|
|
12
16
|
|
|
13
17
|
It is one of five packages that replace [`obsidian-dev-utils`](https://github.com/mnaoumov/obsidian-dev-utils): [`@mnaoumov/typescript-lib`](https://github.com/mnaoumov/typescript-lib), [`@mnaoumov/typescript-test-toolkit`](https://github.com/mnaoumov/typescript-test-toolkit), [`@mnaoumov/typescript-dev-toolkit`](https://github.com/mnaoumov/typescript-dev-toolkit), [`@mnaoumov/obsidian-lib`](https://github.com/mnaoumov/obsidian-lib) and [`@mnaoumov/obsidian-dev-toolkit`](https://github.com/mnaoumov/obsidian-dev-toolkit). It depends on [`@mnaoumov/typescript-lib`](https://github.com/mnaoumov/typescript-lib), [`@mnaoumov/typescript-dev-toolkit`](https://github.com/mnaoumov/typescript-dev-toolkit) and [`@mnaoumov/obsidian-lib`](https://github.com/mnaoumov/obsidian-lib). It moved here from that repository with its history.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// The `archive-demo-vault` command. The logic lives in `src/demo-vault-cli.ts`, built into `dist/`.
|
|
4
|
+
import process from 'node:process';
|
|
5
|
+
|
|
6
|
+
import { runArchiveDemoVaultCli } from '../dist/lib/esm/demo-vault-cli.mjs';
|
|
7
|
+
|
|
8
|
+
process.exitCode = await runArchiveDemoVaultCli();
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// The `generate-coverage-badge` command. The logic lives in `src/test-runners/coverage-badge-cli.ts`, built into `dist/`.
|
|
4
|
+
import process from 'node:process';
|
|
5
|
+
|
|
6
|
+
import { runCoverageBadgeCli } from '../dist/lib/esm/test-runners/coverage-badge-cli.mjs';
|
|
7
|
+
|
|
8
|
+
process.exitCode = await runCoverageBadgeCli(process.argv.slice(2));
|
|
@@ -2,33 +2,6 @@
|
|
|
2
2
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
3
|
if you want to view the source, please visit the github repository of this plugin
|
|
4
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
5
|
(function patchObsidianRequire() {
|
|
33
6
|
const originalRequire = require;
|
|
34
7
|
if (!originalRequire || originalRequire.__isPatched) {
|
|
@@ -105,11 +78,9 @@ ensureBrowserProcess();
|
|
|
105
78
|
})();
|
|
106
79
|
|
|
107
80
|
"use strict";
|
|
108
|
-
var __create = Object.create;
|
|
109
81
|
var __defProp = Object.defineProperty;
|
|
110
82
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
111
83
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
112
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
113
84
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
114
85
|
var __export = (target, all) => {
|
|
115
86
|
for (var name in all)
|
|
@@ -123,181 +94,25 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
123
94
|
}
|
|
124
95
|
return to;
|
|
125
96
|
};
|
|
126
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
127
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
128
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
129
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
130
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
131
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
132
|
-
mod
|
|
133
|
-
));
|
|
134
97
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
135
98
|
var copy_to_obsidian_plugins_folder_plugin_exports = {};
|
|
136
99
|
__export(copy_to_obsidian_plugins_folder_plugin_exports, {
|
|
137
100
|
copyToObsidianPluginsFolderPlugin: () => copyToObsidianPluginsFolderPlugin
|
|
138
101
|
});
|
|
139
102
|
module.exports = __toCommonJS(copy_to_obsidian_plugins_folder_plugin_exports);
|
|
140
|
-
var
|
|
141
|
-
var import_debug = require('@mnaoumov/typescript-lib/debug');
|
|
142
|
-
var import_path = require('@mnaoumov/typescript-lib/path');
|
|
143
|
-
var import_promises = require('node:fs/promises');
|
|
144
|
-
var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
|
|
145
|
-
var import_obsidian_integration_testing = require('obsidian-integration-testing');
|
|
146
|
-
const moduleState = {
|
|
147
|
-
devInstanceTransportPromise: void 0,
|
|
148
|
-
isDevInstanceCleanupRegistered: false,
|
|
149
|
-
isDevInstanceDisposed: false
|
|
150
|
-
};
|
|
151
|
-
const DEV_INSTANCE_PROBE_INTERVAL_IN_MILLISECONDS = 2e3;
|
|
152
|
-
const DEV_INSTANCE_CLOSED_PROBE_COUNT = 3;
|
|
103
|
+
var import_obsidian_plugins_folder_deployment = require('../obsidian-plugins-folder-deployment.cjs');
|
|
153
104
|
function copyToObsidianPluginsFolderPlugin(params) {
|
|
154
|
-
const {
|
|
155
|
-
distFolder,
|
|
156
|
-
isProductionBuild,
|
|
157
|
-
pluginName
|
|
158
|
-
} = params;
|
|
159
|
-
let {
|
|
160
|
-
obsidianConfigFolder
|
|
161
|
-
} = params;
|
|
162
105
|
return {
|
|
163
106
|
name: "copy-to-obsidian-plugins-folder",
|
|
164
107
|
setup(build) {
|
|
165
108
|
build.onEnd(async () => {
|
|
166
|
-
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
if (!obsidianConfigFolder) {
|
|
170
|
-
(0, import_debug.getLibDebugger)("copyToObsidianPluginsFolderPlugin")(
|
|
171
|
-
"No Obsidian config folder configured. `OBSIDIAN_CONFIG_FOLDER` environment variable is not set in system or in `.env` file. The compiled plugin will not be copied into Obsidian plugins folder."
|
|
172
|
-
);
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
obsidianConfigFolder = (0, import_path.toPosixPath)(obsidianConfigFolder);
|
|
176
|
-
const pluginFolder = (0, import_path.join)(obsidianConfigFolder, "plugins", pluginName);
|
|
177
|
-
await (0, import_promises.mkdir)(pluginFolder, { recursive: true });
|
|
178
|
-
await (0, import_promises.cp)(distFolder, pluginFolder, { recursive: true });
|
|
179
|
-
await installAndEnableHotReload({
|
|
180
|
-
obsidianConfigFolder,
|
|
181
|
-
pluginName
|
|
182
|
-
});
|
|
109
|
+
await (0, import_obsidian_plugins_folder_deployment.deployToObsidianPluginsFolder)(params);
|
|
183
110
|
});
|
|
184
111
|
}
|
|
185
112
|
};
|
|
186
113
|
}
|
|
187
|
-
async function getOrLaunchDevInstance(vaultPath) {
|
|
188
|
-
moduleState.devInstanceTransportPromise ??= launchDevInstance(vaultPath);
|
|
189
|
-
try {
|
|
190
|
-
return await moduleState.devInstanceTransportPromise;
|
|
191
|
-
} catch (error) {
|
|
192
|
-
moduleState.devInstanceTransportPromise = void 0;
|
|
193
|
-
throw error;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
async function installAndEnableHotReload(params) {
|
|
197
|
-
const {
|
|
198
|
-
obsidianConfigFolder,
|
|
199
|
-
pluginName
|
|
200
|
-
} = params;
|
|
201
|
-
const vaultPath = (0, import_path.dirname)(obsidianConfigFolder);
|
|
202
|
-
const transport = await getOrLaunchDevInstance(vaultPath);
|
|
203
|
-
await (0, import_obsidian_integration_testing.evalInObsidian)({
|
|
204
|
-
// eslint-disable-next-line no-shadow -- No actual shadowing as the function is executed externally.
|
|
205
|
-
async callback({ app, obsidianModule, pluginName: pluginName2 }) {
|
|
206
|
-
const HOT_RELOAD_PLUGIN_ID = "hot-reload";
|
|
207
|
-
const COMMUNITY_PLUGINS_REGISTRY_URL = "https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json";
|
|
208
|
-
const { requestUrl } = obsidianModule;
|
|
209
|
-
await app.plugins.setEnable(true);
|
|
210
|
-
if (!Object.hasOwn(app.plugins.manifests, HOT_RELOAD_PLUGIN_ID)) {
|
|
211
|
-
const registryResponse = await requestUrl(COMMUNITY_PLUGINS_REGISTRY_URL);
|
|
212
|
-
const registryEntries = registryResponse.json;
|
|
213
|
-
const entry = registryEntries.find((candidate) => candidate.id === HOT_RELOAD_PLUGIN_ID);
|
|
214
|
-
if (!entry) {
|
|
215
|
-
throw new Error(`Plugin '${HOT_RELOAD_PLUGIN_ID}' was not found in the Obsidian community plugins registry.`);
|
|
216
|
-
}
|
|
217
|
-
const latestReleaseResponse = await requestUrl(`https://api.github.com/repos/${entry.repo}/releases/latest`);
|
|
218
|
-
const latestRelease = latestReleaseResponse.json;
|
|
219
|
-
const version = latestRelease.tag_name;
|
|
220
|
-
const manifestResponse = await requestUrl(`https://github.com/${entry.repo}/releases/download/${version}/manifest.json`);
|
|
221
|
-
const manifest = manifestResponse.json;
|
|
222
|
-
await app.plugins.installPlugin(entry.repo, version, manifest);
|
|
223
|
-
}
|
|
224
|
-
if (!Object.hasOwn(app.plugins.plugins, HOT_RELOAD_PLUGIN_ID)) {
|
|
225
|
-
await app.plugins.enablePluginAndSave(HOT_RELOAD_PLUGIN_ID);
|
|
226
|
-
}
|
|
227
|
-
await app.plugins.enablePluginAndSave(pluginName2);
|
|
228
|
-
},
|
|
229
|
-
input: { pluginName },
|
|
230
|
-
shouldSkipPreflightChecks: true,
|
|
231
|
-
transport,
|
|
232
|
-
vaultPath
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
async function isDevInstanceRunning(cdpUrl) {
|
|
236
|
-
try {
|
|
237
|
-
const response = await fetch(`${cdpUrl}/json`);
|
|
238
|
-
const targets = await response.json();
|
|
239
|
-
return targets.some((target) => target.type === "page");
|
|
240
|
-
} catch {
|
|
241
|
-
return false;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
async function launchDevInstance(vaultPath) {
|
|
245
|
-
const transport = await (0, import_obsidian_integration_testing.createTransportFromOptions)();
|
|
246
|
-
try {
|
|
247
|
-
await transport.registerVault(vaultPath);
|
|
248
|
-
} catch (error) {
|
|
249
|
-
transport.disposeSync?.();
|
|
250
|
-
throw error;
|
|
251
|
-
}
|
|
252
|
-
registerDevInstanceCleanup(transport);
|
|
253
|
-
watchDevInstanceAndStopOnClose(transport);
|
|
254
|
-
return transport;
|
|
255
|
-
}
|
|
256
|
-
function registerDevInstanceCleanup(transport) {
|
|
257
|
-
if (moduleState.isDevInstanceCleanupRegistered) {
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
moduleState.isDevInstanceCleanupRegistered = true;
|
|
261
|
-
import_node_process.default.on("exit", disposeDevInstance);
|
|
262
|
-
for (const signal of ["SIGHUP", "SIGINT", "SIGTERM"]) {
|
|
263
|
-
import_node_process.default.once(signal, () => {
|
|
264
|
-
disposeDevInstance();
|
|
265
|
-
import_node_process.default.exit();
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
function disposeDevInstance() {
|
|
269
|
-
if (moduleState.isDevInstanceDisposed) {
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
moduleState.isDevInstanceDisposed = true;
|
|
273
|
-
transport.disposeSync?.();
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
function watchDevInstanceAndStopOnClose(transport) {
|
|
277
|
-
if (!(transport instanceof import_obsidian_integration_testing.DesktopCdpTransport)) {
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
const endpoint = transport.getOwnedInstanceEndpoint();
|
|
281
|
-
if (!endpoint) {
|
|
282
|
-
return;
|
|
283
|
-
}
|
|
284
|
-
const cdpUrl = `http://${endpoint.host}:${String(endpoint.port)}`;
|
|
285
|
-
(0, import_async.invokeAsyncSafely)(stopWhenDevInstanceCloses);
|
|
286
|
-
async function stopWhenDevInstanceCloses() {
|
|
287
|
-
let consecutiveFailedProbeCount = 0;
|
|
288
|
-
while (consecutiveFailedProbeCount < DEV_INSTANCE_CLOSED_PROBE_COUNT) {
|
|
289
|
-
await (0, import_async.sleep)({ milliseconds: DEV_INSTANCE_PROBE_INTERVAL_IN_MILLISECONDS });
|
|
290
|
-
if (moduleState.isDevInstanceDisposed) {
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
|
-
consecutiveFailedProbeCount = await isDevInstanceRunning(cdpUrl) ? 0 : consecutiveFailedProbeCount + 1;
|
|
294
|
-
}
|
|
295
|
-
console.warn("The Obsidian instance owned by `npm run dev` was closed. Stopping the development build.");
|
|
296
|
-
import_node_process.default.exit();
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
114
|
// Annotate the CommonJS export names for ESM import in node:
|
|
300
115
|
0 && (module.exports = {
|
|
301
116
|
copyToObsidianPluginsFolderPlugin
|
|
302
117
|
});
|
|
303
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9idW5kbGVycy9lc2J1aWxkLWltcGwvY29weS10by1vYnNpZGlhbi1wbHVnaW5zLWZvbGRlci1wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBhdXRvbWF0aWNhbGx5IGNvcGllcyB0aGUgYnVpbGQgb3V0cHV0XG4gKiB0byB0aGUgT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIgZHVyaW5nIGRldmVsb3BtZW50LiBUaGlzIHBsdWdpbiBoZWxwcyBzdHJlYW1saW5lXG4gKiB0aGUgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgYnkgZW5zdXJpbmcgdGhhdCB0aGUgbGF0ZXN0IGJ1aWxkIGlzIGFsd2F5cyBhdmFpbGFibGVcbiAqIGluIHRoZSBjb3JyZWN0IE9ic2lkaWFuIGZvbGRlciBmb3IgdGVzdGluZyBhbmQgdXNlLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBlc2J1aWxkIHBsdWdpbiB0aGF0IGNvcGllcyBidWlsZCBvdXRwdXQgdG8gT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXI7IHJlcXVpcmVzIGEgbGl2ZSBlc2J1aWxkIGNvbnRleHQuICovXG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnZXNidWlsZCc7XG5pbXBvcnQgdHlwZSB7IFBsdWdpbk1hbmlmZXN0IH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblRyYW5zcG9ydCB9IGZyb20gJ29ic2lkaWFuLWludGVncmF0aW9uLXRlc3RpbmcnO1xuXG5pbXBvcnQge1xuICBpbnZva2VBc3luY1NhZmVseSxcbiAgc2xlZXBcbn0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2FzeW5jJztcbmltcG9ydCB7IGdldExpYkRlYnVnZ2VyIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL2RlYnVnJztcbmltcG9ydCB7XG4gIGRpcm5hbWUsXG4gIGpvaW4sXG4gIHRvUG9zaXhQYXRoXG59IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi9wYXRoJztcbmltcG9ydCB7XG4gIGNwLFxuICBta2RpclxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCBwcm9jZXNzIGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQge1xuICBjcmVhdGVUcmFuc3BvcnRGcm9tT3B0aW9ucyxcbiAgRGVza3RvcENkcFRyYW5zcG9ydCxcbiAgZXZhbEluT2JzaWRpYW5cbn0gZnJvbSAnb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNvcHlUb09ic2lkaWFuUGx1Z2luc0ZvbGRlclBsdWdpbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgd2hlcmUgdGhlIGJ1aWx0IGZpbGVzIGFyZSBsb2NhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdEZvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBidWlsZCBpcyBhIHByb2R1Y3Rpb24gYnVpbGQuXG4gICAqL1xuICByZWFkb25seSBpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciBvZiB0aGUgT2JzaWRpYW4gY29uZmlndXJhdGlvbi4gSWYgbm90IHByb3ZpZGVkLCB0aGUgcGx1Z2luIHdpbGwgbm90IGNvcHkgZmlsZXMuXG4gICAqL1xuICByZWFkb25seSBvYnNpZGlhbkNvbmZpZ0ZvbGRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgT2JzaWRpYW4gcGx1Z2luLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBzdWJzZXQgb2YgYSBDRFAgdGFyZ2V0IGRlc2NyaXB0b3IgcmVhZCBmcm9tIHRoZSBvd25lZCBpbnN0YW5jZSdzIGAvanNvbmAgZW5kcG9pbnQuXG4gKi9cbmludGVyZmFjZSBDZHBUYXJnZXQge1xuICAvKipcbiAgICogVGhlIGtpbmQgb2YgdGhlIHRhcmdldCwgZS5nLiBgcGFnZWAuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBzaW5nbGUgZW50cnkgaW4gT2JzaWRpYW4ncyBjb21tdW5pdHkgcGx1Z2lucyByZWdpc3RyeSAoYGNvbW11bml0eS1wbHVnaW5zLmpzb25gKS5cbiAqL1xuaW50ZXJmYWNlIENvbW11bml0eVBsdWdpblJlZ2lzdHJ5RW50cnkge1xuICAvKipcbiAgICogVGhlIHBsdWdpbiBpZC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBgb3duZXIvbmFtZWAgR2l0SHViIHJlcG9zaXRvcnkgdGhlIHBsdWdpbiBpcyBwdWJsaXNoZWQgZnJvbS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgc3Vic2V0IG9mIGEgR2l0SHViIHJlbGVhc2Ugd2UgcmVhZC5cbiAqL1xuaW50ZXJmYWNlIEdpdEh1YlJlbGVhc2Uge1xuICAvKipcbiAgICogVGhlIHJlbGVhc2UgdGFnLCBhIGJhcmUgdmVyc2lvbiBzdWNoIGFzIGAxLjIuM2AuXG4gICAqL1xuICByZWFkb25seSB0YWdfbmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBpbnN0YWxsQW5kRW5hYmxlSG90UmVsb2FkfS5cbiAqL1xuaW50ZXJmYWNlIEluc3RhbGxBbmRFbmFibGVIb3RSZWxvYWRQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGZvbGRlciBvZiB0aGUgT2JzaWRpYW4gY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuQ29uZmlnRm9sZGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBidWlsdCBPYnNpZGlhbiBwbHVnaW4gdG8gZW5hYmxlIG9uY2UgSG90UmVsb2FkIGlzIGluIHBsYWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vLyBUaGUgYG5wbSBydW4gZGV2YC1vd25lZCBPYnNpZGlhbiBpbnN0YW5jZTogbGF1bmNoZWQgb24gdGhlIGZpcnN0IHJlYnVpbGQgYW5kIHJldXNlZCBhY3Jvc3MgcmVidWlsZHMuXG4vLyBJdHMgbGlmZXRpbWUgaXMgdGllZCB0byB0aGUgYG5wbSBydW4gZGV2YCBwcm9jZXNzIGluIEJPVEggZGlyZWN0aW9ucy5cbi8vIFRoZSBpbnN0YW5jZSBpcyBjbG9zZWQgd2hlbiB0aGUgcHJvY2VzcyB0ZXJtaW5hdGVzIChzZWUgYHJlZ2lzdGVyRGV2SW5zdGFuY2VDbGVhbnVwYCkuXG4vLyBUaGUgcHJvY2VzcyBzdG9wcyB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjbG9zZWQgKHNlZSBgd2F0Y2hEZXZJbnN0YW5jZUFuZFN0b3BPbkNsb3NlYCkuXG4vKipcbk1vZHVsZS1sZXZlbCBtdXRhYmxlIHN0YXRlLCBoZWxkIGluIG9uZSBvYmplY3Qgc28gZWFjaCBtdXRhdGlvbiBuYW1lcyBpdCBleHBsaWNpdGx5LlxuICovXG5pbnRlcmZhY2UgTW9kdWxlU3RhdGUge1xuICBkZXZJbnN0YW5jZVRyYW5zcG9ydFByb21pc2U6IFByb21pc2U8T2JzaWRpYW5UcmFuc3BvcnQ+IHwgdW5kZWZpbmVkO1xuICBpc0Rldkluc3RhbmNlQ2xlYW51cFJlZ2lzdGVyZWQ6IGJvb2xlYW47XG4gIGlzRGV2SW5zdGFuY2VEaXNwb3NlZDogYm9vbGVhbjtcbn1cblxuY29uc3QgbW9kdWxlU3RhdGU6IE1vZHVsZVN0YXRlID0ge1xuICBkZXZJbnN0YW5jZVRyYW5zcG9ydFByb21pc2U6IHVuZGVmaW5lZCxcbiAgaXNEZXZJbnN0YW5jZUNsZWFudXBSZWdpc3RlcmVkOiBmYWxzZSxcbiAgaXNEZXZJbnN0YW5jZURpc3Bvc2VkOiBmYWxzZVxufTtcblxuLyoqXG4gKiBIb3cgb2Z0ZW4gdGhlIG93bmVkIE9ic2lkaWFuIGluc3RhbmNlIGlzIHByb2JlZCB0byBkZXRlY3QgdGhhdCBpdCB3YXMgY2xvc2VkLlxuICovXG5jb25zdCBERVZfSU5TVEFOQ0VfUFJPQkVfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTID0gMjAwMDtcblxuLyoqXG4gKiBIb3cgbWFueSBjb25zZWN1dGl2ZSBmYWlsZWQgcHJvYmVzIGFyZSB0b2xlcmF0ZWQgYmVmb3JlIHRoZSBvd25lZCBpbnN0YW5jZSBpcyBjb25zaWRlcmVkIGNsb3NlZC4gQVxuICogc2luZ2xlIGZhaWx1cmUgY2FuIGJlIGEgdHJhbnNpZW50IGhpY2N1cCAoYSBidXN5IHJlbmRlcmVyLCBhIG1vbWVudGFyaWx5IHJlZnVzZWQgY29ubmVjdGlvbiksIHNvIHRoZVxuICogZGV2ZWxvcG1lbnQgYnVpbGQgaXMgb25seSBzdG9wcGVkIG9uY2UgdGhlIGVuZHBvaW50IHN0YXlzIHVucmVhY2hhYmxlLlxuICovXG5jb25zdCBERVZfSU5TVEFOQ0VfQ0xPU0VEX1BST0JFX0NPVU5UID0gMztcbi8qKlxuICogQ3JlYXRlcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IGNvcGllcyB0aGUgYnVpbGQgb3V0cHV0IHRvIHRoZSBPYnNpZGlhbiBwbHVnaW5zIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEFuIGVzYnVpbGQgYFBsdWdpbmAgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luKHBhcmFtczogQ29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luUGFyYW1zKTogUGx1Z2luIHtcbiAgY29uc3Qge1xuICAgIGRpc3RGb2xkZXIsXG4gICAgaXNQcm9kdWN0aW9uQnVpbGQsXG4gICAgcGx1Z2luTmFtZVxuICB9ID0gcGFyYW1zO1xuICBsZXQge1xuICAgIG9ic2lkaWFuQ29uZmlnRm9sZGVyXG4gIH0gPSBwYXJhbXM7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2NvcHktdG8tb2JzaWRpYW4tcGx1Z2lucy1mb2xkZXInLFxuICAgIHNldHVwKGJ1aWxkKTogdm9pZCB7XG4gICAgICBidWlsZC5vbkVuZChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChpc1Byb2R1Y3Rpb25CdWlsZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb2JzaWRpYW5Db25maWdGb2xkZXIpIHtcbiAgICAgICAgICBnZXRMaWJEZWJ1Z2dlcignY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luJykoXG4gICAgICAgICAgICAnTm8gT2JzaWRpYW4gY29uZmlnIGZvbGRlciBjb25maWd1cmVkLiBgT0JTSURJQU5fQ09ORklHX0ZPTERFUmAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldCBpbiBzeXN0ZW0gb3IgaW4gYC5lbnZgIGZpbGUuIFRoZSBjb21waWxlZCBwbHVnaW4gd2lsbCBub3QgYmUgY29waWVkIGludG8gT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIuJ1xuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgb2JzaWRpYW5Db25maWdGb2xkZXIgPSB0b1Bvc2l4UGF0aChvYnNpZGlhbkNvbmZpZ0ZvbGRlcik7XG5cbiAgICAgICAgY29uc3QgcGx1Z2luRm9sZGVyID0gam9pbihvYnNpZGlhbkNvbmZpZ0ZvbGRlciwgJ3BsdWdpbnMnLCBwbHVnaW5OYW1lKTtcbiAgICAgICAgYXdhaXQgbWtkaXIocGx1Z2luRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgYXdhaXQgY3AoZGlzdEZvbGRlciwgcGx1Z2luRm9sZGVyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgICAgICBhd2FpdCBpbnN0YWxsQW5kRW5hYmxlSG90UmVsb2FkKHtcbiAgICAgICAgICBvYnNpZGlhbkNvbmZpZ0ZvbGRlcixcbiAgICAgICAgICBwbHVnaW5OYW1lXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGBucG0gcnVuIGRldmAtb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgZm9yIHRoZSBnaXZlbiB2YXVsdCwgbGF1bmNoaW5nIGl0IG9uIGZpcnN0IHVzZSBhbmRcbiAqIHJldXNpbmcgaXQgb24gc3Vic2VxdWVudCByZWJ1aWxkcy5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlciB0byBvcGVuLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBvd25lZCB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnR9LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRPckxhdW5jaERldkluc3RhbmNlKHZhdWx0UGF0aDogc3RyaW5nKTogUHJvbWlzZTxPYnNpZGlhblRyYW5zcG9ydD4ge1xuICBtb2R1bGVTdGF0ZS5kZXZJbnN0YW5jZVRyYW5zcG9ydFByb21pc2UgPz89IGxhdW5jaERldkluc3RhbmNlKHZhdWx0UGF0aCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IG1vZHVsZVN0YXRlLmRldkluc3RhbmNlVHJhbnNwb3J0UHJvbWlzZTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBDbGVhciB0aGUgY2FjaGUgc28gYSBsYXRlciByZWJ1aWxkIHJldHJpZXMgdGhlIGxhdW5jaC5cbiAgICBtb2R1bGVTdGF0ZS5kZXZJbnN0YW5jZVRyYW5zcG9ydFByb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnN0YWxscyB0aGUgSG90UmVsb2FkIHBsdWdpbiBmcm9tIHRoZSBvZmZpY2lhbCBjb21tdW5pdHkgc3RvcmUgKGlmIG5vdCBhbHJlYWR5IGluc3RhbGxlZCksIGxvYWRzIGl0XG4gKiAoaWYgbm90IGFscmVhZHkgcnVubmluZyksIGFuZCBlbmFibGVzIHRoZSBmcmVzaGx5LWJ1aWx0IHBsdWdpbiDigJQgYWxsIHRocm91Z2ggdGhlIGBucG0gcnVuIGRldmAtb3duZWRcbiAqIE9ic2lkaWFuIGluc3RhbmNlLCBzbyBIb3RSZWxvYWQgdGhlbiBhdXRvLXJlZnJlc2hlcyB0aGUgZGVwbG95ZWQgcGx1Z2luIG9uIGV2ZXJ5IHJlYnVpbGQuXG4gKlxuICogVGhlIGluc3RhbGwgZ29lcyB0aHJvdWdoIE9ic2lkaWFuJ3Mgb3duIGBpbnN0YWxsUGx1Z2luYCAodGhlIGNvbW11bml0eS1zdG9yZSBtZWNoYW5pc20pLCBhbmQgZXZlcnkgc3RlcFxuICogcnVucyBhZ2FpbnN0IHRoZSBvd25lZCBpbnN0YW5jZSBvdmVyIENEUDsgYW55IGZhaWx1cmUgc3VyZmFjZXMgKHRoZSBkZXYgYnVpbGQgcmVwb3J0cyBpdCkgcmF0aGVyIHRoYW5cbiAqIGJlaW5nIHNpbGVudGx5IHN3YWxsb3dlZC5cbiAqXG4gKiBUaGUgZmlyc3Qgc3RlcCBpcyBsZWF2aW5nIHJlc3RyaWN0ZWQgbW9kZSBmb3IgcmVhbCwgd2hpY2ggdGhlIG93bmVkIGluc3RhbmNlIGhhcyBvbmx5IGZha2VkIHNvIGZhciDigJRcbiAqIHdpdGhvdXQgaXQgXCJlbmFibGVkXCIgYW5kIFwibG9hZGVkXCIgY29tZSBhcGFydCBhbmQgbm9uZSBvZiB0aGUgdmF1bHQncyBwbHVnaW5zLCBIb3RSZWxvYWQgaW5jbHVkZWQsIGFyZVxuICogcnVubmluZy4gU2VlIHRoZSBjb21tZW50IG9uIHRoZSBgc2V0RW5hYmxlYCBjYWxsLlxuICpcbiAqIFRoZSBpbnN0YWxsLWlmLW1pc3NpbmcgLyBlbmFibGUtaWYtZGlzYWJsZWQgbG9naWMgYmVsb3cgaW50ZW50aW9uYWxseSBtaXJyb3JzIHRoZSBwdWJsaWNcbiAqIGBpbnN0YWxsQ29tbXVuaXR5UGx1Z2luYCAvIGBlbmFibGVDb21tdW5pdHlQbHVnaW5gIGhlbHBlcnMgaW4gYHNyYy9vYnNpZGlhbi9jb21tdW5pdHktcGx1Z2lucy50c2AuIEl0XG4gKiBjYW5ub3QgaW1wb3J0IGFuZCBjYWxsIHRoZW06IHRoZSBgZm5gIGlzIHNlcmlhbGl6ZWQgKGB0b1N0cmluZygpYCkgYW5kIGV4ZWN1dGVkIGluIHRoZSByZW5kZXJlciwgYW5kXG4gKiB0aGlzIGJ1aWxkLW93bmVkIE9ic2lkaWFuIGluc3RhbmNlIGlzIGJhcmUg4oCUIGl0IGhhcyBubyBkZXYtdXRpbHMgYGxpYmAgcHJvdmlkZXIgd2lyZWQgKHRoYXQgcmVzb2x2ZXIgaXNcbiAqIHJlZ2lzdGVyZWQgb25seSBpbiB0aGUgaW50ZWdyYXRpb24tdGVzdCBzZXR1cCwgd2hvc2UgZml4dHVyZSBwdWJsaXNoZXMgdGhlIG1lcmdlZCBzdXJmYWNlIG9uIGB3aW5kb3dgKSxcbiAqIHNvIHRoZSBjbG9zdXJlIGhhcyBubyBhY2Nlc3MgdG8gdGhlIGxpYnJhcnkgc3VyZmFjZSBhbmQgbXVzdCBpbmxpbmUgdGhlIGVxdWl2YWxlbnQgc3RlcHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgSW5zdGFsbEFuZEVuYWJsZUhvdFJlbG9hZFBhcmFtc30uXG4gKiBAcmV0dXJucyBBIHtAbGluayBQcm9taXNlfSB0aGF0IHJlc29sdmVzIG9uY2UgSG90UmVsb2FkIGFuZCB0aGUgYnVpbHQgcGx1Z2luIGFyZSBpbnN0YWxsZWQgYW5kIGVuYWJsZWQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluc3RhbGxBbmRFbmFibGVIb3RSZWxvYWQocGFyYW1zOiBJbnN0YWxsQW5kRW5hYmxlSG90UmVsb2FkUGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHtcbiAgICBvYnNpZGlhbkNvbmZpZ0ZvbGRlcixcbiAgICBwbHVnaW5OYW1lXG4gIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZhdWx0UGF0aCA9IGRpcm5hbWUob2JzaWRpYW5Db25maWdGb2xkZXIpO1xuICBjb25zdCB0cmFuc3BvcnQgPSBhd2FpdCBnZXRPckxhdW5jaERldkluc3RhbmNlKHZhdWx0UGF0aCk7XG4gIGF3YWl0IGV2YWxJbk9ic2lkaWFuKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93IC0tIE5vIGFjdHVhbCBzaGFkb3dpbmcgYXMgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGV4dGVybmFsbHkuXG4gICAgYXN5bmMgY2FsbGJhY2soeyBhcHAsIG9ic2lkaWFuTW9kdWxlLCBwbHVnaW5OYW1lIH0pIHtcbiAgICAgIGNvbnN0IEhPVF9SRUxPQURfUExVR0lOX0lEID0gJ2hvdC1yZWxvYWQnO1xuICAgICAgY29uc3QgQ09NTVVOSVRZX1BMVUdJTlNfUkVHSVNUUllfVVJMID0gJ2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9vYnNpZGlhbm1kL29ic2lkaWFuLXJlbGVhc2VzL0hFQUQvY29tbXVuaXR5LXBsdWdpbnMuanNvbic7XG4gICAgICBjb25zdCB7IHJlcXVlc3RVcmwgfSA9IG9ic2lkaWFuTW9kdWxlO1xuXG4gICAgICAvKlxuICAgICAgICogR2VudWluZWx5IGxlYXZlIHJlc3RyaWN0ZWQgbW9kZSBiZWZvcmUgdG91Y2hpbmcgYW55dGhpbmcgZWxzZS4gVGhlIG93bmVkIGluc3RhbmNlIGJvb3RzIHdpdGggYVxuICAgICAgICogZnJlc2ggdXNlci1kYXRhIGRpciwgc28gT2JzaWRpYW4gc3RhcnRzIHJlc3RyaWN0ZWQgYW5kIGBQbHVnaW5zLmluaXRpYWxpemUoKWAgcmV0dXJucyBiZWZvcmVcbiAgICAgICAqIGxvYWRpbmcgYSBzaW5nbGUgcGx1Z2luLiBUaGUgaGFybmVzcyB0aGVuIGNsb3NlcyB0aGUgdHJ1c3QgbW9kYWwgYW5kIHdyaXRlcyB0aGVcbiAgICAgICAqIGBlbmFibGUtcGx1Z2luLTxhcHBJZD5gIGxvY2FsU3RvcmFnZSBmbGFnIGRpcmVjdGx5IOKAlCBkZWxpYmVyYXRlbHksIHRvIGF2b2lkIGEgc3luY2hyb25vdXMgbG9hZCDigJRcbiAgICAgICAqIHdoaWNoIGxlYXZlcyBgaXNFbmFibGVkKClgIHJlcG9ydGluZyBgdHJ1ZWAgb3ZlciBhIHZhdWx0IHdoZXJlIG5vdGhpbmcgaXMgYWN0dWFsbHkgcnVubmluZy4gRXZlcnlcbiAgICAgICAqIGBlbmFibGVkUGx1Z2luc2AgcmVhZGluZyBiZWxvdyAoYW5kIGluIHRoZSBtaXJyb3JlZCBgY29tbXVuaXR5LXBsdWdpbnMudHNgIGhlbHBlcnMpIHdvdWxkIGJlXG4gICAgICAgKiBhbnN3ZXJpbmcgYWJvdXQgdGhlIHZhdWx0J3MgY29uZmlnIGZpbGUgcmF0aGVyIHRoYW4gdGhpcyBpbnN0YW5jZS5cbiAgICAgICAqXG4gICAgICAgKiBgc2V0RW5hYmxlKHRydWUpYCBpcyB3aGF0IE9ic2lkaWFuJ3Mgb3duIFwiRXhpdCByZXN0cmljdGVkIG1vZGVcIiBidXR0b24gY2FsbHM6IGl0IHJlLWFzc2VydHMgdGhlXG4gICAgICAgKiBmbGFnIGFuZCBsb2FkcyBldmVyeXRoaW5nIGluIGBlbmFibGVkUGx1Z2luc2AuIFVuY29uZGl0aW9uYWwgb24gcHVycG9zZSDigJQgdGhlIGZsYWcgaXMgYWxyZWFkeVxuICAgICAgICogYHRydWVgLCBzbyBhbiBgaXNFbmFibGVkKClgIGd1YXJkIHdvdWxkIHNraXAgdGhlIGxvYWQgdGhhdCBpcyB0aGUgd2hvbGUgcG9pbnQuIElkZW1wb3RlbnQgYW5kXG4gICAgICAgKiBlZmZlY3RpdmVseSBmcmVlIG9uY2Ugd2FybSAoYGxvYWRQbHVnaW5gIHJldHVybnMgdGhlIGxpdmUgaW5zdGFuY2UpLCBzbyByZS1ydW5uaW5nIGl0IG9uIGV2ZXJ5XG4gICAgICAgKiByZWJ1aWxkIGNvc3RzIG5vdGhpbmcuXG4gICAgICAgKi9cbiAgICAgIGF3YWl0IGFwcC5wbHVnaW5zLnNldEVuYWJsZSh0cnVlKTtcblxuICAgICAgaWYgKCFPYmplY3QuaGFzT3duKGFwcC5wbHVnaW5zLm1hbmlmZXN0cywgSE9UX1JFTE9BRF9QTFVHSU5fSUQpKSB7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5UmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsKENPTU1VTklUWV9QTFVHSU5TX1JFR0lTVFJZX1VSTCk7XG4gICAgICAgIGNvbnN0IHJlZ2lzdHJ5RW50cmllcyA9IHJlZ2lzdHJ5UmVzcG9uc2UuanNvbiBhcyBDb21tdW5pdHlQbHVnaW5SZWdpc3RyeUVudHJ5W107XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gcmVnaXN0cnlFbnRyaWVzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLmlkID09PSBIT1RfUkVMT0FEX1BMVUdJTl9JRCk7XG4gICAgICAgIGlmICghZW50cnkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiAnJHtIT1RfUkVMT0FEX1BMVUdJTl9JRH0nIHdhcyBub3QgZm91bmQgaW4gdGhlIE9ic2lkaWFuIGNvbW11bml0eSBwbHVnaW5zIHJlZ2lzdHJ5LmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGF0ZXN0UmVsZWFzZVJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdFVybChgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke2VudHJ5LnJlcG99L3JlbGVhc2VzL2xhdGVzdGApO1xuICAgICAgICBjb25zdCBsYXRlc3RSZWxlYXNlID0gbGF0ZXN0UmVsZWFzZVJlc3BvbnNlLmpzb24gYXMgR2l0SHViUmVsZWFzZTtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IGxhdGVzdFJlbGVhc2UudGFnX25hbWU7XG4gICAgICAgIGNvbnN0IG1hbmlmZXN0UmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsKGBodHRwczovL2dpdGh1Yi5jb20vJHtlbnRyeS5yZXBvfS9yZWxlYXNlcy9kb3dubG9hZC8ke3ZlcnNpb259L21hbmlmZXN0Lmpzb25gKTtcbiAgICAgICAgY29uc3QgbWFuaWZlc3QgPSBtYW5pZmVzdFJlc3BvbnNlLmpzb24gYXMgUGx1Z2luTWFuaWZlc3Q7XG4gICAgICAgIGF3YWl0IGFwcC5wbHVnaW5zLmluc3RhbGxQbHVnaW4oZW50cnkucmVwbywgdmVyc2lvbiwgbWFuaWZlc3QpO1xuICAgICAgfVxuXG4gICAgICAvKlxuICAgICAgICogQXNrIHdoZXRoZXIgSG90UmVsb2FkIGlzIFJVTk5JTkcsIG5vdCB3aGV0aGVyIHRoZSB2YXVsdCBjb25maWcgbGlzdHMgaXQgYXMgZW5hYmxlZC4gQWZ0ZXIgdGhlXG4gICAgICAgKiBgc2V0RW5hYmxlYCBhYm92ZSB0aGUgdHdvIG5vcm1hbGx5IGFncmVlLCBidXQgYSBIb3RSZWxvYWQgdGhhdCBpcyBsaXN0ZWQgYW5kIGZhaWxlZCB0byBsb2FkIHdvdWxkXG4gICAgICAgKiBwYXNzIGFuIGBlbmFibGVkUGx1Z2luc2AgY2hlY2sgd2hpbGUgbGVhdmluZyB0aGUgZGV2IGJ1aWxkIHdpdGhvdXQgYXV0by1yZWZyZXNoLlxuICAgICAgICovXG4gICAgICBpZiAoIU9iamVjdC5oYXNPd24oYXBwLnBsdWdpbnMucGx1Z2lucywgSE9UX1JFTE9BRF9QTFVHSU5fSUQpKSB7XG4gICAgICAgIGF3YWl0IGFwcC5wbHVnaW5zLmVuYWJsZVBsdWdpbkFuZFNhdmUoSE9UX1JFTE9BRF9QTFVHSU5fSUQpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCBhcHAucGx1Z2lucy5lbmFibGVQbHVnaW5BbmRTYXZlKHBsdWdpbk5hbWUpO1xuICAgIH0sXG4gICAgaW5wdXQ6IHsgcGx1Z2luTmFtZSB9LFxuICAgIHNob3VsZFNraXBQcmVmbGlnaHRDaGVja3M6IHRydWUsXG4gICAgdHJhbnNwb3J0LFxuICAgIHZhdWx0UGF0aFxuICB9KTtcbn1cblxuLyoqXG4gKiBQcm9iZXMgdGhlIG93bmVkIE9ic2lkaWFuIGluc3RhbmNlJ3MgQ0RQIGVuZHBvaW50IHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIHN0aWxsIHJ1bm5pbmcuXG4gKlxuICogQSBjbG9zZWQgaW5zdGFuY2Ugc3RvcHMgc2VydmluZyBDRFAgYWx0b2dldGhlciwgc28gYW4gdW5yZWFjaGFibGUgZW5kcG9pbnQg4oCUIG9yIG9uZSBsZWZ0IHdpdGggbm8gcGFnZVxuICogdGFyZ2V0cyB3aGlsZSB0aGUgYXBwIHRlYXJzIGl0c2VsZiBkb3duIOKAlCBtZWFucyB0aGUgaW5zdGFuY2UgaXMgZ29uZS5cbiAqXG4gKiBAcGFyYW0gY2RwVXJsIC0gVGhlIGJhc2UgQ0RQIFVSTCBvZiB0aGUgb3duZWQgaW5zdGFuY2UsIGUuZy4gYGh0dHA6Ly9sb2NhbGhvc3Q6NTE4ODhgLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIGB0cnVlYCB3aGlsZSB0aGUgaW5zdGFuY2UgaXMgc3RpbGwgc2VydmluZyBhIHBhZ2UgdGFyZ2V0LlxuICovXG5hc3luYyBmdW5jdGlvbiBpc0Rldkluc3RhbmNlUnVubmluZyhjZHBVcmw6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gV2UgcnVuIHRoaXMgb3V0c2lkZSBvZiBPYnNpZGlhbiwgc28gd2UgZG9uJ3QgaGF2ZSBgcmVxdWVzdFVybCgpYC5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGAke2NkcFVybH0vanNvbmApO1xuICAgIGNvbnN0IHRhcmdldHMgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgQ2RwVGFyZ2V0W107XG4gICAgcmV0dXJuIHRhcmdldHMuc29tZSgodGFyZ2V0KSA9PiB0YXJnZXQudHlwZSA9PT0gJ3BhZ2UnKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogTGF1bmNoZXMgYSBmcmVzaCBvd25lZCBPYnNpZGlhbiBpbnN0YW5jZSAoaXNvbGF0ZWQgdXNlci1kYXRhIGRpcikgYW5kIG9wZW5zIHRoZSBnaXZlbiB2YXVsdC5cbiAqXG4gKiBAcGFyYW0gdmF1bHRQYXRoIC0gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHZhdWx0IGZvbGRlciB0byBvcGVuLlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gcmVzb2x2aW5nIHRvIHRoZSBsYXVuY2hlZCB7QGxpbmsgT2JzaWRpYW5UcmFuc3BvcnR9LlxuICovXG5hc3luYyBmdW5jdGlvbiBsYXVuY2hEZXZJbnN0YW5jZSh2YXVsdFBhdGg6IHN0cmluZyk6IFByb21pc2U8T2JzaWRpYW5UcmFuc3BvcnQ+IHtcbiAgY29uc3QgdHJhbnNwb3J0ID0gYXdhaXQgY3JlYXRlVHJhbnNwb3J0RnJvbU9wdGlvbnMoKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0cmFuc3BvcnQucmVnaXN0ZXJWYXVsdCh2YXVsdFBhdGgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRyYW5zcG9ydC5kaXNwb3NlU3luYz8uKCk7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgcmVnaXN0ZXJEZXZJbnN0YW5jZUNsZWFudXAodHJhbnNwb3J0KTtcbiAgd2F0Y2hEZXZJbnN0YW5jZUFuZFN0b3BPbkNsb3NlKHRyYW5zcG9ydCk7XG4gIHJldHVybiB0cmFuc3BvcnQ7XG59XG5cbi8qKlxuICogUmVnaXN0ZXJzIHByb2Nlc3MtZXhpdCBhbmQgc2lnbmFsIGhhbmRsZXJzIChvbmNlKSB0aGF0IHN5bmNocm9ub3VzbHkgY2xvc2UgdGhlIG93bmVkIE9ic2lkaWFuXG4gKiBpbnN0YW5jZSB3aGVuIHRoZSBgbnBtIHJ1biBkZXZgIHByb2Nlc3MgdGVybWluYXRlcy5cbiAqXG4gKiBUaGVzZSBoYW5kbGVycyBjb3ZlciBhbiBvcmRlcmx5IHNodXRkb3duLiBBIGBTSUdLSUxMYCAob3IgYSBUYXNrIE1hbmFnZXIgLyBJREUgc3RvcCkgcnVucyBubyBoYW5kbGVyXG4gKiBhdCBhbGwsIGFuZCBubyBvcGVyYXRpbmcgc3lzdGVtIGtpbGxzIHRoZSBpbnN0YW5jZSBqdXN0IGZvciBiZWluZyBvdXIgY2hpbGQg4oCUIHNvIHRoYXQgY2FzZSBpcyBjYXVnaHRcbiAqIGZyb20gdGhlIG90aGVyIHNpZGUsIGJ5IHRoZSBoYXJuZXNzJ3MgcGFyZW50LWxpdmVuZXNzIHdhdGNoZG9nOiB0aGUgaW5zdGFuY2UncyByZW5kZXJlciBob2xkcyBhIHNvY2tldFxuICogYmFjayB0byB0aGlzIHByb2Nlc3MgYW5kIGRlc3Ryb3lzIGl0cyB3aW5kb3cgd2hlbiB0aGUga2VybmVsIGNsb3NlcyBpdC4gU2VlIGBwYXJlbnQtbGl2ZW5lc3MudHNgIGluXG4gKiBgb2JzaWRpYW4taW50ZWdyYXRpb24tdGVzdGluZ2AuXG4gKlxuICogQHBhcmFtIHRyYW5zcG9ydCAtIFRoZSBvd25lZCB0cmFuc3BvcnQgdG8gZGlzcG9zZSBvbiBzaHV0ZG93bi5cbiAqL1xuZnVuY3Rpb24gcmVnaXN0ZXJEZXZJbnN0YW5jZUNsZWFudXAodHJhbnNwb3J0OiBPYnNpZGlhblRyYW5zcG9ydCk6IHZvaWQge1xuICBpZiAobW9kdWxlU3RhdGUuaXNEZXZJbnN0YW5jZUNsZWFudXBSZWdpc3RlcmVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIG1vZHVsZVN0YXRlLmlzRGV2SW5zdGFuY2VDbGVhbnVwUmVnaXN0ZXJlZCA9IHRydWU7XG5cbiAgLy8gYGV4aXRgIGNvdmVycyBhbnkgYHByb2Nlc3MuZXhpdCgpYCwgYnV0IGEgZGVmYXVsdCBDdHJsK0MgdGVybWluYXRlcyBXSVRIT1VUIGZpcmluZyBgZXhpdGAsIHNvIHRoZSBzaWduYWwgaGFuZGxlcnMgZ3VhcmFudGVlIHRoZSBvd25lZCBPYnNpZGlhbiBpcyBraWxsZWQgb24gc2h1dGRvd24uXG4gIHByb2Nlc3Mub24oJ2V4aXQnLCBkaXNwb3NlRGV2SW5zdGFuY2UpO1xuICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBbJ1NJR0hVUCcsICdTSUdJTlQnLCAnU0lHVEVSTSddIGFzIGNvbnN0KSB7XG4gICAgcHJvY2Vzcy5vbmNlKHNpZ25hbCwgKCkgPT4ge1xuICAgICAgZGlzcG9zZURldkluc3RhbmNlKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRpc3Bvc2VEZXZJbnN0YW5jZSgpOiB2b2lkIHtcbiAgICBpZiAobW9kdWxlU3RhdGUuaXNEZXZJbnN0YW5jZURpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1vZHVsZVN0YXRlLmlzRGV2SW5zdGFuY2VEaXNwb3NlZCA9IHRydWU7XG4gICAgdHJhbnNwb3J0LmRpc3Bvc2VTeW5jPy4oKTtcbiAgfVxufVxuXG4vKipcbiAqIFdhdGNoZXMgdGhlIGBucG0gcnVuIGRldmAtb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgYW5kIHN0b3BzIHRoZSBkZXZlbG9wbWVudCBidWlsZCBvbmNlIHRoZSBpbnN0YW5jZSBpc1xuICogY2xvc2VkLlxuICpcbiAqIFRoaXMgaXMgdGhlIG1pcnJvciBpbWFnZSBvZiB7QGxpbmsgcmVnaXN0ZXJEZXZJbnN0YW5jZUNsZWFudXB9OiB0aGF0IG9uZSBjbG9zZXMgdGhlIGluc3RhbmNlIHdoZW4gdGhlXG4gKiBgbnBtIHJ1biBkZXZgIHByb2Nlc3MgdGVybWluYXRlcywgdGhpcyBvbmUgdGVybWluYXRlcyB0aGUgcHJvY2VzcyB3aGVuIHRoZSB1c2VyIGNsb3NlcyB0aGUgaW5zdGFuY2UsIHNvXG4gKiB0aGUgdHdvIG5ldmVyIG91dGxpdmUgZWFjaCBvdGhlci4gQSBidWlsZCB3YXRjaGluZyBhbiBPYnNpZGlhbiB0aGF0IGlzIG5vIGxvbmdlciBydW5uaW5nIGhhcyBub3RoaW5nXG4gKiBsZWZ0IHRvIGRlcGxveSB0by5cbiAqXG4gKiBPbmx5IGEgaGFybmVzcy1vd25lZCBpbnN0YW5jZSBpcyB3YXRjaGVkLiBXaGVuIHRoZSB0cmFuc3BvcnQgYXR0YWNoZXMgdG8gYW4gYWxyZWFkeS1ydW5uaW5nIE9ic2lkaWFuXG4gKiAodGhlIHVzZXIncyBvd24pLCB0aGF0IGluc3RhbmNlIGlzIG5vdCBvdXJzIHRvIGJlIHRpZWQgdG8gYW5kIGNsb3NpbmcgaXQgbGVhdmVzIHRoZSBidWlsZCBydW5uaW5nLlxuICpcbiAqIEBwYXJhbSB0cmFuc3BvcnQgLSBUaGUgb3duZWQgdHJhbnNwb3J0IHdob3NlIGluc3RhbmNlIHRvIHdhdGNoLlxuICovXG5mdW5jdGlvbiB3YXRjaERldkluc3RhbmNlQW5kU3RvcE9uQ2xvc2UodHJhbnNwb3J0OiBPYnNpZGlhblRyYW5zcG9ydCk6IHZvaWQge1xuICBpZiAoISh0cmFuc3BvcnQgaW5zdGFuY2VvZiBEZXNrdG9wQ2RwVHJhbnNwb3J0KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGVuZHBvaW50ID0gdHJhbnNwb3J0LmdldE93bmVkSW5zdGFuY2VFbmRwb2ludCgpO1xuICBpZiAoIWVuZHBvaW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgY2RwVXJsID0gYGh0dHA6Ly8ke2VuZHBvaW50Lmhvc3R9OiR7U3RyaW5nKGVuZHBvaW50LnBvcnQpfWA7XG4gIGludm9rZUFzeW5jU2FmZWx5KHN0b3BXaGVuRGV2SW5zdGFuY2VDbG9zZXMpO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHN0b3BXaGVuRGV2SW5zdGFuY2VDbG9zZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGNvbnNlY3V0aXZlRmFpbGVkUHJvYmVDb3VudCA9IDA7XG4gICAgd2hpbGUgKGNvbnNlY3V0aXZlRmFpbGVkUHJvYmVDb3VudCA8IERFVl9JTlNUQU5DRV9DTE9TRURfUFJPQkVfQ09VTlQpIHtcbiAgICAgIGF3YWl0IHNsZWVwKHsgbWlsbGlzZWNvbmRzOiBERVZfSU5TVEFOQ0VfUFJPQkVfSU5URVJWQUxfSU5fTUlMTElTRUNPTkRTIH0pO1xuXG4gICAgICAvLyBUaGUgcHJvY2VzcyBpcyBhbHJlYWR5IHNodXR0aW5nIGRvd24gYW5kIGtpbGxlZCB0aGUgaW5zdGFuY2UgaXRzZWxmOyB0aGUgcHJvYmVzIHdvdWxkIGp1c3QgcmFjZSB0aGUgdGVhcmRvd24uXG4gICAgICBpZiAobW9kdWxlU3RhdGUuaXNEZXZJbnN0YW5jZURpc3Bvc2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc2VjdXRpdmVGYWlsZWRQcm9iZUNvdW50ID0gYXdhaXQgaXNEZXZJbnN0YW5jZVJ1bm5pbmcoY2RwVXJsKSA/IDAgOiBjb25zZWN1dGl2ZUZhaWxlZFByb2JlQ291bnQgKyAxO1xuICAgIH1cblxuICAgIGNvbnNvbGUud2FybignVGhlIE9ic2lkaWFuIGluc3RhbmNlIG93bmVkIGJ5IGBucG0gcnVuIGRldmAgd2FzIGNsb3NlZC4gU3RvcHBpbmcgdGhlIGRldmVsb3BtZW50IGJ1aWxkLicpO1xuICAgIHByb2Nlc3MuZXhpdCgpO1xuICB9XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWVBLG1CQUdPO0FBQ1AsbUJBQStCO0FBQy9CLGtCQUlPO0FBQ1Asc0JBR087QUFDUCwwQkFBb0I7QUFDcEIsMENBSU87QUEwRlAsTUFBTSxjQUEyQjtBQUFBLEVBQy9CLDZCQUE2QjtBQUFBLEVBQzdCLGdDQUFnQztBQUFBLEVBQ2hDLHVCQUF1QjtBQUN6QjtBQUtBLE1BQU0sOENBQThDO0FBT3BELE1BQU0sa0NBQWtDO0FBT2pDLFNBQVMsa0NBQWtDLFFBQXlEO0FBQ3pHLFFBQU07QUFBQSxJQUNKO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDSixNQUFJO0FBQUEsSUFDRjtBQUFBLEVBQ0YsSUFBSTtBQUNKLFNBQU87QUFBQSxJQUNMLE1BQU07QUFBQSxJQUNOLE1BQU0sT0FBYTtBQUNqQixZQUFNLE1BQU0sWUFBWTtBQUN0QixZQUFJLG1CQUFtQjtBQUNyQjtBQUFBLFFBQ0Y7QUFFQSxZQUFJLENBQUMsc0JBQXNCO0FBQ3pCLDJDQUFlLG1DQUFtQztBQUFBLFlBQ2hEO0FBQUEsVUFDRjtBQUNBO0FBQUEsUUFDRjtBQUVB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
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9idW5kbGVycy9lc2J1aWxkLWltcGwvY29weS10by1vYnNpZGlhbi1wbHVnaW5zLWZvbGRlci1wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFRoaXMgbW9kdWxlIGRlZmluZXMgYW4gZXNidWlsZCBwbHVnaW4gdGhhdCBhdXRvbWF0aWNhbGx5IGNvcGllcyB0aGUgYnVpbGQgb3V0cHV0XG4gKiB0byB0aGUgT2JzaWRpYW4gcGx1Z2lucyBmb2xkZXIgZHVyaW5nIGRldmVsb3BtZW50LiBUaGlzIHBsdWdpbiBoZWxwcyBzdHJlYW1saW5lXG4gKiB0aGUgZGV2ZWxvcG1lbnQgd29ya2Zsb3cgYnkgZW5zdXJpbmcgdGhhdCB0aGUgbGF0ZXN0IGJ1aWxkIGlzIGFsd2F5cyBhdmFpbGFibGVcbiAqIGluIHRoZSBjb3JyZWN0IE9ic2lkaWFuIGZvbGRlciBmb3IgdGVzdGluZyBhbmQgdXNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgUGx1Z2luIH0gZnJvbSAnZXNidWlsZCc7XG5cbmltcG9ydCB0eXBlIHsgRGVwbG95VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQYXJhbXMgfSBmcm9tICcuLi9vYnNpZGlhbi1wbHVnaW5zLWZvbGRlci1kZXBsb3ltZW50LnRzJztcblxuaW1wb3J0IHsgZGVwbG95VG9PYnNpZGlhblBsdWdpbnNGb2xkZXIgfSBmcm9tICcuLi9vYnNpZGlhbi1wbHVnaW5zLWZvbGRlci1kZXBsb3ltZW50LnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2lufS5cbiAqL1xuZXhwb3J0IHR5cGUgQ29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luUGFyYW1zID0gRGVwbG95VG9PYnNpZGlhblBsdWdpbnNGb2xkZXJQYXJhbXM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBlc2J1aWxkIHBsdWdpbiB0aGF0IGNvcGllcyB0aGUgYnVpbGQgb3V0cHV0IHRvIHRoZSBPYnNpZGlhbiBwbHVnaW5zIGZvbGRlci5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIEFuIGVzYnVpbGQgYFBsdWdpbmAgb2JqZWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luKHBhcmFtczogQ29weVRvT2JzaWRpYW5QbHVnaW5zRm9sZGVyUGx1Z2luUGFyYW1zKTogUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnY29weS10by1vYnNpZGlhbi1wbHVnaW5zLWZvbGRlcicsXG4gICAgc2V0dXAoYnVpbGQpOiB2b2lkIHtcbiAgICAgIGJ1aWxkLm9uRW5kKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgZGVwbG95VG9PYnNpZGlhblBsdWdpbnNGb2xkZXIocGFyYW1zKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhQSxnREFBOEM7QUFhdkMsU0FBUyxrQ0FBa0MsUUFBeUQ7QUFDekcsU0FBTztBQUFBLElBQ0wsTUFBTTtBQUFBLElBQ04sTUFBTSxPQUFhO0FBQ2pCLFlBQU0sTUFBTSxZQUFZO0FBQ3RCLGtCQUFNLHlFQUE4QixNQUFNO0FBQUEsTUFDNUMsQ0FBQztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBQ0Y7IiwibmFtZXMiOltdfQ==
|
|
@@ -8,27 +8,11 @@
|
|
|
8
8
|
* in the correct Obsidian folder for testing and use.
|
|
9
9
|
*/
|
|
10
10
|
import type { Plugin } from 'esbuild' with { 'resolution-mode': 'import' };
|
|
11
|
+
import type { DeployToObsidianPluginsFolderParams } from '../obsidian-plugins-folder-deployment.cjs';
|
|
11
12
|
/**
|
|
12
13
|
* Parameters for {@link copyToObsidianPluginsFolderPlugin}.
|
|
13
14
|
*/
|
|
14
|
-
export
|
|
15
|
-
/**
|
|
16
|
-
* The folder where the built files are located.
|
|
17
|
-
*/
|
|
18
|
-
readonly distFolder: string;
|
|
19
|
-
/**
|
|
20
|
-
* A boolean indicating whether the build is a production build.
|
|
21
|
-
*/
|
|
22
|
-
readonly isProductionBuild: boolean;
|
|
23
|
-
/**
|
|
24
|
-
* The folder of the Obsidian configuration. If not provided, the plugin will not copy files.
|
|
25
|
-
*/
|
|
26
|
-
readonly obsidianConfigFolder: string;
|
|
27
|
-
/**
|
|
28
|
-
* The name of the Obsidian plugin.
|
|
29
|
-
*/
|
|
30
|
-
readonly pluginName: string;
|
|
31
|
-
}
|
|
15
|
+
export type CopyToObsidianPluginsFolderPluginParams = DeployToObsidianPluginsFolderParams;
|
|
32
16
|
/**
|
|
33
17
|
* Creates an esbuild plugin that copies the build output to the Obsidian plugins folder.
|
|
34
18
|
*
|