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">
 | 
					<script lang="ts">
 | 
				
			||||||
import Vue from 'vue';
 | 
					import Vue from 'vue';
 | 
				
			||||||
import i18n from '../../i18n';
 | 
					import i18n from '../../i18n';
 | 
				
			||||||
 | 
					import { kinds } from '../../../../server/api/kinds';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
	i18n: i18n('dev/views/new-app.vue'),
 | 
						i18n: i18n('dev/views/new-app.vue'),
 | 
				
			||||||
| 
						 | 
					@ -40,14 +41,9 @@ export default Vue.extend({
 | 
				
			||||||
			cb: '',
 | 
								cb: '',
 | 
				
			||||||
			nidState: null,
 | 
								nidState: null,
 | 
				
			||||||
			permission: [],
 | 
								permission: [],
 | 
				
			||||||
			permissionsList: []
 | 
								permissionsList: kinds
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	created() {
 | 
					 | 
				
			||||||
		this.$root.api('permissions').then(permissions => {
 | 
					 | 
				
			||||||
			this.permissionsList = permissions
 | 
					 | 
				
			||||||
		});
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
		onSubmit() {
 | 
							onSubmit() {
 | 
				
			||||||
			this.$root.api('app/create', {
 | 
								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';
 | 
					export const kinds = [
 | 
				
			||||||
import * as locale from '../../../locales/';
 | 
					 | 
				
			||||||
import { fromEntries } from '../../prelude/array';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const kindsList = [
 | 
					 | 
				
			||||||
	'read:account',
 | 
						'read:account',
 | 
				
			||||||
	'write:account',
 | 
						'write:account',
 | 
				
			||||||
	'read:blocks',
 | 
						'read:blocks',
 | 
				
			||||||
| 
						 | 
					@ -24,35 +20,3 @@ export const kindsList = [
 | 
				
			||||||
	'write:reactions',
 | 
						'write:reactions',
 | 
				
			||||||
	'write:votes'
 | 
						'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 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 {
 | 
					export function getDescription(lang = 'ja-JP'): string {
 | 
				
			||||||
	const permissionTable = (Object.entries(kinds()) as [string, IKindInfo][])
 | 
						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 * as childProcess from 'child_process';
 | 
				
			||||||
import { async, signup, request, post, react, uploadFile } from './utils';
 | 
					import { async, signup, request, post, react, uploadFile } from './utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { kinds } from '../src/server/api/kinds';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
describe('API', () => {
 | 
					describe('API', () => {
 | 
				
			||||||
	let p: childProcess.ChildProcess;
 | 
						let p: childProcess.ChildProcess;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -967,13 +965,5 @@ describe('API', () => {
 | 
				
			||||||
			assert.strictEqual(res.body[0].id, alicePost.id);
 | 
								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