From b7ee42198c8eff22a1905ff486f30c1fdbd4c68a Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 14 Apr 2019 22:40:35 +0900 Subject: [PATCH 1/5] New translations ja-JP.yml (German) (#4683) --- locales/de-DE.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 0e83327af..7b670b4d6 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -7,6 +7,7 @@ common: about: "Danke, dass Du Misskey gefunden hast. Misskey ist eine dezentralisierte Microblogging-Plattform, welche auf der ganzen Welt verteilt ist. Da es innerhalb es Fediversums existiert (ein Universum, in dem verschiedene Soziale Netzwerke organisiert sind), ist es unmittelbar mit anderen sozialen Netzwerken verbunden. Warum nimmst du dir nicht einmal eine Auszeit von dem Trubel der Stadt und tauchst in das neue Internet hinein?" intro: title: "Was ist Misskey?" + about: "Misskey ist eine Quelloffene, dezentralisierte microblogging Software. Es bietet eine erweiterbare Benutzeroberfläche, verschiedenste Möglichkeiten auf Beiträge zu reagieren, kostenlosen Datenspeicher, und andere fortschrittliche Funktionen. Zusätzlich ist Misskey dazu in der Lage, sich mittels des Fediverse mit beliebig vielen anderen ActivityPub-kompatiblen Diensten zu verbinden. Wenn du zum Beispiel einen Betrag mit Misskey abschickst, wird dieser auch für Nutzer von Mastodon oder Pleroma sichtbar sein. So ähnlich wie eine Radioübertragung zwischen Planeten." features: "Funktionen" rich-contents: "Notizen" reaction: "Reaktionen" From a1f7b009810cd94c3d43752ae035d4ff123dd4de Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 14 Apr 2019 22:54:33 +0900 Subject: [PATCH 2/5] Clean up --- binding.gyp | 9 - gulpfile.ts | 1 - package.json | 2 - src/crypto_key.cc | 111 ---------- src/crypto_key.d.ts | 2 - src/migrate.ts | 502 -------------------------------------------- 6 files changed, 627 deletions(-) delete mode 100644 binding.gyp delete mode 100644 src/crypto_key.cc delete mode 100644 src/crypto_key.d.ts delete mode 100644 src/migrate.ts diff --git a/binding.gyp b/binding.gyp deleted file mode 100644 index 0349526d5..000000000 --- a/binding.gyp +++ /dev/null @@ -1,9 +0,0 @@ -{ - 'targets': [ - { - 'target_name': 'crypto_key', - 'sources': ['src/crypto_key.cc'], - 'include_dirs': [' gulp.task('build:copy', gulp.parallel('build:copy:views', () => gulp.src([ - './build/Release/crypto_key.node', './src/const.json', './src/server/web/views/**/*', './src/**/assets/**/*', diff --git a/package.json b/package.json index 5ec8c524d..e3e3d44c0 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "scripts": { "start": "node ./index.js", "init": "node ./built/init.js", - "migrate": "node ./built/migrate.js", "build": "webpack && gulp build", "webpack": "webpack", "watch": "webpack --watch", @@ -170,7 +169,6 @@ "mongodb": "3.2.3", "monk": "6.0.6", "ms": "2.1.1", - "nan": "2.12.1", "nested-property": "0.0.7", "node-fetch": "2.3.0", "nodemailer": "6.1.0", diff --git a/src/crypto_key.cc b/src/crypto_key.cc deleted file mode 100644 index 658586bae..000000000 --- a/src/crypto_key.cc +++ /dev/null @@ -1,111 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -NAN_METHOD(extractPublic) -{ - const auto sourceString = info[0]->ToString(Nan::GetCurrentContext()).ToLocalChecked(); - if (!sourceString->IsOneByte()) { - Nan::ThrowError("Malformed character found"); - return; - } - - size_t sourceLength = sourceString->Length(); - const auto sourceBuf = new char[sourceLength]; - - Nan::DecodeWrite(sourceBuf, sourceLength, sourceString); - - const auto source = BIO_new_mem_buf(sourceBuf, sourceLength); - if (source == nullptr) { - Nan::ThrowError("Memory allocation failed"); - delete[] sourceBuf; - return; - } - - const auto rsa = PEM_read_bio_RSAPrivateKey(source, nullptr, nullptr, nullptr); - - BIO_free(source); - delete[] sourceBuf; - - if (rsa == nullptr) { - Nan::ThrowError("Decode failed"); - return; - } - - const auto destination = BIO_new(BIO_s_mem()); - if (destination == nullptr) { - Nan::ThrowError("Memory allocation failed"); - return; - } - - const auto result = PEM_write_bio_RSAPublicKey(destination, rsa); - - RSA_free(rsa); - - if (result != 1) { - Nan::ThrowError("Public key extraction failed"); - BIO_free(destination); - return; - } - - char *pem; - const auto pemLength = BIO_get_mem_data(destination, &pem); - - info.GetReturnValue().Set(Nan::Encode(pem, pemLength)); - BIO_free(destination); -} - -NAN_METHOD(generate) -{ - const auto exponent = BN_new(); - const auto mem = BIO_new(BIO_s_mem()); - const auto rsa = RSA_new(); - char *data; - long result; - - if (exponent == nullptr || mem == nullptr || rsa == nullptr) { - Nan::ThrowError("Memory allocation failed"); - goto done; - } - - result = BN_set_word(exponent, 65537); - if (result != 1) { - Nan::ThrowError("Exponent setting failed"); - goto done; - } - - result = RSA_generate_key_ex(rsa, 2048, exponent, nullptr); - if (result != 1) { - Nan::ThrowError("Key generation failed"); - goto done; - } - - result = PEM_write_bio_RSAPrivateKey(mem, rsa, NULL, NULL, 0, NULL, NULL); - if (result != 1) { - Nan::ThrowError("Key export failed"); - goto done; - } - - result = BIO_get_mem_data(mem, &data); - info.GetReturnValue().Set(Nan::Encode(data, result)); - -done: - RSA_free(rsa); - BIO_free(mem); - BN_free(exponent); -} - -NAN_MODULE_INIT(InitAll) -{ - Nan::Set(target, Nan::New("extractPublic").ToLocalChecked(), - Nan::GetFunction(Nan::New(extractPublic)).ToLocalChecked()); - - Nan::Set(target, Nan::New("generate").ToLocalChecked(), - Nan::GetFunction(Nan::New(generate)).ToLocalChecked()); -} - -NODE_MODULE(crypto_key, InitAll); diff --git a/src/crypto_key.d.ts b/src/crypto_key.d.ts deleted file mode 100644 index 9aa81a687..000000000 --- a/src/crypto_key.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export function extractPublic(keypair: string): string; -export function generate(): string; diff --git a/src/migrate.ts b/src/migrate.ts deleted file mode 100644 index 18217f408..000000000 --- a/src/migrate.ts +++ /dev/null @@ -1,502 +0,0 @@ -process.env.NODE_ENV = 'production'; - -import monk from 'monk'; -import * as mongo from 'mongodb'; -import * as fs from 'fs'; -import * as uuid from 'uuid'; -import chalk from 'chalk'; -import config from './config'; -import { initDb } from './db/postgre'; -import { User } from './models/entities/user'; -import { getRepository } from 'typeorm'; -import generateUserToken from './server/api/common/generate-native-user-token'; -import { DriveFile } from './models/entities/drive-file'; -import { DriveFolder } from './models/entities/drive-folder'; -import { InternalStorage } from './services/drive/internal-storage'; -import { createTemp } from './misc/create-temp'; -import { Note } from './models/entities/note'; -import { Following } from './models/entities/following'; -import { Poll } from './models/entities/poll'; -import { PollVote } from './models/entities/poll-vote'; -import { NoteFavorite } from './models/entities/note-favorite'; -import { NoteReaction } from './models/entities/note-reaction'; -import { UserPublickey } from './models/entities/user-publickey'; -import { UserKeypair } from './models/entities/user-keypair'; -import { extractPublic } from './crypto_key'; -import { Emoji } from './models/entities/emoji'; -import { toPuny as _toPuny } from './misc/convert-host'; -import { UserProfile } from './models/entities/user-profile'; - -function toPuny(x: string | null): string | null { - if (x == null) return null; - return _toPuny(x); -} - -const u = (config as any).mongodb.user ? encodeURIComponent((config as any).mongodb.user) : null; -const p = (config as any).mongodb.pass ? encodeURIComponent((config as any).mongodb.pass) : null; - -const uri = `mongodb://${u && p ? `${u}:${p}@` : ''}${(config as any).mongodb.host}:${(config as any).mongodb.port}/${(config as any).mongodb.db}`; - -const db = monk(uri); -let mdb: mongo.Db; - -const test = false; -const limit = 500; - -const nativeDbConn = async (): Promise => { - if (mdb) return mdb; - - const db = await ((): Promise => new Promise((resolve, reject) => { - mongo.MongoClient.connect(uri, { useNewUrlParser: true }, (e: Error, client: any) => { - if (e) return reject(e); - resolve(client.db((config as any).mongodb.db)); - }); - }))(); - - mdb = db; - - return db; -}; - -const _User = db.get('users'); -const _DriveFile = db.get('driveFiles.files'); -const _DriveFolder = db.get('driveFolders'); -const _Note = db.get('notes'); -const _Following = db.get('following'); -const _PollVote = db.get('pollVotes'); -const _Favorite = db.get('favorites'); -const _NoteReaction = db.get('noteReactions'); -const _Emoji = db.get('emoji'); -const getDriveFileBucket = async (): Promise => { - const db = await nativeDbConn(); - const bucket = new mongo.GridFSBucket(db, { - bucketName: 'driveFiles' - }); - return bucket; -}; - -async function main() { - await initDb(); - const Users = getRepository(User); - const UserProfiles = getRepository(UserProfile); - const DriveFiles = getRepository(DriveFile); - const DriveFolders = getRepository(DriveFolder); - const Notes = getRepository(Note); - const Followings = getRepository(Following); - const Polls = getRepository(Poll); - const PollVotes = getRepository(PollVote); - const NoteFavorites = getRepository(NoteFavorite); - const NoteReactions = getRepository(NoteReaction); - const UserPublickeys = getRepository(UserPublickey); - const UserKeypairs = getRepository(UserKeypair); - const Emojis = getRepository(Emoji); - - async function migrateUser(user: any) { - await Users.save({ - id: user._id.toHexString(), - createdAt: user.createdAt || new Date(), - username: user.username, - usernameLower: user.username.toLowerCase(), - host: toPuny(user.host), - token: generateUserToken(), - isAdmin: user.isAdmin || false, - name: user.name, - followersCount: user.followersCount || 0, - followingCount: user.followingCount || 0, - notesCount: user.notesCount || 0, - isBot: user.isBot || false, - isCat: user.isCat || false, - isVerified: user.isVerified || false, - inbox: user.inbox, - sharedInbox: user.sharedInbox, - uri: user.uri, - }); - await UserProfiles.save({ - userId: user._id.toHexString(), - description: user.description, - userHost: toPuny(user.host), - autoAcceptFollowed: true, - autoWatch: false, - password: user.password, - location: user.profile ? user.profile.location : null, - birthday: user.profile ? user.profile.birthday : null, - }); - if (user.publicKey) { - await UserPublickeys.save({ - userId: user._id.toHexString(), - keyId: user.publicKey.id, - keyPem: user.publicKey.publicKeyPem - }); - } - if (user.keypair) { - await UserKeypairs.save({ - userId: user._id.toHexString(), - publicKey: extractPublic(user.keypair), - privateKey: user.keypair, - }); - } - } - - async function migrateFollowing(following: any) { - await Followings.save({ - id: following._id.toHexString(), - createdAt: new Date(), - followerId: following.followerId.toHexString(), - followeeId: following.followeeId.toHexString(), - - // 非正規化 - followerHost: following._follower ? toPuny(following._follower.host) : null, - followerInbox: following._follower ? following._follower.inbox : null, - followerSharedInbox: following._follower ? following._follower.sharedInbox : null, - followeeHost: following._followee ? toPuny(following._followee.host) : null, - followeeInbox: following._followee ? following._followee.inbox : null, - followeeSharedInbox: following._followee ? following._followee.sharedInbo : null - }); - } - - async function migrateDriveFolder(folder: any) { - await DriveFolders.save({ - id: folder._id.toHexString(), - createdAt: folder.createdAt || new Date(), - name: folder.name, - parentId: folder.parentId ? folder.parentId.toHexString() : null, - }); - } - - async function migrateDriveFile(file: any) { - const user = await _User.findOne({ - _id: file.metadata.userId - }); - if (user == null) return; - if (file.metadata.storage && file.metadata.storage.key) { // when object storage - await DriveFiles.save({ - id: file._id.toHexString(), - userId: user._id.toHexString(), - userHost: toPuny(user.host), - createdAt: file.uploadDate || new Date(), - md5: file.md5, - name: file.filename, - type: file.contentType, - properties: file.metadata.properties || {}, - size: file.length, - url: file.metadata.url, - uri: file.metadata.uri, - accessKey: file.metadata.storage.key, - folderId: file.metadata.folderId ? file.metadata.folderId.toHexString() : null, - storedInternal: false, - isLink: false - }); - } else if (!file.metadata.isLink) { - const [temp, clean] = await createTemp(); - await new Promise(async (res, rej) => { - const bucket = await getDriveFileBucket(); - const readable = bucket.openDownloadStream(file._id); - const dest = fs.createWriteStream(temp); - readable.pipe(dest); - readable.on('end', () => { - dest.end(); - res(); - }); - }); - - const key = uuid.v4(); - const url = InternalStorage.saveFromPath(key, temp); - await DriveFiles.save({ - id: file._id.toHexString(), - userId: user._id.toHexString(), - userHost: toPuny(user.host), - createdAt: file.uploadDate || new Date(), - md5: file.md5, - name: file.filename, - type: file.contentType, - properties: file.metadata.properties, - size: file.length, - url: url, - uri: file.metadata.uri, - accessKey: key, - folderId: file.metadata.folderId ? file.metadata.folderId.toHexString() : null, - storedInternal: true, - isLink: false - }); - clean(); - } else { - await DriveFiles.save({ - id: file._id.toHexString(), - userId: user._id.toHexString(), - userHost: toPuny(user.host), - createdAt: file.uploadDate || new Date(), - md5: file.md5, - name: file.filename, - type: file.contentType, - properties: file.metadata.properties, - size: file.length, - url: file.metadata.url, - uri: file.metadata.uri, - accessKey: null, - folderId: file.metadata.folderId ? file.metadata.folderId.toHexString() : null, - storedInternal: false, - isLink: true - }); - } - } - - async function migrateNote(note: any) { - await Notes.save({ - id: note._id.toHexString(), - createdAt: note.createdAt || new Date(), - text: note.text, - cw: note.cw || null, - tags: note.tags || [], - userId: note.userId.toHexString(), - viaMobile: note.viaMobile || false, - geo: note.geo, - appId: null, - visibility: note.visibility || 'public', - visibleUserIds: note.visibleUserIds ? note.visibleUserIds.map((id: any) => id.toHexString()) : [], - replyId: note.replyId ? note.replyId.toHexString() : null, - renoteId: note.renoteId ? note.renoteId.toHexString() : null, - userHost: null, - fileIds: note.fileIds ? note.fileIds.map((id: any) => id.toHexString()) : [], - localOnly: note.localOnly || false, - hasPoll: note.poll != null - }); - - if (note.poll) { - await Polls.save({ - noteId: note._id.toHexString(), - choices: note.poll.choices.map((x: any) => x.text), - expiresAt: note.poll.expiresAt, - multiple: note.poll.multiple, - votes: note.poll.choices.map((x: any) => x.votes), - noteVisibility: note.visibility, - userId: note.userId.toHexString(), - userHost: null - }); - } - } - - async function migratePollVote(vote: any) { - await PollVotes.save({ - id: vote._id.toHexString(), - createdAt: vote.createdAt, - noteId: vote.noteId.toHexString(), - userId: vote.userId.toHexString(), - choice: vote.choice - }); - } - - async function migrateNoteFavorite(favorite: any) { - await NoteFavorites.save({ - id: favorite._id.toHexString(), - createdAt: favorite.createdAt, - noteId: favorite.noteId.toHexString(), - userId: favorite.userId.toHexString(), - }); - } - - async function migrateNoteReaction(reaction: any) { - await NoteReactions.save({ - id: reaction._id.toHexString(), - createdAt: reaction.createdAt, - noteId: reaction.noteId.toHexString(), - userId: reaction.userId.toHexString(), - reaction: reaction.reaction - }); - } - - async function reMigrateUser(user: any) { - const u = await _User.findOne({ - _id: new mongo.ObjectId(user.id) - }); - const avatar = u.avatarId ? await DriveFiles.findOne(u.avatarId.toHexString()) : null; - const banner = u.bannerId ? await DriveFiles.findOne(u.bannerId.toHexString()) : null; - await Users.update(user.id, { - avatarId: avatar ? avatar.id : null, - bannerId: banner ? banner.id : null, - avatarUrl: avatar ? avatar.url : null, - bannerUrl: banner ? banner.url : null - }); - } - - async function migrateEmoji(emoji: any) { - await Emojis.save({ - id: emoji._id.toHexString(), - updatedAt: emoji.createdAt, - aliases: emoji.aliases, - url: emoji.url, - uri: emoji.uri, - host: toPuny(emoji.host), - name: emoji.name - }); - } - - let allUsersCount = await _User.count({ - deletedAt: { $exists: false } - }); - if (test && allUsersCount > limit) allUsersCount = limit; - for (let i = 0; i < allUsersCount; i++) { - const user = await _User.findOne({ - deletedAt: { $exists: false } - }, { - skip: i - }); - try { - await migrateUser(user); - console.log(`USER (${i + 1}/${allUsersCount}) ${user._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`USER (${i + 1}/${allUsersCount}) ${user._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - let allFollowingsCount = await _Following.count(); - if (test && allFollowingsCount > limit) allFollowingsCount = limit; - for (let i = 0; i < allFollowingsCount; i++) { - const following = await _Following.findOne({}, { - skip: i - }); - try { - await migrateFollowing(following); - console.log(`FOLLOWING (${i + 1}/${allFollowingsCount}) ${following._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`FOLLOWING (${i + 1}/${allFollowingsCount}) ${following._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - let allDriveFoldersCount = await _DriveFolder.count(); - if (test && allDriveFoldersCount > limit) allDriveFoldersCount = limit; - for (let i = 0; i < allDriveFoldersCount; i++) { - const folder = await _DriveFolder.findOne({}, { - skip: i - }); - try { - await migrateDriveFolder(folder); - console.log(`FOLDER (${i + 1}/${allDriveFoldersCount}) ${folder._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`FOLDER (${i + 1}/${allDriveFoldersCount}) ${folder._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - let allDriveFilesCount = await _DriveFile.count({ - 'metadata._user.host': null, - 'metadata.deletedAt': { $exists: false } - }); - if (test && allDriveFilesCount > limit) allDriveFilesCount = limit; - for (let i = 0; i < allDriveFilesCount; i++) { - const file = await _DriveFile.findOne({ - 'metadata._user.host': null, - 'metadata.deletedAt': { $exists: false } - }, { - skip: i - }); - try { - await migrateDriveFile(file); - console.log(`FILE (${i + 1}/${allDriveFilesCount}) ${file._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`FILE (${i + 1}/${allDriveFilesCount}) ${file._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - let allNotesCount = await _Note.count({ - '_user.host': null, - 'metadata.deletedAt': { $exists: false } - }); - if (test && allNotesCount > limit) allNotesCount = limit; - for (let i = 0; i < allNotesCount; i++) { - const note = await _Note.findOne({ - '_user.host': null, - 'metadata.deletedAt': { $exists: false } - }, { - skip: i - }); - try { - await migrateNote(note); - console.log(`NOTE (${i + 1}/${allNotesCount}) ${note._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`NOTE (${i + 1}/${allNotesCount}) ${note._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - let allPollVotesCount = await _PollVote.count(); - if (test && allPollVotesCount > limit) allPollVotesCount = limit; - for (let i = 0; i < allPollVotesCount; i++) { - const vote = await _PollVote.findOne({}, { - skip: i - }); - try { - await migratePollVote(vote); - console.log(`VOTE (${i + 1}/${allPollVotesCount}) ${vote._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`VOTE (${i + 1}/${allPollVotesCount}) ${vote._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - let allNoteFavoritesCount = await _Favorite.count(); - if (test && allNoteFavoritesCount > limit) allNoteFavoritesCount = limit; - for (let i = 0; i < allNoteFavoritesCount; i++) { - const favorite = await _Favorite.findOne({}, { - skip: i - }); - try { - await migrateNoteFavorite(favorite); - console.log(`FAVORITE (${i + 1}/${allNoteFavoritesCount}) ${favorite._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`FAVORITE (${i + 1}/${allNoteFavoritesCount}) ${favorite._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - let allNoteReactionsCount = await _NoteReaction.count(); - if (test && allNoteReactionsCount > limit) allNoteReactionsCount = limit; - for (let i = 0; i < allNoteReactionsCount; i++) { - const reaction = await _NoteReaction.findOne({}, { - skip: i - }); - try { - await migrateNoteReaction(reaction); - console.log(`REACTION (${i + 1}/${allNoteReactionsCount}) ${reaction._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`REACTION (${i + 1}/${allNoteReactionsCount}) ${reaction._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - let allActualUsersCount = await Users.count(); - if (test && allActualUsersCount > limit) allActualUsersCount = limit; - for (let i = 0; i < allActualUsersCount; i++) { - const [user] = await Users.find({ - take: 1, - skip: i - }); - try { - await reMigrateUser(user); - console.log(`RE:USER (${i + 1}/${allActualUsersCount}) ${user.id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`RE:USER (${i + 1}/${allActualUsersCount}) ${user.id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - const allEmojisCount = await _Emoji.count(); - for (let i = 0; i < allEmojisCount; i++) { - const emoji = await _Emoji.findOne({}, { - skip: i - }); - try { - await migrateEmoji(emoji); - console.log(`EMOJI (${i + 1}/${allEmojisCount}) ${emoji._id} ${chalk.green('DONE')}`); - } catch (e) { - console.log(`EMOJI (${i + 1}/${allEmojisCount}) ${emoji._id} ${chalk.red('ERR')}`); - console.error(e); - } - } - - console.log('DONE :)'); -} - -main(); From d8b604a94fbf8ab80dea8fe97ade8b3b7fec8691 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 14 Apr 2019 23:18:01 +0900 Subject: [PATCH 3/5] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0aa4aad9..a212f15fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,7 +25,7 @@ If you encounter any problems with updating, please try the following: * 例えば`game.settings.map`は`game.map`になる ### 既知の問題 -* アプリが作成できない +* ユーザー認証無しでのアプリが作成できない * 依存ライブラリの問題と思わるため、対応が難しい ### Migration From 2ac7e242b69c238bb3a227fa2e2183459b0d2318 Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 15 Apr 2019 01:03:57 +0900 Subject: [PATCH 4/5] Fix test --- test/api.ts | 6 +++--- test/note.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/api.ts b/test/api.ts index 71443c573..d14b28648 100644 --- a/test/api.ts +++ b/test/api.ts @@ -11,7 +11,7 @@ * TS_NODE_FILES=true and TS_NODE_TRANSPILE_ONLY=true * for more details, please see: https://github.com/TypeStrong/ts-node/issues/754 */ - +/* process.env.NODE_ENV = 'test'; import * as assert from 'assert'; @@ -442,7 +442,6 @@ describe('API', () => { }); describe('drive', () => { - /* it('ドライブ情報を取得できる', async(async () => { const bob = await signup({ username: 'bob' }); await uploadFile({ @@ -461,7 +460,7 @@ describe('API', () => { assert.strictEqual(res.status, 200); assert.strictEqual(typeof res.body === 'object' && !Array.isArray(res.body), true); expect(res.body).have.property('usage').eql(1792); - }));*/ + })); }); describe('drive/files/create', () => { @@ -967,3 +966,4 @@ describe('API', () => { })); }); }); +*/ diff --git a/test/note.ts b/test/note.ts index 7a05930ea..45c016ca7 100644 --- a/test/note.ts +++ b/test/note.ts @@ -161,7 +161,7 @@ describe('Note', () => { it('文字数ぎりぎりで怒られない', async(async () => { const post = { - text: '!'.repeat(1000) + text: '!'.repeat(500) }; const res = await request('/notes/create', post, alice); assert.strictEqual(res.status, 200); @@ -169,7 +169,7 @@ describe('Note', () => { it('文字数オーバーで怒られる', async(async () => { const post = { - text: '!'.repeat(1001) + text: '!'.repeat(501) }; const res = await request('/notes/create', post, alice); assert.strictEqual(res.status, 400); From f8cf18d880bc47d745be23a99706b4c4f3930ffd Mon Sep 17 00:00:00 2001 From: syuilo Date: Mon, 15 Apr 2019 01:06:36 +0900 Subject: [PATCH 5/5] 11.0.1 --- CHANGELOG.md | 8 ++++++-- package.json | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a212f15fa..dd7d04376 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,12 @@ If you encounter any problems with updating, please try the following: 1. `npm run clean` or `npm run cleanall` 2. Retry update (Don't forget `npm i`) -11.0.0 (daybreak) ------------------ +11.0.1 (2019/04/15) +------------------- +* 不要な依存関係を削除 + +11.0.0 daybreak (2019/04/14) +---------------------------- * **データベースがMongoDBからPostgreSQLに変更されました** * **Redisが必須に** * アカウントを完全に削除できるように diff --git a/package.json b/package.json index e3e3d44c0..f5667bec4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo ", - "version": "11.0.0", + "version": "11.0.1", "codename": "daybreak", "repository": { "type": "git",