@appsemble/cli 0.20.9 → 0.20.12
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/__fixtures__/getBlockConfigFromTypeScript/comments/index.ts +40 -0
- package/__fixtures__/getBlockConfigFromTypeScript/comments/tsconfig.json +7 -0
- package/__fixtures__/getBlockConfigFromTypeScript/duplicateActions/index.ts +34 -0
- package/__fixtures__/getBlockConfigFromTypeScript/duplicateActions/tsconfig.json +7 -0
- package/__fixtures__/getBlockConfigFromTypeScript/duplicateEventEmitters/index.ts +34 -0
- package/__fixtures__/getBlockConfigFromTypeScript/duplicateEventEmitters/tsconfig.json +7 -0
- package/__fixtures__/getBlockConfigFromTypeScript/duplicateEventListeners/index.ts +34 -0
- package/__fixtures__/getBlockConfigFromTypeScript/duplicateEventListeners/tsconfig.json +7 -0
- package/__fixtures__/getBlockConfigFromTypeScript/duplicateParameters/index.ts +34 -0
- package/__fixtures__/getBlockConfigFromTypeScript/duplicateParameters/tsconfig.json +7 -0
- package/__fixtures__/getBlockConfigFromTypeScript/fontawesomeParameters/index.ts +11 -0
- package/__fixtures__/getBlockConfigFromTypeScript/fontawesomeParameters/tsconfig.json +7 -0
- package/__fixtures__/getBlockConfigFromTypeScript/tsError/index.ts +4 -0
- package/__fixtures__/getBlockConfigFromTypeScript/tsError/tsconfig.json +8 -0
- package/__fixtures__/getBlockConfigFromTypeScript/valid/index.ts +28 -0
- package/__fixtures__/getBlockConfigFromTypeScript/valid/tsconfig.json +7 -0
- package/__fixtures__/makePayload/no-icon/output/block.js +1 -0
- package/__fixtures__/makePayload/with-icon/icon.svg +2 -0
- package/__fixtures__/makePayload/with-icon/output/block.js +1 -0
- package/assets/appsemblerc.schema.json +150 -0
- package/changed/added/.gitkeep +0 -0
- package/changed/changed/.gitkeep +0 -0
- package/changed/deprecated/.gitkeep +0 -0
- package/changed/fixed/.gitkeep +0 -0
- package/changed/removed/.gitkeep +0 -0
- package/changed/security/.gitkeep +0 -0
- package/{dist/commands → commands}/app/create.d.ts +0 -0
- package/{dist/commands → commands}/app/create.js +0 -0
- package/commands/app/create.js.map +1 -0
- package/commands/app/create.ts +104 -0
- package/{dist/commands → commands}/app/extract-messages.d.ts +0 -0
- package/{dist/commands → commands}/app/extract-messages.js +0 -0
- package/commands/app/extract-messages.js.map +1 -0
- package/commands/app/extract-messages.ts +56 -0
- package/{dist/commands → commands}/app/index.d.ts +0 -0
- package/{dist/commands → commands}/app/index.js +0 -0
- package/commands/app/index.js.map +1 -0
- package/commands/app/index.ts +14 -0
- package/{dist/commands → commands}/app/update.d.ts +0 -0
- package/{dist/commands → commands}/app/update.js +0 -0
- package/commands/app/update.js.map +1 -0
- package/commands/app/update.ts +111 -0
- package/{dist/commands → commands}/asset/create.d.ts +0 -0
- package/{dist/commands → commands}/asset/create.js +0 -0
- package/commands/asset/create.js.map +1 -0
- package/commands/asset/create.ts +84 -0
- package/{dist/commands → commands}/asset/index.d.ts +0 -0
- package/{dist/commands → commands}/asset/index.js +0 -0
- package/commands/asset/index.js.map +1 -0
- package/commands/asset/index.ts +12 -0
- package/{dist/commands → commands}/block/build.d.ts +0 -0
- package/{dist/commands → commands}/block/build.js +0 -0
- package/commands/block/build.js.map +1 -0
- package/commands/block/build.ts +32 -0
- package/{dist/commands → commands}/block/extract-messages.d.ts +0 -0
- package/{dist/commands → commands}/block/extract-messages.js +0 -0
- package/commands/block/extract-messages.js.map +1 -0
- package/commands/block/extract-messages.ts +41 -0
- package/{dist/commands → commands}/block/index.d.ts +0 -0
- package/{dist/commands → commands}/block/index.js +0 -0
- package/commands/block/index.js.map +1 -0
- package/commands/block/index.ts +14 -0
- package/{dist/commands → commands}/block/publish.d.ts +0 -0
- package/{dist/commands → commands}/block/publish.js +0 -0
- package/commands/block/publish.js.map +1 -0
- package/commands/block/publish.ts +58 -0
- package/{dist/commands → commands}/cleanupResources.d.ts +0 -0
- package/{dist/commands → commands}/cleanupResources.js +0 -0
- package/commands/cleanupResources.js.map +1 -0
- package/commands/cleanupResources.ts +45 -0
- package/{dist/commands → commands}/config/get.d.ts +0 -0
- package/{dist/commands → commands}/config/get.js +0 -0
- package/commands/config/get.js.map +1 -0
- package/commands/config/get.ts +26 -0
- package/{dist/commands → commands}/config/index.d.ts +0 -0
- package/{dist/commands → commands}/config/index.js +0 -0
- package/commands/config/index.js.map +1 -0
- package/commands/config/index.ts +13 -0
- package/{dist/commands → commands}/config/set.d.ts +0 -0
- package/{dist/commands → commands}/config/set.js +0 -0
- package/commands/config/set.js.map +1 -0
- package/commands/config/set.ts +44 -0
- package/{dist/commands → commands}/login.d.ts +0 -0
- package/{dist/commands → commands}/login.js +0 -0
- package/commands/login.js.map +1 -0
- package/commands/login.ts +5 -0
- package/{dist/commands → commands}/logout.d.ts +0 -0
- package/{dist/commands → commands}/logout.js +0 -0
- package/commands/logout.js.map +1 -0
- package/commands/logout.ts +5 -0
- package/{dist/commands → commands}/migrate.d.ts +0 -0
- package/{dist/commands → commands}/migrate.js +5 -2
- package/commands/migrate.js.map +1 -0
- package/commands/migrate.ts +50 -0
- package/{dist/commands → commands}/organization/create.d.ts +0 -0
- package/{dist/commands → commands}/organization/create.js +0 -0
- package/commands/organization/create.js.map +1 -0
- package/commands/organization/create.ts +65 -0
- package/{dist/commands → commands}/organization/index.d.ts +0 -0
- package/{dist/commands → commands}/organization/index.js +0 -0
- package/commands/organization/index.js.map +1 -0
- package/commands/organization/index.ts +13 -0
- package/{dist/commands → commands}/organization/update.d.ts +0 -0
- package/{dist/commands → commands}/organization/update.js +0 -0
- package/commands/organization/update.js.map +1 -0
- package/commands/organization/update.ts +65 -0
- package/{dist/commands → commands}/resource/create.d.ts +0 -0
- package/{dist/commands → commands}/resource/create.js +0 -0
- package/commands/resource/create.js.map +1 -0
- package/commands/resource/create.ts +78 -0
- package/{dist/commands → commands}/resource/index.d.ts +0 -0
- package/{dist/commands → commands}/resource/index.js +0 -0
- package/commands/resource/index.js.map +1 -0
- package/commands/resource/index.ts +13 -0
- package/{dist/commands → commands}/resource/update.d.ts +0 -0
- package/{dist/commands → commands}/resource/update.js +0 -0
- package/commands/resource/update.js.map +1 -0
- package/commands/resource/update.ts +77 -0
- package/{dist/commands → commands}/runCronJobs.d.ts +0 -0
- package/{dist/commands → commands}/runCronJobs.js +0 -0
- package/commands/runCronJobs.js.map +1 -0
- package/commands/runCronJobs.ts +45 -0
- package/{dist/commands → commands}/start.d.ts +0 -0
- package/{dist/commands → commands}/start.js +4 -0
- package/commands/start.js.map +1 -0
- package/commands/start.ts +140 -0
- package/{dist/commands → commands}/team/create.d.ts +0 -0
- package/{dist/commands → commands}/team/create.js +0 -0
- package/commands/team/create.js.map +1 -0
- package/commands/team/create.ts +60 -0
- package/{dist/commands → commands}/team/delete.d.ts +0 -0
- package/{dist/commands → commands}/team/delete.js +0 -0
- package/commands/team/delete.js.map +1 -0
- package/commands/team/delete.ts +54 -0
- package/{dist/commands → commands}/team/index.d.ts +0 -0
- package/{dist/commands → commands}/team/index.js +0 -0
- package/commands/team/index.js.map +1 -0
- package/commands/team/index.ts +15 -0
- package/{dist/commands → commands}/team/member/delete.d.ts +0 -0
- package/{dist/commands → commands}/team/member/delete.js +0 -0
- package/commands/team/member/delete.js.map +1 -0
- package/commands/team/member/delete.ts +61 -0
- package/{dist/commands → commands}/team/member/index.d.ts +0 -0
- package/{dist/commands → commands}/team/member/index.js +0 -0
- package/commands/team/member/index.js.map +1 -0
- package/commands/team/member/index.ts +14 -0
- package/{dist/commands → commands}/team/member/invite.d.ts +0 -0
- package/{dist/commands → commands}/team/member/invite.js +0 -0
- package/commands/team/member/invite.js.map +1 -0
- package/commands/team/member/invite.ts +61 -0
- package/{dist/commands → commands}/team/member/update.d.ts +0 -0
- package/{dist/commands → commands}/team/member/update.js +0 -0
- package/commands/team/member/update.js.map +1 -0
- package/commands/team/member/update.ts +70 -0
- package/{dist/commands → commands}/team/update.d.ts +0 -0
- package/{dist/commands → commands}/team/update.js +0 -0
- package/commands/team/update.js.map +1 -0
- package/commands/team/update.ts +60 -0
- package/index.d.ts +2 -0
- package/{dist/index.js → index.js} +2 -6
- package/index.js.map +1 -0
- package/index.ts +74 -0
- package/jest.config.js +1 -0
- package/jest.setup.d.ts +1 -0
- package/jest.setup.js +6 -0
- package/jest.setup.js.map +1 -0
- package/jest.setup.ts +4 -0
- package/lib/__snapshots__/getBlockConfigFromTypeScript.test.ts.snap +3872 -0
- package/{dist/lib → lib}/app.d.ts +17 -17
- package/{dist/lib → lib}/app.js +29 -29
- package/lib/app.js.map +1 -0
- package/lib/app.ts +797 -0
- package/{dist/lib → lib}/asset.d.ts +0 -0
- package/{dist/lib → lib}/asset.js +0 -0
- package/lib/asset.js.map +1 -0
- package/lib/asset.ts +43 -0
- package/{dist/lib → lib}/authentication.d.ts +3 -3
- package/{dist/lib → lib}/authentication.js +47 -15
- package/lib/authentication.js.map +1 -0
- package/lib/authentication.ts +193 -0
- package/{dist/lib → lib}/block.d.ts +16 -16
- package/{dist/lib → lib}/block.js +35 -26
- package/lib/block.js.map +1 -0
- package/lib/block.test.d.ts +1 -0
- package/lib/block.test.js +106 -0
- package/lib/block.test.js.map +1 -0
- package/lib/block.test.ts +103 -0
- package/lib/block.ts +384 -0
- package/{dist/lib → lib}/coercers.d.ts +2 -2
- package/{dist/lib → lib}/coercers.js +2 -2
- package/lib/coercers.js.map +1 -0
- package/lib/coercers.test.d.ts +1 -0
- package/lib/coercers.test.js +28 -0
- package/lib/coercers.test.js.map +1 -0
- package/lib/coercers.test.ts +27 -0
- package/lib/coercers.ts +57 -0
- package/{dist/lib → lib}/getBlockConfigFromTypeScript.d.ts +1 -1
- package/{dist/lib → lib}/getBlockConfigFromTypeScript.js +38 -36
- package/lib/getBlockConfigFromTypeScript.js.map +1 -0
- package/lib/getBlockConfigFromTypeScript.test.d.ts +1 -0
- package/lib/getBlockConfigFromTypeScript.test.js +238 -0
- package/lib/getBlockConfigFromTypeScript.test.js.map +1 -0
- package/lib/getBlockConfigFromTypeScript.test.ts +281 -0
- package/lib/getBlockConfigFromTypeScript.ts +354 -0
- package/{dist/lib → lib}/initAxios.d.ts +1 -1
- package/{dist/lib → lib}/initAxios.js +3 -4
- package/lib/initAxios.js.map +1 -0
- package/lib/initAxios.ts +16 -0
- package/{dist/lib → lib}/loadWebpackConfig.d.ts +3 -3
- package/{dist/lib → lib}/loadWebpackConfig.js +3 -3
- package/lib/loadWebpackConfig.js.map +1 -0
- package/lib/loadWebpackConfig.ts +59 -0
- package/{dist/lib → lib}/organization.d.ts +1 -1
- package/{dist/lib → lib}/organization.js +0 -0
- package/lib/organization.js.map +1 -0
- package/lib/organization.ts +105 -0
- package/{dist/lib → lib}/output.d.ts +0 -0
- package/{dist/lib → lib}/output.js +0 -0
- package/lib/output.js.map +1 -0
- package/lib/output.ts +19 -0
- package/{dist/lib → lib}/processCss.d.ts +1 -1
- package/{dist/lib → lib}/processCss.js +3 -3
- package/lib/processCss.js.map +1 -0
- package/lib/processCss.ts +24 -0
- package/{dist/lib → lib}/resource.d.ts +0 -0
- package/{dist/lib → lib}/resource.js +1 -1
- package/lib/resource.js.map +1 -0
- package/lib/resource.ts +128 -0
- package/{dist/lib → lib}/serverImport.d.ts +1 -1
- package/{dist/lib → lib}/serverImport.js +2 -2
- package/lib/serverImport.js.map +1 -0
- package/lib/serverImport.ts +43 -0
- package/{dist/lib → lib}/team.d.ts +0 -0
- package/{dist/lib → lib}/team.js +0 -0
- package/lib/team.js.map +1 -0
- package/lib/team.ts +152 -0
- package/package.json +14 -12
- package/tsconfig.json +10 -0
- package/{dist/types.d.ts → types.d.ts} +0 -0
- package/{dist/types.js → types.js} +0 -0
- package/types.js.map +1 -0
- package/types.ts +110 -0
- package/dist/commands/app/create.js.map +0 -1
- package/dist/commands/app/extract-messages.js.map +0 -1
- package/dist/commands/app/index.js.map +0 -1
- package/dist/commands/app/update.js.map +0 -1
- package/dist/commands/asset/create.js.map +0 -1
- package/dist/commands/asset/index.js.map +0 -1
- package/dist/commands/block/build.js.map +0 -1
- package/dist/commands/block/extract-messages.js.map +0 -1
- package/dist/commands/block/index.js.map +0 -1
- package/dist/commands/block/publish.js.map +0 -1
- package/dist/commands/cleanupResources.js.map +0 -1
- package/dist/commands/config/get.js.map +0 -1
- package/dist/commands/config/index.js.map +0 -1
- package/dist/commands/config/set.js.map +0 -1
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/migrate.js.map +0 -1
- package/dist/commands/organization/create.js.map +0 -1
- package/dist/commands/organization/index.js.map +0 -1
- package/dist/commands/organization/update.js.map +0 -1
- package/dist/commands/resource/create.js.map +0 -1
- package/dist/commands/resource/index.js.map +0 -1
- package/dist/commands/resource/update.js.map +0 -1
- package/dist/commands/runCronJobs.js.map +0 -1
- package/dist/commands/start.js.map +0 -1
- package/dist/commands/team/create.js.map +0 -1
- package/dist/commands/team/delete.js.map +0 -1
- package/dist/commands/team/index.js.map +0 -1
- package/dist/commands/team/member/delete.js.map +0 -1
- package/dist/commands/team/member/index.js.map +0 -1
- package/dist/commands/team/member/invite.js.map +0 -1
- package/dist/commands/team/member/update.js.map +0 -1
- package/dist/commands/team/update.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js.map +0 -1
- package/dist/lib/app.js.map +0 -1
- package/dist/lib/asset.js.map +0 -1
- package/dist/lib/authentication.js.map +0 -1
- package/dist/lib/block.js.map +0 -1
- package/dist/lib/coercers.js.map +0 -1
- package/dist/lib/getBlockConfigFromTypeScript.js.map +0 -1
- package/dist/lib/initAxios.js.map +0 -1
- package/dist/lib/loadWebpackConfig.js.map +0 -1
- package/dist/lib/organization.js.map +0 -1
- package/dist/lib/output.js.map +0 -1
- package/dist/lib/processCss.js.map +0 -1
- package/dist/lib/readPackageJson.d.ts +0 -9
- package/dist/lib/readPackageJson.js +0 -16
- package/dist/lib/readPackageJson.js.map +0 -1
- package/dist/lib/resource.js.map +0 -1
- package/dist/lib/serverImport.js.map +0 -1
- package/dist/lib/team.js.map +0 -1
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { coerceRemote } from './coercers';
|
|
2
|
+
|
|
3
|
+
describe('coerceRemote', () => {
|
|
4
|
+
const tests: [string, string][] = [
|
|
5
|
+
['http://appsemble.app', 'http://appsemble.app/'],
|
|
6
|
+
['http://appsemble.app:80', 'http://appsemble.app/'],
|
|
7
|
+
['https://appsemble.app', 'https://appsemble.app/'],
|
|
8
|
+
['https://appsemble.app:443', 'https://appsemble.app/'],
|
|
9
|
+
['https://appsemble.app:1337', 'https://appsemble.app:1337/'],
|
|
10
|
+
['https://appsemble.app/pathname', 'https://appsemble.app/'],
|
|
11
|
+
['https://appsemble.app?query=param', 'https://appsemble.app/'],
|
|
12
|
+
['https://appsemble.app#hash', 'https://appsemble.app/'],
|
|
13
|
+
['appsemble.app', 'https://appsemble.app/'],
|
|
14
|
+
['https://localhost', 'https://localhost/'],
|
|
15
|
+
['https://127.0.0.1', 'https://127.0.0.1/'],
|
|
16
|
+
['foo.localhost', 'http://foo.localhost/'],
|
|
17
|
+
['localhost', 'http://localhost/'],
|
|
18
|
+
['127.0.0.1', 'http://127.0.0.1/'],
|
|
19
|
+
['localhost:1337', 'http://localhost:1337/'],
|
|
20
|
+
['127.0.0.1:1337', 'http://127.0.0.1:1337/'],
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
it.each(tests)('should convert %s to %s', (input, expected) => {
|
|
24
|
+
const output = coerceRemote(input);
|
|
25
|
+
expect(output).toBe(expected);
|
|
26
|
+
});
|
|
27
|
+
});
|
package/lib/coercers.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { createReadStream, ReadStream } from 'fs';
|
|
2
|
+
|
|
3
|
+
import normalizePath from 'normalize-path';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Convert a remote to a valid URL.
|
|
7
|
+
*
|
|
8
|
+
* Ip addresses and localhost use the http://` protocol by default. Others use the `https://`
|
|
9
|
+
* protocol by default. The path, search parameters, and hash are stripped.
|
|
10
|
+
*
|
|
11
|
+
* @param value The raw remote as specified by the CLI user.
|
|
12
|
+
* @returns The normalized URL.
|
|
13
|
+
*/
|
|
14
|
+
export function coerceRemote(value: string): string {
|
|
15
|
+
let url = value;
|
|
16
|
+
if (!/^https?:\/\//.test(url)) {
|
|
17
|
+
if (/^(\d+\.?){4}(\/|$|:)/.test(url)) {
|
|
18
|
+
// It’s an IP address.
|
|
19
|
+
url = `http://${url}`;
|
|
20
|
+
} else if (/(\.|^)localhost(\/|$|:)/.test(url)) {
|
|
21
|
+
// It’s a localhost address.
|
|
22
|
+
url = `http://${url}`;
|
|
23
|
+
} else {
|
|
24
|
+
// It's a live remote.
|
|
25
|
+
url = `https://${url}`;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const remote = new URL(url);
|
|
29
|
+
remote.hash = '';
|
|
30
|
+
remote.search = '';
|
|
31
|
+
remote.pathname = '';
|
|
32
|
+
return String(remote);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get a stream based on the filepath.
|
|
37
|
+
*
|
|
38
|
+
* @param value The filepath of the file to read.
|
|
39
|
+
* @returns A stream of the file.
|
|
40
|
+
*/
|
|
41
|
+
export function coerceFile(value: string): NodeJS.ReadStream | ReadStream {
|
|
42
|
+
if (value == null) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Prevent trying to read the file multiple times.
|
|
47
|
+
// https://github.com/yargs/yargs/issues/1802
|
|
48
|
+
if (typeof value === 'object') {
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (value === '-') {
|
|
53
|
+
return process.stdin;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return createReadStream(normalizePath(value));
|
|
57
|
+
}
|
|
@@ -4,7 +4,7 @@ import { BlockConfig, BlockManifest } from '@appsemble/types';
|
|
|
4
4
|
*
|
|
5
5
|
* Uses the .appsemblerc file and the type definitions of the block.
|
|
6
6
|
*
|
|
7
|
-
* @param blockConfig
|
|
7
|
+
* @param blockConfig The block configuration
|
|
8
8
|
* @returns The block configuration appended from the TypeScript project.
|
|
9
9
|
*/
|
|
10
10
|
export declare function getBlockConfigFromTypeScript(blockConfig: BlockConfig): Pick<BlockManifest, 'actions' | 'events' | 'messages' | 'parameters'>;
|
|
@@ -9,12 +9,12 @@ const node_utils_1 = require("@appsemble/node-utils");
|
|
|
9
9
|
const comment_parser_1 = require("comment-parser");
|
|
10
10
|
const normalize_path_1 = __importDefault(require("normalize-path"));
|
|
11
11
|
const ts_json_schema_generator_1 = require("ts-json-schema-generator");
|
|
12
|
-
const typescript_1 = require("typescript");
|
|
12
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
13
13
|
/**
|
|
14
14
|
* Get the tsdoc comment for a TypeScript node.
|
|
15
15
|
*
|
|
16
|
-
* @param checker
|
|
17
|
-
* @param node
|
|
16
|
+
* @param checker The type checker instance to use.
|
|
17
|
+
* @param node The node for which to get the tsdoc.
|
|
18
18
|
* @returns The tsdoc comment as a string, if present.
|
|
19
19
|
*/
|
|
20
20
|
function getNodeComments(checker, node) {
|
|
@@ -34,9 +34,9 @@ function getNodeComments(checker, node) {
|
|
|
34
34
|
*
|
|
35
35
|
* This asserts only index signature members and regular alphanumerical properties are used.
|
|
36
36
|
*
|
|
37
|
-
* @param iface
|
|
38
|
-
* @param checker
|
|
39
|
-
* @param convert
|
|
37
|
+
* @param iface The TypeScript interface to check.
|
|
38
|
+
* @param checker The TypeScript type checker.
|
|
39
|
+
* @param convert A function for converting extracted data to a value. It will be called with the
|
|
40
40
|
* name and JSDoc description. The name is `undefined` for index signatures. The function should
|
|
41
41
|
* return a tuple of key and value.
|
|
42
42
|
* @returns A record created from the returned key/value pairs.
|
|
@@ -49,9 +49,9 @@ function processInterface(iface, checker, convert) {
|
|
|
49
49
|
return Object.fromEntries(iface.members.map((member) => {
|
|
50
50
|
var _a;
|
|
51
51
|
const description = getNodeComments(checker, member);
|
|
52
|
-
if (
|
|
52
|
+
if (typescript_1.default.isIndexSignatureDeclaration(member)) {
|
|
53
53
|
// Comments aren’t properly extracted for index signatures.
|
|
54
|
-
const commentRanges =
|
|
54
|
+
const commentRanges = typescript_1.default.getLeadingCommentRanges(source, member.pos);
|
|
55
55
|
if (commentRanges) {
|
|
56
56
|
const comments = (_a = commentRanges === null || commentRanges === void 0 ? void 0 : commentRanges.map((r) => source.slice(r.pos, r.end))) !== null && _a !== void 0 ? _a : [];
|
|
57
57
|
const [block] = (0, comment_parser_1.parse)(comments[0]);
|
|
@@ -63,11 +63,11 @@ function processInterface(iface, checker, convert) {
|
|
|
63
63
|
}
|
|
64
64
|
return convert(undefined, description);
|
|
65
65
|
}
|
|
66
|
-
if (!
|
|
66
|
+
if (!typescript_1.default.isPropertySignature(member)) {
|
|
67
67
|
throw new node_utils_1.AppsembleError(`Only property and index signatures are allowed as ${iface.name} keys. Found: ${member.getFullText()}`);
|
|
68
68
|
}
|
|
69
69
|
const { name } = member;
|
|
70
|
-
if (!
|
|
70
|
+
if (!typescript_1.default.isIdentifier(name)) {
|
|
71
71
|
throw new node_utils_1.AppsembleError(`Only property and index signatures are allowed as ${iface.name} keys. Found: ${name.getFullText()}`);
|
|
72
72
|
}
|
|
73
73
|
const { text } = name;
|
|
@@ -80,8 +80,8 @@ function processInterface(iface, checker, convert) {
|
|
|
80
80
|
/**
|
|
81
81
|
* Get an actions object based on a TypeScript interface node.
|
|
82
82
|
*
|
|
83
|
-
* @param iface
|
|
84
|
-
* @param checker
|
|
83
|
+
* @param iface The node to base the actions on.
|
|
84
|
+
* @param checker The TypeScript type checker.
|
|
85
85
|
* @returns The action manifest to upload.
|
|
86
86
|
*/
|
|
87
87
|
function processActions(iface, checker) {
|
|
@@ -90,9 +90,9 @@ function processActions(iface, checker) {
|
|
|
90
90
|
/**
|
|
91
91
|
* Get an events object based on TypeScript interface nodes.
|
|
92
92
|
*
|
|
93
|
-
* @param eventListenerInterface
|
|
94
|
-
* @param eventEmitterInterface
|
|
95
|
-
* @param checker
|
|
93
|
+
* @param eventListenerInterface The node to base the event listeners on.
|
|
94
|
+
* @param eventEmitterInterface The node to base the event emitters on.
|
|
95
|
+
* @param checker The TypeScript type checker.
|
|
96
96
|
* @returns The events manifest to upload.
|
|
97
97
|
*/
|
|
98
98
|
function processEvents(eventListenerInterface, eventEmitterInterface, checker) {
|
|
@@ -109,8 +109,8 @@ function processEvents(eventListenerInterface, eventEmitterInterface, checker) {
|
|
|
109
109
|
/**
|
|
110
110
|
* Get the JSON schema for parameters based on a TypeScript program.
|
|
111
111
|
*
|
|
112
|
-
* @param program
|
|
113
|
-
* @param iface
|
|
112
|
+
* @param program The TypeScript program from which to extract parameters.
|
|
113
|
+
* @param iface The interface node from which to extract parameters.
|
|
114
114
|
* @returns The JSON schema for the block parameters.
|
|
115
115
|
*/
|
|
116
116
|
function processParameters(program, iface) {
|
|
@@ -142,8 +142,8 @@ function processParameters(program, iface) {
|
|
|
142
142
|
/**
|
|
143
143
|
* Get a messages object based on a TypeScript interface node.
|
|
144
144
|
*
|
|
145
|
-
* @param iface
|
|
146
|
-
* @param checker
|
|
145
|
+
* @param iface The node to base the messages on.
|
|
146
|
+
* @param checker The TypeScript type checker.
|
|
147
147
|
* @returns The action manifest to upload.
|
|
148
148
|
*/
|
|
149
149
|
function processMessages(iface, checker) {
|
|
@@ -152,28 +152,30 @@ function processMessages(iface, checker) {
|
|
|
152
152
|
/**
|
|
153
153
|
* Get the TypeScript program for a given path.
|
|
154
154
|
*
|
|
155
|
-
* @param blockPath
|
|
155
|
+
* @param blockPath The path for which to get the TypeScript program.
|
|
156
156
|
* @returns The TypeScript program.
|
|
157
157
|
*/
|
|
158
158
|
function getProgram(blockPath) {
|
|
159
159
|
const diagnosticHost = {
|
|
160
|
-
getNewLine: () => typescript_1.sys.newLine,
|
|
161
|
-
getCurrentDirectory: typescript_1.sys.getCurrentDirectory,
|
|
160
|
+
getNewLine: () => typescript_1.default.sys.newLine,
|
|
161
|
+
getCurrentDirectory: typescript_1.default.sys.getCurrentDirectory,
|
|
162
162
|
getCanonicalFileName: (x) => x,
|
|
163
163
|
};
|
|
164
|
-
const tsConfigPath =
|
|
165
|
-
const { config, error } =
|
|
164
|
+
const tsConfigPath = typescript_1.default.findConfigFile(blockPath, typescript_1.default.sys.fileExists);
|
|
165
|
+
const { config, error } = typescript_1.default.readConfigFile(tsConfigPath, typescript_1.default.sys.readFile);
|
|
166
166
|
if (error) {
|
|
167
|
-
throw new node_utils_1.AppsembleError(
|
|
167
|
+
throw new node_utils_1.AppsembleError(typescript_1.default.formatDiagnostic(error, diagnosticHost));
|
|
168
168
|
}
|
|
169
169
|
if (!config.files || !config.include) {
|
|
170
|
-
config.files = typescript_1.sys
|
|
170
|
+
config.files = typescript_1.default.sys
|
|
171
|
+
.readDirectory(blockPath, ['.ts', '.tsx'])
|
|
172
|
+
.map((f) => (0, path_1.relative)(blockPath, f));
|
|
171
173
|
}
|
|
172
|
-
const { errors, fileNames, options } =
|
|
174
|
+
const { errors, fileNames, options } = typescript_1.default.parseJsonConfigFileContent(config, typescript_1.default.sys, blockPath, undefined, tsConfigPath);
|
|
173
175
|
// Filter: 'rootDir' is expected to contain all source files.
|
|
174
176
|
const diagnostics = errors.filter(({ code }) => code !== 6059);
|
|
175
177
|
if (diagnostics.length) {
|
|
176
|
-
throw new node_utils_1.AppsembleError(
|
|
178
|
+
throw new node_utils_1.AppsembleError(typescript_1.default.formatDiagnosticsWithColorAndContext(diagnostics, diagnosticHost));
|
|
177
179
|
}
|
|
178
180
|
options.noEmit = true;
|
|
179
181
|
delete options.out;
|
|
@@ -182,10 +184,10 @@ function getProgram(blockPath) {
|
|
|
182
184
|
delete options.declaration;
|
|
183
185
|
delete options.declarationDir;
|
|
184
186
|
delete options.declarationMap;
|
|
185
|
-
const program =
|
|
186
|
-
const preEmitDiagnostics =
|
|
187
|
+
const program = typescript_1.default.createProgram(fileNames, options);
|
|
188
|
+
const preEmitDiagnostics = typescript_1.default.getPreEmitDiagnostics(program);
|
|
187
189
|
if (preEmitDiagnostics.length) {
|
|
188
|
-
throw new node_utils_1.AppsembleError(
|
|
190
|
+
throw new node_utils_1.AppsembleError(typescript_1.default.formatDiagnosticsWithColorAndContext(preEmitDiagnostics, diagnosticHost));
|
|
189
191
|
}
|
|
190
192
|
return program;
|
|
191
193
|
}
|
|
@@ -194,7 +196,7 @@ function getProgram(blockPath) {
|
|
|
194
196
|
*
|
|
195
197
|
* Uses the .appsemblerc file and the type definitions of the block.
|
|
196
198
|
*
|
|
197
|
-
* @param blockConfig
|
|
199
|
+
* @param blockConfig The block configuration
|
|
198
200
|
* @returns The block configuration appended from the TypeScript project.
|
|
199
201
|
*/
|
|
200
202
|
function getBlockConfigFromTypeScript(blockConfig) {
|
|
@@ -218,18 +220,18 @@ function getBlockConfigFromTypeScript(blockConfig) {
|
|
|
218
220
|
}
|
|
219
221
|
node_utils_1.logger.verbose(`Searching metadata in: ${fileName}`);
|
|
220
222
|
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
|
221
|
-
|
|
223
|
+
typescript_1.default.forEachChild(sourceFile, (mod) => {
|
|
222
224
|
// This node doesn’t override SDK types
|
|
223
|
-
if (!
|
|
225
|
+
if (!typescript_1.default.isModuleDeclaration(mod)) {
|
|
224
226
|
return;
|
|
225
227
|
}
|
|
226
228
|
// This module defines other types
|
|
227
229
|
if (mod.name.text !== '@appsemble/sdk') {
|
|
228
230
|
return;
|
|
229
231
|
}
|
|
230
|
-
|
|
232
|
+
typescript_1.default.forEachChild(mod.body, (iface) => {
|
|
231
233
|
// Appsemble only uses module interface augmentation.
|
|
232
|
-
if (!
|
|
234
|
+
if (!typescript_1.default.isInterfaceDeclaration(iface)) {
|
|
233
235
|
return;
|
|
234
236
|
}
|
|
235
237
|
const { line } = sourceFile.getLineAndCharacterOfPosition(iface.getStart(sourceFile));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBlockConfigFromTypeScript.js","sourceRoot":"","sources":["getBlockConfigFromTypeScript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = require("fs");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
const node_utils_1 = require("@appsemble/node-utils");
|
|
9
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
10
|
+
const getBlockConfigFromTypeScript_1 = require("./getBlockConfigFromTypeScript");
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
jest.spyOn(process, 'cwd').mockReturnValue((0, node_utils_1.resolveFixture)('.'));
|
|
13
|
+
});
|
|
14
|
+
describe('getBlockConfigFromTypeScript', () => {
|
|
15
|
+
it('should extract configuration from a TypeScript project', () => {
|
|
16
|
+
const result = (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
17
|
+
name: '',
|
|
18
|
+
layout: 'float',
|
|
19
|
+
version: '1.33.7',
|
|
20
|
+
webpack: '',
|
|
21
|
+
output: '',
|
|
22
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/valid'),
|
|
23
|
+
});
|
|
24
|
+
expect(result).toStrictEqual({
|
|
25
|
+
actions: { testAction: { description: undefined } },
|
|
26
|
+
events: {
|
|
27
|
+
emit: { testEmit: { description: undefined } },
|
|
28
|
+
listen: { testListener: { description: undefined } },
|
|
29
|
+
},
|
|
30
|
+
messages: undefined,
|
|
31
|
+
parameters: {
|
|
32
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
33
|
+
additionalProperties: false,
|
|
34
|
+
properties: {
|
|
35
|
+
param1: { type: 'string' },
|
|
36
|
+
param2: { type: 'number' },
|
|
37
|
+
param3: { type: 'boolean' },
|
|
38
|
+
param4: { type: 'string' },
|
|
39
|
+
param5: {
|
|
40
|
+
additionalProperties: false,
|
|
41
|
+
properties: {
|
|
42
|
+
nested1: { type: 'string' },
|
|
43
|
+
nested2: { type: 'number' },
|
|
44
|
+
nested3: { type: 'boolean' },
|
|
45
|
+
},
|
|
46
|
+
required: ['nested1', 'nested2', 'nested3'],
|
|
47
|
+
type: 'object',
|
|
48
|
+
},
|
|
49
|
+
param6: { items: { type: 'string' }, type: 'array' },
|
|
50
|
+
},
|
|
51
|
+
required: ['param1', 'param2', 'param3', 'param5', 'param6'],
|
|
52
|
+
type: 'object',
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
it('should not use TypeScript if all metadata is present in the original config', () => {
|
|
57
|
+
jest.spyOn(typescript_1.default, 'createProgram');
|
|
58
|
+
const input = {
|
|
59
|
+
actions: {},
|
|
60
|
+
events: { emit: { foo: {} }, listen: { bar: {} } },
|
|
61
|
+
layout: 'float',
|
|
62
|
+
parameters: { type: 'object' },
|
|
63
|
+
version: '1.33.7',
|
|
64
|
+
webpack: '',
|
|
65
|
+
output: '',
|
|
66
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/valid'),
|
|
67
|
+
name: '',
|
|
68
|
+
};
|
|
69
|
+
const result = (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)(input);
|
|
70
|
+
expect(result).toBe(input);
|
|
71
|
+
expect(typescript_1.default.createProgram).not.toHaveBeenCalled();
|
|
72
|
+
});
|
|
73
|
+
it('should prefer actions overrides over TypeScript actions', () => {
|
|
74
|
+
const result = (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
75
|
+
actions: {},
|
|
76
|
+
version: '1.33.7',
|
|
77
|
+
webpack: '',
|
|
78
|
+
output: '',
|
|
79
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/valid'),
|
|
80
|
+
name: '',
|
|
81
|
+
});
|
|
82
|
+
expect(result.actions).toStrictEqual({});
|
|
83
|
+
});
|
|
84
|
+
it('should prefer events overrides over TypeScript events', () => {
|
|
85
|
+
const result = (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
86
|
+
events: { emit: { onSuccess: {} } },
|
|
87
|
+
version: '1.33.7',
|
|
88
|
+
webpack: '',
|
|
89
|
+
output: '',
|
|
90
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/valid'),
|
|
91
|
+
name: '',
|
|
92
|
+
});
|
|
93
|
+
expect(result.events).toStrictEqual({ emit: { onSuccess: {} } });
|
|
94
|
+
});
|
|
95
|
+
it('should prefer parameters overrides over TypeScript parameters', () => {
|
|
96
|
+
const result = (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
97
|
+
parameters: { type: 'object' },
|
|
98
|
+
version: '1.33.7',
|
|
99
|
+
webpack: '',
|
|
100
|
+
output: '',
|
|
101
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/valid'),
|
|
102
|
+
name: '',
|
|
103
|
+
});
|
|
104
|
+
expect(result.parameters).toStrictEqual({ type: 'object' });
|
|
105
|
+
});
|
|
106
|
+
it('should throw if duplicate Actions are found', () => {
|
|
107
|
+
expect(() => (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
108
|
+
webpack: '',
|
|
109
|
+
output: '',
|
|
110
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/duplicateActions'),
|
|
111
|
+
name: '',
|
|
112
|
+
version: '1.33.7',
|
|
113
|
+
})).toThrow(new node_utils_1.AppsembleError("Found duplicate interface 'Actions' in 'getBlockConfigFromTypeScript/duplicateActions/index.ts:31'"));
|
|
114
|
+
});
|
|
115
|
+
it('should throw if duplicate EventEmitters are found', () => {
|
|
116
|
+
expect(() => (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
117
|
+
webpack: '',
|
|
118
|
+
output: '',
|
|
119
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/duplicateEventEmitters'),
|
|
120
|
+
name: '',
|
|
121
|
+
version: '1.33.7',
|
|
122
|
+
})).toThrow(new node_utils_1.AppsembleError("Found duplicate interface 'EventEmitters' in 'getBlockConfigFromTypeScript/duplicateEventEmitters/index.ts:31'"));
|
|
123
|
+
});
|
|
124
|
+
it('should throw if duplicate EventListeners are found', () => {
|
|
125
|
+
expect(() => (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
126
|
+
webpack: '',
|
|
127
|
+
output: '',
|
|
128
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/duplicateEventListeners'),
|
|
129
|
+
name: '',
|
|
130
|
+
version: '1.33.7',
|
|
131
|
+
})).toThrow(new node_utils_1.AppsembleError("Found duplicate interface 'EventListeners' in 'getBlockConfigFromTypeScript/duplicateEventListeners/index.ts:31'"));
|
|
132
|
+
});
|
|
133
|
+
it('should throw if duplicate Parameters are found', () => {
|
|
134
|
+
expect(() => (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
135
|
+
webpack: '',
|
|
136
|
+
output: '',
|
|
137
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/duplicateParameters'),
|
|
138
|
+
name: '',
|
|
139
|
+
version: '1.33.7',
|
|
140
|
+
})).toThrow(new node_utils_1.AppsembleError("Found duplicate interface 'Parameters' in 'getBlockConfigFromTypeScript/duplicateParameters/index.ts:31'"));
|
|
141
|
+
});
|
|
142
|
+
it('should handle fontawesome icons', () => {
|
|
143
|
+
const result = (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
144
|
+
webpack: '',
|
|
145
|
+
output: '',
|
|
146
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/fontawesomeParameters'),
|
|
147
|
+
name: '',
|
|
148
|
+
version: '1.33.7',
|
|
149
|
+
});
|
|
150
|
+
expect(result).toStrictEqual({
|
|
151
|
+
actions: undefined,
|
|
152
|
+
events: undefined,
|
|
153
|
+
messages: undefined,
|
|
154
|
+
parameters: {
|
|
155
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
156
|
+
additionalProperties: false,
|
|
157
|
+
properties: {
|
|
158
|
+
icon: { description: 'This is an icon.', format: 'fontawesome', type: 'string' },
|
|
159
|
+
},
|
|
160
|
+
type: 'object',
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
it('should handle TypeScript pre emit diagnostics', () => {
|
|
165
|
+
function fn() {
|
|
166
|
+
(0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
167
|
+
name: '',
|
|
168
|
+
layout: 'float',
|
|
169
|
+
version: '1.33.7',
|
|
170
|
+
webpack: '',
|
|
171
|
+
output: '',
|
|
172
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/tsError'),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
expect(fn).toThrow(node_utils_1.AppsembleError);
|
|
176
|
+
expect(fn).toThrow(/'unused' is declared but its value is never read/);
|
|
177
|
+
});
|
|
178
|
+
it('should extract comments', () => {
|
|
179
|
+
const result = (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
180
|
+
name: '',
|
|
181
|
+
layout: 'float',
|
|
182
|
+
version: '1.33.7',
|
|
183
|
+
webpack: '',
|
|
184
|
+
output: '',
|
|
185
|
+
dir: (0, node_utils_1.resolveFixture)('getBlockConfigFromTypeScript/comments'),
|
|
186
|
+
});
|
|
187
|
+
expect(result).toStrictEqual({
|
|
188
|
+
actions: {
|
|
189
|
+
comment: {
|
|
190
|
+
description: 'Valid action comment',
|
|
191
|
+
},
|
|
192
|
+
duplicate: {
|
|
193
|
+
description: 'Expected comment',
|
|
194
|
+
},
|
|
195
|
+
line: {
|
|
196
|
+
description: undefined,
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
events: {
|
|
200
|
+
emit: {
|
|
201
|
+
testEmit: {
|
|
202
|
+
description: 'Test event emitter.',
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
listen: {
|
|
206
|
+
testListener: {
|
|
207
|
+
description: 'Test event listener.',
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
messages: undefined,
|
|
212
|
+
parameters: {
|
|
213
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
214
|
+
additionalProperties: false,
|
|
215
|
+
properties: {
|
|
216
|
+
param: {},
|
|
217
|
+
},
|
|
218
|
+
required: ['param'],
|
|
219
|
+
type: 'object',
|
|
220
|
+
},
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
describe('official blocks', () => {
|
|
224
|
+
const blocksDir = (0, path_1.resolve)(__dirname, '..', '..', '..', 'blocks');
|
|
225
|
+
it.each((0, fs_1.readdirSync)(blocksDir))('%s', (name) => {
|
|
226
|
+
const dir = (0, path_1.join)(blocksDir, name);
|
|
227
|
+
const result = (0, getBlockConfigFromTypeScript_1.getBlockConfigFromTypeScript)({
|
|
228
|
+
name,
|
|
229
|
+
version: '',
|
|
230
|
+
output: '',
|
|
231
|
+
webpack: undefined,
|
|
232
|
+
dir,
|
|
233
|
+
});
|
|
234
|
+
expect(result).toMatchSnapshot();
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
//# sourceMappingURL=getBlockConfigFromTypeScript.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBlockConfigFromTypeScript.test.js","sourceRoot":"","sources":["getBlockConfigFromTypeScript.test.ts"],"names":[],"mappings":"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"}
|