0.7.4-alpha.1 • Published 3 years ago

@ridi/comic-parser v0.7.4-alpha.1

Weekly downloads
64
License
MIT
Repository
github
Last release
3 years ago

@ridi/comic-parser

Common comic data parser for Ridibooks services

NPM version Check codecov NPM total downloads

Features

  • Single structure parsing
  • Nested structure parsing
  • Unzip zip file when parsing with options
  • Read files
    • Read image in base64 encoding
  • Encrypt and decrypt function when parsing or reading or unzipping
  • Debug mode
  • Environment
    • Node
    • CLI
    • Browser
  • Online demo

Install

npm install @ridi/comic-parser

Usage

Basic:

import { ComicParser } from '@ridi/comic-parser';
// or const { ComicParser } = require('@ridi/comic-parser');

const parser = new ComicParser('./foo/bar.zip' or './unzippedPath');
parser.parse(/* { parseOptions } */).then((book) => {
  parser.readItems(items/*, { readOptions } */).then((results) => {
    ...
  });
  ...
});

with AesCryptor:

import { CryptoProvider, AesCryptor } from '@ridi/comic-parser';
// or const { CryptoProvider, AesCryptor } = require('@ridi/comic-parser');

const { Purpose } = CryptoProvider;
const { Mode, Padding } = AesCryptor;

class ContentCryptoProvider extends CryptoProvider {
  constructor(key) {
    super();
    this.cryptor = new AesCryptor(Mode.ECB, { key });
  }

  getCryptor(filePath, purpose) {
    return this.cryptor;
  }

  // If use as follows:
  // const provider = new ContentCryptoProvider(...);
  // const parser = new ComicParser('encrypted.zip', provider);
  // const book = await parser.parse({ unzipPath: ... });
  // const firstImage = await parser.readItem(book.items[0]);
  //
  // It will be called as follows:
  // 1. run(data, 'encrypted.zip', Purpose.READ_IN_DIR)
  // 2. run(data, '0001.jpg', Purpose.READ_IN_ZIP)
  // ...
  // 4. run(data, '0001.jpg', Purpose.WRITE)
  // ...
  // 5. run(data, '0001.jpg', Purpose.READ_IN_DIR)
  //
  run(data, filePath, purpose) {
    const cryptor = this.getCryptor(filePath, purpose);
    const padding = Padding.AUTO;
    if (purpose === Purpose.READ_IN_DIR) {
      return cryptor.decrypt(data, { padding });
    } else if (purpose === Purpose.WRITE) {
      return cryptor.encrypt(data, { padding });
    }
    return data;
  }
}

const cryptoProvider = new ContentCryptoProvider(key);
const parser = new ComicParser('./encrypted.zip' or './unzippedPath', cryptoProvider);

Log level setting:

import { LogLevel, ... } from '@ridi/comic-parser';
const parser = new ComicParser(/* path */, /* cryptoProvider */, /* logLevel */)
// or const parser = new ComicParser(/* path */, /* logLevel */)
parser.logger.logLevel = LogLevel.VERBOSE; // SILENT, ERROR, WARN(default), INFO, DEBUG, VERBOSE

API

parse(parseOptions)

Returns Promise<ComicBook> with:

  • ComicBook: Instance with image path, size, etc.

Or throw exception.

parseOptions: ?object


readItem(item, readOptions)

Returns string or Buffer in Promise with:

  • If readOptions.base64 is true:

    • string
  • Other:

    • Buffer

or throw exception.

item: Item

readOptions: ?object


readItems(items, readOptions)

Returns string[] or Buffer[] in Promise with:

  • If readOptions.base64 is true:

    • string
  • Other:

    • Buffer

or throw exception.

items: Item[]

readOptions: ?object


unzip(unzipPath, overwrite)

Returns Promise<boolean> with:

  • If result is true, unzip is successful or has already been unzipped.

Or throw exception.

unzipPath: string

overwrite: boolean


onProgress = callback(step, totalStep, action)

Tells the progress of parser through callback.

const { Action } = ComicParser; // PARSE, READ_ITEMS
parser.onProgress = (step, totalStep, action) => {
  console.log(`[${action}] ${step} / ${totalStep}`);
}

Model

ComicBook

  • items: Item[]
  • toRaw(): object

Item

  • index: ?string
  • path: ?string
  • size: ?number
  • width: ?number
  • height: ?number
  • toRaw(): object

Parse Options


unzipPath: ?string

If specified, unzip to that path.

only using if input is Zip file.

Default: undefined


overwrite: boolean

If true, overwrite to unzipPath when unzip.

only using if unzipPath specified.

Default: true


ext: string[]

File extension to allow when extracting lists.

Default: ['jpg', 'jpeg', 'png', 'bmp', 'gif']


parseImageSize: boolean|number

If true, image size parse. (parse may be slower.)

Default: false

Read Options


force: boolean

If true, ignore any exceptions that occur within parser.

Default: false


base64: boolean

If false, reads image into a buffer.

Default: false

License

MIT

0.7.4-alpha.1

3 years ago

0.7.4-alpha.0

3 years ago

0.7.3

3 years ago

0.7.3-alpha.3

3 years ago

0.7.3-alpha.2

3 years ago

0.7.3-alpha.0

3 years ago

0.7.3-alpha.1

3 years ago

0.7.2

3 years ago

0.7.2-alpha.4

3 years ago

0.7.2-alpha.3

3 years ago

0.7.2-alpha.0

3 years ago

0.7.2-alpha.1

3 years ago

0.7.2-alpha.2

3 years ago

0.7.1

3 years ago

0.7.0

4 years ago

0.6.16-alpha.2

4 years ago

0.6.16-alpha.1

4 years ago

0.6.15-alpha.2

4 years ago

0.6.16-alpha.0

4 years ago

0.6.21-alpha.0

4 years ago

0.6.20-alpha.0

4 years ago

0.6.15

4 years ago

0.6.15-alpha.1

4 years ago

0.6.15-alpha.0

4 years ago

0.6.14

4 years ago

0.6.13

4 years ago

0.6.12

4 years ago

0.6.11

4 years ago

0.6.10

4 years ago

0.6.9

4 years ago

0.6.8

4 years ago

0.6.7

4 years ago

0.6.6

5 years ago

0.6.5

5 years ago

0.6.4

5 years ago

0.6.3

5 years ago

0.6.2

5 years ago

0.6.1

5 years ago

0.6.0

5 years ago

0.6.0-alpha.8

5 years ago

0.6.0-alpha.7

5 years ago

0.6.0-ahlpa.6

5 years ago

0.6.0-alpha.4

5 years ago

0.6.0-alpha.3

5 years ago

0.6.0-alpha.2

5 years ago

0.5.8

5 years ago

0.5.7

5 years ago

0.5.6

5 years ago

0.5.5

5 years ago

0.5.4

5 years ago

0.5.3

5 years ago

0.5.2

5 years ago

0.5.1

5 years ago

0.5.0

5 years ago

0.4.1

5 years ago

0.4.0

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.3.0-alpha.15

5 years ago

0.3.0-alpha.14

5 years ago

0.3.0-alpha.13

5 years ago

0.3.0-alpha.12

5 years ago

0.3.0-alpha-11

5 years ago

0.3.0-alpha-10

5 years ago

0.3.0-alpha-9

5 years ago

0.3.0-alpha-8

5 years ago

0.3.0-alpha-7

5 years ago

0.3.0-alpha-6

5 years ago

0.3.0-alpha.5

5 years ago

0.3.0-alpha.4

5 years ago

0.3.0-alpha.3

5 years ago

0.3.0-alpha.2

5 years ago