@push.rocks/smartacme 4.0.7 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartacme',
6
- version: '4.0.7',
7
- description: 'acme with an easy yet powerful interface in TypeScript'
6
+ version: '5.0.0',
7
+ description: 'A TypeScript-based ACME client for LetsEncrypt certificate management with a focus on simplicity and power.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHdEQUF3RDtDQUN0RSxDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx1QkFBdUI7SUFDN0IsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLDZHQUE2RztDQUMzSCxDQUFBIn0=
@@ -1 +1,2 @@
1
1
  export * from './smartacme.classes.smartacme.js';
2
+ export { SmartacmeCert as Cert } from './smartacme.classes.cert.js';
package/dist_ts/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './smartacme.classes.smartacme.js';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFDIn0=
2
+ export { SmartacmeCert as Cert } from './smartacme.classes.cert.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLElBQUksSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUMifQ==
@@ -1,5 +1,5 @@
1
1
  import * as plugins from './smartacme.plugins.js';
2
- export declare class Cert extends plugins.smartdata.SmartDataDbDoc<Cert, plugins.tsclass.network.ICert> implements plugins.tsclass.network.ICert {
2
+ export declare class SmartacmeCert extends plugins.smartdata.SmartDataDbDoc<SmartacmeCert, plugins.tsclass.network.ICert> implements plugins.tsclass.network.ICert {
3
3
  id: string;
4
4
  domainName: string;
5
5
  created: number;
@@ -9,9 +9,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  };
10
10
  import * as plugins from './smartacme.plugins.js';
11
11
  import * as interfaces from './interfaces/index.js';
12
- import { CertManager } from './smartacme.classes.certmanager.js';
12
+ import { SmartacmeCertManager } from './smartacme.classes.certmanager.js';
13
13
  import { Collection, svDb, unI } from '@push.rocks/smartdata';
14
- let Cert = class Cert extends plugins.smartdata.SmartDataDbDoc {
14
+ let SmartacmeCert = class SmartacmeCert extends plugins.smartdata.SmartDataDbDoc {
15
15
  isStillValid() {
16
16
  return this.validUntil >= Date.now();
17
17
  }
@@ -39,36 +39,36 @@ let Cert = class Cert extends plugins.smartdata.SmartDataDbDoc {
39
39
  __decorate([
40
40
  unI(),
41
41
  __metadata("design:type", String)
42
- ], Cert.prototype, "id", void 0);
42
+ ], SmartacmeCert.prototype, "id", void 0);
43
43
  __decorate([
44
44
  svDb(),
45
45
  __metadata("design:type", String)
46
- ], Cert.prototype, "domainName", void 0);
46
+ ], SmartacmeCert.prototype, "domainName", void 0);
47
47
  __decorate([
48
48
  svDb(),
49
49
  __metadata("design:type", Number)
50
- ], Cert.prototype, "created", void 0);
50
+ ], SmartacmeCert.prototype, "created", void 0);
51
51
  __decorate([
52
52
  svDb(),
53
53
  __metadata("design:type", String)
54
- ], Cert.prototype, "privateKey", void 0);
54
+ ], SmartacmeCert.prototype, "privateKey", void 0);
55
55
  __decorate([
56
56
  svDb(),
57
57
  __metadata("design:type", String)
58
- ], Cert.prototype, "publicKey", void 0);
58
+ ], SmartacmeCert.prototype, "publicKey", void 0);
59
59
  __decorate([
60
60
  svDb(),
61
61
  __metadata("design:type", String)
62
- ], Cert.prototype, "csr", void 0);
62
+ ], SmartacmeCert.prototype, "csr", void 0);
63
63
  __decorate([
64
64
  svDb(),
65
65
  __metadata("design:type", Number)
66
- ], Cert.prototype, "validUntil", void 0);
67
- Cert = __decorate([
66
+ ], SmartacmeCert.prototype, "validUntil", void 0);
67
+ SmartacmeCert = __decorate([
68
68
  plugins.smartdata.Collection(() => {
69
- return CertManager.activeDB;
69
+ return SmartacmeCertManager.activeDB;
70
70
  }),
71
71
  __metadata("design:paramtypes", [Object])
72
- ], Cert);
73
- export { Cert };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuY2VydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWNtZS5jbGFzc2VzLmNlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxPQUFPLEtBQUssVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUt2RCxJQUFNLElBQUksR0FBVixNQUFNLElBQ1gsU0FBUSxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQW1EO0lBd0J0RSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsTUFBTSx5QkFBeUIsR0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNWLE9BQU8sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxFQUFFO2FBQ1QsQ0FBQyxDQUFDO1FBQ0wsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxNQUFNLENBQUMsV0FBMEM7UUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksVUFBeUM7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQS9DUTtJQUROLEdBQUcsRUFBRTs7Z0NBQ1k7QUFHWDtJQUROLElBQUksRUFBRTs7d0NBQ21CO0FBR25CO0lBRE4sSUFBSSxFQUFFOztxQ0FDZ0I7QUFHaEI7SUFETixJQUFJLEVBQUU7O3dDQUNtQjtBQUduQjtJQUROLElBQUksRUFBRTs7dUNBQ2tCO0FBR2xCO0lBRE4sSUFBSSxFQUFFOztpQ0FDWTtBQUdaO0lBRE4sSUFBSSxFQUFFOzt3Q0FDbUI7QUF2QmYsSUFBSTtJQUhoQixPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDakMsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUMsQ0FBQzs7R0FDVyxJQUFJLENBb0RoQiJ9
72
+ ], SmartacmeCert);
73
+ export { SmartacmeCert };
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuY2VydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0YWNtZS5jbGFzc2VzLmNlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUVsRCxPQUFPLEtBQUssVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBRXBELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3ZELElBQU0sYUFBYSxHQUFuQixNQUFNLGFBQ1gsU0FBUSxPQUFPLENBQUMsU0FBUyxDQUFDLGNBQTREO0lBd0IvRSxZQUFZO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsTUFBTSx5QkFBeUIsR0FDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNWLE9BQU8sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxFQUFFO2FBQ1QsQ0FBQyxDQUFDO1FBQ0wsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFTSxNQUFNLENBQUMsV0FBMEM7UUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksVUFBeUM7UUFDbkQsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQTtBQS9DUTtJQUROLEdBQUcsRUFBRTs7eUNBQ1k7QUFHWDtJQUROLElBQUksRUFBRTs7aURBQ21CO0FBR25CO0lBRE4sSUFBSSxFQUFFOzs4Q0FDZ0I7QUFHaEI7SUFETixJQUFJLEVBQUU7O2lEQUNtQjtBQUduQjtJQUROLElBQUksRUFBRTs7Z0RBQ2tCO0FBR2xCO0lBRE4sSUFBSSxFQUFFOzswQ0FDWTtBQUdaO0lBRE4sSUFBSSxFQUFFOztpREFDbUI7QUF2QmYsYUFBYTtJQUh6QixPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDakMsT0FBTyxvQkFBb0IsQ0FBQyxRQUFRLENBQUM7SUFDdkMsQ0FBQyxDQUFDOztHQUNXLGFBQWEsQ0FvRHpCIn0=
@@ -1,11 +1,11 @@
1
1
  import * as plugins from './smartacme.plugins.js';
2
- import { Cert } from './smartacme.classes.cert.js';
2
+ import { SmartacmeCert } from './smartacme.classes.cert.js';
3
3
  import { SmartAcme } from './smartacme.classes.smartacme.js';
4
- export declare class CertManager {
4
+ export declare class SmartacmeCertManager {
5
5
  static activeDB: plugins.smartdata.SmartdataDb;
6
6
  private mongoDescriptor;
7
7
  smartdataDb: plugins.smartdata.SmartdataDb;
8
- interestMap: plugins.lik.InterestMap<string, Cert>;
8
+ interestMap: plugins.lik.InterestMap<string, SmartacmeCert>;
9
9
  constructor(smartAcmeArg: SmartAcme, optionsArg: {
10
10
  mongoDescriptor: plugins.smartdata.IMongoDescriptor;
11
11
  });
@@ -15,7 +15,7 @@ export declare class CertManager {
15
15
  * @returns the Cert class or null
16
16
  * @param certDomainNameArg the domain Name to retrieve the vcertificate for
17
17
  */
18
- retrieveCertificate(certDomainNameArg: string): Promise<Cert>;
18
+ retrieveCertificate(certDomainNameArg: string): Promise<SmartacmeCert>;
19
19
  /**
20
20
  * stores the certificate
21
21
  * @param optionsArg
@@ -1,8 +1,8 @@
1
1
  import * as plugins from './smartacme.plugins.js';
2
- import { Cert } from './smartacme.classes.cert.js';
2
+ import { SmartacmeCert } from './smartacme.classes.cert.js';
3
3
  import { SmartAcme } from './smartacme.classes.smartacme.js';
4
4
  import * as interfaces from './interfaces/index.js';
5
- export class CertManager {
5
+ export class SmartacmeCertManager {
6
6
  constructor(smartAcmeArg, optionsArg) {
7
7
  this.mongoDescriptor = optionsArg.mongoDescriptor;
8
8
  }
@@ -10,7 +10,7 @@ export class CertManager {
10
10
  // Smartdata DB
11
11
  this.smartdataDb = new plugins.smartdata.SmartdataDb(this.mongoDescriptor);
12
12
  await this.smartdataDb.init();
13
- CertManager.activeDB = this.smartdataDb;
13
+ SmartacmeCertManager.activeDB = this.smartdataDb;
14
14
  // Pending Map
15
15
  this.interestMap = new plugins.lik.InterestMap((certName) => certName);
16
16
  }
@@ -20,7 +20,7 @@ export class CertManager {
20
20
  * @param certDomainNameArg the domain Name to retrieve the vcertificate for
21
21
  */
22
22
  async retrieveCertificate(certDomainNameArg) {
23
- const existingCertificate = await Cert.getInstance({
23
+ const existingCertificate = await SmartacmeCert.getInstance({
24
24
  domainName: certDomainNameArg,
25
25
  });
26
26
  if (existingCertificate) {
@@ -35,7 +35,7 @@ export class CertManager {
35
35
  * @param optionsArg
36
36
  */
37
37
  async storeCertificate(optionsArg) {
38
- const cert = new Cert(optionsArg);
38
+ const cert = new SmartacmeCert(optionsArg);
39
39
  await cert.save();
40
40
  const interest = this.interestMap.findInterest(cert.domainName);
41
41
  if (interest) {
@@ -44,10 +44,10 @@ export class CertManager {
44
44
  }
45
45
  }
46
46
  async deleteCertificate(certDomainNameArg) {
47
- const cert = await Cert.getInstance({
47
+ const cert = await SmartacmeCert.getInstance({
48
48
  domainName: certDomainNameArg,
49
49
  });
50
50
  await cert.delete();
51
51
  }
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuY2VydG1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFjbWUuY2xhc3Nlcy5jZXJ0bWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFN0QsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxNQUFNLE9BQU8sV0FBVztJQWN0QixZQUNFLFlBQXVCLEVBQ3ZCLFVBRUM7UUFFRCxJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUM7SUFDcEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJO1FBQ2YsZUFBZTtRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0UsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlCLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUV4QyxjQUFjO1FBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBeUI7UUFDeEQsTUFBTSxtQkFBbUIsR0FBUyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQU87WUFDN0QsVUFBVSxFQUFFLGlCQUFpQjtTQUM5QixDQUFDLENBQUM7UUFFSCxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBeUM7UUFDckUsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLGlCQUF5QjtRQUN0RCxNQUFNLElBQUksR0FBUyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQU87WUFDOUMsVUFBVSxFQUFFLGlCQUFpQjtTQUM5QixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QixDQUFDO0NBQ0YifQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuY2VydG1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFjbWUuY2xhc3Nlcy5jZXJ0bWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFN0QsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxNQUFNLE9BQU8sb0JBQW9CO0lBYy9CLFlBQ0UsWUFBdUIsRUFDdkIsVUFFQztRQUVELElBQUksQ0FBQyxlQUFlLEdBQUcsVUFBVSxDQUFDLGVBQWUsQ0FBQztJQUNwRCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDZixlQUFlO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsb0JBQW9CLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFakQsY0FBYztRQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsaUJBQXlCO1FBQ3hELE1BQU0sbUJBQW1CLEdBQWtCLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBZ0I7WUFDeEYsVUFBVSxFQUFFLGlCQUFpQjtTQUM5QixDQUFDLENBQUM7UUFFSCxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBeUM7UUFDckUsTUFBTSxJQUFJLEdBQUcsSUFBSSxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLGlCQUFpQixDQUFDLGlCQUF5QjtRQUN0RCxNQUFNLElBQUksR0FBa0IsTUFBTSxhQUFhLENBQUMsV0FBVyxDQUFnQjtZQUN6RSxVQUFVLEVBQUUsaUJBQWlCO1NBQzlCLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RCLENBQUM7Q0FDRiJ9
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * certmatcher is responsible for matching certificates
3
3
  */
4
- export declare class CertMatcher {
4
+ export declare class SmartacmeCertMatcher {
5
5
  /**
6
6
  * creates a domainName for the certificate that will include the broadest scope
7
7
  * for wild card certificates
@@ -3,7 +3,7 @@ import * as interfaces from './interfaces/index.js';
3
3
  /**
4
4
  * certmatcher is responsible for matching certificates
5
5
  */
6
- export class CertMatcher {
6
+ export class SmartacmeCertMatcher {
7
7
  /**
8
8
  * creates a domainName for the certificate that will include the broadest scope
9
9
  * for wild card certificates
@@ -16,4 +16,4 @@ export class CertMatcher {
16
16
  }
17
17
  }
18
18
  }
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuY2VydG1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFjbWUuY2xhc3Nlcy5jZXJ0bWF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sS0FBSyxVQUFVLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7OztPQUlHO0lBQ0ksb0NBQW9DLENBQUMsYUFBcUI7UUFDL0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE9BQU8sR0FBRyxjQUFjLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3RCxDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuY2VydG1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGFjbWUuY2xhc3Nlcy5jZXJ0bWF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sS0FBSyxVQUFVLE1BQU0sdUJBQXVCLENBQUM7QUFFcEQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9COzs7O09BSUc7SUFDSSxvQ0FBb0MsQ0FBQyxhQUFxQjtRQUMvRCxNQUFNLGNBQWMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDM0IsT0FBTyxHQUFHLGNBQWMsQ0FBQyxNQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
@@ -1,5 +1,5 @@
1
1
  import * as plugins from './smartacme.plugins.js';
2
- import { Cert } from './smartacme.classes.cert.js';
2
+ import { SmartacmeCert } from './smartacme.classes.cert.js';
3
3
  /**
4
4
  * the options for the class @see SmartAcme
5
5
  */
@@ -25,7 +25,7 @@ export declare class SmartAcme {
25
25
  private options;
26
26
  private client;
27
27
  private smartdns;
28
- logger: plugins.smartlog.ConsoleLog;
28
+ logger: plugins.smartlog.Smartlog;
29
29
  private privateKey;
30
30
  private setChallenge;
31
31
  private removeChallenge;
@@ -33,12 +33,12 @@ export declare class SmartAcme {
33
33
  private certmatcher;
34
34
  constructor(optionsArg: ISmartAcmeOptions);
35
35
  /**
36
- * inits the instance
36
+ * starts the instance
37
37
  * ```ts
38
- * await myCloudlyInstance.init() // does not support options
38
+ * await myCloudlyInstance.start() // does not support options
39
39
  * ```
40
40
  */
41
- init(): Promise<void>;
41
+ start(): Promise<void>;
42
42
  stop(): Promise<void>;
43
43
  /**
44
44
  * gets a certificate
@@ -54,5 +54,6 @@ export declare class SmartAcme {
54
54
  *
55
55
  * @param domainArg
56
56
  */
57
- getCertificateForDomain(domainArg: string): Promise<Cert>;
57
+ getCertificateForDomain(domainArg: string): Promise<SmartacmeCert>;
58
+ getAllCertificates(): Promise<SmartacmeCert[]>;
58
59
  }
@@ -1,7 +1,8 @@
1
1
  import * as plugins from './smartacme.plugins.js';
2
- import { Cert } from './smartacme.classes.cert.js';
3
- import { CertManager } from './smartacme.classes.certmanager.js';
4
- import { CertMatcher } from './smartacme.classes.certmatcher.js';
2
+ import { SmartacmeCert } from './smartacme.classes.cert.js';
3
+ import { SmartacmeCertManager } from './smartacme.classes.certmanager.js';
4
+ import { SmartacmeCertMatcher } from './smartacme.classes.certmatcher.js';
5
+ import { commitinfo } from './00_commitinfo_data.js';
5
6
  /**
6
7
  * class SmartAcme
7
8
  * can be used for setting up communication with an ACME authority
@@ -16,26 +17,26 @@ export class SmartAcme {
16
17
  constructor(optionsArg) {
17
18
  this.smartdns = new plugins.smartdns.Smartdns({});
18
19
  this.options = optionsArg;
19
- this.logger = new plugins.smartlog.ConsoleLog();
20
+ this.logger = plugins.smartlog.Smartlog.createForCommitinfo(commitinfo);
20
21
  }
21
22
  /**
22
- * inits the instance
23
+ * starts the instance
23
24
  * ```ts
24
- * await myCloudlyInstance.init() // does not support options
25
+ * await myCloudlyInstance.start() // does not support options
25
26
  * ```
26
27
  */
27
- async init() {
28
+ async start() {
28
29
  this.privateKey =
29
30
  this.options.accountPrivateKey || (await plugins.acme.forge.createPrivateKey()).toString();
30
31
  this.setChallenge = this.options.setChallenge;
31
32
  this.removeChallenge = this.options.removeChallenge;
32
33
  // CertMangaer
33
- this.certmanager = new CertManager(this, {
34
+ this.certmanager = new SmartacmeCertManager(this, {
34
35
  mongoDescriptor: this.options.mongoDescriptor,
35
36
  });
36
37
  await this.certmanager.init();
37
38
  // CertMatcher
38
- this.certmatcher = new CertMatcher();
39
+ this.certmatcher = new SmartacmeCertMatcher();
39
40
  // ACME Client
40
41
  this.client = new plugins.acme.Client({
41
42
  directoryUrl: (() => {
@@ -160,5 +161,8 @@ export class SmartAcme {
160
161
  currentDomainInterst.destroy();
161
162
  return newCertificate;
162
163
  }
164
+ async getAllCertificates() {
165
+ return SmartacmeCert.getInstances({});
166
+ }
163
167
  }
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFjakU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFtQnBCLFlBQVksVUFBNkI7UUFkakMsYUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7UUFlbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsVUFBVTtZQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLElBQUksQ0FBQyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM3RixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzlDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7UUFFcEQsY0FBYztRQUNkLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFO1lBQ3ZDLGVBQWUsRUFB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
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRhY21lLmNsYXNzZXMuc21hcnRhY21lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sd0JBQXdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWNyRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sU0FBUztJQW1CcEIsWUFBWSxVQUE2QjtRQWRqQyxhQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQWVuRCxJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxVQUFVO1lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDOUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUVwRCxjQUFj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
package/npmextra.json CHANGED
@@ -2,17 +2,37 @@
2
2
  "gitzone": {
3
3
  "projectType": "npm",
4
4
  "module": {
5
- "githost": "gitlab.com",
5
+ "githost": "code.foss.global",
6
6
  "gitscope": "push.rocks",
7
7
  "gitrepo": "smartacme",
8
- "description": "acme with an easy yet powerful interface in TypeScript",
8
+ "description": "A TypeScript-based ACME client for LetsEncrypt certificate management with a focus on simplicity and power.",
9
9
  "npmPackagename": "@push.rocks/smartacme",
10
10
  "license": "MIT",
11
- "projectDomain": "push.rocks"
11
+ "projectDomain": "push.rocks",
12
+ "keywords": [
13
+ "ACME",
14
+ "LetsEncrypt",
15
+ "TypeScript",
16
+ "certificate management",
17
+ "DNS challenges",
18
+ "SSL/TLS",
19
+ "secure communication",
20
+ "domain validation",
21
+ "automation",
22
+ "crypto",
23
+ "MongoDB",
24
+ "dns-01 challenge",
25
+ "token-based challenges",
26
+ "certificate renewal",
27
+ "wildcard certificates"
28
+ ]
12
29
  }
13
30
  },
14
31
  "npmci": {
15
32
  "npmGlobalTools": [],
16
33
  "npmAccessLevel": "public"
34
+ },
35
+ "tsdoc": {
36
+ "legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
17
37
  }
18
38
  }
package/package.json CHANGED
@@ -1,49 +1,61 @@
1
1
  {
2
2
  "name": "@push.rocks/smartacme",
3
- "version": "4.0.7",
3
+ "version": "5.0.0",
4
4
  "private": false,
5
- "description": "acme with an easy yet powerful interface in TypeScript",
5
+ "description": "A TypeScript-based ACME client for LetsEncrypt certificate management with a focus on simplicity and power.",
6
6
  "main": "dist_ts/index.js",
7
7
  "typings": "dist_ts/index.d.ts",
8
8
  "type": "module",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "git+ssh://git@gitlab.com/umbrellazone/smartacme.git"
11
+ "url": "https://code.foss.global/push.rocks/smartacme.git"
12
12
  },
13
13
  "keywords": [
14
+ "ACME",
15
+ "LetsEncrypt",
14
16
  "TypeScript",
15
- "acme",
16
- "letsencrypt"
17
+ "certificate management",
18
+ "DNS challenges",
19
+ "SSL/TLS",
20
+ "secure communication",
21
+ "domain validation",
22
+ "automation",
23
+ "crypto",
24
+ "MongoDB",
25
+ "dns-01 challenge",
26
+ "token-based challenges",
27
+ "certificate renewal",
28
+ "wildcard certificates"
17
29
  ],
18
30
  "author": "Lossless GmbH",
19
31
  "license": "MIT",
20
32
  "bugs": {
21
33
  "url": "https://gitlab.com/umbrellazone/smartacme/issues"
22
34
  },
23
- "homepage": "https://gitlab.com/umbrellazone/smartacme#README",
35
+ "homepage": "https://code.foss.global/push.rocks/smartacme",
24
36
  "dependencies": {
25
- "@api.global/typedserver": "^3.0.20",
26
- "@push.rocks/lik": "^6.0.12",
27
- "@push.rocks/smartdata": "^5.0.33",
37
+ "@api.global/typedserver": "^3.0.50",
38
+ "@push.rocks/lik": "^6.0.15",
39
+ "@push.rocks/smartdata": "^5.2.4",
28
40
  "@push.rocks/smartdelay": "^3.0.5",
29
41
  "@push.rocks/smartdns": "^5.0.2",
30
- "@push.rocks/smartlog": "^3.0.3",
42
+ "@push.rocks/smartlog": "^3.0.7",
31
43
  "@push.rocks/smartpromise": "^4.0.3",
32
- "@push.rocks/smartrequest": "^2.0.21",
33
- "@push.rocks/smartstring": "^4.0.13",
44
+ "@push.rocks/smartrequest": "^2.0.22",
45
+ "@push.rocks/smartstring": "^4.0.15",
34
46
  "@push.rocks/smarttime": "^4.0.6",
35
- "@push.rocks/smartunique": "^3.0.6",
36
- "@tsclass/tsclass": "^4.0.46",
47
+ "@push.rocks/smartunique": "^3.0.9",
48
+ "@tsclass/tsclass": "^4.0.58",
37
49
  "acme-client": "^4.2.5"
38
50
  },
39
51
  "devDependencies": {
40
52
  "@apiclient.xyz/cloudflare": "^6.0.3",
41
- "@git.zone/tsbuild": "^2.1.66",
53
+ "@git.zone/tsbuild": "^2.1.80",
42
54
  "@git.zone/tsrun": "^1.2.44",
43
- "@git.zone/tstest": "^1.0.77",
44
- "@push.rocks/qenv": "^6.0.4",
45
- "@push.rocks/tapbundle": "^5.0.15",
46
- "@types/node": "^20.11.8"
55
+ "@git.zone/tstest": "^1.0.90",
56
+ "@push.rocks/qenv": "^6.0.5",
57
+ "@push.rocks/tapbundle": "^5.0.23",
58
+ "@types/node": "^20.14.2"
47
59
  },
48
60
  "files": [
49
61
  "ts/**/*",
@@ -0,0 +1,2 @@
1
+ - this repo is dependent on letsencrypt and its limits
2
+ - to simpify the outside API, smartacme is stateful, meaning it works with a mongodb and a collection called 'SmartacmeCert'.
package/readme.md CHANGED
@@ -1,35 +1,227 @@
1
+ ```markdown
1
2
  # @push.rocks/smartacme
2
- acme with an easy yet powerful interface in TypeScript
3
-
4
- ## Availabililty and Links
5
- * [npmjs.org (npm package)](https://www.npmjs.com/package/@push.rocks/smartacme)
6
- * [gitlab.com (source)](https://gitlab.com/push.rocks/smartacme)
7
- * [github.com (source mirror)](https://github.com/push.rocks/smartacme)
8
- * [docs (typedoc)](https://push.rocks.gitlab.io/smartacme/)
9
-
10
- ## Status for master
11
-
12
- Status Category | Status Badge
13
- -- | --
14
- GitLab Pipelines | [![pipeline status](https://gitlab.com/push.rocks/smartacme/badges/master/pipeline.svg)](https://lossless.cloud)
15
- GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/push.rocks/smartacme/badges/master/coverage.svg)](https://lossless.cloud)
16
- npm | [![npm downloads per month](https://badgen.net/npm/dy/@push.rocks/smartacme)](https://lossless.cloud)
17
- Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/push.rocks/smartacme)](https://lossless.cloud)
18
- TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud)
19
- node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
20
- Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud)
21
- PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@push.rocks/smartacme)](https://lossless.cloud)
22
- PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@push.rocks/smartacme)](https://lossless.cloud)
23
- BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@push.rocks/smartacme)](https://lossless.cloud)
3
+
4
+ A TypeScript-based ACME client with an easy yet powerful interface for LetsEncrypt certificate management.
5
+
6
+ ## Install
7
+
8
+ To install `@push.rocks/smartacme`, you can use npm or yarn. Run one of the following commands in your project directory:
9
+
10
+ ```bash
11
+ npm install @push.rocks/smartacme --save
12
+ ```
13
+
14
+ or
15
+
16
+ ```bash
17
+ yarn add @push.rocks/smartacme
18
+ ```
19
+
20
+ Make sure your project is set up to use TypeScript and supports ECMAScript Modules (ESM).
24
21
 
25
22
  ## Usage
26
23
 
27
- Use TypeScript for best in class instellisense.
24
+ This guide will walk you through using `@push.rocks/smartacme` to set up and manage ACME (Automated Certificate Management Environment) certificates with a focus on the Let's Encrypt service, which provides free SSL certificates. The library provides an easy yet powerful TypeScript interface to automate the process of obtaining, renewing, and installing your SSL certificates.
25
+
26
+ ### Table of Contents
27
+
28
+ 1. [Setting Up Your Project](#setting-up-your-project)
29
+ 2. [Creating a SmartAcme Instance](#creating-a-smartacme-instance)
30
+ 3. [Initializing SmartAcme](#initializing-smartacme)
31
+ 4. [Obtaining a Certificate for a Domain](#obtaining-a-certificate-for-a-domain)
32
+ 5. [Automating DNS Challenges](#automating-dns-challenges)
33
+ 6. [Managing Certificates](#managing-certificates)
34
+ 7. [Environmental Considerations](#environmental-considerations)
35
+ 8. [Complete Example](#complete-example)
36
+
37
+ ### Setting Up Your Project
38
+
39
+ Ensure your project includes the necessary TypeScript configuration and dependencies. You'll need to have TypeScript installed and configured for ECMAScript Modules. If you are new to TypeScript, review its [documentation](https://www.typescriptlang.org/docs/) to get started.
40
+
41
+ ### Creating a SmartAcme Instance
42
+
43
+ Start by importing the `SmartAcme` class from the `@push.rocks/smartacme` package. You'll also need to import or define interfaces for your setup options:
44
+
45
+ ```typescript
46
+ import { SmartAcme } from '@push.rocks/smartacme';
47
+
48
+ const smartAcmeInstance = new SmartAcme({
49
+ accountEmail: 'youremail@example.com', // Email used for Let's Encrypt registration and recovery
50
+ accountPrivateKey: null, // Private key for the account (optional, if not provided it will be generated)
51
+ mongoDescriptor: {
52
+ mongoDbUrl: 'mongodb://yourmongoURL',
53
+ mongoDbName: 'yourDbName',
54
+ mongoDbPass: 'yourDbPassword',
55
+ },
56
+ removeChallenge: async (dnsChallenge) => {
57
+ // Implement logic here to remove DNS challenge records
58
+ },
59
+ setChallenge: async (dnsChallenge) => {
60
+ // Implement logic here to create DNS challenge records
61
+ },
62
+ environment: 'integration', // Use 'production' for actual certificates
63
+ });
64
+ ```
65
+
66
+ ### Initializing SmartAcme
67
+
68
+ Before proceeding to request certificates, initialize your SmartAcme instance:
69
+
70
+ ```typescript
71
+ await smartAcmeInstance.init();
72
+ ```
73
+
74
+ ### Obtaining a Certificate for a Domain
75
+
76
+ To obtain a certificate for a specific domain, use the `getCertificateForDomain` method. This function ensures that if a valid certificate is already present, it will be reused; otherwise, a new certificate is obtained:
77
+
78
+ ```typescript
79
+ const myDomain = 'example.com';
80
+ const myCert = await smartAcmeInstance.getCertificateForDomain(myDomain);
81
+ console.log('Certificate:', myCert);
82
+ ```
83
+
84
+ ### Automating DNS Challenges
85
+
86
+ Part of the ACME protocol involves responding to DNS challenges issued by the certificate authority to prove control over a domain. Implement the `setChallenge` and `removeChallenge` functions in your SmartAcme configuration to automate this process. These functions receive a `dnsChallenge` argument containing details needed to create or remove the necessary DNS records.
87
+
88
+ ```typescript
89
+ import * as cloudflare from '@apiclient.xyz/cloudflare';
90
+ import { Qenv } from '@push.rocks/qenv';
91
+
92
+ const testQenv = new Qenv('./', './.nogit/');
93
+ const testCloudflare = new cloudflare.CloudflareAccount(testQenv.getEnvVarOnDemand('CF_TOKEN'));
94
+
95
+ const smartAcmeInstance = new SmartAcme({
96
+ accountEmail: 'domains@example.com',
97
+ accountPrivateKey: null,
98
+ mongoDescriptor: {
99
+ mongoDbName: testQenv.getEnvVarRequired('MONGODB_DATABASE'),
100
+ mongoDbPass: testQenv.getEnvVarRequired('MONGODB_PASSWORD'),
101
+ mongoDbUrl: testQenv.getEnvVarRequired('MONGODB_URL'),
102
+ },
103
+ removeChallenge: async (dnsChallenge) => {
104
+ testCloudflare.convenience.acmeRemoveDnsChallenge(dnsChallenge);
105
+ },
106
+ setChallenge: async (dnsChallenge) => {
107
+ testCloudflare.convenience.acmeSetDnsChallenge(dnsChallenge);
108
+ },
109
+ environment: 'integration',
110
+ });
111
+
112
+ await smartAcmeInstance.init();
113
+ ```
114
+
115
+ ### Managing Certificates
116
+
117
+ The library automatically handles fetching, renewing, and storing your certificates in a MongoDB database specified in your configuration. Ensure your MongoDB instance is accessible and properly configured for use with SmartAcme.
118
+
119
+ ```typescript
120
+ const mongoDescriptor = {
121
+ mongoDbUrl: 'mongodb://yourmongoURL',
122
+ mongoDbName: 'yourDbName',
123
+ mongoDbPass: 'yourDbPassword',
124
+ };
125
+ ```
126
+
127
+ ### Environmental Considerations
128
+
129
+ When creating an instance of `SmartAcme`, you can specify an `environment` option. This is particularly useful for testing, as you can use the `integration` environment to avoid hitting rate limits and for testing your setup without issuing real certificates. Switch to `production` when you are ready to obtain actual certificates.
130
+
131
+ ### Complete Example
132
+
133
+ Below is a complete example demonstrating how to use `@push.rocks/smartacme` to obtain and manage an ACME certificate with Let's Encrypt:
134
+
135
+ ```typescript
136
+ import { SmartAcme } from '@push.rocks/smartacme';
137
+ import * as cloudflare from '@apiclient.xyz/cloudflare';
138
+ import { Qenv } from '@push.rocks/qenv';
139
+
140
+ const qenv = new Qenv('./', './.nogit/');
141
+ const cloudflareAccount = new cloudflare.CloudflareAccount(qenv.getEnvVarOnDemand('CF_TOKEN'));
142
+
143
+ async function main() {
144
+ const smartAcmeInstance = new SmartAcme({
145
+ accountEmail: 'youremail@example.com',
146
+ accountPrivateKey: null,
147
+ mongoDescriptor: {
148
+ mongoDbUrl: qenv.getEnvVarRequired('MONGODB_URL'),
149
+ mongoDbName: qenv.getEnvVarRequired('MONGODB_DATABASE'),
150
+ mongoDbPass: qenv.getEnvVarRequired('MONGODB_PASSWORD'),
151
+ },
152
+ setChallenge: async (dnsChallenge) => {
153
+ await cloudflareAccount.convenience.acmeSetDnsChallenge(dnsChallenge);
154
+ },
155
+ removeChallenge: async (dnsChallenge) => {
156
+ await cloudflareAccount.convenience.acmeRemoveDnsChallenge(dnsChallenge);
157
+ },
158
+ environment: 'integration',
159
+ });
160
+
161
+ await smartAcmeInstance.init();
162
+
163
+ const myDomain = 'example.com';
164
+ const myCert = await smartAcmeInstance.getCertificateForDomain(myDomain);
165
+ console.log('Certificate:', myCert);
166
+
167
+ await smartAcmeInstance.stop();
168
+ }
169
+
170
+ main().catch(console.error);
171
+ ```
172
+
173
+ In this example, `Qenv` is used to manage environment variables, and `cloudflare` library is used to handle DNS challenges required by Let's Encrypt ACME protocol. The `setChallenge` and `removeChallenge` methods are essential for automating the DNS challenge process, which is a key part of domain validation.
174
+
175
+ ## Additional Details
176
+
177
+ ### Certificate Object
178
+
179
+ The certificate object obtained from the `getCertificateForDomain` method has the following properties:
180
+
181
+ - `id`: Unique identifier for the certificate.
182
+ - `domainName`: The domain name for which the certificate is issued.
183
+ - `created`: Timestamp of when the certificate was created.
184
+ - `privateKey`: The private key associated with the certificate.
185
+ - `publicKey`: The public key or certificate itself.
186
+ - `csr`: Certificate Signing Request (CSR) used to obtain the certificate.
187
+ - `validUntil`: Timestamp indicating the expiration date of the certificate.
188
+
189
+ ### Methods Summary
190
+
191
+ - **start()**: Initializes the SmartAcme instance, sets up the ACME client, and registers the account with Let's Encrypt.
192
+ - **stop()**: Closes the MongoDB connection and performs any necessary cleanup.
193
+ - **getCertificateForDomain(domainArg: string)**: Retrieves or obtains a certificate for the specified domain name. If a valid certificate exists in the database, it is returned. Otherwise, a new certificate is requested and stored.
194
+ - **setChallenge(dnsChallenge: any)**: Automates the process of setting DNS challenge records.
195
+ - **removeChallenge(dnsChallenge: any)**: Automates the process of removing DNS challenge records.
196
+
197
+ ### Handling Domain Matching
198
+
199
+ The `SmartacmeCertMatcher` class is responsible for matching certificates with the broadest scope for wildcard certificates. The `getCertificateDomainNameByDomainName` method ensures that domains at various levels are correctly matched.
28
200
 
29
- ```javascript
30
- import { SmartAcme } from 'smartacme';
201
+ ```typescript
202
+ import { SmartacmeCertMatcher } from '@push.rocks/smartacme';
31
203
 
32
- const run = async () => {
204
+ const certMatcher = new SmartacmeCertMatcher();
205
+ const certDomainName = certMatcher.getCertificateDomainNameByDomainName('subdomain.example.com');
206
+ console.log('Certificate Domain Name:', certDomainName); // Output: example.com
207
+ ```
208
+
209
+ ### Testing
210
+
211
+ Automated tests can be added to ensure that the setup and functions work as expected. Using a testing framework such as `tap` and mock services for DNS providers (e.g., Cloudflare), you can simulate the process of obtaining and managing certificates without the need for actual domain ownership.
212
+
213
+ ```typescript
214
+ import { tap, expect } from '@push.rocks/tapbundle';
215
+ import { Qenv } from '@push.rocks/qenv';
216
+ import * as cloudflare from '@apiclient.xyz/cloudflare';
217
+ import * as smartacme from '@push.rocks/smartacme';
218
+
219
+ const testQenv = new Qenv('./', './.nogit/');
220
+ const testCloudflare = new cloudflare.CloudflareAccount(testQenv.getEnvVarOnDemand('CF_TOKEN'));
221
+
222
+ let smartAcmeInstance: smartacme.SmartAcme;
223
+
224
+ tap.test('should create a valid instance of SmartAcme', async () => {
33
225
  smartAcmeInstance = new smartacme.SmartAcme({
34
226
  accountEmail: 'domains@lossless.org',
35
227
  accountPrivateKey: null,
@@ -38,27 +230,58 @@ const run = async () => {
38
230
  mongoDbPass: testQenv.getEnvVarRequired('MONGODB_PASSWORD'),
39
231
  mongoDbUrl: testQenv.getEnvVarRequired('MONGODB_URL'),
40
232
  },
41
- removeChallenge: async (dnsChallenge) => {
42
- // somehow provide a function that is able to remove the dns challenge
43
- },
44
233
  setChallenge: async (dnsChallenge) => {
45
- // somehow provide a function that is able to the dns challenge
234
+ await testCloudflare.convenience.acmeSetDnsChallenge(dnsChallenge);
235
+ },
236
+ removeChallenge: async (dnsChallenge) => {
237
+ await testCloudflare.convenience.acmeRemoveDnsChallenge(dnsChallenge);
46
238
  },
47
239
  environment: 'integration',
48
240
  });
49
241
  await smartAcmeInstance.init();
242
+ expect(smartAcmeInstance).toBeInstanceOf(smartacme.SmartAcme);
243
+ });
50
244
 
51
- // myCert has properties for public/private keys and csr ;)
52
- const myCert = await smartAcmeInstance.getCertificateForDomain('bleu.de');
53
- };
245
+ tap.test('should get a domain certificate', async () => {
246
+ const certificate = await smartAcmeInstance.getCertificateForDomain('example.com');
247
+ console.log('Certificate:', certificate);
248
+ expect(certificate).toHaveProperty('domainName', 'example.com');
249
+ });
250
+
251
+ tap.test('certmatcher should correctly match domains', async () => {
252
+ const certMatcher = new smartacme.SmartacmeCertMatcher();
253
+ const matchedCert = certMatcher.getCertificateDomainNameByDomainName('subdomain.example.com');
254
+ expect(matchedCert).toBe('example.com');
255
+ });
256
+
257
+ tap.test('should stop correctly', async () => {
258
+ await smartAcmeInstance.stop();
259
+ expect(smartAcmeInstance).toHaveProperty('client', null);
260
+ });
261
+
262
+ tap.start();
263
+ ```
264
+
265
+ This comprehensive guide ensures you can set up, manage, and test ACME certificates efficiently and effectively using `@push.rocks/smartacme`.
266
+
267
+ ---
54
268
  ```
55
269
 
56
- ## Contribution
270
+ ## License and Legal Information
271
+
272
+ This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
273
+
274
+ **Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
275
+
276
+ ### Trademarks
277
+
278
+ This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.
279
+
280
+ ### Company Information
57
281
 
58
- We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
282
+ Task Venture Capital GmbH
283
+ Registered at District court Bremen HRB 35230 HB, Germany
59
284
 
60
- For further information read the linked docs at the top of this readme.
285
+ For any legal inquiries or if you require further information, please contact us via email at hello@task.vc.
61
286
 
62
- ## Legal
63
- > MIT licensed | **&copy;** [Task Venture Capital GmbH](https://task.vc)
64
- | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
287
+ By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartacme',
6
- version: '4.0.7',
7
- description: 'acme with an easy yet powerful interface in TypeScript'
6
+ version: '5.0.0',
7
+ description: 'A TypeScript-based ACME client for LetsEncrypt certificate management with a focus on simplicity and power.'
8
8
  }
package/ts/index.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './smartacme.classes.smartacme.js';
2
+ export { SmartacmeCert as Cert } from './smartacme.classes.cert.js';
@@ -2,15 +2,15 @@ import * as plugins from './smartacme.plugins.js';
2
2
 
3
3
  import * as interfaces from './interfaces/index.js';
4
4
 
5
- import { CertManager } from './smartacme.classes.certmanager.js';
5
+ import { SmartacmeCertManager } from './smartacme.classes.certmanager.js';
6
6
 
7
7
  import { Collection, svDb, unI } from '@push.rocks/smartdata';
8
8
 
9
9
  @plugins.smartdata.Collection(() => {
10
- return CertManager.activeDB;
10
+ return SmartacmeCertManager.activeDB;
11
11
  })
12
- export class Cert
13
- extends plugins.smartdata.SmartDataDbDoc<Cert, plugins.tsclass.network.ICert>
12
+ export class SmartacmeCert
13
+ extends plugins.smartdata.SmartDataDbDoc<SmartacmeCert, plugins.tsclass.network.ICert>
14
14
  implements plugins.tsclass.network.ICert
15
15
  {
16
16
  @unI()
@@ -1,10 +1,10 @@
1
1
  import * as plugins from './smartacme.plugins.js';
2
- import { Cert } from './smartacme.classes.cert.js';
2
+ import { SmartacmeCert } from './smartacme.classes.cert.js';
3
3
  import { SmartAcme } from './smartacme.classes.smartacme.js';
4
4
 
5
5
  import * as interfaces from './interfaces/index.js';
6
6
 
7
- export class CertManager {
7
+ export class SmartacmeCertManager {
8
8
  // =========
9
9
  // STATIC
10
10
  // =========
@@ -16,7 +16,7 @@ export class CertManager {
16
16
  private mongoDescriptor: plugins.smartdata.IMongoDescriptor;
17
17
  public smartdataDb: plugins.smartdata.SmartdataDb;
18
18
 
19
- public interestMap: plugins.lik.InterestMap<string, Cert>;
19
+ public interestMap: plugins.lik.InterestMap<string, SmartacmeCert>;
20
20
 
21
21
  constructor(
22
22
  smartAcmeArg: SmartAcme,
@@ -31,7 +31,7 @@ export class CertManager {
31
31
  // Smartdata DB
32
32
  this.smartdataDb = new plugins.smartdata.SmartdataDb(this.mongoDescriptor);
33
33
  await this.smartdataDb.init();
34
- CertManager.activeDB = this.smartdataDb;
34
+ SmartacmeCertManager.activeDB = this.smartdataDb;
35
35
 
36
36
  // Pending Map
37
37
  this.interestMap = new plugins.lik.InterestMap((certName) => certName);
@@ -42,8 +42,8 @@ export class CertManager {
42
42
  * @returns the Cert class or null
43
43
  * @param certDomainNameArg the domain Name to retrieve the vcertificate for
44
44
  */
45
- public async retrieveCertificate(certDomainNameArg: string): Promise<Cert> {
46
- const existingCertificate: Cert = await Cert.getInstance<Cert>({
45
+ public async retrieveCertificate(certDomainNameArg: string): Promise<SmartacmeCert> {
46
+ const existingCertificate: SmartacmeCert = await SmartacmeCert.getInstance<SmartacmeCert>({
47
47
  domainName: certDomainNameArg,
48
48
  });
49
49
 
@@ -59,7 +59,7 @@ export class CertManager {
59
59
  * @param optionsArg
60
60
  */
61
61
  public async storeCertificate(optionsArg: plugins.tsclass.network.ICert) {
62
- const cert = new Cert(optionsArg);
62
+ const cert = new SmartacmeCert(optionsArg);
63
63
  await cert.save();
64
64
  const interest = this.interestMap.findInterest(cert.domainName);
65
65
  if (interest) {
@@ -69,7 +69,7 @@ export class CertManager {
69
69
  }
70
70
 
71
71
  public async deleteCertificate(certDomainNameArg: string) {
72
- const cert: Cert = await Cert.getInstance<Cert>({
72
+ const cert: SmartacmeCert = await SmartacmeCert.getInstance<SmartacmeCert>({
73
73
  domainName: certDomainNameArg,
74
74
  });
75
75
  await cert.delete();
@@ -4,7 +4,7 @@ import * as interfaces from './interfaces/index.js';
4
4
  /**
5
5
  * certmatcher is responsible for matching certificates
6
6
  */
7
- export class CertMatcher {
7
+ export class SmartacmeCertMatcher {
8
8
  /**
9
9
  * creates a domainName for the certificate that will include the broadest scope
10
10
  * for wild card certificates
@@ -1,7 +1,8 @@
1
1
  import * as plugins from './smartacme.plugins.js';
2
- import { Cert } from './smartacme.classes.cert.js';
3
- import { CertManager } from './smartacme.classes.certmanager.js';
4
- import { CertMatcher } from './smartacme.classes.certmatcher.js';
2
+ import { SmartacmeCert } from './smartacme.classes.cert.js';
3
+ import { SmartacmeCertManager } from './smartacme.classes.certmanager.js';
4
+ import { SmartacmeCertMatcher } from './smartacme.classes.certmatcher.js';
5
+ import { commitinfo } from './00_commitinfo_data.js';
5
6
 
6
7
  /**
7
8
  * the options for the class @see SmartAcme
@@ -31,7 +32,7 @@ export class SmartAcme {
31
32
  // the acme client
32
33
  private client: any;
33
34
  private smartdns = new plugins.smartdns.Smartdns({});
34
- public logger: plugins.smartlog.ConsoleLog;
35
+ public logger: plugins.smartlog.Smartlog;
35
36
 
36
37
  // the account private key
37
38
  private privateKey: string;
@@ -41,34 +42,34 @@ export class SmartAcme {
41
42
  private removeChallenge: (dnsChallengeArg: plugins.tsclass.network.IDnsChallenge) => Promise<any>;
42
43
 
43
44
  // certmanager
44
- private certmanager: CertManager;
45
- private certmatcher: CertMatcher;
45
+ private certmanager: SmartacmeCertManager;
46
+ private certmatcher: SmartacmeCertMatcher;
46
47
 
47
48
  constructor(optionsArg: ISmartAcmeOptions) {
48
49
  this.options = optionsArg;
49
- this.logger = new plugins.smartlog.ConsoleLog();
50
+ this.logger = plugins.smartlog.Smartlog.createForCommitinfo(commitinfo);
50
51
  }
51
52
 
52
53
  /**
53
- * inits the instance
54
+ * starts the instance
54
55
  * ```ts
55
- * await myCloudlyInstance.init() // does not support options
56
+ * await myCloudlyInstance.start() // does not support options
56
57
  * ```
57
58
  */
58
- public async init() {
59
+ public async start() {
59
60
  this.privateKey =
60
61
  this.options.accountPrivateKey || (await plugins.acme.forge.createPrivateKey()).toString();
61
62
  this.setChallenge = this.options.setChallenge;
62
63
  this.removeChallenge = this.options.removeChallenge;
63
64
 
64
65
  // CertMangaer
65
- this.certmanager = new CertManager(this, {
66
+ this.certmanager = new SmartacmeCertManager(this, {
66
67
  mongoDescriptor: this.options.mongoDescriptor,
67
68
  });
68
69
  await this.certmanager.init();
69
70
 
70
71
  // CertMatcher
71
- this.certmatcher = new CertMatcher();
72
+ this.certmatcher = new SmartacmeCertMatcher();
72
73
 
73
74
  // ACME Client
74
75
  this.client = new plugins.acme.Client({
@@ -107,7 +108,7 @@ export class SmartAcme {
107
108
  *
108
109
  * @param domainArg
109
110
  */
110
- public async getCertificateForDomain(domainArg: string): Promise<Cert> {
111
+ public async getCertificateForDomain(domainArg: string): Promise<SmartacmeCert> {
111
112
  const certDomainName = this.certmatcher.getCertificateDomainNameByDomainName(domainArg);
112
113
  const retrievedCertificate = await this.certmanager.retrieveCertificate(certDomainName);
113
114
 
@@ -209,4 +210,8 @@ export class SmartAcme {
209
210
  currentDomainInterst.destroy();
210
211
  return newCertificate;
211
212
  }
213
+
214
+ public async getAllCertificates(): Promise<SmartacmeCert[]> {
215
+ return SmartacmeCert.getInstances({});
216
+ }
212
217
  }