@aws-amplify/amplify-util-uibuilder 1.5.0-rc.9ecc3f4ca.0 → 1.5.0-studio-forms.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 +2 -1
- package/amplify-plugin.json +10 -3
- package/lib/clients/amplify-studio-client.d.ts +13 -2
- package/lib/clients/amplify-studio-client.d.ts.map +1 -1
- package/lib/clients/amplify-studio-client.js +72 -4
- package/lib/clients/amplify-studio-client.js.map +1 -1
- package/lib/commands/generateComponents.d.ts.map +1 -1
- package/lib/commands/generateComponents.js +36 -15
- 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 +12 -2
- package/lib/commands/utils/codegenResources.d.ts.map +1 -1
- package/lib/commands/utils/codegenResources.js +70 -3
- package/lib/commands/utils/codegenResources.js.map +1 -1
- package/lib/commands/utils/featureFlags.d.ts +3 -0
- package/lib/commands/utils/featureFlags.d.ts.map +1 -0
- package/lib/commands/utils/featureFlags.js +34 -0
- package/lib/commands/utils/featureFlags.js.map +1 -0
- 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 +12 -20
- package/lib/commands/utils/syncAmplifyUiBuilderComponents.d.ts.map +1 -1
- package/lib/commands/utils/syncAmplifyUiBuilderComponents.js +36 -3
- 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 +4 -6
- 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 +4 -3
- package/lib/event-handlers/handle-PostPull.js.map +1 -1
- package/lib/event-handlers/handle-PostPush.d.ts +3 -0
- package/lib/event-handlers/handle-PostPush.d.ts.map +1 -0
- package/lib/event-handlers/handle-PostPush.js +15 -0
- package/lib/event-handlers/handle-PostPush.js.map +1 -0
- package/package.json +8 -7
- package/src/__tests__/cloneComponentsFromEnv.test.ts +11 -0
- package/src/__tests__/createUiBuilderComponent.test.ts +19 -1
- package/src/__tests__/generateComponents.test.ts +35 -1
- package/src/__tests__/getAmplifyDataSchema.test.ts +43 -3
- package/src/__tests__/syncAmplifyUiComponents.test.ts +111 -8
- package/src/__tests__/utils.ts +70 -0
- package/src/clients/amplify-studio-client.ts +146 -63
- package/src/commands/generateComponents.ts +46 -16
- package/src/commands/help.ts +5 -2
- package/src/commands/utils/codegenResources.ts +108 -4
- package/src/commands/utils/featureFlags.ts +61 -0
- package/src/commands/utils/getUiBuilderComponentsPath.ts +7 -2
- package/src/commands/utils/syncAmplifyUiBuilderComponents.ts +74 -29
- package/src/commands/version.ts +5 -2
- package/src/event-handlers/handle-PostEnvAdd.ts +8 -6
- package/src/event-handlers/handle-PostPull.ts +7 -3
- package/src/event-handlers/handle-PostPush.ts +15 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/src/__tests__/handleEvents.test.ts +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncAmplifyUiBuilderComponents.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/syncAmplifyUiBuilderComponents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,eAAe,EAAE,WAAW,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"syncAmplifyUiBuilderComponents.d.ts","sourceRoot":"","sources":["../../../src/commands/utils/syncAmplifyUiBuilderComponents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,YAAY,EAC1E,MAAM,yBAAyB,CAAC;AASjC,aAAK,eAAe,CAAC,CAAC,SAAS,YAAY,IACvC;IACE,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,CAAC,CAAC;IACV,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD;IACE,UAAU,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ,CAAC;AAKN,eAAO,MAAM,2BAA2B,YAC7B,UAAU,oBACD,GAAG,EAAE,iDAEtB,gBAAgB,eAAe,CAAC,EAkBlC,CAAC;AAMF,eAAO,MAAM,uBAAuB,YAAa,UAAU,gBAAgB,GAAG,EAAE,KAAG,gBAAgB,WAAW,CAAC,EAgB9G,CAAC;AAKF,eAAO,MAAM,sBAAsB,YAExB,UAAU,eACN,GAAG,EAAE,0FAGjB,gBAAgB,UAAU,CAAC,EAiC7B,CAAC"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateUiBuilderThemes = exports.generateUiBuilderComponents = void 0;
|
|
3
|
+
exports.generateUiBuilderForms = 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");
|
|
5
6
|
const codegenResources_1 = require("./codegenResources");
|
|
6
7
|
const getUiBuilderComponentsPath_1 = require("./getUiBuilderComponentsPath");
|
|
7
8
|
const generateUiBuilderComponents = (context, componentSchemas, dataSchema) => {
|
|
8
9
|
const componentResults = componentSchemas.map(schema => {
|
|
9
10
|
try {
|
|
10
11
|
const component = (0, codegenResources_1.createUiBuilderComponent)(context, schema, dataSchema);
|
|
11
|
-
return { resultType: 'SUCCESS', component };
|
|
12
|
+
return { resultType: 'SUCCESS', schema: component };
|
|
12
13
|
}
|
|
13
14
|
catch (e) {
|
|
14
15
|
amplify_prompts_1.printer.debug(`Failure caught processing ${schema.name}`);
|
|
@@ -24,7 +25,7 @@ const generateUiBuilderThemes = (context, themeSchemas) => {
|
|
|
24
25
|
const themeResults = themeSchemas.map(schema => {
|
|
25
26
|
try {
|
|
26
27
|
const theme = (0, codegenResources_1.createUiBuilderTheme)(context, schema);
|
|
27
|
-
return { resultType: 'SUCCESS', theme };
|
|
28
|
+
return { resultType: 'SUCCESS', schema: theme };
|
|
28
29
|
}
|
|
29
30
|
catch (e) {
|
|
30
31
|
amplify_prompts_1.printer.debug(`Failure caught processing ${schema.name}`);
|
|
@@ -36,4 +37,36 @@ const generateUiBuilderThemes = (context, themeSchemas) => {
|
|
|
36
37
|
return themeResults;
|
|
37
38
|
};
|
|
38
39
|
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;
|
|
39
72
|
//# 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":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare
|
|
1
|
+
export declare const 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":"AAMA,eAAO,MAAM,GAAG,QAAa,QAAQ,IAAI,CAExC,CAAC"}
|
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
|
-
async
|
|
28
|
+
const run = async () => {
|
|
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;AAKjB,MAAM,GAAG,GAAG,KAAK,IAAmB,EAAE;IAC3C,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,CAAC;AAFW,QAAA,GAAG,OAEd"}
|
|
@@ -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;AAQ9C,eAAO,MAAM,GAAG,YAAmB,UAAU,KAAG,QAAQ,IAAI,CAO3D,CAAC"}
|
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.run = void 0;
|
|
4
4
|
const amplify_prompts_1 = require("amplify-prompts");
|
|
5
|
-
|
|
5
|
+
const cloneComponentsFromEnv_1 = require("../commands/cloneComponentsFromEnv");
|
|
6
|
+
const run = async (context) => {
|
|
6
7
|
try {
|
|
7
|
-
await
|
|
8
|
-
context,
|
|
9
|
-
'cloneComponentsFromEnv',
|
|
10
|
-
]);
|
|
8
|
+
await (0, cloneComponentsFromEnv_1.run)(context);
|
|
11
9
|
}
|
|
12
10
|
catch (e) {
|
|
13
11
|
amplify_prompts_1.printer.debug(e);
|
|
14
12
|
}
|
|
15
|
-
}
|
|
13
|
+
};
|
|
16
14
|
exports.run = run;
|
|
17
15
|
//# 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;AAC1C,+EAAmF;AAM5E,MAAM,GAAG,GAAG,KAAK,EAAE,OAAmB,EAAiB,EAAE;IAC9D,IAAI;QACF,MAAM,IAAA,4BAAsB,EAAC,OAAO,CAAC,CAAC;KACvC;IAAC,OAAO,CAAC,EAAE;QAEV,yBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC,CAAC;AAPW,QAAA,GAAG,OAOd"}
|
|
@@ -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;AAO9C,eAAO,MAAM,GAAG,YAAmB,UAAU,KAAG,QAAQ,IAAI,CAO3D,CAAC"}
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.run = void 0;
|
|
4
4
|
const amplify_prompts_1 = require("amplify-prompts");
|
|
5
|
-
|
|
5
|
+
const generateComponents_1 = require("../commands/generateComponents");
|
|
6
|
+
const run = async (context) => {
|
|
6
7
|
try {
|
|
7
|
-
await
|
|
8
|
+
await (0, generateComponents_1.run)(context);
|
|
8
9
|
}
|
|
9
10
|
catch (e) {
|
|
10
11
|
amplify_prompts_1.printer.debug(e);
|
|
11
12
|
}
|
|
12
|
-
}
|
|
13
|
+
};
|
|
13
14
|
exports.run = run;
|
|
14
15
|
//# 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;AAC1C,uEAA2E;AAKpE,MAAM,GAAG,GAAG,KAAK,EAAE,OAAmB,EAAiB,EAAE;IAC9D,IAAI;QACF,MAAM,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;KACnC;IAAC,OAAO,CAAC,EAAE;QAEV,yBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC,CAAC;AAPW,QAAA,GAAG,OAOd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-PostPush.d.ts","sourceRoot":"","sources":["../../src/event-handlers/handle-PostPush.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO9C,eAAO,MAAM,GAAG,YAAmB,UAAU,KAAG,QAAQ,IAAI,CAO3D,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.run = void 0;
|
|
4
|
+
const amplify_prompts_1 = require("amplify-prompts");
|
|
5
|
+
const generateComponents_1 = require("../commands/generateComponents");
|
|
6
|
+
const run = async (context) => {
|
|
7
|
+
try {
|
|
8
|
+
await (0, generateComponents_1.run)(context);
|
|
9
|
+
}
|
|
10
|
+
catch (e) {
|
|
11
|
+
amplify_prompts_1.printer.debug(e);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.run = run;
|
|
15
|
+
//# sourceMappingURL=handle-PostPush.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-PostPush.js","sourceRoot":"","sources":["../../src/event-handlers/handle-PostPush.ts"],"names":[],"mappings":";;;AACA,qDAA0C;AAC1C,uEAA2E;AAKpE,MAAM,GAAG,GAAG,KAAK,EAAE,OAAmB,EAAiB,EAAE;IAC9D,IAAI;QACF,MAAM,IAAA,wBAAkB,EAAC,OAAO,CAAC,CAAC;KACnC;IAAC,OAAO,CAAC,EAAE;QAEV,yBAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAClB;AACH,CAAC,CAAC;AAPW,QAAA,GAAG,OAOd"}
|
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-studio-forms.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -13,11 +13,12 @@
|
|
|
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.
|
|
16
|
+
"@aws-amplify/codegen-ui": "^2.5.1",
|
|
17
|
+
"@aws-amplify/codegen-ui-react": "^2.5.1",
|
|
18
|
+
"amplify-cli-core": "3.2.2-studio-forms.0",
|
|
19
|
+
"amplify-prompts": "2.6.0-studio-forms.0",
|
|
20
|
+
"aws-sdk": "^2.1221.0",
|
|
21
|
+
"fs-extra": "^8.1.0",
|
|
21
22
|
"ora": "^4.0.3"
|
|
22
23
|
},
|
|
23
24
|
"devDependencies": {
|
|
@@ -67,5 +68,5 @@
|
|
|
67
68
|
"usePathForSuiteName": "true",
|
|
68
69
|
"addFileAttribute": "true"
|
|
69
70
|
},
|
|
70
|
-
"gitHead": "
|
|
71
|
+
"gitHead": "bfbfe627dd6e3b01f19425aad3bea39b0c3b5d6a"
|
|
71
72
|
}
|
|
@@ -5,6 +5,9 @@ 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
|
+
}));
|
|
8
11
|
jest.mock('../commands/utils/extractArgs');
|
|
9
12
|
jest.mock('amplify-cli-core');
|
|
10
13
|
|
|
@@ -45,6 +48,14 @@ describe('can clone components to new environment', () => {
|
|
|
45
48
|
promise: () => mockedComponentExport(environmentName),
|
|
46
49
|
})),
|
|
47
50
|
createComponent: jest.fn(() => ({ promise: () => mockedComponentCreate() })),
|
|
51
|
+
getMetadata: jest.fn(() => ({
|
|
52
|
+
promise: jest.fn(() => ({
|
|
53
|
+
features: {
|
|
54
|
+
autoGenerateForms: 'true',
|
|
55
|
+
autoGenerateViews: 'true',
|
|
56
|
+
},
|
|
57
|
+
})),
|
|
58
|
+
})),
|
|
48
59
|
}));
|
|
49
60
|
});
|
|
50
61
|
|
|
@@ -3,11 +3,12 @@ import {
|
|
|
3
3
|
generateAmplifyUiBuilderIndexFile,
|
|
4
4
|
createUiBuilderTheme,
|
|
5
5
|
createUiBuilderComponent,
|
|
6
|
+
createUiBuilderForm,
|
|
7
|
+
generateAmplifyUiBuilderUtilFile,
|
|
6
8
|
} from '../commands/utils/codegenResources';
|
|
7
9
|
|
|
8
10
|
jest.mock('@aws-amplify/codegen-ui');
|
|
9
11
|
const codegenMock = codegen as any;
|
|
10
|
-
const renderSchemaToTemplateMock = jest.fn();
|
|
11
12
|
|
|
12
13
|
describe('can create a ui builder component', () => {
|
|
13
14
|
let context: any;
|
|
@@ -42,6 +43,7 @@ describe('can create a ui builder component', () => {
|
|
|
42
43
|
properties: {},
|
|
43
44
|
variants: [],
|
|
44
45
|
};
|
|
46
|
+
const renderSchemaToTemplateMock = jest.fn();
|
|
45
47
|
codegenMock.StudioTemplateRendererManager = jest.fn().mockImplementation(() => ({
|
|
46
48
|
renderSchemaToTemplate: renderSchemaToTemplateMock,
|
|
47
49
|
}));
|
|
@@ -54,8 +56,24 @@ describe('can create a ui builder component', () => {
|
|
|
54
56
|
createUiBuilderTheme(context, schema);
|
|
55
57
|
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
|
|
56
58
|
});
|
|
59
|
+
it('calls the renderManager for forms', () => {
|
|
60
|
+
createUiBuilderForm(context, schema);
|
|
61
|
+
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
|
|
62
|
+
});
|
|
57
63
|
it('calls the renderManager for index file', () => {
|
|
58
64
|
generateAmplifyUiBuilderIndexFile(context, [schema]);
|
|
59
65
|
expect(new codegenMock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
|
|
60
66
|
});
|
|
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
|
+
});
|
|
61
79
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import aws from 'aws-sdk'; // eslint-disable-line import/no-extraneous-dependencies
|
|
2
|
+
import { CloudformationProviderFacade } from 'amplify-cli-core';
|
|
2
3
|
import * as utils from '../commands/utils';
|
|
3
4
|
import { run } from '../commands/generateComponents';
|
|
4
5
|
|
|
@@ -9,6 +10,12 @@ const utilsMock = utils as any;
|
|
|
9
10
|
|
|
10
11
|
utilsMock.shouldRenderComponents = jest.fn().mockImplementation(() => true);
|
|
11
12
|
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
|
+
}));
|
|
12
19
|
|
|
13
20
|
describe('can generate components', () => {
|
|
14
21
|
let context: any;
|
|
@@ -46,17 +53,44 @@ describe('can generate components', () => {
|
|
|
46
53
|
exportThemes: jest.fn(() => ({
|
|
47
54
|
promise: () => mockedExport(),
|
|
48
55
|
})),
|
|
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
|
+
})),
|
|
49
70
|
}));
|
|
50
71
|
utilsMock.generateUiBuilderComponents = jest.fn().mockImplementation(() => schemas.entities);
|
|
51
72
|
utilsMock.generateUiBuilderThemes = jest.fn().mockImplementation(() => schemas.entities);
|
|
73
|
+
utilsMock.generateUiBuilderForms = jest.fn().mockImplementation(() => schemas.entities);
|
|
52
74
|
utilsMock.getAmplifyDataSchema = jest.fn().mockImplementation(() => undefined);
|
|
53
75
|
utilsMock.generateAmplifyUiBuilderIndexFile = jest.fn().mockImplementation(() => true);
|
|
76
|
+
utilsMock.generateAmplifyUiBuilderUtilFile = jest.fn().mockImplementation(() => true);
|
|
54
77
|
});
|
|
55
78
|
|
|
56
79
|
it('runs generateComponents', async () => {
|
|
57
80
|
await run(context);
|
|
58
|
-
expect(mockedExport).toBeCalledTimes(
|
|
81
|
+
expect(mockedExport).toBeCalledTimes(3);
|
|
59
82
|
expect(utilsMock.generateUiBuilderComponents).toBeCalledTimes(1);
|
|
60
83
|
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);
|
|
61
95
|
});
|
|
62
96
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import aws from 'aws-sdk'; // eslint-disable-line import/no-extraneous-dependencies
|
|
2
|
-
import { AmplifyCategories, AmplifySupportedService } from 'amplify-cli-core'; // eslint-disable-line import/no-extraneous-dependencies
|
|
2
|
+
import { AmplifyCategories, AmplifySupportedService, FeatureFlags } 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';
|
|
4
5
|
import { AmplifyStudioClient } from '../clients';
|
|
5
6
|
import { getAmplifyDataSchema } from '../commands/utils';
|
|
6
7
|
|
|
@@ -17,14 +18,19 @@ jest.mock('amplify-cli-core', () => ({
|
|
|
17
18
|
},
|
|
18
19
|
},
|
|
19
20
|
})),
|
|
21
|
+
getCLIJSON: jest.fn().mockReturnValue({ features: { graphqltransformer: { transformerversion: 1 } } }),
|
|
22
|
+
setCLIJSON: jest.fn(),
|
|
20
23
|
},
|
|
21
24
|
FeatureFlags: {
|
|
22
|
-
getBoolean: () =>
|
|
23
|
-
getNumber: ()
|
|
25
|
+
getBoolean: () => true,
|
|
26
|
+
getNumber: jest.fn(),
|
|
27
|
+
reloadValues: jest.fn(),
|
|
24
28
|
},
|
|
25
29
|
}));
|
|
26
30
|
jest.mock('amplify-prompts');
|
|
27
31
|
|
|
32
|
+
const mockedFeatureFlags = mocked(FeatureFlags);
|
|
33
|
+
|
|
28
34
|
const getMockedSchema = jest.fn(
|
|
29
35
|
// eslint-disable-next-line no-useless-escape, spellcheck/spell-checker
|
|
30
36
|
() => `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};`,
|
|
@@ -33,6 +39,20 @@ const getMockedSchema = jest.fn(
|
|
|
33
39
|
describe('should sync amplify backend models', () => {
|
|
34
40
|
let context: any;
|
|
35
41
|
|
|
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
|
+
|
|
36
56
|
beforeEach(() => {
|
|
37
57
|
context = {
|
|
38
58
|
exeInfo: {
|
|
@@ -56,7 +76,11 @@ describe('should sync amplify backend models', () => {
|
|
|
56
76
|
envName: 'testEnvName',
|
|
57
77
|
},
|
|
58
78
|
},
|
|
79
|
+
print: { warning: jest.fn() },
|
|
59
80
|
};
|
|
81
|
+
|
|
82
|
+
mockedFeatureFlags.getNumber.mockReturnValue(2);
|
|
83
|
+
getMockedSchema.mockClear();
|
|
60
84
|
});
|
|
61
85
|
|
|
62
86
|
it('should getAmplifyBackendModels', async () => {
|
|
@@ -74,6 +98,22 @@ describe('should sync amplify backend models', () => {
|
|
|
74
98
|
expect(Object.keys(dataSchema!.models)).toContain('Blog');
|
|
75
99
|
});
|
|
76
100
|
|
|
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
|
+
|
|
77
117
|
it('should handle Models not found', async () => {
|
|
78
118
|
awsMock.AmplifyBackend = jest.fn(() => ({
|
|
79
119
|
getBackendAPIModels: jest.fn(() => ({
|