diff options
Diffstat (limited to 'src/ClassLoader/DefaultClassLoader.js')
-rw-r--r-- | src/ClassLoader/DefaultClassLoader.js | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/ClassLoader/DefaultClassLoader.js b/src/ClassLoader/DefaultClassLoader.js new file mode 100644 index 0000000..d749664 --- /dev/null +++ b/src/ClassLoader/DefaultClassLoader.js @@ -0,0 +1,181 @@ +import PasswordRepository from "../Repositories/PasswordRepository"; +import FolderRepository from "../Repositories/FolderRepository"; +import TagRepository from "../Repositories/TagRepository"; +import SettingRepository from "../Repositories/SettingRepository"; +import PasswordCollection from "../Collection/PasswordCollection"; +import FolderCollection from "../Collection/FolderCollection"; +import CustomFieldCollection from "../Collection/CustomFieldCollection"; +import TagCollection from "../Collection/TagCollection"; +import SettingCollection from "../Collection/SettingCollection"; +import PasswordConverter from "../Converter/PasswordConverter"; +import FolderConverter from "../Converter/FolderConverter"; +import CustomFieldConverter from "../Converter/CustomFieldConverter"; +import TagConverter from "../Converter/TagConverter"; +import SettingConverter from "../Converter/SettingConverter"; +import Password from "../Model/Password/Password"; +import Folder from "../Model/Folder/Folder"; +import Tag from "../Model/Tag/Tag"; +import Server from "../Model/Server/Server"; +import Session from "../Model/Session/Session"; +import DataField from "../Model/CustomField/DataField"; +import EmailField from "../Model/CustomField/EmailField"; +import FileField from "../Model/CustomField/FileField"; +import SecretField from "../Model/CustomField/SecretField"; +import TextField from "../Model/CustomField/TextField"; +import UrlField from "../Model/CustomField/UrlField"; +import Setting from "../Model/Setting/Setting"; +import ApiRequest from "../Network/ApiRequest"; +import ApiResponse from "../Network/ApiResponse"; +import SessionAuthorization from "../Authorization/SessionAuthorization"; +import PWDv1Challenge from "../Authorization/Challenge/PWDv1Challenge"; +import UserToken from "../Authorization/Token/UserToken"; +import RequestToken from "../Authorization/Token/RequestToken"; +import NoEncryption from "../Encryption/NoEncryption"; +import CSEv1Encryption from "../Encryption/CSEv1Encryption"; +import ExportV1Encryption from "../Encryption/ExportV1Encryption"; +import CSEv1Keychain from "../Encryption/Keychain/CSEv1Keychain"; +import Cache from "../Cache/Cache"; +import BooleanState from "../State/BooleanState"; +import EventEmitter from "eventemitter3"; +import ResponseContentTypeError from "../Exception/ResponseContentTypeError"; +import ResponseDecodingError from "../Exception/ResponseDecodingError"; +import UnknownPropertyError from "../Exception/UnknownPropertyError"; +import TokenTypeNotSupported from "../Exception/TokenTypeNotSupported"; +import NetworkError from "../Exception/NetworkError"; +import HttpError from "../Exception/Http/HttpError"; +import BadRequestError from "../Exception/Http/BadRequestError"; +import UnauthorizedError from "../Exception/Http/UnauthorizedError"; +import ForbiddenError from "../Exception/Http/ForbiddenError"; +import NotFoundError from "../Exception/Http/NotFoundError"; +import MethodNotAllowedError from "../Exception/Http/MethodNotAllowedError"; +import TooManyRequestsError from "../Exception/Http/TooManyRequestsError"; +import InternalServerError from "../Exception/Http/InternalServerError"; +import BadGatewayError from "../Exception/Http/BadGatewayError"; +import ServiceUnavailableError from "../Exception/Http/ServiceUnavailableError"; +import GatewayTimeoutError from "../Exception/Http/GatewayTimeoutError"; +import BasicClassLoader from "./BasicClassLoader"; +import ModelService from "../Services/ModelService"; +import PasswordService from "../Services/PasswordService"; +import UnsupportedEncryptionTypeError from "../Exception/Encryption/UnsupportedEncryptionTypeError"; +import InvalidObjectTypeError from "../Exception/Encryption/InvalidObjectTypeError"; +import EncryptionNotEnabledError from "../Exception/Encryption/EncryptionNotEnabledError"; +import ChallengeTypeNotSupported from "../Exception/ChallengeTypeNotSupported"; +import ConfigurationError from "../Exception/ConfigruationError"; +import MissingEncryptionKeyError from "../Exception/Encryption/MissingEncryptionKeyError"; +import InvalidEncryptedTextLength from "../Exception/Encryption/InvalidEncryptedTextLength"; +import HashService from "../Services/HashService"; +import Logger from "../Logger/Logger"; +import DefectField from "../Model/CustomField/DefectField"; + +export default class DefaultClassLoader extends BasicClassLoader { + + /** + * + * @return {Object} + * @protected + */ + _getDefaultClasses() { + return { + 'repository.password': () => { return new PasswordRepository(this.getInstance('client')); }, + 'repository.folder' : () => { return new FolderRepository(this.getInstance('client')); }, + 'repository.tag' : () => { return new TagRepository(this.getInstance('client')); }, + 'repository.setting' : () => { return new SettingRepository(this.getInstance('client')); }, + + 'collection.password': (...e) => { return new PasswordCollection(this.getInstance('converter.password'), ...e); }, + 'collection.folder' : (...e) => { return new FolderCollection(this.getInstance('converter.folder'), ...e); }, + 'collection.field' : (...e) => { return new CustomFieldCollection(this.getInstance('converter.field'), ...e); }, + 'collection.tag' : (...e) => { return new TagCollection(this.getInstance('converter.tag'), ...e); }, + 'collection.setting' : (...e) => { return new SettingCollection(this.getInstance('converter.setting'), ...e); }, + + 'converter.password': () => { return new PasswordConverter(this.getInstance('client')); }, + 'converter.folder' : () => { return new FolderConverter(this.getInstance('client')); }, + 'converter.field' : () => { return new CustomFieldConverter(this.getInstance('client')); }, + 'converter.tag' : () => { return new TagConverter(this.getInstance('client')); }, + 'converter.setting' : () => { return new SettingConverter(this.getInstance('client')); }, + + 'model.password' : Password, + 'model.folder' : Folder, + 'model.tag' : Tag, + 'model.server' : Server, + 'model.session' : Session, + 'model.dataField' : DataField, + 'model.emailField' : EmailField, + 'model.fileField' : FileField, + 'model.secretField': SecretField, + 'model.textField' : TextField, + 'model.urlField' : UrlField, + 'model.defectField': DefectField, + 'model.setting' : Setting, + + 'network.request' : ApiRequest, + 'network.response': ApiResponse, + + 'authorization.session': () => { return new SessionAuthorization(this.getInstance('client')); }, + + 'challenge.pwdv1': PWDv1Challenge, + + 'token.user' : UserToken, + 'token.request': RequestToken, + + 'encryption.none' : () => { return new NoEncryption(this.getInstance('classes')); }, + 'encryption.csev1': () => { return new CSEv1Encryption(this.getInstance('classes')); }, + 'encryption.expv1': () => { return new ExportV1Encryption(this.getInstance('classes')); }, + + 'keychain.csev1': (k, p) => { return new CSEv1Keychain(this.getInstance('classes'), k, p); }, + + 'service.hash' : () => { return new HashService(this.getInstance('classes')); }, + 'service.model' : () => { return new ModelService(this.getInstance('classes')); }, + 'service.password': () => { return new PasswordService(this.getInstance('client')); }, + + 'logger': Logger, + + 'cache.cache': Cache, + + 'state.boolean': BooleanState, + + 'event.event': EventEmitter, + + 'exception.response.contenttype' : ResponseContentTypeError, + 'exception.response.decoding' : ResponseDecodingError, + 'exception.model.property' : UnknownPropertyError, + 'exception.auth.challenge' : ChallengeTypeNotSupported, + 'exception.auth.token' : TokenTypeNotSupported, + 'exception.network' : NetworkError, + 'exception.http' : HttpError, + 'exception.http.400' : BadRequestError, + 'exception.http.401' : UnauthorizedError, + 'exception.http.403' : ForbiddenError, + 'exception.http.404' : NotFoundError, + 'exception.http.405' : MethodNotAllowedError, + 'exception.http.429' : TooManyRequestsError, + 'exception.http.500' : InternalServerError, + 'exception.http.502' : BadGatewayError, + 'exception.http.503' : ServiceUnavailableError, + 'exception.http.504' : GatewayTimeoutError, + 'exception.encryption.unsupported': UnsupportedEncryptionTypeError, + 'exception.encryption.object' : InvalidObjectTypeError, + 'exception.encryption.enabled' : EncryptionNotEnabledError, + 'exception.encryption.key.missing': MissingEncryptionKeyError, + 'exception.encryption.text.length': InvalidEncryptedTextLength, + 'exception.configuration' : ConfigurationError, + + + // Old deprecated errors + 'exception.contenttype': ResponseContentTypeError, + 'exception.decoding' : ResponseDecodingError, + 'exception.property' : UnknownPropertyError, + 'exception.challenge' : TokenTypeNotSupported, + 'exception.token' : TokenTypeNotSupported, + 'exception.400' : BadRequestError, + 'exception.401' : UnauthorizedError, + 'exception.403' : ForbiddenError, + 'exception.404' : NotFoundError, + 'exception.405' : MethodNotAllowedError, + 'exception.429' : TooManyRequestsError, + 'exception.500' : InternalServerError, + 'exception.502' : BadGatewayError, + 'exception.503' : ServiceUnavailableError, + 'exception.504' : GatewayTimeoutError + }; + }; +}
\ No newline at end of file |