dceky 1.0.0-beta.6 → 1.0.2

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 (199) hide show
  1. package/.eslintrc.js +93 -0
  2. package/README.md +41 -0
  3. package/cypress/e2e/profile-test.cy.ts +10 -0
  4. package/cypress/fixtures/example.json +5 -0
  5. package/cypress/support/commands.ts +37 -0
  6. package/cypress/support/e2e.ts +17 -0
  7. package/cypress.config.ts +9 -0
  8. package/docs/GlobalsAndProfiles.md +23 -0
  9. package/lib/setup/addToGitIgnore.d.ts +6 -0
  10. package/lib/setup/addToGitIgnore.js +46 -0
  11. package/lib/setup/addToGitIgnore.js.map +1 -0
  12. package/lib/setup/checkRequiredFiles.d.ts +6 -0
  13. package/lib/setup/checkRequiredFiles.js +58 -0
  14. package/lib/setup/checkRequiredFiles.js.map +1 -0
  15. package/lib/setup/genCommandImportFile.d.ts +7 -0
  16. package/lib/setup/genCommandImportFile.js +66 -0
  17. package/lib/setup/genCommandImportFile.js.map +1 -0
  18. package/lib/setup/genConfiguration/helpers/resolveDependents.d.ts +13 -0
  19. package/lib/setup/genConfiguration/helpers/resolveDependents.js +50 -0
  20. package/lib/setup/genConfiguration/helpers/resolveDependents.js.map +1 -0
  21. package/lib/setup/genConfiguration/helpers/splitEnv.d.ts +10 -0
  22. package/lib/setup/genConfiguration/helpers/splitEnv.js +27 -0
  23. package/lib/setup/genConfiguration/helpers/splitEnv.js.map +1 -0
  24. package/lib/setup/genConfiguration/index.d.ts +15 -0
  25. package/lib/setup/genConfiguration/index.js +86 -0
  26. package/lib/setup/genConfiguration/index.js.map +1 -0
  27. package/lib/setup/genConfiguration/types/DependentValue.d.ts +11 -0
  28. package/lib/setup/genConfiguration/types/DependentValue.js +3 -0
  29. package/lib/setup/genConfiguration/types/DependentValue.js.map +1 -0
  30. package/lib/setup/genConfiguration/types/GlobalsOrProfile.d.ts +9 -0
  31. package/lib/setup/genConfiguration/types/GlobalsOrProfile.js +3 -0
  32. package/lib/setup/genConfiguration/types/GlobalsOrProfile.js.map +1 -0
  33. package/lib/setup/genConfiguration/types/SplitEnv.d.ts +13 -0
  34. package/lib/setup/genConfiguration/types/SplitEnv.js +3 -0
  35. package/lib/setup/genConfiguration/types/SplitEnv.js.map +1 -0
  36. package/lib/setup/genConfigurationFile.d.ts +2 -0
  37. package/lib/setup/genConfigurationFile.js +63 -0
  38. package/lib/setup/genConfigurationFile.js.map +1 -0
  39. package/lib/setup/genDynamicConfigFile.d.ts +5 -0
  40. package/lib/setup/genDynamicConfigFile.js +28 -0
  41. package/lib/setup/genDynamicConfigFile.js.map +1 -0
  42. package/lib/setup/index.d.ts +1 -0
  43. package/lib/setup/index.js +16 -0
  44. package/lib/setup/index.js.map +1 -0
  45. package/lib/setup/setupCypressDependencies.d.ts +6 -0
  46. package/lib/setup/setupCypressDependencies.js +40 -0
  47. package/lib/setup/setupCypressDependencies.js.map +1 -0
  48. package/lib/src/commands/assertDoesNotHaveClass.d.ts +20 -0
  49. package/lib/src/commands/assertDoesNotHaveClass.js +17 -0
  50. package/lib/src/commands/assertDoesNotHaveClass.js.map +1 -0
  51. package/lib/src/commands/assertHasClass.d.ts +20 -0
  52. package/lib/src/commands/assertHasClass.js +17 -0
  53. package/lib/src/commands/assertHasClass.js.map +1 -0
  54. package/lib/src/commands/assertNumElements.d.ts +19 -0
  55. package/lib/src/commands/assertNumElements.js +17 -0
  56. package/lib/src/commands/assertNumElements.js.map +1 -0
  57. package/lib/src/commands/extractDataFromClass.d.ts +18 -0
  58. package/lib/src/commands/extractDataFromClass.js +25 -0
  59. package/lib/src/commands/extractDataFromClass.js.map +1 -0
  60. package/lib/src/commands/extractDataFromClassByContents.d.ts +19 -0
  61. package/lib/src/commands/extractDataFromClassByContents.js +26 -0
  62. package/lib/src/commands/extractDataFromClassByContents.js.map +1 -0
  63. package/lib/src/commands/getJSON.d.ts +16 -0
  64. package/lib/src/commands/getJSON.js +21 -0
  65. package/lib/src/commands/getJSON.js.map +1 -0
  66. package/lib/src/commands/getNumElements.d.ts +15 -0
  67. package/lib/src/commands/getNumElements.js +19 -0
  68. package/lib/src/commands/getNumElements.js.map +1 -0
  69. package/lib/src/commands/handleHarvardKey.d.ts +15 -0
  70. package/lib/src/commands/handleHarvardKey.js +53 -0
  71. package/lib/src/commands/handleHarvardKey.js.map +1 -0
  72. package/lib/src/commands/launchAs.d.ts +25 -0
  73. package/lib/src/commands/launchAs.js +66 -0
  74. package/lib/src/commands/launchAs.js.map +1 -0
  75. package/lib/src/commands/launchLTIUsingToken.d.ts +21 -0
  76. package/lib/src/commands/launchLTIUsingToken.js +68 -0
  77. package/lib/src/commands/launchLTIUsingToken.js.map +1 -0
  78. package/lib/src/commands/navigateToHref.d.ts +15 -0
  79. package/lib/src/commands/navigateToHref.js +35 -0
  80. package/lib/src/commands/navigateToHref.js.map +1 -0
  81. package/lib/src/commands/runScript.d.ts +15 -0
  82. package/lib/src/commands/runScript.js +20 -0
  83. package/lib/src/commands/runScript.js.map +1 -0
  84. package/lib/src/commands/typeInto.d.ts +24 -0
  85. package/lib/src/commands/typeInto.js +41 -0
  86. package/lib/src/commands/typeInto.js.map +1 -0
  87. package/lib/src/commands/visitCanvasGETEndpoint.d.ts +20 -0
  88. package/lib/src/commands/visitCanvasGETEndpoint.js +26 -0
  89. package/lib/src/commands/visitCanvasGETEndpoint.js.map +1 -0
  90. package/lib/src/commands/waitForElementVisible.d.ts +16 -0
  91. package/lib/src/commands/waitForElementVisible.js +19 -0
  92. package/lib/src/commands/waitForElementVisible.js.map +1 -0
  93. package/lib/src/genConfiguration/helpers/resolveDependents.d.ts +13 -0
  94. package/lib/src/genConfiguration/helpers/resolveDependents.js +50 -0
  95. package/lib/src/genConfiguration/helpers/resolveDependents.js.map +1 -0
  96. package/lib/src/genConfiguration/helpers/splitEnv.d.ts +10 -0
  97. package/lib/src/genConfiguration/helpers/splitEnv.js +27 -0
  98. package/lib/src/genConfiguration/helpers/splitEnv.js.map +1 -0
  99. package/{src/genConfiguration.ts → lib/src/genConfiguration/index.d.ts} +3 -6
  100. package/lib/src/genConfiguration/index.js +88 -0
  101. package/lib/src/genConfiguration/index.js.map +1 -0
  102. package/lib/src/genConfiguration/types/DependentValue.d.ts +11 -0
  103. package/lib/src/genConfiguration/types/DependentValue.js +3 -0
  104. package/lib/src/genConfiguration/types/DependentValue.js.map +1 -0
  105. package/lib/src/genConfiguration/types/GlobalsOrProfile.d.ts +9 -0
  106. package/lib/src/genConfiguration/types/GlobalsOrProfile.js +3 -0
  107. package/lib/src/genConfiguration/types/GlobalsOrProfile.js.map +1 -0
  108. package/lib/src/genConfiguration/types/SplitEnv.d.ts +13 -0
  109. package/lib/src/genConfiguration/types/SplitEnv.js +3 -0
  110. package/lib/src/genConfiguration/types/SplitEnv.js.map +1 -0
  111. package/lib/{index.d.ts → src/index.d.ts} +1 -1
  112. package/lib/{index.js → src/index.js} +6 -3
  113. package/lib/src/index.js.map +1 -0
  114. package/lib/src/init.d.ts +6 -0
  115. package/lib/src/init.js +45 -0
  116. package/lib/src/init.js.map +1 -0
  117. package/lib/start/constants/AVAILABLE_BROWSERS.d.ts +9 -0
  118. package/lib/start/constants/AVAILABLE_BROWSERS.js +27 -0
  119. package/lib/start/constants/AVAILABLE_BROWSERS.js.map +1 -0
  120. package/lib/start/helpers/exec.d.ts +8 -0
  121. package/lib/start/helpers/exec.js +18 -0
  122. package/lib/start/helpers/exec.js.map +1 -0
  123. package/lib/start/helpers/extractArgValue.d.ts +10 -0
  124. package/lib/start/helpers/extractArgValue.js +39 -0
  125. package/lib/start/helpers/extractArgValue.js.map +1 -0
  126. package/lib/start/helpers/findProfilesByNames.d.ts +16 -0
  127. package/lib/start/helpers/findProfilesByNames.js +35 -0
  128. package/lib/start/helpers/findProfilesByNames.js.map +1 -0
  129. package/lib/start/helpers/parseCommaSeparated.d.ts +8 -0
  130. package/lib/start/helpers/parseCommaSeparated.js +23 -0
  131. package/lib/start/helpers/parseCommaSeparated.js.map +1 -0
  132. package/lib/start/helpers/print.d.ts +38 -0
  133. package/lib/start/helpers/print.js +145 -0
  134. package/lib/start/helpers/print.js.map +1 -0
  135. package/lib/start/helpers/prompt.d.ts +8 -0
  136. package/lib/start/helpers/prompt.js +25 -0
  137. package/lib/start/helpers/prompt.js.map +1 -0
  138. package/lib/start/helpers/showChooser.d.ts +21 -0
  139. package/lib/start/helpers/showChooser.js +116 -0
  140. package/lib/start/helpers/showChooser.js.map +1 -0
  141. package/lib/start/helpers/validateBrowsers.d.ts +8 -0
  142. package/lib/start/helpers/validateBrowsers.js +36 -0
  143. package/lib/start/helpers/validateBrowsers.js.map +1 -0
  144. package/lib/start/index.d.ts +7 -0
  145. package/lib/start/index.js +139 -0
  146. package/lib/start/index.js.map +1 -0
  147. package/lib/start/types/ChooserOption.d.ts +10 -0
  148. package/lib/start/types/ChooserOption.js +3 -0
  149. package/lib/start/types/ChooserOption.js.map +1 -0
  150. package/package.json +28 -8
  151. package/setup/addToGitIgnore.ts +47 -0
  152. package/setup/checkRequiredFiles.ts +62 -0
  153. package/setup/genCommandImportFile.ts +75 -0
  154. package/setup/genDynamicConfigFile.ts +28 -0
  155. package/setup/index.ts +11 -0
  156. package/setup/setupCypressDependencies.ts +38 -0
  157. package/src/commands/assertDoesNotHaveClass.ts +51 -0
  158. package/src/commands/assertHasClass.ts +51 -0
  159. package/src/commands/assertNumElements.ts +50 -0
  160. package/src/commands/extractDataFromClass.ts +52 -0
  161. package/src/commands/extractDataFromClassByContents.ts +55 -0
  162. package/src/commands/getJSON.ts +45 -0
  163. package/src/commands/getNumElements.ts +45 -0
  164. package/src/commands/handleHarvardKey.ts +91 -0
  165. package/src/commands/launchAs.ts +120 -0
  166. package/src/commands/launchLTIUsingToken.ts +115 -0
  167. package/src/commands/navigateToHref.ts +60 -0
  168. package/src/commands/runScript.ts +44 -0
  169. package/src/commands/typeInto.ts +88 -0
  170. package/src/commands/visitCanvasGETEndpoint.ts +61 -0
  171. package/src/commands/waitForElementVisible.ts +49 -0
  172. package/src/genConfiguration/helpers/resolveDependents.ts +47 -0
  173. package/src/genConfiguration/helpers/splitEnv.ts +30 -0
  174. package/src/genConfiguration/index.ts +94 -0
  175. package/src/genConfiguration/types/DependentValue.ts +14 -0
  176. package/src/genConfiguration/types/GlobalsOrProfile.ts +12 -0
  177. package/src/genConfiguration/types/SplitEnv.ts +18 -0
  178. package/src/index.ts +7 -4
  179. package/src/init.ts +36 -17
  180. package/start/constants/AVAILABLE_BROWSERS.ts +28 -0
  181. package/start/helpers/exec.ts +17 -0
  182. package/start/helpers/extractArgValue.ts +42 -0
  183. package/start/helpers/findProfilesByNames.ts +39 -0
  184. package/start/helpers/parseCommaSeparated.ts +23 -0
  185. package/start/helpers/print.ts +155 -0
  186. package/start/helpers/prompt.ts +23 -0
  187. package/start/helpers/showChooser.ts +140 -0
  188. package/start/helpers/validateBrowsers.ts +35 -0
  189. package/start/index.ts +163 -0
  190. package/start/types/ChooserOption.ts +11 -0
  191. package/tsconfig.json +3 -4
  192. package/.eslintrc.json +0 -58
  193. package/lib/genConfiguration.d.ts +0 -8
  194. package/lib/genConfiguration.js +0 -13
  195. package/lib/genConfiguration.js.map +0 -1
  196. package/lib/index.js.map +0 -1
  197. package/lib/init.d.ts +0 -13
  198. package/lib/init.js +0 -10
  199. package/lib/init.js.map +0 -1
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ /* eslint-disable no-console */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /**
5
+ * Get the left buffer for a centered message
6
+ * @author Gabe Abrams
7
+ * @param message message to print
8
+ * @param padding amount of padding to add
9
+ * @returns number of chars in the buffer
10
+ */
11
+ var leftBuffer = function (message, padding) {
12
+ return (Math.floor(process.stdout.columns / 2) - padding - Math.ceil(message.length / 2));
13
+ };
14
+ /**
15
+ * Get the right buffer for a centered message
16
+ * @author Gabe Abrams
17
+ * @param message message to print
18
+ * @param padding amount of padding to add
19
+ * @returns number of chars in the buffer
20
+ */
21
+ var rightBuffer = function (message, padding) {
22
+ return (Math.ceil(process.stdout.columns / 2) - padding - Math.floor(message.length / 2));
23
+ };
24
+ /**
25
+ * Surround text with a border and spaces
26
+ * @author Gabe Abrams
27
+ * @param str text to print
28
+ * @param border single character to use as a border
29
+ * @returns text to print
30
+ */
31
+ var surroundWithBuffer = function (str, border) {
32
+ return (border
33
+ + ' '.repeat(leftBuffer(str, border.length))
34
+ + str
35
+ + ' '.repeat(rightBuffer(str, border.length))
36
+ + border);
37
+ };
38
+ /**
39
+ * Surround text with a character as the buffer
40
+ * @author Gabe Abrams
41
+ * @param str text to print
42
+ * @param char character to place as the buffer
43
+ * @returns text to print
44
+ */
45
+ var surroundWithChars = function (str, char) {
46
+ if (str.length > process.stdout.columns) {
47
+ return str;
48
+ }
49
+ if (str.length === process.stdout.columns - 1) {
50
+ return char + str;
51
+ }
52
+ if (str.length === process.stdout.columns - 2) {
53
+ return char + str + char;
54
+ }
55
+ return (char.repeat(leftBuffer(str, 1))
56
+ + ' '
57
+ + str
58
+ + ' '
59
+ + char.repeat(rightBuffer(str, 1)));
60
+ };
61
+ // Prompt instance
62
+ var cachedPrompt;
63
+ var print = {
64
+ /**
65
+ * Print a title
66
+ * @author Gabe Abrams
67
+ * @param str text to print
68
+ */
69
+ title: function (str) {
70
+ if (str.length > process.stdout.columns) {
71
+ return console.log(str);
72
+ }
73
+ console.log('\u2554' + '\u2550'.repeat(process.stdout.columns - 2) + '\u2557');
74
+ console.log(surroundWithBuffer(str, '\u2551'));
75
+ console.log('\u255A' + '\u2550'.repeat(process.stdout.columns - 2) + '\u255D');
76
+ },
77
+ /**
78
+ * Print a sub title (subheading)
79
+ * @author Gabe Abrams
80
+ * @param str text to print
81
+ */
82
+ subtitle: function (str) {
83
+ if (str.length > process.stdout.columns) {
84
+ return console.log(str);
85
+ }
86
+ console.log(surroundWithChars(str, '\u257C'));
87
+ },
88
+ /**
89
+ * Print centered text
90
+ * @author Gabe Abrams
91
+ * @param str text to print
92
+ */
93
+ centered: function (str) {
94
+ var lines = [];
95
+ var index = 0;
96
+ while (index < str.length) {
97
+ lines.push(str.substring(index, Math.min(index + process.stdout.columns, str.length)));
98
+ index += process.stdout.columns;
99
+ }
100
+ lines.forEach(function (line, lineIndex) {
101
+ if (lineIndex !== lines.length - 1) {
102
+ // No need to center: fills whole line
103
+ console.log(line);
104
+ }
105
+ else {
106
+ // This line needs to be centered
107
+ console.log(surroundWithChars(line, ' '));
108
+ }
109
+ });
110
+ },
111
+ /**
112
+ * Print a fatal error message
113
+ * @author Gabe Abrams
114
+ * @param err error message
115
+ */
116
+ fatalError: function (err) {
117
+ console.log('\n');
118
+ var errLine1 = err.substring(0, process.stdout.columns - 6);
119
+ var errLine2 = err.substring(process.stdout.columns - 6);
120
+ console.log('\u2554' + '\u2550'.repeat(3) + '\u2557 ');
121
+ console.log("\u2551 ! \u2551 ".concat(errLine1));
122
+ console.log('\u255A' + '\u2550'.repeat(3) + '\u255D ' + errLine2);
123
+ process.exit(0);
124
+ },
125
+ /**
126
+ * Save a copy of the prompt instance
127
+ * @author Gabe Abrams
128
+ * @param promptInstance instance of prompt-sync
129
+ */
130
+ savePrompt: function (promptInstance) {
131
+ cachedPrompt = promptInstance;
132
+ },
133
+ /**
134
+ * Ask the user to press enter before continuing
135
+ * @author Gabe Abrams
136
+ */
137
+ enterToContinue: function () {
138
+ var res = cachedPrompt(surroundWithChars('enter to continue, ctrl+c to quit', '\u257C'), true);
139
+ if (res === null) {
140
+ process.exit(0);
141
+ }
142
+ },
143
+ };
144
+ exports.default = print;
145
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../../../start/helpers/print.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Ask the user a question
3
+ * @param title title of the question
4
+ * @param notRequired true if question is not required
5
+ * @returns response
6
+ */
7
+ declare const prompt: (title: string, notRequired?: boolean) => string;
8
+ export default prompt;
@@ -0,0 +1,25 @@
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
+ var prompt_sync_1 = __importDefault(require("prompt-sync"));
7
+ var print_1 = __importDefault(require("./print"));
8
+ var promptSync = (0, prompt_sync_1.default)();
9
+ /**
10
+ * Ask the user a question
11
+ * @param title title of the question
12
+ * @param notRequired true if question is not required
13
+ * @returns response
14
+ */
15
+ var prompt = function (title, notRequired) {
16
+ var val = promptSync(title);
17
+ if (val === null || (!notRequired && !val)) {
18
+ process.exit(0);
19
+ }
20
+ return val;
21
+ };
22
+ // Save the prompt for use later
23
+ print_1.default.savePrompt(prompt);
24
+ exports.default = prompt;
25
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../start/helpers/prompt.ts"],"names":[],"mappings":";;;;;AAAA,4DAAqC;AACrC,kDAA4B;AAE5B,IAAM,UAAU,GAAG,IAAA,qBAAU,GAAE,CAAC;AAEhC;;;;;GAKG;AACH,IAAM,MAAM,GAAG,UAAC,KAAa,EAAE,WAAqB;IAClD,IAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,gCAAgC;AAChC,eAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAEzB,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,21 @@
1
+ import ChooserOption from '../types/ChooserOption';
2
+ /**
3
+ * Show a chooser between many options
4
+ * @author Gabe Abrams
5
+ * @author Yuen Ler Chow
6
+ * @param opts object of arguments
7
+ * @param opts.question the question to ask
8
+ * @param opts.options list of options to choose from
9
+ * @param opts.title main title to show above the choices
10
+ * @param opts.dontClear if true, don't clear the console before
11
+ * @param opts.allowMulti if true, allow multiple selections (comma-separated)
12
+ * @returns array of chosen option(s)
13
+ */
14
+ declare const showChooser: (opts: {
15
+ question: string;
16
+ options: ChooserOption[];
17
+ title?: string;
18
+ dontClear?: boolean;
19
+ allowMulti?: boolean;
20
+ }) => ChooserOption[];
21
+ export default showChooser;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ /* eslint-disable no-console */
18
+ var clear_1 = __importDefault(require("clear"));
19
+ // Import shared helpers
20
+ var print_1 = __importDefault(require("./print"));
21
+ var prompt_1 = __importDefault(require("./prompt"));
22
+ var parseCommaSeparated_1 = __importDefault(require("./parseCommaSeparated"));
23
+ /**
24
+ * Show a chooser between many options
25
+ * @author Gabe Abrams
26
+ * @author Yuen Ler Chow
27
+ * @param opts object of arguments
28
+ * @param opts.question the question to ask
29
+ * @param opts.options list of options to choose from
30
+ * @param opts.title main title to show above the choices
31
+ * @param opts.dontClear if true, don't clear the console before
32
+ * @param opts.allowMulti if true, allow multiple selections (comma-separated)
33
+ * @returns array of chosen option(s)
34
+ */
35
+ var showChooser = function (opts) {
36
+ var question = opts.question, options = opts.options, title = opts.title, dontClear = opts.dontClear, _a = opts.allowMulti, allowMulti = _a === void 0 ? false : _a;
37
+ // Helper to re-display the chooser after an invalid selection
38
+ var retryWithMessage = function (message) {
39
+ (0, clear_1.default)();
40
+ print_1.default.title('Invalid Choice');
41
+ console.log(message);
42
+ console.log('');
43
+ print_1.default.enterToContinue();
44
+ return showChooser({
45
+ question: question,
46
+ options: options,
47
+ title: title,
48
+ dontClear: dontClear,
49
+ allowMulti: allowMulti,
50
+ });
51
+ };
52
+ // Print the header
53
+ if (!dontClear) {
54
+ (0, clear_1.default)();
55
+ }
56
+ if (title) {
57
+ print_1.default.title(title);
58
+ console.log('');
59
+ }
60
+ print_1.default.subtitle(question);
61
+ // Make sure all options have tags
62
+ var nextNumber = 1;
63
+ var optionsWithTags = options.map(function (option) {
64
+ // Get/generate a tag
65
+ var tag = option.tag;
66
+ if (!tag) {
67
+ tag = String(nextNumber);
68
+ nextNumber += 1;
69
+ }
70
+ // Return complete option
71
+ return __assign(__assign({}, option), { tag: tag });
72
+ });
73
+ // Print options
74
+ optionsWithTags.forEach(function (option) {
75
+ console.log("".concat(option.tag, " - ").concat(option.description));
76
+ });
77
+ // Ask user to choose
78
+ var response = (0, prompt_1.default)('> ').trim();
79
+ // Always parse as comma-separated (treat all inputs with multi-select logic)
80
+ var selectedTags = (0, parseCommaSeparated_1.default)(response);
81
+ // Fail fast if multi-select is not allowed but multiple selections were made
82
+ if (!allowMulti && selectedTags.length > 1) {
83
+ return retryWithMessage('Multiple selections are not allowed. Please select only one option.');
84
+ }
85
+ // Find matching options
86
+ var selected = [];
87
+ var invalidTags = [];
88
+ selectedTags.forEach(function (tag) {
89
+ var lowerTag = tag.toLowerCase();
90
+ var found = false;
91
+ optionsWithTags.forEach(function (opt, idx) {
92
+ if (opt.tag.toLowerCase() === lowerTag) {
93
+ selected.push({
94
+ description: opt.description,
95
+ tag: opt.tag,
96
+ index: idx,
97
+ });
98
+ found = true;
99
+ }
100
+ });
101
+ if (!found) {
102
+ invalidTags.push(tag);
103
+ }
104
+ });
105
+ // Handle invalid tags
106
+ if (invalidTags.length > 0) {
107
+ return retryWithMessage("The following selections are not valid: ".concat(invalidTags.join(', ')));
108
+ }
109
+ // Handle no selections
110
+ if (selected.length === 0) {
111
+ return retryWithMessage('No valid selections made.');
112
+ }
113
+ return selected;
114
+ };
115
+ exports.default = showChooser;
116
+ //# sourceMappingURL=showChooser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showChooser.js","sourceRoot":"","sources":["../../../start/helpers/showChooser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Validate browsers (supports multiple)
3
+ * @author Yuen Ler Chow
4
+ * @param browserNames array of browser names to validate
5
+ * @returns array of valid browser names (lowercased)
6
+ */
7
+ declare const validateBrowsers: (browserNames: string[]) => string[];
8
+ export default validateBrowsers;
@@ -0,0 +1,36 @@
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
+ /* eslint-disable no-console */
7
+ var AVAILABLE_BROWSERS_1 = __importDefault(require("../constants/AVAILABLE_BROWSERS"));
8
+ /**
9
+ * Validate browsers (supports multiple)
10
+ * @author Yuen Ler Chow
11
+ * @param browserNames array of browser names to validate
12
+ * @returns array of valid browser names (lowercased)
13
+ */
14
+ var validateBrowsers = function (browserNames) {
15
+ var valid = [];
16
+ var invalid = [];
17
+ // Convert all browser names to lowercase for comparison
18
+ var lowercaseBrowserNames = browserNames.map(function (browser) { return browser.toLowerCase(); });
19
+ // Validate each browser
20
+ lowercaseBrowserNames.forEach(function (browser) {
21
+ if (AVAILABLE_BROWSERS_1.default.some(function (b) { return b.name.toLowerCase() === browser.toLowerCase(); })) {
22
+ valid.push(browser);
23
+ }
24
+ else {
25
+ invalid.push(browser);
26
+ }
27
+ });
28
+ // If there are invalid browsers, log error and exit
29
+ if (invalid.length > 0) {
30
+ console.error("Browser(s) invalid: ".concat(invalid.join(', '), ". Available browsers: ").concat(AVAILABLE_BROWSERS_1.default.join(', ')));
31
+ process.exit(1);
32
+ }
33
+ return valid;
34
+ };
35
+ exports.default = validateBrowsers;
36
+ //# sourceMappingURL=validateBrowsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateBrowsers.js","sourceRoot":"","sources":["../../../start/helpers/validateBrowsers.ts"],"names":[],"mappings":";;;;;AAAA,+BAA+B;AAC/B,uFAAiE;AAEjE;;;;;GAKG;AACH,IAAM,gBAAgB,GAAG,UAAC,YAAsB;IAC9C,IAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,wDAAwD;IACxD,IAAM,qBAAqB,GAAG,YAAY,CAAC,GAAG,CAAC,UAAC,OAAO,IAAO,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/F,wBAAwB;IACxB,qBAAqB,CAAC,OAAO,CAAC,UAAC,OAAO;QACpC,IAAI,4BAAkB,CAAC,IAAI,CAAC,UAAC,CAAC,IAAO,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/F,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oDAAoD;IACpD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,8BAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAyB,4BAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC;QACjH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Checks arguments and environment variables (for PROFILE, BROWSER, and HEADLESS),
3
+ * asks user for missing selections, and launches Cypress
4
+ * @author Gardenia Liu
5
+ * @author Yuen Ler Chow
6
+ */
7
+ export {};
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ /* eslint-disable no-console */
3
+ /**
4
+ * Checks arguments and environment variables (for PROFILE, BROWSER, and HEADLESS),
5
+ * asks user for missing selections, and launches Cypress
6
+ * @author Gardenia Liu
7
+ * @author Yuen Ler Chow
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ // Import libs
14
+ var fs_1 = __importDefault(require("fs"));
15
+ var path_1 = __importDefault(require("path"));
16
+ // Import helpers
17
+ var showChooser_1 = __importDefault(require("./helpers/showChooser"));
18
+ var parseCommaSeparated_1 = __importDefault(require("./helpers/parseCommaSeparated"));
19
+ var findProfilesByNames_1 = __importDefault(require("./helpers/findProfilesByNames"));
20
+ var validateBrowsers_1 = __importDefault(require("./helpers/validateBrowsers"));
21
+ var extractArgValue_1 = __importDefault(require("./helpers/extractArgValue"));
22
+ // Import constants
23
+ var AVAILABLE_BROWSERS_1 = __importDefault(require("./constants/AVAILABLE_BROWSERS"));
24
+ // Get the project directory
25
+ var pwd = path_1.default.join(__dirname, '../..');
26
+ // Find available profiles under /cypress/profiles
27
+ var profilesDir = path_1.default.join(pwd, 'cypress/profiles');
28
+ if (!fs_1.default.existsSync(profilesDir)) {
29
+ console.warn("[cypress.config] Could not load profile '".concat(profilesDir, "'"));
30
+ process.exit(1);
31
+ }
32
+ // Find all files matching the pattern: {ProfileName}.Profile.ts
33
+ var profileFiles = (fs_1.default
34
+ .readdirSync(profilesDir)
35
+ .filter(function (f) {
36
+ return f.endsWith('.Profile.ts');
37
+ }));
38
+ // Get profile names by removing '.Profile.ts'
39
+ var profiles = profileFiles.map(function (file) {
40
+ var profileName = file.replace('.Profile.ts', '');
41
+ return { file: file, profileName: profileName };
42
+ });
43
+ // Exit if no profiles found
44
+ if (profiles.length === 0) {
45
+ console.error("No profiles found in '".concat(profilesDir, "'"));
46
+ process.exit(1);
47
+ }
48
+ // Parse CLI arguments
49
+ var args = process.argv.slice(2);
50
+ // Get selections from environment variables or CLI arguments
51
+ var selectedProfiles = [];
52
+ var selectedBrowsers = [];
53
+ var isHeadless = false;
54
+ // Check for PROFILE (env var or CLI arg)
55
+ var envProfileRaw = process.env.PROFILE;
56
+ var argProfileRaw = (0, extractArgValue_1.default)(args, '--profile');
57
+ var profileRaw = envProfileRaw || argProfileRaw;
58
+ if (profileRaw) {
59
+ var profileNames = (0, parseCommaSeparated_1.default)(profileRaw);
60
+ selectedProfiles = (0, findProfilesByNames_1.default)(profileNames, profiles);
61
+ }
62
+ // Check for BROWSER (env var or CLI arg)
63
+ var envBrowserRaw = process.env.BROWSER;
64
+ var argBrowserRaw = (0, extractArgValue_1.default)(args, '--browser');
65
+ var browserRaw = envBrowserRaw || argBrowserRaw;
66
+ if (browserRaw) {
67
+ var browserNames = (0, parseCommaSeparated_1.default)(browserRaw);
68
+ selectedBrowsers = (0, validateBrowsers_1.default)(browserNames);
69
+ }
70
+ // Check for HEADLESS (env var or CLI flag)
71
+ var envHeadlessRaw = process.env.HEADLESS;
72
+ var headlessFlagValue = (0, extractArgValue_1.default)(args, '--headless');
73
+ var hasHeadlessFlag = headlessFlagValue !== undefined;
74
+ isHeadless = !!(envHeadlessRaw && envHeadlessRaw.toLowerCase() !== 'false') || hasHeadlessFlag;
75
+ // If headless wasn't specified, ask the user to choose
76
+ if (!envHeadlessRaw && !hasHeadlessFlag) {
77
+ var choices = (0, showChooser_1.default)({
78
+ question: 'Run in headless mode?',
79
+ options: [
80
+ { tag: '1', description: 'Yes (headless)' },
81
+ { tag: '2', description: 'No (interactive)' },
82
+ ],
83
+ title: 'Select mode',
84
+ allowMulti: false,
85
+ });
86
+ isHeadless = choices[0].tag === '1';
87
+ }
88
+ // If running headless and no browsers were selected, ask the user to choose
89
+ if (isHeadless && selectedBrowsers.length === 0) {
90
+ var options = AVAILABLE_BROWSERS_1.default.map(function (_a) {
91
+ var tag = _a.tag, name = _a.name;
92
+ return {
93
+ tag: tag,
94
+ description: name,
95
+ };
96
+ });
97
+ var choices = (0, showChooser_1.default)({
98
+ question: 'Choose browser(s) (commas for multiple: C,F)',
99
+ options: options,
100
+ title: 'Select browser(s)',
101
+ allowMulti: true,
102
+ });
103
+ selectedBrowsers = (choices
104
+ .map(function (choice) {
105
+ return AVAILABLE_BROWSERS_1.default[choice.index];
106
+ })
107
+ .map(function (_a) {
108
+ var name = _a.name;
109
+ return name;
110
+ }));
111
+ }
112
+ // If no profiles were selected, ask the user to choose
113
+ // - In headless mode, allow selecting multiple profiles
114
+ // - In visible mode, only allow selecting a single profile
115
+ // In the case where their environment selected more than one profile, but they are not headless, make them re-choose
116
+ if (selectedProfiles.length === 0
117
+ || (!isHeadless && selectedProfiles.length > 1)) {
118
+ var options = profiles.map(function (p, idx) {
119
+ return {
120
+ tag: String(idx + 1),
121
+ description: p.profileName,
122
+ };
123
+ });
124
+ var choices = (0, showChooser_1.default)({
125
+ question: (isHeadless
126
+ ? 'Choose profile(s) (commas for multiple: 1,2):'
127
+ : 'Choose profile:'),
128
+ options: options,
129
+ title: "Choose profile".concat(isHeadless ? 's' : ''),
130
+ allowMulti: isHeadless,
131
+ });
132
+ selectedProfiles = choices.map(function (choice) { return profiles[choice.index]; });
133
+ }
134
+ // Execute commands for each combination of profile and browser (not yet implemented)
135
+ console.log('Starting Cypress with the following configuration:');
136
+ console.log("Profiles: ".concat(selectedProfiles.map(function (p) { return p.profileName; }).join(', ')));
137
+ console.log("Browsers: ".concat(selectedBrowsers.join(', ')));
138
+ console.log("Headless: ".concat(isHeadless));
139
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../start/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * An option that can be put into a chooser
3
+ * @author Gabe Abrams
4
+ */
5
+ type ChooserOption = {
6
+ description: string;
7
+ tag?: string;
8
+ index?: number;
9
+ };
10
+ export default ChooserOption;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ChooserOption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChooserOption.js","sourceRoot":"","sources":["../../../start/types/ChooserOption.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "dceky",
3
- "version": "1.0.0-beta.6",
3
+ "version": "1.0.2",
4
4
  "description": "Cypress toolkit for Harvard DCE",
5
- "main": "./lib/index.js",
6
- "types": "./lib/index.d.ts",
5
+ "main": "./lib/src/index.js",
6
+ "types": "./lib/src/index.d.ts",
7
7
  "scripts": {
8
- "build": "tsc --project ./tsconfig.json"
8
+ "build": "tsc --project ./tsconfig.json",
9
+ "ky:start": "npx tsx ./start/index.ts",
10
+ "ky:setup": "npx tsx ./setup/index.ts",
11
+ "ky:dev": "npm run ky:setup && npm run ky:start"
9
12
  },
10
13
  "repository": {
11
14
  "type": "git",
@@ -22,11 +25,28 @@
22
25
  "url": "https://github.com/harvard-edtech/dceky/issues"
23
26
  },
24
27
  "homepage": "https://github.com/harvard-edtech/dceky#readme",
25
- "peerDependencies": {
26
- "cypress": "x.x.x"
28
+ "dependencies": {
29
+ "child_process": "^1.0.2",
30
+ "clear": "^0.1.0",
31
+ "deepmerge": "4.3.1",
32
+ "prompt-sync": "^4.2.0",
33
+ "@types/prompt-sync": "^4.2.3",
34
+ "@types/clear": "^0.1.4",
35
+ "@types/node": "^22.7.0"
27
36
  },
28
37
  "devDependencies": {
29
- "@types/node": "^22.7.0",
30
- "typescript": "^5.9.3"
38
+ "typescript": "^5.9.3",
39
+ "@types/deepmerge": "2.1.0",
40
+ "@types/node": "^24.6.1",
41
+ "cross-env": "^10.1.0",
42
+ "eslint": "^8.42.0",
43
+ "eslint-config-airbnb": "^19.0.4",
44
+ "eslint-config-airbnb-typescript": "^17.1.0",
45
+ "eslint-plugin-import": "^2.32.0",
46
+ "eslint-plugin-jsx-a11y": "^6.10.2",
47
+ "eslint-plugin-react": "^7.37.5"
48
+ },
49
+ "peerDependencies": {
50
+ "cypress": "^x.x.x"
31
51
  }
32
52
  }