Skip to content

Commit 4853b76

Browse files
wwwzbwcomyugasun
andauthored
breaking: refactor with typescript 🚀 (#177)
* refactory(ts): almost all files are typescript now 🚀 * chore: move files from build to lib for better import, fix error in cdn * test: sleep longer to ensure layer deploy success * fix: update the workflow build scripts * fix: remove dummy file .json * refactory(ts): refactory apigw, ensure type clearer * fix: region type from enum to string * refactor(ts): update cam * refactor(ts): rename camelCase to pascalCase, make more accurate * refactor(ts): update cos to the latest sdk * refactor(ts): add comment and remove any in cynosdb * refactor(ts): check domain, layer, postgresql, remove uneccesary any * refactor(ts): update tag, vpc and error * refactor(ts): update apigw, scf, multi-apigw, multi-scf * refactor(ts): update apigw, scf, multi-apigw, multi-scf * fix: fix bugs after refactor * fix: fix error after rebase * fix(cynosdb): generate password * test(cynosdb): fix * fix(cynosdb): method isSupportZone * fix: fix some logic, naming and apis * chore: update eslint and prettier support * chore: use prettier to format files * chore: update eslint config, fix lint issues * chore: add breaking commit type Co-authored-by: yugasun <[email protected]>
1 parent aedab3f commit 4853b76

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

119 files changed

+6111
-3275
lines changed

.eslintignore

+3
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@ coverage
22
dist
33
node_modules
44
example
5+
# ignore for dont check build result
6+
lib
7+
**/*.d.ts

.eslintrc.js

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,25 @@
11
module.exports = {
22
root: true,
33
extends: ['prettier'],
4-
plugins: ['import', 'prettier'],
4+
plugins: ['import', 'prettier', '@typescript-eslint'],
55
env: {
66
es6: true,
77
jest: true,
88
node: true,
99
},
10-
parser: 'babel-eslint',
10+
parser: '@typescript-eslint/parser',
1111
parserOptions: {
1212
ecmaVersion: 2018,
1313
sourceType: 'module',
1414
ecmaFeatures: {
1515
jsx: true,
1616
},
1717
},
18+
overrides: [
19+
{
20+
files: ['./src/**/*.ts', './__test__/**.*.js'],
21+
},
22+
],
1823
globals: {
1924
on: true, // for the Socket file
2025
},
@@ -47,9 +52,9 @@ module.exports = {
4752
'no-const-assign': 'error',
4853
'no-else-return': 'error',
4954
'no-empty': 'off',
50-
'no-shadow': 'error',
55+
'@typescript-eslint/no-shadow': 'error',
5156
'no-undef': 'error',
52-
'no-unused-vars': 'error',
57+
'@typescript-eslint/no-unused-vars': 'error',
5358
'no-use-before-define': 'error',
5459
'no-useless-constructor': 'error',
5560
'object-curly-newline': 'off',

.github/workflows/release.yml

+4
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ jobs:
3737
run: |
3838
npm update --no-save
3939
npm update --save-dev --no-save
40+
41+
- name: Build
42+
run: npm run build
43+
4044
- name: Releasing
4145
run: |
4246
npm run release

.github/workflows/test.yml

+4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ jobs:
3838
run: |
3939
npm update --no-save
4040
npm update --save-dev --no-save
41+
42+
- name: Build
43+
run: npm run build
44+
4145
- name: Running tests
4246
run: npm run test
4347
env:

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ node_modules
1616
dist
1717
.idea
1818
build
19+
lib
1920
.env*
2021
.env.test
2122
!.env.example

__tests__/apigw.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Apigw } = require('../src');
1+
const { Apigw } = require('../lib');
22

33
const deepClone = (obj) => {
44
return JSON.parse(JSON.stringify(obj));

__tests__/cam.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Cam } = require('../src');
1+
const { Cam } = require('../lib');
22

33
describe('Cam', () => {
44
const credentials = {

__tests__/cdn.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const { Cdn } = require('../src');
2-
const { getCdnByDomain } = require('../src/modules/cdn/utils');
1+
const { Cdn } = require('../lib');
2+
const { getCdnByDomain } = require('../lib/modules/cdn/utils');
33

44
describe('Cdn', () => {
55
jest.setTimeout(600000);

__tests__/cfs.test.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
const { sleep } = require('@ygkit/request');
2-
const { Cfs } = require('../src');
3-
const apis = require('../src/modules/cfs/apis');
2+
const { Cfs } = require('../lib');
3+
const utils = require('../lib/modules/cfs/utils').default;
44

55
describe('Cfs', () => {
66
const credentials = {
@@ -44,7 +44,7 @@ describe('Cfs', () => {
4444
test('should remove CFS success', async () => {
4545
await sleep(1000);
4646
const res = await cfs.remove(inputs);
47-
const detail = await apis.getCfs(cfs.capi, inputs.fileSystemId);
47+
const detail = await utils.getCfs(cfs.capi, inputs.fileSystemId);
4848
expect(res).toEqual({});
4949
expect(detail).toBeUndefined();
5050
});

__tests__/cls.test.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
const { Cls } = require('../src');
1+
const { Cls } = require('../lib');
2+
const { sleep } = require('@ygkit/request');
23

34
describe('Cls', () => {
45
const credentials = {
@@ -42,6 +43,7 @@ describe('Cls', () => {
4243
});
4344

4445
test('should remove cls success', async () => {
46+
await sleep(2000);
4547
await client.remove(outputs);
4648

4749
const detail = await client.cls.getLogset({

__tests__/cns.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Cns } = require('../src');
1+
const { Cns } = require('../lib');
22

33
describe('Cns', () => {
44
const credentials = {

__tests__/cos.test.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Cos } = require('../src');
1+
const { Cos } = require('../lib');
22
const path = require('path');
33
const axios = require('axios');
44
const { sleep } = require('@ygkit/request');
@@ -80,7 +80,8 @@ describe('Cos', () => {
8080

8181
test('should deploy website success', async () => {
8282
const res = await cos.website(websiteInputs);
83-
await sleep(1000);
83+
84+
await sleep(2000);
8485
const websiteUrl = `${inputs.bucket}.cos-website.${process.env.REGION}.myqcloud.com`;
8586
const reqUrl = `${websiteInputs.protocol}://${websiteUrl}`;
8687
const { data } = await axios.get(reqUrl);
@@ -96,7 +97,9 @@ describe('Cos', () => {
9697

9798
test('should deploy website and error code with 200', async () => {
9899
websiteInputs.disableErrorStatus = true;
100+
99101
const res = await cos.website(websiteInputs);
102+
100103
await sleep(1000);
101104
const websiteUrl = `${inputs.bucket}.cos-website.${process.env.REGION}.myqcloud.com`;
102105
const reqUrl = `${websiteInputs.protocol}://${websiteUrl}`;

__tests__/cynosdb.test.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
const { Cynosdb } = require('../src');
1+
const { Cynosdb } = require('../lib');
22
const {
33
getClusterDetail,
44
sleep,
55
generatePwd,
66
isValidPwd,
7-
} = require('../src/modules/cynosdb/utils');
7+
} = require('../lib/modules/cynosdb/utils');
88

99
describe('Cynosdb', () => {
1010
jest.setTimeout(600000);
@@ -123,7 +123,7 @@ describe('Cynosdb', () => {
123123
zone: inputs.zone,
124124
vpcConfig: inputs.vpcConfig,
125125
instanceCount: 1,
126-
// adminPassword: expect.stringMatching(pwdReg),
126+
// adminPassword: expect.any(String),
127127
clusterId: expect.stringContaining('cynosdbmysql-'),
128128
minCpu: 0.5,
129129
maxCpu: 2,
@@ -158,7 +158,7 @@ describe('Cynosdb', () => {
158158
zone: inputs.zone,
159159
vpcConfig: inputs.vpcConfig,
160160
instanceCount: 1,
161-
// adminPassword: expect.stringMatching(pwdReg),
161+
// adminPassword: expect.any(String),
162162
clusterId: expect.stringContaining('cynosdbmysql-'),
163163
minCpu: 0.5,
164164
maxCpu: 2,

__tests__/domain.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Domain } = require('../src');
1+
const { Domain } = require('../lib');
22

33
describe('Domain', () => {
44
const credentials = {

__tests__/error.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
const { TypeError, ApiError } = require('../src/utils/error');
1+
const { ApiTypeError, ApiError } = require('../lib/utils/error');
22

33
describe('Custom Error', () => {
44
test('TypeError', async () => {
55
try {
6-
throw new TypeError(
6+
throw new ApiTypeError(
77
'TEST_TypeError',
88
'This is a test error',
99
'error stack',

__tests__/layer.test.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { sleep } = require('@ygkit/request');
2-
const { Layer } = require('../src');
2+
const { Layer } = require('../lib');
33

44
describe('Layer', () => {
55
const credentials = {
@@ -33,7 +33,7 @@ describe('Layer', () => {
3333
});
3434

3535
test('should remove layer success', async () => {
36-
await sleep(1000);
36+
await sleep(5000);
3737
await layer.remove({
3838
name: inputs.name,
3939
version: inputs.version,

__tests__/metrics.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Metrics } = require('../src');
1+
const { Metrics } = require('../lib');
22

33
describe('Metrics', () => {
44
const credentials = {

__tests__/pg.test.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
const { Postgresql } = require('../src');
2-
const { getDbInstanceDetail, sleep } = require('../src/modules/postgresql/utils');
1+
const { Postgresql } = require('../lib');
2+
const { getDbInstanceDetail } = require('../lib/modules/postgresql/utils');
3+
const { sleep } = require('@ygkit/request');
34

45
describe('Postgresql', () => {
56
const credentials = {

__tests__/scf.test.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const { sleep } = require('@ygkit/request');
2-
const { Scf, Cfs, Layer } = require('../src');
2+
const { Scf, Cfs, Layer } = require('../lib');
33

44
describe('Scf', () => {
55
const credentials = {
@@ -141,6 +141,7 @@ describe('Scf', () => {
141141
});
142142

143143
afterAll(async (done) => {
144+
sleep(2000);
144145
await cfs.remove({
145146
fsName: cfsInputs.fsName,
146147
fileSystemId: inputs.cfs[0].cfsId,
@@ -149,6 +150,10 @@ describe('Scf', () => {
149150
done();
150151
});
151152

153+
/**
154+
* FIXME: MPS bind always fail
155+
* trigger has already binded (reqId: 62963b70-6875-47b4-ae72-9db54b9ffeba)
156+
*/
152157
test('should deploy SCF success', async () => {
153158
outputs = await scf.deploy(inputs);
154159
expect(outputs).toEqual({

__tests__/tag.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Tag } = require('../src');
1+
const { Tag } = require('../lib');
22

33
describe('Tag', () => {
44
const credentials = {

__tests__/triggers/cls.test.js

+21-14
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
const { Cls, Scf } = require('../../src');
2-
const ClsTrigger = require('../../src/modules/triggers/cls');
1+
const { Cls, Scf } = require('../../lib');
2+
const ClsTrigger = require('../../lib/modules/triggers/cls').default;
3+
const { sleep } = require('@ygkit/request');
34

45
describe('Cls', () => {
56
const credentials = {
67
SecretId: process.env.TENCENT_SECRET_ID,
78
SecretKey: process.env.TENCENT_SECRET_KEY,
89
};
9-
const client = new ClsTrigger({ credentials, region: process.env.REGION });
10-
const clsClient = new Cls(credentials, process.env.REGION);
11-
const scfClient = new Scf(credentials, process.env.REGION);
10+
const clsTrigger = new ClsTrigger({ credentials, region: process.env.REGION });
11+
const cls = new Cls(credentials, process.env.REGION);
12+
const scf = new Scf(credentials, process.env.REGION);
1213

1314
const data = {
1415
qualifier: '$DEFAULT',
@@ -41,22 +42,25 @@ describe('Cls', () => {
4142
let clsOutputs;
4243

4344
beforeAll(async () => {
44-
clsOutputs = await clsClient.deploy(clsInputs);
45+
clsOutputs = await cls.deploy(clsInputs);
4546
data.topicId = clsOutputs.topicId;
4647
});
4748

4849
afterAll(async () => {
49-
await clsClient.remove(clsOutputs);
50+
await sleep(2000);
51+
await cls.remove(clsOutputs);
5052
});
5153

5254
test('should create trigger success', async () => {
53-
const res = await client.create({
55+
sleep(2000);
56+
const res = await clsTrigger.create({
5457
inputs: {
5558
namespace: namespace,
5659
functionName: functionName,
5760
parameters: data,
5861
},
5962
});
63+
6064
expect(res).toEqual({
6165
namespace: namespace,
6266
functionName: functionName,
@@ -68,8 +72,9 @@ describe('Cls', () => {
6872
});
6973

7074
test('should enable trigger success', async () => {
75+
sleep(2000);
7176
data.enable = true;
72-
const res = await client.create({
77+
const res = await clsTrigger.create({
7378
inputs: {
7479
namespace: namespace,
7580
functionName: functionName,
@@ -88,8 +93,9 @@ describe('Cls', () => {
8893
});
8994

9095
test('should disable trigger success', async () => {
96+
await sleep(2000);
9197
data.enable = false;
92-
const res = await client.create({
98+
const res = await clsTrigger.create({
9399
inputs: {
94100
namespace: namespace,
95101
functionName: functionName,
@@ -108,15 +114,16 @@ describe('Cls', () => {
108114
});
109115

110116
test('should delete trigger success', async () => {
111-
const { Triggers = [] } = await scfClient.request({
117+
await sleep(5000);
118+
const { Triggers = [] } = await scf.request({
112119
Action: 'ListTriggers',
113120
Namespace: namespace,
114121
FunctionName: functionName,
115122
Limit: 100,
116123
});
117124
const [exist] = Triggers.filter((item) => item.ResourceId.indexOf(`topic_id/${data.topicId}`));
118-
const res = await client.delete({
119-
scf: scfClient,
125+
const res = await clsTrigger.delete({
126+
scf: scf,
120127
inputs: {
121128
namespace: namespace,
122129
functionName: functionName,
@@ -128,7 +135,7 @@ describe('Cls', () => {
128135
});
129136
expect(res).toEqual({ requestId: expect.any(String), success: true });
130137

131-
const detail = await client.get({
138+
const detail = await clsTrigger.get({
132139
topicId: data.topicId,
133140
});
134141
expect(detail).toBeUndefined();

__tests__/triggers/mps.test.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
const { Scf } = require('../../src');
2-
const MpsTrigger = require('../../src/modules/triggers/mps');
1+
const { Scf } = require('../../lib');
2+
const MpsTrigger = require('../../lib/modules/triggers/mps').default;
33

4+
// FIXME: all mps trigger bind fail
45
describe('Mps', () => {
56
const credentials = {
67
SecretId: process.env.TENCENT_SECRET_ID,

0 commit comments

Comments
 (0)