@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.
Files changed (63) hide show
  1. package/CHANGELOG.md +2 -1
  2. package/amplify-plugin.json +10 -3
  3. package/lib/clients/amplify-studio-client.d.ts +13 -2
  4. package/lib/clients/amplify-studio-client.d.ts.map +1 -1
  5. package/lib/clients/amplify-studio-client.js +72 -4
  6. package/lib/clients/amplify-studio-client.js.map +1 -1
  7. package/lib/commands/generateComponents.d.ts.map +1 -1
  8. package/lib/commands/generateComponents.js +36 -15
  9. package/lib/commands/generateComponents.js.map +1 -1
  10. package/lib/commands/help.d.ts +1 -1
  11. package/lib/commands/help.d.ts.map +1 -1
  12. package/lib/commands/help.js +2 -2
  13. package/lib/commands/help.js.map +1 -1
  14. package/lib/commands/utils/codegenResources.d.ts +12 -2
  15. package/lib/commands/utils/codegenResources.d.ts.map +1 -1
  16. package/lib/commands/utils/codegenResources.js +70 -3
  17. package/lib/commands/utils/codegenResources.js.map +1 -1
  18. package/lib/commands/utils/featureFlags.d.ts +3 -0
  19. package/lib/commands/utils/featureFlags.d.ts.map +1 -0
  20. package/lib/commands/utils/featureFlags.js +34 -0
  21. package/lib/commands/utils/featureFlags.js.map +1 -0
  22. package/lib/commands/utils/getUiBuilderComponentsPath.d.ts.map +1 -1
  23. package/lib/commands/utils/getUiBuilderComponentsPath.js.map +1 -1
  24. package/lib/commands/utils/syncAmplifyUiBuilderComponents.d.ts +12 -20
  25. package/lib/commands/utils/syncAmplifyUiBuilderComponents.d.ts.map +1 -1
  26. package/lib/commands/utils/syncAmplifyUiBuilderComponents.js +36 -3
  27. package/lib/commands/utils/syncAmplifyUiBuilderComponents.js.map +1 -1
  28. package/lib/commands/version.d.ts +1 -1
  29. package/lib/commands/version.d.ts.map +1 -1
  30. package/lib/commands/version.js +2 -2
  31. package/lib/commands/version.js.map +1 -1
  32. package/lib/event-handlers/handle-PostEnvAdd.d.ts +1 -1
  33. package/lib/event-handlers/handle-PostEnvAdd.d.ts.map +1 -1
  34. package/lib/event-handlers/handle-PostEnvAdd.js +4 -6
  35. package/lib/event-handlers/handle-PostEnvAdd.js.map +1 -1
  36. package/lib/event-handlers/handle-PostPull.d.ts +1 -1
  37. package/lib/event-handlers/handle-PostPull.d.ts.map +1 -1
  38. package/lib/event-handlers/handle-PostPull.js +4 -3
  39. package/lib/event-handlers/handle-PostPull.js.map +1 -1
  40. package/lib/event-handlers/handle-PostPush.d.ts +3 -0
  41. package/lib/event-handlers/handle-PostPush.d.ts.map +1 -0
  42. package/lib/event-handlers/handle-PostPush.js +15 -0
  43. package/lib/event-handlers/handle-PostPush.js.map +1 -0
  44. package/package.json +8 -7
  45. package/src/__tests__/cloneComponentsFromEnv.test.ts +11 -0
  46. package/src/__tests__/createUiBuilderComponent.test.ts +19 -1
  47. package/src/__tests__/generateComponents.test.ts +35 -1
  48. package/src/__tests__/getAmplifyDataSchema.test.ts +43 -3
  49. package/src/__tests__/syncAmplifyUiComponents.test.ts +111 -8
  50. package/src/__tests__/utils.ts +70 -0
  51. package/src/clients/amplify-studio-client.ts +146 -63
  52. package/src/commands/generateComponents.ts +46 -16
  53. package/src/commands/help.ts +5 -2
  54. package/src/commands/utils/codegenResources.ts +108 -4
  55. package/src/commands/utils/featureFlags.ts +61 -0
  56. package/src/commands/utils/getUiBuilderComponentsPath.ts +7 -2
  57. package/src/commands/utils/syncAmplifyUiBuilderComponents.ts +74 -29
  58. package/src/commands/version.ts +5 -2
  59. package/src/event-handlers/handle-PostEnvAdd.ts +8 -6
  60. package/src/event-handlers/handle-PostPull.ts +7 -3
  61. package/src/event-handlers/handle-PostPush.ts +15 -0
  62. package/tsconfig.tsbuildinfo +1 -1
  63. 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,EAChD,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,2BAA2B,YAAa,UAAU,oBAAoB,GAAG,EAAE,iDAAmC,CAAC;IAC1H,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,eAAe,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,GAAG;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC,EAkBD,CAAC;AAMF,eAAO,MAAM,uBAAuB,YAAa,UAAU,gBAAgB,GAAG,EAAE,KAAG,CAAC;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,GAAG;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,EAgBD,CAAC"}
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;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
+ {"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 function run(): Promise<void>;
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":"AAGA,wBAAsB,GAAG,kBAExB"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,GAAG,QAAa,QAAQ,IAAI,CAExC,CAAC"}
@@ -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 function run() {
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;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
+ {"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,3 +1,3 @@
1
1
  import { $TSContext } from 'amplify-cli-core';
2
- export declare function run(context: $TSContext): Promise<void>;
2
+ export declare const run: (context: $TSContext) => Promise<void>;
3
3
  //# sourceMappingURL=handle-PostEnvAdd.d.ts.map
@@ -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;AAG9C,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,iBAU5C"}
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
- async function run(context) {
5
+ const cloneComponentsFromEnv_1 = require("../commands/cloneComponentsFromEnv");
6
+ const run = async (context) => {
6
7
  try {
7
- await context.amplify.invokePluginMethod(context, 'ui-builder', undefined, 'executeAmplifyCommand', [
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;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
+ {"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,3 +1,3 @@
1
1
  import { $TSContext } from 'amplify-cli-core';
2
- export declare function run(context: $TSContext): Promise<void>;
2
+ export declare const run: (context: $TSContext) => Promise<void>;
3
3
  //# sourceMappingURL=handle-PostPull.d.ts.map
@@ -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;AAG9C,wBAAsB,GAAG,CAAC,OAAO,EAAE,UAAU,iBAO5C"}
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
- async function run(context) {
5
+ const generateComponents_1 = require("../commands/generateComponents");
6
+ const run = async (context) => {
6
7
  try {
7
- await context.amplify.invokePluginMethod(context, 'ui-builder', undefined, 'executeAmplifyCommand', [context, 'generateComponents']);
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;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"}
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,3 @@
1
+ import { $TSContext } from 'amplify-cli-core';
2
+ export declare const run: (context: $TSContext) => Promise<void>;
3
+ //# sourceMappingURL=handle-PostPush.d.ts.map
@@ -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-rc.9ecc3f4ca.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.4.2",
17
- "@aws-amplify/codegen-ui-react": "^2.4.2",
18
- "amplify-cli-core": "3.2.2-rc.9ecc3f4ca.0",
19
- "amplify-prompts": "2.6.0-rc.9ecc3f4ca.0",
20
- "aws-sdk": "^2.1113.0",
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": "1fee20d4e5916319501cadfc387e49cc49b0e5bf"
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(2);
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: () => false,
23
- getNumber: () => 0,
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(() => ({