refactor: 重构

This commit is contained in:
xiaojunnuo
2021-02-08 13:40:28 +08:00
parent 82f86d9556
commit cb8c8186f1
38 changed files with 807 additions and 1895 deletions
+5 -4
View File
@@ -1,5 +1,6 @@
export * from './dns-provider'
export * from './plugin'
export * from './access-provider'
export * from './dns-provider/index.js'
export * from './plugin/index.js'
export * from './access-provider/index.js'
export { Store } from './store/store.js'
export { util } from './utils'
export { util } from './utils/index.js'
// module.createRequireFromPath()
@@ -4,7 +4,11 @@ import dayjs from 'dayjs'
import Sleep from '../utils/util.sleep.js'
export class AbstractPlugin {
constructor ({ accessProviders }) {
constructor (options) {
if (options == null) {
throw new Error('插件安装失败:参数不允许为空')
}
const { accessProviders } = options
this.logger = logger
this.accessProviders = accessProviders
}
+10 -3
View File
@@ -26,11 +26,18 @@ export class Registry {
}
get (name) {
if (name) {
return this.collection[name]
if (!name) {
throw new Error('插件名称不能为空')
}
throw new Error(`${name} cant blank`)
if (!this.collection) {
this.collection = {}
}
const plugin = this.collection[name]
if (!plugin) {
throw new Error(`插件${name}还未注册`)
}
return plugin
}
getCollection () {
+17
View File
@@ -43,6 +43,18 @@
"node-forge": "^0.10.0"
}
},
"@certd/api": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/@certd/api/-/api-0.1.13.tgz",
"integrity": "sha512-klb4B5D+lu1SAtopCyU4sfe12Q9U4k5x+GTaSLLk1Dr3cX0Mpq7/fySQIW5yPH2ZJGQQAbKm/vciBnUGYWFy/A==",
"requires": {
"axios": "^0.21.1",
"dayjs": "^1.9.7",
"lodash-es": "^4.17.20",
"log4js": "^6.3.0",
"qs": "^6.9.4"
}
},
"@eslint/eslintrc": {
"version": "0.2.2",
"resolved": "https://registry.npm.taobao.org/@eslint/eslintrc/download/@eslint/eslintrc-0.2.2.tgz?cache=0&sync_timestamp=1607145629875&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40eslint%2Feslintrc%2Fdownload%2F%40eslint%2Feslintrc-0.2.2.tgz",
@@ -1790,6 +1802,11 @@
"integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=",
"dev": true
},
"qs": {
"version": "6.9.6",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
"integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ=="
},
"randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz",
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@certd/certd",
"version": "0.1.13",
"description": "",
"description": "a ssl cert keeper",
"main": "src/index.js",
"scripts": {
"test": "echo \\\"Error: no test specified\\\" && exit 1"
-4
View File
@@ -4,12 +4,8 @@ import { FileStore } from './store/file-store.js'
import { CertStore } from './store/cert-store.js'
import dayjs from 'dayjs'
import forge from 'node-forge'
import DefaultDnsProviders from '@certd/dns-providers'
const logger = util.logger
DefaultDnsProviders.install()
export class Certd {
constructor (options) {
this.options = options
@@ -1,18 +0,0 @@
import pkg from 'chai'
import { createOptions } from '../../../../../test/options.js'
import { Certd } from '../../src'
const { expect } = pkg
describe('AliyunDnsProvider', function () {
it('#申请证书-aliyun', async function () {
this.timeout(300000)
const options = createOptions()
options.args = { forceCert: true, test: false }
const certd = new Certd(options)
const cert = await certd.certApply()
expect(cert).ok
expect(cert.crt).ok
expect(cert.key).ok
expect(cert.detail).ok
expect(cert.expires).ok
})
})
@@ -1,20 +0,0 @@
import pkg from 'chai'
import { Certd } from '../../src'
import { createOptions } from '../../../../../test/options.js'
const { expect } = pkg
describe('DnspodDnsProvider', function () {
it('#申请证书', async function () {
this.timeout(300000)
const options = createOptions()
options.cert.domains = ['*.certd.xyz', '*.test.certd.xyz', '*.base.certd.xyz', 'certd.xyz']
options.cert.dnsProvider = 'dnspod'
options.args = { forceCert: true }
const certd = new Certd(options)
const cert = await certd.certApply()
expect(cert).ok
expect(cert.crt).ok
expect(cert.key).ok
expect(cert.detail).ok
expect(cert.expires).ok
})
})
+1 -1
View File
@@ -1,5 +1,5 @@
import chai from 'chai'
import { Certd } from '../src'
import { Certd } from '../src/index.js'
import { createOptions } from '../../../../test/options.js'
const { expect } = chai
const fakeCrt = `-----BEGIN CERTIFICATE-----
+4 -3
View File
@@ -12,8 +12,6 @@
"dependencies": {
"@certd/api": "^0.1.13",
"@certd/certd": "^0.1.13",
"@certd/dns-providers": "^0.1.13",
"@certd/plugins": "^0.1.13",
"dayjs": "^1.9.7",
"lodash-es": "^4.17.20"
},
@@ -29,7 +27,10 @@
"eslint-plugin-promise": "^4.2.1",
"mocha": "^8.2.1",
"rollup": "^2.35.1",
"rollup-plugin-terser": "^7.0.2"
"rollup-plugin-terser": "^7.0.2",
"@certd/plugin-aliyun": "^0.1.13",
"@certd/plugin-tencent": "^0.1.13",
"@certd/plugin-host": "^0.1.13"
},
"author": "Greper",
"license": "MIT",
-9
View File
@@ -3,15 +3,6 @@ import { pluginRegistry, util } from '@certd/api'
import _ from 'lodash-es'
import dayjs from 'dayjs'
import { Trace } from './trace.js'
import PluginAliyun from '@certd/plugin-aliyun'
import PluginTencent from '@certd/plugin-tencent'
import PluginHost from '@certd/plugin-host'
// 安装默认插件和授权提供者
PluginAliyun.install()
PluginTencent.install()
PluginHost.install()
const logger = util.logger
function createDefaultOptions () {