mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	Refactor
This commit is contained in:
		
							parent
							
								
									31c26354c5
								
							
						
					
					
						commit
						772063aade
					
				
					 5 changed files with 39 additions and 83 deletions
				
			
		| 
						 | 
				
			
			@ -30,6 +30,7 @@
 | 
			
		|||
<script lang="ts">
 | 
			
		||||
import Vue from 'vue';
 | 
			
		||||
import i18n from '../../i18n';
 | 
			
		||||
import { kinds } from '../../../../server/api/kinds';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	i18n: i18n('dev/views/new-app.vue'),
 | 
			
		||||
| 
						 | 
				
			
			@ -40,14 +41,9 @@ export default Vue.extend({
 | 
			
		|||
			cb: '',
 | 
			
		||||
			nidState: null,
 | 
			
		||||
			permission: [],
 | 
			
		||||
			permissionsList: []
 | 
			
		||||
			permissionsList: kinds
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.$root.api('permissions').then(permissions => {
 | 
			
		||||
			this.permissionsList = permissions
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		onSubmit() {
 | 
			
		||||
			this.$root.api('app/create', {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,29 +0,0 @@
 | 
			
		|||
import define from '../define';
 | 
			
		||||
import { kindsList } from '../kinds';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	stability: 'stable',
 | 
			
		||||
 | 
			
		||||
	desc: {
 | 
			
		||||
		'ja-JP': 'パーミッションの一覧を返します。',
 | 
			
		||||
		'en-US': 'Get the list of permissons.'
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	tags: ['meta'],
 | 
			
		||||
 | 
			
		||||
	requireCredential: false,
 | 
			
		||||
 | 
			
		||||
	params: {
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	res: {
 | 
			
		||||
		type: 'array',
 | 
			
		||||
		items: {
 | 
			
		||||
			type: 'string',
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default define(meta, async () => {
 | 
			
		||||
	return kindsList;
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			@ -1,8 +1,4 @@
 | 
			
		|||
import endpoints from './endpoints';
 | 
			
		||||
import * as locale from '../../../locales/';
 | 
			
		||||
import { fromEntries } from '../../prelude/array';
 | 
			
		||||
 | 
			
		||||
export const kindsList = [
 | 
			
		||||
export const kinds = [
 | 
			
		||||
	'read:account',
 | 
			
		||||
	'write:account',
 | 
			
		||||
	'read:blocks',
 | 
			
		||||
| 
						 | 
				
			
			@ -24,35 +20,3 @@ export const kindsList = [
 | 
			
		|||
	'write:reactions',
 | 
			
		||||
	'write:votes'
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export interface IKindInfo {
 | 
			
		||||
	endpoints: string[];
 | 
			
		||||
	descs: { [x: string]: string; };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function kinds() {
 | 
			
		||||
	const kinds = fromEntries(
 | 
			
		||||
		kindsList
 | 
			
		||||
			.map(k => [k, {
 | 
			
		||||
					endpoints: [],
 | 
			
		||||
					descs: fromEntries(
 | 
			
		||||
						Object.keys(locale)
 | 
			
		||||
							.map(l => [l, locale[l].common.permissions[k] as string] as [string, string])
 | 
			
		||||
						) as { [x: string]: string; }
 | 
			
		||||
				}] as [ string, IKindInfo ])
 | 
			
		||||
			) as { [x: string]: IKindInfo; };
 | 
			
		||||
 | 
			
		||||
	const errors = [] as string[][];
 | 
			
		||||
 | 
			
		||||
	for (const endpoint of endpoints.filter(ep => !ep.meta.secure)) {
 | 
			
		||||
		if (endpoint.meta.kind) {
 | 
			
		||||
			const kind = endpoint.meta.kind;
 | 
			
		||||
			if (kind in kinds) kinds[kind].endpoints.push(endpoint.name);
 | 
			
		||||
			else errors.push([kind, endpoint.name]);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (errors.length > 0) throw Error('\n  ' + errors.map((e) => `Unknown kind (permission) "${e[0]}" found at ${e[1]}.`).join('\n  '));
 | 
			
		||||
 | 
			
		||||
	return kinds;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,40 @@
 | 
			
		|||
import config from '../../../config';
 | 
			
		||||
import { IKindInfo, kinds } from '../kinds';
 | 
			
		||||
import endpoints from '../endpoints';
 | 
			
		||||
import * as locale from '../../../../locales/';
 | 
			
		||||
import { fromEntries } from '../../../prelude/array';
 | 
			
		||||
import { kinds as kindsList } from '../kinds';
 | 
			
		||||
 | 
			
		||||
export interface IKindInfo {
 | 
			
		||||
	endpoints: string[];
 | 
			
		||||
	descs: { [x: string]: string; };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function kinds() {
 | 
			
		||||
	const kinds = fromEntries(
 | 
			
		||||
		kindsList
 | 
			
		||||
			.map(k => [k, {
 | 
			
		||||
					endpoints: [],
 | 
			
		||||
					descs: fromEntries(
 | 
			
		||||
						Object.keys(locale)
 | 
			
		||||
							.map(l => [l, locale[l].common.permissions[k] as string] as [string, string])
 | 
			
		||||
						) as { [x: string]: string; }
 | 
			
		||||
				}] as [ string, IKindInfo ])
 | 
			
		||||
			) as { [x: string]: IKindInfo; };
 | 
			
		||||
 | 
			
		||||
	const errors = [] as string[][];
 | 
			
		||||
 | 
			
		||||
	for (const endpoint of endpoints.filter(ep => !ep.meta.secure)) {
 | 
			
		||||
		if (endpoint.meta.kind) {
 | 
			
		||||
			const kind = endpoint.meta.kind;
 | 
			
		||||
			if (kind in kinds) kinds[kind].endpoints.push(endpoint.name);
 | 
			
		||||
			else errors.push([kind, endpoint.name]);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (errors.length > 0) throw Error('\n  ' + errors.map((e) => `Unknown kind (permission) "${e[0]}" found at ${e[1]}.`).join('\n  '));
 | 
			
		||||
 | 
			
		||||
	return kinds;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getDescription(lang = 'ja-JP'): string {
 | 
			
		||||
	const permissionTable = (Object.entries(kinds()) as [string, IKindInfo][])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								test/api.ts
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								test/api.ts
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -18,8 +18,6 @@ import * as assert from 'assert';
 | 
			
		|||
import * as childProcess from 'child_process';
 | 
			
		||||
import { async, signup, request, post, react, uploadFile } from './utils';
 | 
			
		||||
 | 
			
		||||
import { kinds } from '../src/server/api/kinds';
 | 
			
		||||
 | 
			
		||||
describe('API', () => {
 | 
			
		||||
	let p: childProcess.ChildProcess;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -967,13 +965,5 @@ describe('API', () => {
 | 
			
		|||
			assert.strictEqual(res.body[0].id, alicePost.id);
 | 
			
		||||
		}));
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	describe('kinds', () => {
 | 
			
		||||
		it('登録されていないパーミッションを利用しているAPIがない', () => {
 | 
			
		||||
			const res = kinds();
 | 
			
		||||
 | 
			
		||||
			assert.strictEqual(typeof res === 'object', true);
 | 
			
		||||
		});
 | 
			
		||||
	});
 | 
			
		||||
});
 | 
			
		||||
*/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue