@flarum/cli 1.0.0 → 2.0.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +2 -2
  2. package/bin/run +5 -3
  3. package/boilerplate/skeleton/extension/.gitattributes +17 -3
  4. package/boilerplate/skeleton/extension/.github/workflows/backend.yml +15 -0
  5. package/boilerplate/skeleton/extension/.github/workflows/frontend.yml +20 -0
  6. package/boilerplate/skeleton/extension/.styleci.yml +14 -0
  7. package/boilerplate/skeleton/extension/LICENSE.md +1 -0
  8. package/boilerplate/skeleton/extension/README.md +7 -7
  9. package/boilerplate/skeleton/extension/composer.json +11 -9
  10. package/boilerplate/skeleton/extension/extend.php +10 -10
  11. package/boilerplate/skeleton/extension/gitignore +12 -0
  12. package/boilerplate/skeleton/extension/js/.bundlewatch.config.json +8 -0
  13. package/boilerplate/skeleton/extension/js/admin.js +2 -1
  14. package/boilerplate/skeleton/extension/js/admin.ts +2 -0
  15. package/boilerplate/skeleton/extension/js/forum.js +2 -1
  16. package/boilerplate/skeleton/extension/js/forum.ts +2 -0
  17. package/boilerplate/skeleton/extension/js/gitignore +9 -0
  18. package/boilerplate/skeleton/extension/js/package.json +13 -9
  19. package/boilerplate/skeleton/extension/js/src/admin/index.js +4 -2
  20. package/boilerplate/skeleton/extension/js/src/admin/index.ts +5 -0
  21. package/boilerplate/skeleton/extension/js/src/common/index.js +5 -0
  22. package/boilerplate/skeleton/extension/js/src/common/index.ts +5 -0
  23. package/boilerplate/skeleton/extension/js/src/forum/index.js +4 -2
  24. package/boilerplate/skeleton/extension/js/src/forum/index.ts +5 -0
  25. package/boilerplate/skeleton/extension/js/tsconfig.json +6 -1
  26. package/boilerplate/skeleton/extension/locale/en.yml +1 -1
  27. package/boilerplate/stubs/migration.php +1 -1
  28. package/lib/base-command.d.ts +29 -6
  29. package/lib/base-command.js +145 -59
  30. package/lib/boilersmith/exposed-param-manager.d.ts +8 -0
  31. package/lib/boilersmith/exposed-param-manager.js +31 -0
  32. package/lib/boilersmith/io.d.ts +54 -0
  33. package/lib/boilersmith/io.js +97 -0
  34. package/lib/boilersmith/paths.d.ts +22 -0
  35. package/lib/boilersmith/paths.js +29 -0
  36. package/lib/boilersmith/scaffolding/audit-step-factory.d.ts +5 -0
  37. package/lib/boilersmith/scaffolding/audit-step-factory.js +61 -0
  38. package/lib/boilersmith/scaffolding/infra-step-factory.d.ts +5 -0
  39. package/lib/boilersmith/scaffolding/infra-step-factory.js +34 -0
  40. package/lib/boilersmith/scaffolding/init-step-factory.d.ts +5 -0
  41. package/lib/boilersmith/scaffolding/init-step-factory.js +34 -0
  42. package/lib/boilersmith/scaffolding/module.d.ts +82 -0
  43. package/lib/boilersmith/scaffolding/module.js +116 -0
  44. package/lib/boilersmith/scaffolding/scaffolder.d.ts +32 -0
  45. package/lib/boilersmith/scaffolding/scaffolder.js +203 -0
  46. package/lib/boilersmith/scaffolding/template-param.d.ts +23 -0
  47. package/lib/boilersmith/scaffolding/template-param.js +46 -0
  48. package/lib/boilersmith/step-manager.d.ts +85 -0
  49. package/lib/boilersmith/step-manager.js +234 -0
  50. package/lib/boilersmith/steps/stub-base.d.ts +53 -0
  51. package/lib/boilersmith/steps/stub-base.js +54 -0
  52. package/lib/{utils → boilersmith/utils}/clone-and-fill.d.ts +0 -0
  53. package/lib/{utils → boilersmith/utils}/clone-and-fill.js +2 -2
  54. package/lib/boilersmith/utils/cond-format.d.ts +1 -0
  55. package/lib/boilersmith/utils/cond-format.js +8 -0
  56. package/lib/boilersmith/utils/json-leaf-paths.d.ts +7 -0
  57. package/lib/boilersmith/utils/json-leaf-paths.js +17 -0
  58. package/lib/boilersmith/utils/read-tpl.d.ts +2 -0
  59. package/lib/boilersmith/utils/read-tpl.js +10 -0
  60. package/lib/boilersmith/utils/rename-keys.d.ts +1 -0
  61. package/lib/boilersmith/utils/rename-keys.js +7 -0
  62. package/lib/commands/audit/infra.d.ts +16 -0
  63. package/lib/commands/audit/infra.js +27 -0
  64. package/lib/commands/infra.d.ts +20 -0
  65. package/lib/commands/infra.js +55 -0
  66. package/lib/commands/init.d.ts +4 -3
  67. package/lib/commands/init.js +8 -6
  68. package/lib/commands/make/backend/api-controller.d.ts +4 -3
  69. package/lib/commands/make/backend/api-controller.js +3 -2
  70. package/lib/commands/make/backend/api-serializer-attributes.d.ts +4 -3
  71. package/lib/commands/make/backend/api-serializer-attributes.js +1 -1
  72. package/lib/commands/make/backend/api-serializer.d.ts +4 -3
  73. package/lib/commands/make/backend/api-serializer.js +3 -2
  74. package/lib/commands/make/backend/command.d.ts +4 -3
  75. package/lib/commands/make/backend/command.js +3 -2
  76. package/lib/commands/make/backend/event-listener.d.ts +4 -3
  77. package/lib/commands/make/backend/event-listener.js +3 -2
  78. package/lib/commands/make/backend/handler.d.ts +4 -3
  79. package/lib/commands/make/backend/handler.js +4 -3
  80. package/lib/commands/make/backend/integration-test.d.ts +4 -3
  81. package/lib/commands/make/backend/integration-test.js +3 -2
  82. package/lib/commands/make/backend/job.d.ts +4 -3
  83. package/lib/commands/make/backend/job.js +3 -2
  84. package/lib/commands/make/backend/migration.d.ts +4 -3
  85. package/lib/commands/make/backend/migration.js +3 -2
  86. package/lib/commands/make/backend/model.d.ts +4 -3
  87. package/lib/commands/make/backend/model.js +22 -21
  88. package/lib/commands/make/backend/policy.d.ts +4 -3
  89. package/lib/commands/make/backend/policy.js +3 -2
  90. package/lib/commands/make/backend/repository.d.ts +4 -3
  91. package/lib/commands/make/backend/repository.js +3 -2
  92. package/lib/commands/make/backend/route.d.ts +4 -3
  93. package/lib/commands/make/backend/route.js +1 -1
  94. package/lib/commands/make/backend/service-provider.d.ts +4 -3
  95. package/lib/commands/make/backend/service-provider.js +3 -2
  96. package/lib/commands/make/backend/validator.d.ts +4 -3
  97. package/lib/commands/make/backend/validator.js +3 -2
  98. package/lib/commands/make/frontend/component.d.ts +4 -3
  99. package/lib/commands/make/frontend/component.js +3 -2
  100. package/lib/commands/make/frontend/modal.d.ts +4 -3
  101. package/lib/commands/make/frontend/modal.js +3 -2
  102. package/lib/commands/make/frontend/model.d.ts +4 -3
  103. package/lib/commands/make/frontend/model.js +3 -2
  104. package/lib/commands/update/js-imports.d.ts +4 -3
  105. package/lib/commands/update/js-imports.js +1 -1
  106. package/lib/help.d.ts +5 -6
  107. package/lib/help.js +5 -4
  108. package/lib/index.d.ts +1 -1
  109. package/lib/index.js +3 -2
  110. package/lib/providers/index.d.ts +5 -0
  111. package/lib/providers/index.js +2 -0
  112. package/lib/{provider → providers}/php-provider.d.ts +0 -0
  113. package/lib/{provider → providers}/php-provider.js +2 -2
  114. package/lib/steps/extenders/api-serializer.js +2 -3
  115. package/lib/steps/extenders/base.d.ts +10 -10
  116. package/lib/steps/extenders/base.js +11 -11
  117. package/lib/steps/extenders/console-command.js +2 -3
  118. package/lib/steps/extenders/event.js +2 -3
  119. package/lib/steps/extenders/policy.js +2 -3
  120. package/lib/steps/extenders/route.js +2 -3
  121. package/lib/steps/extenders/service-provider.js +2 -3
  122. package/lib/steps/gen-ext-scaffolder.d.ts +6 -0
  123. package/lib/steps/gen-ext-scaffolder.js +594 -0
  124. package/lib/steps/js/base.d.ts +9 -9
  125. package/lib/steps/js/base.js +13 -12
  126. package/lib/steps/js/model.d.ts +5 -5
  127. package/lib/steps/js/model.js +8 -13
  128. package/lib/steps/misc/composer.d.ts +5 -6
  129. package/lib/steps/misc/composer.js +3 -3
  130. package/lib/steps/misc/git.d.ts +11 -0
  131. package/lib/steps/misc/git.js +20 -0
  132. package/lib/steps/misc/yarn.d.ts +5 -6
  133. package/lib/steps/misc/yarn.js +3 -3
  134. package/lib/steps/stubs/backend/api-controller.d.ts +1 -8
  135. package/lib/steps/stubs/backend/api-controller.js +2 -3
  136. package/lib/steps/stubs/backend/api-serializer.d.ts +4 -9
  137. package/lib/steps/stubs/backend/api-serializer.js +4 -4
  138. package/lib/steps/stubs/backend/command.d.ts +0 -5
  139. package/lib/steps/stubs/backend/command.js +1 -1
  140. package/lib/steps/stubs/backend/event-listener.d.ts +0 -5
  141. package/lib/steps/stubs/backend/event-listener.js +1 -1
  142. package/lib/steps/stubs/backend/handler-command.js +1 -1
  143. package/lib/steps/stubs/backend/handler.js +1 -1
  144. package/lib/steps/stubs/backend/migration.d.ts +4 -5
  145. package/lib/steps/stubs/backend/migration.js +8 -8
  146. package/lib/steps/stubs/backend/model.d.ts +4 -4
  147. package/lib/steps/stubs/backend/model.js +4 -4
  148. package/lib/steps/stubs/backend/policy.d.ts +0 -5
  149. package/lib/steps/stubs/backend/policy.js +1 -1
  150. package/lib/steps/stubs/backend/repository.d.ts +0 -5
  151. package/lib/steps/stubs/backend/repository.js +1 -1
  152. package/lib/steps/stubs/flarum-base.d.ts +9 -0
  153. package/lib/steps/stubs/flarum-base.js +10 -0
  154. package/lib/steps/stubs/frontend/component.js +0 -1
  155. package/lib/steps/stubs/frontend/modal.js +0 -1
  156. package/lib/steps/stubs/frontend/model.d.ts +4 -4
  157. package/lib/steps/stubs/frontend/model.js +3 -3
  158. package/lib/steps/stubs/js-base.d.ts +6 -7
  159. package/lib/steps/stubs/js-base.js +11 -16
  160. package/lib/steps/stubs/php-base.d.ts +7 -8
  161. package/lib/steps/stubs/php-base.js +12 -20
  162. package/lib/steps/update/js-imports.d.ts +5 -6
  163. package/lib/steps/update/js-imports.js +16 -19
  164. package/lib/utils/composer.d.ts +64 -0
  165. package/lib/utils/composer.js +8 -0
  166. package/lib/utils/migration.js +3 -3
  167. package/lib/utils/model-name.js +6 -6
  168. package/lib/utils/validation.d.ts +10 -7
  169. package/lib/utils/validation.js +9 -6
  170. package/oclif.manifest.json +1 -1
  171. package/package.json +55 -36
  172. package/php-subsystem/src/NodeVisitors/AddExtender.php +2 -1
  173. package/boilerplate/skeleton/extension/.github/workflows/build.yml +0 -32
  174. package/boilerplate/skeleton/extension/.github/workflows/lint.yml +0 -32
  175. package/boilerplate/skeleton/extension/.github/workflows/test.yml +0 -78
  176. package/lib/commands/infra/backend-testing.d.ts +0 -14
  177. package/lib/commands/infra/backend-testing.js +0 -26
  178. package/lib/provider/param-provider.d.ts +0 -15
  179. package/lib/provider/param-provider.js +0 -39
  180. package/lib/provider/path-provider.d.ts +0 -19
  181. package/lib/provider/path-provider.js +0 -24
  182. package/lib/steps/infra/backend-testing.d.ts +0 -8
  183. package/lib/steps/infra/backend-testing.js +0 -22
  184. package/lib/steps/infra/base.d.ts +0 -20
  185. package/lib/steps/infra/base.js +0 -36
  186. package/lib/steps/init/extension-skeleton.d.ts +0 -12
  187. package/lib/steps/init/extension-skeleton.js +0 -142
  188. package/lib/steps/step-manager.d.ts +0 -71
  189. package/lib/steps/step-manager.js +0 -173
  190. package/lib/steps/stubs/base.d.ts +0 -49
  191. package/lib/steps/stubs/base.js +0 -58
  192. package/lib/utils/extension-metadata.d.ts +0 -2
  193. package/lib/utils/extension-metadata.js +0 -21
@@ -1,173 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StepManager = void 0;
4
- /* eslint-disable no-await-in-loop */
5
- const mem_fs_1 = require("mem-fs");
6
- const mem_fs_editor_1 = require("mem-fs-editor");
7
- class StepManager {
8
- constructor() {
9
- this.steps = [];
10
- this.namedSteps = new Map();
11
- this.exposedParams = new Map();
12
- }
13
- /**
14
- * A step is an incremental operation that updates the filesystem.
15
- */
16
- step(step, shouldRun = {}, dependencies = [], predefinedParams = {}) {
17
- this.validateDependencies(step, dependencies);
18
- this.steps = [...this.steps, { step, shouldRun, dependencies, predefinedParams }];
19
- return this;
20
- }
21
- namedStep(name, step, shouldRun = {}, dependencies = [], predefinedParams = {}) {
22
- if (this.namedSteps.has(name)) {
23
- throw new Error(`Named steps must have unique names. A step with name "${name}" already exists.`);
24
- }
25
- this.validateDependencies(step, dependencies);
26
- const newStep = { name, step, shouldRun, dependencies, predefinedParams };
27
- this.steps = [...this.steps, newStep];
28
- this.namedSteps.set(name, newStep);
29
- return this;
30
- }
31
- atomicGroup(callback) {
32
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
33
- const atomicCollection = new AtomicStepManager(this.namedSteps, this.exposedParams);
34
- callback(atomicCollection);
35
- this.steps = [...this.steps, atomicCollection];
36
- return this;
37
- }
38
- validateDependencies(step, dependencies) {
39
- const format = (strings) => strings
40
- .map(s => `"${s}"`)
41
- .join(', ');
42
- const missingDependencySteps = dependencies
43
- .map(dep => dep.sourceStep)
44
- .filter(stepName => !this.namedSteps.has(stepName));
45
- if (missingDependencySteps.length > 0) {
46
- throw new Error(`Step of type "${step.type}" depends on nonexistent named steps ${format(missingDependencySteps)}`);
47
- }
48
- const missingDependencyParams = [];
49
- const missingDependencyParamSteps = [];
50
- dependencies.forEach(dependency => {
51
- const sourceStep = this.namedSteps.get(dependency.sourceStep);
52
- if (!(sourceStep === null || sourceStep === void 0 ? void 0 : sourceStep.step.exposes.includes(dependency.exposedName)) && dependency.exposedName !== '__succeeded') {
53
- missingDependencyParamSteps.push(sourceStep === null || sourceStep === void 0 ? void 0 : sourceStep.name);
54
- missingDependencyParams.push(dependency.exposedName);
55
- }
56
- });
57
- if (missingDependencyParamSteps.length > 0) {
58
- throw new Error(`Step of type "${step.type}" depends on nonexistent exposed params ${format(missingDependencyParams)} from named steps ${format(missingDependencyParamSteps)}`);
59
- }
60
- }
61
- async run(pathProvider, paramProviderFactory, phpProvider) {
62
- const stepNames = [];
63
- for (let i = 0; i < this.steps.length; i++) {
64
- const storedStep = this.steps[i];
65
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
66
- if (storedStep instanceof AtomicStepManager) {
67
- const res = await storedStep.run(pathProvider, paramProviderFactory, phpProvider);
68
- stepNames.push(...res);
69
- }
70
- else {
71
- const shouldRun = await this.stepShouldRun(storedStep, paramProviderFactory);
72
- if (!shouldRun)
73
- continue;
74
- const fs = await this.runStep(storedStep, pathProvider, paramProviderFactory, phpProvider);
75
- await this.commit(fs);
76
- stepNames.push(storedStep.step.type);
77
- }
78
- }
79
- return stepNames;
80
- }
81
- async stepShouldRun(storedStep, paramProviderFactory) {
82
- let allDependenciesRan = true;
83
- let noRequiredNonFalsyDependenciesAreFalsy = true;
84
- storedStep.dependencies.forEach(dep => {
85
- if (!this.exposedParams.has(dep.sourceStep))
86
- allDependenciesRan = false;
87
- const sourceDeps = this.exposedParams.get(dep.sourceStep);
88
- if (dep.exposedName !== '__succeeded' && dep.dontRunIfFalsy && !sourceDeps[dep.exposedName]) {
89
- noRequiredNonFalsyDependenciesAreFalsy = false;
90
- }
91
- });
92
- if (!allDependenciesRan || !noRequiredNonFalsyDependenciesAreFalsy)
93
- return false;
94
- if (!storedStep.shouldRun.optional)
95
- return true;
96
- const promptConfirm = await paramProviderFactory({ context: 'Confirm Step' }).get({
97
- name: 'execute_step',
98
- message: storedStep.shouldRun.confirmationMessage || `Run step of type "${storedStep.step.type}"?`,
99
- initial: storedStep.shouldRun.default || false,
100
- type: 'confirm',
101
- });
102
- return promptConfirm;
103
- }
104
- async runStep(storedStep, pathProvider, paramProviderFactory, phpProvider, fs = mem_fs_1.create()) {
105
- const initial = storedStep.dependencies.reduce((initial, dep) => {
106
- let depValue;
107
- if (dep.exposedName === '__succeeded') {
108
- depValue = this.exposedParams.has(dep.sourceStep);
109
- }
110
- else {
111
- depValue = this.exposedParams.get(dep.sourceStep)[dep.exposedName];
112
- }
113
- if (dep.modifier) {
114
- depValue = dep.modifier(depValue);
115
- }
116
- initial[dep.consumedName || dep.exposedName] = depValue;
117
- return initial;
118
- }, {});
119
- const paramProvider = paramProviderFactory(Object.assign(Object.assign({}, initial), storedStep.predefinedParams));
120
- const newFs = await storedStep.step.run(fs, pathProvider, paramProvider, phpProvider);
121
- if (storedStep.name) {
122
- this.exposedParams.set(storedStep.name, storedStep.step.getExposed(pathProvider, paramProvider));
123
- }
124
- return newFs;
125
- }
126
- async commit(fs) {
127
- return new Promise((resolve, _reject) => {
128
- mem_fs_editor_1.create(fs).commit(err => {
129
- if (err) {
130
- throw new Error(err);
131
- }
132
- resolve(true);
133
- });
134
- });
135
- }
136
- }
137
- exports.StepManager = StepManager;
138
- class AtomicStepManager extends StepManager {
139
- constructor(parentNamedSteps, parentExposedParams) {
140
- super();
141
- this.namedSteps = parentNamedSteps;
142
- this.exposedParams = parentExposedParams;
143
- }
144
- step(step, shouldRun = {}, dependencies = [], predefinedParams = {}) {
145
- if (!step.composable) {
146
- throw new Error(`Step of type "${step.type}" is not composable, and cannot be added to an atomic group.`);
147
- }
148
- return super.step(step, shouldRun, dependencies, predefinedParams);
149
- }
150
- namedStep(name, step, shouldRun = {}, dependencies = [], predefinedParams = {}) {
151
- if (!step.composable) {
152
- throw new Error(`Step of type "${step.type}" is not composable, and cannot be added to an atomic group.`);
153
- }
154
- return super.namedStep(name, step, shouldRun, dependencies, predefinedParams);
155
- }
156
- atomicGroup(_callback) {
157
- throw new Error("Atomic groups can't be nested.");
158
- }
159
- async run(pathProvider, paramProviderFactory, phpProvider) {
160
- let fs = mem_fs_1.create();
161
- const stepNames = [];
162
- for (let i = 0; i < this.steps.length; i++) {
163
- const storedStep = this.steps[i];
164
- const shouldRun = await this.stepShouldRun(storedStep, paramProviderFactory);
165
- if (!shouldRun)
166
- continue;
167
- fs = await this.runStep(storedStep, pathProvider, paramProviderFactory, phpProvider, fs);
168
- stepNames.push(storedStep.step.type);
169
- }
170
- await this.commit(fs);
171
- return stepNames;
172
- }
173
- }
@@ -1,49 +0,0 @@
1
- import { Store } from 'mem-fs';
2
- import { Editor } from 'mem-fs-editor';
3
- import { PromptObject } from 'prompts';
4
- import { ParamProvider } from '../../provider/param-provider';
5
- import { PathProvider } from '../../provider/path-provider';
6
- import { PhpProvider } from '../../provider/php-provider';
7
- import { Step } from '../step-manager';
8
- interface UserProvidedParam extends Omit<PromptObject, 'type'> {
9
- type: string;
10
- }
11
- export interface StubGenerationSchema {
12
- /**
13
- * A period-delimited subdirectory for where the stub should be
14
- * located relative to the extension PHP src.
15
- */
16
- recommendedSubdir: string;
17
- forceRecommendedSubdir?: boolean;
18
- /**
19
- * Where should the file be created in relation to the extension root?
20
- *
21
- * Defaults to `./src`.
22
- */
23
- root?: string;
24
- /**
25
- * The relative path to the stub's source file relative to the
26
- * `stubs` directory.
27
- */
28
- sourceFile: string;
29
- params: UserProvidedParam[];
30
- }
31
- export declare abstract class BaseStubStep implements Step {
32
- abstract type: string;
33
- protected abstract defaultRoot: string;
34
- protected abstract schema: StubGenerationSchema;
35
- composable: boolean;
36
- get exposes(): string[];
37
- protected additionalExposes: string[];
38
- get implicitParams(): string[];
39
- protected additionalImplicitParams: string[];
40
- protected params: Record<string, unknown>;
41
- protected subdir: string;
42
- run(fs: Store, pathProvider: PathProvider, paramProvider: ParamProvider, _phpProvider: PhpProvider): Promise<Store>;
43
- getExposed(_pathProvider: PathProvider, _paramProvider: ParamProvider): Record<string, unknown>;
44
- protected precompileParams(composerJsonContents: any, _fsEditor: Editor, _pathProvider: PathProvider, _paramProvider: ParamProvider): Promise<Record<string, unknown>>;
45
- protected compileParams(fsEditor: Editor, pathProvider: PathProvider, paramProvider: ParamProvider): Promise<Record<string, unknown>>;
46
- protected abstract getFileName(_fs: Store, _pathProvider: PathProvider, paramProvider: ParamProvider): Promise<string>;
47
- protected composerJsonContents(fsEditor: Editor, pathProvider: PathProvider): any;
48
- }
49
- export {};
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseStubStep = void 0;
4
- const pick_1 = require("@zodash/pick");
5
- const mem_fs_editor_1 = require("mem-fs-editor");
6
- const extension_metadata_1 = require("../../utils/extension-metadata");
7
- const clone_and_fill_1 = require("../../utils/clone-and-fill");
8
- class BaseStubStep {
9
- constructor() {
10
- this.composable = true;
11
- this.additionalExposes = [];
12
- this.additionalImplicitParams = [];
13
- this.params = {};
14
- }
15
- get exposes() {
16
- return this.additionalExposes;
17
- }
18
- get implicitParams() {
19
- return [...this.additionalImplicitParams, 'extensionId'];
20
- }
21
- async run(fs, pathProvider, paramProvider, _phpProvider) {
22
- const fsEditor = mem_fs_editor_1.create(fs);
23
- this.params = await this.compileParams(fsEditor, pathProvider, paramProvider);
24
- const newFileName = await this.getFileName(fs, pathProvider, paramProvider);
25
- const newFilePath = pathProvider.ext(this.schema.root || this.defaultRoot, this.subdir, newFileName);
26
- const stub = clone_and_fill_1.cloneAndFill(this.schema.sourceFile, this.params);
27
- fsEditor.copyTpl(pathProvider.boilerplate('stubs', stub), newFilePath, this.params);
28
- return fs;
29
- }
30
- getExposed(_pathProvider, _paramProvider) {
31
- return pick_1.pick(this.params, this.exposes);
32
- }
33
- async precompileParams(composerJsonContents, _fsEditor, _pathProvider, _paramProvider) {
34
- const params = {
35
- extensionId: composerJsonContents.extensionId,
36
- };
37
- return params;
38
- }
39
- async compileParams(fsEditor, pathProvider, paramProvider) {
40
- const composerJsonContents = this.composerJsonContents(fsEditor, pathProvider);
41
- const params = await this.precompileParams(composerJsonContents, fsEditor, pathProvider, paramProvider);
42
- const paramDefs = this.schema.params.filter(param => !this.implicitParams.includes(param.name) && !Object.keys(params).includes(param.name));
43
- for (let i = 0; i < paramDefs.length; i++) {
44
- // eslint-disable-next-line no-await-in-loop
45
- params[paramDefs[i].name] = await paramProvider.get(paramDefs[i]);
46
- }
47
- this.implicitParams.forEach(implicitParam => {
48
- if (!params[implicitParam] && paramProvider.has(implicitParam)) {
49
- params[implicitParam] = paramProvider.cached()[implicitParam];
50
- }
51
- });
52
- return params;
53
- }
54
- composerJsonContents(fsEditor, pathProvider) {
55
- return extension_metadata_1.extensionMetadata(fsEditor.readJSON(pathProvider.ext('composer.json')));
56
- }
57
- }
58
- exports.BaseStubStep = BaseStubStep;
@@ -1,2 +0,0 @@
1
- export declare function extensionId(packageName: string): string;
2
- export declare function extensionMetadata(extensionComposerJson?: any): any;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extensionMetadata = exports.extensionId = void 0;
4
- function extensionId(packageName) {
5
- return packageName.replace(/(flarum-ext-)|(flarum-)/, '').replace('/', '-');
6
- }
7
- exports.extensionId = extensionId;
8
- function extensionMetadata(extensionComposerJson = {}) {
9
- var _a, _b, _c, _d;
10
- const data = {};
11
- data.packageName = (extensionComposerJson === null || extensionComposerJson === void 0 ? void 0 : extensionComposerJson.name) || '';
12
- data.packageDescription = (extensionComposerJson === null || extensionComposerJson === void 0 ? void 0 : extensionComposerJson.description) || '';
13
- data.licenseType = (extensionComposerJson === null || extensionComposerJson === void 0 ? void 0 : extensionComposerJson.license) || '';
14
- data.authorName = '';
15
- data.authorEmail = '';
16
- data.packageNamespace = (Object.keys((_b = (_a = extensionComposerJson === null || extensionComposerJson === void 0 ? void 0 : extensionComposerJson.autoload) === null || _a === void 0 ? void 0 : _a['psr-4']) !== null && _b !== void 0 ? _b : {})[0] || '').slice(0, -1);
17
- data.extensionName = ((_d = (_c = extensionComposerJson === null || extensionComposerJson === void 0 ? void 0 : extensionComposerJson.extra) === null || _c === void 0 ? void 0 : _c['flarum-extension']) === null || _d === void 0 ? void 0 : _d.title) || '';
18
- data.extensionId = extensionId(data.packageName);
19
- return data;
20
- }
21
- exports.extensionMetadata = extensionMetadata;