obsidian-dev-utils 18.4.2 → 19.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@types/debug/package.json +4 -0
- package/Async/package.json +6 -0
- package/Blob/package.json +6 -0
- package/CHANGELOG.md +4 -0
- package/CssClass/package.json +6 -0
- package/Debug/package.json +6 -0
- package/DebugController/package.json +6 -0
- package/Enum/package.json +6 -0
- package/Error/package.json +6 -0
- package/Function/package.json +6 -0
- package/HTMLElement/package.json +6 -0
- package/Library/package.json +6 -0
- package/Object/package.json +6 -0
- package/Path/package.json +6 -0
- package/RegExp/package.json +6 -0
- package/ScriptUtils/CliUtils/package.json +6 -0
- package/ScriptUtils/CodeGenerator/package.json +6 -0
- package/ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required/package.json +4 -0
- package/ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines/package.json +4 -0
- package/ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc/package.json +4 -0
- package/ScriptUtils/ESLint/ESLint/package.json +6 -0
- package/ScriptUtils/ESLint/eslint.config/package.json +6 -0
- package/ScriptUtils/ESLint/index/package.json +6 -0
- package/ScriptUtils/ESLint/package.json +6 -0
- package/ScriptUtils/Exec/package.json +6 -0
- package/ScriptUtils/Fs/package.json +6 -0
- package/ScriptUtils/JSON/package.json +6 -0
- package/ScriptUtils/NodeModules/package.json +6 -0
- package/ScriptUtils/Npm/package.json +6 -0
- package/ScriptUtils/NpmPublish/package.json +6 -0
- package/ScriptUtils/ObsidianDevUtilsRepoPaths/package.json +6 -0
- package/ScriptUtils/Root/package.json +6 -0
- package/ScriptUtils/build/package.json +6 -0
- package/ScriptUtils/cli/package.json +6 -0
- package/ScriptUtils/esbuild/Dependency/package.json +6 -0
- package/ScriptUtils/esbuild/ObsidianPluginBuilder/package.json +6 -0
- package/ScriptUtils/esbuild/changeExtensionPlugin/package.json +6 -0
- package/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin/package.json +6 -0
- package/ScriptUtils/esbuild/fixEsmPlugin/package.json +6 -0
- package/ScriptUtils/esbuild/fixSourceMapsPlugin/package.json +6 -0
- package/ScriptUtils/esbuild/index/package.json +6 -0
- package/ScriptUtils/esbuild/package.json +6 -0
- package/ScriptUtils/esbuild/preprocessPlugin/package.json +6 -0
- package/ScriptUtils/esbuild/renameCssPlugin/package.json +6 -0
- package/ScriptUtils/esbuild/svelteWrapperPlugin/package.json +6 -0
- package/ScriptUtils/format/package.json +6 -0
- package/ScriptUtils/index/package.json +6 -0
- package/ScriptUtils/package.json +6 -0
- package/ScriptUtils/spellcheck/package.json +6 -0
- package/ScriptUtils/version/package.json +6 -0
- package/String/package.json +6 -0
- package/Transformers/DateTransformer/package.json +6 -0
- package/Transformers/DurationTransformer/package.json +6 -0
- package/Transformers/GroupTransformer/package.json +6 -0
- package/Transformers/SkipPrivatePropertyTransformer/package.json +6 -0
- package/Transformers/Transformer/package.json +6 -0
- package/Transformers/TypedTransformer/package.json +6 -0
- package/Transformers/index/package.json +6 -0
- package/Transformers/package.json +6 -0
- package/ValueProvider/package.json +6 -0
- package/codemirror/StateFieldSpec/package.json +6 -0
- package/codemirror/index/package.json +6 -0
- package/codemirror/package.json +6 -0
- package/dist/bin/cli.cjs +1 -1
- package/dist/lib/@types/debug.d.mts +16 -0
- package/dist/lib/Async.d.mts +153 -0
- package/dist/lib/Blob.d.mts +40 -0
- package/dist/lib/CssClass.d.mts +97 -0
- package/dist/lib/{Debug.d.ts → Debug.d.cts} +1 -1
- package/dist/lib/Debug.d.mts +41 -0
- package/dist/lib/DebugController.d.mts +85 -0
- package/dist/lib/Enum.d.mts +20 -0
- package/dist/lib/Error.d.mts +45 -0
- package/dist/lib/Function.d.mts +28 -0
- package/dist/lib/HTMLElement.d.mts +49 -0
- package/dist/lib/Library.cjs +1 -1
- package/dist/lib/Library.d.mts +16 -0
- package/dist/lib/Library.mjs +1 -1
- package/dist/lib/Object.d.mts +211 -0
- package/dist/lib/Path.d.mts +133 -0
- package/dist/lib/RegExp.d.mts +18 -0
- package/dist/lib/ScriptUtils/CliUtils.cjs +161 -0
- package/dist/lib/{scripts/CliUtils.d.ts → ScriptUtils/CliUtils.d.cts} +1 -1
- package/dist/lib/ScriptUtils/CliUtils.d.mts +70 -0
- package/dist/lib/ScriptUtils/CliUtils.mjs +135 -0
- package/dist/lib/{scripts → ScriptUtils}/CodeGenerator.cjs +1 -1
- package/dist/lib/ScriptUtils/CodeGenerator.d.mts +12 -0
- package/dist/lib/ScriptUtils/CodeGenerator.mjs +19 -0
- package/dist/lib/ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required.d.mts +13 -0
- package/dist/lib/ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines.d.mts +13 -0
- package/dist/lib/ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc.d.mts +13 -0
- package/dist/lib/{scripts → ScriptUtils}/ESLint/ESLint.cjs +1 -1
- package/dist/lib/ScriptUtils/ESLint/ESLint.d.mts +13 -0
- package/dist/lib/ScriptUtils/ESLint/ESLint.mjs +28 -0
- package/dist/lib/ScriptUtils/ESLint/eslint.config.cjs +328 -0
- package/dist/lib/ScriptUtils/ESLint/eslint.config.d.mts +16 -0
- package/dist/lib/ScriptUtils/ESLint/eslint.config.mjs +294 -0
- package/dist/lib/ScriptUtils/ESLint/index.cjs +49 -0
- package/dist/lib/ScriptUtils/ESLint/index.d.cts +2 -0
- package/dist/lib/ScriptUtils/ESLint/index.d.mts +2 -0
- package/dist/lib/ScriptUtils/ESLint/index.mjs +14 -0
- package/dist/lib/ScriptUtils/Exec.cjs +119 -0
- package/dist/lib/ScriptUtils/Exec.d.mts +83 -0
- package/dist/lib/ScriptUtils/Exec.mjs +98 -0
- package/dist/lib/ScriptUtils/Fs.cjs +85 -0
- package/dist/lib/{scripts/Fs.d.ts → ScriptUtils/Fs.d.cts} +1 -1
- package/dist/lib/ScriptUtils/Fs.d.mts +72 -0
- package/dist/lib/ScriptUtils/Fs.mjs +64 -0
- package/dist/lib/ScriptUtils/JSON.cjs +83 -0
- package/dist/lib/{scripts/JSON.d.ts → ScriptUtils/JSON.d.cts} +1 -1
- package/dist/lib/ScriptUtils/JSON.d.mts +64 -0
- package/dist/lib/ScriptUtils/JSON.mjs +60 -0
- package/dist/lib/{scripts → ScriptUtils}/NodeModules.cjs +1 -1
- package/dist/lib/ScriptUtils/NodeModules.d.mts +14 -0
- package/dist/lib/ScriptUtils/NodeModules.mjs +62 -0
- package/dist/lib/ScriptUtils/Npm.cjs +138 -0
- package/dist/lib/{scripts/Npm.d.ts → ScriptUtils/Npm.d.cts} +1 -1
- package/dist/lib/ScriptUtils/Npm.d.mts +151 -0
- package/dist/lib/ScriptUtils/Npm.mjs +106 -0
- package/dist/lib/{scripts → ScriptUtils}/NpmPublish.cjs +1 -1
- package/dist/lib/ScriptUtils/NpmPublish.d.mts +9 -0
- package/dist/lib/ScriptUtils/NpmPublish.mjs +21 -0
- package/dist/lib/ScriptUtils/ObsidianDevUtilsRepoPaths.cjs +77 -0
- package/dist/lib/{scripts/ObsidianDevUtilsRepoPaths.d.ts → ScriptUtils/ObsidianDevUtilsRepoPaths.d.cts} +10 -0
- package/dist/lib/ScriptUtils/ObsidianDevUtilsRepoPaths.d.mts +88 -0
- package/dist/lib/ScriptUtils/ObsidianDevUtilsRepoPaths.mjs +53 -0
- package/dist/lib/ScriptUtils/Root.cjs +88 -0
- package/dist/lib/{scripts/Root.d.ts → ScriptUtils/Root.d.cts} +1 -1
- package/dist/lib/ScriptUtils/Root.d.mts +67 -0
- package/dist/lib/ScriptUtils/Root.mjs +66 -0
- package/dist/lib/ScriptUtils/build.cjs +82 -0
- package/dist/lib/ScriptUtils/build.d.mts +41 -0
- package/dist/lib/ScriptUtils/build.mjs +60 -0
- package/dist/lib/ScriptUtils/cli.cjs +88 -0
- package/dist/lib/ScriptUtils/cli.d.mts +14 -0
- package/dist/lib/ScriptUtils/cli.mjs +65 -0
- package/dist/lib/ScriptUtils/esbuild/Dependency.cjs +122 -0
- package/dist/lib/ScriptUtils/esbuild/Dependency.d.mts +18 -0
- package/dist/lib/ScriptUtils/esbuild/Dependency.mjs +95 -0
- package/dist/lib/ScriptUtils/esbuild/ObsidianPluginBuilder.cjs +178 -0
- package/dist/lib/{scripts/esbuild/ObsidianPluginBuilder.d.ts → ScriptUtils/esbuild/ObsidianPluginBuilder.d.cts} +1 -1
- package/dist/lib/ScriptUtils/esbuild/ObsidianPluginBuilder.d.mts +53 -0
- package/dist/lib/ScriptUtils/esbuild/ObsidianPluginBuilder.mjs +149 -0
- package/dist/lib/ScriptUtils/esbuild/changeExtensionPlugin.cjs +68 -0
- package/dist/lib/ScriptUtils/esbuild/changeExtensionPlugin.d.mts +12 -0
- package/dist/lib/ScriptUtils/esbuild/changeExtensionPlugin.mjs +44 -0
- package/dist/lib/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.cjs +66 -0
- package/dist/lib/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.d.mts +18 -0
- package/dist/lib/ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.mjs +50 -0
- package/dist/lib/{scripts → ScriptUtils}/esbuild/fixEsmPlugin.cjs +1 -1
- package/dist/lib/ScriptUtils/esbuild/fixEsmPlugin.d.mts +11 -0
- package/dist/lib/ScriptUtils/esbuild/fixEsmPlugin.mjs +25 -0
- package/dist/lib/ScriptUtils/esbuild/fixSourceMapsPlugin.cjs +75 -0
- package/dist/lib/ScriptUtils/esbuild/fixSourceMapsPlugin.d.mts +17 -0
- package/dist/lib/ScriptUtils/esbuild/fixSourceMapsPlugin.mjs +55 -0
- package/dist/lib/ScriptUtils/esbuild/index.cjs +70 -0
- package/dist/lib/ScriptUtils/esbuild/index.d.cts +9 -0
- package/dist/lib/ScriptUtils/esbuild/index.d.mts +9 -0
- package/dist/lib/ScriptUtils/esbuild/index.mjs +28 -0
- package/dist/lib/ScriptUtils/esbuild/preprocessPlugin.cjs +146 -0
- package/dist/lib/ScriptUtils/esbuild/preprocessPlugin.d.mts +23 -0
- package/dist/lib/ScriptUtils/esbuild/preprocessPlugin.mjs +128 -0
- package/dist/lib/{scripts → ScriptUtils}/esbuild/renameCssPlugin.cjs +1 -1
- package/dist/lib/ScriptUtils/esbuild/renameCssPlugin.d.mts +8 -0
- package/dist/lib/ScriptUtils/esbuild/renameCssPlugin.mjs +31 -0
- package/dist/lib/{scripts → ScriptUtils}/esbuild/svelteWrapperPlugin.cjs +1 -1
- package/dist/lib/ScriptUtils/esbuild/svelteWrapperPlugin.d.mts +8 -0
- package/dist/lib/ScriptUtils/esbuild/svelteWrapperPlugin.mjs +41 -0
- package/dist/lib/{scripts → ScriptUtils}/format.cjs +1 -1
- package/dist/lib/ScriptUtils/format.d.mts +10 -0
- package/dist/lib/ScriptUtils/format.mjs +41 -0
- package/dist/lib/ScriptUtils/index.cjs +94 -0
- package/dist/lib/ScriptUtils/index.d.cts +17 -0
- package/dist/lib/ScriptUtils/index.d.mts +17 -0
- package/dist/lib/ScriptUtils/index.mjs +44 -0
- package/dist/lib/{scripts → ScriptUtils}/spellcheck.cjs +1 -1
- package/dist/lib/ScriptUtils/spellcheck.d.mts +14 -0
- package/dist/lib/ScriptUtils/spellcheck.mjs +15 -0
- package/dist/lib/ScriptUtils/version.cjs +389 -0
- package/dist/lib/ScriptUtils/version.d.mts +171 -0
- package/dist/lib/ScriptUtils/version.mjs +365 -0
- package/dist/lib/{String.d.ts → String.d.cts} +1 -1
- package/dist/lib/String.d.mts +138 -0
- package/dist/lib/Transformers/{DateTransformer.d.ts → DateTransformer.d.cts} +1 -1
- package/dist/lib/Transformers/DateTransformer.d.mts +35 -0
- package/dist/lib/Transformers/{DurationTransformer.d.ts → DurationTransformer.d.cts} +1 -1
- package/dist/lib/Transformers/DurationTransformer.d.mts +34 -0
- package/dist/lib/Transformers/{GroupTransformer.d.ts → GroupTransformer.d.cts} +1 -1
- package/dist/lib/Transformers/GroupTransformer.d.mts +65 -0
- package/dist/lib/Transformers/{SkipPrivatePropertyTransformer.d.ts → SkipPrivatePropertyTransformer.d.cts} +1 -1
- package/dist/lib/Transformers/SkipPrivatePropertyTransformer.d.mts +32 -0
- package/dist/lib/Transformers/Transformer.d.mts +67 -0
- package/dist/lib/Transformers/{TypedTransformer.d.ts → TypedTransformer.d.cts} +1 -1
- package/dist/lib/Transformers/TypedTransformer.d.mts +37 -0
- package/dist/lib/Transformers/index.cjs +61 -0
- package/dist/lib/Transformers/index.d.cts +6 -0
- package/dist/lib/Transformers/index.d.mts +6 -0
- package/dist/lib/Transformers/index.mjs +22 -0
- package/dist/lib/{ValueProvider.d.ts → ValueProvider.d.cts} +1 -1
- package/dist/lib/ValueProvider.d.mts +22 -0
- package/dist/lib/codemirror/StateFieldSpec.d.mts +68 -0
- package/dist/lib/codemirror/index.cjs +46 -0
- package/dist/lib/codemirror/index.d.cts +1 -0
- package/dist/lib/codemirror/index.d.mts +1 -0
- package/dist/lib/codemirror/index.mjs +12 -0
- package/dist/lib/index.cjs +13 -1
- package/dist/lib/index.d.cts +20 -0
- package/dist/lib/index.d.mts +20 -0
- package/dist/lib/index.mjs +9 -1
- package/dist/lib/obsidian/@types/Dataview/api/{data-array.d.ts → data-array.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/api/data-array.d.mts +136 -0
- package/dist/lib/obsidian/@types/Dataview/api/{extensions.d.ts → extensions.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/api/extensions.d.mts +15 -0
- package/dist/lib/obsidian/@types/Dataview/api/{inline-api.d.ts → inline-api.d.cts} +9 -9
- package/dist/lib/obsidian/@types/Dataview/api/inline-api.d.mts +186 -0
- package/dist/lib/obsidian/@types/Dataview/api/{plugin-api.d.ts → plugin-api.d.cts} +10 -10
- package/dist/lib/obsidian/@types/Dataview/api/plugin-api.d.mts +209 -0
- package/dist/lib/obsidian/@types/Dataview/api/result.d.mts +38 -0
- package/dist/lib/obsidian/@types/Dataview/data-import/common.d.mts +3 -0
- package/dist/lib/obsidian/@types/Dataview/data-import/{csv.d.ts → csv.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/data-import/csv.d.mts +3 -0
- package/dist/lib/obsidian/@types/Dataview/data-import/{inline-field.d.ts → inline-field.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/data-import/inline-field.d.mts +42 -0
- package/dist/lib/obsidian/@types/Dataview/data-import/{markdown-file.d.ts → markdown-file.d.cts} +3 -3
- package/dist/lib/obsidian/@types/Dataview/data-import/markdown-file.d.mts +52 -0
- package/dist/lib/obsidian/@types/Dataview/data-import/{persister.d.ts → persister.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/data-import/persister.d.mts +32 -0
- package/dist/lib/obsidian/@types/Dataview/data-import/web-worker/import-entry.d.mts +1 -0
- package/dist/lib/obsidian/@types/Dataview/data-import/web-worker/{import-impl.d.ts → import-impl.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/data-import/web-worker/import-impl.d.mts +6 -0
- package/dist/lib/obsidian/@types/Dataview/data-import/web-worker/import-manager.d.mts +37 -0
- package/dist/lib/obsidian/@types/Dataview/data-index/{index.d.ts → index.d.cts} +5 -5
- package/dist/lib/obsidian/@types/Dataview/data-index/index.d.mts +186 -0
- package/dist/lib/obsidian/@types/Dataview/data-index/{resolver.d.ts → resolver.d.cts} +4 -4
- package/dist/lib/obsidian/@types/Dataview/data-index/resolver.d.mts +23 -0
- package/dist/lib/obsidian/@types/Dataview/data-index/source.d.mts +71 -0
- package/dist/lib/obsidian/@types/Dataview/data-model/{markdown.d.ts → markdown.d.cts} +4 -4
- package/dist/lib/obsidian/@types/Dataview/data-model/markdown.d.mts +115 -0
- package/dist/lib/obsidian/@types/Dataview/data-model/serialized/{markdown.d.ts → markdown.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/data-model/serialized/markdown.d.mts +106 -0
- package/dist/lib/obsidian/@types/Dataview/data-model/transferable.d.mts +7 -0
- package/dist/lib/obsidian/@types/Dataview/data-model/{value.d.ts → value.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/data-model/value.d.mts +175 -0
- package/dist/lib/obsidian/@types/Dataview/expression/{binaryop.d.ts → binaryop.d.cts} +4 -4
- package/dist/lib/obsidian/@types/Dataview/expression/binaryop.d.mts +43 -0
- package/dist/lib/obsidian/@types/Dataview/expression/{context.d.ts → context.d.cts} +6 -6
- package/dist/lib/obsidian/@types/Dataview/expression/context.d.mts +49 -0
- package/dist/lib/obsidian/@types/Dataview/expression/{field.d.ts → field.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/expression/field.d.mts +82 -0
- package/dist/lib/obsidian/@types/Dataview/expression/{functions.d.ts → functions.d.cts} +3 -3
- package/dist/lib/obsidian/@types/Dataview/expression/functions.d.mts +149 -0
- package/dist/lib/obsidian/@types/Dataview/expression/{parse.d.ts → parse.d.cts} +4 -4
- package/dist/lib/obsidian/@types/Dataview/expression/parse.d.mts +163 -0
- package/dist/lib/obsidian/@types/Dataview/{index.d.ts → index.d.cts} +11 -11
- package/dist/lib/obsidian/@types/Dataview/index.d.mts +55 -0
- package/dist/lib/obsidian/@types/Dataview/{main.d.ts → main.d.cts} +4 -4
- package/dist/lib/obsidian/@types/Dataview/main.d.mts +52 -0
- package/dist/lib/obsidian/@types/Dataview/query/{engine.d.ts → engine.d.cts} +9 -9
- package/dist/lib/obsidian/@types/Dataview/query/engine.d.mts +103 -0
- package/dist/lib/obsidian/@types/Dataview/query/{parse.d.ts → parse.d.cts} +3 -3
- package/dist/lib/obsidian/@types/Dataview/query/parse.d.mts +44 -0
- package/dist/lib/obsidian/@types/Dataview/query/{query.d.ts → query.d.cts} +2 -2
- package/dist/lib/obsidian/@types/Dataview/query/query.d.mts +95 -0
- package/dist/lib/obsidian/@types/Dataview/settings.d.mts +60 -0
- package/dist/lib/obsidian/@types/Dataview/typings/{obsidian-ex.d.ts → obsidian-ex.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/typings/obsidian-ex.d.mts +28 -0
- package/dist/lib/obsidian/@types/Dataview/typings/workers.d.mts +4 -0
- package/dist/lib/obsidian/@types/Dataview/ui/export/{markdown.d.ts → markdown.d.cts} +3 -3
- package/dist/lib/obsidian/@types/Dataview/ui/export/markdown.d.mts +15 -0
- package/dist/lib/obsidian/@types/Dataview/ui/{lp-render.d.ts → lp-render.d.cts} +3 -3
- package/dist/lib/obsidian/@types/Dataview/ui/lp-render.d.mts +37 -0
- package/dist/lib/obsidian/@types/Dataview/ui/{markdown.d.ts → markdown.d.cts} +3 -3
- package/dist/lib/obsidian/@types/Dataview/ui/markdown.d.mts +86 -0
- package/dist/lib/obsidian/@types/Dataview/ui/{refreshable-view.d.ts → refreshable-view.d.cts} +2 -2
- package/dist/lib/obsidian/@types/Dataview/ui/refreshable-view.d.mts +18 -0
- package/dist/lib/obsidian/@types/Dataview/ui/{render.d.ts → render.d.cts} +2 -2
- package/dist/lib/obsidian/@types/Dataview/ui/render.d.mts +33 -0
- package/dist/lib/obsidian/@types/Dataview/ui/views/{calendar-view.d.ts → calendar-view.d.cts} +4 -4
- package/dist/lib/obsidian/@types/Dataview/ui/views/calendar-view.d.mts +17 -0
- package/dist/lib/obsidian/@types/Dataview/ui/views/{inline-field-live-preview.d.ts → inline-field-live-preview.d.cts} +2 -2
- package/dist/lib/obsidian/@types/Dataview/ui/views/inline-field-live-preview.d.mts +42 -0
- package/dist/lib/obsidian/@types/Dataview/ui/views/{inline-view.d.ts → inline-view.d.cts} +4 -4
- package/dist/lib/obsidian/@types/Dataview/ui/views/inline-view.d.mts +28 -0
- package/dist/lib/obsidian/@types/Dataview/ui/views/{js-view.d.ts → js-view.d.cts} +2 -2
- package/dist/lib/obsidian/@types/Dataview/ui/views/js-view.d.mts +23 -0
- package/dist/lib/obsidian/@types/Dataview/ui/views/{list-view.d.ts → list-view.d.cts} +3 -3
- package/dist/lib/obsidian/@types/Dataview/ui/views/list-view.d.mts +25 -0
- package/dist/lib/obsidian/@types/Dataview/ui/views/{table-view.d.ts → table-view.d.cts} +3 -3
- package/dist/lib/obsidian/@types/Dataview/ui/views/table-view.d.mts +28 -0
- package/dist/lib/obsidian/@types/Dataview/ui/views/{task-view.d.ts → task-view.d.cts} +4 -4
- package/dist/lib/obsidian/@types/Dataview/ui/views/task-view.d.mts +51 -0
- package/dist/lib/obsidian/@types/Dataview/util/hash.d.mts +1 -0
- package/dist/lib/obsidian/@types/Dataview/util/locale.d.mts +2 -0
- package/dist/lib/obsidian/@types/Dataview/util/{media.d.ts → media.d.cts} +1 -1
- package/dist/lib/obsidian/@types/Dataview/util/media.d.mts +6 -0
- package/dist/lib/obsidian/@types/Dataview/util/{normalize.d.ts → normalize.d.cts} +2 -2
- package/dist/lib/obsidian/@types/Dataview/util/normalize.d.mts +44 -0
- package/dist/lib/obsidian/App.d.mts +30 -0
- package/dist/lib/obsidian/{AttachmentPath.d.ts → AttachmentPath.d.cts} +1 -1
- package/dist/lib/obsidian/AttachmentPath.d.mts +54 -0
- package/dist/lib/obsidian/{Backlink.d.ts → Backlink.d.cts} +2 -2
- package/dist/lib/obsidian/Backlink.d.mts +60 -0
- package/dist/lib/obsidian/{Callout.d.ts → Callout.d.cts} +2 -2
- package/dist/lib/obsidian/Callout.d.mts +55 -0
- package/dist/lib/obsidian/Components/{DateComponent.d.ts → DateComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/DateComponent.d.mts +36 -0
- package/dist/lib/obsidian/Components/{DateTimeComponent.d.ts → DateTimeComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/DateTimeComponent.d.mts +36 -0
- package/dist/lib/obsidian/Components/{EmailComponent.d.ts → EmailComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/EmailComponent.d.mts +29 -0
- package/dist/lib/obsidian/Components/{FileComponent.d.ts → FileComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/FileComponent.d.mts +41 -0
- package/dist/lib/obsidian/Components/{MonthComponent.d.ts → MonthComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/MonthComponent.d.mts +49 -0
- package/dist/lib/obsidian/Components/{MultipleDropdownComponent.d.ts → MultipleDropdownComponent.d.cts} +4 -4
- package/dist/lib/obsidian/Components/MultipleDropdownComponent.d.mts +73 -0
- package/dist/lib/obsidian/Components/{MultipleEmailComponent.d.ts → MultipleEmailComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/MultipleEmailComponent.d.mts +36 -0
- package/dist/lib/obsidian/Components/{MultipleFileComponent.d.ts → MultipleFileComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/MultipleFileComponent.d.mts +41 -0
- package/dist/lib/obsidian/Components/{MultipleTextComponent.d.ts → MultipleTextComponent.d.cts} +4 -4
- package/dist/lib/obsidian/Components/MultipleTextComponent.d.mts +67 -0
- package/dist/lib/obsidian/Components/{NumberComponent.d.ts → NumberComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/NumberComponent.d.mts +29 -0
- package/dist/lib/obsidian/Components/{TimeComponent.d.ts → TimeComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/TimeComponent.d.mts +37 -0
- package/dist/lib/obsidian/Components/{TypedRangeTextComponent.d.ts → TypedRangeTextComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/TypedRangeTextComponent.d.mts +31 -0
- package/dist/lib/obsidian/Components/{TypedTextComponent.d.ts → TypedTextComponent.d.cts} +5 -5
- package/dist/lib/obsidian/Components/TypedTextComponent.d.mts +84 -0
- package/dist/lib/obsidian/Components/{UrlComponent.d.ts → UrlComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/UrlComponent.d.mts +29 -0
- package/dist/lib/obsidian/Components/{ValidatorComponent.d.ts → ValidatorComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/ValidatorComponent.d.mts +22 -0
- package/dist/lib/obsidian/Components/{ValueComponentWithChangeTracking.d.ts → ValueComponentWithChangeTracking.d.cts} +1 -1
- package/dist/lib/obsidian/Components/ValueComponentWithChangeTracking.d.mts +17 -0
- package/dist/lib/obsidian/Components/{WeekComponent.d.ts → WeekComponent.d.cts} +1 -1
- package/dist/lib/obsidian/Components/WeekComponent.d.mts +49 -0
- package/dist/lib/obsidian/Components/index.cjs +94 -0
- package/dist/lib/obsidian/Components/index.d.cts +17 -0
- package/dist/lib/obsidian/Components/index.d.mts +17 -0
- package/dist/lib/obsidian/Components/index.mjs +44 -0
- package/dist/lib/obsidian/{Dataview.d.ts → Dataview.d.cts} +6 -6
- package/dist/lib/obsidian/Dataview.d.mts +215 -0
- package/dist/lib/obsidian/{DataviewLink.d.ts → DataviewLink.d.cts} +2 -2
- package/dist/lib/obsidian/DataviewLink.d.mts +23 -0
- package/dist/lib/obsidian/{FileChange.d.ts → FileChange.d.cts} +3 -3
- package/dist/lib/obsidian/FileChange.d.mts +68 -0
- package/dist/lib/obsidian/{FileManager.d.ts → FileManager.d.cts} +4 -4
- package/dist/lib/obsidian/FileManager.d.mts +38 -0
- package/dist/lib/obsidian/FileSystem.d.mts +185 -0
- package/dist/lib/obsidian/Frontmatter.d.mts +69 -0
- package/dist/lib/obsidian/{Link.d.ts → Link.d.cts} +3 -3
- package/dist/lib/obsidian/Link.d.mts +366 -0
- package/dist/lib/obsidian/{Logger.d.ts → Logger.d.cts} +1 -1
- package/dist/lib/obsidian/Logger.d.mts +13 -0
- package/dist/lib/obsidian/{Loop.d.ts → Loop.d.cts} +1 -1
- package/dist/lib/obsidian/Loop.d.mts +36 -0
- package/dist/lib/obsidian/Markdown.d.mts +24 -0
- package/dist/lib/obsidian/{MarkdownCodeBlockProcessor.d.ts → MarkdownCodeBlockProcessor.d.cts} +1 -1
- package/dist/lib/obsidian/MarkdownCodeBlockProcessor.d.mts +23 -0
- package/dist/lib/obsidian/MarkdownView.d.mts +12 -0
- package/dist/lib/obsidian/{MetadataCache.d.ts → MetadataCache.d.cts} +3 -3
- package/dist/lib/obsidian/MetadataCache.d.mts +87 -0
- package/dist/lib/obsidian/Modals/Alert.d.mts +39 -0
- package/dist/lib/obsidian/Modals/Confirm.d.mts +43 -0
- package/dist/lib/obsidian/Modals/{ModalBase.d.ts → ModalBase.d.cts} +1 -1
- package/dist/lib/obsidian/Modals/ModalBase.d.mts +35 -0
- package/dist/lib/obsidian/Modals/{Prompt.d.ts → Prompt.d.cts} +1 -1
- package/dist/lib/obsidian/Modals/Prompt.d.mts +50 -0
- package/dist/lib/obsidian/Modals/SelectItem.d.mts +41 -0
- package/dist/lib/obsidian/Modals/index.cjs +58 -0
- package/dist/lib/obsidian/Modals/index.d.cts +5 -0
- package/dist/lib/obsidian/Modals/index.d.mts +5 -0
- package/dist/lib/obsidian/Modals/index.mjs +20 -0
- package/dist/lib/obsidian/ObsidianSettings.d.mts +17 -0
- package/dist/lib/obsidian/Pdf.d.mts +24 -0
- package/dist/lib/obsidian/Plugin/{EmptySettings.d.ts → EmptySettings.d.cts} +1 -1
- package/dist/lib/obsidian/Plugin/EmptySettings.d.mts +14 -0
- package/dist/lib/obsidian/Plugin/ObsidianPluginRepoPaths.d.mts +55 -0
- package/dist/lib/obsidian/Plugin/Plugin.d.mts +21 -0
- package/dist/lib/obsidian/Plugin/{PluginBase.d.ts → PluginBase.d.cts} +3 -3
- package/dist/lib/obsidian/Plugin/PluginBase.d.mts +108 -0
- package/dist/lib/obsidian/Plugin/PluginContext.d.mts +12 -0
- package/dist/lib/obsidian/Plugin/PluginId.d.mts +20 -0
- package/dist/lib/obsidian/Plugin/{PluginSettingsBase.d.ts → PluginSettingsBase.d.cts} +1 -1
- package/dist/lib/obsidian/Plugin/PluginSettingsBase.d.mts +31 -0
- package/dist/lib/obsidian/Plugin/{PluginSettingsTabBase.d.ts → PluginSettingsTabBase.d.cts} +5 -5
- package/dist/lib/obsidian/Plugin/PluginSettingsTabBase.d.mts +99 -0
- package/dist/lib/obsidian/Plugin/index.cjs +67 -0
- package/dist/lib/obsidian/Plugin/index.d.cts +8 -0
- package/dist/lib/obsidian/Plugin/index.d.mts +8 -0
- package/dist/lib/obsidian/Plugin/index.mjs +26 -0
- package/dist/lib/obsidian/{Queue.d.ts → Queue.d.cts} +1 -1
- package/dist/lib/obsidian/Queue.d.mts +30 -0
- package/dist/lib/obsidian/{Reference.d.ts → Reference.d.cts} +1 -1
- package/dist/lib/obsidian/Reference.d.mts +21 -0
- package/dist/lib/obsidian/RenameDeleteHandler.d.mts +49 -0
- package/dist/lib/obsidian/ResourceUrl.d.mts +14 -0
- package/dist/lib/obsidian/{SettingEx.d.ts → SettingEx.d.cts} +13 -13
- package/dist/lib/obsidian/SettingEx.d.mts +124 -0
- package/dist/lib/obsidian/{Vault.d.ts → Vault.d.cts} +3 -3
- package/dist/lib/obsidian/Vault.d.mts +130 -0
- package/dist/lib/obsidian/{VaultEx.d.ts → VaultEx.d.cts} +1 -1
- package/dist/lib/obsidian/VaultEx.d.mts +27 -0
- package/dist/lib/obsidian/index.cjs +130 -0
- package/dist/lib/obsidian/index.d.cts +29 -0
- package/dist/lib/obsidian/index.d.mts +29 -0
- package/dist/lib/obsidian/index.mjs +68 -0
- package/dist/lib/url.d.mts +11 -0
- package/index/package.json +6 -0
- package/obsidian/@types/Dataview/api/data-array/package.json +4 -0
- package/obsidian/@types/Dataview/api/extensions/package.json +4 -0
- package/obsidian/@types/Dataview/api/inline-api/package.json +4 -0
- package/obsidian/@types/Dataview/api/plugin-api/package.json +4 -0
- package/obsidian/@types/Dataview/api/result/package.json +4 -0
- package/obsidian/@types/Dataview/data-import/common/package.json +4 -0
- package/obsidian/@types/Dataview/data-import/csv/package.json +4 -0
- package/obsidian/@types/Dataview/data-import/inline-field/package.json +4 -0
- package/obsidian/@types/Dataview/data-import/markdown-file/package.json +4 -0
- package/obsidian/@types/Dataview/data-import/persister/package.json +4 -0
- package/obsidian/@types/Dataview/data-import/web-worker/import-entry/package.json +4 -0
- package/obsidian/@types/Dataview/data-import/web-worker/import-impl/package.json +4 -0
- package/obsidian/@types/Dataview/data-import/web-worker/import-manager/package.json +4 -0
- package/obsidian/@types/Dataview/data-index/index/package.json +4 -0
- package/obsidian/@types/Dataview/data-index/package.json +4 -0
- package/obsidian/@types/Dataview/data-index/resolver/package.json +4 -0
- package/obsidian/@types/Dataview/data-index/source/package.json +4 -0
- package/obsidian/@types/Dataview/data-model/markdown/package.json +4 -0
- package/obsidian/@types/Dataview/data-model/serialized/markdown/package.json +4 -0
- package/obsidian/@types/Dataview/data-model/transferable/package.json +4 -0
- package/obsidian/@types/Dataview/data-model/value/package.json +4 -0
- package/obsidian/@types/Dataview/expression/binaryop/package.json +4 -0
- package/obsidian/@types/Dataview/expression/context/package.json +4 -0
- package/obsidian/@types/Dataview/expression/field/package.json +4 -0
- package/obsidian/@types/Dataview/expression/functions/package.json +4 -0
- package/obsidian/@types/Dataview/expression/parse/package.json +4 -0
- package/obsidian/@types/Dataview/index/package.json +4 -0
- package/obsidian/@types/Dataview/main/package.json +4 -0
- package/obsidian/@types/Dataview/package.json +4 -0
- package/obsidian/@types/Dataview/query/engine/package.json +4 -0
- package/obsidian/@types/Dataview/query/parse/package.json +4 -0
- package/obsidian/@types/Dataview/query/query/package.json +4 -0
- package/obsidian/@types/Dataview/settings/package.json +4 -0
- package/obsidian/@types/Dataview/typings/obsidian-ex/package.json +4 -0
- package/obsidian/@types/Dataview/typings/workers/package.json +4 -0
- package/obsidian/@types/Dataview/ui/export/markdown/package.json +4 -0
- package/obsidian/@types/Dataview/ui/lp-render/package.json +4 -0
- package/obsidian/@types/Dataview/ui/markdown/package.json +4 -0
- package/obsidian/@types/Dataview/ui/refreshable-view/package.json +4 -0
- package/obsidian/@types/Dataview/ui/render/package.json +4 -0
- package/obsidian/@types/Dataview/ui/views/calendar-view/package.json +4 -0
- package/obsidian/@types/Dataview/ui/views/inline-field-live-preview/package.json +4 -0
- package/obsidian/@types/Dataview/ui/views/inline-view/package.json +4 -0
- package/obsidian/@types/Dataview/ui/views/js-view/package.json +4 -0
- package/obsidian/@types/Dataview/ui/views/list-view/package.json +4 -0
- package/obsidian/@types/Dataview/ui/views/table-view/package.json +4 -0
- package/obsidian/@types/Dataview/ui/views/task-view/package.json +4 -0
- package/obsidian/@types/Dataview/util/hash/package.json +4 -0
- package/obsidian/@types/Dataview/util/locale/package.json +4 -0
- package/obsidian/@types/Dataview/util/media/package.json +4 -0
- package/obsidian/@types/Dataview/util/normalize/package.json +4 -0
- package/obsidian/App/package.json +6 -0
- package/obsidian/AttachmentPath/package.json +6 -0
- package/obsidian/Backlink/package.json +6 -0
- package/obsidian/Callout/package.json +6 -0
- package/obsidian/Components/DateComponent/package.json +6 -0
- package/obsidian/Components/DateTimeComponent/package.json +6 -0
- package/obsidian/Components/EmailComponent/package.json +6 -0
- package/obsidian/Components/FileComponent/package.json +6 -0
- package/obsidian/Components/MonthComponent/package.json +6 -0
- package/obsidian/Components/MultipleDropdownComponent/package.json +6 -0
- package/obsidian/Components/MultipleEmailComponent/package.json +6 -0
- package/obsidian/Components/MultipleFileComponent/package.json +6 -0
- package/obsidian/Components/MultipleTextComponent/package.json +6 -0
- package/obsidian/Components/NumberComponent/package.json +6 -0
- package/obsidian/Components/TimeComponent/package.json +6 -0
- package/obsidian/Components/TypedRangeTextComponent/package.json +6 -0
- package/obsidian/Components/TypedTextComponent/package.json +6 -0
- package/obsidian/Components/UrlComponent/package.json +6 -0
- package/obsidian/Components/ValidatorComponent/package.json +6 -0
- package/obsidian/Components/ValueComponentWithChangeTracking/package.json +6 -0
- package/obsidian/Components/WeekComponent/package.json +6 -0
- package/obsidian/Components/index/package.json +6 -0
- package/obsidian/Components/package.json +6 -0
- package/obsidian/Dataview/package.json +6 -0
- package/obsidian/DataviewLink/package.json +6 -0
- package/obsidian/FileChange/package.json +6 -0
- package/obsidian/FileManager/package.json +6 -0
- package/obsidian/FileSystem/package.json +6 -0
- package/obsidian/Frontmatter/package.json +6 -0
- package/obsidian/Link/package.json +6 -0
- package/obsidian/Logger/package.json +6 -0
- package/obsidian/Loop/package.json +6 -0
- package/obsidian/Markdown/package.json +6 -0
- package/obsidian/MarkdownCodeBlockProcessor/package.json +6 -0
- package/obsidian/MarkdownView/package.json +6 -0
- package/obsidian/MetadataCache/package.json +6 -0
- package/obsidian/Modals/Alert/package.json +6 -0
- package/obsidian/Modals/Confirm/package.json +6 -0
- package/obsidian/Modals/ModalBase/package.json +6 -0
- package/obsidian/Modals/Prompt/package.json +6 -0
- package/obsidian/Modals/SelectItem/package.json +6 -0
- package/obsidian/Modals/index/package.json +6 -0
- package/obsidian/Modals/package.json +6 -0
- package/obsidian/ObsidianSettings/package.json +6 -0
- package/obsidian/Pdf/package.json +6 -0
- package/obsidian/Plugin/EmptySettings/package.json +6 -0
- package/obsidian/Plugin/ObsidianPluginRepoPaths/package.json +6 -0
- package/obsidian/Plugin/Plugin/package.json +6 -0
- package/obsidian/Plugin/PluginBase/package.json +6 -0
- package/obsidian/Plugin/PluginContext/package.json +6 -0
- package/obsidian/Plugin/PluginId/package.json +6 -0
- package/obsidian/Plugin/PluginSettingsBase/package.json +6 -0
- package/obsidian/Plugin/PluginSettingsTabBase/package.json +6 -0
- package/obsidian/Plugin/index/package.json +6 -0
- package/obsidian/Plugin/package.json +6 -0
- package/obsidian/Queue/package.json +6 -0
- package/obsidian/Reference/package.json +6 -0
- package/obsidian/RenameDeleteHandler/package.json +6 -0
- package/obsidian/ResourceUrl/package.json +6 -0
- package/obsidian/SettingEx/package.json +6 -0
- package/obsidian/Vault/package.json +6 -0
- package/obsidian/VaultEx/package.json +6 -0
- package/obsidian/index/package.json +6 -0
- package/obsidian/package.json +6 -0
- package/package.json +186 -315
- package/url/package.json +6 -0
- package/dist/lib/index.d.ts +0 -16
- package/dist/lib/scripts/CliUtils.cjs +0 -161
- package/dist/lib/scripts/CliUtils.mjs +0 -135
- package/dist/lib/scripts/CodeGenerator.mjs +0 -19
- package/dist/lib/scripts/ESLint/ESLint.mjs +0 -28
- package/dist/lib/scripts/ESLint/eslint.config.cjs +0 -328
- package/dist/lib/scripts/ESLint/eslint.config.mjs +0 -294
- package/dist/lib/scripts/Exec.cjs +0 -119
- package/dist/lib/scripts/Exec.mjs +0 -98
- package/dist/lib/scripts/Fs.cjs +0 -85
- package/dist/lib/scripts/Fs.mjs +0 -64
- package/dist/lib/scripts/JSON.cjs +0 -83
- package/dist/lib/scripts/JSON.mjs +0 -60
- package/dist/lib/scripts/NodeModules.mjs +0 -62
- package/dist/lib/scripts/Npm.cjs +0 -138
- package/dist/lib/scripts/Npm.mjs +0 -106
- package/dist/lib/scripts/NpmPublish.mjs +0 -21
- package/dist/lib/scripts/ObsidianDevUtilsRepoPaths.cjs +0 -72
- package/dist/lib/scripts/ObsidianDevUtilsRepoPaths.mjs +0 -48
- package/dist/lib/scripts/Root.cjs +0 -88
- package/dist/lib/scripts/Root.mjs +0 -66
- package/dist/lib/scripts/build.cjs +0 -82
- package/dist/lib/scripts/build.mjs +0 -60
- package/dist/lib/scripts/cli.cjs +0 -88
- package/dist/lib/scripts/cli.mjs +0 -65
- package/dist/lib/scripts/esbuild/Dependency.cjs +0 -122
- package/dist/lib/scripts/esbuild/Dependency.mjs +0 -95
- package/dist/lib/scripts/esbuild/ObsidianPluginBuilder.cjs +0 -178
- package/dist/lib/scripts/esbuild/ObsidianPluginBuilder.mjs +0 -149
- package/dist/lib/scripts/esbuild/changeExtensionPlugin.cjs +0 -67
- package/dist/lib/scripts/esbuild/changeExtensionPlugin.mjs +0 -43
- package/dist/lib/scripts/esbuild/copyToObsidianPluginsFolderPlugin.cjs +0 -66
- package/dist/lib/scripts/esbuild/copyToObsidianPluginsFolderPlugin.mjs +0 -50
- package/dist/lib/scripts/esbuild/fixEsmPlugin.mjs +0 -25
- package/dist/lib/scripts/esbuild/fixSourceMapsPlugin.cjs +0 -75
- package/dist/lib/scripts/esbuild/fixSourceMapsPlugin.mjs +0 -55
- package/dist/lib/scripts/esbuild/preprocessPlugin.cjs +0 -146
- package/dist/lib/scripts/esbuild/preprocessPlugin.mjs +0 -128
- package/dist/lib/scripts/esbuild/renameCssPlugin.mjs +0 -31
- package/dist/lib/scripts/esbuild/svelteWrapperPlugin.mjs +0 -41
- package/dist/lib/scripts/format.mjs +0 -41
- package/dist/lib/scripts/spellcheck.mjs +0 -15
- package/dist/lib/scripts/version.cjs +0 -389
- package/dist/lib/scripts/version.mjs +0 -365
- /package/dist/lib/@types/{debug.d.ts → debug.d.cts} +0 -0
- /package/dist/lib/{Async.d.ts → Async.d.cts} +0 -0
- /package/dist/lib/{Blob.d.ts → Blob.d.cts} +0 -0
- /package/dist/lib/{CssClass.d.ts → CssClass.d.cts} +0 -0
- /package/dist/lib/{DebugController.d.ts → DebugController.d.cts} +0 -0
- /package/dist/lib/{Enum.d.ts → Enum.d.cts} +0 -0
- /package/dist/lib/{Error.d.ts → Error.d.cts} +0 -0
- /package/dist/lib/{Function.d.ts → Function.d.cts} +0 -0
- /package/dist/lib/{HTMLElement.d.ts → HTMLElement.d.cts} +0 -0
- /package/dist/lib/{Library.d.ts → Library.d.cts} +0 -0
- /package/dist/lib/{Object.d.ts → Object.d.cts} +0 -0
- /package/dist/lib/{Path.d.ts → Path.d.cts} +0 -0
- /package/dist/lib/{RegExp.d.ts → RegExp.d.cts} +0 -0
- /package/dist/lib/{scripts/CodeGenerator.d.ts → ScriptUtils/CodeGenerator.d.cts} +0 -0
- /package/dist/lib/{scripts/ESLint/@types/@guardian__eslint-plugin-tsdoc-required.d.ts → ScriptUtils/ESLint/@types/@guardian__eslint-plugin-tsdoc-required.d.cts} +0 -0
- /package/dist/lib/{scripts/ESLint/@types/eslint-plugin-modules-newlines.d.ts → ScriptUtils/ESLint/@types/eslint-plugin-modules-newlines.d.cts} +0 -0
- /package/dist/lib/{scripts/ESLint/@types/eslint-plugin-verify-tsdoc.d.ts → ScriptUtils/ESLint/@types/eslint-plugin-verify-tsdoc.d.cts} +0 -0
- /package/dist/lib/{scripts/ESLint/ESLint.d.ts → ScriptUtils/ESLint/ESLint.d.cts} +0 -0
- /package/dist/lib/{scripts/ESLint/eslint.config.d.ts → ScriptUtils/ESLint/eslint.config.d.cts} +0 -0
- /package/dist/lib/{scripts/Exec.d.ts → ScriptUtils/Exec.d.cts} +0 -0
- /package/dist/lib/{scripts/NodeModules.d.ts → ScriptUtils/NodeModules.d.cts} +0 -0
- /package/dist/lib/{scripts/NpmPublish.d.ts → ScriptUtils/NpmPublish.d.cts} +0 -0
- /package/dist/lib/{scripts/build.d.ts → ScriptUtils/build.d.cts} +0 -0
- /package/dist/lib/{scripts/cli.d.ts → ScriptUtils/cli.d.cts} +0 -0
- /package/dist/lib/{scripts/esbuild/Dependency.d.ts → ScriptUtils/esbuild/Dependency.d.cts} +0 -0
- /package/dist/lib/{scripts/esbuild/changeExtensionPlugin.d.ts → ScriptUtils/esbuild/changeExtensionPlugin.d.cts} +0 -0
- /package/dist/lib/{scripts/esbuild/copyToObsidianPluginsFolderPlugin.d.ts → ScriptUtils/esbuild/copyToObsidianPluginsFolderPlugin.d.cts} +0 -0
- /package/dist/lib/{scripts/esbuild/fixEsmPlugin.d.ts → ScriptUtils/esbuild/fixEsmPlugin.d.cts} +0 -0
- /package/dist/lib/{scripts/esbuild/fixSourceMapsPlugin.d.ts → ScriptUtils/esbuild/fixSourceMapsPlugin.d.cts} +0 -0
- /package/dist/lib/{scripts/esbuild/preprocessPlugin.d.ts → ScriptUtils/esbuild/preprocessPlugin.d.cts} +0 -0
- /package/dist/lib/{scripts/esbuild/renameCssPlugin.d.ts → ScriptUtils/esbuild/renameCssPlugin.d.cts} +0 -0
- /package/dist/lib/{scripts/esbuild/svelteWrapperPlugin.d.ts → ScriptUtils/esbuild/svelteWrapperPlugin.d.cts} +0 -0
- /package/dist/lib/{scripts/format.d.ts → ScriptUtils/format.d.cts} +0 -0
- /package/dist/lib/{scripts/spellcheck.d.ts → ScriptUtils/spellcheck.d.cts} +0 -0
- /package/dist/lib/{scripts/version.d.ts → ScriptUtils/version.d.cts} +0 -0
- /package/dist/lib/Transformers/{Transformer.d.ts → Transformer.d.cts} +0 -0
- /package/dist/lib/codemirror/{StateFieldSpec.d.ts → StateFieldSpec.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/api/{result.d.ts → result.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/data-import/{common.d.ts → common.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/data-import/web-worker/{import-entry.d.ts → import-entry.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/data-import/web-worker/{import-manager.d.ts → import-manager.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/data-index/{source.d.ts → source.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/data-model/{transferable.d.ts → transferable.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/{settings.d.ts → settings.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/typings/{workers.d.ts → workers.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/util/{hash.d.ts → hash.d.cts} +0 -0
- /package/dist/lib/obsidian/@types/Dataview/util/{locale.d.ts → locale.d.cts} +0 -0
- /package/dist/lib/obsidian/{App.d.ts → App.d.cts} +0 -0
- /package/dist/lib/obsidian/{FileSystem.d.ts → FileSystem.d.cts} +0 -0
- /package/dist/lib/obsidian/{Frontmatter.d.ts → Frontmatter.d.cts} +0 -0
- /package/dist/lib/obsidian/{Markdown.d.ts → Markdown.d.cts} +0 -0
- /package/dist/lib/obsidian/{MarkdownView.d.ts → MarkdownView.d.cts} +0 -0
- /package/dist/lib/obsidian/Modals/{Alert.d.ts → Alert.d.cts} +0 -0
- /package/dist/lib/obsidian/Modals/{Confirm.d.ts → Confirm.d.cts} +0 -0
- /package/dist/lib/obsidian/Modals/{SelectItem.d.ts → SelectItem.d.cts} +0 -0
- /package/dist/lib/obsidian/{ObsidianSettings.d.ts → ObsidianSettings.d.cts} +0 -0
- /package/dist/lib/obsidian/{Pdf.d.ts → Pdf.d.cts} +0 -0
- /package/dist/lib/obsidian/Plugin/{ObsidianPluginRepoPaths.d.ts → ObsidianPluginRepoPaths.d.cts} +0 -0
- /package/dist/lib/obsidian/Plugin/{Plugin.d.ts → Plugin.d.cts} +0 -0
- /package/dist/lib/obsidian/Plugin/{PluginContext.d.ts → PluginContext.d.cts} +0 -0
- /package/dist/lib/obsidian/Plugin/{PluginId.d.ts → PluginId.d.cts} +0 -0
- /package/dist/lib/obsidian/{RenameDeleteHandler.d.ts → RenameDeleteHandler.d.cts} +0 -0
- /package/dist/lib/obsidian/{ResourceUrl.d.ts → ResourceUrl.d.cts} +0 -0
- /package/dist/lib/{url.d.ts → url.d.cts} +0 -0
@@ -0,0 +1,389 @@
|
|
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
|
+
(function initCjs(){const globalThisRecord=globalThis;globalThisRecord["__name"]??=name;const originalRequire=require;if(originalRequire&&!originalRequire.__isPatched){require=Object.assign(id=>requirePatched(id),originalRequire,{__isPatched:true})}const newFuncs={__extractDefault:__name(()=>extractDefault,"__extractDefault"),process:__name(()=>{const browserProcess={browser:true,cwd:__name(()=>"/","cwd"),env:{},platform:"android"};return browserProcess},"process")};for(const key of Object.keys(newFuncs)){globalThisRecord[key]??=newFuncs[key]?.()}function name(obj){return obj}__name(name,"name");function extractDefault(module){return module&&module.__esModule&&module.default?module.default:module}__name(extractDefault,"extractDefault");function requirePatched(id){const module=originalRequire?.(id);if(module){return extractDefault(module)}if(id==="process"||id==="node:process"){console.error(`Module not found: ${id}. Fake process object is returned instead.`);return globalThis.process}console.error(`Module not found: ${id}. Empty object is returned instead.`);return{}}__name(requirePatched,"requirePatched")})();
|
7
|
+
|
8
|
+
"use strict";
|
9
|
+
var __defProp = Object.defineProperty;
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
11
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
13
|
+
var __export = (target, all) => {
|
14
|
+
for (var name in all)
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
16
|
+
};
|
17
|
+
var __copyProps = (to, from, except, desc) => {
|
18
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
19
|
+
for (let key of __getOwnPropNames(from))
|
20
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
21
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
22
|
+
}
|
23
|
+
return to;
|
24
|
+
};
|
25
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
26
|
+
var version_exports = {};
|
27
|
+
__export(version_exports, {
|
28
|
+
VersionUpdateType: () => VersionUpdateType,
|
29
|
+
addGitTag: () => addGitTag,
|
30
|
+
addUpdatedFilesToGit: () => addUpdatedFilesToGit,
|
31
|
+
checkGitHubCliInstalled: () => checkGitHubCliInstalled,
|
32
|
+
checkGitInstalled: () => checkGitInstalled,
|
33
|
+
checkGitRepoClean: () => checkGitRepoClean,
|
34
|
+
copyUpdatedManifest: () => copyUpdatedManifest,
|
35
|
+
getNewVersion: () => getNewVersion,
|
36
|
+
getReleaseNotes: () => getReleaseNotes,
|
37
|
+
getVersionUpdateType: () => getVersionUpdateType,
|
38
|
+
gitPush: () => gitPush,
|
39
|
+
publishGitHubRelease: () => publishGitHubRelease,
|
40
|
+
updateChangelog: () => updateChangelog,
|
41
|
+
updateVersion: () => updateVersion,
|
42
|
+
updateVersionInFiles: () => updateVersionInFiles,
|
43
|
+
validate: () => validate
|
44
|
+
});
|
45
|
+
module.exports = __toCommonJS(version_exports);
|
46
|
+
var import_Debug = require('../Debug.cjs');
|
47
|
+
var import_Error = require('../Error.cjs');
|
48
|
+
var import_ObsidianPluginRepoPaths = require('../obsidian/Plugin/ObsidianPluginRepoPaths.cjs');
|
49
|
+
var import_Path = require('../Path.cjs');
|
50
|
+
var import_String = require('../String.cjs');
|
51
|
+
var import_Fs = require('./Fs.cjs');
|
52
|
+
var import_JSON = require('./JSON.cjs');
|
53
|
+
var import_NodeModules = require('./NodeModules.cjs');
|
54
|
+
var import_Npm = require('./Npm.cjs');
|
55
|
+
var import_ObsidianDevUtilsRepoPaths = require('./ObsidianDevUtilsRepoPaths.cjs');
|
56
|
+
var import_Root = require('./Root.cjs');
|
57
|
+
var VersionUpdateType = /* @__PURE__ */ ((VersionUpdateType2) => {
|
58
|
+
VersionUpdateType2["Beta"] = "beta";
|
59
|
+
VersionUpdateType2["Invalid"] = "invalid";
|
60
|
+
VersionUpdateType2["Major"] = "major";
|
61
|
+
VersionUpdateType2["Manual"] = "manual";
|
62
|
+
VersionUpdateType2["Minor"] = "minor";
|
63
|
+
VersionUpdateType2["Patch"] = "patch";
|
64
|
+
return VersionUpdateType2;
|
65
|
+
})(VersionUpdateType || {});
|
66
|
+
async function addGitTag(newVersion) {
|
67
|
+
await (0, import_Root.execFromRoot)(`git tag -a ${newVersion} -m ${newVersion} --force`, { isQuiet: true });
|
68
|
+
}
|
69
|
+
async function addUpdatedFilesToGit(newVersion) {
|
70
|
+
await (0, import_Root.execFromRoot)(["git", "add", "--all"], { isQuiet: true });
|
71
|
+
await (0, import_Root.execFromRoot)(`git commit -m ${newVersion} --allow-empty`, { isQuiet: true });
|
72
|
+
}
|
73
|
+
async function checkGitHubCliInstalled() {
|
74
|
+
try {
|
75
|
+
await (0, import_Root.execFromRoot)("gh --version", { isQuiet: true });
|
76
|
+
} catch {
|
77
|
+
throw new Error("GitHub CLI is not installed. Please install it from https://cli.github.com/");
|
78
|
+
}
|
79
|
+
}
|
80
|
+
async function checkGitInstalled() {
|
81
|
+
try {
|
82
|
+
await (0, import_Root.execFromRoot)("git --version", { isQuiet: true });
|
83
|
+
} catch {
|
84
|
+
throw new Error("Git is not installed. Please install it from https://git-scm.com/");
|
85
|
+
}
|
86
|
+
}
|
87
|
+
async function checkGitRepoClean() {
|
88
|
+
try {
|
89
|
+
const stdout = await (0, import_Root.execFromRoot)("git status --porcelain --untracked-files=all", { isQuiet: true });
|
90
|
+
if (stdout) {
|
91
|
+
throw new Error();
|
92
|
+
}
|
93
|
+
} catch {
|
94
|
+
throw new Error("Git repository is not clean. Please commit or stash your changes before releasing a new version.");
|
95
|
+
}
|
96
|
+
}
|
97
|
+
async function copyUpdatedManifest() {
|
98
|
+
await (0, import_NodeModules.cp)(
|
99
|
+
(0, import_Root.resolvePathFromRootSafe)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ManifestJson),
|
100
|
+
(0, import_Root.resolvePathFromRootSafe)((0, import_Path.join)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.DistBuild, import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ManifestJson)),
|
101
|
+
{ force: true }
|
102
|
+
);
|
103
|
+
}
|
104
|
+
async function getNewVersion(versionUpdateType) {
|
105
|
+
const versionType = getVersionUpdateType(versionUpdateType);
|
106
|
+
if (versionType === "manual" /* Manual */) {
|
107
|
+
return versionUpdateType;
|
108
|
+
}
|
109
|
+
const packageJson = await (0, import_Npm.readPackageJson)();
|
110
|
+
const currentVersion = packageJson.version ?? "";
|
111
|
+
const match = /^(?<Major>\d+)\.(?<Minor>\d+)\.(?<Patch>\d+)(?:-beta\.(?<Beta>\d+))?$/.exec(currentVersion);
|
112
|
+
if (!match) {
|
113
|
+
throw new Error(`Invalid current version format: ${currentVersion}`);
|
114
|
+
}
|
115
|
+
let major = Number(match.groups?.["Major"] ?? "");
|
116
|
+
let minor = Number(match.groups?.["Minor"] ?? "");
|
117
|
+
let patch = Number(match.groups?.["Patch"] ?? "");
|
118
|
+
let beta = Number(match.groups?.["Beta"] ?? "");
|
119
|
+
switch (versionType) {
|
120
|
+
case "beta" /* Beta */:
|
121
|
+
if (beta === 0) {
|
122
|
+
patch++;
|
123
|
+
}
|
124
|
+
beta++;
|
125
|
+
break;
|
126
|
+
case "major" /* Major */:
|
127
|
+
major++;
|
128
|
+
minor = 0;
|
129
|
+
patch = 0;
|
130
|
+
beta = 0;
|
131
|
+
break;
|
132
|
+
case "minor" /* Minor */:
|
133
|
+
minor++;
|
134
|
+
patch = 0;
|
135
|
+
beta = 0;
|
136
|
+
break;
|
137
|
+
case "patch" /* Patch */:
|
138
|
+
if (beta === 0) {
|
139
|
+
patch++;
|
140
|
+
} else {
|
141
|
+
beta = 0;
|
142
|
+
}
|
143
|
+
break;
|
144
|
+
default:
|
145
|
+
throw new Error(`Invalid version update type: ${versionType}`);
|
146
|
+
}
|
147
|
+
return `${major.toString()}.${minor.toString()}.${patch.toString()}${beta > 0 ? `-beta.${beta.toString()}` : ""}`;
|
148
|
+
}
|
149
|
+
async function getReleaseNotes(newVersion) {
|
150
|
+
const changelogPath = (0, import_Root.resolvePathFromRootSafe)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ChangelogMd);
|
151
|
+
const content = await (0, import_NodeModules.readFile)(changelogPath, "utf-8");
|
152
|
+
const newVersionEscaped = (0, import_String.replaceAll)(newVersion, ".", "\\.");
|
153
|
+
const match = new RegExp(`
|
154
|
+
## ${newVersionEscaped}
|
155
|
+
|
156
|
+
((.|
|
157
|
+
)+?)
|
158
|
+
|
159
|
+
##`).exec(content);
|
160
|
+
let releaseNotes = match?.[1] ? `${match[1]}
|
161
|
+
|
162
|
+
` : "";
|
163
|
+
const tags = (await (0, import_Root.execFromRoot)("git tag --sort=-creatordate", { isQuiet: true })).split(/\r?\n/);
|
164
|
+
const previousVersion = tags[1];
|
165
|
+
let changesUrl;
|
166
|
+
const repoUrl = await (0, import_Root.execFromRoot)("gh repo view --json url -q .url", { isQuiet: true });
|
167
|
+
if (previousVersion) {
|
168
|
+
changesUrl = `${repoUrl}/compare/${previousVersion}...${newVersion}`;
|
169
|
+
} else {
|
170
|
+
changesUrl = `${repoUrl}/commits/${newVersion}`;
|
171
|
+
}
|
172
|
+
releaseNotes += `**Full Changelog**: ${changesUrl}`;
|
173
|
+
return releaseNotes;
|
174
|
+
}
|
175
|
+
function getVersionUpdateType(versionUpdateType) {
|
176
|
+
const versionUpdateTypeEnum = versionUpdateType;
|
177
|
+
switch (versionUpdateTypeEnum) {
|
178
|
+
case "beta" /* Beta */:
|
179
|
+
case "major" /* Major */:
|
180
|
+
case "minor" /* Minor */:
|
181
|
+
case "patch" /* Patch */:
|
182
|
+
return versionUpdateTypeEnum;
|
183
|
+
default:
|
184
|
+
if (/^\d+\.\d+\.\d+(?:-[\w\d.-]+)?$/.test(versionUpdateType)) {
|
185
|
+
return "manual" /* Manual */;
|
186
|
+
}
|
187
|
+
return "invalid" /* Invalid */;
|
188
|
+
}
|
189
|
+
}
|
190
|
+
async function gitPush() {
|
191
|
+
await (0, import_Root.execFromRoot)("git push --follow-tags --force", { isQuiet: true });
|
192
|
+
}
|
193
|
+
async function publishGitHubRelease(newVersion, isObsidianPlugin) {
|
194
|
+
let filePaths;
|
195
|
+
if (isObsidianPlugin) {
|
196
|
+
const buildDir = (0, import_Root.resolvePathFromRootSafe)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.DistBuild);
|
197
|
+
const fileNames = await (0, import_Fs.readdirPosix)(buildDir);
|
198
|
+
filePaths = fileNames.map((fileName) => (0, import_Path.join)(buildDir, fileName));
|
199
|
+
} else {
|
200
|
+
const resultJson = await (0, import_Root.execFromRoot)(["npm", "pack", "--pack-destination", import_ObsidianDevUtilsRepoPaths.ObsidianDevUtilsRepoPaths.Dist, "--json"], { isQuiet: true });
|
201
|
+
const result = JSON.parse(resultJson);
|
202
|
+
filePaths = [
|
203
|
+
(0, import_Path.join)(import_ObsidianDevUtilsRepoPaths.ObsidianDevUtilsRepoPaths.Dist, result[0].filename),
|
204
|
+
(0, import_Path.join)(import_ObsidianDevUtilsRepoPaths.ObsidianDevUtilsRepoPaths.Dist, import_ObsidianDevUtilsRepoPaths.ObsidianDevUtilsRepoPaths.StylesCss)
|
205
|
+
];
|
206
|
+
}
|
207
|
+
filePaths = filePaths.filter((filePath) => (0, import_NodeModules.existsSync)((0, import_Root.resolvePathFromRootSafe)(filePath)));
|
208
|
+
await (0, import_Root.execFromRoot)([
|
209
|
+
"gh",
|
210
|
+
"release",
|
211
|
+
"create",
|
212
|
+
newVersion,
|
213
|
+
...filePaths,
|
214
|
+
"--title",
|
215
|
+
`v${newVersion}`,
|
216
|
+
...isBeta(newVersion) ? ["--prerelease"] : [],
|
217
|
+
"--notes-file",
|
218
|
+
"-"
|
219
|
+
], {
|
220
|
+
isQuiet: true,
|
221
|
+
stdin: await getReleaseNotes(newVersion)
|
222
|
+
});
|
223
|
+
}
|
224
|
+
async function updateChangelog(newVersion) {
|
225
|
+
const HEADER_LINES_COUNT = 2;
|
226
|
+
const changelogPath = (0, import_Root.resolvePathFromRootSafe)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ChangelogMd);
|
227
|
+
let previousChangelogLines;
|
228
|
+
if ((0, import_NodeModules.existsSync)(changelogPath)) {
|
229
|
+
const content = await (0, import_NodeModules.readFile)(changelogPath, "utf-8");
|
230
|
+
previousChangelogLines = content.split("\n").slice(HEADER_LINES_COUNT);
|
231
|
+
if (previousChangelogLines.at(-1) === "") {
|
232
|
+
previousChangelogLines.pop();
|
233
|
+
}
|
234
|
+
} else {
|
235
|
+
previousChangelogLines = [];
|
236
|
+
}
|
237
|
+
const lastTag = (0, import_String.replaceAll)(previousChangelogLines[0] ?? "", "## ", "");
|
238
|
+
const commitRange = lastTag ? `${lastTag}..HEAD` : "HEAD";
|
239
|
+
const commitMessagesStr = await (0, import_Root.execFromRoot)(`git log ${commitRange} --format=%B --first-parent -z`, { isQuiet: true });
|
240
|
+
const commitMessages = commitMessagesStr.split("\0").filter(Boolean).map(toSingleLine);
|
241
|
+
let newChangeLog = `# CHANGELOG
|
242
|
+
|
243
|
+
## ${newVersion}
|
244
|
+
|
245
|
+
`;
|
246
|
+
for (const message of commitMessages) {
|
247
|
+
newChangeLog += `- ${message}
|
248
|
+
`;
|
249
|
+
}
|
250
|
+
if (previousChangelogLines.length > 0) {
|
251
|
+
newChangeLog += "\n";
|
252
|
+
for (const line of previousChangelogLines) {
|
253
|
+
newChangeLog += `${line}
|
254
|
+
`;
|
255
|
+
}
|
256
|
+
}
|
257
|
+
await (0, import_NodeModules.writeFile)(changelogPath, newChangeLog, "utf-8");
|
258
|
+
const codeVersion = await (0, import_Root.execFromRoot)("code --version", {
|
259
|
+
isQuiet: true,
|
260
|
+
shouldIgnoreExitCode: true
|
261
|
+
});
|
262
|
+
const _debugger = (0, import_Debug.getLibDebugger)("Version");
|
263
|
+
if (codeVersion) {
|
264
|
+
_debugger(`Please update the ${import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ChangelogMd} file. Close Visual Studio Code when you are done...`);
|
265
|
+
await (0, import_Root.execFromRoot)(["code", "-w", changelogPath], {
|
266
|
+
isQuiet: true,
|
267
|
+
shouldIgnoreExitCode: true
|
268
|
+
});
|
269
|
+
} else {
|
270
|
+
_debugger("Could not find Visual Studio Code in your PATH. Using console mode instead.");
|
271
|
+
await (0, import_NodeModules.createInterface)(process.stdin, process.stdout).question(
|
272
|
+
`Please update the ${import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ChangelogMd} file. Press Enter when you are done...`
|
273
|
+
);
|
274
|
+
}
|
275
|
+
}
|
276
|
+
async function updateVersion(versionUpdateType, prepareGitHubRelease) {
|
277
|
+
if (!versionUpdateType) {
|
278
|
+
const npmOldVersion = process.env["npm_old_version"];
|
279
|
+
const npmNewVersion = process.env["npm_new_version"];
|
280
|
+
if (npmOldVersion && npmNewVersion) {
|
281
|
+
await updateVersionInFiles(npmOldVersion);
|
282
|
+
await updateVersion(npmNewVersion, prepareGitHubRelease);
|
283
|
+
return;
|
284
|
+
}
|
285
|
+
throw new Error("No version update type provided");
|
286
|
+
}
|
287
|
+
const isObsidianPlugin = (0, import_NodeModules.existsSync)((0, import_Root.resolvePathFromRootSafe)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ManifestJson));
|
288
|
+
validate(versionUpdateType);
|
289
|
+
await checkGitInstalled();
|
290
|
+
await checkGitRepoClean();
|
291
|
+
await checkGitHubCliInstalled();
|
292
|
+
await runCommand("format:check");
|
293
|
+
await runCommand("spellcheck");
|
294
|
+
await runCommand("build");
|
295
|
+
await runCommand("lint");
|
296
|
+
const newVersion = await getNewVersion(versionUpdateType);
|
297
|
+
await updateVersionInFiles(newVersion);
|
298
|
+
if (isObsidianPlugin) {
|
299
|
+
await updateVersionInFilesForPlugin(newVersion);
|
300
|
+
}
|
301
|
+
await updateChangelog(newVersion);
|
302
|
+
await addUpdatedFilesToGit(newVersion);
|
303
|
+
await addGitTag(newVersion);
|
304
|
+
await gitPush();
|
305
|
+
await prepareGitHubRelease?.(newVersion);
|
306
|
+
await publishGitHubRelease(newVersion, isObsidianPlugin);
|
307
|
+
}
|
308
|
+
async function updateVersionInFiles(newVersion) {
|
309
|
+
await (0, import_Npm.editPackageJson)((packageJson) => {
|
310
|
+
packageJson.version = newVersion;
|
311
|
+
});
|
312
|
+
await (0, import_Npm.editPackageLockJson)(update, { shouldSkipIfMissing: true });
|
313
|
+
await (0, import_Npm.editNpmShrinkWrapJson)(update, { shouldSkipIfMissing: true });
|
314
|
+
function update(packageLockJson) {
|
315
|
+
packageLockJson.version = newVersion;
|
316
|
+
const defaultPackage = packageLockJson.packages?.[""];
|
317
|
+
if (defaultPackage) {
|
318
|
+
defaultPackage.version = newVersion;
|
319
|
+
}
|
320
|
+
}
|
321
|
+
}
|
322
|
+
function validate(versionUpdateType) {
|
323
|
+
if (getVersionUpdateType(versionUpdateType) === "invalid" /* Invalid */) {
|
324
|
+
throw new Error("Invalid version update type. Please use 'major', 'minor', 'patch', or 'x.y.z[-suffix]' format.");
|
325
|
+
}
|
326
|
+
}
|
327
|
+
async function getLatestObsidianVersion() {
|
328
|
+
const response = await fetch("https://api.github.com/repos/obsidianmd/obsidian-releases/releases/latest");
|
329
|
+
const obsidianReleasesJson = await response.json();
|
330
|
+
return obsidianReleasesJson.name ?? (0, import_Error.throwExpression)(new Error("Could not find the name of the latest Obsidian release"));
|
331
|
+
}
|
332
|
+
function isBeta(version) {
|
333
|
+
return version.includes("beta" /* Beta */);
|
334
|
+
}
|
335
|
+
async function runCommand(command) {
|
336
|
+
const packageJson = await (0, import_Npm.readPackageJson)();
|
337
|
+
const isKnownCommand = Object.keys(packageJson.scripts ?? {}).includes(command);
|
338
|
+
await (0, import_Root.execFromRoot)(["npm", "run", ...isKnownCommand ? [] : ["obsidian-dev-utils"], command]);
|
339
|
+
}
|
340
|
+
function toSingleLine(str) {
|
341
|
+
const lines = str.split(/\r?\n/).filter(Boolean);
|
342
|
+
return lines.join(" ");
|
343
|
+
}
|
344
|
+
async function updateVersionInFilesForPlugin(newVersion) {
|
345
|
+
const manifestBetaJsonPath = (0, import_Root.resolvePathFromRootSafe)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ManifestBetaJson);
|
346
|
+
if (isBeta(newVersion)) {
|
347
|
+
await (0, import_NodeModules.cp)(
|
348
|
+
(0, import_Root.resolvePathFromRootSafe)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ManifestJson),
|
349
|
+
manifestBetaJsonPath,
|
350
|
+
{ force: true }
|
351
|
+
);
|
352
|
+
await (0, import_JSON.editJson)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ManifestBetaJson, (manifest) => {
|
353
|
+
manifest.version = newVersion;
|
354
|
+
});
|
355
|
+
} else {
|
356
|
+
const latestObsidianVersion = await getLatestObsidianVersion();
|
357
|
+
await (0, import_JSON.editJson)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.ManifestJson, (manifest) => {
|
358
|
+
manifest.minAppVersion = latestObsidianVersion;
|
359
|
+
manifest.version = newVersion;
|
360
|
+
});
|
361
|
+
await (0, import_JSON.editJson)(import_ObsidianPluginRepoPaths.ObsidianPluginRepoPaths.VersionsJson, (versions) => {
|
362
|
+
versions[newVersion] = latestObsidianVersion;
|
363
|
+
});
|
364
|
+
if ((0, import_NodeModules.existsSync)(manifestBetaJsonPath)) {
|
365
|
+
await (0, import_NodeModules.rm)(manifestBetaJsonPath);
|
366
|
+
}
|
367
|
+
}
|
368
|
+
await copyUpdatedManifest();
|
369
|
+
}
|
370
|
+
// Annotate the CommonJS export names for ESM import in node:
|
371
|
+
0 && (module.exports = {
|
372
|
+
VersionUpdateType,
|
373
|
+
addGitTag,
|
374
|
+
addUpdatedFilesToGit,
|
375
|
+
checkGitHubCliInstalled,
|
376
|
+
checkGitInstalled,
|
377
|
+
checkGitRepoClean,
|
378
|
+
copyUpdatedManifest,
|
379
|
+
getNewVersion,
|
380
|
+
getReleaseNotes,
|
381
|
+
getVersionUpdateType,
|
382
|
+
gitPush,
|
383
|
+
publishGitHubRelease,
|
384
|
+
updateChangelog,
|
385
|
+
updateVersion,
|
386
|
+
updateVersionInFiles,
|
387
|
+
validate
|
388
|
+
});
|
389
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL1NjcmlwdFV0aWxzL3ZlcnNpb24udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uIHZlcnNpb25cbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgbWFuYWdpbmcgdmVyc2lvbiB1cGRhdGVzIGluIGEgcHJvamVjdC5cbiAqIEl0IGluY2x1ZGVzIHRhc2tzIHN1Y2ggYXMgdmFsaWRhdGluZyB2ZXJzaW9uIHVwZGF0ZSB0eXBlcywgY2hlY2tpbmcgdGhlIHN0YXRlXG4gKiBvZiBHaXQgYW5kIEdpdEh1YiBDTEksIHVwZGF0aW5nIHZlcnNpb24gbnVtYmVycyBpbiBmaWxlcywgYW5kIHBlcmZvcm1pbmdcbiAqIEdpdCBvcGVyYXRpb25zIHN1Y2ggYXMgdGFnZ2luZyBhbmQgcHVzaGluZy5cbiAqXG4gKiBUaGUgbWFpbiBmdW5jdGlvbiwgYHVwZGF0ZVZlcnNpb25gLCBjb29yZGluYXRlcyB0aGVzZSB0YXNrcyB0byBlbnN1cmUgdGhhdFxuICogdmVyc2lvbiB1cGRhdGVzIGFyZSBoYW5kbGVkIGNvbnNpc3RlbnRseSBhbmQgY29ycmVjdGx5LiBJdCBhbHNvIGludGVncmF0ZXNcbiAqIHdpdGggT2JzaWRpYW4gcGx1Z2lucywgaWYgYXBwbGljYWJsZSwgYnkgdXBkYXRpbmcgcmVsZXZhbnQgZmlsZXMgYW5kIHJlbGVhc2luZ1xuICogbmV3IHZlcnNpb25zIG9uIEdpdEh1Yi5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VMb2NrSnNvbiB9IGZyb20gJy4vTnBtLnRzJztcblxuaW1wb3J0IHsgZ2V0TGliRGVidWdnZXIgfSBmcm9tICcuLi9EZWJ1Zy50cyc7XG5pbXBvcnQgeyB0aHJvd0V4cHJlc3Npb24gfSBmcm9tICcuLi9FcnJvci50cyc7XG5pbXBvcnQgeyBPYnNpZGlhblBsdWdpblJlcG9QYXRocyB9IGZyb20gJy4uL29ic2lkaWFuL1BsdWdpbi9PYnNpZGlhblBsdWdpblJlcG9QYXRocy50cyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnLi4vUGF0aC50cyc7XG5pbXBvcnQgeyByZXBsYWNlQWxsIH0gZnJvbSAnLi4vU3RyaW5nLnRzJztcbmltcG9ydCB7IHJlYWRkaXJQb3NpeCB9IGZyb20gJy4vRnMudHMnO1xuaW1wb3J0IHsgZWRpdEpzb24gfSBmcm9tICcuL0pTT04udHMnO1xuaW1wb3J0IHtcbiAgY3AsXG4gIGNyZWF0ZUludGVyZmFjZSxcbiAgZXhpc3RzU3luYyxcbiAgcmVhZEZpbGUsXG4gIHJtLFxuICB3cml0ZUZpbGVcbn0gZnJvbSAnLi9Ob2RlTW9kdWxlcy50cyc7XG5pbXBvcnQge1xuICBlZGl0TnBtU2hyaW5rV3JhcEpzb24sXG4gIGVkaXRQYWNrYWdlSnNvbixcbiAgZWRpdFBhY2thZ2VMb2NrSnNvbixcbiAgcmVhZFBhY2thZ2VKc29uXG59IGZyb20gJy4vTnBtLnRzJztcbmltcG9ydCB7IE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMgfSBmcm9tICcuL09ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMudHMnO1xuaW1wb3J0IHtcbiAgZXhlY0Zyb21Sb290LFxuICByZXNvbHZlUGF0aEZyb21Sb290U2FmZVxufSBmcm9tICcuL1Jvb3QudHMnO1xuXG4vKipcbiAqIEVudW0gcmVwcmVzZW50aW5nIGRpZmZlcmVudCB0eXBlcyBvZiB2ZXJzaW9uIHVwZGF0ZXMuXG4gKi9cbmV4cG9ydCBlbnVtIFZlcnNpb25VcGRhdGVUeXBlIHtcbiAgQmV0YSA9ICdiZXRhJyxcbiAgSW52YWxpZCA9ICdpbnZhbGlkJyxcbiAgTWFqb3IgPSAnbWFqb3InLFxuICBNYW51YWwgPSAnbWFudWFsJyxcbiAgTWlub3IgPSAnbWlub3InLFxuICBQYXRjaCA9ICdwYXRjaCdcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgbWFuaWZlc3QgZmlsZSBmb3JtYXQgZm9yIE9ic2lkaWFuIHBsdWdpbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWFuaWZlc3Qge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gT2JzaWRpYW4gdmVyc2lvbiByZXF1aXJlZCBmb3IgdGhlIHBsdWdpbi5cbiAgICovXG4gIG1pbkFwcFZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAgICovXG4gIHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIHJlcHJlc2VudGluZyB0aGUgc3RydWN0dXJlIG9mIE9ic2lkaWFuIHJlbGVhc2VzIEpTT04uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT2JzaWRpYW5SZWxlYXNlc0pzb24ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIE9ic2lkaWFuIHJlbGVhc2UuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIEdpdCB0YWcgZm9yIHRoZSBuZXcgdmVyc2lvbi5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgdG8gdXNlIGZvciB0aGUgdGFnLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgdGFnIGhhcyBiZWVuIGNyZWF0ZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRHaXRUYWcobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChgZ2l0IHRhZyAtYSAke25ld1ZlcnNpb259IC1tICR7bmV3VmVyc2lvbn0gLS1mb3JjZWAsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbn1cblxuLyoqXG4gKiBBZGRzIHVwZGF0ZWQgZmlsZXMgdG8gdGhlIEdpdCBzdGFnaW5nIGFyZWEgYW5kIGNvbW1pdHMgdGhlbSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBtZXNzYWdlLlxuICpcbiAqIEBwYXJhbSBuZXdWZXJzaW9uIC0gVGhlIG5ldyB2ZXJzaW9uIG51bWJlciB1c2VkIGFzIHRoZSBjb21taXQgbWVzc2FnZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIGZpbGVzIGhhdmUgYmVlbiBhZGRlZCBhbmQgY29tbWl0dGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkVXBkYXRlZEZpbGVzVG9HaXQobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbJ2dpdCcsICdhZGQnLCAnLS1hbGwnXSwgeyBpc1F1aWV0OiB0cnVlIH0pO1xuICBhd2FpdCBleGVjRnJvbVJvb3QoYGdpdCBjb21taXQgLW0gJHtuZXdWZXJzaW9ufSAtLWFsbG93LWVtcHR5YCwgeyBpc1F1aWV0OiB0cnVlIH0pO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgR2l0SHViIENMSSBpcyBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbS5cbiAqXG4gKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIEdpdEh1YiBDTEkgaXMgbm90IGluc3RhbGxlZC5cbiAqXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBHaXRIdWIgQ0xJIGlzIG5vdCBpbnN0YWxsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0dpdEh1YkNsaUluc3RhbGxlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjRnJvbVJvb3QoJ2doIC0tdmVyc2lvbicsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHaXRIdWIgQ0xJIGlzIG5vdCBpbnN0YWxsZWQuIFBsZWFzZSBpbnN0YWxsIGl0IGZyb20gaHR0cHM6Ly9jbGkuZ2l0aHViLmNvbS8nKTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiBHaXQgaXMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0uXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIEdpdCBpcyBub3QgaW5zdGFsbGVkLlxuICpcbiAqIEB0aHJvd3MgRXJyb3IgaWYgR2l0IGlzIG5vdCBpbnN0YWxsZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjaGVja0dpdEluc3RhbGxlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjRnJvbVJvb3QoJ2dpdCAtLXZlcnNpb24nLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcignR2l0IGlzIG5vdCBpbnN0YWxsZWQuIFBsZWFzZSBpbnN0YWxsIGl0IGZyb20gaHR0cHM6Ly9naXQtc2NtLmNvbS8nKTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgY2xlYW4sIG1lYW5pbmcgdGhlcmUgYXJlIG5vIHVuY29tbWl0dGVkIGNoYW5nZXMuXG4gKlxuICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBHaXQgcmVwb3NpdG9yeSBpcyBub3QgY2xlYW4uXG4gKlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgR2l0IHJlcG9zaXRvcnkgaXMgbm90IGNsZWFuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2hlY2tHaXRSZXBvQ2xlYW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3Rkb3V0ID0gYXdhaXQgZXhlY0Zyb21Sb290KCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC0tdW50cmFja2VkLWZpbGVzPWFsbCcsIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgICBpZiAoc3Rkb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoKTtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IG5ldyBFcnJvcignR2l0IHJlcG9zaXRvcnkgaXMgbm90IGNsZWFuLiBQbGVhc2UgY29tbWl0IG9yIHN0YXNoIHlvdXIgY2hhbmdlcyBiZWZvcmUgcmVsZWFzaW5nIGEgbmV3IHZlcnNpb24uJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb3BpZXMgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgZmlsZSB0byB0aGUgZGlzdHJpYnV0aW9uIGJ1aWxkIGRpcmVjdG9yeS5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjb3B5IG9wZXJhdGlvbiBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlVcGRhdGVkTWFuaWZlc3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGNwKFxuICAgIHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiksXG4gICAgcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoam9pbihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5EaXN0QnVpbGQsIE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbikpLFxuICAgIHsgZm9yY2U6IHRydWUgfVxuICApO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIG5ldyB2ZXJzaW9uIHN0cmluZyBiYXNlZCBvbiB0aGUgY3VycmVudCB2ZXJzaW9uIGFuZCB0aGUgc3BlY2lmaWVkIHVwZGF0ZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB2ZXJzaW9uVXBkYXRlVHlwZSAtIFRoZSB0eXBlIG9mIHZlcnNpb24gdXBkYXRlIChtYWpvciwgbWlub3IsIHBhdGNoLCBiZXRhLCBvciBtYW51YWwpLlxuICogQHJldHVybnMgQSBgUHJvbWlzZWAgdGhhdCByZXNvbHZlcyB0byB0aGUgbmV3IHZlcnNpb24gc3RyaW5nLlxuICogQHRocm93cyBFcnJvciBpZiB0aGUgY3VycmVudCB2ZXJzaW9uIGZvcm1hdCBpcyBpbnZhbGlkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0TmV3VmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgdmVyc2lvblR5cGUgPSBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZSk7XG4gIGlmICh2ZXJzaW9uVHlwZSA9PT0gVmVyc2lvblVwZGF0ZVR5cGUuTWFudWFsKSB7XG4gICAgcmV0dXJuIHZlcnNpb25VcGRhdGVUeXBlO1xuICB9XG5cbiAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24oKTtcbiAgY29uc3QgY3VycmVudFZlcnNpb24gPSBwYWNrYWdlSnNvbi52ZXJzaW9uID8/ICcnO1xuXG4gIGNvbnN0IG1hdGNoID0gL14oPzxNYWpvcj5cXGQrKVxcLig/PE1pbm9yPlxcZCspXFwuKD88UGF0Y2g+XFxkKykoPzotYmV0YVxcLig/PEJldGE+XFxkKykpPyQvLmV4ZWMoY3VycmVudFZlcnNpb24pO1xuICBpZiAoIW1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGN1cnJlbnQgdmVyc2lvbiBmb3JtYXQ6ICR7Y3VycmVudFZlcnNpb259YCk7XG4gIH1cblxuICBsZXQgbWFqb3IgPSBOdW1iZXIobWF0Y2guZ3JvdXBzPy5bJ01ham9yJ10gPz8gJycpO1xuICBsZXQgbWlub3IgPSBOdW1iZXIobWF0Y2guZ3JvdXBzPy5bJ01pbm9yJ10gPz8gJycpO1xuICBsZXQgcGF0Y2ggPSBOdW1iZXIobWF0Y2guZ3JvdXBzPy5bJ1BhdGNoJ10gPz8gJycpO1xuICBsZXQgYmV0YSA9IE51bWJlcihtYXRjaC5ncm91cHM/LlsnQmV0YSddID8/ICcnKTtcblxuICBzd2l0Y2ggKHZlcnNpb25UeXBlKSB7XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5CZXRhOlxuICAgICAgaWYgKGJldGEgPT09IDApIHtcbiAgICAgICAgcGF0Y2grKztcbiAgICAgIH1cbiAgICAgIGJldGErKztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuTWFqb3I6XG4gICAgICBtYWpvcisrO1xuICAgICAgbWlub3IgPSAwO1xuICAgICAgcGF0Y2ggPSAwO1xuICAgICAgYmV0YSA9IDA7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1pbm9yOlxuICAgICAgbWlub3IrKztcbiAgICAgIHBhdGNoID0gMDtcbiAgICAgIGJldGEgPSAwO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5QYXRjaDpcbiAgICAgIGlmIChiZXRhID09PSAwKSB7XG4gICAgICAgIHBhdGNoKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiZXRhID0gMDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmVyc2lvbiB1cGRhdGUgdHlwZTogJHt2ZXJzaW9uVHlwZX1gKTtcbiAgfVxuXG4gIHJldHVybiBgJHttYWpvci50b1N0cmluZygpfS4ke21pbm9yLnRvU3RyaW5nKCl9LiR7cGF0Y2gudG9TdHJpbmcoKX0ke2JldGEgPiAwID8gYC1iZXRhLiR7YmV0YS50b1N0cmluZygpfWAgOiAnJ31gO1xufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgcmVsZWFzZSBub3RlcyBmb3IgYSBzcGVjaWZpYyB2ZXJzaW9uIGZyb20gdGhlIGNoYW5nZWxvZy5cbiAqXG4gKiBAcGFyYW0gbmV3VmVyc2lvbiAtIFRoZSBuZXcgdmVyc2lvbiBudW1iZXIgZm9yIHdoaWNoIHRvIGdldCB0aGUgcmVsZWFzZSBub3Rlcy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSByZWxlYXNlIG5vdGVzIGZvciB0aGUgc3BlY2lmaWVkIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRSZWxlYXNlTm90ZXMobmV3VmVyc2lvbjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgY2hhbmdlbG9nUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kKTtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGNoYW5nZWxvZ1BhdGgsICd1dGYtOCcpO1xuICBjb25zdCBuZXdWZXJzaW9uRXNjYXBlZCA9IHJlcGxhY2VBbGwobmV3VmVyc2lvbiwgJy4nLCAnXFxcXC4nKTtcbiAgY29uc3QgbWF0Y2ggPSBuZXcgUmVnRXhwKGBcXG4jIyAke25ld1ZlcnNpb25Fc2NhcGVkfVxcblxcbigoLnxcXG4pKz8pXFxuXFxuIyNgKS5leGVjKGNvbnRlbnQpO1xuICBsZXQgcmVsZWFzZU5vdGVzID0gbWF0Y2g/LlsxXSA/IGAke21hdGNoWzFdfVxcblxcbmAgOiAnJztcblxuICBjb25zdCB0YWdzID0gKGF3YWl0IGV4ZWNGcm9tUm9vdCgnZ2l0IHRhZyAtLXNvcnQ9LWNyZWF0b3JkYXRlJywgeyBpc1F1aWV0OiB0cnVlIH0pKS5zcGxpdCgvXFxyP1xcbi8pO1xuICBjb25zdCBwcmV2aW91c1ZlcnNpb24gPSB0YWdzWzFdO1xuICBsZXQgY2hhbmdlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0IHJlcG9VcmwgPSBhd2FpdCBleGVjRnJvbVJvb3QoJ2doIHJlcG8gdmlldyAtLWpzb24gdXJsIC1xIC51cmwnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG5cbiAgaWYgKHByZXZpb3VzVmVyc2lvbikge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21wYXJlLyR7cHJldmlvdXNWZXJzaW9ufS4uLiR7bmV3VmVyc2lvbn1gO1xuICB9IGVsc2Uge1xuICAgIGNoYW5nZXNVcmwgPSBgJHtyZXBvVXJsfS9jb21taXRzLyR7bmV3VmVyc2lvbn1gO1xuICB9XG5cbiAgcmVsZWFzZU5vdGVzICs9IGAqKkZ1bGwgQ2hhbmdlbG9nKio6ICR7Y2hhbmdlc1VybH1gO1xuICByZXR1cm4gcmVsZWFzZU5vdGVzO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgdGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gdmVyc2lvblVwZGF0ZVR5cGUgLSBUaGUgaW5wdXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZS5cbiAqIEByZXR1cm5zIFRoZSBjb3JyZXNwb25kaW5nIGBWZXJzaW9uVXBkYXRlVHlwZWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogVmVyc2lvblVwZGF0ZVR5cGUge1xuICBjb25zdCB2ZXJzaW9uVXBkYXRlVHlwZUVudW0gPSB2ZXJzaW9uVXBkYXRlVHlwZSBhcyBWZXJzaW9uVXBkYXRlVHlwZTtcbiAgc3dpdGNoICh2ZXJzaW9uVXBkYXRlVHlwZUVudW0pIHtcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLkJldGE6XG4gICAgY2FzZSBWZXJzaW9uVXBkYXRlVHlwZS5NYWpvcjpcbiAgICBjYXNlIFZlcnNpb25VcGRhdGVUeXBlLk1pbm9yOlxuICAgIGNhc2UgVmVyc2lvblVwZGF0ZVR5cGUuUGF0Y2g6XG4gICAgICByZXR1cm4gdmVyc2lvblVwZGF0ZVR5cGVFbnVtO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGlmICgvXlxcZCtcXC5cXGQrXFwuXFxkKyg/Oi1bXFx3XFxkLi1dKyk/JC8udGVzdCh2ZXJzaW9uVXBkYXRlVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIFZlcnNpb25VcGRhdGVUeXBlLk1hbnVhbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIFZlcnNpb25VcGRhdGVUeXBlLkludmFsaWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBQdXNoZXMgY29tbWl0cyBhbmQgdGFncyB0byB0aGUgcmVtb3RlIEdpdCByZXBvc2l0b3J5LlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHB1c2ggb3BlcmF0aW9uIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2l0UHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KCdnaXQgcHVzaCAtLWZvbGxvdy10YWdzIC0tZm9yY2UnLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG59XG5cbi8qKlxuICogUHVibGlzaGVzIGEgR2l0SHViIHJlbGVhc2UgZm9yIHRoZSBuZXcgdmVyc2lvbi5cbiAqXG4gKiBIYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBhIHJlbGVhc2UgYW5kIHVwbG9hZGluZyBmaWxlcyBmb3IgZWl0aGVyIGFuIE9ic2lkaWFuIHBsdWdpbiBvciBhbm90aGVyIHByb2plY3QuXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIGZvciB0aGUgcmVsZWFzZS5cbiAqIEBwYXJhbSBpc09ic2lkaWFuUGx1Z2luIC0gQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHByb2plY3QgaXMgYW4gT2JzaWRpYW4gcGx1Z2luLlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiB0aGUgcmVsZWFzZSBoYXMgYmVlbiBwdWJsaXNoZWQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwdWJsaXNoR2l0SHViUmVsZWFzZShuZXdWZXJzaW9uOiBzdHJpbmcsIGlzT2JzaWRpYW5QbHVnaW46IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgbGV0IGZpbGVQYXRoczogc3RyaW5nW107XG5cbiAgaWYgKGlzT2JzaWRpYW5QbHVnaW4pIHtcbiAgICBjb25zdCBidWlsZERpciA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkRpc3RCdWlsZCk7XG4gICAgY29uc3QgZmlsZU5hbWVzID0gYXdhaXQgcmVhZGRpclBvc2l4KGJ1aWxkRGlyKTtcbiAgICBmaWxlUGF0aHMgPSBmaWxlTmFtZXMubWFwKChmaWxlTmFtZSkgPT4gam9pbihidWlsZERpciwgZmlsZU5hbWUpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCByZXN1bHRKc29uID0gYXdhaXQgZXhlY0Zyb21Sb290KFsnbnBtJywgJ3BhY2snLCAnLS1wYWNrLWRlc3RpbmF0aW9uJywgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5EaXN0LCAnLS1qc29uJ10sIHsgaXNRdWlldDogdHJ1ZSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBKU09OLnBhcnNlKHJlc3VsdEpzb24pIGFzIFt7IGZpbGVuYW1lOiBzdHJpbmcgfV07XG4gICAgZmlsZVBhdGhzID0gW1xuICAgICAgam9pbihPYnNpZGlhbkRldlV0aWxzUmVwb1BhdGhzLkRpc3QsIHJlc3VsdFswXS5maWxlbmFtZSksXG4gICAgICBqb2luKE9ic2lkaWFuRGV2VXRpbHNSZXBvUGF0aHMuRGlzdCwgT2JzaWRpYW5EZXZVdGlsc1JlcG9QYXRocy5TdHlsZXNDc3MpXG4gICAgXTtcbiAgfVxuXG4gIGZpbGVQYXRocyA9IGZpbGVQYXRocy5maWx0ZXIoKGZpbGVQYXRoKSA9PiBleGlzdHNTeW5jKHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKGZpbGVQYXRoKSkpO1xuXG4gIGF3YWl0IGV4ZWNGcm9tUm9vdChbXG4gICAgJ2doJyxcbiAgICAncmVsZWFzZScsXG4gICAgJ2NyZWF0ZScsXG4gICAgbmV3VmVyc2lvbixcbiAgICAuLi5maWxlUGF0aHMsXG4gICAgJy0tdGl0bGUnLFxuICAgIGB2JHtuZXdWZXJzaW9ufWAsXG4gICAgLi4uKGlzQmV0YShuZXdWZXJzaW9uKSA/IFsnLS1wcmVyZWxlYXNlJ10gOiBbXSksXG4gICAgJy0tbm90ZXMtZmlsZScsXG4gICAgJy0nXG4gIF0sIHtcbiAgICBpc1F1aWV0OiB0cnVlLFxuICAgIHN0ZGluOiBhd2FpdCBnZXRSZWxlYXNlTm90ZXMobmV3VmVyc2lvbilcbiAgfSk7XG59XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgY2hhbmdlbG9nIGZpbGUgd2l0aCBuZXcgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgY29tbWl0IG1lc3NhZ2VzLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcmVhZHMgdGhlIGN1cnJlbnQgY2hhbmdlbG9nLCBhcHBlbmRzIG5ldyBlbnRyaWVzIGZvciB0aGUgbGF0ZXN0IHZlcnNpb24sXG4gKiBhbmQgcHJvbXB0cyB0aGUgdXNlciB0byByZXZpZXcgdGhlIGNoYW5nZXMuXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gbnVtYmVyIHRvIGJlIGFkZGVkIHRvIHRoZSBjaGFuZ2Vsb2cuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRoZSBjaGFuZ2Vsb2cgdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2hhbmdlbG9nKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBIRUFERVJfTElORVNfQ09VTlQgPSAyO1xuICBjb25zdCBjaGFuZ2Vsb2dQYXRoID0gcmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuQ2hhbmdlbG9nTWQpO1xuICBsZXQgcHJldmlvdXNDaGFuZ2Vsb2dMaW5lczogc3RyaW5nW107XG4gIGlmIChleGlzdHNTeW5jKGNoYW5nZWxvZ1BhdGgpKSB7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKGNoYW5nZWxvZ1BhdGgsICd1dGYtOCcpO1xuICAgIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMgPSBjb250ZW50LnNwbGl0KCdcXG4nKS5zbGljZShIRUFERVJfTElORVNfQ09VTlQpO1xuICAgIGlmIChwcmV2aW91c0NoYW5nZWxvZ0xpbmVzLmF0KC0xKSA9PT0gJycpIHtcbiAgICAgIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMucG9wKCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHByZXZpb3VzQ2hhbmdlbG9nTGluZXMgPSBbXTtcbiAgfVxuXG4gIGNvbnN0IGxhc3RUYWcgPSByZXBsYWNlQWxsKHByZXZpb3VzQ2hhbmdlbG9nTGluZXNbMF0gPz8gJycsICcjIyAnLCAnJyk7XG4gIGNvbnN0IGNvbW1pdFJhbmdlID0gbGFzdFRhZyA/IGAke2xhc3RUYWd9Li5IRUFEYCA6ICdIRUFEJztcbiAgY29uc3QgY29tbWl0TWVzc2FnZXNTdHIgPSBhd2FpdCBleGVjRnJvbVJvb3QoYGdpdCBsb2cgJHtjb21taXRSYW5nZX0gLS1mb3JtYXQ9JUIgLS1maXJzdC1wYXJlbnQgLXpgLCB7IGlzUXVpZXQ6IHRydWUgfSk7XG4gIGNvbnN0IGNvbW1pdE1lc3NhZ2VzID0gY29tbWl0TWVzc2FnZXNTdHIuc3BsaXQoJ1xcMCcpLmZpbHRlcihCb29sZWFuKS5tYXAodG9TaW5nbGVMaW5lKTtcblxuICBsZXQgbmV3Q2hhbmdlTG9nID0gYCMgQ0hBTkdFTE9HXFxuXFxuIyMgJHtuZXdWZXJzaW9ufVxcblxcbmA7XG5cbiAgZm9yIChjb25zdCBtZXNzYWdlIG9mIGNvbW1pdE1lc3NhZ2VzKSB7XG4gICAgbmV3Q2hhbmdlTG9nICs9IGAtICR7bWVzc2FnZX1cXG5gO1xuICB9XG5cbiAgaWYgKHByZXZpb3VzQ2hhbmdlbG9nTGluZXMubGVuZ3RoID4gMCkge1xuICAgIG5ld0NoYW5nZUxvZyArPSAnXFxuJztcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgcHJldmlvdXNDaGFuZ2Vsb2dMaW5lcykge1xuICAgICAgbmV3Q2hhbmdlTG9nICs9IGAke2xpbmV9XFxuYDtcbiAgICB9XG4gIH1cblxuICBhd2FpdCB3cml0ZUZpbGUoY2hhbmdlbG9nUGF0aCwgbmV3Q2hhbmdlTG9nLCAndXRmLTgnKTtcblxuICBjb25zdCBjb2RlVmVyc2lvbiA9IGF3YWl0IGV4ZWNGcm9tUm9vdCgnY29kZSAtLXZlcnNpb24nLCB7XG4gICAgaXNRdWlldDogdHJ1ZSxcbiAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogdHJ1ZVxuICB9KTtcbiAgY29uc3QgX2RlYnVnZ2VyID0gZ2V0TGliRGVidWdnZXIoJ1ZlcnNpb24nKTtcbiAgaWYgKGNvZGVWZXJzaW9uKSB7XG4gICAgX2RlYnVnZ2VyKGBQbGVhc2UgdXBkYXRlIHRoZSAke09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kfSBmaWxlLiBDbG9zZSBWaXN1YWwgU3R1ZGlvIENvZGUgd2hlbiB5b3UgYXJlIGRvbmUuLi5gKTtcbiAgICBhd2FpdCBleGVjRnJvbVJvb3QoWydjb2RlJywgJy13JywgY2hhbmdlbG9nUGF0aF0sIHtcbiAgICAgIGlzUXVpZXQ6IHRydWUsXG4gICAgICBzaG91bGRJZ25vcmVFeGl0Q29kZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIF9kZWJ1Z2dlcignQ291bGQgbm90IGZpbmQgVmlzdWFsIFN0dWRpbyBDb2RlIGluIHlvdXIgUEFUSC4gVXNpbmcgY29uc29sZSBtb2RlIGluc3RlYWQuJyk7XG4gICAgYXdhaXQgY3JlYXRlSW50ZXJmYWNlKHByb2Nlc3Muc3RkaW4sIHByb2Nlc3Muc3Rkb3V0KS5xdWVzdGlvbihcbiAgICAgIGBQbGVhc2UgdXBkYXRlIHRoZSAke09ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLkNoYW5nZWxvZ01kfSBmaWxlLiBQcmVzcyBFbnRlciB3aGVuIHlvdSBhcmUgZG9uZS4uLmBcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogVXBkYXRlcyB0aGUgdmVyc2lvbiBvZiB0aGUgcHJvamVjdCBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHVwZGF0ZSB0eXBlLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgYSBzZXJpZXMgb2YgdGFza3MgdG8gaGFuZGxlIHZlcnNpb24gdXBkYXRlczpcbiAqIDEuIFZhbGlkYXRlcyB0aGUgdmVyc2lvbiB1cGRhdGUgdHlwZS5cbiAqIDIuIENoZWNrcyBpZiBHaXQgYW5kIEdpdEh1YiBDTEkgYXJlIGluc3RhbGxlZC5cbiAqIDMuIFZlcmlmaWVzIHRoYXQgdGhlIEdpdCByZXBvc2l0b3J5IGlzIGNsZWFuLlxuICogNC4gUnVucyBzcGVsbGNoZWNrIGFuZCBsaW50aW5nLlxuICogNS4gQnVpbGRzIHRoZSBwcm9qZWN0LlxuICogNi4gVXBkYXRlcyB2ZXJzaW9uIGluIGZpbGVzIGFuZCBjaGFuZ2Vsb2cuXG4gKiA3LiBBZGRzIHVwZGF0ZWQgZmlsZXMgdG8gR2l0LCB0YWdzIHRoZSBjb21taXQsIGFuZCBwdXNoZXMgdG8gdGhlIHJlcG9zaXRvcnkuXG4gKiA4LiBJZiBhbiBPYnNpZGlhbiBwbHVnaW4sIGNvcGllcyB0aGUgdXBkYXRlZCBtYW5pZmVzdCBhbmQgcHVibGlzaGVzIGEgR2l0SHViIHJlbGVhc2UuXG4gKlxuICogQHBhcmFtIHZlcnNpb25VcGRhdGVUeXBlIC0gVGhlIHR5cGUgb2YgdmVyc2lvbiB1cGRhdGUgdG8gcGVyZm9ybSAobWFqb3IsIG1pbm9yLCBwYXRjaCwgYmV0YSwgb3IgeC55LnpbLWJldGE6dV0pLlxuICogQHBhcmFtIHByZXBhcmVHaXRIdWJSZWxlYXNlIC0gQSBjYWxsYmFjayBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBHaXRIdWIgcmVsZWFzZS5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHZlcnNpb24gdXBkYXRlIGlzIGNvbXBsZXRlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlVmVyc2lvbih2ZXJzaW9uVXBkYXRlVHlwZT86IHN0cmluZywgcHJlcGFyZUdpdEh1YlJlbGVhc2U/OiAobmV3VmVyc2lvbjogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghdmVyc2lvblVwZGF0ZVR5cGUpIHtcbiAgICBjb25zdCBucG1PbGRWZXJzaW9uID0gcHJvY2Vzcy5lbnZbJ25wbV9vbGRfdmVyc2lvbiddO1xuICAgIGNvbnN0IG5wbU5ld1ZlcnNpb24gPSBwcm9jZXNzLmVudlsnbnBtX25ld192ZXJzaW9uJ107XG5cbiAgICBpZiAobnBtT2xkVmVyc2lvbiAmJiBucG1OZXdWZXJzaW9uKSB7XG4gICAgICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlcyhucG1PbGRWZXJzaW9uKTtcbiAgICAgIGF3YWl0IHVwZGF0ZVZlcnNpb24obnBtTmV3VmVyc2lvbiwgcHJlcGFyZUdpdEh1YlJlbGVhc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignTm8gdmVyc2lvbiB1cGRhdGUgdHlwZSBwcm92aWRlZCcpO1xuICB9XG5cbiAgY29uc3QgaXNPYnNpZGlhblBsdWdpbiA9IGV4aXN0c1N5bmMocmVzb2x2ZVBhdGhGcm9tUm9vdFNhZmUoT2JzaWRpYW5QbHVnaW5SZXBvUGF0aHMuTWFuaWZlc3RKc29uKSk7XG5cbiAgdmFsaWRhdGUodmVyc2lvblVwZGF0ZVR5cGUpO1xuICBhd2FpdCBjaGVja0dpdEluc3RhbGxlZCgpO1xuICBhd2FpdCBjaGVja0dpdFJlcG9DbGVhbigpO1xuICBhd2FpdCBjaGVja0dpdEh1YkNsaUluc3RhbGxlZCgpO1xuICBhd2FpdCBydW5Db21tYW5kKCdmb3JtYXQ6Y2hlY2snKTtcbiAgYXdhaXQgcnVuQ29tbWFuZCgnc3BlbGxjaGVjaycpO1xuICBhd2FpdCBydW5Db21tYW5kKCdidWlsZCcpO1xuICBhd2FpdCBydW5Db21tYW5kKCdsaW50Jyk7XG5cbiAgY29uc3QgbmV3VmVyc2lvbiA9IGF3YWl0IGdldE5ld1ZlcnNpb24odmVyc2lvblVwZGF0ZVR5cGUpO1xuICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlcyhuZXdWZXJzaW9uKTtcbiAgaWYgKGlzT2JzaWRpYW5QbHVnaW4pIHtcbiAgICBhd2FpdCB1cGRhdGVWZXJzaW9uSW5GaWxlc0ZvclBsdWdpbihuZXdWZXJzaW9uKTtcbiAgfVxuXG4gIGF3YWl0IHVwZGF0ZUNoYW5nZWxvZyhuZXdWZXJzaW9uKTtcbiAgYXdhaXQgYWRkVXBkYXRlZEZpbGVzVG9HaXQobmV3VmVyc2lvbik7XG4gIGF3YWl0IGFkZEdpdFRhZyhuZXdWZXJzaW9uKTtcbiAgYXdhaXQgZ2l0UHVzaCgpO1xuICBhd2FpdCBwcmVwYXJlR2l0SHViUmVsZWFzZT8uKG5ld1ZlcnNpb24pO1xuICBhd2FpdCBwdWJsaXNoR2l0SHViUmVsZWFzZShuZXdWZXJzaW9uLCBpc09ic2lkaWFuUGx1Z2luKTtcbn1cblxuLyoqXG4gKiBVcGRhdGVzIHRoZSB2ZXJzaW9uIGluIHZhcmlvdXMgZmlsZXMsIGluY2x1ZGluZyBgcGFja2FnZS5qc29uYCwgYHBhY2thZ2UtbG9jay5qc29uYCxcbiAqIGFuZCBPYnNpZGlhbiBwbHVnaW4gbWFuaWZlc3RzIGlmIGFwcGxpY2FibGUuXG4gKlxuICogQHBhcmFtIG5ld1ZlcnNpb24gLSBUaGUgbmV3IHZlcnNpb24gc3RyaW5nIHRvIHVwZGF0ZSBpbiB0aGUgZmlsZXMuXG4gKiBAcmV0dXJucyBBIGBQcm9taXNlYCB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHVwZGF0ZSBpcyBjb21wbGV0ZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb25JbkZpbGVzKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBlZGl0UGFja2FnZUpzb24oKHBhY2thZ2VKc29uKSA9PiB7XG4gICAgcGFja2FnZUpzb24udmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gIH0pO1xuXG4gIGF3YWl0IGVkaXRQYWNrYWdlTG9ja0pzb24odXBkYXRlLCB7IHNob3VsZFNraXBJZk1pc3Npbmc6IHRydWUgfSk7XG4gIGF3YWl0IGVkaXROcG1TaHJpbmtXcmFwSnNvbih1cGRhdGUsIHsgc2hvdWxkU2tpcElmTWlzc2luZzogdHJ1ZSB9KTtcblxuICBmdW5jdGlvbiB1cGRhdGUocGFja2FnZUxvY2tKc29uOiBQYWNrYWdlTG9ja0pzb24pOiB2b2lkIHtcbiAgICBwYWNrYWdlTG9ja0pzb24udmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgY29uc3QgZGVmYXVsdFBhY2thZ2UgPSBwYWNrYWdlTG9ja0pzb24ucGFja2FnZXM/LlsnJ107XG4gICAgaWYgKGRlZmF1bHRQYWNrYWdlKSB7XG4gICAgICBkZWZhdWx0UGFja2FnZS52ZXJzaW9uID0gbmV3VmVyc2lvbjtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgdG8gZW5zdXJlIGl0IGlzIGVpdGhlciBhIHJlY29nbml6ZWQgdHlwZVxuICogb3IgYSB2YWxpZCBtYW51YWwgdmVyc2lvbiBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHZlcnNpb25VcGRhdGVUeXBlIC0gVGhlIHZlcnNpb24gdXBkYXRlIHR5cGUgdG8gdmFsaWRhdGUuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSB2ZXJzaW9uIHVwZGF0ZSB0eXBlIGlzIGludmFsaWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZSh2ZXJzaW9uVXBkYXRlVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChnZXRWZXJzaW9uVXBkYXRlVHlwZSh2ZXJzaW9uVXBkYXRlVHlwZSkgPT09IFZlcnNpb25VcGRhdGVUeXBlLkludmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmVyc2lvbiB1cGRhdGUgdHlwZS4gUGxlYXNlIHVzZSBcXCdtYWpvclxcJywgXFwnbWlub3JcXCcsIFxcJ3BhdGNoXFwnLCBvciBcXCd4Lnkuelstc3VmZml4XVxcJyBmb3JtYXQuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBGZXRjaGVzIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPYnNpZGlhbiBmcm9tIHRoZSBHaXRIdWIgcmVsZWFzZXMgQVBJLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBPYnNpZGlhbi5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGF0ZXN0T2JzaWRpYW5WZXJzaW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvb2JzaWRpYW5tZC9vYnNpZGlhbi1yZWxlYXNlcy9yZWxlYXNlcy9sYXRlc3QnKTtcbiAgY29uc3Qgb2JzaWRpYW5SZWxlYXNlc0pzb24gPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgUGFydGlhbDxPYnNpZGlhblJlbGVhc2VzSnNvbj47XG4gIHJldHVybiBvYnNpZGlhblJlbGVhc2VzSnNvbi5uYW1lID8/IHRocm93RXhwcmVzc2lvbihuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIHRoZSBuYW1lIG9mIHRoZSBsYXRlc3QgT2JzaWRpYW4gcmVsZWFzZScpKTtcbn1cblxuZnVuY3Rpb24gaXNCZXRhKHZlcnNpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmVyc2lvbi5pbmNsdWRlcyhWZXJzaW9uVXBkYXRlVHlwZS5CZXRhKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjb21tYW5kOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24oKTtcbiAgY29uc3QgaXNLbm93bkNvbW1hbmQgPSBPYmplY3Qua2V5cyhwYWNrYWdlSnNvbi5zY3JpcHRzID8/IHt9KS5pbmNsdWRlcyhjb21tYW5kKTtcbiAgYXdhaXQgZXhlY0Zyb21Sb290KFsnbnBtJywgJ3J1bicsIC4uLihpc0tub3duQ29tbWFuZCA/IFtdIDogWydvYnNpZGlhbi1kZXYtdXRpbHMnXSksIGNvbW1hbmRdKTtcbn1cblxuZnVuY3Rpb24gdG9TaW5nbGVMaW5lKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXMgPSBzdHIuc3BsaXQoL1xccj9cXG4vKS5maWx0ZXIoQm9vbGVhbik7XG4gIHJldHVybiBsaW5lcy5qb2luKCcgJyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVZlcnNpb25JbkZpbGVzRm9yUGx1Z2luKG5ld1ZlcnNpb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBtYW5pZmVzdEJldGFKc29uUGF0aCA9IHJlc29sdmVQYXRoRnJvbVJvb3RTYWZlKE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0QmV0YUpzb24pO1xuICBpZiAoaXNCZXRhKG5ld1ZlcnNpb24pKSB7XG4gICAgYXdhaXQgY3AoXG4gICAgICByZXNvbHZlUGF0aEZyb21Sb290U2FmZShPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEpzb24pLFxuICAgICAgbWFuaWZlc3RCZXRhSnNvblBhdGgsXG4gICAgICB7IGZvcmNlOiB0cnVlIH1cbiAgICApO1xuICAgIGF3YWl0IGVkaXRKc29uPE1hbmlmZXN0PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5NYW5pZmVzdEJldGFKc29uLCAobWFuaWZlc3QpID0+IHtcbiAgICAgIG1hbmlmZXN0LnZlcnNpb24gPSBuZXdWZXJzaW9uO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGxhdGVzdE9ic2lkaWFuVmVyc2lvbiA9IGF3YWl0IGdldExhdGVzdE9ic2lkaWFuVmVyc2lvbigpO1xuXG4gICAgYXdhaXQgZWRpdEpzb248TWFuaWZlc3Q+KE9ic2lkaWFuUGx1Z2luUmVwb1BhdGhzLk1hbmlmZXN0SnNvbiwgKG1hbmlmZXN0KSA9PiB7XG4gICAgICBtYW5pZmVzdC5taW5BcHBWZXJzaW9uID0gbGF0ZXN0T2JzaWRpYW5WZXJzaW9uO1xuICAgICAgbWFuaWZlc3QudmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gICAgfSk7XG5cbiAgICBhd2FpdCBlZGl0SnNvbjxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihPYnNpZGlhblBsdWdpblJlcG9QYXRocy5WZXJzaW9uc0pzb24sICh2ZXJzaW9ucykgPT4ge1xuICAgICAgdmVyc2lvbnNbbmV3VmVyc2lvbl0gPSBsYXRlc3RPYnNpZGlhblZlcnNpb247XG4gICAgfSk7XG5cbiAgICBpZiAoZXhpc3RzU3luYyhtYW5pZmVzdEJldGFKc29uUGF0aCkpIHtcbiAgICAgIGF3YWl0IHJtKG1hbmlmZXN0QmV0YUpzb25QYXRoKTtcbiAgICB9XG4gIH1cblxuICBhd2FpdCBjb3B5VXBkYXRlZE1hbmlmZXN0KCk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7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
|
@@ -0,0 +1,171 @@
|
|
1
|
+
/**
|
2
|
+
* @packageDocumentation version
|
3
|
+
* This module provides functions for managing version updates in a project.
|
4
|
+
* It includes tasks such as validating version update types, checking the state
|
5
|
+
* of Git and GitHub CLI, updating version numbers in files, and performing
|
6
|
+
* Git operations such as tagging and pushing.
|
7
|
+
*
|
8
|
+
* The main function, `updateVersion`, coordinates these tasks to ensure that
|
9
|
+
* version updates are handled consistently and correctly. It also integrates
|
10
|
+
* with Obsidian plugins, if applicable, by updating relevant files and releasing
|
11
|
+
* new versions on GitHub.
|
12
|
+
*/
|
13
|
+
/**
|
14
|
+
* Enum representing different types of version updates.
|
15
|
+
*/
|
16
|
+
export declare enum VersionUpdateType {
|
17
|
+
Beta = "beta",
|
18
|
+
Invalid = "invalid",
|
19
|
+
Major = "major",
|
20
|
+
Manual = "manual",
|
21
|
+
Minor = "minor",
|
22
|
+
Patch = "patch"
|
23
|
+
}
|
24
|
+
/**
|
25
|
+
* Type representing the manifest file format for Obsidian plugins.
|
26
|
+
*/
|
27
|
+
export interface Manifest {
|
28
|
+
/**
|
29
|
+
* The minimum Obsidian version required for the plugin.
|
30
|
+
*/
|
31
|
+
minAppVersion: string;
|
32
|
+
/**
|
33
|
+
* The version of the plugin.
|
34
|
+
*/
|
35
|
+
version: string;
|
36
|
+
}
|
37
|
+
/**
|
38
|
+
* Type representing the structure of Obsidian releases JSON.
|
39
|
+
*/
|
40
|
+
export interface ObsidianReleasesJson {
|
41
|
+
/**
|
42
|
+
* The name of the Obsidian release.
|
43
|
+
*/
|
44
|
+
name: string;
|
45
|
+
}
|
46
|
+
/**
|
47
|
+
* Creates a Git tag for the new version.
|
48
|
+
*
|
49
|
+
* @param newVersion - The new version number to use for the tag.
|
50
|
+
* @returns A promise that resolves when the tag has been created.
|
51
|
+
*/
|
52
|
+
export declare function addGitTag(newVersion: string): Promise<void>;
|
53
|
+
/**
|
54
|
+
* Adds updated files to the Git staging area and commits them with the new version message.
|
55
|
+
*
|
56
|
+
* @param newVersion - The new version number used as the commit message.
|
57
|
+
* @returns A promise that resolves when the files have been added and committed.
|
58
|
+
*/
|
59
|
+
export declare function addUpdatedFilesToGit(newVersion: string): Promise<void>;
|
60
|
+
/**
|
61
|
+
* Checks if the GitHub CLI is installed on the system.
|
62
|
+
*
|
63
|
+
* Throws an error if the GitHub CLI is not installed.
|
64
|
+
*
|
65
|
+
* @throws Error if the GitHub CLI is not installed.
|
66
|
+
*/
|
67
|
+
export declare function checkGitHubCliInstalled(): Promise<void>;
|
68
|
+
/**
|
69
|
+
* Checks if Git is installed on the system.
|
70
|
+
*
|
71
|
+
* Throws an error if Git is not installed.
|
72
|
+
*
|
73
|
+
* @throws Error if Git is not installed.
|
74
|
+
*/
|
75
|
+
export declare function checkGitInstalled(): Promise<void>;
|
76
|
+
/**
|
77
|
+
* Checks if the Git repository is clean, meaning there are no uncommitted changes.
|
78
|
+
*
|
79
|
+
* Throws an error if the Git repository is not clean.
|
80
|
+
*
|
81
|
+
* @throws Error if the Git repository is not clean.
|
82
|
+
*/
|
83
|
+
export declare function checkGitRepoClean(): Promise<void>;
|
84
|
+
/**
|
85
|
+
* Copies the updated manifest file to the distribution build directory.
|
86
|
+
*
|
87
|
+
* @returns A promise that resolves when the copy operation is complete.
|
88
|
+
*/
|
89
|
+
export declare function copyUpdatedManifest(): Promise<void>;
|
90
|
+
/**
|
91
|
+
* Generates a new version string based on the current version and the specified update type.
|
92
|
+
*
|
93
|
+
* @param versionUpdateType - The type of version update (major, minor, patch, beta, or manual).
|
94
|
+
* @returns A `Promise` that resolves to the new version string.
|
95
|
+
* @throws Error if the current version format is invalid.
|
96
|
+
*/
|
97
|
+
export declare function getNewVersion(versionUpdateType: string): Promise<string>;
|
98
|
+
/**
|
99
|
+
* Retrieves the release notes for a specific version from the changelog.
|
100
|
+
*
|
101
|
+
* @param newVersion - The new version number for which to get the release notes.
|
102
|
+
* @returns A promise that resolves to the release notes for the specified version.
|
103
|
+
*/
|
104
|
+
export declare function getReleaseNotes(newVersion: string): Promise<string>;
|
105
|
+
/**
|
106
|
+
* Determines the type of version update based on the input string.
|
107
|
+
*
|
108
|
+
* @param versionUpdateType - The input string representing the version update type.
|
109
|
+
* @returns The corresponding `VersionUpdateType`.
|
110
|
+
*/
|
111
|
+
export declare function getVersionUpdateType(versionUpdateType: string): VersionUpdateType;
|
112
|
+
/**
|
113
|
+
* Pushes commits and tags to the remote Git repository.
|
114
|
+
*
|
115
|
+
* @returns A promise that resolves when the push operation is complete.
|
116
|
+
*/
|
117
|
+
export declare function gitPush(): Promise<void>;
|
118
|
+
/**
|
119
|
+
* Publishes a GitHub release for the new version.
|
120
|
+
*
|
121
|
+
* Handles the creation of a release and uploading files for either an Obsidian plugin or another project.
|
122
|
+
*
|
123
|
+
* @param newVersion - The new version number for the release.
|
124
|
+
* @param isObsidianPlugin - A boolean indicating if the project is an Obsidian plugin.
|
125
|
+
* @returns A promise that resolves when the release has been published.
|
126
|
+
*/
|
127
|
+
export declare function publishGitHubRelease(newVersion: string, isObsidianPlugin: boolean): Promise<void>;
|
128
|
+
/**
|
129
|
+
* Updates the changelog file with new version information and commit messages.
|
130
|
+
*
|
131
|
+
* This function reads the current changelog, appends new entries for the latest version,
|
132
|
+
* and prompts the user to review the changes.
|
133
|
+
*
|
134
|
+
* @param newVersion - The new version number to be added to the changelog.
|
135
|
+
* @returns A promise that resolves when the changelog update is complete.
|
136
|
+
*/
|
137
|
+
export declare function updateChangelog(newVersion: string): Promise<void>;
|
138
|
+
/**
|
139
|
+
* Updates the version of the project based on the specified update type.
|
140
|
+
*
|
141
|
+
* This function performs a series of tasks to handle version updates:
|
142
|
+
* 1. Validates the version update type.
|
143
|
+
* 2. Checks if Git and GitHub CLI are installed.
|
144
|
+
* 3. Verifies that the Git repository is clean.
|
145
|
+
* 4. Runs spellcheck and linting.
|
146
|
+
* 5. Builds the project.
|
147
|
+
* 6. Updates version in files and changelog.
|
148
|
+
* 7. Adds updated files to Git, tags the commit, and pushes to the repository.
|
149
|
+
* 8. If an Obsidian plugin, copies the updated manifest and publishes a GitHub release.
|
150
|
+
*
|
151
|
+
* @param versionUpdateType - The type of version update to perform (major, minor, patch, beta, or x.y.z[-beta:u]).
|
152
|
+
* @param prepareGitHubRelease - A callback function to prepare the GitHub release.
|
153
|
+
* @returns A promise that resolves when the version update is complete.
|
154
|
+
*/
|
155
|
+
export declare function updateVersion(versionUpdateType?: string, prepareGitHubRelease?: (newVersion: string) => Promise<void>): Promise<void>;
|
156
|
+
/**
|
157
|
+
* Updates the version in various files, including `package.json`, `package-lock.json`,
|
158
|
+
* and Obsidian plugin manifests if applicable.
|
159
|
+
*
|
160
|
+
* @param newVersion - The new version string to update in the files.
|
161
|
+
* @returns A `Promise` that resolves when the update is complete.
|
162
|
+
*/
|
163
|
+
export declare function updateVersionInFiles(newVersion: string): Promise<void>;
|
164
|
+
/**
|
165
|
+
* Validates the version update type to ensure it is either a recognized type
|
166
|
+
* or a valid manual version string.
|
167
|
+
*
|
168
|
+
* @param versionUpdateType - The version update type to validate.
|
169
|
+
* @throws Error if the version update type is invalid.
|
170
|
+
*/
|
171
|
+
export declare function validate(versionUpdateType: string): void;
|