@tak-ps/node-tak 11.18.1 → 11.19.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.
- package/.github/workflows/release.yml +3 -0
- package/CHANGELOG.md +8 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +183 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +59 -0
- package/dist/index.js +204 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api/certificate.d.ts +70 -0
- package/dist/lib/api/certificate.js +62 -0
- package/dist/lib/api/certificate.js.map +1 -0
- package/dist/lib/api/contacts.d.ts +24 -0
- package/dist/lib/api/contacts.js +44 -0
- package/dist/lib/api/contacts.js.map +1 -0
- package/dist/lib/api/credentials.d.ts +21 -0
- package/dist/lib/api/credentials.js +83 -0
- package/dist/lib/api/credentials.js.map +1 -0
- package/dist/lib/api/export.d.ts +21 -0
- package/dist/lib/api/export.js +37 -0
- package/dist/lib/api/export.js.map +1 -0
- package/dist/lib/api/files.d.ts +77 -0
- package/dist/lib/api/files.js +170 -0
- package/dist/lib/api/files.js.map +1 -0
- package/dist/lib/api/groups.d.ts +43 -0
- package/dist/lib/api/groups.js +68 -0
- package/dist/lib/api/groups.js.map +1 -0
- package/dist/lib/api/iconsets.d.ts +27 -0
- package/dist/lib/api/iconsets.js +42 -0
- package/dist/lib/api/iconsets.js.map +1 -0
- package/dist/lib/api/injectors.d.ts +52 -0
- package/dist/lib/api/injectors.js +82 -0
- package/dist/lib/api/injectors.js.map +1 -0
- package/dist/lib/api/locate.d.ts +13 -0
- package/dist/lib/api/locate.js +27 -0
- package/dist/lib/api/locate.js.map +1 -0
- package/dist/lib/api/mission-invite.d.ts +36 -0
- package/dist/lib/api/mission-invite.js +55 -0
- package/dist/lib/api/mission-invite.js.map +1 -0
- package/dist/lib/api/mission-layer.d.ts +137 -0
- package/dist/lib/api/mission-layer.js +247 -0
- package/dist/lib/api/mission-layer.js.map +1 -0
- package/dist/lib/api/mission-log.d.ts +75 -0
- package/dist/lib/api/mission-log.js +117 -0
- package/dist/lib/api/mission-log.js.map +1 -0
- package/dist/lib/api/mission.d.ts +556 -0
- package/dist/lib/api/mission.js +708 -0
- package/dist/lib/api/mission.js.map +1 -0
- package/dist/lib/api/oauth.d.ts +22 -0
- package/dist/lib/api/oauth.js +55 -0
- package/dist/lib/api/oauth.js.map +1 -0
- package/dist/lib/api/package.d.ts +40 -0
- package/dist/lib/api/package.js +70 -0
- package/dist/lib/api/package.js.map +1 -0
- package/dist/lib/api/profile.d.ts +9 -0
- package/dist/lib/api/profile.js +16 -0
- package/dist/lib/api/profile.js.map +1 -0
- package/dist/lib/api/query.d.ts +16 -0
- package/dist/lib/api/query.js +60 -0
- package/dist/lib/api/query.js.map +1 -0
- package/dist/lib/api/repeater.d.ts +47 -0
- package/dist/lib/api/repeater.js +62 -0
- package/dist/lib/api/repeater.js.map +1 -0
- package/dist/lib/api/security.d.ts +110 -0
- package/dist/lib/api/security.js +123 -0
- package/dist/lib/api/security.js.map +1 -0
- package/dist/lib/api/subscriptions.d.ts +103 -0
- package/dist/lib/api/subscriptions.js +74 -0
- package/dist/lib/api/subscriptions.js.map +1 -0
- package/dist/lib/api/types.d.ts +41 -0
- package/dist/lib/api/types.js +42 -0
- package/dist/lib/api/types.js.map +1 -0
- package/dist/lib/api/video.d.ts +139 -0
- package/dist/lib/api/video.js +151 -0
- package/dist/lib/api/video.js.map +1 -0
- package/dist/lib/api.d.ts +62 -0
- package/dist/lib/api.js +170 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/auth.d.ts +34 -0
- package/dist/lib/auth.js +97 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/commands.d.ts +38 -0
- package/dist/lib/commands.js +34 -0
- package/dist/lib/commands.js.map +1 -0
- package/dist/lib/fetch.d.ts +8 -0
- package/dist/lib/fetch.js +26 -0
- package/dist/lib/fetch.js.map +1 -0
- package/dist/lib/stream.d.ts +2 -0
- package/dist/lib/stream.js +9 -0
- package/dist/lib/stream.js.map +1 -0
- package/dist/test/default.test.d.ts +1 -0
- package/dist/test/default.test.js +8 -0
- package/dist/test/default.test.js.map +1 -0
- package/dist/test/findCoT.test.d.ts +1 -0
- package/dist/test/findCoT.test.js +85 -0
- package/dist/test/findCoT.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/lib/api/certificate.ts +89 -0
- package/lib/api.ts +4 -0
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default async function stream2buffer(stream) {
|
|
2
|
+
return new Promise((resolve, reject) => {
|
|
3
|
+
const _buf = Array();
|
|
4
|
+
stream.on("data", chunk => _buf.push(chunk));
|
|
5
|
+
stream.on("end", () => resolve(Buffer.concat(_buf)));
|
|
6
|
+
stream.on("error", (err) => reject(`error converting stream - ${err}`));
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../lib/stream.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc;IACtD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,KAAK,EAAU,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,MAAM,CAAC,6BAA6B,GAAG,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.test.js","sourceRoot":"","sources":["../../test/default.test.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE;IACxB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import TAK from '../index.js';
|
|
2
|
+
import test from 'tape';
|
|
3
|
+
test('findCoT - Unfinished', (t) => {
|
|
4
|
+
const res = TAK.findCoT('<event ><detail>');
|
|
5
|
+
t.equals(res, null);
|
|
6
|
+
t.end();
|
|
7
|
+
});
|
|
8
|
+
test('findCoT - Basic', (t) => {
|
|
9
|
+
const res = TAK.findCoT('<event></event>');
|
|
10
|
+
t.deepEquals(res, {
|
|
11
|
+
event: '<event></event>',
|
|
12
|
+
remainder: '',
|
|
13
|
+
});
|
|
14
|
+
t.end();
|
|
15
|
+
});
|
|
16
|
+
test('findCoT - New Lines', (t) => {
|
|
17
|
+
const res = TAK.findCoT(`
|
|
18
|
+
<event>
|
|
19
|
+
<detail remarks="
|
|
20
|
+
I am a multiline
|
|
21
|
+
remarks field
|
|
22
|
+
"/>
|
|
23
|
+
</event>`);
|
|
24
|
+
t.deepEquals(res, {
|
|
25
|
+
event: '<event>\n <detail remarks="\nI am a multiline\nremarks field\n "/>\n</event>',
|
|
26
|
+
remainder: '',
|
|
27
|
+
});
|
|
28
|
+
t.end();
|
|
29
|
+
});
|
|
30
|
+
test('findCoT - New Lines - Non-Greedy', (t) => {
|
|
31
|
+
const res = TAK.findCoT(`
|
|
32
|
+
<event>
|
|
33
|
+
<detail remarks="
|
|
34
|
+
I am a multiline
|
|
35
|
+
remarks field
|
|
36
|
+
"/>
|
|
37
|
+
</event><event>
|
|
38
|
+
<detail remarks="
|
|
39
|
+
I am a multiline
|
|
40
|
+
remarks field
|
|
41
|
+
"/>
|
|
42
|
+
</event>`);
|
|
43
|
+
t.deepEquals(res, {
|
|
44
|
+
event: '<event>\n <detail remarks="\nI am a multiline\nremarks field\n "/>\n</event>',
|
|
45
|
+
remainder: '<event>\n <detail remarks="\nI am a multiline\nremarks field\n "/>\n</event>',
|
|
46
|
+
});
|
|
47
|
+
t.end();
|
|
48
|
+
});
|
|
49
|
+
test('findCoT - bad preceding data', (t) => {
|
|
50
|
+
const res = TAK.findCoT(`
|
|
51
|
+
<fake/>
|
|
52
|
+
<event><detail remarks="I am remarks"/>
|
|
53
|
+
</event>
|
|
54
|
+
`);
|
|
55
|
+
t.deepEquals(res, {
|
|
56
|
+
event: '<event><detail remarks="I am remarks"/>\n</event>',
|
|
57
|
+
remainder: '\n',
|
|
58
|
+
});
|
|
59
|
+
t.end();
|
|
60
|
+
});
|
|
61
|
+
test('findCoT - bad post data', (t) => {
|
|
62
|
+
const res = TAK.findCoT(`
|
|
63
|
+
<event><detail remarks="I am remarks"/>
|
|
64
|
+
</event>
|
|
65
|
+
<fake/>
|
|
66
|
+
`);
|
|
67
|
+
t.deepEquals(res, {
|
|
68
|
+
event: '<event><detail remarks="I am remarks"/>\n</event>',
|
|
69
|
+
remainder: '\n<fake/>\n',
|
|
70
|
+
});
|
|
71
|
+
t.end();
|
|
72
|
+
});
|
|
73
|
+
test('findCoT - mixed', (t) => {
|
|
74
|
+
const res = TAK.findCoT(`
|
|
75
|
+
<event><detail remarks="I am remarks"/>
|
|
76
|
+
</event>
|
|
77
|
+
<fake/>
|
|
78
|
+
<event><detail remarks="I am remarks"/></event>`);
|
|
79
|
+
t.deepEquals(res, {
|
|
80
|
+
event: '<event><detail remarks="I am remarks"/>\n</event>',
|
|
81
|
+
remainder: '\n<fake/>\n<event><detail remarks="I am remarks"/></event>',
|
|
82
|
+
});
|
|
83
|
+
t.end();
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=findCoT.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findCoT.test.js","sourceRoot":"","sources":["../../test/findCoT.test.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,EAAE,iBAAiB;QACxB,SAAS,EAAE,EAAE;KAChB,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;;;;;;SAMnB,CAAC,CAAC;IACP,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,EAAE,oFAAoF;QAC3F,SAAS,EAAE,EAAE;KAChB,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;;;;;;;;;;;SAWnB,CAAC,CAAC;IACP,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,EAAE,oFAAoF;QAC3F,SAAS,EAAE,oFAAoF;KAClG,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8BAA8B,EAAE,CAAC,CAAC,EAAE,EAAE;IACvC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;;;;CAI3B,CAAC,CAAC;IACC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,EAAE,mDAAmD;QAC1D,SAAS,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE;IAClC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;;;;CAI3B,CAAC,CAAC;IACC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,EAAE,mDAAmD;QAC1D,SAAS,EAAE,aAAa;KAC3B,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;;;;gDAIoB,CAAC,CAAC;IAC9C,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;QACd,KAAK,EAAE,mDAAmD;QAC1D,SAAS,EAAE,4DAA4D;KAC1E,CAAC,CAAC;IACH,CAAC,CAAC,GAAG,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../cli.ts","../index.ts","../test/default.test.ts","../test/findCoT.test.ts","../lib/api.ts","../lib/auth.ts","../lib/commands.ts","../lib/fetch.ts","../lib/stream.ts","../lib/api/certificate.ts","../lib/api/contacts.ts","../lib/api/credentials.ts","../lib/api/export.ts","../lib/api/files.ts","../lib/api/groups.ts","../lib/api/iconsets.ts","../lib/api/injectors.ts","../lib/api/locate.ts","../lib/api/mission-invite.ts","../lib/api/mission-layer.ts","../lib/api/mission-log.ts","../lib/api/mission.ts","../lib/api/oauth.ts","../lib/api/package.ts","../lib/api/profile.ts","../lib/api/query.ts","../lib/api/repeater.ts","../lib/api/security.ts","../lib/api/subscriptions.ts","../lib/api/types.ts","../lib/api/video.ts"],"version":"5.9.3"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import Commands from '../commands.js';
|
|
2
|
+
import { Type } from '@sinclair/typebox';
|
|
3
|
+
import type { Static } from '@sinclair/typebox';
|
|
4
|
+
import { TAKItem, TAKList } from './types.js';
|
|
5
|
+
|
|
6
|
+
export const Certificate = Type.Object({
|
|
7
|
+
id: Type.Integer(),
|
|
8
|
+
creatorDn: Type.String(),
|
|
9
|
+
subjectDn: Type.String(),
|
|
10
|
+
userDn: Type.String(),
|
|
11
|
+
certificate: Type.String(),
|
|
12
|
+
hash: Type.String(),
|
|
13
|
+
clientUid: Type.String(),
|
|
14
|
+
issuanceDate: Type.String({ format: 'date-time' }),
|
|
15
|
+
expirationDate: Type.String({ format: 'date-time' }),
|
|
16
|
+
effectiveDate: Type.String({ format: 'date-time' }),
|
|
17
|
+
revocationDate: Type.Optional(Type.String({ format: 'date-time' })),
|
|
18
|
+
token: Type.String(),
|
|
19
|
+
serialNumber: Type.String()
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export const TAKList_Certificate = TAKList(Certificate);
|
|
23
|
+
export const TAKItem_Certificate = TAKItem(Certificate);
|
|
24
|
+
|
|
25
|
+
export default class CertificateCommands extends Commands {
|
|
26
|
+
schema = {}
|
|
27
|
+
|
|
28
|
+
async cli(): Promise<object | string> {
|
|
29
|
+
throw new Error('Unsupported Subcommand');
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async list(
|
|
33
|
+
username?: string
|
|
34
|
+
): Promise<Static<typeof TAKList_Certificate>> {
|
|
35
|
+
const url = new URL('/Marti/api/certadmin/cert', this.api.url);
|
|
36
|
+
|
|
37
|
+
if (username) {
|
|
38
|
+
url.searchParams.append('username', username);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return await this.api.fetch(url) as Static<typeof TAKList_Certificate>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
async listRevoked(): Promise<Static<typeof TAKList_Certificate>> {
|
|
45
|
+
const url = new URL('/Marti/api/certadmin/cert/revoked', this.api.url);
|
|
46
|
+
|
|
47
|
+
return await this.api.fetch(url) as Static<typeof TAKList_Certificate>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async listReplaced(): Promise<Static<typeof TAKList_Certificate>> {
|
|
51
|
+
const url = new URL('/Marti/api/certadmin/cert/replaced', this.api.url);
|
|
52
|
+
|
|
53
|
+
return await this.api.fetch(url) as Static<typeof TAKList_Certificate>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
async listExpired(): Promise<Static<typeof TAKList_Certificate>> {
|
|
57
|
+
const url = new URL('/Marti/api/certadmin/cert/expired', this.api.url);
|
|
58
|
+
|
|
59
|
+
return await this.api.fetch(url) as Static<typeof TAKList_Certificate>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
async get(
|
|
63
|
+
hash: string
|
|
64
|
+
): Promise<Static<typeof TAKItem_Certificate>> {
|
|
65
|
+
const url = new URL(`/Marti/api/certadmin/cert/${hash}`, this.api.url);
|
|
66
|
+
|
|
67
|
+
return await this.api.fetch(url) as Static<typeof TAKItem_Certificate>;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async download(
|
|
71
|
+
hash: string
|
|
72
|
+
): Promise<string> {
|
|
73
|
+
const url = new URL(`/Marti/api/certadmin/cert/${hash}/download`, this.api.url);
|
|
74
|
+
|
|
75
|
+
return await this.api.fetch(url, {
|
|
76
|
+
method: 'GET',
|
|
77
|
+
}) as string;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async revoke(
|
|
81
|
+
hash: string
|
|
82
|
+
): Promise<Static<typeof TAKItem_Certificate>> {
|
|
83
|
+
const url = new URL(`/Marti/api/certadmin/cert/${hash}`, this.api.url);
|
|
84
|
+
|
|
85
|
+
return await this.api.fetch(url, {
|
|
86
|
+
method: 'DELETE'
|
|
87
|
+
}) as Static<typeof TAKItem_Certificate>;
|
|
88
|
+
}
|
|
89
|
+
}
|
package/lib/api.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import FormData from 'form-data';
|
|
2
2
|
import OAuth from './api/oauth.js';
|
|
3
3
|
import Package from './api/package.js';
|
|
4
|
+
import Certificate from './api/certificate.js';
|
|
4
5
|
import Query from './api/query.js';
|
|
5
6
|
import Locate from './api/locate.js';
|
|
6
7
|
import Mission from './api/mission.js';
|
|
@@ -33,6 +34,7 @@ export const CommandList: Record<string, keyof TAKAPI> = {
|
|
|
33
34
|
'mission-log': 'MissionLog',
|
|
34
35
|
'mission-layer': 'MissionLayer',
|
|
35
36
|
credential: 'Credentials',
|
|
37
|
+
certificate: 'Certificate',
|
|
36
38
|
iconsets: 'Iconsets',
|
|
37
39
|
contact: 'Contacts',
|
|
38
40
|
subscription: 'Subscription',
|
|
@@ -63,6 +65,7 @@ export default class TAKAPI {
|
|
|
63
65
|
MissionLayer: MissionLayer;
|
|
64
66
|
Credentials: Credentials;
|
|
65
67
|
Contacts: Contacts;
|
|
68
|
+
Certificate: Certificate;
|
|
66
69
|
Subscription: Subscription;
|
|
67
70
|
Profile: Profile;
|
|
68
71
|
Injectors: Injectors;
|
|
@@ -82,6 +85,7 @@ export default class TAKAPI {
|
|
|
82
85
|
this.Locate = new Locate(this);
|
|
83
86
|
this.Package = new Package(this);
|
|
84
87
|
this.Profile = new Profile(this);
|
|
88
|
+
this.Certificate = new Certificate(this);
|
|
85
89
|
this.OAuth = new OAuth(this);
|
|
86
90
|
this.Export = new Export(this);
|
|
87
91
|
this.Iconsets = new Iconsets(this);
|
package/package.json
CHANGED