@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,93 @@
|
|
|
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
|
+
|
|
6
|
+
import { readFile } from "node:fs/promises";
|
|
7
|
+
import { ObsidianPluginRepoPaths } from "../obsidian-plugin-repo-paths.mjs";
|
|
8
|
+
import {
|
|
9
|
+
getFeatureFileKind,
|
|
10
|
+
getFrameworkDefines,
|
|
11
|
+
importOptionalPeer,
|
|
12
|
+
replaceDefines
|
|
13
|
+
} from "./obsidian-plugin-features.mjs";
|
|
14
|
+
import {
|
|
15
|
+
getCssModuleCode,
|
|
16
|
+
getWasmModuleCode,
|
|
17
|
+
transformCss,
|
|
18
|
+
transformSolid,
|
|
19
|
+
transformSvelte
|
|
20
|
+
} from "./obsidian-plugin-transforms.mjs";
|
|
21
|
+
function createRollupCompatibleFeaturePlugin(params) {
|
|
22
|
+
const { features, isProductionBuild, shouldCompileStylesheets, shouldReplaceDefines } = params;
|
|
23
|
+
async function transformFeatureFile(context, code, id) {
|
|
24
|
+
const [filePath = id] = id.split("?", 1);
|
|
25
|
+
switch (getFeatureFileKind(id)) {
|
|
26
|
+
case "jsx": {
|
|
27
|
+
return features.framework === "solid" ? await transformSolid({ code, filePath, isProductionBuild: isProductionBuild() }) : null;
|
|
28
|
+
}
|
|
29
|
+
case "stylesheet": {
|
|
30
|
+
if (!shouldCompileStylesheets || !features.styles) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
const result = await transformCss({
|
|
34
|
+
filePath,
|
|
35
|
+
isCssModuleScoped: true,
|
|
36
|
+
isProductionBuild: isProductionBuild(),
|
|
37
|
+
source: code,
|
|
38
|
+
styles: features.styles
|
|
39
|
+
});
|
|
40
|
+
for (const dependency of result.dependencies) {
|
|
41
|
+
context.addWatchFile(dependency);
|
|
42
|
+
}
|
|
43
|
+
context.emitFile({ name: ObsidianPluginRepoPaths.StylesCss, source: result.css, type: "asset" });
|
|
44
|
+
return { code: result.moduleExports ? getCssModuleCode(result.moduleExports) : "export default undefined;\n" };
|
|
45
|
+
}
|
|
46
|
+
case "svelte": {
|
|
47
|
+
return features.framework === "svelte" ? await transformSvelte({ code, filePath, isProductionBuild: isProductionBuild() }) : null;
|
|
48
|
+
}
|
|
49
|
+
default: {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
load: {
|
|
56
|
+
async handler(id) {
|
|
57
|
+
return !features.wasm || getFeatureFileKind(id) !== "wasm" ? null : getWasmModuleCode(await readFile(id));
|
|
58
|
+
},
|
|
59
|
+
order: "pre"
|
|
60
|
+
},
|
|
61
|
+
name: "obsidian-plugin-features",
|
|
62
|
+
transform: {
|
|
63
|
+
async handler(code, id) {
|
|
64
|
+
const transformed = await transformFeatureFile(this, code, id);
|
|
65
|
+
if (!shouldReplaceDefines) {
|
|
66
|
+
return transformed;
|
|
67
|
+
}
|
|
68
|
+
const defines = getFrameworkDefines({ framework: features.framework, isProductionBuild: isProductionBuild() });
|
|
69
|
+
const source = transformed?.code ?? code;
|
|
70
|
+
const replaced = replaceDefines(source, defines);
|
|
71
|
+
return replaced === source ? transformed : { code: replaced, map: transformed?.map };
|
|
72
|
+
},
|
|
73
|
+
order: "pre"
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
async function createUnpluginVuePlugin(params) {
|
|
78
|
+
const { bundler, features } = params;
|
|
79
|
+
if (features.framework !== "vue") {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const unpluginVue = await importOptionalPeer({
|
|
83
|
+
feature: "framework: 'vue'",
|
|
84
|
+
packageName: "unplugin-vue",
|
|
85
|
+
specifier: `unplugin-vue/${bundler}`
|
|
86
|
+
});
|
|
87
|
+
return unpluginVue.default();
|
|
88
|
+
}
|
|
89
|
+
export {
|
|
90
|
+
createRollupCompatibleFeaturePlugin,
|
|
91
|
+
createUnpluginVuePlugin
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2J1bmRsZXJzL3JvbGx1cC1jb21wYXRpYmxlLWZlYXR1cmVzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIGJ1aWxkIGZlYXR1cmVzIG9mIHRoZSByb2xsdXAgYW5kIHZpdGUgYWRhcHRlcnM6IG9uZSBwbHVnaW4sIHR5cGVkIGJ5IHRoZSBzaGFwZSBib3RoIGJ1bmRsZXJzIGFjY2VwdCwgdGhhdCBydW5zXG4gKiB0aGUgc2hhcmVkIHRyYW5zZm9ybXMgKFNvbGlkLCBTdmVsdGUsIHN0eWxlc2hlZXRzLCBXZWJBc3NlbWJseSkgYW5kIHJlcGxhY2VzIHRoZSBmcmFtZXdvcmsncyBjb21waWxlLXRpbWUgY29uc3RhbnRzLFxuICogcGx1cyB0aGUgYHVucGx1Z2luLXZ1ZWAgcGx1Z2luIGZvciBWdWUuXG4gKi9cblxuaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcblxuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblBsdWdpbkZlYXR1cmVPcHRpb25zIH0gZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tZmVhdHVyZXMudHMnO1xuaW1wb3J0IHR5cGUgeyBTb3VyY2VNYXBMaWtlIH0gZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tdHJhbnNmb3Jtcy50cyc7XG5cbmltcG9ydCB7IE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzIH0gZnJvbSAnLi4vb2JzaWRpYW4tcGx1Z2luLXJlcG8tcGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZ2V0RmVhdHVyZUZpbGVLaW5kLFxuICBnZXRGcmFtZXdvcmtEZWZpbmVzLFxuICBpbXBvcnRPcHRpb25hbFBlZXIsXG4gIHJlcGxhY2VEZWZpbmVzXG59IGZyb20gJy4vb2JzaWRpYW4tcGx1Z2luLWZlYXR1cmVzLnRzJztcbmltcG9ydCB7XG4gIGdldENzc01vZHVsZUNvZGUsXG4gIGdldFdhc21Nb2R1bGVDb2RlLFxuICB0cmFuc2Zvcm1Dc3MsXG4gIHRyYW5zZm9ybVNvbGlkLFxuICB0cmFuc2Zvcm1TdmVsdGVcbn0gZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tdHJhbnNmb3Jtcy50cyc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNyZWF0ZVJvbGx1cENvbXBhdGlibGVGZWF0dXJlUGx1Z2lufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVSb2xsdXBDb21wYXRpYmxlRmVhdHVyZVBsdWdpblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgZmVhdHVyZXMuXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlczogT2JzaWRpYW5QbHVnaW5GZWF0dXJlT3B0aW9ucztcblxuICAvKipcbiAgICogVGVsbHMgd2hldGhlciB0aGUgYnVpbGQgaXMgYSBwcm9kdWN0aW9uIG9uZS4gQ2FsbGVkIGZyb20gdGhlIGhvb2tzLCBhZnRlciB0aGUgYWRhcHRlciByZXNvbHZlZCBpdHMgYnVpbGQgbW9kZS5cbiAgICovXG4gIHJlYWRvbmx5IGlzUHJvZHVjdGlvbkJ1aWxkOiAoKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcGx1Z2luIGNvbXBpbGVzIHN0eWxlc2hlZXRzLiBWaXRlIGNvbXBpbGVzIHRoZW0gaXRzZWxmLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkQ29tcGlsZVN0eWxlc2hlZXRzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcGx1Z2luIHJlcGxhY2VzIHRoZSBmcmFtZXdvcmsncyBjb21waWxlLXRpbWUgY29uc3RhbnRzIGluIHRoZSBjb2RlLiBWaXRlIGRvZXMgaXQgdGhyb3VnaCBpdHMgb3duXG4gICAqIGBkZWZpbmVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkUmVwbGFjZURlZmluZXM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNyZWF0ZVVucGx1Z2luVnVlUGx1Z2lufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVVbnBsdWdpblZ1ZVBsdWdpblBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVuZGxlciwgd2hpY2ggbmFtZXMgdGhlIGB1bnBsdWdpbi12dWVgIGVudHJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgYnVuZGxlcjogJ3JvbGx1cCcgfCAndml0ZSc7XG5cbiAgLyoqXG4gICAqIFRoZSBidWlsZCBmZWF0dXJlcy5cbiAgICovXG4gIHJlYWRvbmx5IGZlYXR1cmVzOiBPYnNpZGlhblBsdWdpbkZlYXR1cmVPcHRpb25zO1xufVxuXG4vKipcbiAqIFRoZSBwYXJ0IG9mIGEgcm9sbHVwIG9yIHJvbGxkb3duIHBsdWdpbiBjb250ZXh0IHRoZSBmZWF0dXJlIHBsdWdpbiB1c2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVQbHVnaW5Db250ZXh0IHtcbiAgLyoqXG4gICAqIEFkZHMgYSBmaWxlIHRvIHdhdGNoIGluIGEgd2F0Y2ggYnVpbGQuXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBmaWxlJ3MgcGF0aC5cbiAgICovXG4gIGFkZFdhdGNoRmlsZTogKGlkOiBzdHJpbmcpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGFzc2V0IGludG8gdGhlIGJ1bmRsZS5cbiAgICpcbiAgICogQHBhcmFtIGVtaXR0ZWRGaWxlIC0gVGhlIGFzc2V0IHRvIGVtaXQuXG4gICAqIEByZXR1cm5zIFRoZSByZWZlcmVuY2UgaWQgb2YgdGhlIGVtaXR0ZWQgZmlsZS5cbiAgICovXG4gIGVtaXRGaWxlOiAoZW1pdHRlZEZpbGU6IEVtaXR0ZWRBc3NldCkgPT4gc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwbHVnaW4ge0BsaW5rIGNyZWF0ZVJvbGx1cENvbXBhdGlibGVGZWF0dXJlUGx1Z2lufSBjcmVhdGVzLCBpbiB0aGUgc2hhcGUgcm9sbHVwIGFuZCB2aXRlIGJvdGggYWNjZXB0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvbGx1cENvbXBhdGlibGVGZWF0dXJlUGx1Z2luIHtcbiAgLyoqXG4gICAqIExvYWRzIGEgYC53YXNtYCBtb2R1bGUgYXMgaXRzIGJ5dGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZDogRmVhdHVyZVBsdWdpbkhvb2s8KHRoaXM6IEZlYXR1cmVQbHVnaW5Db250ZXh0LCBpZDogc3RyaW5nKSA9PiBQcm9taXNlPG51bGwgfCBzdHJpbmc+PjtcblxuICAvKipcbiAgICogVGhlIHBsdWdpbidzIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbXBpbGVzIGEgbW9kdWxlIHRoZSBmZWF0dXJlcyB0cmFuc2Zvcm0sIHRoZW4gcmVwbGFjZXMgdGhlIGNvbXBpbGUtdGltZSBjb25zdGFudHMuXG4gICAqL1xuICByZWFkb25seSB0cmFuc2Zvcm06IEZlYXR1cmVQbHVnaW5Ib29rPCh0aGlzOiBGZWF0dXJlUGx1Z2luQ29udGV4dCwgY29kZTogc3RyaW5nLCBpZDogc3RyaW5nKSA9PiBQcm9taXNlPG51bGwgfCBUcmFuc2Zvcm1SZXN1bHRMaWtlPj47XG59XG5cbi8qKlxuICogVGhlIGFzc2V0IHRoZSBmZWF0dXJlIHBsdWdpbiBlbWl0cyBmb3IgYSBzdHlsZXNoZWV0LlxuICovXG5pbnRlcmZhY2UgRW1pdHRlZEFzc2V0IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBzb3VyY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZTogJ2Fzc2V0Jztcbn1cblxuLyoqXG4gKiBBIHBsdWdpbiBob29rIHdpdGggaXRzIG9yZGVyLlxuICpcbiAqIEB0eXBlUGFyYW0gSGFuZGxlciAtIFRoZSBob29rJ3MgaGFuZGxlci5cbiAqL1xuaW50ZXJmYWNlIEZlYXR1cmVQbHVnaW5Ib29rPEhhbmRsZXI+IHtcbiAgcmVhZG9ubHkgaGFuZGxlcjogSGFuZGxlcjtcbiAgcmVhZG9ubHkgb3JkZXI6ICdwcmUnO1xufVxuXG4vKipcbiAqIEEgdHJhbnNmb3JtIGhvb2sncyByZXN1bHQuXG4gKi9cbmludGVyZmFjZSBUcmFuc2Zvcm1SZXN1bHRMaWtlIHtcbiAgcmVhZG9ubHkgY29kZTogc3RyaW5nO1xuICByZWFkb25seSBtYXA/OiBTb3VyY2VNYXBMaWtlIHwgdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgVW5wbHVnaW5WdWVNb2R1bGUge1xuICByZWFkb25seSBkZWZhdWx0OiAob3B0aW9ucz86IG9iamVjdCkgPT4gdW5rbm93bjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBwbHVnaW4gdGhhdCBydW5zIHRoZSBzaGFyZWQgdHJhbnNmb3JtcyBpbiBhIHJvbGx1cCBvciB2aXRlIGJ1aWxkLlxuICpcbiAqIC0gYGZyYW1ld29yazogJ3NvbGlkJ2AgY29tcGlsZXMgYC5qc3hgIC8gYC50c3hgIHdpdGggYGJhYmVsLXByZXNldC1zb2xpZGAsIGJlZm9yZSB0aGUgcHJvamVjdCdzIFR5cGVTY3JpcHQgcGx1Z2luLlxuICogLSBgZnJhbWV3b3JrOiAnc3ZlbHRlJ2AgY29tcGlsZXMgYC5zdmVsdGVgIGNvbXBvbmVudHMgYW5kIGAuc3ZlbHRlLnRzYCAvIGAuc3ZlbHRlLmpzYCBtb2R1bGVzLlxuICogLSBgc3R5bGVzYCwgd2hlcmUge0BsaW5rIENyZWF0ZVJvbGx1cENvbXBhdGlibGVGZWF0dXJlUGx1Z2luUGFyYW1zLnNob3VsZENvbXBpbGVTdHlsZXNoZWV0c30gc2F5cyBzbywgcnVucyBldmVyeVxuICogICBzdHlsZXNoZWV0IHRocm91Z2ggUG9zdENTUywgVGFpbHdpbmQgYW5kIENTUy1tb2R1bGUgc2NvcGluZyBhbmQgZW1pdHMgaXQgYXMgYW4gYXNzZXQsIHdoaWNoIGVuZHMgdXAgaW5cbiAqICAgYHN0eWxlcy5jc3NgLlxuICogLSBgd2FzbWAgbG9hZHMgYSBgLndhc21gIG1vZHVsZSBhcyBpdHMgYnl0ZXMuXG4gKiAtIEEgZnJhbWV3b3JrJ3MgY29tcGlsZS10aW1lIGNvbnN0YW50cyBhcmUgcmVwbGFjZWQgd2hlcmVcbiAqICAge0BsaW5rIENyZWF0ZVJvbGx1cENvbXBhdGlibGVGZWF0dXJlUGx1Z2luUGFyYW1zLnNob3VsZFJlcGxhY2VEZWZpbmVzfSBzYXlzIHNvLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIENyZWF0ZVJvbGx1cENvbXBhdGlibGVGZWF0dXJlUGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIFRoZSBwbHVnaW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSb2xsdXBDb21wYXRpYmxlRmVhdHVyZVBsdWdpbihwYXJhbXM6IENyZWF0ZVJvbGx1cENvbXBhdGlibGVGZWF0dXJlUGx1Z2luUGFyYW1zKTogUm9sbHVwQ29tcGF0aWJsZUZlYXR1cmVQbHVnaW4ge1xuICBjb25zdCB7IGZlYXR1cmVzLCBpc1Byb2R1Y3Rpb25CdWlsZCwgc2hvdWxkQ29tcGlsZVN0eWxlc2hlZXRzLCBzaG91bGRSZXBsYWNlRGVmaW5lcyB9ID0gcGFyYW1zO1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybUZlYXR1cmVGaWxlKGNvbnRleHQ6IEZlYXR1cmVQbHVnaW5Db250ZXh0LCBjb2RlOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBQcm9taXNlPG51bGwgfCBUcmFuc2Zvcm1SZXN1bHRMaWtlPiB7XG4gICAgY29uc3QgW2ZpbGVQYXRoID0gaWRdID0gaWQuc3BsaXQoJz8nLCAxKTtcbiAgICBzd2l0Y2ggKGdldEZlYXR1cmVGaWxlS2luZChpZCkpIHtcbiAgICAgIGNhc2UgJ2pzeCc6IHtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLmZyYW1ld29yayA9PT0gJ3NvbGlkJyA/IGF3YWl0IHRyYW5zZm9ybVNvbGlkKHsgY29kZSwgZmlsZVBhdGgsIGlzUHJvZHVjdGlvbkJ1aWxkOiBpc1Byb2R1Y3Rpb25CdWlsZCgpIH0pIDogbnVsbDtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3N0eWxlc2hlZXQnOiB7XG4gICAgICAgIGlmICghc2hvdWxkQ29tcGlsZVN0eWxlc2hlZXRzIHx8ICFmZWF0dXJlcy5zdHlsZXMpIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0cmFuc2Zvcm1Dc3Moe1xuICAgICAgICAgIGZpbGVQYXRoLFxuICAgICAgICAgIGlzQ3NzTW9kdWxlU2NvcGVkOiB0cnVlLFxuICAgICAgICAgIGlzUHJvZHVjdGlvbkJ1aWxkOiBpc1Byb2R1Y3Rpb25CdWlsZCgpLFxuICAgICAgICAgIHNvdXJjZTogY29kZSxcbiAgICAgICAgICBzdHlsZXM6IGZlYXR1cmVzLnN0eWxlc1xuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCBkZXBlbmRlbmN5IG9mIHJlc3VsdC5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgICBjb250ZXh0LmFkZFdhdGNoRmlsZShkZXBlbmRlbmN5KTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0LmVtaXRGaWxlKHsgbmFtZTogT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuU3R5bGVzQ3NzLCBzb3VyY2U6IHJlc3VsdC5jc3MsIHR5cGU6ICdhc3NldCcgfSk7XG4gICAgICAgIHJldHVybiB7IGNvZGU6IHJlc3VsdC5tb2R1bGVFeHBvcnRzID8gZ2V0Q3NzTW9kdWxlQ29kZShyZXN1bHQubW9kdWxlRXhwb3J0cykgOiAnZXhwb3J0IGRlZmF1bHQgdW5kZWZpbmVkO1xcbicgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3N2ZWx0ZSc6IHtcbiAgICAgICAgcmV0dXJuIGZlYXR1cmVzLmZyYW1ld29yayA9PT0gJ3N2ZWx0ZScgPyBhd2FpdCB0cmFuc2Zvcm1TdmVsdGUoeyBjb2RlLCBmaWxlUGF0aCwgaXNQcm9kdWN0aW9uQnVpbGQ6IGlzUHJvZHVjdGlvbkJ1aWxkKCkgfSkgOiBudWxsO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxvYWQ6IHtcbiAgICAgIGFzeW5jIGhhbmRsZXIoaWQpOiBQcm9taXNlPG51bGwgfCBzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuICFmZWF0dXJlcy53YXNtIHx8IGdldEZlYXR1cmVGaWxlS2luZChpZCkgIT09ICd3YXNtJyA/IG51bGwgOiBnZXRXYXNtTW9kdWxlQ29kZShhd2FpdCByZWFkRmlsZShpZCkpO1xuICAgICAgfSxcbiAgICAgIG9yZGVyOiAncHJlJ1xuICAgIH0sXG4gICAgbmFtZTogJ29ic2lkaWFuLXBsdWdpbi1mZWF0dXJlcycsXG4gICAgdHJhbnNmb3JtOiB7XG4gICAgICBhc3luYyBoYW5kbGVyKGNvZGUsIGlkKTogUHJvbWlzZTxudWxsIHwgVHJhbnNmb3JtUmVzdWx0TGlrZT4ge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IGF3YWl0IHRyYW5zZm9ybUZlYXR1cmVGaWxlKHRoaXMsIGNvZGUsIGlkKTtcbiAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlRGVmaW5lcykge1xuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWZpbmVzID0gZ2V0RnJhbWV3b3JrRGVmaW5lcyh7IGZyYW1ld29yazogZmVhdHVyZXMuZnJhbWV3b3JrLCBpc1Byb2R1Y3Rpb25CdWlsZDogaXNQcm9kdWN0aW9uQnVpbGQoKSB9KTtcbiAgICAgICAgY29uc3Qgc291cmNlID0gdHJhbnNmb3JtZWQ/LmNvZGUgPz8gY29kZTtcbiAgICAgICAgY29uc3QgcmVwbGFjZWQgPSByZXBsYWNlRGVmaW5lcyhzb3VyY2UsIGRlZmluZXMpO1xuICAgICAgICByZXR1cm4gcmVwbGFjZWQgPT09IHNvdXJjZSA/IHRyYW5zZm9ybWVkIDogeyBjb2RlOiByZXBsYWNlZCwgbWFwOiB0cmFuc2Zvcm1lZD8ubWFwIH07XG4gICAgICB9LFxuICAgICAgb3JkZXI6ICdwcmUnXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGB1bnBsdWdpbi12dWVgIHBsdWdpbiBvZiBvbmUgYnVuZGxlciB3aGVuIHRoZSBmcmFtZXdvcmsgaXMgVnVlLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUge0BsaW5rIENyZWF0ZVVucGx1Z2luVnVlUGx1Z2luUGFyYW1zfS5cbiAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgdG8gdGhlIHBsdWdpbiwgb3IgYG51bGxgIHdoZW4gdGhlIGZyYW1ld29yayBpcyBub3QgVnVlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlVW5wbHVnaW5WdWVQbHVnaW4ocGFyYW1zOiBDcmVhdGVVbnBsdWdpblZ1ZVBsdWdpblBhcmFtcyk6IFByb21pc2U8dW5rbm93bj4ge1xuICBjb25zdCB7IGJ1bmRsZXIsIGZlYXR1cmVzIH0gPSBwYXJhbXM7XG4gIGlmIChmZWF0dXJlcy5mcmFtZXdvcmsgIT09ICd2dWUnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgdW5wbHVnaW5WdWUgPSBhd2FpdCBpbXBvcnRPcHRpb25hbFBlZXI8VW5wbHVnaW5WdWVNb2R1bGU+KHtcbiAgICBmZWF0dXJlOiAnZnJhbWV3b3JrOiBcXCd2dWVcXCcnLFxuICAgIHBhY2thZ2VOYW1lOiAndW5wbHVnaW4tdnVlJyxcbiAgICBzcGVjaWZpZXI6IGB1bnBsdWdpbi12dWUvJHtidW5kbGVyfWBcbiAgfSk7XG4gIHJldHVybiB1bnBsdWdpblZ1ZS5kZWZhdWx0KCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7OztBQVFBLFNBQVMsZ0JBQWdCO0FBS3pCLFNBQVMsK0JBQStCO0FBQ3hDO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUDtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQWlJQSxTQUFTLG9DQUFvQyxRQUFrRjtBQUNwSSxRQUFNLEVBQUUsVUFBVSxtQkFBbUIsMEJBQTBCLHFCQUFxQixJQUFJO0FBRXhGLGlCQUFlLHFCQUFxQixTQUErQixNQUFjLElBQWlEO0FBQ2hJLFVB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
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* The pieces the rollup and vite adapters share. Vite 8 builds with rolldown, whose plugin API is
|
|
6
|
+
* rollup's but whose types are its own, so these are typed by the shape both accept rather than by either
|
|
7
|
+
* package's declarations.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* The part of a rollup or rolldown plugin context {@link renameCssAssets} uses.
|
|
11
|
+
*/
|
|
12
|
+
export interface AssetEmitter {
|
|
13
|
+
/**
|
|
14
|
+
* Emits an asset into the bundle.
|
|
15
|
+
*
|
|
16
|
+
* @param emittedFile - The asset to emit.
|
|
17
|
+
* @returns The reference id of the emitted file.
|
|
18
|
+
*/
|
|
19
|
+
emitFile: (emittedFile: EmittedCssAsset) => string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* An emitted file of a rollup or rolldown bundle, as {@link renameCssAssets} reads it.
|
|
23
|
+
*/
|
|
24
|
+
export interface BundleOutputLike {
|
|
25
|
+
/**
|
|
26
|
+
* The file name relative to the output folder.
|
|
27
|
+
*/
|
|
28
|
+
readonly fileName: string;
|
|
29
|
+
/**
|
|
30
|
+
* An asset's contents.
|
|
31
|
+
*/
|
|
32
|
+
readonly source?: string | Uint8Array;
|
|
33
|
+
/**
|
|
34
|
+
* Whether the file is an asset or a chunk.
|
|
35
|
+
*/
|
|
36
|
+
readonly type: 'asset' | 'chunk';
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The function {@link combineExternal} returns, which every bundler of the rollup family accepts.
|
|
40
|
+
*/
|
|
41
|
+
export type CombinedExternalFunction = (source: string, importer: string | undefined, isResolved: boolean) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* The `styles.css` asset {@link renameCssAssets} emits.
|
|
44
|
+
*/
|
|
45
|
+
export interface EmittedCssAsset {
|
|
46
|
+
/**
|
|
47
|
+
* The file name relative to the output folder.
|
|
48
|
+
*/
|
|
49
|
+
readonly fileName: string;
|
|
50
|
+
/**
|
|
51
|
+
* The file's contents.
|
|
52
|
+
*/
|
|
53
|
+
readonly source: string;
|
|
54
|
+
/**
|
|
55
|
+
* The kind of emitted file.
|
|
56
|
+
*/
|
|
57
|
+
readonly type: 'asset';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The function form of {@link ExternalLike}. Its result is read for truthiness, as rollup and rolldown read it.
|
|
61
|
+
*/
|
|
62
|
+
export type ExternalFunction = (source: string, importer: string | undefined, isResolved: boolean) => unknown;
|
|
63
|
+
/**
|
|
64
|
+
* The `external` option of rollup and of rolldown, in the shape both accept.
|
|
65
|
+
*/
|
|
66
|
+
export type ExternalLike = ExternalFunction | ExternalPattern | readonly ExternalPattern[];
|
|
67
|
+
/**
|
|
68
|
+
* One entry of the array form of {@link ExternalLike}.
|
|
69
|
+
*/
|
|
70
|
+
export type ExternalPattern = RegExp | string;
|
|
71
|
+
/**
|
|
72
|
+
* Puts Obsidian's modules and the Node builtins beside whatever the consumer's own `external` option names.
|
|
73
|
+
*
|
|
74
|
+
* @param external - The consumer's `external` option.
|
|
75
|
+
* @returns A function form of `external` that keeps both.
|
|
76
|
+
*/
|
|
77
|
+
export declare function combineExternal(external: ExternalLike | undefined): CombinedExternalFunction;
|
|
78
|
+
/**
|
|
79
|
+
* Moves every CSS asset of a bundle into one `styles.css`, the only stylesheet Obsidian loads.
|
|
80
|
+
*
|
|
81
|
+
* @param assetEmitter - The plugin context to emit `styles.css` through.
|
|
82
|
+
* @param bundle - The bundle about to be written.
|
|
83
|
+
*/
|
|
84
|
+
export declare function renameCssAssets(assetEmitter: AssetEmitter, bundle: Record<string, BundleOutputLike>): void;
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
+
|
|
6
|
+
import { ObsidianPluginRepoPaths } from "../obsidian-plugin-repo-paths.mjs";
|
|
7
|
+
import {
|
|
8
|
+
isCssFileName,
|
|
9
|
+
isObsidianPluginExternal,
|
|
10
|
+
mergeCssAssets
|
|
11
|
+
} from "./obsidian-plugin-build.mjs";
|
|
12
|
+
function combineExternal(external) {
|
|
13
|
+
return (source, importer, isResolved) => isObsidianPluginExternal(source) || isMatchingExternal(external, source, importer, isResolved);
|
|
14
|
+
}
|
|
15
|
+
function renameCssAssets(assetEmitter, bundle) {
|
|
16
|
+
const cssAssets = Object.values(bundle).filter((output) => output.type === "asset" && isCssFileName(output.fileName)).map((asset) => ({
|
|
17
|
+
fileName: asset.fileName,
|
|
18
|
+
source: typeof asset.source === "string" ? asset.source : new TextDecoder().decode(asset.source)
|
|
19
|
+
}));
|
|
20
|
+
const { fileNamesToRemove, stylesCss } = mergeCssAssets(cssAssets);
|
|
21
|
+
if (stylesCss === void 0) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
for (const fileName of fileNamesToRemove) {
|
|
25
|
+
delete bundle[fileName];
|
|
26
|
+
}
|
|
27
|
+
assetEmitter.emitFile({ fileName: ObsidianPluginRepoPaths.StylesCss, source: stylesCss, type: "asset" });
|
|
28
|
+
}
|
|
29
|
+
function isMatchingExternal(external, source, importer, isResolved) {
|
|
30
|
+
if (external === void 0) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
if (typeof external === "function") {
|
|
34
|
+
return Boolean(external(source, importer, isResolved));
|
|
35
|
+
}
|
|
36
|
+
const patterns = typeof external === "string" || external instanceof RegExp ? [external] : external;
|
|
37
|
+
return patterns.some((pattern) => typeof pattern === "string" ? pattern === source : pattern.test(source));
|
|
38
|
+
}
|
|
39
|
+
export {
|
|
40
|
+
combineExternal,
|
|
41
|
+
renameCssAssets
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2J1bmRsZXJzL3JvbGx1cC1jb21wYXRpYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVGhlIHBpZWNlcyB0aGUgcm9sbHVwIGFuZCB2aXRlIGFkYXB0ZXJzIHNoYXJlLiBWaXRlIDggYnVpbGRzIHdpdGggcm9sbGRvd24sIHdob3NlIHBsdWdpbiBBUEkgaXNcbiAqIHJvbGx1cCdzIGJ1dCB3aG9zZSB0eXBlcyBhcmUgaXRzIG93biwgc28gdGhlc2UgYXJlIHR5cGVkIGJ5IHRoZSBzaGFwZSBib3RoIGFjY2VwdCByYXRoZXIgdGhhbiBieSBlaXRoZXJcbiAqIHBhY2thZ2UncyBkZWNsYXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHsgT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMgfSBmcm9tICcuLi9vYnNpZGlhbi1wbHVnaW4tcmVwby1wYXRocy50cyc7XG5pbXBvcnQge1xuICBpc0Nzc0ZpbGVOYW1lLFxuICBpc09ic2lkaWFuUGx1Z2luRXh0ZXJuYWwsXG4gIG1lcmdlQ3NzQXNzZXRzXG59IGZyb20gJy4vb2JzaWRpYW4tcGx1Z2luLWJ1aWxkLnRzJztcblxuLyoqXG4gKiBUaGUgcGFydCBvZiBhIHJvbGx1cCBvciByb2xsZG93biBwbHVnaW4gY29udGV4dCB7QGxpbmsgcmVuYW1lQ3NzQXNzZXRzfSB1c2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0RW1pdHRlciB7XG4gIC8qKlxuICAgKiBFbWl0cyBhbiBhc3NldCBpbnRvIHRoZSBidW5kbGUuXG4gICAqXG4gICAqIEBwYXJhbSBlbWl0dGVkRmlsZSAtIFRoZSBhc3NldCB0byBlbWl0LlxuICAgKiBAcmV0dXJucyBUaGUgcmVmZXJlbmNlIGlkIG9mIHRoZSBlbWl0dGVkIGZpbGUuXG4gICAqL1xuICBlbWl0RmlsZTogKGVtaXR0ZWRGaWxlOiBFbWl0dGVkQ3NzQXNzZXQpID0+IHN0cmluZztcbn1cblxuLyoqXG4gKiBBbiBlbWl0dGVkIGZpbGUgb2YgYSByb2xsdXAgb3Igcm9sbGRvd24gYnVuZGxlLCBhcyB7QGxpbmsgcmVuYW1lQ3NzQXNzZXRzfSByZWFkcyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVPdXRwdXRMaWtlIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG5hbWUgcmVsYXRpdmUgdG8gdGhlIG91dHB1dCBmb2xkZXIuXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBhc3NldCdzIGNvbnRlbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogc3RyaW5nIHwgVWludDhBcnJheTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZmlsZSBpcyBhbiBhc3NldCBvciBhIGNodW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogJ2Fzc2V0JyB8ICdjaHVuayc7XG59XG5cbi8qKlxuICogVGhlIGZ1bmN0aW9uIHtAbGluayBjb21iaW5lRXh0ZXJuYWx9IHJldHVybnMsIHdoaWNoIGV2ZXJ5IGJ1bmRsZXIgb2YgdGhlIHJvbGx1cCBmYW1pbHkgYWNjZXB0cy5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tYmluZWRFeHRlcm5hbEZ1bmN0aW9uID0gKHNvdXJjZTogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nIHwgdW5kZWZpbmVkLCBpc1Jlc29sdmVkOiBib29sZWFuKSA9PiBib29sZWFuO1xuXG4vKipcbiAqIFRoZSBgc3R5bGVzLmNzc2AgYXNzZXQge0BsaW5rIHJlbmFtZUNzc0Fzc2V0c30gZW1pdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1pdHRlZENzc0Fzc2V0IHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIG5hbWUgcmVsYXRpdmUgdG8gdGhlIG91dHB1dCBmb2xkZXIuXG4gICAqL1xuICByZWFkb25seSBmaWxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZmlsZSdzIGNvbnRlbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIGVtaXR0ZWQgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdhc3NldCc7XG59XG5cbi8qKlxuICogVGhlIGZ1bmN0aW9uIGZvcm0gb2Yge0BsaW5rIEV4dGVybmFsTGlrZX0uIEl0cyByZXN1bHQgaXMgcmVhZCBmb3IgdHJ1dGhpbmVzcywgYXMgcm9sbHVwIGFuZCByb2xsZG93biByZWFkIGl0LlxuICovXG5leHBvcnQgdHlwZSBFeHRlcm5hbEZ1bmN0aW9uID0gKHNvdXJjZTogc3RyaW5nLCBpbXBvcnRlcjogc3RyaW5nIHwgdW5kZWZpbmVkLCBpc1Jlc29sdmVkOiBib29sZWFuKSA9PiB1bmtub3duO1xuXG4vKipcbiAqIFRoZSBgZXh0ZXJuYWxgIG9wdGlvbiBvZiByb2xsdXAgYW5kIG9mIHJvbGxkb3duLCBpbiB0aGUgc2hhcGUgYm90aCBhY2NlcHQuXG4gKi9cbmV4cG9ydCB0eXBlIEV4dGVybmFsTGlrZSA9IEV4dGVybmFsRnVuY3Rpb24gfCBFeHRlcm5hbFBhdHRlcm4gfCByZWFkb25seSBFeHRlcm5hbFBhdHRlcm5bXTtcblxuLyoqXG4gKiBPbmUgZW50cnkgb2YgdGhlIGFycmF5IGZvcm0gb2Yge0BsaW5rIEV4dGVybmFsTGlrZX0uXG4gKi9cbmV4cG9ydCB0eXBlIEV4dGVybmFsUGF0dGVybiA9IFJlZ0V4cCB8IHN0cmluZztcblxuLyoqXG4gKiBQdXRzIE9ic2lkaWFuJ3MgbW9kdWxlcyBhbmQgdGhlIE5vZGUgYnVpbHRpbnMgYmVzaWRlIHdoYXRldmVyIHRoZSBjb25zdW1lcidzIG93biBgZXh0ZXJuYWxgIG9wdGlvbiBuYW1lcy5cbiAqXG4gKiBAcGFyYW0gZXh0ZXJuYWwgLSBUaGUgY29uc3VtZXIncyBgZXh0ZXJuYWxgIG9wdGlvbi5cbiAqIEByZXR1cm5zIEEgZnVuY3Rpb24gZm9ybSBvZiBgZXh0ZXJuYWxgIHRoYXQga2VlcHMgYm90aC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbWJpbmVFeHRlcm5hbChleHRlcm5hbDogRXh0ZXJuYWxMaWtlIHwgdW5kZWZpbmVkKTogQ29tYmluZWRFeHRlcm5hbEZ1bmN0aW9uIHtcbiAgcmV0dXJuIChzb3VyY2UsIGltcG9ydGVyLCBpc1Jlc29sdmVkKTogYm9vbGVhbiA9PiBpc09ic2lkaWFuUGx1Z2luRXh0ZXJuYWwoc291cmNlKSB8fCBpc01hdGNoaW5nRXh0ZXJuYWwoZXh0ZXJuYWwsIHNvdXJjZSwgaW1wb3J0ZXIsIGlzUmVzb2x2ZWQpO1xufVxuXG4vKipcbiAqIE1vdmVzIGV2ZXJ5IENTUyBhc3NldCBvZiBhIGJ1bmRsZSBpbnRvIG9uZSBgc3R5bGVzLmNzc2AsIHRoZSBvbmx5IHN0eWxlc2hlZXQgT2JzaWRpYW4gbG9hZHMuXG4gKlxuICogQHBhcmFtIGFzc2V0RW1pdHRlciAtIFRoZSBwbHVnaW4gY29udGV4dCB0byBlbWl0IGBzdHlsZXMuY3NzYCB0aHJvdWdoLlxuICogQHBhcmFtIGJ1bmRsZSAtIFRoZSBidW5kbGUgYWJvdXQgdG8gYmUgd3JpdHRlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZUNzc0Fzc2V0cyhhc3NldEVtaXR0ZXI6IEFzc2V0RW1pdHRlciwgYnVuZGxlOiBSZWNvcmQ8c3RyaW5nLCBCdW5kbGVPdXRwdXRMaWtlPik6IHZvaWQge1xuICBjb25zdCBjc3NBc3NldHMgPSBPYmplY3QudmFsdWVzKGJ1bmRsZSlcbiAgICAuZmlsdGVyKChvdXRwdXQpID0+IG91dHB1dC50eXBlID09PSAnYXNzZXQnICYmIGlzQ3NzRmlsZU5hbWUob3V0cHV0LmZpbGVOYW1lKSlcbiAgICAubWFwKChhc3NldCkgPT4gKHtcbiAgICAgIGZpbGVOYW1lOiBhc3NldC5maWxlTmFtZSxcbiAgICAgIHNvdXJjZTogdHlwZW9mIGFzc2V0LnNvdXJjZSA9PT0gJ3N0cmluZycgPyBhc3NldC5zb3VyY2UgOiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYXNzZXQuc291cmNlKVxuICAgIH0pKTtcbiAgY29uc3QgeyBmaWxlTmFtZXNUb1JlbW92ZSwgc3R5bGVzQ3NzIH0gPSBtZXJnZUNzc0Fzc2V0cyhjc3NBc3NldHMpO1xuICBpZiAoc3R5bGVzQ3NzID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChjb25zdCBmaWxlTmFtZSBvZiBmaWxlTmFtZXNUb1JlbW92ZSkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZHluYW1pYy1kZWxldGUgLS0gUmVtb3ZpbmcgYW4gZW50cnkgZnJvbSB0aGUgYnVuZGxlIGlzIGhvdyBhIHJvbGx1cCBwbHVnaW4gZHJvcHMgYW4gb3V0cHV0LlxuICAgIGRlbGV0ZSBidW5kbGVbZmlsZU5hbWVdO1xuICB9XG4gIGFzc2V0RW1pdHRlci5lbWl0RmlsZSh7IGZpbGVOYW1lOiBPYnNpZGlhblBsdWdpblJlcG9QYXRocy5TdHlsZXNDc3MsIHNvdXJjZTogc3R5bGVzQ3NzLCB0eXBlOiAnYXNzZXQnIH0pO1xufVxuXG5mdW5jdGlvbiBpc01hdGNoaW5nRXh0ZXJuYWwoZXh0ZXJuYWw6IEV4dGVybmFsTGlrZSB8IHVuZGVmaW5lZCwgc291cmNlOiBzdHJpbmcsIGltcG9ydGVyOiBzdHJpbmcgfCB1bmRlZmluZWQsIGlzUmVzb2x2ZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgaWYgKGV4dGVybmFsID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBleHRlcm5hbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCb29sZWFuKGV4dGVybmFsKHNvdXJjZSwgaW1wb3J0ZXIsIGlzUmVzb2x2ZWQpKTtcbiAgfVxuICBjb25zdCBwYXR0ZXJuczogcmVhZG9ubHkgRXh0ZXJuYWxQYXR0ZXJuW10gPSB0eXBlb2YgZXh0ZXJuYWwgPT09ICdzdHJpbmcnIHx8IGV4dGVybmFsIGluc3RhbmNlb2YgUmVnRXhwID8gW2V4dGVybmFsXSA6IGV4dGVybmFsO1xuICByZXR1cm4gcGF0dGVybnMuc29tZSgocGF0dGVybikgPT4gdHlwZW9mIHBhdHRlcm4gPT09ICdzdHJpbmcnID8gcGF0dGVybiA9PT0gc291cmNlIDogcGF0dGVybi50ZXN0KHNvdXJjZSkpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFRQSxTQUFTLCtCQUErQjtBQUN4QztBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFpRkEsU0FBUyxnQkFBZ0IsVUFBOEQ7QUFDNUYsU0FBTyxDQUFDLFFBQVEsVUFBVSxlQUF3Qix5QkFBeUIsTUFBTSxLQUFLLG1CQUFtQixVQUFVLFFBQVEsVUFBVSxVQUFVO0FBQ2pKO0FBUU8sU0FBUyxnQkFBZ0IsY0FBNEIsUUFBZ0Q7QUFDMUcsUUFBTSxZQUFZLE9BQU8sT0FBTyxNQUFNLEVBQ25DLE9BQU8sQ0FBQyxXQUFXLE9BQU8sU0FBUyxXQUFXLGNBQWMsT0FBTyxRQUFRLENBQUMsRUFDNUUsSUFBSSxDQUFDLFdBQVc7QUFBQSxJQUNmLFVBQVUsTUFBTTtBQUFBLElBQ2hCLFFBQVEsT0FBTyxNQUFNLFdBQVcsV0FBVyxNQUFNLFNBQVMsSUFBSSxZQUFZLEVBQUUsT0FBTyxNQUFNLE1BQU07QUFBQSxFQUNqRyxFQUFFO0FBQ0osUUFBTSxFQUFFLG1CQUFtQixVQUFVLElBQUksZUFBZSxTQUFTO0FBQ2pFLE1BQUksY0FBYyxRQUFXO0FBQzNCO0FBQUEsRUFDRjtBQUNBLGFBQVcsWUFBWSxtQkFBbUI7QUFFeEMsV0FBTyxPQUFPLFFBQVE7QUFBQSxFQUN4QjtBQUNBLGVBQWEsU0FBUyxFQUFFLFVBQVUsd0JBQXdCLFdBQVcsUUFBUSxXQUFXLE1BQU0sUUFBUSxDQUFDO0FBQ3pHO0FBRUEsU0FBUyxtQkFBbUIsVUFBb0MsUUFBZ0IsVUFBOEIsWUFBOEI7QUFDMUksTUFBSSxhQUFhLFFBQVc7QUFDMUIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLE9BQU8sYUFBYSxZQUFZO0FBQ2xDLFdBQU8sUUFBUSxTQUFTLFFBQVEsVUFBVSxVQUFVLENBQUM7QUFBQSxFQUN2RDtBQUNBLFFBQU0sV0FBdUMsT0FBTyxhQUFhLFlBQVksb0JBQW9CLFNBQVMsQ0FBQyxRQUFRLElBQUk7QUFDdkgsU0FBTyxTQUFTLEtBQUssQ0FBQyxZQUFZLE9BQU8sWUFBWSxXQUFXLFlBQVksU0FBUyxRQUFRLEtBQUssTUFBTSxDQUFDO0FBQzNHOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Builds an Obsidian plugin with rollup: a rollup plugin that gives a build the same `main.js` +
|
|
6
|
+
* `styles.css` + `manifest.json` layout the esbuild builder produces, deploys a watch build into the vault,
|
|
7
|
+
* and fills in only the options the consumer's own `rollup.config` leaves unset.
|
|
8
|
+
*
|
|
9
|
+
* `rollup` is an optional peer dependency and this module only imports its types, so a plugin built with
|
|
10
|
+
* esbuild installs nothing extra.
|
|
11
|
+
*/
|
|
12
|
+
import type { InputOptions, InputPluginOption, OutputOptions } from 'rollup';
|
|
13
|
+
import type { ObsidianPluginBuildContext, ObsidianPluginDeploymentOptions } from './obsidian-plugin-build.mjs';
|
|
14
|
+
import type { ObsidianPluginFeatureOptions } from './obsidian-plugin-features.mjs';
|
|
15
|
+
import { BuildMode } from './obsidian-plugin-build.mjs';
|
|
16
|
+
/**
|
|
17
|
+
* Parameters for {@link applyRollupInputDefaults}.
|
|
18
|
+
*/
|
|
19
|
+
export interface ApplyRollupInputDefaultsParams {
|
|
20
|
+
/**
|
|
21
|
+
* The build context.
|
|
22
|
+
*/
|
|
23
|
+
readonly buildContext: ObsidianPluginBuildContext;
|
|
24
|
+
/**
|
|
25
|
+
* The build features.
|
|
26
|
+
*/
|
|
27
|
+
readonly features?: ObsidianPluginFeatureOptions;
|
|
28
|
+
/**
|
|
29
|
+
* The consumer's input options.
|
|
30
|
+
*/
|
|
31
|
+
readonly inputOptions: InputOptions;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Parameters for {@link applyRollupOutputDefaults}.
|
|
35
|
+
*/
|
|
36
|
+
export interface ApplyRollupOutputDefaultsParams {
|
|
37
|
+
/**
|
|
38
|
+
* The build context.
|
|
39
|
+
*/
|
|
40
|
+
readonly buildContext: ObsidianPluginBuildContext;
|
|
41
|
+
/**
|
|
42
|
+
* The consumer's output options.
|
|
43
|
+
*/
|
|
44
|
+
readonly outputOptions: OutputOptions;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Options for {@link obsidianPluginRollup}.
|
|
48
|
+
*/
|
|
49
|
+
export interface ObsidianPluginRollupOptions extends ObsidianPluginDeploymentOptions, ObsidianPluginFeatureOptions {
|
|
50
|
+
/**
|
|
51
|
+
* The build mode. Defaults to {@link BuildMode.Development} in watch mode (`rollup --watch`) and
|
|
52
|
+
* {@link BuildMode.Production} otherwise.
|
|
53
|
+
*/
|
|
54
|
+
readonly mode?: BuildMode;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Fills in the rollup input options the consumer left unset.
|
|
58
|
+
*
|
|
59
|
+
* @param params - The {@link ApplyRollupInputDefaultsParams}.
|
|
60
|
+
* @returns The input options with the plugin's defaults applied.
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyRollupInputDefaults(params: ApplyRollupInputDefaultsParams): InputOptions;
|
|
63
|
+
/**
|
|
64
|
+
* Fills in the rollup output options the consumer left unset.
|
|
65
|
+
*
|
|
66
|
+
* @param params - The {@link ApplyRollupOutputDefaultsParams}.
|
|
67
|
+
* @returns The output options with the plugin's defaults applied.
|
|
68
|
+
*/
|
|
69
|
+
export declare function applyRollupOutputDefaults(params: ApplyRollupOutputDefaultsParams): OutputOptions;
|
|
70
|
+
/**
|
|
71
|
+
* Creates a rollup plugin that builds an Obsidian plugin.
|
|
72
|
+
*
|
|
73
|
+
* What it does, each only when the consumer's config has not said otherwise:
|
|
74
|
+
*
|
|
75
|
+
* - `input` is `src/main.ts`.
|
|
76
|
+
* - The output is one CommonJS `main.js` in `dist/build` (`dist/dev` in watch mode), with dynamic imports
|
|
77
|
+
* inlined, the generated-file banner, and an inline source map in development.
|
|
78
|
+
*
|
|
79
|
+
* And always: Obsidian's own modules (`obsidian`, `electron`, CodeMirror, Lezer) and the Node builtins are
|
|
80
|
+
* external beside the consumer's own `external`, the output folder is emptied before the first write,
|
|
81
|
+
* every emitted CSS file ends up in `styles.css`, `manifest.json` (and in development `.hotreload`) is
|
|
82
|
+
* copied beside it, and a development build is deployed into the vault named by `OBSIDIAN_CONFIG_FOLDER`.
|
|
83
|
+
*
|
|
84
|
+
* TypeScript, dependency resolution and minification stay the consumer's choice of rollup plugins, as they would be
|
|
85
|
+
* without this one. The build features ({@link ObsidianPluginFeatureOptions}) are the plugin's:
|
|
86
|
+
*
|
|
87
|
+
* - `framework: 'react' | 'preact'` sets rollup's `jsx` option to the automatic runtime (unless set), and the
|
|
88
|
+
* TypeScript plugin reads the same from the toolkit's tsconfig preset.
|
|
89
|
+
* - `framework: 'solid' | 'svelte'` compiles the components with the toolkit's shared transforms, and `'vue'` adds
|
|
90
|
+
* `unplugin-vue`.
|
|
91
|
+
* - Any framework replaces `process.env.NODE_ENV` (and Vue's feature flags) in the bundled code.
|
|
92
|
+
* - `styles` compiles every stylesheet itself (PostCSS, Tailwind, CSS modules), so rollup needs no CSS plugin; leave
|
|
93
|
+
* it out. `styles: {}` compiles plain CSS.
|
|
94
|
+
* - `wasm` imports a `.wasm` module as its bytes.
|
|
95
|
+
*
|
|
96
|
+
* @param options - The {@link ObsidianPluginRollupOptions}.
|
|
97
|
+
* @returns The rollup plugins, which rollup takes as one entry of its `plugins`.
|
|
98
|
+
*/
|
|
99
|
+
export declare function obsidianPluginRollup(options?: ObsidianPluginRollupOptions): InputPluginOption[];
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return "/";
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: "android"
|
|
14
|
+
};
|
|
15
|
+
const existingProcess = globalThis.process;
|
|
16
|
+
if (!existingProcess) {
|
|
17
|
+
globalThis.process = browserProcess;
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (existingProcess.versions?.node) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const existingProcessRecord = existingProcess;
|
|
24
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
25
|
+
existingProcessRecord[key] ??= value;
|
|
26
|
+
}
|
|
27
|
+
existingProcessRecord["browser"] = true;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
ensureBrowserProcess();
|
|
31
|
+
})();
|
|
32
|
+
|
|
33
|
+
import { dirname } from "@mnaoumov/typescript-lib/path";
|
|
34
|
+
import {
|
|
35
|
+
BuildMode,
|
|
36
|
+
cleanObsidianPluginDistFolder,
|
|
37
|
+
completeObsidianPluginDistFolder,
|
|
38
|
+
getObsidianPluginBanner,
|
|
39
|
+
resolveObsidianPluginBuildContext
|
|
40
|
+
} from "./obsidian-plugin-build.mjs";
|
|
41
|
+
import { getJsxImportSource } from "./obsidian-plugin-features.mjs";
|
|
42
|
+
import { deployToObsidianPluginsFolder } from "./obsidian-plugins-folder-deployment.mjs";
|
|
43
|
+
import {
|
|
44
|
+
createRollupCompatibleFeaturePlugin,
|
|
45
|
+
createUnpluginVuePlugin
|
|
46
|
+
} from "./rollup-compatible-features.mjs";
|
|
47
|
+
import {
|
|
48
|
+
combineExternal,
|
|
49
|
+
renameCssAssets
|
|
50
|
+
} from "./rollup-compatible.mjs";
|
|
51
|
+
function applyRollupInputDefaults(params) {
|
|
52
|
+
const { buildContext, inputOptions } = params;
|
|
53
|
+
const jsxImportSource = getJsxImportSource(params.features?.framework);
|
|
54
|
+
return {
|
|
55
|
+
...inputOptions,
|
|
56
|
+
external: combineExternal(inputOptions.external),
|
|
57
|
+
input: inputOptions.input ?? buildContext.entryPoint,
|
|
58
|
+
...jsxImportSource !== void 0 && inputOptions.jsx === void 0 && { jsx: { jsxImportSource, mode: "automatic" } }
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function applyRollupOutputDefaults(params) {
|
|
62
|
+
const { buildContext, outputOptions } = params;
|
|
63
|
+
const hasOutputLocation = outputOptions.file !== void 0 || outputOptions.dir !== void 0;
|
|
64
|
+
return {
|
|
65
|
+
...outputOptions,
|
|
66
|
+
banner: outputOptions.banner ?? getObsidianPluginBanner("rollup"),
|
|
67
|
+
format: outputOptions.format ?? "cjs",
|
|
68
|
+
...!hasOutputLocation && { file: buildContext.mainJsPath },
|
|
69
|
+
// An Obsidian plugin is one file: the manifest names `main.js` and nothing loads a second chunk.
|
|
70
|
+
inlineDynamicImports: outputOptions.inlineDynamicImports ?? true,
|
|
71
|
+
sourcemap: outputOptions.sourcemap ?? (!buildContext.isProductionBuild && "inline")
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function obsidianPluginRollup(options = {}) {
|
|
75
|
+
const state = {
|
|
76
|
+
buildContext: void 0,
|
|
77
|
+
isDistFolderCleaned: false
|
|
78
|
+
};
|
|
79
|
+
function getBuildContext() {
|
|
80
|
+
if (!state.buildContext) {
|
|
81
|
+
throw new Error("The obsidian-plugin rollup plugin has not resolved its build context: its `options` hook did not run.");
|
|
82
|
+
}
|
|
83
|
+
return state.buildContext;
|
|
84
|
+
}
|
|
85
|
+
const featurePlugin = createRollupCompatibleFeaturePlugin({
|
|
86
|
+
features: options,
|
|
87
|
+
isProductionBuild: () => getBuildContext().isProductionBuild,
|
|
88
|
+
shouldCompileStylesheets: true,
|
|
89
|
+
shouldReplaceDefines: true
|
|
90
|
+
});
|
|
91
|
+
const plugin = {
|
|
92
|
+
generateBundle: {
|
|
93
|
+
handler(_outputOptions, bundle) {
|
|
94
|
+
renameCssAssets(this, bundle);
|
|
95
|
+
},
|
|
96
|
+
order: "post"
|
|
97
|
+
},
|
|
98
|
+
name: "obsidian-plugin",
|
|
99
|
+
async options(inputOptions) {
|
|
100
|
+
const mode = options.mode ?? (this.meta.watchMode ? BuildMode.Development : BuildMode.Production);
|
|
101
|
+
state.buildContext = await resolveObsidianPluginBuildContext({ ...options, mode });
|
|
102
|
+
return applyRollupInputDefaults({ buildContext: state.buildContext, features: options, inputOptions });
|
|
103
|
+
},
|
|
104
|
+
outputOptions(outputOptions) {
|
|
105
|
+
return applyRollupOutputDefaults({ buildContext: getBuildContext(), outputOptions });
|
|
106
|
+
},
|
|
107
|
+
async renderStart(outputOptions) {
|
|
108
|
+
if (state.isDistFolderCleaned) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
state.isDistFolderCleaned = true;
|
|
112
|
+
await cleanObsidianPluginDistFolder(getOutputFolder(outputOptions));
|
|
113
|
+
},
|
|
114
|
+
async writeBundle(outputOptions) {
|
|
115
|
+
const buildContext = { ...getBuildContext(), distFolder: getOutputFolder(outputOptions) };
|
|
116
|
+
await completeObsidianPluginDistFolder(buildContext);
|
|
117
|
+
await deployToObsidianPluginsFolder(buildContext);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
return [plugin, featurePlugin, createUnpluginVuePlugin({ bundler: "rollup", features: options })];
|
|
121
|
+
}
|
|
122
|
+
function getOutputFolder(outputOptions) {
|
|
123
|
+
return outputOptions.dir ?? dirname(outputOptions.file ?? "");
|
|
124
|
+
}
|
|
125
|
+
export {
|
|
126
|
+
applyRollupInputDefaults,
|
|
127
|
+
applyRollupOutputDefaults,
|
|
128
|
+
obsidianPluginRollup
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9idW5kbGVycy9yb2xsdXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEJ1aWxkcyBhbiBPYnNpZGlhbiBwbHVnaW4gd2l0aCByb2xsdXA6IGEgcm9sbHVwIHBsdWdpbiB0aGF0IGdpdmVzIGEgYnVpbGQgdGhlIHNhbWUgYG1haW4uanNgICtcbiAqIGBzdHlsZXMuY3NzYCArIGBtYW5pZmVzdC5qc29uYCBsYXlvdXQgdGhlIGVzYnVpbGQgYnVpbGRlciBwcm9kdWNlcywgZGVwbG95cyBhIHdhdGNoIGJ1aWxkIGludG8gdGhlIHZhdWx0LFxuICogYW5kIGZpbGxzIGluIG9ubHkgdGhlIG9wdGlvbnMgdGhlIGNvbnN1bWVyJ3Mgb3duIGByb2xsdXAuY29uZmlnYCBsZWF2ZXMgdW5zZXQuXG4gKlxuICogYHJvbGx1cGAgaXMgYW4gb3B0aW9uYWwgcGVlciBkZXBlbmRlbmN5IGFuZCB0aGlzIG1vZHVsZSBvbmx5IGltcG9ydHMgaXRzIHR5cGVzLCBzbyBhIHBsdWdpbiBidWlsdCB3aXRoXG4gKiBlc2J1aWxkIGluc3RhbGxzIG5vdGhpbmcgZXh0cmEuXG4gKi9cblxuaW1wb3J0IHR5cGUge1xuICBJbnB1dE9wdGlvbnMsXG4gIElucHV0UGx1Z2luT3B0aW9uLFxuICBOb3JtYWxpemVkT3V0cHV0T3B0aW9ucyxcbiAgT3V0cHV0T3B0aW9ucyxcbiAgUGx1Z2luXG59IGZyb20gJ3JvbGx1cCc7XG5cbmltcG9ydCB7IGRpcm5hbWUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcGF0aCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgT2JzaWRpYW5QbHVnaW5CdWlsZENvbnRleHQsXG4gIE9ic2lkaWFuUGx1Z2luRGVwbG95bWVudE9wdGlvbnNcbn0gZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tYnVpbGQudHMnO1xuaW1wb3J0IHR5cGUgeyBPYnNpZGlhblBsdWdpbkZlYXR1cmVPcHRpb25zIH0gZnJvbSAnLi9vYnNpZGlhbi1wbHVnaW4tZmVhdHVyZXMudHMnO1xuXG5pbXBvcnQge1xuICBCdWlsZE1vZGUsXG4gIGNsZWFuT2JzaWRpYW5QbHVnaW5EaXN0Rm9sZGVyLFxuICBjb21wbGV0ZU9ic2lkaWFuUGx1Z2luRGlzdEZvbGRlcixcbiAgZ2V0T2JzaWRpYW5QbHVnaW5CYW5uZXIsXG4gIHJlc29sdmVPYnNpZGlhblBsdWdpbkJ1aWxkQ29udGV4dFxufSBmcm9tICcuL29ic2lkaWFuLXBsdWdpbi1idWlsZC50cyc7XG5pbXBvcnQgeyBnZXRKc3hJbXBvcnRTb3VyY2UgfSBmcm9tICcuL29ic2lkaWFuLXBsdWdpbi1mZWF0dXJlcy50cyc7XG5pbXBvcnQgeyBkZXBsb3lUb09ic2lkaWFuUGx1Z2luc0ZvbGRlciB9IGZyb20gJy4vb2JzaWRpYW4tcGx1Z2lucy1mb2xkZXItZGVwbG95bWVudC50cyc7XG5pbXBvcnQge1xuICBjcmVhdGVSb2xsdXBDb21wYXRpYmxlRmVhdHVyZVBsdWdpbixcbiAgY3JlYXRlVW5wbHVnaW5WdWVQbHVnaW5cbn0gZnJvbSAnLi9yb2xsdXAtY29tcGF0aWJsZS1mZWF0dXJlcy50cyc7XG5pbXBvcnQge1xuICBjb21iaW5lRXh0ZXJuYWwsXG4gIHJlbmFtZUNzc0Fzc2V0c1xufSBmcm9tICcuL3JvbGx1cC1jb21wYXRpYmxlLnRzJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYXBwbHlSb2xsdXBJbnB1dERlZmF1bHRzfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBseVJvbGx1cElucHV0RGVmYXVsdHNQYXJhbXMge1xuICAvKipcbiAgICogVGhlIGJ1aWxkIGNvbnRleHQuXG4gICAqL1xuICByZWFkb25seSBidWlsZENvbnRleHQ6IE9ic2lkaWFuUGx1Z2luQnVpbGRDb250ZXh0O1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgZmVhdHVyZXMuXG4gICAqL1xuICByZWFkb25seSBmZWF0dXJlcz86IE9ic2lkaWFuUGx1Z2luRmVhdHVyZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdW1lcidzIGlucHV0IG9wdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBpbnB1dE9wdGlvbnM6IElucHV0T3B0aW9ucztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgYXBwbHlSb2xsdXBPdXRwdXREZWZhdWx0c30uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbHlSb2xsdXBPdXRwdXREZWZhdWx0c1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQ29udGV4dDogT2JzaWRpYW5QbHVnaW5CdWlsZENvbnRleHQ7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zdW1lcidzIG91dHB1dCBvcHRpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0T3B0aW9uczogT3V0cHV0T3B0aW9ucztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgb2JzaWRpYW5QbHVnaW5Sb2xsdXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuUGx1Z2luUm9sbHVwT3B0aW9ucyBleHRlbmRzIE9ic2lkaWFuUGx1Z2luRGVwbG95bWVudE9wdGlvbnMsIE9ic2lkaWFuUGx1Z2luRmVhdHVyZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGJ1aWxkIG1vZGUuIERlZmF1bHRzIHRvIHtAbGluayBCdWlsZE1vZGUuRGV2ZWxvcG1lbnR9IGluIHdhdGNoIG1vZGUgKGByb2xsdXAgLS13YXRjaGApIGFuZFxuICAgKiB7QGxpbmsgQnVpbGRNb2RlLlByb2R1Y3Rpb259IG90aGVyd2lzZS5cbiAgICovXG4gIHJlYWRvbmx5IG1vZGU/OiBCdWlsZE1vZGU7XG59XG5cbi8qKlxuICogVGhlIHN0YXRlIG9uZSB7QGxpbmsgb2JzaWRpYW5QbHVnaW5Sb2xsdXB9IGluc3RhbmNlIGtlZXBzIGFjcm9zcyB0aGUgaG9va3Mgb2YgYSBidWlsZCwgYW5kIGFjcm9zcyB0aGVcbiAqIHJlYnVpbGRzIG9mIGEgd2F0Y2guXG4gKi9cbmludGVyZmFjZSBPYnNpZGlhblBsdWdpblJvbGx1cFN0YXRlIHtcbiAgYnVpbGRDb250ZXh0OiBPYnNpZGlhblBsdWdpbkJ1aWxkQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgaXNEaXN0Rm9sZGVyQ2xlYW5lZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBGaWxscyBpbiB0aGUgcm9sbHVwIGlucHV0IG9wdGlvbnMgdGhlIGNvbnN1bWVyIGxlZnQgdW5zZXQuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB7QGxpbmsgQXBwbHlSb2xsdXBJbnB1dERlZmF1bHRzUGFyYW1zfS5cbiAqIEByZXR1cm5zIFRoZSBpbnB1dCBvcHRpb25zIHdpdGggdGhlIHBsdWdpbidzIGRlZmF1bHRzIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVJvbGx1cElucHV0RGVmYXVsdHMocGFyYW1zOiBBcHBseVJvbGx1cElucHV0RGVmYXVsdHNQYXJhbXMpOiBJbnB1dE9wdGlvbnMge1xuICBjb25zdCB7IGJ1aWxkQ29udGV4dCwgaW5wdXRPcHRpb25zIH0gPSBwYXJhbXM7XG4gIGNvbnN0IGpzeEltcG9ydFNvdXJjZSA9IGdldEpzeEltcG9ydFNvdXJjZShwYXJhbXMuZmVhdHVyZXM/LmZyYW1ld29yayk7XG4gIHJldHVybiB7XG4gICAgLi4uaW5wdXRPcHRpb25zLFxuICAgIGV4dGVybmFsOiBjb21iaW5lRXh0ZXJuYWwoaW5wdXRPcHRpb25zLmV4dGVybmFsKSxcbiAgICBpbnB1dDogaW5wdXRPcHRpb25zLmlucHV0ID8/IGJ1aWxkQ29udGV4dC5lbnRyeVBvaW50LFxuICAgIC4uLihqc3hJbXBvcnRTb3VyY2UgIT09IHVuZGVmaW5lZCAmJiBpbnB1dE9wdGlvbnMuanN4ID09PSB1bmRlZmluZWQgJiYgeyBqc3g6IHsganN4SW1wb3J0U291cmNlLCBtb2RlOiAnYXV0b21hdGljJyB9IH0pXG4gIH07XG59XG5cbi8qKlxuICogRmlsbHMgaW4gdGhlIHJvbGx1cCBvdXRwdXQgb3B0aW9ucyB0aGUgY29uc3VtZXIgbGVmdCB1bnNldC5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHtAbGluayBBcHBseVJvbGx1cE91dHB1dERlZmF1bHRzUGFyYW1zfS5cbiAqIEByZXR1cm5zIFRoZSBvdXRwdXQgb3B0aW9ucyB3aXRoIHRoZSBwbHVnaW4ncyBkZWZhdWx0cyBhcHBsaWVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwbHlSb2xsdXBPdXRwdXREZWZhdWx0cyhwYXJhbXM6IEFwcGx5Um9sbHVwT3V0cHV0RGVmYXVsdHNQYXJhbXMpOiBPdXRwdXRPcHRpb25zIHtcbiAgY29uc3QgeyBidWlsZENvbnRleHQsIG91dHB1dE9wdGlvbnMgfSA9IHBhcmFtcztcbiAgY29uc3QgaGFzT3V0cHV0TG9jYXRpb24gPSBvdXRwdXRPcHRpb25zLmZpbGUgIT09IHVuZGVmaW5lZCB8fCBvdXRwdXRPcHRpb25zLmRpciAhPT0gdW5kZWZpbmVkO1xuICByZXR1cm4ge1xuICAgIC4uLm91dHB1dE9wdGlvbnMsXG4gICAgYmFubmVyOiBvdXRwdXRPcHRpb25zLmJhbm5lciA/PyBnZXRPYnNpZGlhblBsdWdpbkJhbm5lcigncm9sbHVwJyksXG4gICAgZm9ybWF0OiBvdXRwdXRPcHRpb25zLmZvcm1hdCA/PyAnY2pzJyxcbiAgICAuLi4oIWhhc091dHB1dExvY2F0aW9uICYmIHsgZmlsZTogYnVpbGRDb250ZXh0Lm1haW5Kc1BhdGggfSksXG4gICAgLy8gQW4gT2JzaWRpYW4gcGx1Z2luIGlzIG9uZSBmaWxlOiB0aGUgbWFuaWZlc3QgbmFtZXMgYG1haW4uanNgIGFuZCBub3RoaW5nIGxvYWRzIGEgc2Vjb25kIGNodW5rLlxuICAgIGlubGluZUR5bmFtaWNJbXBvcnRzOiBvdXRwdXRPcHRpb25zLmlubGluZUR5bmFtaWNJbXBvcnRzID8/IHRydWUsXG4gICAgc291cmNlbWFwOiBvdXRwdXRPcHRpb25zLnNvdXJjZW1hcCA/PyAoIWJ1aWxkQ29udGV4dC5pc1Byb2R1Y3Rpb25CdWlsZCAmJiAnaW5saW5lJylcbiAgfTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcm9sbHVwIHBsdWdpbiB0aGF0IGJ1aWxkcyBhbiBPYnNpZGlhbiBwbHVnaW4uXG4gKlxuICogV2hhdCBpdCBkb2VzLCBlYWNoIG9ubHkgd2hlbiB0aGUgY29uc3VtZXIncyBjb25maWcgaGFzIG5vdCBzYWlkIG90aGVyd2lzZTpcbiAqXG4gKiAtIGBpbnB1dGAgaXMgYHNyYy9tYWluLnRzYC5cbiAqIC0gVGhlIG91dHB1dCBpcyBvbmUgQ29tbW9uSlMgYG1haW4uanNgIGluIGBkaXN0L2J1aWxkYCAoYGRpc3QvZGV2YCBpbiB3YXRjaCBtb2RlKSwgd2l0aCBkeW5hbWljIGltcG9ydHNcbiAqICAgaW5saW5lZCwgdGhlIGdlbmVyYXRlZC1maWxlIGJhbm5lciwgYW5kIGFuIGlubGluZSBzb3VyY2UgbWFwIGluIGRldmVsb3BtZW50LlxuICpcbiAqIEFuZCBhbHdheXM6IE9ic2lkaWFuJ3Mgb3duIG1vZHVsZXMgKGBvYnNpZGlhbmAsIGBlbGVjdHJvbmAsIENvZGVNaXJyb3IsIExlemVyKSBhbmQgdGhlIE5vZGUgYnVpbHRpbnMgYXJlXG4gKiBleHRlcm5hbCBiZXNpZGUgdGhlIGNvbnN1bWVyJ3Mgb3duIGBleHRlcm5hbGAsIHRoZSBvdXRwdXQgZm9sZGVyIGlzIGVtcHRpZWQgYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSxcbiAqIGV2ZXJ5IGVtaXR0ZWQgQ1NTIGZpbGUgZW5kcyB1cCBpbiBgc3R5bGVzLmNzc2AsIGBtYW5pZmVzdC5qc29uYCAoYW5kIGluIGRldmVsb3BtZW50IGAuaG90cmVsb2FkYCkgaXNcbiAqIGNvcGllZCBiZXNpZGUgaXQsIGFuZCBhIGRldmVsb3BtZW50IGJ1aWxkIGlzIGRlcGxveWVkIGludG8gdGhlIHZhdWx0IG5hbWVkIGJ5IGBPQlNJRElBTl9DT05GSUdfRk9MREVSYC5cbiAqXG4gKiBUeXBlU2NyaXB0LCBkZXBlbmRlbmN5IHJlc29sdXRpb24gYW5kIG1pbmlmaWNhdGlvbiBzdGF5IHRoZSBjb25zdW1lcidzIGNob2ljZSBvZiByb2xsdXAgcGx1Z2lucywgYXMgdGhleSB3b3VsZCBiZVxuICogd2l0aG91dCB0aGlzIG9uZS4gVGhlIGJ1aWxkIGZlYXR1cmVzICh7QGxpbmsgT2JzaWRpYW5QbHVnaW5GZWF0dXJlT3B0aW9uc30pIGFyZSB0aGUgcGx1Z2luJ3M6XG4gKlxuICogLSBgZnJhbWV3b3JrOiAncmVhY3QnIHwgJ3ByZWFjdCdgIHNldHMgcm9sbHVwJ3MgYGpzeGAgb3B0aW9uIHRvIHRoZSBhdXRvbWF0aWMgcnVudGltZSAodW5sZXNzIHNldCksIGFuZCB0aGVcbiAqICAgVHlwZVNjcmlwdCBwbHVnaW4gcmVhZHMgdGhlIHNhbWUgZnJvbSB0aGUgdG9vbGtpdCdzIHRzY29uZmlnIHByZXNldC5cbiAqIC0gYGZyYW1ld29yazogJ3NvbGlkJyB8ICdzdmVsdGUnYCBjb21waWxlcyB0aGUgY29tcG9uZW50cyB3aXRoIHRoZSB0b29sa2l0J3Mgc2hhcmVkIHRyYW5zZm9ybXMsIGFuZCBgJ3Z1ZSdgIGFkZHNcbiAqICAgYHVucGx1Z2luLXZ1ZWAuXG4gKiAtIEFueSBmcmFtZXdvcmsgcmVwbGFjZXMgYHByb2Nlc3MuZW52Lk5PREVfRU5WYCAoYW5kIFZ1ZSdzIGZlYXR1cmUgZmxhZ3MpIGluIHRoZSBidW5kbGVkIGNvZGUuXG4gKiAtIGBzdHlsZXNgIGNvbXBpbGVzIGV2ZXJ5IHN0eWxlc2hlZXQgaXRzZWxmIChQb3N0Q1NTLCBUYWlsd2luZCwgQ1NTIG1vZHVsZXMpLCBzbyByb2xsdXAgbmVlZHMgbm8gQ1NTIHBsdWdpbjsgbGVhdmVcbiAqICAgaXQgb3V0LiBgc3R5bGVzOiB7fWAgY29tcGlsZXMgcGxhaW4gQ1NTLlxuICogLSBgd2FzbWAgaW1wb3J0cyBhIGAud2FzbWAgbW9kdWxlIGFzIGl0cyBieXRlcy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSB7QGxpbmsgT2JzaWRpYW5QbHVnaW5Sb2xsdXBPcHRpb25zfS5cbiAqIEByZXR1cm5zIFRoZSByb2xsdXAgcGx1Z2lucywgd2hpY2ggcm9sbHVwIHRha2VzIGFzIG9uZSBlbnRyeSBvZiBpdHMgYHBsdWdpbnNgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb2JzaWRpYW5QbHVnaW5Sb2xsdXAob3B0aW9uczogT2JzaWRpYW5QbHVnaW5Sb2xsdXBPcHRpb25zID0ge30pOiBJbnB1dFBsdWdpbk9wdGlvbltdIHtcbiAgY29uc3Qgc3RhdGU6IE9ic2lkaWFuUGx1Z2luUm9sbHVwU3RhdGUgPSB7XG4gICAgYnVpbGRDb250ZXh0OiB1bmRlZmluZWQsXG4gICAgaXNEaXN0Rm9sZGVyQ2xlYW5lZDogZmFsc2VcbiAgfTtcblxuICAvKiB2OCBpZ25vcmUgc3RhcnQgLS0gUm9sbHVwIGhvb2tzOyBleGVyY2lzZWQgYnkgdGhlIGJ1bmRsZXIgaW50ZWdyYXRpb24gdGVzdCBhZ2FpbnN0IGEgcmVhbCByb2xsdXAgYnVpbGQuICovXG4gIGZ1bmN0aW9uIGdldEJ1aWxkQ29udGV4dCgpOiBPYnNpZGlhblBsdWdpbkJ1aWxkQ29udGV4dCB7XG4gICAgaWYgKCFzdGF0ZS5idWlsZENvbnRleHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIG9ic2lkaWFuLXBsdWdpbiByb2xsdXAgcGx1Z2luIGhhcyBub3QgcmVzb2x2ZWQgaXRzIGJ1aWxkIGNvbnRleHQ6IGl0cyBgb3B0aW9uc2AgaG9vayBkaWQgbm90IHJ1bi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlLmJ1aWxkQ29udGV4dDtcbiAgfVxuXG4gIGNvbnN0IGZlYXR1cmVQbHVnaW4gPSBjcmVhdGVSb2xsdXBDb21wYXRpYmxlRmVhdHVyZVBsdWdpbih7XG4gICAgZmVhdHVyZXM6IG9wdGlvbnMsXG4gICAgaXNQcm9kdWN0aW9uQnVpbGQ6ICgpID0+IGdldEJ1aWxkQ29udGV4dCgpLmlzUHJvZHVjdGlvbkJ1aWxkLFxuICAgIHNob3VsZENvbXBpbGVTdHlsZXNoZWV0czogdHJ1ZSxcbiAgICBzaG91bGRSZXBsYWNlRGVmaW5lczogdHJ1ZVxuICB9KTtcblxuICBjb25zdCBwbHVnaW46IFBsdWdpbiA9IHtcbiAgICBnZW5lcmF0ZUJ1bmRsZToge1xuICAgICAgaGFuZGxlcihfb3V0cHV0T3B0aW9ucywgYnVuZGxlKTogdm9pZCB7XG4gICAgICAgIHJlbmFtZUNzc0Fzc2V0cyh0aGlzLCBidW5kbGUpO1xuICAgICAgfSxcbiAgICAgIG9yZGVyOiAncG9zdCdcbiAgICB9LFxuICAgIG5hbWU6ICdvYnNpZGlhbi1wbHVnaW4nLFxuICAgIGFzeW5jIG9wdGlvbnMoaW5wdXRPcHRpb25zKTogUHJvbWlzZTxJbnB1dE9wdGlvbnM+IHtcbiAgICAgIGNvbnN0IG1vZGUgPSBvcHRpb25zLm1vZGUgPz8gKHRoaXMubWV0YS53YXRjaE1vZGUgPyBCdWlsZE1vZGUuRGV2ZWxvcG1lbnQgOiBCdWlsZE1vZGUuUHJvZHVjdGlvbik7XG4gICAgICBzdGF0ZS5idWlsZENvbnRleHQgPSBhd2FpdCByZXNvbHZlT2JzaWRpYW5QbHVnaW5CdWlsZENvbnRleHQoeyAuLi5vcHRpb25zLCBtb2RlIH0pO1xuICAgICAgcmV0dXJuIGFwcGx5Um9sbHVwSW5wdXREZWZhdWx0cyh7IGJ1aWxkQ29udGV4dDogc3RhdGUuYnVpbGRDb250ZXh0LCBmZWF0dXJlczogb3B0aW9ucywgaW5wdXRPcHRpb25zIH0pO1xuICAgIH0sXG4gICAgb3V0cHV0T3B0aW9ucyhvdXRwdXRPcHRpb25zKTogT3V0cHV0T3B0aW9ucyB7XG4gICAgICByZXR1cm4gYXBwbHlSb2xsdXBPdXRwdXREZWZhdWx0cyh7IGJ1aWxkQ29udGV4dDogZ2V0QnVpbGRDb250ZXh0KCksIG91dHB1dE9wdGlvbnMgfSk7XG4gICAgfSxcbiAgICBhc3luYyByZW5kZXJTdGFydChvdXRwdXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBpZiAoc3RhdGUuaXNEaXN0Rm9sZGVyQ2xlYW5lZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdGF0ZS5pc0Rpc3RGb2xkZXJDbGVhbmVkID0gdHJ1ZTtcbiAgICAgIGF3YWl0IGNsZWFuT2JzaWRpYW5QbHVnaW5EaXN0Rm9sZGVyKGdldE91dHB1dEZvbGRlcihvdXRwdXRPcHRpb25zKSk7XG4gICAgfSxcbiAgICBhc3luYyB3cml0ZUJ1bmRsZShvdXRwdXRPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBjb25zdCBidWlsZENvbnRleHQgPSB7IC4uLmdldEJ1aWxkQ29udGV4dCgpLCBkaXN0Rm9sZGVyOiBnZXRPdXRwdXRGb2xkZXIob3V0cHV0T3B0aW9ucykgfTtcbiAgICAgIGF3YWl0IGNvbXBsZXRlT2JzaWRpYW5QbHVnaW5EaXN0Rm9sZGVyKGJ1aWxkQ29udGV4dCk7XG4gICAgICBhd2FpdCBkZXBsb3lUb09ic2lkaWFuUGx1Z2luc0ZvbGRlcihidWlsZENvbnRleHQpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIFtwbHVnaW4sIGZlYXR1cmVQbHVnaW4gYXMgUGx1Z2luLCBjcmVhdGVVbnBsdWdpblZ1ZVBsdWdpbih7IGJ1bmRsZXI6ICdyb2xsdXAnLCBmZWF0dXJlczogb3B0aW9ucyB9KSBhcyBQcm9taXNlPG51bGwgfCBQbHVnaW4+XTtcbiAgLyogdjggaWdub3JlIHN0b3AgKi9cbn1cblxuLyogdjggaWdub3JlIHN0YXJ0IC0tIFBhcnQgb2YgdGhlIHJvbGx1cCBob29rcyBhYm92ZS4gKi9cbmZ1bmN0aW9uIGdldE91dHB1dEZvbGRlcihvdXRwdXRPcHRpb25zOiBOb3JtYWxpemVkT3V0cHV0T3B0aW9ucyk6IHN0cmluZyB7XG4gIHJldHVybiBvdXRwdXRPcHRpb25zLmRpciA/PyBkaXJuYW1lKG91dHB1dE9wdGlvbnMuZmlsZSA/PyAnJyk7XG59XG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxTQUFTLGVBQWU7QUFReEI7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLE9BQ0s7QUFDUCxTQUFTLDBCQUEwQjtBQUNuQyxTQUFTLHFDQUFx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
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/// <reference path="../library-references.d.mts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Builds an Obsidian plugin with vite: a vite plugin that turns `vite build` into a library build of
|
|
6
|
+
* `src/main.ts` with the same `main.js` + `styles.css` + `manifest.json` layout the esbuild builder
|
|
7
|
+
* produces, deploys a `vite build --watch` build into the vault, and fills in only the options the
|
|
8
|
+
* consumer's own `vite.config` leaves unset.
|
|
9
|
+
*
|
|
10
|
+
* `vite` is an optional peer dependency and this module only imports its types, so a plugin built with
|
|
11
|
+
* esbuild installs nothing extra.
|
|
12
|
+
*/
|
|
13
|
+
import type { ConfigEnv, PluginOption, UserConfig } from 'vite';
|
|
14
|
+
import type { ObsidianPluginBuildContext, ObsidianPluginDeploymentOptions } from './obsidian-plugin-build.mjs';
|
|
15
|
+
import type { ObsidianPluginFeatureOptions } from './obsidian-plugin-features.mjs';
|
|
16
|
+
import type { PostcssConfig } from './obsidian-plugin-transforms.mjs';
|
|
17
|
+
import { BuildMode } from './obsidian-plugin-build.mjs';
|
|
18
|
+
/**
|
|
19
|
+
* Parameters for {@link getViteFeatureConfig}.
|
|
20
|
+
*/
|
|
21
|
+
export interface GetViteFeatureConfigParams {
|
|
22
|
+
/**
|
|
23
|
+
* The build features.
|
|
24
|
+
*/
|
|
25
|
+
readonly features: ObsidianPluginFeatureOptions;
|
|
26
|
+
/**
|
|
27
|
+
* Whether this is a production build.
|
|
28
|
+
*/
|
|
29
|
+
readonly isProductionBuild: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* The PostCSS plugins of the `styles` option, or `undefined` when it needs none.
|
|
32
|
+
*/
|
|
33
|
+
readonly postcssConfig: PostcssConfig | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* The consumer's vite config.
|
|
36
|
+
*/
|
|
37
|
+
readonly userConfig: UserConfig;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Options for {@link obsidianPluginVite}.
|
|
41
|
+
*/
|
|
42
|
+
export interface ObsidianPluginViteOptions extends ObsidianPluginDeploymentOptions, ObsidianPluginFeatureOptions {
|
|
43
|
+
/**
|
|
44
|
+
* The build mode. Defaults to {@link BuildMode.Development} for `vite build --watch` (or
|
|
45
|
+
* `--mode development`) and {@link BuildMode.Production} otherwise.
|
|
46
|
+
*/
|
|
47
|
+
readonly mode?: BuildMode;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Decides the build mode of a vite build from the consumer's config: development for a watch build or for
|
|
51
|
+
* `--mode development`, production otherwise.
|
|
52
|
+
*
|
|
53
|
+
* @param userConfig - The consumer's vite config.
|
|
54
|
+
* @param env - The vite config environment.
|
|
55
|
+
* @returns The build mode.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getViteBuildMode(userConfig: UserConfig, env: Pick<ConfigEnv, 'mode'>): BuildMode;
|
|
58
|
+
/**
|
|
59
|
+
* Builds the part of the vite config the plugin contributes: only the options the consumer left unset.
|
|
60
|
+
*
|
|
61
|
+
* @param userConfig - The consumer's vite config.
|
|
62
|
+
* @param buildContext - The build context.
|
|
63
|
+
* @returns The config vite merges into the consumer's.
|
|
64
|
+
*/
|
|
65
|
+
export declare function getViteConfigDefaults(userConfig: UserConfig, buildContext: ObsidianPluginBuildContext): UserConfig;
|
|
66
|
+
/**
|
|
67
|
+
* Builds the part of the vite config the build features contribute, each only where the consumer's config left it
|
|
68
|
+
* unset: the framework's compile-time constants (`define`), the automatic JSX runtime for React and Preact
|
|
69
|
+
* (`oxc.jsx`), and the PostCSS plugins of the `styles` option (`css.postcss`).
|
|
70
|
+
*
|
|
71
|
+
* @param params - The {@link GetViteFeatureConfigParams}.
|
|
72
|
+
* @returns The config vite merges into the consumer's.
|
|
73
|
+
*/
|
|
74
|
+
export declare function getViteFeatureConfig(params: GetViteFeatureConfigParams): UserConfig;
|
|
75
|
+
/**
|
|
76
|
+
* Creates a vite plugin that builds an Obsidian plugin.
|
|
77
|
+
*
|
|
78
|
+
* What it does, each only when the consumer's config has not said otherwise:
|
|
79
|
+
*
|
|
80
|
+
* - `build.lib` builds `src/main.ts` as one CommonJS `main.js`, with its CSS in `styles.css`.
|
|
81
|
+
* - `build.outDir` is `dist/build` (`dist/dev` in development).
|
|
82
|
+
* - `build.minify` is on in production only, and `build.sourcemap` is inline in development only.
|
|
83
|
+
* - Every asset is inlined, because an Obsidian release ships `main.js` and `styles.css` and nothing else.
|
|
84
|
+
* - Dynamic imports are inlined into `main.js`, and the generated-file banner heads it.
|
|
85
|
+
*
|
|
86
|
+
* And always: Obsidian's own modules (`obsidian`, `electron`, CodeMirror, Lezer) and the Node builtins are
|
|
87
|
+
* external beside the consumer's own `external`, the output folder is emptied once before the first write
|
|
88
|
+
* (`build.emptyOutDir` is turned off, since this plugin does it), every emitted CSS file ends up in
|
|
89
|
+
* `styles.css`, `manifest.json` (and in development `.hotreload`) is copied beside it, and a development
|
|
90
|
+
* build is deployed into the vault named by `OBSIDIAN_CONFIG_FOLDER`.
|
|
91
|
+
*
|
|
92
|
+
* The build features ({@link ObsidianPluginFeatureOptions}):
|
|
93
|
+
*
|
|
94
|
+
* - `framework: 'react' | 'preact'` sets `oxc.jsx` to the automatic runtime (unless set).
|
|
95
|
+
* - `framework: 'solid' | 'svelte'` compiles the components with the toolkit's shared transforms, and `'vue'` adds
|
|
96
|
+
* `unplugin-vue`.
|
|
97
|
+
* - Any framework defines `process.env.NODE_ENV` (and Vue's feature flags), which a library build leaves alone.
|
|
98
|
+
* - `styles.postcss` and `styles.tailwind` set `css.postcss` (unless set); vite scopes `*.module.css` itself, so
|
|
99
|
+
* `styles.cssModules` changes nothing here.
|
|
100
|
+
* - `wasm` imports a `.wasm` module as its bytes.
|
|
101
|
+
*
|
|
102
|
+
* @param options - The {@link ObsidianPluginViteOptions}.
|
|
103
|
+
* @returns The vite plugins, which vite takes as one entry of its `plugins`.
|
|
104
|
+
*/
|
|
105
|
+
export declare function obsidianPluginVite(options?: ObsidianPluginViteOptions): PluginOption[];
|