@corva/create-app 0.11.0-0 → 0.12.0-2
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/CHANGELOG.md +22 -0
- package/README.md +57 -0
- package/constants/manifest.js +91 -49
- package/constants/package.js +23 -24
- package/helpers/manifest.js +25 -12
- package/helpers/utils.js +2 -2
- package/helpers/versioning.js +14 -14
- package/index.js +158 -164
- package/package.json +62 -58
- package/scripts/ui/index.js +2 -2
- package/scripts/ui/zipAppSource.js +31 -41
- package/scripts/utils/version.js +9 -22
- package/template/scheduler/node/__test__/processor.test.js +12 -12
- package/template/scheduler/node/gitignore +21 -0
- package/template/scheduler/node/index.js +5 -6
- package/template/scheduler/node/package.json +3 -3
- package/template/scheduler/node/src/processor.js +9 -13
- package/template/scheduler/node-ts/README.md +25 -0
- package/template/scheduler/node-ts/__test__/processor.spec.ts +20 -0
- package/template/scheduler/node-ts/gitignore +25 -0
- package/template/scheduler/node-ts/index.ts +8 -0
- package/template/scheduler/node-ts/lib/processor.ts +13 -0
- package/template/scheduler/node-ts/package.json +37 -0
- package/template/scheduler/node-ts/tsconfig.build.json +11 -0
- package/template/scheduler/node-ts/tsconfig.json +33 -0
- package/template/stream/node/README.md +1 -1
- package/template/stream/node/__test__/processor.test.js +37 -40
- package/template/stream/node/gitignore +21 -0
- package/template/stream/node/index.js +5 -6
- package/template/stream/node/package.json +3 -3
- package/template/stream/node/src/processor.js +11 -14
- package/template/stream/node-ts/README.md +25 -0
- package/template/stream/node-ts/__test__/processor.spec.ts +43 -0
- package/template/stream/node-ts/gitignore +25 -0
- package/template/stream/node-ts/index.ts +8 -0
- package/template/stream/node-ts/lib/processor.ts +16 -0
- package/template/stream/node-ts/package.json +37 -0
- package/template/stream/node-ts/tsconfig.build.json +11 -0
- package/template/stream/node-ts/tsconfig.json +33 -0
- package/template/task/node/README.md +1 -1
- package/template/task/node/__test__/processor.test.js +18 -0
- package/template/task/node/gitignore +21 -0
- package/template/task/node/index.js +7 -8
- package/template/task/node/package.json +3 -3
- package/template/task/node/src/processor.js +9 -14
- package/template/task/node-ts/README.md +25 -0
- package/template/task/node-ts/__test__/processor.spec.ts +27 -0
- package/template/task/node-ts/gitignore +25 -0
- package/template/task/node-ts/index.ts +8 -0
- package/template/task/node-ts/package.json +37 -0
- package/template/task/node-ts/src/processor.ts +13 -0
- package/template/task/node-ts/tsconfig.build.json +11 -0
- package/template/task/node-ts/tsconfig.json +33 -0
- package/template/ui/README.md +1 -1
- package/template/ui/gitignore +1 -0
- package/template/ui/src/App.js +2 -1
- package/template/ui/src/AppSettings.js +1 -1
- package/template/ui/src/constants.js +1 -1
- package/template/ui/src/index.js +2 -2
- package/helpers/metadata.js +0 -29
|
@@ -1,105 +1,95 @@
|
|
|
1
|
-
const fs = require(
|
|
2
|
-
const path = require(
|
|
3
|
-
const archiver = require(
|
|
4
|
-
const os = require(
|
|
5
|
-
const chalk = require(
|
|
6
|
-
const semverInc = require(
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const archiver = require('archiver');
|
|
4
|
+
const os = require('os');
|
|
5
|
+
const chalk = require('chalk');
|
|
6
|
+
const semverInc = require('semver/functions/inc');
|
|
7
7
|
|
|
8
8
|
const { warnIfOutdated } = require('../utils/version');
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
async function compressAppToZip() {
|
|
10
|
+
async function compressAppToZip(useYarn) {
|
|
12
11
|
warnIfOutdated();
|
|
13
12
|
|
|
14
13
|
const dirname = process.cwd();
|
|
15
14
|
|
|
16
15
|
// Left only build script for package json;
|
|
17
|
-
const packageJsonContent = fs.readFileSync(
|
|
18
|
-
path.resolve(dirname, "package.json"),
|
|
19
|
-
"utf-8"
|
|
20
|
-
);
|
|
16
|
+
const packageJsonContent = fs.readFileSync(path.resolve(dirname, 'package.json'), 'utf-8');
|
|
21
17
|
|
|
22
18
|
const packageJson = JSON.parse(packageJsonContent);
|
|
23
19
|
|
|
24
|
-
const updatedVersion = semverInc(packageJson.version,
|
|
20
|
+
const updatedVersion = semverInc(packageJson.version, 'patch');
|
|
25
21
|
|
|
26
22
|
const updatedPackage = {
|
|
27
23
|
...packageJson,
|
|
28
24
|
version: updatedVersion,
|
|
29
25
|
scripts: {
|
|
30
|
-
build:
|
|
31
|
-
}
|
|
26
|
+
build: 'webpack --config=./config-overrides.js --mode production',
|
|
27
|
+
},
|
|
32
28
|
};
|
|
33
29
|
|
|
30
|
+
const zipPath = path.resolve(path.resolve(dirname, `${packageJson.name}-${updatedVersion}.zip`));
|
|
34
31
|
|
|
35
|
-
|
|
36
|
-
path.resolve(dirname, `${packageJson.name}-${updatedVersion}.zip`)
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
var archive = archiver.create("zip", {});
|
|
32
|
+
var archive = archiver.create('zip', {});
|
|
40
33
|
var output = fs.createWriteStream(zipPath);
|
|
41
34
|
|
|
42
35
|
// pipe archive data to the file
|
|
43
36
|
archive.pipe(output);
|
|
44
37
|
|
|
45
|
-
output.on(
|
|
46
|
-
console.log(archive.pointer() +
|
|
38
|
+
output.on('close', function () {
|
|
39
|
+
console.log(archive.pointer() + ' total bytes');
|
|
47
40
|
|
|
48
|
-
console.log(
|
|
49
|
-
"archiver has been finalized and the output file descriptor has closed."
|
|
50
|
-
);
|
|
41
|
+
console.log('archiver has been finalized and the output file descriptor has closed.');
|
|
51
42
|
|
|
52
43
|
// clean up temp package.json file
|
|
53
44
|
try {
|
|
54
|
-
fs.unlinkSync(path.resolve(dirname,
|
|
45
|
+
fs.unlinkSync(path.resolve(dirname, 'packageForSource.json'));
|
|
55
46
|
// deleteFolderRecursive(path.resolve(dirname, 'src'));
|
|
56
47
|
} catch (err) {
|
|
57
48
|
console.error(err);
|
|
58
49
|
}
|
|
59
50
|
});
|
|
60
51
|
|
|
61
|
-
output.on(
|
|
62
|
-
console.log(
|
|
52
|
+
output.on('end', function () {
|
|
53
|
+
console.log('Data has been drained');
|
|
63
54
|
});
|
|
64
55
|
|
|
65
|
-
archive.on(
|
|
66
|
-
if (err.code ===
|
|
56
|
+
archive.on('warning', function (err) {
|
|
57
|
+
if (err.code === 'ENOENT') {
|
|
67
58
|
console.log(err.message);
|
|
68
59
|
} else {
|
|
69
60
|
throw err;
|
|
70
61
|
}
|
|
71
62
|
});
|
|
72
63
|
|
|
73
|
-
archive.on(
|
|
64
|
+
archive.on('error', function (err) {
|
|
74
65
|
throw err;
|
|
75
66
|
});
|
|
76
67
|
|
|
77
68
|
fs.writeFileSync(
|
|
78
|
-
path.resolve(dirname,
|
|
79
|
-
JSON.stringify({ ...packageJson, version: updatedVersion }, null, 2) +
|
|
80
|
-
os.EOL
|
|
69
|
+
path.resolve(dirname, 'package.json'),
|
|
70
|
+
JSON.stringify({ ...packageJson, version: updatedVersion }, null, 2) + os.EOL
|
|
81
71
|
);
|
|
82
72
|
|
|
83
73
|
console.log(
|
|
84
74
|
chalk(`
|
|
85
|
-
NOTE: Version of
|
|
75
|
+
NOTE: Version of your app was updated to ${updatedVersion} (package.json), please don't lower it.
|
|
86
76
|
`)
|
|
87
77
|
);
|
|
88
78
|
|
|
89
79
|
fs.writeFileSync(
|
|
90
|
-
path.resolve(dirname,
|
|
80
|
+
path.resolve(dirname, 'packageForSource.json'),
|
|
91
81
|
JSON.stringify(updatedPackage, null, 2) + os.EOL
|
|
92
82
|
);
|
|
93
83
|
|
|
94
|
-
archive.file(path.resolve(dirname,
|
|
95
|
-
name:
|
|
84
|
+
archive.file(path.resolve(dirname, 'packageForSource.json'), {
|
|
85
|
+
name: 'package.json',
|
|
96
86
|
});
|
|
97
87
|
|
|
98
|
-
[
|
|
99
|
-
archive.file(path.resolve(dirname, name), { name })
|
|
88
|
+
['manifest.json', 'config-overrides.js', useYarn ? 'yarn.lock' : 'package-lock.json'].forEach(
|
|
89
|
+
(name) => archive.file(path.resolve(dirname, name), { name })
|
|
100
90
|
);
|
|
101
91
|
|
|
102
|
-
archive.directory(path.resolve(dirname,
|
|
92
|
+
archive.directory(path.resolve(dirname, 'src'), 'src');
|
|
103
93
|
|
|
104
94
|
archive.finalize();
|
|
105
95
|
}
|
package/scripts/utils/version.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
const NpmApi = require(
|
|
2
|
-
const chalk = require(
|
|
3
|
-
const semverGt = require(
|
|
1
|
+
const NpmApi = require('npm-api');
|
|
2
|
+
const chalk = require('chalk');
|
|
3
|
+
const semverGt = require('semver/functions/gt');
|
|
4
4
|
|
|
5
|
-
const packageJson = require(
|
|
5
|
+
const packageJson = require('../../package.json');
|
|
6
6
|
const npm = new NpmApi();
|
|
7
7
|
const errorStyle = chalk.bold.red;
|
|
8
8
|
|
|
9
9
|
const getCurrentVersion = () => packageJson.version;
|
|
10
|
-
const getLatestVersion = async () =>
|
|
11
|
-
npm.repo("@corva/create-app").prop("version");
|
|
10
|
+
const getLatestVersion = async () => npm.repo('@corva/create-app').prop('version');
|
|
12
11
|
|
|
13
12
|
// NOTE: Stop process and show error if version is outdated
|
|
14
13
|
async function ensureLatestVersion() {
|
|
@@ -17,11 +16,7 @@ async function ensureLatestVersion() {
|
|
|
17
16
|
|
|
18
17
|
const isCurrentVersionOutdated = semverGt(latestVersion, currentVersion);
|
|
19
18
|
if (isCurrentVersionOutdated) {
|
|
20
|
-
console.log(
|
|
21
|
-
errorStyle(
|
|
22
|
-
"****************************************************************"
|
|
23
|
-
)
|
|
24
|
-
);
|
|
19
|
+
console.log(errorStyle('****************************************************************'));
|
|
25
20
|
console.log(chalk`
|
|
26
21
|
Your version of the @corva/create-app is outdated.
|
|
27
22
|
There is a new version available ({green.bold ${latestVersion}}).
|
|
@@ -30,11 +25,7 @@ async function ensureLatestVersion() {
|
|
|
30
25
|
npm i -g @corva/create-app@latest
|
|
31
26
|
|
|
32
27
|
`);
|
|
33
|
-
console.log(
|
|
34
|
-
errorStyle(
|
|
35
|
-
"****************************************************************"
|
|
36
|
-
)
|
|
37
|
-
);
|
|
28
|
+
console.log(errorStyle('****************************************************************'));
|
|
38
29
|
process.exit(0);
|
|
39
30
|
}
|
|
40
31
|
}
|
|
@@ -47,9 +38,7 @@ async function warnIfOutdated() {
|
|
|
47
38
|
const isCurrentVersionOutdated = semverGt(latestVersion, currentVersion);
|
|
48
39
|
|
|
49
40
|
if (isCurrentVersionOutdated) {
|
|
50
|
-
console.log(
|
|
51
|
-
"****************************************************************"
|
|
52
|
-
);
|
|
41
|
+
console.log('****************************************************************');
|
|
53
42
|
console.log(chalk`
|
|
54
43
|
There is a new version available ({green.bold ${latestVersion}}).
|
|
55
44
|
You can update the CLI version with the following command:
|
|
@@ -57,9 +46,7 @@ async function warnIfOutdated() {
|
|
|
57
46
|
npm i -g @corva/create-app@latest
|
|
58
47
|
|
|
59
48
|
`);
|
|
60
|
-
console.log(
|
|
61
|
-
"****************************************************************"
|
|
62
|
-
);
|
|
49
|
+
console.log('****************************************************************');
|
|
63
50
|
}
|
|
64
51
|
}
|
|
65
52
|
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
const Processor = require('../src/processor');
|
|
2
|
-
const loggerFactory = require('@corva/node-logger');
|
|
3
2
|
|
|
4
3
|
test('process event', async () => {
|
|
5
|
-
|
|
4
|
+
const fakeLogger = console;
|
|
5
|
+
const fakeApiClient = {};
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
const event = {
|
|
8
|
+
company: 1,
|
|
9
|
+
asset_id: 1234,
|
|
10
|
+
schedule: 206977482,
|
|
11
|
+
interval: 300,
|
|
12
|
+
schedule_start: 157829100000,
|
|
13
|
+
schedule_end: 157829400000,
|
|
14
|
+
};
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
const processor = new Processor({ logger: fakeLogger, apiClient: fakeApiClient });
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
await processor.process({ event });
|
|
19
19
|
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# dependencies
|
|
4
|
+
/node_modules
|
|
5
|
+
|
|
6
|
+
# testing
|
|
7
|
+
/coverage
|
|
8
|
+
|
|
9
|
+
# misc
|
|
10
|
+
.env
|
|
11
|
+
.DS_Store
|
|
12
|
+
.env.local
|
|
13
|
+
.env.development.local
|
|
14
|
+
.env.test.local
|
|
15
|
+
.env.production.local
|
|
16
|
+
|
|
17
|
+
npm-debug.log*
|
|
18
|
+
yarn-debug.log*
|
|
19
|
+
yarn-error.log*
|
|
20
|
+
|
|
21
|
+
*.zip
|
|
@@ -6,11 +6,10 @@ const Processor = require('./src/processor');
|
|
|
6
6
|
* @param {import('@corva/node-sdk').HandlerContext} context
|
|
7
7
|
*/
|
|
8
8
|
exports.handler = new Corva().scheduled(async (event, context) => {
|
|
9
|
+
const processor = new Processor({
|
|
10
|
+
apiClient: context.api,
|
|
11
|
+
logger: context.logger,
|
|
12
|
+
});
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
apiClient: context.api,
|
|
12
|
-
logger: context.logger,
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
await processor.process({ event });
|
|
14
|
+
await processor.process({ event });
|
|
16
15
|
});
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
"description": "My Dev Center Polling Scheduler Data App",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"bundle": "zip -r $npm_package_name-$npm_package_version.zip package.json
|
|
7
|
+
"bundle": "zip -r $npm_package_name-$npm_package_version.zip package.json $LOCKFILE manifest.json index.js src",
|
|
8
8
|
"test": "npm audit --production && npm run unit",
|
|
9
9
|
"unit": "jest"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@corva/node-sdk": "^
|
|
12
|
+
"@corva/node-sdk": "^5.3.1"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"jest": "^
|
|
15
|
+
"jest": "^27.2.0"
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
class Processor {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
constructor({ apiClient, logger }) {
|
|
3
|
+
this.apiClient = apiClient;
|
|
4
|
+
this.logger = logger;
|
|
5
|
+
}
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
async process({ event }) {
|
|
8
|
+
this.logger.debug({ event }, 'Event');
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
asset_id: assetId,
|
|
12
|
-
schedule_start: scheduleStart,
|
|
13
|
-
interval,
|
|
14
|
-
} = event;
|
|
10
|
+
const { asset_id: assetId, schedule_start: scheduleStart, interval } = event;
|
|
15
11
|
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
this.logger.info(`Processing event. Asset: ${assetId}. Schedule start: ${scheduleStart}`);
|
|
13
|
+
}
|
|
18
14
|
}
|
|
19
15
|
|
|
20
16
|
module.exports = Processor;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Dev Center Node.js TypeScript Polling Scheduler Data App
|
|
2
|
+
|
|
3
|
+
## Getting started
|
|
4
|
+
|
|
5
|
+
### 1. Install Dependencies
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
npm install
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
### 2. Run Tests
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
npm test
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### 3. Build
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
npm run build
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### 4. Deploy
|
|
24
|
+
|
|
25
|
+
Run `npm run bundle` to create a zip package that can be uploaded to Dev Center
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Processor } from '../lib/processor';
|
|
2
|
+
import type { HandlerContext, ScheduledLambdaEvent } from '@corva/node-sdk';
|
|
3
|
+
|
|
4
|
+
test('process event', async () => {
|
|
5
|
+
const fakeLogger = console as unknown as HandlerContext['logger'];
|
|
6
|
+
const fakeApiClient = {} as unknown as HandlerContext['api'];
|
|
7
|
+
|
|
8
|
+
const event = {
|
|
9
|
+
company: 1,
|
|
10
|
+
asset_id: 1234,
|
|
11
|
+
schedule: 206977482,
|
|
12
|
+
interval: 300,
|
|
13
|
+
schedule_start: 157829100000,
|
|
14
|
+
schedule_end: 157829400000,
|
|
15
|
+
} as unknown as ScheduledLambdaEvent<any>;
|
|
16
|
+
|
|
17
|
+
const processor = new Processor(fakeApiClient, fakeLogger);
|
|
18
|
+
|
|
19
|
+
await processor.process(event);
|
|
20
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# dependencies
|
|
4
|
+
/node_modules
|
|
5
|
+
|
|
6
|
+
# testing
|
|
7
|
+
/coverage
|
|
8
|
+
|
|
9
|
+
# misc
|
|
10
|
+
.env
|
|
11
|
+
.DS_Store
|
|
12
|
+
.env.local
|
|
13
|
+
.env.development.local
|
|
14
|
+
.env.test.local
|
|
15
|
+
.env.production.local
|
|
16
|
+
|
|
17
|
+
npm-debug.log*
|
|
18
|
+
yarn-debug.log*
|
|
19
|
+
yarn-error.log*
|
|
20
|
+
|
|
21
|
+
**/*.js
|
|
22
|
+
**/*.js.map
|
|
23
|
+
**/.d.ts
|
|
24
|
+
|
|
25
|
+
*.zip
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Corva } from '@corva/node-sdk';
|
|
2
|
+
import { Processor } from './lib/processor';
|
|
3
|
+
|
|
4
|
+
export const handler = new Corva().scheduled<{ some: string }, void>(async (event, context) => {
|
|
5
|
+
const processor = new Processor(context.api, context.logger);
|
|
6
|
+
|
|
7
|
+
await processor.process(event);
|
|
8
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HandlerContext, ScheduledLambdaEvent } from '@corva/node-sdk';
|
|
2
|
+
|
|
3
|
+
export class Processor {
|
|
4
|
+
constructor(private apiClient: HandlerContext['api'], private logger: HandlerContext['logger']) {}
|
|
5
|
+
|
|
6
|
+
async process(event: ScheduledLambdaEvent<{ some: string }>) {
|
|
7
|
+
this.logger.debug({ event }, 'Event');
|
|
8
|
+
|
|
9
|
+
const { asset_id: assetId, schedule_start: scheduleStart, interval } = event;
|
|
10
|
+
|
|
11
|
+
this.logger.info(`Processing event. Asset: ${assetId}. Schedule start: ${scheduleStart}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "my-dev-center-polling-scheduler-app",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "My Dev Center Polling Scheduler Data App",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"bundle": "zip -r $npm_package_name-$npm_package_version.zip package.json $LOCKFILE manifest.json index.js lib -x '*.ts'",
|
|
8
|
+
"test": "npm audit --production && npm run unit",
|
|
9
|
+
"build": "tsc -p tsconfig.build.json",
|
|
10
|
+
"unit": "jest"
|
|
11
|
+
},
|
|
12
|
+
"jest": {
|
|
13
|
+
"moduleFileExtensions": [
|
|
14
|
+
"js",
|
|
15
|
+
"json",
|
|
16
|
+
"ts"
|
|
17
|
+
],
|
|
18
|
+
"rootDir": ".",
|
|
19
|
+
"testEnvironment": "node",
|
|
20
|
+
"testMatch": [
|
|
21
|
+
"**/*.spec.ts"
|
|
22
|
+
],
|
|
23
|
+
"transform": {
|
|
24
|
+
"^.+\\.ts$": "ts-jest"
|
|
25
|
+
},
|
|
26
|
+
"verbose": true
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@corva/node-sdk": "^5.3.1"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/jest": "^27.0.1",
|
|
33
|
+
"jest": "^27.2.1",
|
|
34
|
+
"ts-jest": "^27.0.5",
|
|
35
|
+
"typescript": "^4.4.3"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"include": [
|
|
3
|
+
"lib/**/*.ts",
|
|
4
|
+
"__tests__"
|
|
5
|
+
],
|
|
6
|
+
"exclude": [
|
|
7
|
+
"node_modules"
|
|
8
|
+
],
|
|
9
|
+
"compilerOptions": {
|
|
10
|
+
"target": "es2019",
|
|
11
|
+
"skipLibCheck": false,
|
|
12
|
+
"baseUrl": "./",
|
|
13
|
+
"moduleResolution": "node",
|
|
14
|
+
"esModuleInterop": true,
|
|
15
|
+
"resolveJsonModule": true,
|
|
16
|
+
"checkJs": false,
|
|
17
|
+
"module": "commonjs",
|
|
18
|
+
"alwaysStrict": true,
|
|
19
|
+
"noImplicitAny": true,
|
|
20
|
+
"allowSyntheticDefaultImports": true,
|
|
21
|
+
"declaration": false,
|
|
22
|
+
"sourceMap": true,
|
|
23
|
+
"types": [
|
|
24
|
+
"jest"
|
|
25
|
+
],
|
|
26
|
+
"typeRoots": [
|
|
27
|
+
"./node_modules/@types",
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"typeAcquisition": {
|
|
31
|
+
"enable": true
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -1,49 +1,46 @@
|
|
|
1
1
|
jest.mock('@corva/node-api-client');
|
|
2
2
|
|
|
3
|
-
const loggerFactory = require('@corva/node-logger');
|
|
4
|
-
const { ApiClient } = require('@corva/node-api-client');
|
|
5
3
|
const Processor = require('../src/processor');
|
|
6
4
|
|
|
7
5
|
test('process event', async () => {
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
const fakeLogger = console;
|
|
7
|
+
const fakeApiClient = {};
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
9
|
+
const processor = new Processor({
|
|
10
|
+
apiClient: fakeApiClient,
|
|
11
|
+
logger: fakeLogger,
|
|
12
|
+
});
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
};
|
|
14
|
+
const event = {
|
|
15
|
+
asset_id: 1234,
|
|
16
|
+
app_stream_id: 2345,
|
|
17
|
+
records: [
|
|
18
|
+
{
|
|
19
|
+
company_id: 1,
|
|
20
|
+
asset_id: 1234,
|
|
21
|
+
timestamp: 157829400,
|
|
22
|
+
data: { hole_depth: 1000 },
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
company_id: 1,
|
|
26
|
+
asset_id: 1234,
|
|
27
|
+
timestamp: 157829401,
|
|
28
|
+
data: { hole_depth: 1001 },
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
company_id: 1,
|
|
32
|
+
asset_id: 1234,
|
|
33
|
+
timestamp: 157829402,
|
|
34
|
+
data: { hole_depth: 1001 },
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
company_id: 1,
|
|
38
|
+
asset_id: 1234,
|
|
39
|
+
timestamp: 157829403,
|
|
40
|
+
data: { hole_depth: 1001.5 },
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
47
44
|
|
|
48
|
-
|
|
45
|
+
await processor.process({ event });
|
|
49
46
|
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
|
2
|
+
|
|
3
|
+
# dependencies
|
|
4
|
+
/node_modules
|
|
5
|
+
|
|
6
|
+
# testing
|
|
7
|
+
/coverage
|
|
8
|
+
|
|
9
|
+
# misc
|
|
10
|
+
.env
|
|
11
|
+
.DS_Store
|
|
12
|
+
.env.local
|
|
13
|
+
.env.development.local
|
|
14
|
+
.env.test.local
|
|
15
|
+
.env.production.local
|
|
16
|
+
|
|
17
|
+
npm-debug.log*
|
|
18
|
+
yarn-debug.log*
|
|
19
|
+
yarn-error.log*
|
|
20
|
+
|
|
21
|
+
*.zip
|
|
@@ -6,11 +6,10 @@ const Processor = require('./src/processor');
|
|
|
6
6
|
* @param {import('@corva/node-sdk').HandlerContext} context
|
|
7
7
|
*/
|
|
8
8
|
exports.handler = new Corva().stream(async (event, context) => {
|
|
9
|
+
const processor = new Processor({
|
|
10
|
+
apiClient: context.api,
|
|
11
|
+
logger: context.logger,
|
|
12
|
+
});
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
apiClient: context.api,
|
|
12
|
-
logger: context.logger,
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
await processor.process({ event });
|
|
14
|
+
await processor.process({ event });
|
|
16
15
|
});
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
"description": "My Dev Center Real-Time Stream Data App",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"bundle": "zip -r $npm_package_name-$npm_package_version.zip package.json
|
|
7
|
+
"bundle": "zip -r $npm_package_name-$npm_package_version.zip package.json $LOCKFILE manifest.json index.js src",
|
|
8
8
|
"test": "npm audit --production && npm run unit",
|
|
9
9
|
"unit": "jest"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@corva/node-sdk": "^
|
|
12
|
+
"@corva/node-sdk": "^5.3.1"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"jest": "^
|
|
15
|
+
"jest": "^27.2.0"
|
|
16
16
|
}
|
|
17
17
|
}
|