From 5a2a9b4982abda17121d3af3a2ae83648f2db5d4 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 13:54:14 +0200 Subject: [PATCH 01/17] Resolve package directory properly --- package-lock.json | 144 ++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/Constants.ts | 29 +++++++- src/InternalConstants.cts | 13 ++++ 4 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 src/InternalConstants.cts diff --git a/package-lock.json b/package-lock.json index 0f027b5f..31f6d590 100644 --- a/package-lock.json +++ b/package-lock.json @@ -33,6 +33,7 @@ "markdown-it-include": "^2.0.0", "markdown-it-table-of-contents": "^0.6.0", "multi-integer-range": "^5.0.0", + "pkg-up": "^4.0.0", "puppeteer-core": "^18.0.5", "serve-handler": "^6.1.3", "string-template": "^1.0.0", @@ -6621,6 +6622,96 @@ "node": ">=6" } }, + "node_modules/pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-4.0.0.tgz", + "integrity": "sha512-N4zdA4sfOe6yCv+ulPCmpnIBQ5I60xfhDr1otdBBhKte9QtEf3bhfrfkW7dTb+IQ0iEx4ZDzas0kc1o5rdWpYg==", + "dependencies": { + "find-up": "^6.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.1.1.tgz", + "integrity": "sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pkg-up/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", @@ -13982,6 +14073,59 @@ } } }, + "pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-4.0.0.tgz", + "integrity": "sha512-N4zdA4sfOe6yCv+ulPCmpnIBQ5I60xfhDr1otdBBhKte9QtEf3bhfrfkW7dTb+IQ0iEx4ZDzas0kc1o5rdWpYg==", + "requires": { + "find-up": "^6.2.0" + }, + "dependencies": { + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "locate-path": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.1.1.tgz", + "integrity": "sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==", + "requires": { + "p-locate": "^6.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==" + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" + } + } + }, "prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", diff --git a/package.json b/package.json index a5761a41..de9798ca 100644 --- a/package.json +++ b/package.json @@ -86,6 +86,7 @@ "markdown-it-include": "^2.0.0", "markdown-it-table-of-contents": "^0.6.0", "multi-integer-range": "^5.0.0", + "pkg-up": "^4.0.0", "puppeteer-core": "^18.0.5", "serve-handler": "^6.1.3", "string-template": "^1.0.0", diff --git a/src/Constants.ts b/src/Constants.ts index 69caba85..4d5d8815 100644 --- a/src/Constants.ts +++ b/src/Constants.ts @@ -1,8 +1,10 @@ -import { fileURLToPath } from "node:url"; +import { pathToFileURL } from "url"; +import { pkgUpSync } from "pkg-up"; import puppeteer, { PuppeteerNode } from "puppeteer-core"; import path from "upath"; +import { InternalConstants } from "./InternalConstants.cjs"; -const { join } = path; +const { dirname } = path; /** * Provides constants for the extension. @@ -14,6 +16,11 @@ export class Constants */ private static packageDirectory: string = null; + /** + * The url to the root of this package. + */ + private static packageURL: URL = null; + /** * A puppeteer instance. */ @@ -26,12 +33,28 @@ export class Constants { if (this.packageDirectory === null) { - this.packageDirectory = join(fileURLToPath(new URL(".", import.meta.url)), ".."); + this.packageDirectory = dirname(pkgUpSync( + { + cwd: InternalConstants.LibraryDirectory + })); } return this.packageDirectory; } + /** + * Gets the url to the root of this package. + */ + public static get PackageURL(): URL + { + if (this.packageURL === null) + { + this.packageURL = pathToFileURL(this.PackageDirectory); + } + + return this.packageURL; + } + /** * Gets a puppeteer instance. */ diff --git a/src/InternalConstants.cts b/src/InternalConstants.cts new file mode 100644 index 00000000..4602b722 --- /dev/null +++ b/src/InternalConstants.cts @@ -0,0 +1,13 @@ +/** + * Provides internal constants for the extension. + */ +export class InternalConstants +{ + /** + * Gets the path to the root of this library. + */ + public static get LibraryDirectory(): string + { + return __dirname; + } +} From 43661c0ce1c9bb43f05cde65907e02255579f82c Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 13:54:47 +0200 Subject: [PATCH 02/17] Use package directory for `createRequire`-calls --- src/Conversion/ConverterPlugin.ts | 2 +- src/MarkdownConverterExtension.ts | 2 +- src/Properties/Settings.ts | 3 ++- src/System/Documents/Assets/Asset.ts | 3 ++- src/System/Extensibility/Extension.ts | 3 ++- src/System/Extensibility/MarkdownContributions.ts | 3 ++- src/System/Tasks/ChainTask.ts | 3 ++- src/System/Tasks/ConversionRunner.ts | 3 ++- src/System/Tasks/ConvertAllTask.ts | 3 ++- src/System/Tasks/ConvertTask.ts | 3 ++- src/test/CommonHooks.ts | 2 +- src/tests/ConfigInterceptor.ts | 3 ++- src/tests/TestConstants.ts | 2 +- src/tests/TestContext.ts | 3 ++- src/tests/common/Conversion/Converter.test.ts | 2 +- src/tests/common/Conversion/ConverterPlugin.test.ts | 3 ++- src/tests/common/MarkdownConverterExtension.test.ts | 2 +- src/tests/common/Properties/Settings.test.ts | 3 ++- src/tests/common/System/Documents/Assets/PictureSource.test.ts | 3 ++- src/tests/common/System/Documents/Document.test.ts | 3 ++- src/tests/common/System/Documents/DocumentFragment.test.ts | 3 ++- src/tests/common/System/Extensibility/Extension.test.ts | 3 ++- .../common/System/Extensibility/MarkdownContributions.test.ts | 3 ++- src/tests/common/System/IO/PatternResolver.test.ts | 3 ++- src/tests/common/System/Tasks/ConversionRunner.test.ts | 3 ++- src/tests/common/System/Tasks/ConvertTask.test.ts | 3 ++- src/tests/essentials/ConfigInterceptor.test.ts | 3 ++- src/tests/single-file/System/Tasks/ConversionRunner.test.ts | 3 ++- src/tests/single-folder/System/Tasks/ChainTask.test.ts | 3 ++- src/tests/single-folder/System/Tasks/ConversionRunner.test.ts | 3 ++- src/tests/single-folder/System/Tasks/ConvertAllTask.test.ts | 3 ++- src/tests/workspace/System/Tasks/ConversionRunner.test.ts | 3 ++- 32 files changed, 58 insertions(+), 32 deletions(-) diff --git a/src/Conversion/ConverterPlugin.ts b/src/Conversion/ConverterPlugin.ts index dd9a3945..f908c9d7 100644 --- a/src/Conversion/ConverterPlugin.ts +++ b/src/Conversion/ConverterPlugin.ts @@ -132,7 +132,7 @@ export class ConverterPlugin ({ resource }) => { let result: string; - let filename: string = createRequire(import.meta.url)("website-scraper/lib/filename-generator/by-type")( + let filename: string = createRequire(Constants.PackageURL)("website-scraper/lib/filename-generator/by-type")( resource, { subdirectories, diff --git a/src/MarkdownConverterExtension.ts b/src/MarkdownConverterExtension.ts index 8ad2523a..f712067d 100644 --- a/src/MarkdownConverterExtension.ts +++ b/src/MarkdownConverterExtension.ts @@ -24,7 +24,7 @@ import { PuppeteerTask } from "./System/Tasks/PuppeteerTask.js"; const { mkdirp, pathExists } = fs; const { join, resolve } = path; -const { commands, ProgressLocation, window } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { commands, ProgressLocation, window } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Represents the `Markdown Converter` extension. diff --git a/src/Properties/Settings.ts b/src/Properties/Settings.ts index 40eeaf89..b4e39124 100644 --- a/src/Properties/Settings.ts +++ b/src/Properties/Settings.ts @@ -1,6 +1,7 @@ import { createRequire } from "node:module"; import { MultiRange } from "multi-integer-range"; import vscode, { WorkspaceConfiguration } from "vscode"; +import { Constants } from "../Constants.js"; import { ConversionType } from "../Conversion/ConversionType.js"; import { AssetURLType } from "../System/Documents/Assets/AssetURLType.js"; import { InsertionType } from "../System/Documents/Assets/InsertionType.js"; @@ -16,7 +17,7 @@ import { TocSettings } from "../System/Documents/TocSettings.js"; import { IRunningBlockContent } from "./IRunningBlockContent.js"; import { ISettings } from "./ISettings.js"; -const { env, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { env, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Provides access to settings. diff --git a/src/System/Documents/Assets/Asset.ts b/src/System/Documents/Assets/Asset.ts index 1ec3e583..dc1e989a 100644 --- a/src/System/Documents/Assets/Asset.ts +++ b/src/System/Documents/Assets/Asset.ts @@ -4,12 +4,13 @@ import fs from "fs-extra"; import getUri from "get-uri"; import path from "upath"; import vscode from "vscode"; +import { Constants } from "../../../Constants.js"; import { AssetURLType } from "./AssetURLType.js"; import { InsertionType } from "./InsertionType.js"; const { readFile } = fs; const { isAbsolute } = path; -const { Uri } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { Uri } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Represents an asset. diff --git a/src/System/Extensibility/Extension.ts b/src/System/Extensibility/Extension.ts index 7148b11e..18622e81 100644 --- a/src/System/Extensibility/Extension.ts +++ b/src/System/Extensibility/Extension.ts @@ -5,12 +5,13 @@ import MarkdownIt from "markdown-it"; import format from "string-template"; import path from "upath"; import vscode from "vscode"; +import { Constants } from "../../Constants.js"; import { Resources } from "../../Properties/Resources.js"; import { Task } from "../Tasks/Task.js"; import { IExtension } from "./IExtension.cjs"; const { dirname } = path; -const { commands, env, ProgressLocation, ViewColumn, window, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { commands, env, ProgressLocation, ViewColumn, window, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Represents an extension. diff --git a/src/System/Extensibility/MarkdownContributions.ts b/src/System/Extensibility/MarkdownContributions.ts index 37f4e446..f2519a94 100644 --- a/src/System/Extensibility/MarkdownContributions.ts +++ b/src/System/Extensibility/MarkdownContributions.ts @@ -1,9 +1,10 @@ import { createRequire } from "node:module"; import path from "upath"; import vscode, { Extension, Uri as VSCodeURI } from "vscode"; +import { Constants } from "../../Constants.js"; const { join } = path; -const { extensions, Uri } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { extensions, Uri } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Provides the functionality to load markdown-contributions. diff --git a/src/System/Tasks/ChainTask.ts b/src/System/Tasks/ChainTask.ts index b47843ec..3a1d7415 100644 --- a/src/System/Tasks/ChainTask.ts +++ b/src/System/Tasks/ChainTask.ts @@ -5,6 +5,7 @@ import fs from "fs-extra"; import format from "string-template"; import path from "upath"; import vscode, { CancellationToken, Progress, TextDocument } from "vscode"; +import { Constants } from "../../Constants.js"; import { IConvertedFile } from "../../Conversion/IConvertedFile.js"; import { MarkdownConverterExtension } from "../../MarkdownConverterExtension.js"; import { Resources } from "../../Properties/Resources.js"; @@ -13,7 +14,7 @@ import { IProgressState } from "./IProgressState.js"; const { renameSync } = fs; const { join, parse } = path; -const { commands, window, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { commands, window, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Represents a task for chaining multiple documents. diff --git a/src/System/Tasks/ConversionRunner.ts b/src/System/Tasks/ConversionRunner.ts index 17ce2cb4..5a9bd7be 100644 --- a/src/System/Tasks/ConversionRunner.ts +++ b/src/System/Tasks/ConversionRunner.ts @@ -15,6 +15,7 @@ import format from "string-template"; import twemoji from "twemoji"; import path from "upath"; import vscode, { CancellationToken, Progress, TextDocument, WorkspaceFolder } from "vscode"; +import { Constants } from "../../Constants.js"; import { ConversionType } from "../../Conversion/ConversionType.js"; import { Converter } from "../../Conversion/Converter.js"; import { IConvertedFile } from "../../Conversion/IConvertedFile.js"; @@ -47,7 +48,7 @@ const { pathExists, readFile } = fs; const { highlight } = hljs; const { dirname, isAbsolute, join, resolve } = path; const { convert, parse } = twemoji; -const { window, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { window, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Provides the functionality to load settings and run a {@link Converter `Converter`}. diff --git a/src/System/Tasks/ConvertAllTask.ts b/src/System/Tasks/ConvertAllTask.ts index dfbb91fb..ca2421dc 100644 --- a/src/System/Tasks/ConvertAllTask.ts +++ b/src/System/Tasks/ConvertAllTask.ts @@ -1,6 +1,7 @@ import { createRequire } from "node:module"; import format from "string-template"; import vscode, { CancellationToken, Progress, TextDocument } from "vscode"; +import { Constants } from "../../Constants.js"; import { IConvertedFile } from "../../Conversion/IConvertedFile.js"; import { MarkdownConverterExtension } from "../../MarkdownConverterExtension.js"; import { MarkdownFileNotFoundException } from "../../MarkdownFileNotFoundException.js"; @@ -10,7 +11,7 @@ import { OperationCancelledException } from "../OperationCancelledException.js"; import { ConversionTask } from "./ConversionTask.js"; import { IProgressState } from "./IProgressState.js"; -const { extensions, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { extensions, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Represents a task for converting all documents in the workspace. diff --git a/src/System/Tasks/ConvertTask.ts b/src/System/Tasks/ConvertTask.ts index b3a5c71d..b39e207f 100644 --- a/src/System/Tasks/ConvertTask.ts +++ b/src/System/Tasks/ConvertTask.ts @@ -1,5 +1,6 @@ import { createRequire } from "node:module"; import vscode, { CancellationToken, Progress, TextDocument } from "vscode"; +import { Constants } from "../../Constants.js"; import { IConvertedFile } from "../../Conversion/IConvertedFile.js"; import { MarkdownConverterExtension } from "../../MarkdownConverterExtension.js"; import { MarkdownFileNotFoundException } from "../../MarkdownFileNotFoundException.js"; @@ -8,7 +9,7 @@ import { Settings } from "../../Properties/Settings.js"; import { ConversionTask } from "./ConversionTask.js"; import { IProgressState } from "./IProgressState.js"; -const { window } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { window } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Represents a task for converting the currently opened document. diff --git a/src/test/CommonHooks.ts b/src/test/CommonHooks.ts index eae73160..51bb8623 100644 --- a/src/test/CommonHooks.ts +++ b/src/test/CommonHooks.ts @@ -14,7 +14,7 @@ import { TestConstants } from "../tests/TestConstants.js"; import { ConfigStore } from "./ConfigStore.js"; const { pathExists, remove } = fs; -const { extensions } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { extensions } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers common configuration-interceptions. diff --git a/src/tests/ConfigInterceptor.ts b/src/tests/ConfigInterceptor.ts index 97b03c29..2a4b615e 100644 --- a/src/tests/ConfigInterceptor.ts +++ b/src/tests/ConfigInterceptor.ts @@ -1,11 +1,12 @@ import { createRequire } from "node:module"; import { Resource } from "@manuth/resource-manager"; import vscode from "vscode"; +import { Constants } from "../Constants.js"; import { ConfigurationSection } from "./ConfigurationSection.js"; import { ITestContext } from "./ITestContext.js"; import { TestContext } from "./TestContext.js"; -const { workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Provides the functionality to intercept the vscode-configuration. diff --git a/src/tests/TestConstants.ts b/src/tests/TestConstants.ts index 2b6063e9..51980a9a 100644 --- a/src/tests/TestConstants.ts +++ b/src/tests/TestConstants.ts @@ -7,7 +7,7 @@ import { MarkdownConverterExtension } from "../MarkdownConverterExtension.js"; import { Extension } from "../System/Extensibility/Extension.js"; const { join } = path; -const { extensions } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { extensions } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Provides constants for testing. diff --git a/src/tests/TestContext.ts b/src/tests/TestContext.ts index 73e0d981..c2a8dd42 100644 --- a/src/tests/TestContext.ts +++ b/src/tests/TestContext.ts @@ -1,9 +1,10 @@ import { createRequire } from "node:module"; import vscode from "vscode"; +import { Constants } from "../Constants.js"; import { ConfigInterceptor } from "./ConfigInterceptor.js"; import { ITestContext } from "./ITestContext.js"; -const { commands, Uri, window } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { commands, Uri, window } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Represents a test-context. diff --git a/src/tests/common/Conversion/Converter.test.ts b/src/tests/common/Conversion/Converter.test.ts index 4fb855a4..186375fc 100644 --- a/src/tests/common/Conversion/Converter.test.ts +++ b/src/tests/common/Conversion/Converter.test.ts @@ -18,7 +18,7 @@ import { IProgressState } from "../../../System/Tasks/IProgressState.js"; const { pathExists, remove, writeFile } = fs; const { changeExt, dirname, join, normalize, relative } = path; -const { workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link Converter `Converter`} class. diff --git a/src/tests/common/Conversion/ConverterPlugin.test.ts b/src/tests/common/Conversion/ConverterPlugin.test.ts index 5077b10b..ee48d32a 100644 --- a/src/tests/common/Conversion/ConverterPlugin.test.ts +++ b/src/tests/common/Conversion/ConverterPlugin.test.ts @@ -7,13 +7,14 @@ import MarkdownIt from "markdown-it"; import path from "upath"; import vscode from "vscode"; import websiteScraper from "website-scraper"; +import { Constants } from "../../../Constants.js"; import { Converter } from "../../../Conversion/Converter.js"; import { ConverterPlugin } from "../../../Conversion/ConverterPlugin.js"; import { Document } from "../../../System/Documents/Document.js"; const { pathExists, remove, writeFile } = fs; const { basename, parse } = path; -const { workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ConverterPlugin `ConverterPlugin`} class. diff --git a/src/tests/common/MarkdownConverterExtension.test.ts b/src/tests/common/MarkdownConverterExtension.test.ts index 8ec2a8f5..2617a208 100644 --- a/src/tests/common/MarkdownConverterExtension.test.ts +++ b/src/tests/common/MarkdownConverterExtension.test.ts @@ -20,7 +20,7 @@ import { PuppeteerTask } from "../../System/Tasks/PuppeteerTask.js"; import { ITestContext } from "../ITestContext.js"; import { TestConstants } from "../TestConstants.js"; -const { commands, window, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { commands, window, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link MarkdownConverterExtension `MarkdownConverterExtension`} class. diff --git a/src/tests/common/Properties/Settings.test.ts b/src/tests/common/Properties/Settings.test.ts index df5db808..23e07c76 100644 --- a/src/tests/common/Properties/Settings.test.ts +++ b/src/tests/common/Properties/Settings.test.ts @@ -3,6 +3,7 @@ import { createRequire } from "node:module"; import { Random } from "random-js"; import { createSandbox, SinonSandbox } from "sinon"; import vscode from "vscode"; +import { Constants } from "../../../Constants.js"; import { ConversionType } from "../../../Conversion/ConversionType.js"; import { ISettings } from "../../../Properties/ISettings.js"; import { Settings } from "../../../Properties/Settings.js"; @@ -17,7 +18,7 @@ import { StandardizedFormatType } from "../../../System/Documents/StandardizedFo import { StandardizedPageFormat } from "../../../System/Documents/StandardizedPageFormat.js"; import { ITestContext } from "../../ITestContext.js"; -const { env } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { env } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link Settings `Settings`} class. diff --git a/src/tests/common/System/Documents/Assets/PictureSource.test.ts b/src/tests/common/System/Documents/Assets/PictureSource.test.ts index 719d8144..13b016bd 100644 --- a/src/tests/common/System/Documents/Assets/PictureSource.test.ts +++ b/src/tests/common/System/Documents/Assets/PictureSource.test.ts @@ -7,12 +7,13 @@ import MarkdownIt from "markdown-it"; import parseDataUrl from "parse-data-url"; import { Random } from "random-js"; import vscode, { TextDocument } from "vscode"; +import { Constants } from "../../../../../Constants.js"; import { InsertionType } from "../../../../../System/Documents/Assets/InsertionType.js"; import { PictureSource } from "../../../../../System/Documents/Assets/PictureSource.js"; import { Document } from "../../../../../System/Documents/Document.js"; const { readFile, writeFile } = fs; -const { workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link PictureSource `PictureSource`} class. diff --git a/src/tests/common/System/Documents/Document.test.ts b/src/tests/common/System/Documents/Document.test.ts index d89993d1..05ffcb75 100644 --- a/src/tests/common/System/Documents/Document.test.ts +++ b/src/tests/common/System/Documents/Document.test.ts @@ -10,6 +10,7 @@ import MarkdownIt from "markdown-it"; import { Random } from "random-js"; import vscode, { TextDocument } from "vscode"; import YAML from "yamljs"; +import { Constants } from "../../../../Constants.js"; import { StyleSheet } from "../../../../System/Documents/Assets/StyleSheet.js"; import { WebScript } from "../../../../System/Documents/Assets/WebScript.js"; import { AttributeKey } from "../../../../System/Documents/AttributeKey.js"; @@ -18,7 +19,7 @@ import { DocumentFragment } from "../../../../System/Documents/DocumentFragment. const { writeFile } = fs; const { create } = Handlebars; -const { workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link Document `Document`} class. diff --git a/src/tests/common/System/Documents/DocumentFragment.test.ts b/src/tests/common/System/Documents/DocumentFragment.test.ts index f6c5a196..53f88cbb 100644 --- a/src/tests/common/System/Documents/DocumentFragment.test.ts +++ b/src/tests/common/System/Documents/DocumentFragment.test.ts @@ -14,6 +14,7 @@ import serveHandler from "serve-handler"; import { createSandbox, SinonSandbox } from "sinon"; import vscode, { TextDocument } from "vscode"; import YAML from "yamljs"; +import { Constants } from "../../../../Constants.js"; import { AssetURLType } from "../../../../System/Documents/Assets/AssetURLType.js"; import { InsertionType } from "../../../../System/Documents/Assets/InsertionType.js"; import { AttributeKey } from "../../../../System/Documents/AttributeKey.js"; @@ -24,7 +25,7 @@ import { DateTimeFormatter } from "../../../../System/Globalization/DateTimeForm import { Utilities } from "../../../../Utilities.js"; const { stat, writeFile } = fs; -const { workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link DocumentFragment `DocumentFragment`} class. diff --git a/src/tests/common/System/Extensibility/Extension.test.ts b/src/tests/common/System/Extensibility/Extension.test.ts index ab735f28..1ca21fc0 100644 --- a/src/tests/common/System/Extensibility/Extension.test.ts +++ b/src/tests/common/System/Extensibility/Extension.test.ts @@ -6,12 +6,13 @@ import MarkdownIt from "markdown-it"; import { Random } from "random-js"; import { createSandbox, SinonSandbox } from "sinon"; import vscode from "vscode"; +import { Constants } from "../../../../Constants.js"; import { Resources } from "../../../../Properties/Resources.js"; import { Extension } from "../../../../System/Extensibility/Extension.js"; import { Task } from "../../../../System/Tasks/Task.js"; import { TestConstants } from "../../../TestConstants.js"; -const { commands, env, window, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { commands, env, window, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link Extension `Extension`} class. diff --git a/src/tests/common/System/Extensibility/MarkdownContributions.test.ts b/src/tests/common/System/Extensibility/MarkdownContributions.test.ts index c3b315d8..ee68e457 100644 --- a/src/tests/common/System/Extensibility/MarkdownContributions.test.ts +++ b/src/tests/common/System/Extensibility/MarkdownContributions.test.ts @@ -6,9 +6,10 @@ import { TempDirectory } from "@manuth/temp-files"; import { Random } from "random-js"; import { createSandbox, SinonSandbox } from "sinon"; import vscode, { Extension } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { MarkdownContributions } from "../../../../System/Extensibility/MarkdownContributions.js"; -const { ExtensionKind, extensions, Uri } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { ExtensionKind, extensions, Uri } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link MarkdownContributions `MarkdownContributions`} class. diff --git a/src/tests/common/System/IO/PatternResolver.test.ts b/src/tests/common/System/IO/PatternResolver.test.ts index cbe58444..9ee84471 100644 --- a/src/tests/common/System/IO/PatternResolver.test.ts +++ b/src/tests/common/System/IO/PatternResolver.test.ts @@ -7,13 +7,14 @@ import { Context } from "mocha"; import { Random } from "random-js"; import path from "upath"; import vscode, { TextDocument } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { ConversionType } from "../../../../Conversion/ConversionType.js"; import { IPatternContext } from "../../../../System/IO/IPatternContext.js"; import { PatternResolver } from "../../../../System/IO/PatternResolver.js"; import { IPatternTest } from "./IPatternTest.js"; const { normalize, parse, relative } = path; -const { Uri, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { Uri, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link PatternResolver `PatternResolver`} class. diff --git a/src/tests/common/System/Tasks/ConversionRunner.test.ts b/src/tests/common/System/Tasks/ConversionRunner.test.ts index 07900bc9..4281acbf 100644 --- a/src/tests/common/System/Tasks/ConversionRunner.test.ts +++ b/src/tests/common/System/Tasks/ConversionRunner.test.ts @@ -14,6 +14,7 @@ import { Random } from "random-js"; import { createSandbox, SinonSandbox, SinonSpiedMember } from "sinon"; import path from "upath"; import vscode, { TextDocument, Uri as VSCodeUri, WorkspaceConfiguration } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { ConversionType } from "../../../../Conversion/ConversionType.js"; import { Converter } from "../../../../Conversion/Converter.js"; import { IConvertedFile } from "../../../../Conversion/IConvertedFile.js"; @@ -43,7 +44,7 @@ import { TestConversionRunner } from "../../../TestConversionRunner.js"; const { ensureFile, pathExists, readFile, remove, writeFile } = fs; const { dirname, normalize, resolve } = path; const { randexp } = RandExp; -const { ConfigurationTarget, Uri, window, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { ConfigurationTarget, Uri, window, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ConversionRunner `ConversionRunner`} class. diff --git a/src/tests/common/System/Tasks/ConvertTask.test.ts b/src/tests/common/System/Tasks/ConvertTask.test.ts index 273fd9d6..b6eb6307 100644 --- a/src/tests/common/System/Tasks/ConvertTask.test.ts +++ b/src/tests/common/System/Tasks/ConvertTask.test.ts @@ -2,6 +2,7 @@ import { doesNotThrow, throws } from "node:assert"; import { createRequire } from "node:module"; import { TempFile } from "@manuth/temp-files"; import vscode, { TextDocument } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { MarkdownFileNotFoundException } from "../../../../MarkdownFileNotFoundException.js"; import { ISettings } from "../../../../Properties/ISettings.js"; import { Settings } from "../../../../Properties/Settings.js"; @@ -9,7 +10,7 @@ import { ConvertTask } from "../../../../System/Tasks/ConvertTask.js"; import { ITestContext } from "../../../ITestContext.js"; import { TestConstants } from "../../../TestConstants.js"; -const { Uri, window } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { Uri, window } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ConvertTask `ConvertTask`} class. diff --git a/src/tests/essentials/ConfigInterceptor.test.ts b/src/tests/essentials/ConfigInterceptor.test.ts index 59022c32..9656d61e 100644 --- a/src/tests/essentials/ConfigInterceptor.test.ts +++ b/src/tests/essentials/ConfigInterceptor.test.ts @@ -1,12 +1,13 @@ import { deepStrictEqual, ok, strictEqual } from "node:assert"; import { createRequire } from "node:module"; import vscode, { WorkspaceConfiguration } from "vscode"; +import { Constants } from "../../Constants.js"; import { ConversionType } from "../../Conversion/ConversionType.js"; import { ISettings } from "../../Properties/ISettings.js"; import { Settings } from "../../Properties/Settings.js"; import { ConfigInterceptor } from "../ConfigInterceptor.js"; -const { ConfigurationTarget, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { ConfigurationTarget, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ConfigInterceptor `ConfigInterceptor`} class. diff --git a/src/tests/single-file/System/Tasks/ConversionRunner.test.ts b/src/tests/single-file/System/Tasks/ConversionRunner.test.ts index 89bec3b2..28127003 100644 --- a/src/tests/single-file/System/Tasks/ConversionRunner.test.ts +++ b/src/tests/single-file/System/Tasks/ConversionRunner.test.ts @@ -5,6 +5,7 @@ import { TempFile } from "@manuth/temp-files"; import { createSandbox, SinonSandbox } from "sinon"; import path from "upath"; import vscode, { TextDocument } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { ConversionType } from "../../../../Conversion/ConversionType.js"; import { ISettings } from "../../../../Properties/ISettings.js"; import { Settings } from "../../../../Properties/Settings.js"; @@ -15,7 +16,7 @@ import { TestConstants } from "../../../TestConstants.js"; import { TestConversionRunner } from "../../../TestConversionRunner.js"; const { resolve } = path; -const { Uri, window, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { Uri, window, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ConversionRunner `ConversionRunner`} class. diff --git a/src/tests/single-folder/System/Tasks/ChainTask.test.ts b/src/tests/single-folder/System/Tasks/ChainTask.test.ts index 909e3e20..d05cc977 100644 --- a/src/tests/single-folder/System/Tasks/ChainTask.test.ts +++ b/src/tests/single-folder/System/Tasks/ChainTask.test.ts @@ -6,6 +6,7 @@ import fs from "fs-extra"; import { Random } from "random-js"; import { createSandbox, SinonExpectation, SinonSandbox } from "sinon"; import vscode, { CancellationToken, Progress } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { ConversionType } from "../../../../Conversion/ConversionType.js"; import { IConvertedFile } from "../../../../Conversion/IConvertedFile.js"; import { ISettings } from "../../../../Properties/ISettings.js"; @@ -15,7 +16,7 @@ import { ITestContext } from "../../../ITestContext.js"; import { TestConstants } from "../../../TestConstants.js"; const { pathExists, readFile, remove } = fs; -const { window } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { window } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ChainTask `ChainTask`} class. diff --git a/src/tests/single-folder/System/Tasks/ConversionRunner.test.ts b/src/tests/single-folder/System/Tasks/ConversionRunner.test.ts index 18255f5f..e881a31b 100644 --- a/src/tests/single-folder/System/Tasks/ConversionRunner.test.ts +++ b/src/tests/single-folder/System/Tasks/ConversionRunner.test.ts @@ -1,11 +1,12 @@ import { strictEqual } from "node:assert"; import { createRequire } from "node:module"; import vscode, { TextDocument } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { ConversionRunner } from "../../../../System/Tasks/ConversionRunner.js"; import { TestConstants } from "../../../TestConstants.js"; import { TestConversionRunner } from "../../../TestConversionRunner.js"; -const { workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ConversionRunner `ConversionRunner`} class. diff --git a/src/tests/single-folder/System/Tasks/ConvertAllTask.test.ts b/src/tests/single-folder/System/Tasks/ConvertAllTask.test.ts index ffd94757..b7ec7594 100644 --- a/src/tests/single-folder/System/Tasks/ConvertAllTask.test.ts +++ b/src/tests/single-folder/System/Tasks/ConvertAllTask.test.ts @@ -5,6 +5,7 @@ import fs from "fs-extra"; import { createSandbox, SinonSandbox } from "sinon"; import path from "upath"; import vscode, { WorkspaceConfiguration } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { ConversionType } from "../../../../Conversion/ConversionType.js"; import { IConvertedFile } from "../../../../Conversion/IConvertedFile.js"; import { MarkdownFileNotFoundException } from "../../../../MarkdownFileNotFoundException.js"; @@ -16,7 +17,7 @@ import { TestConvertAllTask } from "../../../TestConvertAllTask.js"; const { pathExists } = fs; const { normalize } = path; -const { ConfigurationTarget, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { ConfigurationTarget, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ConvertAllTask `ConvertAllTask`} class. diff --git a/src/tests/workspace/System/Tasks/ConversionRunner.test.ts b/src/tests/workspace/System/Tasks/ConversionRunner.test.ts index 8cf13ce3..f85942cd 100644 --- a/src/tests/workspace/System/Tasks/ConversionRunner.test.ts +++ b/src/tests/workspace/System/Tasks/ConversionRunner.test.ts @@ -3,11 +3,12 @@ import { createRequire } from "node:module"; import { dirname, normalize } from "node:path"; import { TempFile } from "@manuth/temp-files"; import vscode, { TextDocument } from "vscode"; +import { Constants } from "../../../../Constants.js"; import { ConversionRunner } from "../../../../System/Tasks/ConversionRunner.js"; import { TestConstants } from "../../../TestConstants.js"; import { TestConversionRunner } from "../../../TestConversionRunner.js"; -const { Uri, workspace } = createRequire(import.meta.url)("vscode") as typeof vscode; +const { Uri, workspace } = createRequire(Constants.PackageURL)("vscode") as typeof vscode; /** * Registers tests for the {@link ConversionRunner `ConversionRunner`} class. From 7d43130311291a28a1d009a25e40b3af472a072e Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 14:23:56 +0200 Subject: [PATCH 03/17] Replace `.json` resources --- Resources/MarkdownConverter.de.json | 115 ---------------- Resources/MarkdownConverter.json | 121 ----------------- src/Properties/Resources.ts | 16 +-- .../Resources/MarkdownConverter.de.ts | 120 +++++++++++++++++ .../Resources/MarkdownConverter.inv.ts | 124 ++++++++++++++++++ 5 files changed, 248 insertions(+), 248 deletions(-) delete mode 100644 Resources/MarkdownConverter.de.json delete mode 100644 Resources/MarkdownConverter.json create mode 100644 src/Properties/Resources/MarkdownConverter.de.ts create mode 100644 src/Properties/Resources/MarkdownConverter.inv.ts diff --git a/Resources/MarkdownConverter.de.json b/Resources/MarkdownConverter.de.json deleted file mode 100644 index c9730bea..00000000 --- a/Resources/MarkdownConverter.de.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "SuccessMessage": "Die konvertierte {0}-Datei wurde erfolgreich nach \"{1}\" geschrieben.", - "OpenFileLabel": "Datei Öffnen", - "UncaughtException": "Ein unerwarteter Fehler ist aufgetreten", - "OperationCancelledException": "Der Vorgang wurde abgebrochen.", - "FileException": "Auf die Datei \"{0}\" konnte nicht zugegriffen werden.", - "FileNotFoundException": "Die Datei \"{0}\" konnte nicht gefunden werden.", - "NoConversionType": "Es wurde kein zu konvertierender Datei-Typ ausgewählt. Bitte überprüfen Sie Ihre Einstellungen.", - "MarkdownFileException": "Es konnte keine Markdown-Datei gefunden werden.", - "YAMLException": "Fehler: Der YAML-Block ist nicht richtig formatiert. Zeile {0}, Spalte {1}.", - "UnsupportedPlatformException": "Diese Funktion wird von Ihrer Platform nicht unterstützt!", - "NoWorkspaceFolderException": "Es ist kein Ordner geöffnet!", - "CustomBrowserNotFound": "Der in den Einstellungen festgelegte Chromium-Pfad existiert nicht.\nWollen Sie es erneut versuchen?", - "UpdateMessage": "Bevor Sie mit MarkdownConverter durchstarten können, muss Chromium gedownloadet werden.\nWollen Sie den Download starten?", - "Yes": "Ja", - "No": "Nein", - "UpdateRunning": "Chromium Version {0} wird heruntergeladen… Bitte warten…", - "UpdateSuccess": "Download abgeschlossen!\nSie sind nun bereit, um MarkdownConverter nutzen zu können!", - "UpdateFailed": "Der download ist fehlgeschlagen.\nMöglicherweise hilft es, \"http.proxy\" oder \"http.proxyStrictSSL\" zu deklarieren, falls Sie eine Proxy nutzen.\nWollen Sie den Download erneut starten?", - "DestinationPath": "Bitte geben Sie einen Ordner an, in dem Sie die Ausgabedatei ablegen wollen.", - "DestinationPathExample": "Bspw. C:\\Temp oder /tmp/", - "Progress": { - "LaunchWebserver": "Web-Server starten…", - "LaunchChromium": "Chromium-Browser starten…", - "ConversionStarting": "Die Konvertierung der Datei zum {0}-Typ wird gestartet…", - "ResolveFileName": "Ziel-Pfad bestimmen…", - "WriteHTML": "HTML-Datei generieren und schreiben…", - "Scrape": "Dateien und Ressourcen abrufen…", - "ScrapeFolder": "Abgerufene Dateien und Ressourcen in den Ziel-Ordner verschieben…", - "ChromiumPage": "Website in Chromium öffnen…", - "PDF": "PDF-Datei generieren…", - "Screenshot": "Screenshot aufnehmen…", - "ConverterFinished": "Die Konvertierung der {0}-Datei wurde erfolgreich abgeschlossen", - "SearchDocuments": "Markdown-Dokumente werden gesucht…", - "DocumentsFound": "{0} Markdown-Dokumente wurden gefunden", - "CollectionStep": "Dokument {0} von {1} wird konvertiert…", - "ChainDocuments": "Dokumente verketten…" - }, - "TaskTitle": { - "Convert": "Dokument Konvertieren", - "ConvertAll": "Alle Dokumente Konvertieren", - "Chain": "Alle Dokumente Verketten" - }, - "DateTime": { - "Era": { - "Before": "v. Chr.", - "After": "n. Chr." - }, - "DateSeparator": ".", - "Formats": { - "Default": "dd/MM/yyyy", - "FullDate": "dddd, d. MMMM yyyy" - }, - "DaysOfWeek": { - "ShortNames": [ - "Mo", - "Di", - "Mi", - "Do", - "Fr", - "Sa", - "So" - ], - "FullNames": [ - "Montag", - "Dienstag", - "Mittwoch", - "Donnerstag", - "Freitag", - "Samstag", - "Sonntag" - ] - }, - "Months": { - "ShortNames": [ - "Jan", - "Feb", - "Mär", - "Apr", - "Mai", - "Jun", - "Jul", - "Aug", - "Sep", - "Okt", - "Nov", - "Dez" - ], - "FullNames": [ - "Januar", - "Februar", - "März", - "April", - "Mai", - "Juni", - "Juli", - "August", - "September", - "Oktober", - "November", - "Dezember" - ] - }, - "TimeDesignator": { - "ShortNames": [ - "v", - "n" - ], - "FullNames": [ - "vorm.", - "nachm." - ] - } - } -} \ No newline at end of file diff --git a/Resources/MarkdownConverter.json b/Resources/MarkdownConverter.json deleted file mode 100644 index 99bfafc9..00000000 --- a/Resources/MarkdownConverter.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "SuccessMessage": "Successfully wrote the {0}-file to \"{1}\".", - "CollectionFinished": "The documents have been converted successfully. Do you want to show info about the files?", - "OpenFileLabel": "Open File", - "UncaughtException": "An unexpected error occurred", - "UnknownException": "{{UncaughtException}}:\n{0}: {1}", - "UnknownError": "{{UncaughtException}}:\n{0}", - "OperationCancelledException": "The operation has been cancelled.", - "FileException": "Couldn't access \"{0}\".", - "FileNotFoundException": "The file \"{0}\" couldn't be found.", - "NoConversionType": "No conversion type was selected. Please review your settings.", - "MarkdownFileException": "Couldn't find a markdown-file.", - "YAMLException": "The YAML-block is malformed. Line {0}, column {1}.", - "UnsupportedPlatformException": "This feature is not supported by your platform!", - "NoWorkspaceFolderException": "No workspace-folder is opened!", - "CustomBrowserNotFound": "The configured chromium-path does not exist. You might want to review this setting.\nDo you want to retry?", - "UpdateMessage": "Before you can get started with MarkdownConverter you need to download chromium.\nDo you want to do this now?", - "Yes": "Yes", - "No": "No", - "UpdateRunning": "Downloading Chromium revision {0}… Please wait…", - "UpdateSuccess": "The download was successful!\nYou are ready to use MarkdownConverter now!", - "UpdateFailed": "The download failed.\nYou may want to declare \"http.proxy\" or \"http.proxyStrictSSL\" if you're using a proxy.\nDo you want to retry the download?", - "DestinationPath": "Please specify a destination-path to save the document to.", - "DestinationPathExample": "e.g. C:\\Temp or /tmp/", - "DocumentName": "Please specify the name of the document to create.", - "DocumentNameExample": "e.g. Handbook or Manual", - "Progress": { - "LaunchWebserver": "Initializing a web-server…", - "LaunchChromium": "Launching a chromium-instance…", - "ConversionStarting": "Starting to convert the file to the {0}-type…", - "ResolveFileName": "Resolving the destination-filename…", - "WriteHTML": "Rendering and writing html-file…", - "Scrape": "Scraping all files and resources…", - "ScrapeFolder": "Moving the scraped files to the correct folder…", - "ChromiumPage": "Launching the page in chromium…", - "PDF": "Rendering a PDF-file…", - "Screenshot": "Taking a screenshot…", - "ConverterFinished": "The conversion of the {0}-file has finished", - "SearchDocuments": "Searching for markdown-documents…", - "DocumentsFound": "Found {0} markdown-documents", - "CollectionStep": "Converting document {0} out of {1}…", - "ChainDocuments": "Chaining all documents together…" - }, - "TaskTitle": { - "Convert": "Convert Document", - "ConvertAll": "Convert all Documents", - "Chain": "Chain all Documents" - }, - "DateTime": { - "Era": { - "Before": "B.C.", - "After": "A.D." - }, - "TimeSeparator": ":", - "DateSeparator": "-", - "Formats": { - "Default": "yyyy/MM/dd", - "FullDate": "dddd, MMMM d, yyyy" - }, - "DaysOfWeek": { - "ShortNames": [ - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat", - "Sun" - ], - "FullNames": [ - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday", - "Sunday" - ] - }, - "Months": { - "ShortNames": [ - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec" - ], - "FullNames": [ - "January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December" - ] - }, - "TimeDesignator": { - "ShortNames": [ - "A", - "P" - ], - "FullNames": [ - "AM", - "PM" - ] - } - } -} diff --git a/src/Properties/Resources.ts b/src/Properties/Resources.ts index f8614660..39218dd4 100644 --- a/src/Properties/Resources.ts +++ b/src/Properties/Resources.ts @@ -1,10 +1,7 @@ -import { join } from "node:path"; -import { fileURLToPath } from "node:url"; import { CultureInfo, IResourceManager, MustacheResourceManager, Resource, ResourceManager } from "@manuth/resource-manager"; -import fs from "fs-extra"; import { Files } from "./Files.js"; - -const { readJSONSync } = fs; +import { MarkdownConverterGerman } from "./Resources/MarkdownConverter.de.js"; +import { MarkdownConverterInvariant } from "./Resources/MarkdownConverter.inv.js"; /** * Represents the resources of the module. @@ -37,16 +34,11 @@ export class Resources { if (this.resources === null) { - let dirName = fileURLToPath(new URL(".", import.meta.url)); - this.resources = new MustacheResourceManager( new ResourceManager( [ - new Resource(readJSONSync(join(dirName, "..", "..", "Resources", "MarkdownConverter.json"))), - new Resource( - readJSONSync( - join(dirName, "..", "..", "Resources", "MarkdownConverter.de.json")), - new CultureInfo("de")) + new Resource(MarkdownConverterInvariant), + new Resource(MarkdownConverterGerman, new CultureInfo("de")) ])); } diff --git a/src/Properties/Resources/MarkdownConverter.de.ts b/src/Properties/Resources/MarkdownConverter.de.ts new file mode 100644 index 00000000..092476a3 --- /dev/null +++ b/src/Properties/Resources/MarkdownConverter.de.ts @@ -0,0 +1,120 @@ +import { MarkdownConverterInvariant } from "./MarkdownConverter.inv.js"; + +/** + * Provides resources for the German culture. + */ +export let MarkdownConverterGerman: Partial> = { + SuccessMessage: "Die konvertierte {0}-Datei wurde erfolgreich nach \"{1}\" geschrieben.", + OpenFileLabel: "Datei Öffnen", + UncaughtException: "Ein unerwarteter Fehler ist aufgetreten", + OperationCancelledException: "Der Vorgang wurde abgebrochen.", + FileException: "Auf die Datei \"{0}\" konnte nicht zugegriffen werden.", + FileNotFoundException: "Die Datei \"{0}\" konnte nicht gefunden werden.", + NoConversionType: "Es wurde kein zu konvertierender Datei-Typ ausgewählt. Bitte überprüfen Sie Ihre Einstellungen.", + MarkdownFileException: "Es konnte keine Markdown-Datei gefunden werden.", + YAMLException: "Fehler: Der YAML-Block ist nicht richtig formatiert. Zeile {0}, Spalte {1}.", + UnsupportedPlatformException: "Diese Funktion wird von Ihrer Platform nicht unterstützt!", + NoWorkspaceFolderException: "Es ist kein Ordner geöffnet!", + CustomBrowserNotFound: "Der in den Einstellungen festgelegte Chromium-Pfad existiert nicht.\nWollen Sie es erneut versuchen?", + UpdateMessage: "Bevor Sie mit MarkdownConverter durchstarten können, muss Chromium gedownloadet werden.\nWollen Sie den Download starten?", + Yes: "Ja", + No: "Nein", + UpdateRunning: "Chromium Version {0} wird heruntergeladen… Bitte warten…", + UpdateSuccess: "Download abgeschlossen!\nSie sind nun bereit, um MarkdownConverter nutzen zu können!", + UpdateFailed: "Der download ist fehlgeschlagen.\nMöglicherweise hilft es, \"http.proxy\" oder \"http.proxyStrictSSL\" zu deklarieren, falls Sie eine Proxy nutzen.\nWollen Sie den Download erneut starten?", + DestinationPath: "Bitte geben Sie einen Ordner an, in dem Sie die Ausgabedatei ablegen wollen.", + DestinationPathExample: "Bspw. C:\\Temp oder /tmp/", + Progress: { + LaunchWebserver: "Web-Server starten…", + LaunchChromium: "Chromium-Browser starten…", + ConversionStarting: "Die Konvertierung der Datei zum {0}-Typ wird gestartet…", + ResolveFileName: "Ziel-Pfad bestimmen…", + WriteHTML: "HTML-Datei generieren und schreiben…", + Scrape: "Dateien und Ressourcen abrufen…", + ScrapeFolder: "Abgerufene Dateien und Ressourcen in den Ziel-Ordner verschieben…", + ChromiumPage: "Website in Chromium öffnen…", + PDF: "PDF-Datei generieren…", + Screenshot: "Screenshot aufnehmen…", + ConverterFinished: "Die Konvertierung der {0}-Datei wurde erfolgreich abgeschlossen", + SearchDocuments: "Markdown-Dokumente werden gesucht…", + DocumentsFound: "{0} Markdown-Dokumente wurden gefunden", + CollectionStep: "Dokument {0} von {1} wird konvertiert…", + ChainDocuments: "Dokumente verketten…" + }, + TaskTitle: { + Convert: "Dokument Konvertieren", + ConvertAll: "Alle Dokumente Konvertieren", + Chain: "Alle Dokumente Verketten" + }, + DateTime: { + Era: { + Before: "v. Chr.", + After: "n. Chr." + }, + DateSeparator: ".", + Formats: { + Default: "dd/MM/yyyy", + FullDate: "dddd, d. MMMM yyyy" + }, + DaysOfWeek: { + ShortNames: [ + "Mo", + "Di", + "Mi", + "Do", + "Fr", + "Sa", + "So" + ], + FullNames: [ + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag", + "Sonntag" + ] + }, + Months: { + ShortNames: [ + "Jan", + "Feb", + "Mär", + "Apr", + "Mai", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Dez" + ], + FullNames: [ + "Januar", + "Februar", + "März", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ] + }, + TimeDesignator: { + ShortNames: [ + "v", + "n" + ], + FullNames: [ + "vorm.", + "nachm." + ] + } + } +}; diff --git a/src/Properties/Resources/MarkdownConverter.inv.ts b/src/Properties/Resources/MarkdownConverter.inv.ts new file mode 100644 index 00000000..9913292c --- /dev/null +++ b/src/Properties/Resources/MarkdownConverter.inv.ts @@ -0,0 +1,124 @@ +/** + * Provides resources for the invariant culture. + */ +export let MarkdownConverterInvariant = { + SuccessMessage: "Successfully wrote the {0}-file to \"{1}\".", + CollectionFinished: "The documents have been converted successfully. Do you want to show info about the files?", + OpenFileLabel: "Open File", + UncaughtException: "An unexpected error occurred", + UnknownException: "{{UncaughtException}}:\n{0}: {1}", + UnknownError: "{{UncaughtException}}:\n{0}", + OperationCancelledException: "The operation has been cancelled.", + FileException: "Couldn't access \"{0}\".", + FileNotFoundException: "The file \"{0}\" couldn't be found.", + NoConversionType: "No conversion type was selected. Please review your settings.", + MarkdownFileException: "Couldn't find a markdown-file.", + YAMLException: "The YAML-block is malformed. Line {0}, column {1}.", + UnsupportedPlatformException: "This feature is not supported by your platform!", + NoWorkspaceFolderException: "No workspace-folder is opened!", + CustomBrowserNotFound: "The configured chromium-path does not exist. You might want to review this setting.\nDo you want to retry?", + UpdateMessage: "Before you can get started with MarkdownConverter you need to download chromium.\nDo you want to do this now?", + Yes: "Yes", + No: "No", + UpdateRunning: "Downloading Chromium revision {0}… Please wait…", + UpdateSuccess: "The download was successful!\nYou are ready to use MarkdownConverter now!", + UpdateFailed: "The download failed.\nYou may want to declare \"http.proxy\" or \"http.proxyStrictSSL\" if you're using a proxy.\nDo you want to retry the download?", + DestinationPath: "Please specify a destination-path to save the document to.", + DestinationPathExample: "e.g. C:\\Temp or /tmp/", + DocumentName: "Please specify the name of the document to create.", + DocumentNameExample: "e.g. Handbook or Manual", + Progress: { + LaunchWebserver: "Initializing a web-server…", + LaunchChromium: "Launching a chromium-instance…", + ConversionStarting: "Starting to convert the file to the {0}-type…", + ResolveFileName: "Resolving the destination-filename…", + WriteHTML: "Rendering and writing html-file…", + Scrape: "Scraping all files and resources…", + ScrapeFolder: "Moving the scraped files to the correct folder…", + ChromiumPage: "Launching the page in chromium…", + PDF: "Rendering a PDF-file…", + Screenshot: "Taking a screenshot…", + ConverterFinished: "The conversion of the {0}-file has finished", + SearchDocuments: "Searching for markdown-documents…", + DocumentsFound: "Found {0} markdown-documents", + CollectionStep: "Converting document {0} out of {1}…", + ChainDocuments: "Chaining all documents together…" + }, + TaskTitle: { + Convert: "Convert Document", + ConvertAll: "Convert all Documents", + Chain: "Chain all Documents" + }, + DateTime: { + Era: { + Before: "B.C.", + After: "A.D." + }, + TimeSeparator: ":", + DateSeparator: "-", + Formats: { + Default: "yyyy/MM/dd", + FullDate: "dddd, MMMM d, yyyy" + }, + DaysOfWeek: { + ShortNames: [ + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", + "Sun" + ], + FullNames: [ + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ] + }, + Months: { + ShortNames: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + FullNames: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ] + }, + TimeDesignator: { + ShortNames: [ + "A", + "P" + ], + FullNames: [ + "AM", + "PM" + ] + } + } +}; From bc898451b5c29e38866856e0aa3f370be7b96879 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 14:26:22 +0200 Subject: [PATCH 04/17] Add a changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae699118..e86a1130 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## MarkdownConverter [Unreleased] +### Fixed + - Windows compatiblility issues [Show differences](https://github.com/manuth/MarkdownConverter/compare/v5.2.0...dev) From 716672d79024fa1ccab58c13c8c0cb8417d087af Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 15:16:58 +0200 Subject: [PATCH 05/17] Automatically select proper `externals` type --- webpack.config.cts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/webpack.config.cts b/webpack.config.cts index 1f6c8cbc..ed30cae5 100644 --- a/webpack.config.cts +++ b/webpack.config.cts @@ -79,7 +79,18 @@ export = (env: any, argv: any): Configuration[] => return normalize(filePath) === normalize(externalFile); })) { - result = `import ${request}`; + let type: string; + + if (request.endsWith(".cjs")) + { + type = "node-commonjs"; + } + else + { + type = "import"; + } + + result = `${type} ${request}`; } } catch From 0e6d380ca7b1ccb976c2e918769ed51af78a38de Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 15:17:37 +0200 Subject: [PATCH 06/17] Move `InternalConstants` to separate file --- webpack.config.cts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/webpack.config.cts b/webpack.config.cts index ed30cae5..8684aca7 100644 --- a/webpack.config.cts +++ b/webpack.config.cts @@ -12,6 +12,10 @@ export = (env: any, argv: any): Configuration[] => "vscode" ]; + let commonAssets = [ + join(sourceRoot, "InternalConstants.cts") + ]; + let commonTestAssets = [ join(sourceRoot, "test", "SuiteVarName.ts"), join(sourceRoot, "test", "SuiteSet.ts"), @@ -113,7 +117,7 @@ export = (env: any, argv: any): Configuration[] => } }, devtool: "source-map", - externals: getExternalsResolver([]), + externals: getExternalsResolver(commonAssets), resolve: { extensions: [ ".ts", @@ -194,6 +198,18 @@ export = (env: any, argv: any): Configuration[] => }; return [ + { + ...configBase, + entry: { + InternalConstants: join(sourceRoot, "InternalConstants.cts") + }, + externals: getExternalsResolver([]), + output: { + ...configBase.output, + libraryTarget: "commonjs2", + filename: "[name].cjs" + } + }, { ...configBase, entry, @@ -229,7 +245,7 @@ export = (env: any, argv: any): Configuration[] => filename: "[name].cjs" } }, - externals: getExternalsResolver(commonTestAssets), + externals: getExternalsResolver([...commonAssets, ...commonTestAssets]), output: { ...configBase.output, libraryTarget: "commonjs2", From e1b3c10b767f35eb671a0672b6c264422e267fb8 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 20:43:19 +0200 Subject: [PATCH 07/17] Fix malformed external import paths --- webpack.config.cts | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/webpack.config.cts b/webpack.config.cts index 8684aca7..41678dbb 100644 --- a/webpack.config.cts +++ b/webpack.config.cts @@ -1,5 +1,5 @@ -import { dirname, join, parse, relative, resolve } from "node:path"; -import { normalize } from "upath"; +import { dirname, parse, relative, resolve } from "node:path"; +import { join, normalize } from "upath"; import { Configuration, WatchIgnorePlugin } from "webpack"; export = (env: any, argv: any): Configuration[] => @@ -57,10 +57,13 @@ export = (env: any, argv: any): Configuration[] => * @param externalFiles * The files which should be lazy loaded. * + * @param contextRoot + * The root of the context to resolve the specified {@link externalFiles `externalFiles`} to. + * * @returns * An object indicating the external sources. */ - let getExternalsResolver: (externalFiles: string[]) => Configuration["externals"] = (externalFiles) => + let getExternalsResolver: (externalFiles: string[], contextRoot?: string) => Configuration["externals"] = (externalFiles, contextRoot?) => { return async ({ context, request, getResolve }, _) => { @@ -72,6 +75,18 @@ export = (env: any, argv: any): Configuration[] => } else { + let prefix: string; + + if (contextRoot) + { + prefix = relative(contextRoot, context); + + if (prefix.length === 0 || prefix === ".") + { + prefix = null; + } + } + try { let filePath: string = await getResolve()(context, request, undefined) as string; @@ -94,6 +109,11 @@ export = (env: any, argv: any): Configuration[] => type = "import"; } + if (prefix) + { + request = join(prefix, request); + } + result = `${type} ${request}`; } } @@ -213,6 +233,7 @@ export = (env: any, argv: any): Configuration[] => { ...configBase, entry, + externals: getExternalsResolver(commonAssets, join(sourceRoot, "test")), output: { ...configBase.output, libraryTarget: "module", From 2a5053fdddabc1befe7cea15845ba40a19ae9d5d Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 20:43:26 +0200 Subject: [PATCH 08/17] Fix broken debug settings --- MarkdownConverter.code-workspace | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/MarkdownConverter.code-workspace b/MarkdownConverter.code-workspace index 687ed09d..d1d96862 100644 --- a/MarkdownConverter.code-workspace +++ b/MarkdownConverter.code-workspace @@ -91,7 +91,7 @@ "args": [ "${workspaceFolder:MarkdownConverter}/src/test/single-folder", "--extensionDevelopmentPath=${workspaceFolder:MarkdownConverter}", - "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test" + "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test/index.cjs" ], "env": { "TEST_SUITE": "essentials" @@ -112,7 +112,7 @@ "args": [ "${workspaceFolder:MarkdownConverter}/src/test/single-folder", "--extensionDevelopmentPath=${workspaceFolder:MarkdownConverter}", - "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test" + "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test/index.cjs" ], "env": { "TEST_SUITE": "common" @@ -133,7 +133,7 @@ "args": [ "${workspaceFolder:MarkdownConverter}/src/test/single-file/Test.md", "--extensionDevelopmentPath=${workspaceFolder:MarkdownConverter}", - "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test" + "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test/index.cjs" ], "env": { "TEST_SUITE": "single-file" @@ -154,7 +154,7 @@ "args": [ "${workspaceFolder:MarkdownConverter}/src/test/single-folder", "--extensionDevelopmentPath=${workspaceFolder:MarkdownConverter}", - "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test" + "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test/index.cjs" ], "env": { "TEST_SUITE": "single-folder" @@ -175,7 +175,7 @@ "args": [ "${workspaceFolder:MarkdownConverter}/src/test/workspace/workspace.code-workspace", "--extensionDevelopmentPath=${workspaceFolder:MarkdownConverter}", - "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test" + "--extensionTestsPath=${workspaceFolder:MarkdownConverter}/lib/test/index.cjs" ], "env": { "TEST_SUITE": "workspace" From dc3d288b5748eb35966389110b76ba6a389be5cf Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Tue, 27 Sep 2022 20:51:29 +0200 Subject: [PATCH 09/17] Fix broken `ConverterPlugin` --- src/Conversion/ConverterPlugin.ts | 4 ++-- src/byType.d.ts | 2 ++ tsconfig.base.json | 3 +++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 src/byType.d.ts diff --git a/src/Conversion/ConverterPlugin.ts b/src/Conversion/ConverterPlugin.ts index f908c9d7..e2d9eaef 100644 --- a/src/Conversion/ConverterPlugin.ts +++ b/src/Conversion/ConverterPlugin.ts @@ -1,7 +1,7 @@ -import { createRequire } from "node:module"; import { Browser } from "puppeteer-core"; import path from "upath"; import utf8 from "utf8"; +import byType from "website-scraper/lib/filename-generator/by-type.js"; import { Constants } from "../Constants.js"; import { Converter } from "./Converter.js"; @@ -132,7 +132,7 @@ export class ConverterPlugin ({ resource }) => { let result: string; - let filename: string = createRequire(Constants.PackageURL)("website-scraper/lib/filename-generator/by-type")( + let filename: string = byType( resource, { subdirectories, diff --git a/src/byType.d.ts b/src/byType.d.ts new file mode 100644 index 00000000..35d5ceba --- /dev/null +++ b/src/byType.d.ts @@ -0,0 +1,2 @@ +declare let byType: any; +export default byType; diff --git a/tsconfig.base.json b/tsconfig.base.json index c84ba002..a75b0a31 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -20,6 +20,9 @@ ], "highlight.js": [ "./node_modules/highlight.js/types/index.d.ts" + ], + "website-scraper/lib/filename-generator/by-type.js": [ + "./src/byType.d.ts" ] } } From 4b0dec167ac4e3945e25eb29aa84016410638b26 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Sep 2022 00:16:19 +0200 Subject: [PATCH 10/17] Add changelog entries --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e86a1130..dd0f599b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## MarkdownConverter [Unreleased] ### Fixed - - Windows compatiblility issues + - Broken `require` calls + - `Resources` by dropping `.json` files [Show differences](https://github.com/manuth/MarkdownConverter/compare/v5.2.0...dev) From bcf06b0080e033cd5af3aabcbc84cb8a665a222f Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Sep 2022 00:17:59 +0200 Subject: [PATCH 11/17] Rename variables in `webpack.config.ts` properly --- webpack.config.cts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/webpack.config.cts b/webpack.config.cts index 41678dbb..f486692f 100644 --- a/webpack.config.cts +++ b/webpack.config.cts @@ -22,7 +22,7 @@ export = (env: any, argv: any): Configuration[] => join(sourceRoot, "test", "ConfigStore.ts") ]; - let entryPoints: string[] = [ + let testAssets: string[] = [ ...( argv.mode === "development" ? [ @@ -39,16 +39,16 @@ export = (env: any, argv: any): Configuration[] => ]; let externals: Record = {}; - let entry: Record = {}; + let testEntry: Record = {}; for (let externalModule of externalModules) { externals[externalModule] = `node-commonjs ${externalModule}`; } - for (let entryPoint of entryPoints) + for (let entryPoint of testAssets) { - entry[join(relative(sourceRoot, dirname(entryPoint)), parse(entryPoint).name)] = entryPoint; + testEntry[join(relative(sourceRoot, dirname(entryPoint)), parse(entryPoint).name)] = entryPoint; } /** @@ -232,7 +232,7 @@ export = (env: any, argv: any): Configuration[] => }, { ...configBase, - entry, + entry: testEntry, externals: getExternalsResolver(commonAssets, join(sourceRoot, "test")), output: { ...configBase.output, From 5c8d3e579910d3346d461c7c358e6f20eda87495 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Sep 2022 00:26:51 +0200 Subject: [PATCH 12/17] Fix outdated script --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index de9798ca..94cb1d1c 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "clean": "npm run build -- --clean && rimraf ./lib", "lint": "eslint --max-warnings 0 ./src .eslintrc.cjs webpack.config.cts", "lint-ide": "npm run lint || exit 0", - "test": "node ./lib/test/runTests", + "test": "node ./lib/test/runTests.js", "prepare": "npm run patch-ts && npm run rebuild", "patch-ts": "ts-patch install" }, From c2e18381f80c820eba983a717d005d78f4987933 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Sep 2022 00:37:18 +0200 Subject: [PATCH 13/17] Fix broken log-message filter --- src/test/runTests.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/test/runTests.ts b/src/test/runTests.ts index 8ca108ee..b113cd4a 100644 --- a/src/test/runTests.ts +++ b/src/test/runTests.ts @@ -11,22 +11,24 @@ import { SuiteSet } from "./SuiteSet.js"; for ( let key of [ - "log", - "error" - ] as Array) + "stdout", + "stderr" + ] as Array) { - let expectation = sandbox.mock(console).expects(key); + let originalStream: NodeJS.WriteStream = process[key] as any; + let expectation = sandbox.mock(originalStream).expects("write"); expectation.atLeast(0); expectation.callsFake( - (message: any, ...optionalParams: any[]) => + (...args) => { + const [message] = args; let method = expectation.wrappedMethod; - method = method.bind(console); + method = method.bind(originalStream); if (!/^\[\d*:\d*\/\d*\.\d*:ERROR:.*\(\d*\)\]/.test(message)) { - method(message, ...optionalParams); + method(...args); } else { From bdf22da59bda14929f0494da7a648dd07350b41a Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Sep 2022 00:37:43 +0200 Subject: [PATCH 14/17] Always show number of filtered log-messages --- src/test/runTests.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/test/runTests.ts b/src/test/runTests.ts index b113cd4a..2f1e69c9 100644 --- a/src/test/runTests.ts +++ b/src/test/runTests.ts @@ -5,6 +5,7 @@ import { SuiteSet } from "./SuiteSet.js"; (async function main() { + let forceExit = false; let sandbox = createSandbox(); let errorMessageCount = 0; let commonArgs = process.argv.slice(2); @@ -56,11 +57,16 @@ import { SuiteSet } from "./SuiteSet.js"; { console.error(exception); console.error("Failed to run tests"); - process.exit(1); + forceExit = true; } finally { sandbox.restore(); console.log(`Filtered ${errorMessageCount} unnecessary error-message${errorMessageCount === 1 ? "" : "s"}`); + + if (forceExit) + { + process.exit(1); + } } })(); From 6227710a3a0449f002929438b8b8bc9c4bd3a372 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Sep 2022 00:38:04 +0200 Subject: [PATCH 15/17] Reverb message on filtered logs --- src/test/runTests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/runTests.ts b/src/test/runTests.ts index 2f1e69c9..2a33c538 100644 --- a/src/test/runTests.ts +++ b/src/test/runTests.ts @@ -62,7 +62,7 @@ import { SuiteSet } from "./SuiteSet.js"; finally { sandbox.restore(); - console.log(`Filtered ${errorMessageCount} unnecessary error-message${errorMessageCount === 1 ? "" : "s"}`); + console.log(`Filtered ${errorMessageCount} unnecessary log-message${errorMessageCount === 1 ? "" : "s"}`); if (forceExit) { From 8780d5105f716be57d585911a4d57373df878185 Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Sep 2022 00:38:57 +0200 Subject: [PATCH 16/17] Update the changelog --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd0f599b..6f870b4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## MarkdownConverter [Unreleased] + +[Show differences](https://github.com/manuth/MarkdownConverter/compare/v5.2.1...dev) + +## MarkdownConverter v5.2.1 ### Fixed - Broken `require` calls - `Resources` by dropping `.json` files -[Show differences](https://github.com/manuth/MarkdownConverter/compare/v5.2.0...dev) +[Show differences](https://github.com/manuth/MarkdownConverter/compare/v5.2.0...v5.2.1) ## MarkdownConverter v5.2.0 ### Fixed From 5c19107126bf274aaf60ca7ff192405ab8e32d0d Mon Sep 17 00:00:00 2001 From: Manuel Thalmann Date: Wed, 28 Sep 2022 00:39:13 +0200 Subject: [PATCH 17/17] Bump the version number --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31f6d590..f92f539b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "markdown-converter", - "version": "5.2.0", + "version": "5.2.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "markdown-converter", - "version": "5.2.0", + "version": "5.2.1", "license": "MIT", "dependencies": { "@manuth/package-json-editor": "^3.0.2", diff --git a/package.json b/package.json index 94cb1d1c..8208c2da 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "markdown-converter", - "version": "5.2.0", + "version": "5.2.1", "type": "module", "private": true, "description": "A markdown-converter for vscode",