isaacscript 3.8.3 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript",
3
- "version": "3.8.3",
3
+ "version": "3.9.0",
4
4
  "description": "A command line tool for managing Isaac mods written in TypeScript.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.check = void 0;
3
+ exports.getTruncatedText = exports.check = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
6
  const klaw_sync_1 = tslib_1.__importDefault(require("klaw-sync"));
@@ -14,6 +14,8 @@ const packageManager_js_1 = require("../../packageManager.js");
14
14
  const URL_PREFIX = "https://raw.githubusercontent.com/IsaacScript/isaacscript/main/packages/isaacscript-cli/file-templates";
15
15
  const MARKER_CUSTOMIZATION_START = "@template-customization-start";
16
16
  const MARKER_CUSTOMIZATION_END = "@template-customization-end";
17
+ const MARKER_IGNORE_BLOCK_START = "@template-ignore-block-start";
18
+ const MARKER_IGNORE_BLOCK_END = "@template-ignore-block-end";
17
19
  const MARKER_IGNORE_NEXT_LINE = "@template-ignore-next-line";
18
20
  const PACKAGE_MANAGER_STRINGS = [
19
21
  "PACKAGE_MANAGER_NAME",
@@ -103,9 +105,9 @@ function compareTextFiles(projectFilePath, templateFilePath, verbose) {
103
105
  printTemplateLocation(templateFilePath);
104
106
  return false;
105
107
  }
106
- const [projectFileContents, ignoreLines] = getTruncatedFileText(projectFilePath, new isaacScriptCommonTS_js_1.ReadonlySet(), verbose);
107
- const [templateFileContents] = getTruncatedFileText(templateFilePath, ignoreLines, verbose);
108
- if (templateFileContents === projectFileContents) {
108
+ const projectFileObject = getTruncatedFileText(projectFilePath, new Set(), new Set(), verbose);
109
+ const templateFileObject = getTruncatedFileText(templateFilePath, projectFileObject.ignoreLines, projectFileObject.linesBeforeIgnore, verbose);
110
+ if (projectFileObject.text === templateFileObject.text) {
109
111
  return true;
110
112
  }
111
113
  console.log(`The contents of the following file do not match: ${chalk_1.default.red(projectFilePath)}`);
@@ -120,64 +122,89 @@ function compareTextFiles(projectFilePath, templateFilePath, verbose) {
120
122
  console.log(originalProjectFile);
121
123
  console.log();
122
124
  console.log("--- Parsed template file: ---\n");
123
- console.log(templateFileContents);
125
+ console.log(templateFileObject.text);
124
126
  console.log();
125
127
  console.log("--- Parsed project file: ---\n");
126
- console.log(projectFileContents);
128
+ console.log(projectFileObject.text);
127
129
  console.log();
128
130
  }
129
131
  const tempProjectFilePath = node_path_1.default.join(constants_js_1.CWD, "tempProjectFile.txt");
130
132
  const tempTemplateFilePath = node_path_1.default.join(constants_js_1.CWD, "tempTemplateFile.txt");
131
- (0, file_js_1.writeFile)(tempProjectFilePath, projectFileContents, verbose);
132
- (0, file_js_1.writeFile)(tempTemplateFilePath, templateFileContents, verbose);
133
+ (0, file_js_1.writeFile)(tempProjectFilePath, projectFileObject.text, verbose);
134
+ (0, file_js_1.writeFile)(tempTemplateFilePath, templateFileObject.text, verbose);
133
135
  const { stdout } = (0, exec_js_1.execShell)("diff", [tempProjectFilePath, tempTemplateFilePath, "--ignore-blank-lines"], verbose, true);
134
136
  console.log(`${stdout}\n`);
135
137
  (0, file_js_1.deleteFileOrDirectory)(tempProjectFilePath, verbose);
136
138
  (0, file_js_1.deleteFileOrDirectory)(tempTemplateFilePath, verbose);
137
139
  return false;
138
140
  }
141
+ function getTruncatedFileText(filePath, ignoreLines, linesBeforeIgnore, verbose) {
142
+ const fileName = node_path_1.default.basename(filePath);
143
+ const fileContents = (0, file_js_1.readFile)(filePath, verbose);
144
+ return getTruncatedText(fileName, fileContents, ignoreLines, linesBeforeIgnore);
145
+ }
139
146
  /**
140
- * @returns The a tuple containing the text of the file with all text removed between any flagged
147
+ * @param fileName Used to perform some specific rules based on the template file name.
148
+ * @param text The text to parse.
149
+ * @param ignoreLines A set of lines to remove from the text.
150
+ * @param linesBeforeIgnore A set of lines that will trigger the subsequent line to be ignored.
151
+ * @returns The tuple containing the text of the file with all text removed between any flagged
141
152
  * markers (and other specific hard-coded exclusions), as well as an array of lines that
142
- * had a ignore-next-line marker below them.
153
+ * had a "ignore-next-line" marker below them.
143
154
  */
144
- function getTruncatedFileText(filePath, linesBeforeIgnore, verbose) {
145
- const fileName = node_path_1.default.basename(filePath);
146
- const projectFileContents = (0, file_js_1.readFile)(filePath, verbose);
147
- const lines = projectFileContents.split("\n");
155
+ function getTruncatedText(fileName, text, ignoreLines, linesBeforeIgnore) {
156
+ const lines = text.split("\n");
148
157
  const newLines = [];
158
+ const newIgnoreLines = new Set();
149
159
  const newLinesBeforeIgnore = new Set();
150
- let currentlySkipping = false;
151
- let markToIgnoreNextLine = false;
160
+ let isSkipping = false;
161
+ let isIgnoring = false;
162
+ let shouldIgnoreNextLine = false;
152
163
  let previousLine = "";
153
164
  for (const line of lines) {
154
- if (line === "") {
165
+ if (line.trim() === "") {
155
166
  continue;
156
167
  }
157
- if (markToIgnoreNextLine) {
158
- markToIgnoreNextLine = false;
168
+ if (ignoreLines.has(line.trim())) {
169
+ continue;
170
+ }
171
+ if (shouldIgnoreNextLine) {
172
+ shouldIgnoreNextLine = false;
159
173
  continue;
160
174
  }
161
175
  if (linesBeforeIgnore.has(line)) {
162
- markToIgnoreNextLine = true;
176
+ shouldIgnoreNextLine = true;
163
177
  }
164
178
  // -------------
165
179
  // Marker checks
166
180
  // -------------
167
181
  if (line.includes(MARKER_CUSTOMIZATION_START)) {
168
- currentlySkipping = true;
182
+ isSkipping = true;
169
183
  continue;
170
184
  }
171
185
  if (line.includes(MARKER_CUSTOMIZATION_END)) {
172
- currentlySkipping = false;
186
+ isSkipping = false;
187
+ continue;
188
+ }
189
+ if (line.includes(MARKER_IGNORE_BLOCK_START)) {
190
+ isIgnoring = true;
191
+ continue;
192
+ }
193
+ if (line.includes(MARKER_IGNORE_BLOCK_END)) {
194
+ isIgnoring = false;
173
195
  continue;
174
196
  }
175
197
  if (line.includes(MARKER_IGNORE_NEXT_LINE)) {
176
- markToIgnoreNextLine = true;
198
+ shouldIgnoreNextLine = true;
177
199
  // We mark the previous line so that we know the next line to skip in the template.
178
200
  newLinesBeforeIgnore.add(previousLine);
179
201
  continue;
180
202
  }
203
+ if (isIgnoring) {
204
+ const baseLine = (0, isaacScriptCommonTS_js_1.trimPrefix)(line.trim(), "// ");
205
+ newIgnoreLines.add(baseLine);
206
+ continue;
207
+ }
181
208
  // --------------------
182
209
  // Specific file checks
183
210
  // --------------------
@@ -187,11 +214,11 @@ function getTruncatedFileText(filePath, linesBeforeIgnore, verbose) {
187
214
  continue;
188
215
  }
189
216
  if (line.includes('"words": [')) {
190
- currentlySkipping = true;
217
+ isSkipping = true;
191
218
  continue;
192
219
  }
193
- if ((line.endsWith("]") || line.endsWith("],")) && currentlySkipping) {
194
- currentlySkipping = false;
220
+ if ((line.endsWith("]") || line.endsWith("],")) && isSkipping) {
221
+ isSkipping = false;
195
222
  continue;
196
223
  }
197
224
  }
@@ -208,14 +235,19 @@ function getTruncatedFileText(filePath, linesBeforeIgnore, verbose) {
208
235
  // ------------
209
236
  // Final checks
210
237
  // ------------
211
- if (!currentlySkipping) {
238
+ if (!isSkipping) {
212
239
  newLines.push(line);
213
240
  previousLine = line;
214
241
  }
215
242
  }
216
243
  const newText = newLines.join("\n");
217
- return [newText, newLinesBeforeIgnore];
244
+ return {
245
+ text: newText,
246
+ ignoreLines: newIgnoreLines,
247
+ linesBeforeIgnore: newLinesBeforeIgnore,
248
+ };
218
249
  }
250
+ exports.getTruncatedText = getTruncatedText;
219
251
  function printTemplateLocation(templateFilePath) {
220
252
  const unixPath = templateFilePath.split(node_path_1.default.sep).join(node_path_1.default.posix.sep);
221
253
  const match = unixPath.match(/.+\/file-templates\/(?<urlSuffix>.+)/);
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/check/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/check/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const check_js_1 = require("./check.js");
4
+ test("no markers", () => {
5
+ const templateText = `
6
+ line 1
7
+ line 2
8
+ line 3
9
+ `.trim();
10
+ const { text } = (0, check_js_1.getTruncatedText)("test", templateText, new Set(), new Set());
11
+ expect(text).toBe(templateText);
12
+ });
13
+ test("customization marker", () => {
14
+ const templateText = `
15
+ line 1
16
+ @template-customization-start
17
+ line 2
18
+ @template-customization-end
19
+ line 3
20
+ `.trim();
21
+ const expectedTemplateText = `
22
+ line 1
23
+ line 3
24
+ `.trim();
25
+ const { text } = (0, check_js_1.getTruncatedText)("test", templateText, new Set(), new Set());
26
+ expect(text).toBe(expectedTemplateText);
27
+ });
28
+ test("ignore block marker part 1", () => {
29
+ const templateText = `
30
+ line 1
31
+ @template-ignore-block-start
32
+ // line 2
33
+ @template-ignore-block-end
34
+ line 3
35
+ `.trim();
36
+ const parsedTemplateText = `
37
+ line 1
38
+ line 3
39
+ `.trim();
40
+ const { text, ignoreLines } = (0, check_js_1.getTruncatedText)("test", templateText, new Set(), new Set());
41
+ expect(text).toBe(parsedTemplateText);
42
+ expect(ignoreLines.size).toBe(1);
43
+ expect([...ignoreLines][0]).toBe("line 2");
44
+ });
45
+ test("ignore block marker part 2", () => {
46
+ const templateText = `
47
+ line 1
48
+ line 2
49
+ line 3
50
+ `.trim();
51
+ const expectedTemplateText = `
52
+ line 1
53
+ line 3
54
+ `.trim();
55
+ const { text } = (0, check_js_1.getTruncatedText)("test", templateText, new Set(["line 2"]), new Set());
56
+ expect(text).toBe(expectedTemplateText);
57
+ });
58
+ test("ignore next line part 1", () => {
59
+ const templateText = `
60
+ line 1
61
+ @template-ignore-next-line
62
+ line 2
63
+ line 3
64
+ `.trim();
65
+ const expectedTemplateText = `
66
+ line 1
67
+ line 3
68
+ `.trim();
69
+ const { text, linesBeforeIgnore } = (0, check_js_1.getTruncatedText)("test", templateText, new Set(), new Set());
70
+ expect(linesBeforeIgnore.size).toBe(1);
71
+ expect([...linesBeforeIgnore][0]).toBe("line 1");
72
+ expect(text).toBe(expectedTemplateText);
73
+ });
74
+ test("ignore next line part 2", () => {
75
+ const templateText = `
76
+ line 1
77
+ line 2
78
+ line 3
79
+ `.trim();
80
+ const expectedTemplateText = `
81
+ line 1
82
+ line 3
83
+ `.trim();
84
+ const { text } = (0, check_js_1.getTruncatedText)("test", templateText, new Set(), new Set(["line 1"]));
85
+ expect(text).toBe(expectedTemplateText);
86
+ });
87
+ //# sourceMappingURL=check.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.test.js","sourceRoot":"","sources":["../../../../../../packages/isaacscript-cli/src/commands/check/check.test.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  // The functions here are copied from `isaacscript-common-ts` because this package uses CommonJS
3
3
  // instead of ESM. Furthermore, using `tsconfig-paths` makes live debugging more difficult.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.repeat = exports.removeLinesMatching = exports.removeLinesBetweenMarkers = exports.parseSemanticVersion = exports.parseIntSafe = exports.parseFloatSafe = exports.isRecord = exports.isKebabCase = exports.hasWhiteSpace = exports.getEnumValues = exports.fatalError = exports.ReadonlySet = void 0;
5
+ exports.trimPrefix = exports.repeat = exports.removeLinesMatching = exports.removeLinesBetweenMarkers = exports.parseSemanticVersion = exports.parseIntSafe = exports.parseFloatSafe = exports.isRecord = exports.isKebabCase = exports.hasWhiteSpace = exports.getEnumValues = exports.fatalError = exports.ReadonlySet = void 0;
6
6
  /** An alias for the `Set` constructor that returns a read-only set. */
7
7
  exports.ReadonlySet = Set;
8
8
  /** From: https://github.com/expandjs/expandjs/blob/master/lib/kebabCaseRegex.js */
@@ -202,4 +202,12 @@ function repeat(n, func) {
202
202
  }
203
203
  }
204
204
  exports.repeat = repeat;
205
+ /** Helper function to trim a prefix from a string, if it exists. Returns the trimmed string. */
206
+ function trimPrefix(string, prefix) {
207
+ if (!string.startsWith(prefix)) {
208
+ return string;
209
+ }
210
+ return string.slice(prefix.length);
211
+ }
212
+ exports.trimPrefix = trimPrefix;
205
213
  //# sourceMappingURL=isaacScriptCommonTS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isaacScriptCommonTS.js","sourceRoot":"","sources":["../../../../packages/isaacscript-cli/src/isaacScriptCommonTS.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isaacScriptCommonTS.js","sourceRoot":"","sources":["../../../../packages/isaacscript-cli/src/isaacScriptCommonTS.ts"],"names":[],"mappings":"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"}