@mnaoumov/obsidian-dev-toolkit 2.1.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- 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/demo-vault-helper/main.js +6 -442
- package/dist/integration-test-plugin/main.js +918 -4912
- 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 +104 -5
- 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,306 @@
|
|
|
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 __create = Object.create;
|
|
109
|
+
var __defProp = Object.defineProperty;
|
|
110
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
111
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
112
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
113
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
114
|
+
var __export = (target, all) => {
|
|
115
|
+
for (var name in all)
|
|
116
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
117
|
+
};
|
|
118
|
+
var __copyProps = (to, from, except, desc) => {
|
|
119
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
120
|
+
for (let key of __getOwnPropNames(from))
|
|
121
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
122
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
123
|
+
}
|
|
124
|
+
return to;
|
|
125
|
+
};
|
|
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
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
135
|
+
var obsidian_plugin_transforms_exports = {};
|
|
136
|
+
__export(obsidian_plugin_transforms_exports, {
|
|
137
|
+
appendInlineSourceMap: () => appendInlineSourceMap,
|
|
138
|
+
getCssModuleCode: () => getCssModuleCode,
|
|
139
|
+
getWasmModuleCode: () => getWasmModuleCode,
|
|
140
|
+
loadPostcssConfig: () => loadPostcssConfig,
|
|
141
|
+
transformCss: () => transformCss,
|
|
142
|
+
transformJsx: () => transformJsx,
|
|
143
|
+
transformSolid: () => transformSolid,
|
|
144
|
+
transformSvelte: () => transformSvelte
|
|
145
|
+
});
|
|
146
|
+
module.exports = __toCommonJS(obsidian_plugin_transforms_exports);
|
|
147
|
+
var import_object_utils = require('@mnaoumov/typescript-lib/object-utils');
|
|
148
|
+
var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
|
|
149
|
+
var import_esbuild = require('esbuild');
|
|
150
|
+
var import_node_process = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('node:process')), 1);
|
|
151
|
+
var import_postcss = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('postcss')), 1);
|
|
152
|
+
var import_postcss_load_config = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('postcss-load-config')), 1);
|
|
153
|
+
var import_postcss_modules = __toESM(((module) => module && module.__esModule && 'default' in module ? module.default : module)(require('postcss-modules')), 1);
|
|
154
|
+
var import_obsidian_plugin_features = require('./obsidian-plugin-features.cjs');
|
|
155
|
+
const postcssLoadConfig = (0, import_object_utils.extractDefaultExportInterop)(import_postcss_load_config.default);
|
|
156
|
+
const postcssModules = (0, import_object_utils.extractDefaultExportInterop)(import_postcss_modules.default);
|
|
157
|
+
const SVELTE_MODULE_PATTERN = /\.svelte\.[cm]?[jt]s$/iu;
|
|
158
|
+
const TYPESCRIPT_MODULE_PATTERN = /\.[cm]?ts$/iu;
|
|
159
|
+
const TAILWIND_POSTCSS_PLUGIN_NAME = "@tailwindcss/postcss";
|
|
160
|
+
function appendInlineSourceMap(module2) {
|
|
161
|
+
if (!module2.map) {
|
|
162
|
+
return module2.code;
|
|
163
|
+
}
|
|
164
|
+
const base64 = Buffer.from(JSON.stringify(module2.map), "utf-8").toString("base64");
|
|
165
|
+
return `${module2.code}
|
|
166
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,${base64}
|
|
167
|
+
`;
|
|
168
|
+
}
|
|
169
|
+
function getCssModuleCode(moduleExports) {
|
|
170
|
+
return `export default ${JSON.stringify(moduleExports)};
|
|
171
|
+
`;
|
|
172
|
+
}
|
|
173
|
+
function getWasmModuleCode(bytes) {
|
|
174
|
+
const base64 = Buffer.from(bytes).toString("base64");
|
|
175
|
+
return `const binary = atob(${JSON.stringify(base64)});
|
|
176
|
+
const bytes = new Uint8Array(binary.length);
|
|
177
|
+
for (let i = 0; i < binary.length; i++) {
|
|
178
|
+
bytes[i] = binary.charCodeAt(i);
|
|
179
|
+
}
|
|
180
|
+
export default bytes;
|
|
181
|
+
`;
|
|
182
|
+
}
|
|
183
|
+
async function loadPostcssConfig(params) {
|
|
184
|
+
const { isProductionBuild, projectFolder, styles } = params;
|
|
185
|
+
const plugins = [];
|
|
186
|
+
const dependencies = [];
|
|
187
|
+
let options = {};
|
|
188
|
+
if (styles.postcss) {
|
|
189
|
+
let config;
|
|
190
|
+
try {
|
|
191
|
+
config = await postcssLoadConfig({ cwd: projectFolder ?? import_node_process.default.cwd(), env: isProductionBuild ? "production" : "development" }, projectFolder);
|
|
192
|
+
} catch (error) {
|
|
193
|
+
throw new Error("The `styles.postcss` build option needs a PostCSS configuration (`postcss.config.mjs`, `.postcssrc.json`, ...) in the project.", {
|
|
194
|
+
cause: error
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
plugins.push(...config.plugins);
|
|
198
|
+
options = config.options;
|
|
199
|
+
dependencies.push(config.file);
|
|
200
|
+
}
|
|
201
|
+
if (styles.tailwind && plugins.every((plugin) => !isTailwindPlugin(plugin))) {
|
|
202
|
+
const { default: tailwind } = await (0, import_obsidian_plugin_features.importOptionalPeer)({
|
|
203
|
+
feature: "styles.tailwind",
|
|
204
|
+
packageName: TAILWIND_POSTCSS_PLUGIN_NAME,
|
|
205
|
+
...projectFolder !== void 0 && { projectFolder }
|
|
206
|
+
});
|
|
207
|
+
plugins.unshift(tailwind({ ...projectFolder !== void 0 && { base: projectFolder }, optimize: isProductionBuild }));
|
|
208
|
+
}
|
|
209
|
+
return { dependencies, options, plugins };
|
|
210
|
+
}
|
|
211
|
+
async function transformCss(params) {
|
|
212
|
+
const { filePath, isCssModuleScoped, source, styles } = params;
|
|
213
|
+
const postcssConfig = await loadPostcssConfig(params);
|
|
214
|
+
const plugins = [...postcssConfig.plugins];
|
|
215
|
+
const dependencies = [...postcssConfig.dependencies];
|
|
216
|
+
let moduleExports;
|
|
217
|
+
if (styles.cssModules && isCssModuleScoped && (0, import_obsidian_plugin_features.isCssModuleFile)(filePath)) {
|
|
218
|
+
plugins.push(postcssModules({
|
|
219
|
+
getJSON(_cssFileName, json) {
|
|
220
|
+
moduleExports = json;
|
|
221
|
+
}
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
if (plugins.length === 0) {
|
|
225
|
+
return { css: source, dependencies, moduleExports };
|
|
226
|
+
}
|
|
227
|
+
const result = await (0, import_postcss.default)(plugins).process(source, { ...postcssConfig.options, from: filePath, map: false });
|
|
228
|
+
for (const message of result.messages) {
|
|
229
|
+
if (message.type === "dependency" && message.file !== void 0) {
|
|
230
|
+
dependencies.push(message.file);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return { css: result.css, dependencies, moduleExports };
|
|
234
|
+
}
|
|
235
|
+
async function transformJsx(params) {
|
|
236
|
+
const { code, filePath, jsxImportSource } = params;
|
|
237
|
+
const result = await (0, import_esbuild.transform)(code, {
|
|
238
|
+
jsx: "automatic",
|
|
239
|
+
jsxImportSource,
|
|
240
|
+
loader: /\.tsx$/iu.test(filePath) ? "tsx" : "jsx",
|
|
241
|
+
sourcefile: filePath,
|
|
242
|
+
sourcemap: "external"
|
|
243
|
+
});
|
|
244
|
+
return { code: result.code, map: JSON.parse(result.map) };
|
|
245
|
+
}
|
|
246
|
+
async function transformSolid(params) {
|
|
247
|
+
const { code, filePath } = params;
|
|
248
|
+
const feature = "framework: 'solid'";
|
|
249
|
+
const projectFolderOption = params.projectFolder === void 0 ? {} : { projectFolder: params.projectFolder };
|
|
250
|
+
const babel = (0, import_object_utils.extractDefaultExportInterop)(await (0, import_obsidian_plugin_features.importOptionalPeer)({ feature, packageName: "@babel/core", ...projectFolderOption }));
|
|
251
|
+
const solidPreset = (0, import_object_utils.extractDefaultExportInterop)(await (0, import_obsidian_plugin_features.importOptionalPeer)({ feature, packageName: "babel-preset-solid", ...projectFolderOption }));
|
|
252
|
+
const stripped = await (0, import_esbuild.transform)(code, {
|
|
253
|
+
jsx: "preserve",
|
|
254
|
+
loader: /\.tsx$/iu.test(filePath) ? "tsx" : "jsx",
|
|
255
|
+
sourcefile: filePath,
|
|
256
|
+
sourcemap: "external"
|
|
257
|
+
});
|
|
258
|
+
const result = await babel.transformAsync(stripped.code, {
|
|
259
|
+
babelrc: false,
|
|
260
|
+
configFile: false,
|
|
261
|
+
filename: filePath,
|
|
262
|
+
inputSourceMap: JSON.parse(stripped.map),
|
|
263
|
+
presets: [[solidPreset, { generate: "dom", hydratable: false }]],
|
|
264
|
+
sourceMaps: true
|
|
265
|
+
});
|
|
266
|
+
if (!result?.code) {
|
|
267
|
+
throw new Error(`Babel produced no code for ${filePath}`);
|
|
268
|
+
}
|
|
269
|
+
return { code: result.code, map: (0, import_type_guards.ensureNonNullable)(result.map, `Babel produced no source map for ${filePath}`) };
|
|
270
|
+
}
|
|
271
|
+
async function transformSvelte(params) {
|
|
272
|
+
const { code, filePath, isProductionBuild } = params;
|
|
273
|
+
const compiler = (0, import_object_utils.extractDefaultExportInterop)(
|
|
274
|
+
await (0, import_obsidian_plugin_features.importOptionalPeer)({
|
|
275
|
+
feature: "framework: 'svelte'",
|
|
276
|
+
packageName: "svelte",
|
|
277
|
+
specifier: "svelte/compiler",
|
|
278
|
+
...params.projectFolder !== void 0 && { projectFolder: params.projectFolder }
|
|
279
|
+
})
|
|
280
|
+
);
|
|
281
|
+
const moduleOptions = { dev: !isProductionBuild, filename: filePath, generate: "client" };
|
|
282
|
+
if (SVELTE_MODULE_PATTERN.test(filePath)) {
|
|
283
|
+
let javaScript = code;
|
|
284
|
+
if (TYPESCRIPT_MODULE_PATTERN.test(filePath)) {
|
|
285
|
+
const stripped = await (0, import_esbuild.transform)(code, { loader: "ts", sourcefile: filePath });
|
|
286
|
+
javaScript = stripped.code;
|
|
287
|
+
}
|
|
288
|
+
return compiler.compileModule(javaScript, moduleOptions).js;
|
|
289
|
+
}
|
|
290
|
+
return compiler.compile(code, { ...moduleOptions, css: "injected" }).js;
|
|
291
|
+
}
|
|
292
|
+
function isTailwindPlugin(plugin) {
|
|
293
|
+
return typeof plugin === "object" && "postcssPlugin" in plugin && plugin.postcssPlugin === TAILWIND_POSTCSS_PLUGIN_NAME;
|
|
294
|
+
}
|
|
295
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
296
|
+
0 && (module.exports = {
|
|
297
|
+
appendInlineSourceMap,
|
|
298
|
+
getCssModuleCode,
|
|
299
|
+
getWasmModuleCode,
|
|
300
|
+
loadPostcssConfig,
|
|
301
|
+
transformCss,
|
|
302
|
+
transformJsx,
|
|
303
|
+
transformSolid,
|
|
304
|
+
transformSvelte
|
|
305
|
+
});
|
|
306
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9idW5kbGVycy9vYnNpZGlhbi1wbHVnaW4tdHJhbnNmb3Jtcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIHNvdXJjZSB0cmFuc2Zvcm1zIGV2ZXJ5IGJ1bmRsZXIgYWRhcHRlciBzaGFyZXMsIHNvIGEgZmVhdHVyZSBjb21waWxlcyB0aGUgc2FtZSB3YXkgd2hpY2hldmVyIGJ1bmRsZXIgcnVucyBpdDpcbiAqIFNvbGlkJ3MgSlNYLCBTdmVsdGUgY29tcG9uZW50cyBhbmQgbW9kdWxlcywgc3R5bGVzaGVldHMgdGhyb3VnaCBQb3N0Q1NTLCBUYWlsd2luZCBhbmQgQ1NTIG1vZHVsZXMsIGFuZCBXZWJBc3NlbWJseVxuICogbW9kdWxlcyBhcyBieXRlcy4gVGhlIGVzYnVpbGQsIHJvbGx1cCBhbmQgdml0ZSBhZGFwdGVycyBjYWxsIHRoZW0gaW4tcHJvY2VzczsgdGhlIHdlYnBhY2sgYWRhcHRlciB0aHJvdWdoIHRoZVxuICogbG9hZGVyIGl0IHNoaXBzLCBhbmQgdGhlIHBhcmNlbCBhZGFwdGVyIHRocm91Z2ggdGhlIHRyYW5zZm9ybWVycyBpdCBnZW5lcmF0ZXMuXG4gKlxuICogRXJhc2FibGUgVHlwZVNjcmlwdCBvbmx5IChubyBlbnVtcywgbm8gcGFyYW1ldGVyIHByb3BlcnRpZXMpLCBzbyBhIHdlYnBhY2sgbG9hZGVyIG9yIGEgcGFyY2VsIHdvcmtlciBjYW4gbG9hZCB0aGlzXG4gKiBtb2R1bGUgc3RyYWlnaHQgZnJvbSBzb3VyY2Ugd2hlbiB0aGUgdG9vbGtpdCBydW5zIGZyb20gc291cmNlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgVHJhbnNmb3JtT3B0aW9ucyBhcyBCYWJlbFRyYW5zZm9ybU9wdGlvbnMgfSBmcm9tICdAYmFiZWwvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEFjY2VwdGVkUGx1Z2luLFxuICBQcm9jZXNzT3B0aW9uc1xufSBmcm9tICdwb3N0Y3NzJztcblxuaW1wb3J0IHsgZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyB0cmFuc2Zvcm0gYXMgZXNidWlsZFRyYW5zZm9ybSB9IGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHByb2Nlc3MgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCBwb3N0Y3NzIGZyb20gJ3Bvc3Rjc3MnO1xuaW1wb3J0IHBvc3Rjc3NMb2FkQ29uZmlnXyBmcm9tICdwb3N0Y3NzLWxvYWQtY29uZmlnJztcbmltcG9ydCBwb3N0Y3NzTW9kdWxlc18gZnJvbSAncG9zdGNzcy1tb2R1bGVzJztcblxuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblBsdWdpblN0eWxlc09wdGlvbnMgfSBmcm9tICcuL29ic2lkaWFuLXBsdWdpbi1mZWF0dXJlcy50cyc7XG5cbmltcG9ydCB7XG4gIGltcG9ydE9wdGlvbmFsUGVlcixcbiAgaXNDc3NNb2R1bGVGaWxlXG59IGZyb20gJy4vb2JzaWRpYW4tcGx1Z2luLWZlYXR1cmVzLnRzJztcblxuY29uc3QgcG9zdGNzc0xvYWRDb25maWcgPSBleHRyYWN0RGVmYXVsdEV4cG9ydEludGVyb3AocG9zdGNzc0xvYWRDb25maWdfKTtcbmNvbnN0IHBvc3Rjc3NNb2R1bGVzID0gZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wKHBvc3Rjc3NNb2R1bGVzXyk7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGxvYWRQb3N0Y3NzQ29uZmlnfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkUG9zdGNzc0NvbmZpZ1BhcmFtcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSBwcm9kdWN0aW9uIGJ1aWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNQcm9kdWN0aW9uQnVpbGQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBmb2xkZXIgdGhlIHByb2plY3QncyBQb3N0Q1NTIGNvbmZpZ3VyYXRpb24gYW5kIHBhY2thZ2VzIGFyZSBmb3VuZCBmcm9tLiBEZWZhdWx0cyB0byB0aGUgcHJvamVjdCByb290LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvamVjdEZvbGRlcj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIHN0eWxlc2hlZXQgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHN0eWxlczogT2JzaWRpYW5QbHVnaW5TdHlsZXNPcHRpb25zO1xufVxuXG4vKipcbiAqIFdoYXQge0BsaW5rIGxvYWRQb3N0Y3NzQ29uZmlnfSBsb2FkZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9zdGNzc0NvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgZmlsZXMgdGhlIGNvbmZpZ3VyYXRpb24gY2FtZSBmcm9tLCBmb3IgYSB3YXRjaCBidWlsZCB0byB3YXRjaC5cbiAgICovXG4gIHJlYWRvbmx5IGRlcGVuZGVuY2llczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9jZXNzIG9wdGlvbnMgb2YgdGhlIHByb2plY3QncyBjb25maWd1cmF0aW9uIChhIGN1c3RvbSBwYXJzZXIgb3Igc3ludGF4LCBzYXkpLlxuICAgKi9cbiAgcmVhZG9ubHkgb3B0aW9uczogUHJvY2Vzc09wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBwbHVnaW5zLCBpbiB0aGUgb3JkZXIgdGhleSBydW4uXG4gICAqL1xuICByZWFkb25seSBwbHVnaW5zOiByZWFkb25seSBBY2NlcHRlZFBsdWdpbltdO1xufVxuXG4vKipcbiAqIEEgc291cmNlIG1hcCwgYXMgdGhlIHRyYW5zZm9ybXMgaGFuZCBpdCBvdmVyOiB0aGUgZGVjb2RlZCBKU09OIG9mIGEgdmVyc2lvbiAzIHNvdXJjZSBtYXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlTWFwTGlrZSB7XG4gIC8qKlxuICAgKiBUaGUgZW5jb2RlZCBtYXBwaW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IG1hcHBpbmdzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCBzb3VyY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlczogcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgbWFwIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHRyYW5zZm9ybUNzc30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmb3JtQ3NzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzdHlsZXNoZWV0J3MgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYCoubW9kdWxlLmNzc2AgZmlsZXMgYXJlIHNjb3BlZCBoZXJlLiBBIGJ1bmRsZXIgdGhhdCBzY29wZXMgQ1NTIG1vZHVsZXMgaXRzZWxmIHBhc3NlcyBgZmFsc2VgLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNDc3NNb2R1bGVTY29wZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhIHByb2R1Y3Rpb24gYnVpbGQuXG4gICAqL1xuICByZWFkb25seSBpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciB0aGUgcHJvamVjdCdzIFBvc3RDU1MgY29uZmlndXJhdGlvbiBhbmQgcGFja2FnZXMgYXJlIGZvdW5kIGZyb20uIERlZmF1bHRzIHRvIHRoZSBwcm9qZWN0IHJvb3QuXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0Rm9sZGVyPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc3R5bGVzaGVldCdzIGNvbnRlbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdHlsZXNoZWV0IG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBzdHlsZXM6IE9ic2lkaWFuUGx1Z2luU3R5bGVzT3B0aW9ucztcbn1cblxuLyoqXG4gKiBUaGUgQ1NTIHtAbGluayB0cmFuc2Zvcm1Dc3N9IHByb2R1Y2VkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybWVkQ3NzIHtcbiAgLyoqXG4gICAqIFRoZSBzdHlsZXNoZWV0LlxuICAgKi9cbiAgcmVhZG9ubHkgY3NzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBmaWxlcyBiZXNpZGVzIHRoZSBzdHlsZXNoZWV0IHRoYXQgdGhlIHJlc3VsdCBkZXBlbmRzIG9uLCBmb3IgYSB3YXRjaCBidWlsZCB0byB3YXRjaDogYSBQb3N0Q1NTIGNvbmZpZ3VyYXRpb24sXG4gICAqIG9yIGEgc3R5bGVzaGVldCBhIHBsdWdpbiBpbmxpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzOiByZWFkb25seSBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNjb3BlZCBjbGFzcyBuYW1lcyBieSB0aGVpciBvcmlnaW5hbCBvbmVzLCBmb3IgYSBDU1MgbW9kdWxlOyBgdW5kZWZpbmVkYCBmb3IgYW4gb3JkaW5hcnkgc3R5bGVzaGVldC5cbiAgICovXG4gIHJlYWRvbmx5IG1vZHVsZUV4cG9ydHM6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgSmF2YVNjcmlwdCBtb2R1bGUgYSB0cmFuc2Zvcm0gcHJvZHVjZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmb3JtZWRNb2R1bGUge1xuICAvKipcbiAgICogVGhlIEphdmFTY3JpcHQgY29kZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvZGU6IHN0cmluZztcblxuICAvKipcbiAgICogSXRzIHNvdXJjZSBtYXAsIG9yIGB1bmRlZmluZWRgIHdoZW4gdGhlcmUgaXMgbm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IG1hcDogU291cmNlTWFwTGlrZSB8IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgdHJhbnNmb3JtSnN4fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2Zvcm1Kc3hQYXJhbXMgZXh0ZW5kcyBUcmFuc2Zvcm1Nb2R1bGVQYXJhbXMge1xuICAvKipcbiAgICogVGhlIHBhY2thZ2UgdGhhdCBzdXBwbGllcyB0aGUgYXV0b21hdGljIEpTWCBydW50aW1lOiBgcmVhY3RgIG9yIGBwcmVhY3RgLlxuICAgKi9cbiAgcmVhZG9ubHkganN4SW1wb3J0U291cmNlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBvZiBhIHRyYW5zZm9ybSB0aGF0IGNvbXBpbGVzIG9uZSBtb2R1bGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmb3JtTW9kdWxlUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgY29kZS5cbiAgICovXG4gIHJlYWRvbmx5IGNvZGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBmaWxlJ3MgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhIHByb2R1Y3Rpb24gYnVpbGQuXG4gICAqL1xuICByZWFkb25seSBpc1Byb2R1Y3Rpb25CdWlsZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGZvbGRlciB0aGUgZnJhbWV3b3JrJ3MgcGFja2FnZXMgYXJlIHJlc29sdmVkIGZyb20uIERlZmF1bHRzIHRvIHRoZSBwcm9qZWN0IHJvb3QuXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0Rm9sZGVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0cmFuc2Zvcm1Tb2xpZH0uXG4gKi9cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVNvbGlkUGFyYW1zID0gVHJhbnNmb3JtTW9kdWxlUGFyYW1zO1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayB0cmFuc2Zvcm1TdmVsdGV9LlxuICovXG5leHBvcnQgdHlwZSBUcmFuc2Zvcm1TdmVsdGVQYXJhbXMgPSBUcmFuc2Zvcm1Nb2R1bGVQYXJhbXM7XG5cbmludGVyZmFjZSBCYWJlbENvcmVMaWtlIHtcbiAgdHJhbnNmb3JtQXN5bmM6IChjb2RlOiBzdHJpbmcsIG9wdGlvbnM6IEJhYmVsVHJhbnNmb3JtT3B0aW9ucykgPT4gUHJvbWlzZTxCYWJlbFJlc3VsdExpa2UgfCBudWxsPjtcbn1cblxuaW50ZXJmYWNlIEJhYmVsUmVzdWx0TGlrZSB7XG4gIHJlYWRvbmx5IGNvZGU/OiBudWxsIHwgc3RyaW5nO1xuICByZWFkb25seSBtYXA/OiBudWxsIHwgU291cmNlTWFwTGlrZTtcbn1cblxuaW50ZXJmYWNlIFBvc3Rjc3NEZXBlbmRlbmN5TWVzc2FnZSB7XG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN2ZWx0ZUNvbXBpbGVPcHRpb25zTGlrZSBleHRlbmRzIFN2ZWx0ZU1vZHVsZUNvbXBpbGVPcHRpb25zTGlrZSB7XG4gIHJlYWRvbmx5IGNzczogJ2luamVjdGVkJztcbn1cblxuaW50ZXJmYWNlIFN2ZWx0ZUNvbXBpbGVSZXN1bHRMaWtlIHtcbiAgcmVhZG9ubHkganM6IFRyYW5zZm9ybWVkTW9kdWxlO1xufVxuXG5pbnRlcmZhY2UgU3ZlbHRlQ29tcGlsZXJMaWtlIHtcbiAgY29tcGlsZTogKHNvdXJjZTogc3RyaW5nLCBvcHRpb25zOiBTdmVsdGVDb21waWxlT3B0aW9uc0xpa2UpID0+IFN2ZWx0ZUNvbXBpbGVSZXN1bHRMaWtlO1xuICBjb21waWxlTW9kdWxlOiAoc291cmNlOiBzdHJpbmcsIG9wdGlvbnM6IFN2ZWx0ZU1vZHVsZUNvbXBpbGVPcHRpb25zTGlrZSkgPT4gU3ZlbHRlQ29tcGlsZVJlc3VsdExpa2U7XG59XG5cbmludGVyZmFjZSBTdmVsdGVNb2R1bGVDb21waWxlT3B0aW9uc0xpa2Uge1xuICByZWFkb25seSBkZXY6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZpbGVuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGdlbmVyYXRlOiAnY2xpZW50Jztcbn1cblxuaW50ZXJmYWNlIFRhaWx3aW5kUG9zdGNzc01vZHVsZSB7XG4gIHJlYWRvbmx5IGRlZmF1bHQ6IChvcHRpb25zPzogVGFpbHdpbmRQb3N0Y3NzT3B0aW9ucykgPT4gQWNjZXB0ZWRQbHVnaW47XG59XG5cbmludGVyZmFjZSBUYWlsd2luZFBvc3Rjc3NPcHRpb25zIHtcbiAgcmVhZG9ubHkgYmFzZT86IHN0cmluZztcbiAgcmVhZG9ubHkgb3B0aW1pemU/OiBib29sZWFuO1xufVxuXG5jb25zdCBTVkVMVEVfTU9EVUxFX1BBVFRFUk4gPSAvXFwuc3ZlbHRlXFwuW2NtXT9banRdcyQvaXU7XG5jb25zdCBUWVBFU0NSSVBUX01PRFVMRV9QQVRURVJOID0gL1xcLltjbV0/dHMkL2l1O1xuY29uc3QgVEFJTFdJTkRfUE9TVENTU19QTFVHSU5fTkFNRSA9ICdAdGFpbHdpbmRjc3MvcG9zdGNzcyc7XG5cbi8qKlxuICogQXBwZW5kcyBhIHNvdXJjZSBtYXAgdG8gYSBtb2R1bGUncyBjb2RlIGFzIGFuIGlubGluZSBgc291cmNlTWFwcGluZ1VSTGAgY29tbWVudCwgd2hpY2ggaXMgaG93IGEgYnVuZGxlciB0aGF0XG4gKiByZWFkcyBhIGxvYWRlZCBmaWxlJ3Mgb3duIHNvdXJjZSBtYXAgdGFrZXMgaXQuXG4gKlxuICogQHBhcmFtIG1vZHVsZSAtIFRoZSBtb2R1bGUuXG4gKiBAcmV0dXJucyBUaGUgY29kZSwgd2l0aCB0aGUgc291cmNlIG1hcCBpbmxpbmVkIHdoZW4gdGhlcmUgaXMgb25lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kSW5saW5lU291cmNlTWFwKG1vZHVsZTogVHJhbnNmb3JtZWRNb2R1bGUpOiBzdHJpbmcge1xuICBpZiAoIW1vZHVsZS5tYXApIHtcbiAgICByZXR1cm4gbW9kdWxlLmNvZGU7XG4gIH1cbiAgY29uc3QgYmFzZTY0ID0gQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkobW9kdWxlLm1hcCksICd1dGYtOCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgcmV0dXJuIGAke21vZHVsZS5jb2RlfVxcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCwke2Jhc2U2NH1cXG5gO1xufVxuXG4vKipcbiAqIEJ1aWxkcyB0aGUgSmF2YVNjcmlwdCBtb2R1bGUgYSBDU1MgbW9kdWxlJ3MgaW1wb3J0IHJlc29sdmVzIHRvOiBpdHMgc2NvcGVkIGNsYXNzIG5hbWVzLCBieSB0aGVpciBvcmlnaW5hbCBvbmVzLCBhc1xuICogdGhlIGRlZmF1bHQgZXhwb3J0LlxuICpcbiAqIEBwYXJhbSBtb2R1bGVFeHBvcnRzIC0gVGhlIHNjb3BlZCBjbGFzcyBuYW1lcy5cbiAqIEByZXR1cm5zIFRoZSBtb2R1bGUncyBjb2RlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3NzTW9kdWxlQ29kZShtb2R1bGVFeHBvcnRzOiBSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pik6IHN0cmluZyB7XG4gIHJldHVybiBgZXhwb3J0IGRlZmF1bHQgJHtKU09OLnN0cmluZ2lmeShtb2R1bGVFeHBvcnRzKX07XFxuYDtcbn1cblxuLyoqXG4gKiBCdWlsZHMgdGhlIEphdmFTY3JpcHQgbW9kdWxlIGEgYC53YXNtYCBpbXBvcnQgcmVzb2x2ZXMgdG86IHRoZSBXZWJBc3NlbWJseSBtb2R1bGUncyBieXRlcyBhcyBhIGBVaW50OEFycmF5YFxuICogZGVmYXVsdCBleHBvcnQsIGlubGluZWQgYXMgYmFzZTY0LCBiZWNhdXNlIGFuIE9ic2lkaWFuIHJlbGVhc2Ugc2hpcHMgYG1haW4uanNgIGFuZCBub3RoaW5nIGJlc2lkZSBpdC5cbiAqXG4gKiBAcGFyYW0gYnl0ZXMgLSBUaGUgV2ViQXNzZW1ibHkgbW9kdWxlJ3MgYnl0ZXMuXG4gKiBAcmV0dXJucyBUaGUgbW9kdWxlJ3MgY29kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdhc21Nb2R1bGVDb2RlKGJ5dGVzOiBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgY29uc3QgYmFzZTY0ID0gQnVmZmVyLmZyb20oYnl0ZXMpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgcmV0dXJuIGBjb25zdCBiaW5hcnkgPSBhdG9iKCR7SlNPTi5zdHJpbmdpZnkoYmFzZTY0KX0pO1xuY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShiaW5hcnkubGVuZ3RoKTtcbmZvciAobGV0IGkgPSAwOyBpIDwgYmluYXJ5Lmxlbmd0aDsgaSsrKSB7XG4gIGJ5dGVzW2ldID0gYmluYXJ5LmNoYXJDb2RlQXQoaSk7XG59XG5leHBvcnQgZGVmYXVsdCBieXRlcztcbmA7XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIFBvc3RDU1MgcGx1Z2lucyBhIHN0eWxlc2hlZXQgZ29lcyB0aHJvdWdoLCB3aXRob3V0IHRoZSBDU1MtbW9kdWxlIHNjb3Bpbmc6IHRoZSBwcm9qZWN0J3MgUG9zdENTU1xuICogY29uZmlndXJhdGlvbiB3aGVuIGBwb3N0Y3NzYCBpcyBvbiwgYW5kIFRhaWx3aW5kIGFoZWFkIG9mIGl0IHdoZW4gYHRhaWx3aW5kYCBpcyBvbiBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZG9lcyBub3RcbiAqIGFscmVhZHkgcnVuIGl0LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIExvYWRQb3N0Y3NzQ29uZmlnUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHtAbGluayBQb3N0Y3NzQ29uZmlnfTsgaXRzIGBwbHVnaW5zYCBpcyBlbXB0eSB3aGVuIG5laXRoZXIgYXBwbGllcy5cbiAqIEB0aHJvd3MgSWYgYHBvc3Rjc3NgIGlzIG9uIGFuZCB0aGUgcHJvamVjdCBoYXMgbm8gUG9zdENTUyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFBvc3Rjc3NDb25maWcocGFyYW1zOiBMb2FkUG9zdGNzc0NvbmZpZ1BhcmFtcyk6IFByb21pc2U8UG9zdGNzc0NvbmZpZz4ge1xuICBjb25zdCB7IGlzUHJvZHVjdGlvbkJ1aWxkLCBwcm9qZWN0Rm9sZGVyLCBzdHlsZXMgfSA9IHBhcmFtcztcbiAgY29uc3QgcGx1Z2luczogQWNjZXB0ZWRQbHVnaW5bXSA9IFtdO1xuICBjb25zdCBkZXBlbmRlbmNpZXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBvcHRpb25zOiBQcm9jZXNzT3B0aW9ucyA9IHt9O1xuXG4gIGlmIChzdHlsZXMucG9zdGNzcykge1xuICAgIGxldCBjb25maWc6IHBvc3Rjc3NMb2FkQ29uZmlnXy5SZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgIGNvbmZpZyA9IGF3YWl0IHBvc3Rjc3NMb2FkQ29uZmlnKHsgY3dkOiBwcm9qZWN0Rm9sZGVyID8/IHByb2Nlc3MuY3dkKCksIGVudjogaXNQcm9kdWN0aW9uQnVpbGQgPyAncHJvZHVjdGlvbicgOiAnZGV2ZWxvcG1lbnQnIH0sIHByb2plY3RGb2xkZXIpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBgc3R5bGVzLnBvc3Rjc3NgIGJ1aWxkIG9wdGlvbiBuZWVkcyBhIFBvc3RDU1MgY29uZmlndXJhdGlvbiAoYHBvc3Rjc3MuY29uZmlnLm1qc2AsIGAucG9zdGNzc3JjLmpzb25gLCAuLi4pIGluIHRoZSBwcm9qZWN0LicsIHtcbiAgICAgICAgY2F1c2U6IGVycm9yXG4gICAgICB9KTtcbiAgICB9XG4gICAgcGx1Z2lucy5wdXNoKC4uLmNvbmZpZy5wbHVnaW5zIGFzIEFjY2VwdGVkUGx1Z2luW10pO1xuICAgIG9wdGlvbnMgPSBjb25maWcub3B0aW9ucztcbiAgICBkZXBlbmRlbmNpZXMucHVzaChjb25maWcuZmlsZSk7XG4gIH1cblxuICBpZiAoc3R5bGVzLnRhaWx3aW5kICYmIHBsdWdpbnMuZXZlcnkoKHBsdWdpbikgPT4gIWlzVGFpbHdpbmRQbHVnaW4ocGx1Z2luKSkpIHtcbiAgICBjb25zdCB7IGRlZmF1bHQ6IHRhaWx3aW5kIH0gPSBhd2FpdCBpbXBvcnRPcHRpb25hbFBlZXI8VGFpbHdpbmRQb3N0Y3NzTW9kdWxlPih7XG4gICAgICBmZWF0dXJlOiAnc3R5bGVzLnRhaWx3aW5kJyxcbiAgICAgIHBhY2thZ2VOYW1lOiBUQUlMV0lORF9QT1NUQ1NTX1BMVUdJTl9OQU1FLFxuICAgICAgLi4uKHByb2plY3RGb2xkZXIgIT09IHVuZGVmaW5lZCAmJiB7IHByb2plY3RGb2xkZXIgfSlcbiAgICB9KTtcbiAgICBwbHVnaW5zLnVuc2hpZnQodGFpbHdpbmQoeyAuLi4ocHJvamVjdEZvbGRlciAhPT0gdW5kZWZpbmVkICYmIHsgYmFzZTogcHJvamVjdEZvbGRlciB9KSwgb3B0aW1pemU6IGlzUHJvZHVjdGlvbkJ1aWxkIH0pKTtcbiAgfVxuXG4gIHJldHVybiB7IGRlcGVuZGVuY2llcywgb3B0aW9ucywgcGx1Z2lucyB9O1xufVxuXG4vKipcbiAqIFJ1bnMgYSBzdHlsZXNoZWV0IHRocm91Z2ggdGhlIHBpcGVsaW5lIGl0cyBvcHRpb25zIGFzayBmb3I6IHRoZSBwcm9qZWN0J3MgUG9zdENTUyBjb25maWd1cmF0aW9uLCBUYWlsd2luZCwgYW5kIHRoZVxuICogQ1NTLW1vZHVsZSBzY29waW5nIG9mIGEgYCoubW9kdWxlLmNzc2AgZmlsZS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBUcmFuc2Zvcm1Dc3NQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUge0BsaW5rIFRyYW5zZm9ybWVkQ3NzfS5cbiAqIEB0aHJvd3MgSWYgYHBvc3Rjc3NgIGlzIG9uIGFuZCB0aGUgcHJvamVjdCBoYXMgbm8gUG9zdENTUyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtQ3NzKHBhcmFtczogVHJhbnNmb3JtQ3NzUGFyYW1zKTogUHJvbWlzZTxUcmFuc2Zvcm1lZENzcz4ge1xuICBjb25zdCB7IGZpbGVQYXRoLCBpc0Nzc01vZHVsZVNjb3BlZCwgc291cmNlLCBzdHlsZXMgfSA9IHBhcmFtcztcbiAgY29uc3QgcG9zdGNzc0NvbmZpZyA9IGF3YWl0IGxvYWRQb3N0Y3NzQ29uZmlnKHBhcmFtcyk7XG4gIGNvbnN0IHBsdWdpbnMgPSBbLi4ucG9zdGNzc0NvbmZpZy5wbHVnaW5zXTtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gWy4uLnBvc3Rjc3NDb25maWcuZGVwZW5kZW5jaWVzXTtcblxuICBsZXQgbW9kdWxlRXhwb3J0czogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZDtcbiAgaWYgKHN0eWxlcy5jc3NNb2R1bGVzICYmIGlzQ3NzTW9kdWxlU2NvcGVkICYmIGlzQ3NzTW9kdWxlRmlsZShmaWxlUGF0aCkpIHtcbiAgICBwbHVnaW5zLnB1c2gocG9zdGNzc01vZHVsZXMoe1xuICAgICAgZ2V0SlNPTihfY3NzRmlsZU5hbWUsIGpzb24pOiB2b2lkIHtcbiAgICAgICAgbW9kdWxlRXhwb3J0cyA9IGpzb247XG4gICAgICB9XG4gICAgfSkpO1xuICB9XG5cbiAgaWYgKHBsdWdpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHsgY3NzOiBzb3VyY2UsIGRlcGVuZGVuY2llcywgbW9kdWxlRXhwb3J0cyB9O1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcG9zdGNzcyhwbHVnaW5zKS5wcm9jZXNzKHNvdXJjZSwgeyAuLi5wb3N0Y3NzQ29uZmlnLm9wdGlvbnMsIGZyb206IGZpbGVQYXRoLCBtYXA6IGZhbHNlIH0pO1xuICBmb3IgKGNvbnN0IG1lc3NhZ2Ugb2YgcmVzdWx0Lm1lc3NhZ2VzIGFzIFBvc3Rjc3NEZXBlbmRlbmN5TWVzc2FnZVtdKSB7XG4gICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ2RlcGVuZGVuY3knICYmIG1lc3NhZ2UuZmlsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZXBlbmRlbmNpZXMucHVzaChtZXNzYWdlLmZpbGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyBjc3M6IHJlc3VsdC5jc3MsIGRlcGVuZGVuY2llcywgbW9kdWxlRXhwb3J0cyB9O1xufVxuXG4vKipcbiAqIENvbXBpbGVzIGEgUmVhY3Qgb3IgUHJlYWN0IEpTWCBvciBUU1ggbW9kdWxlIHdpdGggdGhlIGF1dG9tYXRpYyBKU1ggcnVudGltZSwgZm9yIGEgYnVuZGxlciB0aGF0IGRvZXMgbm90IHRha2UgdGhlXG4gKiBydW50aW1lIGZyb20gdGhlIHByb2plY3QncyB0c2NvbmZpZyAocGFyY2VsIGRvZXMgbm90IGZvbGxvdyBpdHMgYGV4dGVuZHNgKS5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBUcmFuc2Zvcm1Kc3hQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgY29tcGlsZWQgbW9kdWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtSnN4KHBhcmFtczogVHJhbnNmb3JtSnN4UGFyYW1zKTogUHJvbWlzZTxUcmFuc2Zvcm1lZE1vZHVsZT4ge1xuICBjb25zdCB7IGNvZGUsIGZpbGVQYXRoLCBqc3hJbXBvcnRTb3VyY2UgfSA9IHBhcmFtcztcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZFRyYW5zZm9ybShjb2RlLCB7XG4gICAganN4OiAnYXV0b21hdGljJyxcbiAgICBqc3hJbXBvcnRTb3VyY2UsXG4gICAgbG9hZGVyOiAvXFwudHN4JC9pdS50ZXN0KGZpbGVQYXRoKSA/ICd0c3gnIDogJ2pzeCcsXG4gICAgc291cmNlZmlsZTogZmlsZVBhdGgsXG4gICAgc291cmNlbWFwOiAnZXh0ZXJuYWwnXG4gIH0pO1xuICByZXR1cm4geyBjb2RlOiByZXN1bHQuY29kZSwgbWFwOiBKU09OLnBhcnNlKHJlc3VsdC5tYXApIGFzIFNvdXJjZU1hcExpa2UgfTtcbn1cblxuLyoqXG4gKiBDb21waWxlcyBhIFNvbGlkIEpTWCBvciBUU1ggbW9kdWxlOiBlc2J1aWxkIHN0cmlwcyB0aGUgVHlwZVNjcmlwdCBhbmQga2VlcHMgdGhlIEpTWCwgdGhlbiBgYmFiZWwtcHJlc2V0LXNvbGlkYFxuICogY29tcGlsZXMgdGhlIEpTWCBpbnRvIERPTSBleHByZXNzaW9ucy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBUcmFuc2Zvcm1Nb2R1bGVQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgY29tcGlsZWQgbW9kdWxlLlxuICogQHRocm93cyBJZiBCYWJlbCBwcm9kdWNlZCBubyBjb2RlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtU29saWQocGFyYW1zOiBUcmFuc2Zvcm1Tb2xpZFBhcmFtcyk6IFByb21pc2U8VHJhbnNmb3JtZWRNb2R1bGU+IHtcbiAgY29uc3QgeyBjb2RlLCBmaWxlUGF0aCB9ID0gcGFyYW1zO1xuICBjb25zdCBmZWF0dXJlID0gJ2ZyYW1ld29yazogXFwnc29saWRcXCcnO1xuICBjb25zdCBwcm9qZWN0Rm9sZGVyT3B0aW9uID0gcGFyYW1zLnByb2plY3RGb2xkZXIgPT09IHVuZGVmaW5lZCA/IHt9IDogeyBwcm9qZWN0Rm9sZGVyOiBwYXJhbXMucHJvamVjdEZvbGRlciB9O1xuICBjb25zdCBiYWJlbCA9IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcChhd2FpdCBpbXBvcnRPcHRpb25hbFBlZXI8QmFiZWxDb3JlTGlrZT4oeyBmZWF0dXJlLCBwYWNrYWdlTmFtZTogJ0BiYWJlbC9jb3JlJywgLi4ucHJvamVjdEZvbGRlck9wdGlvbiB9KSk7XG4gIGNvbnN0IHNvbGlkUHJlc2V0ID0gZXh0cmFjdERlZmF1bHRFeHBvcnRJbnRlcm9wKGF3YWl0IGltcG9ydE9wdGlvbmFsUGVlcjxvYmplY3Q+KHsgZmVhdHVyZSwgcGFja2FnZU5hbWU6ICdiYWJlbC1wcmVzZXQtc29saWQnLCAuLi5wcm9qZWN0Rm9sZGVyT3B0aW9uIH0pKTtcblxuICBjb25zdCBzdHJpcHBlZCA9IGF3YWl0IGVzYnVpbGRUcmFuc2Zvcm0oY29kZSwge1xuICAgIGpzeDogJ3ByZXNlcnZlJyxcbiAgICBsb2FkZXI6IC9cXC50c3gkL2l1LnRlc3QoZmlsZVBhdGgpID8gJ3RzeCcgOiAnanN4JyxcbiAgICBzb3VyY2VmaWxlOiBmaWxlUGF0aCxcbiAgICBzb3VyY2VtYXA6ICdleHRlcm5hbCdcbiAgfSk7XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYmFiZWwudHJhbnNmb3JtQXN5bmMoc3RyaXBwZWQuY29kZSwge1xuICAgIGJhYmVscmM6IGZhbHNlLFxuICAgIGNvbmZpZ0ZpbGU6IGZhbHNlLFxuICAgIGZpbGVuYW1lOiBmaWxlUGF0aCxcbiAgICBpbnB1dFNvdXJjZU1hcDogSlNPTi5wYXJzZShzdHJpcHBlZC5tYXApIGFzIEJhYmVsVHJhbnNmb3JtT3B0aW9uc1snaW5wdXRTb3VyY2VNYXAnXSxcbiAgICBwcmVzZXRzOiBbW3NvbGlkUHJlc2V0LCB7IGdlbmVyYXRlOiAnZG9tJywgaHlkcmF0YWJsZTogZmFsc2UgfV1dLFxuICAgIHNvdXJjZU1hcHM6IHRydWVcbiAgfSk7XG4gIC8qIHY4IGlnbm9yZSBzdGFydCAtLSBCYWJlbCByZXR1cm5zIG5vIGNvZGUgb25seSB3aGVuIGEgcGx1Z2luIGRyb3BzIHRoZSBmaWxlLCB3aGljaCB0aGUgU29saWQgcHJlc2V0IG5ldmVyIGRvZXMuICovXG4gIGlmICghcmVzdWx0Py5jb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBCYWJlbCBwcm9kdWNlZCBubyBjb2RlIGZvciAke2ZpbGVQYXRofWApO1xuICB9XG4gIC8qIHY4IGlnbm9yZSBzdG9wICovXG4gIC8vIFdpdGggYHNvdXJjZU1hcHNgIG9uLCBCYWJlbCBhbHdheXMgcmV0dXJucyBhIHNvdXJjZSBtYXAuXG4gIHJldHVybiB7IGNvZGU6IHJlc3VsdC5jb2RlLCBtYXA6IGVuc3VyZU5vbk51bGxhYmxlKHJlc3VsdC5tYXAsIGBCYWJlbCBwcm9kdWNlZCBubyBzb3VyY2UgbWFwIGZvciAke2ZpbGVQYXRofWApIH07XG59XG5cbi8qKlxuICogQ29tcGlsZXMgYSBTdmVsdGUgY29tcG9uZW50IChgLnN2ZWx0ZWApLCB3aXRoIGl0cyBzdHlsZXMgaW5qZWN0ZWQgYnkgdGhlIGNvbXBvbmVudCBpdHNlbGYsIG9yIGEgU3ZlbHRlIG1vZHVsZVxuICogKGAuc3ZlbHRlLnRzYCwgYC5zdmVsdGUuanNgKSwgd2hvc2UgVHlwZVNjcmlwdCBlc2J1aWxkIHN0cmlwcyBmaXJzdC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBUcmFuc2Zvcm1Nb2R1bGVQYXJhbXN9LlxuICogQHJldHVybnMgQSB7QGxpbmsgUHJvbWlzZX0gdGhhdCByZXNvbHZlcyB0byB0aGUgY29tcGlsZWQgbW9kdWxlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJhbnNmb3JtU3ZlbHRlKHBhcmFtczogVHJhbnNmb3JtU3ZlbHRlUGFyYW1zKTogUHJvbWlzZTxUcmFuc2Zvcm1lZE1vZHVsZT4ge1xuICBjb25zdCB7IGNvZGUsIGZpbGVQYXRoLCBpc1Byb2R1Y3Rpb25CdWlsZCB9ID0gcGFyYW1zO1xuICBjb25zdCBjb21waWxlciA9IGV4dHJhY3REZWZhdWx0RXhwb3J0SW50ZXJvcChcbiAgICBhd2FpdCBpbXBvcnRPcHRpb25hbFBlZXI8U3ZlbHRlQ29tcGlsZXJMaWtlPih7XG4gICAgICBmZWF0dXJlOiAnZnJhbWV3b3JrOiBcXCdzdmVsdGVcXCcnLFxuICAgICAgcGFja2FnZU5hbWU6ICdzdmVsdGUnLFxuICAgICAgc3BlY2lmaWVyOiAnc3ZlbHRlL2NvbXBpbGVyJyxcbiAgICAgIC4uLihwYXJhbXMucHJvamVjdEZvbGRlciAhPT0gdW5kZWZpbmVkICYmIHsgcHJvamVjdEZvbGRlcjogcGFyYW1zLnByb2plY3RGb2xkZXIgfSlcbiAgICB9KVxuICApO1xuICBjb25zdCBtb2R1bGVPcHRpb25zOiBTdmVsdGVNb2R1bGVDb21waWxlT3B0aW9uc0xpa2UgPSB7IGRldjogIWlzUHJvZHVjdGlvbkJ1aWxkLCBmaWxlbmFtZTogZmlsZVBhdGgsIGdlbmVyYXRlOiAnY2xpZW50JyB9O1xuXG4gIGlmIChTVkVMVEVfTU9EVUxFX1BBVFRFUk4udGVzdChmaWxlUGF0aCkpIHtcbiAgICBsZXQgamF2YVNjcmlwdCA9IGNvZGU7XG4gICAgaWYgKFRZUEVTQ1JJUFRfTU9EVUxFX1BBVFRFUk4udGVzdChmaWxlUGF0aCkpIHtcbiAgICAgIGNvbnN0IHN0cmlwcGVkID0gYXdhaXQgZXNidWlsZFRyYW5zZm9ybShjb2RlLCB7IGxvYWRlcjogJ3RzJywgc291cmNlZmlsZTogZmlsZVBhdGggfSk7XG4gICAgICBqYXZhU2NyaXB0ID0gc3RyaXBwZWQuY29kZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBpbGVyLmNvbXBpbGVNb2R1bGUoamF2YVNjcmlwdCwgbW9kdWxlT3B0aW9ucykuanM7XG4gIH1cblxuICByZXR1cm4gY29tcGlsZXIuY29tcGlsZShjb2RlLCB7IC4uLm1vZHVsZU9wdGlvbnMsIGNzczogJ2luamVjdGVkJyB9KS5qcztcbn1cblxuZnVuY3Rpb24gaXNUYWlsd2luZFBsdWdpbihwbHVnaW46IEFjY2VwdGVkUGx1Z2luKTogYm9vbGVhbiB7XG4gIHJldHVybiB0eXBlb2YgcGx1Z2luID09PSAnb2JqZWN0JyAmJiAncG9zdGNzc1BsdWdpbicgaW4gcGx1Z2luICYmIHBsdWdpbi5wb3N0Y3NzUGx1Z2luID09PSBUQUlMV0lORF9QT1NUQ1NTX1BMVUdJTl9OQU1FO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FB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LFFBQU0sV0FBVyxVQUFNLGVBQUFBLFdBQWlCLE1BQU07QUFBQSxJQUM1QyxLQUFLO0FBQUEsSUFDTCxRQUFRLFdBQVcsS0FBSyxRQUFRLElBQUksUUFBUTtBQUFBLElBQzVDLFlBQVk7QUFBQSxJQUNaLFdBQVc7QUFBQSxFQUNiLENBQUM7QUFFRCxRQUFNLFNBQVMsTUFBTSxNQUFNLGVBQWUsU0FBUyxNQUFNO0FBQUEsSUFDdkQsU0FBUztBQUFBLElBQ1QsWUFBWTtBQUFBLElBQ1osVUFBVTtBQUFBLElBQ1YsZ0JBQWdCLEtBQUssTUFBTSxTQUFTLEdBQUc7QUFBQSxJQUN2QyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsVUFBVSxPQUFPLFlBQVksTUFBTSxDQUFDLENBQUM7QUFBQSxJQUMvRCxZQUFZO0FBQUEsRUFDZCxDQUFDO0FBRUQsTUFBSSxDQUFDLFFBQVEsTUFBTTtBQUNqQixVQUFNLElBQUksTUFBTSw4QkFBOEIsUUFBUSxFQUFFO0FBQUEsRUFDMUQ7QUFHQSxTQUFPLEVBQUUsTUFBTSxPQUFPLE1BQU0sU0FBSyxzQ0FBa0IsT0FBTyxLQUFLLG9DQUFvQyxRQUFRLEVBQUUsRUFBRTtBQUNqSDtBQVNBLGVBQXNCLGdCQUFnQixRQUEyRDtBQUMvRixRQUFNLEVBQUUsTUFBTSxVQUFVLGtCQUFrQixJQUFJO0FBQzlDLFFBQU0sZUFBVztBQUFBLElBQ2YsVUFBTSxvREFBdUM7QUFBQSxNQUMzQyxTQUFTO0FBQUEsTUFDVCxhQUFhO0FBQUEsTUFDYixXQUFXO0FBQUEsTUFDWCxHQUFJLE9BQU8sa0JBQWtCLFVBQWEsRUFBRSxlQUFlLE9BQU8sY0FBYztBQUFBLElBQ2xGLENBQUM7QUFBQSxFQUNIO0FBQ0EsUUFBTSxnQkFBZ0QsRUFBRSxLQUFLLENBQUMsbUJBQW1CLFVBQVUsVUFBVSxVQUFVLFNBQVM7QUFFeEgsTUFBSSxzQkFBc0IsS0FBSyxRQUFRLEdBQUc7QUFDeEMsUUFBSSxhQUFhO0FBQ2pCLFFBQUksMEJBQTBCLEtBQUssUUFBUSxHQUFHO0FBQzVDLFlBQU0sV0FBVyxVQUFNLGVBQUFBLFdBQWlCLE1BQU0sRUFBRSxRQUFRLE1BQU0sWUFBWSxTQUFTLENBQUM7QUFDcEYsbUJBQWEsU0FBUztBQUFBLElBQ3hCO0FBQ0EsV0FBTyxTQUFTLGNBQWMsWUFBWSxhQUFhLEVBQUU7QUFBQSxFQUMzRDtBQUVBLFNBQU8sU0FBUyxRQUFRLE1BQU0sRUFBRSxHQUFHLGVBQWUsS0FBSyxXQUFXLENBQUMsRUFBRTtBQUN2RTtBQUVBLFNBQVMsaUJBQWlCLFFBQWlDO0FBQ3pELFNBQU8sT0FBTyxXQUFXLFlBQVksbUJBQW1CLFVBQVUsT0FBTyxrQkFBa0I7QUFDN0Y7IiwibmFtZXMiOlsicG9zdGNzc0xvYWRDb25maWdfIiwicG9zdGNzc01vZHVsZXNfIiwibW9kdWxlIiwicHJvY2VzcyIsInBvc3Rjc3MiLCJlc2J1aWxkVHJhbnNmb3JtIl19
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* The source transforms every bundler adapter shares, so a feature compiles the same way whichever bundler runs it:
|
|
6
|
+
* Solid's JSX, Svelte components and modules, stylesheets through PostCSS, Tailwind and CSS modules, and WebAssembly
|
|
7
|
+
* modules as bytes. The esbuild, rollup and vite adapters call them in-process; the webpack adapter through the
|
|
8
|
+
* loader it ships, and the parcel adapter through the transformers it generates.
|
|
9
|
+
*
|
|
10
|
+
* Erasable TypeScript only (no enums, no parameter properties), so a webpack loader or a parcel worker can load this
|
|
11
|
+
* module straight from source when the toolkit runs from source.
|
|
12
|
+
*/
|
|
13
|
+
import type { AcceptedPlugin, ProcessOptions } from 'postcss' with { 'resolution-mode': 'import' };
|
|
14
|
+
import type { ObsidianPluginStylesOptions } from './obsidian-plugin-features.cjs';
|
|
15
|
+
/**
|
|
16
|
+
* Parameters for {@link loadPostcssConfig}.
|
|
17
|
+
*/
|
|
18
|
+
export interface LoadPostcssConfigParams {
|
|
19
|
+
/**
|
|
20
|
+
* Whether this is a production build.
|
|
21
|
+
*/
|
|
22
|
+
readonly isProductionBuild: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* The folder the project's PostCSS configuration and packages are found from. Defaults to the project root.
|
|
25
|
+
*/
|
|
26
|
+
readonly projectFolder?: string | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* The stylesheet options.
|
|
29
|
+
*/
|
|
30
|
+
readonly styles: ObsidianPluginStylesOptions;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* What {@link loadPostcssConfig} loaded.
|
|
34
|
+
*/
|
|
35
|
+
export interface PostcssConfig {
|
|
36
|
+
/**
|
|
37
|
+
* The files the configuration came from, for a watch build to watch.
|
|
38
|
+
*/
|
|
39
|
+
readonly dependencies: readonly string[];
|
|
40
|
+
/**
|
|
41
|
+
* The process options of the project's configuration (a custom parser or syntax, say).
|
|
42
|
+
*/
|
|
43
|
+
readonly options: ProcessOptions;
|
|
44
|
+
/**
|
|
45
|
+
* The plugins, in the order they run.
|
|
46
|
+
*/
|
|
47
|
+
readonly plugins: readonly AcceptedPlugin[];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A source map, as the transforms hand it over: the decoded JSON of a version 3 source map.
|
|
51
|
+
*/
|
|
52
|
+
export interface SourceMapLike {
|
|
53
|
+
/**
|
|
54
|
+
* The encoded mappings.
|
|
55
|
+
*/
|
|
56
|
+
readonly mappings: string;
|
|
57
|
+
/**
|
|
58
|
+
* The original sources.
|
|
59
|
+
*/
|
|
60
|
+
readonly sources: readonly string[];
|
|
61
|
+
/**
|
|
62
|
+
* The source map version.
|
|
63
|
+
*/
|
|
64
|
+
readonly version: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parameters for {@link transformCss}.
|
|
68
|
+
*/
|
|
69
|
+
export interface TransformCssParams {
|
|
70
|
+
/**
|
|
71
|
+
* The stylesheet's path.
|
|
72
|
+
*/
|
|
73
|
+
readonly filePath: string;
|
|
74
|
+
/**
|
|
75
|
+
* Whether `*.module.css` files are scoped here. A bundler that scopes CSS modules itself passes `false`.
|
|
76
|
+
*/
|
|
77
|
+
readonly isCssModuleScoped: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Whether this is a production build.
|
|
80
|
+
*/
|
|
81
|
+
readonly isProductionBuild: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* The folder the project's PostCSS configuration and packages are found from. Defaults to the project root.
|
|
84
|
+
*/
|
|
85
|
+
readonly projectFolder?: string | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* The stylesheet's contents.
|
|
88
|
+
*/
|
|
89
|
+
readonly source: string;
|
|
90
|
+
/**
|
|
91
|
+
* The stylesheet options.
|
|
92
|
+
*/
|
|
93
|
+
readonly styles: ObsidianPluginStylesOptions;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The CSS {@link transformCss} produced.
|
|
97
|
+
*/
|
|
98
|
+
export interface TransformedCss {
|
|
99
|
+
/**
|
|
100
|
+
* The stylesheet.
|
|
101
|
+
*/
|
|
102
|
+
readonly css: string;
|
|
103
|
+
/**
|
|
104
|
+
* The files besides the stylesheet that the result depends on, for a watch build to watch: a PostCSS configuration,
|
|
105
|
+
* or a stylesheet a plugin inlined.
|
|
106
|
+
*/
|
|
107
|
+
readonly dependencies: readonly string[];
|
|
108
|
+
/**
|
|
109
|
+
* The scoped class names by their original ones, for a CSS module; `undefined` for an ordinary stylesheet.
|
|
110
|
+
*/
|
|
111
|
+
readonly moduleExports: Readonly<Record<string, string>> | undefined;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A JavaScript module a transform produced.
|
|
115
|
+
*/
|
|
116
|
+
export interface TransformedModule {
|
|
117
|
+
/**
|
|
118
|
+
* The JavaScript code.
|
|
119
|
+
*/
|
|
120
|
+
readonly code: string;
|
|
121
|
+
/**
|
|
122
|
+
* Its source map, or `undefined` when there is none.
|
|
123
|
+
*/
|
|
124
|
+
readonly map: SourceMapLike | undefined;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Parameters for {@link transformJsx}.
|
|
128
|
+
*/
|
|
129
|
+
export interface TransformJsxParams extends TransformModuleParams {
|
|
130
|
+
/**
|
|
131
|
+
* The package that supplies the automatic JSX runtime: `react` or `preact`.
|
|
132
|
+
*/
|
|
133
|
+
readonly jsxImportSource: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Parameters of a transform that compiles one module.
|
|
137
|
+
*/
|
|
138
|
+
export interface TransformModuleParams {
|
|
139
|
+
/**
|
|
140
|
+
* The source code.
|
|
141
|
+
*/
|
|
142
|
+
readonly code: string;
|
|
143
|
+
/**
|
|
144
|
+
* The source file's path.
|
|
145
|
+
*/
|
|
146
|
+
readonly filePath: string;
|
|
147
|
+
/**
|
|
148
|
+
* Whether this is a production build.
|
|
149
|
+
*/
|
|
150
|
+
readonly isProductionBuild: boolean;
|
|
151
|
+
/**
|
|
152
|
+
* The folder the framework's packages are resolved from. Defaults to the project root.
|
|
153
|
+
*/
|
|
154
|
+
readonly projectFolder?: string;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Parameters for {@link transformSolid}.
|
|
158
|
+
*/
|
|
159
|
+
export type TransformSolidParams = TransformModuleParams;
|
|
160
|
+
/**
|
|
161
|
+
* Parameters for {@link transformSvelte}.
|
|
162
|
+
*/
|
|
163
|
+
export type TransformSvelteParams = TransformModuleParams;
|
|
164
|
+
/**
|
|
165
|
+
* Appends a source map to a module's code as an inline `sourceMappingURL` comment, which is how a bundler that
|
|
166
|
+
* reads a loaded file's own source map takes it.
|
|
167
|
+
*
|
|
168
|
+
* @param module - The module.
|
|
169
|
+
* @returns The code, with the source map inlined when there is one.
|
|
170
|
+
*/
|
|
171
|
+
export declare function appendInlineSourceMap(module: TransformedModule): string;
|
|
172
|
+
/**
|
|
173
|
+
* Builds the JavaScript module a CSS module's import resolves to: its scoped class names, by their original ones, as
|
|
174
|
+
* the default export.
|
|
175
|
+
*
|
|
176
|
+
* @param moduleExports - The scoped class names.
|
|
177
|
+
* @returns The module's code.
|
|
178
|
+
*/
|
|
179
|
+
export declare function getCssModuleCode(moduleExports: Readonly<Record<string, string>>): string;
|
|
180
|
+
/**
|
|
181
|
+
* Builds the JavaScript module a `.wasm` import resolves to: the WebAssembly module's bytes as a `Uint8Array`
|
|
182
|
+
* default export, inlined as base64, because an Obsidian release ships `main.js` and nothing beside it.
|
|
183
|
+
*
|
|
184
|
+
* @param bytes - The WebAssembly module's bytes.
|
|
185
|
+
* @returns The module's code.
|
|
186
|
+
*/
|
|
187
|
+
export declare function getWasmModuleCode(bytes: Uint8Array): string;
|
|
188
|
+
/**
|
|
189
|
+
* Loads the PostCSS plugins a stylesheet goes through, without the CSS-module scoping: the project's PostCSS
|
|
190
|
+
* configuration when `postcss` is on, and Tailwind ahead of it when `tailwind` is on and the configuration does not
|
|
191
|
+
* already run it.
|
|
192
|
+
*
|
|
193
|
+
* @param params - The {@link LoadPostcssConfigParams}.
|
|
194
|
+
* @returns A {@link Promise} that resolves to the {@link PostcssConfig}; its `plugins` is empty when neither applies.
|
|
195
|
+
* @throws If `postcss` is on and the project has no PostCSS configuration.
|
|
196
|
+
*/
|
|
197
|
+
export declare function loadPostcssConfig(params: LoadPostcssConfigParams): Promise<PostcssConfig>;
|
|
198
|
+
/**
|
|
199
|
+
* Runs a stylesheet through the pipeline its options ask for: the project's PostCSS configuration, Tailwind, and the
|
|
200
|
+
* CSS-module scoping of a `*.module.css` file.
|
|
201
|
+
*
|
|
202
|
+
* @param params - The {@link TransformCssParams}.
|
|
203
|
+
* @returns A {@link Promise} that resolves to the {@link TransformedCss}.
|
|
204
|
+
* @throws If `postcss` is on and the project has no PostCSS configuration.
|
|
205
|
+
*/
|
|
206
|
+
export declare function transformCss(params: TransformCssParams): Promise<TransformedCss>;
|
|
207
|
+
/**
|
|
208
|
+
* Compiles a React or Preact JSX or TSX module with the automatic JSX runtime, for a bundler that does not take the
|
|
209
|
+
* runtime from the project's tsconfig (parcel does not follow its `extends`).
|
|
210
|
+
*
|
|
211
|
+
* @param params - The {@link TransformJsxParams}.
|
|
212
|
+
* @returns A {@link Promise} that resolves to the compiled module.
|
|
213
|
+
*/
|
|
214
|
+
export declare function transformJsx(params: TransformJsxParams): Promise<TransformedModule>;
|
|
215
|
+
/**
|
|
216
|
+
* Compiles a Solid JSX or TSX module: esbuild strips the TypeScript and keeps the JSX, then `babel-preset-solid`
|
|
217
|
+
* compiles the JSX into DOM expressions.
|
|
218
|
+
*
|
|
219
|
+
* @param params - The {@link TransformModuleParams}.
|
|
220
|
+
* @returns A {@link Promise} that resolves to the compiled module.
|
|
221
|
+
* @throws If Babel produced no code.
|
|
222
|
+
*/
|
|
223
|
+
export declare function transformSolid(params: TransformSolidParams): Promise<TransformedModule>;
|
|
224
|
+
/**
|
|
225
|
+
* Compiles a Svelte component (`.svelte`), with its styles injected by the component itself, or a Svelte module
|
|
226
|
+
* (`.svelte.ts`, `.svelte.js`), whose TypeScript esbuild strips first.
|
|
227
|
+
*
|
|
228
|
+
* @param params - The {@link TransformModuleParams}.
|
|
229
|
+
* @returns A {@link Promise} that resolves to the compiled module.
|
|
230
|
+
*/
|
|
231
|
+
export declare function transformSvelte(params: TransformSvelteParams): Promise<TransformedModule>;
|