@corva/create-app 0.0.0-73c49372-test → 0.0.0-ae3a727
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/README.md +7 -0
- package/bin/create-corva-app.cjs +4 -9
- package/lib/commands/release.js +6 -0
- package/lib/constants/cli.js +13 -3
- package/lib/constants/manifest.js +3 -2
- package/lib/constants/package.js +18 -6
- package/lib/flows/lib/api.js +3 -9
- package/lib/flows/lib/manifest.js +1 -1
- package/lib/flows/steps/release/upload-zip-to-corva.js +74 -0
- package/lib/flows/steps/zip-file-list-resolve.js +1 -0
- package/lib/helpers/cli-version.js +39 -3
- package/lib/helpers/manifest.js +9 -1
- package/lib/helpers/resolve-app-runtime.js +6 -6
- package/lib/helpers/utils.js +7 -1
- package/package.json +1 -104
- package/template_extensions/corva/.eslintrc +32 -0
- package/template_extensions/corva/.github/workflows/develop.yml +2 -0
- package/template_extensions/corva/.release-please-manifest.json +3 -0
- package/template_extensions/corva/release-please-config.json +10 -0
- package/templates/scheduler_data-time/javascript/__tests__/processor.spec.js +1 -1
- package/templates/scheduler_data-time/typescript/__tests__/processor.spec.ts +1 -1
- package/templates/scheduler_depth/javascript/__tests__/processor.spec.js +1 -1
- package/templates/scheduler_depth/typescript/__tests__/processor.spec.ts +1 -1
- package/templates/scheduler_natural-time/javascript/__tests__/processor.spec.js +1 -1
- package/templates/scheduler_natural-time/typescript/__tests__/processor.spec.ts +1 -1
- package/templates/stream_depth/javascript/__tests__/processor.spec.js +1 -1
- package/templates/stream_depth/typescript/__tests__/processor.spec.ts +1 -1
- package/templates/stream_time/javascript/__tests__/processor.spec.js +1 -1
- package/templates/stream_time/typescript/__tests__/processor.spec.ts +1 -1
- package/templates/task/javascript/__tests__/processor.spec.js +1 -1
- package/templates/task/typescript/__tests__/processor.spec.ts +1 -1
- package/templates/ui/javascript/config/jest/setupTests.js +19 -0
- package/templates/ui/javascript/src/App.completion.js +30 -31
- package/templates/ui/javascript/src/App.css +0 -13
- package/templates/ui/javascript/src/App.drilling.js +31 -36
- package/templates/ui/javascript/src/__tests__/App.test.js +27 -2
- package/templates/ui/typescript/config/jest/setupTests.js +19 -0
- package/templates/ui/typescript/src/App.completion.tsx +32 -42
- package/templates/ui/typescript/src/App.css +0 -13
- package/templates/ui/typescript/src/App.drilling.tsx +32 -41
- package/templates/ui/typescript/src/AppSettings.tsx +2 -12
- package/templates/ui/typescript/src/__mocks__/mockData.ts +194 -0
- package/templates/ui/typescript/src/__tests__/App.test.tsx +80 -6
- package/templates/ui/typescript/src/__tests__/AppSettings.test.tsx +14 -3
- package/templates/ui/typescript/src/types.ts +618 -0
- package/templates/ui/typescript/tsconfig.json +0 -1
- package/templates/ui/typescript/src/__mocks__/mockAppProps.ts +0 -590
- package/templates/ui/typescript/src/__mocks__/mockAppSettingsProps.ts +0 -290
package/README.md
CHANGED
|
@@ -182,6 +182,7 @@ Options:
|
|
|
182
182
|
--silent [boolean] Only log result of the operation (default: false)
|
|
183
183
|
--remove-on-success App package (.zip) will not be deleted after upload (default: true)
|
|
184
184
|
--remove-existing [boolean] If package.json version is already taken - remove the previously published package and upload a new one (default: false)
|
|
185
|
+
--author [string] Author name for the audit
|
|
185
186
|
```
|
|
186
187
|
|
|
187
188
|
### Examples
|
|
@@ -209,3 +210,9 @@ create-corva-app release test-app --bump-version=patch
|
|
|
209
210
|
```sh
|
|
210
211
|
create-corva-app release test-app --bump-version=4.2.0
|
|
211
212
|
```
|
|
213
|
+
|
|
214
|
+
#### Make a release with author option(by default it will use your GitHub username)
|
|
215
|
+
|
|
216
|
+
```sh
|
|
217
|
+
create-corva-app release test-app --author=MyName
|
|
218
|
+
```
|
package/bin/create-corva-app.cjs
CHANGED
|
@@ -7,18 +7,13 @@ const originalCwd = process.cwd();
|
|
|
7
7
|
|
|
8
8
|
process.chdir(__dirname);
|
|
9
9
|
|
|
10
|
-
const
|
|
11
|
-
.slice(2)
|
|
12
|
-
|
|
13
|
-
.concat(['--original-cwd', originalCwd])
|
|
14
|
-
// leave spaces in place for arguments
|
|
15
|
-
.map((a) => (a.includes(' ') ? `"${a}"` : a));
|
|
16
|
-
|
|
17
|
-
const args = ['--no-warnings', '--experimental-json-modules', 'cca.js'].concat(preparedOriginalArgs);
|
|
10
|
+
const args = ['--no-warnings', '--experimental-json-modules', 'cca.js']
|
|
11
|
+
.concat(process.argv.slice(2))
|
|
12
|
+
.concat(['--original-cwd', originalCwd]);
|
|
18
13
|
|
|
19
14
|
const { signal, status, error } = spawnSync(cmd, args, {
|
|
20
15
|
stdio: 'inherit',
|
|
21
|
-
shell:
|
|
16
|
+
shell: false,
|
|
22
17
|
});
|
|
23
18
|
|
|
24
19
|
if (signal) {
|
package/lib/commands/release.js
CHANGED
|
@@ -36,7 +36,13 @@ export const releaseCommand = new Command('release')
|
|
|
36
36
|
).default(false),
|
|
37
37
|
)
|
|
38
38
|
// .addOption(new Option('--zip-file-name [string]', 'Prebuilt zip file name in dir'))
|
|
39
|
+
.addOption(new Option('--author [string]', 'Author name for the audit'))
|
|
39
40
|
.action(async (dirName, patterns, options) => {
|
|
41
|
+
// if author is present in CLI, save it to process.env
|
|
42
|
+
if (options.author) {
|
|
43
|
+
process.env.githubUsername = options.author;
|
|
44
|
+
}
|
|
45
|
+
|
|
40
46
|
options.bumpVersion = await ensureBumpVersion(options.bumpVersion);
|
|
41
47
|
|
|
42
48
|
await runFlow(RELEASE_FLOW, {
|
package/lib/constants/cli.js
CHANGED
|
@@ -2,10 +2,16 @@ export const APP_RUNTIMES = {
|
|
|
2
2
|
UI: 'ui',
|
|
3
3
|
// NODE12: 'nodejs12.x',
|
|
4
4
|
// NODE14: 'nodejs14.x',
|
|
5
|
-
NODE16: 'nodejs16.x',
|
|
5
|
+
// NODE16: 'nodejs16.x',
|
|
6
6
|
NODE18: 'nodejs18.x',
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
NODE20: 'nodejs20.x',
|
|
8
|
+
NODE22: 'nodejs22.x',
|
|
9
|
+
// PYTHON3_8: 'python3.8',
|
|
10
|
+
// PYTHON3_9: 'python3.9',
|
|
11
|
+
// PYTHON3_10: 'python3.10',
|
|
12
|
+
PYTHON3_11: 'python3.11',
|
|
13
|
+
PYTHON3_12: 'python3.12',
|
|
14
|
+
PYTHON3_13: 'python3.13',
|
|
9
15
|
};
|
|
10
16
|
|
|
11
17
|
export const TEMPLATE_TYPES = {
|
|
@@ -22,3 +28,7 @@ export const APP_TYPES = {
|
|
|
22
28
|
STREAM: 'stream',
|
|
23
29
|
TASK: 'task',
|
|
24
30
|
};
|
|
31
|
+
|
|
32
|
+
export const APP_EXTENSIONS = {
|
|
33
|
+
CORVA: 'corva',
|
|
34
|
+
};
|
|
@@ -20,7 +20,7 @@ export const defaultManifest = {
|
|
|
20
20
|
summary: 'More information about this app goes here',
|
|
21
21
|
category: '',
|
|
22
22
|
website: 'https://www.oandgexample.com/my-app/',
|
|
23
|
-
segments: ['drilling', 'completion'],
|
|
23
|
+
segments: ['drilling', 'completion', 'intervention'],
|
|
24
24
|
},
|
|
25
25
|
settings: {
|
|
26
26
|
entrypoint: {
|
|
@@ -38,6 +38,7 @@ export const defaultUIAppManifest = {
|
|
|
38
38
|
initial_size: { w: 4, h: 10 },
|
|
39
39
|
multi_rig: false,
|
|
40
40
|
full_screen_report: false,
|
|
41
|
+
use_app_header_v3: true,
|
|
41
42
|
},
|
|
42
43
|
},
|
|
43
44
|
settings: {
|
|
@@ -205,7 +206,7 @@ export const manifestOptions = (projectName = 'Corva Dev Center App') => [
|
|
|
205
206
|
type: 'rawlist',
|
|
206
207
|
name: 'segments',
|
|
207
208
|
message: 'Choose segments',
|
|
208
|
-
choices: ['drilling', 'completion'],
|
|
209
|
+
choices: ['drilling', 'completion', 'intervention'],
|
|
209
210
|
required: true,
|
|
210
211
|
},
|
|
211
212
|
{
|
package/lib/constants/package.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
+
import { APP_EXTENSIONS } from './cli.js';
|
|
2
3
|
|
|
3
4
|
const uiDependencies = {
|
|
4
5
|
'@corva/ui': 'latest',
|
|
@@ -37,8 +38,11 @@ const jsUiDevDependencies = {
|
|
|
37
38
|
const tsUiDevDependencies = {
|
|
38
39
|
...jsUiDevDependencies,
|
|
39
40
|
'@tsconfig/create-react-app': '1.0.2',
|
|
41
|
+
'@types/lodash': '4.17.5',
|
|
40
42
|
'@types/material-ui': '0.21.9',
|
|
41
|
-
'@types/
|
|
43
|
+
'@types/minimatch': '3.0.5',
|
|
44
|
+
'@types/mime': '3.0.1',
|
|
45
|
+
'@types/node': '18.19.47',
|
|
42
46
|
'@types/react': '^17.0.22',
|
|
43
47
|
'@types/react-dom': '^17.0.9',
|
|
44
48
|
'@types/jest': '^27.0.1',
|
|
@@ -52,11 +56,15 @@ const corvaUiExtension = {
|
|
|
52
56
|
scripts: {
|
|
53
57
|
prepare: 'husky install',
|
|
54
58
|
},
|
|
59
|
+
dependencies: {
|
|
60
|
+
'@tanstack/react-query': '4.35.3',
|
|
61
|
+
},
|
|
55
62
|
devDependencies: {
|
|
56
63
|
'@commitlint/cli': '^17.0.0',
|
|
57
64
|
'@commitlint/config-conventional': '^17.0.0',
|
|
58
65
|
'husky': '^8.0.0',
|
|
59
66
|
'lint-staged': '^13.0.0',
|
|
67
|
+
'@tanstack/eslint-plugin-query': '4.34.1',
|
|
60
68
|
},
|
|
61
69
|
};
|
|
62
70
|
|
|
@@ -67,7 +75,7 @@ function applyUiExtension(packageJson, extensionNames) {
|
|
|
67
75
|
|
|
68
76
|
const extensions = extensionNames
|
|
69
77
|
.map((extensionName) => {
|
|
70
|
-
if (extensionName ===
|
|
78
|
+
if (extensionName === APP_EXTENSIONS.CORVA) {
|
|
71
79
|
return corvaUiExtension;
|
|
72
80
|
}
|
|
73
81
|
|
|
@@ -135,6 +143,10 @@ const uiPackage = {
|
|
|
135
143
|
const tsUiPackage = {
|
|
136
144
|
...uiPackage,
|
|
137
145
|
devDependencies: tsUiDevDependencies,
|
|
146
|
+
// todo: temporary solution, ref https://github.com/oppia/oppia/issues/22283#issuecomment-2756641371
|
|
147
|
+
resolutions: {
|
|
148
|
+
'@types/babel__traverse': '7.20.6',
|
|
149
|
+
},
|
|
138
150
|
};
|
|
139
151
|
|
|
140
152
|
const nodeNpmScripts = {
|
|
@@ -151,17 +163,17 @@ const nodeDependencies = {
|
|
|
151
163
|
|
|
152
164
|
const nodeDevDependencies = {
|
|
153
165
|
'@corva/eslint-config-node': '^5.1.1',
|
|
154
|
-
'jest': '^
|
|
166
|
+
'jest': '^29.7.0',
|
|
155
167
|
'dotenv': '^16.0.3',
|
|
156
168
|
'eslint': '^8.2.0',
|
|
157
169
|
'prettier': '^2.0.0',
|
|
158
|
-
'typescript': '^
|
|
170
|
+
'typescript': '^5.5.4',
|
|
159
171
|
};
|
|
160
172
|
|
|
161
173
|
const nodeTsDevDependencies = {
|
|
162
174
|
...nodeDevDependencies,
|
|
163
|
-
'@types/jest': '^
|
|
164
|
-
'ts-jest': '^
|
|
175
|
+
'@types/jest': '^29.5.12',
|
|
176
|
+
'ts-jest': '^29.2.4',
|
|
165
177
|
};
|
|
166
178
|
|
|
167
179
|
const nodeYarnScripts = {
|
package/lib/flows/lib/api.js
CHANGED
|
@@ -42,21 +42,15 @@ export class Api {
|
|
|
42
42
|
* @returns {object}
|
|
43
43
|
*/
|
|
44
44
|
async getAppByKey(appKey) {
|
|
45
|
-
const { data } = await this.#api
|
|
46
|
-
.get('v2/apps', {
|
|
47
|
-
searchParams: { per_page: 2, search: appKey },
|
|
48
|
-
})
|
|
49
|
-
.json();
|
|
45
|
+
const { data } = await this.#api.get(`v2/apps/${appKey}`).json();
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (!app) {
|
|
47
|
+
if (!data) {
|
|
54
48
|
throw new StepError(
|
|
55
49
|
`App with key - ${appKey}, does not exist.\nThe key search is case-sensitive. You might need to update the app key in your app to exactly match the key.`,
|
|
56
50
|
);
|
|
57
51
|
}
|
|
58
52
|
|
|
59
|
-
return
|
|
53
|
+
return data;
|
|
60
54
|
}
|
|
61
55
|
|
|
62
56
|
/**
|
|
@@ -11,7 +11,7 @@ const SCHEDULER_MAPPING = [SCHEDULER_TYPE_DATA_TIME, SCHEDULER_TYPE_DEPTH, SCHED
|
|
|
11
11
|
{},
|
|
12
12
|
);
|
|
13
13
|
|
|
14
|
-
const NODE_RUNTIMES = [APP_RUNTIMES.
|
|
14
|
+
const NODE_RUNTIMES = [APP_RUNTIMES.NODE18, APP_RUNTIMES.NODE20, APP_RUNTIMES.NODE22];
|
|
15
15
|
|
|
16
16
|
export class Manifest {
|
|
17
17
|
constructor(manifest) {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import FormData from 'form-data';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
|
+
import fs from 'fs';
|
|
3
4
|
import { createReadStream } from 'node:fs';
|
|
4
5
|
import { resolve } from 'node:path';
|
|
5
6
|
import { RELEASE } from '../../../constants/messages.js';
|
|
6
7
|
import { StepError } from '../../lib/step-error.js';
|
|
7
8
|
import { logger } from '../../../helpers/logger.js';
|
|
9
|
+
import { execSync } from 'node:child_process';
|
|
8
10
|
|
|
9
11
|
async function deleteAppPackage({ api, appId, appPkgVersion }) {
|
|
10
12
|
const appPackages = await api.getAppPackages(appId);
|
|
@@ -23,6 +25,70 @@ async function deleteAppPackage({ api, appId, appPkgVersion }) {
|
|
|
23
25
|
}
|
|
24
26
|
}
|
|
25
27
|
|
|
28
|
+
function getRealAuthorFromGithubEvent() {
|
|
29
|
+
if (!process.env.GITHUB_EVENT_PATH) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
try {
|
|
34
|
+
const event = JSON.parse(fs.readFileSync(process.env.GITHUB_EVENT_PATH, 'utf8'));
|
|
35
|
+
|
|
36
|
+
// For push-event
|
|
37
|
+
if (event?.pusher?.name) {
|
|
38
|
+
return event.pusher.name;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// For PR event
|
|
42
|
+
if (event?.pull_request?.user?.login) {
|
|
43
|
+
return event.pull_request.user.login;
|
|
44
|
+
}
|
|
45
|
+
} catch (error) {
|
|
46
|
+
// Catch error in case json file is invalid or absent
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function getGithubUsernameActor() {
|
|
54
|
+
// If option passed --author – we firstly take it
|
|
55
|
+
if (process.env.githubUsername) {
|
|
56
|
+
return process.env.githubUsername;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// If no --author passed, try use GITHUB_ACTOR
|
|
60
|
+
const actor = process.env.GITHUB_ACTOR;
|
|
61
|
+
|
|
62
|
+
if (actor && actor !== 'github-actions[bot]') {
|
|
63
|
+
return actor;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// If actor == github-actions[bot], let's try to get a real user
|
|
67
|
+
const realAuthor = getRealAuthorFromGithubEvent();
|
|
68
|
+
|
|
69
|
+
if (realAuthor) {
|
|
70
|
+
return realAuthor;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function getGitConfigUsername() {
|
|
77
|
+
try {
|
|
78
|
+
let username = execSync('git config user.name').toString().trim();
|
|
79
|
+
|
|
80
|
+
if (!username) {
|
|
81
|
+
username = execSync('git config --global user.name').toString().trim();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return username || null;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
logger.log('Unable to fetch git config username:', error.message);
|
|
87
|
+
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
26
92
|
export const UPLOAD_ZIP_TO_CORVA_STEP = {
|
|
27
93
|
message: RELEASE.uploadApp,
|
|
28
94
|
/**
|
|
@@ -36,6 +102,14 @@ export const UPLOAD_ZIP_TO_CORVA_STEP = {
|
|
|
36
102
|
|
|
37
103
|
form.append('package', createReadStream(resolve(dirName, zipFileName)), 'package.zip');
|
|
38
104
|
|
|
105
|
+
let githubUsername = getGithubUsernameActor();
|
|
106
|
+
|
|
107
|
+
if (!githubUsername) {
|
|
108
|
+
githubUsername = getGitConfigUsername();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
form.append('github_username', githubUsername);
|
|
112
|
+
|
|
39
113
|
const { id: packageId, isDeletedDueToLimit } = await api.uploadPackages(appKey, form);
|
|
40
114
|
|
|
41
115
|
if (isDeletedDueToLimit) {
|
|
@@ -121,6 +121,7 @@ const resolveDataToZipUiApp = async (itemsToZip = [], { options, pkg, dirName, m
|
|
|
121
121
|
name: 'package.json',
|
|
122
122
|
},
|
|
123
123
|
...(await transformPatternsIntoFileNames(dirName, ['src/**/*'], options.ignoredFiles)),
|
|
124
|
+
...(await transformPatternsIntoFileNames(dirName, ['config/**/*'], options.ignoredFiles)),
|
|
124
125
|
);
|
|
125
126
|
|
|
126
127
|
if (options.appKey) {
|
|
@@ -4,9 +4,10 @@ import semver from 'semver';
|
|
|
4
4
|
import inquirer from 'inquirer';
|
|
5
5
|
import { join } from 'path';
|
|
6
6
|
import * as url from 'url';
|
|
7
|
+
import fs from 'fs-extra';
|
|
7
8
|
|
|
8
9
|
import { logger } from './logger.js';
|
|
9
|
-
import
|
|
10
|
+
import { StepError } from '../flows/lib/step-error.js';
|
|
10
11
|
|
|
11
12
|
const npm = new NpmApi();
|
|
12
13
|
|
|
@@ -17,13 +18,41 @@ const asterisks = '*************************************************************
|
|
|
17
18
|
|
|
18
19
|
const getCurrentVersion = async () =>
|
|
19
20
|
(await fs.readJSON(join(url.fileURLToPath(new URL('.', import.meta.url)), '../../package.json'))).version;
|
|
20
|
-
|
|
21
|
+
|
|
22
|
+
const getLatestVersion = async () => {
|
|
23
|
+
try {
|
|
24
|
+
return await npm.repo('@corva/create-app').prop('version');
|
|
25
|
+
} catch (caughtError) {
|
|
26
|
+
if (caughtError.name === 'FetchError') {
|
|
27
|
+
throw new StepError(`The request to check the latest available version has failed due to the network error. Details:
|
|
28
|
+
|
|
29
|
+
${caughtError}
|
|
30
|
+
|
|
31
|
+
Please check your internet connection and that the above request is not blocked in your network
|
|
32
|
+
`);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
throw caughtError;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Utility function to check if a version is a regular semver without prerelease identifiers
|
|
40
|
+
const isRegularVersion = (version) => {
|
|
41
|
+
return semver.prerelease(version) === null;
|
|
42
|
+
};
|
|
21
43
|
|
|
22
44
|
// NOTE: Stop process and show error if version is outdated
|
|
23
45
|
export async function ensureLatestVersion() {
|
|
24
46
|
const currentVersion = await getCurrentVersion();
|
|
25
47
|
const latestVersion = await getLatestVersion();
|
|
26
48
|
|
|
49
|
+
// Skip version check if current version is a prerelease (dev or next)
|
|
50
|
+
if (!isRegularVersion(currentVersion)) {
|
|
51
|
+
logger.write('Skipping version check for prerelease version.\n');
|
|
52
|
+
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
|
|
27
56
|
const isCurrentVersionOutdated = semver.gt(latestVersion, currentVersion);
|
|
28
57
|
|
|
29
58
|
if (isCurrentVersionOutdated) {
|
|
@@ -37,7 +66,7 @@ export async function ensureLatestVersion() {
|
|
|
37
66
|
|
|
38
67
|
`);
|
|
39
68
|
console.log(error(asterisks));
|
|
40
|
-
|
|
69
|
+
process.exit(0);
|
|
41
70
|
}
|
|
42
71
|
}
|
|
43
72
|
|
|
@@ -48,6 +77,13 @@ export async function warnIfOutdated() {
|
|
|
48
77
|
const currentVersion = await getCurrentVersion();
|
|
49
78
|
const latestVersion = await getLatestVersion();
|
|
50
79
|
|
|
80
|
+
// Skip version check if current version is a prerelease (dev or next)
|
|
81
|
+
if (!isRegularVersion(currentVersion)) {
|
|
82
|
+
logger.write(' ⚠️ Skipping version check for prerelease version.\n');
|
|
83
|
+
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
51
87
|
const isCurrentVersionOutdated = semver.gt(latestVersion, currentVersion);
|
|
52
88
|
|
|
53
89
|
if (isCurrentVersionOutdated) {
|
package/lib/helpers/manifest.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APP_RUNTIMES, APP_TYPES, TEMPLATE_TYPES } from '../constants/cli.js';
|
|
1
|
+
import { APP_EXTENSIONS, APP_RUNTIMES, APP_TYPES, TEMPLATE_TYPES } from '../constants/cli.js';
|
|
2
2
|
import * as manifestConstants from '../constants/manifest.js';
|
|
3
3
|
|
|
4
4
|
export function fillManifest(answers) {
|
|
@@ -10,6 +10,13 @@ export function fillManifest(answers) {
|
|
|
10
10
|
runtime,
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
+
const enable_isolation =
|
|
14
|
+
answers.appType === APP_TYPES.UI &&
|
|
15
|
+
answers.runtime === APP_RUNTIMES.UI &&
|
|
16
|
+
answers.extensions.includes(APP_EXTENSIONS.CORVA)
|
|
17
|
+
? false
|
|
18
|
+
: undefined;
|
|
19
|
+
|
|
13
20
|
const manifest = {
|
|
14
21
|
...manifestConstants.defaultManifest,
|
|
15
22
|
...defaultManifestProperties,
|
|
@@ -35,6 +42,7 @@ export function fillManifest(answers) {
|
|
|
35
42
|
...defaultManifestProperties.settings,
|
|
36
43
|
runtime,
|
|
37
44
|
app: defaultAppSettings(answers),
|
|
45
|
+
enable_isolation,
|
|
38
46
|
},
|
|
39
47
|
};
|
|
40
48
|
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import debugFn from 'debug';
|
|
2
2
|
import { APP_TYPES } from '../constants/cli.js';
|
|
3
|
-
|
|
4
|
-
const debug = debugFn('cca:resolve-app-runtime');
|
|
5
|
-
|
|
6
3
|
import spawn from 'cross-spawn';
|
|
7
4
|
import { promises as fs } from 'fs';
|
|
8
5
|
import os from 'os';
|
|
9
6
|
import semver from 'semver';
|
|
10
7
|
|
|
8
|
+
const debug = debugFn('cca:resolve-app-runtime');
|
|
9
|
+
|
|
11
10
|
/**
|
|
12
11
|
*
|
|
13
12
|
* @param {string} command
|
|
@@ -61,14 +60,15 @@ export const IS_WINDOWS = process.platform === 'win32';
|
|
|
61
60
|
|
|
62
61
|
const semverVersionsMapping = {
|
|
63
62
|
node: {
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
18: '18.14.0',
|
|
64
|
+
20: '20.16.0',
|
|
66
65
|
},
|
|
67
66
|
python: {
|
|
68
67
|
'3.8': '3.8.16',
|
|
69
68
|
'3.9': '3.9.16',
|
|
70
69
|
'3.10': '3.10.9',
|
|
71
70
|
'3.11': '3.11.1',
|
|
71
|
+
'3.13': '3.13.7',
|
|
72
72
|
},
|
|
73
73
|
};
|
|
74
74
|
|
|
@@ -82,7 +82,7 @@ const semverVersionsMapping = {
|
|
|
82
82
|
*/
|
|
83
83
|
export const resolveAppRuntime = (opts) => {
|
|
84
84
|
if (opts.appType === APP_TYPES.UI) {
|
|
85
|
-
const version = '
|
|
85
|
+
const version = '20';
|
|
86
86
|
|
|
87
87
|
return {
|
|
88
88
|
language: opts.useTypescript ? 'typescript' : 'javascript',
|
package/lib/helpers/utils.js
CHANGED
|
@@ -8,7 +8,13 @@ export const addUiAppFile = (templateFolder, root, runtime, manifest, opts) => {
|
|
|
8
8
|
logger.log(chalk.green('adding app file'));
|
|
9
9
|
|
|
10
10
|
const fileExtension = runtime.language === 'typescript' ? 'tsx' : 'js';
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
const segment =
|
|
13
|
+
{
|
|
14
|
+
drilling: 'drilling',
|
|
15
|
+
completion: 'completion',
|
|
16
|
+
intervention: 'drilling', // same as drilling for now
|
|
17
|
+
}[opts.segments] || 'drilling';
|
|
12
18
|
const appFilePath = join(templateFolder, 'src', `App.${segment}.${fileExtension}`);
|
|
13
19
|
|
|
14
20
|
copyFileSync(appFilePath, join(root, 'src', `App.${fileExtension}`));
|
package/package.json
CHANGED
|
@@ -1,104 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@corva/create-app",
|
|
3
|
-
"version": "0.0.0-73c49372-test",
|
|
4
|
-
"private": false,
|
|
5
|
-
"description": "Create an app to use it in CORVA.AI",
|
|
6
|
-
"keywords": [
|
|
7
|
-
"react"
|
|
8
|
-
],
|
|
9
|
-
"bugs": {
|
|
10
|
-
"url": "https://github.com/facebook/create-react-app/issues"
|
|
11
|
-
},
|
|
12
|
-
"repository": {
|
|
13
|
-
"type": "git",
|
|
14
|
-
"url": "https://github.com/corva-ai/create-corva-app",
|
|
15
|
-
"directory": "@corva/create-app"
|
|
16
|
-
},
|
|
17
|
-
"license": "MIT",
|
|
18
|
-
"type": "module",
|
|
19
|
-
"bin": {
|
|
20
|
-
"create-corva-app": "./bin/create-corva-app.cjs"
|
|
21
|
-
},
|
|
22
|
-
"files": [
|
|
23
|
-
"bin/**/*.cjs",
|
|
24
|
-
"bin/**/*.js",
|
|
25
|
-
"lib/**/*.js",
|
|
26
|
-
"templates",
|
|
27
|
-
"template_extensions",
|
|
28
|
-
"common"
|
|
29
|
-
],
|
|
30
|
-
"scripts": {
|
|
31
|
-
"helper-cli": "npx @corva/fe-dev-helper-cli@latest",
|
|
32
|
-
"build": "echo \"build is not configured for package \\\"×\\\", skipping.\"",
|
|
33
|
-
"get-changelog": "conventional-changelog -r 2 -p angular",
|
|
34
|
-
"lint": "eslint . --resolve-plugins-relative-to $(pwd) --max-warnings 0",
|
|
35
|
-
"lint:fix": "eslint . --fix",
|
|
36
|
-
"release": "git add -A && standard-version -a",
|
|
37
|
-
"release-rc": "npm run release -- --prerelease",
|
|
38
|
-
"test": "NODE_OPTIONS='--experimental-vm-modules --no-warnings' jest"
|
|
39
|
-
},
|
|
40
|
-
"lint-staged": {
|
|
41
|
-
"*.js": "npm run lint:fix"
|
|
42
|
-
},
|
|
43
|
-
"dependencies": {
|
|
44
|
-
"archiver": "^5.3.0",
|
|
45
|
-
"chalk": "^4.1.0",
|
|
46
|
-
"commander": "^9.1.0",
|
|
47
|
-
"cross-spawn": "^7.0.3",
|
|
48
|
-
"debug": "^4.3.4",
|
|
49
|
-
"dotenv": "^16.0.0",
|
|
50
|
-
"figlet": "^1.5.0",
|
|
51
|
-
"form-data": "^4.0.0",
|
|
52
|
-
"fs-extra": "^9.0.1",
|
|
53
|
-
"glob": "^8.0.1",
|
|
54
|
-
"got": "^12.5.1",
|
|
55
|
-
"inquirer": "^8.2.3",
|
|
56
|
-
"is-glob": "^4.0.3",
|
|
57
|
-
"lodash": "^4.17.21",
|
|
58
|
-
"npm-api": "^1.0.0",
|
|
59
|
-
"semver": "^7.3.2",
|
|
60
|
-
"terminal-link": "^3.0.0"
|
|
61
|
-
},
|
|
62
|
-
"devDependencies": {
|
|
63
|
-
"@babel/core": "^7.11.0",
|
|
64
|
-
"@babel/eslint-parser": "^7.19.1",
|
|
65
|
-
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
66
|
-
"@babel/plugin-syntax-import-assertions": "^7.20.0",
|
|
67
|
-
"@babel/preset-react": "^7.18.6",
|
|
68
|
-
"@commitlint/cli": "^17.3.0",
|
|
69
|
-
"@commitlint/config-conventional": "^17.3.0",
|
|
70
|
-
"@corva/eslint-config-browser": "^0.1.7",
|
|
71
|
-
"@corva/eslint-config-node": "^5.1.1",
|
|
72
|
-
"@corva/node-sdk": "^8.0.1",
|
|
73
|
-
"@types/cross-spawn": "^6.0.2",
|
|
74
|
-
"@types/jest": "^29.5.4",
|
|
75
|
-
"@typescript-eslint/eslint-plugin": "^5.42.1",
|
|
76
|
-
"@typescript-eslint/parser": "^5.42.1",
|
|
77
|
-
"conventional-changelog-cli": "^2.1.0",
|
|
78
|
-
"eslint": "^8.2.0",
|
|
79
|
-
"eslint-config-google": "^0.14.0",
|
|
80
|
-
"eslint-config-prettier": "^8.5.0",
|
|
81
|
-
"eslint-plugin-import": "^2.26.0",
|
|
82
|
-
"eslint-plugin-jest": "^27.1.5",
|
|
83
|
-
"eslint-plugin-jsx-a11y": "^6.7.1",
|
|
84
|
-
"eslint-plugin-prettier": "^4.2.1",
|
|
85
|
-
"eslint-plugin-react": "^7.32.0",
|
|
86
|
-
"eslint-plugin-react-hooks": "^4.6.0",
|
|
87
|
-
"eslint-plugin-require-sort": "^1.3.0",
|
|
88
|
-
"husky": "^8.0.2",
|
|
89
|
-
"jest": "^29.6.4",
|
|
90
|
-
"prettier": "^2.0.0",
|
|
91
|
-
"prettier-plugin-packagejson": "^2.3.0",
|
|
92
|
-
"standard-version": "^9.0.0",
|
|
93
|
-
"typescript": "^4.8.4",
|
|
94
|
-
"zx": "^7.2.3"
|
|
95
|
-
},
|
|
96
|
-
"engines": {
|
|
97
|
-
"node": ">=18"
|
|
98
|
-
},
|
|
99
|
-
"standard-version": {
|
|
100
|
-
"skip": {
|
|
101
|
-
"tag": true
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
1
|
+
{"name":"@corva/create-app","version":"0.0.0-ae3a727","private":false,"description":"Create an app to use it in CORVA.AI","keywords":["react"],"bugs":{"url":"https://github.com/facebook/create-react-app/issues"},"repository":{"type":"git","url":"https://github.com/corva-ai/create-corva-app","directory":"@corva/create-app"},"license":"MIT","type":"module","bin":{"create-corva-app":"./bin/create-corva-app.cjs"},"files":["bin/**/*.cjs","bin/**/*.js","lib/**/*.js","templates","template_extensions","common"],"scripts":{"build":"echo \"build is not configured for package \\\"×\\\", skipping.\"","get-changelog":"conventional-changelog -r 2 -p angular","lint":"eslint . --resolve-plugins-relative-to $(pwd) --max-warnings 0","lint:fix":"eslint . --fix","release":"git add -A && standard-version -a","release-rc":"npm run release -- --prerelease","run:local-ui-ts-completion":"node ./bin/create-corva-app.cjs ../test-app-ui-ts-completions --appName 'TestAppUiTsCompletions' --segments 'completion' --category 'analytics' --appKey 'corva.testappuitscompletions.ui' --appType 'ui' --runtime 'ui' -t --extensions corva","run:local-ui-ts-drilling":"node ./bin/create-corva-app.cjs ../test-app-ui-ts-drilling --appName 'TestAppUiTsDrilling' --segments 'drilling' --category 'analytics' --appKey 'corva.testappuitsdrilling.ui' --appType 'ui' --runtime 'ui' -t --extensions corva","run:local-ui-ts-intervention":"node ./bin/create-corva-app.cjs ../test-app-ui-ts-intervention --appName 'TestAppUiTsIntervention' --segments 'intervention' --category 'analytics' --appKey 'corva.testappuitsintervention.ui' --appType 'ui' --runtime 'ui' -t --extensions corva","test":"NODE_OPTIONS='--experimental-vm-modules --no-warnings' jest"},"lint-staged":{"*.js":"npm run lint:fix"},"dependencies":{"archiver":"^5.3.0","chalk":"^4.1.0","commander":"^9.1.0","cross-spawn":"^7.0.3","debug":"^4.3.4","dotenv":"^16.0.0","figlet":"^1.5.0","form-data":"^4.0.0","fs-extra":"^9.0.1","glob":"^8.0.1","got":"^12.5.1","inquirer":"^8.2.3","is-glob":"^4.0.3","lodash":"^4.17.21","npm-api":"^1.0.0","semver":"^7.3.2","terminal-link":"^3.0.0"},"devDependencies":{"@babel/core":"^7.11.0","@babel/eslint-parser":"^7.19.1","@babel/plugin-proposal-class-properties":"^7.18.6","@babel/plugin-syntax-import-assertions":"^7.20.0","@babel/preset-react":"^7.18.6","@commitlint/cli":"^17.3.0","@commitlint/config-conventional":"^17.3.0","@corva/eslint-config-browser":"^0.1.7","@corva/eslint-config-node":"^5.1.1","@corva/node-sdk":"^8.0.1","@types/cross-spawn":"^6.0.2","@types/jest":"^29.5.4","@typescript-eslint/eslint-plugin":"^5.42.1","@typescript-eslint/parser":"^5.42.1","conventional-changelog-cli":"^2.1.0","eslint":"^8.2.0","eslint-config-google":"^0.14.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-jest":"^27.1.5","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-react":"^7.32.0","eslint-plugin-react-hooks":"^4.6.0","eslint-plugin-require-sort":"^1.3.0","husky":"^8.0.2","jest":"^29.6.4","prettier":"^2.0.0","prettier-plugin-packagejson":"^2.3.0","standard-version":"^9.0.0","typescript":"^4.8.4","zx":"^7.2.3"},"packageManager":"yarn@1.22.19+sha512.ff4579ab459bb25aa7c0ff75b62acebe576f6084b36aa842971cf250a5d8c6cd3bc9420b22ce63c7f93a0857bc6ef29291db39c3e7a23aab5adfd5a4dd6c5d71","engines":{"node":">=18"},"standard-version":{"skip":{"tag":true}}}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"root": true,
|
|
3
|
+
"parser": "@typescript-eslint/parser",
|
|
4
|
+
"parserOptions": {
|
|
5
|
+
"ecmaVersion": 2020,
|
|
6
|
+
"sourceType": "module",
|
|
7
|
+
"ecmaFeature": {
|
|
8
|
+
"jsx": true
|
|
9
|
+
}
|
|
10
|
+
},
|
|
11
|
+
"extends": ["@corva/eslint-config-browser"],
|
|
12
|
+
"overrides": [
|
|
13
|
+
{
|
|
14
|
+
"files": ["*.ts", "*.tsx"],
|
|
15
|
+
"extends": [
|
|
16
|
+
"@corva/eslint-config-browser",
|
|
17
|
+
"plugin:@typescript-eslint/recommended",
|
|
18
|
+
"plugin:@tanstack/eslint-plugin-query/recommended"
|
|
19
|
+
],
|
|
20
|
+
"rules": {
|
|
21
|
+
"@typescript-eslint/no-explicit-any": 2,
|
|
22
|
+
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".ts", ".tsx"] }],
|
|
23
|
+
/* Turned off until adopted by @corva/eslint-config-browser */
|
|
24
|
+
"react/prop-types": 0,
|
|
25
|
+
"react/default-props-match-prop-types": 0,
|
|
26
|
+
"react/no-unused-prop-types": 0,
|
|
27
|
+
"react/require-default-props": 0
|
|
28
|
+
/* Turned off until adopted by @corva/eslint-config-browser */
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
@@ -11,6 +11,8 @@ jobs:
|
|
|
11
11
|
- name: develop branch flow
|
|
12
12
|
id: shared-workflow
|
|
13
13
|
uses: corva-ai/gh-actions/shared-dc-workflows/develop@develop
|
|
14
|
+
env:
|
|
15
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
14
16
|
with:
|
|
15
17
|
qa-api-key: ${{ secrets.API_KEY_QA }}
|
|
16
18
|
prod-api-key: ${{ secrets.API_KEY }}
|