@neurodevs/ndx-cli 0.1.55 → 0.1.58
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/__tests__/AbstractCommandRunnerTest.d.ts +66 -0
- package/build/__tests__/AbstractCommandRunnerTest.js +264 -0
- package/build/__tests__/AbstractCommandRunnerTest.js.map +1 -0
- package/build/__tests__/modules/CliCommandRunner.test.d.ts +2 -94
- package/build/__tests__/modules/CliCommandRunner.test.js +2 -675
- package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -1
- package/build/__tests__/modules/commands/BindSnippetCommand.test.d.ts +20 -0
- package/build/__tests__/modules/commands/BindSnippetCommand.test.js +111 -0
- package/build/__tests__/modules/commands/BindSnippetCommand.test.js.map +1 -0
- package/build/__tests__/modules/commands/CreateImplCommand.test.d.ts +13 -0
- package/build/__tests__/modules/commands/CreateImplCommand.test.js +112 -0
- package/build/__tests__/modules/commands/CreateImplCommand.test.js.map +1 -0
- package/build/__tests__/modules/commands/CreatePackageCommand.test.d.ts +10 -0
- package/build/__tests__/modules/commands/CreatePackageCommand.test.js +98 -0
- package/build/__tests__/modules/commands/CreatePackageCommand.test.js.map +1 -0
- package/build/__tests__/modules/commands/CreateUiCommand.test.d.ts +22 -0
- package/build/__tests__/modules/commands/CreateUiCommand.test.js +220 -0
- package/build/__tests__/modules/commands/CreateUiCommand.test.js.map +1 -0
- package/build/__tests__/modules/commands/UpgradePackageCommand.test.d.ts +11 -0
- package/build/__tests__/modules/commands/UpgradePackageCommand.test.js +90 -0
- package/build/__tests__/modules/commands/UpgradePackageCommand.test.js.map +1 -0
- package/build/modules/CliCommandRunner.d.ts +4 -2
- package/build/modules/CliCommandRunner.js +18 -7
- package/build/modules/CliCommandRunner.js.map +1 -1
- package/build/modules/commands/BindSnippetCommand.d.ts +16 -0
- package/build/modules/commands/BindSnippetCommand.js +67 -0
- package/build/modules/commands/BindSnippetCommand.js.map +1 -0
- package/build/scripts/runCommandRunner.js +1 -1
- package/build/scripts/runCommandRunner.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/AbstractCommandRunnerTest.ts +321 -0
- package/src/__tests__/modules/CliCommandRunner.test.ts +3 -910
- package/src/__tests__/modules/commands/BindSnippetCommand.test.ts +129 -0
- package/src/__tests__/modules/commands/CreateImplCommand.test.ts +137 -0
- package/src/__tests__/modules/commands/CreatePackageCommand.test.ts +113 -0
- package/src/__tests__/modules/commands/CreateUiCommand.test.ts +297 -0
- package/src/__tests__/modules/commands/UpgradePackageCommand.test.ts +105 -0
- package/src/modules/CliCommandRunner.ts +19 -7
- package/src/modules/commands/BindSnippetCommand.ts +75 -0
- package/src/scripts/runCommandRunner.ts +1 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import AbstractPackageTest from './AbstractPackageTest';
|
|
2
|
+
export default class AbstractCommandRunnerTest extends AbstractPackageTest {
|
|
3
|
+
protected static readonly bindSnippetCommand = "bind.snippet";
|
|
4
|
+
protected static readonly createImplCommand = "create.impl";
|
|
5
|
+
protected static readonly interfaceName: string;
|
|
6
|
+
protected static readonly implName: string;
|
|
7
|
+
protected static readonly createPackageCommand = "create.package";
|
|
8
|
+
protected static readonly packageName: string;
|
|
9
|
+
protected static readonly description: string;
|
|
10
|
+
protected static readonly keywords: string[];
|
|
11
|
+
protected static readonly githubToken: string;
|
|
12
|
+
protected static readonly defaultKeywords: string[];
|
|
13
|
+
protected static get keywordsWithDefaults(): string[];
|
|
14
|
+
protected static readonly createUiCommand = "create.ui";
|
|
15
|
+
protected static readonly componentName: string;
|
|
16
|
+
protected static readonly upgradePackageCommand = "upgrade.package";
|
|
17
|
+
protected static beforeEach(): Promise<void>;
|
|
18
|
+
protected static setFakeReadFileResultToTsconfig(): void;
|
|
19
|
+
protected static setFakeReadToEmptyPackageJson(): void;
|
|
20
|
+
protected static setFakeReadToAllInstalledExcept(dep: string): void;
|
|
21
|
+
protected static setFakeReadToAllInstalled(): void;
|
|
22
|
+
protected static setFakePackageJson(responses?: Record<string, string | string[]>): {
|
|
23
|
+
name: string;
|
|
24
|
+
description: string;
|
|
25
|
+
keywords: string[];
|
|
26
|
+
};
|
|
27
|
+
protected static readonly infoFromPackageJson: {
|
|
28
|
+
name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
keywords: string[];
|
|
31
|
+
};
|
|
32
|
+
protected static readonly allInstalled = "\n {\n \"dependencies\": {\n \"react\": \"^...\",\n \"react-dom\": \"^...\"\n },\n \"devDependencies\": {\n \"@types/react\": \"^...\",\n \"@types/react-dom\": \"^...\",\n \"@types/jsdom\": \"^...\",\n \"@testing-library/react\": \"^...\",\n \"@testing-library/dom\": \"^...\",\n \"@testing-library/jest-dom\": \"^...\",\n \"jsdom\": \"^...\"\n } \n }\n ";
|
|
33
|
+
protected static readonly allRequiredDependencies: string[];
|
|
34
|
+
protected static readonly installDependenciesCommand = "yarn add react react-dom";
|
|
35
|
+
protected static readonly installDevDependenciesCommand = "yarn add -D @types/react @types/react-dom @types/jsdom @testing-library/react @testing-library/dom @testing-library/jest-dom jsdom";
|
|
36
|
+
protected static expandHomeDir(inputPath: string): string;
|
|
37
|
+
protected static splitOnCommaOrWhitespace(value: string): string[];
|
|
38
|
+
protected static readonly implTestSaveDir = "src/__tests__/modules";
|
|
39
|
+
protected static readonly implModuleSaveDir = "src/modules";
|
|
40
|
+
protected static get implFakeSaveDir(): string;
|
|
41
|
+
protected static readonly uiTestSaveDir = "src/__tests__/ui";
|
|
42
|
+
protected static readonly uiModuleSaveDir = "src/ui";
|
|
43
|
+
protected static get uiFakeSaveDir(): string;
|
|
44
|
+
protected static readonly tsconfigPath = "tsconfig.json";
|
|
45
|
+
protected static readonly randomId: string;
|
|
46
|
+
protected static readonly originalTsconfigFile: string;
|
|
47
|
+
protected static readonly updatedTsconfigFile: string;
|
|
48
|
+
protected static setFakeAutopackage(): void;
|
|
49
|
+
protected static setFakeImplAutomodule(): void;
|
|
50
|
+
protected static setFakeUiAutomodule(): void;
|
|
51
|
+
protected static setFakeSnippetKeybinder(): void;
|
|
52
|
+
protected static setFakeExec(): void;
|
|
53
|
+
protected static setFakeLog(): void;
|
|
54
|
+
protected static setFakeMkdir(): void;
|
|
55
|
+
protected static setFakePrompts(): void;
|
|
56
|
+
protected static setFakeReadFile(): void;
|
|
57
|
+
protected static setFakeWriteFile(): void;
|
|
58
|
+
protected static readonly interfaceNameMessage = "What should the interface be called? Example: YourInterface";
|
|
59
|
+
protected static readonly implNameMessage = "What should the implementation class be called? Example: YourInterfaceImpl";
|
|
60
|
+
protected static readonly packageNameMessage = "What should the package be called? Example: useful-package";
|
|
61
|
+
protected static readonly packageDescriptionMessage = "What should the package description be? Example: A useful package.";
|
|
62
|
+
protected static readonly componentNameMessage = "What should the component be called? Example: YourComponent";
|
|
63
|
+
protected static readonly setupTestsFile = "\n import { JSDOM } from 'jsdom'\n\n const jsdom = new JSDOM('<!doctype html><html><body></body></html>', {\n url: 'http://localhost',\n })\n\n global.window = jsdom.window as unknown as Window & typeof globalThis\n global.document = jsdom.window.document\n global.navigator = jsdom.window.navigator\n global.HTMLElement = jsdom.window.HTMLElement\n global.getComputedStyle = jsdom.window.getComputedStyle\n\n global.ResizeObserver = class {\n public observe() {}\n public unobserve() {}\n public disconnect() {}\n }\n\n global.SVGElement = jsdom.window.SVGElement\n ";
|
|
64
|
+
protected static readonly helpText = "ndx CLI (Command Line Interface)\n\n Available commands:\n\n - bind.snippet Bind a text snippet to a keyboard shortcut in vscode.\n - create.impl Create implementation for interface with test and fake.\n - create.package Create npm package using latest template.\n - create.ui Create React component with test and fake.\n - upgrade.package Upgrade existing npm package to latest template.\n - help, --help, -h Show this help text.\n \n Usage:\n\n - ndx <command>\n ";
|
|
65
|
+
protected static CliCommandRunner(args: string[]): import("../modules/CliCommandRunner").CommandRunner;
|
|
66
|
+
}
|
|
@@ -0,0 +1,264 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
var _a;
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
const child_process_1 = require("child_process");
|
|
41
|
+
const os_1 = __importDefault(require("os"));
|
|
42
|
+
const path_1 = __importDefault(require("path"));
|
|
43
|
+
const util_1 = require("util");
|
|
44
|
+
const test_utils_1 = require("@sprucelabs/test-utils");
|
|
45
|
+
const fake_node_core_1 = require("@neurodevs/fake-node-core");
|
|
46
|
+
const meta_node_1 = require("@neurodevs/meta-node");
|
|
47
|
+
const CliCommandRunner_1 = __importDefault(require("../modules/CliCommandRunner"));
|
|
48
|
+
const fakePrompts_1 = __importStar(require("../testDoubles/prompts/fakePrompts"));
|
|
49
|
+
const AbstractPackageTest_1 = __importDefault(require("./AbstractPackageTest"));
|
|
50
|
+
const exec = (0, util_1.promisify)(child_process_1.exec);
|
|
51
|
+
class AbstractCommandRunnerTest extends AbstractPackageTest_1.default {
|
|
52
|
+
static get keywordsWithDefaults() {
|
|
53
|
+
return [...this.defaultKeywords, ...this.keywords];
|
|
54
|
+
}
|
|
55
|
+
static async beforeEach() {
|
|
56
|
+
await super.beforeEach();
|
|
57
|
+
this.setFakeAutopackage();
|
|
58
|
+
this.setFakeImplAutomodule();
|
|
59
|
+
this.setFakeUiAutomodule();
|
|
60
|
+
this.setFakeSnippetKeybinder();
|
|
61
|
+
this.setFakeExec();
|
|
62
|
+
this.setFakeLog();
|
|
63
|
+
this.setFakeMkdir();
|
|
64
|
+
this.setFakePrompts();
|
|
65
|
+
this.setFakeReadFile();
|
|
66
|
+
this.setFakeWriteFile();
|
|
67
|
+
process.env.GITHUB_TOKEN = this.githubToken;
|
|
68
|
+
}
|
|
69
|
+
static setFakeReadFileResultToTsconfig() {
|
|
70
|
+
(0, fake_node_core_1.setFakeReadFileResult)(this.tsconfigPath, this.originalTsconfigFile);
|
|
71
|
+
}
|
|
72
|
+
static setFakeReadToEmptyPackageJson() {
|
|
73
|
+
(0, fake_node_core_1.setFakeReadFileResult)('package.json', '{}');
|
|
74
|
+
}
|
|
75
|
+
static setFakeReadToAllInstalledExcept(dep) {
|
|
76
|
+
(0, fake_node_core_1.setFakeReadFileResult)('package.json', this.allInstalled.replace(dep, ''));
|
|
77
|
+
}
|
|
78
|
+
static setFakeReadToAllInstalled() {
|
|
79
|
+
(0, fake_node_core_1.setFakeReadFileResult)('package.json', this.allInstalled);
|
|
80
|
+
}
|
|
81
|
+
static setFakePackageJson(responses) {
|
|
82
|
+
const infoFromPackageJson = {
|
|
83
|
+
...this.infoFromPackageJson,
|
|
84
|
+
...responses,
|
|
85
|
+
};
|
|
86
|
+
(0, fake_node_core_1.setFakeReadFileResult)('package.json', JSON.stringify(infoFromPackageJson));
|
|
87
|
+
return infoFromPackageJson;
|
|
88
|
+
}
|
|
89
|
+
static expandHomeDir(inputPath) {
|
|
90
|
+
return inputPath.startsWith('~')
|
|
91
|
+
? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
|
|
92
|
+
: inputPath;
|
|
93
|
+
}
|
|
94
|
+
static splitOnCommaOrWhitespace(value) {
|
|
95
|
+
return value
|
|
96
|
+
.split(/[\s,]+/)
|
|
97
|
+
.map((v) => v.trim())
|
|
98
|
+
.filter(Boolean);
|
|
99
|
+
}
|
|
100
|
+
static get implFakeSaveDir() {
|
|
101
|
+
return `src/testDoubles/${this.interfaceName}`;
|
|
102
|
+
}
|
|
103
|
+
static get uiFakeSaveDir() {
|
|
104
|
+
return `src/testDoubles/${this.componentName}`;
|
|
105
|
+
}
|
|
106
|
+
static setFakeAutopackage() {
|
|
107
|
+
meta_node_1.NpmAutopackage.Class = meta_node_1.FakeAutopackage;
|
|
108
|
+
meta_node_1.FakeAutopackage.resetTestDouble();
|
|
109
|
+
}
|
|
110
|
+
static setFakeImplAutomodule() {
|
|
111
|
+
meta_node_1.ImplAutomodule.Class = meta_node_1.FakeAutomodule;
|
|
112
|
+
meta_node_1.FakeAutomodule.resetTestDouble();
|
|
113
|
+
}
|
|
114
|
+
static setFakeUiAutomodule() {
|
|
115
|
+
meta_node_1.UiAutomodule.Class = meta_node_1.FakeAutomodule;
|
|
116
|
+
meta_node_1.FakeAutomodule.resetTestDouble();
|
|
117
|
+
}
|
|
118
|
+
static setFakeSnippetKeybinder() {
|
|
119
|
+
meta_node_1.VscodeSnippetKeybinder.Class = meta_node_1.FakeSnippetKeybinder;
|
|
120
|
+
meta_node_1.FakeSnippetKeybinder.resetTestDouble();
|
|
121
|
+
}
|
|
122
|
+
static setFakeExec() {
|
|
123
|
+
CliCommandRunner_1.default.exec = fake_node_core_1.fakeExec;
|
|
124
|
+
(0, fake_node_core_1.resetCallsToExec)();
|
|
125
|
+
}
|
|
126
|
+
static setFakeLog() {
|
|
127
|
+
CliCommandRunner_1.default.log = fake_node_core_1.fakeLog;
|
|
128
|
+
(0, fake_node_core_1.resetCallsToLog)();
|
|
129
|
+
}
|
|
130
|
+
static setFakeMkdir() {
|
|
131
|
+
CliCommandRunner_1.default.mkdir = fake_node_core_1.fakeMkdir;
|
|
132
|
+
(0, fake_node_core_1.resetCallsToMkdir)();
|
|
133
|
+
}
|
|
134
|
+
static setFakePrompts() {
|
|
135
|
+
CliCommandRunner_1.default.prompts = fakePrompts_1.default;
|
|
136
|
+
(0, fakePrompts_1.resetCallsToFakePrompts)();
|
|
137
|
+
}
|
|
138
|
+
static setFakeReadFile() {
|
|
139
|
+
CliCommandRunner_1.default.readFile = fake_node_core_1.fakeReadFile;
|
|
140
|
+
(0, fake_node_core_1.resetCallsToReadFile)();
|
|
141
|
+
this.setFakeReadToAllInstalled();
|
|
142
|
+
this.setFakeReadFileResultToTsconfig();
|
|
143
|
+
}
|
|
144
|
+
static setFakeWriteFile() {
|
|
145
|
+
CliCommandRunner_1.default.writeFile =
|
|
146
|
+
fake_node_core_1.fakeWriteFile;
|
|
147
|
+
(0, fake_node_core_1.resetCallsToWriteFile)();
|
|
148
|
+
}
|
|
149
|
+
static CliCommandRunner(args) {
|
|
150
|
+
return CliCommandRunner_1.default.Create(args);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
_a = AbstractCommandRunnerTest;
|
|
154
|
+
AbstractCommandRunnerTest.bindSnippetCommand = 'bind.snippet';
|
|
155
|
+
AbstractCommandRunnerTest.createImplCommand = 'create.impl';
|
|
156
|
+
AbstractCommandRunnerTest.interfaceName = (0, test_utils_1.generateId)();
|
|
157
|
+
AbstractCommandRunnerTest.implName = (0, test_utils_1.generateId)();
|
|
158
|
+
AbstractCommandRunnerTest.createPackageCommand = 'create.package';
|
|
159
|
+
AbstractCommandRunnerTest.packageName = (0, test_utils_1.generateId)();
|
|
160
|
+
AbstractCommandRunnerTest.description = (0, test_utils_1.generateId)();
|
|
161
|
+
AbstractCommandRunnerTest.keywords = [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()];
|
|
162
|
+
AbstractCommandRunnerTest.githubToken = (0, test_utils_1.generateId)();
|
|
163
|
+
AbstractCommandRunnerTest.defaultKeywords = ['nodejs', 'typescript', 'tdd'];
|
|
164
|
+
AbstractCommandRunnerTest.createUiCommand = 'create.ui';
|
|
165
|
+
AbstractCommandRunnerTest.componentName = (0, test_utils_1.generateId)();
|
|
166
|
+
AbstractCommandRunnerTest.upgradePackageCommand = 'upgrade.package';
|
|
167
|
+
AbstractCommandRunnerTest.infoFromPackageJson = {
|
|
168
|
+
name: _a.packageName,
|
|
169
|
+
description: _a.description,
|
|
170
|
+
keywords: _a.keywordsWithDefaults,
|
|
171
|
+
};
|
|
172
|
+
AbstractCommandRunnerTest.allInstalled = `
|
|
173
|
+
{
|
|
174
|
+
"dependencies": {
|
|
175
|
+
"react": "^...",
|
|
176
|
+
"react-dom": "^..."
|
|
177
|
+
},
|
|
178
|
+
"devDependencies": {
|
|
179
|
+
"@types/react": "^...",
|
|
180
|
+
"@types/react-dom": "^...",
|
|
181
|
+
"@types/jsdom": "^...",
|
|
182
|
+
"@testing-library/react": "^...",
|
|
183
|
+
"@testing-library/dom": "^...",
|
|
184
|
+
"@testing-library/jest-dom": "^...",
|
|
185
|
+
"jsdom": "^..."
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
`;
|
|
189
|
+
AbstractCommandRunnerTest.allRequiredDependencies = [
|
|
190
|
+
'react',
|
|
191
|
+
'react-dom',
|
|
192
|
+
'@types/react',
|
|
193
|
+
'@types/react-dom',
|
|
194
|
+
'@types/jsdom',
|
|
195
|
+
'@testing-library/react',
|
|
196
|
+
'@testing-library/dom',
|
|
197
|
+
'@testing-library/jest-dom',
|
|
198
|
+
'jsdom',
|
|
199
|
+
];
|
|
200
|
+
AbstractCommandRunnerTest.installDependenciesCommand = 'yarn add react react-dom';
|
|
201
|
+
AbstractCommandRunnerTest.installDevDependenciesCommand = 'yarn add -D @types/react @types/react-dom @types/jsdom @testing-library/react @testing-library/dom @testing-library/jest-dom jsdom';
|
|
202
|
+
AbstractCommandRunnerTest.implTestSaveDir = 'src/__tests__/modules';
|
|
203
|
+
AbstractCommandRunnerTest.implModuleSaveDir = 'src/modules';
|
|
204
|
+
AbstractCommandRunnerTest.uiTestSaveDir = 'src/__tests__/ui';
|
|
205
|
+
AbstractCommandRunnerTest.uiModuleSaveDir = 'src/ui';
|
|
206
|
+
AbstractCommandRunnerTest.tsconfigPath = 'tsconfig.json';
|
|
207
|
+
AbstractCommandRunnerTest.randomId = (0, test_utils_1.generateId)();
|
|
208
|
+
AbstractCommandRunnerTest.originalTsconfigFile = JSON.stringify({
|
|
209
|
+
[this.randomId]: _a.randomId,
|
|
210
|
+
compilerOptions: {
|
|
211
|
+
[this.randomId]: _a.randomId,
|
|
212
|
+
},
|
|
213
|
+
}, null, 4);
|
|
214
|
+
AbstractCommandRunnerTest.updatedTsconfigFile = JSON.stringify({
|
|
215
|
+
[this.randomId]: _a.randomId,
|
|
216
|
+
compilerOptions: {
|
|
217
|
+
jsx: 'react-jsx',
|
|
218
|
+
[this.randomId]: _a.randomId,
|
|
219
|
+
},
|
|
220
|
+
include: ['src'],
|
|
221
|
+
}, null, 4);
|
|
222
|
+
AbstractCommandRunnerTest.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
|
|
223
|
+
AbstractCommandRunnerTest.implNameMessage = 'What should the implementation class be called? Example: YourInterfaceImpl';
|
|
224
|
+
AbstractCommandRunnerTest.packageNameMessage = 'What should the package be called? Example: useful-package';
|
|
225
|
+
AbstractCommandRunnerTest.packageDescriptionMessage = 'What should the package description be? Example: A useful package.';
|
|
226
|
+
AbstractCommandRunnerTest.componentNameMessage = 'What should the component be called? Example: YourComponent';
|
|
227
|
+
AbstractCommandRunnerTest.setupTestsFile = `
|
|
228
|
+
import { JSDOM } from 'jsdom'
|
|
229
|
+
|
|
230
|
+
const jsdom = new JSDOM('<!doctype html><html><body></body></html>', {
|
|
231
|
+
url: 'http://localhost',
|
|
232
|
+
})
|
|
233
|
+
|
|
234
|
+
global.window = jsdom.window as unknown as Window & typeof globalThis
|
|
235
|
+
global.document = jsdom.window.document
|
|
236
|
+
global.navigator = jsdom.window.navigator
|
|
237
|
+
global.HTMLElement = jsdom.window.HTMLElement
|
|
238
|
+
global.getComputedStyle = jsdom.window.getComputedStyle
|
|
239
|
+
|
|
240
|
+
global.ResizeObserver = class {
|
|
241
|
+
public observe() {}
|
|
242
|
+
public unobserve() {}
|
|
243
|
+
public disconnect() {}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
global.SVGElement = jsdom.window.SVGElement
|
|
247
|
+
`;
|
|
248
|
+
AbstractCommandRunnerTest.helpText = `ndx CLI (Command Line Interface)
|
|
249
|
+
|
|
250
|
+
Available commands:
|
|
251
|
+
|
|
252
|
+
- bind.snippet Bind a text snippet to a keyboard shortcut in vscode.
|
|
253
|
+
- create.impl Create implementation for interface with test and fake.
|
|
254
|
+
- create.package Create npm package using latest template.
|
|
255
|
+
- create.ui Create React component with test and fake.
|
|
256
|
+
- upgrade.package Upgrade existing npm package to latest template.
|
|
257
|
+
- help, --help, -h Show this help text.
|
|
258
|
+
|
|
259
|
+
Usage:
|
|
260
|
+
|
|
261
|
+
- ndx <command>
|
|
262
|
+
`;
|
|
263
|
+
exports.default = AbstractCommandRunnerTest;
|
|
264
|
+
//# sourceMappingURL=AbstractCommandRunnerTest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractCommandRunnerTest.js","sourceRoot":"","sources":["../../src/__tests__/AbstractCommandRunnerTest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,100 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default class CliCommandRunnerTest extends
|
|
3
|
-
private static readonly createImplCommand;
|
|
4
|
-
private static readonly interfaceName;
|
|
5
|
-
private static readonly implName;
|
|
6
|
-
private static readonly createPackageCommand;
|
|
7
|
-
private static readonly packageName;
|
|
8
|
-
private static readonly description;
|
|
9
|
-
private static readonly keywords;
|
|
10
|
-
private static readonly githubToken;
|
|
11
|
-
private static readonly defaultKeywords;
|
|
12
|
-
private static get keywordsWithDefaults();
|
|
13
|
-
private static readonly createUiCommand;
|
|
14
|
-
private static readonly componentName;
|
|
15
|
-
private static readonly upgradePackageCommand;
|
|
1
|
+
import AbstractCommandRunnerTest from '../AbstractCommandRunnerTest';
|
|
2
|
+
export default class CliCommandRunnerTest extends AbstractCommandRunnerTest {
|
|
16
3
|
protected static beforeEach(): Promise<void>;
|
|
17
4
|
protected static throwsIfCommandIsNotSupported(): Promise<void>;
|
|
18
|
-
protected static createImplCreatesInstance(): Promise<void>;
|
|
19
|
-
protected static createImplPromptsUserForInput(): Promise<void>;
|
|
20
|
-
protected static createImplDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
21
|
-
protected static createImplCreatesTestSaveDirIfNotExists(): Promise<void>;
|
|
22
|
-
protected static createImplCreatesModuleSaveDirIfNotExists(): Promise<void>;
|
|
23
|
-
protected static createImplCreatesFakeSaveDirIfNotExists(): Promise<void>;
|
|
24
|
-
protected static createImplCreatesImplAutomodule(): Promise<void>;
|
|
25
|
-
protected static createImplRunsImplAutomodule(): Promise<void>;
|
|
26
|
-
protected static createPackageCreatesInstance(): Promise<void>;
|
|
27
|
-
protected static createPackagePromptsUserForInput(): Promise<void>;
|
|
28
|
-
protected static createPackageDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
29
|
-
protected static createPackageCreatesNpmAutopackage(): Promise<void>;
|
|
30
|
-
protected static createPackageRunsNpmAutopackage(): Promise<void>;
|
|
31
|
-
protected static createUiCreatesInstance(): Promise<void>;
|
|
32
|
-
protected static createUiPromptsInstallDependenciesIfMissing(): Promise<void>;
|
|
33
|
-
protected static createUiInstallsDependenciesIfMissing(): Promise<void>;
|
|
34
|
-
protected static createUiInstallsDevDependenciesIfMissing(): Promise<void>;
|
|
35
|
-
protected static createUiInstallsIfAnyDepIsMissing(): Promise<void>;
|
|
36
|
-
protected static createUiUpdatesTsconfigIfDepsWereMissing(): Promise<void>;
|
|
37
|
-
protected static createUiCreatesSetupTestsIfDepsWereMissing(): Promise<void>;
|
|
38
|
-
protected static createUiAddsSetupTestsToPackageJsonIfDepsWereMissing(): Promise<void>;
|
|
39
|
-
protected static createUiRecompilesTypescriptIfDepsWereMissing(): Promise<void>;
|
|
40
|
-
protected static createUiDoesNotPromptIfDependenciesAreInstalled(): Promise<void>;
|
|
41
|
-
protected static createUiPromptsUserForInput(): Promise<void>;
|
|
42
|
-
protected static createUiDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
43
|
-
protected static createUiCreatesTestSaveDirIfNotExists(): Promise<void>;
|
|
44
|
-
protected static createUiCreatesModuleSaveDirIfNotExists(): Promise<void>;
|
|
45
|
-
protected static createUiCreatesFakeSaveDirIfNotExists(): Promise<void>;
|
|
46
|
-
protected static createUiCreatesUiAutomodule(): Promise<void>;
|
|
47
|
-
protected static createUiRunsUiAutomodule(): Promise<void>;
|
|
48
5
|
protected static helpOutputsHelpTextToConsole(): Promise<void>;
|
|
49
6
|
protected static helpAcceptsDashDashHelpFlag(): Promise<void>;
|
|
50
7
|
protected static helpAcceptsDashHFlag(): Promise<void>;
|
|
51
|
-
protected static upgradePackageCreatesInstance(): Promise<void>;
|
|
52
|
-
protected static upgradePackageCreatesNpmAutopackage(): Promise<void>;
|
|
53
|
-
protected static upgradePackageRunsNpmAutopackage(): Promise<void>;
|
|
54
|
-
protected static upgradePackageAddsDefaultKeywordsIfMissing(): Promise<void>;
|
|
55
|
-
protected static upgradePackageDoesNotOverwriteKeywordsEvenIfDefaultsMissing(): Promise<void>;
|
|
56
|
-
protected static upgradePackageExtractsPackageNameFromScopedName(): Promise<void>;
|
|
57
|
-
private static runCreateUi;
|
|
58
|
-
private static setFakeReadFileResultToTsconfig;
|
|
59
|
-
private static setFakeReadToEmptyPackageJson;
|
|
60
|
-
private static setFakeReadToAllInstalledExcept;
|
|
61
|
-
private static setFakeReadToAllInstalled;
|
|
62
|
-
private static setFakePackageJson;
|
|
63
|
-
private static readonly infoFromPackageJson;
|
|
64
|
-
private static readonly allInstalled;
|
|
65
|
-
private static readonly allRequiredDependencies;
|
|
66
|
-
private static readonly installDependenciesCommand;
|
|
67
|
-
private static readonly installDevDependenciesCommand;
|
|
68
|
-
private static runCreateImpl;
|
|
69
|
-
private static runCreatePackage;
|
|
70
|
-
private static runUpgradePackage;
|
|
71
|
-
private static expandHomeDir;
|
|
72
|
-
private static splitOnCommaOrWhitespace;
|
|
73
|
-
private static readonly implTestSaveDir;
|
|
74
|
-
private static readonly implModuleSaveDir;
|
|
75
|
-
private static get implFakeSaveDir();
|
|
76
|
-
private static readonly uiTestSaveDir;
|
|
77
|
-
private static readonly uiModuleSaveDir;
|
|
78
|
-
private static get uiFakeSaveDir();
|
|
79
|
-
private static readonly tsconfigPath;
|
|
80
|
-
private static readonly randomId;
|
|
81
|
-
private static readonly originalTsconfigFile;
|
|
82
|
-
private static readonly updatedTsconfigFile;
|
|
83
|
-
private static setFakeImplAutomodule;
|
|
84
|
-
private static setFakeUiAutomodule;
|
|
85
|
-
private static setFakeAutopackage;
|
|
86
|
-
private static setFakeExec;
|
|
87
|
-
private static setFakeLog;
|
|
88
|
-
private static setFakeMkdir;
|
|
89
|
-
private static setFakePrompts;
|
|
90
|
-
private static setFakeReadFile;
|
|
91
|
-
private static setFakeWriteFile;
|
|
92
|
-
private static readonly interfaceNameMessage;
|
|
93
|
-
private static readonly implNameMessage;
|
|
94
|
-
private static readonly packageNameMessage;
|
|
95
|
-
private static readonly packageDescriptionMessage;
|
|
96
|
-
private static readonly componentNameMessage;
|
|
97
|
-
private static readonly setupTestsFile;
|
|
98
|
-
private static readonly helpText;
|
|
99
|
-
private static CliCommandRunner;
|
|
100
8
|
}
|