@flarum/cli 3.0.13 → 3.0.15

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/README.md CHANGED
@@ -49,7 +49,7 @@ $ npm install -g @flarum/cli
49
49
  $ flarum-cli COMMAND
50
50
  running command...
51
51
  $ flarum-cli (-v|--version|version)
52
- @flarum/cli/3.0.13 darwin-arm64 node-v26.11.1
52
+ @flarum/cli/3.0.15 darwin-arm64 node-v26.12.0
53
53
  $ flarum-cli --help [COMMAND]
54
54
  USAGE
55
55
  $ flarum-cli COMMAND
@@ -7,15 +7,15 @@
7
7
  "dependencies": {
8
8
  },
9
9
  "devDependencies": {
10
- "@flarum/jest-config": "^2.0.0",
10
+ "@flarum/jest-config": "^2.1.1",
11
11
  "@flarum/prettier-config": "^1.0.0",
12
12
  "flarum-tsconfig": "^2.0.0",
13
- "flarum-webpack-config": "^3.0.7",
14
- "prettier": "^2.5.1",
15
- "typescript": "^4.9.5",
16
- "typescript-coverage-report": "^0.6.1",
13
+ "flarum-webpack-config": "^3.1.0",
14
+ "prettier": "^3.9.10",
15
+ "typescript": "^5.9.3",
16
+ "typescript-coverage-report": "^0.6.4",
17
17
  "webpack": "^5.104.1",
18
- "webpack-cli": "^4.9.1"
18
+ "webpack-cli": "^7.2.3"
19
19
  },
20
20
  "scripts": {
21
21
  "dev": "webpack --mode development --watch",
@@ -12,8 +12,8 @@
12
12
  "@types/**/*"
13
13
  ],
14
14
  "compilerOptions": {
15
- // Only load the type packages the code imports. Others, such as the
16
- // @types/node webpack brings along, use syntax TypeScript 4.9 can't read.
15
+ // Only load the type packages the code imports, not every one in
16
+ // node_modules, such as the @types/node webpack brings along.
17
17
  "types": [],
18
18
  // This will output typings to `dist-typings`
19
19
  "declarationDir": "./dist-typings",
@@ -1,11 +1,10 @@
1
- import { AdvancedContent, BaseUpgradeStep, GitCommit, Replacement } from './base';
1
+ import { BaseUpgradeStep, GitCommit, Replacement } from './base';
2
2
  export default class Dependencies extends BaseUpgradeStep {
3
3
  type: string;
4
- /** The TypeScript the extension asked for, when it was not a 4.x. */
4
+ /** The TypeScript the extension asked for, when it allowed TypeScript 6 or newer. */
5
5
  protected typeScriptWas: string | null;
6
- /** What was removed from tsconfig.json, as TypeScript 4.9 doesn't have it. */
6
+ /** What was removed from tsconfig.json, as TypeScript 5.9 refuses it. */
7
7
  protected removedCompilerOptions: string[];
8
- protected newerSyntax: boolean;
9
8
  /** Constraints left as they were, as they already ask for newer versions. */
10
9
  protected keptNewer: string[];
11
10
  /** Tooling moved from dependencies to devDependencies. */
@@ -14,8 +13,6 @@ export default class Dependencies extends BaseUpgradeStep {
14
13
  protected addedTypings: string[];
15
14
  replacements(file: string): Replacement[];
16
15
  targets(): string[];
17
- advancedContent(file: string, code: string): AdvancedContent;
18
- updateCode(file: string, code: string, updated: string | AdvancedContent): Promise<string>;
19
16
  gitCommit(): GitCommit;
20
17
  pauseMessage(): string;
21
18
  /**
@@ -42,26 +39,27 @@ export default class Dependencies extends BaseUpgradeStep {
42
39
  */
43
40
  protected moveToolingToDevDependencies(pkg: Record<string, any>): void;
44
41
  /**
45
- * Drop the compiler options, and option values, TypeScript 4.9 doesn't have:
46
- * it refuses a tsconfig.json with any. A tsconfig.json it can read is left
42
+ * Drop the compiler options, and option values, TypeScript 5.9 refuses: it
43
+ * won't read a tsconfig.json with any. A tsconfig.json it can read is left
47
44
  * exactly as it was.
48
45
  */
49
46
  updateTsConfig(): Replacement;
50
47
  /**
51
48
  * TypeScript loads every type package in node_modules unless told which,
52
- * and 4.9 can't read the @types/node that webpack's minimizer brings along.
53
- * Load only the ones the code imports. The file is edited as text so its
54
- * comments stay.
49
+ * including the @types/node that webpack's minimizer brings along. Load only
50
+ * the ones the code imports. The file is edited as text so its comments stay.
55
51
  */
56
52
  limitTypes(): Replacement;
57
53
  /**
58
54
  * A test config extending tsconfig.json would no longer load Jest's globals.
59
55
  */
60
56
  testTypes(): Replacement;
61
- /** The extension's js/package.json, or nothing when it has none. */
62
- protected packageJson(): Record<string, any>;
63
57
  /**
64
- * Put a @TODO above each line using syntax TypeScript 4.9 can't compile.
58
+ * Whether TypeScript 6 and newer accept the extension's tsconfig.json: it
59
+ * replaces the moduleResolution flarum-tsconfig sets, which they refuse, and
60
+ * sets no baseUrl, which they refuse too.
65
61
  */
66
- flagNewerSyntax(): Replacement;
62
+ protected tsConfigReadsWithSixOrNewer(): boolean;
63
+ /** The extension's js/package.json, or nothing when it has none. */
64
+ protected packageJson(): Record<string, any>;
67
65
  }
@@ -5,19 +5,12 @@ const base_1 = require("./base");
5
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
6
  const fs_1 = tslib_1.__importDefault(require("fs"));
7
7
  const path_1 = tslib_1.__importDefault(require("path"));
8
- const typescript_4_9_1 = require("./typescript-4-9");
8
+ const typescript_5_9_1 = require("./typescript-5-9");
9
9
  // What `fl init` gave 1.x extensions. `sed -i` with no suffix is GNU sed's
10
10
  // form: BSD sed, as on macOS, takes the next argument as the suffix and fails.
11
11
  // With the suffix attached, both work.
12
12
  const GNU_POST_BUILD_TYPINGS = "find dist-typings -type f -name '*.d.ts' -print0 | xargs -0 sed -i 's,../src/@types,@types,g'";
13
13
  const PORTABLE_POST_BUILD_TYPINGS = "find dist-typings -type f -name '*.d.ts' -print0 | xargs -0 sed -i.bak 's,../src/@types,@types,g' && find dist-typings -type f -name '*.d.ts.bak' -delete";
14
- // Syntax TypeScript 4.9 can't compile, each checked against typescript@4.9.5.
15
- const NEWER_SYNTAX = [
16
- [/(?:\bfrom|^\s*import)\s+(["'])[^\n"']*\1\s+with\s*{/, 'import attributes (TypeScript 5.3); use `assert` instead of `with`'],
17
- [/^\s*export\s+type\s+\*/, '`export type *` (TypeScript 5.0)'],
18
- [/[,<]\s*const\s+[$A-Z_a-z][\w$]*\s*(?:extends\b|[,=>])/, '`const` type parameters (TypeScript 5.0)'],
19
- [/^\s*(?:await\s+)?using\s+[$A-Z_a-z][\w$]*\s*[:=]/, '`using` declarations (TypeScript 5.2)'],
20
- ];
21
14
  // Packages an extension only needs to build, check and test its frontend.
22
15
  const BUILD_TOOLING = new Set([
23
16
  '@flarum/jest-config',
@@ -42,8 +35,8 @@ function scaffoldedPackageJson(packageManager) {
42
35
  return JSON.parse(skeleton.replace(/<%= params\.jsPackageManager %>/g, packageManager));
43
36
  }
44
37
  const TYPES_COMMENT = [
45
- 'Only load the type packages the code imports. Others, such as the',
46
- "@types/node webpack brings along, use syntax TypeScript 4.9 can't read.",
38
+ 'Only load the type packages the code imports, not every one in',
39
+ 'node_modules, such as the @types/node webpack brings along.',
47
40
  ];
48
41
  /**
49
42
  * The tsconfig.json with an option first in its compilerOptions, and the
@@ -64,11 +57,14 @@ function insertCompilerOption(code, comment, option) {
64
57
  }
65
58
  /** Dependencies in the alphabetical order package managers keep them in. */
66
59
  const sortedByName = (dependencies) => Object.fromEntries(Object.entries(dependencies).sort(([a], [b]) => a.localeCompare(b)));
67
- const isTypeScript = (file) => /\.tsx?$/.test(file);
68
- /** Whether a version constraint stays within TypeScript 4: `4.9.5`, `^4.5.4`, `~4.7`, `4.x`. */
69
- const isFourX = (constraint) => {
70
- const version = constraint.trim().replace(/^\^|^~/, '');
71
- return version === '4' || version.startsWith('4.');
60
+ /**
61
+ * Whether a TypeScript constraint could resolve to TypeScript 6 or newer:
62
+ * `^6.0.3`, `>=4.2`, `latest`, `*`. A caret, tilde or exact constraint on 4 or
63
+ * 5 can't.
64
+ */
65
+ const allowsSixOrNewer = (constraint) => {
66
+ const match = constraint.trim().match(/^[=^~]?\s*v?(\d+)(?:\.|$)/);
67
+ return !match || Number(match[1]) >= 6;
72
68
  };
73
69
  /**
74
70
  * The lowest version a simple constraint allows, as [major, minor, patch]:
@@ -92,11 +88,10 @@ class Dependencies extends base_1.BaseUpgradeStep {
92
88
  constructor() {
93
89
  super(...arguments);
94
90
  this.type = 'Update the extension dependencies to the latest versions.';
95
- /** The TypeScript the extension asked for, when it was not a 4.x. */
91
+ /** The TypeScript the extension asked for, when it allowed TypeScript 6 or newer. */
96
92
  this.typeScriptWas = null;
97
- /** What was removed from tsconfig.json, as TypeScript 4.9 doesn't have it. */
93
+ /** What was removed from tsconfig.json, as TypeScript 5.9 refuses it. */
98
94
  this.removedCompilerOptions = [];
99
- this.newerSyntax = false;
100
95
  /** Constraints left as they were, as they already ask for newer versions. */
101
96
  this.keptNewer = [];
102
97
  /** Tooling moved from dependencies to devDependencies. */
@@ -119,24 +114,11 @@ class Dependencies extends base_1.BaseUpgradeStep {
119
114
  case 'js/tsconfig.test.json':
120
115
  replacements.push(this.testTypes());
121
116
  break;
122
- default:
123
- if (isTypeScript(file)) {
124
- replacements.push(this.flagNewerSyntax());
125
- }
126
117
  }
127
118
  return replacements;
128
119
  }
129
120
  targets() {
130
- return ['composer.json', 'js/package.json', 'js/tsconfig.json', 'js/tsconfig.test.json', 'js/src/**/*.ts', 'js/src/**/*.tsx'];
131
- }
132
- // TypeScript sources are only searched, line by line: parsing them would
133
- // fail on the very syntax being looked for, and reformatting would change
134
- // more than the lines flagged.
135
- advancedContent(file, code) {
136
- return isTypeScript(file) ? null : super.advancedContent(file, code);
137
- }
138
- async updateCode(file, code, updated) {
139
- return isTypeScript(file) && typeof updated === 'string' ? updated : super.updateCode(file, code, updated);
121
+ return ['composer.json', 'js/package.json', 'js/tsconfig.json', 'js/tsconfig.test.json'];
140
122
  }
141
123
  gitCommit() {
142
124
  return {
@@ -151,10 +133,9 @@ class Dependencies extends base_1.BaseUpgradeStep {
151
133
  const npm = chalk_1.default.bgYellowBright('npm install');
152
134
  const notes = [
153
135
  this.typeScriptWas &&
154
- `TypeScript ${this.typeScriptWas} was brought down to ^4.9.5: Flarum 2.0 builds and checks its typings with TypeScript 4.9.`,
136
+ `TypeScript ${this.typeScriptWas} was brought down to ^5.9.3: flarum-tsconfig resolves modules the way TypeScript 6 refuses without ignoreDeprecations.`,
155
137
  this.removedCompilerOptions.length > 0 &&
156
- `Removed from js/tsconfig.json, as TypeScript 4.9 does not have them: ${this.removedCompilerOptions.join(', ')}.`,
157
- this.newerSyntax && 'Some TypeScript uses syntax 4.9 cannot compile; look for the @TODO comments.',
138
+ `Removed from js/tsconfig.json, as TypeScript 5.9 refuses them: ${this.removedCompilerOptions.join(', ')}.`,
158
139
  this.addedTypings.length > 0 && `Added what the reusable frontend workflow runs to build and check typings: ${this.addedTypings.join(', ')}.`,
159
140
  this.movedToDev.length > 0 && `Moved to devDependencies, as the extension only builds with them: ${this.movedToDev.join(', ')}.`,
160
141
  this.keptNewer.length > 0 && `Kept, as they already ask for newer versions than Flarum 2.0 needs: ${this.keptNewer.join(', ')}.`,
@@ -232,28 +213,35 @@ class Dependencies extends base_1.BaseUpgradeStep {
232
213
  return (_file, _code, advanced) => {
233
214
  var _a;
234
215
  advanced = advanced;
235
- // The versions a new extension is scaffolded with. 3.0.6 is the first
236
- // flarum-webpack-config that loads an extension's code-split chunks from
237
- // its own build, and 3.0.7 the first that exports a default export as its
238
- // value, not under a name taken from its code.
216
+ // The versions a new extension is scaffolded with. 3.1.0 is the first
217
+ // flarum-webpack-config that supplies TypeScript 5.9 and only asks for
218
+ // webpack as a peer, and @flarum/jest-config 2.1.1 tests with the mithril
219
+ // Flarum ships and requires that flarum-webpack-config. Prettier 3 is what
220
+ // the upgrade has just formatted the code with.
239
221
  const map = {
240
- 'flarum-webpack-config': '^3.0.7',
222
+ 'flarum-webpack-config': '^3.1.0',
241
223
  'flarum-tsconfig': '^2.0.0',
242
- '@flarum/jest-config': '^2.0.0',
224
+ '@flarum/jest-config': '^2.1.1',
225
+ prettier: '^3.9.10',
243
226
  webpack: '^5.104.1',
244
- 'webpack-cli': '^4.9.1',
245
- // What Flarum 2.0 builds and checks its typings with.
246
- typescript: '^4.9.5',
227
+ 'webpack-cli': '^7.2.3',
228
+ // What Flarum builds and checks its typings with.
229
+ typescript: '^5.9.3',
247
230
  };
248
231
  // Extensions list the tooling under either key, often split between both.
249
232
  for (const dependencies of [advanced.dependencies, advanced.devDependencies]) {
250
233
  for (const key of Object.keys(dependencies || {})) {
251
- if (key === 'typescript' && !isFourX(String(dependencies[key]))) {
252
- this.typeScriptWas = dependencies[key];
234
+ // TypeScript is the exception: it moves to what Flarum checks typings
235
+ // with, whatever the extension asked for. flarum-tsconfig resolves
236
+ // modules the way TypeScript 6 refuses, so a newer one comes down,
237
+ // unless the extension's tsconfig already resolves them another way.
238
+ if (key === 'typescript' && allowsSixOrNewer(String(dependencies[key])) && this.tsConfigReadsWithSixOrNewer()) {
239
+ this.keptNewer.push(`${key} ${dependencies[key]}`);
253
240
  }
254
- // TypeScript is the exception: it comes down to what Flarum checks
255
- // typings with, whatever the extension asked for.
256
- if (key === 'typescript') {
241
+ else if (key === 'typescript') {
242
+ if (allowsSixOrNewer(String(dependencies[key]))) {
243
+ this.typeScriptWas = dependencies[key];
244
+ }
257
245
  dependencies[key] = map[key];
258
246
  }
259
247
  else if (map[key]) {
@@ -332,8 +320,8 @@ class Dependencies extends base_1.BaseUpgradeStep {
332
320
  this.movedToDev.push(...moving);
333
321
  }
334
322
  /**
335
- * Drop the compiler options, and option values, TypeScript 4.9 doesn't have:
336
- * it refuses a tsconfig.json with any. A tsconfig.json it can read is left
323
+ * Drop the compiler options, and option values, TypeScript 5.9 refuses: it
324
+ * won't read a tsconfig.json with any. A tsconfig.json it can read is left
337
325
  * exactly as it was.
338
326
  */
339
327
  updateTsConfig() {
@@ -342,13 +330,13 @@ class Dependencies extends base_1.BaseUpgradeStep {
342
330
  const options = tsconfig.compilerOptions || {};
343
331
  const removed = [];
344
332
  for (const [name, value] of Object.entries(options)) {
345
- const known = Object.prototype.hasOwnProperty.call(typescript_4_9_1.compilerOptions, name) ? typescript_4_9_1.compilerOptions[name] : null;
333
+ const known = Object.prototype.hasOwnProperty.call(typescript_5_9_1.compilerOptions, name) ? typescript_5_9_1.compilerOptions[name] : null;
346
334
  if (!known) {
347
335
  removed.push(name);
348
336
  delete options[name];
349
337
  }
350
338
  else if (name === 'lib' && Array.isArray(value)) {
351
- const kept = value.filter((lib) => typeof lib === 'string' && typescript_4_9_1.libs.includes(lib.toLowerCase()));
339
+ const kept = value.filter((lib) => typeof lib === 'string' && typescript_5_9_1.libs.includes(lib.toLowerCase()));
352
340
  for (const lib of value.filter((lib) => !kept.includes(lib))) {
353
341
  removed.push(`lib "${lib}"`);
354
342
  }
@@ -364,18 +352,14 @@ class Dependencies extends base_1.BaseUpgradeStep {
364
352
  delete options[name];
365
353
  }
366
354
  }
367
- if (Array.isArray(tsconfig.extends)) {
368
- this.leaveTodo('js/tsconfig.json', 'It extends a list of configs, which TypeScript 4.9 cannot read. Extend one, and move the rest into it.');
369
- }
370
355
  this.removedCompilerOptions.push(...removed);
371
356
  return removed.length > 0 ? { updated: tsconfig } : null;
372
357
  };
373
358
  }
374
359
  /**
375
360
  * TypeScript loads every type package in node_modules unless told which,
376
- * and 4.9 can't read the @types/node that webpack's minimizer brings along.
377
- * Load only the ones the code imports. The file is edited as text so its
378
- * comments stay.
361
+ * including the @types/node that webpack's minimizer brings along. Load only
362
+ * the ones the code imports. The file is edited as text so its comments stay.
379
363
  */
380
364
  limitTypes() {
381
365
  return (_file, code, advanced) => {
@@ -408,6 +392,22 @@ class Dependencies extends base_1.BaseUpgradeStep {
408
392
  return updated ? { updated } : null;
409
393
  };
410
394
  }
395
+ /**
396
+ * Whether TypeScript 6 and newer accept the extension's tsconfig.json: it
397
+ * replaces the moduleResolution flarum-tsconfig sets, which they refuse, and
398
+ * sets no baseUrl, which they refuse too.
399
+ */
400
+ tsConfigReadsWithSixOrNewer() {
401
+ var _a, _b;
402
+ try {
403
+ const code = fs_1.default.readFileSync(path_1.default.join(this.root, 'js/tsconfig.json'), 'utf8');
404
+ const options = (_b = (_a = this.advancedContent('js/tsconfig.json', code)) === null || _a === void 0 ? void 0 : _a.compilerOptions) !== null && _b !== void 0 ? _b : {};
405
+ return ['bundler', 'node16', 'nodenext'].includes(String(options.moduleResolution).toLowerCase()) && options.baseUrl === undefined;
406
+ }
407
+ catch (_c) {
408
+ return false;
409
+ }
410
+ }
411
411
  /** The extension's js/package.json, or nothing when it has none. */
412
412
  packageJson() {
413
413
  try {
@@ -417,29 +417,5 @@ class Dependencies extends base_1.BaseUpgradeStep {
417
417
  return {};
418
418
  }
419
419
  }
420
- /**
421
- * Put a @TODO above each line using syntax TypeScript 4.9 can't compile.
422
- */
423
- flagNewerSyntax() {
424
- return (_file, code) => {
425
- const flagged = [];
426
- for (const line of code.split('\n')) {
427
- for (const [pattern, what] of NEWER_SYNTAX) {
428
- if (!pattern.test(line))
429
- continue;
430
- const indent = line.slice(0, line.length - line.trimStart().length);
431
- const todo = `${indent}// @TODO: Flarum 2.0 builds with TypeScript 4.9, which has no ${what}.`;
432
- // An earlier run already flagged it.
433
- if (flagged.slice(-NEWER_SYNTAX.length).some((previous) => previous.trim() === todo.trim()))
434
- continue;
435
- flagged.push(line.endsWith('\r') ? `${todo}\r` : todo);
436
- this.newerSyntax = true;
437
- }
438
- flagged.push(line);
439
- }
440
- const updated = flagged.join('\n');
441
- return updated === code ? null : { updated };
442
- };
443
- }
444
420
  }
445
421
  exports.default = Dependencies;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * The compiler options TypeScript 5.9 accepts, which Flarum builds with, and
3
+ * the values it accepts for those that take one of a set. A tsconfig.json has
4
+ * to spell an option exactly so; its values may be in any case, so they are
5
+ * listed lowercase.
6
+ *
7
+ * Generated from typescript@5.9.3: `ts.optionDeclarations`, each name mapped
8
+ * to true, or to the keys of its type when that is a Map; the libs are the
9
+ * keys of the `lib` option's element type. Left out are the options and values
10
+ * 5.9 still declares but refuses, as TypeScript 5.5 removed them:
11
+ * charset, importsNotUsedAsValues, keyofStringsOnly, noImplicitUseStrict, noStrictGenericChecks, out, preserveValueImports, suppressExcessPropertyErrors, suppressImplicitAnyIndexErrors,
12
+ * and target ES3.
13
+ */
14
+ export declare const compilerOptions: Record<string, true | string[]>;
15
+ export declare const libs: string[];
@@ -2,17 +2,22 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.libs = exports.compilerOptions = void 0;
4
4
  /**
5
- * The compiler options TypeScript 4.9 knows, which Flarum 2.0 builds with, and
5
+ * The compiler options TypeScript 5.9 accepts, which Flarum builds with, and
6
6
  * the values it accepts for those that take one of a set. A tsconfig.json has
7
7
  * to spell an option exactly so; its values may be in any case, so they are
8
8
  * listed lowercase.
9
9
  *
10
- * Generated from typescript@4.9.5: `ts.optionDeclarations`, each name mapped
10
+ * Generated from typescript@5.9.3: `ts.optionDeclarations`, each name mapped
11
11
  * to true, or to the keys of its type when that is a Map; the libs are the
12
- * keys of the `lib` option's element type.
12
+ * keys of the `lib` option's element type. Left out are the options and values
13
+ * 5.9 still declares but refuses, as TypeScript 5.5 removed them:
14
+ * charset, importsNotUsedAsValues, keyofStringsOnly, noImplicitUseStrict, noStrictGenericChecks, out, preserveValueImports, suppressExcessPropertyErrors, suppressImplicitAnyIndexErrors,
15
+ * and target ES3.
13
16
  */
14
17
  exports.compilerOptions = {
15
18
  all: true,
19
+ allowArbitraryExtensions: true,
20
+ allowImportingTsExtensions: true,
16
21
  allowJs: true,
17
22
  allowSyntheticDefaultImports: true,
18
23
  allowUmdGlobalAccess: true,
@@ -21,10 +26,9 @@ exports.compilerOptions = {
21
26
  alwaysStrict: true,
22
27
  assumeChangesOnlyAffectDirectDependencies: true,
23
28
  baseUrl: true,
24
- build: true,
25
- charset: true,
26
29
  checkJs: true,
27
30
  composite: true,
31
+ customConditions: true,
28
32
  declaration: true,
29
33
  declarationDir: true,
30
34
  declarationMap: true,
@@ -37,6 +41,7 @@ exports.compilerOptions = {
37
41
  emitBOM: true,
38
42
  emitDeclarationOnly: true,
39
43
  emitDecoratorMetadata: true,
44
+ erasableSyntaxOnly: true,
40
45
  esModuleInterop: true,
41
46
  exactOptionalPropertyTypes: true,
42
47
  experimentalDecorators: true,
@@ -48,29 +53,46 @@ exports.compilerOptions = {
48
53
  help: true,
49
54
  ignoreDeprecations: true,
50
55
  importHelpers: true,
51
- importsNotUsedAsValues: ['error', 'preserve', 'remove'],
52
56
  incremental: true,
53
57
  init: true,
54
58
  inlineSourceMap: true,
55
59
  inlineSources: true,
60
+ isolatedDeclarations: true,
56
61
  isolatedModules: true,
57
62
  jsx: ['preserve', 'react', 'react-jsx', 'react-jsxdev', 'react-native'],
58
63
  jsxFactory: true,
59
64
  jsxFragmentFactory: true,
60
65
  jsxImportSource: true,
61
- keyofStringsOnly: true,
62
66
  lib: true,
67
+ libReplacement: true,
63
68
  listEmittedFiles: true,
64
69
  listFiles: true,
65
70
  listFilesOnly: true,
66
71
  locale: true,
67
72
  mapRoot: true,
68
73
  maxNodeModuleJsDepth: true,
69
- module: ['amd', 'commonjs', 'es2015', 'es2020', 'es2022', 'es6', 'esnext', 'node16', 'nodenext', 'none', 'system', 'umd'],
74
+ module: [
75
+ 'amd',
76
+ 'commonjs',
77
+ 'es2015',
78
+ 'es2020',
79
+ 'es2022',
80
+ 'es6',
81
+ 'esnext',
82
+ 'node16',
83
+ 'node18',
84
+ 'node20',
85
+ 'nodenext',
86
+ 'none',
87
+ 'preserve',
88
+ 'system',
89
+ 'umd',
90
+ ],
70
91
  moduleDetection: ['auto', 'force', 'legacy'],
71
- moduleResolution: ['classic', 'node', 'node16', 'nodenext'],
92
+ moduleResolution: ['bundler', 'classic', 'node', 'node10', 'node16', 'nodenext'],
72
93
  moduleSuffixes: true,
73
94
  newLine: ['crlf', 'lf'],
95
+ noCheck: true,
74
96
  noEmit: true,
75
97
  noEmitHelpers: true,
76
98
  noEmitOnError: true,
@@ -80,28 +102,28 @@ exports.compilerOptions = {
80
102
  noImplicitOverride: true,
81
103
  noImplicitReturns: true,
82
104
  noImplicitThis: true,
83
- noImplicitUseStrict: true,
84
105
  noLib: true,
85
106
  noPropertyAccessFromIndexSignature: true,
86
107
  noResolve: true,
87
- noStrictGenericChecks: true,
88
108
  noUncheckedIndexedAccess: true,
109
+ noUncheckedSideEffectImports: true,
89
110
  noUnusedLocals: true,
90
111
  noUnusedParameters: true,
91
- out: true,
92
112
  outDir: true,
93
113
  outFile: true,
94
114
  paths: true,
95
115
  plugins: true,
96
116
  preserveConstEnums: true,
97
117
  preserveSymlinks: true,
98
- preserveValueImports: true,
99
118
  preserveWatchOutput: true,
100
119
  pretty: true,
101
120
  project: true,
102
121
  reactNamespace: true,
103
122
  removeComments: true,
104
123
  resolveJsonModule: true,
124
+ resolvePackageJsonExports: true,
125
+ resolvePackageJsonImports: true,
126
+ rewriteRelativeImportExtensions: true,
105
127
  rootDir: true,
106
128
  rootDirs: true,
107
129
  showConfig: true,
@@ -111,24 +133,27 @@ exports.compilerOptions = {
111
133
  sourceRoot: true,
112
134
  strict: true,
113
135
  strictBindCallApply: true,
136
+ strictBuiltinIteratorReturn: true,
114
137
  strictFunctionTypes: true,
115
138
  strictNullChecks: true,
116
139
  strictPropertyInitialization: true,
117
140
  stripInternal: true,
118
- suppressExcessPropertyErrors: true,
119
- suppressImplicitAnyIndexErrors: true,
120
- target: ['es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'es2021', 'es2022', 'es3', 'es5', 'es6', 'esnext'],
141
+ target: ['es2015', 'es2016', 'es2017', 'es2018', 'es2019', 'es2020', 'es2021', 'es2022', 'es2023', 'es2024', 'es5', 'es6', 'esnext'],
121
142
  traceResolution: true,
122
143
  tsBuildInfoFile: true,
123
144
  typeRoots: true,
124
145
  types: true,
125
146
  useDefineForClassFields: true,
126
147
  useUnknownInCatchVariables: true,
148
+ verbatimModuleSyntax: true,
127
149
  version: true,
128
150
  watch: true,
129
151
  };
130
152
  exports.libs = [
153
+ 'decorators',
154
+ 'decorators.legacy',
131
155
  'dom',
156
+ 'dom.asynciterable',
132
157
  'dom.iterable',
133
158
  'es2015',
134
159
  'es2015.collection',
@@ -142,7 +167,10 @@ exports.libs = [
142
167
  'es2015.symbol.wellknown',
143
168
  'es2016',
144
169
  'es2016.array.include',
170
+ 'es2016.intl',
145
171
  'es2017',
172
+ 'es2017.arraybuffer',
173
+ 'es2017.date',
146
174
  'es2017.intl',
147
175
  'es2017.object',
148
176
  'es2017.sharedmemory',
@@ -179,8 +207,20 @@ exports.libs = [
179
207
  'es2022.error',
180
208
  'es2022.intl',
181
209
  'es2022.object',
182
- 'es2022.sharedmemory',
210
+ 'es2022.regexp',
183
211
  'es2022.string',
212
+ 'es2023',
213
+ 'es2023.array',
214
+ 'es2023.collection',
215
+ 'es2023.intl',
216
+ 'es2024',
217
+ 'es2024.arraybuffer',
218
+ 'es2024.collection',
219
+ 'es2024.object',
220
+ 'es2024.promise',
221
+ 'es2024.regexp',
222
+ 'es2024.sharedmemory',
223
+ 'es2024.string',
184
224
  'es5',
185
225
  'es6',
186
226
  'es7',
@@ -188,13 +228,23 @@ exports.libs = [
188
228
  'esnext.array',
189
229
  'esnext.asynciterable',
190
230
  'esnext.bigint',
231
+ 'esnext.collection',
232
+ 'esnext.decorators',
233
+ 'esnext.disposable',
234
+ 'esnext.error',
235
+ 'esnext.float16',
191
236
  'esnext.intl',
237
+ 'esnext.iterator',
238
+ 'esnext.object',
192
239
  'esnext.promise',
240
+ 'esnext.regexp',
241
+ 'esnext.sharedmemory',
193
242
  'esnext.string',
194
243
  'esnext.symbol',
195
244
  'esnext.weakref',
196
245
  'scripthost',
197
246
  'webworker',
247
+ 'webworker.asynciterable',
198
248
  'webworker.importscripts',
199
249
  'webworker.iterable',
200
250
  ];
@@ -1 +1 @@
1
- {"version":"3.0.13","commands":{"infra":{"id":"infra","description":"Add/Update infrastructure to the latest scaffolding for some module in an extension. For example, you can use this to add/update TypeScript, backend testing, GitHub Actions, and other features.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"monorepo":{"name":"monorepo","type":"boolean","char":"m","allowNo":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"module","description":"The name of the module to enable/update.","required":true,"options":["core","icon","admin","forum","js","jsCommon","css","locale","gitConf","githubActions","prettier","typescript","bundlewatch","frontendTesting","backendTesting","phpstan","editorConfig","styleci"]},{"name":"path","description":"Where should this command be executed?"}]},"init":{"id":"init","description":"Create a new Flarum extension","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"audit:infra":{"id":"audit:infra","description":"Check for outdated config files, infrastructure, setup, etc.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"fix":{"name":"fix","type":"boolean","char":"f","allowNo":false},"monorepo":{"name":"monorepo","type":"boolean","char":"m","allowNo":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"flarum:change":{"id":"flarum:change","description":"Related Flarum version information.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"flarum:info":{"id":"flarum:info","description":"Related Flarum version information.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"make:locale":{"id":"make:locale","description":"Generate new locale key value pair.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"key","description":"The nested key of the locale (e.g. `forum.custom_modal.title`).","required":false},{"name":"value","description":"The value of the locale.","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:model":{"id":"make:model","description":"Generate a model class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:notification":{"id":"make:notification","description":"Generate a new notification","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:post-type":{"id":"make:post-type","description":"Generate a new post type","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"monorepo:create":{"id":"monorepo:create","description":"Create a monorepo of Flarum extensions.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"config":{"name":"config","type":"option","char":"c","required":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"monorepo:split":{"id":"monorepo:split","description":"Split monorepo changes into subrepos.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"force":{"name":"force","type":"boolean","char":"f","required":false,"allowNo":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"update:js-imports":{"id":"update:js-imports","description":"Updates JS imports from core to use proper namespaces","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"upgrade:2.0":{"id":"upgrade:2.0","description":"Upgrade an extension to Flarum 2.0","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"Report each step's outcome, failures, notes and the @TODOs it left as JSON, for a program driving the upgrade. Implies --no-interaction.","required":false,"allowNo":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"step":{"name":"step","type":"option","description":"Optionally specify a specific step to run","required":false},"force-steps":{"name":"force-steps","type":"boolean","description":"Force run steps even if already ran","required":false,"allowNo":false},"check":{"name":"check","type":"boolean","description":"Report what the upgrade would change, such as on an extension already on Flarum 2.0, without changing it: the steps run on the last commit, in a temporary git worktree that is removed afterwards. Implies --force-steps and --no-interaction.","required":false,"allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:api-resource":{"id":"make:backend:api-resource","description":"Generate an API resource class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:command":{"id":"make:backend:command","description":"Generate a console command class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:controller":{"id":"make:backend:controller","description":"Generate a controller class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:event-listener":{"id":"make:backend:event-listener","description":"Generate an event listener class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:filter":{"id":"make:backend:filter","description":"Generate a filter class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:handler":{"id":"make:backend:handler","description":"Generate a domain logic handler class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:integration-test":{"id":"make:backend:integration-test","description":"Generate an integration test class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:job":{"id":"make:backend:job","description":"Generate a job class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:mail-driver":{"id":"make:backend:mail-driver","description":"Generate a mail driver class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:middleware":{"id":"make:backend:middleware","description":"Generate a middleware","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:migration":{"id":"make:backend:migration","description":"Generate a migration","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"name","description":"The name of the migration","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:model":{"id":"make:backend:model","description":"Generate a model class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:notification-blueprint":{"id":"make:backend:notification-blueprint","description":"Generate a notification blueprint class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:notification-driver":{"id":"make:backend:notification-driver","description":"Generate a notification driver class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:policy":{"id":"make:backend:policy","description":"Generate a policy class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:post-type":{"id":"make:backend:post-type","description":"Generate a new backend post type class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:repository":{"id":"make:backend:repository","description":"Generate a repository class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:route":{"id":"make:backend:route","description":"Generate a routes extender","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:search-driver":{"id":"make:backend:search-driver","description":"Generate a search driver","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:service-provider":{"id":"make:backend:service-provider","description":"Generate a service provider class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:validator":{"id":"make:backend:validator","description":"Generate a validator class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:component":{"id":"make:frontend:component","description":"Generate a frontend component","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"frontend","description":"The frontend name","required":false},{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:forum-page":{"id":"make:frontend:forum-page","description":"Generate a forum page class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"routeName","description":"Route name (unique)","required":false},{"name":"routePath","description":"Route path","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:gambit":{"id":"make:frontend:gambit","description":"Generate a frontend gambit class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:modal":{"id":"make:frontend:modal","description":"Generate a modal component","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"frontend","description":"The frontend name","required":false},{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:model":{"id":"make:frontend:model","description":"Generate a model class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:notification":{"id":"make:frontend:notification","description":"Generate a frontend notification class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:post-type":{"id":"make:frontend:post-type","description":"Generate a frontend post type class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]}}}
1
+ {"version":"3.0.15","commands":{"infra":{"id":"infra","description":"Add/Update infrastructure to the latest scaffolding for some module in an extension. For example, you can use this to add/update TypeScript, backend testing, GitHub Actions, and other features.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"monorepo":{"name":"monorepo","type":"boolean","char":"m","allowNo":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"module","description":"The name of the module to enable/update.","required":true,"options":["core","icon","admin","forum","js","jsCommon","css","locale","gitConf","githubActions","prettier","typescript","bundlewatch","frontendTesting","backendTesting","phpstan","editorConfig","styleci"]},{"name":"path","description":"Where should this command be executed?"}]},"init":{"id":"init","description":"Create a new Flarum extension","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"audit:infra":{"id":"audit:infra","description":"Check for outdated config files, infrastructure, setup, etc.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"fix":{"name":"fix","type":"boolean","char":"f","allowNo":false},"monorepo":{"name":"monorepo","type":"boolean","char":"m","allowNo":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"flarum:change":{"id":"flarum:change","description":"Related Flarum version information.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"flarum:info":{"id":"flarum:info","description":"Related Flarum version information.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"make:locale":{"id":"make:locale","description":"Generate new locale key value pair.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"key","description":"The nested key of the locale (e.g. `forum.custom_modal.title`).","required":false},{"name":"value","description":"The value of the locale.","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:model":{"id":"make:model","description":"Generate a model class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:notification":{"id":"make:notification","description":"Generate a new notification","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:post-type":{"id":"make:post-type","description":"Generate a new post type","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"monorepo:create":{"id":"monorepo:create","description":"Create a monorepo of Flarum extensions.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"config":{"name":"config","type":"option","char":"c","required":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"monorepo:split":{"id":"monorepo:split","description":"Split monorepo changes into subrepos.","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"force":{"name":"force","type":"boolean","char":"f","required":false,"allowNo":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"update:js-imports":{"id":"update:js-imports","description":"Updates JS imports from core to use proper namespaces","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"upgrade:2.0":{"id":"upgrade:2.0","description":"Upgrade an extension to Flarum 2.0","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"Report each step's outcome, failures, notes and the @TODOs it left as JSON, for a program driving the upgrade. Implies --no-interaction.","required":false,"allowNo":false},"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false},"step":{"name":"step","type":"option","description":"Optionally specify a specific step to run","required":false},"force-steps":{"name":"force-steps","type":"boolean","description":"Force run steps even if already ran","required":false,"allowNo":false},"check":{"name":"check","type":"boolean","description":"Report what the upgrade would change, such as on an extension already on Flarum 2.0, without changing it: the steps run on the last commit, in a temporary git worktree that is removed afterwards. Implies --force-steps and --no-interaction.","required":false,"allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:api-resource":{"id":"make:backend:api-resource","description":"Generate an API resource class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:command":{"id":"make:backend:command","description":"Generate a console command class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:controller":{"id":"make:backend:controller","description":"Generate a controller class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:event-listener":{"id":"make:backend:event-listener","description":"Generate an event listener class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:filter":{"id":"make:backend:filter","description":"Generate a filter class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:handler":{"id":"make:backend:handler","description":"Generate a domain logic handler class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:integration-test":{"id":"make:backend:integration-test","description":"Generate an integration test class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:job":{"id":"make:backend:job","description":"Generate a job class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:mail-driver":{"id":"make:backend:mail-driver","description":"Generate a mail driver class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:middleware":{"id":"make:backend:middleware","description":"Generate a middleware","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:migration":{"id":"make:backend:migration","description":"Generate a migration","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"name","description":"The name of the migration","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:model":{"id":"make:backend:model","description":"Generate a model class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:notification-blueprint":{"id":"make:backend:notification-blueprint","description":"Generate a notification blueprint class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:notification-driver":{"id":"make:backend:notification-driver","description":"Generate a notification driver class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:policy":{"id":"make:backend:policy","description":"Generate a policy class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:post-type":{"id":"make:backend:post-type","description":"Generate a new backend post type class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:repository":{"id":"make:backend:repository","description":"Generate a repository class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:route":{"id":"make:backend:route","description":"Generate a routes extender","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:search-driver":{"id":"make:backend:search-driver","description":"Generate a search driver","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:backend:service-provider":{"id":"make:backend:service-provider","description":"Generate a service provider class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:backend:validator":{"id":"make:backend:validator","description":"Generate a validator class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:component":{"id":"make:frontend:component","description":"Generate a frontend component","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"frontend","description":"The frontend name","required":false},{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:forum-page":{"id":"make:frontend:forum-page","description":"Generate a forum page class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"routeName","description":"Route name (unique)","required":false},{"name":"routePath","description":"Route path","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:gambit":{"id":"make:frontend:gambit","description":"Generate a frontend gambit class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:modal":{"id":"make:frontend:modal","description":"Generate a modal component","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"frontend","description":"The frontend name","required":false},{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:model":{"id":"make:frontend:model","description":"Generate a model class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:notification":{"id":"make:frontend:notification","description":"Generate a frontend notification class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]},"make:frontend:post-type":{"id":"make:frontend:post-type","description":"Generate a frontend post type class","pluginName":"@flarum/cli","pluginType":"core","aliases":[],"flags":{"no-interaction":{"name":"no-interaction","type":"boolean","char":"n","description":"Do not ask any interactive questions, assume defaults. When impossible, error.","allowNo":false},"help":{"name":"help","type":"boolean","char":"h","description":"Show CLI help.","allowNo":false}},"args":[{"name":"className","description":"The name of the class to generate","required":false},{"name":"path","description":"Where should this command be executed?"}]}}}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@flarum/cli",
3
3
  "description": "A CLI for developing Flarum extensions",
4
- "version": "3.0.13",
4
+ "version": "3.0.15",
5
5
  "author": "Flarum Team",
6
6
  "flarum": "2.x",
7
7
  "bin": {
@@ -1,12 +0,0 @@
1
- /**
2
- * The compiler options TypeScript 4.9 knows, which Flarum 2.0 builds with, and
3
- * the values it accepts for those that take one of a set. A tsconfig.json has
4
- * to spell an option exactly so; its values may be in any case, so they are
5
- * listed lowercase.
6
- *
7
- * Generated from typescript@4.9.5: `ts.optionDeclarations`, each name mapped
8
- * to true, or to the keys of its type when that is a Map; the libs are the
9
- * keys of the `lib` option's element type.
10
- */
11
- export declare const compilerOptions: Record<string, true | string[]>;
12
- export declare const libs: string[];