Addnew sheets (armor, weapons, malefica) and v13 support
This commit is contained in:
105
node_modules/level-transcoder/lib/encoding.js
generated
vendored
Normal file
105
node_modules/level-transcoder/lib/encoding.js
generated
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
'use strict'
|
||||
|
||||
const ModuleError = require('module-error')
|
||||
const formats = new Set(['buffer', 'view', 'utf8'])
|
||||
|
||||
/**
|
||||
* @template TIn, TFormat, TOut
|
||||
* @abstract
|
||||
*/
|
||||
class Encoding {
|
||||
/**
|
||||
* @param {IEncoding<TIn,TFormat,TOut>} options
|
||||
*/
|
||||
constructor (options) {
|
||||
/** @type {(data: TIn) => TFormat} */
|
||||
this.encode = options.encode || this.encode
|
||||
|
||||
/** @type {(data: TFormat) => TOut} */
|
||||
this.decode = options.decode || this.decode
|
||||
|
||||
/** @type {string} */
|
||||
this.name = options.name || this.name
|
||||
|
||||
/** @type {string} */
|
||||
this.format = options.format || this.format
|
||||
|
||||
if (typeof this.encode !== 'function') {
|
||||
throw new TypeError("The 'encode' property must be a function")
|
||||
}
|
||||
|
||||
if (typeof this.decode !== 'function') {
|
||||
throw new TypeError("The 'decode' property must be a function")
|
||||
}
|
||||
|
||||
this.encode = this.encode.bind(this)
|
||||
this.decode = this.decode.bind(this)
|
||||
|
||||
if (typeof this.name !== 'string' || this.name === '') {
|
||||
throw new TypeError("The 'name' property must be a string")
|
||||
}
|
||||
|
||||
if (typeof this.format !== 'string' || !formats.has(this.format)) {
|
||||
throw new TypeError("The 'format' property must be one of 'buffer', 'view', 'utf8'")
|
||||
}
|
||||
|
||||
if (options.createViewTranscoder) {
|
||||
this.createViewTranscoder = options.createViewTranscoder
|
||||
}
|
||||
|
||||
if (options.createBufferTranscoder) {
|
||||
this.createBufferTranscoder = options.createBufferTranscoder
|
||||
}
|
||||
|
||||
if (options.createUTF8Transcoder) {
|
||||
this.createUTF8Transcoder = options.createUTF8Transcoder
|
||||
}
|
||||
}
|
||||
|
||||
get commonName () {
|
||||
return /** @type {string} */ (this.name.split('+')[0])
|
||||
}
|
||||
|
||||
/** @return {BufferFormat<TIn,TOut>} */
|
||||
createBufferTranscoder () {
|
||||
throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'buffer'`, {
|
||||
code: 'LEVEL_ENCODING_NOT_SUPPORTED'
|
||||
})
|
||||
}
|
||||
|
||||
/** @return {ViewFormat<TIn,TOut>} */
|
||||
createViewTranscoder () {
|
||||
throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'view'`, {
|
||||
code: 'LEVEL_ENCODING_NOT_SUPPORTED'
|
||||
})
|
||||
}
|
||||
|
||||
/** @return {UTF8Format<TIn,TOut>} */
|
||||
createUTF8Transcoder () {
|
||||
throw new ModuleError(`Encoding '${this.name}' cannot be transcoded to 'utf8'`, {
|
||||
code: 'LEVEL_ENCODING_NOT_SUPPORTED'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
exports.Encoding = Encoding
|
||||
|
||||
/**
|
||||
* @typedef {import('./encoding').IEncoding<TIn,TFormat,TOut>} IEncoding
|
||||
* @template TIn, TFormat, TOut
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {import('./formats').BufferFormat<TIn,TOut>} BufferFormat
|
||||
* @template TIn, TOut
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {import('./formats').ViewFormat<TIn,TOut>} ViewFormat
|
||||
* @template TIn, TOut
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {import('./formats').UTF8Format<TIn,TOut>} UTF8Format
|
||||
* @template TIn, TOut
|
||||
*/
|
||||
Reference in New Issue
Block a user