Добавьте наборы в простой JS-модуль с экспортным синтаксисом default - PullRequest
0 голосов
/ 24 апреля 2018

Я хотел бы добавить наборы к модулю "cipher-collection" -node, но он не работает, и я не могу понять, как это сделать.Я посмотрел на резюме [1] [2] [3] и взглянул на то, как это делается в RxJ, но все же не могу адаптировать его к этому модулю.

cipher-collection имеет папку src, в которой, например, base64.js находится:

node_modules/cipher-collection/src/base64.js:

import { isBrowser } from './helpers/index'

// Courtesy: https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem

const decode = input => isBrowser ? decodeURIComponent(atob(input).split('').map(c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')) : atob(input)
const encode = input => isBrowser ? btoa(encodeURIComponent(input).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(`0x${p1}`))) : btoa(input)

const btoa = isBrowser ? window.btoa : i => Buffer.from(i).toString('base64')
const atob = isBrowser ? window.atob : i => Buffer.from(i, 'base64').toString()

export default {
  decode,
  encode
}

Я попытался добавить файл node_modules/cipher-collection/index.d.ts со следующим содержимым:

export namespace CipherCollection {
  export { base64 } from './src/base64';
}

src / base64.d.ts :

export namespace base64 {
  export function encode(obj: any): string;
  export function decode(obj: string): any;
}

Я подумал, что теперь могу использовать base64, например, так:

import { base64 } from 'cipher-collection';
base64.encode("hello!");

или как это:

import { CipherCollection } from 'cipher-collection';
CipherCollection.base64.encode("hello!");

Но машинопись не может найти base64.Есть идеи, как мне этого добиться?

[1] https://www.typescriptlang.org/docs/handbook/declaration-files/library-structures.html

[2] https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-d-ts.html

[3] https://www.typescriptlang.org/docs/handbook/declaration-files/templates/module-function-d-ts.html

...