summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKagami Sascha Rosylight <saschanaz@outlook.com>2023-07-09 10:19:07 +0200
committerGitHub <noreply@github.com>2023-07-09 17:19:07 +0900
commit59046d583dc1ef216760b83012ef9d876407ae38 (patch)
tree14fe2476f851d37ede353ed2045824aa001fb43a
parentrefactor(backend): skip fetching notes when the data is same-origin (#11200) (diff)
downloadmisskey-59046d583dc1ef216760b83012ef9d876407ae38.tar.gz
misskey-59046d583dc1ef216760b83012ef9d876407ae38.tar.bz2
misskey-59046d583dc1ef216760b83012ef9d876407ae38.zip
refactor(locales, sw): use es module (#11204)
* refactor(locales): use es module * fix sw build * fix gulp * try fixing storybook * Revert "try fixing storybook" This reverts commit 5f2a4eee016776381a7d80407e28d129c252228f. * try fixing storybook 2 * Update main.ts * Update build.js * Update main.ts * Update changes.ts * fix sw lint * Update build.js
-rw-r--r--gulpfile.mjs (renamed from gulpfile.js)14
-rw-r--r--locales/generateDTS.js8
-rw-r--r--locales/index.js8
-rw-r--r--locales/package.json3
-rw-r--r--packages/frontend/.storybook/changes.ts9
-rw-r--r--packages/frontend/.storybook/main.ts9
-rw-r--r--packages/frontend/.storybook/package.json3
-rw-r--r--packages/frontend/.storybook/preload-locale.ts7
-rw-r--r--packages/frontend/.storybook/preload-theme.ts7
-rw-r--r--packages/frontend/.storybook/preview.ts8
-rw-r--r--packages/frontend/.storybook/tsconfig.json2
-rw-r--r--packages/sw/.eslintrc.cjs (renamed from packages/sw/.eslintrc.js)0
-rw-r--r--packages/sw/build.js9
-rw-r--r--packages/sw/package.json3
14 files changed, 54 insertions, 36 deletions
diff --git a/gulpfile.js b/gulpfile.mjs
index 6507aad60e..9556eb795f 100644
--- a/gulpfile.js
+++ b/gulpfile.mjs
@@ -2,14 +2,14 @@
* Gulp tasks
*/
-const fs = require('fs');
-const gulp = require('gulp');
-const replace = require('gulp-replace');
-const terser = require('gulp-terser');
-const cssnano = require('gulp-cssnano');
+import * as fs from 'node:fs';
+import gulp from 'gulp';
+import replace from 'gulp-replace';
+import terser from 'gulp-terser';
+import cssnano from 'gulp-cssnano';
-const locales = require('./locales');
-const meta = require('./package.json');
+import locales from './locales/index.js';
+import meta from './package.json' assert { type: "json" };
gulp.task('copy:backend:views', () =>
gulp.src('./packages/backend/src/server/web/views/**/*').pipe(gulp.dest('./packages/backend/built/server/web/views'))
diff --git a/locales/generateDTS.js b/locales/generateDTS.js
index 5949aee7cd..bc98276325 100644
--- a/locales/generateDTS.js
+++ b/locales/generateDTS.js
@@ -1,6 +1,6 @@
-const fs = require('fs');
-const yaml = require('js-yaml');
-const ts = require('typescript');
+import * as fs from 'node:fs';
+import * as yaml from 'js-yaml';
+import * as ts from 'typescript';
function createMembers(record) {
return Object.entries(record)
@@ -14,7 +14,7 @@ function createMembers(record) {
));
}
-module.exports = function generateDTS() {
+export default function generateDTS() {
const locale = yaml.load(fs.readFileSync(`${__dirname}/ja-JP.yml`, 'utf-8'));
const members = createMembers(locale);
const elements = [
diff --git a/locales/index.js b/locales/index.js
index 2248bb6ac9..7801f1275b 100644
--- a/locales/index.js
+++ b/locales/index.js
@@ -2,8 +2,8 @@
* Languages Loader
*/
-const fs = require('fs');
-const yaml = require('js-yaml');
+import * as fs from 'node:fs';
+import * as yaml from 'js-yaml';
const merge = (...args) => args.reduce((a, c) => ({
...a,
@@ -51,9 +51,9 @@ const primaries = {
// 何故か文字列にバックスペース文字が混入することがあり、YAMLが壊れるので取り除く
const clean = (text) => text.replace(new RegExp(String.fromCodePoint(0x08), 'g'), '');
-const locales = languages.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(`${__dirname}/${c}.yml`, 'utf-8'))) || {}, a), {});
+const locales = languages.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(new URL(`${c}.yml`, import.meta.url), 'utf-8'))) || {}, a), {});
-module.exports = Object.entries(locales)
+export default Object.entries(locales)
.reduce((a, [k ,v]) => (a[k] = (() => {
const [lang] = k.split('-');
switch (k) {
diff --git a/locales/package.json b/locales/package.json
new file mode 100644
index 0000000000..bedb411a91
--- /dev/null
+++ b/locales/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}
diff --git a/packages/frontend/.storybook/changes.ts b/packages/frontend/.storybook/changes.ts
index fc0f0c286b..a1275132be 100644
--- a/packages/frontend/.storybook/changes.ts
+++ b/packages/frontend/.storybook/changes.ts
@@ -1,7 +1,10 @@
import fs from 'node:fs/promises';
+import { fileURLToPath } from 'node:url';
import path from 'node:path';
import micromatch from 'micromatch';
-import main from './main';
+import main from './main.js';
+
+const __dirname = fileURLToPath(new URL('.', import.meta.url));
interface Stats {
readonly modules: readonly {
@@ -13,8 +16,8 @@ interface Stats {
}[];
}
-fs.readFile(
- path.resolve(__dirname, '../storybook-static/preview-stats.json')
+await fs.readFile(
+ new URL('../storybook-static/preview-stats.json', import.meta.url)
).then((buffer) => {
const stats: Stats = JSON.parse(buffer.toString());
const keys = new Set(stats.modules.map((stat) => stat.id));
diff --git a/packages/frontend/.storybook/main.ts b/packages/frontend/.storybook/main.ts
index 1d0ce5ab63..b64979980a 100644
--- a/packages/frontend/.storybook/main.ts
+++ b/packages/frontend/.storybook/main.ts
@@ -1,7 +1,11 @@
import { resolve } from 'node:path';
+import { fileURLToPath } from 'node:url';
import type { StorybookConfig } from '@storybook/vue3-vite';
import { type Plugin, mergeConfig } from 'vite';
import turbosnap from 'vite-plugin-turbosnap';
+
+const dirname = fileURLToPath(new URL('.', import.meta.url));
+
const config = {
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: [
@@ -9,7 +13,7 @@ const config = {
'@storybook/addon-interactions',
'@storybook/addon-links',
'@storybook/addon-storysource',
- resolve(__dirname, '../node_modules/storybook-addon-misskey-theme'),
+ resolve(dirname, '../node_modules/storybook-addon-misskey-theme'),
],
framework: {
name: '@storybook/vue3-vite',
@@ -28,7 +32,8 @@ const config = {
}
return mergeConfig(config, {
plugins: [
- turbosnap({
+ // XXX: https://github.com/IanVS/vite-plugin-turbosnap/issues/8
+ (turbosnap as any as typeof turbosnap['default'])({
rootDir: config.root ?? process.cwd(),
}),
],
diff --git a/packages/frontend/.storybook/package.json b/packages/frontend/.storybook/package.json
new file mode 100644
index 0000000000..bedb411a91
--- /dev/null
+++ b/packages/frontend/.storybook/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}
diff --git a/packages/frontend/.storybook/preload-locale.ts b/packages/frontend/.storybook/preload-locale.ts
index a54164742a..636931967f 100644
--- a/packages/frontend/.storybook/preload-locale.ts
+++ b/packages/frontend/.storybook/preload-locale.ts
@@ -1,9 +1,8 @@
import { writeFile } from 'node:fs/promises';
-import { resolve } from 'node:path';
-import * as locales from '../../../locales';
+import * as locales from '../../../locales/index.js';
-writeFile(
- resolve(__dirname, 'locale.ts'),
+await writeFile(
+ new URL('locale.ts', import.meta.url),
`export default ${JSON.stringify(locales['ja-JP'], undefined, 2)} as const;`,
'utf8',
)
diff --git a/packages/frontend/.storybook/preload-theme.ts b/packages/frontend/.storybook/preload-theme.ts
index 1ff8f71ecd..42fbeff738 100644
--- a/packages/frontend/.storybook/preload-theme.ts
+++ b/packages/frontend/.storybook/preload-theme.ts
@@ -1,6 +1,5 @@
import { readFile, writeFile } from 'node:fs/promises';
-import { resolve } from 'node:path';
-import * as JSON5 from 'json5';
+import JSON5 from 'json5';
const keys = [
'_dark',
@@ -26,9 +25,9 @@ const keys = [
'd-u0',
]
-Promise.all(keys.map((key) => readFile(resolve(__dirname, `../src/themes/${key}.json5`), 'utf8'))).then((sources) => {
+await Promise.all(keys.map((key) => readFile(new URL(`../src/themes/${key}.json5`, import.meta.url), 'utf8'))).then((sources) => {
writeFile(
- resolve(__dirname, './themes.ts'),
+ new URL('./themes.ts', import.meta.url),
`export default ${JSON.stringify(
Object.fromEntries(sources.map((source, i) => [keys[i], JSON5.parse(source)])),
undefined,
diff --git a/packages/frontend/.storybook/preview.ts b/packages/frontend/.storybook/preview.ts
index e887acaa2e..67c81c666b 100644
--- a/packages/frontend/.storybook/preview.ts
+++ b/packages/frontend/.storybook/preview.ts
@@ -3,10 +3,10 @@ import { FORCE_REMOUNT } from '@storybook/core-events';
import { type Preview, setup } from '@storybook/vue3';
import isChromatic from 'chromatic/isChromatic';
import { initialize, mswDecorator } from 'msw-storybook-addon';
-import { userDetailed } from './fakes';
-import locale from './locale';
-import { commonHandlers, onUnhandledRequest } from './mocks';
-import themes from './themes';
+import { userDetailed } from './fakes.js';
+import locale from './locale.js';
+import { commonHandlers, onUnhandledRequest } from './mocks.js';
+import themes from './themes.js';
import '../src/style.scss';
const appInitialized = Symbol();
diff --git a/packages/frontend/.storybook/tsconfig.json b/packages/frontend/.storybook/tsconfig.json
index 2db2f1eabe..02465f5afa 100644
--- a/packages/frontend/.storybook/tsconfig.json
+++ b/packages/frontend/.storybook/tsconfig.json
@@ -1,5 +1,7 @@
{
"compilerOptions": {
+ "target": "es2022",
+ "module": "Node16",
"strict": true,
"allowUnusedLabels": false,
"allowUnreachableCode": false,
diff --git a/packages/sw/.eslintrc.js b/packages/sw/.eslintrc.cjs
index b1fd6b5edc..b1fd6b5edc 100644
--- a/packages/sw/.eslintrc.js
+++ b/packages/sw/.eslintrc.cjs
diff --git a/packages/sw/build.js b/packages/sw/build.js
index ad16fb9497..e926197640 100644
--- a/packages/sw/build.js
+++ b/packages/sw/build.js
@@ -1,10 +1,13 @@
// @ts-check
-const esbuild = require('esbuild');
-const locales = require('../../locales');
-const meta = require('../../package.json');
+import { fileURLToPath } from 'node:url';
+import * as esbuild from 'esbuild';
+import locales from '../../locales/index.js';
+import meta from '../../package.json' assert { type: "json" };
const watch = process.argv[2]?.includes('watch');
+const __dirname = fileURLToPath(new URL('.', import.meta.url))
+
console.log('Starting SW building...');
/** @type {esbuild.BuildOptions} */
diff --git a/packages/sw/package.json b/packages/sw/package.json
index a2bead3dd4..a60f8230c2 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -19,5 +19,6 @@
"eslint": "8.44.0",
"eslint-plugin-import": "2.27.5",
"typescript": "5.1.6"
- }
+ },
+ "type": "module"
}