@emuanalytics/flow-cli 1.3.31

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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/dist/commands/apikeys/create.js +144 -0
  4. package/dist/commands/apikeys/create.js.map +1 -0
  5. package/dist/commands/apikeys/delete.js +74 -0
  6. package/dist/commands/apikeys/delete.js.map +1 -0
  7. package/dist/commands/apikeys/list.js +53 -0
  8. package/dist/commands/apikeys/list.js.map +1 -0
  9. package/dist/commands/apikeys/metadata.js +59 -0
  10. package/dist/commands/apikeys/metadata.js.map +1 -0
  11. package/dist/commands/apikeys.js +13 -0
  12. package/dist/commands/apikeys.js.map +1 -0
  13. package/dist/commands/applications.js +13 -0
  14. package/dist/commands/applications.js.map +1 -0
  15. package/dist/commands/apps/create.js +167 -0
  16. package/dist/commands/apps/create.js.map +1 -0
  17. package/dist/commands/apps/delete.js +74 -0
  18. package/dist/commands/apps/delete.js.map +1 -0
  19. package/dist/commands/apps/export.js +94 -0
  20. package/dist/commands/apps/export.js.map +1 -0
  21. package/dist/commands/apps/import.js +119 -0
  22. package/dist/commands/apps/import.js.map +1 -0
  23. package/dist/commands/apps/list.js +54 -0
  24. package/dist/commands/apps/list.js.map +1 -0
  25. package/dist/commands/apps/metadata.js +61 -0
  26. package/dist/commands/apps/metadata.js.map +1 -0
  27. package/dist/commands/apps/update.js +110 -0
  28. package/dist/commands/apps/update.js.map +1 -0
  29. package/dist/commands/databases/create.js +190 -0
  30. package/dist/commands/databases/create.js.map +1 -0
  31. package/dist/commands/databases/delete.js +74 -0
  32. package/dist/commands/databases/delete.js.map +1 -0
  33. package/dist/commands/databases/list.js +52 -0
  34. package/dist/commands/databases/list.js.map +1 -0
  35. package/dist/commands/databases.js +13 -0
  36. package/dist/commands/databases.js.map +1 -0
  37. package/dist/commands/datasets/attributes.js +48 -0
  38. package/dist/commands/datasets/attributes.js.map +1 -0
  39. package/dist/commands/datasets/create.js +180 -0
  40. package/dist/commands/datasets/create.js.map +1 -0
  41. package/dist/commands/datasets/delete.js +74 -0
  42. package/dist/commands/datasets/delete.js.map +1 -0
  43. package/dist/commands/datasets/export.js +95 -0
  44. package/dist/commands/datasets/export.js.map +1 -0
  45. package/dist/commands/datasets/list.js +52 -0
  46. package/dist/commands/datasets/list.js.map +1 -0
  47. package/dist/commands/datasets/metadata.js +59 -0
  48. package/dist/commands/datasets/metadata.js.map +1 -0
  49. package/dist/commands/datasets/query.js +86 -0
  50. package/dist/commands/datasets/query.js.map +1 -0
  51. package/dist/commands/datasets/update.js +166 -0
  52. package/dist/commands/datasets/update.js.map +1 -0
  53. package/dist/commands/datasets.js +13 -0
  54. package/dist/commands/datasets.js.map +1 -0
  55. package/dist/commands/job.js +13 -0
  56. package/dist/commands/job.js.map +1 -0
  57. package/dist/commands/jobs/delete.js +74 -0
  58. package/dist/commands/jobs/delete.js.map +1 -0
  59. package/dist/commands/jobs/list.js +52 -0
  60. package/dist/commands/jobs/list.js.map +1 -0
  61. package/dist/commands/jobs/metadata.js +36 -0
  62. package/dist/commands/jobs/metadata.js.map +1 -0
  63. package/dist/commands/new.js +63 -0
  64. package/dist/commands/new.js.map +1 -0
  65. package/dist/commands/styles/create.js +130 -0
  66. package/dist/commands/styles/create.js.map +1 -0
  67. package/dist/commands/styles/delete.js +74 -0
  68. package/dist/commands/styles/delete.js.map +1 -0
  69. package/dist/commands/styles/edit.js +37 -0
  70. package/dist/commands/styles/edit.js.map +1 -0
  71. package/dist/commands/styles/list.js +51 -0
  72. package/dist/commands/styles/list.js.map +1 -0
  73. package/dist/commands/styles/metadata.js +61 -0
  74. package/dist/commands/styles/metadata.js.map +1 -0
  75. package/dist/commands/styles/view.js +37 -0
  76. package/dist/commands/styles/view.js.map +1 -0
  77. package/dist/commands/styles.js +13 -0
  78. package/dist/commands/styles.js.map +1 -0
  79. package/dist/commands/tiles/create.js +221 -0
  80. package/dist/commands/tiles/create.js.map +1 -0
  81. package/dist/commands/tiles/delete.js +74 -0
  82. package/dist/commands/tiles/delete.js.map +1 -0
  83. package/dist/commands/tiles/list.js +51 -0
  84. package/dist/commands/tiles/list.js.map +1 -0
  85. package/dist/commands/tiles/metadata.js +61 -0
  86. package/dist/commands/tiles/metadata.js.map +1 -0
  87. package/dist/commands/tiles/preview.js +33 -0
  88. package/dist/commands/tiles/preview.js.map +1 -0
  89. package/dist/commands/tiles/tilespec.js +44 -0
  90. package/dist/commands/tiles/tilespec.js.map +1 -0
  91. package/dist/commands/tiles/update.js +194 -0
  92. package/dist/commands/tiles/update.js.map +1 -0
  93. package/dist/commands/tiles.js +13 -0
  94. package/dist/commands/tiles.js.map +1 -0
  95. package/dist/commands/upload/list.js +51 -0
  96. package/dist/commands/upload/list.js.map +1 -0
  97. package/dist/commands/upload/upload.js +171 -0
  98. package/dist/commands/upload/upload.js.map +1 -0
  99. package/dist/commands/upload.js +13 -0
  100. package/dist/commands/upload.js.map +1 -0
  101. package/dist/commands/users/create.js +140 -0
  102. package/dist/commands/users/create.js.map +1 -0
  103. package/dist/commands/users/delete.js +74 -0
  104. package/dist/commands/users/delete.js.map +1 -0
  105. package/dist/commands/users/list.js +52 -0
  106. package/dist/commands/users/list.js.map +1 -0
  107. package/dist/commands/users/metadata.js +61 -0
  108. package/dist/commands/users/metadata.js.map +1 -0
  109. package/dist/commands/users/update.js +151 -0
  110. package/dist/commands/users/update.js.map +1 -0
  111. package/dist/commands/users.js +13 -0
  112. package/dist/commands/users.js.map +1 -0
  113. package/dist/commands/version.js +35 -0
  114. package/dist/commands/version.js.map +1 -0
  115. package/dist/create-app/create-app.js +147 -0
  116. package/dist/create-app/create-app.js.map +1 -0
  117. package/dist/create-app/download.js +52 -0
  118. package/dist/create-app/download.js.map +1 -0
  119. package/dist/create-app/starters.js +18 -0
  120. package/dist/create-app/starters.js.map +1 -0
  121. package/dist/create-app/unzip.js +89 -0
  122. package/dist/create-app/unzip.js.map +1 -0
  123. package/dist/create-app/utils.js +134 -0
  124. package/dist/create-app/utils.js.map +1 -0
  125. package/dist/create-app/version.js +9 -0
  126. package/dist/create-app/version.js.map +1 -0
  127. package/dist/index.js +71 -0
  128. package/dist/index.js.map +1 -0
  129. package/dist/style-server/app.js +119 -0
  130. package/dist/style-server/app.js.map +1 -0
  131. package/dist/style-server/index.js +97 -0
  132. package/dist/style-server/index.js.map +1 -0
  133. package/dist/utils/index.js +263 -0
  134. package/dist/utils/index.js.map +1 -0
  135. package/maputnik/app.8c54efadcc6633a431f7.js +64 -0
  136. package/maputnik/bundle-stats.html +53 -0
  137. package/maputnik/bundle-stats.json +93486 -0
  138. package/maputnik/favicon.ico +0 -0
  139. package/maputnik/fonts/Roboto-Medium.ttf +0 -0
  140. package/maputnik/fonts/Roboto-Regular.ttf +0 -0
  141. package/maputnik/index.html +131 -0
  142. package/maputnik/manifest.json +9 -0
  143. package/package.json +84 -0
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright © 2018 Emu Analytics
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.handler = exports.builder = exports.desc = exports.command = void 0;
39
+ const utils_1 = require("../../utils");
40
+ const inquirer = __importStar(require("inquirer"));
41
+ exports.command = ['delete <email>', 'rm', 'del'];
42
+ exports.desc = 'Delete a user';
43
+ const builder = (args) => {
44
+ return args
45
+ .option('yes', { alias: 'y', description: `Answer 'yes' to confirmation messages`, default: false })
46
+ .positional('email', { describe: 'Email (or unique prefix)', type: 'string' });
47
+ };
48
+ exports.builder = builder;
49
+ function handler({ client, email, yes }) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ try {
52
+ const resource = yield (0, utils_1.resolveResource)(email, client.auth.users, 'email');
53
+ let confirmed = yes;
54
+ if (!confirmed) {
55
+ const answers = yield inquirer.prompt({
56
+ name: 'confirmed',
57
+ type: 'confirm',
58
+ message: `Are you sure you want to delete '${resource.email}'`,
59
+ default: false
60
+ });
61
+ confirmed = answers.confirmed;
62
+ }
63
+ if (confirmed) {
64
+ yield client.auth.users.delete(resource.id);
65
+ (0, utils_1.logDetail)('Deleted');
66
+ }
67
+ }
68
+ catch (e) {
69
+ (0, utils_1.logError)(e);
70
+ }
71
+ });
72
+ }
73
+ exports.handler = handler;
74
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/users/delete.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAwE;AAExE,mDAAqC;AAGxB,QAAA,OAAO,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAE1C,QAAA,IAAI,GAAG,eAAe,CAAC;AAE7B,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1C,OAAO,IAAI;SACR,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,uCAAuC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SACnG,UAAU,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,0BAA0B,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnF,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB;AAQF,SAAsB,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAU;;QAC1D,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAE1E,IAAI,SAAS,GAAG,GAAG,CAAC;YAEpB,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;oBACpC,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,oCAAoC,QAAQ,CAAC,KAAK,GAAG;oBAC9D,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBACH,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;aAC/B;YAED,IAAI,SAAS,EAAE;gBACb,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC5C,IAAA,iBAAS,EAAC,SAAS,CAAC,CAAC;aACtB;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;SACb;IACH,CAAC;CAAA;AAvBD,0BAuBC"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright © 2018 Emu Analytics
4
+ */
5
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
+ return new (P || (P = Promise))(function (resolve, reject) {
8
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
12
+ });
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.handler = exports.builder = exports.desc = exports.command = void 0;
16
+ const utils_1 = require("../../utils");
17
+ exports.command = ['list [email]', 'ls', '$0'];
18
+ exports.desc = 'List users';
19
+ const builder = (args) => {
20
+ return args
21
+ .option('limit', { alias: 'n', type: 'number', describe: 'Limit to n results' })
22
+ .option('offset', { alias: ['o'], type: 'number', describe: 'Start list at offset n' })
23
+ .option('sort', { alias: ['s'], type: 'string', describe: 'Sort by attribute' })
24
+ .conflicts('email', ['limit', 'offset', 'sort'])
25
+ .positional('email', { describe: 'User email (or unique prefix)', type: 'string' });
26
+ };
27
+ exports.builder = builder;
28
+ function handler({ client, email, format, offset, limit, sort }) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ try {
31
+ if (email) {
32
+ const resource = yield (0, utils_1.resolveResource)(email, client.auth.users, 'email');
33
+ (0, utils_1.logObject)(resource, format);
34
+ }
35
+ else {
36
+ let results = yield client.auth.users.list({ offset, limit, sort });
37
+ if (format === 'table') {
38
+ results = results.map((u) => (Object.assign(Object.assign({}, u), { name: `${u.firstName} ${u.lastName}` })));
39
+ (0, utils_1.logObject)(results, 'table', ['id', 'email', 'name', 'emailVerified', 'enabled']);
40
+ }
41
+ else {
42
+ (0, utils_1.logObject)(results, format || 'json');
43
+ }
44
+ }
45
+ }
46
+ catch (e) {
47
+ (0, utils_1.logError)(e);
48
+ }
49
+ });
50
+ }
51
+ exports.handler = handler;
52
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/users/list.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;AAEH,uCAAwE;AAI3D,QAAA,OAAO,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEvC,QAAA,IAAI,GAAG,YAAY,CAAC;AAE1B,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1C,OAAO,IAAI;SACR,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC;SAC/E,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,wBAAwB,EAAE,CAAC;SACtF,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;SAC/E,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;SAC/C,UAAU,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,+BAA+B,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxF,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB;AAWF,SAAsB,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAU;;QAClF,IAAI;YACF,IAAI,KAAK,EAAE;gBACT,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC1E,IAAA,iBAAS,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpE,IAAI,MAAM,KAAK,OAAO,EAAE;oBACtB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,iCAAM,CAAC,KAAE,IAAI,EAAE,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAG,CAAC,CAAC;oBACtF,IAAA,iBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC;iBAClF;qBAAM;oBACL,IAAA,iBAAS,EAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;iBACtC;aACF;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;SACb;IACH,CAAC;CAAA;AAjBD,0BAiBC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright © 2018 Emu Analytics
4
+ */
5
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
+ return new (P || (P = Promise))(function (resolve, reject) {
8
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
12
+ });
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.handler = exports.builder = exports.desc = exports.command = void 0;
16
+ const utils_1 = require("../../utils");
17
+ exports.command = ['metadata <email>', 'meta'];
18
+ exports.desc = 'Get/set resource metadata';
19
+ const builder = (args) => {
20
+ return args
21
+ .positional('email', { describe: 'User email (or unique prefix)', type: 'string' })
22
+ .option('set', {
23
+ type: 'array',
24
+ describe: 'One or more key/values to set in form <key>=<value>. Use <key>= to delete a key.'
25
+ });
26
+ };
27
+ exports.builder = builder;
28
+ function handler({ client, email, set }) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ try {
31
+ if (!set) {
32
+ // Get metadata
33
+ const resource = yield (0, utils_1.resolveResource)(email, client.auth.users, 'email');
34
+ (0, utils_1.logObject)(resource.metadata, 'json');
35
+ }
36
+ else {
37
+ // Set metadata
38
+ let resource = yield (0, utils_1.resolveResource)(email, client.auth.users, 'email');
39
+ // Update metadata
40
+ const keyValues = (0, utils_1.getMetadataKeyValues)(set);
41
+ for (const key of Object.keys(keyValues)) {
42
+ const value = keyValues[key];
43
+ if (value === '') {
44
+ yield client.auth.users.deleteMetadata(resource.id, key);
45
+ }
46
+ else {
47
+ yield client.auth.users.setMetadata(resource.id, key, value);
48
+ }
49
+ }
50
+ // Reload
51
+ resource = yield (0, utils_1.resolveResource)(email, client.auth.users, 'email');
52
+ (0, utils_1.logObject)(resource.metadata, 'json');
53
+ }
54
+ }
55
+ catch (e) {
56
+ (0, utils_1.logError)(e);
57
+ }
58
+ });
59
+ }
60
+ exports.handler = handler;
61
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/commands/users/metadata.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;AAEH,uCAAyF;AAI5E,QAAA,OAAO,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAEvC,QAAA,IAAI,GAAG,2BAA2B,CAAC;AAEzC,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1C,OAAO,IAAI;SACR,UAAU,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,+BAA+B,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;SAClF,MAAM,CAAC,KAAK,EAAE;QACb,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,kFAAkF;KAC7F,CAAC,CAAC;AACP,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB;AASF,SAAsB,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAU;;QAC1D,IAAI;YACF,IAAI,CAAC,GAAG,EAAE;gBACR,eAAe;gBACf,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC1E,IAAA,iBAAS,EAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aACtC;iBAAM;gBACL,eAAe;gBACf,IAAI,QAAQ,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAExE,kBAAkB;gBAClB,MAAM,SAAS,GAAG,IAAA,4BAAoB,EAAC,GAAG,CAAC,CAAC;gBAC5C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACxC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,KAAK,KAAK,EAAE,EAAE;wBAChB,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;qBAC1D;yBAAM;wBACL,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;qBAC9D;iBACF;gBAED,SAAS;gBACT,QAAQ,GAAG,MAAM,IAAA,uBAAe,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAEpE,IAAA,iBAAS,EAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;aACtC;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;SACb;IACH,CAAC;CAAA;AA7BD,0BA6BC"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright © 2018 Emu Analytics
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
28
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
29
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
30
+ return new (P || (P = Promise))(function (resolve, reject) {
31
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
32
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
33
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
34
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
35
+ });
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.handler = exports.builder = exports.desc = exports.command = void 0;
39
+ const utils_1 = require("../../utils");
40
+ const inquirer = __importStar(require("inquirer"));
41
+ const uuid_1 = require("uuid");
42
+ exports.command = ['update <email>'];
43
+ exports.desc = 'Update a user';
44
+ const builder = (args) => {
45
+ return args
46
+ .option('firstName', { description: 'First name', type: 'string' })
47
+ .option('lastName', { description: 'Last name', type: 'string' })
48
+ .option('roles', { alias: 'r', description: 'Roles (comma-separated)', type: 'array' })
49
+ .option('emailVerified', { description: 'Email verified', type: 'boolean' })
50
+ .option('enabled', { alias: 'e', description: 'Login enabled', type: 'boolean' })
51
+ .option('interactive', {
52
+ alias: 'i',
53
+ describe: 'Show interactive prompts',
54
+ type: 'boolean',
55
+ default: 'true'
56
+ })
57
+ .positional('email', { describe: 'Email (or unique prefix)', type: 'string' });
58
+ };
59
+ exports.builder = builder;
60
+ function handler(params) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const client = params.client;
63
+ const email = params.email;
64
+ try {
65
+ const user = yield (0, utils_1.resolveResource)(email, client.auth.users, 'email');
66
+ if (params.interactive) {
67
+ const answers = yield inquirer.prompt([
68
+ {
69
+ type: 'input',
70
+ name: 'firstName',
71
+ message: 'First name',
72
+ default: params.firstName || user.firstName
73
+ },
74
+ { type: 'input', name: 'lastName', message: 'Last name', default: params.lastName || user.lastName },
75
+ {
76
+ type: 'input',
77
+ name: 'roles',
78
+ message: 'Roles (comma separated)',
79
+ default: (params.roles || user.roles).join(', ')
80
+ },
81
+ {
82
+ type: 'confirm',
83
+ name: 'emailVerified',
84
+ message: 'Verified?',
85
+ default: params.hasOwnProperty('emailVerified') ? params.emailVerified : user.emailVerified
86
+ },
87
+ {
88
+ type: 'confirm',
89
+ name: 'enabled',
90
+ message: 'Enabled?',
91
+ default: params.hasOwnProperty('enabled') ? params.enabled : user.enabled
92
+ },
93
+ {
94
+ type: 'confirm',
95
+ name: 'changePassword',
96
+ message: 'Change password?',
97
+ default: false
98
+ },
99
+ {
100
+ type: 'password',
101
+ name: 'password',
102
+ message: 'New password',
103
+ when: ({ changePassword }) => changePassword
104
+ },
105
+ {
106
+ type: 'password',
107
+ name: 'confirmPassword',
108
+ message: 'Confirm password',
109
+ when: ({ changePassword }) => changePassword
110
+ }
111
+ ]);
112
+ if (answers.changePassword) {
113
+ if (answers.password !== answers.confirmPassword) {
114
+ throw new Error('Passwords do not match');
115
+ }
116
+ params.password = answers.password;
117
+ }
118
+ params.firstName = answers.firstName;
119
+ params.lastName = answers.lastName;
120
+ params.roles = answers.roles.split(',').map((r) => r.trim());
121
+ params.emailVerified = answers.emailVerified;
122
+ params.enabled = answers.enabled;
123
+ }
124
+ if (params.password) {
125
+ const passwordResetToken = (0, uuid_1.v4)();
126
+ yield client.auth.users.update(user.id, {
127
+ passwordResetToken
128
+ });
129
+ yield client.auth.resetPassword(user.email, params.password, user.applicationId, passwordResetToken);
130
+ }
131
+ const updatedUser = yield client.auth.users.update(user.id, {
132
+ firstName: params.firstName,
133
+ lastName: params.lastName,
134
+ roles: params.roles,
135
+ emailVerified: params.emailVerified,
136
+ enabled: params.enabled
137
+ });
138
+ if (params.format === 'table') {
139
+ (0, utils_1.logObject)(updatedUser, 'table');
140
+ }
141
+ else {
142
+ (0, utils_1.logObject)(updatedUser, 'json');
143
+ }
144
+ }
145
+ catch (e) {
146
+ (0, utils_1.logError)(e);
147
+ }
148
+ });
149
+ }
150
+ exports.handler = handler;
151
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/users/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright © 2018 Emu Analytics
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.builder = exports.desc = exports.command = void 0;
7
+ exports.command = 'users <command>';
8
+ exports.desc = 'User commands';
9
+ const builder = (args) => {
10
+ return args.commandDir('users').demandCommand(1);
11
+ };
12
+ exports.builder = builder;
13
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAIU,QAAA,OAAO,GAAG,iBAAiB,CAAC;AAE5B,QAAA,IAAI,GAAG,eAAe,CAAC;AAE7B,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,EAAE;IAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright © 2018 Emu Analytics
4
+ */
5
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
+ return new (P || (P = Promise))(function (resolve, reject) {
8
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
12
+ });
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.handler = exports.desc = void 0;
16
+ const utils_1 = require("../utils");
17
+ const pkg = require('../../package.json');
18
+ exports.desc = `Display Flo.w Engine version information`;
19
+ const handler = ({ host, apiKey, client, format }) => __awaiter(void 0, void 0, void 0, function* () {
20
+ try {
21
+ const config = yield client.config();
22
+ const versionInfo = {
23
+ 'CLI version': pkg.version,
24
+ 'Flo.w version': config.version.tag,
25
+ 'Flo.w host': host,
26
+ 'API key': apiKey
27
+ };
28
+ (0, utils_1.logObject)(versionInfo, format);
29
+ }
30
+ catch (e) {
31
+ (0, utils_1.logError)(e.message);
32
+ }
33
+ });
34
+ exports.handler = handler;
35
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;AAIH,oCAAwD;AACxD,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE7B,QAAA,IAAI,GAAG,0CAA0C,CAAC;AASxD,MAAM,OAAO,GAAG,CAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAU,EAAE,EAAE;IACxE,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG;YAClB,aAAa,EAAE,GAAG,CAAC,OAAO;YAC1B,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG;YACnC,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,MAAM;SAClB,CAAC;QACF,IAAA,iBAAS,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;KAChC;IAAC,OAAO,CAAC,EAAE;QACV,IAAA,gBAAQ,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC;KACrB;AACH,CAAC,CAAA,CAAC;AAbW,QAAA,OAAO,WAalB"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.prepareStarter = exports.createApp = void 0;
39
+ const cli_spinner_1 = require("cli-spinner");
40
+ const fs = __importStar(require("fs"));
41
+ const path_1 = require("path");
42
+ const c = __importStar(require("colorette"));
43
+ const download_1 = require("./download");
44
+ const unzip_1 = require("./unzip");
45
+ const utils_1 = require("./utils");
46
+ const replace_in_file_1 = __importDefault(require("replace-in-file"));
47
+ const utils_2 = require("../utils");
48
+ const starterCache = new Map();
49
+ function createApp(starter, projectName, autoRun) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ if (fs.existsSync(projectName)) {
52
+ throw new Error(`Folder "./${projectName}" already exists, please choose a different project name.`);
53
+ }
54
+ projectName = projectName.toLowerCase().trim();
55
+ if (!validateProjectName(projectName)) {
56
+ throw new Error(`Project name "${projectName}" is not valid. It must be a kebab-case name without spaces.`);
57
+ }
58
+ const loading = new cli_spinner_1.Spinner(c.bold('Preparing starter'));
59
+ loading.setSpinnerString(18);
60
+ loading.start();
61
+ const startT = Date.now();
62
+ try {
63
+ const moveTo = yield prepareStarter(starter);
64
+ if (!moveTo) {
65
+ throw new Error('starter install failed');
66
+ }
67
+ yield moveTo(projectName);
68
+ }
69
+ finally {
70
+ loading.stop(true);
71
+ }
72
+ const time = (0, utils_1.printDuration)(Date.now() - startT);
73
+ (0, utils_2.log)(`${c.green('✔')} ${c.bold('All setup')} ${(0, utils_1.onlyUnix)('🎉')} ${c.dim(time)}
74
+
75
+ ${c.dim((0, utils_1.terminalPrompt)())} ${c.green('npm start')}
76
+ Starts the development server.
77
+
78
+ ${c.dim((0, utils_1.terminalPrompt)())} ${c.green('npm run build')}
79
+ Builds your app in production mode.
80
+
81
+ ${c.dim((0, utils_1.terminalPrompt)())} ${c.green('npm test')}
82
+ Starts the test runner.
83
+
84
+
85
+ ${c.dim('We suggest that you begin by typing:')}
86
+
87
+ ${c.dim((0, utils_1.terminalPrompt)())} ${c.green('cd')} ${projectName}
88
+ ${c.dim((0, utils_1.terminalPrompt)())} ${c.green('npm start')}
89
+ ${renderDocs(starter)}
90
+
91
+ Happy coding! 🎈
92
+ `);
93
+ if (autoRun) {
94
+ yield (0, utils_1.npm)('start', projectName, 'inherit');
95
+ }
96
+ });
97
+ }
98
+ exports.createApp = createApp;
99
+ function renderDocs(starter) {
100
+ const docs = starter.docs;
101
+ if (!docs) {
102
+ return '';
103
+ }
104
+ return `
105
+ ${c.dim('Further reading:')}
106
+
107
+ ${c.dim('-')} ${c.cyan(docs)}`;
108
+ }
109
+ function prepareStarter(starter) {
110
+ let promise = starterCache.get(starter);
111
+ if (!promise) {
112
+ promise = prepare(starter);
113
+ // silent crash, we will handle later
114
+ promise.catch(e => {
115
+ (0, utils_2.logError)(e);
116
+ return;
117
+ });
118
+ starterCache.set(starter, promise);
119
+ }
120
+ return promise;
121
+ }
122
+ exports.prepareStarter = prepareStarter;
123
+ function prepare(starter) {
124
+ return __awaiter(this, void 0, void 0, function* () {
125
+ const baseDir = process.cwd();
126
+ const tmpPath = (0, path_1.join)(baseDir, '.tmp-flow-starter');
127
+ const buffer = yield (0, download_1.downloadStarter)(starter);
128
+ (0, utils_1.setTmpDirectory)(tmpPath);
129
+ yield (0, unzip_1.unZipBuffer)(buffer, tmpPath);
130
+ yield (0, utils_1.npm)('install', tmpPath);
131
+ return (projectName) => __awaiter(this, void 0, void 0, function* () {
132
+ const filePath = (0, path_1.join)(baseDir, projectName);
133
+ yield (0, utils_1.renameAsync)(tmpPath, filePath);
134
+ yield (0, replace_in_file_1.default)({
135
+ files: [(0, path_1.join)(filePath, '*'), (0, path_1.join)(filePath, 'config/**'), (0, path_1.join)(filePath, 'src/**')],
136
+ from: /flow-starter-project-name/g,
137
+ to: projectName,
138
+ allowEmptyPaths: true
139
+ });
140
+ (0, utils_1.setTmpDirectory)(null);
141
+ });
142
+ });
143
+ }
144
+ function validateProjectName(projectName) {
145
+ return !/[^a-zA-Z0-9-]/.test(projectName);
146
+ }
147
+ //# sourceMappingURL=create-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-app.js","sourceRoot":"","sources":["../../src/create-app/create-app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.downloadStarter = exports.STARTER_BASE_URL = void 0;
27
+ const https_1 = require("https");
28
+ const Url = __importStar(require("url"));
29
+ exports.STARTER_BASE_URL = 'https://s3.eu-west-2.amazonaws.com/emu-flo.w/starters';
30
+ function downloadStarter(starter) {
31
+ return downloadFromURL(`${exports.STARTER_BASE_URL}/${starter.repo}`);
32
+ }
33
+ exports.downloadStarter = downloadStarter;
34
+ function downloadFromURL(url) {
35
+ const options = Url.parse(url);
36
+ return new Promise((resolve, reject) => {
37
+ (0, https_1.get)(options, res => {
38
+ if (res.statusCode === 302) {
39
+ downloadFromURL(res.headers.location).then(resolve, reject);
40
+ }
41
+ else {
42
+ const data = [];
43
+ res.on('data', chunk => data.push(chunk));
44
+ res.on('end', () => {
45
+ resolve(Buffer.concat(data));
46
+ });
47
+ res.on('error', reject);
48
+ }
49
+ });
50
+ });
51
+ }
52
+ //# sourceMappingURL=download.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/create-app/download.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAA4B;AAC5B,yCAA2B;AAGd,QAAA,gBAAgB,GAAG,uDAAuD,CAAC;AAExF,SAAgB,eAAe,CAAC,OAAgB;IAC9C,OAAO,eAAe,CAAC,GAAG,wBAAgB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC;AAFD,0CAEC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,WAAG,EAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACjB,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE;gBAC1B,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,QAAS,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aAC9D;iBAAM;gBACL,MAAM,IAAI,GAAU,EAAE,CAAC;gBAEvB,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC1C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACjB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aACzB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}