@aws-amplify/amplify-util-uibuilder 1.2.0-uibuilder-ts.0 → 1.2.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 (85) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/lib/commands/cloneComponentsFromEnv.d.ts +3 -0
  3. package/lib/commands/cloneComponentsFromEnv.d.ts.map +1 -0
  4. package/lib/commands/cloneComponentsFromEnv.js +68 -0
  5. package/lib/commands/cloneComponentsFromEnv.js.map +1 -0
  6. package/lib/commands/generateComponents.d.ts +3 -0
  7. package/lib/commands/generateComponents.d.ts.map +1 -0
  8. package/lib/commands/generateComponents.js +50 -0
  9. package/lib/commands/generateComponents.js.map +1 -0
  10. package/lib/commands/help.d.ts +2 -0
  11. package/lib/commands/help.d.ts.map +1 -0
  12. package/lib/commands/help.js +9 -0
  13. package/lib/commands/help.js.map +1 -0
  14. package/lib/commands/utils/createUiBuilderComponent.d.ts +5 -0
  15. package/lib/commands/utils/createUiBuilderComponent.d.ts.map +1 -0
  16. package/lib/commands/utils/createUiBuilderComponent.js +64 -0
  17. package/lib/commands/utils/createUiBuilderComponent.js.map +1 -0
  18. package/lib/commands/utils/extractArgs.d.ts +11 -0
  19. package/lib/commands/utils/extractArgs.d.ts.map +1 -0
  20. package/lib/commands/utils/extractArgs.js +26 -0
  21. package/lib/commands/utils/extractArgs.js.map +1 -0
  22. package/lib/commands/utils/getUiBuilderComponentsPath.d.ts +3 -0
  23. package/lib/commands/utils/getUiBuilderComponentsPath.d.ts.map +1 -0
  24. package/lib/commands/utils/getUiBuilderComponentsPath.js +20 -0
  25. package/lib/commands/utils/getUiBuilderComponentsPath.js.map +1 -0
  26. package/lib/commands/utils/notifyMissingPackages.d.ts +3 -0
  27. package/lib/commands/utils/notifyMissingPackages.d.ts.map +1 -0
  28. package/lib/commands/utils/notifyMissingPackages.js +45 -0
  29. package/lib/commands/utils/notifyMissingPackages.js.map +1 -0
  30. package/lib/commands/utils/shouldRenderComponents.d.ts +3 -0
  31. package/lib/commands/utils/shouldRenderComponents.d.ts.map +1 -0
  32. package/lib/commands/utils/shouldRenderComponents.js +34 -0
  33. package/lib/commands/utils/shouldRenderComponents.js.map +1 -0
  34. package/lib/commands/utils/syncAmplifyUiBuilderComponents.d.ts +31 -0
  35. package/lib/commands/utils/syncAmplifyUiBuilderComponents.d.ts.map +1 -0
  36. package/lib/commands/utils/syncAmplifyUiBuilderComponents.js +116 -0
  37. package/lib/commands/utils/syncAmplifyUiBuilderComponents.js.map +1 -0
  38. package/lib/commands/version.d.ts +2 -0
  39. package/lib/commands/version.d.ts.map +1 -0
  40. package/lib/commands/version.js +32 -0
  41. package/lib/commands/version.js.map +1 -0
  42. package/lib/event-handlers/handle-PostEnvAdd.d.ts +3 -0
  43. package/lib/event-handlers/handle-PostEnvAdd.d.ts.map +1 -0
  44. package/lib/event-handlers/handle-PostEnvAdd.js +17 -0
  45. package/lib/event-handlers/handle-PostEnvAdd.js.map +1 -0
  46. package/lib/event-handlers/handle-PostPull.d.ts +3 -0
  47. package/lib/event-handlers/handle-PostPull.d.ts.map +1 -0
  48. package/lib/event-handlers/handle-PostPull.js +14 -0
  49. package/lib/event-handlers/handle-PostPull.js.map +1 -0
  50. package/lib/index.d.ts +6 -0
  51. package/lib/index.d.ts.map +1 -0
  52. package/lib/index.js +22 -0
  53. package/lib/index.js.map +1 -0
  54. package/package.json +35 -5
  55. package/src/__tests__/cloneComponentsFromEnv.test.ts +49 -0
  56. package/src/__tests__/createUiBuilderComponent.test.ts +60 -0
  57. package/src/__tests__/generateComponents.test.ts +50 -0
  58. package/src/__tests__/handleEvents.test.ts +21 -0
  59. package/src/__tests__/help.test.ts +10 -0
  60. package/src/__tests__/mock.json +1 -0
  61. package/src/__tests__/notifyMissingPackages.test.ts +73 -0
  62. package/src/__tests__/package.json +3 -0
  63. package/{commands/utils/__tests__/shouldRenderComponents.test.js → src/__tests__/shouldRenderComponents.test.ts} +3 -2
  64. package/src/__tests__/syncAmplifyUiComponents.test.ts +150 -0
  65. package/src/__tests__/version.test.ts +10 -0
  66. package/{commands/cloneComponentsFromEnv.js → src/commands/cloneComponentsFromEnv.ts} +15 -19
  67. package/{commands/generateComponents.js → src/commands/generateComponents.ts} +10 -12
  68. package/src/commands/help.ts +5 -0
  69. package/{commands/utils/createUiBuilderComponent.js → src/commands/utils/createUiBuilderComponent.ts} +16 -20
  70. package/{commands/utils/extractArgs.js → src/commands/utils/extractArgs.ts} +3 -5
  71. package/{commands/utils/getUiBuilderComponentsPath.js → src/commands/utils/getUiBuilderComponentsPath.ts} +5 -8
  72. package/src/commands/utils/notifyMissingPackages.ts +40 -0
  73. package/{commands/utils/shouldRenderComponents.js → src/commands/utils/shouldRenderComponents.ts} +5 -8
  74. package/{commands/utils/syncAmplifyUiBuilderComponents.js → src/commands/utils/syncAmplifyUiBuilderComponents.ts} +23 -26
  75. package/src/commands/version.ts +6 -0
  76. package/{event-handlers/handle-PostEnvAdd.js → src/event-handlers/handle-PostEnvAdd.ts} +3 -6
  77. package/{event-handlers/handle-PostPull.js → src/event-handlers/handle-PostPull.ts} +3 -6
  78. package/{index.js → src/index.ts} +6 -10
  79. package/tsconfig.json +9 -0
  80. package/tsconfig.tsbuildinfo +1 -0
  81. package/commands/help.js +0 -7
  82. package/commands/utils/__tests__/createUiComponents.test.js +0 -46
  83. package/commands/utils/__tests__/syncAmplifyUiComponents.test.js +0 -67
  84. package/commands/utils/notifyMissingPackages.js +0 -28
  85. package/commands/version.js +0 -10
@@ -0,0 +1,116 @@
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
+ exports.getAmplifyUIBuilderService = exports.generateUiBuilderThemes = exports.generateUiBuilderComponents = exports.listUiBuilderThemes = exports.listUiBuilderComponents = exports.getAppId = exports.resolveAppId = exports.getEnvName = void 0;
7
+ const aws_sdk_1 = __importDefault(require("aws-sdk"));
8
+ const amplify_prompts_1 = require("amplify-prompts");
9
+ const createUiBuilderComponent_1 = require("./createUiBuilderComponent");
10
+ const getUiBuilderComponentsPath_1 = require("./getUiBuilderComponentsPath");
11
+ const extractArgs_1 = require("./extractArgs");
12
+ const getEnvName = (context, envName) => {
13
+ const args = (0, extractArgs_1.extractArgs)(context);
14
+ return envName ? envName : args.environmentName ? args.environmentName : context.exeInfo.localEnvInfo.envName;
15
+ };
16
+ exports.getEnvName = getEnvName;
17
+ const resolveAppId = async (context) => {
18
+ return await context.amplify.invokePluginMethod(context, 'awscloudformation', undefined, 'resolveAppId', [context]);
19
+ };
20
+ exports.resolveAppId = resolveAppId;
21
+ const getAppId = async (context) => {
22
+ const appId = (0, extractArgs_1.extractArgs)(context).appId || (await (0, exports.resolveAppId)(context));
23
+ if (!appId) {
24
+ throw new Error('Unable to sync Studio components since appId could not be determined. This can happen when you hit the soft limit of number of apps that you can have in Amplify console.');
25
+ }
26
+ return appId;
27
+ };
28
+ exports.getAppId = getAppId;
29
+ async function listUiBuilderComponents(context, envName) {
30
+ const environmentName = (0, exports.getEnvName)(context, envName);
31
+ const appId = await (0, exports.getAppId)(context);
32
+ try {
33
+ const amplifyUIBuilder = await (0, exports.getAmplifyUIBuilderService)(context, environmentName, appId);
34
+ const uiBuilderComponents = await amplifyUIBuilder
35
+ .exportComponents({
36
+ appId,
37
+ environmentName,
38
+ })
39
+ .promise();
40
+ amplify_prompts_1.printer.debug(JSON.stringify(uiBuilderComponents, null, 2));
41
+ return uiBuilderComponents;
42
+ }
43
+ catch (e) {
44
+ amplify_prompts_1.printer.debug(e);
45
+ throw e;
46
+ }
47
+ }
48
+ exports.listUiBuilderComponents = listUiBuilderComponents;
49
+ async function listUiBuilderThemes(context, envName) {
50
+ const environmentName = (0, exports.getEnvName)(context, envName);
51
+ const appId = await (0, exports.getAppId)(context);
52
+ try {
53
+ const amplifyUIBuilder = await (0, exports.getAmplifyUIBuilderService)(context, environmentName, appId);
54
+ const uiBuilderThemes = await amplifyUIBuilder
55
+ .exportThemes({
56
+ appId,
57
+ environmentName,
58
+ })
59
+ .promise();
60
+ amplify_prompts_1.printer.debug(JSON.stringify(uiBuilderThemes, null, 2));
61
+ return uiBuilderThemes;
62
+ }
63
+ catch (e) {
64
+ amplify_prompts_1.printer.debug(e);
65
+ throw e;
66
+ }
67
+ }
68
+ exports.listUiBuilderThemes = listUiBuilderThemes;
69
+ function generateUiBuilderComponents(context, componentSchemas) {
70
+ const componentResults = componentSchemas.map(schema => {
71
+ try {
72
+ const component = (0, createUiBuilderComponent_1.createUiBuilderComponent)(context, schema);
73
+ return { resultType: 'SUCCESS', component };
74
+ }
75
+ catch (e) {
76
+ amplify_prompts_1.printer.debug(`Failure caught processing ${schema.name}`);
77
+ amplify_prompts_1.printer.debug(e);
78
+ return { resultType: 'FAILURE', schemaName: schema.name, error: e };
79
+ }
80
+ });
81
+ amplify_prompts_1.printer.debug(`Generated ${componentResults.filter(result => result.resultType === 'SUCCESS').length} components in ${(0, getUiBuilderComponentsPath_1.getUiBuilderComponentsPath)(context)}`);
82
+ return componentResults;
83
+ }
84
+ exports.generateUiBuilderComponents = generateUiBuilderComponents;
85
+ function generateUiBuilderThemes(context, themeSchemas) {
86
+ const themeResults = themeSchemas.map(schema => {
87
+ try {
88
+ const theme = (0, createUiBuilderComponent_1.createUiBuilderTheme)(context, schema);
89
+ return { resultType: 'SUCCESS', theme };
90
+ }
91
+ catch (e) {
92
+ amplify_prompts_1.printer.debug(`Failure caught processing ${schema.name}`);
93
+ amplify_prompts_1.printer.debug(e);
94
+ return { resultType: 'FAILURE', schemaName: schema.name, error: e };
95
+ }
96
+ });
97
+ amplify_prompts_1.printer.debug(`Generated ${themeResults.filter(result => result.resultType === 'SUCCESS').length} themes in ${(0, getUiBuilderComponentsPath_1.getUiBuilderComponentsPath)(context)}`);
98
+ return themeResults;
99
+ }
100
+ exports.generateUiBuilderThemes = generateUiBuilderThemes;
101
+ const getAmplifyUIBuilderService = async (context, environmentName, appId) => {
102
+ const awsConfigInfo = (await context.amplify.invokePluginMethod(context, 'awscloudformation', undefined, 'loadConfigurationForEnv', [
103
+ context,
104
+ environmentName,
105
+ appId,
106
+ ]));
107
+ if (process.env.UI_BUILDER_ENDPOINT) {
108
+ awsConfigInfo.endpoint = process.env.UI_BUILDER_ENDPOINT;
109
+ }
110
+ if (process.env.UI_BUILDER_REGION) {
111
+ awsConfigInfo.region = process.env.UI_BUILDER_REGION;
112
+ }
113
+ return new aws_sdk_1.default.AmplifyUIBuilder(awsConfigInfo);
114
+ };
115
+ exports.getAmplifyUIBuilderService = getAmplifyUIBuilderService;
116
+ //# sourceMappingURL=syncAmplifyUiBuilderComponents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncAmplifyUiBuilderComponents.js","sourceRoot":"","sources":["../../../src/commands/utils/syncAmplifyUiBuilderComponents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function run(): Promise<void>;
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAGA,wBAAsB,GAAG,kBAExB"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.run = void 0;
26
+ const amplify_prompts_1 = require("amplify-prompts");
27
+ const path_1 = __importDefault(require("path"));
28
+ async function run() {
29
+ amplify_prompts_1.printer.info((await Promise.resolve().then(() => __importStar(require(path_1.default.join(__dirname, '..', '..', 'package.json'))))).version);
30
+ }
31
+ exports.run = run;
32
+ //# sourceMappingURL=version.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ import { $TSContext } from 'amplify-cli-core';
2
+ export declare function run(context: $TSContext): Promise<void>;
3
+ //# sourceMappingURL=handle-PostEnvAdd.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = void 0;
4
+ const amplify_prompts_1 = require("amplify-prompts");
5
+ async function run(context) {
6
+ try {
7
+ await context.amplify.invokePluginMethod(context, 'ui-builder', undefined, 'executeAmplifyCommand', [
8
+ context,
9
+ 'cloneComponentsFromEnv',
10
+ ]);
11
+ }
12
+ catch (e) {
13
+ amplify_prompts_1.printer.debug(e);
14
+ }
15
+ }
16
+ exports.run = run;
17
+ //# sourceMappingURL=handle-PostEnvAdd.js.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ import { $TSContext } from 'amplify-cli-core';
2
+ export declare function run(context: $TSContext): Promise<void>;
3
+ //# sourceMappingURL=handle-PostPull.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = void 0;
4
+ const amplify_prompts_1 = require("amplify-prompts");
5
+ async function run(context) {
6
+ try {
7
+ await context.amplify.invokePluginMethod(context, 'ui-builder', undefined, 'executeAmplifyCommand', [context, 'generateComponents']);
8
+ }
9
+ catch (e) {
10
+ amplify_prompts_1.printer.debug(e);
11
+ }
12
+ }
13
+ exports.run = run;
14
+ //# sourceMappingURL=handle-PostPull.js.map
@@ -0,0 +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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { $TSContext } from 'amplify-cli-core';
2
+ export declare function executeAmplifyCommand(context: $TSContext, cmd: string): Promise<void>;
3
+ export declare function handleAmplifyEvent(context: $TSContext, { event }: {
4
+ event: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,iBAK3E;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,iBAKzF"}
package/lib/index.js ADDED
@@ -0,0 +1,22 @@
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
+ exports.handleAmplifyEvent = exports.executeAmplifyCommand = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ async function executeAmplifyCommand(context, cmd) {
9
+ const commandsDirPath = path_1.default.normalize(path_1.default.join(__dirname, 'commands'));
10
+ const commandPath = path_1.default.join(commandsDirPath, cmd ? cmd : context.input.command);
11
+ const commandModule = require(commandPath);
12
+ await commandModule.run(context);
13
+ }
14
+ exports.executeAmplifyCommand = executeAmplifyCommand;
15
+ async function handleAmplifyEvent(context, { event }) {
16
+ const eventHandlersDirPath = path_1.default.normalize(path_1.default.join(__dirname, 'event-handlers'));
17
+ const eventHandlerPath = path_1.default.join(eventHandlersDirPath, `handle-${event}`);
18
+ const eventHandlerModule = require(eventHandlerPath);
19
+ await eventHandlerModule.run(context);
20
+ }
21
+ exports.handleAmplifyEvent = handleAmplifyEvent;
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,gDAAwB;AAEjB,KAAK,UAAU,qBAAqB,CAAC,OAAmB,EAAE,GAAW;IAC1E,MAAM,eAAe,GAAG,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AALD,sDAKC;AAEM,KAAK,UAAU,kBAAkB,CAAC,OAAmB,EAAE,EAAE,KAAK,EAAqB;IACxF,MAAM,oBAAoB,GAAG,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACpF,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACrD,MAAM,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AALD,gDAKC"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@aws-amplify/amplify-util-uibuilder",
3
- "version": "1.2.0-uibuilder-ts.0",
3
+ "version": "1.2.0",
4
4
  "description": "",
5
- "main": "index.js",
5
+ "main": "lib/index.js",
6
6
  "scripts": {
7
+ "build": "tsc",
7
8
  "test": "jest"
8
9
  },
9
10
  "author": "Amazon Web Services",
@@ -12,12 +13,41 @@
12
13
  "access": "public"
13
14
  },
14
15
  "dependencies": {
15
- "@aws-amplify/codegen-ui": "^1.1.0",
16
- "@aws-amplify/codegen-ui-react": "^1.1.0",
16
+ "@aws-amplify/codegen-ui": "1.2.0",
17
+ "@aws-amplify/codegen-ui-react": "1.2.0",
17
18
  "amplify-cli-core": "2.4.3",
18
19
  "amplify-prompts": "1.6.0",
19
20
  "amplify-provider-awscloudformation": "5.8.1",
20
21
  "aws-sdk": "^2.1042.0"
21
22
  },
22
- "gitHead": "4c441df394ea316130e2e0dff91d359d2c338ef7"
23
+ "jest": {
24
+ "testRunner": "jest-circus/runner",
25
+ "preset": "ts-jest",
26
+ "transform": {
27
+ "^.+\\.tsx?$": "ts-jest"
28
+ },
29
+ "collectCoverage": true,
30
+ "collectCoverageFrom": [
31
+ "src/**/*.ts",
32
+ "!**/node_modules/**",
33
+ "!src/__tests__/**",
34
+ "!lib/**"
35
+ ],
36
+ "reporters": [
37
+ "default",
38
+ "jest-junit"
39
+ ],
40
+ "testEnvironment": "node",
41
+ "testURL": "http://localhost/",
42
+ "testRegex": "(src/(__tests__|__e2e__|__e2e_v2__)/.*.test.ts)$",
43
+ "moduleFileExtensions": [
44
+ "ts",
45
+ "tsx",
46
+ "js",
47
+ "jsx",
48
+ "json",
49
+ "node"
50
+ ]
51
+ },
52
+ "gitHead": "5d121ae4de18ebd4c4f14169aa12316390a75186"
23
53
  }
@@ -0,0 +1,49 @@
1
+ import * as extractArgsDependency from '../commands/utils/extractArgs';
2
+ import * as listUiBuilderComponentsDependency from '../commands/utils/syncAmplifyUiBuilderComponents';
3
+ import { run } from '../commands/cloneComponentsFromEnv';
4
+ const extractArgsDependency_mock = extractArgsDependency as any;
5
+ const listUiBuilderComponentsDependency_mock = listUiBuilderComponentsDependency as any;
6
+ jest.mock('aws-sdk', () => {
7
+ return {
8
+ AmplifyUIBuilder: jest.fn(() => {
9
+ return {
10
+ createComponent: () => ({
11
+ promise: () => true,
12
+ }),
13
+ };
14
+ }),
15
+ };
16
+ });
17
+ jest.mock('../commands/utils/extractArgs');
18
+ jest.mock('../commands/utils/syncAmplifyUiBuilderComponents');
19
+
20
+ describe('can clone components to new environment', () => {
21
+ let context: any;
22
+ beforeEach(() => {
23
+ context = {
24
+ amplify: {
25
+ invokePluginMethod: () => true,
26
+ },
27
+ };
28
+ extractArgsDependency_mock.extractArgs = jest.fn().mockImplementation(() => ({
29
+ sourceEnvName: 'sourceEnvName',
30
+ newEnvName: 'newEnvName',
31
+ appId: 'appId',
32
+ environmentName: 'environmentName',
33
+ }));
34
+ listUiBuilderComponentsDependency_mock.listUiBuilderComponents = jest.fn().mockImplementation((context: any, envName: any) => {
35
+ if (envName === 'newEnvName') {
36
+ return {
37
+ entities: [],
38
+ };
39
+ }
40
+ return {
41
+ entities: [{}],
42
+ };
43
+ });
44
+ });
45
+ it('clones components to a new env', async () => {
46
+ await run(context);
47
+ expect(listUiBuilderComponentsDependency.listUiBuilderComponents).toBeCalledTimes(2);
48
+ });
49
+ });
@@ -0,0 +1,60 @@
1
+ import * as codegen from '@aws-amplify/codegen-ui';
2
+ import {
3
+ generateAmplifyUiBuilderIndexFile,
4
+ createUiBuilderTheme,
5
+ createUiBuilderComponent,
6
+ } from '../commands/utils/createUiBuilderComponent';
7
+ jest.mock('@aws-amplify/codegen-ui');
8
+ const codegen_mock = codegen as any;
9
+ const renderSchemaToTemplateMock = jest.fn();
10
+
11
+ describe('can create a ui builder component', () => {
12
+ let context: any;
13
+ let schema: any;
14
+ beforeEach(() => {
15
+ context = {
16
+ exeInfo: {
17
+ projectConfig: {
18
+ providers: ['awscloudformation'],
19
+ frontend: 'javascript',
20
+ javascript: {
21
+ framework: 'react',
22
+ config: {
23
+ SourceDir: 'src',
24
+ },
25
+ },
26
+ },
27
+ },
28
+ parameters: {
29
+ argv: [],
30
+ },
31
+ input: {},
32
+ };
33
+ schema = {
34
+ appId: 'd37nrm8rzt3oek',
35
+ bindingProperties: {},
36
+ componentType: 'Box',
37
+ environmentName: 'staging',
38
+ id: 's-s4mU579Ycf6JGHwhqT',
39
+ name: 'aawwdd',
40
+ overrides: {},
41
+ properties: {},
42
+ variants: [],
43
+ };
44
+ codegen_mock.StudioTemplateRendererManager = jest.fn().mockImplementation(() => ({
45
+ renderSchemaToTemplate: renderSchemaToTemplateMock,
46
+ }));
47
+ });
48
+ it('calls the renderManager', async () => {
49
+ await createUiBuilderComponent(context, schema);
50
+ expect(new codegen_mock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
51
+ });
52
+ it('calls the renderManager for themes', async () => {
53
+ await createUiBuilderTheme(context, schema);
54
+ expect(new codegen_mock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
55
+ });
56
+ it('calls the renderManager for index file', async () => {
57
+ await generateAmplifyUiBuilderIndexFile(context, [schema]);
58
+ expect(new codegen_mock.StudioTemplateRendererManager().renderSchemaToTemplate).toBeCalled();
59
+ });
60
+ });
@@ -0,0 +1,50 @@
1
+ import * as shouldRenderComponentsDependency from '../commands/utils/shouldRenderComponents';
2
+ import * as notifyMissingPackagesDependency from '../commands/utils/notifyMissingPackages';
3
+ import * as listUiBuilderComponentsDependency from '../commands/utils/syncAmplifyUiBuilderComponents';
4
+ import * as generateUiBuilderComponentsDependency from '../commands/utils/syncAmplifyUiBuilderComponents';
5
+ import * as generateUiBuilderThemesDependency from '../commands/utils/syncAmplifyUiBuilderComponents';
6
+ import * as listUiBuilderThemesDependency from '../commands/utils/syncAmplifyUiBuilderComponents';
7
+ import * as generateAmplifyUiBuilderIndexFileDependency from '../commands/utils/createUiBuilderComponent';
8
+ import { run } from '../commands/generateComponents';
9
+ jest.mock('../commands/utils/syncAmplifyUiBuilderComponents');
10
+ jest.mock('../commands/utils/createUiBuilderComponent');
11
+ jest.mock('../commands/utils/shouldRenderComponents');
12
+ jest.mock('../commands/utils/notifyMissingPackages');
13
+ const shouldRenderComponentsDependency_mock = shouldRenderComponentsDependency as any;
14
+ const notifyMissingPackagesDependency_mock = notifyMissingPackagesDependency as any;
15
+ const listUiBuilderComponentsDependency_mock = listUiBuilderComponentsDependency as any;
16
+ const generateUiBuilderComponentsDependency_mock = generateUiBuilderComponentsDependency as any;
17
+ const generateUiBuilderThemesDependency_mock = generateUiBuilderThemesDependency as any;
18
+ const listUiBuilderThemesDependency_mock = listUiBuilderThemesDependency as any;
19
+ const generateAmplifyUiBuilderIndexFileDependency_mock = generateAmplifyUiBuilderIndexFileDependency as any;
20
+
21
+ shouldRenderComponentsDependency_mock.shouldRenderComponents = jest.fn().mockImplementation(() => true);
22
+ notifyMissingPackagesDependency_mock.notifyMissingPackages = jest.fn().mockImplementation(() => true);
23
+
24
+ describe('can generate components', () => {
25
+ let context: any;
26
+ let schemas: any;
27
+ let generateUiBuilderComponents: any;
28
+ let generateUiBuilderThemes: any;
29
+ beforeEach(() => {
30
+ context = {};
31
+ schemas = {
32
+ entities: [
33
+ {
34
+ resultType: 'SUCCESS',
35
+ schemaName: 'testSchema',
36
+ },
37
+ ],
38
+ };
39
+ listUiBuilderComponentsDependency_mock.listUiBuilderComponents = jest.fn().mockImplementation(() => schemas);
40
+ listUiBuilderThemesDependency_mock.listUiBuilderThemes = jest.fn().mockImplementation(() => schemas);
41
+ generateUiBuilderComponentsDependency_mock.generateUiBuilderComponents = jest.fn().mockImplementation(() => schemas.entities);
42
+ generateUiBuilderThemesDependency_mock.generateUiBuilderThemes = jest.fn().mockImplementation(() => schemas.entities);
43
+ generateAmplifyUiBuilderIndexFileDependency_mock.generateAmplifyUiBuilderIndexFile = jest.fn().mockImplementation(() => true);
44
+ });
45
+ it('runs generateComponents', async () => {
46
+ await run(context);
47
+ expect(generateUiBuilderComponentsDependency_mock.generateUiBuilderComponents).toBeCalledTimes(1);
48
+ expect(generateUiBuilderThemesDependency_mock.generateUiBuilderThemes).toBeCalledTimes(1);
49
+ });
50
+ });
@@ -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
+ });
@@ -0,0 +1,10 @@
1
+ jest.mock('amplify-prompts');
2
+ import { printer } from 'amplify-prompts';
3
+ import { run } from '../commands/help';
4
+ printer.info = jest.fn();
5
+ describe('can run help script', () => {
6
+ it('runs help script', async () => {
7
+ await run();
8
+ expect(printer.info).toBeCalledTimes(1);
9
+ });
10
+ });
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,73 @@
1
+ import * as printerDependency from 'amplify-prompts';
2
+ import * as JSONUtilitiesDependency from 'amplify-cli-core';
3
+ import { notifyMissingPackages } from '../commands/utils/notifyMissingPackages';
4
+ jest.mock('amplify-prompts');
5
+ jest.mock('amplify-cli-core');
6
+ printerDependency.printer.info = jest.fn();
7
+ printerDependency.printer.debug = jest.fn();
8
+ printerDependency.printer.warn = jest.fn();
9
+
10
+ describe('should notify when packages are missing', () => {
11
+ beforeEach(() => {
12
+ jest.resetAllMocks();
13
+ JSONUtilitiesDependency.JSONUtilities.readJson = jest.fn().mockImplementation(() => ({
14
+ projectPath: __dirname,
15
+ dependencies: [],
16
+ }));
17
+ });
18
+ it('skips notification if localEnv path cannot be determined', async () => {
19
+ const context = {
20
+ input: {
21
+ options: {
22
+ localEnvFilePath: 'fake',
23
+ },
24
+ },
25
+ };
26
+ notifyMissingPackages(context as any);
27
+ expect(printerDependency.printer.debug).toBeCalledTimes(1);
28
+ });
29
+
30
+ it('skips notification if package.json cannot be determined', async () => {
31
+ JSONUtilitiesDependency.JSONUtilities.readJson = jest.fn().mockImplementation(() => ({
32
+ projectPath: 'asdf',
33
+ dependencies: [],
34
+ }));
35
+ const context = {
36
+ input: {
37
+ options: {
38
+ localEnvFilePath: __dirname + '/mock.json',
39
+ },
40
+ },
41
+ };
42
+ notifyMissingPackages(context as any);
43
+ expect(printerDependency.printer.debug).toBeCalledTimes(1);
44
+ });
45
+
46
+ it('notifies for all missing dependencies', async () => {
47
+ const context = {
48
+ input: {
49
+ options: {
50
+ localEnvFilePath: __dirname + '/mock.json',
51
+ },
52
+ },
53
+ };
54
+ notifyMissingPackages(context as any);
55
+ expect(printerDependency.printer.warn).toBeCalledTimes(2);
56
+ });
57
+
58
+ it('notifies for partial missing dependencies', async () => {
59
+ JSONUtilitiesDependency.JSONUtilities.readJson = jest.fn().mockImplementation(() => ({
60
+ projectPath: __dirname,
61
+ dependencies: { '@aws-amplify/ui-react': '1.2.0' },
62
+ }));
63
+ const context = {
64
+ input: {
65
+ options: {
66
+ localEnvFilePath: __dirname + '/mock.json',
67
+ },
68
+ },
69
+ };
70
+ notifyMissingPackages(context as any);
71
+ expect(printerDependency.printer.warn).toBeCalledTimes(1);
72
+ });
73
+ });
@@ -0,0 +1,3 @@
1
+ {
2
+ "version": "1.0.0"
3
+ }
@@ -1,7 +1,8 @@
1
- const { shouldRenderComponents } = require('../shouldRenderComponents');
1
+ import { $TSContext } from 'amplify-cli-core';
2
+ import { shouldRenderComponents } from '../commands/utils/shouldRenderComponents';
2
3
 
3
4
  describe('should render components', () => {
4
- let context;
5
+ let context: $TSContext | any;
5
6
  beforeEach(() => {
6
7
  context = {
7
8
  input: {