wip
This commit is contained in:
parent
0900023cc9
commit
d6f81fd3b3
1
.github/workflows/check-spdx-license-id.yml
vendored
1
.github/workflows/check-spdx-license-id.yml
vendored
|
@ -48,6 +48,7 @@ jobs:
|
||||||
"packages/backend/migration"
|
"packages/backend/migration"
|
||||||
"packages/backend/src"
|
"packages/backend/src"
|
||||||
"packages/backend/test"
|
"packages/backend/test"
|
||||||
|
"packages/frontend-shared/src"
|
||||||
"packages/frontend/.storybook"
|
"packages/frontend/.storybook"
|
||||||
"packages/frontend/@types"
|
"packages/frontend/@types"
|
||||||
"packages/frontend/lib"
|
"packages/frontend/lib"
|
||||||
|
|
|
@ -21,8 +21,9 @@ WORKDIR /misskey
|
||||||
COPY --link ["pnpm-lock.yaml", "pnpm-workspace.yaml", "package.json", "./"]
|
COPY --link ["pnpm-lock.yaml", "pnpm-workspace.yaml", "package.json", "./"]
|
||||||
COPY --link ["scripts", "./scripts"]
|
COPY --link ["scripts", "./scripts"]
|
||||||
COPY --link ["packages/backend/package.json", "./packages/backend/"]
|
COPY --link ["packages/backend/package.json", "./packages/backend/"]
|
||||||
|
COPY --link ["packages/frontend-shared/package.json", "./packages/frontend-shared/"]
|
||||||
COPY --link ["packages/frontend/package.json", "./packages/frontend/"]
|
COPY --link ["packages/frontend/package.json", "./packages/frontend/"]
|
||||||
COPY --link ["packages/embed/package.json", "./packages/embed/"]
|
COPY --link ["packages/frontend-embed/package.json", "./packages/frontend-embed/"]
|
||||||
COPY --link ["packages/sw/package.json", "./packages/sw/"]
|
COPY --link ["packages/sw/package.json", "./packages/sw/"]
|
||||||
COPY --link ["packages/misskey-js/package.json", "./packages/misskey-js/"]
|
COPY --link ["packages/misskey-js/package.json", "./packages/misskey-js/"]
|
||||||
COPY --link ["packages/misskey-reversi/package.json", "./packages/misskey-reversi/"]
|
COPY --link ["packages/misskey-reversi/package.json", "./packages/misskey-reversi/"]
|
||||||
|
|
|
@ -8,8 +8,9 @@
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@9.6.0",
|
"packageManager": "pnpm@9.6.0",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
|
"packages/frontend-shared",
|
||||||
"packages/frontend",
|
"packages/frontend",
|
||||||
"packages/embed",
|
"packages/frontend-embed",
|
||||||
"packages/backend",
|
"packages/backend",
|
||||||
"packages/sw",
|
"packages/sw",
|
||||||
"packages/misskey-js",
|
"packages/misskey-js",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "embed",
|
"name": "frontend-embed",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
1
packages/frontend-shared/.gitignore
vendored
Normal file
1
packages/frontend-shared/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/storybook-static
|
95
packages/frontend-shared/eslint.config.js
Normal file
95
packages/frontend-shared/eslint.config.js
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
import globals from 'globals';
|
||||||
|
import tsParser from '@typescript-eslint/parser';
|
||||||
|
import parser from 'vue-eslint-parser';
|
||||||
|
import pluginVue from 'eslint-plugin-vue';
|
||||||
|
import pluginMisskey from '@misskey-dev/eslint-plugin';
|
||||||
|
import sharedConfig from '../shared/eslint.config.js';
|
||||||
|
|
||||||
|
export default [
|
||||||
|
...sharedConfig,
|
||||||
|
{
|
||||||
|
files: ['src/**/*.vue'],
|
||||||
|
...pluginMisskey.configs.typescript,
|
||||||
|
},
|
||||||
|
...pluginVue.configs['flat/recommended'],
|
||||||
|
{
|
||||||
|
files: ['src/**/*.{ts,vue}'],
|
||||||
|
languageOptions: {
|
||||||
|
globals: {
|
||||||
|
...Object.fromEntries(Object.entries(globals.node).map(([key]) => [key, 'off'])),
|
||||||
|
...globals.browser,
|
||||||
|
|
||||||
|
// Node.js
|
||||||
|
module: false,
|
||||||
|
require: false,
|
||||||
|
__dirname: false,
|
||||||
|
|
||||||
|
// Misskey
|
||||||
|
_DEV_: false,
|
||||||
|
_LANGS_: false,
|
||||||
|
_VERSION_: false,
|
||||||
|
_ENV_: false,
|
||||||
|
_PERF_PREFIX_: false,
|
||||||
|
_DATA_TRANSFER_DRIVE_FILE_: false,
|
||||||
|
_DATA_TRANSFER_DRIVE_FOLDER_: false,
|
||||||
|
_DATA_TRANSFER_DECK_COLUMN_: false,
|
||||||
|
},
|
||||||
|
parser,
|
||||||
|
parserOptions: {
|
||||||
|
extraFileExtensions: ['.vue'],
|
||||||
|
parser: tsParser,
|
||||||
|
project: ['./tsconfig.json'],
|
||||||
|
sourceType: 'module',
|
||||||
|
tsconfigRootDir: import.meta.dirname,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'@typescript-eslint/no-empty-interface': ['error', {
|
||||||
|
allowSingleExtends: true,
|
||||||
|
}],
|
||||||
|
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
||||||
|
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
||||||
|
'id-denylist': ['error', 'window', 'e'],
|
||||||
|
'no-shadow': ['warn'],
|
||||||
|
'vue/attributes-order': ['error', {
|
||||||
|
alphabetical: false,
|
||||||
|
}],
|
||||||
|
'vue/no-use-v-if-with-v-for': ['error', {
|
||||||
|
allowUsingIterationVar: false,
|
||||||
|
}],
|
||||||
|
'vue/no-ref-as-operand': 'error',
|
||||||
|
'vue/no-multi-spaces': ['error', {
|
||||||
|
ignoreProperties: false,
|
||||||
|
}],
|
||||||
|
'vue/no-v-html': 'warn',
|
||||||
|
'vue/order-in-components': 'error',
|
||||||
|
'vue/html-indent': ['warn', 'tab', {
|
||||||
|
attribute: 1,
|
||||||
|
baseIndent: 0,
|
||||||
|
closeBracket: 0,
|
||||||
|
alignAttributesVertically: true,
|
||||||
|
ignores: [],
|
||||||
|
}],
|
||||||
|
'vue/html-closing-bracket-spacing': ['warn', {
|
||||||
|
startTag: 'never',
|
||||||
|
endTag: 'never',
|
||||||
|
selfClosingTag: 'never',
|
||||||
|
}],
|
||||||
|
'vue/multi-word-component-names': 'warn',
|
||||||
|
'vue/require-v-for-key': 'warn',
|
||||||
|
'vue/no-unused-components': 'warn',
|
||||||
|
'vue/no-unused-vars': 'warn',
|
||||||
|
'vue/no-dupe-keys': 'warn',
|
||||||
|
'vue/valid-v-for': 'warn',
|
||||||
|
'vue/return-in-computed-property': 'warn',
|
||||||
|
'vue/no-setup-props-reactivity-loss': 'warn',
|
||||||
|
'vue/max-attributes-per-line': 'off',
|
||||||
|
'vue/html-self-closing': 'off',
|
||||||
|
'vue/singleline-html-element-content-newline': 'off',
|
||||||
|
'vue/v-on-event-hyphenation': ['error', 'never', {
|
||||||
|
autofix: true,
|
||||||
|
}],
|
||||||
|
'vue/attribute-hyphenation': ['error', 'never'],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
36
packages/frontend-shared/package.json
Normal file
36
packages/frontend-shared/package.json
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
"name": "frontend-shared",
|
||||||
|
"type": "module",
|
||||||
|
"main": "./built/index.js",
|
||||||
|
"types": "./built/index.d.ts",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"import": "./built/index.js",
|
||||||
|
"types": "./built/index.d.ts"
|
||||||
|
},
|
||||||
|
"./*": {
|
||||||
|
"import": "./built/*",
|
||||||
|
"types": "./built/*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"build": "node ./build.js",
|
||||||
|
"watch": "nodemon -w package.json -e json --exec \"node ./build.js --watch\"",
|
||||||
|
"tsd": "tsd",
|
||||||
|
"eslint": "eslint './**/*.{js,jsx,ts,tsx}'",
|
||||||
|
"typecheck": "tsc --noEmit",
|
||||||
|
"lint": "pnpm typecheck && pnpm eslint"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "20.14.12",
|
||||||
|
"@typescript-eslint/eslint-plugin": "7.17.0",
|
||||||
|
"@typescript-eslint/parser": "7.17.0",
|
||||||
|
"typescript": "5.5.4",
|
||||||
|
"esbuild": "0.23.0"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"built"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,8 @@
|
||||||
packages:
|
packages:
|
||||||
- 'packages/backend'
|
- 'packages/backend'
|
||||||
|
- 'packages/frontend-shared'
|
||||||
- 'packages/frontend'
|
- 'packages/frontend'
|
||||||
- 'packages/embed'
|
- 'packages/frontend-embed'
|
||||||
- 'packages/sw'
|
- 'packages/sw'
|
||||||
- 'packages/misskey-js'
|
- 'packages/misskey-js'
|
||||||
- 'packages/misskey-js/generator'
|
- 'packages/misskey-js/generator'
|
||||||
|
|
|
@ -10,11 +10,14 @@ const fs = require('fs');
|
||||||
fs.rmSync(__dirname + '/../packages/backend/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/backend/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/backend/node_modules', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/backend/node_modules', { recursive: true, force: true });
|
||||||
|
|
||||||
|
fs.rmSync(__dirname + '/../packages/frontend-shared/built', { recursive: true, force: true });
|
||||||
|
fs.rmSync(__dirname + '/../packages/frontend-shared/node_modules', { recursive: true, force: true });
|
||||||
|
|
||||||
fs.rmSync(__dirname + '/../packages/frontend/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/frontend/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/frontend/node_modules', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/frontend/node_modules', { recursive: true, force: true });
|
||||||
|
|
||||||
fs.rmSync(__dirname + '/../packages/embed/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/frontend-embed/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/embed/node_modules', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/frontend-embed/node_modules', { recursive: true, force: true });
|
||||||
|
|
||||||
fs.rmSync(__dirname + '/../packages/sw/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/sw/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/sw/node_modules', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/sw/node_modules', { recursive: true, force: true });
|
||||||
|
|
|
@ -7,8 +7,9 @@ const fs = require('fs');
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
fs.rmSync(__dirname + '/../packages/backend/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/backend/built', { recursive: true, force: true });
|
||||||
|
fs.rmSync(__dirname + '/../packages/frontend-shared/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/frontend/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/frontend/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/embed/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/frontend-embed/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/sw/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/sw/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/misskey-js/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/misskey-js/built', { recursive: true, force: true });
|
||||||
fs.rmSync(__dirname + '/../packages/misskey-reversi/built', { recursive: true, force: true });
|
fs.rmSync(__dirname + '/../packages/misskey-reversi/built', { recursive: true, force: true });
|
||||||
|
|
|
@ -65,13 +65,19 @@ execa('pnpm', ['--filter', 'backend', 'dev'], {
|
||||||
stderr: process.stderr,
|
stderr: process.stderr,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
execa('pnpm', ['--filter', 'frontend-shared', 'watch'], {
|
||||||
|
cwd: _dirname + '/../',
|
||||||
|
stdout: process.stdout,
|
||||||
|
stderr: process.stderr,
|
||||||
|
});
|
||||||
|
|
||||||
execa('pnpm', ['--filter', 'frontend', process.env.MK_DEV_PREFER === 'backend' ? 'watch' : 'dev'], {
|
execa('pnpm', ['--filter', 'frontend', process.env.MK_DEV_PREFER === 'backend' ? 'watch' : 'dev'], {
|
||||||
cwd: _dirname + '/../',
|
cwd: _dirname + '/../',
|
||||||
stdout: process.stdout,
|
stdout: process.stdout,
|
||||||
stderr: process.stderr,
|
stderr: process.stderr,
|
||||||
});
|
});
|
||||||
|
|
||||||
execa('pnpm', ['--filter', 'embed', process.env.MK_DEV_PREFER === 'backend' ? 'watch' : 'dev'], {
|
execa('pnpm', ['--filter', 'frontend-embed', process.env.MK_DEV_PREFER === 'backend' ? 'watch' : 'dev'], {
|
||||||
cwd: _dirname + '/../',
|
cwd: _dirname + '/../',
|
||||||
stdout: process.stdout,
|
stdout: process.stdout,
|
||||||
stderr: process.stderr,
|
stderr: process.stderr,
|
||||||
|
|
Loading…
Reference in a new issue