@aws-amplify/amplify-util-uibuilder 1.5.0-studio-forms.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -2
- package/amplify-plugin.json +3 -10
- package/lib/clients/amplify-studio-client.d.ts +2 -13
- package/lib/clients/amplify-studio-client.d.ts.map +1 -1
- package/lib/clients/amplify-studio-client.js +4 -72
- package/lib/clients/amplify-studio-client.js.map +1 -1
- package/lib/commands/generateComponents.d.ts.map +1 -1
- package/lib/commands/generateComponents.js +15 -36
- package/lib/commands/generateComponents.js.map +1 -1
- package/lib/commands/help.d.ts +1 -1
- package/lib/commands/help.d.ts.map +1 -1
- package/lib/commands/help.js +2 -2
- package/lib/commands/help.js.map +1 -1
- package/lib/commands/utils/codegenResources.d.ts +2 -12
- package/lib/commands/utils/codegenResources.d.ts.map +1 -1
- package/lib/commands/utils/codegenResources.js +3 -70
- package/lib/commands/utils/codegenResources.js.map +1 -1
- package/lib/commands/utils/getUiBuilderComponentsPath.d.ts.map +1 -1
- package/lib/commands/utils/getUiBuilderComponentsPath.js.map +1 -1
- package/lib/commands/utils/syncAmplifyUiBuilderComponents.d.ts +20 -12
- package/lib/commands/utils/syncAmplifyUiBuilderComponents.d.ts.map +1 -1
- package/lib/commands/utils/syncAmplifyUiBuilderComponents.js +3 -36
- package/lib/commands/utils/syncAmplifyUiBuilderComponents.js.map +1 -1
- package/lib/commands/version.d.ts +1 -1
- package/lib/commands/version.d.ts.map +1 -1
- package/lib/commands/version.js +2 -2
- package/lib/commands/version.js.map +1 -1
- package/lib/event-handlers/handle-PostEnvAdd.d.ts +1 -1
- package/lib/event-handlers/handle-PostEnvAdd.d.ts.map +1 -1
- package/lib/event-handlers/handle-PostEnvAdd.js +6 -4
- package/lib/event-handlers/handle-PostEnvAdd.js.map +1 -1
- package/lib/event-handlers/handle-PostPull.d.ts +1 -1
- package/lib/event-handlers/handle-PostPull.d.ts.map +1 -1
- package/lib/event-handlers/handle-PostPull.js +3 -4
- package/lib/event-handlers/handle-PostPull.js.map +1 -1
- package/package.json +7 -8
- package/src/__tests__/cloneComponentsFromEnv.test.ts +0 -11
- package/src/__tests__/createUiBuilderComponent.test.ts +1 -19
- package/src/__tests__/generateComponents.test.ts +1 -35
- package/src/__tests__/getAmplifyDataSchema.test.ts +3 -43
- package/src/__tests__/handleEvents.test.ts +21 -0
- package/src/__tests__/syncAmplifyUiComponents.test.ts +8 -111
- package/src/clients/amplify-studio-client.ts +63 -146
- package/src/commands/generateComponents.ts +16 -46
- package/src/commands/help.ts +2 -5
- package/src/commands/utils/codegenResources.ts +4 -108
- package/src/commands/utils/getUiBuilderComponentsPath.ts +2 -7
- package/src/commands/utils/syncAmplifyUiBuilderComponents.ts +29 -74
- package/src/commands/version.ts +2 -5
- package/src/event-handlers/handle-PostEnvAdd.ts +6 -8
- package/src/event-handlers/handle-PostPull.ts +3 -7
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/commands/utils/featureFlags.d.ts +0 -3
- package/lib/commands/utils/featureFlags.d.ts.map +0 -1
- package/lib/commands/utils/featureFlags.js +0 -34
- package/lib/commands/utils/featureFlags.js.map +0 -1
- package/lib/event-handlers/handle-PostPush.d.ts +0 -3
- package/lib/event-handlers/handle-PostPush.d.ts.map +0 -1
- package/lib/event-handlers/handle-PostPush.js +0 -15
- package/lib/event-handlers/handle-PostPush.js.map +0 -1
- package/src/__tests__/utils.ts +0 -70
- package/src/commands/utils/featureFlags.ts +0 -61
- package/src/event-handlers/handle-PostPush.ts +0 -15
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.generateUiBuilderThemes = exports.generateUiBuilderComponents = void 0;
|
|
4
4
|
const amplify_prompts_1 = require("amplify-prompts");
|
|
5
|
-
const codegen_ui_1 = require("@aws-amplify/codegen-ui");
|
|
6
5
|
const codegenResources_1 = require("./codegenResources");
|
|
7
6
|
const getUiBuilderComponentsPath_1 = require("./getUiBuilderComponentsPath");
|
|
8
7
|
const generateUiBuilderComponents = (context, componentSchemas, dataSchema) => {
|
|
9
8
|
const componentResults = componentSchemas.map(schema => {
|
|
10
9
|
try {
|
|
11
10
|
const component = (0, codegenResources_1.createUiBuilderComponent)(context, schema, dataSchema);
|
|
12
|
-
return { resultType: 'SUCCESS',
|
|
11
|
+
return { resultType: 'SUCCESS', component };
|
|
13
12
|
}
|
|
14
13
|
catch (e) {
|
|
15
14
|
amplify_prompts_1.printer.debug(`Failure caught processing ${schema.name}`);
|
|
@@ -25,7 +24,7 @@ const generateUiBuilderThemes = (context, themeSchemas) => {
|
|
|
25
24
|
const themeResults = themeSchemas.map(schema => {
|
|
26
25
|
try {
|
|
27
26
|
const theme = (0, codegenResources_1.createUiBuilderTheme)(context, schema);
|
|
28
|
-
return { resultType: 'SUCCESS',
|
|
27
|
+
return { resultType: 'SUCCESS', theme };
|
|
29
28
|
}
|
|
30
29
|
catch (e) {
|
|
31
30
|
amplify_prompts_1.printer.debug(`Failure caught processing ${schema.name}`);
|
|
@@ -37,36 +36,4 @@ const generateUiBuilderThemes = (context, themeSchemas) => {
|
|
|
37
36
|
return themeResults;
|
|
38
37
|
};
|
|
39
38
|
exports.generateUiBuilderThemes = generateUiBuilderThemes;
|
|
40
|
-
const generateUiBuilderForms = (context, formSchemas, dataSchema, autoGenerateForms) => {
|
|
41
|
-
const modelMap = {};
|
|
42
|
-
if ((dataSchema === null || dataSchema === void 0 ? void 0 : dataSchema.dataSourceType) === 'DataStore' && autoGenerateForms) {
|
|
43
|
-
Object.entries(dataSchema.models).forEach(([name, model]) => {
|
|
44
|
-
if ((0, codegen_ui_1.checkIsSupportedAsForm)(model) && !model.isJoinTable) {
|
|
45
|
-
modelMap[name] = new Set(['create', 'update']);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
const codegenForm = (schema) => {
|
|
50
|
-
try {
|
|
51
|
-
const form = (0, codegenResources_1.createUiBuilderForm)(context, schema, dataSchema);
|
|
52
|
-
return { resultType: 'SUCCESS', schema: form };
|
|
53
|
-
}
|
|
54
|
-
catch (e) {
|
|
55
|
-
amplify_prompts_1.printer.debug(`Failure caught processing ${schema.name}`);
|
|
56
|
-
amplify_prompts_1.printer.debug(e);
|
|
57
|
-
return { resultType: 'FAILURE', schemaName: schema.name, error: e };
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
const formResults = formSchemas.map((schema) => {
|
|
61
|
-
var _a, _b;
|
|
62
|
-
if ((schema === null || schema === void 0 ? void 0 : schema.dataType) && ((_a = schema.dataType) === null || _a === void 0 ? void 0 : _a.dataSourceType) === 'DataStore') {
|
|
63
|
-
(_b = modelMap[schema.dataType.dataTypeName]) === null || _b === void 0 ? void 0 : _b.delete(schema.formActionType);
|
|
64
|
-
}
|
|
65
|
-
return codegenForm(schema);
|
|
66
|
-
});
|
|
67
|
-
formResults.push(...(0, codegenResources_1.generateBaseForms)(modelMap).map(codegenForm));
|
|
68
|
-
amplify_prompts_1.printer.debug(`Generated ${formResults.filter(result => result.resultType === 'SUCCESS').length} forms in ${(0, getUiBuilderComponentsPath_1.getUiBuilderComponentsPath)(context)}`);
|
|
69
|
-
return formResults;
|
|
70
|
-
};
|
|
71
|
-
exports.generateUiBuilderForms = generateUiBuilderForms;
|
|
72
39
|
//# sourceMappingURL=syncAmplifyUiBuilderComponents.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncAmplifyUiBuilderComponents.js","sourceRoot":"","sources":["../../../src/commands/utils/syncAmplifyUiBuilderComponents.ts"],"names":[],"mappings":";;;AAAA,qDAA0C;
|
|
1
|
+
{"version":3,"file":"syncAmplifyUiBuilderComponents.js","sourceRoot":"","sources":["../../../src/commands/utils/syncAmplifyUiBuilderComponents.ts"],"names":[],"mappings":";;;AAAA,qDAA0C;AAK1C,yDAAoF;AACpF,6EAA0E;AAMnE,MAAM,2BAA2B,GAAG,CAAC,OAAmB,EAAE,gBAAuB,EAAE,UAA8B,EAUnH,EAAE;IACL,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QACrD,IAAI;YACF,MAAM,SAAS,GAAG,IAAA,2CAAwB,EAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACxE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;SAC7C;QAAC,OAAO,CAAC,EAAE;YACV,yBAAO,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,yBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACrE;IACH,CAAC,CAAC,CAAC;IAEH,yBAAO,CAAC,KAAK,CACX,aAAa,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,MAAM,kBAAkB,IAAA,uDAA0B,EAChI,OAAO,CACR,EAAE,CACJ,CAAC;IACF,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AA5BW,QAAA,2BAA2B,+BA4BtC;AAMK,MAAM,uBAAuB,GAAG,CAAC,OAAmB,EAAE,YAAmB,EAU3E,EAAE;IACL,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC7C,IAAI;YACF,MAAM,KAAK,GAAG,IAAA,uCAAoB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SACzC;QAAC,OAAO,CAAC,EAAE;YACV,yBAAO,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1D,yBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SACrE;IACH,CAAC,CAAC,CAAC;IAEH,yBAAO,CAAC,KAAK,CACX,aAAa,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,MAAM,cAAc,IAAA,uDAA0B,EAAC,OAAO,CAAC,EAAE,CACtI,CAAC;IACF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AA1BW,QAAA,uBAAuB,2BA0BlC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare function run(): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAGA,wBAAsB,GAAG,kBAExB"}
|
package/lib/commands/version.js
CHANGED
|
@@ -25,8 +25,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
25
25
|
exports.run = void 0;
|
|
26
26
|
const amplify_prompts_1 = require("amplify-prompts");
|
|
27
27
|
const path_1 = __importDefault(require("path"));
|
|
28
|
-
|
|
28
|
+
async function run() {
|
|
29
29
|
amplify_prompts_1.printer.info((await Promise.resolve().then(() => __importStar(require(path_1.default.join(__dirname, '..', '..', 'package.json'))))).version);
|
|
30
|
-
}
|
|
30
|
+
}
|
|
31
31
|
exports.run = run;
|
|
32
32
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA0C;AAC1C,gDAAwB;
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAA0C;AAC1C,gDAAwB;AAEjB,KAAK,UAAU,GAAG;IACvB,yBAAO,CAAC,IAAI,CAAC,CAAC,wDAAa,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,GAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACzF,CAAC;AAFD,kBAEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-PostEnvAdd.d.ts","sourceRoot":"","sources":["../../src/event-handlers/handle-PostEnvAdd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"handle-PostEnvAdd.d.ts","sourceRoot":"","sources":["../../src/event-handlers/handle-PostEnvAdd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,iBAU5C"}
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.run = void 0;
|
|
4
4
|
const amplify_prompts_1 = require("amplify-prompts");
|
|
5
|
-
|
|
6
|
-
const run = async (context) => {
|
|
5
|
+
async function run(context) {
|
|
7
6
|
try {
|
|
8
|
-
await (
|
|
7
|
+
await context.amplify.invokePluginMethod(context, 'ui-builder', undefined, 'executeAmplifyCommand', [
|
|
8
|
+
context,
|
|
9
|
+
'cloneComponentsFromEnv',
|
|
10
|
+
]);
|
|
9
11
|
}
|
|
10
12
|
catch (e) {
|
|
11
13
|
amplify_prompts_1.printer.debug(e);
|
|
12
14
|
}
|
|
13
|
-
}
|
|
15
|
+
}
|
|
14
16
|
exports.run = run;
|
|
15
17
|
//# sourceMappingURL=handle-PostEnvAdd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-PostEnvAdd.js","sourceRoot":"","sources":["../../src/event-handlers/handle-PostEnvAdd.ts"],"names":[],"mappings":";;;AACA,qDAA0C;
|
|
1
|
+
{"version":3,"file":"handle-PostEnvAdd.js","sourceRoot":"","sources":["../../src/event-handlers/handle-PostEnvAdd.ts"],"names":[],"mappings":";;;AACA,qDAA0C;AAEnC,KAAK,UAAU,GAAG,CAAC,OAAmB;IAC3C,IAAI;QACF,MAAM,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE;YAClG,OAAO;YACP,wBAAwB;SACzB,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE;QAEV,yBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC;AAVD,kBAUC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-PostPull.d.ts","sourceRoot":"","sources":["../../src/event-handlers/handle-PostPull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"handle-PostPull.d.ts","sourceRoot":"","sources":["../../src/event-handlers/handle-PostPull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,iBAO5C"}
|
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.run = void 0;
|
|
4
4
|
const amplify_prompts_1 = require("amplify-prompts");
|
|
5
|
-
|
|
6
|
-
const run = async (context) => {
|
|
5
|
+
async function run(context) {
|
|
7
6
|
try {
|
|
8
|
-
await (
|
|
7
|
+
await context.amplify.invokePluginMethod(context, 'ui-builder', undefined, 'executeAmplifyCommand', [context, 'generateComponents']);
|
|
9
8
|
}
|
|
10
9
|
catch (e) {
|
|
11
10
|
amplify_prompts_1.printer.debug(e);
|
|
12
11
|
}
|
|
13
|
-
}
|
|
12
|
+
}
|
|
14
13
|
exports.run = run;
|
|
15
14
|
//# sourceMappingURL=handle-PostPull.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle-PostPull.js","sourceRoot":"","sources":["../../src/event-handlers/handle-PostPull.ts"],"names":[],"mappings":";;;AACA,qDAA0C;
|
|
1
|
+
{"version":3,"file":"handle-PostPull.js","sourceRoot":"","sources":["../../src/event-handlers/handle-PostPull.ts"],"names":[],"mappings":";;;AACA,qDAA0C;AAEnC,KAAK,UAAU,GAAG,CAAC,OAAmB;IAC3C,IAAI;QACF,MAAM,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;KACtI;IAAC,OAAO,CAAC,EAAE;QAEV,yBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC;AAPD,kBAOC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-amplify/amplify-util-uibuilder",
|
|
3
|
-
"version": "1.5.0
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -13,12 +13,11 @@
|
|
|
13
13
|
"access": "public"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@aws-amplify/codegen-ui": "^2.
|
|
17
|
-
"@aws-amplify/codegen-ui-react": "^2.
|
|
18
|
-
"amplify-cli-core": "3.2.2
|
|
19
|
-
"amplify-prompts": "2.6.0
|
|
20
|
-
"aws-sdk": "^2.
|
|
21
|
-
"fs-extra": "^8.1.0",
|
|
16
|
+
"@aws-amplify/codegen-ui": "^2.4.2",
|
|
17
|
+
"@aws-amplify/codegen-ui-react": "^2.4.2",
|
|
18
|
+
"amplify-cli-core": "3.2.2",
|
|
19
|
+
"amplify-prompts": "2.6.0",
|
|
20
|
+
"aws-sdk": "^2.1113.0",
|
|
22
21
|
"ora": "^4.0.3"
|
|
23
22
|
},
|
|
24
23
|
"devDependencies": {
|
|
@@ -68,5 +67,5 @@
|
|
|
68
67
|
"usePathForSuiteName": "true",
|
|
69
68
|
"addFileAttribute": "true"
|
|
70
69
|
},
|
|
71
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "c4f1e5f3b3dc4e92ccc4561610fa00beac7b3a1f"
|
|
72
71
|
}
|
|
@@ -5,9 +5,6 @@ import { run } from '../commands/cloneComponentsFromEnv';
|
|
|
5
5
|
const extractArgsDependencyMock = extractArgsDependency as any;
|
|
6
6
|
const awsMock = aws as any;
|
|
7
7
|
|
|
8
|
-
jest.mock('../commands/utils/featureFlags', () => ({
|
|
9
|
-
getTransformerVersion: jest.fn().mockImplementation(() => 2)
|
|
10
|
-
}));
|
|
11
8
|
jest.mock('../commands/utils/extractArgs');
|
|
12
9
|
jest.mock('amplify-cli-core');
|
|
13
10
|
|
|
@@ -48,14 +45,6 @@ describe('can clone components to new environment', () => {
|
|
|
48
45
|
promise: () => mockedComponentExport(environmentName),
|
|
49
46
|
})),
|
|
50
47
|
createComponent: jest.fn(() => ({ promise: () => mockedComponentCreate() })),
|
|
51
|
-
getMetadata: jest.fn(() => ({
|
|
52
|
-
promise: jest.fn(() => ({
|
|
53
|
-
features: {
|
|
54
|
-
autoGenerateForms: 'true',
|
|
55
|
-
autoGenerateViews: 'true',
|
|
56
|
-
},
|
|
57
|
-
})),
|
|
58
|
-
})),
|
|
59
48
|
}));
|
|
60
49
|
});
|
|
61
50
|
|
|
@@ -3,12 +3,11 @@ import {
|
|
|
3
3
|
generateAmplifyUiBuilderIndexFile,
|
|
4
4
|
createUiBuilderTheme,
|
|
5
5
|
createUiBuilderComponent,
|
|
6
|
-
createUiBuilderForm,
|
|
7
|
-
generateAmplifyUiBuilderUtilFile,
|
|
8
6
|
} from '../commands/utils/codegenResources';
|
|
9
7
|
|
|
10
8
|
jest.mock('@aws-amplify/codegen-ui');
|
|
11
9
|
const codegenMock = codegen as any;
|
|
10
|
+
const renderSchemaToTemplateMock = jest.fn();
|
|
12
11
|
|
|
13
12
|
describe('can create a ui builder component', () => {
|
|
14
13
|
let context: any;
|
|
@@ -43,7 +42,6 @@ describe('can create a ui builder component', () => {
|
|
|
43
42
|
properties: {},
|
|
44
43
|
variants: [],
|
|
45
44
|
};
|
|
46
|
-
const renderSchemaToTemplateMock = jest.fn();
|
|
47
45
|
codegenMock.StudioTemplateRendererManager = jest.fn().mockImplementation(() => ({
|
|
48
46
|
renderSchemaToTemplate: renderSchemaToTemplateMock,
|
|
49
47
|
}));
|
|
@@ -56,24 +54,8 @@ describe('can create a ui builder component', () => {
|
|
|
56
54
|
createUiBuilderTheme(context, schema);
|
|
57
55
|
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
|
|
58
56
|
});
|
|
59
|
-
it('calls the renderManager for forms', () => {
|
|
60
|
-
createUiBuilderForm(context, schema);
|
|
61
|
-
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
|
|
62
|
-
});
|
|
63
57
|
it('calls the renderManager for index file', () => {
|
|
64
58
|
generateAmplifyUiBuilderIndexFile(context, [schema]);
|
|
65
59
|
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
|
|
66
60
|
});
|
|
67
|
-
it('calls the renderManager for utils file w/ validation, formatter, and fetchByPath helpers if there is a form', () => {
|
|
68
|
-
generateAmplifyUiBuilderUtilFile(context, { hasForms: true, hasViews: false });
|
|
69
|
-
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalledWith(expect.arrayContaining(['validation', 'formatter', 'fetchByPath']));
|
|
70
|
-
});
|
|
71
|
-
it('calls the renderManager for utils file w/ formatter helper if there is a view', () => {
|
|
72
|
-
generateAmplifyUiBuilderUtilFile(context, { hasForms: false, hasViews: true });
|
|
73
|
-
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalledWith(['formatter']);
|
|
74
|
-
});
|
|
75
|
-
it('should not call the renderManager for utils file if there is neither form nor views', () => {
|
|
76
|
-
generateAmplifyUiBuilderUtilFile(context, { hasForms: false, hasViews: false });
|
|
77
|
-
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalledTimes(0);
|
|
78
|
-
});
|
|
79
61
|
});
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import aws from 'aws-sdk'; // eslint-disable-line import/no-extraneous-dependencies
|
|
2
|
-
import { CloudformationProviderFacade } from 'amplify-cli-core';
|
|
3
2
|
import * as utils from '../commands/utils';
|
|
4
3
|
import { run } from '../commands/generateComponents';
|
|
5
4
|
|
|
@@ -10,12 +9,6 @@ const utilsMock = utils as any;
|
|
|
10
9
|
|
|
11
10
|
utilsMock.shouldRenderComponents = jest.fn().mockImplementation(() => true);
|
|
12
11
|
utilsMock.notifyMissingPackages = jest.fn().mockImplementation(() => true);
|
|
13
|
-
CloudformationProviderFacade.isAmplifyAdminApp = jest.fn().mockImplementation(() => ({
|
|
14
|
-
isAdminApp: true,
|
|
15
|
-
}));
|
|
16
|
-
jest.mock('../commands/utils/featureFlags', () => ({
|
|
17
|
-
getTransformerVersion: jest.fn().mockImplementation(() => 2)
|
|
18
|
-
}));
|
|
19
12
|
|
|
20
13
|
describe('can generate components', () => {
|
|
21
14
|
let context: any;
|
|
@@ -53,44 +46,17 @@ describe('can generate components', () => {
|
|
|
53
46
|
exportThemes: jest.fn(() => ({
|
|
54
47
|
promise: () => mockedExport(),
|
|
55
48
|
})),
|
|
56
|
-
exportForms: jest.fn(() => ({
|
|
57
|
-
promise: () => mockedExport(),
|
|
58
|
-
})),
|
|
59
|
-
exportViews: jest.fn(() => ({
|
|
60
|
-
promise: () => mockedExport(),
|
|
61
|
-
})),
|
|
62
|
-
getMetadata: jest.fn(() => ({
|
|
63
|
-
promise: jest.fn(() => ({
|
|
64
|
-
features: {
|
|
65
|
-
autoGenerateForms: 'true',
|
|
66
|
-
autoGenerateViews: 'true',
|
|
67
|
-
},
|
|
68
|
-
})),
|
|
69
|
-
})),
|
|
70
49
|
}));
|
|
71
50
|
utilsMock.generateUiBuilderComponents = jest.fn().mockImplementation(() => schemas.entities);
|
|
72
51
|
utilsMock.generateUiBuilderThemes = jest.fn().mockImplementation(() => schemas.entities);
|
|
73
|
-
utilsMock.generateUiBuilderForms = jest.fn().mockImplementation(() => schemas.entities);
|
|
74
52
|
utilsMock.getAmplifyDataSchema = jest.fn().mockImplementation(() => undefined);
|
|
75
53
|
utilsMock.generateAmplifyUiBuilderIndexFile = jest.fn().mockImplementation(() => true);
|
|
76
|
-
utilsMock.generateAmplifyUiBuilderUtilFile = jest.fn().mockImplementation(() => true);
|
|
77
54
|
});
|
|
78
55
|
|
|
79
56
|
it('runs generateComponents', async () => {
|
|
80
57
|
await run(context);
|
|
81
|
-
expect(mockedExport).toBeCalledTimes(
|
|
58
|
+
expect(mockedExport).toBeCalledTimes(2);
|
|
82
59
|
expect(utilsMock.generateUiBuilderComponents).toBeCalledTimes(1);
|
|
83
60
|
expect(utilsMock.generateUiBuilderThemes).toBeCalledTimes(1);
|
|
84
|
-
expect(utilsMock.generateUiBuilderForms).toBeCalledTimes(1);
|
|
85
|
-
});
|
|
86
|
-
it('does not run generateComponents if not Amplify Admin app', async () => {
|
|
87
|
-
CloudformationProviderFacade.isAmplifyAdminApp = jest.fn().mockImplementationOnce(() => ({
|
|
88
|
-
isAdminApp: false,
|
|
89
|
-
}));
|
|
90
|
-
await run(context);
|
|
91
|
-
expect(mockedExport).toBeCalledTimes(0);
|
|
92
|
-
expect(utilsMock.generateUiBuilderComponents).toBeCalledTimes(0);
|
|
93
|
-
expect(utilsMock.generateUiBuilderThemes).toBeCalledTimes(0);
|
|
94
|
-
expect(utilsMock.generateUiBuilderForms).toBeCalledTimes(0);
|
|
95
61
|
});
|
|
96
62
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import aws from 'aws-sdk'; // eslint-disable-line import/no-extraneous-dependencies
|
|
2
|
-
import { AmplifyCategories, AmplifySupportedService
|
|
2
|
+
import { AmplifyCategories, AmplifySupportedService } from 'amplify-cli-core'; // eslint-disable-line import/no-extraneous-dependencies
|
|
3
3
|
import { printer } from 'amplify-prompts'; // eslint-disable-line import/no-extraneous-dependencies
|
|
4
|
-
import { mocked } from 'ts-jest/utils';
|
|
5
4
|
import { AmplifyStudioClient } from '../clients';
|
|
6
5
|
import { getAmplifyDataSchema } from '../commands/utils';
|
|
7
6
|
|
|
@@ -18,19 +17,14 @@ jest.mock('amplify-cli-core', () => ({
|
|
|
18
17
|
},
|
|
19
18
|
},
|
|
20
19
|
})),
|
|
21
|
-
getCLIJSON: jest.fn().mockReturnValue({ features: { graphqltransformer: { transformerversion: 1 } } }),
|
|
22
|
-
setCLIJSON: jest.fn(),
|
|
23
20
|
},
|
|
24
21
|
FeatureFlags: {
|
|
25
|
-
getBoolean: () =>
|
|
26
|
-
getNumber:
|
|
27
|
-
reloadValues: jest.fn(),
|
|
22
|
+
getBoolean: () => false,
|
|
23
|
+
getNumber: () => 0,
|
|
28
24
|
},
|
|
29
25
|
}));
|
|
30
26
|
jest.mock('amplify-prompts');
|
|
31
27
|
|
|
32
|
-
const mockedFeatureFlags = mocked(FeatureFlags);
|
|
33
|
-
|
|
34
28
|
const getMockedSchema = jest.fn(
|
|
35
29
|
// eslint-disable-next-line no-useless-escape, spellcheck/spell-checker
|
|
36
30
|
() => `export const schema = {\n \"models\": {\n \"Blog\": {\n \"name\": \"Blog\",\n \"fields\": {\n \"id\": {\n \"name\": \"id\",\n \"isArray\": false,\n \"type\": \"ID\",\n \"isRequired\": true,\n \"attributes\": []\n },\n \"title\": {\n \"name\": \"title\",\n \"isArray\": false,\n \"type\": \"String\",\n \"isRequired\": false,\n \"attributes\": []\n },\n \"content\": {\n \"name\": \"content\",\n \"isArray\": false,\n \"type\": \"String\",\n \"isRequired\": false,\n \"attributes\": []\n },\n \"status\": {\n \"name\": \"status\",\n \"isArray\": false,\n \"type\": {\n \"enum\": \"Status\"\n },\n \"isRequired\": false,\n \"attributes\": []\n },\n \"createdAt\": {\n \"name\": \"createdAt\",\n \"isArray\": false,\n \"type\": \"AWSDateTime\",\n \"isRequired\": false,\n \"attributes\": [],\n \"isReadOnly\": true\n },\n \"updatedAt\": {\n \"name\": \"updatedAt\",\n \"isArray\": false,\n \"type\": \"AWSDateTime\",\n \"isRequired\": false,\n \"attributes\": [],\n \"isReadOnly\": true\n }\n },\n \"syncable\": true,\n \"pluralName\": \"Blogs\",\n \"attributes\": [\n {\n \"type\": \"model\",\n \"properties\": {}\n },\n {\n \"type\": \"auth\",\n \"properties\": {\n \"rules\": [\n {\n \"allow\": \"public\",\n \"operations\": [\n \"create\",\n \"update\",\n \"delete\",\n \"read\"\n ]\n }\n ]\n }\n }\n ]\n }\n },\n \"enums\": {\n \"Status\": {\n \"name\": \"Status\",\n \"values\": [\n \"ENABLED\",\n \"DISABLED\"\n ]\n }\n },\n \"nonModels\": {},\n \"version\": \"demo\"\n};`,
|
|
@@ -39,20 +33,6 @@ const getMockedSchema = jest.fn(
|
|
|
39
33
|
describe('should sync amplify backend models', () => {
|
|
40
34
|
let context: any;
|
|
41
35
|
|
|
42
|
-
beforeAll(() => {
|
|
43
|
-
// set metadata response
|
|
44
|
-
awsMock.AmplifyUIBuilder = jest.fn(() => ({
|
|
45
|
-
getMetadata: jest.fn(() => ({
|
|
46
|
-
promise: jest.fn(() => ({
|
|
47
|
-
features: {
|
|
48
|
-
autoGenerateForms: 'true',
|
|
49
|
-
autoGenerateViews: 'true',
|
|
50
|
-
},
|
|
51
|
-
})),
|
|
52
|
-
})),
|
|
53
|
-
}));
|
|
54
|
-
});
|
|
55
|
-
|
|
56
36
|
beforeEach(() => {
|
|
57
37
|
context = {
|
|
58
38
|
exeInfo: {
|
|
@@ -76,11 +56,7 @@ describe('should sync amplify backend models', () => {
|
|
|
76
56
|
envName: 'testEnvName',
|
|
77
57
|
},
|
|
78
58
|
},
|
|
79
|
-
print: { warning: jest.fn() },
|
|
80
59
|
};
|
|
81
|
-
|
|
82
|
-
mockedFeatureFlags.getNumber.mockReturnValue(2);
|
|
83
|
-
getMockedSchema.mockClear();
|
|
84
60
|
});
|
|
85
61
|
|
|
86
62
|
it('should getAmplifyBackendModels', async () => {
|
|
@@ -98,22 +74,6 @@ describe('should sync amplify backend models', () => {
|
|
|
98
74
|
expect(Object.keys(dataSchema!.models)).toContain('Blog');
|
|
99
75
|
});
|
|
100
76
|
|
|
101
|
-
it('should not getAmplifyBackendModels and return undefined if graphQLTransformer version not supported', async () => {
|
|
102
|
-
mockedFeatureFlags.getNumber.mockReturnValue(1);
|
|
103
|
-
|
|
104
|
-
awsMock.AmplifyBackend = jest.fn(() => ({
|
|
105
|
-
getBackendAPIModels: jest.fn(() => ({
|
|
106
|
-
promise: () => ({
|
|
107
|
-
Models: getMockedSchema(),
|
|
108
|
-
}),
|
|
109
|
-
})),
|
|
110
|
-
}));
|
|
111
|
-
const client = await AmplifyStudioClient.setClientInfo(context);
|
|
112
|
-
const dataSchema = await getAmplifyDataSchema(client);
|
|
113
|
-
expect(getMockedSchema).not.toBeCalled();
|
|
114
|
-
expect(dataSchema).toBeUndefined();
|
|
115
|
-
});
|
|
116
|
-
|
|
117
77
|
it('should handle Models not found', async () => {
|
|
118
78
|
awsMock.AmplifyBackend = jest.fn(() => ({
|
|
119
79
|
getBackendAPIModels: jest.fn(() => ({
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { run as runPostEnvAdd } from '../event-handlers/handle-PostEnvAdd';
|
|
2
|
+
import { run as runPostPull } from '../event-handlers/handle-PostPull';
|
|
3
|
+
|
|
4
|
+
describe('can handle events', () => {
|
|
5
|
+
let context: any;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
context = {
|
|
8
|
+
amplify: {
|
|
9
|
+
invokePluginMethod: jest.fn(),
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
it('handles postEnvAdd', async () => {
|
|
14
|
+
await runPostEnvAdd(context);
|
|
15
|
+
expect(context.amplify.invokePluginMethod).toBeCalledTimes(1);
|
|
16
|
+
});
|
|
17
|
+
it('handles postPull', async () => {
|
|
18
|
+
await runPostPull(context);
|
|
19
|
+
expect(context.amplify.invokePluginMethod).toBeCalledTimes(1);
|
|
20
|
+
});
|
|
21
|
+
});
|