summaryrefslogtreecommitdiff
path: root/packages/backend/test/loader.js
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-02-27 11:07:39 +0900
committerGitHub <noreply@github.com>2022-02-27 11:07:39 +0900
commitd071d18dd7a394298d454d4ef6c5ca885164dd47 (patch)
tree1de916def26c5e6a672e2e8efe5c842bd410fd0e /packages/backend/test/loader.js
parentfix: better language settings (diff)
downloadmisskey-d071d18dd7a394298d454d4ef6c5ca885164dd47.tar.gz
misskey-d071d18dd7a394298d454d4ef6c5ca885164dd47.tar.bz2
misskey-d071d18dd7a394298d454d4ef6c5ca885164dd47.zip
refactor: Use ESM (#8358)
* wip * wip * fix * clean up * Update tsconfig.json * Update activitypub.ts * wip
Diffstat (limited to 'packages/backend/test/loader.js')
-rw-r--r--packages/backend/test/loader.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/packages/backend/test/loader.js b/packages/backend/test/loader.js
new file mode 100644
index 0000000000..016f32f1a8
--- /dev/null
+++ b/packages/backend/test/loader.js
@@ -0,0 +1,37 @@
+import path from 'path'
+import typescript from 'typescript'
+import { createMatchPath } from 'tsconfig-paths'
+import { resolve as BaseResolve, getFormat, transformSource } from 'ts-node/esm'
+
+const { readConfigFile, parseJsonConfigFileContent, sys } = typescript
+
+const __dirname = path.dirname(new URL(import.meta.url).pathname)
+
+const configFile = readConfigFile('./test/tsconfig.json', sys.readFile)
+if (typeof configFile.error !== 'undefined') {
+ throw new Error(`Failed to load tsconfig: ${configFile.error}`)
+}
+
+const { options } = parseJsonConfigFileContent(
+ configFile.config,
+ {
+ fileExists: sys.fileExists,
+ readFile: sys.readFile,
+ readDirectory: sys.readDirectory,
+ useCaseSensitiveFileNames: true,
+ },
+ __dirname
+)
+
+export { getFormat, transformSource } // こいつらはそのまま使ってほしいので re-export する
+
+const matchPath = createMatchPath(options.baseUrl, options.paths)
+
+export async function resolve(specifier, context, defaultResolve) {
+ const matchedSpecifier = matchPath(specifier.replace('.js', '.ts'))
+ return BaseResolve( // ts-node/esm の resolve に tsconfig-paths で解決したパスを渡す
+ matchedSpecifier ? `${matchedSpecifier}.ts` : specifier,
+ context,
+ defaultResolve
+ )
+}